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

; 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.doublecomplex = type { double, double }

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

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

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

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

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

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

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

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

149:                                              ; preds = %138, %128
  br label %151

150:                                              ; preds = %112, %107
  store i32 1, ptr %41, align 4, !tbaa !9
  br label %151

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

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

158:                                              ; preds = %155
  %159 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -1, ptr %159, align 4, !tbaa !9
  br label %251

160:                                              ; preds = %155, %151
  %161 = load i32, ptr %35, align 4, !tbaa !9
  %162 = icmp ne i32 %161, 0
  br i1 %162, label %168, label %163

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

166:                                              ; preds = %163
  %167 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -2, ptr %167, align 4, !tbaa !9
  br label %250

168:                                              ; preds = %163, %160
  %169 = load ptr, ptr %17, align 8, !tbaa !5
  %170 = load i32, ptr %169, align 4, !tbaa !9
  %171 = icmp slt i32 %170, 0
  br i1 %171, label %172, label %174

172:                                              ; preds = %168
  %173 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -3, ptr %173, align 4, !tbaa !9
  br label %249

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

178:                                              ; preds = %174
  %179 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -4, ptr %179, align 4, !tbaa !9
  br label %248

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

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

189:                                              ; preds = %184, %180
  %190 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -5, ptr %190, align 4, !tbaa !9
  br label %247

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

197:                                              ; preds = %191
  br label %201

198:                                              ; preds = %191
  %199 = load ptr, ptr %19, align 8, !tbaa !5
  %200 = load i32, ptr %199, align 4, !tbaa !9
  br label %201

201:                                              ; preds = %198, %197
  %202 = phi i32 [ 1, %197 ], [ %200, %198 ]
  %203 = icmp slt i32 %193, %202
  br i1 %203, label %204, label %206

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

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

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

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

218:                                              ; preds = %212
  br label %222

219:                                              ; preds = %212
  %220 = load ptr, ptr %17, align 8, !tbaa !5
  %221 = load i32, ptr %220, align 4, !tbaa !9
  br label %222

222:                                              ; preds = %219, %218
  %223 = phi i32 [ 1, %218 ], [ %221, %219 ]
  %224 = icmp slt i32 %214, %223
  br i1 %224, label %225, label %227

225:                                              ; preds = %222
  %226 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -11, ptr %226, align 4, !tbaa !9
  br label %244

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

232:                                              ; preds = %227
  br label %235

233:                                              ; preds = %227
  %234 = load i32, ptr %40, align 4, !tbaa !9
  br label %235

235:                                              ; preds = %233, %232
  %236 = phi i32 [ 1, %232 ], [ %234, %233 ]
  %237 = icmp slt i32 %229, %236
  br i1 %237, label %238, label %243

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

241:                                              ; preds = %238
  %242 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -13, ptr %242, align 4, !tbaa !9
  br label %243

243:                                              ; preds = %241, %238, %235
  br label %244

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

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

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

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

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

249:                                              ; preds = %248, %172
  br label %250

250:                                              ; preds = %249, %166
  br label %251

251:                                              ; preds = %250, %158
  %252 = load ptr, ptr %28, align 8, !tbaa !5
  %253 = load i32, ptr %252, align 4, !tbaa !9
  %254 = icmp eq i32 %253, 0
  br i1 %254, label %255, label %264

255:                                              ; preds = %251
  %256 = load i32, ptr %40, align 4, !tbaa !9
  %257 = sitofp i32 %256 to double
  %258 = load ptr, ptr %26, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.doublecomplex, ptr %258, i64 1
  %260 = getelementptr inbounds %struct.doublecomplex, ptr %259, i32 0, i32 0
  store double %257, ptr %260, align 8, !tbaa !11
  %261 = load ptr, ptr %26, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.doublecomplex, ptr %261, i64 1
  %263 = getelementptr inbounds %struct.doublecomplex, ptr %262, i32 0, i32 1
  store double 0.000000e+00, ptr %263, align 8, !tbaa !14
  br label %264

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

268:                                              ; preds = %264
  %269 = load ptr, ptr %28, align 8, !tbaa !5
  %270 = load i32, ptr %269, align 4, !tbaa !9
  %271 = sub nsw i32 0, %270
  store i32 %271, ptr %33, align 4, !tbaa !9
  %272 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %33, i32 noundef 6)
  store i32 1, ptr %44, align 4
  br label %407

273:                                              ; preds = %264
  %274 = load i32, ptr %43, align 4, !tbaa !9
  %275 = icmp ne i32 %274, 0
  br i1 %275, label %276, label %277

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

277:                                              ; preds = %273
  br label %278

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

284:                                              ; preds = %278
  %285 = load ptr, ptr %17, align 8, !tbaa !5
  %286 = load i32, ptr %285, align 4, !tbaa !9
  br label %290

287:                                              ; preds = %278
  %288 = load ptr, ptr %18, align 8, !tbaa !5
  %289 = load i32, ptr %288, align 4, !tbaa !9
  br label %290

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

296:                                              ; preds = %290
  %297 = load i32, ptr %33, align 4, !tbaa !9
  br label %301

298:                                              ; preds = %290
  %299 = load ptr, ptr %19, align 8, !tbaa !5
  %300 = load i32, ptr %299, align 4, !tbaa !9
  br label %301

301:                                              ; preds = %298, %296
  %302 = phi i32 [ %297, %296 ], [ %300, %298 ]
  %303 = icmp eq i32 %302, 0
  br i1 %303, label %304, label %305

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

305:                                              ; preds = %301
  %306 = load ptr, ptr %17, align 8, !tbaa !5
  %307 = load i32, ptr %306, align 4, !tbaa !9
  %308 = load ptr, ptr %18, align 8, !tbaa !5
  %309 = load i32, ptr %308, align 4, !tbaa !9
  %310 = icmp sge i32 %307, %309
  br i1 %310, label %311, label %314

311:                                              ; preds = %305
  %312 = load ptr, ptr %17, align 8, !tbaa !5
  %313 = load i32, ptr %312, align 4, !tbaa !9
  br label %317

314:                                              ; preds = %305
  %315 = load ptr, ptr %18, align 8, !tbaa !5
  %316 = load i32, ptr %315, align 4, !tbaa !9
  br label %317

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

321:                                              ; preds = %317
  %322 = load ptr, ptr %17, 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 %355, label %327

327:                                              ; preds = %321, %317
  %328 = load i32, ptr %36, align 4, !tbaa !9
  %329 = icmp ne i32 %328, 0
  br i1 %329, label %330, label %336

330:                                              ; preds = %327
  %331 = load ptr, ptr %18, align 8, !tbaa !5
  %332 = load i32, ptr %331, align 4, !tbaa !9
  %333 = load ptr, ptr %19, align 8, !tbaa !5
  %334 = load i32, ptr %333, align 4, !tbaa !9
  %335 = icmp sle i32 %332, %334
  br i1 %335, label %355, label %336

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

341:                                              ; preds = %336
  %342 = load i32, ptr %38, align 4, !tbaa !9
  %343 = load i32, ptr %33, align 4, !tbaa !9
  %344 = load ptr, ptr %19, align 8, !tbaa !5
  %345 = load i32, ptr %344, align 4, !tbaa !9
  %346 = icmp sge i32 %343, %345
  br i1 %346, label %347, label %349

347:                                              ; preds = %341
  %348 = load i32, ptr %33, align 4, !tbaa !9
  br label %352

349:                                              ; preds = %341
  %350 = load ptr, ptr %19, align 8, !tbaa !5
  %351 = load i32, ptr %350, align 4, !tbaa !9
  br label %352

352:                                              ; preds = %349, %347
  %353 = phi i32 [ %348, %347 ], [ %351, %349 ]
  %354 = icmp sge i32 %342, %353
  br i1 %354, label %355, label %376

355:                                              ; preds = %352, %336, %330, %321
  %356 = load ptr, ptr %15, align 8, !tbaa !5
  %357 = load ptr, ptr %16, align 8, !tbaa !5
  %358 = load ptr, ptr %17, align 8, !tbaa !5
  %359 = load ptr, ptr %18, align 8, !tbaa !5
  %360 = load ptr, ptr %19, align 8, !tbaa !5
  %361 = load ptr, ptr %20, align 8, !tbaa !5
  %362 = load i32, ptr %30, align 4, !tbaa !9
  %363 = sext i32 %362 to i64
  %364 = getelementptr inbounds %struct.doublecomplex, ptr %361, i64 %363
  %365 = load ptr, ptr %21, align 8, !tbaa !5
  %366 = load ptr, ptr %22, align 8, !tbaa !5
  %367 = getelementptr inbounds %struct.doublecomplex, ptr %366, i64 6
  %368 = load ptr, ptr %24, align 8, !tbaa !5
  %369 = load i32, ptr %32, align 4, !tbaa !9
  %370 = sext i32 %369 to i64
  %371 = getelementptr inbounds %struct.doublecomplex, ptr %368, i64 %370
  %372 = load ptr, ptr %25, align 8, !tbaa !5
  %373 = load ptr, ptr %26, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct.doublecomplex, ptr %373, i64 1
  %375 = load ptr, ptr %28, align 8, !tbaa !5
  call void @zgemlqt_(ptr noundef %356, ptr noundef %357, ptr noundef %358, ptr noundef %359, ptr noundef %360, ptr noundef %37, ptr noundef %364, ptr noundef %365, ptr noundef %367, ptr noundef %37, ptr noundef %371, ptr noundef %372, ptr noundef %374, ptr noundef %375)
  br label %398

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

398:                                              ; preds = %376, %355
  %399 = load i32, ptr %40, align 4, !tbaa !9
  %400 = sitofp i32 %399 to double
  %401 = load ptr, ptr %26, align 8, !tbaa !5
  %402 = getelementptr inbounds %struct.doublecomplex, ptr %401, i64 1
  %403 = getelementptr inbounds %struct.doublecomplex, ptr %402, i32 0, i32 0
  store double %400, ptr %403, align 8, !tbaa !11
  %404 = load ptr, ptr %26, align 8, !tbaa !5
  %405 = getelementptr inbounds %struct.doublecomplex, ptr %404, i64 1
  %406 = getelementptr inbounds %struct.doublecomplex, ptr %405, i32 0, i32 1
  store double 0.000000e+00, ptr %406, align 8, !tbaa !14
  store i32 1, ptr %44, align 4
  br label %407

407:                                              ; preds = %398, %304, %276, %268
  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 @zgemlqt_(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 @zlamswlq_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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


; 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 @zgemlq_(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 16
  %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 32
  %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
  %.162 = select i1 %30, ptr %2, ptr %3
  %.163 = select i1 %30, ptr %3, ptr %2
  %.pn = load i32, ptr %.163, align 4, !tbaa !5
  %.0 = mul nsw i32 %.pn, %26
  %.0126 = load i32, ptr %.162, 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, %.0126
  %or.cond150 = select i1 %43, i1 true, i1 %44
  br i1 %or.cond150, label %.thread, label %45

45:                                               ; preds = %41
  %46 = load i32, ptr %6, align 4, !tbaa !5
  %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.select151 = tail call i32 @llvm.umax.i32(i32 %36, i32 1)
  %53 = icmp slt i32 %52, %spec.select151
  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 ]
  %.ph156.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 %.ph156.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 %75

59:                                               ; preds = %54
  %60 = sitofp i32 %.0 to double
  store double %60, ptr %11, align 8, !tbaa !9
  %61 = getelementptr inbounds i8, ptr %11, i64 8
  store double 0.000000e+00, ptr %61, align 8, !tbaa !12
  br i1 %19, label %75, label %62

62:                                               ; preds = %59
  %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
  %.not144 = icmp ule i32 %36, %42
  %or.cond158.not = and i1 %30, %.not144
  br i1 %or.cond158.not, label %70, label %67

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

70:                                               ; preds = %67, %66
  %71 = getelementptr inbounds i8, ptr %7, i64 80
  call void @zgemlqt_(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 %71, ptr noundef nonnull %16, 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 80
  call void @zlamswlq_(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 %16, 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 %60, ptr %11, align 8, !tbaa !9
  store double 0.000000e+00, ptr %61, align 8, !tbaa !12
  br label %75

75:                                               ; preds = %62, %59, %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 @zgemlqt_(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 @zlamswlq_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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


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