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

; 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 @dgemlq_(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 %37, 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 %105

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

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

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

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

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

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

147:                                              ; preds = %136, %126
  br label %149

148:                                              ; preds = %110, %105
  store i32 1, ptr %41, align 4, !tbaa !9
  br label %149

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

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

156:                                              ; preds = %153
  %157 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -1, ptr %157, align 4, !tbaa !9
  br label %249

158:                                              ; preds = %153, %149
  %159 = load i32, ptr %35, align 4, !tbaa !9
  %160 = icmp ne i32 %159, 0
  br i1 %160, label %166, label %161

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

164:                                              ; preds = %161
  %165 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -2, ptr %165, align 4, !tbaa !9
  br label %248

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

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

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

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

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

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

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

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

195:                                              ; preds = %189
  br label %199

196:                                              ; preds = %189
  %197 = load ptr, ptr %19, align 8, !tbaa !5
  %198 = load i32, ptr %197, align 4, !tbaa !9
  br label %199

199:                                              ; preds = %196, %195
  %200 = phi i32 [ 1, %195 ], [ %198, %196 ]
  %201 = icmp slt i32 %191, %200
  br i1 %201, label %202, label %204

202:                                              ; preds = %199
  %203 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -7, ptr %203, align 4, !tbaa !9
  br label %244

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

208:                                              ; preds = %204
  %209 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -9, ptr %209, align 4, !tbaa !9
  br label %243

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

216:                                              ; preds = %210
  br label %220

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

220:                                              ; preds = %217, %216
  %221 = phi i32 [ 1, %216 ], [ %219, %217 ]
  %222 = icmp slt i32 %212, %221
  br i1 %222, label %223, label %225

223:                                              ; preds = %220
  %224 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -11, ptr %224, align 4, !tbaa !9
  br label %242

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

230:                                              ; preds = %225
  br label %233

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

233:                                              ; preds = %231, %230
  %234 = phi i32 [ 1, %230 ], [ %232, %231 ]
  %235 = icmp slt i32 %227, %234
  br i1 %235, label %236, label %241

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

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

241:                                              ; preds = %239, %236, %233
  br label %242

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

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

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

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

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

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

248:                                              ; preds = %247, %164
  br label %249

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

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

258:                                              ; preds = %253, %249
  %259 = load ptr, ptr %28, align 8, !tbaa !5
  %260 = load i32, ptr %259, align 4, !tbaa !9
  %261 = icmp ne i32 %260, 0
  br i1 %261, label %262, label %267

262:                                              ; preds = %258
  %263 = load ptr, ptr %28, align 8, !tbaa !5
  %264 = load i32, ptr %263, align 4, !tbaa !9
  %265 = sub nsw i32 0, %264
  store i32 %265, ptr %33, align 4, !tbaa !9
  %266 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %33, i32 noundef 6)
  store i32 1, ptr %44, align 4
  br label %397

267:                                              ; preds = %258
  %268 = load i32, ptr %43, align 4, !tbaa !9
  %269 = icmp ne i32 %268, 0
  br i1 %269, label %270, label %271

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

271:                                              ; preds = %267
  br label %272

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

278:                                              ; preds = %272
  %279 = load ptr, ptr %17, align 8, !tbaa !5
  %280 = load i32, ptr %279, align 4, !tbaa !9
  br label %284

281:                                              ; preds = %272
  %282 = load ptr, ptr %18, align 8, !tbaa !5
  %283 = load i32, ptr %282, align 4, !tbaa !9
  br label %284

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

290:                                              ; preds = %284
  %291 = load i32, ptr %33, align 4, !tbaa !9
  br label %295

292:                                              ; preds = %284
  %293 = load ptr, ptr %19, align 8, !tbaa !5
  %294 = load i32, ptr %293, align 4, !tbaa !9
  br label %295

295:                                              ; preds = %292, %290
  %296 = phi i32 [ %291, %290 ], [ %294, %292 ]
  %297 = icmp eq i32 %296, 0
  br i1 %297, label %298, label %299

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

299:                                              ; preds = %295
  %300 = load ptr, ptr %17, align 8, !tbaa !5
  %301 = load i32, ptr %300, align 4, !tbaa !9
  %302 = load ptr, ptr %18, align 8, !tbaa !5
  %303 = load i32, ptr %302, align 4, !tbaa !9
  %304 = icmp sge i32 %301, %303
  br i1 %304, label %305, label %308

305:                                              ; preds = %299
  %306 = load ptr, ptr %17, align 8, !tbaa !5
  %307 = load i32, ptr %306, align 4, !tbaa !9
  br label %311

308:                                              ; preds = %299
  %309 = load ptr, ptr %18, align 8, !tbaa !5
  %310 = load i32, ptr %309, align 4, !tbaa !9
  br label %311

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

315:                                              ; preds = %311
  %316 = load ptr, ptr %17, align 8, !tbaa !5
  %317 = load i32, ptr %316, align 4, !tbaa !9
  %318 = load ptr, ptr %19, align 8, !tbaa !5
  %319 = load i32, ptr %318, align 4, !tbaa !9
  %320 = icmp sle i32 %317, %319
  br i1 %320, label %349, label %321

321:                                              ; preds = %315, %311
  %322 = load i32, ptr %36, align 4, !tbaa !9
  %323 = icmp ne i32 %322, 0
  br i1 %323, label %324, label %330

324:                                              ; preds = %321
  %325 = load ptr, ptr %18, align 8, !tbaa !5
  %326 = load i32, ptr %325, align 4, !tbaa !9
  %327 = load ptr, ptr %19, align 8, !tbaa !5
  %328 = load i32, ptr %327, align 4, !tbaa !9
  %329 = icmp sle i32 %326, %328
  br i1 %329, label %349, label %330

330:                                              ; preds = %324, %321
  %331 = load i32, ptr %38, align 4, !tbaa !9
  %332 = load ptr, ptr %19, align 8, !tbaa !5
  %333 = load i32, ptr %332, align 4, !tbaa !9
  %334 = icmp sle i32 %331, %333
  br i1 %334, label %349, label %335

335:                                              ; preds = %330
  %336 = load i32, ptr %38, align 4, !tbaa !9
  %337 = load i32, ptr %33, align 4, !tbaa !9
  %338 = load ptr, ptr %19, align 8, !tbaa !5
  %339 = load i32, ptr %338, align 4, !tbaa !9
  %340 = icmp sge i32 %337, %339
  br i1 %340, label %341, label %343

341:                                              ; preds = %335
  %342 = load i32, ptr %33, align 4, !tbaa !9
  br label %346

343:                                              ; preds = %335
  %344 = load ptr, ptr %19, align 8, !tbaa !5
  %345 = load i32, ptr %344, align 4, !tbaa !9
  br label %346

346:                                              ; preds = %343, %341
  %347 = phi i32 [ %342, %341 ], [ %345, %343 ]
  %348 = icmp sge i32 %336, %347
  br i1 %348, label %349, label %370

349:                                              ; preds = %346, %330, %324, %315
  %350 = load ptr, ptr %15, align 8, !tbaa !5
  %351 = load ptr, ptr %16, align 8, !tbaa !5
  %352 = load ptr, ptr %17, align 8, !tbaa !5
  %353 = load ptr, ptr %18, align 8, !tbaa !5
  %354 = load ptr, ptr %19, align 8, !tbaa !5
  %355 = load ptr, ptr %20, align 8, !tbaa !5
  %356 = load i32, ptr %30, align 4, !tbaa !9
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds double, ptr %355, i64 %357
  %359 = load ptr, ptr %21, align 8, !tbaa !5
  %360 = load ptr, ptr %22, align 8, !tbaa !5
  %361 = getelementptr inbounds double, ptr %360, i64 6
  %362 = load ptr, ptr %24, align 8, !tbaa !5
  %363 = load i32, ptr %32, align 4, !tbaa !9
  %364 = sext i32 %363 to i64
  %365 = getelementptr inbounds double, ptr %362, i64 %364
  %366 = load ptr, ptr %25, align 8, !tbaa !5
  %367 = load ptr, ptr %26, align 8, !tbaa !5
  %368 = getelementptr inbounds double, ptr %367, i64 1
  %369 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dgemlqt_(ptr noundef %350, ptr noundef %351, ptr noundef %352, ptr noundef %353, ptr noundef %354, ptr noundef %37, ptr noundef %358, ptr noundef %359, ptr noundef %361, ptr noundef %37, ptr noundef %365, ptr noundef %366, ptr noundef %368, ptr noundef %369)
  br label %392

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

392:                                              ; preds = %370, %349
  %393 = load i32, ptr %40, align 4, !tbaa !9
  %394 = sitofp i32 %393 to double
  %395 = load ptr, ptr %26, align 8, !tbaa !5
  %396 = getelementptr inbounds double, ptr %395, i64 1
  store double %394, ptr %396, align 8, !tbaa !11
  store i32 1, ptr %44, align 4
  br label %397

397:                                              ; preds = %392, %298, %270, %262
  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 @dgemlqt_(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 @dlamswlq_(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 @dgemlq_(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
  %.160 = select i1 %30, ptr %2, ptr %3
  %.161 = select i1 %30, ptr %3, ptr %2
  %.pn = load i32, ptr %.161, align 4, !tbaa !5
  %.0 = mul nsw i32 %.pn, %26
  %.0124 = load i32, ptr %.160, 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, %.0124
  %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
  %spec.select = tail call i32 @llvm.umax.i32(i32 %42, i32 1)
  %47 = icmp slt i32 %46, %spec.select
  br i1 %47, label %.thread, label %48

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

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

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

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

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

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

65:                                               ; preds = %61
  %.not142 = icmp ule i32 %36, %42
  %or.cond156.not = and i1 %30, %.not142
  br i1 %or.cond156.not, label %69, label %66

66:                                               ; preds = %65
  %67 = tail call i32 @llvm.umax.i32(i32 %36, i32 %39)
  %.not157 = xor i1 %31, true
  %.not143 = icmp ugt i32 %39, %42
  %or.cond158 = or i1 %.not143, %.not157
  %.not144 = icmp slt i32 %42, %29
  %.not146 = icmp sgt i32 %67, %29
  %68 = and i1 %.not144, %.not146
  %or.cond162 = select i1 %or.cond158, i1 %68, i1 false
  br i1 %or.cond162, label %71, label %69

69:                                               ; preds = %66, %65
  %70 = getelementptr inbounds i8, ptr %7, i64 40
  call void @dgemlqt_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %16, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %70, ptr noundef nonnull %16, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %13) #4
  br label %73

71:                                               ; preds = %66
  %72 = getelementptr inbounds i8, ptr %7, i64 40
  call void @dlamswlq_(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 %72, ptr noundef nonnull %16, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %13) #4
  br label %73

73:                                               ; preds = %71, %69
  store double %60, ptr %11, align 8, !tbaa !9
  br label %74

74:                                               ; preds = %61, %59, %73, %.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 @dgemlqt_(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 @dlamswlq_(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