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

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

%struct.complex = type { float, float }

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

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

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

95:                                               ; preds = %91
  br label %99

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

99:                                               ; preds = %96, %95
  %100 = phi i32 [ 1, %95 ], [ %98, %96 ]
  store i32 %100, ptr %46, align 4, !tbaa !9
  br label %115

101:                                              ; preds = %14
  %102 = load i32, ptr %42, align 4, !tbaa !9
  %103 = icmp ne i32 %102, 0
  br i1 %103, label %104, label %114

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

108:                                              ; preds = %104
  br label %112

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

112:                                              ; preds = %109, %108
  %113 = phi i32 [ 1, %108 ], [ %111, %109 ]
  store i32 %113, ptr %46, align 4, !tbaa !9
  br label %114

114:                                              ; preds = %112, %101
  br label %115

115:                                              ; preds = %114, %99
  %116 = load i32, ptr %39, align 4, !tbaa !9
  %117 = icmp ne i32 %116, 0
  br i1 %117, label %123, label %118

118:                                              ; preds = %115
  %119 = load i32, ptr %42, align 4, !tbaa !9
  %120 = icmp ne i32 %119, 0
  br i1 %120, label %123, label %121

121:                                              ; preds = %118
  %122 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -1, ptr %122, align 4, !tbaa !9
  br label %211

123:                                              ; preds = %118, %115
  %124 = load i32, ptr %40, align 4, !tbaa !9
  %125 = icmp ne i32 %124, 0
  br i1 %125, label %131, label %126

126:                                              ; preds = %123
  %127 = load i32, ptr %45, align 4, !tbaa !9
  %128 = icmp ne i32 %127, 0
  br i1 %128, label %131, label %129

129:                                              ; preds = %126
  %130 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -2, ptr %130, align 4, !tbaa !9
  br label %210

131:                                              ; preds = %126, %123
  %132 = load ptr, ptr %17, align 8, !tbaa !5
  %133 = load i32, ptr %132, align 4, !tbaa !9
  %134 = icmp slt i32 %133, 0
  br i1 %134, label %135, label %137

135:                                              ; preds = %131
  %136 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -3, ptr %136, align 4, !tbaa !9
  br label %209

137:                                              ; preds = %131
  %138 = load ptr, ptr %18, align 8, !tbaa !5
  %139 = load i32, ptr %138, align 4, !tbaa !9
  %140 = icmp slt i32 %139, 0
  br i1 %140, label %141, label %143

141:                                              ; preds = %137
  %142 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -4, ptr %142, align 4, !tbaa !9
  br label %208

143:                                              ; preds = %137
  %144 = load ptr, ptr %19, align 8, !tbaa !5
  %145 = load i32, ptr %144, align 4, !tbaa !9
  %146 = icmp slt i32 %145, 0
  br i1 %146, label %147, label %149

147:                                              ; preds = %143
  %148 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -5, ptr %148, align 4, !tbaa !9
  br label %207

149:                                              ; preds = %143
  %150 = load ptr, ptr %20, align 8, !tbaa !5
  %151 = load i32, ptr %150, align 4, !tbaa !9
  %152 = icmp slt i32 %151, 1
  br i1 %152, label %163, label %153

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

159:                                              ; preds = %153
  %160 = load ptr, ptr %19, align 8, !tbaa !5
  %161 = load i32, ptr %160, align 4, !tbaa !9
  %162 = icmp sgt i32 %161, 0
  br i1 %162, label %163, label %165

163:                                              ; preds = %159, %149
  %164 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -6, ptr %164, align 4, !tbaa !9
  br label %206

165:                                              ; preds = %159, %153
  %166 = load ptr, ptr %22, align 8, !tbaa !5
  %167 = load i32, ptr %166, align 4, !tbaa !9
  %168 = load ptr, ptr %19, align 8, !tbaa !5
  %169 = load i32, ptr %168, align 4, !tbaa !9
  %170 = icmp sge i32 1, %169
  br i1 %170, label %171, label %172

171:                                              ; preds = %165
  br label %175

172:                                              ; preds = %165
  %173 = load ptr, ptr %19, align 8, !tbaa !5
  %174 = load i32, ptr %173, align 4, !tbaa !9
  br label %175

175:                                              ; preds = %172, %171
  %176 = phi i32 [ 1, %171 ], [ %174, %172 ]
  %177 = icmp slt i32 %167, %176
  br i1 %177, label %178, label %180

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

180:                                              ; preds = %175
  %181 = load ptr, ptr %24, align 8, !tbaa !5
  %182 = load i32, ptr %181, align 4, !tbaa !9
  %183 = load ptr, ptr %20, align 8, !tbaa !5
  %184 = load i32, ptr %183, align 4, !tbaa !9
  %185 = icmp slt i32 %182, %184
  br i1 %185, label %186, label %188

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

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

194:                                              ; preds = %188
  br label %198

195:                                              ; preds = %188
  %196 = load ptr, ptr %17, align 8, !tbaa !5
  %197 = load i32, ptr %196, align 4, !tbaa !9
  br label %198

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

201:                                              ; preds = %198
  %202 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -12, ptr %202, align 4, !tbaa !9
  br label %203

203:                                              ; preds = %201, %198
  br label %204

204:                                              ; preds = %203, %186
  br label %205

205:                                              ; preds = %204, %178
  br label %206

206:                                              ; preds = %205, %163
  br label %207

207:                                              ; preds = %206, %147
  br label %208

208:                                              ; preds = %207, %141
  br label %209

209:                                              ; preds = %208, %135
  br label %210

210:                                              ; preds = %209, %129
  br label %211

211:                                              ; preds = %210, %121
  %212 = load ptr, ptr %28, align 8, !tbaa !5
  %213 = load i32, ptr %212, align 4, !tbaa !9
  %214 = icmp ne i32 %213, 0
  br i1 %214, label %215, label %220

215:                                              ; preds = %211
  %216 = load ptr, ptr %28, align 8, !tbaa !5
  %217 = load i32, ptr %216, align 4, !tbaa !9
  %218 = sub nsw i32 0, %217
  store i32 %218, ptr %35, align 4, !tbaa !9
  %219 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %35, i32 noundef 7)
  store i32 1, ptr %47, align 4
  br label %579

220:                                              ; preds = %211
  %221 = load ptr, ptr %17, align 8, !tbaa !5
  %222 = load i32, ptr %221, align 4, !tbaa !9
  %223 = icmp eq i32 %222, 0
  br i1 %223, label %232, label %224

224:                                              ; preds = %220
  %225 = load ptr, ptr %18, align 8, !tbaa !5
  %226 = load i32, ptr %225, align 4, !tbaa !9
  %227 = icmp eq i32 %226, 0
  br i1 %227, label %232, label %228

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

232:                                              ; preds = %228, %224, %220
  store i32 1, ptr %47, align 4
  br label %579

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

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

239:                                              ; preds = %236
  %240 = load ptr, ptr %19, align 8, !tbaa !5
  %241 = load i32, ptr %240, align 4, !tbaa !9
  store i32 %241, ptr %35, align 4, !tbaa !9
  %242 = load ptr, ptr %20, align 8, !tbaa !5
  %243 = load i32, ptr %242, align 4, !tbaa !9
  store i32 %243, ptr %36, align 4, !tbaa !9
  store i32 1, ptr %41, align 4, !tbaa !9
  br label %244

244:                                              ; preds = %309, %239
  %245 = load i32, ptr %36, align 4, !tbaa !9
  %246 = icmp slt i32 %245, 0
  br i1 %246, label %247, label %252

247:                                              ; preds = %244
  %248 = load i32, ptr %41, align 4, !tbaa !9
  %249 = load i32, ptr %35, align 4, !tbaa !9
  %250 = icmp sge i32 %248, %249
  %251 = zext i1 %250 to i32
  br label %257

252:                                              ; preds = %244
  %253 = load i32, ptr %41, align 4, !tbaa !9
  %254 = load i32, ptr %35, align 4, !tbaa !9
  %255 = icmp sle i32 %253, %254
  %256 = zext i1 %255 to i32
  br label %257

257:                                              ; preds = %252, %247
  %258 = phi i32 [ %251, %247 ], [ %256, %252 ]
  %259 = icmp ne i32 %258, 0
  br i1 %259, label %260, label %313

260:                                              ; preds = %257
  %261 = load ptr, ptr %20, align 8, !tbaa !5
  %262 = load i32, ptr %261, align 4, !tbaa !9
  store i32 %262, ptr %37, align 4, !tbaa !9
  %263 = load ptr, ptr %19, align 8, !tbaa !5
  %264 = load i32, ptr %263, align 4, !tbaa !9
  %265 = load i32, ptr %41, align 4, !tbaa !9
  %266 = sub nsw i32 %264, %265
  %267 = add nsw i32 %266, 1
  store i32 %267, ptr %38, align 4, !tbaa !9
  %268 = load i32, ptr %37, align 4, !tbaa !9
  %269 = load i32, ptr %38, align 4, !tbaa !9
  %270 = icmp sle i32 %268, %269
  br i1 %270, label %271, label %273

271:                                              ; preds = %260
  %272 = load i32, ptr %37, align 4, !tbaa !9
  br label %275

273:                                              ; preds = %260
  %274 = load i32, ptr %38, align 4, !tbaa !9
  br label %275

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

309:                                              ; preds = %275
  %310 = load i32, ptr %36, align 4, !tbaa !9
  %311 = load i32, ptr %41, align 4, !tbaa !9
  %312 = add nsw i32 %311, %310
  store i32 %312, ptr %41, align 4, !tbaa !9
  br label %244, !llvm.loop !11

313:                                              ; preds = %257
  br label %578

314:                                              ; preds = %236, %233
  %315 = load i32, ptr %42, align 4, !tbaa !9
  %316 = icmp ne i32 %315, 0
  br i1 %316, label %317, label %396

317:                                              ; preds = %314
  %318 = load i32, ptr %40, align 4, !tbaa !9
  %319 = icmp ne i32 %318, 0
  br i1 %319, label %320, label %396

320:                                              ; preds = %317
  %321 = load ptr, ptr %19, align 8, !tbaa !5
  %322 = load i32, ptr %321, align 4, !tbaa !9
  store i32 %322, ptr %36, align 4, !tbaa !9
  %323 = load ptr, ptr %20, align 8, !tbaa !5
  %324 = load i32, ptr %323, align 4, !tbaa !9
  store i32 %324, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %41, align 4, !tbaa !9
  br label %325

325:                                              ; preds = %391, %320
  %326 = load i32, ptr %35, align 4, !tbaa !9
  %327 = icmp slt i32 %326, 0
  br i1 %327, label %328, label %333

328:                                              ; preds = %325
  %329 = load i32, ptr %41, align 4, !tbaa !9
  %330 = load i32, ptr %36, align 4, !tbaa !9
  %331 = icmp sge i32 %329, %330
  %332 = zext i1 %331 to i32
  br label %338

333:                                              ; preds = %325
  %334 = load i32, ptr %41, align 4, !tbaa !9
  %335 = load i32, ptr %36, align 4, !tbaa !9
  %336 = icmp sle i32 %334, %335
  %337 = zext i1 %336 to i32
  br label %338

338:                                              ; preds = %333, %328
  %339 = phi i32 [ %332, %328 ], [ %337, %333 ]
  %340 = icmp ne i32 %339, 0
  br i1 %340, label %341, label %395

341:                                              ; preds = %338
  %342 = load ptr, ptr %20, align 8, !tbaa !5
  %343 = load i32, ptr %342, align 4, !tbaa !9
  store i32 %343, ptr %37, align 4, !tbaa !9
  %344 = load ptr, ptr %19, align 8, !tbaa !5
  %345 = load i32, ptr %344, align 4, !tbaa !9
  %346 = load i32, ptr %41, align 4, !tbaa !9
  %347 = sub nsw i32 %345, %346
  %348 = add nsw i32 %347, 1
  store i32 %348, ptr %38, align 4, !tbaa !9
  %349 = load i32, ptr %37, align 4, !tbaa !9
  %350 = load i32, ptr %38, align 4, !tbaa !9
  %351 = icmp sle i32 %349, %350
  br i1 %351, label %352, label %354

352:                                              ; preds = %341
  %353 = load i32, ptr %37, align 4, !tbaa !9
  br label %356

354:                                              ; preds = %341
  %355 = load i32, ptr %38, align 4, !tbaa !9
  br label %356

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

391:                                              ; preds = %356
  %392 = load i32, ptr %35, align 4, !tbaa !9
  %393 = load i32, ptr %41, align 4, !tbaa !9
  %394 = add nsw i32 %393, %392
  store i32 %394, ptr %41, align 4, !tbaa !9
  br label %325, !llvm.loop !13

395:                                              ; preds = %338
  br label %577

396:                                              ; preds = %317, %314
  %397 = load i32, ptr %39, align 4, !tbaa !9
  %398 = icmp ne i32 %397, 0
  br i1 %398, label %399, label %485

399:                                              ; preds = %396
  %400 = load i32, ptr %40, align 4, !tbaa !9
  %401 = icmp ne i32 %400, 0
  br i1 %401, label %402, label %485

402:                                              ; preds = %399
  %403 = load ptr, ptr %19, align 8, !tbaa !5
  %404 = load i32, ptr %403, align 4, !tbaa !9
  %405 = sub nsw i32 %404, 1
  %406 = load ptr, ptr %20, align 8, !tbaa !5
  %407 = load i32, ptr %406, align 4, !tbaa !9
  %408 = sdiv i32 %405, %407
  %409 = load ptr, ptr %20, align 8, !tbaa !5
  %410 = load i32, ptr %409, align 4, !tbaa !9
  %411 = mul nsw i32 %408, %410
  %412 = add nsw i32 %411, 1
  store i32 %412, ptr %44, align 4, !tbaa !9
  %413 = load ptr, ptr %20, align 8, !tbaa !5
  %414 = load i32, ptr %413, align 4, !tbaa !9
  %415 = sub nsw i32 0, %414
  store i32 %415, ptr %35, align 4, !tbaa !9
  %416 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %416, ptr %41, align 4, !tbaa !9
  br label %417

417:                                              ; preds = %480, %402
  %418 = load i32, ptr %35, align 4, !tbaa !9
  %419 = icmp slt i32 %418, 0
  br i1 %419, label %420, label %424

420:                                              ; preds = %417
  %421 = load i32, ptr %41, align 4, !tbaa !9
  %422 = icmp sge i32 %421, 1
  %423 = zext i1 %422 to i32
  br label %428

424:                                              ; preds = %417
  %425 = load i32, ptr %41, align 4, !tbaa !9
  %426 = icmp sle i32 %425, 1
  %427 = zext i1 %426 to i32
  br label %428

428:                                              ; preds = %424, %420
  %429 = phi i32 [ %423, %420 ], [ %427, %424 ]
  %430 = icmp ne i32 %429, 0
  br i1 %430, label %431, label %484

431:                                              ; preds = %428
  %432 = load ptr, ptr %20, align 8, !tbaa !5
  %433 = load i32, ptr %432, align 4, !tbaa !9
  store i32 %433, ptr %36, align 4, !tbaa !9
  %434 = load ptr, ptr %19, align 8, !tbaa !5
  %435 = load i32, ptr %434, align 4, !tbaa !9
  %436 = load i32, ptr %41, align 4, !tbaa !9
  %437 = sub nsw i32 %435, %436
  %438 = add nsw i32 %437, 1
  store i32 %438, ptr %37, align 4, !tbaa !9
  %439 = load i32, ptr %36, align 4, !tbaa !9
  %440 = load i32, ptr %37, align 4, !tbaa !9
  %441 = icmp sle i32 %439, %440
  br i1 %441, label %442, label %444

442:                                              ; preds = %431
  %443 = load i32, ptr %36, align 4, !tbaa !9
  br label %446

444:                                              ; preds = %431
  %445 = load i32, ptr %37, align 4, !tbaa !9
  br label %446

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

480:                                              ; preds = %446
  %481 = load i32, ptr %35, align 4, !tbaa !9
  %482 = load i32, ptr %41, align 4, !tbaa !9
  %483 = add nsw i32 %482, %481
  store i32 %483, ptr %41, align 4, !tbaa !9
  br label %417, !llvm.loop !14

484:                                              ; preds = %428
  br label %576

485:                                              ; preds = %399, %396
  %486 = load i32, ptr %42, align 4, !tbaa !9
  %487 = icmp ne i32 %486, 0
  br i1 %487, label %488, label %575

488:                                              ; preds = %485
  %489 = load i32, ptr %45, align 4, !tbaa !9
  %490 = icmp ne i32 %489, 0
  br i1 %490, label %491, label %575

491:                                              ; preds = %488
  %492 = load ptr, ptr %19, align 8, !tbaa !5
  %493 = load i32, ptr %492, align 4, !tbaa !9
  %494 = sub nsw i32 %493, 1
  %495 = load ptr, ptr %20, align 8, !tbaa !5
  %496 = load i32, ptr %495, align 4, !tbaa !9
  %497 = sdiv i32 %494, %496
  %498 = load ptr, ptr %20, align 8, !tbaa !5
  %499 = load i32, ptr %498, align 4, !tbaa !9
  %500 = mul nsw i32 %497, %499
  %501 = add nsw i32 %500, 1
  store i32 %501, ptr %44, align 4, !tbaa !9
  %502 = load ptr, ptr %20, align 8, !tbaa !5
  %503 = load i32, ptr %502, align 4, !tbaa !9
  %504 = sub nsw i32 0, %503
  store i32 %504, ptr %35, align 4, !tbaa !9
  %505 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %505, ptr %41, align 4, !tbaa !9
  br label %506

506:                                              ; preds = %570, %491
  %507 = load i32, ptr %35, align 4, !tbaa !9
  %508 = icmp slt i32 %507, 0
  br i1 %508, label %509, label %513

509:                                              ; preds = %506
  %510 = load i32, ptr %41, align 4, !tbaa !9
  %511 = icmp sge i32 %510, 1
  %512 = zext i1 %511 to i32
  br label %517

513:                                              ; preds = %506
  %514 = load i32, ptr %41, align 4, !tbaa !9
  %515 = icmp sle i32 %514, 1
  %516 = zext i1 %515 to i32
  br label %517

517:                                              ; preds = %513, %509
  %518 = phi i32 [ %512, %509 ], [ %516, %513 ]
  %519 = icmp ne i32 %518, 0
  br i1 %519, label %520, label %574

520:                                              ; preds = %517
  %521 = load ptr, ptr %20, align 8, !tbaa !5
  %522 = load i32, ptr %521, align 4, !tbaa !9
  store i32 %522, ptr %36, align 4, !tbaa !9
  %523 = load ptr, ptr %19, align 8, !tbaa !5
  %524 = load i32, ptr %523, align 4, !tbaa !9
  %525 = load i32, ptr %41, align 4, !tbaa !9
  %526 = sub nsw i32 %524, %525
  %527 = add nsw i32 %526, 1
  store i32 %527, ptr %37, align 4, !tbaa !9
  %528 = load i32, ptr %36, align 4, !tbaa !9
  %529 = load i32, ptr %37, align 4, !tbaa !9
  %530 = icmp sle i32 %528, %529
  br i1 %530, label %531, label %533

531:                                              ; preds = %520
  %532 = load i32, ptr %36, align 4, !tbaa !9
  br label %535

533:                                              ; preds = %520
  %534 = load i32, ptr %37, align 4, !tbaa !9
  br label %535

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

570:                                              ; preds = %535
  %571 = load i32, ptr %35, align 4, !tbaa !9
  %572 = load i32, ptr %41, align 4, !tbaa !9
  %573 = add nsw i32 %572, %571
  store i32 %573, ptr %41, align 4, !tbaa !9
  br label %506, !llvm.loop !15

574:                                              ; preds = %517
  br label %575

575:                                              ; preds = %574, %488, %485
  br label %576

576:                                              ; preds = %575, %484
  br label %577

577:                                              ; preds = %576, %395
  br label %578

578:                                              ; preds = %577, %313
  store i32 1, ptr %47, align 4
  br label %579

579:                                              ; preds = %578, %232, %215
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  ret void
}

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

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

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

declare void @clarfb_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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


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

%struct.complex = type { float, float }

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

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

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

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

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

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

45:                                               ; preds = %42
  %46 = load i32, ptr %4, align 4, !tbaa !5
  %.fr197 = freeze i32 %46
  %47 = icmp slt i32 %.fr197, 0
  br i1 %47, label %.thread212.sink.split, label %48

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

51:                                               ; preds = %48
  %52 = icmp ule i32 %49, %.fr197
  %.not195 = icmp eq i32 %.fr197, 0
  %or.cond206 = or i1 %.not195, %52
  br i1 %or.cond206, label %53, label %.thread212.sink.split

53:                                               ; preds = %51
  %54 = load i32, ptr %7, align 4, !tbaa !5
  %spec.select207 = tail call i32 @llvm.umax.i32(i32 %.fr197, i32 1)
  %55 = icmp slt i32 %54, %spec.select207
  br i1 %55, label %.thread212.sink.split, label %56

56:                                               ; preds = %53
  %57 = load i32, ptr %9, align 4, !tbaa !5
  %58 = icmp slt i32 %57, %49
  br i1 %58, label %.thread212.sink.split, label %59

59:                                               ; preds = %56
  %60 = load i32, ptr %11, align 4, !tbaa !5
  %spec.select208 = tail call i32 @llvm.umax.i32(i32 %40, i32 1)
  %61 = icmp slt i32 %60, %spec.select208
  br i1 %61, label %.thread212.sink.split, label %62

62:                                               ; preds = %59
  %.pr = load i32, ptr %13, align 4, !tbaa !5
  %.not196 = icmp eq i32 %.pr, 0
  br i1 %.not196, label %66, label %.thread212

.thread212.sink.split:                            ; preds = %59, %56, %53, %48, %51, %45, %42, %39, %.thread, %34
  %.sink = phi i32 [ -1, %34 ], [ -2, %.thread ], [ -3, %39 ], [ -4, %42 ], [ -5, %45 ], [ -6, %51 ], [ -6, %48 ], [ -8, %53 ], [ -10, %56 ], [ -12, %59 ]
  store i32 %.sink, ptr %13, align 4, !tbaa !5
  br label %.thread212

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

66:                                               ; preds = %62
  %67 = icmp eq i32 %40, 0
  %68 = icmp eq i32 %43, 0
  %or.cond = or i1 %67, %68
  %69 = icmp eq i32 %.fr197, 0
  %or.cond251 = or i1 %or.cond, %69
  br i1 %or.cond251, label %.loopexit, label %70

70:                                               ; preds = %66
  %or.cond5 = select i1 %33, i1 %38, i1 false
  br i1 %or.cond5, label %.lr.ph240, label %89

.lr.ph240:                                        ; preds = %70
  %invariant.gep235 = getelementptr i8, ptr %25, i64 8
  %71 = add i32 %20, 1
  br label %72

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

89:                                               ; preds = %70
  %or.cond7 = and i1 %36, %37
  br i1 %or.cond7, label %.lr.ph234, label %107

.lr.ph234:                                        ; preds = %89
  %invariant.gep227 = getelementptr i8, ptr %25, i64 8
  %invariant.gep229 = getelementptr i8, ptr %28, i64 8
  %90 = add i32 %20, 1
  br label %91

91:                                               ; preds = %.lr.ph234, %91
  %.1.neg233 = phi i32 [ -1, %.lr.ph234 ], [ %.1.neg, %91 ]
  %.1232 = phi i32 [ 1, %.lr.ph234 ], [ %106, %91 ]
  %92 = load i32, ptr %5, align 4, !tbaa !5
  %93 = load i32, ptr %4, align 4, !tbaa !5
  %94 = add i32 %.1.neg233, 1
  %95 = add i32 %94, %93
  %96 = call i32 @llvm.smin.i32(i32 %92, i32 %95)
  store i32 %96, ptr %18, align 4, !tbaa !5
  %97 = load i32, ptr %3, align 4, !tbaa !5
  %98 = add i32 %94, %97
  store i32 %98, ptr %17, align 4, !tbaa !5
  %99 = mul i32 %.1232, %90
  %100 = sext i32 %99 to i64
  %101 = getelementptr inbounds %struct.complex, ptr %22, i64 %100
  %102 = mul nsw i32 %.1232, %23
  %103 = sext i32 %102 to i64
  %gep228 = getelementptr %struct.complex, ptr %invariant.gep227, i64 %103
  %104 = mul nsw i32 %.1232, %26
  %105 = sext i32 %104 to i64
  %gep230 = getelementptr %struct.complex, ptr %invariant.gep229, i64 %105
  call void @clarfb_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.1, ptr noundef nonnull %2, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef %101, ptr noundef nonnull %7, ptr noundef %gep228, ptr noundef nonnull %9, ptr noundef %gep230, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %19) #4
  %106 = add nuw nsw i32 %49, %.1232
  %.1.neg = sub nsw i32 0, %106
  %.not245 = icmp sgt i32 %106, %.fr197
  br i1 %.not245, label %.loopexit, label %91, !llvm.loop !11

107:                                              ; preds = %89
  %or.cond9 = and i1 %33, %37
  br i1 %or.cond9, label %108, label %132

108:                                              ; preds = %107
  %109 = add nsw i32 %.fr197, -1
  %110 = urem i32 %109, %49
  %111 = sub nsw i32 %.fr197, %110
  %invariant.gep222 = getelementptr i8, ptr %25, i64 8
  %112 = icmp sgt i32 %111, 0
  br i1 %112, label %.lr.ph226, label %.loopexit

.lr.ph226:                                        ; preds = %108
  %113 = add i32 %20, 1
  br label %114

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

132:                                              ; preds = %107
  %or.cond11 = select i1 %36, i1 %38, i1 false
  br i1 %or.cond11, label %133, label %.loopexit

133:                                              ; preds = %132
  %134 = add nsw i32 %.fr197, -1
  %135 = urem i32 %134, %49
  %136 = sub nsw i32 %.fr197, %135
  %invariant.gep = getelementptr i8, ptr %25, i64 8
  %invariant.gep218 = getelementptr i8, ptr %28, i64 8
  %137 = icmp sgt i32 %136, 0
  br i1 %137, label %.lr.ph, label %.loopexit

.lr.ph:                                           ; preds = %133
  %138 = add i32 %20, 1
  br label %139

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

.loopexit:                                        ; preds = %139, %114, %91, %72, %133, %108, %132, %66, %.thread212
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #4
  ret void
}

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

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

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

declare void @clarfb_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

; 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

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

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

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


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