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

; 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 [9 x i8], align 1
@c__0 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @clamtsqr_(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) #0 {
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  store ptr %0, ptr %17, align 8, !tbaa !5
  store ptr %1, ptr %18, align 8, !tbaa !5
  store ptr %2, ptr %19, align 8, !tbaa !5
  store ptr %3, ptr %20, align 8, !tbaa !5
  store ptr %4, ptr %21, align 8, !tbaa !5
  store ptr %5, ptr %22, align 8, !tbaa !5
  store ptr %6, ptr %23, align 8, !tbaa !5
  store ptr %7, ptr %24, align 8, !tbaa !5
  store ptr %8, ptr %25, align 8, !tbaa !5
  store ptr %9, ptr %26, align 8, !tbaa !5
  store ptr %10, ptr %27, align 8, !tbaa !5
  store ptr %11, ptr %28, align 8, !tbaa !5
  store ptr %12, ptr %29, align 8, !tbaa !5
  store ptr %13, ptr %30, align 8, !tbaa !5
  store ptr %14, ptr %31, align 8, !tbaa !5
  store ptr %15, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #3
  %53 = load ptr, ptr %25, align 8, !tbaa !5
  %54 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %54, ptr %33, align 4, !tbaa !9
  %55 = load i32, ptr %33, align 4, !tbaa !9
  %56 = mul nsw i32 %55, 1
  %57 = add nsw i32 1, %56
  store i32 %57, ptr %34, align 4, !tbaa !9
  %58 = load i32, ptr %34, align 4, !tbaa !9
  %59 = load ptr, ptr %24, align 8, !tbaa !5
  %60 = sext i32 %58 to i64
  %61 = sub i64 0, %60
  %62 = getelementptr inbounds %struct.complex, ptr %59, i64 %61
  store ptr %62, ptr %24, align 8, !tbaa !5
  %63 = load ptr, ptr %27, align 8, !tbaa !5
  %64 = load i32, ptr %63, align 4, !tbaa !9
  store i32 %64, ptr %37, align 4, !tbaa !9
  %65 = load i32, ptr %37, align 4, !tbaa !9
  %66 = mul nsw i32 %65, 1
  %67 = add nsw i32 1, %66
  store i32 %67, ptr %38, align 4, !tbaa !9
  %68 = load i32, ptr %38, align 4, !tbaa !9
  %69 = load ptr, ptr %26, align 8, !tbaa !5
  %70 = sext i32 %68 to i64
  %71 = sub i64 0, %70
  %72 = getelementptr inbounds %struct.complex, ptr %69, i64 %71
  store ptr %72, ptr %26, align 8, !tbaa !5
  %73 = load ptr, ptr %29, align 8, !tbaa !5
  %74 = load i32, ptr %73, align 4, !tbaa !9
  store i32 %74, ptr %35, align 4, !tbaa !9
  %75 = load i32, ptr %35, align 4, !tbaa !9
  %76 = mul nsw i32 %75, 1
  %77 = add nsw i32 1, %76
  store i32 %77, ptr %36, align 4, !tbaa !9
  %78 = load i32, ptr %36, align 4, !tbaa !9
  %79 = load ptr, ptr %28, align 8, !tbaa !5
  %80 = sext i32 %78 to i64
  %81 = sub i64 0, %80
  %82 = getelementptr inbounds %struct.complex, ptr %79, i64 %81
  store ptr %82, ptr %28, align 8, !tbaa !5
  %83 = load ptr, ptr %30, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct.complex, ptr %83, i32 -1
  store ptr %84, ptr %30, align 8, !tbaa !5
  %85 = load ptr, ptr %31, align 8, !tbaa !5
  %86 = load i32, ptr %85, align 4, !tbaa !9
  %87 = icmp slt i32 %86, 0
  %88 = zext i1 %87 to i32
  store i32 %88, ptr %50, align 4, !tbaa !9
  %89 = load ptr, ptr %18, align 8, !tbaa !5
  %90 = call i32 @lsame_(ptr noundef %89, ptr noundef @.str)
  store i32 %90, ptr %49, align 4, !tbaa !9
  %91 = load ptr, ptr %18, align 8, !tbaa !5
  %92 = call i32 @lsame_(ptr noundef %91, ptr noundef @.str.1)
  store i32 %92, ptr %43, align 4, !tbaa !9
  %93 = load ptr, ptr %17, align 8, !tbaa !5
  %94 = call i32 @lsame_(ptr noundef %93, ptr noundef @.str.2)
  store i32 %94, ptr %42, align 4, !tbaa !9
  %95 = load ptr, ptr %17, align 8, !tbaa !5
  %96 = call i32 @lsame_(ptr noundef %95, ptr noundef @.str.3)
  store i32 %96, ptr %45, align 4, !tbaa !9
  %97 = load i32, ptr %42, align 4, !tbaa !9
  %98 = icmp ne i32 %97, 0
  br i1 %98, label %99, label %105

99:                                               ; preds = %16
  %100 = load ptr, ptr %20, align 8, !tbaa !5
  %101 = load i32, ptr %100, align 4, !tbaa !9
  %102 = load ptr, ptr %23, align 8, !tbaa !5
  %103 = load i32, ptr %102, align 4, !tbaa !9
  %104 = mul nsw i32 %101, %103
  store i32 %104, ptr %48, align 4, !tbaa !9
  br label %111

105:                                              ; preds = %16
  %106 = load ptr, ptr %19, align 8, !tbaa !5
  %107 = load i32, ptr %106, align 4, !tbaa !9
  %108 = load ptr, ptr %23, align 8, !tbaa !5
  %109 = load i32, ptr %108, align 4, !tbaa !9
  %110 = mul nsw i32 %107, %109
  store i32 %110, ptr %48, align 4, !tbaa !9
  br label %111

111:                                              ; preds = %105, %99
  %112 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 0, ptr %112, align 4, !tbaa !9
  %113 = load i32, ptr %42, align 4, !tbaa !9
  %114 = icmp ne i32 %113, 0
  br i1 %114, label %120, label %115

115:                                              ; preds = %111
  %116 = load i32, ptr %45, align 4, !tbaa !9
  %117 = icmp ne i32 %116, 0
  br i1 %117, label %120, label %118

118:                                              ; preds = %115
  %119 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -1, ptr %119, align 4, !tbaa !9
  br label %215

120:                                              ; preds = %115, %111
  %121 = load i32, ptr %43, align 4, !tbaa !9
  %122 = icmp ne i32 %121, 0
  br i1 %122, label %128, label %123

123:                                              ; preds = %120
  %124 = load i32, ptr %49, align 4, !tbaa !9
  %125 = icmp ne i32 %124, 0
  br i1 %125, label %128, label %126

126:                                              ; preds = %123
  %127 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -2, ptr %127, align 4, !tbaa !9
  br label %214

128:                                              ; preds = %123, %120
  %129 = load ptr, ptr %19, align 8, !tbaa !5
  %130 = load i32, ptr %129, align 4, !tbaa !9
  %131 = icmp slt i32 %130, 0
  br i1 %131, label %132, label %134

132:                                              ; preds = %128
  %133 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -3, ptr %133, align 4, !tbaa !9
  br label %213

134:                                              ; preds = %128
  %135 = load ptr, ptr %20, align 8, !tbaa !5
  %136 = load i32, ptr %135, align 4, !tbaa !9
  %137 = icmp slt i32 %136, 0
  br i1 %137, label %138, label %140

138:                                              ; preds = %134
  %139 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -4, ptr %139, align 4, !tbaa !9
  br label %212

140:                                              ; preds = %134
  %141 = load ptr, ptr %21, align 8, !tbaa !5
  %142 = load i32, ptr %141, align 4, !tbaa !9
  %143 = icmp slt i32 %142, 0
  br i1 %143, label %144, label %146

144:                                              ; preds = %140
  %145 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -5, ptr %145, align 4, !tbaa !9
  br label %211

146:                                              ; preds = %140
  %147 = load ptr, ptr %25, align 8, !tbaa !5
  %148 = load i32, ptr %147, align 4, !tbaa !9
  %149 = load ptr, ptr %21, align 8, !tbaa !5
  %150 = load i32, ptr %149, align 4, !tbaa !9
  %151 = icmp sge i32 1, %150
  br i1 %151, label %152, label %153

152:                                              ; preds = %146
  br label %156

153:                                              ; preds = %146
  %154 = load ptr, ptr %21, align 8, !tbaa !5
  %155 = load i32, ptr %154, align 4, !tbaa !9
  br label %156

156:                                              ; preds = %153, %152
  %157 = phi i32 [ 1, %152 ], [ %155, %153 ]
  %158 = icmp slt i32 %148, %157
  br i1 %158, label %159, label %161

159:                                              ; preds = %156
  %160 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -9, ptr %160, align 4, !tbaa !9
  br label %210

161:                                              ; preds = %156
  %162 = load ptr, ptr %27, align 8, !tbaa !5
  %163 = load i32, ptr %162, align 4, !tbaa !9
  %164 = load ptr, ptr %23, align 8, !tbaa !5
  %165 = load i32, ptr %164, align 4, !tbaa !9
  %166 = icmp sge i32 1, %165
  br i1 %166, label %167, label %168

167:                                              ; preds = %161
  br label %171

168:                                              ; preds = %161
  %169 = load ptr, ptr %23, align 8, !tbaa !5
  %170 = load i32, ptr %169, align 4, !tbaa !9
  br label %171

171:                                              ; preds = %168, %167
  %172 = phi i32 [ 1, %167 ], [ %170, %168 ]
  %173 = icmp slt i32 %163, %172
  br i1 %173, label %174, label %176

174:                                              ; preds = %171
  %175 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -11, ptr %175, align 4, !tbaa !9
  br label %209

176:                                              ; preds = %171
  %177 = load ptr, ptr %29, align 8, !tbaa !5
  %178 = load i32, ptr %177, align 4, !tbaa !9
  %179 = load ptr, ptr %19, align 8, !tbaa !5
  %180 = load i32, ptr %179, align 4, !tbaa !9
  %181 = icmp sge i32 1, %180
  br i1 %181, label %182, label %183

182:                                              ; preds = %176
  br label %186

183:                                              ; preds = %176
  %184 = load ptr, ptr %19, align 8, !tbaa !5
  %185 = load i32, ptr %184, align 4, !tbaa !9
  br label %186

186:                                              ; preds = %183, %182
  %187 = phi i32 [ 1, %182 ], [ %185, %183 ]
  %188 = icmp slt i32 %178, %187
  br i1 %188, label %189, label %191

189:                                              ; preds = %186
  %190 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -13, ptr %190, align 4, !tbaa !9
  br label %208

191:                                              ; preds = %186
  %192 = load ptr, ptr %31, align 8, !tbaa !5
  %193 = load i32, ptr %192, align 4, !tbaa !9
  %194 = load i32, ptr %48, align 4, !tbaa !9
  %195 = icmp sge i32 1, %194
  br i1 %195, label %196, label %197

196:                                              ; preds = %191
  br label %199

197:                                              ; preds = %191
  %198 = load i32, ptr %48, align 4, !tbaa !9
  br label %199

199:                                              ; preds = %197, %196
  %200 = phi i32 [ 1, %196 ], [ %198, %197 ]
  %201 = icmp slt i32 %193, %200
  br i1 %201, label %202, label %207

202:                                              ; preds = %199
  %203 = load i32, ptr %50, align 4, !tbaa !9
  %204 = icmp ne i32 %203, 0
  br i1 %204, label %207, label %205

205:                                              ; preds = %202
  %206 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -15, ptr %206, align 4, !tbaa !9
  br label %207

207:                                              ; preds = %205, %202, %199
  br label %208

208:                                              ; preds = %207, %189
  br label %209

209:                                              ; preds = %208, %174
  br label %210

210:                                              ; preds = %209, %159
  br label %211

211:                                              ; preds = %210, %144
  br label %212

212:                                              ; preds = %211, %138
  br label %213

213:                                              ; preds = %212, %132
  br label %214

214:                                              ; preds = %213, %126
  br label %215

215:                                              ; preds = %214, %118
  %216 = load ptr, ptr %32, align 8, !tbaa !5
  %217 = load i32, ptr %216, align 4, !tbaa !9
  %218 = icmp eq i32 %217, 0
  br i1 %218, label %219, label %228

219:                                              ; preds = %215
  %220 = load i32, ptr %48, align 4, !tbaa !9
  %221 = sitofp i32 %220 to float
  %222 = load ptr, ptr %30, align 8, !tbaa !5
  %223 = getelementptr inbounds %struct.complex, ptr %222, i64 1
  %224 = getelementptr inbounds %struct.complex, ptr %223, i32 0, i32 0
  store float %221, ptr %224, align 4, !tbaa !11
  %225 = load ptr, ptr %30, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.complex, ptr %225, i64 1
  %227 = getelementptr inbounds %struct.complex, ptr %226, i32 0, i32 1
  store float 0.000000e+00, ptr %227, align 4, !tbaa !14
  br label %228

228:                                              ; preds = %219, %215
  %229 = load ptr, ptr %32, align 8, !tbaa !5
  %230 = load i32, ptr %229, align 4, !tbaa !9
  %231 = icmp ne i32 %230, 0
  br i1 %231, label %232, label %237

232:                                              ; preds = %228
  %233 = load ptr, ptr %32, align 8, !tbaa !5
  %234 = load i32, ptr %233, align 4, !tbaa !9
  %235 = sub nsw i32 0, %234
  store i32 %235, ptr %39, align 4, !tbaa !9
  %236 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %39, i32 noundef 8)
  store i32 1, ptr %52, align 4
  br label %1064

237:                                              ; preds = %228
  %238 = load i32, ptr %50, align 4, !tbaa !9
  %239 = icmp ne i32 %238, 0
  br i1 %239, label %240, label %241

240:                                              ; preds = %237
  store i32 1, ptr %52, align 4
  br label %1064

241:                                              ; preds = %237
  br label %242

242:                                              ; preds = %241
  %243 = load ptr, ptr %19, align 8, !tbaa !5
  %244 = load i32, ptr %243, align 4, !tbaa !9
  %245 = load ptr, ptr %20, align 8, !tbaa !5
  %246 = load i32, ptr %245, align 4, !tbaa !9
  %247 = icmp sle i32 %244, %246
  br i1 %247, label %248, label %251

248:                                              ; preds = %242
  %249 = load ptr, ptr %19, align 8, !tbaa !5
  %250 = load i32, ptr %249, align 4, !tbaa !9
  br label %254

251:                                              ; preds = %242
  %252 = load ptr, ptr %20, align 8, !tbaa !5
  %253 = load i32, ptr %252, align 4, !tbaa !9
  br label %254

254:                                              ; preds = %251, %248
  %255 = phi i32 [ %250, %248 ], [ %253, %251 ]
  store i32 %255, ptr %39, align 4, !tbaa !9
  %256 = load i32, ptr %39, align 4, !tbaa !9
  %257 = load ptr, ptr %21, align 8, !tbaa !5
  %258 = load i32, ptr %257, align 4, !tbaa !9
  %259 = icmp sle i32 %256, %258
  br i1 %259, label %260, label %262

260:                                              ; preds = %254
  %261 = load i32, ptr %39, align 4, !tbaa !9
  br label %265

262:                                              ; preds = %254
  %263 = load ptr, ptr %21, align 8, !tbaa !5
  %264 = load i32, ptr %263, align 4, !tbaa !9
  br label %265

265:                                              ; preds = %262, %260
  %266 = phi i32 [ %261, %260 ], [ %264, %262 ]
  %267 = icmp eq i32 %266, 0
  br i1 %267, label %268, label %269

268:                                              ; preds = %265
  store i32 1, ptr %52, align 4
  br label %1064

269:                                              ; preds = %265
  %270 = load ptr, ptr %19, align 8, !tbaa !5
  %271 = load i32, ptr %270, align 4, !tbaa !9
  %272 = load ptr, ptr %20, align 8, !tbaa !5
  %273 = load i32, ptr %272, align 4, !tbaa !9
  %274 = icmp sge i32 %271, %273
  br i1 %274, label %275, label %278

275:                                              ; preds = %269
  %276 = load ptr, ptr %19, align 8, !tbaa !5
  %277 = load i32, ptr %276, align 4, !tbaa !9
  br label %281

278:                                              ; preds = %269
  %279 = load ptr, ptr %20, align 8, !tbaa !5
  %280 = load i32, ptr %279, align 4, !tbaa !9
  br label %281

281:                                              ; preds = %278, %275
  %282 = phi i32 [ %277, %275 ], [ %280, %278 ]
  store i32 %282, ptr %39, align 4, !tbaa !9
  %283 = load ptr, ptr %22, align 8, !tbaa !5
  %284 = load i32, ptr %283, align 4, !tbaa !9
  %285 = load ptr, ptr %21, align 8, !tbaa !5
  %286 = load i32, ptr %285, align 4, !tbaa !9
  %287 = icmp sle i32 %284, %286
  br i1 %287, label %303, label %288

288:                                              ; preds = %281
  %289 = load ptr, ptr %22, align 8, !tbaa !5
  %290 = load i32, ptr %289, align 4, !tbaa !9
  %291 = load i32, ptr %39, align 4, !tbaa !9
  %292 = load ptr, ptr %21, align 8, !tbaa !5
  %293 = load i32, ptr %292, align 4, !tbaa !9
  %294 = icmp sge i32 %291, %293
  br i1 %294, label %295, label %297

295:                                              ; preds = %288
  %296 = load i32, ptr %39, align 4, !tbaa !9
  br label %300

297:                                              ; preds = %288
  %298 = load ptr, ptr %21, align 8, !tbaa !5
  %299 = load i32, ptr %298, align 4, !tbaa !9
  br label %300

300:                                              ; preds = %297, %295
  %301 = phi i32 [ %296, %295 ], [ %299, %297 ]
  %302 = icmp sge i32 %290, %301
  br i1 %302, label %303, label %328

303:                                              ; preds = %300, %281
  %304 = load ptr, ptr %17, align 8, !tbaa !5
  %305 = load ptr, ptr %18, align 8, !tbaa !5
  %306 = load ptr, ptr %19, align 8, !tbaa !5
  %307 = load ptr, ptr %20, align 8, !tbaa !5
  %308 = load ptr, ptr %21, align 8, !tbaa !5
  %309 = load ptr, ptr %23, align 8, !tbaa !5
  %310 = load ptr, ptr %24, align 8, !tbaa !5
  %311 = load i32, ptr %34, align 4, !tbaa !9
  %312 = sext i32 %311 to i64
  %313 = getelementptr inbounds %struct.complex, ptr %310, i64 %312
  %314 = load ptr, ptr %25, align 8, !tbaa !5
  %315 = load ptr, ptr %26, align 8, !tbaa !5
  %316 = load i32, ptr %38, align 4, !tbaa !9
  %317 = sext i32 %316 to i64
  %318 = getelementptr inbounds %struct.complex, ptr %315, i64 %317
  %319 = load ptr, ptr %27, align 8, !tbaa !5
  %320 = load ptr, ptr %28, align 8, !tbaa !5
  %321 = load i32, ptr %36, align 4, !tbaa !9
  %322 = sext i32 %321 to i64
  %323 = getelementptr inbounds %struct.complex, ptr %320, i64 %322
  %324 = load ptr, ptr %29, align 8, !tbaa !5
  %325 = load ptr, ptr %30, align 8, !tbaa !5
  %326 = getelementptr inbounds %struct.complex, ptr %325, i64 1
  %327 = load ptr, ptr %32, align 8, !tbaa !5
  call void @cgemqrt_(ptr noundef %304, ptr noundef %305, ptr noundef %306, ptr noundef %307, ptr noundef %308, ptr noundef %309, ptr noundef %313, ptr noundef %314, ptr noundef %318, ptr noundef %319, ptr noundef %323, ptr noundef %324, ptr noundef %326, ptr noundef %327)
  store i32 1, ptr %52, align 4
  br label %1064

328:                                              ; preds = %300
  %329 = load i32, ptr %42, align 4, !tbaa !9
  %330 = icmp ne i32 %329, 0
  br i1 %330, label %331, label %515

331:                                              ; preds = %328
  %332 = load i32, ptr %49, align 4, !tbaa !9
  %333 = icmp ne i32 %332, 0
  br i1 %333, label %334, label %515

334:                                              ; preds = %331
  %335 = load ptr, ptr %19, align 8, !tbaa !5
  %336 = load i32, ptr %335, align 4, !tbaa !9
  %337 = load ptr, ptr %21, align 8, !tbaa !5
  %338 = load i32, ptr %337, align 4, !tbaa !9
  %339 = sub nsw i32 %336, %338
  %340 = load ptr, ptr %22, align 8, !tbaa !5
  %341 = load i32, ptr %340, align 4, !tbaa !9
  %342 = load ptr, ptr %21, align 8, !tbaa !5
  %343 = load i32, ptr %342, align 4, !tbaa !9
  %344 = sub nsw i32 %341, %343
  %345 = srem i32 %339, %344
  store i32 %345, ptr %47, align 4, !tbaa !9
  %346 = load ptr, ptr %19, align 8, !tbaa !5
  %347 = load i32, ptr %346, align 4, !tbaa !9
  %348 = load ptr, ptr %21, align 8, !tbaa !5
  %349 = load i32, ptr %348, align 4, !tbaa !9
  %350 = sub nsw i32 %347, %349
  %351 = load ptr, ptr %22, align 8, !tbaa !5
  %352 = load i32, ptr %351, align 4, !tbaa !9
  %353 = load ptr, ptr %21, align 8, !tbaa !5
  %354 = load i32, ptr %353, align 4, !tbaa !9
  %355 = sub nsw i32 %352, %354
  %356 = sdiv i32 %350, %355
  store i32 %356, ptr %51, align 4, !tbaa !9
  %357 = load i32, ptr %47, align 4, !tbaa !9
  %358 = icmp sgt i32 %357, 0
  br i1 %358, label %359, label %403

359:                                              ; preds = %334
  %360 = load ptr, ptr %19, align 8, !tbaa !5
  %361 = load i32, ptr %360, align 4, !tbaa !9
  %362 = load i32, ptr %47, align 4, !tbaa !9
  %363 = sub nsw i32 %361, %362
  %364 = add nsw i32 %363, 1
  store i32 %364, ptr %46, align 4, !tbaa !9
  %365 = load ptr, ptr %20, align 8, !tbaa !5
  %366 = load ptr, ptr %21, align 8, !tbaa !5
  %367 = load ptr, ptr %23, align 8, !tbaa !5
  %368 = load ptr, ptr %24, align 8, !tbaa !5
  %369 = load i32, ptr %46, align 4, !tbaa !9
  %370 = load i32, ptr %33, align 4, !tbaa !9
  %371 = add nsw i32 %369, %370
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds %struct.complex, ptr %368, i64 %372
  %374 = load ptr, ptr %25, align 8, !tbaa !5
  %375 = load ptr, ptr %26, align 8, !tbaa !5
  %376 = load i32, ptr %51, align 4, !tbaa !9
  %377 = load ptr, ptr %21, align 8, !tbaa !5
  %378 = load i32, ptr %377, align 4, !tbaa !9
  %379 = mul nsw i32 %376, %378
  %380 = add nsw i32 %379, 1
  %381 = load i32, ptr %37, align 4, !tbaa !9
  %382 = mul nsw i32 %380, %381
  %383 = add nsw i32 %382, 1
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds %struct.complex, ptr %375, i64 %384
  %386 = load ptr, ptr %27, align 8, !tbaa !5
  %387 = load ptr, ptr %28, align 8, !tbaa !5
  %388 = load i32, ptr %35, align 4, !tbaa !9
  %389 = add nsw i32 %388, 1
  %390 = sext i32 %389 to i64
  %391 = getelementptr inbounds %struct.complex, ptr %387, i64 %390
  %392 = load ptr, ptr %29, align 8, !tbaa !5
  %393 = load ptr, ptr %28, align 8, !tbaa !5
  %394 = load i32, ptr %46, align 4, !tbaa !9
  %395 = load i32, ptr %35, align 4, !tbaa !9
  %396 = add nsw i32 %394, %395
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds %struct.complex, ptr %393, i64 %397
  %399 = load ptr, ptr %29, align 8, !tbaa !5
  %400 = load ptr, ptr %30, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.complex, ptr %400, i64 1
  %402 = load ptr, ptr %32, align 8, !tbaa !5
  call void @ctpmqrt_(ptr noundef @.str.2, ptr noundef @.str, ptr noundef %47, ptr noundef %365, ptr noundef %366, ptr noundef @c__0, ptr noundef %367, ptr noundef %373, ptr noundef %374, ptr noundef %385, ptr noundef %386, ptr noundef %391, ptr noundef %392, ptr noundef %398, ptr noundef %399, ptr noundef %401, ptr noundef %402)
  br label %407

403:                                              ; preds = %334
  %404 = load ptr, ptr %19, align 8, !tbaa !5
  %405 = load i32, ptr %404, align 4, !tbaa !9
  %406 = add nsw i32 %405, 1
  store i32 %406, ptr %46, align 4, !tbaa !9
  br label %407

407:                                              ; preds = %403, %359
  %408 = load ptr, ptr %22, align 8, !tbaa !5
  %409 = load i32, ptr %408, align 4, !tbaa !9
  %410 = add nsw i32 %409, 1
  store i32 %410, ptr %39, align 4, !tbaa !9
  %411 = load ptr, ptr %22, align 8, !tbaa !5
  %412 = load i32, ptr %411, align 4, !tbaa !9
  %413 = load ptr, ptr %21, align 8, !tbaa !5
  %414 = load i32, ptr %413, align 4, !tbaa !9
  %415 = sub nsw i32 %412, %414
  %416 = sub nsw i32 0, %415
  store i32 %416, ptr %40, align 4, !tbaa !9
  %417 = load i32, ptr %46, align 4, !tbaa !9
  %418 = load ptr, ptr %22, align 8, !tbaa !5
  %419 = load i32, ptr %418, align 4, !tbaa !9
  %420 = load ptr, ptr %21, align 8, !tbaa !5
  %421 = load i32, ptr %420, align 4, !tbaa !9
  %422 = sub nsw i32 %419, %421
  %423 = sub nsw i32 %417, %422
  store i32 %423, ptr %44, align 4, !tbaa !9
  br label %424

424:                                              ; preds = %486, %407
  %425 = load i32, ptr %40, align 4, !tbaa !9
  %426 = icmp slt i32 %425, 0
  br i1 %426, label %427, label %432

427:                                              ; preds = %424
  %428 = load i32, ptr %44, align 4, !tbaa !9
  %429 = load i32, ptr %39, align 4, !tbaa !9
  %430 = icmp sge i32 %428, %429
  %431 = zext i1 %430 to i32
  br label %437

432:                                              ; preds = %424
  %433 = load i32, ptr %44, align 4, !tbaa !9
  %434 = load i32, ptr %39, align 4, !tbaa !9
  %435 = icmp sle i32 %433, %434
  %436 = zext i1 %435 to i32
  br label %437

437:                                              ; preds = %432, %427
  %438 = phi i32 [ %431, %427 ], [ %436, %432 ]
  %439 = icmp ne i32 %438, 0
  br i1 %439, label %440, label %490

440:                                              ; preds = %437
  %441 = load i32, ptr %51, align 4, !tbaa !9
  %442 = add nsw i32 %441, -1
  store i32 %442, ptr %51, align 4, !tbaa !9
  %443 = load ptr, ptr %22, align 8, !tbaa !5
  %444 = load i32, ptr %443, align 4, !tbaa !9
  %445 = load ptr, ptr %21, align 8, !tbaa !5
  %446 = load i32, ptr %445, align 4, !tbaa !9
  %447 = sub nsw i32 %444, %446
  store i32 %447, ptr %41, align 4, !tbaa !9
  %448 = load ptr, ptr %20, align 8, !tbaa !5
  %449 = load ptr, ptr %21, align 8, !tbaa !5
  %450 = load ptr, ptr %23, align 8, !tbaa !5
  %451 = load ptr, ptr %24, align 8, !tbaa !5
  %452 = load i32, ptr %44, align 4, !tbaa !9
  %453 = load i32, ptr %33, align 4, !tbaa !9
  %454 = add nsw i32 %452, %453
  %455 = sext i32 %454 to i64
  %456 = getelementptr inbounds %struct.complex, ptr %451, i64 %455
  %457 = load ptr, ptr %25, align 8, !tbaa !5
  %458 = load ptr, ptr %26, align 8, !tbaa !5
  %459 = load i32, ptr %51, align 4, !tbaa !9
  %460 = load ptr, ptr %21, align 8, !tbaa !5
  %461 = load i32, ptr %460, align 4, !tbaa !9
  %462 = mul nsw i32 %459, %461
  %463 = add nsw i32 %462, 1
  %464 = load i32, ptr %37, align 4, !tbaa !9
  %465 = mul nsw i32 %463, %464
  %466 = add nsw i32 %465, 1
  %467 = sext i32 %466 to i64
  %468 = getelementptr inbounds %struct.complex, ptr %458, i64 %467
  %469 = load ptr, ptr %27, align 8, !tbaa !5
  %470 = load ptr, ptr %28, align 8, !tbaa !5
  %471 = load i32, ptr %35, align 4, !tbaa !9
  %472 = add nsw i32 %471, 1
  %473 = sext i32 %472 to i64
  %474 = getelementptr inbounds %struct.complex, ptr %470, i64 %473
  %475 = load ptr, ptr %29, align 8, !tbaa !5
  %476 = load ptr, ptr %28, align 8, !tbaa !5
  %477 = load i32, ptr %44, align 4, !tbaa !9
  %478 = load i32, ptr %35, align 4, !tbaa !9
  %479 = add nsw i32 %477, %478
  %480 = sext i32 %479 to i64
  %481 = getelementptr inbounds %struct.complex, ptr %476, i64 %480
  %482 = load ptr, ptr %29, align 8, !tbaa !5
  %483 = load ptr, ptr %30, align 8, !tbaa !5
  %484 = getelementptr inbounds %struct.complex, ptr %483, i64 1
  %485 = load ptr, ptr %32, align 8, !tbaa !5
  call void @ctpmqrt_(ptr noundef @.str.2, ptr noundef @.str, ptr noundef %41, ptr noundef %448, ptr noundef %449, ptr noundef @c__0, ptr noundef %450, ptr noundef %456, ptr noundef %457, ptr noundef %468, ptr noundef %469, ptr noundef %474, ptr noundef %475, ptr noundef %481, ptr noundef %482, ptr noundef %484, ptr noundef %485)
  br label %486

486:                                              ; preds = %440
  %487 = load i32, ptr %40, align 4, !tbaa !9
  %488 = load i32, ptr %44, align 4, !tbaa !9
  %489 = add nsw i32 %488, %487
  store i32 %489, ptr %44, align 4, !tbaa !9
  br label %424, !llvm.loop !15

490:                                              ; preds = %437
  %491 = load ptr, ptr %22, align 8, !tbaa !5
  %492 = load ptr, ptr %20, align 8, !tbaa !5
  %493 = load ptr, ptr %21, align 8, !tbaa !5
  %494 = load ptr, ptr %23, align 8, !tbaa !5
  %495 = load ptr, ptr %24, align 8, !tbaa !5
  %496 = load i32, ptr %33, align 4, !tbaa !9
  %497 = add nsw i32 %496, 1
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds %struct.complex, ptr %495, i64 %498
  %500 = load ptr, ptr %25, align 8, !tbaa !5
  %501 = load ptr, ptr %26, align 8, !tbaa !5
  %502 = load i32, ptr %38, align 4, !tbaa !9
  %503 = sext i32 %502 to i64
  %504 = getelementptr inbounds %struct.complex, ptr %501, i64 %503
  %505 = load ptr, ptr %27, align 8, !tbaa !5
  %506 = load ptr, ptr %28, align 8, !tbaa !5
  %507 = load i32, ptr %35, align 4, !tbaa !9
  %508 = add nsw i32 %507, 1
  %509 = sext i32 %508 to i64
  %510 = getelementptr inbounds %struct.complex, ptr %506, i64 %509
  %511 = load ptr, ptr %29, align 8, !tbaa !5
  %512 = load ptr, ptr %30, align 8, !tbaa !5
  %513 = getelementptr inbounds %struct.complex, ptr %512, i64 1
  %514 = load ptr, ptr %32, align 8, !tbaa !5
  call void @cgemqrt_(ptr noundef @.str.2, ptr noundef @.str, ptr noundef %491, ptr noundef %492, ptr noundef %493, ptr noundef %494, ptr noundef %499, ptr noundef %500, ptr noundef %504, ptr noundef %505, ptr noundef %510, ptr noundef %511, ptr noundef %513, ptr noundef %514)
  br label %1055

515:                                              ; preds = %331, %328
  %516 = load i32, ptr %42, align 4, !tbaa !9
  %517 = icmp ne i32 %516, 0
  br i1 %517, label %518, label %688

518:                                              ; preds = %515
  %519 = load i32, ptr %43, align 4, !tbaa !9
  %520 = icmp ne i32 %519, 0
  br i1 %520, label %521, label %688

521:                                              ; preds = %518
  %522 = load ptr, ptr %19, align 8, !tbaa !5
  %523 = load i32, ptr %522, align 4, !tbaa !9
  %524 = load ptr, ptr %21, align 8, !tbaa !5
  %525 = load i32, ptr %524, align 4, !tbaa !9
  %526 = sub nsw i32 %523, %525
  %527 = load ptr, ptr %22, align 8, !tbaa !5
  %528 = load i32, ptr %527, align 4, !tbaa !9
  %529 = load ptr, ptr %21, align 8, !tbaa !5
  %530 = load i32, ptr %529, align 4, !tbaa !9
  %531 = sub nsw i32 %528, %530
  %532 = srem i32 %526, %531
  store i32 %532, ptr %47, align 4, !tbaa !9
  %533 = load ptr, ptr %19, align 8, !tbaa !5
  %534 = load i32, ptr %533, align 4, !tbaa !9
  %535 = load i32, ptr %47, align 4, !tbaa !9
  %536 = sub nsw i32 %534, %535
  %537 = add nsw i32 %536, 1
  store i32 %537, ptr %46, align 4, !tbaa !9
  store i32 1, ptr %51, align 4, !tbaa !9
  %538 = load ptr, ptr %22, align 8, !tbaa !5
  %539 = load ptr, ptr %20, align 8, !tbaa !5
  %540 = load ptr, ptr %21, align 8, !tbaa !5
  %541 = load ptr, ptr %23, align 8, !tbaa !5
  %542 = load ptr, ptr %24, align 8, !tbaa !5
  %543 = load i32, ptr %33, align 4, !tbaa !9
  %544 = add nsw i32 %543, 1
  %545 = sext i32 %544 to i64
  %546 = getelementptr inbounds %struct.complex, ptr %542, i64 %545
  %547 = load ptr, ptr %25, align 8, !tbaa !5
  %548 = load ptr, ptr %26, align 8, !tbaa !5
  %549 = load i32, ptr %38, align 4, !tbaa !9
  %550 = sext i32 %549 to i64
  %551 = getelementptr inbounds %struct.complex, ptr %548, i64 %550
  %552 = load ptr, ptr %27, align 8, !tbaa !5
  %553 = load ptr, ptr %28, align 8, !tbaa !5
  %554 = load i32, ptr %35, align 4, !tbaa !9
  %555 = add nsw i32 %554, 1
  %556 = sext i32 %555 to i64
  %557 = getelementptr inbounds %struct.complex, ptr %553, i64 %556
  %558 = load ptr, ptr %29, align 8, !tbaa !5
  %559 = load ptr, ptr %30, align 8, !tbaa !5
  %560 = getelementptr inbounds %struct.complex, ptr %559, i64 1
  %561 = load ptr, ptr %32, align 8, !tbaa !5
  call void @cgemqrt_(ptr noundef @.str.2, ptr noundef @.str.1, ptr noundef %538, ptr noundef %539, ptr noundef %540, ptr noundef %541, ptr noundef %546, ptr noundef %547, ptr noundef %551, ptr noundef %552, ptr noundef %557, ptr noundef %558, ptr noundef %560, ptr noundef %561)
  %562 = load i32, ptr %46, align 4, !tbaa !9
  %563 = load ptr, ptr %22, align 8, !tbaa !5
  %564 = load i32, ptr %563, align 4, !tbaa !9
  %565 = sub nsw i32 %562, %564
  %566 = load ptr, ptr %21, align 8, !tbaa !5
  %567 = load i32, ptr %566, align 4, !tbaa !9
  %568 = add nsw i32 %565, %567
  store i32 %568, ptr %40, align 4, !tbaa !9
  %569 = load ptr, ptr %22, align 8, !tbaa !5
  %570 = load i32, ptr %569, align 4, !tbaa !9
  %571 = load ptr, ptr %21, align 8, !tbaa !5
  %572 = load i32, ptr %571, align 4, !tbaa !9
  %573 = sub nsw i32 %570, %572
  store i32 %573, ptr %39, align 4, !tbaa !9
  %574 = load ptr, ptr %22, align 8, !tbaa !5
  %575 = load i32, ptr %574, align 4, !tbaa !9
  %576 = add nsw i32 %575, 1
  store i32 %576, ptr %44, align 4, !tbaa !9
  br label %577

577:                                              ; preds = %639, %521
  %578 = load i32, ptr %39, align 4, !tbaa !9
  %579 = icmp slt i32 %578, 0
  br i1 %579, label %580, label %585

580:                                              ; preds = %577
  %581 = load i32, ptr %44, align 4, !tbaa !9
  %582 = load i32, ptr %40, align 4, !tbaa !9
  %583 = icmp sge i32 %581, %582
  %584 = zext i1 %583 to i32
  br label %590

585:                                              ; preds = %577
  %586 = load i32, ptr %44, align 4, !tbaa !9
  %587 = load i32, ptr %40, align 4, !tbaa !9
  %588 = icmp sle i32 %586, %587
  %589 = zext i1 %588 to i32
  br label %590

590:                                              ; preds = %585, %580
  %591 = phi i32 [ %584, %580 ], [ %589, %585 ]
  %592 = icmp ne i32 %591, 0
  br i1 %592, label %593, label %643

593:                                              ; preds = %590
  %594 = load ptr, ptr %22, align 8, !tbaa !5
  %595 = load i32, ptr %594, align 4, !tbaa !9
  %596 = load ptr, ptr %21, align 8, !tbaa !5
  %597 = load i32, ptr %596, align 4, !tbaa !9
  %598 = sub nsw i32 %595, %597
  store i32 %598, ptr %41, align 4, !tbaa !9
  %599 = load ptr, ptr %20, align 8, !tbaa !5
  %600 = load ptr, ptr %21, align 8, !tbaa !5
  %601 = load ptr, ptr %23, align 8, !tbaa !5
  %602 = load ptr, ptr %24, align 8, !tbaa !5
  %603 = load i32, ptr %44, align 4, !tbaa !9
  %604 = load i32, ptr %33, align 4, !tbaa !9
  %605 = add nsw i32 %603, %604
  %606 = sext i32 %605 to i64
  %607 = getelementptr inbounds %struct.complex, ptr %602, i64 %606
  %608 = load ptr, ptr %25, align 8, !tbaa !5
  %609 = load ptr, ptr %26, align 8, !tbaa !5
  %610 = load i32, ptr %51, align 4, !tbaa !9
  %611 = load ptr, ptr %21, align 8, !tbaa !5
  %612 = load i32, ptr %611, align 4, !tbaa !9
  %613 = mul nsw i32 %610, %612
  %614 = add nsw i32 %613, 1
  %615 = load i32, ptr %37, align 4, !tbaa !9
  %616 = mul nsw i32 %614, %615
  %617 = add nsw i32 %616, 1
  %618 = sext i32 %617 to i64
  %619 = getelementptr inbounds %struct.complex, ptr %609, i64 %618
  %620 = load ptr, ptr %27, align 8, !tbaa !5
  %621 = load ptr, ptr %28, align 8, !tbaa !5
  %622 = load i32, ptr %35, align 4, !tbaa !9
  %623 = add nsw i32 %622, 1
  %624 = sext i32 %623 to i64
  %625 = getelementptr inbounds %struct.complex, ptr %621, i64 %624
  %626 = load ptr, ptr %29, align 8, !tbaa !5
  %627 = load ptr, ptr %28, align 8, !tbaa !5
  %628 = load i32, ptr %44, align 4, !tbaa !9
  %629 = load i32, ptr %35, align 4, !tbaa !9
  %630 = add nsw i32 %628, %629
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds %struct.complex, ptr %627, i64 %631
  %633 = load ptr, ptr %29, align 8, !tbaa !5
  %634 = load ptr, ptr %30, align 8, !tbaa !5
  %635 = getelementptr inbounds %struct.complex, ptr %634, i64 1
  %636 = load ptr, ptr %32, align 8, !tbaa !5
  call void @ctpmqrt_(ptr noundef @.str.2, ptr noundef @.str.1, ptr noundef %41, ptr noundef %599, ptr noundef %600, ptr noundef @c__0, ptr noundef %601, ptr noundef %607, ptr noundef %608, ptr noundef %619, ptr noundef %620, ptr noundef %625, ptr noundef %626, ptr noundef %632, ptr noundef %633, ptr noundef %635, ptr noundef %636)
  %637 = load i32, ptr %51, align 4, !tbaa !9
  %638 = add nsw i32 %637, 1
  store i32 %638, ptr %51, align 4, !tbaa !9
  br label %639

639:                                              ; preds = %593
  %640 = load i32, ptr %39, align 4, !tbaa !9
  %641 = load i32, ptr %44, align 4, !tbaa !9
  %642 = add nsw i32 %641, %640
  store i32 %642, ptr %44, align 4, !tbaa !9
  br label %577, !llvm.loop !17

643:                                              ; preds = %590
  %644 = load i32, ptr %46, align 4, !tbaa !9
  %645 = load ptr, ptr %19, align 8, !tbaa !5
  %646 = load i32, ptr %645, align 4, !tbaa !9
  %647 = icmp sle i32 %644, %646
  br i1 %647, label %648, label %687

648:                                              ; preds = %643
  %649 = load ptr, ptr %20, align 8, !tbaa !5
  %650 = load ptr, ptr %21, align 8, !tbaa !5
  %651 = load ptr, ptr %23, align 8, !tbaa !5
  %652 = load ptr, ptr %24, align 8, !tbaa !5
  %653 = load i32, ptr %46, align 4, !tbaa !9
  %654 = load i32, ptr %33, align 4, !tbaa !9
  %655 = add nsw i32 %653, %654
  %656 = sext i32 %655 to i64
  %657 = getelementptr inbounds %struct.complex, ptr %652, i64 %656
  %658 = load ptr, ptr %25, align 8, !tbaa !5
  %659 = load ptr, ptr %26, align 8, !tbaa !5
  %660 = load i32, ptr %51, align 4, !tbaa !9
  %661 = load ptr, ptr %21, align 8, !tbaa !5
  %662 = load i32, ptr %661, align 4, !tbaa !9
  %663 = mul nsw i32 %660, %662
  %664 = add nsw i32 %663, 1
  %665 = load i32, ptr %37, align 4, !tbaa !9
  %666 = mul nsw i32 %664, %665
  %667 = add nsw i32 %666, 1
  %668 = sext i32 %667 to i64
  %669 = getelementptr inbounds %struct.complex, ptr %659, i64 %668
  %670 = load ptr, ptr %27, align 8, !tbaa !5
  %671 = load ptr, ptr %28, align 8, !tbaa !5
  %672 = load i32, ptr %35, align 4, !tbaa !9
  %673 = add nsw i32 %672, 1
  %674 = sext i32 %673 to i64
  %675 = getelementptr inbounds %struct.complex, ptr %671, i64 %674
  %676 = load ptr, ptr %29, align 8, !tbaa !5
  %677 = load ptr, ptr %28, align 8, !tbaa !5
  %678 = load i32, ptr %46, align 4, !tbaa !9
  %679 = load i32, ptr %35, align 4, !tbaa !9
  %680 = add nsw i32 %678, %679
  %681 = sext i32 %680 to i64
  %682 = getelementptr inbounds %struct.complex, ptr %677, i64 %681
  %683 = load ptr, ptr %29, align 8, !tbaa !5
  %684 = load ptr, ptr %30, align 8, !tbaa !5
  %685 = getelementptr inbounds %struct.complex, ptr %684, i64 1
  %686 = load ptr, ptr %32, align 8, !tbaa !5
  call void @ctpmqrt_(ptr noundef @.str.2, ptr noundef @.str.1, ptr noundef %47, ptr noundef %649, ptr noundef %650, ptr noundef @c__0, ptr noundef %651, ptr noundef %657, ptr noundef %658, ptr noundef %669, ptr noundef %670, ptr noundef %675, ptr noundef %676, ptr noundef %682, ptr noundef %683, ptr noundef %685, ptr noundef %686)
  br label %687

687:                                              ; preds = %648, %643
  br label %1054

688:                                              ; preds = %518, %515
  %689 = load i32, ptr %45, align 4, !tbaa !9
  %690 = icmp ne i32 %689, 0
  br i1 %690, label %691, label %877

691:                                              ; preds = %688
  %692 = load i32, ptr %43, align 4, !tbaa !9
  %693 = icmp ne i32 %692, 0
  br i1 %693, label %694, label %877

694:                                              ; preds = %691
  %695 = load ptr, ptr %20, align 8, !tbaa !5
  %696 = load i32, ptr %695, align 4, !tbaa !9
  %697 = load ptr, ptr %21, align 8, !tbaa !5
  %698 = load i32, ptr %697, align 4, !tbaa !9
  %699 = sub nsw i32 %696, %698
  %700 = load ptr, ptr %22, align 8, !tbaa !5
  %701 = load i32, ptr %700, align 4, !tbaa !9
  %702 = load ptr, ptr %21, align 8, !tbaa !5
  %703 = load i32, ptr %702, align 4, !tbaa !9
  %704 = sub nsw i32 %701, %703
  %705 = srem i32 %699, %704
  store i32 %705, ptr %47, align 4, !tbaa !9
  %706 = load ptr, ptr %20, align 8, !tbaa !5
  %707 = load i32, ptr %706, align 4, !tbaa !9
  %708 = load ptr, ptr %21, align 8, !tbaa !5
  %709 = load i32, ptr %708, align 4, !tbaa !9
  %710 = sub nsw i32 %707, %709
  %711 = load ptr, ptr %22, align 8, !tbaa !5
  %712 = load i32, ptr %711, align 4, !tbaa !9
  %713 = load ptr, ptr %21, align 8, !tbaa !5
  %714 = load i32, ptr %713, align 4, !tbaa !9
  %715 = sub nsw i32 %712, %714
  %716 = sdiv i32 %710, %715
  store i32 %716, ptr %51, align 4, !tbaa !9
  %717 = load i32, ptr %47, align 4, !tbaa !9
  %718 = icmp sgt i32 %717, 0
  br i1 %718, label %719, label %764

719:                                              ; preds = %694
  %720 = load ptr, ptr %20, align 8, !tbaa !5
  %721 = load i32, ptr %720, align 4, !tbaa !9
  %722 = load i32, ptr %47, align 4, !tbaa !9
  %723 = sub nsw i32 %721, %722
  %724 = add nsw i32 %723, 1
  store i32 %724, ptr %46, align 4, !tbaa !9
  %725 = load ptr, ptr %19, align 8, !tbaa !5
  %726 = load ptr, ptr %21, align 8, !tbaa !5
  %727 = load ptr, ptr %23, align 8, !tbaa !5
  %728 = load ptr, ptr %24, align 8, !tbaa !5
  %729 = load i32, ptr %46, align 4, !tbaa !9
  %730 = load i32, ptr %33, align 4, !tbaa !9
  %731 = add nsw i32 %729, %730
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds %struct.complex, ptr %728, i64 %732
  %734 = load ptr, ptr %25, align 8, !tbaa !5
  %735 = load ptr, ptr %26, align 8, !tbaa !5
  %736 = load i32, ptr %51, align 4, !tbaa !9
  %737 = load ptr, ptr %21, align 8, !tbaa !5
  %738 = load i32, ptr %737, align 4, !tbaa !9
  %739 = mul nsw i32 %736, %738
  %740 = add nsw i32 %739, 1
  %741 = load i32, ptr %37, align 4, !tbaa !9
  %742 = mul nsw i32 %740, %741
  %743 = add nsw i32 %742, 1
  %744 = sext i32 %743 to i64
  %745 = getelementptr inbounds %struct.complex, ptr %735, i64 %744
  %746 = load ptr, ptr %27, align 8, !tbaa !5
  %747 = load ptr, ptr %28, align 8, !tbaa !5
  %748 = load i32, ptr %35, align 4, !tbaa !9
  %749 = add nsw i32 %748, 1
  %750 = sext i32 %749 to i64
  %751 = getelementptr inbounds %struct.complex, ptr %747, i64 %750
  %752 = load ptr, ptr %29, align 8, !tbaa !5
  %753 = load ptr, ptr %28, align 8, !tbaa !5
  %754 = load i32, ptr %46, align 4, !tbaa !9
  %755 = load i32, ptr %35, align 4, !tbaa !9
  %756 = mul nsw i32 %754, %755
  %757 = add nsw i32 %756, 1
  %758 = sext i32 %757 to i64
  %759 = getelementptr inbounds %struct.complex, ptr %753, i64 %758
  %760 = load ptr, ptr %29, align 8, !tbaa !5
  %761 = load ptr, ptr %30, align 8, !tbaa !5
  %762 = getelementptr inbounds %struct.complex, ptr %761, i64 1
  %763 = load ptr, ptr %32, align 8, !tbaa !5
  call void @ctpmqrt_(ptr noundef @.str.3, ptr noundef @.str.1, ptr noundef %725, ptr noundef %47, ptr noundef %726, ptr noundef @c__0, ptr noundef %727, ptr noundef %733, ptr noundef %734, ptr noundef %745, ptr noundef %746, ptr noundef %751, ptr noundef %752, ptr noundef %759, ptr noundef %760, ptr noundef %762, ptr noundef %763)
  br label %768

764:                                              ; preds = %694
  %765 = load ptr, ptr %20, align 8, !tbaa !5
  %766 = load i32, ptr %765, align 4, !tbaa !9
  %767 = add nsw i32 %766, 1
  store i32 %767, ptr %46, align 4, !tbaa !9
  br label %768

768:                                              ; preds = %764, %719
  %769 = load ptr, ptr %22, align 8, !tbaa !5
  %770 = load i32, ptr %769, align 4, !tbaa !9
  %771 = add nsw i32 %770, 1
  store i32 %771, ptr %39, align 4, !tbaa !9
  %772 = load ptr, ptr %22, align 8, !tbaa !5
  %773 = load i32, ptr %772, align 4, !tbaa !9
  %774 = load ptr, ptr %21, align 8, !tbaa !5
  %775 = load i32, ptr %774, align 4, !tbaa !9
  %776 = sub nsw i32 %773, %775
  %777 = sub nsw i32 0, %776
  store i32 %777, ptr %40, align 4, !tbaa !9
  %778 = load i32, ptr %46, align 4, !tbaa !9
  %779 = load ptr, ptr %22, align 8, !tbaa !5
  %780 = load i32, ptr %779, align 4, !tbaa !9
  %781 = load ptr, ptr %21, align 8, !tbaa !5
  %782 = load i32, ptr %781, align 4, !tbaa !9
  %783 = sub nsw i32 %780, %782
  %784 = sub nsw i32 %778, %783
  store i32 %784, ptr %44, align 4, !tbaa !9
  br label %785

785:                                              ; preds = %848, %768
  %786 = load i32, ptr %40, align 4, !tbaa !9
  %787 = icmp slt i32 %786, 0
  br i1 %787, label %788, label %793

788:                                              ; preds = %785
  %789 = load i32, ptr %44, align 4, !tbaa !9
  %790 = load i32, ptr %39, align 4, !tbaa !9
  %791 = icmp sge i32 %789, %790
  %792 = zext i1 %791 to i32
  br label %798

793:                                              ; preds = %785
  %794 = load i32, ptr %44, align 4, !tbaa !9
  %795 = load i32, ptr %39, align 4, !tbaa !9
  %796 = icmp sle i32 %794, %795
  %797 = zext i1 %796 to i32
  br label %798

798:                                              ; preds = %793, %788
  %799 = phi i32 [ %792, %788 ], [ %797, %793 ]
  %800 = icmp ne i32 %799, 0
  br i1 %800, label %801, label %852

801:                                              ; preds = %798
  %802 = load i32, ptr %51, align 4, !tbaa !9
  %803 = add nsw i32 %802, -1
  store i32 %803, ptr %51, align 4, !tbaa !9
  %804 = load ptr, ptr %22, align 8, !tbaa !5
  %805 = load i32, ptr %804, align 4, !tbaa !9
  %806 = load ptr, ptr %21, align 8, !tbaa !5
  %807 = load i32, ptr %806, align 4, !tbaa !9
  %808 = sub nsw i32 %805, %807
  store i32 %808, ptr %41, align 4, !tbaa !9
  %809 = load ptr, ptr %19, align 8, !tbaa !5
  %810 = load ptr, ptr %21, align 8, !tbaa !5
  %811 = load ptr, ptr %23, align 8, !tbaa !5
  %812 = load ptr, ptr %24, align 8, !tbaa !5
  %813 = load i32, ptr %44, align 4, !tbaa !9
  %814 = load i32, ptr %33, align 4, !tbaa !9
  %815 = add nsw i32 %813, %814
  %816 = sext i32 %815 to i64
  %817 = getelementptr inbounds %struct.complex, ptr %812, i64 %816
  %818 = load ptr, ptr %25, align 8, !tbaa !5
  %819 = load ptr, ptr %26, align 8, !tbaa !5
  %820 = load i32, ptr %51, align 4, !tbaa !9
  %821 = load ptr, ptr %21, align 8, !tbaa !5
  %822 = load i32, ptr %821, align 4, !tbaa !9
  %823 = mul nsw i32 %820, %822
  %824 = add nsw i32 %823, 1
  %825 = load i32, ptr %37, align 4, !tbaa !9
  %826 = mul nsw i32 %824, %825
  %827 = add nsw i32 %826, 1
  %828 = sext i32 %827 to i64
  %829 = getelementptr inbounds %struct.complex, ptr %819, i64 %828
  %830 = load ptr, ptr %27, align 8, !tbaa !5
  %831 = load ptr, ptr %28, align 8, !tbaa !5
  %832 = load i32, ptr %35, align 4, !tbaa !9
  %833 = add nsw i32 %832, 1
  %834 = sext i32 %833 to i64
  %835 = getelementptr inbounds %struct.complex, ptr %831, i64 %834
  %836 = load ptr, ptr %29, align 8, !tbaa !5
  %837 = load ptr, ptr %28, align 8, !tbaa !5
  %838 = load i32, ptr %44, align 4, !tbaa !9
  %839 = load i32, ptr %35, align 4, !tbaa !9
  %840 = mul nsw i32 %838, %839
  %841 = add nsw i32 %840, 1
  %842 = sext i32 %841 to i64
  %843 = getelementptr inbounds %struct.complex, ptr %837, i64 %842
  %844 = load ptr, ptr %29, align 8, !tbaa !5
  %845 = load ptr, ptr %30, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.complex, ptr %845, i64 1
  %847 = load ptr, ptr %32, align 8, !tbaa !5
  call void @ctpmqrt_(ptr noundef @.str.3, ptr noundef @.str.1, ptr noundef %809, ptr noundef %41, ptr noundef %810, ptr noundef @c__0, ptr noundef %811, ptr noundef %817, ptr noundef %818, ptr noundef %829, ptr noundef %830, ptr noundef %835, ptr noundef %836, ptr noundef %843, ptr noundef %844, ptr noundef %846, ptr noundef %847)
  br label %848

848:                                              ; preds = %801
  %849 = load i32, ptr %40, align 4, !tbaa !9
  %850 = load i32, ptr %44, align 4, !tbaa !9
  %851 = add nsw i32 %850, %849
  store i32 %851, ptr %44, align 4, !tbaa !9
  br label %785, !llvm.loop !18

852:                                              ; preds = %798
  %853 = load ptr, ptr %19, align 8, !tbaa !5
  %854 = load ptr, ptr %22, align 8, !tbaa !5
  %855 = load ptr, ptr %21, align 8, !tbaa !5
  %856 = load ptr, ptr %23, align 8, !tbaa !5
  %857 = load ptr, ptr %24, align 8, !tbaa !5
  %858 = load i32, ptr %33, align 4, !tbaa !9
  %859 = add nsw i32 %858, 1
  %860 = sext i32 %859 to i64
  %861 = getelementptr inbounds %struct.complex, ptr %857, i64 %860
  %862 = load ptr, ptr %25, align 8, !tbaa !5
  %863 = load ptr, ptr %26, align 8, !tbaa !5
  %864 = load i32, ptr %38, align 4, !tbaa !9
  %865 = sext i32 %864 to i64
  %866 = getelementptr inbounds %struct.complex, ptr %863, i64 %865
  %867 = load ptr, ptr %27, align 8, !tbaa !5
  %868 = load ptr, ptr %28, align 8, !tbaa !5
  %869 = load i32, ptr %35, align 4, !tbaa !9
  %870 = add nsw i32 %869, 1
  %871 = sext i32 %870 to i64
  %872 = getelementptr inbounds %struct.complex, ptr %868, i64 %871
  %873 = load ptr, ptr %29, align 8, !tbaa !5
  %874 = load ptr, ptr %30, align 8, !tbaa !5
  %875 = getelementptr inbounds %struct.complex, ptr %874, i64 1
  %876 = load ptr, ptr %32, align 8, !tbaa !5
  call void @cgemqrt_(ptr noundef @.str.3, ptr noundef @.str.1, ptr noundef %853, ptr noundef %854, ptr noundef %855, ptr noundef %856, ptr noundef %861, ptr noundef %862, ptr noundef %866, ptr noundef %867, ptr noundef %872, ptr noundef %873, ptr noundef %875, ptr noundef %876)
  br label %1053

877:                                              ; preds = %691, %688
  %878 = load i32, ptr %45, align 4, !tbaa !9
  %879 = icmp ne i32 %878, 0
  br i1 %879, label %880, label %1052

880:                                              ; preds = %877
  %881 = load i32, ptr %49, align 4, !tbaa !9
  %882 = icmp ne i32 %881, 0
  br i1 %882, label %883, label %1052

883:                                              ; preds = %880
  %884 = load ptr, ptr %20, align 8, !tbaa !5
  %885 = load i32, ptr %884, align 4, !tbaa !9
  %886 = load ptr, ptr %21, align 8, !tbaa !5
  %887 = load i32, ptr %886, align 4, !tbaa !9
  %888 = sub nsw i32 %885, %887
  %889 = load ptr, ptr %22, align 8, !tbaa !5
  %890 = load i32, ptr %889, align 4, !tbaa !9
  %891 = load ptr, ptr %21, align 8, !tbaa !5
  %892 = load i32, ptr %891, align 4, !tbaa !9
  %893 = sub nsw i32 %890, %892
  %894 = srem i32 %888, %893
  store i32 %894, ptr %47, align 4, !tbaa !9
  %895 = load ptr, ptr %20, align 8, !tbaa !5
  %896 = load i32, ptr %895, align 4, !tbaa !9
  %897 = load i32, ptr %47, align 4, !tbaa !9
  %898 = sub nsw i32 %896, %897
  %899 = add nsw i32 %898, 1
  store i32 %899, ptr %46, align 4, !tbaa !9
  store i32 1, ptr %51, align 4, !tbaa !9
  %900 = load ptr, ptr %19, align 8, !tbaa !5
  %901 = load ptr, ptr %22, align 8, !tbaa !5
  %902 = load ptr, ptr %21, align 8, !tbaa !5
  %903 = load ptr, ptr %23, align 8, !tbaa !5
  %904 = load ptr, ptr %24, align 8, !tbaa !5
  %905 = load i32, ptr %33, align 4, !tbaa !9
  %906 = add nsw i32 %905, 1
  %907 = sext i32 %906 to i64
  %908 = getelementptr inbounds %struct.complex, ptr %904, i64 %907
  %909 = load ptr, ptr %25, align 8, !tbaa !5
  %910 = load ptr, ptr %26, align 8, !tbaa !5
  %911 = load i32, ptr %38, align 4, !tbaa !9
  %912 = sext i32 %911 to i64
  %913 = getelementptr inbounds %struct.complex, ptr %910, i64 %912
  %914 = load ptr, ptr %27, align 8, !tbaa !5
  %915 = load ptr, ptr %28, align 8, !tbaa !5
  %916 = load i32, ptr %35, align 4, !tbaa !9
  %917 = add nsw i32 %916, 1
  %918 = sext i32 %917 to i64
  %919 = getelementptr inbounds %struct.complex, ptr %915, i64 %918
  %920 = load ptr, ptr %29, align 8, !tbaa !5
  %921 = load ptr, ptr %30, align 8, !tbaa !5
  %922 = getelementptr inbounds %struct.complex, ptr %921, i64 1
  %923 = load ptr, ptr %32, align 8, !tbaa !5
  call void @cgemqrt_(ptr noundef @.str.3, ptr noundef @.str, ptr noundef %900, ptr noundef %901, ptr noundef %902, ptr noundef %903, ptr noundef %908, ptr noundef %909, ptr noundef %913, ptr noundef %914, ptr noundef %919, ptr noundef %920, ptr noundef %922, ptr noundef %923)
  %924 = load i32, ptr %46, align 4, !tbaa !9
  %925 = load ptr, ptr %22, align 8, !tbaa !5
  %926 = load i32, ptr %925, align 4, !tbaa !9
  %927 = sub nsw i32 %924, %926
  %928 = load ptr, ptr %21, align 8, !tbaa !5
  %929 = load i32, ptr %928, align 4, !tbaa !9
  %930 = add nsw i32 %927, %929
  store i32 %930, ptr %40, align 4, !tbaa !9
  %931 = load ptr, ptr %22, align 8, !tbaa !5
  %932 = load i32, ptr %931, align 4, !tbaa !9
  %933 = load ptr, ptr %21, align 8, !tbaa !5
  %934 = load i32, ptr %933, align 4, !tbaa !9
  %935 = sub nsw i32 %932, %934
  store i32 %935, ptr %39, align 4, !tbaa !9
  %936 = load ptr, ptr %22, align 8, !tbaa !5
  %937 = load i32, ptr %936, align 4, !tbaa !9
  %938 = add nsw i32 %937, 1
  store i32 %938, ptr %44, align 4, !tbaa !9
  br label %939

939:                                              ; preds = %1002, %883
  %940 = load i32, ptr %39, align 4, !tbaa !9
  %941 = icmp slt i32 %940, 0
  br i1 %941, label %942, label %947

942:                                              ; preds = %939
  %943 = load i32, ptr %44, align 4, !tbaa !9
  %944 = load i32, ptr %40, align 4, !tbaa !9
  %945 = icmp sge i32 %943, %944
  %946 = zext i1 %945 to i32
  br label %952

947:                                              ; preds = %939
  %948 = load i32, ptr %44, align 4, !tbaa !9
  %949 = load i32, ptr %40, align 4, !tbaa !9
  %950 = icmp sle i32 %948, %949
  %951 = zext i1 %950 to i32
  br label %952

952:                                              ; preds = %947, %942
  %953 = phi i32 [ %946, %942 ], [ %951, %947 ]
  %954 = icmp ne i32 %953, 0
  br i1 %954, label %955, label %1006

955:                                              ; preds = %952
  %956 = load ptr, ptr %22, align 8, !tbaa !5
  %957 = load i32, ptr %956, align 4, !tbaa !9
  %958 = load ptr, ptr %21, align 8, !tbaa !5
  %959 = load i32, ptr %958, align 4, !tbaa !9
  %960 = sub nsw i32 %957, %959
  store i32 %960, ptr %41, align 4, !tbaa !9
  %961 = load ptr, ptr %19, align 8, !tbaa !5
  %962 = load ptr, ptr %21, align 8, !tbaa !5
  %963 = load ptr, ptr %23, align 8, !tbaa !5
  %964 = load ptr, ptr %24, align 8, !tbaa !5
  %965 = load i32, ptr %44, align 4, !tbaa !9
  %966 = load i32, ptr %33, align 4, !tbaa !9
  %967 = add nsw i32 %965, %966
  %968 = sext i32 %967 to i64
  %969 = getelementptr inbounds %struct.complex, ptr %964, i64 %968
  %970 = load ptr, ptr %25, align 8, !tbaa !5
  %971 = load ptr, ptr %26, align 8, !tbaa !5
  %972 = load i32, ptr %51, align 4, !tbaa !9
  %973 = load ptr, ptr %21, align 8, !tbaa !5
  %974 = load i32, ptr %973, align 4, !tbaa !9
  %975 = mul nsw i32 %972, %974
  %976 = add nsw i32 %975, 1
  %977 = load i32, ptr %37, align 4, !tbaa !9
  %978 = mul nsw i32 %976, %977
  %979 = add nsw i32 %978, 1
  %980 = sext i32 %979 to i64
  %981 = getelementptr inbounds %struct.complex, ptr %971, i64 %980
  %982 = load ptr, ptr %27, align 8, !tbaa !5
  %983 = load ptr, ptr %28, align 8, !tbaa !5
  %984 = load i32, ptr %35, align 4, !tbaa !9
  %985 = add nsw i32 %984, 1
  %986 = sext i32 %985 to i64
  %987 = getelementptr inbounds %struct.complex, ptr %983, i64 %986
  %988 = load ptr, ptr %29, align 8, !tbaa !5
  %989 = load ptr, ptr %28, align 8, !tbaa !5
  %990 = load i32, ptr %44, align 4, !tbaa !9
  %991 = load i32, ptr %35, align 4, !tbaa !9
  %992 = mul nsw i32 %990, %991
  %993 = add nsw i32 %992, 1
  %994 = sext i32 %993 to i64
  %995 = getelementptr inbounds %struct.complex, ptr %989, i64 %994
  %996 = load ptr, ptr %29, align 8, !tbaa !5
  %997 = load ptr, ptr %30, align 8, !tbaa !5
  %998 = getelementptr inbounds %struct.complex, ptr %997, i64 1
  %999 = load ptr, ptr %32, align 8, !tbaa !5
  call void @ctpmqrt_(ptr noundef @.str.3, ptr noundef @.str, ptr noundef %961, ptr noundef %41, ptr noundef %962, ptr noundef @c__0, ptr noundef %963, ptr noundef %969, ptr noundef %970, ptr noundef %981, ptr noundef %982, ptr noundef %987, ptr noundef %988, ptr noundef %995, ptr noundef %996, ptr noundef %998, ptr noundef %999)
  %1000 = load i32, ptr %51, align 4, !tbaa !9
  %1001 = add nsw i32 %1000, 1
  store i32 %1001, ptr %51, align 4, !tbaa !9
  br label %1002

1002:                                             ; preds = %955
  %1003 = load i32, ptr %39, align 4, !tbaa !9
  %1004 = load i32, ptr %44, align 4, !tbaa !9
  %1005 = add nsw i32 %1004, %1003
  store i32 %1005, ptr %44, align 4, !tbaa !9
  br label %939, !llvm.loop !19

1006:                                             ; preds = %952
  %1007 = load i32, ptr %46, align 4, !tbaa !9
  %1008 = load ptr, ptr %20, align 8, !tbaa !5
  %1009 = load i32, ptr %1008, align 4, !tbaa !9
  %1010 = icmp sle i32 %1007, %1009
  br i1 %1010, label %1011, label %1051

1011:                                             ; preds = %1006
  %1012 = load ptr, ptr %19, align 8, !tbaa !5
  %1013 = load ptr, ptr %21, align 8, !tbaa !5
  %1014 = load ptr, ptr %23, align 8, !tbaa !5
  %1015 = load ptr, ptr %24, align 8, !tbaa !5
  %1016 = load i32, ptr %46, align 4, !tbaa !9
  %1017 = load i32, ptr %33, align 4, !tbaa !9
  %1018 = add nsw i32 %1016, %1017
  %1019 = sext i32 %1018 to i64
  %1020 = getelementptr inbounds %struct.complex, ptr %1015, i64 %1019
  %1021 = load ptr, ptr %25, align 8, !tbaa !5
  %1022 = load ptr, ptr %26, align 8, !tbaa !5
  %1023 = load i32, ptr %51, align 4, !tbaa !9
  %1024 = load ptr, ptr %21, align 8, !tbaa !5
  %1025 = load i32, ptr %1024, align 4, !tbaa !9
  %1026 = mul nsw i32 %1023, %1025
  %1027 = add nsw i32 %1026, 1
  %1028 = load i32, ptr %37, align 4, !tbaa !9
  %1029 = mul nsw i32 %1027, %1028
  %1030 = add nsw i32 %1029, 1
  %1031 = sext i32 %1030 to i64
  %1032 = getelementptr inbounds %struct.complex, ptr %1022, i64 %1031
  %1033 = load ptr, ptr %27, align 8, !tbaa !5
  %1034 = load ptr, ptr %28, align 8, !tbaa !5
  %1035 = load i32, ptr %35, align 4, !tbaa !9
  %1036 = add nsw i32 %1035, 1
  %1037 = sext i32 %1036 to i64
  %1038 = getelementptr inbounds %struct.complex, ptr %1034, i64 %1037
  %1039 = load ptr, ptr %29, align 8, !tbaa !5
  %1040 = load ptr, ptr %28, align 8, !tbaa !5
  %1041 = load i32, ptr %46, align 4, !tbaa !9
  %1042 = load i32, ptr %35, align 4, !tbaa !9
  %1043 = mul nsw i32 %1041, %1042
  %1044 = add nsw i32 %1043, 1
  %1045 = sext i32 %1044 to i64
  %1046 = getelementptr inbounds %struct.complex, ptr %1040, i64 %1045
  %1047 = load ptr, ptr %29, align 8, !tbaa !5
  %1048 = load ptr, ptr %30, align 8, !tbaa !5
  %1049 = getelementptr inbounds %struct.complex, ptr %1048, i64 1
  %1050 = load ptr, ptr %32, align 8, !tbaa !5
  call void @ctpmqrt_(ptr noundef @.str.3, ptr noundef @.str, ptr noundef %1012, ptr noundef %47, ptr noundef %1013, ptr noundef @c__0, ptr noundef %1014, ptr noundef %1020, ptr noundef %1021, ptr noundef %1032, ptr noundef %1033, ptr noundef %1038, ptr noundef %1039, ptr noundef %1046, ptr noundef %1047, ptr noundef %1049, ptr noundef %1050)
  br label %1051

1051:                                             ; preds = %1011, %1006
  br label %1052

1052:                                             ; preds = %1051, %880, %877
  br label %1053

1053:                                             ; preds = %1052, %852
  br label %1054

1054:                                             ; preds = %1053, %687
  br label %1055

1055:                                             ; preds = %1054, %490
  %1056 = load i32, ptr %48, align 4, !tbaa !9
  %1057 = sitofp i32 %1056 to float
  %1058 = load ptr, ptr %30, align 8, !tbaa !5
  %1059 = getelementptr inbounds %struct.complex, ptr %1058, i64 1
  %1060 = getelementptr inbounds %struct.complex, ptr %1059, i32 0, i32 0
  store float %1057, ptr %1060, align 4, !tbaa !11
  %1061 = load ptr, ptr %30, align 8, !tbaa !5
  %1062 = getelementptr inbounds %struct.complex, ptr %1061, i64 1
  %1063 = getelementptr inbounds %struct.complex, ptr %1062, i32 0, i32 1
  store float 0.000000e+00, ptr %1063, align 4, !tbaa !14
  store i32 1, ptr %52, align 4
  br label %1064

1064:                                             ; preds = %1055, %303, %268, %240, %232
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  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 @cgemqrt_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

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


; 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 [9 x i8], align 1
@c__0 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @clamtsqr_(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 nocapture noundef readonly %14, ptr noundef %15) local_unnamed_addr #0 {
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #4
  %20 = load i32, ptr %8, align 4, !tbaa !5
  %narrow = xor i32 %20, -1
  %21 = sext i32 %narrow to i64
  %22 = getelementptr inbounds %struct.complex, ptr %7, i64 %21
  %23 = load i32, ptr %10, align 4, !tbaa !5
  %narrow468 = xor i32 %23, -1
  %24 = sext i32 %narrow468 to i64
  %25 = getelementptr inbounds %struct.complex, ptr %9, i64 %24
  %26 = load i32, ptr %12, align 4, !tbaa !5
  %narrow469 = xor i32 %26, -1
  %27 = sext i32 %narrow469 to i64
  %28 = getelementptr inbounds %struct.complex, ptr %11, i64 %27
  %29 = load i32, ptr %14, align 4, !tbaa !5
  %30 = icmp slt i32 %29, 0
  %31 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #4
  %32 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #4
  %33 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #4
  %34 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #4
  %35 = icmp ne i32 %33, 0
  %36 = load i32, ptr %6, align 4, !tbaa !5
  br i1 %35, label %.thread, label %39

.thread:                                          ; preds = %16
  %37 = load i32, ptr %3, align 4, !tbaa !5
  store i32 0, ptr %15, align 4, !tbaa !5
  %38 = icmp ne i32 %34, 0
  br label %41

39:                                               ; preds = %16
  %40 = load i32, ptr %2, align 4, !tbaa !5
  store i32 0, ptr %15, align 4, !tbaa !5
  %.not = icmp eq i32 %34, 0
  br i1 %.not, label %.thread478, label %41

41:                                               ; preds = %.thread, %39
  %42 = phi i1 [ %38, %.thread ], [ true, %39 ]
  %.pn = phi i32 [ %37, %.thread ], [ %40, %39 ]
  %.0433476 = mul nsw i32 %36, %.pn
  %43 = icmp ne i32 %32, 0
  %44 = icmp ne i32 %31, 0
  %or.cond3 = select i1 %43, i1 true, i1 %44
  br i1 %or.cond3, label %45, label %.thread478

45:                                               ; preds = %41
  %46 = load i32, ptr %2, align 4, !tbaa !5
  %47 = icmp slt i32 %46, 0
  br i1 %47, label %.thread478, label %48

48:                                               ; preds = %45
  %49 = load i32, ptr %3, align 4, !tbaa !5
  %50 = icmp slt i32 %49, 0
  br i1 %50, label %.thread478, label %51

51:                                               ; preds = %48
  %52 = load i32, ptr %4, align 4, !tbaa !5
  %53 = icmp slt i32 %52, 0
  br i1 %53, label %.thread478, label %54

54:                                               ; preds = %51
  %55 = load i32, ptr %8, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %52, i32 1)
  %56 = icmp slt i32 %55, %spec.select
  br i1 %56, label %.thread478, label %57

57:                                               ; preds = %54
  %58 = load i32, ptr %10, align 4, !tbaa !5
  %59 = load i32, ptr %6, align 4, !tbaa !5
  %spec.select470 = tail call i32 @llvm.smax.i32(i32 %59, i32 1)
  %60 = icmp slt i32 %58, %spec.select470
  br i1 %60, label %.thread478, label %61

61:                                               ; preds = %57
  %62 = load i32, ptr %12, align 4, !tbaa !5
  %spec.select471 = tail call i32 @llvm.umax.i32(i32 %46, i32 1)
  %63 = icmp slt i32 %62, %spec.select471
  br i1 %63, label %.thread478, label %64

64:                                               ; preds = %61
  %65 = load i32, ptr %14, align 4, !tbaa !5
  %66 = tail call i32 @llvm.smax.i32(i32 %.0433476, i32 1)
  %67 = icmp sge i32 %65, %66
  %or.cond5 = select i1 %67, i1 true, i1 %30
  br i1 %or.cond5, label %69, label %.thread478

.thread478:                                       ; preds = %64, %61, %57, %54, %51, %48, %45, %41, %39
  %.sink = phi i32 [ -1, %39 ], [ -2, %41 ], [ -3, %45 ], [ -4, %48 ], [ -5, %51 ], [ -9, %54 ], [ -11, %57 ], [ -13, %61 ], [ -15, %64 ]
  %.ph484.neg = phi i32 [ 1, %39 ], [ 2, %41 ], [ 3, %45 ], [ 4, %48 ], [ 5, %51 ], [ 9, %54 ], [ 11, %57 ], [ 13, %61 ], [ 15, %64 ]
  store i32 %.sink, ptr %15, align 4, !tbaa !5
  store i32 %.ph484.neg, ptr %17, align 4, !tbaa !5
  %68 = call i32 @xerbla_(ptr noundef nonnull @.str.4, ptr noundef nonnull %17, i32 noundef 8) #4
  br label %269

69:                                               ; preds = %64
  %70 = sitofp i32 %.0433476 to float
  store float %70, ptr %13, align 4, !tbaa !9
  %71 = getelementptr inbounds i8, ptr %13, i64 4
  store float 0.000000e+00, ptr %71, align 4, !tbaa !12
  br i1 %30, label %269, label %72

72:                                               ; preds = %69
  %73 = tail call i32 @llvm.umin.i32(i32 %46, i32 %49)
  %74 = tail call i32 @llvm.umin.i32(i32 %73, i32 %52)
  %75 = icmp eq i32 %74, 0
  br i1 %75, label %269, label %76

76:                                               ; preds = %72
  %77 = tail call i32 @llvm.umax.i32(i32 %46, i32 %49)
  %78 = load i32, ptr %5, align 4, !tbaa !5
  %.not460 = icmp sgt i32 %78, %52
  %.not462 = icmp sgt i32 %77, %78
  %or.cond = and i1 %.not460, %.not462
  br i1 %or.cond, label %80, label %79

79:                                               ; preds = %76
  tail call void @cgemqrt_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15) #4
  br label %269

80:                                               ; preds = %76
  %or.cond7 = select i1 %35, i1 %44, i1 false
  br i1 %or.cond7, label %81, label %126

81:                                               ; preds = %80
  %82 = sub nsw i32 %46, %52
  %83 = sub nsw i32 %78, %52
  %84 = srem i32 %82, %83
  store i32 %84, ptr %19, align 4, !tbaa !5
  %85 = sdiv i32 %82, %83
  %86 = icmp sgt i32 %84, 0
  br i1 %86, label %87, label %102

87:                                               ; preds = %81
  %88 = sub nsw i32 %46, %84
  %89 = add nsw i32 %88, 1
  %90 = add nsw i32 %89, %20
  %91 = sext i32 %90 to i64
  %92 = getelementptr inbounds %struct.complex, ptr %22, i64 %91
  %93 = mul nsw i32 %85, %52
  %94 = add nsw i32 %93, 1
  %95 = mul nsw i32 %94, %23
  %96 = sext i32 %95 to i64
  %97 = getelementptr %struct.complex, ptr %25, i64 %96
  %98 = getelementptr i8, ptr %97, i64 8
  %99 = add nsw i32 %89, %26
  %100 = sext i32 %99 to i64
  %101 = getelementptr inbounds %struct.complex, ptr %28, i64 %100
  call void @ctpmqrt_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str, ptr noundef nonnull %19, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c__0, ptr noundef nonnull %6, ptr noundef %92, ptr noundef nonnull %8, ptr noundef %98, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %101, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15) #4
  %.pre523 = load i32, ptr %5, align 4, !tbaa !5
  %.pre524 = load i32, ptr %4, align 4, !tbaa !5
  %.pre525 = sub nsw i32 %.pre523, %.pre524
  br label %104

102:                                              ; preds = %81
  %103 = add nuw nsw i32 %46, 1
  br label %104

104:                                              ; preds = %102, %87
  %.pre-phi = phi i32 [ %83, %102 ], [ %.pre525, %87 ]
  %105 = phi i32 [ %78, %102 ], [ %.pre523, %87 ]
  %.0434 = phi i32 [ %103, %102 ], [ %89, %87 ]
  %106 = add nsw i32 %105, 1
  %107 = icmp sgt i32 %.pre-phi, 0
  %invariant.gep512 = getelementptr i8, ptr %25, i64 8
  %.0436514 = sub i32 %.0434, %.pre-phi
  %108 = icmp sgt i32 %.0436514, %105
  %109 = icmp sle i32 %.0436514, %106
  %.in467515 = select i1 %107, i1 %108, i1 %109
  br i1 %.in467515, label %.lr.ph519, label %._crit_edge520

.lr.ph519:                                        ; preds = %104, %.lr.ph519
  %.0436517 = phi i32 [ %.0436, %.lr.ph519 ], [ %.0436514, %104 ]
  %.0516 = phi i32 [ %110, %.lr.ph519 ], [ %85, %104 ]
  %110 = add nsw i32 %.0516, -1
  %111 = load i32, ptr %5, align 4, !tbaa !5
  %112 = load i32, ptr %4, align 4, !tbaa !5
  %113 = sub nsw i32 %111, %112
  store i32 %113, ptr %18, align 4, !tbaa !5
  %114 = add nsw i32 %.0436517, %20
  %115 = sext i32 %114 to i64
  %116 = getelementptr inbounds %struct.complex, ptr %22, i64 %115
  %117 = mul nsw i32 %112, %110
  %118 = add nsw i32 %117, 1
  %119 = mul nsw i32 %118, %23
  %120 = sext i32 %119 to i64
  %gep513 = getelementptr %struct.complex, ptr %invariant.gep512, i64 %120
  %121 = add nsw i32 %.0436517, %26
  %122 = sext i32 %121 to i64
  %123 = getelementptr inbounds %struct.complex, ptr %28, i64 %122
  call void @ctpmqrt_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str, ptr noundef nonnull %18, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c__0, ptr noundef nonnull %6, ptr noundef %116, ptr noundef nonnull %8, ptr noundef %gep513, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %123, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15) #4
  %.0436 = sub i32 %.0436517, %.pre-phi
  %124 = icmp sgt i32 %.0436, %105
  %125 = icmp sle i32 %.0436, %106
  %.in467 = select i1 %107, i1 %124, i1 %125
  br i1 %.in467, label %.lr.ph519, label %._crit_edge520, !llvm.loop !13

._crit_edge520:                                   ; preds = %.lr.ph519, %104
  call void @cgemqrt_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str, ptr noundef nonnull %5, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15) #4
  br label %268

126:                                              ; preds = %80
  %or.cond9 = and i1 %35, %43
  br i1 %or.cond9, label %127, label %174

127:                                              ; preds = %126
  %128 = sub nsw i32 %46, %52
  %129 = sub nsw i32 %78, %52
  %130 = srem i32 %128, %129
  store i32 %130, ptr %19, align 4, !tbaa !5
  %131 = sub nsw i32 %46, %130
  %132 = add nsw i32 %131, 1
  tail call void @cgemqrt_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.1, ptr noundef nonnull %5, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15) #4
  %133 = load i32, ptr %5, align 4, !tbaa !5
  %134 = sub nsw i32 %132, %133
  %135 = load i32, ptr %4, align 4, !tbaa !5
  %136 = add nsw i32 %134, %135
  %137 = sub nsw i32 %133, %135
  %138 = add nsw i32 %133, 1
  %invariant.gep503 = getelementptr i8, ptr %25, i64 8
  %139 = icmp slt i32 %137, 0
  %140 = icmp sge i32 %138, %136
  %141 = icmp slt i32 %133, %136
  %.in465505 = select i1 %139, i1 %140, i1 %141
  br i1 %.in465505, label %.lr.ph509, label %._crit_edge510

.lr.ph509:                                        ; preds = %127, %.lr.ph509
  %.1507 = phi i32 [ %155, %.lr.ph509 ], [ 1, %127 ]
  %.1437506 = phi i32 [ %156, %.lr.ph509 ], [ %138, %127 ]
  %142 = load i32, ptr %5, align 4, !tbaa !5
  %143 = load i32, ptr %4, align 4, !tbaa !5
  %144 = sub nsw i32 %142, %143
  store i32 %144, ptr %18, align 4, !tbaa !5
  %145 = add nsw i32 %.1437506, %20
  %146 = sext i32 %145 to i64
  %147 = getelementptr inbounds %struct.complex, ptr %22, i64 %146
  %148 = mul nsw i32 %143, %.1507
  %149 = add nsw i32 %148, 1
  %150 = mul nsw i32 %149, %23
  %151 = sext i32 %150 to i64
  %gep504 = getelementptr %struct.complex, ptr %invariant.gep503, i64 %151
  %152 = add nsw i32 %.1437506, %26
  %153 = sext i32 %152 to i64
  %154 = getelementptr inbounds %struct.complex, ptr %28, i64 %153
  call void @ctpmqrt_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.1, ptr noundef nonnull %18, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c__0, ptr noundef nonnull %6, ptr noundef %147, ptr noundef nonnull %8, ptr noundef %gep504, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %154, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15) #4
  %155 = add nuw nsw i32 %.1507, 1
  %156 = add nsw i32 %137, %.1437506
  %157 = icmp sge i32 %156, %136
  %158 = icmp sle i32 %156, %136
  %.in465 = select i1 %139, i1 %157, i1 %158
  br i1 %.in465, label %.lr.ph509, label %._crit_edge510, !llvm.loop !15

._crit_edge510:                                   ; preds = %.lr.ph509, %127
  %.1.lcssa = phi i32 [ 1, %127 ], [ %155, %.lr.ph509 ]
  %159 = load i32, ptr %2, align 4, !tbaa !5
  %.not466.not = icmp slt i32 %131, %159
  br i1 %.not466.not, label %160, label %268

160:                                              ; preds = %._crit_edge510
  %161 = add nsw i32 %132, %20
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds %struct.complex, ptr %22, i64 %162
  %164 = load i32, ptr %4, align 4, !tbaa !5
  %165 = mul nsw i32 %164, %.1.lcssa
  %166 = add nsw i32 %165, 1
  %167 = mul nsw i32 %166, %23
  %168 = sext i32 %167 to i64
  %169 = getelementptr %struct.complex, ptr %25, i64 %168
  %170 = getelementptr i8, ptr %169, i64 8
  %171 = add nsw i32 %132, %26
  %172 = sext i32 %171 to i64
  %173 = getelementptr inbounds %struct.complex, ptr %28, i64 %172
  call void @ctpmqrt_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.1, ptr noundef nonnull %19, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c__0, ptr noundef nonnull %6, ptr noundef %163, ptr noundef nonnull %8, ptr noundef %170, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %173, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15) #4
  br label %268

174:                                              ; preds = %126
  %or.cond11 = and i1 %42, %43
  br i1 %or.cond11, label %175, label %220

175:                                              ; preds = %174
  %176 = sub nsw i32 %49, %52
  %177 = sub nsw i32 %78, %52
  %178 = srem i32 %176, %177
  store i32 %178, ptr %19, align 4, !tbaa !5
  %179 = sdiv i32 %176, %177
  %180 = icmp sgt i32 %178, 0
  br i1 %180, label %181, label %197

181:                                              ; preds = %175
  %182 = sub nsw i32 %49, %178
  %183 = add nsw i32 %182, 1
  %184 = add nsw i32 %183, %20
  %185 = sext i32 %184 to i64
  %186 = getelementptr inbounds %struct.complex, ptr %22, i64 %185
  %187 = mul nsw i32 %179, %52
  %188 = add nsw i32 %187, 1
  %189 = mul nsw i32 %188, %23
  %190 = sext i32 %189 to i64
  %191 = getelementptr %struct.complex, ptr %25, i64 %190
  %192 = getelementptr i8, ptr %191, i64 8
  %193 = mul nsw i32 %183, %26
  %194 = sext i32 %193 to i64
  %195 = getelementptr %struct.complex, ptr %28, i64 %194
  %196 = getelementptr i8, ptr %195, i64 8
  call void @ctpmqrt_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, ptr noundef nonnull %2, ptr noundef nonnull %19, ptr noundef nonnull %4, ptr noundef nonnull @c__0, ptr noundef nonnull %6, ptr noundef %186, ptr noundef nonnull %8, ptr noundef %192, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %196, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15) #4
  %.pre = load i32, ptr %5, align 4, !tbaa !5
  %.pre522 = load i32, ptr %4, align 4, !tbaa !5
  %.pre526 = sub nsw i32 %.pre, %.pre522
  br label %199

197:                                              ; preds = %175
  %198 = add nuw nsw i32 %49, 1
  br label %199

199:                                              ; preds = %197, %181
  %.pre-phi527 = phi i32 [ %177, %197 ], [ %.pre526, %181 ]
  %200 = phi i32 [ %78, %197 ], [ %.pre, %181 ]
  %.1435 = phi i32 [ %198, %197 ], [ %183, %181 ]
  %201 = add nsw i32 %200, 1
  %202 = icmp sgt i32 %.pre-phi527, 0
  %invariant.gep492 = getelementptr i8, ptr %25, i64 8
  %invariant.gep494 = getelementptr i8, ptr %28, i64 8
  %.2438496 = sub i32 %.1435, %.pre-phi527
  %203 = icmp sgt i32 %.2438496, %200
  %204 = icmp sle i32 %.2438496, %201
  %.in464497 = select i1 %202, i1 %203, i1 %204
  br i1 %.in464497, label %.lr.ph501, label %._crit_edge502

.lr.ph501:                                        ; preds = %199, %.lr.ph501
  %.2438499 = phi i32 [ %.2438, %.lr.ph501 ], [ %.2438496, %199 ]
  %.2498 = phi i32 [ %205, %.lr.ph501 ], [ %179, %199 ]
  %205 = add nsw i32 %.2498, -1
  %206 = load i32, ptr %5, align 4, !tbaa !5
  %207 = load i32, ptr %4, align 4, !tbaa !5
  %208 = sub nsw i32 %206, %207
  store i32 %208, ptr %18, align 4, !tbaa !5
  %209 = add nsw i32 %.2438499, %20
  %210 = sext i32 %209 to i64
  %211 = getelementptr inbounds %struct.complex, ptr %22, i64 %210
  %212 = mul nsw i32 %207, %205
  %213 = add nsw i32 %212, 1
  %214 = mul nsw i32 %213, %23
  %215 = sext i32 %214 to i64
  %gep493 = getelementptr %struct.complex, ptr %invariant.gep492, i64 %215
  %216 = mul nsw i32 %.2438499, %26
  %217 = sext i32 %216 to i64
  %gep495 = getelementptr %struct.complex, ptr %invariant.gep494, i64 %217
  call void @ctpmqrt_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, ptr noundef nonnull %2, ptr noundef nonnull %18, ptr noundef nonnull %4, ptr noundef nonnull @c__0, ptr noundef nonnull %6, ptr noundef %211, ptr noundef nonnull %8, ptr noundef %gep493, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %gep495, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15) #4
  %.2438 = sub i32 %.2438499, %.pre-phi527
  %218 = icmp sgt i32 %.2438, %200
  %219 = icmp sle i32 %.2438, %201
  %.in464 = select i1 %202, i1 %218, i1 %219
  br i1 %.in464, label %.lr.ph501, label %._crit_edge502, !llvm.loop !16

._crit_edge502:                                   ; preds = %.lr.ph501, %199
  call void @cgemqrt_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, ptr noundef nonnull %2, ptr noundef nonnull %5, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15) #4
  br label %268

220:                                              ; preds = %174
  %or.cond13 = select i1 %42, i1 %44, i1 false
  br i1 %or.cond13, label %221, label %268

221:                                              ; preds = %220
  %222 = sub nsw i32 %49, %52
  %223 = sub nsw i32 %78, %52
  %224 = srem i32 %222, %223
  store i32 %224, ptr %19, align 4, !tbaa !5
  %225 = sub nsw i32 %49, %224
  %226 = add nsw i32 %225, 1
  tail call void @cgemqrt_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str, ptr noundef nonnull %2, ptr noundef nonnull %5, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15) #4
  %227 = load i32, ptr %5, align 4, !tbaa !5
  %228 = sub nsw i32 %226, %227
  %229 = load i32, ptr %4, align 4, !tbaa !5
  %230 = add nsw i32 %228, %229
  %231 = sub nsw i32 %227, %229
  %232 = add nsw i32 %227, 1
  %invariant.gep = getelementptr i8, ptr %25, i64 8
  %invariant.gep487 = getelementptr i8, ptr %28, i64 8
  %233 = icmp slt i32 %231, 0
  %234 = icmp sge i32 %232, %230
  %235 = icmp slt i32 %227, %230
  %.in489 = select i1 %233, i1 %234, i1 %235
  br i1 %.in489, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %221, %.lr.ph
  %.3491 = phi i32 [ %248, %.lr.ph ], [ 1, %221 ]
  %.3439490 = phi i32 [ %249, %.lr.ph ], [ %232, %221 ]
  %236 = load i32, ptr %5, align 4, !tbaa !5
  %237 = load i32, ptr %4, align 4, !tbaa !5
  %238 = sub nsw i32 %236, %237
  store i32 %238, ptr %18, align 4, !tbaa !5
  %239 = add nsw i32 %.3439490, %20
  %240 = sext i32 %239 to i64
  %241 = getelementptr inbounds %struct.complex, ptr %22, i64 %240
  %242 = mul nsw i32 %237, %.3491
  %243 = add nsw i32 %242, 1
  %244 = mul nsw i32 %243, %23
  %245 = sext i32 %244 to i64
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %245
  %246 = mul nsw i32 %.3439490, %26
  %247 = sext i32 %246 to i64
  %gep488 = getelementptr %struct.complex, ptr %invariant.gep487, i64 %247
  call void @ctpmqrt_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str, ptr noundef nonnull %2, ptr noundef nonnull %18, ptr noundef nonnull %4, ptr noundef nonnull @c__0, ptr noundef nonnull %6, ptr noundef %241, ptr noundef nonnull %8, ptr noundef %gep, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %gep488, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15) #4
  %248 = add nuw nsw i32 %.3491, 1
  %249 = add nsw i32 %231, %.3439490
  %250 = icmp sge i32 %249, %230
  %251 = icmp sle i32 %249, %230
  %.in = select i1 %233, i1 %250, i1 %251
  br i1 %.in, label %.lr.ph, label %._crit_edge, !llvm.loop !17

._crit_edge:                                      ; preds = %.lr.ph, %221
  %.3.lcssa = phi i32 [ 1, %221 ], [ %248, %.lr.ph ]
  %252 = load i32, ptr %3, align 4, !tbaa !5
  %.not463.not = icmp slt i32 %225, %252
  br i1 %.not463.not, label %253, label %268

253:                                              ; preds = %._crit_edge
  %254 = add nsw i32 %226, %20
  %255 = sext i32 %254 to i64
  %256 = getelementptr inbounds %struct.complex, ptr %22, i64 %255
  %257 = load i32, ptr %4, align 4, !tbaa !5
  %258 = mul nsw i32 %257, %.3.lcssa
  %259 = add nsw i32 %258, 1
  %260 = mul nsw i32 %259, %23
  %261 = sext i32 %260 to i64
  %262 = getelementptr %struct.complex, ptr %25, i64 %261
  %263 = getelementptr i8, ptr %262, i64 8
  %264 = mul nsw i32 %226, %26
  %265 = sext i32 %264 to i64
  %266 = getelementptr %struct.complex, ptr %28, i64 %265
  %267 = getelementptr i8, ptr %266, i64 8
  call void @ctpmqrt_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str, ptr noundef nonnull %2, ptr noundef nonnull %19, ptr noundef nonnull %4, ptr noundef nonnull @c__0, ptr noundef nonnull %6, ptr noundef %256, ptr noundef nonnull %8, ptr noundef %263, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %267, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15) #4
  br label %268

268:                                              ; preds = %160, %._crit_edge510, %220, %253, %._crit_edge, %._crit_edge502, %._crit_edge520
  store float %70, ptr %13, align 4, !tbaa !9
  store float 0.000000e+00, ptr %71, align 4, !tbaa !12
  br label %269

269:                                              ; preds = %72, %69, %268, %79, %.thread478
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #4
  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 @cgemqrt_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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


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