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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.complex = type { float, float }

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

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

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

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

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

113:                                              ; preds = %108
  %114 = load i32, ptr %40, align 4, !tbaa !9
  %115 = load ptr, ptr %19, align 8, !tbaa !5
  %116 = load i32, ptr %115, align 4, !tbaa !9
  %117 = icmp sgt i32 %114, %116
  br i1 %117, label %118, label %151

118:                                              ; preds = %113
  %119 = load i32, ptr %40, 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 = load i32, ptr %39, align 4, !tbaa !9
  %124 = load ptr, ptr %19, align 8, !tbaa !5
  %125 = load i32, ptr %124, align 4, !tbaa !9
  %126 = sub nsw i32 %123, %125
  %127 = srem i32 %122, %126
  %128 = icmp eq i32 %127, 0
  br i1 %128, label %129, label %139

129:                                              ; preds = %118
  %130 = load i32, ptr %40, 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 = load i32, ptr %39, align 4, !tbaa !9
  %135 = load ptr, ptr %19, align 8, !tbaa !5
  %136 = load i32, ptr %135, align 4, !tbaa !9
  %137 = sub nsw i32 %134, %136
  %138 = sdiv i32 %133, %137
  store i32 %138, ptr %42, align 4, !tbaa !9
  br label %150

139:                                              ; preds = %118
  %140 = load i32, ptr %40, 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 = load i32, ptr %39, align 4, !tbaa !9
  %145 = load ptr, ptr %19, align 8, !tbaa !5
  %146 = load i32, ptr %145, align 4, !tbaa !9
  %147 = sub nsw i32 %144, %146
  %148 = sdiv i32 %143, %147
  %149 = add nsw i32 %148, 1
  store i32 %149, ptr %42, align 4, !tbaa !9
  br label %150

150:                                              ; preds = %139, %129
  br label %152

151:                                              ; preds = %113, %108
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %152

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

156:                                              ; preds = %152
  %157 = load i32, ptr %37, align 4, !tbaa !9
  %158 = icmp ne i32 %157, 0
  br i1 %158, label %161, label %159

159:                                              ; preds = %156
  %160 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -1, ptr %160, align 4, !tbaa !9
  br label %252

161:                                              ; preds = %156, %152
  %162 = load i32, ptr %36, align 4, !tbaa !9
  %163 = icmp ne i32 %162, 0
  br i1 %163, label %169, label %164

164:                                              ; preds = %161
  %165 = load i32, ptr %43, align 4, !tbaa !9
  %166 = icmp ne i32 %165, 0
  br i1 %166, label %169, label %167

167:                                              ; preds = %164
  %168 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -2, ptr %168, align 4, !tbaa !9
  br label %251

169:                                              ; preds = %164, %161
  %170 = load ptr, ptr %17, align 8, !tbaa !5
  %171 = load i32, ptr %170, align 4, !tbaa !9
  %172 = icmp slt i32 %171, 0
  br i1 %172, label %173, label %175

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

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

179:                                              ; preds = %175
  %180 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -4, ptr %180, align 4, !tbaa !9
  br label %249

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

185:                                              ; preds = %181
  %186 = load ptr, ptr %19, align 8, !tbaa !5
  %187 = load i32, ptr %186, align 4, !tbaa !9
  %188 = load i32, ptr %40, align 4, !tbaa !9
  %189 = icmp sgt i32 %187, %188
  br i1 %189, label %190, label %192

190:                                              ; preds = %185, %181
  %191 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -5, ptr %191, align 4, !tbaa !9
  br label %248

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

198:                                              ; preds = %192
  br label %202

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

202:                                              ; preds = %199, %198
  %203 = phi i32 [ 1, %198 ], [ %201, %199 ]
  %204 = icmp slt i32 %194, %203
  br i1 %204, label %205, label %207

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

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

211:                                              ; preds = %207
  %212 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -9, ptr %212, align 4, !tbaa !9
  br label %246

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

219:                                              ; preds = %213
  br label %223

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

223:                                              ; preds = %220, %219
  %224 = phi i32 [ 1, %219 ], [ %222, %220 ]
  %225 = icmp slt i32 %215, %224
  br i1 %225, label %226, label %228

226:                                              ; preds = %223
  %227 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -11, ptr %227, align 4, !tbaa !9
  br label %245

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

233:                                              ; preds = %228
  br label %236

234:                                              ; preds = %228
  %235 = load i32, ptr %41, align 4, !tbaa !9
  br label %236

236:                                              ; preds = %234, %233
  %237 = phi i32 [ 1, %233 ], [ %235, %234 ]
  %238 = icmp slt i32 %230, %237
  br i1 %238, label %239, label %244

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

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

244:                                              ; preds = %242, %239, %236
  br label %245

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

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

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

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

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

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

251:                                              ; preds = %250, %167
  br label %252

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

256:                                              ; preds = %252
  %257 = load i32, ptr %41, align 4, !tbaa !9
  %258 = sitofp i32 %257 to float
  store float %258, ptr %34, align 4, !tbaa !14
  %259 = load float, ptr %34, align 4, !tbaa !14
  %260 = load ptr, ptr %26, align 8, !tbaa !5
  %261 = getelementptr inbounds %struct.complex, ptr %260, i64 1
  %262 = getelementptr inbounds %struct.complex, ptr %261, i32 0, i32 0
  store float %259, ptr %262, align 4, !tbaa !11
  %263 = load ptr, ptr %26, align 8, !tbaa !5
  %264 = getelementptr inbounds %struct.complex, ptr %263, i64 1
  %265 = getelementptr inbounds %struct.complex, ptr %264, i32 0, i32 1
  store float 0.000000e+00, ptr %265, align 4, !tbaa !15
  br label %266

266:                                              ; preds = %256, %252
  %267 = load ptr, ptr %28, align 8, !tbaa !5
  %268 = load i32, ptr %267, align 4, !tbaa !9
  %269 = icmp ne i32 %268, 0
  br i1 %269, label %270, label %275

270:                                              ; preds = %266
  %271 = load ptr, ptr %28, align 8, !tbaa !5
  %272 = load i32, ptr %271, align 4, !tbaa !9
  %273 = sub nsw i32 0, %272
  store i32 %273, ptr %33, align 4, !tbaa !9
  %274 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %33, i32 noundef 6)
  store i32 1, ptr %45, align 4
  br label %410

275:                                              ; preds = %266
  %276 = load i32, ptr %44, align 4, !tbaa !9
  %277 = icmp ne i32 %276, 0
  br i1 %277, label %278, label %279

278:                                              ; preds = %275
  store i32 1, ptr %45, align 4
  br label %410

279:                                              ; preds = %275
  br label %280

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

286:                                              ; preds = %280
  %287 = load ptr, ptr %17, align 8, !tbaa !5
  %288 = load i32, ptr %287, align 4, !tbaa !9
  br label %292

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

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

298:                                              ; preds = %292
  %299 = load i32, ptr %33, align 4, !tbaa !9
  br label %303

300:                                              ; preds = %292
  %301 = load ptr, ptr %19, align 8, !tbaa !5
  %302 = load i32, ptr %301, align 4, !tbaa !9
  br label %303

303:                                              ; preds = %300, %298
  %304 = phi i32 [ %299, %298 ], [ %302, %300 ]
  %305 = icmp eq i32 %304, 0
  br i1 %305, label %306, label %307

306:                                              ; preds = %303
  store i32 1, ptr %45, align 4
  br label %410

307:                                              ; preds = %303
  %308 = load ptr, ptr %17, align 8, !tbaa !5
  %309 = load i32, ptr %308, align 4, !tbaa !9
  %310 = load ptr, ptr %18, align 8, !tbaa !5
  %311 = load i32, ptr %310, align 4, !tbaa !9
  %312 = icmp sge i32 %309, %311
  br i1 %312, label %313, label %316

313:                                              ; preds = %307
  %314 = load ptr, ptr %17, align 8, !tbaa !5
  %315 = load i32, ptr %314, align 4, !tbaa !9
  br label %319

316:                                              ; preds = %307
  %317 = load ptr, ptr %18, align 8, !tbaa !5
  %318 = load i32, ptr %317, align 4, !tbaa !9
  br label %319

319:                                              ; preds = %316, %313
  %320 = phi i32 [ %315, %313 ], [ %318, %316 ]
  store i32 %320, ptr %33, align 4, !tbaa !9
  %321 = load i32, ptr %35, align 4, !tbaa !9
  %322 = icmp ne i32 %321, 0
  br i1 %322, label %323, label %329

323:                                              ; preds = %319
  %324 = load ptr, ptr %17, align 8, !tbaa !5
  %325 = load i32, ptr %324, align 4, !tbaa !9
  %326 = load ptr, ptr %19, align 8, !tbaa !5
  %327 = load i32, ptr %326, align 4, !tbaa !9
  %328 = icmp sle i32 %325, %327
  br i1 %328, label %357, label %329

329:                                              ; preds = %323, %319
  %330 = load i32, ptr %37, align 4, !tbaa !9
  %331 = icmp ne i32 %330, 0
  br i1 %331, label %332, label %338

332:                                              ; preds = %329
  %333 = load ptr, ptr %18, align 8, !tbaa !5
  %334 = load i32, ptr %333, align 4, !tbaa !9
  %335 = load ptr, ptr %19, align 8, !tbaa !5
  %336 = load i32, ptr %335, align 4, !tbaa !9
  %337 = icmp sle i32 %334, %336
  br i1 %337, label %357, label %338

338:                                              ; preds = %332, %329
  %339 = load i32, ptr %39, align 4, !tbaa !9
  %340 = load ptr, ptr %19, align 8, !tbaa !5
  %341 = load i32, ptr %340, align 4, !tbaa !9
  %342 = icmp sle i32 %339, %341
  br i1 %342, label %357, label %343

343:                                              ; preds = %338
  %344 = load i32, ptr %39, align 4, !tbaa !9
  %345 = load i32, ptr %33, align 4, !tbaa !9
  %346 = load ptr, ptr %19, align 8, !tbaa !5
  %347 = load i32, ptr %346, align 4, !tbaa !9
  %348 = icmp sge i32 %345, %347
  br i1 %348, label %349, label %351

349:                                              ; preds = %343
  %350 = load i32, ptr %33, align 4, !tbaa !9
  br label %354

351:                                              ; preds = %343
  %352 = load ptr, ptr %19, align 8, !tbaa !5
  %353 = load i32, ptr %352, align 4, !tbaa !9
  br label %354

354:                                              ; preds = %351, %349
  %355 = phi i32 [ %350, %349 ], [ %353, %351 ]
  %356 = icmp sge i32 %344, %355
  br i1 %356, label %357, label %378

357:                                              ; preds = %354, %338, %332, %323
  %358 = load ptr, ptr %15, align 8, !tbaa !5
  %359 = load ptr, ptr %16, align 8, !tbaa !5
  %360 = load ptr, ptr %17, align 8, !tbaa !5
  %361 = load ptr, ptr %18, align 8, !tbaa !5
  %362 = load ptr, ptr %19, align 8, !tbaa !5
  %363 = load ptr, ptr %20, align 8, !tbaa !5
  %364 = load i32, ptr %30, align 4, !tbaa !9
  %365 = sext i32 %364 to i64
  %366 = getelementptr inbounds %struct.complex, ptr %363, i64 %365
  %367 = load ptr, ptr %21, align 8, !tbaa !5
  %368 = load ptr, ptr %22, align 8, !tbaa !5
  %369 = getelementptr inbounds %struct.complex, ptr %368, i64 6
  %370 = load ptr, ptr %24, align 8, !tbaa !5
  %371 = load i32, ptr %32, align 4, !tbaa !9
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds %struct.complex, ptr %370, i64 %372
  %374 = load ptr, ptr %25, align 8, !tbaa !5
  %375 = load ptr, ptr %26, align 8, !tbaa !5
  %376 = getelementptr inbounds %struct.complex, ptr %375, i64 1
  %377 = load ptr, ptr %28, align 8, !tbaa !5
  call void @cgemlqt_(ptr noundef %358, ptr noundef %359, ptr noundef %360, ptr noundef %361, ptr noundef %362, ptr noundef %38, ptr noundef %366, ptr noundef %367, ptr noundef %369, ptr noundef %38, ptr noundef %373, ptr noundef %374, ptr noundef %376, ptr noundef %377)
  br label %400

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

400:                                              ; preds = %378, %357
  %401 = load i32, ptr %41, align 4, !tbaa !9
  %402 = sitofp i32 %401 to float
  store float %402, ptr %34, align 4, !tbaa !14
  %403 = load float, ptr %34, align 4, !tbaa !14
  %404 = load ptr, ptr %26, align 8, !tbaa !5
  %405 = getelementptr inbounds %struct.complex, ptr %404, i64 1
  %406 = getelementptr inbounds %struct.complex, ptr %405, i32 0, i32 0
  store float %403, ptr %406, align 4, !tbaa !11
  %407 = load ptr, ptr %26, align 8, !tbaa !5
  %408 = getelementptr inbounds %struct.complex, ptr %407, i64 1
  %409 = getelementptr inbounds %struct.complex, ptr %408, i32 0, i32 1
  store float 0.000000e+00, ptr %409, align 4, !tbaa !15
  store i32 1, ptr %45, align 4
  br label %410

410:                                              ; preds = %400, %306, %278, %270
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  ret void
}

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

declare i32 @lsame_(ptr noundef, ptr noundef) #2

declare i32 @xerbla_(ptr noundef, ptr noundef, i32 noundef) #2

declare void @cgemlqt_(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 @clamswlq_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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


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

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

; Function Attrs: nounwind uwtable
define dso_local void @cgemlq_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr nocapture noundef readonly %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13) local_unnamed_addr #0 {
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #4
  %18 = load i32, ptr %12, align 4, !tbaa !5
  %19 = icmp eq i32 %18, -1
  %20 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #4
  %21 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #4
  %22 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #4
  %23 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #4
  %24 = getelementptr inbounds i8, ptr %7, i64 8
  %25 = load float, ptr %24, align 4, !tbaa !9
  %26 = fptosi float %25 to i32
  store i32 %26, ptr %16, align 4, !tbaa !5
  %27 = getelementptr inbounds i8, ptr %7, i64 16
  %28 = load float, ptr %27, align 4, !tbaa !9
  %29 = fptosi float %28 to i32
  store i32 %29, ptr %17, align 4, !tbaa !5
  %30 = icmp ne i32 %22, 0
  %.164 = select i1 %30, ptr %2, ptr %3
  %.165 = select i1 %30, ptr %3, ptr %2
  %.pn = load i32, ptr %.165, align 4, !tbaa !5
  %.0 = mul nsw i32 %.pn, %26
  %.0128 = load i32, ptr %.164, 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, %.0128
  %or.cond152 = select i1 %43, i1 true, i1 %44
  br i1 %or.cond152, 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.select153 = tail call i32 @llvm.umax.i32(i32 %36, i32 1)
  %53 = icmp slt i32 %52, %spec.select153
  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 ]
  %.ph158.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 %.ph158.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 float
  store float %60, ptr %11, align 4, !tbaa !9
  %61 = getelementptr inbounds i8, ptr %11, i64 4
  store float 0.000000e+00, ptr %61, align 4, !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
  %.not146 = icmp ule i32 %36, %42
  %or.cond160.not = and i1 %30, %.not146
  br i1 %or.cond160.not, label %70, label %67

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

70:                                               ; preds = %67, %66
  %71 = getelementptr inbounds i8, ptr %7, i64 40
  call void @cgemlqt_(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 40
  call void @clamswlq_(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 float %60, ptr %11, align 4, !tbaa !9
  store float 0.000000e+00, ptr %61, align 4, !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 @cgemlqt_(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 @clamswlq_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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


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