; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK/VARIANTS/qr/LL (cgeqrf)

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

@c__1 = external hidden global i64, align 8
@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i64, align 8
@c__3 = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [11 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @cgeqrf_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7) #0 {
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca float, align 4
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca i64, align 8
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca i64, align 8
  %41 = alloca i32, align 4
  store ptr %0, ptr %10, align 8, !tbaa !5
  store ptr %1, ptr %11, align 8, !tbaa !5
  store ptr %2, ptr %12, align 8, !tbaa !5
  store ptr %3, ptr %13, align 8, !tbaa !5
  store ptr %4, ptr %14, align 8, !tbaa !5
  store ptr %5, ptr %15, align 8, !tbaa !5
  store ptr %6, ptr %16, align 8, !tbaa !5
  store ptr %7, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #4
  %42 = load ptr, ptr %13, align 8, !tbaa !5
  %43 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %43, ptr %18, align 8, !tbaa !9
  %44 = load i64, ptr %18, align 8, !tbaa !9
  %45 = add nsw i64 1, %44
  store i64 %45, ptr %19, align 8, !tbaa !9
  %46 = load i64, ptr %19, align 8, !tbaa !9
  %47 = load ptr, ptr %12, align 8, !tbaa !5
  %48 = sub i64 0, %46
  %49 = getelementptr inbounds %struct.complex, ptr %47, i64 %48
  store ptr %49, ptr %12, align 8, !tbaa !5
  %50 = load ptr, ptr %14, align 8, !tbaa !5
  %51 = getelementptr inbounds %struct.complex, ptr %50, i32 -1
  store ptr %51, ptr %14, align 8, !tbaa !5
  %52 = load ptr, ptr %15, align 8, !tbaa !5
  %53 = getelementptr inbounds %struct.complex, ptr %52, i32 -1
  store ptr %53, ptr %15, align 8, !tbaa !5
  %54 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 0, ptr %54, align 8, !tbaa !9
  store i64 2, ptr %35, align 8, !tbaa !9
  store i64 0, ptr %33, align 8, !tbaa !9
  %55 = load ptr, ptr %11, align 8, !tbaa !5
  %56 = load i64, ptr %55, align 8, !tbaa !9
  store i64 %56, ptr %34, align 8, !tbaa !9
  %57 = load ptr, ptr %10, align 8, !tbaa !5
  %58 = load i64, ptr %57, align 8, !tbaa !9
  %59 = load ptr, ptr %11, align 8, !tbaa !5
  %60 = load i64, ptr %59, align 8, !tbaa !9
  %61 = icmp sle i64 %58, %60
  br i1 %61, label %62, label %65

62:                                               ; preds = %8
  %63 = load ptr, ptr %10, align 8, !tbaa !5
  %64 = load i64, ptr %63, align 8, !tbaa !9
  br label %68

65:                                               ; preds = %8
  %66 = load ptr, ptr %11, align 8, !tbaa !5
  %67 = load i64, ptr %66, align 8, !tbaa !9
  br label %68

68:                                               ; preds = %65, %62
  %69 = phi i64 [ %64, %62 ], [ %67, %65 ]
  store i64 %69, ptr %29, align 8, !tbaa !9
  %70 = load ptr, ptr %10, align 8, !tbaa !5
  %71 = load ptr, ptr %11, align 8, !tbaa !5
  %72 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %70, ptr noundef %71, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %72, ptr %31, align 8, !tbaa !9
  %73 = load i64, ptr %31, align 8, !tbaa !9
  %74 = icmp sgt i64 %73, 1
  br i1 %74, label %75, label %92

75:                                               ; preds = %68
  %76 = load i64, ptr %31, align 8, !tbaa !9
  %77 = load i64, ptr %29, align 8, !tbaa !9
  %78 = icmp slt i64 %76, %77
  br i1 %78, label %79, label %92

79:                                               ; preds = %75
  store i64 0, ptr %20, align 8, !tbaa !9
  %80 = load ptr, ptr %10, align 8, !tbaa !5
  %81 = load ptr, ptr %11, align 8, !tbaa !5
  %82 = call i64 @ilaenv_(ptr noundef @c__3, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %80, ptr noundef %81, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %82, ptr %21, align 8, !tbaa !9
  %83 = load i64, ptr %20, align 8, !tbaa !9
  %84 = load i64, ptr %21, align 8, !tbaa !9
  %85 = icmp sge i64 %83, %84
  br i1 %85, label %86, label %88

86:                                               ; preds = %79
  %87 = load i64, ptr %20, align 8, !tbaa !9
  br label %90

88:                                               ; preds = %79
  %89 = load i64, ptr %21, align 8, !tbaa !9
  br label %90

90:                                               ; preds = %88, %86
  %91 = phi i64 [ %87, %86 ], [ %89, %88 ]
  store i64 %91, ptr %33, align 8, !tbaa !9
  br label %92

92:                                               ; preds = %90, %75, %68
  %93 = load i64, ptr %29, align 8, !tbaa !9
  %94 = load i64, ptr %33, align 8, !tbaa !9
  %95 = sub nsw i64 %93, %94
  %96 = sitofp i64 %95 to float
  %97 = load i64, ptr %31, align 8, !tbaa !9
  %98 = sitofp i64 %97 to float
  %99 = fdiv float %96, %98
  store float %99, ptr %26, align 4, !tbaa !11
  %100 = load i64, ptr %29, align 8, !tbaa !9
  %101 = sitofp i64 %100 to double
  %102 = call double @sceil_(ptr noundef %26)
  %103 = load i64, ptr %31, align 8, !tbaa !9
  %104 = sitofp i64 %103 to double
  %105 = fneg double %102
  %106 = call double @llvm.fmuladd.f64(double %105, double %104, double %101)
  %107 = fptosi double %106 to i64
  store i64 %107, ptr %32, align 8, !tbaa !9
  %108 = load ptr, ptr %11, align 8, !tbaa !5
  %109 = load i64, ptr %108, align 8, !tbaa !9
  %110 = load ptr, ptr %10, align 8, !tbaa !5
  %111 = load i64, ptr %110, align 8, !tbaa !9
  %112 = sub nsw i64 %109, %111
  %113 = load i64, ptr %29, align 8, !tbaa !9
  %114 = mul nsw i64 %112, %113
  store i64 %114, ptr %22, align 8, !tbaa !9
  %115 = load ptr, ptr %11, align 8, !tbaa !5
  %116 = load i64, ptr %115, align 8, !tbaa !9
  %117 = load ptr, ptr %10, align 8, !tbaa !5
  %118 = load i64, ptr %117, align 8, !tbaa !9
  %119 = sub nsw i64 %116, %118
  %120 = load i64, ptr %31, align 8, !tbaa !9
  %121 = mul nsw i64 %119, %120
  store i64 %121, ptr %23, align 8, !tbaa !9
  %122 = load i64, ptr %29, align 8, !tbaa !9
  %123 = load i64, ptr %31, align 8, !tbaa !9
  %124 = mul nsw i64 %122, %123
  store i64 %124, ptr %24, align 8, !tbaa !9
  %125 = load i64, ptr %31, align 8, !tbaa !9
  %126 = load i64, ptr %31, align 8, !tbaa !9
  %127 = mul nsw i64 %125, %126
  store i64 %127, ptr %25, align 8, !tbaa !9
  %128 = load i64, ptr %22, align 8, !tbaa !9
  %129 = load i64, ptr %23, align 8, !tbaa !9
  %130 = icmp sge i64 %128, %129
  br i1 %130, label %131, label %133

131:                                              ; preds = %92
  %132 = load i64, ptr %22, align 8, !tbaa !9
  br label %135

133:                                              ; preds = %92
  %134 = load i64, ptr %23, align 8, !tbaa !9
  br label %135

135:                                              ; preds = %133, %131
  %136 = phi i64 [ %132, %131 ], [ %134, %133 ]
  store i64 %136, ptr %20, align 8, !tbaa !9
  %137 = load i64, ptr %24, align 8, !tbaa !9
  %138 = load i64, ptr %25, align 8, !tbaa !9
  %139 = icmp sge i64 %137, %138
  br i1 %139, label %140, label %142

140:                                              ; preds = %135
  %141 = load i64, ptr %24, align 8, !tbaa !9
  br label %144

142:                                              ; preds = %135
  %143 = load i64, ptr %25, align 8, !tbaa !9
  br label %144

144:                                              ; preds = %142, %140
  %145 = phi i64 [ %141, %140 ], [ %143, %142 ]
  store i64 %145, ptr %21, align 8, !tbaa !9
  %146 = load i64, ptr %20, align 8, !tbaa !9
  %147 = load i64, ptr %21, align 8, !tbaa !9
  %148 = icmp sge i64 %146, %147
  br i1 %148, label %149, label %151

149:                                              ; preds = %144
  %150 = load i64, ptr %20, align 8, !tbaa !9
  br label %153

151:                                              ; preds = %144
  %152 = load i64, ptr %21, align 8, !tbaa !9
  br label %153

153:                                              ; preds = %151, %149
  %154 = phi i64 [ %150, %149 ], [ %152, %151 ]
  store i64 %154, ptr %38, align 8, !tbaa !9
  %155 = load i64, ptr %38, align 8, !tbaa !9
  %156 = sitofp i64 %155 to float
  %157 = load i64, ptr %31, align 8, !tbaa !9
  %158 = sitofp i64 %157 to float
  %159 = fdiv float %156, %158
  store float %159, ptr %26, align 4, !tbaa !11
  %160 = call double @sceil_(ptr noundef %26)
  %161 = fptosi double %160 to i64
  store i64 %161, ptr %38, align 8, !tbaa !9
  %162 = load i64, ptr %32, align 8, !tbaa !9
  %163 = load i64, ptr %31, align 8, !tbaa !9
  %164 = icmp sgt i64 %162, %163
  br i1 %164, label %165, label %187

165:                                              ; preds = %153
  %166 = load i64, ptr %29, align 8, !tbaa !9
  %167 = load i64, ptr %32, align 8, !tbaa !9
  %168 = sub nsw i64 %166, %167
  store i64 %168, ptr %37, align 8, !tbaa !9
  %169 = load i64, ptr %37, align 8, !tbaa !9
  %170 = load i64, ptr %38, align 8, !tbaa !9
  %171 = add nsw i64 %169, %170
  %172 = load i64, ptr %31, align 8, !tbaa !9
  %173 = mul nsw i64 %171, %172
  store i64 %173, ptr %39, align 8, !tbaa !9
  %174 = load i64, ptr %39, align 8, !tbaa !9
  %175 = load i64, ptr %32, align 8, !tbaa !9
  %176 = load i64, ptr %32, align 8, !tbaa !9
  %177 = mul nsw i64 %175, %176
  %178 = add nsw i64 %174, %177
  store i64 %178, ptr %20, align 8, !tbaa !9
  %179 = load i64, ptr %20, align 8, !tbaa !9
  %180 = sitofp i64 %179 to float
  %181 = load ptr, ptr %15, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.complex, ptr %181, i64 1
  %183 = getelementptr inbounds %struct.complex, ptr %182, i32 0, i32 0
  store float %180, ptr %183, align 4, !tbaa !13
  %184 = load ptr, ptr %15, align 8, !tbaa !5
  %185 = getelementptr inbounds %struct.complex, ptr %184, i64 1
  %186 = getelementptr inbounds %struct.complex, ptr %185, i32 0, i32 1
  store float 0.000000e+00, ptr %186, align 4, !tbaa !15
  br label %213

187:                                              ; preds = %153
  %188 = load i64, ptr %29, align 8, !tbaa !9
  %189 = sitofp i64 %188 to float
  %190 = load i64, ptr %31, align 8, !tbaa !9
  %191 = sitofp i64 %190 to float
  %192 = fdiv float %189, %191
  store float %192, ptr %26, align 4, !tbaa !11
  %193 = call double @sceil_(ptr noundef %26)
  %194 = load i64, ptr %31, align 8, !tbaa !9
  %195 = sitofp i64 %194 to double
  %196 = fmul double %193, %195
  %197 = fptosi double %196 to i64
  store i64 %197, ptr %37, align 8, !tbaa !9
  %198 = load i64, ptr %37, align 8, !tbaa !9
  %199 = load i64, ptr %38, align 8, !tbaa !9
  %200 = add nsw i64 %198, %199
  %201 = load i64, ptr %31, align 8, !tbaa !9
  %202 = sub nsw i64 %200, %201
  %203 = load i64, ptr %31, align 8, !tbaa !9
  %204 = mul nsw i64 %202, %203
  store i64 %204, ptr %39, align 8, !tbaa !9
  %205 = load i64, ptr %39, align 8, !tbaa !9
  %206 = sitofp i64 %205 to float
  %207 = load ptr, ptr %15, align 8, !tbaa !5
  %208 = getelementptr inbounds %struct.complex, ptr %207, i64 1
  %209 = getelementptr inbounds %struct.complex, ptr %208, i32 0, i32 0
  store float %206, ptr %209, align 4, !tbaa !13
  %210 = load ptr, ptr %15, align 8, !tbaa !5
  %211 = getelementptr inbounds %struct.complex, ptr %210, i64 1
  %212 = getelementptr inbounds %struct.complex, ptr %211, i32 0, i32 1
  store float 0.000000e+00, ptr %212, align 4, !tbaa !15
  br label %213

213:                                              ; preds = %187, %165
  %214 = load ptr, ptr %16, align 8, !tbaa !5
  %215 = load i64, ptr %214, align 8, !tbaa !9
  %216 = icmp eq i64 %215, -1
  %217 = zext i1 %216 to i32
  %218 = sext i32 %217 to i64
  store i64 %218, ptr %40, align 8, !tbaa !9
  %219 = load ptr, ptr %10, align 8, !tbaa !5
  %220 = load i64, ptr %219, align 8, !tbaa !9
  %221 = icmp slt i64 %220, 0
  br i1 %221, label %222, label %224

222:                                              ; preds = %213
  %223 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -1, ptr %223, align 8, !tbaa !9
  br label %266

224:                                              ; preds = %213
  %225 = load ptr, ptr %11, align 8, !tbaa !5
  %226 = load i64, ptr %225, align 8, !tbaa !9
  %227 = icmp slt i64 %226, 0
  br i1 %227, label %228, label %230

228:                                              ; preds = %224
  %229 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -2, ptr %229, align 8, !tbaa !9
  br label %265

230:                                              ; preds = %224
  %231 = load ptr, ptr %13, align 8, !tbaa !5
  %232 = load i64, ptr %231, align 8, !tbaa !9
  %233 = load ptr, ptr %10, align 8, !tbaa !5
  %234 = load i64, ptr %233, align 8, !tbaa !9
  %235 = icmp sge i64 1, %234
  br i1 %235, label %236, label %237

236:                                              ; preds = %230
  br label %240

237:                                              ; preds = %230
  %238 = load ptr, ptr %10, align 8, !tbaa !5
  %239 = load i64, ptr %238, align 8, !tbaa !9
  br label %240

240:                                              ; preds = %237, %236
  %241 = phi i64 [ 1, %236 ], [ %239, %237 ]
  %242 = icmp slt i64 %232, %241
  br i1 %242, label %243, label %245

243:                                              ; preds = %240
  %244 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -4, ptr %244, align 8, !tbaa !9
  br label %264

245:                                              ; preds = %240
  %246 = load ptr, ptr %16, align 8, !tbaa !5
  %247 = load i64, ptr %246, align 8, !tbaa !9
  %248 = load ptr, ptr %11, align 8, !tbaa !5
  %249 = load i64, ptr %248, align 8, !tbaa !9
  %250 = icmp sge i64 1, %249
  br i1 %250, label %251, label %252

251:                                              ; preds = %245
  br label %255

252:                                              ; preds = %245
  %253 = load ptr, ptr %11, align 8, !tbaa !5
  %254 = load i64, ptr %253, align 8, !tbaa !9
  br label %255

255:                                              ; preds = %252, %251
  %256 = phi i64 [ 1, %251 ], [ %254, %252 ]
  %257 = icmp slt i64 %247, %256
  br i1 %257, label %258, label %263

258:                                              ; preds = %255
  %259 = load i64, ptr %40, align 8, !tbaa !9
  %260 = icmp ne i64 %259, 0
  br i1 %260, label %263, label %261

261:                                              ; preds = %258
  %262 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -7, ptr %262, align 8, !tbaa !9
  br label %263

263:                                              ; preds = %261, %258, %255
  br label %264

264:                                              ; preds = %263, %243
  br label %265

265:                                              ; preds = %264, %228
  br label %266

266:                                              ; preds = %265, %222
  %267 = load ptr, ptr %17, align 8, !tbaa !5
  %268 = load i64, ptr %267, align 8, !tbaa !9
  %269 = icmp ne i64 %268, 0
  br i1 %269, label %270, label %275

270:                                              ; preds = %266
  %271 = load ptr, ptr %17, align 8, !tbaa !5
  %272 = load i64, ptr %271, align 8, !tbaa !9
  %273 = sub nsw i64 0, %272
  store i64 %273, ptr %20, align 8, !tbaa !9
  %274 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %20)
  store i32 0, ptr %9, align 4
  store i32 1, ptr %41, align 4
  br label %943

275:                                              ; preds = %266
  %276 = load i64, ptr %40, align 8, !tbaa !9
  %277 = icmp ne i64 %276, 0
  br i1 %277, label %278, label %279

278:                                              ; preds = %275
  store i32 0, ptr %9, align 4
  store i32 1, ptr %41, align 4
  br label %943

279:                                              ; preds = %275
  br label %280

280:                                              ; preds = %279
  %281 = load i64, ptr %29, align 8, !tbaa !9
  %282 = icmp eq i64 %281, 0
  br i1 %282, label %283, label %290

283:                                              ; preds = %280
  %284 = load ptr, ptr %15, align 8, !tbaa !5
  %285 = getelementptr inbounds %struct.complex, ptr %284, i64 1
  %286 = getelementptr inbounds %struct.complex, ptr %285, i32 0, i32 0
  store float 1.000000e+00, ptr %286, align 4, !tbaa !13
  %287 = load ptr, ptr %15, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.complex, ptr %287, i64 1
  %289 = getelementptr inbounds %struct.complex, ptr %288, i32 0, i32 1
  store float 0.000000e+00, ptr %289, align 4, !tbaa !15
  store i32 0, ptr %9, align 4
  store i32 1, ptr %41, align 4
  br label %943

290:                                              ; preds = %280
  %291 = load i64, ptr %31, align 8, !tbaa !9
  %292 = icmp sgt i64 %291, 1
  br i1 %292, label %293, label %367

293:                                              ; preds = %290
  %294 = load i64, ptr %31, align 8, !tbaa !9
  %295 = load i64, ptr %29, align 8, !tbaa !9
  %296 = icmp slt i64 %294, %295
  br i1 %296, label %297, label %367

297:                                              ; preds = %293
  %298 = load i64, ptr %33, align 8, !tbaa !9
  %299 = load i64, ptr %29, align 8, !tbaa !9
  %300 = icmp slt i64 %298, %299
  br i1 %300, label %301, label %366

301:                                              ; preds = %297
  %302 = load i64, ptr %32, align 8, !tbaa !9
  %303 = load i64, ptr %31, align 8, !tbaa !9
  %304 = icmp sle i64 %302, %303
  br i1 %304, label %305, label %313

305:                                              ; preds = %301
  %306 = load i64, ptr %37, align 8, !tbaa !9
  %307 = load i64, ptr %38, align 8, !tbaa !9
  %308 = add nsw i64 %306, %307
  %309 = load i64, ptr %31, align 8, !tbaa !9
  %310 = sub nsw i64 %308, %309
  %311 = load i64, ptr %31, align 8, !tbaa !9
  %312 = mul nsw i64 %310, %311
  store i64 %312, ptr %34, align 8, !tbaa !9
  br label %323

313:                                              ; preds = %301
  %314 = load i64, ptr %37, align 8, !tbaa !9
  %315 = load i64, ptr %38, align 8, !tbaa !9
  %316 = add nsw i64 %314, %315
  %317 = load i64, ptr %31, align 8, !tbaa !9
  %318 = mul nsw i64 %316, %317
  %319 = load i64, ptr %32, align 8, !tbaa !9
  %320 = load i64, ptr %32, align 8, !tbaa !9
  %321 = mul nsw i64 %319, %320
  %322 = add nsw i64 %318, %321
  store i64 %322, ptr %34, align 8, !tbaa !9
  br label %323

323:                                              ; preds = %313, %305
  %324 = load ptr, ptr %16, align 8, !tbaa !5
  %325 = load i64, ptr %324, align 8, !tbaa !9
  %326 = load i64, ptr %34, align 8, !tbaa !9
  %327 = icmp slt i64 %325, %326
  br i1 %327, label %328, label %365

328:                                              ; preds = %323
  %329 = load i64, ptr %32, align 8, !tbaa !9
  %330 = load i64, ptr %31, align 8, !tbaa !9
  %331 = icmp sle i64 %329, %330
  br i1 %331, label %332, label %341

332:                                              ; preds = %328
  %333 = load ptr, ptr %16, align 8, !tbaa !5
  %334 = load i64, ptr %333, align 8, !tbaa !9
  %335 = load i64, ptr %38, align 8, !tbaa !9
  %336 = load i64, ptr %37, align 8, !tbaa !9
  %337 = load i64, ptr %31, align 8, !tbaa !9
  %338 = sub nsw i64 %336, %337
  %339 = add nsw i64 %335, %338
  %340 = sdiv i64 %334, %339
  store i64 %340, ptr %31, align 8, !tbaa !9
  br label %352

341:                                              ; preds = %328
  %342 = load ptr, ptr %16, align 8, !tbaa !5
  %343 = load i64, ptr %342, align 8, !tbaa !9
  %344 = load i64, ptr %32, align 8, !tbaa !9
  %345 = load i64, ptr %32, align 8, !tbaa !9
  %346 = mul nsw i64 %344, %345
  %347 = sub nsw i64 %343, %346
  %348 = load i64, ptr %37, align 8, !tbaa !9
  %349 = load i64, ptr %38, align 8, !tbaa !9
  %350 = add nsw i64 %348, %349
  %351 = sdiv i64 %347, %350
  store i64 %351, ptr %31, align 8, !tbaa !9
  br label %352

352:                                              ; preds = %341, %332
  store i64 2, ptr %20, align 8, !tbaa !9
  %353 = load ptr, ptr %10, align 8, !tbaa !5
  %354 = load ptr, ptr %11, align 8, !tbaa !5
  %355 = call i64 @ilaenv_(ptr noundef @c__2, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %353, ptr noundef %354, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %355, ptr %21, align 8, !tbaa !9
  %356 = load i64, ptr %20, align 8, !tbaa !9
  %357 = load i64, ptr %21, align 8, !tbaa !9
  %358 = icmp sge i64 %356, %357
  br i1 %358, label %359, label %361

359:                                              ; preds = %352
  %360 = load i64, ptr %20, align 8, !tbaa !9
  br label %363

361:                                              ; preds = %352
  %362 = load i64, ptr %21, align 8, !tbaa !9
  br label %363

363:                                              ; preds = %361, %359
  %364 = phi i64 [ %360, %359 ], [ %362, %361 ]
  store i64 %364, ptr %35, align 8, !tbaa !9
  br label %365

365:                                              ; preds = %363, %323
  br label %366

366:                                              ; preds = %365, %297
  br label %367

367:                                              ; preds = %366, %293, %290
  %368 = load i64, ptr %31, align 8, !tbaa !9
  %369 = load i64, ptr %35, align 8, !tbaa !9
  %370 = icmp sge i64 %368, %369
  br i1 %370, label %371, label %535

371:                                              ; preds = %367
  %372 = load i64, ptr %31, align 8, !tbaa !9
  %373 = load i64, ptr %29, align 8, !tbaa !9
  %374 = icmp slt i64 %372, %373
  br i1 %374, label %375, label %535

375:                                              ; preds = %371
  %376 = load i64, ptr %33, align 8, !tbaa !9
  %377 = load i64, ptr %29, align 8, !tbaa !9
  %378 = icmp slt i64 %376, %377
  br i1 %378, label %379, label %535

379:                                              ; preds = %375
  %380 = load i64, ptr %29, align 8, !tbaa !9
  %381 = load i64, ptr %33, align 8, !tbaa !9
  %382 = sub nsw i64 %380, %381
  store i64 %382, ptr %20, align 8, !tbaa !9
  %383 = load i64, ptr %31, align 8, !tbaa !9
  store i64 %383, ptr %21, align 8, !tbaa !9
  store i64 1, ptr %27, align 8, !tbaa !9
  br label %384

384:                                              ; preds = %530, %379
  %385 = load i64, ptr %21, align 8, !tbaa !9
  %386 = icmp slt i64 %385, 0
  br i1 %386, label %387, label %392

387:                                              ; preds = %384
  %388 = load i64, ptr %27, align 8, !tbaa !9
  %389 = load i64, ptr %20, align 8, !tbaa !9
  %390 = icmp sge i64 %388, %389
  %391 = zext i1 %390 to i32
  br label %397

392:                                              ; preds = %384
  %393 = load i64, ptr %27, align 8, !tbaa !9
  %394 = load i64, ptr %20, align 8, !tbaa !9
  %395 = icmp sle i64 %393, %394
  %396 = zext i1 %395 to i32
  br label %397

397:                                              ; preds = %392, %387
  %398 = phi i32 [ %391, %387 ], [ %396, %392 ]
  %399 = icmp ne i32 %398, 0
  br i1 %399, label %400, label %534

400:                                              ; preds = %397
  %401 = load i64, ptr %29, align 8, !tbaa !9
  %402 = load i64, ptr %27, align 8, !tbaa !9
  %403 = sub nsw i64 %401, %402
  %404 = add nsw i64 %403, 1
  store i64 %404, ptr %22, align 8, !tbaa !9
  %405 = load i64, ptr %22, align 8, !tbaa !9
  %406 = load i64, ptr %31, align 8, !tbaa !9
  %407 = icmp sle i64 %405, %406
  br i1 %407, label %408, label %410

408:                                              ; preds = %400
  %409 = load i64, ptr %22, align 8, !tbaa !9
  br label %412

410:                                              ; preds = %400
  %411 = load i64, ptr %31, align 8, !tbaa !9
  br label %412

412:                                              ; preds = %410, %408
  %413 = phi i64 [ %409, %408 ], [ %411, %410 ]
  store i64 %413, ptr %30, align 8, !tbaa !9
  %414 = load i64, ptr %27, align 8, !tbaa !9
  %415 = load i64, ptr %31, align 8, !tbaa !9
  %416 = sub nsw i64 %414, %415
  store i64 %416, ptr %22, align 8, !tbaa !9
  %417 = load i64, ptr %31, align 8, !tbaa !9
  store i64 %417, ptr %23, align 8, !tbaa !9
  store i64 1, ptr %28, align 8, !tbaa !9
  br label %418

418:                                              ; preds = %470, %412
  %419 = load i64, ptr %23, align 8, !tbaa !9
  %420 = icmp slt i64 %419, 0
  br i1 %420, label %421, label %426

421:                                              ; preds = %418
  %422 = load i64, ptr %28, align 8, !tbaa !9
  %423 = load i64, ptr %22, align 8, !tbaa !9
  %424 = icmp sge i64 %422, %423
  %425 = zext i1 %424 to i32
  br label %431

426:                                              ; preds = %418
  %427 = load i64, ptr %28, align 8, !tbaa !9
  %428 = load i64, ptr %22, align 8, !tbaa !9
  %429 = icmp sle i64 %427, %428
  %430 = zext i1 %429 to i32
  br label %431

431:                                              ; preds = %426, %421
  %432 = phi i32 [ %425, %421 ], [ %430, %426 ]
  %433 = icmp ne i32 %432, 0
  br i1 %433, label %434, label %474

434:                                              ; preds = %431
  %435 = load ptr, ptr %10, align 8, !tbaa !5
  %436 = load i64, ptr %435, align 8, !tbaa !9
  %437 = load i64, ptr %28, align 8, !tbaa !9
  %438 = sub nsw i64 %436, %437
  %439 = add nsw i64 %438, 1
  store i64 %439, ptr %24, align 8, !tbaa !9
  %440 = load ptr, ptr %12, align 8, !tbaa !5
  %441 = load i64, ptr %28, align 8, !tbaa !9
  %442 = load i64, ptr %28, align 8, !tbaa !9
  %443 = load i64, ptr %18, align 8, !tbaa !9
  %444 = mul nsw i64 %442, %443
  %445 = add nsw i64 %441, %444
  %446 = getelementptr inbounds %struct.complex, ptr %440, i64 %445
  %447 = load ptr, ptr %13, align 8, !tbaa !5
  %448 = load ptr, ptr %15, align 8, !tbaa !5
  %449 = load i64, ptr %28, align 8, !tbaa !9
  %450 = getelementptr inbounds %struct.complex, ptr %448, i64 %449
  %451 = load ptr, ptr %12, align 8, !tbaa !5
  %452 = load i64, ptr %28, align 8, !tbaa !9
  %453 = load i64, ptr %27, align 8, !tbaa !9
  %454 = load i64, ptr %18, align 8, !tbaa !9
  %455 = mul nsw i64 %453, %454
  %456 = add nsw i64 %452, %455
  %457 = getelementptr inbounds %struct.complex, ptr %451, i64 %456
  %458 = load ptr, ptr %13, align 8, !tbaa !5
  %459 = load ptr, ptr %15, align 8, !tbaa !5
  %460 = load i64, ptr %37, align 8, !tbaa !9
  %461 = load i64, ptr %31, align 8, !tbaa !9
  %462 = mul nsw i64 %460, %461
  %463 = load i64, ptr %32, align 8, !tbaa !9
  %464 = load i64, ptr %32, align 8, !tbaa !9
  %465 = mul nsw i64 %463, %464
  %466 = add nsw i64 %462, %465
  %467 = add nsw i64 %466, 1
  %468 = getelementptr inbounds %struct.complex, ptr %459, i64 %467
  %469 = call i32 @clarfb_(ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef %24, ptr noundef %30, ptr noundef %31, ptr noundef %446, ptr noundef %447, ptr noundef %450, ptr noundef %37, ptr noundef %457, ptr noundef %458, ptr noundef %468, ptr noundef %30)
  br label %470

470:                                              ; preds = %434
  %471 = load i64, ptr %23, align 8, !tbaa !9
  %472 = load i64, ptr %28, align 8, !tbaa !9
  %473 = add nsw i64 %472, %471
  store i64 %473, ptr %28, align 8, !tbaa !9
  br label %418, !llvm.loop !16

474:                                              ; preds = %431
  %475 = load ptr, ptr %10, align 8, !tbaa !5
  %476 = load i64, ptr %475, align 8, !tbaa !9
  %477 = load i64, ptr %27, align 8, !tbaa !9
  %478 = sub nsw i64 %476, %477
  %479 = add nsw i64 %478, 1
  store i64 %479, ptr %23, align 8, !tbaa !9
  %480 = load ptr, ptr %12, align 8, !tbaa !5
  %481 = load i64, ptr %27, align 8, !tbaa !9
  %482 = load i64, ptr %27, align 8, !tbaa !9
  %483 = load i64, ptr %18, align 8, !tbaa !9
  %484 = mul nsw i64 %482, %483
  %485 = add nsw i64 %481, %484
  %486 = getelementptr inbounds %struct.complex, ptr %480, i64 %485
  %487 = load ptr, ptr %13, align 8, !tbaa !5
  %488 = load ptr, ptr %14, align 8, !tbaa !5
  %489 = load i64, ptr %27, align 8, !tbaa !9
  %490 = getelementptr inbounds %struct.complex, ptr %488, i64 %489
  %491 = load ptr, ptr %15, align 8, !tbaa !5
  %492 = load i64, ptr %37, align 8, !tbaa !9
  %493 = load i64, ptr %31, align 8, !tbaa !9
  %494 = mul nsw i64 %492, %493
  %495 = load i64, ptr %32, align 8, !tbaa !9
  %496 = load i64, ptr %32, align 8, !tbaa !9
  %497 = mul nsw i64 %495, %496
  %498 = add nsw i64 %494, %497
  %499 = add nsw i64 %498, 1
  %500 = getelementptr inbounds %struct.complex, ptr %491, i64 %499
  %501 = call i32 @cgeqr2_(ptr noundef %23, ptr noundef %30, ptr noundef %486, ptr noundef %487, ptr noundef %490, ptr noundef %500, ptr noundef %36)
  %502 = load i64, ptr %27, align 8, !tbaa !9
  %503 = load i64, ptr %30, align 8, !tbaa !9
  %504 = add nsw i64 %502, %503
  %505 = load ptr, ptr %11, align 8, !tbaa !5
  %506 = load i64, ptr %505, align 8, !tbaa !9
  %507 = icmp sle i64 %504, %506
  br i1 %507, label %508, label %529

508:                                              ; preds = %474
  %509 = load ptr, ptr %10, align 8, !tbaa !5
  %510 = load i64, ptr %509, align 8, !tbaa !9
  %511 = load i64, ptr %27, align 8, !tbaa !9
  %512 = sub nsw i64 %510, %511
  %513 = add nsw i64 %512, 1
  store i64 %513, ptr %23, align 8, !tbaa !9
  %514 = load ptr, ptr %12, align 8, !tbaa !5
  %515 = load i64, ptr %27, align 8, !tbaa !9
  %516 = load i64, ptr %27, align 8, !tbaa !9
  %517 = load i64, ptr %18, align 8, !tbaa !9
  %518 = mul nsw i64 %516, %517
  %519 = add nsw i64 %515, %518
  %520 = getelementptr inbounds %struct.complex, ptr %514, i64 %519
  %521 = load ptr, ptr %13, align 8, !tbaa !5
  %522 = load ptr, ptr %14, align 8, !tbaa !5
  %523 = load i64, ptr %27, align 8, !tbaa !9
  %524 = getelementptr inbounds %struct.complex, ptr %522, i64 %523
  %525 = load ptr, ptr %15, align 8, !tbaa !5
  %526 = load i64, ptr %27, align 8, !tbaa !9
  %527 = getelementptr inbounds %struct.complex, ptr %525, i64 %526
  %528 = call i32 @clarft_(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef %23, ptr noundef %30, ptr noundef %520, ptr noundef %521, ptr noundef %524, ptr noundef %527, ptr noundef %37)
  br label %529

529:                                              ; preds = %508, %474
  br label %530

530:                                              ; preds = %529
  %531 = load i64, ptr %21, align 8, !tbaa !9
  %532 = load i64, ptr %27, align 8, !tbaa !9
  %533 = add nsw i64 %532, %531
  store i64 %533, ptr %27, align 8, !tbaa !9
  br label %384, !llvm.loop !18

534:                                              ; preds = %397
  br label %536

535:                                              ; preds = %375, %371, %367
  store i64 1, ptr %27, align 8, !tbaa !9
  br label %536

536:                                              ; preds = %535, %534
  %537 = load i64, ptr %27, align 8, !tbaa !9
  %538 = load i64, ptr %29, align 8, !tbaa !9
  %539 = icmp sle i64 %537, %538
  br i1 %539, label %540, label %670

540:                                              ; preds = %536
  %541 = load i64, ptr %27, align 8, !tbaa !9
  %542 = icmp ne i64 %541, 1
  br i1 %542, label %543, label %644

543:                                              ; preds = %540
  %544 = load i64, ptr %27, align 8, !tbaa !9
  %545 = load i64, ptr %31, align 8, !tbaa !9
  %546 = sub nsw i64 %544, %545
  store i64 %546, ptr %21, align 8, !tbaa !9
  %547 = load i64, ptr %31, align 8, !tbaa !9
  store i64 %547, ptr %20, align 8, !tbaa !9
  store i64 1, ptr %28, align 8, !tbaa !9
  br label %548

548:                                              ; preds = %608, %543
  %549 = load i64, ptr %20, align 8, !tbaa !9
  %550 = icmp slt i64 %549, 0
  br i1 %550, label %551, label %556

551:                                              ; preds = %548
  %552 = load i64, ptr %28, align 8, !tbaa !9
  %553 = load i64, ptr %21, align 8, !tbaa !9
  %554 = icmp sge i64 %552, %553
  %555 = zext i1 %554 to i32
  br label %561

556:                                              ; preds = %548
  %557 = load i64, ptr %28, align 8, !tbaa !9
  %558 = load i64, ptr %21, align 8, !tbaa !9
  %559 = icmp sle i64 %557, %558
  %560 = zext i1 %559 to i32
  br label %561

561:                                              ; preds = %556, %551
  %562 = phi i32 [ %555, %551 ], [ %560, %556 ]
  %563 = icmp ne i32 %562, 0
  br i1 %563, label %564, label %612

564:                                              ; preds = %561
  %565 = load ptr, ptr %10, align 8, !tbaa !5
  %566 = load i64, ptr %565, align 8, !tbaa !9
  %567 = load i64, ptr %28, align 8, !tbaa !9
  %568 = sub nsw i64 %566, %567
  %569 = add nsw i64 %568, 1
  store i64 %569, ptr %23, align 8, !tbaa !9
  %570 = load i64, ptr %29, align 8, !tbaa !9
  %571 = load i64, ptr %27, align 8, !tbaa !9
  %572 = sub nsw i64 %570, %571
  %573 = add nsw i64 %572, 1
  store i64 %573, ptr %22, align 8, !tbaa !9
  %574 = load i64, ptr %29, align 8, !tbaa !9
  %575 = load i64, ptr %27, align 8, !tbaa !9
  %576 = sub nsw i64 %574, %575
  %577 = add nsw i64 %576, 1
  store i64 %577, ptr %24, align 8, !tbaa !9
  %578 = load ptr, ptr %12, align 8, !tbaa !5
  %579 = load i64, ptr %28, align 8, !tbaa !9
  %580 = load i64, ptr %28, align 8, !tbaa !9
  %581 = load i64, ptr %18, align 8, !tbaa !9
  %582 = mul nsw i64 %580, %581
  %583 = add nsw i64 %579, %582
  %584 = getelementptr inbounds %struct.complex, ptr %578, i64 %583
  %585 = load ptr, ptr %13, align 8, !tbaa !5
  %586 = load ptr, ptr %15, align 8, !tbaa !5
  %587 = load i64, ptr %28, align 8, !tbaa !9
  %588 = getelementptr inbounds %struct.complex, ptr %586, i64 %587
  %589 = load ptr, ptr %12, align 8, !tbaa !5
  %590 = load i64, ptr %28, align 8, !tbaa !9
  %591 = load i64, ptr %27, align 8, !tbaa !9
  %592 = load i64, ptr %18, align 8, !tbaa !9
  %593 = mul nsw i64 %591, %592
  %594 = add nsw i64 %590, %593
  %595 = getelementptr inbounds %struct.complex, ptr %589, i64 %594
  %596 = load ptr, ptr %13, align 8, !tbaa !5
  %597 = load ptr, ptr %15, align 8, !tbaa !5
  %598 = load i64, ptr %37, align 8, !tbaa !9
  %599 = load i64, ptr %31, align 8, !tbaa !9
  %600 = mul nsw i64 %598, %599
  %601 = load i64, ptr %32, align 8, !tbaa !9
  %602 = load i64, ptr %32, align 8, !tbaa !9
  %603 = mul nsw i64 %601, %602
  %604 = add nsw i64 %600, %603
  %605 = add nsw i64 %604, 1
  %606 = getelementptr inbounds %struct.complex, ptr %597, i64 %605
  %607 = call i32 @clarfb_(ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef %23, ptr noundef %22, ptr noundef %31, ptr noundef %584, ptr noundef %585, ptr noundef %588, ptr noundef %37, ptr noundef %595, ptr noundef %596, ptr noundef %606, ptr noundef %24)
  br label %608

608:                                              ; preds = %564
  %609 = load i64, ptr %20, align 8, !tbaa !9
  %610 = load i64, ptr %28, align 8, !tbaa !9
  %611 = add nsw i64 %610, %609
  store i64 %611, ptr %28, align 8, !tbaa !9
  br label %548, !llvm.loop !19

612:                                              ; preds = %561
  %613 = load ptr, ptr %10, align 8, !tbaa !5
  %614 = load i64, ptr %613, align 8, !tbaa !9
  %615 = load i64, ptr %27, align 8, !tbaa !9
  %616 = sub nsw i64 %614, %615
  %617 = add nsw i64 %616, 1
  store i64 %617, ptr %20, align 8, !tbaa !9
  %618 = load i64, ptr %29, align 8, !tbaa !9
  %619 = load i64, ptr %27, align 8, !tbaa !9
  %620 = sub nsw i64 %618, %619
  %621 = add nsw i64 %620, 1
  store i64 %621, ptr %21, align 8, !tbaa !9
  %622 = load ptr, ptr %12, align 8, !tbaa !5
  %623 = load i64, ptr %27, align 8, !tbaa !9
  %624 = load i64, ptr %27, align 8, !tbaa !9
  %625 = load i64, ptr %18, align 8, !tbaa !9
  %626 = mul nsw i64 %624, %625
  %627 = add nsw i64 %623, %626
  %628 = getelementptr inbounds %struct.complex, ptr %622, i64 %627
  %629 = load ptr, ptr %13, align 8, !tbaa !5
  %630 = load ptr, ptr %14, align 8, !tbaa !5
  %631 = load i64, ptr %27, align 8, !tbaa !9
  %632 = getelementptr inbounds %struct.complex, ptr %630, i64 %631
  %633 = load ptr, ptr %15, align 8, !tbaa !5
  %634 = load i64, ptr %37, align 8, !tbaa !9
  %635 = load i64, ptr %31, align 8, !tbaa !9
  %636 = mul nsw i64 %634, %635
  %637 = load i64, ptr %32, align 8, !tbaa !9
  %638 = load i64, ptr %32, align 8, !tbaa !9
  %639 = mul nsw i64 %637, %638
  %640 = add nsw i64 %636, %639
  %641 = add nsw i64 %640, 1
  %642 = getelementptr inbounds %struct.complex, ptr %633, i64 %641
  %643 = call i32 @cgeqr2_(ptr noundef %20, ptr noundef %21, ptr noundef %628, ptr noundef %629, ptr noundef %632, ptr noundef %642, ptr noundef %36)
  br label %669

644:                                              ; preds = %540
  %645 = load ptr, ptr %10, align 8, !tbaa !5
  %646 = load i64, ptr %645, align 8, !tbaa !9
  %647 = load i64, ptr %27, align 8, !tbaa !9
  %648 = sub nsw i64 %646, %647
  %649 = add nsw i64 %648, 1
  store i64 %649, ptr %20, align 8, !tbaa !9
  %650 = load ptr, ptr %11, align 8, !tbaa !5
  %651 = load i64, ptr %650, align 8, !tbaa !9
  %652 = load i64, ptr %27, align 8, !tbaa !9
  %653 = sub nsw i64 %651, %652
  %654 = add nsw i64 %653, 1
  store i64 %654, ptr %21, align 8, !tbaa !9
  %655 = load ptr, ptr %12, align 8, !tbaa !5
  %656 = load i64, ptr %27, align 8, !tbaa !9
  %657 = load i64, ptr %27, align 8, !tbaa !9
  %658 = load i64, ptr %18, align 8, !tbaa !9
  %659 = mul nsw i64 %657, %658
  %660 = add nsw i64 %656, %659
  %661 = getelementptr inbounds %struct.complex, ptr %655, i64 %660
  %662 = load ptr, ptr %13, align 8, !tbaa !5
  %663 = load ptr, ptr %14, align 8, !tbaa !5
  %664 = load i64, ptr %27, align 8, !tbaa !9
  %665 = getelementptr inbounds %struct.complex, ptr %663, i64 %664
  %666 = load ptr, ptr %15, align 8, !tbaa !5
  %667 = getelementptr inbounds %struct.complex, ptr %666, i64 1
  %668 = call i32 @cgeqr2_(ptr noundef %20, ptr noundef %21, ptr noundef %661, ptr noundef %662, ptr noundef %665, ptr noundef %667, ptr noundef %36)
  br label %669

669:                                              ; preds = %644, %612
  br label %670

670:                                              ; preds = %669, %536
  %671 = load ptr, ptr %10, align 8, !tbaa !5
  %672 = load i64, ptr %671, align 8, !tbaa !9
  %673 = load ptr, ptr %11, align 8, !tbaa !5
  %674 = load i64, ptr %673, align 8, !tbaa !9
  %675 = icmp slt i64 %672, %674
  br i1 %675, label %676, label %934

676:                                              ; preds = %670
  %677 = load i64, ptr %27, align 8, !tbaa !9
  %678 = icmp ne i64 %677, 1
  br i1 %678, label %679, label %934

679:                                              ; preds = %676
  %680 = load i64, ptr %32, align 8, !tbaa !9
  %681 = load i64, ptr %31, align 8, !tbaa !9
  %682 = icmp sle i64 %680, %681
  br i1 %682, label %683, label %708

683:                                              ; preds = %679
  %684 = load ptr, ptr %10, align 8, !tbaa !5
  %685 = load i64, ptr %684, align 8, !tbaa !9
  %686 = load i64, ptr %27, align 8, !tbaa !9
  %687 = sub nsw i64 %685, %686
  %688 = add nsw i64 %687, 1
  store i64 %688, ptr %20, align 8, !tbaa !9
  %689 = load i64, ptr %29, align 8, !tbaa !9
  %690 = load i64, ptr %27, align 8, !tbaa !9
  %691 = sub nsw i64 %689, %690
  %692 = add nsw i64 %691, 1
  store i64 %692, ptr %21, align 8, !tbaa !9
  %693 = load ptr, ptr %12, align 8, !tbaa !5
  %694 = load i64, ptr %27, align 8, !tbaa !9
  %695 = load i64, ptr %27, align 8, !tbaa !9
  %696 = load i64, ptr %18, align 8, !tbaa !9
  %697 = mul nsw i64 %695, %696
  %698 = add nsw i64 %694, %697
  %699 = getelementptr inbounds %struct.complex, ptr %693, i64 %698
  %700 = load ptr, ptr %13, align 8, !tbaa !5
  %701 = load ptr, ptr %14, align 8, !tbaa !5
  %702 = load i64, ptr %27, align 8, !tbaa !9
  %703 = getelementptr inbounds %struct.complex, ptr %701, i64 %702
  %704 = load ptr, ptr %15, align 8, !tbaa !5
  %705 = load i64, ptr %27, align 8, !tbaa !9
  %706 = getelementptr inbounds %struct.complex, ptr %704, i64 %705
  %707 = call i32 @clarft_(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef %20, ptr noundef %21, ptr noundef %699, ptr noundef %700, ptr noundef %703, ptr noundef %706, ptr noundef %37)
  br label %736

708:                                              ; preds = %679
  %709 = load ptr, ptr %10, align 8, !tbaa !5
  %710 = load i64, ptr %709, align 8, !tbaa !9
  %711 = load i64, ptr %27, align 8, !tbaa !9
  %712 = sub nsw i64 %710, %711
  %713 = add nsw i64 %712, 1
  store i64 %713, ptr %20, align 8, !tbaa !9
  %714 = load i64, ptr %29, align 8, !tbaa !9
  %715 = load i64, ptr %27, align 8, !tbaa !9
  %716 = sub nsw i64 %714, %715
  %717 = add nsw i64 %716, 1
  store i64 %717, ptr %21, align 8, !tbaa !9
  %718 = load ptr, ptr %12, align 8, !tbaa !5
  %719 = load i64, ptr %27, align 8, !tbaa !9
  %720 = load i64, ptr %27, align 8, !tbaa !9
  %721 = load i64, ptr %18, align 8, !tbaa !9
  %722 = mul nsw i64 %720, %721
  %723 = add nsw i64 %719, %722
  %724 = getelementptr inbounds %struct.complex, ptr %718, i64 %723
  %725 = load ptr, ptr %13, align 8, !tbaa !5
  %726 = load ptr, ptr %14, align 8, !tbaa !5
  %727 = load i64, ptr %27, align 8, !tbaa !9
  %728 = getelementptr inbounds %struct.complex, ptr %726, i64 %727
  %729 = load ptr, ptr %15, align 8, !tbaa !5
  %730 = load i64, ptr %37, align 8, !tbaa !9
  %731 = load i64, ptr %31, align 8, !tbaa !9
  %732 = mul nsw i64 %730, %731
  %733 = add nsw i64 %732, 1
  %734 = getelementptr inbounds %struct.complex, ptr %729, i64 %733
  %735 = call i32 @clarft_(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef %20, ptr noundef %21, ptr noundef %724, ptr noundef %725, ptr noundef %728, ptr noundef %734, ptr noundef %32)
  br label %736

736:                                              ; preds = %708, %683
  %737 = load i64, ptr %29, align 8, !tbaa !9
  %738 = load i64, ptr %33, align 8, !tbaa !9
  %739 = sub nsw i64 %737, %738
  store i64 %739, ptr %20, align 8, !tbaa !9
  %740 = load i64, ptr %31, align 8, !tbaa !9
  store i64 %740, ptr %21, align 8, !tbaa !9
  store i64 1, ptr %28, align 8, !tbaa !9
  br label %741

741:                                              ; preds = %818, %736
  %742 = load i64, ptr %21, align 8, !tbaa !9
  %743 = icmp slt i64 %742, 0
  br i1 %743, label %744, label %749

744:                                              ; preds = %741
  %745 = load i64, ptr %28, align 8, !tbaa !9
  %746 = load i64, ptr %20, align 8, !tbaa !9
  %747 = icmp sge i64 %745, %746
  %748 = zext i1 %747 to i32
  br label %754

749:                                              ; preds = %741
  %750 = load i64, ptr %28, align 8, !tbaa !9
  %751 = load i64, ptr %20, align 8, !tbaa !9
  %752 = icmp sle i64 %750, %751
  %753 = zext i1 %752 to i32
  br label %754

754:                                              ; preds = %749, %744
  %755 = phi i32 [ %748, %744 ], [ %753, %749 ]
  %756 = icmp ne i32 %755, 0
  br i1 %756, label %757, label %822

757:                                              ; preds = %754
  %758 = load i64, ptr %29, align 8, !tbaa !9
  %759 = load i64, ptr %28, align 8, !tbaa !9
  %760 = sub nsw i64 %758, %759
  %761 = add nsw i64 %760, 1
  store i64 %761, ptr %23, align 8, !tbaa !9
  %762 = load i64, ptr %23, align 8, !tbaa !9
  %763 = load i64, ptr %31, align 8, !tbaa !9
  %764 = icmp sle i64 %762, %763
  br i1 %764, label %765, label %767

765:                                              ; preds = %757
  %766 = load i64, ptr %23, align 8, !tbaa !9
  br label %769

767:                                              ; preds = %757
  %768 = load i64, ptr %31, align 8, !tbaa !9
  br label %769

769:                                              ; preds = %767, %765
  %770 = phi i64 [ %766, %765 ], [ %768, %767 ]
  store i64 %770, ptr %30, align 8, !tbaa !9
  %771 = load ptr, ptr %10, align 8, !tbaa !5
  %772 = load i64, ptr %771, align 8, !tbaa !9
  %773 = load i64, ptr %28, align 8, !tbaa !9
  %774 = sub nsw i64 %772, %773
  %775 = add nsw i64 %774, 1
  store i64 %775, ptr %23, align 8, !tbaa !9
  %776 = load ptr, ptr %11, align 8, !tbaa !5
  %777 = load i64, ptr %776, align 8, !tbaa !9
  %778 = load ptr, ptr %10, align 8, !tbaa !5
  %779 = load i64, ptr %778, align 8, !tbaa !9
  %780 = sub nsw i64 %777, %779
  store i64 %780, ptr %22, align 8, !tbaa !9
  %781 = load ptr, ptr %11, align 8, !tbaa !5
  %782 = load i64, ptr %781, align 8, !tbaa !9
  %783 = load ptr, ptr %10, align 8, !tbaa !5
  %784 = load i64, ptr %783, align 8, !tbaa !9
  %785 = sub nsw i64 %782, %784
  store i64 %785, ptr %24, align 8, !tbaa !9
  %786 = load ptr, ptr %12, align 8, !tbaa !5
  %787 = load i64, ptr %28, align 8, !tbaa !9
  %788 = load i64, ptr %28, align 8, !tbaa !9
  %789 = load i64, ptr %18, align 8, !tbaa !9
  %790 = mul nsw i64 %788, %789
  %791 = add nsw i64 %787, %790
  %792 = getelementptr inbounds %struct.complex, ptr %786, i64 %791
  %793 = load ptr, ptr %13, align 8, !tbaa !5
  %794 = load ptr, ptr %15, align 8, !tbaa !5
  %795 = load i64, ptr %28, align 8, !tbaa !9
  %796 = getelementptr inbounds %struct.complex, ptr %794, i64 %795
  %797 = load ptr, ptr %12, align 8, !tbaa !5
  %798 = load i64, ptr %28, align 8, !tbaa !9
  %799 = load ptr, ptr %10, align 8, !tbaa !5
  %800 = load i64, ptr %799, align 8, !tbaa !9
  %801 = add nsw i64 %800, 1
  %802 = load i64, ptr %18, align 8, !tbaa !9
  %803 = mul nsw i64 %801, %802
  %804 = add nsw i64 %798, %803
  %805 = getelementptr inbounds %struct.complex, ptr %797, i64 %804
  %806 = load ptr, ptr %13, align 8, !tbaa !5
  %807 = load ptr, ptr %15, align 8, !tbaa !5
  %808 = load i64, ptr %37, align 8, !tbaa !9
  %809 = load i64, ptr %31, align 8, !tbaa !9
  %810 = mul nsw i64 %808, %809
  %811 = load i64, ptr %32, align 8, !tbaa !9
  %812 = load i64, ptr %32, align 8, !tbaa !9
  %813 = mul nsw i64 %811, %812
  %814 = add nsw i64 %810, %813
  %815 = add nsw i64 %814, 1
  %816 = getelementptr inbounds %struct.complex, ptr %807, i64 %815
  %817 = call i32 @clarfb_(ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef %23, ptr noundef %22, ptr noundef %30, ptr noundef %792, ptr noundef %793, ptr noundef %796, ptr noundef %37, ptr noundef %805, ptr noundef %806, ptr noundef %816, ptr noundef %24)
  br label %818

818:                                              ; preds = %769
  %819 = load i64, ptr %21, align 8, !tbaa !9
  %820 = load i64, ptr %28, align 8, !tbaa !9
  %821 = add nsw i64 %820, %819
  store i64 %821, ptr %28, align 8, !tbaa !9
  br label %741, !llvm.loop !20

822:                                              ; preds = %754
  %823 = load i64, ptr %32, align 8, !tbaa !9
  %824 = load i64, ptr %31, align 8, !tbaa !9
  %825 = icmp sle i64 %823, %824
  br i1 %825, label %826, label %878

826:                                              ; preds = %822
  %827 = load ptr, ptr %10, align 8, !tbaa !5
  %828 = load i64, ptr %827, align 8, !tbaa !9
  %829 = load i64, ptr %28, align 8, !tbaa !9
  %830 = sub nsw i64 %828, %829
  %831 = add nsw i64 %830, 1
  store i64 %831, ptr %21, align 8, !tbaa !9
  %832 = load ptr, ptr %11, align 8, !tbaa !5
  %833 = load i64, ptr %832, align 8, !tbaa !9
  %834 = load ptr, ptr %10, align 8, !tbaa !5
  %835 = load i64, ptr %834, align 8, !tbaa !9
  %836 = sub nsw i64 %833, %835
  store i64 %836, ptr %20, align 8, !tbaa !9
  %837 = load i64, ptr %29, align 8, !tbaa !9
  %838 = load i64, ptr %28, align 8, !tbaa !9
  %839 = sub nsw i64 %837, %838
  %840 = add nsw i64 %839, 1
  store i64 %840, ptr %23, align 8, !tbaa !9
  %841 = load ptr, ptr %11, align 8, !tbaa !5
  %842 = load i64, ptr %841, align 8, !tbaa !9
  %843 = load ptr, ptr %10, align 8, !tbaa !5
  %844 = load i64, ptr %843, align 8, !tbaa !9
  %845 = sub nsw i64 %842, %844
  store i64 %845, ptr %22, align 8, !tbaa !9
  %846 = load ptr, ptr %12, align 8, !tbaa !5
  %847 = load i64, ptr %28, align 8, !tbaa !9
  %848 = load i64, ptr %28, align 8, !tbaa !9
  %849 = load i64, ptr %18, align 8, !tbaa !9
  %850 = mul nsw i64 %848, %849
  %851 = add nsw i64 %847, %850
  %852 = getelementptr inbounds %struct.complex, ptr %846, i64 %851
  %853 = load ptr, ptr %13, align 8, !tbaa !5
  %854 = load ptr, ptr %15, align 8, !tbaa !5
  %855 = load i64, ptr %28, align 8, !tbaa !9
  %856 = getelementptr inbounds %struct.complex, ptr %854, i64 %855
  %857 = load ptr, ptr %12, align 8, !tbaa !5
  %858 = load i64, ptr %28, align 8, !tbaa !9
  %859 = load ptr, ptr %10, align 8, !tbaa !5
  %860 = load i64, ptr %859, align 8, !tbaa !9
  %861 = add nsw i64 %860, 1
  %862 = load i64, ptr %18, align 8, !tbaa !9
  %863 = mul nsw i64 %861, %862
  %864 = add nsw i64 %858, %863
  %865 = getelementptr inbounds %struct.complex, ptr %857, i64 %864
  %866 = load ptr, ptr %13, align 8, !tbaa !5
  %867 = load ptr, ptr %15, align 8, !tbaa !5
  %868 = load i64, ptr %37, align 8, !tbaa !9
  %869 = load i64, ptr %31, align 8, !tbaa !9
  %870 = mul nsw i64 %868, %869
  %871 = load i64, ptr %32, align 8, !tbaa !9
  %872 = load i64, ptr %32, align 8, !tbaa !9
  %873 = mul nsw i64 %871, %872
  %874 = add nsw i64 %870, %873
  %875 = add nsw i64 %874, 1
  %876 = getelementptr inbounds %struct.complex, ptr %867, i64 %875
  %877 = call i32 @clarfb_(ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef %21, ptr noundef %20, ptr noundef %23, ptr noundef %852, ptr noundef %853, ptr noundef %856, ptr noundef %37, ptr noundef %865, ptr noundef %866, ptr noundef %876, ptr noundef %22)
  br label %933

878:                                              ; preds = %822
  %879 = load ptr, ptr %10, align 8, !tbaa !5
  %880 = load i64, ptr %879, align 8, !tbaa !9
  %881 = load i64, ptr %28, align 8, !tbaa !9
  %882 = sub nsw i64 %880, %881
  %883 = add nsw i64 %882, 1
  store i64 %883, ptr %21, align 8, !tbaa !9
  %884 = load ptr, ptr %11, align 8, !tbaa !5
  %885 = load i64, ptr %884, align 8, !tbaa !9
  %886 = load ptr, ptr %10, align 8, !tbaa !5
  %887 = load i64, ptr %886, align 8, !tbaa !9
  %888 = sub nsw i64 %885, %887
  store i64 %888, ptr %20, align 8, !tbaa !9
  %889 = load i64, ptr %29, align 8, !tbaa !9
  %890 = load i64, ptr %28, align 8, !tbaa !9
  %891 = sub nsw i64 %889, %890
  %892 = add nsw i64 %891, 1
  store i64 %892, ptr %23, align 8, !tbaa !9
  %893 = load ptr, ptr %11, align 8, !tbaa !5
  %894 = load i64, ptr %893, align 8, !tbaa !9
  %895 = load ptr, ptr %10, align 8, !tbaa !5
  %896 = load i64, ptr %895, align 8, !tbaa !9
  %897 = sub nsw i64 %894, %896
  store i64 %897, ptr %22, align 8, !tbaa !9
  %898 = load ptr, ptr %12, align 8, !tbaa !5
  %899 = load i64, ptr %28, align 8, !tbaa !9
  %900 = load i64, ptr %28, align 8, !tbaa !9
  %901 = load i64, ptr %18, align 8, !tbaa !9
  %902 = mul nsw i64 %900, %901
  %903 = add nsw i64 %899, %902
  %904 = getelementptr inbounds %struct.complex, ptr %898, i64 %903
  %905 = load ptr, ptr %13, align 8, !tbaa !5
  %906 = load ptr, ptr %15, align 8, !tbaa !5
  %907 = load i64, ptr %37, align 8, !tbaa !9
  %908 = load i64, ptr %31, align 8, !tbaa !9
  %909 = mul nsw i64 %907, %908
  %910 = add nsw i64 %909, 1
  %911 = getelementptr inbounds %struct.complex, ptr %906, i64 %910
  %912 = load ptr, ptr %12, align 8, !tbaa !5
  %913 = load i64, ptr %28, align 8, !tbaa !9
  %914 = load ptr, ptr %10, align 8, !tbaa !5
  %915 = load i64, ptr %914, align 8, !tbaa !9
  %916 = add nsw i64 %915, 1
  %917 = load i64, ptr %18, align 8, !tbaa !9
  %918 = mul nsw i64 %916, %917
  %919 = add nsw i64 %913, %918
  %920 = getelementptr inbounds %struct.complex, ptr %912, i64 %919
  %921 = load ptr, ptr %13, align 8, !tbaa !5
  %922 = load ptr, ptr %15, align 8, !tbaa !5
  %923 = load i64, ptr %37, align 8, !tbaa !9
  %924 = load i64, ptr %31, align 8, !tbaa !9
  %925 = mul nsw i64 %923, %924
  %926 = load i64, ptr %32, align 8, !tbaa !9
  %927 = load i64, ptr %32, align 8, !tbaa !9
  %928 = mul nsw i64 %926, %927
  %929 = add nsw i64 %925, %928
  %930 = add nsw i64 %929, 1
  %931 = getelementptr inbounds %struct.complex, ptr %922, i64 %930
  %932 = call i32 @clarfb_(ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef %21, ptr noundef %20, ptr noundef %23, ptr noundef %904, ptr noundef %905, ptr noundef %911, ptr noundef %32, ptr noundef %920, ptr noundef %921, ptr noundef %931, ptr noundef %22)
  br label %933

933:                                              ; preds = %878, %826
  br label %934

934:                                              ; preds = %933, %676, %670
  %935 = load i64, ptr %34, align 8, !tbaa !9
  %936 = sitofp i64 %935 to float
  %937 = load ptr, ptr %15, align 8, !tbaa !5
  %938 = getelementptr inbounds %struct.complex, ptr %937, i64 1
  %939 = getelementptr inbounds %struct.complex, ptr %938, i32 0, i32 0
  store float %936, ptr %939, align 4, !tbaa !13
  %940 = load ptr, ptr %15, align 8, !tbaa !5
  %941 = getelementptr inbounds %struct.complex, ptr %940, i64 1
  %942 = getelementptr inbounds %struct.complex, ptr %941, i32 0, i32 1
  store float 0.000000e+00, ptr %942, align 4, !tbaa !15
  store i32 0, ptr %9, align 4
  store i32 1, ptr %41, align 4
  br label %943

943:                                              ; preds = %934, %283, %278, %270
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #4
  %944 = load i32, ptr %9, align 4
  ret i32 %944
}

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

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

declare double @sceil_(ptr noundef) #2

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

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

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

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

declare i32 @clarft_(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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nounwind }

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

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

@c__1 = external hidden global i64, align 8
@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i64, align 8
@c__3 = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [11 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @cgeqrf_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr nocapture noundef readonly %6, ptr nocapture noundef %7) local_unnamed_addr #0 {
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca float, align 4
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #5
  %20 = load i64, ptr %3, align 8, !tbaa !5
  %21 = xor i64 %20, -1
  %22 = getelementptr inbounds %struct.complex, ptr %2, i64 %21
  %23 = getelementptr inbounds i8, ptr %4, i64 -8
  %24 = getelementptr inbounds i8, ptr %5, i64 -8
  store i64 0, ptr %7, align 8, !tbaa !5
  %25 = load i64, ptr %1, align 8, !tbaa !5
  %26 = load i64, ptr %0, align 8, !tbaa !5
  %. = tail call i64 @llvm.smin.i64(i64 %26, i64 %25)
  %27 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #5
  store i64 %27, ptr %16, align 8, !tbaa !5
  %28 = icmp sgt i64 %27, 1
  %29 = icmp slt i64 %27, %.
  %or.cond317 = select i1 %28, i1 %29, i1 false
  br i1 %or.cond317, label %30, label %33

30:                                               ; preds = %8
  store i64 0, ptr %9, align 8, !tbaa !5
  %31 = tail call i64 @ilaenv_(ptr noundef nonnull @c__3, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #5
  store i64 %31, ptr %10, align 8, !tbaa !5
  %32 = tail call i64 @llvm.smax.i64(i64 %31, i64 0)
  br label %33

33:                                               ; preds = %30, %8
  %.0278 = phi i64 [ %32, %30 ], [ 0, %8 ]
  %34 = sub nsw i64 %., %.0278
  %35 = sitofp i64 %34 to float
  %36 = sitofp i64 %27 to float
  %37 = fdiv float %35, %36
  store float %37, ptr %14, align 4, !tbaa !9
  %38 = sitofp i64 %. to double
  %39 = call double @sceil_(ptr noundef nonnull %14) #5
  %40 = sitofp i64 %27 to double
  %41 = fneg double %39
  %42 = call double @llvm.fmuladd.f64(double %41, double %40, double %38)
  %43 = fptosi double %42 to i64
  store i64 %43, ptr %17, align 8, !tbaa !5
  %44 = load i64, ptr %1, align 8, !tbaa !5
  %45 = load i64, ptr %0, align 8, !tbaa !5
  %46 = sub nsw i64 %44, %45
  %47 = mul nsw i64 %46, %.
  store i64 %47, ptr %11, align 8, !tbaa !5
  %48 = mul nsw i64 %46, %27
  store i64 %48, ptr %12, align 8, !tbaa !5
  %49 = mul nsw i64 %27, %.
  store i64 %49, ptr %13, align 8, !tbaa !5
  %50 = mul nsw i64 %27, %27
  %51 = call i64 @llvm.smax.i64(i64 %47, i64 %48)
  store i64 %51, ptr %9, align 8, !tbaa !5
  %52 = call i64 @llvm.smax.i64(i64 %49, i64 %50)
  %53 = call i64 @llvm.smax.i64(i64 %51, i64 %52)
  %54 = uitofp nneg i64 %53 to float
  %55 = fdiv float %54, %36
  store float %55, ptr %14, align 4, !tbaa !9
  %56 = call double @sceil_(ptr noundef nonnull %14) #5
  %57 = fptosi double %56 to i64
  %58 = icmp slt i64 %27, %43
  br i1 %58, label %59, label %65

59:                                               ; preds = %33
  %60 = sub nsw i64 %., %43
  %61 = add nsw i64 %60, %57
  %62 = mul nsw i64 %61, %27
  %63 = mul nsw i64 %43, %43
  %64 = add nsw i64 %62, %63
  br label %74

65:                                               ; preds = %33
  %66 = sitofp i64 %. to float
  %67 = fdiv float %66, %36
  store float %67, ptr %14, align 4, !tbaa !9
  %68 = call double @sceil_(ptr noundef nonnull %14) #5
  %69 = fmul double %68, %40
  %70 = fptosi double %69 to i64
  %71 = sub i64 %57, %27
  %72 = add i64 %71, %70
  %73 = mul nsw i64 %72, %27
  br label %74

74:                                               ; preds = %65, %59
  %75 = phi i64 [ %60, %59 ], [ %70, %65 ]
  %.sink.in = phi i64 [ %64, %59 ], [ %73, %65 ]
  %.sink = sitofp i64 %.sink.in to float
  store i64 %75, ptr %19, align 8
  store float %.sink, ptr %5, align 4
  %76 = getelementptr inbounds i8, ptr %5, i64 4
  store float 0.000000e+00, ptr %76, align 4
  %77 = load i64, ptr %6, align 8, !tbaa !5
  %78 = icmp eq i64 %77, -1
  %79 = load i64, ptr %0, align 8, !tbaa !5
  %80 = icmp slt i64 %79, 0
  br i1 %80, label %.thread.sink.split, label %81

81:                                               ; preds = %74
  %82 = load i64, ptr %1, align 8, !tbaa !5
  %83 = icmp slt i64 %82, 0
  br i1 %83, label %.thread.sink.split, label %84

84:                                               ; preds = %81
  %85 = load i64, ptr %3, align 8, !tbaa !5
  %spec.select = call i64 @llvm.umax.i64(i64 %79, i64 1)
  %86 = icmp slt i64 %85, %spec.select
  br i1 %86, label %.thread.sink.split, label %87

87:                                               ; preds = %84
  %spec.select318 = call i64 @llvm.umax.i64(i64 %82, i64 1)
  %88 = icmp sge i64 %77, %spec.select318
  %or.cond = or i1 %78, %88
  br i1 %or.cond, label %89, label %.thread.sink.split

89:                                               ; preds = %87
  %.pr = load i64, ptr %7, align 8, !tbaa !5
  %.not302 = icmp eq i64 %.pr, 0
  br i1 %.not302, label %93, label %.thread

.thread.sink.split:                               ; preds = %87, %84, %81, %74
  %.sink404 = phi i64 [ -1, %74 ], [ -2, %81 ], [ -4, %84 ], [ -7, %87 ]
  store i64 %.sink404, ptr %7, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %89
  %90 = phi i64 [ %.pr, %89 ], [ %.sink404, %.thread.sink.split ]
  %91 = sub nsw i64 0, %90
  store i64 %91, ptr %9, align 8, !tbaa !5
  %92 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %9) #5
  br label %314

93:                                               ; preds = %89
  br i1 %78, label %314, label %94

94:                                               ; preds = %93
  %95 = icmp eq i64 %., 0
  br i1 %95, label %96, label %97

96:                                               ; preds = %94
  store float 1.000000e+00, ptr %5, align 4, !tbaa !11
  br label %314

97:                                               ; preds = %94
  %98 = icmp slt i64 %.0278, %.
  %or.cond320 = select i1 %or.cond317, i1 %98, i1 false
  br i1 %or.cond320, label %99, label %118

99:                                               ; preds = %97
  br i1 %58, label %100, label %.thread324

100:                                              ; preds = %99
  %101 = add nsw i64 %75, %57
  %102 = mul nsw i64 %101, %27
  %103 = mul nsw i64 %43, %43
  %104 = add nsw i64 %102, %103
  %105 = icmp slt i64 %77, %104
  br i1 %105, label %111, label %118

.thread324:                                       ; preds = %99
  %106 = sub i64 %57, %27
  %107 = add i64 %106, %75
  %108 = mul nsw i64 %107, %27
  %109 = icmp slt i64 %77, %108
  br i1 %109, label %.thread327, label %118

.thread327:                                       ; preds = %.thread324
  %110 = sdiv i64 %77, %107
  br label %114

111:                                              ; preds = %100
  %112 = sub nsw i64 %77, %103
  %113 = sdiv i64 %112, %101
  br label %114

114:                                              ; preds = %111, %.thread327
  %.0277326329 = phi i64 [ %104, %111 ], [ %108, %.thread327 ]
  %storemerge = phi i64 [ %113, %111 ], [ %110, %.thread327 ]
  store i64 %storemerge, ptr %16, align 8, !tbaa !5
  store i64 2, ptr %9, align 8, !tbaa !5
  %115 = call i64 @ilaenv_(ptr noundef nonnull @c__2, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #5
  %116 = load i64, ptr %9, align 8
  %117 = call i64 @llvm.smax.i64(i64 %116, i64 %115)
  br label %118

118:                                              ; preds = %.thread324, %114, %100, %97
  %119 = phi i64 [ %storemerge, %114 ], [ %27, %100 ], [ %27, %97 ], [ %27, %.thread324 ]
  %.1 = phi i64 [ %.0277326329, %114 ], [ %104, %100 ], [ %25, %97 ], [ %108, %.thread324 ]
  %.0276 = phi i64 [ %117, %114 ], [ 2, %100 ], [ 2, %97 ], [ 2, %.thread324 ]
  %.not306 = icmp sge i64 %119, %.0276
  %120 = icmp slt i64 %119, %.
  %or.cond321 = select i1 %.not306, i1 %120, i1 false
  %or.cond322 = select i1 %or.cond321, i1 %98, i1 false
  br i1 %or.cond322, label %121, label %.thread331

121:                                              ; preds = %118
  store i64 %34, ptr %9, align 8, !tbaa !5
  store i64 %119, ptr %10, align 8, !tbaa !5
  %122 = icmp slt i64 %119, 0
  %123 = icmp slt i64 %34, 2
  %124 = icmp sgt i64 %34, 0
  %.in347 = select i1 %122, i1 %123, i1 %124
  br i1 %.in347, label %.lr.ph351, label %.thread336

.lr.ph351:                                        ; preds = %121
  %125 = add i64 %20, 1
  %.pre376 = mul nsw i64 %43, %43
  %126 = mul nsw i64 %43, %43
  %invariant.gep400 = getelementptr %struct.complex, ptr %5, i64 %126
  br label %127

127:                                              ; preds = %.lr.ph351, %172
  %.0281.neg349 = phi i64 [ -1, %.lr.ph351 ], [ %.0281.neg, %172 ]
  %.0281348 = phi i64 [ 1, %.lr.ph351 ], [ %174, %172 ]
  %128 = sub nsw i64 %., %.0281348
  %129 = add nsw i64 %128, 1
  %130 = load i64, ptr %16, align 8
  %131 = call i64 @llvm.smin.i64(i64 %129, i64 %130)
  store i64 %131, ptr %15, align 8, !tbaa !5
  %132 = sub nsw i64 %.0281348, %130
  store i64 %132, ptr %11, align 8, !tbaa !5
  store i64 %130, ptr %12, align 8, !tbaa !5
  %133 = icmp slt i64 %130, 0
  %134 = icmp slt i64 %132, 2
  %135 = icmp sgt i64 %132, 0
  %.in315345 = select i1 %133, i1 %134, i1 %135
  br i1 %.in315345, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %127
  %136 = mul nsw i64 %.0281348, %20
  %invariant.gep = getelementptr %struct.complex, ptr %22, i64 %136
  br label %137

137:                                              ; preds = %.lr.ph, %137
  %.0279346 = phi i64 [ 1, %.lr.ph ], [ %148, %137 ]
  %138 = load i64, ptr %0, align 8, !tbaa !5
  %reass.sub = sub i64 %138, %.0279346
  %139 = add i64 %reass.sub, 1
  store i64 %139, ptr %13, align 8, !tbaa !5
  %140 = mul i64 %.0279346, %125
  %141 = getelementptr inbounds %struct.complex, ptr %22, i64 %140
  %142 = getelementptr inbounds %struct.complex, ptr %24, i64 %.0279346
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %.0279346
  %143 = load i64, ptr %19, align 8, !tbaa !5
  %144 = load i64, ptr %16, align 8, !tbaa !5
  %145 = mul nsw i64 %144, %143
  %gep401 = getelementptr %struct.complex, ptr %invariant.gep400, i64 %145
  %146 = call i32 @clarfb_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull %13, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef %141, ptr noundef nonnull %3, ptr noundef nonnull %142, ptr noundef nonnull %19, ptr noundef %gep, ptr noundef nonnull %3, ptr noundef %gep401, ptr noundef nonnull %15) #5
  %147 = load i64, ptr %12, align 8, !tbaa !5
  %148 = add nsw i64 %147, %.0279346
  %149 = icmp slt i64 %147, 0
  %150 = icmp sge i64 %148, %132
  %151 = icmp sle i64 %148, %132
  %.in315 = select i1 %149, i1 %150, i1 %151
  br i1 %.in315, label %137, label %._crit_edge.loopexit, !llvm.loop !13

._crit_edge.loopexit:                             ; preds = %137
  %.pre = load i64, ptr %16, align 8, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %127, %._crit_edge.loopexit
  %.pre-phi = phi i64 [ %126, %._crit_edge.loopexit ], [ %.pre376, %127 ]
  %152 = phi i64 [ %.pre, %._crit_edge.loopexit ], [ %130, %127 ]
  %153 = load i64, ptr %0, align 8, !tbaa !5
  %154 = add i64 %.0281.neg349, 1
  %155 = add i64 %154, %153
  store i64 %155, ptr %12, align 8, !tbaa !5
  %156 = mul i64 %.0281348, %125
  %157 = getelementptr inbounds %struct.complex, ptr %22, i64 %156
  %158 = getelementptr inbounds %struct.complex, ptr %23, i64 %.0281348
  %159 = load i64, ptr %19, align 8, !tbaa !5
  %160 = mul nsw i64 %152, %159
  %161 = getelementptr %struct.complex, ptr %5, i64 %160
  %162 = getelementptr %struct.complex, ptr %161, i64 %.pre-phi
  %163 = call i32 @cgeqr2_(ptr noundef nonnull %12, ptr noundef nonnull %15, ptr noundef %157, ptr noundef nonnull %3, ptr noundef nonnull %158, ptr noundef %162, ptr noundef nonnull %18) #5
  %164 = load i64, ptr %15, align 8, !tbaa !5
  %165 = add nsw i64 %164, %.0281348
  %166 = load i64, ptr %1, align 8, !tbaa !5
  %.not316 = icmp sgt i64 %165, %166
  br i1 %.not316, label %172, label %167

167:                                              ; preds = %._crit_edge
  %168 = load i64, ptr %0, align 8, !tbaa !5
  %169 = add i64 %154, %168
  store i64 %169, ptr %12, align 8, !tbaa !5
  %170 = getelementptr inbounds %struct.complex, ptr %24, i64 %.0281348
  %171 = call i32 @clarft_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull %12, ptr noundef nonnull %15, ptr noundef %157, ptr noundef nonnull %3, ptr noundef nonnull %158, ptr noundef nonnull %170, ptr noundef nonnull %19) #5
  br label %172

172:                                              ; preds = %._crit_edge, %167
  %173 = load i64, ptr %10, align 8, !tbaa !5
  %174 = add nsw i64 %173, %.0281348
  %.0281.neg = sub i64 0, %174
  %175 = icmp slt i64 %173, 0
  %176 = load i64, ptr %9, align 8
  %177 = icmp sge i64 %174, %176
  %178 = icmp sle i64 %174, %176
  %.in = select i1 %175, i1 %177, i1 %178
  br i1 %.in, label %127, label %._crit_edge352, !llvm.loop !15

._crit_edge352:                                   ; preds = %172
  %.not307 = icmp sgt i64 %174, %.
  br i1 %.not307, label %223, label %179

.thread331:                                       ; preds = %118
  %.not307333 = icmp slt i64 %., 1
  br i1 %.not307333, label %.thread341, label %.thread336

179:                                              ; preds = %._crit_edge352
  %.not308 = icmp eq i64 %174, 1
  br i1 %.not308, label %.thread336, label %180

180:                                              ; preds = %179
  %181 = load i64, ptr %16, align 8, !tbaa !5
  %182 = sub nsw i64 %174, %181
  store i64 %182, ptr %10, align 8, !tbaa !5
  store i64 %181, ptr %9, align 8, !tbaa !5
  %183 = icmp slt i64 %181, 0
  %184 = icmp slt i64 %182, 2
  %185 = icmp sgt i64 %182, 0
  %.in309354 = select i1 %183, i1 %184, i1 %185
  br i1 %.in309354, label %.lr.ph357, label %.._crit_edge358_crit_edge

.._crit_edge358_crit_edge:                        ; preds = %180
  %.pre377 = add i64 %20, 1
  %.pre379 = mul nsw i64 %43, %43
  br label %._crit_edge358

.lr.ph357:                                        ; preds = %180
  %186 = sub nsw i64 %., %174
  %187 = add nsw i64 %186, 1
  %188 = add i64 %20, 1
  %189 = mul nsw i64 %174, %20
  %invariant.gep359 = getelementptr %struct.complex, ptr %22, i64 %189
  %190 = mul nsw i64 %43, %43
  %invariant.gep402 = getelementptr %struct.complex, ptr %5, i64 %190
  br label %191

191:                                              ; preds = %.lr.ph357, %191
  %.1280355 = phi i64 [ 1, %.lr.ph357 ], [ %202, %191 ]
  %192 = load i64, ptr %0, align 8, !tbaa !5
  %reass.sub369 = sub i64 %192, %.1280355
  %193 = add i64 %reass.sub369, 1
  store i64 %193, ptr %12, align 8, !tbaa !5
  store i64 %187, ptr %11, align 8, !tbaa !5
  store i64 %187, ptr %13, align 8, !tbaa !5
  %194 = mul i64 %.1280355, %188
  %195 = getelementptr inbounds %struct.complex, ptr %22, i64 %194
  %196 = getelementptr inbounds %struct.complex, ptr %24, i64 %.1280355
  %gep360 = getelementptr %struct.complex, ptr %invariant.gep359, i64 %.1280355
  %197 = load i64, ptr %19, align 8, !tbaa !5
  %198 = load i64, ptr %16, align 8, !tbaa !5
  %199 = mul nsw i64 %198, %197
  %gep403 = getelementptr %struct.complex, ptr %invariant.gep402, i64 %199
  %200 = call i32 @clarfb_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull %12, ptr noundef nonnull %11, ptr noundef nonnull %16, ptr noundef %195, ptr noundef nonnull %3, ptr noundef nonnull %196, ptr noundef nonnull %19, ptr noundef %gep360, ptr noundef nonnull %3, ptr noundef %gep403, ptr noundef nonnull %13) #5
  %201 = load i64, ptr %9, align 8, !tbaa !5
  %202 = add nsw i64 %201, %.1280355
  %203 = icmp slt i64 %201, 0
  %204 = load i64, ptr %10, align 8
  %205 = icmp sge i64 %202, %204
  %206 = icmp sle i64 %202, %204
  %.in309 = select i1 %203, i1 %205, i1 %206
  br i1 %.in309, label %191, label %._crit_edge358.loopexit, !llvm.loop !16

._crit_edge358.loopexit:                          ; preds = %191
  %.pre374 = load i64, ptr %16, align 8, !tbaa !5
  br label %._crit_edge358

._crit_edge358:                                   ; preds = %.._crit_edge358_crit_edge, %._crit_edge358.loopexit
  %.pre-phi380 = phi i64 [ %.pre379, %.._crit_edge358_crit_edge ], [ %190, %._crit_edge358.loopexit ]
  %.pre-phi378 = phi i64 [ %.pre377, %.._crit_edge358_crit_edge ], [ %188, %._crit_edge358.loopexit ]
  %207 = phi i64 [ %181, %.._crit_edge358_crit_edge ], [ %.pre374, %._crit_edge358.loopexit ]
  %208 = load i64, ptr %0, align 8, !tbaa !5
  %reass.sub405 = sub i64 %208, %174
  %209 = add i64 %reass.sub405, 1
  store i64 %209, ptr %9, align 8, !tbaa !5
  %210 = add i64 %., 1
  %211 = sub i64 %210, %174
  store i64 %211, ptr %10, align 8, !tbaa !5
  %212 = mul i64 %174, %.pre-phi378
  %213 = getelementptr inbounds %struct.complex, ptr %22, i64 %212
  %214 = getelementptr inbounds %struct.complex, ptr %23, i64 %174
  %215 = load i64, ptr %19, align 8, !tbaa !5
  %216 = mul nsw i64 %207, %215
  %217 = getelementptr %struct.complex, ptr %5, i64 %216
  %218 = getelementptr %struct.complex, ptr %217, i64 %.pre-phi380
  %219 = call i32 @cgeqr2_(ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef %213, ptr noundef nonnull %3, ptr noundef nonnull %214, ptr noundef %218, ptr noundef nonnull %18) #5
  br label %223

.thread336:                                       ; preds = %121, %.thread331, %179
  %220 = load i64, ptr %0, align 8, !tbaa !5
  store i64 %220, ptr %9, align 8, !tbaa !5
  %221 = load i64, ptr %1, align 8, !tbaa !5
  store i64 %221, ptr %10, align 8, !tbaa !5
  %222 = call i32 @cgeqr2_(ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %18) #5
  br label %.thread341

223:                                              ; preds = %._crit_edge358, %._crit_edge352
  %224 = load i64, ptr %0, align 8, !tbaa !5
  %225 = load i64, ptr %1, align 8, !tbaa !5
  %226 = icmp slt i64 %224, %225
  %227 = icmp ne i64 %174, 1
  %or.cond3 = and i1 %227, %226
  br i1 %or.cond3, label %228, label %.thread341

228:                                              ; preds = %223
  %229 = load i64, ptr %16, align 8, !tbaa !5
  %.not310 = icmp slt i64 %229, %43
  %reass.sub406 = sub i64 %224, %174
  %230 = add i64 %reass.sub406, 1
  store i64 %230, ptr %9, align 8, !tbaa !5
  %231 = add i64 %., 1
  %232 = sub i64 %231, %174
  store i64 %232, ptr %10, align 8, !tbaa !5
  %233 = add i64 %20, 1
  %234 = mul i64 %174, %233
  %235 = getelementptr inbounds %struct.complex, ptr %22, i64 %234
  %236 = getelementptr inbounds %struct.complex, ptr %23, i64 %174
  br i1 %.not310, label %240, label %237

237:                                              ; preds = %228
  %238 = getelementptr inbounds %struct.complex, ptr %24, i64 %174
  %239 = call i32 @clarft_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef %235, ptr noundef nonnull %3, ptr noundef nonnull %236, ptr noundef nonnull %238, ptr noundef nonnull %19) #5
  br label %245

240:                                              ; preds = %228
  %241 = load i64, ptr %19, align 8, !tbaa !5
  %242 = mul nsw i64 %241, %229
  %243 = getelementptr %struct.complex, ptr %5, i64 %242
  %244 = call i32 @clarft_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef %235, ptr noundef nonnull %3, ptr noundef nonnull %236, ptr noundef %243, ptr noundef nonnull %17) #5
  br label %245

245:                                              ; preds = %240, %237
  store i64 %34, ptr %9, align 8, !tbaa !5
  %246 = load i64, ptr %16, align 8, !tbaa !5
  store i64 %246, ptr %10, align 8, !tbaa !5
  %247 = icmp slt i64 %246, 0
  %.in311361 = select i1 %247, i1 %123, i1 %124
  br i1 %.in311361, label %.lr.ph365, label %._crit_edge366

.lr.ph365:                                        ; preds = %245
  %248 = add i64 %20, 1
  br label %249

249:                                              ; preds = %.lr.ph365, %249
  %.2.neg363 = phi i64 [ -1, %.lr.ph365 ], [ %.2.neg, %249 ]
  %.2362 = phi i64 [ 1, %.lr.ph365 ], [ %274, %249 ]
  %250 = sub nsw i64 %., %.2362
  %251 = add nsw i64 %250, 1
  %252 = load i64, ptr %16, align 8
  %253 = call i64 @llvm.smin.i64(i64 %251, i64 %252)
  store i64 %253, ptr %15, align 8, !tbaa !5
  %254 = load i64, ptr %0, align 8, !tbaa !5
  %255 = add i64 %.2.neg363, 1
  %256 = add i64 %255, %254
  store i64 %256, ptr %12, align 8, !tbaa !5
  %257 = load i64, ptr %1, align 8, !tbaa !5
  %258 = sub nsw i64 %257, %254
  store i64 %258, ptr %11, align 8, !tbaa !5
  store i64 %258, ptr %13, align 8, !tbaa !5
  %259 = mul i64 %.2362, %248
  %260 = getelementptr inbounds %struct.complex, ptr %22, i64 %259
  %261 = getelementptr inbounds %struct.complex, ptr %24, i64 %.2362
  %262 = add nsw i64 %254, 1
  %263 = mul nsw i64 %262, %20
  %264 = getelementptr %struct.complex, ptr %22, i64 %.2362
  %265 = getelementptr %struct.complex, ptr %264, i64 %263
  %266 = load i64, ptr %19, align 8, !tbaa !5
  %267 = mul nsw i64 %266, %252
  %268 = load i64, ptr %17, align 8, !tbaa !5
  %269 = mul nsw i64 %268, %268
  %270 = getelementptr %struct.complex, ptr %5, i64 %267
  %271 = getelementptr %struct.complex, ptr %270, i64 %269
  %272 = call i32 @clarfb_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull %12, ptr noundef nonnull %11, ptr noundef nonnull %15, ptr noundef %260, ptr noundef nonnull %3, ptr noundef nonnull %261, ptr noundef nonnull %19, ptr noundef %265, ptr noundef nonnull %3, ptr noundef %271, ptr noundef nonnull %13) #5
  %273 = load i64, ptr %10, align 8, !tbaa !5
  %274 = add nsw i64 %273, %.2362
  %.2.neg = sub i64 0, %274
  %275 = icmp slt i64 %273, 0
  %276 = load i64, ptr %9, align 8
  %277 = icmp sge i64 %274, %276
  %278 = icmp sle i64 %274, %276
  %.in311 = select i1 %275, i1 %277, i1 %278
  br i1 %.in311, label %249, label %._crit_edge366.loopexit, !llvm.loop !17

._crit_edge366.loopexit:                          ; preds = %249
  %.pre375 = load i64, ptr %16, align 8, !tbaa !5
  br label %._crit_edge366

._crit_edge366:                                   ; preds = %._crit_edge366.loopexit, %245
  %279 = phi i64 [ %246, %245 ], [ %.pre375, %._crit_edge366.loopexit ]
  %.2.lcssa = phi i64 [ 1, %245 ], [ %274, %._crit_edge366.loopexit ]
  %.2.neg.lcssa = phi i64 [ -1, %245 ], [ %.2.neg, %._crit_edge366.loopexit ]
  %280 = load i64, ptr %17, align 8, !tbaa !5
  %.not312 = icmp sgt i64 %280, %279
  %281 = load i64, ptr %0, align 8, !tbaa !5
  %282 = add i64 %.2.neg.lcssa, 1
  %283 = add i64 %282, %281
  store i64 %283, ptr %10, align 8, !tbaa !5
  %284 = load i64, ptr %1, align 8, !tbaa !5
  %285 = sub nsw i64 %284, %281
  store i64 %285, ptr %9, align 8, !tbaa !5
  %286 = add i64 %., 1
  %287 = add i64 %286, %.2.neg.lcssa
  store i64 %287, ptr %12, align 8, !tbaa !5
  store i64 %285, ptr %11, align 8, !tbaa !5
  %288 = add i64 %20, 1
  %289 = mul i64 %.2.lcssa, %288
  %290 = getelementptr inbounds %struct.complex, ptr %22, i64 %289
  %291 = mul nsw i64 %280, %280
  br i1 %.not312, label %303, label %292

292:                                              ; preds = %._crit_edge366
  %293 = getelementptr inbounds %struct.complex, ptr %24, i64 %.2.lcssa
  %294 = add nsw i64 %281, 1
  %295 = mul nsw i64 %294, %20
  %296 = getelementptr %struct.complex, ptr %22, i64 %.2.lcssa
  %297 = getelementptr %struct.complex, ptr %296, i64 %295
  %298 = load i64, ptr %19, align 8, !tbaa !5
  %299 = mul nsw i64 %298, %279
  %300 = getelementptr %struct.complex, ptr %5, i64 %299
  %301 = getelementptr %struct.complex, ptr %300, i64 %291
  %302 = call i32 @clarfb_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull %10, ptr noundef nonnull %9, ptr noundef nonnull %12, ptr noundef %290, ptr noundef nonnull %3, ptr noundef nonnull %293, ptr noundef nonnull %19, ptr noundef %297, ptr noundef nonnull %3, ptr noundef %301, ptr noundef nonnull %11) #5
  br label %.thread341

303:                                              ; preds = %._crit_edge366
  %304 = load i64, ptr %19, align 8, !tbaa !5
  %305 = mul nsw i64 %304, %279
  %306 = getelementptr %struct.complex, ptr %5, i64 %305
  %307 = add nsw i64 %281, 1
  %308 = mul nsw i64 %307, %20
  %309 = getelementptr %struct.complex, ptr %22, i64 %.2.lcssa
  %310 = getelementptr %struct.complex, ptr %309, i64 %308
  %311 = getelementptr %struct.complex, ptr %306, i64 %291
  %312 = call i32 @clarfb_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull %10, ptr noundef nonnull %9, ptr noundef nonnull %12, ptr noundef %290, ptr noundef nonnull %3, ptr noundef %306, ptr noundef nonnull %17, ptr noundef %310, ptr noundef nonnull %3, ptr noundef %311, ptr noundef nonnull %11) #5
  br label %.thread341

.thread341:                                       ; preds = %.thread336, %.thread331, %292, %303, %223
  %313 = sitofp i64 %.1 to float
  store float %313, ptr %5, align 4, !tbaa !11
  store float 0.000000e+00, ptr %76, align 4, !tbaa !18
  br label %314

314:                                              ; preds = %93, %.thread341, %96, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #5
  ret i32 0
}

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

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

declare double @sceil_(ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #3

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

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

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

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

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

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

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

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

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

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

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


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MergedLoadStoreMotionPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass