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

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

@.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 @dgemqr_(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 double, 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 double, 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 double, 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 double, 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 double, ptr %81, i64 2
  %83 = load double, ptr %82, align 8, !tbaa !11
  %84 = fptosi double %83 to i32
  store i32 %84, ptr %37, align 4, !tbaa !9
  %85 = load ptr, ptr %22, align 8, !tbaa !5
  %86 = getelementptr inbounds double, ptr %85, i64 3
  %87 = load double, ptr %86, align 8, !tbaa !11
  %88 = fptosi double %87 to i32
  store i32 %88, ptr %38, align 4, !tbaa !9
  %89 = load i32, ptr %34, align 4, !tbaa !9
  %90 = icmp ne i32 %89, 0
  br i1 %90, label %91, label %98

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

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

104:                                              ; preds = %98, %91
  %105 = load i32, ptr %37, align 4, !tbaa !9
  %106 = load ptr, ptr %19, align 8, !tbaa !5
  %107 = load i32, ptr %106, align 4, !tbaa !9
  %108 = icmp sgt i32 %105, %107
  br i1 %108, label %109, label %147

109:                                              ; preds = %104
  %110 = load i32, ptr %39, align 4, !tbaa !9
  %111 = load ptr, ptr %19, align 8, !tbaa !5
  %112 = load i32, ptr %111, align 4, !tbaa !9
  %113 = icmp sgt i32 %110, %112
  br i1 %113, label %114, label %147

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

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

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

146:                                              ; preds = %135, %125
  br label %148

147:                                              ; preds = %109, %104
  store i32 1, ptr %41, align 4, !tbaa !9
  br label %148

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

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

155:                                              ; preds = %152
  %156 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -1, ptr %156, align 4, !tbaa !9
  br label %246

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

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

163:                                              ; preds = %160
  %164 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -2, ptr %164, align 4, !tbaa !9
  br label %245

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

169:                                              ; preds = %165
  %170 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -3, ptr %170, align 4, !tbaa !9
  br label %244

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

175:                                              ; preds = %171
  %176 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -4, ptr %176, align 4, !tbaa !9
  br label %243

177:                                              ; preds = %171
  %178 = load ptr, ptr %19, align 8, !tbaa !5
  %179 = load i32, ptr %178, align 4, !tbaa !9
  %180 = icmp slt i32 %179, 0
  br i1 %180, label %186, label %181

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

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

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

193:                                              ; preds = %188
  br label %196

194:                                              ; preds = %188
  %195 = load i32, ptr %39, align 4, !tbaa !9
  br label %196

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

199:                                              ; preds = %196
  %200 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -7, ptr %200, align 4, !tbaa !9
  br label %241

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

205:                                              ; preds = %201
  %206 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -9, ptr %206, align 4, !tbaa !9
  br label %240

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

213:                                              ; preds = %207
  br label %217

214:                                              ; preds = %207
  %215 = load ptr, ptr %17, align 8, !tbaa !5
  %216 = load i32, ptr %215, align 4, !tbaa !9
  br label %217

217:                                              ; preds = %214, %213
  %218 = phi i32 [ 1, %213 ], [ %216, %214 ]
  %219 = icmp slt i32 %209, %218
  br i1 %219, label %220, label %222

220:                                              ; preds = %217
  %221 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -11, ptr %221, align 4, !tbaa !9
  br label %239

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

227:                                              ; preds = %222
  br label %230

228:                                              ; preds = %222
  %229 = load i32, ptr %40, align 4, !tbaa !9
  br label %230

230:                                              ; preds = %228, %227
  %231 = phi i32 [ 1, %227 ], [ %229, %228 ]
  %232 = icmp slt i32 %224, %231
  br i1 %232, label %233, label %238

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

236:                                              ; preds = %233
  %237 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -13, ptr %237, align 4, !tbaa !9
  br label %238

238:                                              ; preds = %236, %233, %230
  br label %239

239:                                              ; preds = %238, %220
  br label %240

240:                                              ; preds = %239, %205
  br label %241

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

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

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

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

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

246:                                              ; preds = %245, %155
  %247 = load ptr, ptr %28, align 8, !tbaa !5
  %248 = load i32, ptr %247, align 4, !tbaa !9
  %249 = icmp eq i32 %248, 0
  br i1 %249, label %250, label %255

250:                                              ; preds = %246
  %251 = load i32, ptr %40, align 4, !tbaa !9
  %252 = sitofp i32 %251 to double
  %253 = load ptr, ptr %26, align 8, !tbaa !5
  %254 = getelementptr inbounds double, ptr %253, i64 1
  store double %252, ptr %254, align 8, !tbaa !11
  br label %255

255:                                              ; preds = %250, %246
  %256 = load ptr, ptr %28, align 8, !tbaa !5
  %257 = load i32, ptr %256, align 4, !tbaa !9
  %258 = icmp ne i32 %257, 0
  br i1 %258, label %259, label %264

259:                                              ; preds = %255
  %260 = load ptr, ptr %28, align 8, !tbaa !5
  %261 = load i32, ptr %260, align 4, !tbaa !9
  %262 = sub nsw i32 0, %261
  store i32 %262, ptr %33, align 4, !tbaa !9
  %263 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %33, i32 noundef 6)
  store i32 1, ptr %44, align 4
  br label %394

264:                                              ; preds = %255
  %265 = load i32, ptr %43, align 4, !tbaa !9
  %266 = icmp ne i32 %265, 0
  br i1 %266, label %267, label %268

267:                                              ; preds = %264
  store i32 1, ptr %44, align 4
  br label %394

268:                                              ; preds = %264
  br label %269

269:                                              ; preds = %268
  %270 = load ptr, ptr %17, align 8, !tbaa !5
  %271 = load i32, ptr %270, align 4, !tbaa !9
  %272 = load ptr, ptr %18, align 8, !tbaa !5
  %273 = load i32, ptr %272, align 4, !tbaa !9
  %274 = icmp sle i32 %271, %273
  br i1 %274, label %275, label %278

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

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

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

287:                                              ; preds = %281
  %288 = load i32, ptr %33, align 4, !tbaa !9
  br label %292

289:                                              ; preds = %281
  %290 = load ptr, ptr %19, align 8, !tbaa !5
  %291 = load i32, ptr %290, align 4, !tbaa !9
  br label %292

292:                                              ; preds = %289, %287
  %293 = phi i32 [ %288, %287 ], [ %291, %289 ]
  %294 = icmp eq i32 %293, 0
  br i1 %294, label %295, label %296

295:                                              ; preds = %292
  store i32 1, ptr %44, align 4
  br label %394

296:                                              ; preds = %292
  %297 = load ptr, ptr %17, align 8, !tbaa !5
  %298 = load i32, ptr %297, align 4, !tbaa !9
  %299 = load ptr, ptr %18, align 8, !tbaa !5
  %300 = load i32, ptr %299, align 4, !tbaa !9
  %301 = icmp sge i32 %298, %300
  br i1 %301, label %302, label %305

302:                                              ; preds = %296
  %303 = load ptr, ptr %17, align 8, !tbaa !5
  %304 = load i32, ptr %303, align 4, !tbaa !9
  br label %308

305:                                              ; preds = %296
  %306 = load ptr, ptr %18, align 8, !tbaa !5
  %307 = load i32, ptr %306, align 4, !tbaa !9
  br label %308

308:                                              ; preds = %305, %302
  %309 = phi i32 [ %304, %302 ], [ %307, %305 ]
  store i32 %309, ptr %33, align 4, !tbaa !9
  %310 = load i32, ptr %34, align 4, !tbaa !9
  %311 = icmp ne i32 %310, 0
  br i1 %311, label %312, label %318

312:                                              ; preds = %308
  %313 = load ptr, ptr %17, align 8, !tbaa !5
  %314 = load i32, ptr %313, align 4, !tbaa !9
  %315 = load ptr, ptr %19, align 8, !tbaa !5
  %316 = load i32, ptr %315, align 4, !tbaa !9
  %317 = icmp sle i32 %314, %316
  br i1 %317, label %346, label %318

318:                                              ; preds = %312, %308
  %319 = load i32, ptr %36, align 4, !tbaa !9
  %320 = icmp ne i32 %319, 0
  br i1 %320, label %321, label %327

321:                                              ; preds = %318
  %322 = load ptr, ptr %18, align 8, !tbaa !5
  %323 = load i32, ptr %322, align 4, !tbaa !9
  %324 = load ptr, ptr %19, align 8, !tbaa !5
  %325 = load i32, ptr %324, align 4, !tbaa !9
  %326 = icmp sle i32 %323, %325
  br i1 %326, label %346, label %327

327:                                              ; preds = %321, %318
  %328 = load i32, ptr %37, align 4, !tbaa !9
  %329 = load ptr, ptr %19, align 8, !tbaa !5
  %330 = load i32, ptr %329, align 4, !tbaa !9
  %331 = icmp sle i32 %328, %330
  br i1 %331, label %346, label %332

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

338:                                              ; preds = %332
  %339 = load i32, ptr %33, align 4, !tbaa !9
  br label %343

340:                                              ; preds = %332
  %341 = load ptr, ptr %19, align 8, !tbaa !5
  %342 = load i32, ptr %341, align 4, !tbaa !9
  br label %343

343:                                              ; preds = %340, %338
  %344 = phi i32 [ %339, %338 ], [ %342, %340 ]
  %345 = icmp sge i32 %333, %344
  br i1 %345, label %346, label %367

346:                                              ; preds = %343, %327, %321, %312
  %347 = load ptr, ptr %15, align 8, !tbaa !5
  %348 = load ptr, ptr %16, align 8, !tbaa !5
  %349 = load ptr, ptr %17, align 8, !tbaa !5
  %350 = load ptr, ptr %18, align 8, !tbaa !5
  %351 = load ptr, ptr %19, align 8, !tbaa !5
  %352 = load ptr, ptr %20, align 8, !tbaa !5
  %353 = load i32, ptr %30, align 4, !tbaa !9
  %354 = sext i32 %353 to i64
  %355 = getelementptr inbounds double, ptr %352, i64 %354
  %356 = load ptr, ptr %21, align 8, !tbaa !5
  %357 = load ptr, ptr %22, align 8, !tbaa !5
  %358 = getelementptr inbounds double, ptr %357, i64 6
  %359 = load ptr, ptr %24, align 8, !tbaa !5
  %360 = load i32, ptr %32, align 4, !tbaa !9
  %361 = sext i32 %360 to i64
  %362 = getelementptr inbounds double, ptr %359, i64 %361
  %363 = load ptr, ptr %25, align 8, !tbaa !5
  %364 = load ptr, ptr %26, align 8, !tbaa !5
  %365 = getelementptr inbounds double, ptr %364, i64 1
  %366 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dgemqrt_(ptr noundef %347, ptr noundef %348, ptr noundef %349, ptr noundef %350, ptr noundef %351, ptr noundef %38, ptr noundef %355, ptr noundef %356, ptr noundef %358, ptr noundef %38, ptr noundef %362, ptr noundef %363, ptr noundef %365, ptr noundef %366)
  br label %389

367:                                              ; preds = %343
  %368 = load ptr, ptr %15, align 8, !tbaa !5
  %369 = load ptr, ptr %16, align 8, !tbaa !5
  %370 = load ptr, ptr %17, align 8, !tbaa !5
  %371 = load ptr, ptr %18, align 8, !tbaa !5
  %372 = load ptr, ptr %19, align 8, !tbaa !5
  %373 = load ptr, ptr %20, align 8, !tbaa !5
  %374 = load i32, ptr %30, align 4, !tbaa !9
  %375 = sext i32 %374 to i64
  %376 = getelementptr inbounds double, ptr %373, i64 %375
  %377 = load ptr, ptr %21, align 8, !tbaa !5
  %378 = load ptr, ptr %22, align 8, !tbaa !5
  %379 = getelementptr inbounds double, ptr %378, i64 6
  %380 = load ptr, ptr %24, align 8, !tbaa !5
  %381 = load i32, ptr %32, align 4, !tbaa !9
  %382 = sext i32 %381 to i64
  %383 = getelementptr inbounds double, ptr %380, i64 %382
  %384 = load ptr, ptr %25, align 8, !tbaa !5
  %385 = load ptr, ptr %26, align 8, !tbaa !5
  %386 = getelementptr inbounds double, ptr %385, i64 1
  %387 = load ptr, ptr %27, align 8, !tbaa !5
  %388 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlamtsqr_(ptr noundef %368, ptr noundef %369, ptr noundef %370, ptr noundef %371, ptr noundef %372, ptr noundef %37, ptr noundef %38, ptr noundef %376, ptr noundef %377, ptr noundef %379, ptr noundef %38, ptr noundef %383, ptr noundef %384, ptr noundef %386, ptr noundef %387, ptr noundef %388)
  br label %389

389:                                              ; preds = %367, %346
  %390 = load i32, ptr %40, align 4, !tbaa !9
  %391 = sitofp i32 %390 to double
  %392 = load ptr, ptr %26, align 8, !tbaa !5
  %393 = getelementptr inbounds double, ptr %392, i64 1
  store double %391, ptr %393, align 8, !tbaa !11
  store i32 1, ptr %44, align 4
  br label %394

394:                                              ; preds = %389, %295, %267, %259
  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 @dgemqrt_(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 @dlamtsqr_(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, !12, i64 0}
!12 = !{!"double", !7, i64 0}


; 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 @dgemqr_(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 double, ptr %24, align 8, !tbaa !9
  %26 = fptosi double %25 to i32
  store i32 %26, ptr %16, align 4, !tbaa !5
  %27 = getelementptr inbounds i8, ptr %7, i64 16
  %28 = load double, ptr %27, align 8, !tbaa !9
  %29 = fptosi double %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
  %.146 = select i1 %30, ptr %3, ptr %16
  %.pn = load i32, ptr %.146, align 4, !tbaa !5
  %.0 = mul nsw i32 %.pn, %29
  %.0123 = 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, %.0123
  %or.cond148 = select i1 %43, i1 true, i1 %44
  br i1 %or.cond148, label %.thread, label %45

45:                                               ; preds = %41
  %46 = load i32, ptr %6, align 4, !tbaa !5
  %47 = tail call i32 @llvm.smax.i32(i32 %.0123, 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 ]
  %.ph154.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 %.ph154.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 %75

60:                                               ; preds = %55
  %61 = sitofp i32 %.0 to double
  store double %61, ptr %11, align 8, !tbaa !9
  br i1 %19, label %75, label %62

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

66:                                               ; preds = %62
  %.not141 = icmp ule i32 %36, %42
  %or.cond156.not = and i1 %30, %.not141
  br i1 %or.cond156.not, label %70, label %67

67:                                               ; preds = %66
  %68 = tail call i32 @llvm.umax.i32(i32 %36, i32 %39)
  %.not157 = xor i1 %31, true
  %.not142 = icmp ugt i32 %39, %42
  %or.cond158 = or i1 %.not142, %.not157
  %.not143 = icmp slt i32 %42, %26
  %.not145 = icmp sgt i32 %68, %26
  %69 = and i1 %.not143, %.not145
  %or.cond160 = select i1 %or.cond158, i1 %69, i1 false
  br i1 %or.cond160, label %72, label %70

70:                                               ; preds = %67, %66
  %71 = getelementptr inbounds i8, ptr %7, i64 40
  call void @dgemqrt_(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 %71, ptr noundef nonnull %17, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %13) #4
  br label %74

72:                                               ; preds = %67
  %73 = getelementptr inbounds i8, ptr %7, i64 40
  call void @dlamtsqr_(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 %73, 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 %74

74:                                               ; preds = %72, %70
  store double %61, ptr %11, align 8, !tbaa !9
  br label %75

75:                                               ; preds = %62, %60, %74, %.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 @dgemqrt_(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 @dlamtsqr_(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, !10, i64 0}
!10 = !{!"double", !7, i64 0}


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