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

; 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

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

93:                                               ; preds = %14
  %94 = load ptr, ptr %18, align 8, !tbaa !5
  %95 = load i32, ptr %94, align 4, !tbaa !9
  %96 = load i32, ptr %38, align 4, !tbaa !9
  %97 = mul nsw i32 %95, %96
  store i32 %97, ptr %40, align 4, !tbaa !9
  %98 = load ptr, ptr %17, align 8, !tbaa !5
  %99 = load i32, ptr %98, align 4, !tbaa !9
  store i32 %99, ptr %39, align 4, !tbaa !9
  br label %106

100:                                              ; preds = %14
  %101 = load i32, ptr %37, align 4, !tbaa !9
  %102 = load i32, ptr %38, align 4, !tbaa !9
  %103 = mul nsw i32 %101, %102
  store i32 %103, ptr %40, align 4, !tbaa !9
  %104 = load ptr, ptr %18, align 8, !tbaa !5
  %105 = load i32, ptr %104, align 4, !tbaa !9
  store i32 %105, ptr %39, align 4, !tbaa !9
  br label %106

106:                                              ; preds = %100, %93
  %107 = load i32, ptr %37, align 4, !tbaa !9
  %108 = load ptr, ptr %19, align 8, !tbaa !5
  %109 = load i32, ptr %108, align 4, !tbaa !9
  %110 = icmp sgt i32 %107, %109
  br i1 %110, label %111, label %149

111:                                              ; preds = %106
  %112 = load i32, ptr %39, align 4, !tbaa !9
  %113 = load ptr, ptr %19, align 8, !tbaa !5
  %114 = load i32, ptr %113, align 4, !tbaa !9
  %115 = icmp sgt i32 %112, %114
  br i1 %115, label %116, label %149

116:                                              ; preds = %111
  %117 = load i32, ptr %39, align 4, !tbaa !9
  %118 = load ptr, ptr %19, align 8, !tbaa !5
  %119 = load i32, ptr %118, align 4, !tbaa !9
  %120 = sub nsw i32 %117, %119
  %121 = load i32, ptr %37, align 4, !tbaa !9
  %122 = load ptr, ptr %19, align 8, !tbaa !5
  %123 = load i32, ptr %122, align 4, !tbaa !9
  %124 = sub nsw i32 %121, %123
  %125 = srem i32 %120, %124
  %126 = icmp eq i32 %125, 0
  br i1 %126, label %127, label %137

127:                                              ; preds = %116
  %128 = load i32, ptr %39, align 4, !tbaa !9
  %129 = load ptr, ptr %19, align 8, !tbaa !5
  %130 = load i32, ptr %129, align 4, !tbaa !9
  %131 = sub nsw i32 %128, %130
  %132 = load i32, ptr %37, align 4, !tbaa !9
  %133 = load ptr, ptr %19, align 8, !tbaa !5
  %134 = load i32, ptr %133, align 4, !tbaa !9
  %135 = sub nsw i32 %132, %134
  %136 = sdiv i32 %131, %135
  store i32 %136, ptr %41, align 4, !tbaa !9
  br label %148

137:                                              ; preds = %116
  %138 = load i32, ptr %39, align 4, !tbaa !9
  %139 = load ptr, ptr %19, align 8, !tbaa !5
  %140 = load i32, ptr %139, align 4, !tbaa !9
  %141 = sub nsw i32 %138, %140
  %142 = load i32, ptr %37, align 4, !tbaa !9
  %143 = load ptr, ptr %19, align 8, !tbaa !5
  %144 = load i32, ptr %143, align 4, !tbaa !9
  %145 = sub nsw i32 %142, %144
  %146 = sdiv i32 %141, %145
  %147 = add nsw i32 %146, 1
  store i32 %147, ptr %41, align 4, !tbaa !9
  br label %148

148:                                              ; preds = %137, %127
  br label %150

149:                                              ; preds = %111, %106
  store i32 1, ptr %41, align 4, !tbaa !9
  br label %150

150:                                              ; preds = %149, %148
  %151 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 0, ptr %151, align 4, !tbaa !9
  %152 = load i32, ptr %34, align 4, !tbaa !9
  %153 = icmp ne i32 %152, 0
  br i1 %153, label %159, label %154

154:                                              ; preds = %150
  %155 = load i32, ptr %36, align 4, !tbaa !9
  %156 = icmp ne i32 %155, 0
  br i1 %156, label %159, label %157

157:                                              ; preds = %154
  %158 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -1, ptr %158, align 4, !tbaa !9
  br label %248

159:                                              ; preds = %154, %150
  %160 = load i32, ptr %35, align 4, !tbaa !9
  %161 = icmp ne i32 %160, 0
  br i1 %161, label %167, label %162

162:                                              ; preds = %159
  %163 = load i32, ptr %42, align 4, !tbaa !9
  %164 = icmp ne i32 %163, 0
  br i1 %164, label %167, label %165

165:                                              ; preds = %162
  %166 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -2, ptr %166, align 4, !tbaa !9
  br label %247

167:                                              ; preds = %162, %159
  %168 = load ptr, ptr %17, align 8, !tbaa !5
  %169 = load i32, ptr %168, align 4, !tbaa !9
  %170 = icmp slt i32 %169, 0
  br i1 %170, label %171, label %173

171:                                              ; preds = %167
  %172 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -3, ptr %172, align 4, !tbaa !9
  br label %246

173:                                              ; preds = %167
  %174 = load ptr, ptr %18, align 8, !tbaa !5
  %175 = load i32, ptr %174, align 4, !tbaa !9
  %176 = icmp slt i32 %175, 0
  br i1 %176, label %177, label %179

177:                                              ; preds = %173
  %178 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -4, ptr %178, align 4, !tbaa !9
  br label %245

179:                                              ; preds = %173
  %180 = load ptr, ptr %19, align 8, !tbaa !5
  %181 = load i32, ptr %180, align 4, !tbaa !9
  %182 = icmp slt i32 %181, 0
  br i1 %182, label %188, label %183

183:                                              ; preds = %179
  %184 = load ptr, ptr %19, align 8, !tbaa !5
  %185 = load i32, ptr %184, align 4, !tbaa !9
  %186 = load i32, ptr %39, align 4, !tbaa !9
  %187 = icmp sgt i32 %185, %186
  br i1 %187, label %188, label %190

188:                                              ; preds = %183, %179
  %189 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -5, ptr %189, align 4, !tbaa !9
  br label %244

190:                                              ; preds = %183
  %191 = load ptr, ptr %21, align 8, !tbaa !5
  %192 = load i32, ptr %191, align 4, !tbaa !9
  %193 = load i32, ptr %39, align 4, !tbaa !9
  %194 = icmp sge i32 1, %193
  br i1 %194, label %195, label %196

195:                                              ; preds = %190
  br label %198

196:                                              ; preds = %190
  %197 = load i32, ptr %39, align 4, !tbaa !9
  br label %198

198:                                              ; preds = %196, %195
  %199 = phi i32 [ 1, %195 ], [ %197, %196 ]
  %200 = icmp slt i32 %192, %199
  br i1 %200, label %201, label %203

201:                                              ; preds = %198
  %202 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -7, ptr %202, align 4, !tbaa !9
  br label %243

203:                                              ; preds = %198
  %204 = load ptr, ptr %23, align 8, !tbaa !5
  %205 = load i32, ptr %204, align 4, !tbaa !9
  %206 = icmp slt i32 %205, 5
  br i1 %206, label %207, label %209

207:                                              ; preds = %203
  %208 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -9, ptr %208, align 4, !tbaa !9
  br label %242

209:                                              ; preds = %203
  %210 = load ptr, ptr %25, align 8, !tbaa !5
  %211 = load i32, ptr %210, align 4, !tbaa !9
  %212 = load ptr, ptr %17, align 8, !tbaa !5
  %213 = load i32, ptr %212, align 4, !tbaa !9
  %214 = icmp sge i32 1, %213
  br i1 %214, label %215, label %216

215:                                              ; preds = %209
  br label %219

216:                                              ; preds = %209
  %217 = load ptr, ptr %17, align 8, !tbaa !5
  %218 = load i32, ptr %217, align 4, !tbaa !9
  br label %219

219:                                              ; preds = %216, %215
  %220 = phi i32 [ 1, %215 ], [ %218, %216 ]
  %221 = icmp slt i32 %211, %220
  br i1 %221, label %222, label %224

222:                                              ; preds = %219
  %223 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -11, ptr %223, align 4, !tbaa !9
  br label %241

224:                                              ; preds = %219
  %225 = load ptr, ptr %27, align 8, !tbaa !5
  %226 = load i32, ptr %225, align 4, !tbaa !9
  %227 = load i32, ptr %40, align 4, !tbaa !9
  %228 = icmp sge i32 1, %227
  br i1 %228, label %229, label %230

229:                                              ; preds = %224
  br label %232

230:                                              ; preds = %224
  %231 = load i32, ptr %40, align 4, !tbaa !9
  br label %232

232:                                              ; preds = %230, %229
  %233 = phi i32 [ 1, %229 ], [ %231, %230 ]
  %234 = icmp slt i32 %226, %233
  br i1 %234, label %235, label %240

235:                                              ; preds = %232
  %236 = load i32, ptr %43, align 4, !tbaa !9
  %237 = icmp ne i32 %236, 0
  br i1 %237, label %240, label %238

238:                                              ; preds = %235
  %239 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -13, ptr %239, align 4, !tbaa !9
  br label %240

240:                                              ; preds = %238, %235, %232
  br label %241

241:                                              ; preds = %240, %222
  br label %242

242:                                              ; preds = %241, %207
  br label %243

243:                                              ; preds = %242, %201
  br label %244

244:                                              ; preds = %243, %188
  br label %245

245:                                              ; preds = %244, %177
  br label %246

246:                                              ; preds = %245, %171
  br label %247

247:                                              ; preds = %246, %165
  br label %248

248:                                              ; preds = %247, %157
  %249 = load ptr, ptr %28, align 8, !tbaa !5
  %250 = load i32, ptr %249, align 4, !tbaa !9
  %251 = icmp eq i32 %250, 0
  br i1 %251, label %252, label %261

252:                                              ; preds = %248
  %253 = load i32, ptr %40, align 4, !tbaa !9
  %254 = sitofp i32 %253 to float
  %255 = load ptr, ptr %26, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.complex, ptr %255, i64 1
  %257 = getelementptr inbounds %struct.complex, ptr %256, i32 0, i32 0
  store float %254, ptr %257, align 4, !tbaa !11
  %258 = load ptr, ptr %26, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.complex, ptr %258, i64 1
  %260 = getelementptr inbounds %struct.complex, ptr %259, i32 0, i32 1
  store float 0.000000e+00, ptr %260, align 4, !tbaa !14
  br label %261

261:                                              ; preds = %252, %248
  %262 = load ptr, ptr %28, align 8, !tbaa !5
  %263 = load i32, ptr %262, align 4, !tbaa !9
  %264 = icmp ne i32 %263, 0
  br i1 %264, label %265, label %270

265:                                              ; preds = %261
  %266 = load ptr, ptr %28, align 8, !tbaa !5
  %267 = load i32, ptr %266, align 4, !tbaa !9
  %268 = sub nsw i32 0, %267
  store i32 %268, ptr %33, align 4, !tbaa !9
  %269 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %33, i32 noundef 6)
  store i32 1, ptr %44, align 4
  br label %404

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

273:                                              ; preds = %270
  store i32 1, ptr %44, align 4
  br label %404

274:                                              ; preds = %270
  br label %275

275:                                              ; preds = %274
  %276 = load ptr, ptr %17, align 8, !tbaa !5
  %277 = load i32, ptr %276, align 4, !tbaa !9
  %278 = load ptr, ptr %18, align 8, !tbaa !5
  %279 = load i32, ptr %278, align 4, !tbaa !9
  %280 = icmp sle i32 %277, %279
  br i1 %280, label %281, label %284

281:                                              ; preds = %275
  %282 = load ptr, ptr %17, align 8, !tbaa !5
  %283 = load i32, ptr %282, align 4, !tbaa !9
  br label %287

284:                                              ; preds = %275
  %285 = load ptr, ptr %18, align 8, !tbaa !5
  %286 = load i32, ptr %285, align 4, !tbaa !9
  br label %287

287:                                              ; preds = %284, %281
  %288 = phi i32 [ %283, %281 ], [ %286, %284 ]
  store i32 %288, ptr %33, align 4, !tbaa !9
  %289 = load i32, ptr %33, align 4, !tbaa !9
  %290 = load ptr, ptr %19, align 8, !tbaa !5
  %291 = load i32, ptr %290, align 4, !tbaa !9
  %292 = icmp sle i32 %289, %291
  br i1 %292, label %293, label %295

293:                                              ; preds = %287
  %294 = load i32, ptr %33, align 4, !tbaa !9
  br label %298

295:                                              ; preds = %287
  %296 = load ptr, ptr %19, align 8, !tbaa !5
  %297 = load i32, ptr %296, align 4, !tbaa !9
  br label %298

298:                                              ; preds = %295, %293
  %299 = phi i32 [ %294, %293 ], [ %297, %295 ]
  %300 = icmp eq i32 %299, 0
  br i1 %300, label %301, label %302

301:                                              ; preds = %298
  store i32 1, ptr %44, align 4
  br label %404

302:                                              ; preds = %298
  %303 = load ptr, ptr %17, align 8, !tbaa !5
  %304 = load i32, ptr %303, align 4, !tbaa !9
  %305 = load ptr, ptr %18, align 8, !tbaa !5
  %306 = load i32, ptr %305, align 4, !tbaa !9
  %307 = icmp sge i32 %304, %306
  br i1 %307, label %308, label %311

308:                                              ; preds = %302
  %309 = load ptr, ptr %17, align 8, !tbaa !5
  %310 = load i32, ptr %309, align 4, !tbaa !9
  br label %314

311:                                              ; preds = %302
  %312 = load ptr, ptr %18, align 8, !tbaa !5
  %313 = load i32, ptr %312, align 4, !tbaa !9
  br label %314

314:                                              ; preds = %311, %308
  %315 = phi i32 [ %310, %308 ], [ %313, %311 ]
  store i32 %315, ptr %33, align 4, !tbaa !9
  %316 = load i32, ptr %34, align 4, !tbaa !9
  %317 = icmp ne i32 %316, 0
  br i1 %317, label %318, label %324

318:                                              ; preds = %314
  %319 = load ptr, ptr %17, align 8, !tbaa !5
  %320 = load i32, ptr %319, align 4, !tbaa !9
  %321 = load ptr, ptr %19, align 8, !tbaa !5
  %322 = load i32, ptr %321, align 4, !tbaa !9
  %323 = icmp sle i32 %320, %322
  br i1 %323, label %352, label %324

324:                                              ; preds = %318, %314
  %325 = load i32, ptr %36, align 4, !tbaa !9
  %326 = icmp ne i32 %325, 0
  br i1 %326, label %327, label %333

327:                                              ; preds = %324
  %328 = load ptr, ptr %18, align 8, !tbaa !5
  %329 = load i32, ptr %328, align 4, !tbaa !9
  %330 = load ptr, ptr %19, align 8, !tbaa !5
  %331 = load i32, ptr %330, align 4, !tbaa !9
  %332 = icmp sle i32 %329, %331
  br i1 %332, label %352, label %333

333:                                              ; preds = %327, %324
  %334 = load i32, ptr %37, align 4, !tbaa !9
  %335 = load ptr, ptr %19, align 8, !tbaa !5
  %336 = load i32, ptr %335, align 4, !tbaa !9
  %337 = icmp sle i32 %334, %336
  br i1 %337, label %352, label %338

338:                                              ; preds = %333
  %339 = load i32, ptr %37, align 4, !tbaa !9
  %340 = load i32, ptr %33, align 4, !tbaa !9
  %341 = load ptr, ptr %19, align 8, !tbaa !5
  %342 = load i32, ptr %341, align 4, !tbaa !9
  %343 = icmp sge i32 %340, %342
  br i1 %343, label %344, label %346

344:                                              ; preds = %338
  %345 = load i32, ptr %33, align 4, !tbaa !9
  br label %349

346:                                              ; preds = %338
  %347 = load ptr, ptr %19, align 8, !tbaa !5
  %348 = load i32, ptr %347, align 4, !tbaa !9
  br label %349

349:                                              ; preds = %346, %344
  %350 = phi i32 [ %345, %344 ], [ %348, %346 ]
  %351 = icmp sge i32 %339, %350
  br i1 %351, label %352, label %373

352:                                              ; preds = %349, %333, %327, %318
  %353 = load ptr, ptr %15, align 8, !tbaa !5
  %354 = load ptr, ptr %16, align 8, !tbaa !5
  %355 = load ptr, ptr %17, align 8, !tbaa !5
  %356 = load ptr, ptr %18, align 8, !tbaa !5
  %357 = load ptr, ptr %19, align 8, !tbaa !5
  %358 = load ptr, ptr %20, align 8, !tbaa !5
  %359 = load i32, ptr %30, align 4, !tbaa !9
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds %struct.complex, ptr %358, i64 %360
  %362 = load ptr, ptr %21, align 8, !tbaa !5
  %363 = load ptr, ptr %22, align 8, !tbaa !5
  %364 = getelementptr inbounds %struct.complex, ptr %363, i64 6
  %365 = load ptr, ptr %24, align 8, !tbaa !5
  %366 = load i32, ptr %32, align 4, !tbaa !9
  %367 = sext i32 %366 to i64
  %368 = getelementptr inbounds %struct.complex, ptr %365, i64 %367
  %369 = load ptr, ptr %25, align 8, !tbaa !5
  %370 = load ptr, ptr %26, align 8, !tbaa !5
  %371 = getelementptr inbounds %struct.complex, ptr %370, i64 1
  %372 = load ptr, ptr %28, align 8, !tbaa !5
  call void @cgemqrt_(ptr noundef %353, ptr noundef %354, ptr noundef %355, ptr noundef %356, ptr noundef %357, ptr noundef %38, ptr noundef %361, ptr noundef %362, ptr noundef %364, ptr noundef %38, ptr noundef %368, ptr noundef %369, ptr noundef %371, ptr noundef %372)
  br label %395

373:                                              ; preds = %349
  %374 = load ptr, ptr %15, align 8, !tbaa !5
  %375 = load ptr, ptr %16, align 8, !tbaa !5
  %376 = load ptr, ptr %17, align 8, !tbaa !5
  %377 = load ptr, ptr %18, align 8, !tbaa !5
  %378 = load ptr, ptr %19, align 8, !tbaa !5
  %379 = load ptr, ptr %20, align 8, !tbaa !5
  %380 = load i32, ptr %30, align 4, !tbaa !9
  %381 = sext i32 %380 to i64
  %382 = getelementptr inbounds %struct.complex, ptr %379, i64 %381
  %383 = load ptr, ptr %21, align 8, !tbaa !5
  %384 = load ptr, ptr %22, align 8, !tbaa !5
  %385 = getelementptr inbounds %struct.complex, ptr %384, i64 6
  %386 = load ptr, ptr %24, align 8, !tbaa !5
  %387 = load i32, ptr %32, align 4, !tbaa !9
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds %struct.complex, ptr %386, i64 %388
  %390 = load ptr, ptr %25, align 8, !tbaa !5
  %391 = load ptr, ptr %26, align 8, !tbaa !5
  %392 = getelementptr inbounds %struct.complex, ptr %391, i64 1
  %393 = load ptr, ptr %27, align 8, !tbaa !5
  %394 = load ptr, ptr %28, align 8, !tbaa !5
  call void @clamtsqr_(ptr noundef %374, ptr noundef %375, ptr noundef %376, ptr noundef %377, ptr noundef %378, ptr noundef %37, ptr noundef %38, ptr noundef %382, ptr noundef %383, ptr noundef %385, ptr noundef %38, ptr noundef %389, ptr noundef %390, ptr noundef %392, ptr noundef %393, ptr noundef %394)
  br label %395

395:                                              ; preds = %373, %352
  %396 = load i32, ptr %40, align 4, !tbaa !9
  %397 = sitofp i32 %396 to float
  %398 = load ptr, ptr %26, align 8, !tbaa !5
  %399 = getelementptr inbounds %struct.complex, ptr %398, i64 1
  %400 = getelementptr inbounds %struct.complex, ptr %399, i32 0, i32 0
  store float %397, ptr %400, align 4, !tbaa !11
  %401 = load ptr, ptr %26, align 8, !tbaa !5
  %402 = getelementptr inbounds %struct.complex, ptr %401, i64 1
  %403 = getelementptr inbounds %struct.complex, ptr %402, i32 0, i32 1
  store float 0.000000e+00, ptr %403, align 4, !tbaa !14
  store i32 1, ptr %44, align 4
  br label %404

404:                                              ; preds = %395, %301, %273, %265
  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
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #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 @clamtsqr_(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}


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

@.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

; Function Attrs: nounwind uwtable
define dso_local void @cgemqr_(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 nocapture noundef readonly %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13) local_unnamed_addr #0 {
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #4
  %18 = load i32, ptr %12, align 4, !tbaa !5
  %19 = icmp eq i32 %18, -1
  %20 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #4
  %21 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #4
  %22 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #4
  %23 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #4
  %24 = getelementptr inbounds i8, ptr %7, i64 8
  %25 = load float, ptr %24, align 4, !tbaa !9
  %26 = fptosi float %25 to i32
  store i32 %26, ptr %16, align 4, !tbaa !5
  %27 = getelementptr inbounds i8, ptr %7, i64 16
  %28 = load float, ptr %27, align 4, !tbaa !9
  %29 = fptosi float %28 to i32
  store i32 %29, ptr %17, align 4, !tbaa !5
  %30 = icmp ne i32 %22, 0
  %. = select i1 %30, ptr %2, ptr %3
  %.148 = select i1 %30, ptr %3, ptr %16
  %.pn = load i32, ptr %.148, align 4, !tbaa !5
  %.0 = mul nsw i32 %.pn, %29
  %.0125 = load i32, ptr %., align 4, !tbaa !5
  store i32 0, ptr %13, align 4, !tbaa !5
  %31 = icmp ne i32 %23, 0
  %or.cond = select i1 %30, i1 true, i1 %31
  br i1 %or.cond, label %32, label %.thread

32:                                               ; preds = %14
  %33 = icmp ne i32 %21, 0
  %34 = icmp ne i32 %20, 0
  %or.cond3 = select i1 %33, i1 true, i1 %34
  br i1 %or.cond3, label %35, label %.thread

35:                                               ; preds = %32
  %36 = load i32, ptr %2, align 4, !tbaa !5
  %37 = icmp slt i32 %36, 0
  br i1 %37, label %.thread, label %38

38:                                               ; preds = %35
  %39 = load i32, ptr %3, align 4, !tbaa !5
  %40 = icmp slt i32 %39, 0
  br i1 %40, label %.thread, label %41

41:                                               ; preds = %38
  %42 = load i32, ptr %4, align 4, !tbaa !5
  %43 = icmp slt i32 %42, 0
  %44 = icmp sgt i32 %42, %.0125
  %or.cond150 = select i1 %43, i1 true, i1 %44
  br i1 %or.cond150, label %.thread, label %45

45:                                               ; preds = %41
  %46 = load i32, ptr %6, align 4, !tbaa !5
  %47 = tail call i32 @llvm.smax.i32(i32 %.0125, i32 1)
  %48 = icmp slt i32 %46, %47
  br i1 %48, label %.thread, label %49

49:                                               ; preds = %45
  %50 = load i32, ptr %8, align 4, !tbaa !5
  %51 = icmp slt i32 %50, 5
  br i1 %51, label %.thread, label %52

52:                                               ; preds = %49
  %53 = load i32, ptr %10, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %36, i32 1)
  %54 = icmp slt i32 %53, %spec.select
  br i1 %54, label %.thread, label %55

55:                                               ; preds = %52
  %56 = load i32, ptr %12, align 4, !tbaa !5
  %57 = tail call i32 @llvm.smax.i32(i32 %.0, i32 1)
  %58 = icmp sge i32 %56, %57
  %or.cond5 = select i1 %58, i1 true, i1 %19
  br i1 %or.cond5, label %60, label %.thread

.thread:                                          ; preds = %55, %52, %49, %45, %41, %38, %35, %32, %14
  %.sink = phi i32 [ -1, %14 ], [ -2, %32 ], [ -3, %35 ], [ -4, %38 ], [ -5, %41 ], [ -7, %45 ], [ -9, %49 ], [ -11, %52 ], [ -13, %55 ]
  %.ph156.neg = phi i32 [ 1, %14 ], [ 2, %32 ], [ 3, %35 ], [ 4, %38 ], [ 5, %41 ], [ 7, %45 ], [ 9, %49 ], [ 11, %52 ], [ 13, %55 ]
  store i32 %.sink, ptr %13, align 4, !tbaa !5
  store i32 %.ph156.neg, ptr %15, align 4, !tbaa !5
  %59 = call i32 @xerbla_(ptr noundef nonnull @.str.4, ptr noundef nonnull %15, i32 noundef 6) #4
  br label %76

60:                                               ; preds = %55
  %61 = sitofp i32 %.0 to float
  store float %61, ptr %11, align 4, !tbaa !9
  %62 = getelementptr inbounds i8, ptr %11, i64 4
  store float 0.000000e+00, ptr %62, align 4, !tbaa !12
  br i1 %19, label %76, label %63

63:                                               ; preds = %60
  %64 = tail call i32 @llvm.umin.i32(i32 %36, i32 %39)
  %65 = tail call i32 @llvm.umin.i32(i32 %64, i32 %42)
  %66 = icmp eq i32 %65, 0
  br i1 %66, label %76, label %67

67:                                               ; preds = %63
  %.not143 = icmp ule i32 %36, %42
  %or.cond158.not = and i1 %30, %.not143
  br i1 %or.cond158.not, label %71, label %68

68:                                               ; preds = %67
  %69 = tail call i32 @llvm.umax.i32(i32 %36, i32 %39)
  %.not159 = xor i1 %31, true
  %.not144 = icmp ugt i32 %39, %42
  %or.cond160 = or i1 %.not144, %.not159
  %.not145 = icmp slt i32 %42, %26
  %.not147 = icmp sgt i32 %69, %26
  %70 = and i1 %.not145, %.not147
  %or.cond162 = select i1 %or.cond160, i1 %70, i1 false
  br i1 %or.cond162, label %73, label %71

71:                                               ; preds = %68, %67
  %72 = getelementptr inbounds i8, ptr %7, i64 40
  call void @cgemqrt_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %17, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %72, ptr noundef nonnull %17, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %13) #4
  br label %75

73:                                               ; preds = %68
  %74 = getelementptr inbounds i8, ptr %7, i64 40
  call void @clamtsqr_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %74, ptr noundef nonnull %17, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %13) #4
  br label %75

75:                                               ; preds = %73, %71
  store float %61, ptr %11, align 4, !tbaa !9
  store float 0.000000e+00, ptr %62, align 4, !tbaa !12
  br label %76

76:                                               ; preds = %63, %60, %75, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #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 @clamtsqr_(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}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass