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

; 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 [13 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [8 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @cposvx_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19) #0 {
  %21 = alloca i32, align 4
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, 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 float, align 4
  %56 = alloca float, align 4
  %57 = alloca %struct.complex, align 4
  %58 = alloca i64, align 8
  %59 = alloca i64, align 8
  %60 = alloca float, align 4
  %61 = alloca float, align 4
  %62 = alloca float, align 4
  %63 = alloca float, align 4
  %64 = alloca float, align 4
  %65 = alloca i64, align 8
  %66 = alloca i64, align 8
  %67 = alloca i64, align 8
  %68 = alloca float, align 4
  %69 = alloca i64, align 8
  %70 = alloca float, align 4
  %71 = alloca i32, align 4
  store ptr %0, ptr %22, align 8, !tbaa !5
  store ptr %1, ptr %23, align 8, !tbaa !5
  store ptr %2, ptr %24, align 8, !tbaa !5
  store ptr %3, ptr %25, align 8, !tbaa !5
  store ptr %4, ptr %26, align 8, !tbaa !5
  store ptr %5, ptr %27, align 8, !tbaa !5
  store ptr %6, ptr %28, align 8, !tbaa !5
  store ptr %7, ptr %29, align 8, !tbaa !5
  store ptr %8, ptr %30, align 8, !tbaa !5
  store ptr %9, ptr %31, align 8, !tbaa !5
  store ptr %10, ptr %32, align 8, !tbaa !5
  store ptr %11, ptr %33, align 8, !tbaa !5
  store ptr %12, ptr %34, align 8, !tbaa !5
  store ptr %13, ptr %35, align 8, !tbaa !5
  store ptr %14, ptr %36, align 8, !tbaa !5
  store ptr %15, ptr %37, align 8, !tbaa !5
  store ptr %16, ptr %38, align 8, !tbaa !5
  store ptr %17, ptr %39, align 8, !tbaa !5
  store ptr %18, ptr %40, align 8, !tbaa !5
  store ptr %19, ptr %41, align 8, !tbaa !5
  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 4, ptr %55) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #3
  %72 = load ptr, ptr %27, align 8, !tbaa !5
  %73 = load i64, ptr %72, align 8, !tbaa !9
  store i64 %73, ptr %42, align 8, !tbaa !9
  %74 = load i64, ptr %42, align 8, !tbaa !9
  %75 = add nsw i64 1, %74
  store i64 %75, ptr %43, align 8, !tbaa !9
  %76 = load i64, ptr %43, align 8, !tbaa !9
  %77 = load ptr, ptr %26, align 8, !tbaa !5
  %78 = sub i64 0, %76
  %79 = getelementptr inbounds %struct.complex, ptr %77, i64 %78
  store ptr %79, ptr %26, align 8, !tbaa !5
  %80 = load ptr, ptr %29, align 8, !tbaa !5
  %81 = load i64, ptr %80, align 8, !tbaa !9
  store i64 %81, ptr %44, align 8, !tbaa !9
  %82 = load i64, ptr %44, align 8, !tbaa !9
  %83 = add nsw i64 1, %82
  store i64 %83, ptr %45, align 8, !tbaa !9
  %84 = load i64, ptr %45, align 8, !tbaa !9
  %85 = load ptr, ptr %28, align 8, !tbaa !5
  %86 = sub i64 0, %84
  %87 = getelementptr inbounds %struct.complex, ptr %85, i64 %86
  store ptr %87, ptr %28, align 8, !tbaa !5
  %88 = load ptr, ptr %31, align 8, !tbaa !5
  %89 = getelementptr inbounds float, ptr %88, i32 -1
  store ptr %89, ptr %31, align 8, !tbaa !5
  %90 = load ptr, ptr %33, align 8, !tbaa !5
  %91 = load i64, ptr %90, align 8, !tbaa !9
  store i64 %91, ptr %46, align 8, !tbaa !9
  %92 = load i64, ptr %46, align 8, !tbaa !9
  %93 = add nsw i64 1, %92
  store i64 %93, ptr %47, align 8, !tbaa !9
  %94 = load i64, ptr %47, align 8, !tbaa !9
  %95 = load ptr, ptr %32, align 8, !tbaa !5
  %96 = sub i64 0, %94
  %97 = getelementptr inbounds %struct.complex, ptr %95, i64 %96
  store ptr %97, ptr %32, align 8, !tbaa !5
  %98 = load ptr, ptr %35, align 8, !tbaa !5
  %99 = load i64, ptr %98, align 8, !tbaa !9
  store i64 %99, ptr %48, align 8, !tbaa !9
  %100 = load i64, ptr %48, align 8, !tbaa !9
  %101 = add nsw i64 1, %100
  store i64 %101, ptr %49, align 8, !tbaa !9
  %102 = load i64, ptr %49, align 8, !tbaa !9
  %103 = load ptr, ptr %34, align 8, !tbaa !5
  %104 = sub i64 0, %102
  %105 = getelementptr inbounds %struct.complex, ptr %103, i64 %104
  store ptr %105, ptr %34, align 8, !tbaa !5
  %106 = load ptr, ptr %37, align 8, !tbaa !5
  %107 = getelementptr inbounds float, ptr %106, i32 -1
  store ptr %107, ptr %37, align 8, !tbaa !5
  %108 = load ptr, ptr %38, align 8, !tbaa !5
  %109 = getelementptr inbounds float, ptr %108, i32 -1
  store ptr %109, ptr %38, align 8, !tbaa !5
  %110 = load ptr, ptr %39, align 8, !tbaa !5
  %111 = getelementptr inbounds %struct.complex, ptr %110, i32 -1
  store ptr %111, ptr %39, align 8, !tbaa !5
  %112 = load ptr, ptr %40, align 8, !tbaa !5
  %113 = getelementptr inbounds float, ptr %112, i32 -1
  store ptr %113, ptr %40, align 8, !tbaa !5
  %114 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 0, ptr %114, align 8, !tbaa !9
  %115 = load ptr, ptr %22, align 8, !tbaa !5
  %116 = call i64 @lsame_(ptr noundef %115, ptr noundef @.str)
  store i64 %116, ptr %67, align 8, !tbaa !9
  %117 = load ptr, ptr %22, align 8, !tbaa !5
  %118 = call i64 @lsame_(ptr noundef %117, ptr noundef @.str.1)
  store i64 %118, ptr %65, align 8, !tbaa !9
  %119 = load i64, ptr %67, align 8, !tbaa !9
  %120 = icmp ne i64 %119, 0
  br i1 %120, label %124, label %121

121:                                              ; preds = %20
  %122 = load i64, ptr %65, align 8, !tbaa !9
  %123 = icmp ne i64 %122, 0
  br i1 %123, label %124, label %126

124:                                              ; preds = %121, %20
  %125 = load ptr, ptr %30, align 8, !tbaa !5
  store i8 78, ptr %125, align 1, !tbaa !11
  store i64 0, ptr %66, align 8, !tbaa !9
  br label %133

126:                                              ; preds = %121
  %127 = load ptr, ptr %30, align 8, !tbaa !5
  %128 = call i64 @lsame_(ptr noundef %127, ptr noundef @.str.2)
  store i64 %128, ptr %66, align 8, !tbaa !9
  %129 = call double @slamch_(ptr noundef @.str.3)
  %130 = fptrunc double %129 to float
  store float %130, ptr %70, align 4, !tbaa !12
  %131 = load float, ptr %70, align 4, !tbaa !12
  %132 = fdiv float 1.000000e+00, %131
  store float %132, ptr %68, align 4, !tbaa !12
  br label %133

133:                                              ; preds = %126, %124
  %134 = load i64, ptr %67, align 8, !tbaa !9
  %135 = icmp ne i64 %134, 0
  br i1 %135, label %145, label %136

136:                                              ; preds = %133
  %137 = load i64, ptr %65, align 8, !tbaa !9
  %138 = icmp ne i64 %137, 0
  br i1 %138, label %145, label %139

139:                                              ; preds = %136
  %140 = load ptr, ptr %22, align 8, !tbaa !5
  %141 = call i64 @lsame_(ptr noundef %140, ptr noundef @.str.4)
  %142 = icmp ne i64 %141, 0
  br i1 %142, label %145, label %143

143:                                              ; preds = %139
  %144 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -1, ptr %144, align 8, !tbaa !9
  br label %335

145:                                              ; preds = %139, %136, %133
  %146 = load ptr, ptr %23, align 8, !tbaa !5
  %147 = call i64 @lsame_(ptr noundef %146, ptr noundef @.str.5)
  %148 = icmp ne i64 %147, 0
  br i1 %148, label %155, label %149

149:                                              ; preds = %145
  %150 = load ptr, ptr %23, align 8, !tbaa !5
  %151 = call i64 @lsame_(ptr noundef %150, ptr noundef @.str.6)
  %152 = icmp ne i64 %151, 0
  br i1 %152, label %155, label %153

153:                                              ; preds = %149
  %154 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -2, ptr %154, align 8, !tbaa !9
  br label %334

155:                                              ; preds = %149, %145
  %156 = load ptr, ptr %24, align 8, !tbaa !5
  %157 = load i64, ptr %156, align 8, !tbaa !9
  %158 = icmp slt i64 %157, 0
  br i1 %158, label %159, label %161

159:                                              ; preds = %155
  %160 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -3, ptr %160, align 8, !tbaa !9
  br label %333

161:                                              ; preds = %155
  %162 = load ptr, ptr %25, align 8, !tbaa !5
  %163 = load i64, ptr %162, align 8, !tbaa !9
  %164 = icmp slt i64 %163, 0
  br i1 %164, label %165, label %167

165:                                              ; preds = %161
  %166 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -4, ptr %166, align 8, !tbaa !9
  br label %332

167:                                              ; preds = %161
  %168 = load ptr, ptr %27, align 8, !tbaa !5
  %169 = load i64, ptr %168, align 8, !tbaa !9
  %170 = load ptr, ptr %24, align 8, !tbaa !5
  %171 = load i64, ptr %170, align 8, !tbaa !9
  %172 = icmp sge i64 1, %171
  br i1 %172, label %173, label %174

173:                                              ; preds = %167
  br label %177

174:                                              ; preds = %167
  %175 = load ptr, ptr %24, align 8, !tbaa !5
  %176 = load i64, ptr %175, align 8, !tbaa !9
  br label %177

177:                                              ; preds = %174, %173
  %178 = phi i64 [ 1, %173 ], [ %176, %174 ]
  %179 = icmp slt i64 %169, %178
  br i1 %179, label %180, label %182

180:                                              ; preds = %177
  %181 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -6, ptr %181, align 8, !tbaa !9
  br label %331

182:                                              ; preds = %177
  %183 = load ptr, ptr %29, align 8, !tbaa !5
  %184 = load i64, ptr %183, align 8, !tbaa !9
  %185 = load ptr, ptr %24, align 8, !tbaa !5
  %186 = load i64, ptr %185, align 8, !tbaa !9
  %187 = icmp sge i64 1, %186
  br i1 %187, label %188, label %189

188:                                              ; preds = %182
  br label %192

189:                                              ; preds = %182
  %190 = load ptr, ptr %24, align 8, !tbaa !5
  %191 = load i64, ptr %190, align 8, !tbaa !9
  br label %192

192:                                              ; preds = %189, %188
  %193 = phi i64 [ 1, %188 ], [ %191, %189 ]
  %194 = icmp slt i64 %184, %193
  br i1 %194, label %195, label %197

195:                                              ; preds = %192
  %196 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -8, ptr %196, align 8, !tbaa !9
  br label %330

197:                                              ; preds = %192
  %198 = load ptr, ptr %22, align 8, !tbaa !5
  %199 = call i64 @lsame_(ptr noundef %198, ptr noundef @.str.4)
  %200 = icmp ne i64 %199, 0
  br i1 %200, label %201, label %210

201:                                              ; preds = %197
  %202 = load i64, ptr %66, align 8, !tbaa !9
  %203 = icmp ne i64 %202, 0
  br i1 %203, label %210, label %204

204:                                              ; preds = %201
  %205 = load ptr, ptr %30, align 8, !tbaa !5
  %206 = call i64 @lsame_(ptr noundef %205, ptr noundef @.str)
  %207 = icmp ne i64 %206, 0
  br i1 %207, label %210, label %208

208:                                              ; preds = %204
  %209 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -9, ptr %209, align 8, !tbaa !9
  br label %329

210:                                              ; preds = %204, %201, %197
  %211 = load i64, ptr %66, align 8, !tbaa !9
  %212 = icmp ne i64 %211, 0
  br i1 %212, label %213, label %292

213:                                              ; preds = %210
  %214 = load float, ptr %68, align 4, !tbaa !12
  store float %214, ptr %61, align 4, !tbaa !12
  store float 0.000000e+00, ptr %62, align 4, !tbaa !12
  %215 = load ptr, ptr %24, align 8, !tbaa !5
  %216 = load i64, ptr %215, align 8, !tbaa !9
  store i64 %216, ptr %50, align 8, !tbaa !9
  store i64 1, ptr %59, align 8, !tbaa !9
  br label %217

217:                                              ; preds = %254, %213
  %218 = load i64, ptr %59, align 8, !tbaa !9
  %219 = load i64, ptr %50, align 8, !tbaa !9
  %220 = icmp sle i64 %218, %219
  br i1 %220, label %221, label %257

221:                                              ; preds = %217
  %222 = load float, ptr %61, align 4, !tbaa !12
  store float %222, ptr %55, align 4, !tbaa !12
  %223 = load ptr, ptr %31, align 8, !tbaa !5
  %224 = load i64, ptr %59, align 8, !tbaa !9
  %225 = getelementptr inbounds float, ptr %223, i64 %224
  %226 = load float, ptr %225, align 4, !tbaa !12
  store float %226, ptr %56, align 4, !tbaa !12
  %227 = load float, ptr %55, align 4, !tbaa !12
  %228 = load float, ptr %56, align 4, !tbaa !12
  %229 = fcmp ole float %227, %228
  br i1 %229, label %230, label %232

230:                                              ; preds = %221
  %231 = load float, ptr %55, align 4, !tbaa !12
  br label %234

232:                                              ; preds = %221
  %233 = load float, ptr %56, align 4, !tbaa !12
  br label %234

234:                                              ; preds = %232, %230
  %235 = phi float [ %231, %230 ], [ %233, %232 ]
  %236 = fpext float %235 to double
  %237 = fptrunc double %236 to float
  store float %237, ptr %61, align 4, !tbaa !12
  %238 = load float, ptr %62, align 4, !tbaa !12
  store float %238, ptr %55, align 4, !tbaa !12
  %239 = load ptr, ptr %31, align 8, !tbaa !5
  %240 = load i64, ptr %59, align 8, !tbaa !9
  %241 = getelementptr inbounds float, ptr %239, i64 %240
  %242 = load float, ptr %241, align 4, !tbaa !12
  store float %242, ptr %56, align 4, !tbaa !12
  %243 = load float, ptr %55, align 4, !tbaa !12
  %244 = load float, ptr %56, align 4, !tbaa !12
  %245 = fcmp oge float %243, %244
  br i1 %245, label %246, label %248

246:                                              ; preds = %234
  %247 = load float, ptr %55, align 4, !tbaa !12
  br label %250

248:                                              ; preds = %234
  %249 = load float, ptr %56, align 4, !tbaa !12
  br label %250

250:                                              ; preds = %248, %246
  %251 = phi float [ %247, %246 ], [ %249, %248 ]
  %252 = fpext float %251 to double
  %253 = fptrunc double %252 to float
  store float %253, ptr %62, align 4, !tbaa !12
  br label %254

254:                                              ; preds = %250
  %255 = load i64, ptr %59, align 8, !tbaa !9
  %256 = add nsw i64 %255, 1
  store i64 %256, ptr %59, align 8, !tbaa !9
  br label %217, !llvm.loop !14

257:                                              ; preds = %217
  %258 = load float, ptr %61, align 4, !tbaa !12
  %259 = fcmp ole float %258, 0.000000e+00
  br i1 %259, label %260, label %262

260:                                              ; preds = %257
  %261 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -10, ptr %261, align 8, !tbaa !9
  br label %291

262:                                              ; preds = %257
  %263 = load ptr, ptr %24, align 8, !tbaa !5
  %264 = load i64, ptr %263, align 8, !tbaa !9
  %265 = icmp sgt i64 %264, 0
  br i1 %265, label %266, label %289

266:                                              ; preds = %262
  %267 = load float, ptr %61, align 4, !tbaa !12
  %268 = load float, ptr %70, align 4, !tbaa !12
  %269 = fcmp oge float %267, %268
  br i1 %269, label %270, label %272

270:                                              ; preds = %266
  %271 = load float, ptr %61, align 4, !tbaa !12
  br label %274

272:                                              ; preds = %266
  %273 = load float, ptr %70, align 4, !tbaa !12
  br label %274

274:                                              ; preds = %272, %270
  %275 = phi float [ %271, %270 ], [ %273, %272 ]
  %276 = fpext float %275 to double
  %277 = load float, ptr %62, align 4, !tbaa !12
  %278 = load float, ptr %68, align 4, !tbaa !12
  %279 = fcmp ole float %277, %278
  br i1 %279, label %280, label %282

280:                                              ; preds = %274
  %281 = load float, ptr %62, align 4, !tbaa !12
  br label %284

282:                                              ; preds = %274
  %283 = load float, ptr %68, align 4, !tbaa !12
  br label %284

284:                                              ; preds = %282, %280
  %285 = phi float [ %281, %280 ], [ %283, %282 ]
  %286 = fpext float %285 to double
  %287 = fdiv double %276, %286
  %288 = fptrunc double %287 to float
  store float %288, ptr %63, align 4, !tbaa !12
  br label %290

289:                                              ; preds = %262
  store float 1.000000e+00, ptr %63, align 4, !tbaa !12
  br label %290

290:                                              ; preds = %289, %284
  br label %291

291:                                              ; preds = %290, %260
  br label %292

292:                                              ; preds = %291, %210
  %293 = load ptr, ptr %41, align 8, !tbaa !5
  %294 = load i64, ptr %293, align 8, !tbaa !9
  %295 = icmp eq i64 %294, 0
  br i1 %295, label %296, label %328

296:                                              ; preds = %292
  %297 = load ptr, ptr %33, align 8, !tbaa !5
  %298 = load i64, ptr %297, align 8, !tbaa !9
  %299 = load ptr, ptr %24, align 8, !tbaa !5
  %300 = load i64, ptr %299, align 8, !tbaa !9
  %301 = icmp sge i64 1, %300
  br i1 %301, label %302, label %303

302:                                              ; preds = %296
  br label %306

303:                                              ; preds = %296
  %304 = load ptr, ptr %24, align 8, !tbaa !5
  %305 = load i64, ptr %304, align 8, !tbaa !9
  br label %306

306:                                              ; preds = %303, %302
  %307 = phi i64 [ 1, %302 ], [ %305, %303 ]
  %308 = icmp slt i64 %298, %307
  br i1 %308, label %309, label %311

309:                                              ; preds = %306
  %310 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -12, ptr %310, align 8, !tbaa !9
  br label %327

311:                                              ; preds = %306
  %312 = load ptr, ptr %35, align 8, !tbaa !5
  %313 = load i64, ptr %312, align 8, !tbaa !9
  %314 = load ptr, ptr %24, align 8, !tbaa !5
  %315 = load i64, ptr %314, align 8, !tbaa !9
  %316 = icmp sge i64 1, %315
  br i1 %316, label %317, label %318

317:                                              ; preds = %311
  br label %321

318:                                              ; preds = %311
  %319 = load ptr, ptr %24, align 8, !tbaa !5
  %320 = load i64, ptr %319, align 8, !tbaa !9
  br label %321

321:                                              ; preds = %318, %317
  %322 = phi i64 [ 1, %317 ], [ %320, %318 ]
  %323 = icmp slt i64 %313, %322
  br i1 %323, label %324, label %326

324:                                              ; preds = %321
  %325 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -14, ptr %325, align 8, !tbaa !9
  br label %326

326:                                              ; preds = %324, %321
  br label %327

327:                                              ; preds = %326, %309
  br label %328

328:                                              ; preds = %327, %292
  br label %329

329:                                              ; preds = %328, %208
  br label %330

330:                                              ; preds = %329, %195
  br label %331

331:                                              ; preds = %330, %180
  br label %332

332:                                              ; preds = %331, %165
  br label %333

333:                                              ; preds = %332, %159
  br label %334

334:                                              ; preds = %333, %153
  br label %335

335:                                              ; preds = %334, %143
  %336 = load ptr, ptr %41, align 8, !tbaa !5
  %337 = load i64, ptr %336, align 8, !tbaa !9
  %338 = icmp ne i64 %337, 0
  br i1 %338, label %339, label %344

339:                                              ; preds = %335
  %340 = load ptr, ptr %41, align 8, !tbaa !5
  %341 = load i64, ptr %340, align 8, !tbaa !9
  %342 = sub nsw i64 0, %341
  store i64 %342, ptr %50, align 8, !tbaa !9
  %343 = call i32 @xerbla_(ptr noundef @.str.7, ptr noundef %50)
  store i32 0, ptr %21, align 4
  store i32 1, ptr %71, align 4
  br label %652

344:                                              ; preds = %335
  %345 = load i64, ptr %65, align 8, !tbaa !9
  %346 = icmp ne i64 %345, 0
  br i1 %346, label %347, label %372

347:                                              ; preds = %344
  %348 = load ptr, ptr %24, align 8, !tbaa !5
  %349 = load ptr, ptr %26, align 8, !tbaa !5
  %350 = load i64, ptr %43, align 8, !tbaa !9
  %351 = getelementptr inbounds %struct.complex, ptr %349, i64 %350
  %352 = load ptr, ptr %27, align 8, !tbaa !5
  %353 = load ptr, ptr %31, align 8, !tbaa !5
  %354 = getelementptr inbounds float, ptr %353, i64 1
  %355 = call i32 @cpoequ_(ptr noundef %348, ptr noundef %351, ptr noundef %352, ptr noundef %354, ptr noundef %63, ptr noundef %60, ptr noundef %69)
  %356 = load i64, ptr %69, align 8, !tbaa !9
  %357 = icmp eq i64 %356, 0
  br i1 %357, label %358, label %371

358:                                              ; preds = %347
  %359 = load ptr, ptr %23, align 8, !tbaa !5
  %360 = load ptr, ptr %24, align 8, !tbaa !5
  %361 = load ptr, ptr %26, align 8, !tbaa !5
  %362 = load i64, ptr %43, align 8, !tbaa !9
  %363 = getelementptr inbounds %struct.complex, ptr %361, i64 %362
  %364 = load ptr, ptr %27, align 8, !tbaa !5
  %365 = load ptr, ptr %31, align 8, !tbaa !5
  %366 = getelementptr inbounds float, ptr %365, i64 1
  %367 = load ptr, ptr %30, align 8, !tbaa !5
  %368 = call i32 @claqhe_(ptr noundef %359, ptr noundef %360, ptr noundef %363, ptr noundef %364, ptr noundef %366, ptr noundef %63, ptr noundef %60, ptr noundef %367)
  %369 = load ptr, ptr %30, align 8, !tbaa !5
  %370 = call i64 @lsame_(ptr noundef %369, ptr noundef @.str.2)
  store i64 %370, ptr %66, align 8, !tbaa !9
  br label %371

371:                                              ; preds = %358, %347
  br label %372

372:                                              ; preds = %371, %344
  %373 = load i64, ptr %66, align 8, !tbaa !9
  %374 = icmp ne i64 %373, 0
  br i1 %374, label %375, label %443

375:                                              ; preds = %372
  %376 = load ptr, ptr %25, align 8, !tbaa !5
  %377 = load i64, ptr %376, align 8, !tbaa !9
  store i64 %377, ptr %50, align 8, !tbaa !9
  store i64 1, ptr %59, align 8, !tbaa !9
  br label %378

378:                                              ; preds = %439, %375
  %379 = load i64, ptr %59, align 8, !tbaa !9
  %380 = load i64, ptr %50, align 8, !tbaa !9
  %381 = icmp sle i64 %379, %380
  br i1 %381, label %382, label %442

382:                                              ; preds = %378
  %383 = load ptr, ptr %24, align 8, !tbaa !5
  %384 = load i64, ptr %383, align 8, !tbaa !9
  store i64 %384, ptr %51, align 8, !tbaa !9
  store i64 1, ptr %58, align 8, !tbaa !9
  br label %385

385:                                              ; preds = %435, %382
  %386 = load i64, ptr %58, align 8, !tbaa !9
  %387 = load i64, ptr %51, align 8, !tbaa !9
  %388 = icmp sle i64 %386, %387
  br i1 %388, label %389, label %438

389:                                              ; preds = %385
  %390 = load i64, ptr %58, align 8, !tbaa !9
  %391 = load i64, ptr %59, align 8, !tbaa !9
  %392 = load i64, ptr %46, align 8, !tbaa !9
  %393 = mul nsw i64 %391, %392
  %394 = add nsw i64 %390, %393
  store i64 %394, ptr %52, align 8, !tbaa !9
  %395 = load i64, ptr %58, align 8, !tbaa !9
  store i64 %395, ptr %53, align 8, !tbaa !9
  %396 = load i64, ptr %58, align 8, !tbaa !9
  %397 = load i64, ptr %59, align 8, !tbaa !9
  %398 = load i64, ptr %46, align 8, !tbaa !9
  %399 = mul nsw i64 %397, %398
  %400 = add nsw i64 %396, %399
  store i64 %400, ptr %54, align 8, !tbaa !9
  %401 = load ptr, ptr %31, align 8, !tbaa !5
  %402 = load i64, ptr %53, align 8, !tbaa !9
  %403 = getelementptr inbounds float, ptr %401, i64 %402
  %404 = load float, ptr %403, align 4, !tbaa !12
  %405 = load ptr, ptr %32, align 8, !tbaa !5
  %406 = load i64, ptr %54, align 8, !tbaa !9
  %407 = getelementptr inbounds %struct.complex, ptr %405, i64 %406
  %408 = getelementptr inbounds %struct.complex, ptr %407, i32 0, i32 0
  %409 = load float, ptr %408, align 4, !tbaa !16
  %410 = fmul float %404, %409
  %411 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 0
  store float %410, ptr %411, align 4, !tbaa !16
  %412 = load ptr, ptr %31, align 8, !tbaa !5
  %413 = load i64, ptr %53, align 8, !tbaa !9
  %414 = getelementptr inbounds float, ptr %412, i64 %413
  %415 = load float, ptr %414, align 4, !tbaa !12
  %416 = load ptr, ptr %32, align 8, !tbaa !5
  %417 = load i64, ptr %54, align 8, !tbaa !9
  %418 = getelementptr inbounds %struct.complex, ptr %416, i64 %417
  %419 = getelementptr inbounds %struct.complex, ptr %418, i32 0, i32 1
  %420 = load float, ptr %419, align 4, !tbaa !18
  %421 = fmul float %415, %420
  %422 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 1
  store float %421, ptr %422, align 4, !tbaa !18
  %423 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 0
  %424 = load float, ptr %423, align 4, !tbaa !16
  %425 = load ptr, ptr %32, align 8, !tbaa !5
  %426 = load i64, ptr %52, align 8, !tbaa !9
  %427 = getelementptr inbounds %struct.complex, ptr %425, i64 %426
  %428 = getelementptr inbounds %struct.complex, ptr %427, i32 0, i32 0
  store float %424, ptr %428, align 4, !tbaa !16
  %429 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 1
  %430 = load float, ptr %429, align 4, !tbaa !18
  %431 = load ptr, ptr %32, align 8, !tbaa !5
  %432 = load i64, ptr %52, align 8, !tbaa !9
  %433 = getelementptr inbounds %struct.complex, ptr %431, i64 %432
  %434 = getelementptr inbounds %struct.complex, ptr %433, i32 0, i32 1
  store float %430, ptr %434, align 4, !tbaa !18
  br label %435

435:                                              ; preds = %389
  %436 = load i64, ptr %58, align 8, !tbaa !9
  %437 = add nsw i64 %436, 1
  store i64 %437, ptr %58, align 8, !tbaa !9
  br label %385, !llvm.loop !19

438:                                              ; preds = %385
  br label %439

439:                                              ; preds = %438
  %440 = load i64, ptr %59, align 8, !tbaa !9
  %441 = add nsw i64 %440, 1
  store i64 %441, ptr %59, align 8, !tbaa !9
  br label %378, !llvm.loop !20

442:                                              ; preds = %378
  br label %443

443:                                              ; preds = %442, %372
  %444 = load i64, ptr %67, align 8, !tbaa !9
  %445 = icmp ne i64 %444, 0
  br i1 %445, label %449, label %446

446:                                              ; preds = %443
  %447 = load i64, ptr %65, align 8, !tbaa !9
  %448 = icmp ne i64 %447, 0
  br i1 %448, label %449, label %476

449:                                              ; preds = %446, %443
  %450 = load ptr, ptr %23, align 8, !tbaa !5
  %451 = load ptr, ptr %24, align 8, !tbaa !5
  %452 = load ptr, ptr %24, align 8, !tbaa !5
  %453 = load ptr, ptr %26, align 8, !tbaa !5
  %454 = load i64, ptr %43, align 8, !tbaa !9
  %455 = getelementptr inbounds %struct.complex, ptr %453, i64 %454
  %456 = load ptr, ptr %27, align 8, !tbaa !5
  %457 = load ptr, ptr %28, align 8, !tbaa !5
  %458 = load i64, ptr %45, align 8, !tbaa !9
  %459 = getelementptr inbounds %struct.complex, ptr %457, i64 %458
  %460 = load ptr, ptr %29, align 8, !tbaa !5
  %461 = call i32 @clacpy_(ptr noundef %450, ptr noundef %451, ptr noundef %452, ptr noundef %455, ptr noundef %456, ptr noundef %459, ptr noundef %460)
  %462 = load ptr, ptr %23, align 8, !tbaa !5
  %463 = load ptr, ptr %24, align 8, !tbaa !5
  %464 = load ptr, ptr %28, align 8, !tbaa !5
  %465 = load i64, ptr %45, align 8, !tbaa !9
  %466 = getelementptr inbounds %struct.complex, ptr %464, i64 %465
  %467 = load ptr, ptr %29, align 8, !tbaa !5
  %468 = load ptr, ptr %41, align 8, !tbaa !5
  %469 = call i32 @cpotrf_(ptr noundef %462, ptr noundef %463, ptr noundef %466, ptr noundef %467, ptr noundef %468)
  %470 = load ptr, ptr %41, align 8, !tbaa !5
  %471 = load i64, ptr %470, align 8, !tbaa !9
  %472 = icmp sgt i64 %471, 0
  br i1 %472, label %473, label %475

473:                                              ; preds = %449
  %474 = load ptr, ptr %36, align 8, !tbaa !5
  store float 0.000000e+00, ptr %474, align 4, !tbaa !12
  store i32 0, ptr %21, align 4
  store i32 1, ptr %71, align 4
  br label %652

475:                                              ; preds = %449
  br label %476

476:                                              ; preds = %475, %446
  %477 = load ptr, ptr %23, align 8, !tbaa !5
  %478 = load ptr, ptr %24, align 8, !tbaa !5
  %479 = load ptr, ptr %26, align 8, !tbaa !5
  %480 = load i64, ptr %43, align 8, !tbaa !9
  %481 = getelementptr inbounds %struct.complex, ptr %479, i64 %480
  %482 = load ptr, ptr %27, align 8, !tbaa !5
  %483 = load ptr, ptr %40, align 8, !tbaa !5
  %484 = getelementptr inbounds float, ptr %483, i64 1
  %485 = call double @clanhe_(ptr noundef @.str.8, ptr noundef %477, ptr noundef %478, ptr noundef %481, ptr noundef %482, ptr noundef %484)
  %486 = fptrunc double %485 to float
  store float %486, ptr %64, align 4, !tbaa !12
  %487 = load ptr, ptr %23, align 8, !tbaa !5
  %488 = load ptr, ptr %24, align 8, !tbaa !5
  %489 = load ptr, ptr %28, align 8, !tbaa !5
  %490 = load i64, ptr %45, align 8, !tbaa !9
  %491 = getelementptr inbounds %struct.complex, ptr %489, i64 %490
  %492 = load ptr, ptr %29, align 8, !tbaa !5
  %493 = load ptr, ptr %36, align 8, !tbaa !5
  %494 = load ptr, ptr %39, align 8, !tbaa !5
  %495 = getelementptr inbounds %struct.complex, ptr %494, i64 1
  %496 = load ptr, ptr %40, align 8, !tbaa !5
  %497 = getelementptr inbounds float, ptr %496, i64 1
  %498 = load ptr, ptr %41, align 8, !tbaa !5
  %499 = call i32 @cpocon_(ptr noundef %487, ptr noundef %488, ptr noundef %491, ptr noundef %492, ptr noundef %64, ptr noundef %493, ptr noundef %495, ptr noundef %497, ptr noundef %498)
  %500 = load ptr, ptr %24, align 8, !tbaa !5
  %501 = load ptr, ptr %25, align 8, !tbaa !5
  %502 = load ptr, ptr %32, align 8, !tbaa !5
  %503 = load i64, ptr %47, align 8, !tbaa !9
  %504 = getelementptr inbounds %struct.complex, ptr %502, i64 %503
  %505 = load ptr, ptr %33, align 8, !tbaa !5
  %506 = load ptr, ptr %34, align 8, !tbaa !5
  %507 = load i64, ptr %49, align 8, !tbaa !9
  %508 = getelementptr inbounds %struct.complex, ptr %506, i64 %507
  %509 = load ptr, ptr %35, align 8, !tbaa !5
  %510 = call i32 @clacpy_(ptr noundef @.str.9, ptr noundef %500, ptr noundef %501, ptr noundef %504, ptr noundef %505, ptr noundef %508, ptr noundef %509)
  %511 = load ptr, ptr %23, align 8, !tbaa !5
  %512 = load ptr, ptr %24, align 8, !tbaa !5
  %513 = load ptr, ptr %25, align 8, !tbaa !5
  %514 = load ptr, ptr %28, align 8, !tbaa !5
  %515 = load i64, ptr %45, align 8, !tbaa !9
  %516 = getelementptr inbounds %struct.complex, ptr %514, i64 %515
  %517 = load ptr, ptr %29, align 8, !tbaa !5
  %518 = load ptr, ptr %34, align 8, !tbaa !5
  %519 = load i64, ptr %49, align 8, !tbaa !9
  %520 = getelementptr inbounds %struct.complex, ptr %518, i64 %519
  %521 = load ptr, ptr %35, align 8, !tbaa !5
  %522 = load ptr, ptr %41, align 8, !tbaa !5
  %523 = call i32 @cpotrs_(ptr noundef %511, ptr noundef %512, ptr noundef %513, ptr noundef %516, ptr noundef %517, ptr noundef %520, ptr noundef %521, ptr noundef %522)
  %524 = load ptr, ptr %23, align 8, !tbaa !5
  %525 = load ptr, ptr %24, align 8, !tbaa !5
  %526 = load ptr, ptr %25, align 8, !tbaa !5
  %527 = load ptr, ptr %26, align 8, !tbaa !5
  %528 = load i64, ptr %43, align 8, !tbaa !9
  %529 = getelementptr inbounds %struct.complex, ptr %527, i64 %528
  %530 = load ptr, ptr %27, align 8, !tbaa !5
  %531 = load ptr, ptr %28, align 8, !tbaa !5
  %532 = load i64, ptr %45, align 8, !tbaa !9
  %533 = getelementptr inbounds %struct.complex, ptr %531, i64 %532
  %534 = load ptr, ptr %29, align 8, !tbaa !5
  %535 = load ptr, ptr %32, align 8, !tbaa !5
  %536 = load i64, ptr %47, align 8, !tbaa !9
  %537 = getelementptr inbounds %struct.complex, ptr %535, i64 %536
  %538 = load ptr, ptr %33, align 8, !tbaa !5
  %539 = load ptr, ptr %34, align 8, !tbaa !5
  %540 = load i64, ptr %49, align 8, !tbaa !9
  %541 = getelementptr inbounds %struct.complex, ptr %539, i64 %540
  %542 = load ptr, ptr %35, align 8, !tbaa !5
  %543 = load ptr, ptr %37, align 8, !tbaa !5
  %544 = getelementptr inbounds float, ptr %543, i64 1
  %545 = load ptr, ptr %38, align 8, !tbaa !5
  %546 = getelementptr inbounds float, ptr %545, i64 1
  %547 = load ptr, ptr %39, align 8, !tbaa !5
  %548 = getelementptr inbounds %struct.complex, ptr %547, i64 1
  %549 = load ptr, ptr %40, align 8, !tbaa !5
  %550 = getelementptr inbounds float, ptr %549, i64 1
  %551 = load ptr, ptr %41, align 8, !tbaa !5
  %552 = call i32 @cporfs_(ptr noundef %524, ptr noundef %525, ptr noundef %526, ptr noundef %529, ptr noundef %530, ptr noundef %533, ptr noundef %534, ptr noundef %537, ptr noundef %538, ptr noundef %541, ptr noundef %542, ptr noundef %544, ptr noundef %546, ptr noundef %548, ptr noundef %550, ptr noundef %551)
  %553 = load i64, ptr %66, align 8, !tbaa !9
  %554 = icmp ne i64 %553, 0
  br i1 %554, label %555, label %640

555:                                              ; preds = %476
  %556 = load ptr, ptr %25, align 8, !tbaa !5
  %557 = load i64, ptr %556, align 8, !tbaa !9
  store i64 %557, ptr %50, align 8, !tbaa !9
  store i64 1, ptr %59, align 8, !tbaa !9
  br label %558

558:                                              ; preds = %619, %555
  %559 = load i64, ptr %59, align 8, !tbaa !9
  %560 = load i64, ptr %50, align 8, !tbaa !9
  %561 = icmp sle i64 %559, %560
  br i1 %561, label %562, label %622

562:                                              ; preds = %558
  %563 = load ptr, ptr %24, align 8, !tbaa !5
  %564 = load i64, ptr %563, align 8, !tbaa !9
  store i64 %564, ptr %51, align 8, !tbaa !9
  store i64 1, ptr %58, align 8, !tbaa !9
  br label %565

565:                                              ; preds = %615, %562
  %566 = load i64, ptr %58, align 8, !tbaa !9
  %567 = load i64, ptr %51, align 8, !tbaa !9
  %568 = icmp sle i64 %566, %567
  br i1 %568, label %569, label %618

569:                                              ; preds = %565
  %570 = load i64, ptr %58, align 8, !tbaa !9
  %571 = load i64, ptr %59, align 8, !tbaa !9
  %572 = load i64, ptr %48, align 8, !tbaa !9
  %573 = mul nsw i64 %571, %572
  %574 = add nsw i64 %570, %573
  store i64 %574, ptr %52, align 8, !tbaa !9
  %575 = load i64, ptr %58, align 8, !tbaa !9
  store i64 %575, ptr %53, align 8, !tbaa !9
  %576 = load i64, ptr %58, align 8, !tbaa !9
  %577 = load i64, ptr %59, align 8, !tbaa !9
  %578 = load i64, ptr %48, align 8, !tbaa !9
  %579 = mul nsw i64 %577, %578
  %580 = add nsw i64 %576, %579
  store i64 %580, ptr %54, align 8, !tbaa !9
  %581 = load ptr, ptr %31, align 8, !tbaa !5
  %582 = load i64, ptr %53, align 8, !tbaa !9
  %583 = getelementptr inbounds float, ptr %581, i64 %582
  %584 = load float, ptr %583, align 4, !tbaa !12
  %585 = load ptr, ptr %34, align 8, !tbaa !5
  %586 = load i64, ptr %54, align 8, !tbaa !9
  %587 = getelementptr inbounds %struct.complex, ptr %585, i64 %586
  %588 = getelementptr inbounds %struct.complex, ptr %587, i32 0, i32 0
  %589 = load float, ptr %588, align 4, !tbaa !16
  %590 = fmul float %584, %589
  %591 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 0
  store float %590, ptr %591, align 4, !tbaa !16
  %592 = load ptr, ptr %31, align 8, !tbaa !5
  %593 = load i64, ptr %53, align 8, !tbaa !9
  %594 = getelementptr inbounds float, ptr %592, i64 %593
  %595 = load float, ptr %594, align 4, !tbaa !12
  %596 = load ptr, ptr %34, align 8, !tbaa !5
  %597 = load i64, ptr %54, align 8, !tbaa !9
  %598 = getelementptr inbounds %struct.complex, ptr %596, i64 %597
  %599 = getelementptr inbounds %struct.complex, ptr %598, i32 0, i32 1
  %600 = load float, ptr %599, align 4, !tbaa !18
  %601 = fmul float %595, %600
  %602 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 1
  store float %601, ptr %602, align 4, !tbaa !18
  %603 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 0
  %604 = load float, ptr %603, align 4, !tbaa !16
  %605 = load ptr, ptr %34, align 8, !tbaa !5
  %606 = load i64, ptr %52, align 8, !tbaa !9
  %607 = getelementptr inbounds %struct.complex, ptr %605, i64 %606
  %608 = getelementptr inbounds %struct.complex, ptr %607, i32 0, i32 0
  store float %604, ptr %608, align 4, !tbaa !16
  %609 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 1
  %610 = load float, ptr %609, align 4, !tbaa !18
  %611 = load ptr, ptr %34, align 8, !tbaa !5
  %612 = load i64, ptr %52, align 8, !tbaa !9
  %613 = getelementptr inbounds %struct.complex, ptr %611, i64 %612
  %614 = getelementptr inbounds %struct.complex, ptr %613, i32 0, i32 1
  store float %610, ptr %614, align 4, !tbaa !18
  br label %615

615:                                              ; preds = %569
  %616 = load i64, ptr %58, align 8, !tbaa !9
  %617 = add nsw i64 %616, 1
  store i64 %617, ptr %58, align 8, !tbaa !9
  br label %565, !llvm.loop !21

618:                                              ; preds = %565
  br label %619

619:                                              ; preds = %618
  %620 = load i64, ptr %59, align 8, !tbaa !9
  %621 = add nsw i64 %620, 1
  store i64 %621, ptr %59, align 8, !tbaa !9
  br label %558, !llvm.loop !22

622:                                              ; preds = %558
  %623 = load ptr, ptr %25, align 8, !tbaa !5
  %624 = load i64, ptr %623, align 8, !tbaa !9
  store i64 %624, ptr %50, align 8, !tbaa !9
  store i64 1, ptr %59, align 8, !tbaa !9
  br label %625

625:                                              ; preds = %636, %622
  %626 = load i64, ptr %59, align 8, !tbaa !9
  %627 = load i64, ptr %50, align 8, !tbaa !9
  %628 = icmp sle i64 %626, %627
  br i1 %628, label %629, label %639

629:                                              ; preds = %625
  %630 = load float, ptr %63, align 4, !tbaa !12
  %631 = load ptr, ptr %37, align 8, !tbaa !5
  %632 = load i64, ptr %59, align 8, !tbaa !9
  %633 = getelementptr inbounds float, ptr %631, i64 %632
  %634 = load float, ptr %633, align 4, !tbaa !12
  %635 = fdiv float %634, %630
  store float %635, ptr %633, align 4, !tbaa !12
  br label %636

636:                                              ; preds = %629
  %637 = load i64, ptr %59, align 8, !tbaa !9
  %638 = add nsw i64 %637, 1
  store i64 %638, ptr %59, align 8, !tbaa !9
  br label %625, !llvm.loop !23

639:                                              ; preds = %625
  br label %640

640:                                              ; preds = %639, %476
  %641 = load ptr, ptr %36, align 8, !tbaa !5
  %642 = load float, ptr %641, align 4, !tbaa !12
  %643 = fpext float %642 to double
  %644 = call double @slamch_(ptr noundef @.str.10)
  %645 = fcmp olt double %643, %644
  br i1 %645, label %646, label %651

646:                                              ; preds = %640
  %647 = load ptr, ptr %24, align 8, !tbaa !5
  %648 = load i64, ptr %647, align 8, !tbaa !9
  %649 = add nsw i64 %648, 1
  %650 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 %649, ptr %650, align 8, !tbaa !9
  br label %651

651:                                              ; preds = %646, %640
  store i32 0, ptr %21, align 4
  store i32 1, ptr %71, align 4
  br label %652

652:                                              ; preds = %651, %473, %339
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 4, 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
  %653 = load i32, ptr %21, align 4
  ret i32 %653
}

; 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 double @slamch_(ptr noundef) #2

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

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

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

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

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

declare double @clanhe_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

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

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

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


; 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 [13 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [8 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @cposvx_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19) local_unnamed_addr #0 {
  %21 = alloca i64, align 8
  %22 = alloca float, align 4
  %23 = alloca float, align 4
  %24 = alloca float, align 4
  %25 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #4
  %26 = getelementptr inbounds i8, ptr %9, i64 -4
  %27 = load i64, ptr %11, align 8, !tbaa !5
  %28 = xor i64 %27, -1
  %29 = getelementptr inbounds %struct.complex, ptr %10, i64 %28
  %30 = load i64, ptr %13, align 8, !tbaa !5
  %31 = xor i64 %30, -1
  %32 = getelementptr inbounds %struct.complex, ptr %12, i64 %31
  %33 = getelementptr inbounds i8, ptr %15, i64 -4
  store i64 0, ptr %19, align 8, !tbaa !5
  %34 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %35 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %36 = icmp ne i64 %34, 0
  %37 = icmp ne i64 %35, 0
  %or.cond = select i1 %36, i1 true, i1 %37
  br i1 %or.cond, label %.thread, label %38

.thread:                                          ; preds = %20
  store i8 78, ptr %8, align 1, !tbaa !9
  br label %44

38:                                               ; preds = %20
  %39 = tail call i64 @lsame_(ptr noundef %8, ptr noundef nonnull @.str.2) #4
  %40 = tail call double @slamch_(ptr noundef nonnull @.str.3) #4
  %41 = fptrunc double %40 to float
  %42 = fdiv float 1.000000e+00, %41
  %43 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #4
  %.not = icmp eq i64 %43, 0
  br i1 %.not, label %.thread289.sink.split, label %44

44:                                               ; preds = %.thread, %38
  %.0284 = phi float [ undef, %.thread ], [ %41, %38 ]
  %.0250283 = phi float [ undef, %.thread ], [ %42, %38 ]
  %.0252282 = phi i64 [ 0, %.thread ], [ %39, %38 ]
  %45 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.5) #4
  %.not264 = icmp eq i64 %45, 0
  br i1 %.not264, label %46, label %48

46:                                               ; preds = %44
  %47 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.6) #4
  %.not265 = icmp eq i64 %47, 0
  br i1 %.not265, label %.thread289.sink.split, label %48

48:                                               ; preds = %46, %44
  %49 = load i64, ptr %2, align 8, !tbaa !5
  %50 = icmp slt i64 %49, 0
  br i1 %50, label %.thread289.sink.split, label %51

51:                                               ; preds = %48
  %52 = load i64, ptr %3, align 8, !tbaa !5
  %53 = icmp slt i64 %52, 0
  br i1 %53, label %.thread289.sink.split, label %54

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

57:                                               ; preds = %54
  %58 = load i64, ptr %7, align 8, !tbaa !5
  %59 = icmp slt i64 %58, %spec.select
  br i1 %59, label %.thread289.sink.split, label %60

60:                                               ; preds = %57
  %61 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #4
  %62 = icmp eq i64 %61, 0
  %63 = icmp ne i64 %.0252282, 0
  %or.cond5 = select i1 %62, i1 true, i1 %63
  br i1 %or.cond5, label %66, label %64

64:                                               ; preds = %60
  %65 = tail call i64 @lsame_(ptr noundef %8, ptr noundef nonnull @.str) #4
  %.not266 = icmp eq i64 %65, 0
  br i1 %.not266, label %.thread289.sink.split, label %.thread285

66:                                               ; preds = %60
  br i1 %63, label %67, label %.thread285

67:                                               ; preds = %66
  %68 = load i64, ptr %2, align 8, !tbaa !5
  %.not267293 = icmp slt i64 %68, 1
  br i1 %.not267293, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %67
  %xtraiter = and i64 %68, 1
  %69 = icmp eq i64 %68, 1
  br i1 %69, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.preheader.new

.lr.ph.preheader.new:                             ; preds = %.lr.ph.preheader
  %unroll_iter = and i64 %68, 9223372036854775806
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %.0253296 = phi float [ 0.000000e+00, %.lr.ph.preheader.new ], [ %81, %.lr.ph ]
  %.0254295 = phi float [ %.0250283, %.lr.ph.preheader.new ], [ %79, %.lr.ph ]
  %.0255294 = phi i64 [ 1, %.lr.ph.preheader.new ], [ %82, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %70 = getelementptr inbounds float, ptr %26, i64 %.0255294
  %71 = load float, ptr %70, align 4, !tbaa !10
  %72 = fcmp ole float %.0254295, %71
  %73 = select i1 %72, float %.0254295, float %71
  %74 = fcmp oge float %.0253296, %71
  %75 = select i1 %74, float %.0253296, float %71
  %76 = getelementptr float, ptr %9, i64 %.0255294
  %77 = load float, ptr %76, align 4, !tbaa !10
  %78 = fcmp ole float %73, %77
  %79 = select i1 %78, float %73, float %77
  %80 = fcmp oge float %75, %77
  %81 = select i1 %80, float %75, float %77
  %82 = add nuw i64 %.0255294, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph, !llvm.loop !12

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph, %.lr.ph.preheader
  %.lcssa392.ph = phi float [ poison, %.lr.ph.preheader ], [ %79, %.lr.ph ]
  %.lcssa.ph = phi float [ poison, %.lr.ph.preheader ], [ %81, %.lr.ph ]
  %.0253296.unr = phi float [ 0.000000e+00, %.lr.ph.preheader ], [ %81, %.lr.ph ]
  %.0254295.unr = phi float [ %.0250283, %.lr.ph.preheader ], [ %79, %.lr.ph ]
  %.0255294.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %82, %.lr.ph ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %._crit_edge.loopexit.unr-lcssa
  %83 = getelementptr inbounds float, ptr %26, i64 %.0255294.unr
  %84 = load float, ptr %83, align 4, !tbaa !10
  %85 = fcmp ole float %.0254295.unr, %84
  %86 = select i1 %85, float %.0254295.unr, float %84
  %87 = fcmp oge float %.0253296.unr, %84
  %88 = select i1 %87, float %.0253296.unr, float %84
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %67
  %.0254.lcssa = phi float [ %.0250283, %67 ], [ %.lcssa392.ph, %._crit_edge.loopexit.unr-lcssa ], [ %86, %.lr.ph.epil ]
  %.0253.lcssa = phi float [ 0.000000e+00, %67 ], [ %.lcssa.ph, %._crit_edge.loopexit.unr-lcssa ], [ %88, %.lr.ph.epil ]
  %89 = fcmp ugt float %.0254.lcssa, 0.000000e+00
  br i1 %89, label %90, label %.thread289.sink.split

90:                                               ; preds = %._crit_edge
  %91 = icmp sgt i64 %68, 0
  br i1 %91, label %92, label %98

92:                                               ; preds = %90
  %93 = fcmp oge float %.0254.lcssa, %.0284
  %94 = select i1 %93, float %.0254.lcssa, float %.0284
  %95 = fcmp ole float %.0253.lcssa, %.0250283
  %96 = select i1 %95, float %.0253.lcssa, float %.0250283
  %97 = fdiv float %94, %96
  store float %97, ptr %23, align 4, !tbaa !10
  br label %.thread285

98:                                               ; preds = %90
  store float 1.000000e+00, ptr %23, align 4, !tbaa !10
  br label %.thread285

.thread285:                                       ; preds = %64, %98, %92, %66
  %.pr = load i64, ptr %19, align 8, !tbaa !5
  %99 = icmp eq i64 %.pr, 0
  br i1 %99, label %100, label %.thread289

100:                                              ; preds = %.thread285
  %101 = load i64, ptr %11, align 8, !tbaa !5
  %102 = load i64, ptr %2, align 8, !tbaa !5
  %spec.select276 = tail call i64 @llvm.smax.i64(i64 %102, i64 1)
  %103 = icmp slt i64 %101, %spec.select276
  br i1 %103, label %.thread289.sink.split, label %104

104:                                              ; preds = %100
  %105 = load i64, ptr %13, align 8, !tbaa !5
  %106 = icmp slt i64 %105, %spec.select276
  br i1 %106, label %.thread289.sink.split, label %110

.thread289.sink.split:                            ; preds = %104, %100, %._crit_edge, %64, %57, %54, %51, %48, %46, %38
  %.sink = phi i64 [ -1, %38 ], [ -2, %46 ], [ -3, %48 ], [ -4, %51 ], [ -6, %54 ], [ -8, %57 ], [ -9, %64 ], [ -10, %._crit_edge ], [ -12, %100 ], [ -14, %104 ]
  store i64 %.sink, ptr %19, align 8, !tbaa !5
  br label %.thread289

.thread289:                                       ; preds = %.thread289.sink.split, %.thread285
  %107 = phi i64 [ %.pr, %.thread285 ], [ %.sink, %.thread289.sink.split ]
  %108 = sub nsw i64 0, %107
  store i64 %108, ptr %21, align 8, !tbaa !5
  %109 = call i32 @xerbla_(ptr noundef nonnull @.str.7, ptr noundef nonnull %21) #4
  br label %243

110:                                              ; preds = %104
  br i1 %37, label %111, label %118

111:                                              ; preds = %110
  %112 = call i32 @cpoequ_(ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %9, ptr noundef nonnull %23, ptr noundef nonnull %22, ptr noundef nonnull %25) #4
  %113 = load i64, ptr %25, align 8, !tbaa !5
  %114 = icmp eq i64 %113, 0
  br i1 %114, label %115, label %118

115:                                              ; preds = %111
  %116 = call i32 @claqhe_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %9, ptr noundef nonnull %23, ptr noundef nonnull %22, ptr noundef %8) #4
  %117 = call i64 @lsame_(ptr noundef %8, ptr noundef nonnull @.str.2) #4
  br label %118

118:                                              ; preds = %111, %115, %110
  %.1 = phi i64 [ %117, %115 ], [ %.0252282, %111 ], [ %.0252282, %110 ]
  %.not269 = icmp eq i64 %.1, 0
  br i1 %.not269, label %.loopexit292, label %119

119:                                              ; preds = %118
  %120 = load i64, ptr %3, align 8, !tbaa !5
  %.not270303 = icmp slt i64 %120, 1
  br i1 %.not270303, label %.loopexit292, label %.lr.ph306

.lr.ph306:                                        ; preds = %119
  %121 = load i64, ptr %2, align 8, !tbaa !5
  %.not274298 = icmp slt i64 %121, 1
  br i1 %.not274298, label %.loopexit292, label %.lr.ph301.preheader

.lr.ph301.preheader:                              ; preds = %.lr.ph306
  %122 = add nsw i64 %121, -1
  %123 = shl i64 %27, 3
  %124 = add nuw i64 %120, 2305843009213693951
  %125 = mul i64 %27, %124
  %126 = add i64 %125, %121
  %127 = shl i64 %126, 3
  %scevgep338 = getelementptr i8, ptr %10, i64 %127
  %128 = shl i64 %121, 2
  %scevgep339 = getelementptr i8, ptr %9, i64 %128
  %min.iters.check = icmp ult i64 %121, 12
  %mul.result = shl i64 %122, 3
  %mul.result336 = shl i64 %122, 3
  %mul.overflow337 = icmp ugt i64 %122, 2305843009213693951
  %bound0 = icmp ugt ptr %scevgep339, %10
  %bound1 = icmp ugt ptr %scevgep338, %9
  %found.conflict = and i1 %bound0, %bound1
  %.mask = and i64 %27, 1152921504606846976
  %stride.check = icmp ne i64 %.mask, 0
  %129 = or i1 %found.conflict, %stride.check
  %n.vec = and i64 %121, 4611686018427387902
  %ind.end = or i64 %121, 1
  %cmp.n = icmp eq i64 %121, %n.vec
  %xtraiter395 = and i64 %121, 1
  %lcmp.mod396.not = icmp eq i64 %xtraiter395, 0
  br label %.lr.ph301

.lr.ph301:                                        ; preds = %.lr.ph301.preheader, %._crit_edge302
  %indvar = phi i64 [ 0, %.lr.ph301.preheader ], [ %indvar.next, %._crit_edge302 ]
  %.1256304 = phi i64 [ 1, %.lr.ph301.preheader ], [ %166, %._crit_edge302 ]
  %130 = mul nsw i64 %.1256304, %27
  %invariant.gep = getelementptr %struct.complex, ptr %29, i64 %130
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph301
  %131 = mul i64 %123, %indvar
  %scevgep334 = getelementptr i8, ptr %10, i64 %131
  %132 = or disjoint i64 %131, 4
  %scevgep = getelementptr i8, ptr %10, i64 %132
  %133 = getelementptr i8, ptr %scevgep, i64 %mul.result
  %134 = icmp ult ptr %133, %scevgep
  %135 = getelementptr i8, ptr %scevgep334, i64 %mul.result336
  %136 = icmp ult ptr %135, %scevgep334
  %137 = or i1 %136, %mul.overflow337
  %138 = or i1 %134, %137
  %brmerge = select i1 %138, i1 true, i1 %129
  br i1 %brmerge, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %vector.scevcheck, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.scevcheck ]
  %offset.idx = or disjoint i64 %index, 1
  %139 = getelementptr float, ptr %9, i64 %index
  %wide.load = load <2 x float>, ptr %139, align 4, !tbaa !10, !alias.scope !14
  %140 = getelementptr %struct.complex, ptr %invariant.gep, i64 %offset.idx
  %141 = load <4 x float>, ptr %140, align 4, !tbaa !10
  %142 = shufflevector <2 x float> %wide.load, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec = fmul <4 x float> %142, %141
  store <4 x float> %interleaved.vec, ptr %140, align 4, !tbaa !10
  %index.next = add nuw i64 %index, 2
  %143 = icmp eq i64 %index.next, %n.vec
  br i1 %143, label %middle.block, label %vector.body, !llvm.loop !17

middle.block:                                     ; preds = %vector.body
  br i1 %cmp.n, label %._crit_edge302, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %vector.scevcheck, %middle.block, %.lr.ph301
  %.0257299.ph = phi i64 [ 1, %vector.scevcheck ], [ 1, %.lr.ph301 ], [ %ind.end, %middle.block ]
  br i1 %lcmp.mod396.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %144 = getelementptr inbounds float, ptr %26, i64 %.0257299.ph
  %145 = load float, ptr %144, align 4, !tbaa !10
  %gep.prol = getelementptr %struct.complex, ptr %invariant.gep, i64 %.0257299.ph
  %146 = load <2 x float>, ptr %gep.prol, align 4, !tbaa !10
  %147 = insertelement <2 x float> poison, float %145, i64 0
  %148 = shufflevector <2 x float> %147, <2 x float> poison, <2 x i32> zeroinitializer
  %149 = fmul <2 x float> %148, %146
  store <2 x float> %149, ptr %gep.prol, align 4, !tbaa !10
  %150 = add nuw nsw i64 %.0257299.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.0257299.unr = phi i64 [ %.0257299.ph, %scalar.ph.preheader ], [ %150, %scalar.ph.prol ]
  %151 = icmp eq i64 %121, %.0257299.ph
  br i1 %151, label %._crit_edge302, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %.0257299 = phi i64 [ %165, %scalar.ph ], [ %.0257299.unr, %scalar.ph.prol.loopexit ]
  %152 = getelementptr inbounds float, ptr %26, i64 %.0257299
  %153 = load float, ptr %152, align 4, !tbaa !10
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %.0257299
  %154 = load <2 x float>, ptr %gep, align 4, !tbaa !10
  %155 = insertelement <2 x float> poison, float %153, i64 0
  %156 = shufflevector <2 x float> %155, <2 x float> poison, <2 x i32> zeroinitializer
  %157 = fmul <2 x float> %156, %154
  store <2 x float> %157, ptr %gep, align 4, !tbaa !10
  %158 = add nuw i64 %.0257299, 1
  %159 = getelementptr float, ptr %9, i64 %.0257299
  %160 = load float, ptr %159, align 4, !tbaa !10
  %gep.1 = getelementptr %struct.complex, ptr %invariant.gep, i64 %158
  %161 = load <2 x float>, ptr %gep.1, align 4, !tbaa !10
  %162 = insertelement <2 x float> poison, float %160, i64 0
  %163 = shufflevector <2 x float> %162, <2 x float> poison, <2 x i32> zeroinitializer
  %164 = fmul <2 x float> %163, %161
  store <2 x float> %164, ptr %gep.1, align 4, !tbaa !10
  %165 = add nuw i64 %.0257299, 2
  %exitcond326.not.1 = icmp eq i64 %158, %121
  br i1 %exitcond326.not.1, label %._crit_edge302, label %scalar.ph, !llvm.loop !20

._crit_edge302:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %166 = add nuw i64 %.1256304, 1
  %exitcond327.not = icmp eq i64 %.1256304, %120
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond327.not, label %.loopexit292, label %.lr.ph301, !llvm.loop !21

.loopexit292:                                     ; preds = %._crit_edge302, %.lr.ph306, %119, %118
  br i1 %or.cond, label %167, label %173

167:                                              ; preds = %.loopexit292
  %168 = call i32 @clacpy_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7) #4
  %169 = call i32 @cpotrf_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %19) #4
  %170 = load i64, ptr %19, align 8, !tbaa !5
  %171 = icmp sgt i64 %170, 0
  br i1 %171, label %172, label %173

172:                                              ; preds = %167
  store float 0.000000e+00, ptr %14, align 4, !tbaa !10
  br label %243

173:                                              ; preds = %167, %.loopexit292
  %174 = call double @clanhe_(ptr noundef nonnull @.str.8, ptr noundef %1, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %18) #4
  %175 = fptrunc double %174 to float
  store float %175, ptr %24, align 4, !tbaa !10
  %176 = call i32 @cpocon_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %24, ptr noundef %14, ptr noundef %17, ptr noundef %18, ptr noundef nonnull %19) #4
  %177 = call i32 @clacpy_(ptr noundef nonnull @.str.9, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13) #4
  %178 = call i32 @cpotrs_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %19) #4
  %179 = call i32 @cporfs_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef nonnull %19) #4
  br i1 %.not269, label %.loopexit, label %180

180:                                              ; preds = %173
  %181 = load i64, ptr %3, align 8, !tbaa !5
  %.not271314 = icmp slt i64 %181, 1
  br i1 %.not271314, label %.loopexit, label %.lr.ph317

.lr.ph317:                                        ; preds = %180
  %182 = load i64, ptr %2, align 8, !tbaa !5
  %.not273307 = icmp slt i64 %182, 1
  br i1 %.not273307, label %.lr.ph322, label %.lr.ph310.preheader

.lr.ph310.preheader:                              ; preds = %.lr.ph317
  %183 = add nsw i64 %182, -1
  %184 = shl i64 %30, 3
  %185 = add nuw i64 %181, 2305843009213693951
  %186 = mul i64 %30, %185
  %187 = add i64 %186, %182
  %188 = shl i64 %187, 3
  %scevgep353 = getelementptr i8, ptr %12, i64 %188
  %189 = shl i64 %182, 2
  %scevgep354 = getelementptr i8, ptr %9, i64 %189
  %min.iters.check361 = icmp ult i64 %182, 12
  %mul.result346 = shl i64 %183, 3
  %mul.result350 = shl i64 %183, 3
  %mul.overflow351 = icmp ugt i64 %183, 2305843009213693951
  %bound0355 = icmp ugt ptr %scevgep354, %12
  %bound1356 = icmp ugt ptr %scevgep353, %9
  %found.conflict357 = and i1 %bound0355, %bound1356
  %.mask391 = and i64 %30, 1152921504606846976
  %stride.check358 = icmp ne i64 %.mask391, 0
  %190 = or i1 %found.conflict357, %stride.check358
  %n.vec364 = and i64 %182, 4611686018427387902
  %ind.end365 = or i64 %182, 1
  %cmp.n376 = icmp eq i64 %182, %n.vec364
  %xtraiter397 = and i64 %182, 1
  %lcmp.mod398.not = icmp eq i64 %xtraiter397, 0
  br label %.lr.ph310

.lr.ph310:                                        ; preds = %.lr.ph310.preheader, %._crit_edge311
  %indvar342 = phi i64 [ 0, %.lr.ph310.preheader ], [ %indvar.next343, %._crit_edge311 ]
  %.2315 = phi i64 [ 1, %.lr.ph310.preheader ], [ %227, %._crit_edge311 ]
  %191 = mul nsw i64 %.2315, %30
  %invariant.gep312 = getelementptr %struct.complex, ptr %32, i64 %191
  br i1 %min.iters.check361, label %scalar.ph360.preheader, label %vector.scevcheck341

vector.scevcheck341:                              ; preds = %.lr.ph310
  %192 = mul i64 %184, %indvar342
  %scevgep348 = getelementptr i8, ptr %12, i64 %192
  %193 = or disjoint i64 %192, 4
  %scevgep344 = getelementptr i8, ptr %12, i64 %193
  %194 = getelementptr i8, ptr %scevgep344, i64 %mul.result346
  %195 = icmp ult ptr %194, %scevgep344
  %196 = getelementptr i8, ptr %scevgep348, i64 %mul.result350
  %197 = icmp ult ptr %196, %scevgep348
  %198 = or i1 %197, %mul.overflow351
  %199 = or i1 %195, %198
  %brmerge402 = select i1 %199, i1 true, i1 %190
  br i1 %brmerge402, label %scalar.ph360.preheader, label %vector.body367

vector.body367:                                   ; preds = %vector.scevcheck341, %vector.body367
  %index368 = phi i64 [ %index.next375, %vector.body367 ], [ 0, %vector.scevcheck341 ]
  %offset.idx369 = or disjoint i64 %index368, 1
  %200 = getelementptr float, ptr %9, i64 %index368
  %wide.load370 = load <2 x float>, ptr %200, align 4, !tbaa !10, !alias.scope !22
  %201 = getelementptr %struct.complex, ptr %invariant.gep312, i64 %offset.idx369
  %202 = load <4 x float>, ptr %201, align 4, !tbaa !10
  %203 = shufflevector <2 x float> %wide.load370, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec374 = fmul <4 x float> %203, %202
  store <4 x float> %interleaved.vec374, ptr %201, align 4, !tbaa !10
  %index.next375 = add nuw i64 %index368, 2
  %204 = icmp eq i64 %index.next375, %n.vec364
  br i1 %204, label %middle.block359, label %vector.body367, !llvm.loop !25

middle.block359:                                  ; preds = %vector.body367
  br i1 %cmp.n376, label %._crit_edge311, label %scalar.ph360.preheader

scalar.ph360.preheader:                           ; preds = %vector.scevcheck341, %middle.block359, %.lr.ph310
  %.1258308.ph = phi i64 [ 1, %vector.scevcheck341 ], [ 1, %.lr.ph310 ], [ %ind.end365, %middle.block359 ]
  br i1 %lcmp.mod398.not, label %scalar.ph360.prol.loopexit, label %scalar.ph360.prol

scalar.ph360.prol:                                ; preds = %scalar.ph360.preheader
  %205 = getelementptr inbounds float, ptr %26, i64 %.1258308.ph
  %206 = load float, ptr %205, align 4, !tbaa !10
  %gep313.prol = getelementptr %struct.complex, ptr %invariant.gep312, i64 %.1258308.ph
  %207 = load <2 x float>, ptr %gep313.prol, align 4, !tbaa !10
  %208 = insertelement <2 x float> poison, float %206, i64 0
  %209 = shufflevector <2 x float> %208, <2 x float> poison, <2 x i32> zeroinitializer
  %210 = fmul <2 x float> %209, %207
  store <2 x float> %210, ptr %gep313.prol, align 4, !tbaa !10
  %211 = add nuw nsw i64 %.1258308.ph, 1
  br label %scalar.ph360.prol.loopexit

scalar.ph360.prol.loopexit:                       ; preds = %scalar.ph360.prol, %scalar.ph360.preheader
  %.1258308.unr = phi i64 [ %.1258308.ph, %scalar.ph360.preheader ], [ %211, %scalar.ph360.prol ]
  %212 = icmp eq i64 %182, %.1258308.ph
  br i1 %212, label %._crit_edge311, label %scalar.ph360

scalar.ph360:                                     ; preds = %scalar.ph360.prol.loopexit, %scalar.ph360
  %.1258308 = phi i64 [ %226, %scalar.ph360 ], [ %.1258308.unr, %scalar.ph360.prol.loopexit ]
  %213 = getelementptr inbounds float, ptr %26, i64 %.1258308
  %214 = load float, ptr %213, align 4, !tbaa !10
  %gep313 = getelementptr %struct.complex, ptr %invariant.gep312, i64 %.1258308
  %215 = load <2 x float>, ptr %gep313, align 4, !tbaa !10
  %216 = insertelement <2 x float> poison, float %214, i64 0
  %217 = shufflevector <2 x float> %216, <2 x float> poison, <2 x i32> zeroinitializer
  %218 = fmul <2 x float> %217, %215
  store <2 x float> %218, ptr %gep313, align 4, !tbaa !10
  %219 = add nuw i64 %.1258308, 1
  %220 = getelementptr float, ptr %9, i64 %.1258308
  %221 = load float, ptr %220, align 4, !tbaa !10
  %gep313.1 = getelementptr %struct.complex, ptr %invariant.gep312, i64 %219
  %222 = load <2 x float>, ptr %gep313.1, align 4, !tbaa !10
  %223 = insertelement <2 x float> poison, float %221, i64 0
  %224 = shufflevector <2 x float> %223, <2 x float> poison, <2 x i32> zeroinitializer
  %225 = fmul <2 x float> %224, %222
  store <2 x float> %225, ptr %gep313.1, align 4, !tbaa !10
  %226 = add nuw i64 %.1258308, 2
  %exitcond328.not.1 = icmp eq i64 %219, %182
  br i1 %exitcond328.not.1, label %._crit_edge311, label %scalar.ph360, !llvm.loop !26

._crit_edge311:                                   ; preds = %scalar.ph360.prol.loopexit, %scalar.ph360, %middle.block359
  %227 = add nuw i64 %.2315, 1
  %exitcond329.not = icmp eq i64 %.2315, %181
  %indvar.next343 = add i64 %indvar342, 1
  br i1 %exitcond329.not, label %._crit_edge318, label %.lr.ph310, !llvm.loop !27

._crit_edge318:                                   ; preds = %._crit_edge311
  br i1 %.not271314, label %.loopexit, label %.lr.ph322

.lr.ph322:                                        ; preds = %.lr.ph317, %._crit_edge318
  %228 = load float, ptr %23, align 4, !tbaa !10
  %min.iters.check379 = icmp ult i64 %181, 4
  br i1 %min.iters.check379, label %scalar.ph378.preheader, label %vector.ph380

vector.ph380:                                     ; preds = %.lr.ph322
  %n.vec382 = and i64 %181, 9223372036854775804
  %ind.end383 = or disjoint i64 %n.vec382, 1
  %broadcast.splatinsert = insertelement <4 x float> poison, float %228, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body385

vector.body385:                                   ; preds = %vector.body385, %vector.ph380
  %index386 = phi i64 [ 0, %vector.ph380 ], [ %index.next389, %vector.body385 ]
  %229 = getelementptr float, ptr %15, i64 %index386
  %wide.load388 = load <4 x float>, ptr %229, align 4, !tbaa !10
  %230 = fdiv <4 x float> %wide.load388, %broadcast.splat
  store <4 x float> %230, ptr %229, align 4, !tbaa !10
  %index.next389 = add nuw i64 %index386, 4
  %231 = icmp eq i64 %index.next389, %n.vec382
  br i1 %231, label %middle.block377, label %vector.body385, !llvm.loop !28

middle.block377:                                  ; preds = %vector.body385
  %cmp.n390 = icmp eq i64 %181, %n.vec382
  br i1 %cmp.n390, label %.loopexit, label %scalar.ph378.preheader

scalar.ph378.preheader:                           ; preds = %middle.block377, %.lr.ph322
  %.3320.ph = phi i64 [ 1, %.lr.ph322 ], [ %ind.end383, %middle.block377 ]
  br label %scalar.ph378

scalar.ph378:                                     ; preds = %scalar.ph378.preheader, %scalar.ph378
  %.3320 = phi i64 [ %235, %scalar.ph378 ], [ %.3320.ph, %scalar.ph378.preheader ]
  %232 = getelementptr inbounds float, ptr %33, i64 %.3320
  %233 = load float, ptr %232, align 4, !tbaa !10
  %234 = fdiv float %233, %228
  store float %234, ptr %232, align 4, !tbaa !10
  %235 = add nuw i64 %.3320, 1
  %exitcond330.not = icmp eq i64 %.3320, %181
  br i1 %exitcond330.not, label %.loopexit, label %scalar.ph378, !llvm.loop !29

.loopexit:                                        ; preds = %scalar.ph378, %middle.block377, %180, %._crit_edge318, %173
  %236 = load float, ptr %14, align 4, !tbaa !10
  %237 = fpext float %236 to double
  %238 = call double @slamch_(ptr noundef nonnull @.str.10) #4
  %239 = fcmp ogt double %238, %237
  br i1 %239, label %240, label %243

240:                                              ; preds = %.loopexit
  %241 = load i64, ptr %2, align 8, !tbaa !5
  %242 = add nsw i64 %241, 1
  store i64 %242, ptr %19, align 8, !tbaa !5
  br label %243

243:                                              ; preds = %.loopexit, %240, %172, %.thread289
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #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 double @slamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

declare double @clanhe_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.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 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"float", !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = !{!15}
!15 = distinct !{!15, !16}
!16 = distinct !{!16, !"LVerDomain"}
!17 = distinct !{!17, !13, !18, !19}
!18 = !{!"llvm.loop.isvectorized", i32 1}
!19 = !{!"llvm.loop.unroll.runtime.disable"}
!20 = distinct !{!20, !13, !18}
!21 = distinct !{!21, !13}
!22 = !{!23}
!23 = distinct !{!23, !24}
!24 = distinct !{!24, !"LVerDomain"}
!25 = distinct !{!25, !13, !18, !19}
!26 = distinct !{!26, !13, !18}
!27 = distinct !{!27, !13}
!28 = distinct !{!28, !13, !18, !19}
!29 = distinct !{!29, !13, !19, !18}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalDCEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass