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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @cposvxx_(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, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %24) #0 {
  %26 = alloca i32, align 4
  %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 ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca ptr, 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 i64, align 8
  %59 = alloca i64, align 8
  %60 = alloca i64, align 8
  %61 = alloca i64, align 8
  %62 = alloca i64, align 8
  %63 = alloca i64, align 8
  %64 = alloca i64, align 8
  %65 = alloca float, align 4
  %66 = alloca float, align 4
  %67 = alloca i64, align 8
  %68 = alloca float, align 4
  %69 = alloca float, align 4
  %70 = alloca float, align 4
  %71 = alloca float, align 4
  %72 = alloca i64, align 8
  %73 = alloca i64, align 8
  %74 = alloca i64, align 8
  %75 = alloca float, align 4
  %76 = alloca i64, align 8
  %77 = alloca float, align 4
  %78 = alloca i32, align 4
  store ptr %0, ptr %27, align 8, !tbaa !5
  store ptr %1, ptr %28, align 8, !tbaa !5
  store ptr %2, ptr %29, align 8, !tbaa !5
  store ptr %3, ptr %30, align 8, !tbaa !5
  store ptr %4, ptr %31, align 8, !tbaa !5
  store ptr %5, ptr %32, align 8, !tbaa !5
  store ptr %6, ptr %33, align 8, !tbaa !5
  store ptr %7, ptr %34, align 8, !tbaa !5
  store ptr %8, ptr %35, align 8, !tbaa !5
  store ptr %9, ptr %36, align 8, !tbaa !5
  store ptr %10, ptr %37, align 8, !tbaa !5
  store ptr %11, ptr %38, align 8, !tbaa !5
  store ptr %12, ptr %39, align 8, !tbaa !5
  store ptr %13, ptr %40, align 8, !tbaa !5
  store ptr %14, ptr %41, align 8, !tbaa !5
  store ptr %15, ptr %42, align 8, !tbaa !5
  store ptr %16, ptr %43, align 8, !tbaa !5
  store ptr %17, ptr %44, align 8, !tbaa !5
  store ptr %18, ptr %45, align 8, !tbaa !5
  store ptr %19, ptr %46, align 8, !tbaa !5
  store ptr %20, ptr %47, align 8, !tbaa !5
  store ptr %21, ptr %48, align 8, !tbaa !5
  store ptr %22, ptr %49, align 8, !tbaa !5
  store ptr %23, ptr %50, align 8, !tbaa !5
  store ptr %24, ptr %51, align 8, !tbaa !5
  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 8, 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
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #3
  call void @llvm.lifetime.start.p0(i64 4, 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 4, ptr %69) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #3
  %79 = load ptr, ptr %30, align 8, !tbaa !5
  %80 = load i64, ptr %79, align 8, !tbaa !9
  store i64 %80, ptr %62, align 8, !tbaa !9
  %81 = load i64, ptr %62, align 8, !tbaa !9
  %82 = add nsw i64 1, %81
  store i64 %82, ptr %63, align 8, !tbaa !9
  %83 = load i64, ptr %63, align 8, !tbaa !9
  %84 = load ptr, ptr %46, align 8, !tbaa !5
  %85 = sub i64 0, %83
  %86 = getelementptr inbounds float, ptr %84, i64 %85
  store ptr %86, ptr %46, align 8, !tbaa !5
  %87 = load ptr, ptr %30, align 8, !tbaa !5
  %88 = load i64, ptr %87, align 8, !tbaa !9
  store i64 %88, ptr %60, align 8, !tbaa !9
  %89 = load i64, ptr %60, align 8, !tbaa !9
  %90 = add nsw i64 1, %89
  store i64 %90, ptr %61, align 8, !tbaa !9
  %91 = load i64, ptr %61, align 8, !tbaa !9
  %92 = load ptr, ptr %45, align 8, !tbaa !5
  %93 = sub i64 0, %91
  %94 = getelementptr inbounds float, ptr %92, i64 %93
  store ptr %94, ptr %45, align 8, !tbaa !5
  %95 = load ptr, ptr %32, align 8, !tbaa !5
  %96 = load i64, ptr %95, align 8, !tbaa !9
  store i64 %96, ptr %52, align 8, !tbaa !9
  %97 = load i64, ptr %52, align 8, !tbaa !9
  %98 = add nsw i64 1, %97
  store i64 %98, ptr %53, align 8, !tbaa !9
  %99 = load i64, ptr %53, align 8, !tbaa !9
  %100 = load ptr, ptr %31, align 8, !tbaa !5
  %101 = sub i64 0, %99
  %102 = getelementptr inbounds %struct.complex, ptr %100, i64 %101
  store ptr %102, ptr %31, align 8, !tbaa !5
  %103 = load ptr, ptr %34, align 8, !tbaa !5
  %104 = load i64, ptr %103, align 8, !tbaa !9
  store i64 %104, ptr %54, align 8, !tbaa !9
  %105 = load i64, ptr %54, align 8, !tbaa !9
  %106 = add nsw i64 1, %105
  store i64 %106, ptr %55, align 8, !tbaa !9
  %107 = load i64, ptr %55, align 8, !tbaa !9
  %108 = load ptr, ptr %33, align 8, !tbaa !5
  %109 = sub i64 0, %107
  %110 = getelementptr inbounds %struct.complex, ptr %108, i64 %109
  store ptr %110, ptr %33, align 8, !tbaa !5
  %111 = load ptr, ptr %36, align 8, !tbaa !5
  %112 = getelementptr inbounds float, ptr %111, i32 -1
  store ptr %112, ptr %36, align 8, !tbaa !5
  %113 = load ptr, ptr %38, align 8, !tbaa !5
  %114 = load i64, ptr %113, align 8, !tbaa !9
  store i64 %114, ptr %56, align 8, !tbaa !9
  %115 = load i64, ptr %56, align 8, !tbaa !9
  %116 = add nsw i64 1, %115
  store i64 %116, ptr %57, align 8, !tbaa !9
  %117 = load i64, ptr %57, align 8, !tbaa !9
  %118 = load ptr, ptr %37, align 8, !tbaa !5
  %119 = sub i64 0, %117
  %120 = getelementptr inbounds %struct.complex, ptr %118, i64 %119
  store ptr %120, ptr %37, align 8, !tbaa !5
  %121 = load ptr, ptr %40, align 8, !tbaa !5
  %122 = load i64, ptr %121, align 8, !tbaa !9
  store i64 %122, ptr %58, align 8, !tbaa !9
  %123 = load i64, ptr %58, align 8, !tbaa !9
  %124 = add nsw i64 1, %123
  store i64 %124, ptr %59, align 8, !tbaa !9
  %125 = load i64, ptr %59, align 8, !tbaa !9
  %126 = load ptr, ptr %39, align 8, !tbaa !5
  %127 = sub i64 0, %125
  %128 = getelementptr inbounds %struct.complex, ptr %126, i64 %127
  store ptr %128, ptr %39, align 8, !tbaa !5
  %129 = load ptr, ptr %43, align 8, !tbaa !5
  %130 = getelementptr inbounds float, ptr %129, i32 -1
  store ptr %130, ptr %43, align 8, !tbaa !5
  %131 = load ptr, ptr %48, align 8, !tbaa !5
  %132 = getelementptr inbounds float, ptr %131, i32 -1
  store ptr %132, ptr %48, align 8, !tbaa !5
  %133 = load ptr, ptr %49, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.complex, ptr %133, i32 -1
  store ptr %134, ptr %49, align 8, !tbaa !5
  %135 = load ptr, ptr %50, align 8, !tbaa !5
  %136 = getelementptr inbounds float, ptr %135, i32 -1
  store ptr %136, ptr %50, align 8, !tbaa !5
  %137 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 0, ptr %137, align 8, !tbaa !9
  %138 = load ptr, ptr %27, align 8, !tbaa !5
  %139 = call i64 @lsame_(ptr noundef %138, ptr noundef @.str)
  store i64 %139, ptr %74, align 8, !tbaa !9
  %140 = load ptr, ptr %27, align 8, !tbaa !5
  %141 = call i64 @lsame_(ptr noundef %140, ptr noundef @.str.1)
  store i64 %141, ptr %72, align 8, !tbaa !9
  %142 = call double @slamch_(ptr noundef @.str.2)
  %143 = fptrunc double %142 to float
  store float %143, ptr %77, align 4, !tbaa !11
  %144 = load float, ptr %77, align 4, !tbaa !11
  %145 = fdiv float 1.000000e+00, %144
  store float %145, ptr %75, align 4, !tbaa !11
  %146 = load i64, ptr %74, align 8, !tbaa !9
  %147 = icmp ne i64 %146, 0
  br i1 %147, label %151, label %148

148:                                              ; preds = %25
  %149 = load i64, ptr %72, align 8, !tbaa !9
  %150 = icmp ne i64 %149, 0
  br i1 %150, label %151, label %153

151:                                              ; preds = %148, %25
  %152 = load ptr, ptr %35, align 8, !tbaa !5
  store i8 78, ptr %152, align 1, !tbaa !13
  store i64 0, ptr %73, align 8, !tbaa !9
  br label %156

153:                                              ; preds = %148
  %154 = load ptr, ptr %35, align 8, !tbaa !5
  %155 = call i64 @lsame_(ptr noundef %154, ptr noundef @.str.3)
  store i64 %155, ptr %73, align 8, !tbaa !9
  br label %156

156:                                              ; preds = %153, %151
  %157 = load ptr, ptr %42, align 8, !tbaa !5
  store float 0.000000e+00, ptr %157, align 4, !tbaa !11
  %158 = load i64, ptr %74, align 8, !tbaa !9
  %159 = icmp ne i64 %158, 0
  br i1 %159, label %169, label %160

160:                                              ; preds = %156
  %161 = load i64, ptr %72, align 8, !tbaa !9
  %162 = icmp ne i64 %161, 0
  br i1 %162, label %169, label %163

163:                                              ; preds = %160
  %164 = load ptr, ptr %27, align 8, !tbaa !5
  %165 = call i64 @lsame_(ptr noundef %164, ptr noundef @.str.4)
  %166 = icmp ne i64 %165, 0
  br i1 %166, label %169, label %167

167:                                              ; preds = %163
  %168 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -1, ptr %168, align 8, !tbaa !9
  br label %359

169:                                              ; preds = %163, %160, %156
  %170 = load ptr, ptr %28, align 8, !tbaa !5
  %171 = call i64 @lsame_(ptr noundef %170, ptr noundef @.str.5)
  %172 = icmp ne i64 %171, 0
  br i1 %172, label %179, label %173

173:                                              ; preds = %169
  %174 = load ptr, ptr %28, align 8, !tbaa !5
  %175 = call i64 @lsame_(ptr noundef %174, ptr noundef @.str.6)
  %176 = icmp ne i64 %175, 0
  br i1 %176, label %179, label %177

177:                                              ; preds = %173
  %178 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -2, ptr %178, align 8, !tbaa !9
  br label %358

179:                                              ; preds = %173, %169
  %180 = load ptr, ptr %29, align 8, !tbaa !5
  %181 = load i64, ptr %180, align 8, !tbaa !9
  %182 = icmp slt i64 %181, 0
  br i1 %182, label %183, label %185

183:                                              ; preds = %179
  %184 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -3, ptr %184, align 8, !tbaa !9
  br label %357

185:                                              ; preds = %179
  %186 = load ptr, ptr %30, align 8, !tbaa !5
  %187 = load i64, ptr %186, align 8, !tbaa !9
  %188 = icmp slt i64 %187, 0
  br i1 %188, label %189, label %191

189:                                              ; preds = %185
  %190 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -4, ptr %190, align 8, !tbaa !9
  br label %356

191:                                              ; preds = %185
  %192 = load ptr, ptr %32, align 8, !tbaa !5
  %193 = load i64, ptr %192, align 8, !tbaa !9
  %194 = load ptr, ptr %29, align 8, !tbaa !5
  %195 = load i64, ptr %194, align 8, !tbaa !9
  %196 = icmp sge i64 1, %195
  br i1 %196, label %197, label %198

197:                                              ; preds = %191
  br label %201

198:                                              ; preds = %191
  %199 = load ptr, ptr %29, align 8, !tbaa !5
  %200 = load i64, ptr %199, align 8, !tbaa !9
  br label %201

201:                                              ; preds = %198, %197
  %202 = phi i64 [ 1, %197 ], [ %200, %198 ]
  %203 = icmp slt i64 %193, %202
  br i1 %203, label %204, label %206

204:                                              ; preds = %201
  %205 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -6, ptr %205, align 8, !tbaa !9
  br label %355

206:                                              ; preds = %201
  %207 = load ptr, ptr %34, align 8, !tbaa !5
  %208 = load i64, ptr %207, align 8, !tbaa !9
  %209 = load ptr, ptr %29, align 8, !tbaa !5
  %210 = load i64, ptr %209, align 8, !tbaa !9
  %211 = icmp sge i64 1, %210
  br i1 %211, label %212, label %213

212:                                              ; preds = %206
  br label %216

213:                                              ; preds = %206
  %214 = load ptr, ptr %29, align 8, !tbaa !5
  %215 = load i64, ptr %214, align 8, !tbaa !9
  br label %216

216:                                              ; preds = %213, %212
  %217 = phi i64 [ 1, %212 ], [ %215, %213 ]
  %218 = icmp slt i64 %208, %217
  br i1 %218, label %219, label %221

219:                                              ; preds = %216
  %220 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -8, ptr %220, align 8, !tbaa !9
  br label %354

221:                                              ; preds = %216
  %222 = load ptr, ptr %27, align 8, !tbaa !5
  %223 = call i64 @lsame_(ptr noundef %222, ptr noundef @.str.4)
  %224 = icmp ne i64 %223, 0
  br i1 %224, label %225, label %234

225:                                              ; preds = %221
  %226 = load i64, ptr %73, align 8, !tbaa !9
  %227 = icmp ne i64 %226, 0
  br i1 %227, label %234, label %228

228:                                              ; preds = %225
  %229 = load ptr, ptr %35, align 8, !tbaa !5
  %230 = call i64 @lsame_(ptr noundef %229, ptr noundef @.str)
  %231 = icmp ne i64 %230, 0
  br i1 %231, label %234, label %232

232:                                              ; preds = %228
  %233 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -9, ptr %233, align 8, !tbaa !9
  br label %353

234:                                              ; preds = %228, %225, %221
  %235 = load i64, ptr %73, align 8, !tbaa !9
  %236 = icmp ne i64 %235, 0
  br i1 %236, label %237, label %316

237:                                              ; preds = %234
  %238 = load float, ptr %75, align 4, !tbaa !11
  store float %238, ptr %69, align 4, !tbaa !11
  store float 0.000000e+00, ptr %70, align 4, !tbaa !11
  %239 = load ptr, ptr %29, align 8, !tbaa !5
  %240 = load i64, ptr %239, align 8, !tbaa !9
  store i64 %240, ptr %64, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %241

241:                                              ; preds = %278, %237
  %242 = load i64, ptr %67, align 8, !tbaa !9
  %243 = load i64, ptr %64, align 8, !tbaa !9
  %244 = icmp sle i64 %242, %243
  br i1 %244, label %245, label %281

245:                                              ; preds = %241
  %246 = load float, ptr %69, align 4, !tbaa !11
  store float %246, ptr %65, align 4, !tbaa !11
  %247 = load ptr, ptr %36, align 8, !tbaa !5
  %248 = load i64, ptr %67, align 8, !tbaa !9
  %249 = getelementptr inbounds float, ptr %247, i64 %248
  %250 = load float, ptr %249, align 4, !tbaa !11
  store float %250, ptr %66, align 4, !tbaa !11
  %251 = load float, ptr %65, align 4, !tbaa !11
  %252 = load float, ptr %66, align 4, !tbaa !11
  %253 = fcmp ole float %251, %252
  br i1 %253, label %254, label %256

254:                                              ; preds = %245
  %255 = load float, ptr %65, align 4, !tbaa !11
  br label %258

256:                                              ; preds = %245
  %257 = load float, ptr %66, align 4, !tbaa !11
  br label %258

258:                                              ; preds = %256, %254
  %259 = phi float [ %255, %254 ], [ %257, %256 ]
  %260 = fpext float %259 to double
  %261 = fptrunc double %260 to float
  store float %261, ptr %69, align 4, !tbaa !11
  %262 = load float, ptr %70, align 4, !tbaa !11
  store float %262, ptr %65, align 4, !tbaa !11
  %263 = load ptr, ptr %36, align 8, !tbaa !5
  %264 = load i64, ptr %67, align 8, !tbaa !9
  %265 = getelementptr inbounds float, ptr %263, i64 %264
  %266 = load float, ptr %265, align 4, !tbaa !11
  store float %266, ptr %66, align 4, !tbaa !11
  %267 = load float, ptr %65, align 4, !tbaa !11
  %268 = load float, ptr %66, align 4, !tbaa !11
  %269 = fcmp oge float %267, %268
  br i1 %269, label %270, label %272

270:                                              ; preds = %258
  %271 = load float, ptr %65, align 4, !tbaa !11
  br label %274

272:                                              ; preds = %258
  %273 = load float, ptr %66, align 4, !tbaa !11
  br label %274

274:                                              ; preds = %272, %270
  %275 = phi float [ %271, %270 ], [ %273, %272 ]
  %276 = fpext float %275 to double
  %277 = fptrunc double %276 to float
  store float %277, ptr %70, align 4, !tbaa !11
  br label %278

278:                                              ; preds = %274
  %279 = load i64, ptr %67, align 8, !tbaa !9
  %280 = add nsw i64 %279, 1
  store i64 %280, ptr %67, align 8, !tbaa !9
  br label %241, !llvm.loop !14

281:                                              ; preds = %241
  %282 = load float, ptr %69, align 4, !tbaa !11
  %283 = fcmp ole float %282, 0.000000e+00
  br i1 %283, label %284, label %286

284:                                              ; preds = %281
  %285 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -10, ptr %285, align 8, !tbaa !9
  br label %315

286:                                              ; preds = %281
  %287 = load ptr, ptr %29, align 8, !tbaa !5
  %288 = load i64, ptr %287, align 8, !tbaa !9
  %289 = icmp sgt i64 %288, 0
  br i1 %289, label %290, label %313

290:                                              ; preds = %286
  %291 = load float, ptr %69, align 4, !tbaa !11
  %292 = load float, ptr %77, align 4, !tbaa !11
  %293 = fcmp oge float %291, %292
  br i1 %293, label %294, label %296

294:                                              ; preds = %290
  %295 = load float, ptr %69, align 4, !tbaa !11
  br label %298

296:                                              ; preds = %290
  %297 = load float, ptr %77, align 4, !tbaa !11
  br label %298

298:                                              ; preds = %296, %294
  %299 = phi float [ %295, %294 ], [ %297, %296 ]
  %300 = fpext float %299 to double
  %301 = load float, ptr %70, align 4, !tbaa !11
  %302 = load float, ptr %75, align 4, !tbaa !11
  %303 = fcmp ole float %301, %302
  br i1 %303, label %304, label %306

304:                                              ; preds = %298
  %305 = load float, ptr %70, align 4, !tbaa !11
  br label %308

306:                                              ; preds = %298
  %307 = load float, ptr %75, align 4, !tbaa !11
  br label %308

308:                                              ; preds = %306, %304
  %309 = phi float [ %305, %304 ], [ %307, %306 ]
  %310 = fpext float %309 to double
  %311 = fdiv double %300, %310
  %312 = fptrunc double %311 to float
  store float %312, ptr %71, align 4, !tbaa !11
  br label %314

313:                                              ; preds = %286
  store float 1.000000e+00, ptr %71, align 4, !tbaa !11
  br label %314

314:                                              ; preds = %313, %308
  br label %315

315:                                              ; preds = %314, %284
  br label %316

316:                                              ; preds = %315, %234
  %317 = load ptr, ptr %51, align 8, !tbaa !5
  %318 = load i64, ptr %317, align 8, !tbaa !9
  %319 = icmp eq i64 %318, 0
  br i1 %319, label %320, label %352

320:                                              ; preds = %316
  %321 = load ptr, ptr %38, align 8, !tbaa !5
  %322 = load i64, ptr %321, align 8, !tbaa !9
  %323 = load ptr, ptr %29, align 8, !tbaa !5
  %324 = load i64, ptr %323, align 8, !tbaa !9
  %325 = icmp sge i64 1, %324
  br i1 %325, label %326, label %327

326:                                              ; preds = %320
  br label %330

327:                                              ; preds = %320
  %328 = load ptr, ptr %29, align 8, !tbaa !5
  %329 = load i64, ptr %328, align 8, !tbaa !9
  br label %330

330:                                              ; preds = %327, %326
  %331 = phi i64 [ 1, %326 ], [ %329, %327 ]
  %332 = icmp slt i64 %322, %331
  br i1 %332, label %333, label %335

333:                                              ; preds = %330
  %334 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -12, ptr %334, align 8, !tbaa !9
  br label %351

335:                                              ; preds = %330
  %336 = load ptr, ptr %40, align 8, !tbaa !5
  %337 = load i64, ptr %336, align 8, !tbaa !9
  %338 = load ptr, ptr %29, align 8, !tbaa !5
  %339 = load i64, ptr %338, align 8, !tbaa !9
  %340 = icmp sge i64 1, %339
  br i1 %340, label %341, label %342

341:                                              ; preds = %335
  br label %345

342:                                              ; preds = %335
  %343 = load ptr, ptr %29, align 8, !tbaa !5
  %344 = load i64, ptr %343, align 8, !tbaa !9
  br label %345

345:                                              ; preds = %342, %341
  %346 = phi i64 [ 1, %341 ], [ %344, %342 ]
  %347 = icmp slt i64 %337, %346
  br i1 %347, label %348, label %350

348:                                              ; preds = %345
  %349 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -14, ptr %349, align 8, !tbaa !9
  br label %350

350:                                              ; preds = %348, %345
  br label %351

351:                                              ; preds = %350, %333
  br label %352

352:                                              ; preds = %351, %316
  br label %353

353:                                              ; preds = %352, %232
  br label %354

354:                                              ; preds = %353, %219
  br label %355

355:                                              ; preds = %354, %204
  br label %356

356:                                              ; preds = %355, %189
  br label %357

357:                                              ; preds = %356, %183
  br label %358

358:                                              ; preds = %357, %177
  br label %359

359:                                              ; preds = %358, %167
  %360 = load ptr, ptr %51, align 8, !tbaa !5
  %361 = load i64, ptr %360, align 8, !tbaa !9
  %362 = icmp ne i64 %361, 0
  br i1 %362, label %363, label %368

363:                                              ; preds = %359
  %364 = load ptr, ptr %51, align 8, !tbaa !5
  %365 = load i64, ptr %364, align 8, !tbaa !9
  %366 = sub nsw i64 0, %365
  store i64 %366, ptr %64, align 8, !tbaa !9
  %367 = call i32 @xerbla_(ptr noundef @.str.7, ptr noundef %64)
  store i32 0, ptr %26, align 4
  store i32 1, ptr %78, align 4
  br label %550

368:                                              ; preds = %359
  %369 = load i64, ptr %72, align 8, !tbaa !9
  %370 = icmp ne i64 %369, 0
  br i1 %370, label %371, label %396

371:                                              ; preds = %368
  %372 = load ptr, ptr %29, align 8, !tbaa !5
  %373 = load ptr, ptr %31, align 8, !tbaa !5
  %374 = load i64, ptr %53, align 8, !tbaa !9
  %375 = getelementptr inbounds %struct.complex, ptr %373, i64 %374
  %376 = load ptr, ptr %32, align 8, !tbaa !5
  %377 = load ptr, ptr %36, align 8, !tbaa !5
  %378 = getelementptr inbounds float, ptr %377, i64 1
  %379 = call i32 @cpoequb_(ptr noundef %372, ptr noundef %375, ptr noundef %376, ptr noundef %378, ptr noundef %71, ptr noundef %68, ptr noundef %76)
  %380 = load i64, ptr %76, align 8, !tbaa !9
  %381 = icmp eq i64 %380, 0
  br i1 %381, label %382, label %395

382:                                              ; preds = %371
  %383 = load ptr, ptr %28, align 8, !tbaa !5
  %384 = load ptr, ptr %29, align 8, !tbaa !5
  %385 = load ptr, ptr %31, align 8, !tbaa !5
  %386 = load i64, ptr %53, align 8, !tbaa !9
  %387 = getelementptr inbounds %struct.complex, ptr %385, i64 %386
  %388 = load ptr, ptr %32, align 8, !tbaa !5
  %389 = load ptr, ptr %36, align 8, !tbaa !5
  %390 = getelementptr inbounds float, ptr %389, i64 1
  %391 = load ptr, ptr %35, align 8, !tbaa !5
  %392 = call i32 @claqhe_(ptr noundef %383, ptr noundef %384, ptr noundef %387, ptr noundef %388, ptr noundef %390, ptr noundef %71, ptr noundef %68, ptr noundef %391)
  %393 = load ptr, ptr %35, align 8, !tbaa !5
  %394 = call i64 @lsame_(ptr noundef %393, ptr noundef @.str.3)
  store i64 %394, ptr %73, align 8, !tbaa !9
  br label %395

395:                                              ; preds = %382, %371
  br label %396

396:                                              ; preds = %395, %368
  %397 = load i64, ptr %73, align 8, !tbaa !9
  %398 = icmp ne i64 %397, 0
  br i1 %398, label %399, label %409

399:                                              ; preds = %396
  %400 = load ptr, ptr %29, align 8, !tbaa !5
  %401 = load ptr, ptr %30, align 8, !tbaa !5
  %402 = load ptr, ptr %36, align 8, !tbaa !5
  %403 = getelementptr inbounds float, ptr %402, i64 1
  %404 = load ptr, ptr %37, align 8, !tbaa !5
  %405 = load i64, ptr %57, align 8, !tbaa !9
  %406 = getelementptr inbounds %struct.complex, ptr %404, i64 %405
  %407 = load ptr, ptr %38, align 8, !tbaa !5
  %408 = call i32 @clascl2_(ptr noundef %400, ptr noundef %401, ptr noundef %403, ptr noundef %406, ptr noundef %407)
  br label %409

409:                                              ; preds = %399, %396
  %410 = load i64, ptr %74, align 8, !tbaa !9
  %411 = icmp ne i64 %410, 0
  br i1 %411, label %415, label %412

412:                                              ; preds = %409
  %413 = load i64, ptr %72, align 8, !tbaa !9
  %414 = icmp ne i64 %413, 0
  br i1 %414, label %415, label %456

415:                                              ; preds = %412, %409
  %416 = load ptr, ptr %28, align 8, !tbaa !5
  %417 = load ptr, ptr %29, align 8, !tbaa !5
  %418 = load ptr, ptr %29, align 8, !tbaa !5
  %419 = load ptr, ptr %31, align 8, !tbaa !5
  %420 = load i64, ptr %53, align 8, !tbaa !9
  %421 = getelementptr inbounds %struct.complex, ptr %419, i64 %420
  %422 = load ptr, ptr %32, align 8, !tbaa !5
  %423 = load ptr, ptr %33, align 8, !tbaa !5
  %424 = load i64, ptr %55, align 8, !tbaa !9
  %425 = getelementptr inbounds %struct.complex, ptr %423, i64 %424
  %426 = load ptr, ptr %34, align 8, !tbaa !5
  %427 = call i32 @clacpy_(ptr noundef %416, ptr noundef %417, ptr noundef %418, ptr noundef %421, ptr noundef %422, ptr noundef %425, ptr noundef %426)
  %428 = load ptr, ptr %28, align 8, !tbaa !5
  %429 = load ptr, ptr %29, align 8, !tbaa !5
  %430 = load ptr, ptr %33, align 8, !tbaa !5
  %431 = load i64, ptr %55, align 8, !tbaa !9
  %432 = getelementptr inbounds %struct.complex, ptr %430, i64 %431
  %433 = load ptr, ptr %34, align 8, !tbaa !5
  %434 = load ptr, ptr %51, align 8, !tbaa !5
  %435 = call i32 @cpotrf_(ptr noundef %428, ptr noundef %429, ptr noundef %432, ptr noundef %433, ptr noundef %434)
  %436 = load ptr, ptr %51, align 8, !tbaa !5
  %437 = load i64, ptr %436, align 8, !tbaa !9
  %438 = icmp sgt i64 %437, 0
  br i1 %438, label %439, label %455

439:                                              ; preds = %415
  %440 = load ptr, ptr %28, align 8, !tbaa !5
  %441 = load ptr, ptr %29, align 8, !tbaa !5
  %442 = load ptr, ptr %31, align 8, !tbaa !5
  %443 = load i64, ptr %53, align 8, !tbaa !9
  %444 = getelementptr inbounds %struct.complex, ptr %442, i64 %443
  %445 = load ptr, ptr %32, align 8, !tbaa !5
  %446 = load ptr, ptr %33, align 8, !tbaa !5
  %447 = load i64, ptr %55, align 8, !tbaa !9
  %448 = getelementptr inbounds %struct.complex, ptr %446, i64 %447
  %449 = load ptr, ptr %34, align 8, !tbaa !5
  %450 = load ptr, ptr %50, align 8, !tbaa !5
  %451 = getelementptr inbounds float, ptr %450, i64 1
  %452 = call double @cla_porpvgrw__(ptr noundef %440, ptr noundef %441, ptr noundef %444, ptr noundef %445, ptr noundef %448, ptr noundef %449, ptr noundef %451, i64 noundef 1)
  %453 = fptrunc double %452 to float
  %454 = load ptr, ptr %42, align 8, !tbaa !5
  store float %453, ptr %454, align 4, !tbaa !11
  store i32 0, ptr %26, align 4
  store i32 1, ptr %78, align 4
  br label %550

455:                                              ; preds = %415
  br label %456

456:                                              ; preds = %455, %412
  %457 = load ptr, ptr %28, align 8, !tbaa !5
  %458 = load ptr, ptr %29, align 8, !tbaa !5
  %459 = load ptr, ptr %31, align 8, !tbaa !5
  %460 = load i64, ptr %53, align 8, !tbaa !9
  %461 = getelementptr inbounds %struct.complex, ptr %459, i64 %460
  %462 = load ptr, ptr %32, align 8, !tbaa !5
  %463 = load ptr, ptr %33, align 8, !tbaa !5
  %464 = load i64, ptr %55, align 8, !tbaa !9
  %465 = getelementptr inbounds %struct.complex, ptr %463, i64 %464
  %466 = load ptr, ptr %34, align 8, !tbaa !5
  %467 = load ptr, ptr %50, align 8, !tbaa !5
  %468 = getelementptr inbounds float, ptr %467, i64 1
  %469 = call double @cla_porpvgrw__(ptr noundef %457, ptr noundef %458, ptr noundef %461, ptr noundef %462, ptr noundef %465, ptr noundef %466, ptr noundef %468, i64 noundef 1)
  %470 = fptrunc double %469 to float
  %471 = load ptr, ptr %42, align 8, !tbaa !5
  store float %470, ptr %471, align 4, !tbaa !11
  %472 = load ptr, ptr %29, align 8, !tbaa !5
  %473 = load ptr, ptr %30, align 8, !tbaa !5
  %474 = load ptr, ptr %37, align 8, !tbaa !5
  %475 = load i64, ptr %57, align 8, !tbaa !9
  %476 = getelementptr inbounds %struct.complex, ptr %474, i64 %475
  %477 = load ptr, ptr %38, align 8, !tbaa !5
  %478 = load ptr, ptr %39, align 8, !tbaa !5
  %479 = load i64, ptr %59, align 8, !tbaa !9
  %480 = getelementptr inbounds %struct.complex, ptr %478, i64 %479
  %481 = load ptr, ptr %40, align 8, !tbaa !5
  %482 = call i32 @clacpy_(ptr noundef @.str.8, ptr noundef %472, ptr noundef %473, ptr noundef %476, ptr noundef %477, ptr noundef %480, ptr noundef %481)
  %483 = load ptr, ptr %28, align 8, !tbaa !5
  %484 = load ptr, ptr %29, align 8, !tbaa !5
  %485 = load ptr, ptr %30, align 8, !tbaa !5
  %486 = load ptr, ptr %33, align 8, !tbaa !5
  %487 = load i64, ptr %55, align 8, !tbaa !9
  %488 = getelementptr inbounds %struct.complex, ptr %486, i64 %487
  %489 = load ptr, ptr %34, align 8, !tbaa !5
  %490 = load ptr, ptr %39, align 8, !tbaa !5
  %491 = load i64, ptr %59, align 8, !tbaa !9
  %492 = getelementptr inbounds %struct.complex, ptr %490, i64 %491
  %493 = load ptr, ptr %40, align 8, !tbaa !5
  %494 = load ptr, ptr %51, align 8, !tbaa !5
  %495 = call i32 @cpotrs_(ptr noundef %483, ptr noundef %484, ptr noundef %485, ptr noundef %488, ptr noundef %489, ptr noundef %492, ptr noundef %493, ptr noundef %494)
  %496 = load ptr, ptr %28, align 8, !tbaa !5
  %497 = load ptr, ptr %35, align 8, !tbaa !5
  %498 = load ptr, ptr %29, align 8, !tbaa !5
  %499 = load ptr, ptr %30, align 8, !tbaa !5
  %500 = load ptr, ptr %31, align 8, !tbaa !5
  %501 = load i64, ptr %53, align 8, !tbaa !9
  %502 = getelementptr inbounds %struct.complex, ptr %500, i64 %501
  %503 = load ptr, ptr %32, align 8, !tbaa !5
  %504 = load ptr, ptr %33, align 8, !tbaa !5
  %505 = load i64, ptr %55, align 8, !tbaa !9
  %506 = getelementptr inbounds %struct.complex, ptr %504, i64 %505
  %507 = load ptr, ptr %34, align 8, !tbaa !5
  %508 = load ptr, ptr %36, align 8, !tbaa !5
  %509 = getelementptr inbounds float, ptr %508, i64 1
  %510 = load ptr, ptr %37, align 8, !tbaa !5
  %511 = load i64, ptr %57, align 8, !tbaa !9
  %512 = getelementptr inbounds %struct.complex, ptr %510, i64 %511
  %513 = load ptr, ptr %38, align 8, !tbaa !5
  %514 = load ptr, ptr %39, align 8, !tbaa !5
  %515 = load i64, ptr %59, align 8, !tbaa !9
  %516 = getelementptr inbounds %struct.complex, ptr %514, i64 %515
  %517 = load ptr, ptr %40, align 8, !tbaa !5
  %518 = load ptr, ptr %41, align 8, !tbaa !5
  %519 = load ptr, ptr %43, align 8, !tbaa !5
  %520 = getelementptr inbounds float, ptr %519, i64 1
  %521 = load ptr, ptr %44, align 8, !tbaa !5
  %522 = load ptr, ptr %45, align 8, !tbaa !5
  %523 = load i64, ptr %61, align 8, !tbaa !9
  %524 = getelementptr inbounds float, ptr %522, i64 %523
  %525 = load ptr, ptr %46, align 8, !tbaa !5
  %526 = load i64, ptr %63, align 8, !tbaa !9
  %527 = getelementptr inbounds float, ptr %525, i64 %526
  %528 = load ptr, ptr %47, align 8, !tbaa !5
  %529 = load ptr, ptr %48, align 8, !tbaa !5
  %530 = getelementptr inbounds float, ptr %529, i64 1
  %531 = load ptr, ptr %49, align 8, !tbaa !5
  %532 = getelementptr inbounds %struct.complex, ptr %531, i64 1
  %533 = load ptr, ptr %50, align 8, !tbaa !5
  %534 = getelementptr inbounds float, ptr %533, i64 1
  %535 = load ptr, ptr %51, align 8, !tbaa !5
  %536 = call i32 @cporfsx_(ptr noundef %496, ptr noundef %497, ptr noundef %498, ptr noundef %499, ptr noundef %502, ptr noundef %503, ptr noundef %506, ptr noundef %507, ptr noundef %509, ptr noundef %512, ptr noundef %513, ptr noundef %516, ptr noundef %517, ptr noundef %518, ptr noundef %520, ptr noundef %521, ptr noundef %524, ptr noundef %527, ptr noundef %528, ptr noundef %530, ptr noundef %532, ptr noundef %534, ptr noundef %535)
  %537 = load i64, ptr %73, align 8, !tbaa !9
  %538 = icmp ne i64 %537, 0
  br i1 %538, label %539, label %549

539:                                              ; preds = %456
  %540 = load ptr, ptr %29, align 8, !tbaa !5
  %541 = load ptr, ptr %30, align 8, !tbaa !5
  %542 = load ptr, ptr %36, align 8, !tbaa !5
  %543 = getelementptr inbounds float, ptr %542, i64 1
  %544 = load ptr, ptr %39, align 8, !tbaa !5
  %545 = load i64, ptr %59, align 8, !tbaa !9
  %546 = getelementptr inbounds %struct.complex, ptr %544, i64 %545
  %547 = load ptr, ptr %40, align 8, !tbaa !5
  %548 = call i32 @clascl2_(ptr noundef %540, ptr noundef %541, ptr noundef %543, ptr noundef %546, ptr noundef %547)
  br label %549

549:                                              ; preds = %539, %456
  store i32 0, ptr %26, align 4
  store i32 1, ptr %78, align 4
  br label %550

550:                                              ; preds = %549, %439, %363
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #3
  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 8, 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
  %551 = load i32, ptr %26, align 4
  ret i32 %551
}

; 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 @cpoequb_(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 @clascl2_(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 @cla_porpvgrw__(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) #2

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

declare i32 @cporfsx_(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, 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, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = !{!7, !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"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"

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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @cposvxx_(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 nocapture noundef writeonly %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %24) local_unnamed_addr #0 {
  %26 = alloca i64, align 8
  %27 = alloca float, align 4
  %28 = alloca float, align 4
  %29 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #4
  %30 = getelementptr inbounds i8, ptr %9, i64 -4
  store i64 0, ptr %24, align 8, !tbaa !5
  %31 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %32 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %33 = tail call double @slamch_(ptr noundef nonnull @.str.2) #4
  %34 = fptrunc double %33 to float
  %35 = fdiv float 1.000000e+00, %34
  %36 = icmp ne i64 %31, 0
  %37 = icmp ne i64 %32, 0
  %or.cond = select i1 %36, i1 true, i1 %37
  br i1 %or.cond, label %.thread, label %38

.thread:                                          ; preds = %25
  store i8 78, ptr %8, align 1, !tbaa !9
  store float 0.000000e+00, ptr %15, align 4, !tbaa !10
  br label %41

38:                                               ; preds = %25
  %39 = tail call i64 @lsame_(ptr noundef %8, ptr noundef nonnull @.str.3) #4
  store float 0.000000e+00, ptr %15, align 4, !tbaa !10
  %40 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #4
  %.not = icmp eq i64 %40, 0
  br i1 %.not, label %.thread246.sink.split, label %41

41:                                               ; preds = %.thread, %38
  %.0222241 = phi i64 [ 0, %.thread ], [ %39, %38 ]
  %42 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.5) #4
  %.not230 = icmp eq i64 %42, 0
  br i1 %.not230, label %43, label %45

43:                                               ; preds = %41
  %44 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.6) #4
  %.not231 = icmp eq i64 %44, 0
  br i1 %.not231, label %.thread246.sink.split, label %45

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

48:                                               ; preds = %45
  %49 = load i64, ptr %3, align 8, !tbaa !5
  %50 = icmp slt i64 %49, 0
  br i1 %50, label %.thread246.sink.split, label %51

51:                                               ; preds = %48
  %52 = load i64, ptr %5, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %46, i64 1)
  %53 = icmp slt i64 %52, %spec.select
  br i1 %53, label %.thread246.sink.split, label %54

54:                                               ; preds = %51
  %55 = load i64, ptr %7, align 8, !tbaa !5
  %56 = icmp slt i64 %55, %spec.select
  br i1 %56, label %.thread246.sink.split, label %57

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

61:                                               ; preds = %57
  %62 = tail call i64 @lsame_(ptr noundef %8, ptr noundef nonnull @.str) #4
  %.not232 = icmp eq i64 %62, 0
  br i1 %.not232, label %.thread246.sink.split, label %.thread242

63:                                               ; preds = %57
  br i1 %60, label %64, label %.thread242

64:                                               ; preds = %63
  %65 = load i64, ptr %2, align 8, !tbaa !5
  %.not233249 = icmp slt i64 %65, 1
  br i1 %.not233249, label %._crit_edge, label %.lr.ph.preheader

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

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

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %.0223252 = phi float [ 0.000000e+00, %.lr.ph.preheader.new ], [ %78, %.lr.ph ]
  %.0224251 = phi float [ %35, %.lr.ph.preheader.new ], [ %76, %.lr.ph ]
  %.0225250 = phi i64 [ 1, %.lr.ph.preheader.new ], [ %79, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %67 = getelementptr inbounds float, ptr %30, i64 %.0225250
  %68 = load float, ptr %67, align 4, !tbaa !10
  %69 = fcmp ole float %.0224251, %68
  %70 = select i1 %69, float %.0224251, float %68
  %71 = fcmp oge float %.0223252, %68
  %72 = select i1 %71, float %.0223252, float %68
  %73 = getelementptr float, ptr %9, i64 %.0225250
  %74 = load float, ptr %73, align 4, !tbaa !10
  %75 = fcmp ole float %70, %74
  %76 = select i1 %75, float %70, float %74
  %77 = fcmp oge float %72, %74
  %78 = select i1 %77, float %72, float %74
  %79 = add nuw i64 %.0225250, 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
  %.lcssa257.ph = phi float [ poison, %.lr.ph.preheader ], [ %76, %.lr.ph ]
  %.lcssa.ph = phi float [ poison, %.lr.ph.preheader ], [ %78, %.lr.ph ]
  %.0223252.unr = phi float [ 0.000000e+00, %.lr.ph.preheader ], [ %78, %.lr.ph ]
  %.0224251.unr = phi float [ %35, %.lr.ph.preheader ], [ %76, %.lr.ph ]
  %.0225250.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %79, %.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
  %80 = getelementptr inbounds float, ptr %30, i64 %.0225250.unr
  %81 = load float, ptr %80, align 4, !tbaa !10
  %82 = fcmp ole float %.0224251.unr, %81
  %83 = select i1 %82, float %.0224251.unr, float %81
  %84 = fcmp oge float %.0223252.unr, %81
  %85 = select i1 %84, float %.0223252.unr, float %81
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %64
  %.0224.lcssa = phi float [ %35, %64 ], [ %.lcssa257.ph, %._crit_edge.loopexit.unr-lcssa ], [ %83, %.lr.ph.epil ]
  %.0223.lcssa = phi float [ 0.000000e+00, %64 ], [ %.lcssa.ph, %._crit_edge.loopexit.unr-lcssa ], [ %85, %.lr.ph.epil ]
  %86 = fcmp ugt float %.0224.lcssa, 0.000000e+00
  br i1 %86, label %87, label %.thread246.sink.split

87:                                               ; preds = %._crit_edge
  %88 = icmp sgt i64 %65, 0
  br i1 %88, label %89, label %95

89:                                               ; preds = %87
  %90 = fcmp oge float %.0224.lcssa, %34
  %91 = select i1 %90, float %.0224.lcssa, float %34
  %92 = fcmp ole float %.0223.lcssa, %35
  %93 = select i1 %92, float %.0223.lcssa, float %35
  %94 = fdiv float %91, %93
  store float %94, ptr %28, align 4, !tbaa !10
  br label %.thread242

95:                                               ; preds = %87
  store float 1.000000e+00, ptr %28, align 4, !tbaa !10
  br label %.thread242

.thread242:                                       ; preds = %61, %95, %89, %63
  %.pr = load i64, ptr %24, align 8, !tbaa !5
  %96 = icmp eq i64 %.pr, 0
  br i1 %96, label %97, label %.thread246

97:                                               ; preds = %.thread242
  %98 = load i64, ptr %11, align 8, !tbaa !5
  %99 = load i64, ptr %2, align 8, !tbaa !5
  %spec.select237 = tail call i64 @llvm.smax.i64(i64 %99, i64 1)
  %100 = icmp slt i64 %98, %spec.select237
  br i1 %100, label %.thread246.sink.split, label %101

101:                                              ; preds = %97
  %102 = load i64, ptr %13, align 8, !tbaa !5
  %103 = icmp slt i64 %102, %spec.select237
  br i1 %103, label %.thread246.sink.split, label %107

.thread246.sink.split:                            ; preds = %101, %97, %._crit_edge, %61, %54, %51, %48, %45, %43, %38
  %.sink = phi i64 [ -1, %38 ], [ -2, %43 ], [ -3, %45 ], [ -4, %48 ], [ -6, %51 ], [ -8, %54 ], [ -9, %61 ], [ -10, %._crit_edge ], [ -12, %97 ], [ -14, %101 ]
  store i64 %.sink, ptr %24, align 8, !tbaa !5
  br label %.thread246

.thread246:                                       ; preds = %.thread246.sink.split, %.thread242
  %104 = phi i64 [ %.pr, %.thread242 ], [ %.sink, %.thread246.sink.split ]
  %105 = sub nsw i64 0, %104
  store i64 %105, ptr %26, align 8, !tbaa !5
  %106 = call i32 @xerbla_(ptr noundef nonnull @.str.7, ptr noundef nonnull %26) #4
  br label %135

107:                                              ; preds = %101
  br i1 %37, label %108, label %115

108:                                              ; preds = %107
  %109 = call i32 @cpoequb_(ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %9, ptr noundef nonnull %28, ptr noundef nonnull %27, ptr noundef nonnull %29) #4
  %110 = load i64, ptr %29, align 8, !tbaa !5
  %111 = icmp eq i64 %110, 0
  br i1 %111, label %112, label %115

112:                                              ; preds = %108
  %113 = call i32 @claqhe_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %9, ptr noundef nonnull %28, ptr noundef nonnull %27, ptr noundef %8) #4
  %114 = call i64 @lsame_(ptr noundef %8, ptr noundef nonnull @.str.3) #4
  br label %115

115:                                              ; preds = %108, %112, %107
  %.1 = phi i64 [ %114, %112 ], [ %.0222241, %108 ], [ %.0222241, %107 ]
  %.not235 = icmp eq i64 %.1, 0
  br i1 %.not235, label %118, label %116

116:                                              ; preds = %115
  %117 = call i32 @clascl2_(ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %9, ptr noundef %10, ptr noundef nonnull %11) #4
  br label %118

118:                                              ; preds = %116, %115
  br i1 %or.cond, label %119, label %127

119:                                              ; preds = %118
  %120 = 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
  %121 = call i32 @cpotrf_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %24) #4
  %122 = load i64, ptr %24, align 8, !tbaa !5
  %123 = icmp sgt i64 %122, 0
  br i1 %123, label %124, label %127

124:                                              ; preds = %119
  %125 = call double @cla_porpvgrw__(ptr noundef %1, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %23, i64 noundef 1) #4
  %126 = fptrunc double %125 to float
  store float %126, ptr %15, align 4, !tbaa !10
  br label %135

127:                                              ; preds = %119, %118
  %128 = call double @cla_porpvgrw__(ptr noundef %1, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %23, i64 noundef 1) #4
  %129 = fptrunc double %128 to float
  store float %129, ptr %15, align 4, !tbaa !10
  %130 = call i32 @clacpy_(ptr noundef nonnull @.str.8, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13) #4
  %131 = 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 %24) #4
  %132 = call i32 @cporfsx_(ptr noundef %1, ptr noundef %8, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef nonnull %24) #4
  br i1 %.not235, label %135, label %133

133:                                              ; preds = %127
  %134 = call i32 @clascl2_(ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %9, ptr noundef %12, ptr noundef nonnull %13) #4
  br label %135

135:                                              ; preds = %127, %133, %124, %.thread246
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #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 @cpoequb_(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 @clascl2_(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 @cla_porpvgrw__(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 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 @cporfsx_(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, 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"}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass