; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (cunmql)

; 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
@c__2 = external hidden global i64, align 8
@c__1 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.5 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [11 x i8], align 1
@c__65 = external hidden global i64, align 8

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

91:                                               ; preds = %13
  %92 = load ptr, ptr %17, align 8, !tbaa !5
  %93 = load i64, ptr %92, align 8, !tbaa !9
  store i64 %93, ptr %48, align 8, !tbaa !9
  %94 = load ptr, ptr %18, align 8, !tbaa !5
  %95 = load i64, ptr %94, align 8, !tbaa !9
  %96 = icmp sge i64 1, %95
  br i1 %96, label %97, label %98

97:                                               ; preds = %91
  br label %101

98:                                               ; preds = %91
  %99 = load ptr, ptr %18, align 8, !tbaa !5
  %100 = load i64, ptr %99, align 8, !tbaa !9
  br label %101

101:                                              ; preds = %98, %97
  %102 = phi i64 [ 1, %97 ], [ %100, %98 ]
  store i64 %102, ptr %49, align 8, !tbaa !9
  br label %115

103:                                              ; preds = %13
  %104 = load ptr, ptr %18, align 8, !tbaa !5
  %105 = load i64, ptr %104, align 8, !tbaa !9
  store i64 %105, ptr %48, align 8, !tbaa !9
  %106 = load ptr, ptr %17, align 8, !tbaa !5
  %107 = load i64, ptr %106, align 8, !tbaa !9
  %108 = icmp sge i64 1, %107
  br i1 %108, label %109, label %110

109:                                              ; preds = %103
  br label %113

110:                                              ; preds = %103
  %111 = load ptr, ptr %17, align 8, !tbaa !5
  %112 = load i64, ptr %111, align 8, !tbaa !9
  br label %113

113:                                              ; preds = %110, %109
  %114 = phi i64 [ 1, %109 ], [ %112, %110 ]
  store i64 %114, ptr %49, align 8, !tbaa !9
  br label %115

115:                                              ; preds = %113, %101
  %116 = load i64, ptr %51, align 8, !tbaa !9
  %117 = icmp ne i64 %116, 0
  br i1 %117, label %124, label %118

118:                                              ; preds = %115
  %119 = load ptr, ptr %15, align 8, !tbaa !5
  %120 = call i64 @lsame_(ptr noundef %119, ptr noundef @.str.2)
  %121 = icmp ne i64 %120, 0
  br i1 %121, label %124, label %122

122:                                              ; preds = %118
  %123 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -1, ptr %123, align 8, !tbaa !9
  br label %190

124:                                              ; preds = %118, %115
  %125 = load i64, ptr %54, align 8, !tbaa !9
  %126 = icmp ne i64 %125, 0
  br i1 %126, label %133, label %127

127:                                              ; preds = %124
  %128 = load ptr, ptr %16, align 8, !tbaa !5
  %129 = call i64 @lsame_(ptr noundef %128, ptr noundef @.str.3)
  %130 = icmp ne i64 %129, 0
  br i1 %130, label %133, label %131

131:                                              ; preds = %127
  %132 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -2, ptr %132, align 8, !tbaa !9
  br label %189

133:                                              ; preds = %127, %124
  %134 = load ptr, ptr %17, align 8, !tbaa !5
  %135 = load i64, ptr %134, align 8, !tbaa !9
  %136 = icmp slt i64 %135, 0
  br i1 %136, label %137, label %139

137:                                              ; preds = %133
  %138 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -3, ptr %138, align 8, !tbaa !9
  br label %188

139:                                              ; preds = %133
  %140 = load ptr, ptr %18, align 8, !tbaa !5
  %141 = load i64, ptr %140, align 8, !tbaa !9
  %142 = icmp slt i64 %141, 0
  br i1 %142, label %143, label %145

143:                                              ; preds = %139
  %144 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -4, ptr %144, align 8, !tbaa !9
  br label %187

145:                                              ; preds = %139
  %146 = load ptr, ptr %19, align 8, !tbaa !5
  %147 = load i64, ptr %146, align 8, !tbaa !9
  %148 = icmp slt i64 %147, 0
  br i1 %148, label %154, label %149

149:                                              ; preds = %145
  %150 = load ptr, ptr %19, align 8, !tbaa !5
  %151 = load i64, ptr %150, align 8, !tbaa !9
  %152 = load i64, ptr %48, align 8, !tbaa !9
  %153 = icmp sgt i64 %151, %152
  br i1 %153, label %154, label %156

154:                                              ; preds = %149, %145
  %155 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -5, ptr %155, align 8, !tbaa !9
  br label %186

156:                                              ; preds = %149
  %157 = load ptr, ptr %21, align 8, !tbaa !5
  %158 = load i64, ptr %157, align 8, !tbaa !9
  %159 = load i64, ptr %48, align 8, !tbaa !9
  %160 = icmp sge i64 1, %159
  br i1 %160, label %161, label %162

161:                                              ; preds = %156
  br label %164

162:                                              ; preds = %156
  %163 = load i64, ptr %48, align 8, !tbaa !9
  br label %164

164:                                              ; preds = %162, %161
  %165 = phi i64 [ 1, %161 ], [ %163, %162 ]
  %166 = icmp slt i64 %158, %165
  br i1 %166, label %167, label %169

167:                                              ; preds = %164
  %168 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -7, ptr %168, align 8, !tbaa !9
  br label %185

169:                                              ; preds = %164
  %170 = load ptr, ptr %24, align 8, !tbaa !5
  %171 = load i64, ptr %170, align 8, !tbaa !9
  %172 = load ptr, ptr %17, align 8, !tbaa !5
  %173 = load i64, ptr %172, align 8, !tbaa !9
  %174 = icmp sge i64 1, %173
  br i1 %174, label %175, label %176

175:                                              ; preds = %169
  br label %179

176:                                              ; preds = %169
  %177 = load ptr, ptr %17, align 8, !tbaa !5
  %178 = load i64, ptr %177, align 8, !tbaa !9
  br label %179

179:                                              ; preds = %176, %175
  %180 = phi i64 [ 1, %175 ], [ %178, %176 ]
  %181 = icmp slt i64 %171, %180
  br i1 %181, label %182, label %184

182:                                              ; preds = %179
  %183 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -10, ptr %183, align 8, !tbaa !9
  br label %184

184:                                              ; preds = %182, %179
  br label %185

185:                                              ; preds = %184, %167
  br label %186

186:                                              ; preds = %185, %154
  br label %187

187:                                              ; preds = %186, %143
  br label %188

188:                                              ; preds = %187, %137
  br label %189

189:                                              ; preds = %188, %131
  br label %190

190:                                              ; preds = %189, %122
  %191 = load ptr, ptr %27, align 8, !tbaa !5
  %192 = load i64, ptr %191, align 8, !tbaa !9
  %193 = icmp eq i64 %192, 0
  br i1 %193, label %194, label %250

194:                                              ; preds = %190
  %195 = load ptr, ptr %17, align 8, !tbaa !5
  %196 = load i64, ptr %195, align 8, !tbaa !9
  %197 = icmp eq i64 %196, 0
  br i1 %197, label %202, label %198

198:                                              ; preds = %194
  %199 = load ptr, ptr %18, align 8, !tbaa !5
  %200 = load i64, ptr %199, align 8, !tbaa !9
  %201 = icmp eq i64 %200, 0
  br i1 %201, label %202, label %203

202:                                              ; preds = %198, %194
  store i64 1, ptr %56, align 8, !tbaa !9
  br label %231

203:                                              ; preds = %198
  %204 = getelementptr inbounds [2 x i64], ptr %35, i64 0, i64 0
  store i64 1, ptr %204, align 16, !tbaa !9
  %205 = load ptr, ptr %15, align 8, !tbaa !5
  %206 = getelementptr inbounds [2 x ptr], ptr %28, i64 0, i64 0
  store ptr %205, ptr %206, align 16, !tbaa !5
  %207 = getelementptr inbounds [2 x i64], ptr %35, i64 0, i64 1
  store i64 1, ptr %207, align 8, !tbaa !9
  %208 = load ptr, ptr %16, align 8, !tbaa !5
  %209 = getelementptr inbounds [2 x ptr], ptr %28, i64 0, i64 1
  store ptr %208, ptr %209, align 8, !tbaa !5
  %210 = getelementptr inbounds [2 x i8], ptr %38, i64 0, i64 0
  %211 = getelementptr inbounds [2 x ptr], ptr %28, i64 0, i64 0
  %212 = getelementptr inbounds [2 x i64], ptr %35, i64 0, i64 0
  %213 = call i32 @s_cat(ptr noundef %210, ptr noundef %211, ptr noundef %212, ptr noundef @c__2, i64 noundef 2)
  store i64 64, ptr %33, align 8, !tbaa !9
  %214 = getelementptr inbounds [2 x i8], ptr %38, i64 0, i64 0
  %215 = load ptr, ptr %17, align 8, !tbaa !5
  %216 = load ptr, ptr %18, align 8, !tbaa !5
  %217 = load ptr, ptr %19, align 8, !tbaa !5
  %218 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.4, ptr noundef %214, ptr noundef %215, ptr noundef %216, ptr noundef %217, ptr noundef @c_n1)
  store i64 %218, ptr %34, align 8, !tbaa !9
  %219 = load i64, ptr %33, align 8, !tbaa !9
  %220 = load i64, ptr %34, align 8, !tbaa !9
  %221 = icmp sle i64 %219, %220
  br i1 %221, label %222, label %224

222:                                              ; preds = %203
  %223 = load i64, ptr %33, align 8, !tbaa !9
  br label %226

224:                                              ; preds = %203
  %225 = load i64, ptr %34, align 8, !tbaa !9
  br label %226

226:                                              ; preds = %224, %222
  %227 = phi i64 [ %223, %222 ], [ %225, %224 ]
  store i64 %227, ptr %45, align 8, !tbaa !9
  %228 = load i64, ptr %49, align 8, !tbaa !9
  %229 = load i64, ptr %45, align 8, !tbaa !9
  %230 = mul nsw i64 %228, %229
  store i64 %230, ptr %56, align 8, !tbaa !9
  br label %231

231:                                              ; preds = %226, %202
  %232 = load i64, ptr %56, align 8, !tbaa !9
  %233 = sitofp i64 %232 to float
  %234 = load ptr, ptr %25, align 8, !tbaa !5
  %235 = getelementptr inbounds %struct.complex, ptr %234, i64 1
  %236 = getelementptr inbounds %struct.complex, ptr %235, i32 0, i32 0
  store float %233, ptr %236, align 4, !tbaa !11
  %237 = load ptr, ptr %25, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.complex, ptr %237, i64 1
  %239 = getelementptr inbounds %struct.complex, ptr %238, i32 0, i32 1
  store float 0.000000e+00, ptr %239, align 4, !tbaa !14
  %240 = load ptr, ptr %26, align 8, !tbaa !5
  %241 = load i64, ptr %240, align 8, !tbaa !9
  %242 = load i64, ptr %49, align 8, !tbaa !9
  %243 = icmp slt i64 %241, %242
  br i1 %243, label %244, label %249

244:                                              ; preds = %231
  %245 = load i64, ptr %57, align 8, !tbaa !9
  %246 = icmp ne i64 %245, 0
  br i1 %246, label %249, label %247

247:                                              ; preds = %244
  %248 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -12, ptr %248, align 8, !tbaa !9
  br label %249

249:                                              ; preds = %247, %244, %231
  br label %250

250:                                              ; preds = %249, %190
  %251 = load ptr, ptr %27, align 8, !tbaa !5
  %252 = load i64, ptr %251, align 8, !tbaa !9
  %253 = icmp ne i64 %252, 0
  br i1 %253, label %254, label %259

254:                                              ; preds = %250
  %255 = load ptr, ptr %27, align 8, !tbaa !5
  %256 = load i64, ptr %255, align 8, !tbaa !9
  %257 = sub nsw i64 0, %256
  store i64 %257, ptr %33, align 8, !tbaa !9
  %258 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %33)
  store i32 0, ptr %14, align 4
  store i32 1, ptr %58, align 4
  br label %499

259:                                              ; preds = %250
  %260 = load i64, ptr %57, align 8, !tbaa !9
  %261 = icmp ne i64 %260, 0
  br i1 %261, label %262, label %263

262:                                              ; preds = %259
  store i32 0, ptr %14, align 4
  store i32 1, ptr %58, align 4
  br label %499

263:                                              ; preds = %259
  br label %264

264:                                              ; preds = %263
  %265 = load ptr, ptr %17, align 8, !tbaa !5
  %266 = load i64, ptr %265, align 8, !tbaa !9
  %267 = icmp eq i64 %266, 0
  br i1 %267, label %272, label %268

268:                                              ; preds = %264
  %269 = load ptr, ptr %18, align 8, !tbaa !5
  %270 = load i64, ptr %269, align 8, !tbaa !9
  %271 = icmp eq i64 %270, 0
  br i1 %271, label %272, label %273

272:                                              ; preds = %268, %264
  store i32 0, ptr %14, align 4
  store i32 1, ptr %58, align 4
  br label %499

273:                                              ; preds = %268
  store i64 2, ptr %52, align 8, !tbaa !9
  %274 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %274, ptr %55, align 8, !tbaa !9
  %275 = load i64, ptr %45, align 8, !tbaa !9
  %276 = icmp sgt i64 %275, 1
  br i1 %276, label %277, label %320

277:                                              ; preds = %273
  %278 = load i64, ptr %45, align 8, !tbaa !9
  %279 = load ptr, ptr %19, align 8, !tbaa !5
  %280 = load i64, ptr %279, align 8, !tbaa !9
  %281 = icmp slt i64 %278, %280
  br i1 %281, label %282, label %320

282:                                              ; preds = %277
  %283 = load i64, ptr %49, align 8, !tbaa !9
  %284 = load i64, ptr %45, align 8, !tbaa !9
  %285 = mul nsw i64 %283, %284
  store i64 %285, ptr %50, align 8, !tbaa !9
  %286 = load ptr, ptr %26, align 8, !tbaa !5
  %287 = load i64, ptr %286, align 8, !tbaa !9
  %288 = load i64, ptr %50, align 8, !tbaa !9
  %289 = icmp slt i64 %287, %288
  br i1 %289, label %290, label %319

290:                                              ; preds = %282
  %291 = load ptr, ptr %26, align 8, !tbaa !5
  %292 = load i64, ptr %291, align 8, !tbaa !9
  %293 = load i64, ptr %55, align 8, !tbaa !9
  %294 = sdiv i64 %292, %293
  store i64 %294, ptr %45, align 8, !tbaa !9
  %295 = getelementptr inbounds [2 x i64], ptr %35, i64 0, i64 0
  store i64 1, ptr %295, align 16, !tbaa !9
  %296 = load ptr, ptr %15, align 8, !tbaa !5
  %297 = getelementptr inbounds [2 x ptr], ptr %28, i64 0, i64 0
  store ptr %296, ptr %297, align 16, !tbaa !5
  %298 = getelementptr inbounds [2 x i64], ptr %35, i64 0, i64 1
  store i64 1, ptr %298, align 8, !tbaa !9
  %299 = load ptr, ptr %16, align 8, !tbaa !5
  %300 = getelementptr inbounds [2 x ptr], ptr %28, i64 0, i64 1
  store ptr %299, ptr %300, align 8, !tbaa !5
  %301 = getelementptr inbounds [2 x i8], ptr %38, i64 0, i64 0
  %302 = getelementptr inbounds [2 x ptr], ptr %28, i64 0, i64 0
  %303 = getelementptr inbounds [2 x i64], ptr %35, i64 0, i64 0
  %304 = call i32 @s_cat(ptr noundef %301, ptr noundef %302, ptr noundef %303, ptr noundef @c__2, i64 noundef 2)
  store i64 2, ptr %33, align 8, !tbaa !9
  %305 = getelementptr inbounds [2 x i8], ptr %38, i64 0, i64 0
  %306 = load ptr, ptr %17, align 8, !tbaa !5
  %307 = load ptr, ptr %18, align 8, !tbaa !5
  %308 = load ptr, ptr %19, align 8, !tbaa !5
  %309 = call i64 @ilaenv_(ptr noundef @c__2, ptr noundef @.str.4, ptr noundef %305, ptr noundef %306, ptr noundef %307, ptr noundef %308, ptr noundef @c_n1)
  store i64 %309, ptr %34, align 8, !tbaa !9
  %310 = load i64, ptr %33, align 8, !tbaa !9
  %311 = load i64, ptr %34, align 8, !tbaa !9
  %312 = icmp sge i64 %310, %311
  br i1 %312, label %313, label %315

313:                                              ; preds = %290
  %314 = load i64, ptr %33, align 8, !tbaa !9
  br label %317

315:                                              ; preds = %290
  %316 = load i64, ptr %34, align 8, !tbaa !9
  br label %317

317:                                              ; preds = %315, %313
  %318 = phi i64 [ %314, %313 ], [ %316, %315 ]
  store i64 %318, ptr %52, align 8, !tbaa !9
  br label %319

319:                                              ; preds = %317, %282
  br label %322

320:                                              ; preds = %277, %273
  %321 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %321, ptr %50, align 8, !tbaa !9
  br label %322

322:                                              ; preds = %320, %319
  %323 = load i64, ptr %45, align 8, !tbaa !9
  %324 = load i64, ptr %52, align 8, !tbaa !9
  %325 = icmp slt i64 %323, %324
  br i1 %325, label %331, label %326

326:                                              ; preds = %322
  %327 = load i64, ptr %45, align 8, !tbaa !9
  %328 = load ptr, ptr %19, align 8, !tbaa !5
  %329 = load i64, ptr %328, align 8, !tbaa !9
  %330 = icmp sge i64 %327, %329
  br i1 %330, label %331, label %350

331:                                              ; preds = %326, %322
  %332 = load ptr, ptr %15, align 8, !tbaa !5
  %333 = load ptr, ptr %16, align 8, !tbaa !5
  %334 = load ptr, ptr %17, align 8, !tbaa !5
  %335 = load ptr, ptr %18, align 8, !tbaa !5
  %336 = load ptr, ptr %19, align 8, !tbaa !5
  %337 = load ptr, ptr %20, align 8, !tbaa !5
  %338 = load i64, ptr %30, align 8, !tbaa !9
  %339 = getelementptr inbounds %struct.complex, ptr %337, i64 %338
  %340 = load ptr, ptr %21, align 8, !tbaa !5
  %341 = load ptr, ptr %22, align 8, !tbaa !5
  %342 = getelementptr inbounds %struct.complex, ptr %341, i64 1
  %343 = load ptr, ptr %23, align 8, !tbaa !5
  %344 = load i64, ptr %32, align 8, !tbaa !9
  %345 = getelementptr inbounds %struct.complex, ptr %343, i64 %344
  %346 = load ptr, ptr %24, align 8, !tbaa !5
  %347 = load ptr, ptr %25, align 8, !tbaa !5
  %348 = getelementptr inbounds %struct.complex, ptr %347, i64 1
  %349 = call i32 @cunm2l_(ptr noundef %332, ptr noundef %333, ptr noundef %334, ptr noundef %335, ptr noundef %336, ptr noundef %339, ptr noundef %340, ptr noundef %342, ptr noundef %345, ptr noundef %346, ptr noundef %348, ptr noundef %53)
  br label %490

350:                                              ; preds = %326
  %351 = load i64, ptr %51, align 8, !tbaa !9
  %352 = icmp ne i64 %351, 0
  br i1 %352, label %353, label %356

353:                                              ; preds = %350
  %354 = load i64, ptr %54, align 8, !tbaa !9
  %355 = icmp ne i64 %354, 0
  br i1 %355, label %362, label %356

356:                                              ; preds = %353, %350
  %357 = load i64, ptr %51, align 8, !tbaa !9
  %358 = icmp ne i64 %357, 0
  br i1 %358, label %366, label %359

359:                                              ; preds = %356
  %360 = load i64, ptr %54, align 8, !tbaa !9
  %361 = icmp ne i64 %360, 0
  br i1 %361, label %366, label %362

362:                                              ; preds = %359, %353
  store i64 1, ptr %41, align 8, !tbaa !9
  %363 = load ptr, ptr %19, align 8, !tbaa !5
  %364 = load i64, ptr %363, align 8, !tbaa !9
  store i64 %364, ptr %42, align 8, !tbaa !9
  %365 = load i64, ptr %45, align 8, !tbaa !9
  store i64 %365, ptr %43, align 8, !tbaa !9
  br label %377

366:                                              ; preds = %359, %356
  %367 = load ptr, ptr %19, align 8, !tbaa !5
  %368 = load i64, ptr %367, align 8, !tbaa !9
  %369 = sub nsw i64 %368, 1
  %370 = load i64, ptr %45, align 8, !tbaa !9
  %371 = sdiv i64 %369, %370
  %372 = load i64, ptr %45, align 8, !tbaa !9
  %373 = mul nsw i64 %371, %372
  %374 = add nsw i64 %373, 1
  store i64 %374, ptr %41, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  %375 = load i64, ptr %45, align 8, !tbaa !9
  %376 = sub nsw i64 0, %375
  store i64 %376, ptr %43, align 8, !tbaa !9
  br label %377

377:                                              ; preds = %366, %362
  %378 = load i64, ptr %51, align 8, !tbaa !9
  %379 = icmp ne i64 %378, 0
  br i1 %379, label %380, label %383

380:                                              ; preds = %377
  %381 = load ptr, ptr %18, align 8, !tbaa !5
  %382 = load i64, ptr %381, align 8, !tbaa !9
  store i64 %382, ptr %47, align 8, !tbaa !9
  br label %386

383:                                              ; preds = %377
  %384 = load ptr, ptr %17, align 8, !tbaa !5
  %385 = load i64, ptr %384, align 8, !tbaa !9
  store i64 %385, ptr %46, align 8, !tbaa !9
  br label %386

386:                                              ; preds = %383, %380
  %387 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %387, ptr %33, align 8, !tbaa !9
  %388 = load i64, ptr %43, align 8, !tbaa !9
  store i64 %388, ptr %34, align 8, !tbaa !9
  %389 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %389, ptr %39, align 8, !tbaa !9
  br label %390

390:                                              ; preds = %485, %386
  %391 = load i64, ptr %34, align 8, !tbaa !9
  %392 = icmp slt i64 %391, 0
  br i1 %392, label %393, label %398

393:                                              ; preds = %390
  %394 = load i64, ptr %39, align 8, !tbaa !9
  %395 = load i64, ptr %33, align 8, !tbaa !9
  %396 = icmp sge i64 %394, %395
  %397 = zext i1 %396 to i32
  br label %403

398:                                              ; preds = %390
  %399 = load i64, ptr %39, align 8, !tbaa !9
  %400 = load i64, ptr %33, align 8, !tbaa !9
  %401 = icmp sle i64 %399, %400
  %402 = zext i1 %401 to i32
  br label %403

403:                                              ; preds = %398, %393
  %404 = phi i32 [ %397, %393 ], [ %402, %398 ]
  %405 = icmp ne i32 %404, 0
  br i1 %405, label %406, label %489

406:                                              ; preds = %403
  %407 = load i64, ptr %45, align 8, !tbaa !9
  store i64 %407, ptr %36, align 8, !tbaa !9
  %408 = load ptr, ptr %19, align 8, !tbaa !5
  %409 = load i64, ptr %408, align 8, !tbaa !9
  %410 = load i64, ptr %39, align 8, !tbaa !9
  %411 = sub nsw i64 %409, %410
  %412 = add nsw i64 %411, 1
  store i64 %412, ptr %37, align 8, !tbaa !9
  %413 = load i64, ptr %36, align 8, !tbaa !9
  %414 = load i64, ptr %37, align 8, !tbaa !9
  %415 = icmp sle i64 %413, %414
  br i1 %415, label %416, label %418

416:                                              ; preds = %406
  %417 = load i64, ptr %36, align 8, !tbaa !9
  br label %420

418:                                              ; preds = %406
  %419 = load i64, ptr %37, align 8, !tbaa !9
  br label %420

420:                                              ; preds = %418, %416
  %421 = phi i64 [ %417, %416 ], [ %419, %418 ]
  store i64 %421, ptr %44, align 8, !tbaa !9
  %422 = load i64, ptr %48, align 8, !tbaa !9
  %423 = load ptr, ptr %19, align 8, !tbaa !5
  %424 = load i64, ptr %423, align 8, !tbaa !9
  %425 = sub nsw i64 %422, %424
  %426 = load i64, ptr %39, align 8, !tbaa !9
  %427 = add nsw i64 %425, %426
  %428 = load i64, ptr %44, align 8, !tbaa !9
  %429 = add nsw i64 %427, %428
  %430 = sub nsw i64 %429, 1
  store i64 %430, ptr %36, align 8, !tbaa !9
  %431 = load ptr, ptr %20, align 8, !tbaa !5
  %432 = load i64, ptr %39, align 8, !tbaa !9
  %433 = load i64, ptr %29, align 8, !tbaa !9
  %434 = mul nsw i64 %432, %433
  %435 = add nsw i64 %434, 1
  %436 = getelementptr inbounds %struct.complex, ptr %431, i64 %435
  %437 = load ptr, ptr %21, align 8, !tbaa !5
  %438 = load ptr, ptr %22, align 8, !tbaa !5
  %439 = load i64, ptr %39, align 8, !tbaa !9
  %440 = getelementptr inbounds %struct.complex, ptr %438, i64 %439
  %441 = getelementptr inbounds [4160 x %struct.complex], ptr %40, i64 0, i64 0
  %442 = call i32 @clarft_(ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %36, ptr noundef %44, ptr noundef %436, ptr noundef %437, ptr noundef %440, ptr noundef %441, ptr noundef @c__65)
  %443 = load i64, ptr %51, align 8, !tbaa !9
  %444 = icmp ne i64 %443, 0
  br i1 %444, label %445, label %456

445:                                              ; preds = %420
  %446 = load ptr, ptr %17, align 8, !tbaa !5
  %447 = load i64, ptr %446, align 8, !tbaa !9
  %448 = load ptr, ptr %19, align 8, !tbaa !5
  %449 = load i64, ptr %448, align 8, !tbaa !9
  %450 = sub nsw i64 %447, %449
  %451 = load i64, ptr %39, align 8, !tbaa !9
  %452 = add nsw i64 %450, %451
  %453 = load i64, ptr %44, align 8, !tbaa !9
  %454 = add nsw i64 %452, %453
  %455 = sub nsw i64 %454, 1
  store i64 %455, ptr %46, align 8, !tbaa !9
  br label %467

456:                                              ; preds = %420
  %457 = load ptr, ptr %18, align 8, !tbaa !5
  %458 = load i64, ptr %457, align 8, !tbaa !9
  %459 = load ptr, ptr %19, align 8, !tbaa !5
  %460 = load i64, ptr %459, align 8, !tbaa !9
  %461 = sub nsw i64 %458, %460
  %462 = load i64, ptr %39, align 8, !tbaa !9
  %463 = add nsw i64 %461, %462
  %464 = load i64, ptr %44, align 8, !tbaa !9
  %465 = add nsw i64 %463, %464
  %466 = sub nsw i64 %465, 1
  store i64 %466, ptr %47, align 8, !tbaa !9
  br label %467

467:                                              ; preds = %456, %445
  %468 = load ptr, ptr %15, align 8, !tbaa !5
  %469 = load ptr, ptr %16, align 8, !tbaa !5
  %470 = load ptr, ptr %20, align 8, !tbaa !5
  %471 = load i64, ptr %39, align 8, !tbaa !9
  %472 = load i64, ptr %29, align 8, !tbaa !9
  %473 = mul nsw i64 %471, %472
  %474 = add nsw i64 %473, 1
  %475 = getelementptr inbounds %struct.complex, ptr %470, i64 %474
  %476 = load ptr, ptr %21, align 8, !tbaa !5
  %477 = getelementptr inbounds [4160 x %struct.complex], ptr %40, i64 0, i64 0
  %478 = load ptr, ptr %23, align 8, !tbaa !5
  %479 = load i64, ptr %32, align 8, !tbaa !9
  %480 = getelementptr inbounds %struct.complex, ptr %478, i64 %479
  %481 = load ptr, ptr %24, align 8, !tbaa !5
  %482 = load ptr, ptr %25, align 8, !tbaa !5
  %483 = getelementptr inbounds %struct.complex, ptr %482, i64 1
  %484 = call i32 @clarfb_(ptr noundef %468, ptr noundef %469, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %46, ptr noundef %47, ptr noundef %44, ptr noundef %475, ptr noundef %476, ptr noundef %477, ptr noundef @c__65, ptr noundef %480, ptr noundef %481, ptr noundef %483, ptr noundef %55)
  br label %485

485:                                              ; preds = %467
  %486 = load i64, ptr %34, align 8, !tbaa !9
  %487 = load i64, ptr %39, align 8, !tbaa !9
  %488 = add nsw i64 %487, %486
  store i64 %488, ptr %39, align 8, !tbaa !9
  br label %390, !llvm.loop !15

489:                                              ; preds = %403
  br label %490

490:                                              ; preds = %489, %331
  %491 = load i64, ptr %56, align 8, !tbaa !9
  %492 = sitofp i64 %491 to float
  %493 = load ptr, ptr %25, align 8, !tbaa !5
  %494 = getelementptr inbounds %struct.complex, ptr %493, i64 1
  %495 = getelementptr inbounds %struct.complex, ptr %494, i32 0, i32 0
  store float %492, ptr %495, align 4, !tbaa !11
  %496 = load ptr, ptr %25, align 8, !tbaa !5
  %497 = getelementptr inbounds %struct.complex, ptr %496, i64 1
  %498 = getelementptr inbounds %struct.complex, ptr %497, i32 0, i32 1
  store float 0.000000e+00, ptr %498, align 4, !tbaa !14
  store i32 0, ptr %14, align 4
  store i32 1, ptr %58, align 4
  br label %499

499:                                              ; preds = %490, %272, %262, %254
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 33280, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 2, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #3
  %500 = load i32, ptr %14, align 4
  ret i32 %500
}

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

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

declare i32 @s_cat(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) #2

declare i64 @ilaenv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

declare i32 @cunm2l_(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 i32 @clarft_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare i32 @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 = !{!"long", !7, i64 0}
!11 = !{!12, !13, i64 0}
!12 = !{!"", !13, i64 0, !13, i64 4}
!13 = !{!"float", !7, i64 0}
!14 = !{!12, !13, i64 4}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}


; 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
@c__2 = external hidden global i64, align 8
@c__1 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.5 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [11 x i8], align 1
@c__65 = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @cunmql_(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 nocapture noundef readonly %11, ptr nocapture noundef %12) local_unnamed_addr #0 {
  %14 = alloca [2 x ptr], align 16
  %15 = alloca i64, align 8
  %16 = alloca [2 x i64], align 16
  %17 = alloca i64, align 8
  %18 = alloca [2 x i8], align 1
  %19 = alloca [4160 x %struct.complex], align 16
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #4
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %18) #4
  call void @llvm.lifetime.start.p0(i64 33280, ptr nonnull %19) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #4
  %25 = load i64, ptr %6, align 8, !tbaa !5
  %26 = xor i64 %25, -1
  %27 = getelementptr inbounds %struct.complex, ptr %5, i64 %26
  %28 = getelementptr inbounds i8, ptr %7, i64 -8
  store i64 0, ptr %12, align 8, !tbaa !5
  %29 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %30 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #4
  %31 = load i64, ptr %11, align 8, !tbaa !5
  %32 = icmp eq i64 %31, -1
  %33 = icmp ne i64 %29, 0
  br i1 %33, label %.thread, label %36

.thread:                                          ; preds = %13
  %34 = load i64, ptr %2, align 8, !tbaa !5
  %35 = load i64, ptr %3, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.smax.i64(i64 %35, i64 1)
  br label %40

36:                                               ; preds = %13
  %37 = load i64, ptr %3, align 8, !tbaa !5
  %38 = load i64, ptr %2, align 8, !tbaa !5
  %spec.select185 = tail call i64 @llvm.smax.i64(i64 %38, i64 1)
  %39 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #4
  %.not = icmp eq i64 %39, 0
  br i1 %.not, label %.thread205.sink.split, label %40

40:                                               ; preds = %.thread, %36
  %.0163194 = phi i64 [ %spec.select, %.thread ], [ %spec.select185, %36 ]
  %.0164192 = phi i64 [ %34, %.thread ], [ %37, %36 ]
  %.not177 = icmp eq i64 %30, 0
  br i1 %.not177, label %41, label %43

41:                                               ; preds = %40
  %42 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #4
  %.not178 = icmp eq i64 %42, 0
  br i1 %.not178, label %.thread205.sink.split, label %43

43:                                               ; preds = %41, %40
  %44 = load i64, ptr %2, align 8, !tbaa !5
  %45 = icmp slt i64 %44, 0
  br i1 %45, label %.thread205.sink.split, label %46

46:                                               ; preds = %43
  %47 = load i64, ptr %3, align 8, !tbaa !5
  %48 = icmp slt i64 %47, 0
  br i1 %48, label %.thread205.sink.split, label %49

49:                                               ; preds = %46
  %50 = load i64, ptr %4, align 8, !tbaa !5
  %51 = icmp slt i64 %50, 0
  %52 = icmp sgt i64 %50, %.0164192
  %or.cond186 = select i1 %51, i1 true, i1 %52
  br i1 %or.cond186, label %.thread205.sink.split, label %53

53:                                               ; preds = %49
  %54 = load i64, ptr %6, align 8, !tbaa !5
  %55 = tail call i64 @llvm.smax.i64(i64 %.0164192, i64 1)
  %56 = icmp slt i64 %54, %55
  br i1 %56, label %.thread205.sink.split, label %57

57:                                               ; preds = %53
  %58 = load i64, ptr %9, align 8, !tbaa !5
  %spec.select187 = tail call i64 @llvm.umax.i64(i64 %44, i64 1)
  %59 = icmp slt i64 %58, %spec.select187
  br i1 %59, label %.thread205.sink.split, label %60

60:                                               ; preds = %57
  %.pr = load i64, ptr %12, align 8, !tbaa !5
  %61 = icmp eq i64 %.pr, 0
  br i1 %61, label %62, label %.thread205

62:                                               ; preds = %60
  %63 = icmp eq i64 %44, 0
  %64 = icmp eq i64 %47, 0
  %or.cond239 = or i1 %63, %64
  br i1 %or.cond239, label %73, label %65

65:                                               ; preds = %62
  store i64 1, ptr %16, align 16, !tbaa !5
  store ptr %0, ptr %14, align 16, !tbaa !9
  %66 = getelementptr inbounds i8, ptr %16, i64 8
  store i64 1, ptr %66, align 8, !tbaa !5
  %67 = getelementptr inbounds i8, ptr %14, i64 8
  store ptr %1, ptr %67, align 8, !tbaa !9
  %68 = call i32 @s_cat(ptr noundef nonnull %18, ptr noundef nonnull %14, ptr noundef nonnull %16, ptr noundef nonnull @c__2, i64 noundef 2) #4
  %69 = call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.4, ptr noundef nonnull %18, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c_n1) #4
  %70 = call i64 @llvm.smin.i64(i64 %69, i64 64)
  %71 = mul nsw i64 %70, %.0163194
  %72 = sitofp i64 %71 to float
  br label %73

73:                                               ; preds = %62, %65
  %.0165 = phi i64 [ %70, %65 ], [ undef, %62 ]
  %.0161 = phi float [ %72, %65 ], [ 1.000000e+00, %62 ]
  store float %.0161, ptr %10, align 4, !tbaa !11
  %74 = getelementptr inbounds i8, ptr %10, i64 4
  store float 0.000000e+00, ptr %74, align 4, !tbaa !14
  %75 = load i64, ptr %11, align 8, !tbaa !5
  %76 = icmp sge i64 %75, %.0163194
  %or.cond = select i1 %76, i1 true, i1 %32
  br i1 %or.cond, label %.thread195, label %.thread205.sink.split

.thread195:                                       ; preds = %73
  %.pr201.pr = load i64, ptr %12, align 8, !tbaa !5
  %.not180 = icmp eq i64 %.pr201.pr, 0
  br i1 %.not180, label %80, label %.thread205

.thread205.sink.split:                            ; preds = %73, %57, %53, %49, %46, %43, %41, %36
  %.sink = phi i64 [ -1, %36 ], [ -2, %41 ], [ -3, %43 ], [ -4, %46 ], [ -5, %49 ], [ -7, %53 ], [ -10, %57 ], [ -12, %73 ]
  store i64 %.sink, ptr %12, align 8, !tbaa !5
  br label %.thread205

.thread205:                                       ; preds = %.thread205.sink.split, %60, %.thread195
  %77 = phi i64 [ %.pr201.pr, %.thread195 ], [ %.pr, %60 ], [ %.sink, %.thread205.sink.split ]
  %78 = sub nsw i64 0, %77
  store i64 %78, ptr %15, align 8, !tbaa !5
  %79 = call i32 @xerbla_(ptr noundef nonnull @.str.4, ptr noundef nonnull %15) #4
  br label %161

80:                                               ; preds = %.thread195
  br i1 %32, label %161, label %81

81:                                               ; preds = %80
  %82 = load i64, ptr %2, align 8, !tbaa !5
  %83 = icmp eq i64 %82, 0
  br i1 %83, label %161, label %84

84:                                               ; preds = %81
  %85 = load i64, ptr %3, align 8, !tbaa !5
  %86 = icmp eq i64 %85, 0
  br i1 %86, label %161, label %87

87:                                               ; preds = %84
  store i64 %.0163194, ptr %24, align 8, !tbaa !5
  %88 = icmp sgt i64 %.0165, 1
  br i1 %88, label %89, label %.thread216

89:                                               ; preds = %87
  %90 = load i64, ptr %4, align 8, !tbaa !5
  %91 = icmp slt i64 %.0165, %90
  %92 = mul nuw nsw i64 %.0165, %.0163194
  %93 = icmp slt i64 %75, %92
  %or.cond241 = select i1 %91, i1 %93, i1 false
  br i1 %or.cond241, label %94, label %.thread212

94:                                               ; preds = %89
  %95 = sdiv i64 %75, %.0163194
  store i64 1, ptr %16, align 16, !tbaa !5
  store ptr %0, ptr %14, align 16, !tbaa !9
  %96 = getelementptr inbounds i8, ptr %16, i64 8
  store i64 1, ptr %96, align 8, !tbaa !5
  %97 = getelementptr inbounds i8, ptr %14, i64 8
  store ptr %1, ptr %97, align 8, !tbaa !9
  %98 = call i32 @s_cat(ptr noundef nonnull %18, ptr noundef nonnull %14, ptr noundef nonnull %16, ptr noundef nonnull @c__2, i64 noundef 2) #4
  %99 = call i64 @ilaenv_(ptr noundef nonnull @c__2, ptr noundef nonnull @.str.4, ptr noundef nonnull %18, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c_n1) #4
  %100 = call i64 @llvm.smax.i64(i64 %99, i64 2)
  %101 = icmp slt i64 %95, %100
  br i1 %101, label %.thread216, label %..thread212_crit_edge

..thread212_crit_edge:                            ; preds = %94
  %.pre = load i64, ptr %4, align 8, !tbaa !5
  br label %.thread212

.thread212:                                       ; preds = %..thread212_crit_edge, %89
  %102 = phi i64 [ %.pre, %..thread212_crit_edge ], [ %90, %89 ]
  %.2215 = phi i64 [ %95, %..thread212_crit_edge ], [ %.0165, %89 ]
  %.fr183 = freeze i64 %102
  %.not182 = icmp slt i64 %.2215, %.fr183
  br i1 %.not182, label %104, label %.thread216

.thread216:                                       ; preds = %87, %.thread212, %94
  %103 = call i32 @cunm2l_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %23) #4
  br label %.loopexit

104:                                              ; preds = %.thread212
  %105 = icmp ne i64 %30, 0
  %or.cond188 = xor i1 %33, %105
  br i1 %or.cond188, label %106, label %111

106:                                              ; preds = %104
  %107 = add nsw i64 %.fr183, -1
  %108 = srem i64 %107, %.2215
  %109 = sub i64 %.fr183, %108
  %110 = sub nsw i64 0, %.2215
  br label %111

111:                                              ; preds = %104, %106
  %.0169 = phi i64 [ %109, %106 ], [ 1, %104 ]
  %112 = phi i64 [ 1, %106 ], [ %.fr183, %104 ]
  %.0167 = phi i64 [ %110, %106 ], [ %.2215, %104 ]
  %113 = icmp slt i64 %.0167, 0
  %invariant.gep = getelementptr i8, ptr %27, i64 8
  %114 = icmp sge i64 %.0169, %112
  %115 = icmp sle i64 %.0169, %112
  %.in228 = select i1 %113, i1 %114, i1 %115
  br i1 %33, label %116, label %.thread232

116:                                              ; preds = %111
  %117 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %117, ptr %22, align 8, !tbaa !5
  br i1 %.in228, label %.lr.ph.split.us.preheader, label %.loopexit

.thread232:                                       ; preds = %111
  %118 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %118, ptr %21, align 8, !tbaa !5
  br i1 %.in228, label %.lr.ph.split.preheader, label %.loopexit

.lr.ph.split.preheader:                           ; preds = %.thread232
  %119 = add i64 %.0164192, -1
  br label %.lr.ph.split

.lr.ph.split.us.preheader:                        ; preds = %116
  %120 = add i64 %.0164192, -1
  br label %.lr.ph.split.us

.lr.ph.split.us:                                  ; preds = %.lr.ph.split.us.preheader, %.lr.ph.split.us
  %.0170229.us = phi i64 [ %138, %.lr.ph.split.us ], [ %.0169, %.lr.ph.split.us.preheader ]
  %121 = load i64, ptr %4, align 8, !tbaa !5
  %reass.sub230 = sub i64 %121, %.0170229.us
  %122 = add i64 %reass.sub230, 1
  %123 = call i64 @llvm.smin.i64(i64 %.2215, i64 %122)
  store i64 %123, ptr %20, align 8, !tbaa !5
  %124 = add i64 %120, %.0170229.us
  %125 = sub i64 %124, %121
  %126 = add i64 %125, %123
  store i64 %126, ptr %17, align 8, !tbaa !5
  %127 = mul nsw i64 %.0170229.us, %25
  %gep.us = getelementptr %struct.complex, ptr %invariant.gep, i64 %127
  %128 = getelementptr inbounds %struct.complex, ptr %28, i64 %.0170229.us
  %129 = call i32 @clarft_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %17, ptr noundef nonnull %20, ptr noundef %gep.us, ptr noundef nonnull %6, ptr noundef nonnull %128, ptr noundef nonnull %19, ptr noundef nonnull @c__65) #4
  %130 = load i64, ptr %2, align 8, !tbaa !5
  %131 = load i64, ptr %4, align 8, !tbaa !5
  %132 = load i64, ptr %20, align 8, !tbaa !5
  %133 = add i64 %.0170229.us, -1
  %134 = add i64 %133, %130
  %135 = sub i64 %134, %131
  %136 = add i64 %135, %132
  store i64 %136, ptr %21, align 8, !tbaa !5
  %137 = call i32 @clarfb_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %20, ptr noundef %gep.us, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull @c__65, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %24) #4
  %138 = add nsw i64 %.0170229.us, %.0167
  %139 = icmp sge i64 %138, %112
  %140 = icmp sle i64 %138, %112
  %.in.us = select i1 %113, i1 %139, i1 %140
  br i1 %.in.us, label %.lr.ph.split.us, label %.loopexit, !llvm.loop !15

.lr.ph.split:                                     ; preds = %.lr.ph.split.preheader, %.lr.ph.split
  %.0170229 = phi i64 [ %158, %.lr.ph.split ], [ %.0169, %.lr.ph.split.preheader ]
  %141 = load i64, ptr %4, align 8, !tbaa !5
  %reass.sub = sub i64 %141, %.0170229
  %142 = add i64 %reass.sub, 1
  %143 = call i64 @llvm.smin.i64(i64 %.2215, i64 %142)
  store i64 %143, ptr %20, align 8, !tbaa !5
  %144 = add i64 %119, %.0170229
  %145 = sub i64 %144, %141
  %146 = add i64 %145, %143
  store i64 %146, ptr %17, align 8, !tbaa !5
  %147 = mul nsw i64 %.0170229, %25
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %147
  %148 = getelementptr inbounds %struct.complex, ptr %28, i64 %.0170229
  %149 = call i32 @clarft_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %17, ptr noundef nonnull %20, ptr noundef %gep, ptr noundef nonnull %6, ptr noundef nonnull %148, ptr noundef nonnull %19, ptr noundef nonnull @c__65) #4
  %150 = load i64, ptr %3, align 8, !tbaa !5
  %151 = load i64, ptr %4, align 8, !tbaa !5
  %152 = load i64, ptr %20, align 8, !tbaa !5
  %153 = add i64 %.0170229, -1
  %154 = add i64 %153, %150
  %155 = sub i64 %154, %151
  %156 = add i64 %155, %152
  store i64 %156, ptr %22, align 8, !tbaa !5
  %157 = call i32 @clarfb_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %20, ptr noundef %gep, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull @c__65, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %24) #4
  %158 = add nsw i64 %.0170229, %.0167
  %159 = icmp sge i64 %158, %112
  %160 = icmp sle i64 %158, %112
  %.in = select i1 %113, i1 %159, i1 %160
  br i1 %.in, label %.lr.ph.split, label %.loopexit, !llvm.loop !15

.loopexit:                                        ; preds = %.lr.ph.split, %.lr.ph.split.us, %.thread232, %116, %.thread216
  store float %.0161, ptr %10, align 4, !tbaa !11
  store float 0.000000e+00, ptr %74, align 4, !tbaa !14
  br label %161

161:                                              ; preds = %81, %84, %80, %.loopexit, %.thread205
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #4
  call void @llvm.lifetime.end.p0(i64 33280, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #4
  ret i32 0
}

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

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

declare i32 @s_cat(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

declare i64 @ilaenv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare i32 @cunm2l_(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 i32 @clarft_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @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 i64 @llvm.smax.i64(i64, i64) #3

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.umax.i64(i64, i64) #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 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !13, i64 0}
!12 = !{!"", !13, i64 0, !13, i64 4}
!13 = !{!"float", !7, i64 0}
!14 = !{!12, !13, i64 4}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}


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