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

; 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 [8 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1

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

92:                                               ; preds = %14
  %93 = load ptr, ptr %18, align 8, !tbaa !5
  %94 = load i32, ptr %93, align 4, !tbaa !9
  %95 = icmp sge i32 1, %94
  br i1 %95, label %96, label %97

96:                                               ; preds = %92
  br label %100

97:                                               ; preds = %92
  %98 = load ptr, ptr %18, align 8, !tbaa !5
  %99 = load i32, ptr %98, align 4, !tbaa !9
  br label %100

100:                                              ; preds = %97, %96
  %101 = phi i32 [ 1, %96 ], [ %99, %97 ]
  store i32 %101, ptr %47, align 4, !tbaa !9
  %102 = load ptr, ptr %17, align 8, !tbaa !5
  %103 = load i32, ptr %102, align 4, !tbaa !9
  store i32 %103, ptr %42, align 4, !tbaa !9
  br label %120

104:                                              ; preds = %14
  %105 = load i32, ptr %43, align 4, !tbaa !9
  %106 = icmp ne i32 %105, 0
  br i1 %106, label %107, label %119

107:                                              ; preds = %104
  %108 = load ptr, ptr %17, align 8, !tbaa !5
  %109 = load i32, ptr %108, align 4, !tbaa !9
  %110 = icmp sge i32 1, %109
  br i1 %110, label %111, label %112

111:                                              ; preds = %107
  br label %115

112:                                              ; preds = %107
  %113 = load ptr, ptr %17, align 8, !tbaa !5
  %114 = load i32, ptr %113, align 4, !tbaa !9
  br label %115

115:                                              ; preds = %112, %111
  %116 = phi i32 [ 1, %111 ], [ %114, %112 ]
  store i32 %116, ptr %47, align 4, !tbaa !9
  %117 = load ptr, ptr %18, align 8, !tbaa !5
  %118 = load i32, ptr %117, align 4, !tbaa !9
  store i32 %118, ptr %42, align 4, !tbaa !9
  br label %119

119:                                              ; preds = %115, %104
  br label %120

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

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

126:                                              ; preds = %123
  %127 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -1, ptr %127, align 4, !tbaa !9
  br label %219

128:                                              ; preds = %123, %120
  %129 = load i32, ptr %40, align 4, !tbaa !9
  %130 = icmp ne i32 %129, 0
  br i1 %130, label %136, label %131

131:                                              ; preds = %128
  %132 = load i32, ptr %46, align 4, !tbaa !9
  %133 = icmp ne i32 %132, 0
  br i1 %133, label %136, label %134

134:                                              ; preds = %131
  %135 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -2, ptr %135, align 4, !tbaa !9
  br label %218

136:                                              ; preds = %131, %128
  %137 = load ptr, ptr %17, align 8, !tbaa !5
  %138 = load i32, ptr %137, align 4, !tbaa !9
  %139 = icmp slt i32 %138, 0
  br i1 %139, label %140, label %142

140:                                              ; preds = %136
  %141 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -3, ptr %141, align 4, !tbaa !9
  br label %217

142:                                              ; preds = %136
  %143 = load ptr, ptr %18, align 8, !tbaa !5
  %144 = load i32, ptr %143, align 4, !tbaa !9
  %145 = icmp slt i32 %144, 0
  br i1 %145, label %146, label %148

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

148:                                              ; preds = %142
  %149 = load ptr, ptr %19, align 8, !tbaa !5
  %150 = load i32, ptr %149, align 4, !tbaa !9
  %151 = icmp slt i32 %150, 0
  br i1 %151, label %157, label %152

152:                                              ; preds = %148
  %153 = load ptr, ptr %19, align 8, !tbaa !5
  %154 = load i32, ptr %153, align 4, !tbaa !9
  %155 = load i32, ptr %42, align 4, !tbaa !9
  %156 = icmp sgt i32 %154, %155
  br i1 %156, label %157, label %159

157:                                              ; preds = %152, %148
  %158 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -5, ptr %158, align 4, !tbaa !9
  br label %215

159:                                              ; preds = %152
  %160 = load ptr, ptr %20, align 8, !tbaa !5
  %161 = load i32, ptr %160, align 4, !tbaa !9
  %162 = icmp slt i32 %161, 1
  br i1 %162, label %173, label %163

163:                                              ; preds = %159
  %164 = load ptr, ptr %20, align 8, !tbaa !5
  %165 = load i32, ptr %164, align 4, !tbaa !9
  %166 = load ptr, ptr %19, align 8, !tbaa !5
  %167 = load i32, ptr %166, align 4, !tbaa !9
  %168 = icmp sgt i32 %165, %167
  br i1 %168, label %169, label %175

169:                                              ; preds = %163
  %170 = load ptr, ptr %19, align 8, !tbaa !5
  %171 = load i32, ptr %170, align 4, !tbaa !9
  %172 = icmp sgt i32 %171, 0
  br i1 %172, label %173, label %175

173:                                              ; preds = %169, %159
  %174 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -6, ptr %174, align 4, !tbaa !9
  br label %214

175:                                              ; preds = %169, %163
  %176 = load ptr, ptr %22, align 8, !tbaa !5
  %177 = load i32, ptr %176, align 4, !tbaa !9
  %178 = load i32, ptr %42, align 4, !tbaa !9
  %179 = icmp sge i32 1, %178
  br i1 %179, label %180, label %181

180:                                              ; preds = %175
  br label %183

181:                                              ; preds = %175
  %182 = load i32, ptr %42, align 4, !tbaa !9
  br label %183

183:                                              ; preds = %181, %180
  %184 = phi i32 [ 1, %180 ], [ %182, %181 ]
  %185 = icmp slt i32 %177, %184
  br i1 %185, label %186, label %188

186:                                              ; preds = %183
  %187 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -8, ptr %187, align 4, !tbaa !9
  br label %213

188:                                              ; preds = %183
  %189 = load ptr, ptr %24, align 8, !tbaa !5
  %190 = load i32, ptr %189, align 4, !tbaa !9
  %191 = load ptr, ptr %20, align 8, !tbaa !5
  %192 = load i32, ptr %191, align 4, !tbaa !9
  %193 = icmp slt i32 %190, %192
  br i1 %193, label %194, label %196

194:                                              ; preds = %188
  %195 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -10, ptr %195, align 4, !tbaa !9
  br label %212

196:                                              ; preds = %188
  %197 = load ptr, ptr %26, align 8, !tbaa !5
  %198 = load i32, ptr %197, align 4, !tbaa !9
  %199 = load ptr, ptr %17, align 8, !tbaa !5
  %200 = load i32, ptr %199, align 4, !tbaa !9
  %201 = icmp sge i32 1, %200
  br i1 %201, label %202, label %203

202:                                              ; preds = %196
  br label %206

203:                                              ; preds = %196
  %204 = load ptr, ptr %17, align 8, !tbaa !5
  %205 = load i32, ptr %204, align 4, !tbaa !9
  br label %206

206:                                              ; preds = %203, %202
  %207 = phi i32 [ 1, %202 ], [ %205, %203 ]
  %208 = icmp slt i32 %198, %207
  br i1 %208, label %209, label %211

209:                                              ; preds = %206
  %210 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -12, ptr %210, align 4, !tbaa !9
  br label %211

211:                                              ; preds = %209, %206
  br label %212

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

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

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

215:                                              ; preds = %214, %157
  br label %216

216:                                              ; preds = %215, %146
  br label %217

217:                                              ; preds = %216, %140
  br label %218

218:                                              ; preds = %217, %134
  br label %219

219:                                              ; preds = %218, %126
  %220 = load ptr, ptr %28, align 8, !tbaa !5
  %221 = load i32, ptr %220, align 4, !tbaa !9
  %222 = icmp ne i32 %221, 0
  br i1 %222, label %223, label %228

223:                                              ; preds = %219
  %224 = load ptr, ptr %28, align 8, !tbaa !5
  %225 = load i32, ptr %224, align 4, !tbaa !9
  %226 = sub nsw i32 0, %225
  store i32 %226, ptr %35, align 4, !tbaa !9
  %227 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %35, i32 noundef 7)
  store i32 1, ptr %48, align 4
  br label %587

228:                                              ; preds = %219
  %229 = load ptr, ptr %17, align 8, !tbaa !5
  %230 = load i32, ptr %229, align 4, !tbaa !9
  %231 = icmp eq i32 %230, 0
  br i1 %231, label %240, label %232

232:                                              ; preds = %228
  %233 = load ptr, ptr %18, align 8, !tbaa !5
  %234 = load i32, ptr %233, align 4, !tbaa !9
  %235 = icmp eq i32 %234, 0
  br i1 %235, label %240, label %236

236:                                              ; preds = %232
  %237 = load ptr, ptr %19, align 8, !tbaa !5
  %238 = load i32, ptr %237, align 4, !tbaa !9
  %239 = icmp eq i32 %238, 0
  br i1 %239, label %240, label %241

240:                                              ; preds = %236, %232, %228
  store i32 1, ptr %48, align 4
  br label %587

241:                                              ; preds = %236
  %242 = load i32, ptr %39, align 4, !tbaa !9
  %243 = icmp ne i32 %242, 0
  br i1 %243, label %244, label %322

244:                                              ; preds = %241
  %245 = load i32, ptr %40, align 4, !tbaa !9
  %246 = icmp ne i32 %245, 0
  br i1 %246, label %247, label %322

247:                                              ; preds = %244
  %248 = load ptr, ptr %19, align 8, !tbaa !5
  %249 = load i32, ptr %248, align 4, !tbaa !9
  store i32 %249, ptr %35, align 4, !tbaa !9
  %250 = load ptr, ptr %20, align 8, !tbaa !5
  %251 = load i32, ptr %250, align 4, !tbaa !9
  store i32 %251, ptr %36, align 4, !tbaa !9
  store i32 1, ptr %41, align 4, !tbaa !9
  br label %252

252:                                              ; preds = %317, %247
  %253 = load i32, ptr %36, align 4, !tbaa !9
  %254 = icmp slt i32 %253, 0
  br i1 %254, label %255, label %260

255:                                              ; preds = %252
  %256 = load i32, ptr %41, align 4, !tbaa !9
  %257 = load i32, ptr %35, align 4, !tbaa !9
  %258 = icmp sge i32 %256, %257
  %259 = zext i1 %258 to i32
  br label %265

260:                                              ; preds = %252
  %261 = load i32, ptr %41, align 4, !tbaa !9
  %262 = load i32, ptr %35, align 4, !tbaa !9
  %263 = icmp sle i32 %261, %262
  %264 = zext i1 %263 to i32
  br label %265

265:                                              ; preds = %260, %255
  %266 = phi i32 [ %259, %255 ], [ %264, %260 ]
  %267 = icmp ne i32 %266, 0
  br i1 %267, label %268, label %321

268:                                              ; preds = %265
  %269 = load ptr, ptr %20, align 8, !tbaa !5
  %270 = load i32, ptr %269, align 4, !tbaa !9
  store i32 %270, ptr %37, align 4, !tbaa !9
  %271 = load ptr, ptr %19, align 8, !tbaa !5
  %272 = load i32, ptr %271, align 4, !tbaa !9
  %273 = load i32, ptr %41, align 4, !tbaa !9
  %274 = sub nsw i32 %272, %273
  %275 = add nsw i32 %274, 1
  store i32 %275, ptr %38, align 4, !tbaa !9
  %276 = load i32, ptr %37, align 4, !tbaa !9
  %277 = load i32, ptr %38, align 4, !tbaa !9
  %278 = icmp sle i32 %276, %277
  br i1 %278, label %279, label %281

279:                                              ; preds = %268
  %280 = load i32, ptr %37, align 4, !tbaa !9
  br label %283

281:                                              ; preds = %268
  %282 = load i32, ptr %38, align 4, !tbaa !9
  br label %283

283:                                              ; preds = %281, %279
  %284 = phi i32 [ %280, %279 ], [ %282, %281 ]
  store i32 %284, ptr %44, align 4, !tbaa !9
  %285 = load ptr, ptr %17, align 8, !tbaa !5
  %286 = load i32, ptr %285, align 4, !tbaa !9
  %287 = load i32, ptr %41, align 4, !tbaa !9
  %288 = sub nsw i32 %286, %287
  %289 = add nsw i32 %288, 1
  store i32 %289, ptr %37, align 4, !tbaa !9
  %290 = load ptr, ptr %18, align 8, !tbaa !5
  %291 = load ptr, ptr %21, align 8, !tbaa !5
  %292 = load i32, ptr %41, align 4, !tbaa !9
  %293 = load i32, ptr %41, align 4, !tbaa !9
  %294 = load i32, ptr %29, align 4, !tbaa !9
  %295 = mul nsw i32 %293, %294
  %296 = add nsw i32 %292, %295
  %297 = sext i32 %296 to i64
  %298 = getelementptr inbounds %struct.complex, ptr %291, i64 %297
  %299 = load ptr, ptr %22, align 8, !tbaa !5
  %300 = load ptr, ptr %23, align 8, !tbaa !5
  %301 = load i32, ptr %41, align 4, !tbaa !9
  %302 = load i32, ptr %33, align 4, !tbaa !9
  %303 = mul nsw i32 %301, %302
  %304 = add nsw i32 %303, 1
  %305 = sext i32 %304 to i64
  %306 = getelementptr inbounds %struct.complex, ptr %300, i64 %305
  %307 = load ptr, ptr %24, align 8, !tbaa !5
  %308 = load ptr, ptr %25, align 8, !tbaa !5
  %309 = load i32, ptr %41, align 4, !tbaa !9
  %310 = load i32, ptr %31, align 4, !tbaa !9
  %311 = add nsw i32 %309, %310
  %312 = sext i32 %311 to i64
  %313 = getelementptr inbounds %struct.complex, ptr %308, i64 %312
  %314 = load ptr, ptr %26, align 8, !tbaa !5
  %315 = load ptr, ptr %27, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.complex, ptr %315, i64 1
  call void @clarfb_(ptr noundef @.str, ptr noundef @.str.2, ptr noundef @.str.5, ptr noundef @.str.2, ptr noundef %37, ptr noundef %290, ptr noundef %44, ptr noundef %298, ptr noundef %299, ptr noundef %306, ptr noundef %307, ptr noundef %313, ptr noundef %314, ptr noundef %316, ptr noundef %47)
  br label %317

317:                                              ; preds = %283
  %318 = load i32, ptr %36, align 4, !tbaa !9
  %319 = load i32, ptr %41, align 4, !tbaa !9
  %320 = add nsw i32 %319, %318
  store i32 %320, ptr %41, align 4, !tbaa !9
  br label %252, !llvm.loop !11

321:                                              ; preds = %265
  br label %586

322:                                              ; preds = %244, %241
  %323 = load i32, ptr %43, align 4, !tbaa !9
  %324 = icmp ne i32 %323, 0
  br i1 %324, label %325, label %404

325:                                              ; preds = %322
  %326 = load i32, ptr %46, align 4, !tbaa !9
  %327 = icmp ne i32 %326, 0
  br i1 %327, label %328, label %404

328:                                              ; preds = %325
  %329 = load ptr, ptr %19, align 8, !tbaa !5
  %330 = load i32, ptr %329, align 4, !tbaa !9
  store i32 %330, ptr %36, align 4, !tbaa !9
  %331 = load ptr, ptr %20, align 8, !tbaa !5
  %332 = load i32, ptr %331, align 4, !tbaa !9
  store i32 %332, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %41, align 4, !tbaa !9
  br label %333

333:                                              ; preds = %399, %328
  %334 = load i32, ptr %35, align 4, !tbaa !9
  %335 = icmp slt i32 %334, 0
  br i1 %335, label %336, label %341

336:                                              ; preds = %333
  %337 = load i32, ptr %41, align 4, !tbaa !9
  %338 = load i32, ptr %36, align 4, !tbaa !9
  %339 = icmp sge i32 %337, %338
  %340 = zext i1 %339 to i32
  br label %346

341:                                              ; preds = %333
  %342 = load i32, ptr %41, align 4, !tbaa !9
  %343 = load i32, ptr %36, align 4, !tbaa !9
  %344 = icmp sle i32 %342, %343
  %345 = zext i1 %344 to i32
  br label %346

346:                                              ; preds = %341, %336
  %347 = phi i32 [ %340, %336 ], [ %345, %341 ]
  %348 = icmp ne i32 %347, 0
  br i1 %348, label %349, label %403

349:                                              ; preds = %346
  %350 = load ptr, ptr %20, align 8, !tbaa !5
  %351 = load i32, ptr %350, align 4, !tbaa !9
  store i32 %351, ptr %37, align 4, !tbaa !9
  %352 = load ptr, ptr %19, align 8, !tbaa !5
  %353 = load i32, ptr %352, align 4, !tbaa !9
  %354 = load i32, ptr %41, align 4, !tbaa !9
  %355 = sub nsw i32 %353, %354
  %356 = add nsw i32 %355, 1
  store i32 %356, ptr %38, align 4, !tbaa !9
  %357 = load i32, ptr %37, align 4, !tbaa !9
  %358 = load i32, ptr %38, align 4, !tbaa !9
  %359 = icmp sle i32 %357, %358
  br i1 %359, label %360, label %362

360:                                              ; preds = %349
  %361 = load i32, ptr %37, align 4, !tbaa !9
  br label %364

362:                                              ; preds = %349
  %363 = load i32, ptr %38, align 4, !tbaa !9
  br label %364

364:                                              ; preds = %362, %360
  %365 = phi i32 [ %361, %360 ], [ %363, %362 ]
  store i32 %365, ptr %44, align 4, !tbaa !9
  %366 = load ptr, ptr %18, align 8, !tbaa !5
  %367 = load i32, ptr %366, align 4, !tbaa !9
  %368 = load i32, ptr %41, align 4, !tbaa !9
  %369 = sub nsw i32 %367, %368
  %370 = add nsw i32 %369, 1
  store i32 %370, ptr %37, align 4, !tbaa !9
  %371 = load ptr, ptr %17, align 8, !tbaa !5
  %372 = load ptr, ptr %21, align 8, !tbaa !5
  %373 = load i32, ptr %41, align 4, !tbaa !9
  %374 = load i32, ptr %41, align 4, !tbaa !9
  %375 = load i32, ptr %29, align 4, !tbaa !9
  %376 = mul nsw i32 %374, %375
  %377 = add nsw i32 %373, %376
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds %struct.complex, ptr %372, i64 %378
  %380 = load ptr, ptr %22, align 8, !tbaa !5
  %381 = load ptr, ptr %23, align 8, !tbaa !5
  %382 = load i32, ptr %41, align 4, !tbaa !9
  %383 = load i32, ptr %33, align 4, !tbaa !9
  %384 = mul nsw i32 %382, %383
  %385 = add nsw i32 %384, 1
  %386 = sext i32 %385 to i64
  %387 = getelementptr inbounds %struct.complex, ptr %381, i64 %386
  %388 = load ptr, ptr %24, align 8, !tbaa !5
  %389 = load ptr, ptr %25, align 8, !tbaa !5
  %390 = load i32, ptr %41, align 4, !tbaa !9
  %391 = load i32, ptr %31, align 4, !tbaa !9
  %392 = mul nsw i32 %390, %391
  %393 = add nsw i32 %392, 1
  %394 = sext i32 %393 to i64
  %395 = getelementptr inbounds %struct.complex, ptr %389, i64 %394
  %396 = load ptr, ptr %26, align 8, !tbaa !5
  %397 = load ptr, ptr %27, align 8, !tbaa !5
  %398 = getelementptr inbounds %struct.complex, ptr %397, i64 1
  call void @clarfb_(ptr noundef @.str.1, ptr noundef @.str.3, ptr noundef @.str.5, ptr noundef @.str.2, ptr noundef %371, ptr noundef %37, ptr noundef %44, ptr noundef %379, ptr noundef %380, ptr noundef %387, ptr noundef %388, ptr noundef %395, ptr noundef %396, ptr noundef %398, ptr noundef %47)
  br label %399

399:                                              ; preds = %364
  %400 = load i32, ptr %35, align 4, !tbaa !9
  %401 = load i32, ptr %41, align 4, !tbaa !9
  %402 = add nsw i32 %401, %400
  store i32 %402, ptr %41, align 4, !tbaa !9
  br label %333, !llvm.loop !13

403:                                              ; preds = %346
  br label %585

404:                                              ; preds = %325, %322
  %405 = load i32, ptr %39, align 4, !tbaa !9
  %406 = icmp ne i32 %405, 0
  br i1 %406, label %407, label %493

407:                                              ; preds = %404
  %408 = load i32, ptr %46, align 4, !tbaa !9
  %409 = icmp ne i32 %408, 0
  br i1 %409, label %410, label %493

410:                                              ; preds = %407
  %411 = load ptr, ptr %19, align 8, !tbaa !5
  %412 = load i32, ptr %411, align 4, !tbaa !9
  %413 = sub nsw i32 %412, 1
  %414 = load ptr, ptr %20, align 8, !tbaa !5
  %415 = load i32, ptr %414, align 4, !tbaa !9
  %416 = sdiv i32 %413, %415
  %417 = load ptr, ptr %20, align 8, !tbaa !5
  %418 = load i32, ptr %417, align 4, !tbaa !9
  %419 = mul nsw i32 %416, %418
  %420 = add nsw i32 %419, 1
  store i32 %420, ptr %45, align 4, !tbaa !9
  %421 = load ptr, ptr %20, align 8, !tbaa !5
  %422 = load i32, ptr %421, align 4, !tbaa !9
  %423 = sub nsw i32 0, %422
  store i32 %423, ptr %35, align 4, !tbaa !9
  %424 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %424, ptr %41, align 4, !tbaa !9
  br label %425

425:                                              ; preds = %488, %410
  %426 = load i32, ptr %35, align 4, !tbaa !9
  %427 = icmp slt i32 %426, 0
  br i1 %427, label %428, label %432

428:                                              ; preds = %425
  %429 = load i32, ptr %41, align 4, !tbaa !9
  %430 = icmp sge i32 %429, 1
  %431 = zext i1 %430 to i32
  br label %436

432:                                              ; preds = %425
  %433 = load i32, ptr %41, align 4, !tbaa !9
  %434 = icmp sle i32 %433, 1
  %435 = zext i1 %434 to i32
  br label %436

436:                                              ; preds = %432, %428
  %437 = phi i32 [ %431, %428 ], [ %435, %432 ]
  %438 = icmp ne i32 %437, 0
  br i1 %438, label %439, label %492

439:                                              ; preds = %436
  %440 = load ptr, ptr %20, align 8, !tbaa !5
  %441 = load i32, ptr %440, align 4, !tbaa !9
  store i32 %441, ptr %36, align 4, !tbaa !9
  %442 = load ptr, ptr %19, align 8, !tbaa !5
  %443 = load i32, ptr %442, align 4, !tbaa !9
  %444 = load i32, ptr %41, align 4, !tbaa !9
  %445 = sub nsw i32 %443, %444
  %446 = add nsw i32 %445, 1
  store i32 %446, ptr %37, align 4, !tbaa !9
  %447 = load i32, ptr %36, align 4, !tbaa !9
  %448 = load i32, ptr %37, align 4, !tbaa !9
  %449 = icmp sle i32 %447, %448
  br i1 %449, label %450, label %452

450:                                              ; preds = %439
  %451 = load i32, ptr %36, align 4, !tbaa !9
  br label %454

452:                                              ; preds = %439
  %453 = load i32, ptr %37, align 4, !tbaa !9
  br label %454

454:                                              ; preds = %452, %450
  %455 = phi i32 [ %451, %450 ], [ %453, %452 ]
  store i32 %455, ptr %44, align 4, !tbaa !9
  %456 = load ptr, ptr %17, align 8, !tbaa !5
  %457 = load i32, ptr %456, align 4, !tbaa !9
  %458 = load i32, ptr %41, align 4, !tbaa !9
  %459 = sub nsw i32 %457, %458
  %460 = add nsw i32 %459, 1
  store i32 %460, ptr %36, align 4, !tbaa !9
  %461 = load ptr, ptr %18, align 8, !tbaa !5
  %462 = load ptr, ptr %21, align 8, !tbaa !5
  %463 = load i32, ptr %41, align 4, !tbaa !9
  %464 = load i32, ptr %41, align 4, !tbaa !9
  %465 = load i32, ptr %29, align 4, !tbaa !9
  %466 = mul nsw i32 %464, %465
  %467 = add nsw i32 %463, %466
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds %struct.complex, ptr %462, i64 %468
  %470 = load ptr, ptr %22, align 8, !tbaa !5
  %471 = load ptr, ptr %23, align 8, !tbaa !5
  %472 = load i32, ptr %41, align 4, !tbaa !9
  %473 = load i32, ptr %33, align 4, !tbaa !9
  %474 = mul nsw i32 %472, %473
  %475 = add nsw i32 %474, 1
  %476 = sext i32 %475 to i64
  %477 = getelementptr inbounds %struct.complex, ptr %471, i64 %476
  %478 = load ptr, ptr %24, align 8, !tbaa !5
  %479 = load ptr, ptr %25, align 8, !tbaa !5
  %480 = load i32, ptr %41, align 4, !tbaa !9
  %481 = load i32, ptr %31, align 4, !tbaa !9
  %482 = add nsw i32 %480, %481
  %483 = sext i32 %482 to i64
  %484 = getelementptr inbounds %struct.complex, ptr %479, i64 %483
  %485 = load ptr, ptr %26, align 8, !tbaa !5
  %486 = load ptr, ptr %27, align 8, !tbaa !5
  %487 = getelementptr inbounds %struct.complex, ptr %486, i64 1
  call void @clarfb_(ptr noundef @.str, ptr noundef @.str.3, ptr noundef @.str.5, ptr noundef @.str.2, ptr noundef %36, ptr noundef %461, ptr noundef %44, ptr noundef %469, ptr noundef %470, ptr noundef %477, ptr noundef %478, ptr noundef %484, ptr noundef %485, ptr noundef %487, ptr noundef %47)
  br label %488

488:                                              ; preds = %454
  %489 = load i32, ptr %35, align 4, !tbaa !9
  %490 = load i32, ptr %41, align 4, !tbaa !9
  %491 = add nsw i32 %490, %489
  store i32 %491, ptr %41, align 4, !tbaa !9
  br label %425, !llvm.loop !14

492:                                              ; preds = %436
  br label %584

493:                                              ; preds = %407, %404
  %494 = load i32, ptr %43, align 4, !tbaa !9
  %495 = icmp ne i32 %494, 0
  br i1 %495, label %496, label %583

496:                                              ; preds = %493
  %497 = load i32, ptr %40, align 4, !tbaa !9
  %498 = icmp ne i32 %497, 0
  br i1 %498, label %499, label %583

499:                                              ; preds = %496
  %500 = load ptr, ptr %19, align 8, !tbaa !5
  %501 = load i32, ptr %500, align 4, !tbaa !9
  %502 = sub nsw i32 %501, 1
  %503 = load ptr, ptr %20, align 8, !tbaa !5
  %504 = load i32, ptr %503, align 4, !tbaa !9
  %505 = sdiv i32 %502, %504
  %506 = load ptr, ptr %20, align 8, !tbaa !5
  %507 = load i32, ptr %506, align 4, !tbaa !9
  %508 = mul nsw i32 %505, %507
  %509 = add nsw i32 %508, 1
  store i32 %509, ptr %45, align 4, !tbaa !9
  %510 = load ptr, ptr %20, align 8, !tbaa !5
  %511 = load i32, ptr %510, align 4, !tbaa !9
  %512 = sub nsw i32 0, %511
  store i32 %512, ptr %35, align 4, !tbaa !9
  %513 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %513, ptr %41, align 4, !tbaa !9
  br label %514

514:                                              ; preds = %578, %499
  %515 = load i32, ptr %35, align 4, !tbaa !9
  %516 = icmp slt i32 %515, 0
  br i1 %516, label %517, label %521

517:                                              ; preds = %514
  %518 = load i32, ptr %41, align 4, !tbaa !9
  %519 = icmp sge i32 %518, 1
  %520 = zext i1 %519 to i32
  br label %525

521:                                              ; preds = %514
  %522 = load i32, ptr %41, align 4, !tbaa !9
  %523 = icmp sle i32 %522, 1
  %524 = zext i1 %523 to i32
  br label %525

525:                                              ; preds = %521, %517
  %526 = phi i32 [ %520, %517 ], [ %524, %521 ]
  %527 = icmp ne i32 %526, 0
  br i1 %527, label %528, label %582

528:                                              ; preds = %525
  %529 = load ptr, ptr %20, align 8, !tbaa !5
  %530 = load i32, ptr %529, align 4, !tbaa !9
  store i32 %530, ptr %36, align 4, !tbaa !9
  %531 = load ptr, ptr %19, align 8, !tbaa !5
  %532 = load i32, ptr %531, align 4, !tbaa !9
  %533 = load i32, ptr %41, align 4, !tbaa !9
  %534 = sub nsw i32 %532, %533
  %535 = add nsw i32 %534, 1
  store i32 %535, ptr %37, align 4, !tbaa !9
  %536 = load i32, ptr %36, align 4, !tbaa !9
  %537 = load i32, ptr %37, align 4, !tbaa !9
  %538 = icmp sle i32 %536, %537
  br i1 %538, label %539, label %541

539:                                              ; preds = %528
  %540 = load i32, ptr %36, align 4, !tbaa !9
  br label %543

541:                                              ; preds = %528
  %542 = load i32, ptr %37, align 4, !tbaa !9
  br label %543

543:                                              ; preds = %541, %539
  %544 = phi i32 [ %540, %539 ], [ %542, %541 ]
  store i32 %544, ptr %44, align 4, !tbaa !9
  %545 = load ptr, ptr %18, align 8, !tbaa !5
  %546 = load i32, ptr %545, align 4, !tbaa !9
  %547 = load i32, ptr %41, align 4, !tbaa !9
  %548 = sub nsw i32 %546, %547
  %549 = add nsw i32 %548, 1
  store i32 %549, ptr %36, align 4, !tbaa !9
  %550 = load ptr, ptr %17, align 8, !tbaa !5
  %551 = load ptr, ptr %21, align 8, !tbaa !5
  %552 = load i32, ptr %41, align 4, !tbaa !9
  %553 = load i32, ptr %41, align 4, !tbaa !9
  %554 = load i32, ptr %29, align 4, !tbaa !9
  %555 = mul nsw i32 %553, %554
  %556 = add nsw i32 %552, %555
  %557 = sext i32 %556 to i64
  %558 = getelementptr inbounds %struct.complex, ptr %551, i64 %557
  %559 = load ptr, ptr %22, align 8, !tbaa !5
  %560 = load ptr, ptr %23, align 8, !tbaa !5
  %561 = load i32, ptr %41, align 4, !tbaa !9
  %562 = load i32, ptr %33, align 4, !tbaa !9
  %563 = mul nsw i32 %561, %562
  %564 = add nsw i32 %563, 1
  %565 = sext i32 %564 to i64
  %566 = getelementptr inbounds %struct.complex, ptr %560, i64 %565
  %567 = load ptr, ptr %24, align 8, !tbaa !5
  %568 = load ptr, ptr %25, align 8, !tbaa !5
  %569 = load i32, ptr %41, align 4, !tbaa !9
  %570 = load i32, ptr %31, align 4, !tbaa !9
  %571 = mul nsw i32 %569, %570
  %572 = add nsw i32 %571, 1
  %573 = sext i32 %572 to i64
  %574 = getelementptr inbounds %struct.complex, ptr %568, i64 %573
  %575 = load ptr, ptr %26, align 8, !tbaa !5
  %576 = load ptr, ptr %27, align 8, !tbaa !5
  %577 = getelementptr inbounds %struct.complex, ptr %576, i64 1
  call void @clarfb_(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef @.str.5, ptr noundef @.str.2, ptr noundef %550, ptr noundef %36, ptr noundef %44, ptr noundef %558, ptr noundef %559, ptr noundef %566, ptr noundef %567, ptr noundef %574, ptr noundef %575, ptr noundef %577, ptr noundef %47)
  br label %578

578:                                              ; preds = %543
  %579 = load i32, ptr %35, align 4, !tbaa !9
  %580 = load i32, ptr %41, align 4, !tbaa !9
  %581 = add nsw i32 %580, %579
  store i32 %581, ptr %41, align 4, !tbaa !9
  br label %514, !llvm.loop !15

582:                                              ; preds = %525
  br label %583

583:                                              ; preds = %582, %496, %493
  br label %584

584:                                              ; preds = %583, %492
  br label %585

585:                                              ; preds = %584, %403
  br label %586

586:                                              ; preds = %585, %321
  store i32 1, ptr %48, align 4
  br label %587

587:                                              ; preds = %586, %240, %223
  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
  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 @clarfb_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

; 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 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !12}


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

%struct.complex = type { float, float }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1

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

34:                                               ; preds = %14
  %.not = icmp eq i32 %30, 0
  br i1 %.not, label %.thread218.sink.split, label %.thread

.thread:                                          ; preds = %34, %14
  %.sink256 = phi ptr [ %3, %14 ], [ %2, %34 ]
  %.0.ph.in = phi ptr [ %2, %14 ], [ %3, %34 ]
  %35 = load i32, ptr %.sink256, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.smax.i32(i32 %35, i32 1)
  store i32 %spec.select, ptr %19, align 4, !tbaa !5
  %.0.ph = load i32, ptr %.0.ph.in, align 4, !tbaa !5
  %36 = icmp ne i32 %30, 0
  %37 = icmp ne i32 %31, 0
  %38 = icmp ne i32 %32, 0
  %or.cond3 = select i1 %37, i1 true, i1 %38
  br i1 %or.cond3, label %39, label %.thread218.sink.split

39:                                               ; preds = %.thread
  %40 = load i32, ptr %2, align 4, !tbaa !5
  %41 = icmp slt i32 %40, 0
  br i1 %41, label %.thread218.sink.split, label %42

42:                                               ; preds = %39
  %43 = load i32, ptr %3, align 4, !tbaa !5
  %44 = icmp slt i32 %43, 0
  br i1 %44, label %.thread218.sink.split, label %45

45:                                               ; preds = %42
  %46 = load i32, ptr %4, align 4, !tbaa !5
  %.fr201 = freeze i32 %46
  %47 = icmp slt i32 %.fr201, 0
  %48 = icmp sgt i32 %.fr201, %.0.ph
  %or.cond210 = select i1 %47, i1 true, i1 %48
  br i1 %or.cond210, label %.thread218.sink.split, label %49

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

52:                                               ; preds = %49
  %53 = icmp ule i32 %50, %.fr201
  %.not199 = icmp eq i32 %.fr201, 0
  %or.cond211 = or i1 %.not199, %53
  br i1 %or.cond211, label %54, label %.thread218.sink.split

54:                                               ; preds = %52
  %55 = load i32, ptr %7, align 4, !tbaa !5
  %56 = tail call i32 @llvm.smax.i32(i32 %.0.ph, i32 1)
  %57 = icmp slt i32 %55, %56
  br i1 %57, label %.thread218.sink.split, label %58

58:                                               ; preds = %54
  %59 = load i32, ptr %9, align 4, !tbaa !5
  %60 = icmp slt i32 %59, %50
  br i1 %60, label %.thread218.sink.split, label %61

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

64:                                               ; preds = %61
  %.pr = load i32, ptr %13, align 4, !tbaa !5
  %.not200 = icmp eq i32 %.pr, 0
  br i1 %.not200, label %68, label %.thread218

.thread218.sink.split:                            ; preds = %61, %58, %54, %49, %52, %45, %42, %39, %.thread, %34
  %.sink = phi i32 [ -1, %34 ], [ -2, %.thread ], [ -3, %39 ], [ -4, %42 ], [ -5, %45 ], [ -6, %52 ], [ -6, %49 ], [ -8, %54 ], [ -10, %58 ], [ -12, %61 ]
  store i32 %.sink, ptr %13, align 4, !tbaa !5
  br label %.thread218

.thread218:                                       ; preds = %.thread218.sink.split, %64
  %65 = phi i32 [ %.pr, %64 ], [ %.sink, %.thread218.sink.split ]
  %66 = sub nsw i32 0, %65
  store i32 %66, ptr %15, align 4, !tbaa !5
  %67 = call i32 @xerbla_(ptr noundef nonnull @.str.4, ptr noundef nonnull %15, i32 noundef 7) #4
  br label %.loopexit

68:                                               ; preds = %64
  %69 = icmp eq i32 %40, 0
  %70 = icmp eq i32 %43, 0
  %or.cond = or i1 %69, %70
  %71 = icmp eq i32 %.fr201, 0
  %or.cond257 = or i1 %or.cond, %71
  br i1 %or.cond257, label %.loopexit, label %72

72:                                               ; preds = %68
  %or.cond5 = and i1 %33, %37
  br i1 %or.cond5, label %.lr.ph246, label %91

.lr.ph246:                                        ; preds = %72
  %invariant.gep241 = getelementptr i8, ptr %25, i64 8
  %73 = add i32 %20, 1
  br label %74

74:                                               ; preds = %.lr.ph246, %74
  %.0189.neg245 = phi i32 [ -1, %.lr.ph246 ], [ %.0189.neg, %74 ]
  %.0189244 = phi i32 [ 1, %.lr.ph246 ], [ %90, %74 ]
  %75 = load i32, ptr %5, align 4, !tbaa !5
  %76 = load i32, ptr %4, align 4, !tbaa !5
  %77 = add i32 %.0189.neg245, 1
  %78 = add i32 %77, %76
  %79 = call i32 @llvm.smin.i32(i32 %75, i32 %78)
  store i32 %79, ptr %18, align 4, !tbaa !5
  %80 = load i32, ptr %2, align 4, !tbaa !5
  %81 = add i32 %77, %80
  store i32 %81, ptr %17, align 4, !tbaa !5
  %82 = mul i32 %.0189244, %73
  %83 = sext i32 %82 to i64
  %84 = getelementptr inbounds %struct.complex, ptr %22, i64 %83
  %85 = mul nsw i32 %.0189244, %23
  %86 = sext i32 %85 to i64
  %gep242 = getelementptr %struct.complex, ptr %invariant.gep241, i64 %86
  %87 = add nsw i32 %.0189244, %26
  %88 = sext i32 %87 to i64
  %89 = getelementptr inbounds %struct.complex, ptr %28, i64 %88
  call void @clarfb_(ptr noundef nonnull @.str, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.2, ptr noundef nonnull %17, ptr noundef nonnull %3, ptr noundef nonnull %18, ptr noundef %84, ptr noundef nonnull %7, ptr noundef %gep242, ptr noundef nonnull %9, ptr noundef %89, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %19) #4
  %90 = add nuw nsw i32 %50, %.0189244
  %.0189.neg = sub nsw i32 0, %90
  %.not252 = icmp sgt i32 %90, %.fr201
  br i1 %.not252, label %.loopexit, label %74, !llvm.loop !9

91:                                               ; preds = %72
  %or.cond7 = select i1 %36, i1 %38, i1 false
  br i1 %or.cond7, label %.lr.ph240, label %109

.lr.ph240:                                        ; preds = %91
  %invariant.gep233 = getelementptr i8, ptr %25, i64 8
  %invariant.gep235 = getelementptr i8, ptr %28, i64 8
  %92 = add i32 %20, 1
  br label %93

93:                                               ; preds = %.lr.ph240, %93
  %.1.neg239 = phi i32 [ -1, %.lr.ph240 ], [ %.1.neg, %93 ]
  %.1238 = phi i32 [ 1, %.lr.ph240 ], [ %108, %93 ]
  %94 = load i32, ptr %5, align 4, !tbaa !5
  %95 = load i32, ptr %4, align 4, !tbaa !5
  %96 = add i32 %.1.neg239, 1
  %97 = add i32 %96, %95
  %98 = call i32 @llvm.smin.i32(i32 %94, i32 %97)
  store i32 %98, ptr %18, align 4, !tbaa !5
  %99 = load i32, ptr %3, align 4, !tbaa !5
  %100 = add i32 %96, %99
  store i32 %100, ptr %17, align 4, !tbaa !5
  %101 = mul i32 %.1238, %92
  %102 = sext i32 %101 to i64
  %103 = getelementptr inbounds %struct.complex, ptr %22, i64 %102
  %104 = mul nsw i32 %.1238, %23
  %105 = sext i32 %104 to i64
  %gep234 = getelementptr %struct.complex, ptr %invariant.gep233, i64 %105
  %106 = mul nsw i32 %.1238, %26
  %107 = sext i32 %106 to i64
  %gep236 = getelementptr %struct.complex, ptr %invariant.gep235, i64 %107
  call void @clarfb_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.2, ptr noundef nonnull %2, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef %103, ptr noundef nonnull %7, ptr noundef %gep234, ptr noundef nonnull %9, ptr noundef %gep236, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %19) #4
  %108 = add nuw nsw i32 %50, %.1238
  %.1.neg = sub nsw i32 0, %108
  %.not251 = icmp sgt i32 %108, %.fr201
  br i1 %.not251, label %.loopexit, label %93, !llvm.loop !11

109:                                              ; preds = %91
  %or.cond9 = select i1 %33, i1 %38, i1 false
  br i1 %or.cond9, label %110, label %134

110:                                              ; preds = %109
  %111 = add nsw i32 %.fr201, -1
  %112 = urem i32 %111, %50
  %113 = sub nsw i32 %.fr201, %112
  %invariant.gep228 = getelementptr i8, ptr %25, i64 8
  %114 = icmp sgt i32 %113, 0
  br i1 %114, label %.lr.ph232, label %.loopexit

.lr.ph232:                                        ; preds = %110
  %115 = add i32 %20, 1
  br label %116

116:                                              ; preds = %.lr.ph232, %116
  %.2231 = phi i32 [ %113, %.lr.ph232 ], [ %132, %116 ]
  %117 = load i32, ptr %5, align 4, !tbaa !5
  %118 = load i32, ptr %4, align 4, !tbaa !5
  %119 = sub nsw i32 %118, %.2231
  %120 = add nsw i32 %119, 1
  store i32 %120, ptr %17, align 4, !tbaa !5
  %121 = call i32 @llvm.smin.i32(i32 %117, i32 %120)
  store i32 %121, ptr %18, align 4, !tbaa !5
  %122 = load i32, ptr %2, align 4, !tbaa !5
  %reass.sub247 = sub i32 %122, %.2231
  %123 = add i32 %reass.sub247, 1
  store i32 %123, ptr %16, align 4, !tbaa !5
  %124 = mul i32 %.2231, %115
  %125 = sext i32 %124 to i64
  %126 = getelementptr inbounds %struct.complex, ptr %22, i64 %125
  %127 = mul nsw i32 %.2231, %23
  %128 = sext i32 %127 to i64
  %gep229 = getelementptr %struct.complex, ptr %invariant.gep228, i64 %128
  %129 = add nsw i32 %.2231, %26
  %130 = sext i32 %129 to i64
  %131 = getelementptr inbounds %struct.complex, ptr %28, i64 %130
  call void @clarfb_(ptr noundef nonnull @.str, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.2, ptr noundef nonnull %16, ptr noundef nonnull %3, ptr noundef nonnull %18, ptr noundef %126, ptr noundef nonnull %7, ptr noundef %gep229, ptr noundef nonnull %9, ptr noundef %131, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %19) #4
  %132 = sub i32 %.2231, %50
  %133 = icmp sgt i32 %132, 0
  br i1 %133, label %116, label %.loopexit, !llvm.loop !12

134:                                              ; preds = %109
  %or.cond11 = and i1 %36, %37
  br i1 %or.cond11, label %135, label %.loopexit

135:                                              ; preds = %134
  %136 = add nsw i32 %.fr201, -1
  %137 = urem i32 %136, %50
  %138 = sub nsw i32 %.fr201, %137
  %invariant.gep = getelementptr i8, ptr %25, i64 8
  %invariant.gep224 = getelementptr i8, ptr %28, i64 8
  %139 = icmp sgt i32 %138, 0
  br i1 %139, label %.lr.ph, label %.loopexit

.lr.ph:                                           ; preds = %135
  %140 = add i32 %20, 1
  br label %141

141:                                              ; preds = %.lr.ph, %141
  %.3227 = phi i32 [ %138, %.lr.ph ], [ %156, %141 ]
  %142 = load i32, ptr %5, align 4, !tbaa !5
  %143 = load i32, ptr %4, align 4, !tbaa !5
  %144 = sub nsw i32 %143, %.3227
  %145 = add nsw i32 %144, 1
  store i32 %145, ptr %17, align 4, !tbaa !5
  %146 = call i32 @llvm.smin.i32(i32 %142, i32 %145)
  store i32 %146, ptr %18, align 4, !tbaa !5
  %147 = load i32, ptr %3, align 4, !tbaa !5
  %reass.sub = sub i32 %147, %.3227
  %148 = add i32 %reass.sub, 1
  store i32 %148, ptr %16, align 4, !tbaa !5
  %149 = mul i32 %.3227, %140
  %150 = sext i32 %149 to i64
  %151 = getelementptr inbounds %struct.complex, ptr %22, i64 %150
  %152 = mul nsw i32 %.3227, %23
  %153 = sext i32 %152 to i64
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %153
  %154 = mul nsw i32 %.3227, %26
  %155 = sext i32 %154 to i64
  %gep225 = getelementptr %struct.complex, ptr %invariant.gep224, i64 %155
  call void @clarfb_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.2, ptr noundef nonnull %2, ptr noundef nonnull %16, ptr noundef nonnull %18, ptr noundef %151, ptr noundef nonnull %7, ptr noundef %gep, ptr noundef nonnull %9, ptr noundef %gep225, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %19) #4
  %156 = sub i32 %.3227, %50
  %157 = icmp sgt i32 %156, 0
  br i1 %157, label %141, label %.loopexit, !llvm.loop !13

.loopexit:                                        ; preds = %141, %116, %93, %74, %135, %110, %134, %68, %.thread218
  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
  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 @clarfb_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; 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.smin.i32(i32, i32) #3

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umax.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 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = distinct !{!11, !10}
!12 = distinct !{!12, !10}
!13 = distinct !{!13, !10}


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