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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @cunmlq_(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 [1 x i8], align 1
  %59 = alloca i64, align 8
  %60 = alloca i64, align 8
  %61 = 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
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #3
  %62 = load ptr, ptr %21, align 8, !tbaa !5
  %63 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %63, ptr %29, align 8, !tbaa !9
  %64 = load i64, ptr %29, align 8, !tbaa !9
  %65 = add nsw i64 1, %64
  store i64 %65, ptr %30, align 8, !tbaa !9
  %66 = load i64, ptr %30, align 8, !tbaa !9
  %67 = load ptr, ptr %20, align 8, !tbaa !5
  %68 = sub i64 0, %66
  %69 = getelementptr inbounds %struct.complex, ptr %67, i64 %68
  store ptr %69, ptr %20, align 8, !tbaa !5
  %70 = load ptr, ptr %22, align 8, !tbaa !5
  %71 = getelementptr inbounds %struct.complex, ptr %70, i32 -1
  store ptr %71, ptr %22, align 8, !tbaa !5
  %72 = load ptr, ptr %24, align 8, !tbaa !5
  %73 = load i64, ptr %72, align 8, !tbaa !9
  store i64 %73, ptr %31, align 8, !tbaa !9
  %74 = load i64, ptr %31, align 8, !tbaa !9
  %75 = add nsw i64 1, %74
  store i64 %75, ptr %32, align 8, !tbaa !9
  %76 = load i64, ptr %32, align 8, !tbaa !9
  %77 = load ptr, ptr %23, align 8, !tbaa !5
  %78 = sub i64 0, %76
  %79 = getelementptr inbounds %struct.complex, ptr %77, i64 %78
  store ptr %79, ptr %23, align 8, !tbaa !5
  %80 = load ptr, ptr %25, align 8, !tbaa !5
  %81 = getelementptr inbounds %struct.complex, ptr %80, i32 -1
  store ptr %81, ptr %25, align 8, !tbaa !5
  %82 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 0, ptr %82, align 8, !tbaa !9
  %83 = load ptr, ptr %15, align 8, !tbaa !5
  %84 = call i64 @lsame_(ptr noundef %83, ptr noundef @.str)
  store i64 %84, ptr %53, align 8, !tbaa !9
  %85 = load ptr, ptr %16, align 8, !tbaa !5
  %86 = call i64 @lsame_(ptr noundef %85, ptr noundef @.str.1)
  store i64 %86, ptr %56, align 8, !tbaa !9
  %87 = load ptr, ptr %26, align 8, !tbaa !5
  %88 = load i64, ptr %87, align 8, !tbaa !9
  %89 = icmp eq i64 %88, -1
  %90 = zext i1 %89 to i32
  %91 = sext i32 %90 to i64
  store i64 %91, ptr %60, align 8, !tbaa !9
  %92 = load i64, ptr %53, align 8, !tbaa !9
  %93 = icmp ne i64 %92, 0
  br i1 %93, label %94, label %99

94:                                               ; preds = %13
  %95 = load ptr, ptr %17, align 8, !tbaa !5
  %96 = load i64, ptr %95, align 8, !tbaa !9
  store i64 %96, ptr %50, align 8, !tbaa !9
  %97 = load ptr, ptr %18, align 8, !tbaa !5
  %98 = load i64, ptr %97, align 8, !tbaa !9
  store i64 %98, ptr %51, align 8, !tbaa !9
  br label %104

99:                                               ; preds = %13
  %100 = load ptr, ptr %18, align 8, !tbaa !5
  %101 = load i64, ptr %100, align 8, !tbaa !9
  store i64 %101, ptr %50, align 8, !tbaa !9
  %102 = load ptr, ptr %17, align 8, !tbaa !5
  %103 = load i64, ptr %102, align 8, !tbaa !9
  store i64 %103, ptr %51, align 8, !tbaa !9
  br label %104

104:                                              ; preds = %99, %94
  %105 = load i64, ptr %53, align 8, !tbaa !9
  %106 = icmp ne i64 %105, 0
  br i1 %106, label %113, label %107

107:                                              ; preds = %104
  %108 = load ptr, ptr %15, align 8, !tbaa !5
  %109 = call i64 @lsame_(ptr noundef %108, ptr noundef @.str.2)
  %110 = icmp ne i64 %109, 0
  br i1 %110, label %113, label %111

111:                                              ; preds = %107
  %112 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -1, ptr %112, align 8, !tbaa !9
  br label %198

113:                                              ; preds = %107, %104
  %114 = load i64, ptr %56, align 8, !tbaa !9
  %115 = icmp ne i64 %114, 0
  br i1 %115, label %122, label %116

116:                                              ; preds = %113
  %117 = load ptr, ptr %16, align 8, !tbaa !5
  %118 = call i64 @lsame_(ptr noundef %117, ptr noundef @.str.3)
  %119 = icmp ne i64 %118, 0
  br i1 %119, label %122, label %120

120:                                              ; preds = %116
  %121 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -2, ptr %121, align 8, !tbaa !9
  br label %197

122:                                              ; preds = %116, %113
  %123 = load ptr, ptr %17, align 8, !tbaa !5
  %124 = load i64, ptr %123, align 8, !tbaa !9
  %125 = icmp slt i64 %124, 0
  br i1 %125, label %126, label %128

126:                                              ; preds = %122
  %127 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -3, ptr %127, align 8, !tbaa !9
  br label %196

128:                                              ; preds = %122
  %129 = load ptr, ptr %18, align 8, !tbaa !5
  %130 = load i64, ptr %129, align 8, !tbaa !9
  %131 = icmp slt i64 %130, 0
  br i1 %131, label %132, label %134

132:                                              ; preds = %128
  %133 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -4, ptr %133, align 8, !tbaa !9
  br label %195

134:                                              ; preds = %128
  %135 = load ptr, ptr %19, align 8, !tbaa !5
  %136 = load i64, ptr %135, align 8, !tbaa !9
  %137 = icmp slt i64 %136, 0
  br i1 %137, label %143, label %138

138:                                              ; preds = %134
  %139 = load ptr, ptr %19, align 8, !tbaa !5
  %140 = load i64, ptr %139, align 8, !tbaa !9
  %141 = load i64, ptr %50, align 8, !tbaa !9
  %142 = icmp sgt i64 %140, %141
  br i1 %142, label %143, label %145

143:                                              ; preds = %138, %134
  %144 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -5, ptr %144, align 8, !tbaa !9
  br label %194

145:                                              ; preds = %138
  %146 = load ptr, ptr %21, align 8, !tbaa !5
  %147 = load i64, ptr %146, align 8, !tbaa !9
  %148 = load ptr, ptr %19, align 8, !tbaa !5
  %149 = load i64, ptr %148, align 8, !tbaa !9
  %150 = icmp sge i64 1, %149
  br i1 %150, label %151, label %152

151:                                              ; preds = %145
  br label %155

152:                                              ; preds = %145
  %153 = load ptr, ptr %19, align 8, !tbaa !5
  %154 = load i64, ptr %153, align 8, !tbaa !9
  br label %155

155:                                              ; preds = %152, %151
  %156 = phi i64 [ 1, %151 ], [ %154, %152 ]
  %157 = icmp slt i64 %147, %156
  br i1 %157, label %158, label %160

158:                                              ; preds = %155
  %159 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -7, ptr %159, align 8, !tbaa !9
  br label %193

160:                                              ; preds = %155
  %161 = load ptr, ptr %24, align 8, !tbaa !5
  %162 = load i64, ptr %161, align 8, !tbaa !9
  %163 = load ptr, ptr %17, align 8, !tbaa !5
  %164 = load i64, ptr %163, align 8, !tbaa !9
  %165 = icmp sge i64 1, %164
  br i1 %165, label %166, label %167

166:                                              ; preds = %160
  br label %170

167:                                              ; preds = %160
  %168 = load ptr, ptr %17, align 8, !tbaa !5
  %169 = load i64, ptr %168, align 8, !tbaa !9
  br label %170

170:                                              ; preds = %167, %166
  %171 = phi i64 [ 1, %166 ], [ %169, %167 ]
  %172 = icmp slt i64 %162, %171
  br i1 %172, label %173, label %175

173:                                              ; preds = %170
  %174 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -10, ptr %174, align 8, !tbaa !9
  br label %192

175:                                              ; preds = %170
  %176 = load ptr, ptr %26, align 8, !tbaa !5
  %177 = load i64, ptr %176, align 8, !tbaa !9
  %178 = load i64, ptr %51, align 8, !tbaa !9
  %179 = icmp sge i64 1, %178
  br i1 %179, label %180, label %181

180:                                              ; preds = %175
  br label %183

181:                                              ; preds = %175
  %182 = load i64, ptr %51, align 8, !tbaa !9
  br label %183

183:                                              ; preds = %181, %180
  %184 = phi i64 [ 1, %180 ], [ %182, %181 ]
  %185 = icmp slt i64 %177, %184
  br i1 %185, label %186, label %191

186:                                              ; preds = %183
  %187 = load i64, ptr %60, align 8, !tbaa !9
  %188 = icmp ne i64 %187, 0
  br i1 %188, label %191, label %189

189:                                              ; preds = %186
  %190 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -12, ptr %190, align 8, !tbaa !9
  br label %191

191:                                              ; preds = %189, %186, %183
  br label %192

192:                                              ; preds = %191, %173
  br label %193

193:                                              ; preds = %192, %158
  br label %194

194:                                              ; preds = %193, %143
  br label %195

195:                                              ; preds = %194, %132
  br label %196

196:                                              ; preds = %195, %126
  br label %197

197:                                              ; preds = %196, %120
  br label %198

198:                                              ; preds = %197, %111
  %199 = load ptr, ptr %27, 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 %244

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

221:                                              ; preds = %202
  %222 = load i64, ptr %33, align 8, !tbaa !9
  br label %225

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

225:                                              ; preds = %223, %221
  %226 = phi i64 [ %222, %221 ], [ %224, %223 ]
  store i64 %226, ptr %47, align 8, !tbaa !9
  %227 = load i64, ptr %51, align 8, !tbaa !9
  %228 = icmp sge i64 1, %227
  br i1 %228, label %229, label %230

229:                                              ; preds = %225
  br label %232

230:                                              ; preds = %225
  %231 = load i64, ptr %51, align 8, !tbaa !9
  br label %232

232:                                              ; preds = %230, %229
  %233 = phi i64 [ 1, %229 ], [ %231, %230 ]
  %234 = load i64, ptr %47, align 8, !tbaa !9
  %235 = mul nsw i64 %233, %234
  store i64 %235, ptr %59, align 8, !tbaa !9
  %236 = load i64, ptr %59, align 8, !tbaa !9
  %237 = sitofp i64 %236 to float
  %238 = load ptr, ptr %25, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.complex, ptr %238, i64 1
  %240 = getelementptr inbounds %struct.complex, ptr %239, i32 0, i32 0
  store float %237, ptr %240, align 4, !tbaa !11
  %241 = load ptr, ptr %25, align 8, !tbaa !5
  %242 = getelementptr inbounds %struct.complex, ptr %241, i64 1
  %243 = getelementptr inbounds %struct.complex, ptr %242, i32 0, i32 1
  store float 0.000000e+00, ptr %243, align 4, !tbaa !14
  br label %244

244:                                              ; preds = %232, %198
  %245 = load ptr, ptr %27, align 8, !tbaa !5
  %246 = load i64, ptr %245, align 8, !tbaa !9
  %247 = icmp ne i64 %246, 0
  br i1 %247, label %248, label %253

248:                                              ; preds = %244
  %249 = load ptr, ptr %27, align 8, !tbaa !5
  %250 = load i64, ptr %249, align 8, !tbaa !9
  %251 = sub nsw i64 0, %250
  store i64 %251, ptr %33, align 8, !tbaa !9
  %252 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %33)
  store i32 0, ptr %14, align 4
  store i32 1, ptr %61, align 4
  br label %503

253:                                              ; preds = %244
  %254 = load i64, ptr %60, align 8, !tbaa !9
  %255 = icmp ne i64 %254, 0
  br i1 %255, label %256, label %257

256:                                              ; preds = %253
  store i32 0, ptr %14, align 4
  store i32 1, ptr %61, align 4
  br label %503

257:                                              ; preds = %253
  br label %258

258:                                              ; preds = %257
  %259 = load ptr, ptr %17, align 8, !tbaa !5
  %260 = load i64, ptr %259, align 8, !tbaa !9
  %261 = icmp eq i64 %260, 0
  br i1 %261, label %270, label %262

262:                                              ; preds = %258
  %263 = load ptr, ptr %18, align 8, !tbaa !5
  %264 = load i64, ptr %263, align 8, !tbaa !9
  %265 = icmp eq i64 %264, 0
  br i1 %265, label %270, label %266

266:                                              ; preds = %262
  %267 = load ptr, ptr %19, align 8, !tbaa !5
  %268 = load i64, ptr %267, align 8, !tbaa !9
  %269 = icmp eq i64 %268, 0
  br i1 %269, label %270, label %277

270:                                              ; preds = %266, %262, %258
  %271 = load ptr, ptr %25, align 8, !tbaa !5
  %272 = getelementptr inbounds %struct.complex, ptr %271, i64 1
  %273 = getelementptr inbounds %struct.complex, ptr %272, i32 0, i32 0
  store float 1.000000e+00, ptr %273, align 4, !tbaa !11
  %274 = load ptr, ptr %25, align 8, !tbaa !5
  %275 = getelementptr inbounds %struct.complex, ptr %274, i64 1
  %276 = getelementptr inbounds %struct.complex, ptr %275, i32 0, i32 1
  store float 0.000000e+00, ptr %276, align 4, !tbaa !14
  store i32 0, ptr %14, align 4
  store i32 1, ptr %61, align 4
  br label %503

277:                                              ; preds = %266
  store i64 2, ptr %54, align 8, !tbaa !9
  %278 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %278, ptr %57, align 8, !tbaa !9
  %279 = load i64, ptr %47, align 8, !tbaa !9
  %280 = icmp sgt i64 %279, 1
  br i1 %280, label %281, label %324

281:                                              ; preds = %277
  %282 = load i64, ptr %47, align 8, !tbaa !9
  %283 = load ptr, ptr %19, align 8, !tbaa !5
  %284 = load i64, ptr %283, align 8, !tbaa !9
  %285 = icmp slt i64 %282, %284
  br i1 %285, label %286, label %324

286:                                              ; preds = %281
  %287 = load i64, ptr %51, align 8, !tbaa !9
  %288 = load i64, ptr %47, align 8, !tbaa !9
  %289 = mul nsw i64 %287, %288
  store i64 %289, ptr %52, align 8, !tbaa !9
  %290 = load ptr, ptr %26, align 8, !tbaa !5
  %291 = load i64, ptr %290, align 8, !tbaa !9
  %292 = load i64, ptr %52, align 8, !tbaa !9
  %293 = icmp slt i64 %291, %292
  br i1 %293, label %294, label %323

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

317:                                              ; preds = %294
  %318 = load i64, ptr %33, align 8, !tbaa !9
  br label %321

319:                                              ; preds = %294
  %320 = load i64, ptr %34, align 8, !tbaa !9
  br label %321

321:                                              ; preds = %319, %317
  %322 = phi i64 [ %318, %317 ], [ %320, %319 ]
  store i64 %322, ptr %54, align 8, !tbaa !9
  br label %323

323:                                              ; preds = %321, %286
  br label %326

324:                                              ; preds = %281, %277
  %325 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %325, ptr %52, align 8, !tbaa !9
  br label %326

326:                                              ; preds = %324, %323
  %327 = load i64, ptr %47, align 8, !tbaa !9
  %328 = load i64, ptr %54, align 8, !tbaa !9
  %329 = icmp slt i64 %327, %328
  br i1 %329, label %335, label %330

330:                                              ; preds = %326
  %331 = load i64, ptr %47, align 8, !tbaa !9
  %332 = load ptr, ptr %19, align 8, !tbaa !5
  %333 = load i64, ptr %332, align 8, !tbaa !9
  %334 = icmp sge i64 %331, %333
  br i1 %334, label %335, label %354

335:                                              ; preds = %330, %326
  %336 = load ptr, ptr %15, align 8, !tbaa !5
  %337 = load ptr, ptr %16, align 8, !tbaa !5
  %338 = load ptr, ptr %17, align 8, !tbaa !5
  %339 = load ptr, ptr %18, align 8, !tbaa !5
  %340 = load ptr, ptr %19, align 8, !tbaa !5
  %341 = load ptr, ptr %20, align 8, !tbaa !5
  %342 = load i64, ptr %30, align 8, !tbaa !9
  %343 = getelementptr inbounds %struct.complex, ptr %341, i64 %342
  %344 = load ptr, ptr %21, align 8, !tbaa !5
  %345 = load ptr, ptr %22, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.complex, ptr %345, i64 1
  %347 = load ptr, ptr %23, align 8, !tbaa !5
  %348 = load i64, ptr %32, align 8, !tbaa !9
  %349 = getelementptr inbounds %struct.complex, ptr %347, i64 %348
  %350 = load ptr, ptr %24, align 8, !tbaa !5
  %351 = load ptr, ptr %25, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.complex, ptr %351, i64 1
  %353 = call i32 @cunml2_(ptr noundef %336, ptr noundef %337, ptr noundef %338, ptr noundef %339, ptr noundef %340, ptr noundef %343, ptr noundef %344, ptr noundef %346, ptr noundef %349, ptr noundef %350, ptr noundef %352, ptr noundef %55)
  br label %494

354:                                              ; preds = %330
  %355 = load i64, ptr %53, align 8, !tbaa !9
  %356 = icmp ne i64 %355, 0
  br i1 %356, label %357, label %360

357:                                              ; preds = %354
  %358 = load i64, ptr %56, align 8, !tbaa !9
  %359 = icmp ne i64 %358, 0
  br i1 %359, label %366, label %360

360:                                              ; preds = %357, %354
  %361 = load i64, ptr %53, align 8, !tbaa !9
  %362 = icmp ne i64 %361, 0
  br i1 %362, label %370, label %363

363:                                              ; preds = %360
  %364 = load i64, ptr %56, align 8, !tbaa !9
  %365 = icmp ne i64 %364, 0
  br i1 %365, label %370, label %366

366:                                              ; preds = %363, %357
  store i64 1, ptr %41, align 8, !tbaa !9
  %367 = load ptr, ptr %19, align 8, !tbaa !5
  %368 = load i64, ptr %367, align 8, !tbaa !9
  store i64 %368, ptr %42, align 8, !tbaa !9
  %369 = load i64, ptr %47, align 8, !tbaa !9
  store i64 %369, ptr %43, align 8, !tbaa !9
  br label %381

370:                                              ; preds = %363, %360
  %371 = load ptr, ptr %19, align 8, !tbaa !5
  %372 = load i64, ptr %371, align 8, !tbaa !9
  %373 = sub nsw i64 %372, 1
  %374 = load i64, ptr %47, align 8, !tbaa !9
  %375 = sdiv i64 %373, %374
  %376 = load i64, ptr %47, align 8, !tbaa !9
  %377 = mul nsw i64 %375, %376
  %378 = add nsw i64 %377, 1
  store i64 %378, ptr %41, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  %379 = load i64, ptr %47, align 8, !tbaa !9
  %380 = sub nsw i64 0, %379
  store i64 %380, ptr %43, align 8, !tbaa !9
  br label %381

381:                                              ; preds = %370, %366
  %382 = load i64, ptr %53, align 8, !tbaa !9
  %383 = icmp ne i64 %382, 0
  br i1 %383, label %384, label %387

384:                                              ; preds = %381
  %385 = load ptr, ptr %18, align 8, !tbaa !5
  %386 = load i64, ptr %385, align 8, !tbaa !9
  store i64 %386, ptr %49, align 8, !tbaa !9
  store i64 1, ptr %46, align 8, !tbaa !9
  br label %390

387:                                              ; preds = %381
  %388 = load ptr, ptr %17, align 8, !tbaa !5
  %389 = load i64, ptr %388, align 8, !tbaa !9
  store i64 %389, ptr %48, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %390

390:                                              ; preds = %387, %384
  %391 = load i64, ptr %56, align 8, !tbaa !9
  %392 = icmp ne i64 %391, 0
  br i1 %392, label %393, label %395

393:                                              ; preds = %390
  %394 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  store i8 67, ptr %394, align 1, !tbaa !15
  br label %397

395:                                              ; preds = %390
  %396 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  store i8 78, ptr %396, align 1, !tbaa !15
  br label %397

397:                                              ; preds = %395, %393
  %398 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %398, ptr %33, align 8, !tbaa !9
  %399 = load i64, ptr %43, align 8, !tbaa !9
  store i64 %399, ptr %34, align 8, !tbaa !9
  %400 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %400, ptr %39, align 8, !tbaa !9
  br label %401

401:                                              ; preds = %489, %397
  %402 = load i64, ptr %34, align 8, !tbaa !9
  %403 = icmp slt i64 %402, 0
  br i1 %403, label %404, label %409

404:                                              ; preds = %401
  %405 = load i64, ptr %39, align 8, !tbaa !9
  %406 = load i64, ptr %33, align 8, !tbaa !9
  %407 = icmp sge i64 %405, %406
  %408 = zext i1 %407 to i32
  br label %414

409:                                              ; preds = %401
  %410 = load i64, ptr %39, align 8, !tbaa !9
  %411 = load i64, ptr %33, align 8, !tbaa !9
  %412 = icmp sle i64 %410, %411
  %413 = zext i1 %412 to i32
  br label %414

414:                                              ; preds = %409, %404
  %415 = phi i32 [ %408, %404 ], [ %413, %409 ]
  %416 = icmp ne i32 %415, 0
  br i1 %416, label %417, label %493

417:                                              ; preds = %414
  %418 = load i64, ptr %47, align 8, !tbaa !9
  store i64 %418, ptr %36, align 8, !tbaa !9
  %419 = load ptr, ptr %19, align 8, !tbaa !5
  %420 = load i64, ptr %419, align 8, !tbaa !9
  %421 = load i64, ptr %39, align 8, !tbaa !9
  %422 = sub nsw i64 %420, %421
  %423 = add nsw i64 %422, 1
  store i64 %423, ptr %37, align 8, !tbaa !9
  %424 = load i64, ptr %36, align 8, !tbaa !9
  %425 = load i64, ptr %37, align 8, !tbaa !9
  %426 = icmp sle i64 %424, %425
  br i1 %426, label %427, label %429

427:                                              ; preds = %417
  %428 = load i64, ptr %36, align 8, !tbaa !9
  br label %431

429:                                              ; preds = %417
  %430 = load i64, ptr %37, align 8, !tbaa !9
  br label %431

431:                                              ; preds = %429, %427
  %432 = phi i64 [ %428, %427 ], [ %430, %429 ]
  store i64 %432, ptr %44, align 8, !tbaa !9
  %433 = load i64, ptr %50, align 8, !tbaa !9
  %434 = load i64, ptr %39, align 8, !tbaa !9
  %435 = sub nsw i64 %433, %434
  %436 = add nsw i64 %435, 1
  store i64 %436, ptr %36, align 8, !tbaa !9
  %437 = load ptr, ptr %20, align 8, !tbaa !5
  %438 = load i64, ptr %39, align 8, !tbaa !9
  %439 = load i64, ptr %39, align 8, !tbaa !9
  %440 = load i64, ptr %29, align 8, !tbaa !9
  %441 = mul nsw i64 %439, %440
  %442 = add nsw i64 %438, %441
  %443 = getelementptr inbounds %struct.complex, ptr %437, i64 %442
  %444 = load ptr, ptr %21, align 8, !tbaa !5
  %445 = load ptr, ptr %22, align 8, !tbaa !5
  %446 = load i64, ptr %39, align 8, !tbaa !9
  %447 = getelementptr inbounds %struct.complex, ptr %445, i64 %446
  %448 = getelementptr inbounds [4160 x %struct.complex], ptr %40, i64 0, i64 0
  %449 = call i32 @clarft_(ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %36, ptr noundef %44, ptr noundef %443, ptr noundef %444, ptr noundef %447, ptr noundef %448, ptr noundef @c__65)
  %450 = load i64, ptr %53, align 8, !tbaa !9
  %451 = icmp ne i64 %450, 0
  br i1 %451, label %452, label %459

452:                                              ; preds = %431
  %453 = load ptr, ptr %17, align 8, !tbaa !5
  %454 = load i64, ptr %453, align 8, !tbaa !9
  %455 = load i64, ptr %39, align 8, !tbaa !9
  %456 = sub nsw i64 %454, %455
  %457 = add nsw i64 %456, 1
  store i64 %457, ptr %48, align 8, !tbaa !9
  %458 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %458, ptr %45, align 8, !tbaa !9
  br label %466

459:                                              ; preds = %431
  %460 = load ptr, ptr %18, align 8, !tbaa !5
  %461 = load i64, ptr %460, align 8, !tbaa !9
  %462 = load i64, ptr %39, align 8, !tbaa !9
  %463 = sub nsw i64 %461, %462
  %464 = add nsw i64 %463, 1
  store i64 %464, ptr %49, align 8, !tbaa !9
  %465 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %465, ptr %46, align 8, !tbaa !9
  br label %466

466:                                              ; preds = %459, %452
  %467 = load ptr, ptr %15, align 8, !tbaa !5
  %468 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  %469 = load ptr, ptr %20, align 8, !tbaa !5
  %470 = load i64, ptr %39, align 8, !tbaa !9
  %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 %470, %473
  %475 = getelementptr inbounds %struct.complex, ptr %469, 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 %45, align 8, !tbaa !9
  %480 = load i64, ptr %46, align 8, !tbaa !9
  %481 = load i64, ptr %31, align 8, !tbaa !9
  %482 = mul nsw i64 %480, %481
  %483 = add nsw i64 %479, %482
  %484 = getelementptr inbounds %struct.complex, ptr %478, i64 %483
  %485 = load ptr, ptr %24, align 8, !tbaa !5
  %486 = load ptr, ptr %25, align 8, !tbaa !5
  %487 = getelementptr inbounds %struct.complex, ptr %486, i64 1
  %488 = call i32 @clarfb_(ptr noundef %467, ptr noundef %468, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %48, ptr noundef %49, ptr noundef %44, ptr noundef %475, ptr noundef %476, ptr noundef %477, ptr noundef @c__65, ptr noundef %484, ptr noundef %485, ptr noundef %487, ptr noundef %57)
  br label %489

489:                                              ; preds = %466
  %490 = load i64, ptr %34, align 8, !tbaa !9
  %491 = load i64, ptr %39, align 8, !tbaa !9
  %492 = add nsw i64 %491, %490
  store i64 %492, ptr %39, align 8, !tbaa !9
  br label %401, !llvm.loop !16

493:                                              ; preds = %414
  br label %494

494:                                              ; preds = %493, %335
  %495 = load i64, ptr %59, align 8, !tbaa !9
  %496 = sitofp i64 %495 to float
  %497 = load ptr, ptr %25, align 8, !tbaa !5
  %498 = getelementptr inbounds %struct.complex, ptr %497, i64 1
  %499 = getelementptr inbounds %struct.complex, ptr %498, i32 0, i32 0
  store float %496, ptr %499, align 4, !tbaa !11
  %500 = load ptr, ptr %25, align 8, !tbaa !5
  %501 = getelementptr inbounds %struct.complex, ptr %500, i64 1
  %502 = getelementptr inbounds %struct.complex, ptr %501, i32 0, i32 1
  store float 0.000000e+00, ptr %502, align 4, !tbaa !14
  store i32 0, ptr %14, align 4
  store i32 1, ptr %61, align 4
  br label %503

503:                                              ; preds = %494, %270, %256, %248
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #3
  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
  %504 = load i32, ptr %14, align 4
  ret i32 %504
}

; 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 @cunml2_(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 = !{!7, !7, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"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 [8 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [8 x i8], align 1
@c__65 = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @cunmlq_(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
  %25 = alloca [1 x i8], align 1
  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
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #4
  %26 = load i64, ptr %6, align 8, !tbaa !5
  %27 = xor i64 %26, -1
  %28 = getelementptr inbounds %struct.complex, ptr %5, i64 %27
  %29 = getelementptr inbounds i8, ptr %7, i64 -8
  %30 = load i64, ptr %9, align 8, !tbaa !5
  %31 = xor i64 %30, -1
  %32 = getelementptr inbounds %struct.complex, ptr %8, i64 %31
  store i64 0, ptr %12, align 8, !tbaa !5
  %33 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %34 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #4
  %35 = load i64, ptr %11, align 8, !tbaa !5
  %36 = icmp eq i64 %35, -1
  %37 = icmp ne i64 %33, 0
  %. = select i1 %37, ptr %2, ptr %3
  %.191 = select i1 %37, ptr %3, ptr %2
  %.0167 = load i64, ptr %.191, align 8, !tbaa !5
  %.0168 = load i64, ptr %., align 8, !tbaa !5
  br i1 %37, label %40, label %38

38:                                               ; preds = %13
  %39 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #4
  %.not = icmp eq i64 %39, 0
  br i1 %.not, label %.thread198.sink.split, label %40

40:                                               ; preds = %38, %13
  %.not183 = icmp eq i64 %34, 0
  br i1 %.not183, label %41, label %43

41:                                               ; preds = %40
  %42 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #4
  %.not184 = icmp eq i64 %42, 0
  br i1 %.not184, label %.thread198.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 %.thread198.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 %.thread198.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, %.0168
  %or.cond192 = select i1 %51, i1 true, i1 %52
  br i1 %or.cond192, label %.thread198.sink.split, label %53

53:                                               ; preds = %49
  %54 = load i64, ptr %6, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %50, i64 1)
  %55 = icmp slt i64 %54, %spec.select
  br i1 %55, label %.thread198.sink.split, label %56

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

59:                                               ; preds = %56
  %60 = load i64, ptr %11, align 8, !tbaa !5
  %61 = tail call i64 @llvm.smax.i64(i64 %.0167, i64 1)
  %62 = icmp sge i64 %60, %61
  %or.cond = select i1 %62, i1 true, i1 %36
  br i1 %or.cond, label %63, label %.thread198.sink.split

63:                                               ; preds = %59
  %.pr = load i64, ptr %12, align 8, !tbaa !5
  %64 = icmp eq i64 %.pr, 0
  br i1 %64, label %.thread, label %.thread198

.thread:                                          ; preds = %63
  store i64 1, ptr %16, align 16, !tbaa !5
  store ptr %0, ptr %14, align 16, !tbaa !9
  %65 = getelementptr inbounds i8, ptr %16, i64 8
  store i64 1, ptr %65, align 8, !tbaa !5
  %66 = getelementptr inbounds i8, ptr %14, i64 8
  store ptr %1, ptr %66, align 8, !tbaa !9
  %67 = 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
  %68 = 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
  %69 = call i64 @llvm.smin.i64(i64 %68, i64 64)
  %70 = mul nsw i64 %69, %61
  %71 = sitofp i64 %70 to float
  store float %71, ptr %10, align 4, !tbaa !11
  %72 = getelementptr inbounds i8, ptr %10, i64 4
  store float 0.000000e+00, ptr %72, align 4, !tbaa !14
  %.pr197.pr = load i64, ptr %12, align 8, !tbaa !5
  %.not186 = icmp eq i64 %.pr197.pr, 0
  br i1 %.not186, label %76, label %.thread198

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

.thread198:                                       ; preds = %.thread198.sink.split, %63, %.thread
  %73 = phi i64 [ %.pr197.pr, %.thread ], [ %.pr, %63 ], [ %.sink, %.thread198.sink.split ]
  %74 = sub nsw i64 0, %73
  store i64 %74, ptr %15, align 8, !tbaa !5
  %75 = call i32 @xerbla_(ptr noundef nonnull @.str.4, ptr noundef nonnull %15) #4
  br label %157

76:                                               ; preds = %.thread
  br i1 %36, label %157, label %77

77:                                               ; preds = %76
  %78 = load i64, ptr %2, align 8, !tbaa !5
  %79 = icmp eq i64 %78, 0
  br i1 %79, label %86, label %80

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

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

86:                                               ; preds = %83, %80, %77
  store float 1.000000e+00, ptr %10, align 4, !tbaa !11
  br label %157

87:                                               ; preds = %83
  store i64 %.0167, ptr %24, align 8, !tbaa !5
  %88 = icmp sgt i64 %68, 1
  br i1 %88, label %89, label %.thread207

89:                                               ; preds = %87
  %90 = icmp slt i64 %69, %84
  br i1 %90, label %91, label %.thread203

91:                                               ; preds = %89
  %92 = mul nsw i64 %69, %.0167
  %93 = load i64, ptr %11, align 8, !tbaa !5
  %94 = icmp slt i64 %93, %92
  br i1 %94, label %95, label %.thread203

95:                                               ; preds = %91
  %96 = sdiv i64 %93, %.0167
  store i64 1, ptr %16, align 16, !tbaa !5
  store ptr %0, ptr %14, align 16, !tbaa !9
  store i64 1, ptr %65, align 8, !tbaa !5
  store ptr %1, ptr %66, align 8, !tbaa !9
  %97 = 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
  %98 = 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
  %99 = call i64 @llvm.smax.i64(i64 %98, i64 2)
  %100 = icmp slt i64 %96, %99
  br i1 %100, label %.thread207, label %..thread203_crit_edge

..thread203_crit_edge:                            ; preds = %95
  %.pre = load i64, ptr %4, align 8, !tbaa !5
  br label %.thread203

.thread203:                                       ; preds = %..thread203_crit_edge, %89, %91
  %101 = phi i64 [ %.pre, %..thread203_crit_edge ], [ %84, %91 ], [ %84, %89 ]
  %.1206 = phi i64 [ %96, %..thread203_crit_edge ], [ %69, %91 ], [ %69, %89 ]
  %.fr189 = freeze i64 %101
  %.not188 = icmp slt i64 %.1206, %.fr189
  br i1 %.not188, label %103, label %.thread207

.thread207:                                       ; preds = %87, %.thread203, %95
  %102 = call i32 @cunml2_(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

103:                                              ; preds = %.thread203
  %104 = icmp ne i64 %34, 0
  %or.cond194 = xor i1 %37, %104
  br i1 %or.cond194, label %105, label %110

105:                                              ; preds = %103
  %106 = add nsw i64 %.fr189, -1
  %107 = srem i64 %106, %.1206
  %108 = sub i64 %.fr189, %107
  %109 = sub nsw i64 0, %.1206
  br label %110

110:                                              ; preds = %103, %105
  %.0177 = phi i64 [ %108, %105 ], [ 1, %103 ]
  %111 = phi i64 [ 1, %105 ], [ %.fr189, %103 ]
  %.0175 = phi i64 [ %109, %105 ], [ %.1206, %103 ]
  br i1 %37, label %112, label %114

112:                                              ; preds = %110
  %113 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %113, ptr %22, align 8, !tbaa !5
  br label %116

114:                                              ; preds = %110
  %115 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %115, ptr %21, align 8, !tbaa !5
  br label %116

116:                                              ; preds = %114, %112
  %.195 = select i1 %104, i8 67, i8 78
  store i8 %.195, ptr %25, align 1, !tbaa !15
  %117 = icmp slt i64 %.0175, 0
  %.0178.neg214 = sub i64 0, %.0177
  %118 = icmp sge i64 %.0177, %111
  %119 = icmp sle i64 %.0177, %111
  %.in215 = select i1 %117, i1 %118, i1 %119
  br i1 %.in215, label %.lr.ph, label %.loopexit

.lr.ph:                                           ; preds = %116
  %120 = add i64 %.0168, 1
  %121 = add i64 %26, 1
  br i1 %37, label %.lr.ph.split.us, label %.lr.ph.split

.lr.ph.split.us:                                  ; preds = %.lr.ph
  %invariant.gep = getelementptr i8, ptr %8, i64 -8
  br label %122

122:                                              ; preds = %122, %.lr.ph.split.us
  %.0178.neg219.us = phi i64 [ %.0178.neg214, %.lr.ph.split.us ], [ %.0178.neg.us, %122 ]
  %.0178216.us = phi i64 [ %.0177, %.lr.ph.split.us ], [ %135, %122 ]
  %123 = load i64, ptr %4, align 8, !tbaa !5
  %124 = add i64 %.0178.neg219.us, 1
  %125 = add i64 %124, %123
  %126 = call i64 @llvm.smin.i64(i64 %.1206, i64 %125)
  store i64 %126, ptr %20, align 8, !tbaa !5
  %127 = add i64 %120, %.0178.neg219.us
  store i64 %127, ptr %17, align 8, !tbaa !5
  %128 = mul i64 %.0178216.us, %121
  %129 = getelementptr inbounds %struct.complex, ptr %28, i64 %128
  %130 = getelementptr inbounds %struct.complex, ptr %29, i64 %.0178216.us
  %131 = call i32 @clarft_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %17, ptr noundef nonnull %20, ptr noundef %129, ptr noundef nonnull %6, ptr noundef nonnull %130, ptr noundef nonnull %19, ptr noundef nonnull @c__65) #4
  %132 = load i64, ptr %2, align 8, !tbaa !5
  %133 = add i64 %124, %132
  store i64 %133, ptr %21, align 8, !tbaa !5
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %.0178216.us
  %134 = call i32 @clarfb_(ptr noundef %0, ptr noundef nonnull %25, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %20, ptr noundef %129, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull @c__65, ptr noundef %gep, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %24) #4
  %135 = add nsw i64 %.0178216.us, %.0175
  %.0178.neg.us = sub i64 0, %135
  %136 = icmp sge i64 %135, %111
  %137 = icmp sle i64 %135, %111
  %.in.us = select i1 %117, i1 %136, i1 %137
  br i1 %.in.us, label %122, label %.loopexit, !llvm.loop !16

.lr.ph.split:                                     ; preds = %.lr.ph
  %138 = getelementptr i8, ptr %32, i64 8
  br label %139

139:                                              ; preds = %.lr.ph.split, %139
  %.0178.neg219 = phi i64 [ %.0178.neg214, %.lr.ph.split ], [ %.0178.neg, %139 ]
  %.0178216 = phi i64 [ %.0177, %.lr.ph.split ], [ %154, %139 ]
  %140 = load i64, ptr %4, align 8, !tbaa !5
  %141 = add i64 %.0178.neg219, 1
  %142 = add i64 %141, %140
  %143 = call i64 @llvm.smin.i64(i64 %.1206, i64 %142)
  store i64 %143, ptr %20, align 8, !tbaa !5
  %144 = add i64 %120, %.0178.neg219
  store i64 %144, ptr %17, align 8, !tbaa !5
  %145 = mul i64 %.0178216, %121
  %146 = getelementptr inbounds %struct.complex, ptr %28, i64 %145
  %147 = getelementptr inbounds %struct.complex, ptr %29, i64 %.0178216
  %148 = call i32 @clarft_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %17, ptr noundef nonnull %20, ptr noundef %146, ptr noundef nonnull %6, ptr noundef nonnull %147, ptr noundef nonnull %19, ptr noundef nonnull @c__65) #4
  %149 = load i64, ptr %3, align 8, !tbaa !5
  %150 = add i64 %141, %149
  store i64 %150, ptr %22, align 8, !tbaa !5
  %151 = mul nsw i64 %.0178216, %30
  %152 = getelementptr %struct.complex, ptr %138, i64 %151
  %153 = call i32 @clarfb_(ptr noundef %0, ptr noundef nonnull %25, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %20, ptr noundef %146, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull @c__65, ptr noundef %152, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %24) #4
  %154 = add nsw i64 %.0178216, %.0175
  %.0178.neg = sub i64 0, %154
  %155 = icmp sge i64 %154, %111
  %156 = icmp sle i64 %154, %111
  %.in = select i1 %117, i1 %155, i1 %156
  br i1 %.in, label %139, label %.loopexit, !llvm.loop !16

.loopexit:                                        ; preds = %139, %122, %116, %.thread207
  store float %71, ptr %10, align 4, !tbaa !11
  store float 0.000000e+00, ptr %72, align 4, !tbaa !14
  br label %157

157:                                              ; preds = %76, %.loopexit, %86, %.thread198
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #4
  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 @cunml2_(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 = !{!7, !7, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}


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