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

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

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

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

146:                                              ; preds = %142
  %147 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -1, ptr %147, align 4, !tbaa !9
  br label %269

148:                                              ; preds = %142, %25
  %149 = load i32, ptr %70, align 4, !tbaa !9
  %150 = icmp ne i32 %149, 0
  br i1 %150, label %157, label %151

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

155:                                              ; preds = %151
  %156 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -2, ptr %156, align 4, !tbaa !9
  br label %268

157:                                              ; preds = %151, %148
  %158 = load i32, ptr %68, align 4, !tbaa !9
  %159 = icmp ne i32 %158, 0
  br i1 %159, label %166, label %160

160:                                              ; preds = %157
  %161 = load ptr, ptr %28, align 8, !tbaa !5
  %162 = call i32 @lsame_(ptr noundef %161, ptr noundef @.str.3)
  %163 = icmp ne i32 %162, 0
  br i1 %163, label %166, label %164

164:                                              ; preds = %160
  %165 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -3, ptr %165, align 4, !tbaa !9
  br label %267

166:                                              ; preds = %160, %157
  %167 = load ptr, ptr %29, align 8, !tbaa !5
  %168 = load i32, ptr %167, align 4, !tbaa !9
  %169 = icmp slt i32 %168, 0
  br i1 %169, label %170, label %172

170:                                              ; preds = %166
  %171 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -4, ptr %171, align 4, !tbaa !9
  br label %266

172:                                              ; preds = %166
  %173 = load ptr, ptr %30, align 8, !tbaa !5
  %174 = load i32, ptr %173, align 4, !tbaa !9
  %175 = icmp slt i32 %174, 0
  br i1 %175, label %176, label %178

176:                                              ; preds = %172
  %177 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -5, ptr %177, align 4, !tbaa !9
  br label %265

178:                                              ; preds = %172
  %179 = load ptr, ptr %31, align 8, !tbaa !5
  %180 = load i32, ptr %179, align 4, !tbaa !9
  %181 = icmp slt i32 %180, 0
  br i1 %181, label %182, label %184

182:                                              ; preds = %178
  %183 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -6, ptr %183, align 4, !tbaa !9
  br label %264

184:                                              ; preds = %178
  %185 = load ptr, ptr %33, align 8, !tbaa !5
  %186 = load i32, ptr %185, align 4, !tbaa !9
  %187 = load ptr, ptr %29, align 8, !tbaa !5
  %188 = load i32, ptr %187, align 4, !tbaa !9
  %189 = icmp sge i32 1, %188
  br i1 %189, label %190, label %191

190:                                              ; preds = %184
  br label %194

191:                                              ; preds = %184
  %192 = load ptr, ptr %29, align 8, !tbaa !5
  %193 = load i32, ptr %192, align 4, !tbaa !9
  br label %194

194:                                              ; preds = %191, %190
  %195 = phi i32 [ 1, %190 ], [ %193, %191 ]
  %196 = icmp slt i32 %186, %195
  br i1 %196, label %197, label %199

197:                                              ; preds = %194
  %198 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -8, ptr %198, align 4, !tbaa !9
  br label %263

199:                                              ; preds = %194
  %200 = load ptr, ptr %35, align 8, !tbaa !5
  %201 = load i32, ptr %200, align 4, !tbaa !9
  %202 = load ptr, ptr %30, align 8, !tbaa !5
  %203 = load i32, ptr %202, align 4, !tbaa !9
  %204 = icmp sge i32 1, %203
  br i1 %204, label %205, label %206

205:                                              ; preds = %199
  br label %209

206:                                              ; preds = %199
  %207 = load ptr, ptr %30, align 8, !tbaa !5
  %208 = load i32, ptr %207, align 4, !tbaa !9
  br label %209

209:                                              ; preds = %206, %205
  %210 = phi i32 [ 1, %205 ], [ %208, %206 ]
  %211 = icmp slt i32 %201, %210
  br i1 %211, label %212, label %214

212:                                              ; preds = %209
  %213 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -10, ptr %213, align 4, !tbaa !9
  br label %262

214:                                              ; preds = %209
  %215 = load ptr, ptr %41, align 8, !tbaa !5
  %216 = load i32, ptr %215, align 4, !tbaa !9
  %217 = icmp slt i32 %216, 1
  br i1 %217, label %227, label %218

218:                                              ; preds = %214
  %219 = load i32, ptr %69, align 4, !tbaa !9
  %220 = icmp ne i32 %219, 0
  br i1 %220, label %221, label %229

221:                                              ; preds = %218
  %222 = load ptr, ptr %41, align 8, !tbaa !5
  %223 = load i32, ptr %222, align 4, !tbaa !9
  %224 = load ptr, ptr %29, align 8, !tbaa !5
  %225 = load i32, ptr %224, align 4, !tbaa !9
  %226 = icmp slt i32 %223, %225
  br i1 %226, label %227, label %229

227:                                              ; preds = %221, %214
  %228 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -16, ptr %228, align 4, !tbaa !9
  br label %261

229:                                              ; preds = %221, %218
  %230 = load ptr, ptr %43, align 8, !tbaa !5
  %231 = load i32, ptr %230, align 4, !tbaa !9
  %232 = icmp slt i32 %231, 1
  br i1 %232, label %242, label %233

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

236:                                              ; preds = %233
  %237 = load ptr, ptr %43, align 8, !tbaa !5
  %238 = load i32, ptr %237, align 4, !tbaa !9
  %239 = load ptr, ptr %30, align 8, !tbaa !5
  %240 = load i32, ptr %239, align 4, !tbaa !9
  %241 = icmp slt i32 %238, %240
  br i1 %241, label %242, label %244

242:                                              ; preds = %236, %229
  %243 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -18, ptr %243, align 4, !tbaa !9
  br label %260

244:                                              ; preds = %236, %233
  %245 = load ptr, ptr %45, align 8, !tbaa !5
  %246 = load i32, ptr %245, align 4, !tbaa !9
  %247 = icmp slt i32 %246, 1
  br i1 %247, label %257, label %248

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

251:                                              ; preds = %248
  %252 = load ptr, ptr %45, align 8, !tbaa !5
  %253 = load i32, ptr %252, align 4, !tbaa !9
  %254 = load ptr, ptr %31, align 8, !tbaa !5
  %255 = load i32, ptr %254, align 4, !tbaa !9
  %256 = icmp slt i32 %253, %255
  br i1 %256, label %257, label %259

257:                                              ; preds = %251, %244
  %258 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -20, ptr %258, align 4, !tbaa !9
  br label %259

259:                                              ; preds = %257, %251, %248
  br label %260

260:                                              ; preds = %259, %242
  br label %261

261:                                              ; preds = %260, %227
  br label %262

262:                                              ; preds = %261, %212
  br label %263

263:                                              ; preds = %262, %197
  br label %264

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

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

266:                                              ; preds = %265, %170
  br label %267

267:                                              ; preds = %266, %164
  br label %268

268:                                              ; preds = %267, %155
  br label %269

269:                                              ; preds = %268, %146
  %270 = load ptr, ptr %50, align 8, !tbaa !5
  %271 = load i32, ptr %270, align 4, !tbaa !9
  %272 = icmp ne i32 %271, 0
  br i1 %272, label %273, label %278

273:                                              ; preds = %269
  %274 = load ptr, ptr %50, align 8, !tbaa !5
  %275 = load i32, ptr %274, align 4, !tbaa !9
  %276 = sub nsw i32 0, %275
  store i32 %276, ptr %61, align 4, !tbaa !9
  %277 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %61, i32 noundef 6)
  store i32 1, ptr %72, align 4
  br label %1233

278:                                              ; preds = %269
  %279 = load ptr, ptr %31, align 8, !tbaa !5
  %280 = load i32, ptr %279, align 4, !tbaa !9
  store i32 %280, ptr %61, align 4, !tbaa !9
  store i32 1, ptr %66, align 4, !tbaa !9
  br label %281

281:                                              ; preds = %290, %278
  %282 = load i32, ptr %66, align 4, !tbaa !9
  %283 = load i32, ptr %61, align 4, !tbaa !9
  %284 = icmp sle i32 %282, %283
  br i1 %284, label %285, label %293

285:                                              ; preds = %281
  %286 = load ptr, ptr %46, align 8, !tbaa !5
  %287 = load i32, ptr %66, align 4, !tbaa !9
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds i32, ptr %286, i64 %288
  store i32 0, ptr %289, align 4, !tbaa !9
  br label %290

290:                                              ; preds = %285
  %291 = load i32, ptr %66, align 4, !tbaa !9
  %292 = add nsw i32 %291, 1
  store i32 %292, ptr %66, align 4, !tbaa !9
  br label %281, !llvm.loop !11

293:                                              ; preds = %281
  %294 = load ptr, ptr %30, align 8, !tbaa !5
  %295 = load ptr, ptr %31, align 8, !tbaa !5
  %296 = load ptr, ptr %34, align 8, !tbaa !5
  %297 = load i32, ptr %54, align 4, !tbaa !9
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds %struct.complex, ptr %296, i64 %298
  %300 = load ptr, ptr %35, align 8, !tbaa !5
  %301 = load ptr, ptr %46, align 8, !tbaa !5
  %302 = getelementptr inbounds i32, ptr %301, i64 1
  %303 = load ptr, ptr %48, align 8, !tbaa !5
  %304 = getelementptr inbounds %struct.complex, ptr %303, i64 1
  %305 = load ptr, ptr %49, align 8, !tbaa !5
  %306 = getelementptr inbounds %struct.complex, ptr %305, i64 1
  %307 = load ptr, ptr %47, align 8, !tbaa !5
  %308 = getelementptr inbounds float, ptr %307, i64 1
  %309 = load ptr, ptr %50, align 8, !tbaa !5
  call void @cgeqpf_(ptr noundef %294, ptr noundef %295, ptr noundef %299, ptr noundef %300, ptr noundef %302, ptr noundef %304, ptr noundef %306, ptr noundef %308, ptr noundef %309)
  %310 = load ptr, ptr %29, align 8, !tbaa !5
  %311 = load ptr, ptr %31, align 8, !tbaa !5
  %312 = load ptr, ptr %32, align 8, !tbaa !5
  %313 = load i32, ptr %52, align 4, !tbaa !9
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds %struct.complex, ptr %312, i64 %314
  %316 = load ptr, ptr %33, align 8, !tbaa !5
  %317 = load ptr, ptr %46, align 8, !tbaa !5
  %318 = getelementptr inbounds i32, ptr %317, i64 1
  call void @clapmt_(ptr noundef %71, ptr noundef %310, ptr noundef %311, ptr noundef %315, ptr noundef %316, ptr noundef %318)
  %319 = load ptr, ptr %39, align 8, !tbaa !5
  store i32 0, ptr %319, align 4, !tbaa !9
  %320 = load ptr, ptr %30, align 8, !tbaa !5
  %321 = load i32, ptr %320, align 4, !tbaa !9
  %322 = load ptr, ptr %31, align 8, !tbaa !5
  %323 = load i32, ptr %322, align 4, !tbaa !9
  %324 = icmp sle i32 %321, %323
  br i1 %324, label %325, label %328

325:                                              ; preds = %293
  %326 = load ptr, ptr %30, align 8, !tbaa !5
  %327 = load i32, ptr %326, align 4, !tbaa !9
  br label %331

328:                                              ; preds = %293
  %329 = load ptr, ptr %31, align 8, !tbaa !5
  %330 = load i32, ptr %329, align 4, !tbaa !9
  br label %331

331:                                              ; preds = %328, %325
  %332 = phi i32 [ %327, %325 ], [ %330, %328 ]
  store i32 %332, ptr %61, align 4, !tbaa !9
  store i32 1, ptr %66, align 4, !tbaa !9
  br label %333

333:                                              ; preds = %389, %331
  %334 = load i32, ptr %66, align 4, !tbaa !9
  %335 = load i32, ptr %61, align 4, !tbaa !9
  %336 = icmp sle i32 %334, %335
  br i1 %336, label %337, label %392

337:                                              ; preds = %333
  %338 = load i32, ptr %66, align 4, !tbaa !9
  %339 = load i32, ptr %66, align 4, !tbaa !9
  %340 = load i32, ptr %53, align 4, !tbaa !9
  %341 = mul nsw i32 %339, %340
  %342 = add nsw i32 %338, %341
  store i32 %342, ptr %62, align 4, !tbaa !9
  %343 = load ptr, ptr %34, align 8, !tbaa !5
  %344 = load i32, ptr %62, align 4, !tbaa !9
  %345 = sext i32 %344 to i64
  %346 = getelementptr inbounds %struct.complex, ptr %343, i64 %345
  %347 = getelementptr inbounds %struct.complex, ptr %346, i32 0, i32 0
  %348 = load float, ptr %347, align 4, !tbaa !13
  store float %348, ptr %64, align 4, !tbaa !16
  %349 = load float, ptr %64, align 4, !tbaa !16
  %350 = fcmp oge float %349, 0.000000e+00
  br i1 %350, label %351, label %353

351:                                              ; preds = %337
  %352 = load float, ptr %64, align 4, !tbaa !16
  br label %356

353:                                              ; preds = %337
  %354 = load float, ptr %64, align 4, !tbaa !16
  %355 = fneg float %354
  br label %356

356:                                              ; preds = %353, %351
  %357 = phi float [ %352, %351 ], [ %355, %353 ]
  %358 = load ptr, ptr %34, align 8, !tbaa !5
  %359 = load i32, ptr %66, align 4, !tbaa !9
  %360 = load i32, ptr %66, align 4, !tbaa !9
  %361 = load i32, ptr %53, align 4, !tbaa !9
  %362 = mul nsw i32 %360, %361
  %363 = add nsw i32 %359, %362
  %364 = sext i32 %363 to i64
  %365 = getelementptr inbounds %struct.complex, ptr %358, i64 %364
  %366 = call <2 x float> @Cf(ptr noundef %365)
  store <2 x float> %366, ptr %73, align 4
  %367 = getelementptr inbounds { float, float }, ptr %73, i32 0, i32 0
  %368 = load float, ptr %367, align 4
  %369 = getelementptr inbounds { float, float }, ptr %73, i32 0, i32 1
  %370 = load float, ptr %369, align 4
  store float %370, ptr %65, align 4, !tbaa !16
  %371 = load float, ptr %65, align 4, !tbaa !16
  %372 = fcmp oge float %371, 0.000000e+00
  br i1 %372, label %373, label %375

373:                                              ; preds = %356
  %374 = load float, ptr %65, align 4, !tbaa !16
  br label %378

375:                                              ; preds = %356
  %376 = load float, ptr %65, align 4, !tbaa !16
  %377 = fneg float %376
  br label %378

378:                                              ; preds = %375, %373
  %379 = phi float [ %374, %373 ], [ %377, %375 ]
  %380 = fadd float %357, %379
  %381 = load ptr, ptr %37, align 8, !tbaa !5
  %382 = load float, ptr %381, align 4, !tbaa !16
  %383 = fcmp ogt float %380, %382
  br i1 %383, label %384, label %388

384:                                              ; preds = %378
  %385 = load ptr, ptr %39, align 8, !tbaa !5
  %386 = load i32, ptr %385, align 4, !tbaa !9
  %387 = add nsw i32 %386, 1
  store i32 %387, ptr %385, align 4, !tbaa !9
  br label %388

388:                                              ; preds = %384, %378
  br label %389

389:                                              ; preds = %388
  %390 = load i32, ptr %66, align 4, !tbaa !9
  %391 = add nsw i32 %390, 1
  store i32 %391, ptr %66, align 4, !tbaa !9
  br label %333, !llvm.loop !17

392:                                              ; preds = %333
  %393 = load i32, ptr %70, align 4, !tbaa !9
  %394 = icmp ne i32 %393, 0
  br i1 %394, label %395, label %449

395:                                              ; preds = %392
  %396 = load ptr, ptr %30, align 8, !tbaa !5
  %397 = load ptr, ptr %30, align 8, !tbaa !5
  %398 = load ptr, ptr %42, align 8, !tbaa !5
  %399 = load i32, ptr %60, align 4, !tbaa !9
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds %struct.complex, ptr %398, i64 %400
  %402 = load ptr, ptr %43, align 8, !tbaa !5
  call void @claset_(ptr noundef @.str.5, ptr noundef %396, ptr noundef %397, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %401, ptr noundef %402)
  %403 = load ptr, ptr %30, align 8, !tbaa !5
  %404 = load i32, ptr %403, align 4, !tbaa !9
  %405 = icmp sgt i32 %404, 1
  br i1 %405, label %406, label %423

406:                                              ; preds = %395
  %407 = load ptr, ptr %30, align 8, !tbaa !5
  %408 = load i32, ptr %407, align 4, !tbaa !9
  %409 = sub nsw i32 %408, 1
  store i32 %409, ptr %61, align 4, !tbaa !9
  %410 = load ptr, ptr %31, align 8, !tbaa !5
  %411 = load ptr, ptr %34, align 8, !tbaa !5
  %412 = load i32, ptr %53, align 4, !tbaa !9
  %413 = add nsw i32 %412, 2
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds %struct.complex, ptr %411, i64 %414
  %416 = load ptr, ptr %35, align 8, !tbaa !5
  %417 = load ptr, ptr %42, align 8, !tbaa !5
  %418 = load i32, ptr %59, align 4, !tbaa !9
  %419 = add nsw i32 %418, 2
  %420 = sext i32 %419 to i64
  %421 = getelementptr inbounds %struct.complex, ptr %417, i64 %420
  %422 = load ptr, ptr %43, align 8, !tbaa !5
  call void @clacpy_(ptr noundef @.str.6, ptr noundef %61, ptr noundef %410, ptr noundef %415, ptr noundef %416, ptr noundef %421, ptr noundef %422)
  br label %423

423:                                              ; preds = %406, %395
  %424 = load ptr, ptr %30, align 8, !tbaa !5
  %425 = load i32, ptr %424, align 4, !tbaa !9
  %426 = load ptr, ptr %31, align 8, !tbaa !5
  %427 = load i32, ptr %426, align 4, !tbaa !9
  %428 = icmp sle i32 %425, %427
  br i1 %428, label %429, label %432

429:                                              ; preds = %423
  %430 = load ptr, ptr %30, align 8, !tbaa !5
  %431 = load i32, ptr %430, align 4, !tbaa !9
  br label %435

432:                                              ; preds = %423
  %433 = load ptr, ptr %31, align 8, !tbaa !5
  %434 = load i32, ptr %433, align 4, !tbaa !9
  br label %435

435:                                              ; preds = %432, %429
  %436 = phi i32 [ %431, %429 ], [ %434, %432 ]
  store i32 %436, ptr %61, align 4, !tbaa !9
  %437 = load ptr, ptr %30, align 8, !tbaa !5
  %438 = load ptr, ptr %30, align 8, !tbaa !5
  %439 = load ptr, ptr %42, align 8, !tbaa !5
  %440 = load i32, ptr %60, align 4, !tbaa !9
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds %struct.complex, ptr %439, i64 %441
  %443 = load ptr, ptr %43, align 8, !tbaa !5
  %444 = load ptr, ptr %48, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct.complex, ptr %444, i64 1
  %446 = load ptr, ptr %49, align 8, !tbaa !5
  %447 = getelementptr inbounds %struct.complex, ptr %446, i64 1
  %448 = load ptr, ptr %50, align 8, !tbaa !5
  call void @cung2r_(ptr noundef %437, ptr noundef %438, ptr noundef %61, ptr noundef %442, ptr noundef %443, ptr noundef %445, ptr noundef %447, ptr noundef %448)
  br label %449

449:                                              ; preds = %435, %392
  %450 = load ptr, ptr %39, align 8, !tbaa !5
  %451 = load i32, ptr %450, align 4, !tbaa !9
  %452 = sub nsw i32 %451, 1
  store i32 %452, ptr %61, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %453

453:                                              ; preds = %486, %449
  %454 = load i32, ptr %67, align 4, !tbaa !9
  %455 = load i32, ptr %61, align 4, !tbaa !9
  %456 = icmp sle i32 %454, %455
  br i1 %456, label %457, label %489

457:                                              ; preds = %453
  %458 = load ptr, ptr %39, align 8, !tbaa !5
  %459 = load i32, ptr %458, align 4, !tbaa !9
  store i32 %459, ptr %62, align 4, !tbaa !9
  %460 = load i32, ptr %67, align 4, !tbaa !9
  %461 = add nsw i32 %460, 1
  store i32 %461, ptr %66, align 4, !tbaa !9
  br label %462

462:                                              ; preds = %482, %457
  %463 = load i32, ptr %66, align 4, !tbaa !9
  %464 = load i32, ptr %62, align 4, !tbaa !9
  %465 = icmp sle i32 %463, %464
  br i1 %465, label %466, label %485

466:                                              ; preds = %462
  %467 = load i32, ptr %66, align 4, !tbaa !9
  %468 = load i32, ptr %67, align 4, !tbaa !9
  %469 = load i32, ptr %53, align 4, !tbaa !9
  %470 = mul nsw i32 %468, %469
  %471 = add nsw i32 %467, %470
  store i32 %471, ptr %63, align 4, !tbaa !9
  %472 = load ptr, ptr %34, align 8, !tbaa !5
  %473 = load i32, ptr %63, align 4, !tbaa !9
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds %struct.complex, ptr %472, i64 %474
  %476 = getelementptr inbounds %struct.complex, ptr %475, i32 0, i32 0
  store float 0.000000e+00, ptr %476, align 4, !tbaa !13
  %477 = load ptr, ptr %34, align 8, !tbaa !5
  %478 = load i32, ptr %63, align 4, !tbaa !9
  %479 = sext i32 %478 to i64
  %480 = getelementptr inbounds %struct.complex, ptr %477, i64 %479
  %481 = getelementptr inbounds %struct.complex, ptr %480, i32 0, i32 1
  store float 0.000000e+00, ptr %481, align 4, !tbaa !18
  br label %482

482:                                              ; preds = %466
  %483 = load i32, ptr %66, align 4, !tbaa !9
  %484 = add nsw i32 %483, 1
  store i32 %484, ptr %66, align 4, !tbaa !9
  br label %462, !llvm.loop !19

485:                                              ; preds = %462
  br label %486

486:                                              ; preds = %485
  %487 = load i32, ptr %67, align 4, !tbaa !9
  %488 = add nsw i32 %487, 1
  store i32 %488, ptr %67, align 4, !tbaa !9
  br label %453, !llvm.loop !20

489:                                              ; preds = %453
  %490 = load ptr, ptr %30, align 8, !tbaa !5
  %491 = load i32, ptr %490, align 4, !tbaa !9
  %492 = load ptr, ptr %39, align 8, !tbaa !5
  %493 = load i32, ptr %492, align 4, !tbaa !9
  %494 = icmp sgt i32 %491, %493
  br i1 %494, label %495, label %511

495:                                              ; preds = %489
  %496 = load ptr, ptr %30, align 8, !tbaa !5
  %497 = load i32, ptr %496, align 4, !tbaa !9
  %498 = load ptr, ptr %39, align 8, !tbaa !5
  %499 = load i32, ptr %498, align 4, !tbaa !9
  %500 = sub nsw i32 %497, %499
  store i32 %500, ptr %61, align 4, !tbaa !9
  %501 = load ptr, ptr %31, align 8, !tbaa !5
  %502 = load ptr, ptr %34, align 8, !tbaa !5
  %503 = load ptr, ptr %39, align 8, !tbaa !5
  %504 = load i32, ptr %503, align 4, !tbaa !9
  %505 = add nsw i32 %504, 1
  %506 = load i32, ptr %53, align 4, !tbaa !9
  %507 = add nsw i32 %505, %506
  %508 = sext i32 %507 to i64
  %509 = getelementptr inbounds %struct.complex, ptr %502, i64 %508
  %510 = load ptr, ptr %35, align 8, !tbaa !5
  call void @claset_(ptr noundef @.str.5, ptr noundef %61, ptr noundef %501, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %509, ptr noundef %510)
  br label %511

511:                                              ; preds = %495, %489
  %512 = load i32, ptr %68, align 4, !tbaa !9
  %513 = icmp ne i32 %512, 0
  br i1 %513, label %514, label %531

514:                                              ; preds = %511
  %515 = load ptr, ptr %31, align 8, !tbaa !5
  %516 = load ptr, ptr %31, align 8, !tbaa !5
  %517 = load ptr, ptr %44, align 8, !tbaa !5
  %518 = load i32, ptr %56, align 4, !tbaa !9
  %519 = sext i32 %518 to i64
  %520 = getelementptr inbounds %struct.complex, ptr %517, i64 %519
  %521 = load ptr, ptr %45, align 8, !tbaa !5
  call void @claset_(ptr noundef @.str.5, ptr noundef %515, ptr noundef %516, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %520, ptr noundef %521)
  %522 = load ptr, ptr %31, align 8, !tbaa !5
  %523 = load ptr, ptr %31, align 8, !tbaa !5
  %524 = load ptr, ptr %44, align 8, !tbaa !5
  %525 = load i32, ptr %56, align 4, !tbaa !9
  %526 = sext i32 %525 to i64
  %527 = getelementptr inbounds %struct.complex, ptr %524, i64 %526
  %528 = load ptr, ptr %45, align 8, !tbaa !5
  %529 = load ptr, ptr %46, align 8, !tbaa !5
  %530 = getelementptr inbounds i32, ptr %529, i64 1
  call void @clapmt_(ptr noundef %71, ptr noundef %522, ptr noundef %523, ptr noundef %527, ptr noundef %528, ptr noundef %530)
  br label %531

531:                                              ; preds = %514, %511
  %532 = load ptr, ptr %30, align 8, !tbaa !5
  %533 = load i32, ptr %532, align 4, !tbaa !9
  %534 = load ptr, ptr %39, align 8, !tbaa !5
  %535 = load i32, ptr %534, align 4, !tbaa !9
  %536 = icmp sge i32 %533, %535
  br i1 %536, label %537, label %658

537:                                              ; preds = %531
  %538 = load ptr, ptr %31, align 8, !tbaa !5
  %539 = load i32, ptr %538, align 4, !tbaa !9
  %540 = load ptr, ptr %39, align 8, !tbaa !5
  %541 = load i32, ptr %540, align 4, !tbaa !9
  %542 = icmp ne i32 %539, %541
  br i1 %542, label %543, label %658

543:                                              ; preds = %537
  %544 = load ptr, ptr %39, align 8, !tbaa !5
  %545 = load ptr, ptr %31, align 8, !tbaa !5
  %546 = load ptr, ptr %34, align 8, !tbaa !5
  %547 = load i32, ptr %54, align 4, !tbaa !9
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds %struct.complex, ptr %546, i64 %548
  %550 = load ptr, ptr %35, align 8, !tbaa !5
  %551 = load ptr, ptr %48, align 8, !tbaa !5
  %552 = getelementptr inbounds %struct.complex, ptr %551, i64 1
  %553 = load ptr, ptr %49, align 8, !tbaa !5
  %554 = getelementptr inbounds %struct.complex, ptr %553, i64 1
  %555 = load ptr, ptr %50, align 8, !tbaa !5
  call void @cgerq2_(ptr noundef %544, ptr noundef %545, ptr noundef %549, ptr noundef %550, ptr noundef %552, ptr noundef %554, ptr noundef %555)
  %556 = load ptr, ptr %29, align 8, !tbaa !5
  %557 = load ptr, ptr %31, align 8, !tbaa !5
  %558 = load ptr, ptr %39, align 8, !tbaa !5
  %559 = load ptr, ptr %34, align 8, !tbaa !5
  %560 = load i32, ptr %54, align 4, !tbaa !9
  %561 = sext i32 %560 to i64
  %562 = getelementptr inbounds %struct.complex, ptr %559, i64 %561
  %563 = load ptr, ptr %35, align 8, !tbaa !5
  %564 = load ptr, ptr %48, align 8, !tbaa !5
  %565 = getelementptr inbounds %struct.complex, ptr %564, i64 1
  %566 = load ptr, ptr %32, align 8, !tbaa !5
  %567 = load i32, ptr %52, align 4, !tbaa !9
  %568 = sext i32 %567 to i64
  %569 = getelementptr inbounds %struct.complex, ptr %566, i64 %568
  %570 = load ptr, ptr %33, align 8, !tbaa !5
  %571 = load ptr, ptr %49, align 8, !tbaa !5
  %572 = getelementptr inbounds %struct.complex, ptr %571, i64 1
  %573 = load ptr, ptr %50, align 8, !tbaa !5
  call void @cunmr2_(ptr noundef @.str.7, ptr noundef @.str.8, ptr noundef %556, ptr noundef %557, ptr noundef %558, ptr noundef %562, ptr noundef %563, ptr noundef %565, ptr noundef %569, ptr noundef %570, ptr noundef %572, ptr noundef %573)
  %574 = load i32, ptr %68, align 4, !tbaa !9
  %575 = icmp ne i32 %574, 0
  br i1 %575, label %576, label %595

576:                                              ; preds = %543
  %577 = load ptr, ptr %31, align 8, !tbaa !5
  %578 = load ptr, ptr %31, align 8, !tbaa !5
  %579 = load ptr, ptr %39, align 8, !tbaa !5
  %580 = load ptr, ptr %34, align 8, !tbaa !5
  %581 = load i32, ptr %54, align 4, !tbaa !9
  %582 = sext i32 %581 to i64
  %583 = getelementptr inbounds %struct.complex, ptr %580, i64 %582
  %584 = load ptr, ptr %35, align 8, !tbaa !5
  %585 = load ptr, ptr %48, align 8, !tbaa !5
  %586 = getelementptr inbounds %struct.complex, ptr %585, i64 1
  %587 = load ptr, ptr %44, align 8, !tbaa !5
  %588 = load i32, ptr %56, align 4, !tbaa !9
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds %struct.complex, ptr %587, i64 %589
  %591 = load ptr, ptr %45, align 8, !tbaa !5
  %592 = load ptr, ptr %49, align 8, !tbaa !5
  %593 = getelementptr inbounds %struct.complex, ptr %592, i64 1
  %594 = load ptr, ptr %50, align 8, !tbaa !5
  call void @cunmr2_(ptr noundef @.str.7, ptr noundef @.str.8, ptr noundef %577, ptr noundef %578, ptr noundef %579, ptr noundef %583, ptr noundef %584, ptr noundef %586, ptr noundef %590, ptr noundef %591, ptr noundef %593, ptr noundef %594)
  br label %595

595:                                              ; preds = %576, %543
  %596 = load ptr, ptr %31, align 8, !tbaa !5
  %597 = load i32, ptr %596, align 4, !tbaa !9
  %598 = load ptr, ptr %39, align 8, !tbaa !5
  %599 = load i32, ptr %598, align 4, !tbaa !9
  %600 = sub nsw i32 %597, %599
  store i32 %600, ptr %61, align 4, !tbaa !9
  %601 = load ptr, ptr %39, align 8, !tbaa !5
  %602 = load ptr, ptr %34, align 8, !tbaa !5
  %603 = load i32, ptr %54, align 4, !tbaa !9
  %604 = sext i32 %603 to i64
  %605 = getelementptr inbounds %struct.complex, ptr %602, i64 %604
  %606 = load ptr, ptr %35, align 8, !tbaa !5
  call void @claset_(ptr noundef @.str.5, ptr noundef %601, ptr noundef %61, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %605, ptr noundef %606)
  %607 = load ptr, ptr %31, align 8, !tbaa !5
  %608 = load i32, ptr %607, align 4, !tbaa !9
  store i32 %608, ptr %61, align 4, !tbaa !9
  %609 = load ptr, ptr %31, align 8, !tbaa !5
  %610 = load i32, ptr %609, align 4, !tbaa !9
  %611 = load ptr, ptr %39, align 8, !tbaa !5
  %612 = load i32, ptr %611, align 4, !tbaa !9
  %613 = sub nsw i32 %610, %612
  %614 = add nsw i32 %613, 1
  store i32 %614, ptr %67, align 4, !tbaa !9
  br label %615

615:                                              ; preds = %654, %595
  %616 = load i32, ptr %67, align 4, !tbaa !9
  %617 = load i32, ptr %61, align 4, !tbaa !9
  %618 = icmp sle i32 %616, %617
  br i1 %618, label %619, label %657

619:                                              ; preds = %615
  %620 = load ptr, ptr %39, align 8, !tbaa !5
  %621 = load i32, ptr %620, align 4, !tbaa !9
  store i32 %621, ptr %62, align 4, !tbaa !9
  %622 = load i32, ptr %67, align 4, !tbaa !9
  %623 = load ptr, ptr %31, align 8, !tbaa !5
  %624 = load i32, ptr %623, align 4, !tbaa !9
  %625 = sub nsw i32 %622, %624
  %626 = load ptr, ptr %39, align 8, !tbaa !5
  %627 = load i32, ptr %626, align 4, !tbaa !9
  %628 = add nsw i32 %625, %627
  %629 = add nsw i32 %628, 1
  store i32 %629, ptr %66, align 4, !tbaa !9
  br label %630

630:                                              ; preds = %650, %619
  %631 = load i32, ptr %66, align 4, !tbaa !9
  %632 = load i32, ptr %62, align 4, !tbaa !9
  %633 = icmp sle i32 %631, %632
  br i1 %633, label %634, label %653

634:                                              ; preds = %630
  %635 = load i32, ptr %66, align 4, !tbaa !9
  %636 = load i32, ptr %67, align 4, !tbaa !9
  %637 = load i32, ptr %53, align 4, !tbaa !9
  %638 = mul nsw i32 %636, %637
  %639 = add nsw i32 %635, %638
  store i32 %639, ptr %63, align 4, !tbaa !9
  %640 = load ptr, ptr %34, align 8, !tbaa !5
  %641 = load i32, ptr %63, align 4, !tbaa !9
  %642 = sext i32 %641 to i64
  %643 = getelementptr inbounds %struct.complex, ptr %640, i64 %642
  %644 = getelementptr inbounds %struct.complex, ptr %643, i32 0, i32 0
  store float 0.000000e+00, ptr %644, align 4, !tbaa !13
  %645 = load ptr, ptr %34, align 8, !tbaa !5
  %646 = load i32, ptr %63, align 4, !tbaa !9
  %647 = sext i32 %646 to i64
  %648 = getelementptr inbounds %struct.complex, ptr %645, i64 %647
  %649 = getelementptr inbounds %struct.complex, ptr %648, i32 0, i32 1
  store float 0.000000e+00, ptr %649, align 4, !tbaa !18
  br label %650

650:                                              ; preds = %634
  %651 = load i32, ptr %66, align 4, !tbaa !9
  %652 = add nsw i32 %651, 1
  store i32 %652, ptr %66, align 4, !tbaa !9
  br label %630, !llvm.loop !21

653:                                              ; preds = %630
  br label %654

654:                                              ; preds = %653
  %655 = load i32, ptr %67, align 4, !tbaa !9
  %656 = add nsw i32 %655, 1
  store i32 %656, ptr %67, align 4, !tbaa !9
  br label %615, !llvm.loop !22

657:                                              ; preds = %615
  br label %658

658:                                              ; preds = %657, %537, %531
  %659 = load ptr, ptr %31, align 8, !tbaa !5
  %660 = load i32, ptr %659, align 4, !tbaa !9
  %661 = load ptr, ptr %39, align 8, !tbaa !5
  %662 = load i32, ptr %661, align 4, !tbaa !9
  %663 = sub nsw i32 %660, %662
  store i32 %663, ptr %61, align 4, !tbaa !9
  store i32 1, ptr %66, align 4, !tbaa !9
  br label %664

664:                                              ; preds = %673, %658
  %665 = load i32, ptr %66, align 4, !tbaa !9
  %666 = load i32, ptr %61, align 4, !tbaa !9
  %667 = icmp sle i32 %665, %666
  br i1 %667, label %668, label %676

668:                                              ; preds = %664
  %669 = load ptr, ptr %46, align 8, !tbaa !5
  %670 = load i32, ptr %66, align 4, !tbaa !9
  %671 = sext i32 %670 to i64
  %672 = getelementptr inbounds i32, ptr %669, i64 %671
  store i32 0, ptr %672, align 4, !tbaa !9
  br label %673

673:                                              ; preds = %668
  %674 = load i32, ptr %66, align 4, !tbaa !9
  %675 = add nsw i32 %674, 1
  store i32 %675, ptr %66, align 4, !tbaa !9
  br label %664, !llvm.loop !23

676:                                              ; preds = %664
  %677 = load ptr, ptr %31, align 8, !tbaa !5
  %678 = load i32, ptr %677, align 4, !tbaa !9
  %679 = load ptr, ptr %39, align 8, !tbaa !5
  %680 = load i32, ptr %679, align 4, !tbaa !9
  %681 = sub nsw i32 %678, %680
  store i32 %681, ptr %61, align 4, !tbaa !9
  %682 = load ptr, ptr %29, align 8, !tbaa !5
  %683 = load ptr, ptr %32, align 8, !tbaa !5
  %684 = load i32, ptr %52, align 4, !tbaa !9
  %685 = sext i32 %684 to i64
  %686 = getelementptr inbounds %struct.complex, ptr %683, i64 %685
  %687 = load ptr, ptr %33, align 8, !tbaa !5
  %688 = load ptr, ptr %46, align 8, !tbaa !5
  %689 = getelementptr inbounds i32, ptr %688, i64 1
  %690 = load ptr, ptr %48, align 8, !tbaa !5
  %691 = getelementptr inbounds %struct.complex, ptr %690, i64 1
  %692 = load ptr, ptr %49, align 8, !tbaa !5
  %693 = getelementptr inbounds %struct.complex, ptr %692, i64 1
  %694 = load ptr, ptr %47, align 8, !tbaa !5
  %695 = getelementptr inbounds float, ptr %694, i64 1
  %696 = load ptr, ptr %50, align 8, !tbaa !5
  call void @cgeqpf_(ptr noundef %682, ptr noundef %61, ptr noundef %686, ptr noundef %687, ptr noundef %689, ptr noundef %691, ptr noundef %693, ptr noundef %695, ptr noundef %696)
  %697 = load ptr, ptr %38, align 8, !tbaa !5
  store i32 0, ptr %697, align 4, !tbaa !9
  %698 = load ptr, ptr %29, align 8, !tbaa !5
  %699 = load i32, ptr %698, align 4, !tbaa !9
  store i32 %699, ptr %62, align 4, !tbaa !9
  %700 = load ptr, ptr %31, align 8, !tbaa !5
  %701 = load i32, ptr %700, align 4, !tbaa !9
  %702 = load ptr, ptr %39, align 8, !tbaa !5
  %703 = load i32, ptr %702, align 4, !tbaa !9
  %704 = sub nsw i32 %701, %703
  store i32 %704, ptr %63, align 4, !tbaa !9
  %705 = load i32, ptr %62, align 4, !tbaa !9
  %706 = load i32, ptr %63, align 4, !tbaa !9
  %707 = icmp sle i32 %705, %706
  br i1 %707, label %708, label %710

708:                                              ; preds = %676
  %709 = load i32, ptr %62, align 4, !tbaa !9
  br label %712

710:                                              ; preds = %676
  %711 = load i32, ptr %63, align 4, !tbaa !9
  br label %712

712:                                              ; preds = %710, %708
  %713 = phi i32 [ %709, %708 ], [ %711, %710 ]
  store i32 %713, ptr %61, align 4, !tbaa !9
  store i32 1, ptr %66, align 4, !tbaa !9
  br label %714

714:                                              ; preds = %770, %712
  %715 = load i32, ptr %66, align 4, !tbaa !9
  %716 = load i32, ptr %61, align 4, !tbaa !9
  %717 = icmp sle i32 %715, %716
  br i1 %717, label %718, label %773

718:                                              ; preds = %714
  %719 = load i32, ptr %66, align 4, !tbaa !9
  %720 = load i32, ptr %66, align 4, !tbaa !9
  %721 = load i32, ptr %51, align 4, !tbaa !9
  %722 = mul nsw i32 %720, %721
  %723 = add nsw i32 %719, %722
  store i32 %723, ptr %62, align 4, !tbaa !9
  %724 = load ptr, ptr %32, align 8, !tbaa !5
  %725 = load i32, ptr %62, align 4, !tbaa !9
  %726 = sext i32 %725 to i64
  %727 = getelementptr inbounds %struct.complex, ptr %724, i64 %726
  %728 = getelementptr inbounds %struct.complex, ptr %727, i32 0, i32 0
  %729 = load float, ptr %728, align 4, !tbaa !13
  store float %729, ptr %64, align 4, !tbaa !16
  %730 = load float, ptr %64, align 4, !tbaa !16
  %731 = fcmp oge float %730, 0.000000e+00
  br i1 %731, label %732, label %734

732:                                              ; preds = %718
  %733 = load float, ptr %64, align 4, !tbaa !16
  br label %737

734:                                              ; preds = %718
  %735 = load float, ptr %64, align 4, !tbaa !16
  %736 = fneg float %735
  br label %737

737:                                              ; preds = %734, %732
  %738 = phi float [ %733, %732 ], [ %736, %734 ]
  %739 = load ptr, ptr %32, align 8, !tbaa !5
  %740 = load i32, ptr %66, align 4, !tbaa !9
  %741 = load i32, ptr %66, align 4, !tbaa !9
  %742 = load i32, ptr %51, align 4, !tbaa !9
  %743 = mul nsw i32 %741, %742
  %744 = add nsw i32 %740, %743
  %745 = sext i32 %744 to i64
  %746 = getelementptr inbounds %struct.complex, ptr %739, i64 %745
  %747 = call <2 x float> @Cf(ptr noundef %746)
  store <2 x float> %747, ptr %74, align 4
  %748 = getelementptr inbounds { float, float }, ptr %74, i32 0, i32 0
  %749 = load float, ptr %748, align 4
  %750 = getelementptr inbounds { float, float }, ptr %74, i32 0, i32 1
  %751 = load float, ptr %750, align 4
  store float %751, ptr %65, align 4, !tbaa !16
  %752 = load float, ptr %65, align 4, !tbaa !16
  %753 = fcmp oge float %752, 0.000000e+00
  br i1 %753, label %754, label %756

754:                                              ; preds = %737
  %755 = load float, ptr %65, align 4, !tbaa !16
  br label %759

756:                                              ; preds = %737
  %757 = load float, ptr %65, align 4, !tbaa !16
  %758 = fneg float %757
  br label %759

759:                                              ; preds = %756, %754
  %760 = phi float [ %755, %754 ], [ %758, %756 ]
  %761 = fadd float %738, %760
  %762 = load ptr, ptr %36, align 8, !tbaa !5
  %763 = load float, ptr %762, align 4, !tbaa !16
  %764 = fcmp ogt float %761, %763
  br i1 %764, label %765, label %769

765:                                              ; preds = %759
  %766 = load ptr, ptr %38, align 8, !tbaa !5
  %767 = load i32, ptr %766, align 4, !tbaa !9
  %768 = add nsw i32 %767, 1
  store i32 %768, ptr %766, align 4, !tbaa !9
  br label %769

769:                                              ; preds = %765, %759
  br label %770

770:                                              ; preds = %769
  %771 = load i32, ptr %66, align 4, !tbaa !9
  %772 = add nsw i32 %771, 1
  store i32 %772, ptr %66, align 4, !tbaa !9
  br label %714, !llvm.loop !24

773:                                              ; preds = %714
  %774 = load ptr, ptr %29, align 8, !tbaa !5
  %775 = load i32, ptr %774, align 4, !tbaa !9
  store i32 %775, ptr %62, align 4, !tbaa !9
  %776 = load ptr, ptr %31, align 8, !tbaa !5
  %777 = load i32, ptr %776, align 4, !tbaa !9
  %778 = load ptr, ptr %39, align 8, !tbaa !5
  %779 = load i32, ptr %778, align 4, !tbaa !9
  %780 = sub nsw i32 %777, %779
  store i32 %780, ptr %63, align 4, !tbaa !9
  %781 = load i32, ptr %62, align 4, !tbaa !9
  %782 = load i32, ptr %63, align 4, !tbaa !9
  %783 = icmp sle i32 %781, %782
  br i1 %783, label %784, label %786

784:                                              ; preds = %773
  %785 = load i32, ptr %62, align 4, !tbaa !9
  br label %788

786:                                              ; preds = %773
  %787 = load i32, ptr %63, align 4, !tbaa !9
  br label %788

788:                                              ; preds = %786, %784
  %789 = phi i32 [ %785, %784 ], [ %787, %786 ]
  store i32 %789, ptr %61, align 4, !tbaa !9
  %790 = load ptr, ptr %29, align 8, !tbaa !5
  %791 = load ptr, ptr %39, align 8, !tbaa !5
  %792 = load ptr, ptr %32, align 8, !tbaa !5
  %793 = load i32, ptr %52, align 4, !tbaa !9
  %794 = sext i32 %793 to i64
  %795 = getelementptr inbounds %struct.complex, ptr %792, i64 %794
  %796 = load ptr, ptr %33, align 8, !tbaa !5
  %797 = load ptr, ptr %48, align 8, !tbaa !5
  %798 = getelementptr inbounds %struct.complex, ptr %797, i64 1
  %799 = load ptr, ptr %32, align 8, !tbaa !5
  %800 = load ptr, ptr %31, align 8, !tbaa !5
  %801 = load i32, ptr %800, align 4, !tbaa !9
  %802 = load ptr, ptr %39, align 8, !tbaa !5
  %803 = load i32, ptr %802, align 4, !tbaa !9
  %804 = sub nsw i32 %801, %803
  %805 = add nsw i32 %804, 1
  %806 = load i32, ptr %51, align 4, !tbaa !9
  %807 = mul nsw i32 %805, %806
  %808 = add nsw i32 %807, 1
  %809 = sext i32 %808 to i64
  %810 = getelementptr inbounds %struct.complex, ptr %799, i64 %809
  %811 = load ptr, ptr %33, align 8, !tbaa !5
  %812 = load ptr, ptr %49, align 8, !tbaa !5
  %813 = getelementptr inbounds %struct.complex, ptr %812, i64 1
  %814 = load ptr, ptr %50, align 8, !tbaa !5
  call void @cunm2r_(ptr noundef @.str.9, ptr noundef @.str.8, ptr noundef %790, ptr noundef %791, ptr noundef %61, ptr noundef %795, ptr noundef %796, ptr noundef %798, ptr noundef %810, ptr noundef %811, ptr noundef %813, ptr noundef %814)
  %815 = load i32, ptr %69, align 4, !tbaa !9
  %816 = icmp ne i32 %815, 0
  br i1 %816, label %817, label %878

817:                                              ; preds = %788
  %818 = load ptr, ptr %29, align 8, !tbaa !5
  %819 = load ptr, ptr %29, align 8, !tbaa !5
  %820 = load ptr, ptr %40, align 8, !tbaa !5
  %821 = load i32, ptr %58, align 4, !tbaa !9
  %822 = sext i32 %821 to i64
  %823 = getelementptr inbounds %struct.complex, ptr %820, i64 %822
  %824 = load ptr, ptr %41, align 8, !tbaa !5
  call void @claset_(ptr noundef @.str.5, ptr noundef %818, ptr noundef %819, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %823, ptr noundef %824)
  %825 = load ptr, ptr %29, align 8, !tbaa !5
  %826 = load i32, ptr %825, align 4, !tbaa !9
  %827 = icmp sgt i32 %826, 1
  br i1 %827, label %828, label %849

828:                                              ; preds = %817
  %829 = load ptr, ptr %29, align 8, !tbaa !5
  %830 = load i32, ptr %829, align 4, !tbaa !9
  %831 = sub nsw i32 %830, 1
  store i32 %831, ptr %61, align 4, !tbaa !9
  %832 = load ptr, ptr %31, align 8, !tbaa !5
  %833 = load i32, ptr %832, align 4, !tbaa !9
  %834 = load ptr, ptr %39, align 8, !tbaa !5
  %835 = load i32, ptr %834, align 4, !tbaa !9
  %836 = sub nsw i32 %833, %835
  store i32 %836, ptr %62, align 4, !tbaa !9
  %837 = load ptr, ptr %32, align 8, !tbaa !5
  %838 = load i32, ptr %51, align 4, !tbaa !9
  %839 = add nsw i32 %838, 2
  %840 = sext i32 %839 to i64
  %841 = getelementptr inbounds %struct.complex, ptr %837, i64 %840
  %842 = load ptr, ptr %33, align 8, !tbaa !5
  %843 = load ptr, ptr %40, align 8, !tbaa !5
  %844 = load i32, ptr %57, align 4, !tbaa !9
  %845 = add nsw i32 %844, 2
  %846 = sext i32 %845 to i64
  %847 = getelementptr inbounds %struct.complex, ptr %843, i64 %846
  %848 = load ptr, ptr %41, align 8, !tbaa !5
  call void @clacpy_(ptr noundef @.str.6, ptr noundef %61, ptr noundef %62, ptr noundef %841, ptr noundef %842, ptr noundef %847, ptr noundef %848)
  br label %849

849:                                              ; preds = %828, %817
  %850 = load ptr, ptr %29, align 8, !tbaa !5
  %851 = load i32, ptr %850, align 4, !tbaa !9
  store i32 %851, ptr %62, align 4, !tbaa !9
  %852 = load ptr, ptr %31, align 8, !tbaa !5
  %853 = load i32, ptr %852, align 4, !tbaa !9
  %854 = load ptr, ptr %39, align 8, !tbaa !5
  %855 = load i32, ptr %854, align 4, !tbaa !9
  %856 = sub nsw i32 %853, %855
  store i32 %856, ptr %63, align 4, !tbaa !9
  %857 = load i32, ptr %62, align 4, !tbaa !9
  %858 = load i32, ptr %63, align 4, !tbaa !9
  %859 = icmp sle i32 %857, %858
  br i1 %859, label %860, label %862

860:                                              ; preds = %849
  %861 = load i32, ptr %62, align 4, !tbaa !9
  br label %864

862:                                              ; preds = %849
  %863 = load i32, ptr %63, align 4, !tbaa !9
  br label %864

864:                                              ; preds = %862, %860
  %865 = phi i32 [ %861, %860 ], [ %863, %862 ]
  store i32 %865, ptr %61, align 4, !tbaa !9
  %866 = load ptr, ptr %29, align 8, !tbaa !5
  %867 = load ptr, ptr %29, align 8, !tbaa !5
  %868 = load ptr, ptr %40, align 8, !tbaa !5
  %869 = load i32, ptr %58, align 4, !tbaa !9
  %870 = sext i32 %869 to i64
  %871 = getelementptr inbounds %struct.complex, ptr %868, i64 %870
  %872 = load ptr, ptr %41, align 8, !tbaa !5
  %873 = load ptr, ptr %48, align 8, !tbaa !5
  %874 = getelementptr inbounds %struct.complex, ptr %873, i64 1
  %875 = load ptr, ptr %49, align 8, !tbaa !5
  %876 = getelementptr inbounds %struct.complex, ptr %875, i64 1
  %877 = load ptr, ptr %50, align 8, !tbaa !5
  call void @cung2r_(ptr noundef %866, ptr noundef %867, ptr noundef %61, ptr noundef %871, ptr noundef %872, ptr noundef %874, ptr noundef %876, ptr noundef %877)
  br label %878

878:                                              ; preds = %864, %788
  %879 = load i32, ptr %68, align 4, !tbaa !9
  %880 = icmp ne i32 %879, 0
  br i1 %880, label %881, label %895

881:                                              ; preds = %878
  %882 = load ptr, ptr %31, align 8, !tbaa !5
  %883 = load i32, ptr %882, align 4, !tbaa !9
  %884 = load ptr, ptr %39, align 8, !tbaa !5
  %885 = load i32, ptr %884, align 4, !tbaa !9
  %886 = sub nsw i32 %883, %885
  store i32 %886, ptr %61, align 4, !tbaa !9
  %887 = load ptr, ptr %31, align 8, !tbaa !5
  %888 = load ptr, ptr %44, align 8, !tbaa !5
  %889 = load i32, ptr %56, align 4, !tbaa !9
  %890 = sext i32 %889 to i64
  %891 = getelementptr inbounds %struct.complex, ptr %888, i64 %890
  %892 = load ptr, ptr %45, align 8, !tbaa !5
  %893 = load ptr, ptr %46, align 8, !tbaa !5
  %894 = getelementptr inbounds i32, ptr %893, i64 1
  call void @clapmt_(ptr noundef %71, ptr noundef %887, ptr noundef %61, ptr noundef %891, ptr noundef %892, ptr noundef %894)
  br label %895

895:                                              ; preds = %881, %878
  %896 = load ptr, ptr %38, align 8, !tbaa !5
  %897 = load i32, ptr %896, align 4, !tbaa !9
  %898 = sub nsw i32 %897, 1
  store i32 %898, ptr %61, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %899

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

903:                                              ; preds = %899
  %904 = load ptr, ptr %38, align 8, !tbaa !5
  %905 = load i32, ptr %904, align 4, !tbaa !9
  store i32 %905, ptr %62, align 4, !tbaa !9
  %906 = load i32, ptr %67, align 4, !tbaa !9
  %907 = add nsw i32 %906, 1
  store i32 %907, ptr %66, align 4, !tbaa !9
  br label %908

908:                                              ; preds = %928, %903
  %909 = load i32, ptr %66, align 4, !tbaa !9
  %910 = load i32, ptr %62, align 4, !tbaa !9
  %911 = icmp sle i32 %909, %910
  br i1 %911, label %912, label %931

912:                                              ; preds = %908
  %913 = load i32, ptr %66, align 4, !tbaa !9
  %914 = load i32, ptr %67, align 4, !tbaa !9
  %915 = load i32, ptr %51, align 4, !tbaa !9
  %916 = mul nsw i32 %914, %915
  %917 = add nsw i32 %913, %916
  store i32 %917, ptr %63, align 4, !tbaa !9
  %918 = load ptr, ptr %32, align 8, !tbaa !5
  %919 = load i32, ptr %63, align 4, !tbaa !9
  %920 = sext i32 %919 to i64
  %921 = getelementptr inbounds %struct.complex, ptr %918, i64 %920
  %922 = getelementptr inbounds %struct.complex, ptr %921, i32 0, i32 0
  store float 0.000000e+00, ptr %922, align 4, !tbaa !13
  %923 = load ptr, ptr %32, align 8, !tbaa !5
  %924 = load i32, ptr %63, align 4, !tbaa !9
  %925 = sext i32 %924 to i64
  %926 = getelementptr inbounds %struct.complex, ptr %923, i64 %925
  %927 = getelementptr inbounds %struct.complex, ptr %926, i32 0, i32 1
  store float 0.000000e+00, ptr %927, align 4, !tbaa !18
  br label %928

928:                                              ; preds = %912
  %929 = load i32, ptr %66, align 4, !tbaa !9
  %930 = add nsw i32 %929, 1
  store i32 %930, ptr %66, align 4, !tbaa !9
  br label %908, !llvm.loop !25

931:                                              ; preds = %908
  br label %932

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

935:                                              ; preds = %899
  %936 = load ptr, ptr %29, align 8, !tbaa !5
  %937 = load i32, ptr %936, align 4, !tbaa !9
  %938 = load ptr, ptr %38, align 8, !tbaa !5
  %939 = load i32, ptr %938, align 4, !tbaa !9
  %940 = icmp sgt i32 %937, %939
  br i1 %940, label %941, label %961

941:                                              ; preds = %935
  %942 = load ptr, ptr %29, align 8, !tbaa !5
  %943 = load i32, ptr %942, align 4, !tbaa !9
  %944 = load ptr, ptr %38, align 8, !tbaa !5
  %945 = load i32, ptr %944, align 4, !tbaa !9
  %946 = sub nsw i32 %943, %945
  store i32 %946, ptr %61, align 4, !tbaa !9
  %947 = load ptr, ptr %31, align 8, !tbaa !5
  %948 = load i32, ptr %947, align 4, !tbaa !9
  %949 = load ptr, ptr %39, align 8, !tbaa !5
  %950 = load i32, ptr %949, align 4, !tbaa !9
  %951 = sub nsw i32 %948, %950
  store i32 %951, ptr %62, align 4, !tbaa !9
  %952 = load ptr, ptr %32, align 8, !tbaa !5
  %953 = load ptr, ptr %38, align 8, !tbaa !5
  %954 = load i32, ptr %953, align 4, !tbaa !9
  %955 = add nsw i32 %954, 1
  %956 = load i32, ptr %51, align 4, !tbaa !9
  %957 = add nsw i32 %955, %956
  %958 = sext i32 %957 to i64
  %959 = getelementptr inbounds %struct.complex, ptr %952, i64 %958
  %960 = load ptr, ptr %33, align 8, !tbaa !5
  call void @claset_(ptr noundef @.str.5, ptr noundef %61, ptr noundef %62, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %959, ptr noundef %960)
  br label %961

961:                                              ; preds = %941, %935
  %962 = load ptr, ptr %31, align 8, !tbaa !5
  %963 = load i32, ptr %962, align 4, !tbaa !9
  %964 = load ptr, ptr %39, align 8, !tbaa !5
  %965 = load i32, ptr %964, align 4, !tbaa !9
  %966 = sub nsw i32 %963, %965
  %967 = load ptr, ptr %38, align 8, !tbaa !5
  %968 = load i32, ptr %967, align 4, !tbaa !9
  %969 = icmp sgt i32 %966, %968
  br i1 %969, label %970, label %1087

970:                                              ; preds = %961
  %971 = load ptr, ptr %31, align 8, !tbaa !5
  %972 = load i32, ptr %971, align 4, !tbaa !9
  %973 = load ptr, ptr %39, align 8, !tbaa !5
  %974 = load i32, ptr %973, align 4, !tbaa !9
  %975 = sub nsw i32 %972, %974
  store i32 %975, ptr %61, align 4, !tbaa !9
  %976 = load ptr, ptr %38, align 8, !tbaa !5
  %977 = load ptr, ptr %32, align 8, !tbaa !5
  %978 = load i32, ptr %52, align 4, !tbaa !9
  %979 = sext i32 %978 to i64
  %980 = getelementptr inbounds %struct.complex, ptr %977, i64 %979
  %981 = load ptr, ptr %33, align 8, !tbaa !5
  %982 = load ptr, ptr %48, align 8, !tbaa !5
  %983 = getelementptr inbounds %struct.complex, ptr %982, i64 1
  %984 = load ptr, ptr %49, align 8, !tbaa !5
  %985 = getelementptr inbounds %struct.complex, ptr %984, i64 1
  %986 = load ptr, ptr %50, align 8, !tbaa !5
  call void @cgerq2_(ptr noundef %976, ptr noundef %61, ptr noundef %980, ptr noundef %981, ptr noundef %983, ptr noundef %985, ptr noundef %986)
  %987 = load i32, ptr %68, align 4, !tbaa !9
  %988 = icmp ne i32 %987, 0
  br i1 %988, label %989, label %1012

989:                                              ; preds = %970
  %990 = load ptr, ptr %31, align 8, !tbaa !5
  %991 = load i32, ptr %990, align 4, !tbaa !9
  %992 = load ptr, ptr %39, align 8, !tbaa !5
  %993 = load i32, ptr %992, align 4, !tbaa !9
  %994 = sub nsw i32 %991, %993
  store i32 %994, ptr %61, align 4, !tbaa !9
  %995 = load ptr, ptr %31, align 8, !tbaa !5
  %996 = load ptr, ptr %38, align 8, !tbaa !5
  %997 = load ptr, ptr %32, align 8, !tbaa !5
  %998 = load i32, ptr %52, align 4, !tbaa !9
  %999 = sext i32 %998 to i64
  %1000 = getelementptr inbounds %struct.complex, ptr %997, i64 %999
  %1001 = load ptr, ptr %33, align 8, !tbaa !5
  %1002 = load ptr, ptr %48, align 8, !tbaa !5
  %1003 = getelementptr inbounds %struct.complex, ptr %1002, i64 1
  %1004 = load ptr, ptr %44, align 8, !tbaa !5
  %1005 = load i32, ptr %56, align 4, !tbaa !9
  %1006 = sext i32 %1005 to i64
  %1007 = getelementptr inbounds %struct.complex, ptr %1004, i64 %1006
  %1008 = load ptr, ptr %45, align 8, !tbaa !5
  %1009 = load ptr, ptr %49, align 8, !tbaa !5
  %1010 = getelementptr inbounds %struct.complex, ptr %1009, i64 1
  %1011 = load ptr, ptr %50, align 8, !tbaa !5
  call void @cunmr2_(ptr noundef @.str.7, ptr noundef @.str.8, ptr noundef %995, ptr noundef %61, ptr noundef %996, ptr noundef %1000, ptr noundef %1001, ptr noundef %1003, ptr noundef %1007, ptr noundef %1008, ptr noundef %1010, ptr noundef %1011)
  br label %1012

1012:                                             ; preds = %989, %970
  %1013 = load ptr, ptr %31, align 8, !tbaa !5
  %1014 = load i32, ptr %1013, align 4, !tbaa !9
  %1015 = load ptr, ptr %39, align 8, !tbaa !5
  %1016 = load i32, ptr %1015, align 4, !tbaa !9
  %1017 = sub nsw i32 %1014, %1016
  %1018 = load ptr, ptr %38, align 8, !tbaa !5
  %1019 = load i32, ptr %1018, align 4, !tbaa !9
  %1020 = sub nsw i32 %1017, %1019
  store i32 %1020, ptr %61, align 4, !tbaa !9
  %1021 = load ptr, ptr %38, align 8, !tbaa !5
  %1022 = load ptr, ptr %32, align 8, !tbaa !5
  %1023 = load i32, ptr %52, align 4, !tbaa !9
  %1024 = sext i32 %1023 to i64
  %1025 = getelementptr inbounds %struct.complex, ptr %1022, i64 %1024
  %1026 = load ptr, ptr %33, align 8, !tbaa !5
  call void @claset_(ptr noundef @.str.5, ptr noundef %1021, ptr noundef %61, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %1025, ptr noundef %1026)
  %1027 = load ptr, ptr %31, align 8, !tbaa !5
  %1028 = load i32, ptr %1027, align 4, !tbaa !9
  %1029 = load ptr, ptr %39, align 8, !tbaa !5
  %1030 = load i32, ptr %1029, align 4, !tbaa !9
  %1031 = sub nsw i32 %1028, %1030
  store i32 %1031, ptr %61, align 4, !tbaa !9
  %1032 = load ptr, ptr %31, align 8, !tbaa !5
  %1033 = load i32, ptr %1032, align 4, !tbaa !9
  %1034 = load ptr, ptr %39, align 8, !tbaa !5
  %1035 = load i32, ptr %1034, align 4, !tbaa !9
  %1036 = sub nsw i32 %1033, %1035
  %1037 = load ptr, ptr %38, align 8, !tbaa !5
  %1038 = load i32, ptr %1037, align 4, !tbaa !9
  %1039 = sub nsw i32 %1036, %1038
  %1040 = add nsw i32 %1039, 1
  store i32 %1040, ptr %67, align 4, !tbaa !9
  br label %1041

1041:                                             ; preds = %1083, %1012
  %1042 = load i32, ptr %67, align 4, !tbaa !9
  %1043 = load i32, ptr %61, align 4, !tbaa !9
  %1044 = icmp sle i32 %1042, %1043
  br i1 %1044, label %1045, label %1086

1045:                                             ; preds = %1041
  %1046 = load ptr, ptr %38, align 8, !tbaa !5
  %1047 = load i32, ptr %1046, align 4, !tbaa !9
  store i32 %1047, ptr %62, align 4, !tbaa !9
  %1048 = load i32, ptr %67, align 4, !tbaa !9
  %1049 = load ptr, ptr %31, align 8, !tbaa !5
  %1050 = load i32, ptr %1049, align 4, !tbaa !9
  %1051 = sub nsw i32 %1048, %1050
  %1052 = load ptr, ptr %39, align 8, !tbaa !5
  %1053 = load i32, ptr %1052, align 4, !tbaa !9
  %1054 = add nsw i32 %1051, %1053
  %1055 = load ptr, ptr %38, align 8, !tbaa !5
  %1056 = load i32, ptr %1055, align 4, !tbaa !9
  %1057 = add nsw i32 %1054, %1056
  %1058 = add nsw i32 %1057, 1
  store i32 %1058, ptr %66, align 4, !tbaa !9
  br label %1059

1059:                                             ; preds = %1079, %1045
  %1060 = load i32, ptr %66, align 4, !tbaa !9
  %1061 = load i32, ptr %62, align 4, !tbaa !9
  %1062 = icmp sle i32 %1060, %1061
  br i1 %1062, label %1063, label %1082

1063:                                             ; preds = %1059
  %1064 = load i32, ptr %66, align 4, !tbaa !9
  %1065 = load i32, ptr %67, align 4, !tbaa !9
  %1066 = load i32, ptr %51, align 4, !tbaa !9
  %1067 = mul nsw i32 %1065, %1066
  %1068 = add nsw i32 %1064, %1067
  store i32 %1068, ptr %63, align 4, !tbaa !9
  %1069 = load ptr, ptr %32, align 8, !tbaa !5
  %1070 = load i32, ptr %63, align 4, !tbaa !9
  %1071 = sext i32 %1070 to i64
  %1072 = getelementptr inbounds %struct.complex, ptr %1069, i64 %1071
  %1073 = getelementptr inbounds %struct.complex, ptr %1072, i32 0, i32 0
  store float 0.000000e+00, ptr %1073, align 4, !tbaa !13
  %1074 = load ptr, ptr %32, align 8, !tbaa !5
  %1075 = load i32, ptr %63, align 4, !tbaa !9
  %1076 = sext i32 %1075 to i64
  %1077 = getelementptr inbounds %struct.complex, ptr %1074, i64 %1076
  %1078 = getelementptr inbounds %struct.complex, ptr %1077, i32 0, i32 1
  store float 0.000000e+00, ptr %1078, align 4, !tbaa !18
  br label %1079

1079:                                             ; preds = %1063
  %1080 = load i32, ptr %66, align 4, !tbaa !9
  %1081 = add nsw i32 %1080, 1
  store i32 %1081, ptr %66, align 4, !tbaa !9
  br label %1059, !llvm.loop !27

1082:                                             ; preds = %1059
  br label %1083

1083:                                             ; preds = %1082
  %1084 = load i32, ptr %67, align 4, !tbaa !9
  %1085 = add nsw i32 %1084, 1
  store i32 %1085, ptr %67, align 4, !tbaa !9
  br label %1041, !llvm.loop !28

1086:                                             ; preds = %1041
  br label %1087

1087:                                             ; preds = %1086, %961
  %1088 = load ptr, ptr %29, align 8, !tbaa !5
  %1089 = load i32, ptr %1088, align 4, !tbaa !9
  %1090 = load ptr, ptr %38, align 8, !tbaa !5
  %1091 = load i32, ptr %1090, align 4, !tbaa !9
  %1092 = icmp sgt i32 %1089, %1091
  br i1 %1092, label %1093, label %1232

1093:                                             ; preds = %1087
  %1094 = load ptr, ptr %29, align 8, !tbaa !5
  %1095 = load i32, ptr %1094, align 4, !tbaa !9
  %1096 = load ptr, ptr %38, align 8, !tbaa !5
  %1097 = load i32, ptr %1096, align 4, !tbaa !9
  %1098 = sub nsw i32 %1095, %1097
  store i32 %1098, ptr %61, align 4, !tbaa !9
  %1099 = load ptr, ptr %39, align 8, !tbaa !5
  %1100 = load ptr, ptr %32, align 8, !tbaa !5
  %1101 = load ptr, ptr %38, align 8, !tbaa !5
  %1102 = load i32, ptr %1101, align 4, !tbaa !9
  %1103 = add nsw i32 %1102, 1
  %1104 = load ptr, ptr %31, align 8, !tbaa !5
  %1105 = load i32, ptr %1104, align 4, !tbaa !9
  %1106 = load ptr, ptr %39, align 8, !tbaa !5
  %1107 = load i32, ptr %1106, align 4, !tbaa !9
  %1108 = sub nsw i32 %1105, %1107
  %1109 = add nsw i32 %1108, 1
  %1110 = load i32, ptr %51, align 4, !tbaa !9
  %1111 = mul nsw i32 %1109, %1110
  %1112 = add nsw i32 %1103, %1111
  %1113 = sext i32 %1112 to i64
  %1114 = getelementptr inbounds %struct.complex, ptr %1100, i64 %1113
  %1115 = load ptr, ptr %33, align 8, !tbaa !5
  %1116 = load ptr, ptr %48, align 8, !tbaa !5
  %1117 = getelementptr inbounds %struct.complex, ptr %1116, i64 1
  %1118 = load ptr, ptr %49, align 8, !tbaa !5
  %1119 = getelementptr inbounds %struct.complex, ptr %1118, i64 1
  %1120 = load ptr, ptr %50, align 8, !tbaa !5
  call void @cgeqr2_(ptr noundef %61, ptr noundef %1099, ptr noundef %1114, ptr noundef %1115, ptr noundef %1117, ptr noundef %1119, ptr noundef %1120)
  %1121 = load i32, ptr %69, align 4, !tbaa !9
  %1122 = icmp ne i32 %1121, 0
  br i1 %1122, label %1123, label %1177

1123:                                             ; preds = %1093
  %1124 = load ptr, ptr %29, align 8, !tbaa !5
  %1125 = load i32, ptr %1124, align 4, !tbaa !9
  %1126 = load ptr, ptr %38, align 8, !tbaa !5
  %1127 = load i32, ptr %1126, align 4, !tbaa !9
  %1128 = sub nsw i32 %1125, %1127
  store i32 %1128, ptr %61, align 4, !tbaa !9
  %1129 = load ptr, ptr %29, align 8, !tbaa !5
  %1130 = load i32, ptr %1129, align 4, !tbaa !9
  %1131 = load ptr, ptr %38, align 8, !tbaa !5
  %1132 = load i32, ptr %1131, align 4, !tbaa !9
  %1133 = sub nsw i32 %1130, %1132
  store i32 %1133, ptr %63, align 4, !tbaa !9
  %1134 = load i32, ptr %63, align 4, !tbaa !9
  %1135 = load ptr, ptr %39, align 8, !tbaa !5
  %1136 = load i32, ptr %1135, align 4, !tbaa !9
  %1137 = icmp sle i32 %1134, %1136
  br i1 %1137, label %1138, label %1140

1138:                                             ; preds = %1123
  %1139 = load i32, ptr %63, align 4, !tbaa !9
  br label %1143

1140:                                             ; preds = %1123
  %1141 = load ptr, ptr %39, align 8, !tbaa !5
  %1142 = load i32, ptr %1141, align 4, !tbaa !9
  br label %1143

1143:                                             ; preds = %1140, %1138
  %1144 = phi i32 [ %1139, %1138 ], [ %1142, %1140 ]
  store i32 %1144, ptr %62, align 4, !tbaa !9
  %1145 = load ptr, ptr %29, align 8, !tbaa !5
  %1146 = load ptr, ptr %32, align 8, !tbaa !5
  %1147 = load ptr, ptr %38, align 8, !tbaa !5
  %1148 = load i32, ptr %1147, align 4, !tbaa !9
  %1149 = add nsw i32 %1148, 1
  %1150 = load ptr, ptr %31, align 8, !tbaa !5
  %1151 = load i32, ptr %1150, align 4, !tbaa !9
  %1152 = load ptr, ptr %39, align 8, !tbaa !5
  %1153 = load i32, ptr %1152, align 4, !tbaa !9
  %1154 = sub nsw i32 %1151, %1153
  %1155 = add nsw i32 %1154, 1
  %1156 = load i32, ptr %51, align 4, !tbaa !9
  %1157 = mul nsw i32 %1155, %1156
  %1158 = add nsw i32 %1149, %1157
  %1159 = sext i32 %1158 to i64
  %1160 = getelementptr inbounds %struct.complex, ptr %1146, i64 %1159
  %1161 = load ptr, ptr %33, align 8, !tbaa !5
  %1162 = load ptr, ptr %48, align 8, !tbaa !5
  %1163 = getelementptr inbounds %struct.complex, ptr %1162, i64 1
  %1164 = load ptr, ptr %40, align 8, !tbaa !5
  %1165 = load ptr, ptr %38, align 8, !tbaa !5
  %1166 = load i32, ptr %1165, align 4, !tbaa !9
  %1167 = add nsw i32 %1166, 1
  %1168 = load i32, ptr %57, align 4, !tbaa !9
  %1169 = mul nsw i32 %1167, %1168
  %1170 = add nsw i32 %1169, 1
  %1171 = sext i32 %1170 to i64
  %1172 = getelementptr inbounds %struct.complex, ptr %1164, i64 %1171
  %1173 = load ptr, ptr %41, align 8, !tbaa !5
  %1174 = load ptr, ptr %49, align 8, !tbaa !5
  %1175 = getelementptr inbounds %struct.complex, ptr %1174, i64 1
  %1176 = load ptr, ptr %50, align 8, !tbaa !5
  call void @cunm2r_(ptr noundef @.str.7, ptr noundef @.str.10, ptr noundef %1145, ptr noundef %61, ptr noundef %62, ptr noundef %1160, ptr noundef %1161, ptr noundef %1163, ptr noundef %1172, ptr noundef %1173, ptr noundef %1175, ptr noundef %1176)
  br label %1177

1177:                                             ; preds = %1143, %1093
  %1178 = load ptr, ptr %31, align 8, !tbaa !5
  %1179 = load i32, ptr %1178, align 4, !tbaa !9
  store i32 %1179, ptr %61, align 4, !tbaa !9
  %1180 = load ptr, ptr %31, align 8, !tbaa !5
  %1181 = load i32, ptr %1180, align 4, !tbaa !9
  %1182 = load ptr, ptr %39, align 8, !tbaa !5
  %1183 = load i32, ptr %1182, align 4, !tbaa !9
  %1184 = sub nsw i32 %1181, %1183
  %1185 = add nsw i32 %1184, 1
  store i32 %1185, ptr %67, align 4, !tbaa !9
  br label %1186

1186:                                             ; preds = %1228, %1177
  %1187 = load i32, ptr %67, align 4, !tbaa !9
  %1188 = load i32, ptr %61, align 4, !tbaa !9
  %1189 = icmp sle i32 %1187, %1188
  br i1 %1189, label %1190, label %1231

1190:                                             ; preds = %1186
  %1191 = load ptr, ptr %29, align 8, !tbaa !5
  %1192 = load i32, ptr %1191, align 4, !tbaa !9
  store i32 %1192, ptr %62, align 4, !tbaa !9
  %1193 = load i32, ptr %67, align 4, !tbaa !9
  %1194 = load ptr, ptr %31, align 8, !tbaa !5
  %1195 = load i32, ptr %1194, align 4, !tbaa !9
  %1196 = sub nsw i32 %1193, %1195
  %1197 = load ptr, ptr %38, align 8, !tbaa !5
  %1198 = load i32, ptr %1197, align 4, !tbaa !9
  %1199 = add nsw i32 %1196, %1198
  %1200 = load ptr, ptr %39, align 8, !tbaa !5
  %1201 = load i32, ptr %1200, align 4, !tbaa !9
  %1202 = add nsw i32 %1199, %1201
  %1203 = add nsw i32 %1202, 1
  store i32 %1203, ptr %66, align 4, !tbaa !9
  br label %1204

1204:                                             ; preds = %1224, %1190
  %1205 = load i32, ptr %66, align 4, !tbaa !9
  %1206 = load i32, ptr %62, align 4, !tbaa !9
  %1207 = icmp sle i32 %1205, %1206
  br i1 %1207, label %1208, label %1227

1208:                                             ; preds = %1204
  %1209 = load i32, ptr %66, align 4, !tbaa !9
  %1210 = load i32, ptr %67, align 4, !tbaa !9
  %1211 = load i32, ptr %51, align 4, !tbaa !9
  %1212 = mul nsw i32 %1210, %1211
  %1213 = add nsw i32 %1209, %1212
  store i32 %1213, ptr %63, align 4, !tbaa !9
  %1214 = load ptr, ptr %32, align 8, !tbaa !5
  %1215 = load i32, ptr %63, align 4, !tbaa !9
  %1216 = sext i32 %1215 to i64
  %1217 = getelementptr inbounds %struct.complex, ptr %1214, i64 %1216
  %1218 = getelementptr inbounds %struct.complex, ptr %1217, i32 0, i32 0
  store float 0.000000e+00, ptr %1218, align 4, !tbaa !13
  %1219 = load ptr, ptr %32, align 8, !tbaa !5
  %1220 = load i32, ptr %63, align 4, !tbaa !9
  %1221 = sext i32 %1220 to i64
  %1222 = getelementptr inbounds %struct.complex, ptr %1219, i64 %1221
  %1223 = getelementptr inbounds %struct.complex, ptr %1222, i32 0, i32 1
  store float 0.000000e+00, ptr %1223, align 4, !tbaa !18
  br label %1224

1224:                                             ; preds = %1208
  %1225 = load i32, ptr %66, align 4, !tbaa !9
  %1226 = add nsw i32 %1225, 1
  store i32 %1226, ptr %66, align 4, !tbaa !9
  br label %1204, !llvm.loop !29

1227:                                             ; preds = %1204
  br label %1228

1228:                                             ; preds = %1227
  %1229 = load i32, ptr %67, align 4, !tbaa !9
  %1230 = add nsw i32 %1229, 1
  store i32 %1230, ptr %67, align 4, !tbaa !9
  br label %1186, !llvm.loop !30

1231:                                             ; preds = %1186
  br label %1232

1232:                                             ; preds = %1231, %1087
  store i32 1, ptr %72, align 4
  br label %1233

1233:                                             ; preds = %1232, %273
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  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 @xerbla_(ptr noundef, ptr noundef, i32 noundef) #2

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

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden <2 x float> @Cf(ptr noundef) #3

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

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

declare void @cunmr2_(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 @cunm2r_(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 @cgeqr2_(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"="64" "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 = { inlinehint nounwind uwtable "min-legal-vector-width"="64" "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 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!14, !15, i64 0}
!14 = !{!"", !15, i64 0, !15, i64 4}
!15 = !{!"float", !7, i64 0}
!16 = !{!15, !15, i64 0}
!17 = distinct !{!17, !12}
!18 = !{!14, !15, i64 4}
!19 = distinct !{!19, !12}
!20 = distinct !{!20, !12}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12}
!27 = distinct !{!27, !12}
!28 = distinct !{!28, !12}
!29 = distinct !{!29, !12}
!30 = distinct !{!30, !12}


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

; Function Attrs: nounwind uwtable
define dso_local void @cggsvp_(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 nocapture noundef readonly %10, ptr nocapture noundef readonly %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) local_unnamed_addr #0 {
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #6
  %29 = load i32, ptr %7, align 4, !tbaa !5
  %narrow499 = xor i32 %29, -1
  %30 = sext i32 %narrow499 to i64
  %31 = getelementptr inbounds %struct.complex, ptr %6, i64 %30
  %32 = load i32, ptr %9, align 4, !tbaa !5
  %narrow = xor i32 %32, -1
  %33 = sext i32 %narrow to i64
  %34 = getelementptr inbounds %struct.complex, ptr %8, i64 %33
  %35 = load i32, ptr %15, align 4, !tbaa !5
  %narrow514 = xor i32 %35, -1
  %36 = sext i32 %narrow514 to i64
  %37 = getelementptr inbounds %struct.complex, ptr %14, i64 %36
  %38 = load i32, ptr %17, align 4, !tbaa !5
  %narrow503 = xor i32 %38, -1
  %39 = sext i32 %narrow503 to i64
  %40 = getelementptr inbounds %struct.complex, ptr %16, i64 %39
  %41 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %42 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %43 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2) #6
  store i32 1, ptr %28, align 4, !tbaa !5
  store i32 0, ptr %24, align 4, !tbaa !5
  %.not = icmp ne i32 %41, 0
  br i1 %.not, label %46, label %44

44:                                               ; preds = %25
  %45 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #6
  %.not492 = icmp eq i32 %45, 0
  br i1 %.not492, label %.thread.sink.split, label %46

46:                                               ; preds = %44, %25
  %.not493 = icmp ne i32 %42, 0
  br i1 %.not493, label %49, label %47

47:                                               ; preds = %46
  %48 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #6
  %.not494 = icmp eq i32 %48, 0
  br i1 %.not494, label %.thread.sink.split, label %49

49:                                               ; preds = %47, %46
  %.not495 = icmp ne i32 %43, 0
  br i1 %.not495, label %52, label %50

50:                                               ; preds = %49
  %51 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.3) #6
  %.not496 = icmp eq i32 %51, 0
  br i1 %.not496, label %.thread.sink.split, label %52

52:                                               ; preds = %50, %49
  %53 = load i32, ptr %3, align 4, !tbaa !5
  %54 = icmp slt i32 %53, 0
  br i1 %54, label %.thread.sink.split, label %55

55:                                               ; preds = %52
  %56 = load i32, ptr %4, align 4, !tbaa !5
  %57 = icmp slt i32 %56, 0
  br i1 %57, label %.thread.sink.split, label %58

58:                                               ; preds = %55
  %59 = load i32, ptr %5, align 4, !tbaa !5
  %60 = icmp slt i32 %59, 0
  br i1 %60, label %.thread.sink.split, label %61

61:                                               ; preds = %58
  %62 = load i32, ptr %7, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %53, i32 1)
  %63 = icmp slt i32 %62, %spec.select
  br i1 %63, label %.thread.sink.split, label %64

64:                                               ; preds = %61
  %65 = load i32, ptr %9, align 4, !tbaa !5
  %spec.select525 = tail call i32 @llvm.umax.i32(i32 %56, i32 1)
  %66 = icmp slt i32 %65, %spec.select525
  br i1 %66, label %.thread.sink.split, label %67

67:                                               ; preds = %64
  %68 = load i32, ptr %15, align 4, !tbaa !5
  %69 = icmp slt i32 %68, 1
  %70 = icmp ult i32 %68, %53
  %or.cond = and i1 %.not, %70
  %or.cond531 = or i1 %69, %or.cond
  br i1 %or.cond531, label %.thread.sink.split, label %71

71:                                               ; preds = %67
  %72 = load i32, ptr %17, align 4, !tbaa !5
  %73 = icmp slt i32 %72, 1
  %74 = icmp ult i32 %72, %56
  %or.cond529 = and i1 %.not493, %74
  %or.cond532 = or i1 %73, %or.cond529
  br i1 %or.cond532, label %.thread.sink.split, label %75

75:                                               ; preds = %71
  %76 = load i32, ptr %19, align 4, !tbaa !5
  %77 = icmp slt i32 %76, 1
  %78 = icmp ult i32 %76, %59
  %or.cond530 = and i1 %.not495, %78
  %or.cond533 = or i1 %77, %or.cond530
  br i1 %or.cond533, label %.thread.sink.split, label %79

79:                                               ; preds = %75
  %.pr = load i32, ptr %24, align 4, !tbaa !5
  %.not497 = icmp eq i32 %.pr, 0
  br i1 %.not497, label %83, label %.thread

.thread.sink.split:                               ; preds = %75, %71, %67, %64, %61, %58, %55, %52, %50, %47, %44
  %.sink = phi i32 [ -1, %44 ], [ -2, %47 ], [ -3, %50 ], [ -4, %52 ], [ -5, %55 ], [ -6, %58 ], [ -8, %61 ], [ -10, %64 ], [ -16, %67 ], [ -18, %71 ], [ -20, %75 ]
  store i32 %.sink, ptr %24, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %79
  %80 = phi i32 [ %.pr, %79 ], [ %.sink, %.thread.sink.split ]
  %81 = sub nsw i32 0, %80
  store i32 %81, ptr %26, align 4, !tbaa !5
  %82 = call i32 @xerbla_(ptr noundef nonnull @.str.4, ptr noundef nonnull %26, i32 noundef 6) #6
  br label %.loopexit544

83:                                               ; preds = %79
  store i32 %59, ptr %26, align 4, !tbaa !5
  %.not498551 = icmp eq i32 %59, 0
  br i1 %.not498551, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %83
  %84 = zext nneg i32 %59 to i64
  %85 = shl nuw nsw i64 %84, 2
  tail call void @llvm.memset.p0.i64(ptr align 4 %20, i8 0, i64 %85, i1 false), !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.preheader, %83
  tail call void @cgeqpf_(ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %20, ptr noundef %22, ptr noundef %23, ptr noundef %21, ptr noundef nonnull %24) #6
  call void @clapmt_(ptr noundef nonnull %28, ptr noundef nonnull %3, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %20) #6
  store i32 0, ptr %13, align 4, !tbaa !5
  %86 = load i32, ptr %4, align 4, !tbaa !5
  %87 = load i32, ptr %5, align 4, !tbaa !5
  %. = call i32 @llvm.smin.i32(i32 %86, i32 %87)
  store i32 %., ptr %26, align 4, !tbaa !5
  %.not501553 = icmp slt i32 %., 1
  br i1 %.not501553, label %._crit_edge557, label %.lr.ph556

.lr.ph556:                                        ; preds = %._crit_edge
  %88 = add i32 %32, 1
  br label %89

89:                                               ; preds = %.lr.ph556, %108
  %indvars.iv = phi i64 [ 1, %.lr.ph556 ], [ %indvars.iv.next, %108 ]
  %90 = trunc nuw nsw i64 %indvars.iv to i32
  %91 = mul i32 %88, %90
  store i32 %91, ptr %27, align 4, !tbaa !5
  %92 = sext i32 %91 to i64
  %93 = getelementptr inbounds %struct.complex, ptr %34, i64 %92
  %94 = load float, ptr %93, align 4, !tbaa !9
  %95 = fcmp oge float %94, 0.000000e+00
  %96 = fneg float %94
  %97 = select i1 %95, float %94, float %96
  %98 = call <2 x float> @Cf(ptr noundef nonnull %93)
  %.sroa.01.4.vec.extract = extractelement <2 x float> %98, i64 1
  %99 = fcmp oge float %.sroa.01.4.vec.extract, 0.000000e+00
  %100 = fneg float %.sroa.01.4.vec.extract
  %101 = select i1 %99, float %.sroa.01.4.vec.extract, float %100
  %102 = fadd float %97, %101
  %103 = load float, ptr %11, align 4, !tbaa !12
  %104 = fcmp ogt float %102, %103
  br i1 %104, label %105, label %108

105:                                              ; preds = %89
  %106 = load i32, ptr %13, align 4, !tbaa !5
  %107 = add nsw i32 %106, 1
  store i32 %107, ptr %13, align 4, !tbaa !5
  br label %108

108:                                              ; preds = %89, %105
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %109 = load i32, ptr %26, align 4, !tbaa !5
  %110 = sext i32 %109 to i64
  %.not501.not = icmp slt i64 %indvars.iv, %110
  br i1 %.not501.not, label %89, label %._crit_edge557, !llvm.loop !13

._crit_edge557:                                   ; preds = %108, %._crit_edge
  %.not502 = icmp eq i32 %42, 0
  br i1 %.not502, label %125, label %111

111:                                              ; preds = %._crit_edge557
  call void @claset_(ptr noundef nonnull @.str.5, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef %16, ptr noundef nonnull %17) #6
  %112 = load i32, ptr %4, align 4, !tbaa !5
  %113 = icmp sgt i32 %112, 1
  br i1 %113, label %114, label %122

114:                                              ; preds = %111
  %115 = add nsw i32 %112, -1
  store i32 %115, ptr %26, align 4, !tbaa !5
  %116 = sext i32 %32 to i64
  %117 = getelementptr %struct.complex, ptr %34, i64 %116
  %118 = getelementptr i8, ptr %117, i64 16
  %119 = sext i32 %38 to i64
  %120 = getelementptr %struct.complex, ptr %40, i64 %119
  %121 = getelementptr i8, ptr %120, i64 16
  call void @clacpy_(ptr noundef nonnull @.str.6, ptr noundef nonnull %26, ptr noundef nonnull %5, ptr noundef %118, ptr noundef nonnull %9, ptr noundef %121, ptr noundef nonnull %17) #6
  %.pre = load i32, ptr %4, align 4, !tbaa !5
  br label %122

122:                                              ; preds = %114, %111
  %123 = phi i32 [ %.pre, %114 ], [ %112, %111 ]
  %124 = load i32, ptr %5, align 4, !tbaa !5
  %.526 = call i32 @llvm.smin.i32(i32 %123, i32 %124)
  store i32 %.526, ptr %26, align 4, !tbaa !5
  call void @cung2r_(ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef nonnull %26, ptr noundef %16, ptr noundef nonnull %17, ptr noundef %22, ptr noundef %23, ptr noundef nonnull %24) #6
  br label %125

125:                                              ; preds = %122, %._crit_edge557
  %126 = load i32, ptr %13, align 4, !tbaa !5
  %127 = add i32 %126, -1
  store i32 %127, ptr %26, align 4, !tbaa !5
  %.not505.not562 = icmp sgt i32 %126, 1
  br i1 %.not505.not562, label %.lr.ph565, label %._crit_edge566

.lr.ph565:                                        ; preds = %125
  store i32 %126, ptr %27, align 4, !tbaa !5
  %128 = shl nsw i64 %33, 3
  %scevgep = getelementptr i8, ptr %8, i64 %128
  %129 = add i32 %32, 2
  %130 = add i32 %32, 1
  %131 = add nsw i32 %126, -2
  %wide.trip.count = zext nneg i32 %127 to i64
  %xtraiter = and i64 %wide.trip.count, 1
  %132 = icmp eq i32 %127, 1
  br i1 %132, label %._crit_edge566.loopexit.unr-lcssa, label %.lr.ph565.new

.lr.ph565.new:                                    ; preds = %.lr.ph565
  %unroll_iter = and i64 %wide.trip.count, 2147483646
  br label %.loopexit550

.loopexit550:                                     ; preds = %.loopexit550, %.lr.ph565.new
  %indvars.iv621 = phi i64 [ 0, %.lr.ph565.new ], [ %indvars.iv.next622.1, %.loopexit550 ]
  %niter = phi i64 [ 0, %.lr.ph565.new ], [ %niter.next.1, %.loopexit550 ]
  %133 = trunc i64 %indvars.iv621 to i32
  %134 = sub i32 %131, %133
  %135 = zext i32 %134 to i64
  %136 = shl nuw nsw i64 %135, 3
  %137 = add nuw nsw i64 %136, 8
  %138 = trunc nuw nsw i64 %indvars.iv621 to i32
  %139 = mul i32 %130, %138
  %140 = add i32 %129, %139
  %141 = sext i32 %140 to i64
  %142 = shl nsw i64 %141, 3
  %scevgep615 = getelementptr i8, ptr %scevgep, i64 %142
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep615, i8 0, i64 %137, i1 false), !tbaa !12
  %indvars.iv.next622 = or disjoint i64 %indvars.iv621, 1
  %143 = trunc i64 %indvars.iv.next622 to i32
  %144 = sub i32 %131, %143
  %145 = zext i32 %144 to i64
  %146 = shl nuw nsw i64 %145, 3
  %147 = add nuw nsw i64 %146, 8
  %148 = trunc nuw nsw i64 %indvars.iv.next622 to i32
  %149 = mul i32 %130, %148
  %150 = add i32 %129, %149
  %151 = sext i32 %150 to i64
  %152 = shl nsw i64 %151, 3
  %scevgep615.1 = getelementptr i8, ptr %scevgep, i64 %152
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep615.1, i8 0, i64 %147, i1 false), !tbaa !12
  %indvars.iv.next622.1 = add nuw nsw i64 %indvars.iv621, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge566.loopexit.unr-lcssa, label %.loopexit550, !llvm.loop !15

._crit_edge566.loopexit.unr-lcssa:                ; preds = %.loopexit550, %.lr.ph565
  %indvars.iv621.unr = phi i64 [ 0, %.lr.ph565 ], [ %indvars.iv.next622.1, %.loopexit550 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge566, label %.loopexit550.epil

.loopexit550.epil:                                ; preds = %._crit_edge566.loopexit.unr-lcssa
  %153 = trunc i64 %indvars.iv621.unr to i32
  %154 = sub i32 %131, %153
  %155 = zext i32 %154 to i64
  %156 = shl nuw nsw i64 %155, 3
  %157 = add nuw nsw i64 %156, 8
  %158 = trunc nuw nsw i64 %indvars.iv621.unr to i32
  %159 = mul i32 %130, %158
  %160 = add i32 %129, %159
  %161 = sext i32 %160 to i64
  %162 = shl nsw i64 %161, 3
  %scevgep615.epil = getelementptr i8, ptr %scevgep, i64 %162
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep615.epil, i8 0, i64 %157, i1 false), !tbaa !12
  br label %._crit_edge566

._crit_edge566:                                   ; preds = %.loopexit550.epil, %._crit_edge566.loopexit.unr-lcssa, %125
  %163 = load i32, ptr %4, align 4, !tbaa !5
  %164 = icmp sgt i32 %163, %126
  br i1 %164, label %165, label %171

165:                                              ; preds = %._crit_edge566
  %166 = sub nsw i32 %163, %126
  store i32 %166, ptr %26, align 4, !tbaa !5
  %167 = add i32 %32, 1
  %168 = add i32 %167, %126
  %169 = sext i32 %168 to i64
  %170 = getelementptr inbounds %struct.complex, ptr %34, i64 %169
  call void @claset_(ptr noundef nonnull @.str.5, ptr noundef nonnull %26, ptr noundef nonnull %5, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef %170, ptr noundef nonnull %9) #6
  br label %171

171:                                              ; preds = %165, %._crit_edge566
  %.not506 = icmp eq i32 %43, 0
  br i1 %.not506, label %173, label %172

172:                                              ; preds = %171
  call void @claset_(ptr noundef nonnull @.str.5, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b2, ptr noundef %18, ptr noundef nonnull %19) #6
  call void @clapmt_(ptr noundef nonnull %28, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef %18, ptr noundef nonnull %19, ptr noundef %20) #6
  br label %173

173:                                              ; preds = %172, %171
  %174 = load i32, ptr %4, align 4, !tbaa !5
  %175 = load i32, ptr %13, align 4, !tbaa !5
  %.not507 = icmp slt i32 %174, %175
  %.pre670 = load i32, ptr %5, align 4, !tbaa !5
  br i1 %.not507, label %.loopexit549, label %176

176:                                              ; preds = %173
  %.not508 = icmp eq i32 %.pre670, %175
  br i1 %.not508, label %.loopexit549, label %177

177:                                              ; preds = %176
  call void @cgerq2_(ptr noundef nonnull %13, ptr noundef nonnull %5, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %22, ptr noundef %23, ptr noundef nonnull %24) #6
  call void @cunmr2_(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.8, ptr noundef nonnull %3, ptr noundef nonnull %5, ptr noundef nonnull %13, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %22, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %23, ptr noundef nonnull %24) #6
  br i1 %.not506, label %179, label %178

178:                                              ; preds = %177
  call void @cunmr2_(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.8, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef nonnull %13, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %22, ptr noundef %18, ptr noundef nonnull %19, ptr noundef %23, ptr noundef nonnull %24) #6
  br label %179

179:                                              ; preds = %178, %177
  %180 = load i32, ptr %5, align 4, !tbaa !5
  %181 = load i32, ptr %13, align 4, !tbaa !5
  %182 = sub nsw i32 %180, %181
  store i32 %182, ptr %26, align 4, !tbaa !5
  call void @claset_(ptr noundef nonnull @.str.5, ptr noundef nonnull %13, ptr noundef nonnull %26, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef %8, ptr noundef nonnull %9) #6
  %183 = load i32, ptr %5, align 4, !tbaa !5
  %184 = load i32, ptr %13, align 4, !tbaa !5
  %.not509.not572 = icmp sgt i32 %184, 0
  br i1 %.not509.not572, label %.lr.ph575, label %.loopexit549

.lr.ph575:                                        ; preds = %179
  %185 = sub nsw i32 %183, %184
  store i32 %184, ptr %27, align 4, !tbaa !5
  %186 = sub i32 %184, %183
  %187 = shl nsw i64 %33, 3
  %scevgep624 = getelementptr i8, ptr %8, i64 %187
  %188 = add i32 %183, 1
  %189 = sub i32 %188, %184
  %190 = mul i32 %32, %189
  %191 = add i32 %190, 2
  %192 = add i32 %32, 1
  %193 = add nsw i32 %184, -2
  br label %194

.loopexit548:                                     ; preds = %.lr.ph570, %194
  %.not509.not = icmp slt i32 %.1573, %183
  %indvar.next = add i32 %indvar, 1
  br i1 %.not509.not, label %194, label %.loopexit549, !llvm.loop !16

194:                                              ; preds = %.lr.ph575, %.loopexit548
  %indvar = phi i32 [ 0, %.lr.ph575 ], [ %indvar.next, %.loopexit548 ]
  %.1573.in = phi i32 [ %185, %.lr.ph575 ], [ %.1573, %.loopexit548 ]
  %.1573 = add nsw i32 %.1573.in, 1
  %195 = add i32 %186, %.1573
  %.not523.not567 = icmp slt i32 %195, %184
  br i1 %.not523.not567, label %.lr.ph570, label %.loopexit548

.lr.ph570:                                        ; preds = %194
  %196 = sub i32 %193, %indvar
  %197 = zext i32 %196 to i64
  %198 = shl nuw nsw i64 %197, 3
  %199 = add nuw nsw i64 %198, 8
  %200 = mul i32 %192, %indvar
  %201 = add i32 %191, %200
  %202 = sext i32 %201 to i64
  %203 = shl nsw i64 %202, 3
  %scevgep625 = getelementptr i8, ptr %scevgep624, i64 %203
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep625, i8 0, i64 %199, i1 false), !tbaa !12
  br label %.loopexit548

.loopexit549:                                     ; preds = %.loopexit548, %179, %176, %173
  %204 = phi i32 [ %184, %179 ], [ %175, %176 ], [ %175, %173 ], [ %184, %.loopexit548 ]
  %205 = phi i32 [ %183, %179 ], [ %175, %176 ], [ %.pre670, %173 ], [ %183, %.loopexit548 ]
  %206 = sub nsw i32 %205, %204
  %.not510576 = icmp slt i32 %206, 1
  br i1 %.not510576, label %._crit_edge580, label %.lr.ph579.preheader

.lr.ph579.preheader:                              ; preds = %.loopexit549
  %207 = xor i32 %204, -1
  %208 = add i32 %205, %207
  %209 = zext i32 %208 to i64
  %210 = shl nuw nsw i64 %209, 2
  %211 = add nuw nsw i64 %210, 4
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %20, i8 0, i64 %211, i1 false), !tbaa !5
  %.pre671 = load i32, ptr %5, align 4, !tbaa !5
  %.pre672 = load i32, ptr %13, align 4, !tbaa !5
  %.pre678 = sub nsw i32 %.pre671, %.pre672
  br label %._crit_edge580

._crit_edge580:                                   ; preds = %.lr.ph579.preheader, %.loopexit549
  %.pre-phi = phi i32 [ %.pre678, %.lr.ph579.preheader ], [ %206, %.loopexit549 ]
  store i32 %.pre-phi, ptr %26, align 4, !tbaa !5
  call void @cgeqpf_(ptr noundef nonnull %3, ptr noundef nonnull %26, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %20, ptr noundef %22, ptr noundef %23, ptr noundef %21, ptr noundef nonnull %24) #6
  store i32 0, ptr %12, align 4, !tbaa !5
  %212 = load i32, ptr %3, align 4, !tbaa !5
  %213 = load i32, ptr %5, align 4, !tbaa !5
  %214 = load i32, ptr %13, align 4, !tbaa !5
  %215 = sub nsw i32 %213, %214
  %216 = call i32 @llvm.smin.i32(i32 %212, i32 %215)
  store i32 %216, ptr %26, align 4, !tbaa !5
  %.not512581 = icmp slt i32 %216, 1
  br i1 %.not512581, label %._crit_edge585, label %.lr.ph584

.lr.ph584:                                        ; preds = %._crit_edge580
  %217 = add i32 %29, 1
  br label %218

218:                                              ; preds = %.lr.ph584, %237
  %indvars.iv634 = phi i64 [ 1, %.lr.ph584 ], [ %indvars.iv.next635, %237 ]
  %219 = trunc nuw nsw i64 %indvars.iv634 to i32
  %220 = mul i32 %217, %219
  %221 = sext i32 %220 to i64
  %222 = getelementptr inbounds %struct.complex, ptr %31, i64 %221
  %223 = load float, ptr %222, align 4, !tbaa !9
  %224 = fcmp oge float %223, 0.000000e+00
  %225 = fneg float %223
  %226 = select i1 %224, float %223, float %225
  %227 = call <2 x float> @Cf(ptr noundef nonnull %222)
  %.sroa.0.4.vec.extract = extractelement <2 x float> %227, i64 1
  %228 = fcmp oge float %.sroa.0.4.vec.extract, 0.000000e+00
  %229 = fneg float %.sroa.0.4.vec.extract
  %230 = select i1 %228, float %.sroa.0.4.vec.extract, float %229
  %231 = fadd float %226, %230
  %232 = load float, ptr %10, align 4, !tbaa !12
  %233 = fcmp ogt float %231, %232
  br i1 %233, label %234, label %237

234:                                              ; preds = %218
  %235 = load i32, ptr %12, align 4, !tbaa !5
  %236 = add nsw i32 %235, 1
  store i32 %236, ptr %12, align 4, !tbaa !5
  br label %237

237:                                              ; preds = %218, %234
  %indvars.iv.next635 = add nuw nsw i64 %indvars.iv634, 1
  %238 = load i32, ptr %26, align 4, !tbaa !5
  %239 = sext i32 %238 to i64
  %.not512.not = icmp slt i64 %indvars.iv634, %239
  br i1 %.not512.not, label %218, label %._crit_edge585.loopexit, !llvm.loop !17

._crit_edge585.loopexit:                          ; preds = %237
  %.pre673 = load i32, ptr %3, align 4, !tbaa !5
  %.pre674 = load i32, ptr %5, align 4, !tbaa !5
  %.pre675 = load i32, ptr %13, align 4, !tbaa !5
  %.pre679 = sub nsw i32 %.pre674, %.pre675
  %.pre681 = call i32 @llvm.smin.i32(i32 %.pre673, i32 %.pre679)
  br label %._crit_edge585

._crit_edge585:                                   ; preds = %._crit_edge585.loopexit, %._crit_edge580
  %.pre-phi682 = phi i32 [ %.pre681, %._crit_edge585.loopexit ], [ %216, %._crit_edge580 ]
  %.pre-phi680 = phi i32 [ %.pre679, %._crit_edge585.loopexit ], [ %215, %._crit_edge580 ]
  %240 = phi i32 [ %.pre673, %._crit_edge585.loopexit ], [ %212, %._crit_edge580 ]
  store i32 %240, ptr %27, align 4, !tbaa !5
  store i32 %.pre-phi682, ptr %26, align 4, !tbaa !5
  %241 = add nsw i32 %.pre-phi680, 1
  %242 = mul nsw i32 %241, %29
  %243 = sext i32 %242 to i64
  %244 = getelementptr %struct.complex, ptr %31, i64 %243
  %245 = getelementptr i8, ptr %244, i64 8
  call void @cunm2r_(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.8, ptr noundef nonnull %3, ptr noundef nonnull %13, ptr noundef nonnull %26, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %22, ptr noundef %245, ptr noundef nonnull %7, ptr noundef %23, ptr noundef nonnull %24) #6
  br i1 %.not, label %246, label %266

246:                                              ; preds = %._crit_edge585
  call void @claset_(ptr noundef nonnull @.str.5, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef %14, ptr noundef nonnull %15) #6
  %247 = load i32, ptr %3, align 4, !tbaa !5
  %248 = icmp sgt i32 %247, 1
  br i1 %248, label %249, label %260

249:                                              ; preds = %246
  %250 = add nsw i32 %247, -1
  store i32 %250, ptr %26, align 4, !tbaa !5
  %251 = load i32, ptr %5, align 4, !tbaa !5
  %252 = load i32, ptr %13, align 4, !tbaa !5
  %253 = sub nsw i32 %251, %252
  store i32 %253, ptr %27, align 4, !tbaa !5
  %254 = sext i32 %29 to i64
  %255 = getelementptr %struct.complex, ptr %31, i64 %254
  %256 = getelementptr i8, ptr %255, i64 16
  %257 = sext i32 %35 to i64
  %258 = getelementptr %struct.complex, ptr %37, i64 %257
  %259 = getelementptr i8, ptr %258, i64 16
  call void @clacpy_(ptr noundef nonnull @.str.6, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef %256, ptr noundef nonnull %7, ptr noundef %259, ptr noundef nonnull %15) #6
  %.pre676 = load i32, ptr %3, align 4, !tbaa !5
  br label %260

260:                                              ; preds = %249, %246
  %261 = phi i32 [ %.pre676, %249 ], [ %247, %246 ]
  store i32 %261, ptr %27, align 4, !tbaa !5
  %262 = load i32, ptr %5, align 4, !tbaa !5
  %263 = load i32, ptr %13, align 4, !tbaa !5
  %264 = sub nsw i32 %262, %263
  %265 = call i32 @llvm.smin.i32(i32 %261, i32 %264)
  store i32 %265, ptr %26, align 4, !tbaa !5
  call void @cung2r_(ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef nonnull %26, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %22, ptr noundef %23, ptr noundef nonnull %24) #6
  br label %266

266:                                              ; preds = %260, %._crit_edge585
  br i1 %.not506, label %271, label %267

267:                                              ; preds = %266
  %268 = load i32, ptr %5, align 4, !tbaa !5
  %269 = load i32, ptr %13, align 4, !tbaa !5
  %270 = sub nsw i32 %268, %269
  store i32 %270, ptr %26, align 4, !tbaa !5
  call void @clapmt_(ptr noundef nonnull %28, ptr noundef nonnull %5, ptr noundef nonnull %26, ptr noundef %18, ptr noundef nonnull %19, ptr noundef %20) #6
  br label %271

271:                                              ; preds = %267, %266
  %272 = load i32, ptr %12, align 4, !tbaa !5
  %.not516.not590 = icmp sgt i32 %272, 1
  br i1 %.not516.not590, label %.lr.ph593, label %._crit_edge594

.lr.ph593:                                        ; preds = %271
  %273 = add nsw i32 %272, -1
  store i32 %272, ptr %27, align 4, !tbaa !5
  %274 = shl nsw i64 %30, 3
  %scevgep637 = getelementptr i8, ptr %6, i64 %274
  %275 = add i32 %29, 2
  %276 = add i32 %29, 1
  %277 = add nsw i32 %272, -2
  %wide.trip.count649 = zext nneg i32 %273 to i64
  %xtraiter683 = and i64 %wide.trip.count649, 1
  %278 = icmp eq i32 %273, 1
  br i1 %278, label %._crit_edge594.loopexit.unr-lcssa, label %.lr.ph593.new

.lr.ph593.new:                                    ; preds = %.lr.ph593
  %unroll_iter685 = and i64 %wide.trip.count649, 2147483646
  br label %.loopexit547

.loopexit547:                                     ; preds = %.loopexit547, %.lr.ph593.new
  %indvars.iv646 = phi i64 [ 0, %.lr.ph593.new ], [ %indvars.iv.next647.1, %.loopexit547 ]
  %niter686 = phi i64 [ 0, %.lr.ph593.new ], [ %niter686.next.1, %.loopexit547 ]
  %279 = trunc i64 %indvars.iv646 to i32
  %280 = sub i32 %277, %279
  %281 = zext i32 %280 to i64
  %282 = shl nuw nsw i64 %281, 3
  %283 = add nuw nsw i64 %282, 8
  %284 = trunc nuw nsw i64 %indvars.iv646 to i32
  %285 = mul i32 %276, %284
  %286 = add i32 %275, %285
  %287 = sext i32 %286 to i64
  %288 = shl nsw i64 %287, 3
  %scevgep640 = getelementptr i8, ptr %scevgep637, i64 %288
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep640, i8 0, i64 %283, i1 false), !tbaa !12
  %indvars.iv.next647 = or disjoint i64 %indvars.iv646, 1
  %289 = trunc i64 %indvars.iv.next647 to i32
  %290 = sub i32 %277, %289
  %291 = zext i32 %290 to i64
  %292 = shl nuw nsw i64 %291, 3
  %293 = add nuw nsw i64 %292, 8
  %294 = trunc nuw nsw i64 %indvars.iv.next647 to i32
  %295 = mul i32 %276, %294
  %296 = add i32 %275, %295
  %297 = sext i32 %296 to i64
  %298 = shl nsw i64 %297, 3
  %scevgep640.1 = getelementptr i8, ptr %scevgep637, i64 %298
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep640.1, i8 0, i64 %293, i1 false), !tbaa !12
  %indvars.iv.next647.1 = add nuw nsw i64 %indvars.iv646, 2
  %niter686.next.1 = add i64 %niter686, 2
  %niter686.ncmp.1 = icmp eq i64 %niter686.next.1, %unroll_iter685
  br i1 %niter686.ncmp.1, label %._crit_edge594.loopexit.unr-lcssa, label %.loopexit547, !llvm.loop !18

._crit_edge594.loopexit.unr-lcssa:                ; preds = %.loopexit547, %.lr.ph593
  %indvars.iv646.unr = phi i64 [ 0, %.lr.ph593 ], [ %indvars.iv.next647.1, %.loopexit547 ]
  %lcmp.mod684.not = icmp eq i64 %xtraiter683, 0
  br i1 %lcmp.mod684.not, label %._crit_edge594, label %.loopexit547.epil

.loopexit547.epil:                                ; preds = %._crit_edge594.loopexit.unr-lcssa
  %299 = trunc i64 %indvars.iv646.unr to i32
  %300 = sub i32 %277, %299
  %301 = zext i32 %300 to i64
  %302 = shl nuw nsw i64 %301, 3
  %303 = add nuw nsw i64 %302, 8
  %304 = trunc nuw nsw i64 %indvars.iv646.unr to i32
  %305 = mul i32 %276, %304
  %306 = add i32 %275, %305
  %307 = sext i32 %306 to i64
  %308 = shl nsw i64 %307, 3
  %scevgep640.epil = getelementptr i8, ptr %scevgep637, i64 %308
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep640.epil, i8 0, i64 %303, i1 false), !tbaa !12
  br label %._crit_edge594

._crit_edge594:                                   ; preds = %.loopexit547.epil, %._crit_edge594.loopexit.unr-lcssa, %271
  %309 = load i32, ptr %3, align 4, !tbaa !5
  %310 = icmp sgt i32 %309, %272
  br i1 %310, label %311, label %320

311:                                              ; preds = %._crit_edge594
  %312 = sub nsw i32 %309, %272
  store i32 %312, ptr %26, align 4, !tbaa !5
  %313 = load i32, ptr %5, align 4, !tbaa !5
  %314 = load i32, ptr %13, align 4, !tbaa !5
  %315 = sub nsw i32 %313, %314
  store i32 %315, ptr %27, align 4, !tbaa !5
  %316 = add i32 %29, 1
  %317 = add i32 %316, %272
  %318 = sext i32 %317 to i64
  %319 = getelementptr inbounds %struct.complex, ptr %31, i64 %318
  call void @claset_(ptr noundef nonnull @.str.5, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef %319, ptr noundef nonnull %7) #6
  %.pre677 = load i32, ptr %12, align 4, !tbaa !5
  br label %320

320:                                              ; preds = %311, %._crit_edge594
  %321 = phi i32 [ %.pre677, %311 ], [ %272, %._crit_edge594 ]
  %322 = load i32, ptr %5, align 4, !tbaa !5
  %323 = load i32, ptr %13, align 4, !tbaa !5
  %324 = sub nsw i32 %322, %323
  %325 = icmp sgt i32 %324, %321
  br i1 %325, label %326, label %.loopexit546

326:                                              ; preds = %320
  store i32 %324, ptr %26, align 4, !tbaa !5
  call void @cgerq2_(ptr noundef nonnull %12, ptr noundef nonnull %26, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %22, ptr noundef %23, ptr noundef nonnull %24) #6
  br i1 %.not506, label %331, label %327

327:                                              ; preds = %326
  %328 = load i32, ptr %5, align 4, !tbaa !5
  %329 = load i32, ptr %13, align 4, !tbaa !5
  %330 = sub nsw i32 %328, %329
  store i32 %330, ptr %26, align 4, !tbaa !5
  call void @cunmr2_(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.8, ptr noundef nonnull %5, ptr noundef nonnull %26, ptr noundef nonnull %12, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %22, ptr noundef %18, ptr noundef nonnull %19, ptr noundef %23, ptr noundef nonnull %24) #6
  br label %331

331:                                              ; preds = %327, %326
  %332 = load i32, ptr %5, align 4, !tbaa !5
  %333 = load i32, ptr %13, align 4, !tbaa !5
  %334 = load i32, ptr %12, align 4, !tbaa !5
  %335 = add i32 %333, %334
  %336 = sub i32 %332, %335
  store i32 %336, ptr %26, align 4, !tbaa !5
  call void @claset_(ptr noundef nonnull @.str.5, ptr noundef nonnull %12, ptr noundef nonnull %26, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef %6, ptr noundef nonnull %7) #6
  %337 = load i32, ptr %5, align 4, !tbaa !5
  %338 = load i32, ptr %13, align 4, !tbaa !5
  %339 = sub nsw i32 %337, %338
  %340 = load i32, ptr %12, align 4, !tbaa !5
  %341 = add i32 %338, %340
  %342 = sub i32 %337, %341
  %.not517.not600 = icmp slt i32 %342, %339
  br i1 %.not517.not600, label %.lr.ph603, label %.loopexit546

.lr.ph603:                                        ; preds = %331
  store i32 %340, ptr %27, align 4, !tbaa !5
  %343 = sub i32 %341, %337
  %344 = shl nsw i64 %30, 3
  %scevgep651 = getelementptr i8, ptr %6, i64 %344
  %345 = add i32 %337, 1
  %346 = sub i32 %345, %341
  %347 = mul i32 %29, %346
  %348 = add i32 %347, 2
  %349 = add i32 %29, 1
  %350 = add i32 %340, -2
  br label %351

.loopexit545:                                     ; preds = %.lr.ph598, %351
  %indvar.next653 = add i32 %indvar652, 1
  %exitcond660.not = icmp eq i32 %indvar.next653, %340
  br i1 %exitcond660.not, label %.loopexit546, label %351, !llvm.loop !19

351:                                              ; preds = %.lr.ph603, %.loopexit545
  %indvar652 = phi i32 [ 0, %.lr.ph603 ], [ %indvar.next653, %.loopexit545 ]
  %.3601.in = phi i32 [ %342, %.lr.ph603 ], [ %.3601, %.loopexit545 ]
  %.3601 = add nsw i32 %.3601.in, 1
  %352 = add i32 %343, %.3601
  %.not521.not595 = icmp slt i32 %352, %340
  br i1 %.not521.not595, label %.lr.ph598, label %.loopexit545

.lr.ph598:                                        ; preds = %351
  %353 = sub i32 %350, %indvar652
  %354 = zext i32 %353 to i64
  %355 = shl nuw nsw i64 %354, 3
  %356 = add nuw nsw i64 %355, 8
  %357 = mul i32 %349, %indvar652
  %358 = add i32 %348, %357
  %359 = sext i32 %358 to i64
  %360 = shl nsw i64 %359, 3
  %scevgep654 = getelementptr i8, ptr %scevgep651, i64 %360
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep654, i8 0, i64 %356, i1 false), !tbaa !12
  br label %.loopexit545

.loopexit546:                                     ; preds = %.loopexit545, %331, %320
  %361 = phi i32 [ %338, %331 ], [ %323, %320 ], [ %338, %.loopexit545 ]
  %362 = phi i32 [ %337, %331 ], [ %322, %320 ], [ %337, %.loopexit545 ]
  %363 = phi i32 [ %340, %331 ], [ %321, %320 ], [ %340, %.loopexit545 ]
  %364 = load i32, ptr %3, align 4, !tbaa !5
  %365 = icmp sgt i32 %364, %363
  br i1 %365, label %366, label %.loopexit544

366:                                              ; preds = %.loopexit546
  %367 = sub nsw i32 %364, %363
  store i32 %367, ptr %26, align 4, !tbaa !5
  %368 = add nsw i32 %363, 1
  %369 = add i32 %362, 1
  %370 = sub i32 %369, %361
  %371 = mul nsw i32 %370, %29
  %372 = add nsw i32 %368, %371
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds %struct.complex, ptr %31, i64 %373
  call void @cgeqr2_(ptr noundef nonnull %26, ptr noundef nonnull %13, ptr noundef %374, ptr noundef nonnull %7, ptr noundef %22, ptr noundef %23, ptr noundef nonnull %24) #6
  br i1 %.not, label %375, label %391

375:                                              ; preds = %366
  %376 = load i32, ptr %3, align 4, !tbaa !5
  %377 = load i32, ptr %12, align 4, !tbaa !5
  %378 = sub nsw i32 %376, %377
  store i32 %378, ptr %26, align 4, !tbaa !5
  %379 = load i32, ptr %13, align 4, !tbaa !5
  %.527 = call i32 @llvm.smin.i32(i32 %378, i32 %379)
  store i32 %.527, ptr %27, align 4, !tbaa !5
  %380 = add nsw i32 %377, 1
  %381 = load i32, ptr %5, align 4, !tbaa !5
  %reass.sub = sub i32 %381, %379
  %382 = add i32 %reass.sub, 1
  %383 = mul nsw i32 %382, %29
  %384 = add nsw i32 %383, %380
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds %struct.complex, ptr %31, i64 %385
  %387 = mul nsw i32 %380, %35
  %388 = sext i32 %387 to i64
  %389 = getelementptr %struct.complex, ptr %37, i64 %388
  %390 = getelementptr i8, ptr %389, i64 8
  call void @cunm2r_(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.10, ptr noundef nonnull %3, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef %386, ptr noundef nonnull %7, ptr noundef %22, ptr noundef %390, ptr noundef nonnull %15, ptr noundef %23, ptr noundef nonnull %24) #6
  br label %391

391:                                              ; preds = %375, %366
  %392 = load i32, ptr %5, align 4, !tbaa !5
  %393 = load i32, ptr %13, align 4, !tbaa !5
  %.not519.not609 = icmp sgt i32 %393, 0
  br i1 %.not519.not609, label %.lr.ph612, label %.loopexit544

.lr.ph612:                                        ; preds = %391
  %394 = sub nsw i32 %392, %393
  %395 = load i32, ptr %3, align 4, !tbaa !5
  %396 = load i32, ptr %12, align 4, !tbaa !5
  %397 = sub i32 %393, %392
  %398 = shl nsw i64 %30, 3
  %scevgep661 = getelementptr i8, ptr %6, i64 %398
  %399 = add i32 %392, 1
  %400 = sub i32 %399, %393
  %401 = mul i32 %29, %400
  %402 = add i32 %396, %401
  %403 = add i32 %402, 2
  %404 = add i32 %29, 1
  %405 = add i32 %395, -2
  br label %406

.loopexit:                                        ; preds = %.lr.ph607, %406
  %.not519.not = icmp slt i32 %.4610, %392
  %indvar.next663 = add i32 %indvar662, 1
  br i1 %.not519.not, label %406, label %.loopexit544, !llvm.loop !20

406:                                              ; preds = %.lr.ph612, %.loopexit
  %indvar662 = phi i32 [ 0, %.lr.ph612 ], [ %indvar.next663, %.loopexit ]
  %.4610.in = phi i32 [ %394, %.lr.ph612 ], [ %.4610, %.loopexit ]
  %.4610 = add nsw i32 %.4610.in, 1
  %407 = add i32 %397, %.4610
  %408 = add i32 %407, %396
  %.not520.not604 = icmp slt i32 %408, %395
  br i1 %.not520.not604, label %.lr.ph607, label %.loopexit

.lr.ph607:                                        ; preds = %406
  %409 = add i32 %396, %indvar662
  %410 = sub i32 %405, %409
  %411 = zext i32 %410 to i64
  %412 = shl nuw nsw i64 %411, 3
  %413 = add nuw nsw i64 %412, 8
  %414 = mul i32 %404, %indvar662
  %415 = add i32 %403, %414
  %416 = sext i32 %415 to i64
  %417 = shl nsw i64 %416, 3
  %scevgep664 = getelementptr i8, ptr %scevgep661, i64 %417
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep664, i8 0, i64 %413, i1 false), !tbaa !12
  br label %.loopexit

.loopexit544:                                     ; preds = %.loopexit, %391, %.loopexit546, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #6
  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 @xerbla_(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

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

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden <2 x float> @Cf(ptr noundef) local_unnamed_addr #3

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

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

declare void @cunmr2_(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 @cunm2r_(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 @cgeqr2_(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.smin.i32(i32, i32) #4

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

attributes #0 = { nounwind uwtable "min-legal-vector-width"="64" "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 = { inlinehint nounwind uwtable "min-legal-vector-width"="64" "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 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { 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 = !{!11, !11, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}


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