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

; 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"

@.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 @sposvx_(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 float, align 4
  %53 = alloca float, align 4
  %54 = alloca i64, align 8
  %55 = alloca i64, align 8
  %56 = alloca float, align 4
  %57 = alloca float, align 4
  %58 = alloca float, align 4
  %59 = alloca float, align 4
  %60 = alloca float, align 4
  %61 = alloca i64, align 8
  %62 = alloca i64, align 8
  %63 = alloca i64, align 8
  %64 = alloca float, align 4
  %65 = alloca i64, align 8
  %66 = alloca float, align 4
  %67 = 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 4, ptr %52) #3
  call void @llvm.lifetime.start.p0(i64 4, 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 4, ptr %56) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #3
  call void @llvm.lifetime.start.p0(i64 4, 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 4, ptr %64) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #3
  %68 = load ptr, ptr %27, align 8, !tbaa !5
  %69 = load i64, ptr %68, align 8, !tbaa !9
  store i64 %69, ptr %42, align 8, !tbaa !9
  %70 = load i64, ptr %42, align 8, !tbaa !9
  %71 = add nsw i64 1, %70
  store i64 %71, ptr %43, align 8, !tbaa !9
  %72 = load i64, ptr %43, align 8, !tbaa !9
  %73 = load ptr, ptr %26, align 8, !tbaa !5
  %74 = sub i64 0, %72
  %75 = getelementptr inbounds float, ptr %73, i64 %74
  store ptr %75, ptr %26, align 8, !tbaa !5
  %76 = load ptr, ptr %29, align 8, !tbaa !5
  %77 = load i64, ptr %76, align 8, !tbaa !9
  store i64 %77, ptr %44, align 8, !tbaa !9
  %78 = load i64, ptr %44, align 8, !tbaa !9
  %79 = add nsw i64 1, %78
  store i64 %79, ptr %45, align 8, !tbaa !9
  %80 = load i64, ptr %45, align 8, !tbaa !9
  %81 = load ptr, ptr %28, align 8, !tbaa !5
  %82 = sub i64 0, %80
  %83 = getelementptr inbounds float, ptr %81, i64 %82
  store ptr %83, ptr %28, align 8, !tbaa !5
  %84 = load ptr, ptr %31, align 8, !tbaa !5
  %85 = getelementptr inbounds float, ptr %84, i32 -1
  store ptr %85, ptr %31, align 8, !tbaa !5
  %86 = load ptr, ptr %33, align 8, !tbaa !5
  %87 = load i64, ptr %86, align 8, !tbaa !9
  store i64 %87, ptr %46, align 8, !tbaa !9
  %88 = load i64, ptr %46, align 8, !tbaa !9
  %89 = add nsw i64 1, %88
  store i64 %89, ptr %47, align 8, !tbaa !9
  %90 = load i64, ptr %47, align 8, !tbaa !9
  %91 = load ptr, ptr %32, align 8, !tbaa !5
  %92 = sub i64 0, %90
  %93 = getelementptr inbounds float, ptr %91, i64 %92
  store ptr %93, ptr %32, align 8, !tbaa !5
  %94 = load ptr, ptr %35, align 8, !tbaa !5
  %95 = load i64, ptr %94, align 8, !tbaa !9
  store i64 %95, ptr %48, align 8, !tbaa !9
  %96 = load i64, ptr %48, align 8, !tbaa !9
  %97 = add nsw i64 1, %96
  store i64 %97, ptr %49, align 8, !tbaa !9
  %98 = load i64, ptr %49, align 8, !tbaa !9
  %99 = load ptr, ptr %34, align 8, !tbaa !5
  %100 = sub i64 0, %98
  %101 = getelementptr inbounds float, ptr %99, i64 %100
  store ptr %101, ptr %34, align 8, !tbaa !5
  %102 = load ptr, ptr %37, align 8, !tbaa !5
  %103 = getelementptr inbounds float, ptr %102, i32 -1
  store ptr %103, ptr %37, align 8, !tbaa !5
  %104 = load ptr, ptr %38, align 8, !tbaa !5
  %105 = getelementptr inbounds float, ptr %104, i32 -1
  store ptr %105, ptr %38, align 8, !tbaa !5
  %106 = load ptr, ptr %39, align 8, !tbaa !5
  %107 = getelementptr inbounds float, ptr %106, i32 -1
  store ptr %107, ptr %39, align 8, !tbaa !5
  %108 = load ptr, ptr %40, align 8, !tbaa !5
  %109 = getelementptr inbounds i64, ptr %108, i32 -1
  store ptr %109, ptr %40, align 8, !tbaa !5
  %110 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 0, ptr %110, align 8, !tbaa !9
  %111 = load ptr, ptr %22, align 8, !tbaa !5
  %112 = call i64 @lsame_(ptr noundef %111, ptr noundef @.str)
  store i64 %112, ptr %63, align 8, !tbaa !9
  %113 = load ptr, ptr %22, align 8, !tbaa !5
  %114 = call i64 @lsame_(ptr noundef %113, ptr noundef @.str.1)
  store i64 %114, ptr %61, align 8, !tbaa !9
  %115 = load i64, ptr %63, align 8, !tbaa !9
  %116 = icmp ne i64 %115, 0
  br i1 %116, label %120, label %117

117:                                              ; preds = %20
  %118 = load i64, ptr %61, align 8, !tbaa !9
  %119 = icmp ne i64 %118, 0
  br i1 %119, label %120, label %122

120:                                              ; preds = %117, %20
  %121 = load ptr, ptr %30, align 8, !tbaa !5
  store i8 78, ptr %121, align 1, !tbaa !11
  store i64 0, ptr %62, align 8, !tbaa !9
  br label %129

122:                                              ; preds = %117
  %123 = load ptr, ptr %30, align 8, !tbaa !5
  %124 = call i64 @lsame_(ptr noundef %123, ptr noundef @.str.2)
  store i64 %124, ptr %62, align 8, !tbaa !9
  %125 = call double @slamch_(ptr noundef @.str.3)
  %126 = fptrunc double %125 to float
  store float %126, ptr %66, align 4, !tbaa !12
  %127 = load float, ptr %66, align 4, !tbaa !12
  %128 = fdiv float 1.000000e+00, %127
  store float %128, ptr %64, align 4, !tbaa !12
  br label %129

129:                                              ; preds = %122, %120
  %130 = load i64, ptr %63, align 8, !tbaa !9
  %131 = icmp ne i64 %130, 0
  br i1 %131, label %141, label %132

132:                                              ; preds = %129
  %133 = load i64, ptr %61, align 8, !tbaa !9
  %134 = icmp ne i64 %133, 0
  br i1 %134, label %141, label %135

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

139:                                              ; preds = %135
  %140 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -1, ptr %140, align 8, !tbaa !9
  br label %331

141:                                              ; preds = %135, %132, %129
  %142 = load ptr, ptr %23, align 8, !tbaa !5
  %143 = call i64 @lsame_(ptr noundef %142, ptr noundef @.str.5)
  %144 = icmp ne i64 %143, 0
  br i1 %144, label %151, label %145

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

149:                                              ; preds = %145
  %150 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -2, ptr %150, align 8, !tbaa !9
  br label %330

151:                                              ; preds = %145, %141
  %152 = load ptr, ptr %24, align 8, !tbaa !5
  %153 = load i64, ptr %152, align 8, !tbaa !9
  %154 = icmp slt i64 %153, 0
  br i1 %154, label %155, label %157

155:                                              ; preds = %151
  %156 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -3, ptr %156, align 8, !tbaa !9
  br label %329

157:                                              ; preds = %151
  %158 = load ptr, ptr %25, align 8, !tbaa !5
  %159 = load i64, ptr %158, align 8, !tbaa !9
  %160 = icmp slt i64 %159, 0
  br i1 %160, label %161, label %163

161:                                              ; preds = %157
  %162 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -4, ptr %162, align 8, !tbaa !9
  br label %328

163:                                              ; preds = %157
  %164 = load ptr, ptr %27, align 8, !tbaa !5
  %165 = load i64, ptr %164, align 8, !tbaa !9
  %166 = load ptr, ptr %24, align 8, !tbaa !5
  %167 = load i64, ptr %166, align 8, !tbaa !9
  %168 = icmp sge i64 1, %167
  br i1 %168, label %169, label %170

169:                                              ; preds = %163
  br label %173

170:                                              ; preds = %163
  %171 = load ptr, ptr %24, align 8, !tbaa !5
  %172 = load i64, ptr %171, align 8, !tbaa !9
  br label %173

173:                                              ; preds = %170, %169
  %174 = phi i64 [ 1, %169 ], [ %172, %170 ]
  %175 = icmp slt i64 %165, %174
  br i1 %175, label %176, label %178

176:                                              ; preds = %173
  %177 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -6, ptr %177, align 8, !tbaa !9
  br label %327

178:                                              ; preds = %173
  %179 = load ptr, ptr %29, align 8, !tbaa !5
  %180 = load i64, ptr %179, align 8, !tbaa !9
  %181 = load ptr, ptr %24, align 8, !tbaa !5
  %182 = load i64, ptr %181, align 8, !tbaa !9
  %183 = icmp sge i64 1, %182
  br i1 %183, label %184, label %185

184:                                              ; preds = %178
  br label %188

185:                                              ; preds = %178
  %186 = load ptr, ptr %24, align 8, !tbaa !5
  %187 = load i64, ptr %186, align 8, !tbaa !9
  br label %188

188:                                              ; preds = %185, %184
  %189 = phi i64 [ 1, %184 ], [ %187, %185 ]
  %190 = icmp slt i64 %180, %189
  br i1 %190, label %191, label %193

191:                                              ; preds = %188
  %192 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -8, ptr %192, align 8, !tbaa !9
  br label %326

193:                                              ; preds = %188
  %194 = load ptr, ptr %22, align 8, !tbaa !5
  %195 = call i64 @lsame_(ptr noundef %194, ptr noundef @.str.4)
  %196 = icmp ne i64 %195, 0
  br i1 %196, label %197, label %206

197:                                              ; preds = %193
  %198 = load i64, ptr %62, align 8, !tbaa !9
  %199 = icmp ne i64 %198, 0
  br i1 %199, label %206, label %200

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

204:                                              ; preds = %200
  %205 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -9, ptr %205, align 8, !tbaa !9
  br label %325

206:                                              ; preds = %200, %197, %193
  %207 = load i64, ptr %62, align 8, !tbaa !9
  %208 = icmp ne i64 %207, 0
  br i1 %208, label %209, label %288

209:                                              ; preds = %206
  %210 = load float, ptr %64, align 4, !tbaa !12
  store float %210, ptr %57, align 4, !tbaa !12
  store float 0.000000e+00, ptr %58, align 4, !tbaa !12
  %211 = load ptr, ptr %24, align 8, !tbaa !5
  %212 = load i64, ptr %211, align 8, !tbaa !9
  store i64 %212, ptr %50, align 8, !tbaa !9
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %213

213:                                              ; preds = %250, %209
  %214 = load i64, ptr %55, align 8, !tbaa !9
  %215 = load i64, ptr %50, align 8, !tbaa !9
  %216 = icmp sle i64 %214, %215
  br i1 %216, label %217, label %253

217:                                              ; preds = %213
  %218 = load float, ptr %57, align 4, !tbaa !12
  store float %218, ptr %52, align 4, !tbaa !12
  %219 = load ptr, ptr %31, align 8, !tbaa !5
  %220 = load i64, ptr %55, align 8, !tbaa !9
  %221 = getelementptr inbounds float, ptr %219, i64 %220
  %222 = load float, ptr %221, align 4, !tbaa !12
  store float %222, ptr %53, align 4, !tbaa !12
  %223 = load float, ptr %52, align 4, !tbaa !12
  %224 = load float, ptr %53, align 4, !tbaa !12
  %225 = fcmp ole float %223, %224
  br i1 %225, label %226, label %228

226:                                              ; preds = %217
  %227 = load float, ptr %52, align 4, !tbaa !12
  br label %230

228:                                              ; preds = %217
  %229 = load float, ptr %53, align 4, !tbaa !12
  br label %230

230:                                              ; preds = %228, %226
  %231 = phi float [ %227, %226 ], [ %229, %228 ]
  %232 = fpext float %231 to double
  %233 = fptrunc double %232 to float
  store float %233, ptr %57, align 4, !tbaa !12
  %234 = load float, ptr %58, align 4, !tbaa !12
  store float %234, ptr %52, align 4, !tbaa !12
  %235 = load ptr, ptr %31, align 8, !tbaa !5
  %236 = load i64, ptr %55, align 8, !tbaa !9
  %237 = getelementptr inbounds float, ptr %235, i64 %236
  %238 = load float, ptr %237, align 4, !tbaa !12
  store float %238, ptr %53, align 4, !tbaa !12
  %239 = load float, ptr %52, align 4, !tbaa !12
  %240 = load float, ptr %53, align 4, !tbaa !12
  %241 = fcmp oge float %239, %240
  br i1 %241, label %242, label %244

242:                                              ; preds = %230
  %243 = load float, ptr %52, align 4, !tbaa !12
  br label %246

244:                                              ; preds = %230
  %245 = load float, ptr %53, align 4, !tbaa !12
  br label %246

246:                                              ; preds = %244, %242
  %247 = phi float [ %243, %242 ], [ %245, %244 ]
  %248 = fpext float %247 to double
  %249 = fptrunc double %248 to float
  store float %249, ptr %58, align 4, !tbaa !12
  br label %250

250:                                              ; preds = %246
  %251 = load i64, ptr %55, align 8, !tbaa !9
  %252 = add nsw i64 %251, 1
  store i64 %252, ptr %55, align 8, !tbaa !9
  br label %213, !llvm.loop !14

253:                                              ; preds = %213
  %254 = load float, ptr %57, align 4, !tbaa !12
  %255 = fcmp ole float %254, 0.000000e+00
  br i1 %255, label %256, label %258

256:                                              ; preds = %253
  %257 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -10, ptr %257, align 8, !tbaa !9
  br label %287

258:                                              ; preds = %253
  %259 = load ptr, ptr %24, align 8, !tbaa !5
  %260 = load i64, ptr %259, align 8, !tbaa !9
  %261 = icmp sgt i64 %260, 0
  br i1 %261, label %262, label %285

262:                                              ; preds = %258
  %263 = load float, ptr %57, align 4, !tbaa !12
  %264 = load float, ptr %66, align 4, !tbaa !12
  %265 = fcmp oge float %263, %264
  br i1 %265, label %266, label %268

266:                                              ; preds = %262
  %267 = load float, ptr %57, align 4, !tbaa !12
  br label %270

268:                                              ; preds = %262
  %269 = load float, ptr %66, align 4, !tbaa !12
  br label %270

270:                                              ; preds = %268, %266
  %271 = phi float [ %267, %266 ], [ %269, %268 ]
  %272 = fpext float %271 to double
  %273 = load float, ptr %58, align 4, !tbaa !12
  %274 = load float, ptr %64, align 4, !tbaa !12
  %275 = fcmp ole float %273, %274
  br i1 %275, label %276, label %278

276:                                              ; preds = %270
  %277 = load float, ptr %58, align 4, !tbaa !12
  br label %280

278:                                              ; preds = %270
  %279 = load float, ptr %64, align 4, !tbaa !12
  br label %280

280:                                              ; preds = %278, %276
  %281 = phi float [ %277, %276 ], [ %279, %278 ]
  %282 = fpext float %281 to double
  %283 = fdiv double %272, %282
  %284 = fptrunc double %283 to float
  store float %284, ptr %59, align 4, !tbaa !12
  br label %286

285:                                              ; preds = %258
  store float 1.000000e+00, ptr %59, align 4, !tbaa !12
  br label %286

286:                                              ; preds = %285, %280
  br label %287

287:                                              ; preds = %286, %256
  br label %288

288:                                              ; preds = %287, %206
  %289 = load ptr, ptr %41, align 8, !tbaa !5
  %290 = load i64, ptr %289, align 8, !tbaa !9
  %291 = icmp eq i64 %290, 0
  br i1 %291, label %292, label %324

292:                                              ; preds = %288
  %293 = load ptr, ptr %33, align 8, !tbaa !5
  %294 = load i64, ptr %293, align 8, !tbaa !9
  %295 = load ptr, ptr %24, align 8, !tbaa !5
  %296 = load i64, ptr %295, align 8, !tbaa !9
  %297 = icmp sge i64 1, %296
  br i1 %297, label %298, label %299

298:                                              ; preds = %292
  br label %302

299:                                              ; preds = %292
  %300 = load ptr, ptr %24, align 8, !tbaa !5
  %301 = load i64, ptr %300, align 8, !tbaa !9
  br label %302

302:                                              ; preds = %299, %298
  %303 = phi i64 [ 1, %298 ], [ %301, %299 ]
  %304 = icmp slt i64 %294, %303
  br i1 %304, label %305, label %307

305:                                              ; preds = %302
  %306 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -12, ptr %306, align 8, !tbaa !9
  br label %323

307:                                              ; preds = %302
  %308 = load ptr, ptr %35, align 8, !tbaa !5
  %309 = load i64, ptr %308, align 8, !tbaa !9
  %310 = load ptr, ptr %24, align 8, !tbaa !5
  %311 = load i64, ptr %310, align 8, !tbaa !9
  %312 = icmp sge i64 1, %311
  br i1 %312, label %313, label %314

313:                                              ; preds = %307
  br label %317

314:                                              ; preds = %307
  %315 = load ptr, ptr %24, align 8, !tbaa !5
  %316 = load i64, ptr %315, align 8, !tbaa !9
  br label %317

317:                                              ; preds = %314, %313
  %318 = phi i64 [ 1, %313 ], [ %316, %314 ]
  %319 = icmp slt i64 %309, %318
  br i1 %319, label %320, label %322

320:                                              ; preds = %317
  %321 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -14, ptr %321, align 8, !tbaa !9
  br label %322

322:                                              ; preds = %320, %317
  br label %323

323:                                              ; preds = %322, %305
  br label %324

324:                                              ; preds = %323, %288
  br label %325

325:                                              ; preds = %324, %204
  br label %326

326:                                              ; preds = %325, %191
  br label %327

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

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

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

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

331:                                              ; preds = %330, %139
  %332 = load ptr, ptr %41, align 8, !tbaa !5
  %333 = load i64, ptr %332, align 8, !tbaa !9
  %334 = icmp ne i64 %333, 0
  br i1 %334, label %335, label %340

335:                                              ; preds = %331
  %336 = load ptr, ptr %41, align 8, !tbaa !5
  %337 = load i64, ptr %336, align 8, !tbaa !9
  %338 = sub nsw i64 0, %337
  store i64 %338, ptr %50, align 8, !tbaa !9
  %339 = call i32 @xerbla_(ptr noundef @.str.7, ptr noundef %50)
  store i32 0, ptr %21, align 4
  store i32 1, ptr %67, align 4
  br label %598

340:                                              ; preds = %331
  %341 = load i64, ptr %61, align 8, !tbaa !9
  %342 = icmp ne i64 %341, 0
  br i1 %342, label %343, label %368

343:                                              ; preds = %340
  %344 = load ptr, ptr %24, align 8, !tbaa !5
  %345 = load ptr, ptr %26, align 8, !tbaa !5
  %346 = load i64, ptr %43, align 8, !tbaa !9
  %347 = getelementptr inbounds float, ptr %345, i64 %346
  %348 = load ptr, ptr %27, align 8, !tbaa !5
  %349 = load ptr, ptr %31, align 8, !tbaa !5
  %350 = getelementptr inbounds float, ptr %349, i64 1
  %351 = call i32 @spoequ_(ptr noundef %344, ptr noundef %347, ptr noundef %348, ptr noundef %350, ptr noundef %59, ptr noundef %56, ptr noundef %65)
  %352 = load i64, ptr %65, align 8, !tbaa !9
  %353 = icmp eq i64 %352, 0
  br i1 %353, label %354, label %367

354:                                              ; preds = %343
  %355 = load ptr, ptr %23, align 8, !tbaa !5
  %356 = load ptr, ptr %24, align 8, !tbaa !5
  %357 = load ptr, ptr %26, align 8, !tbaa !5
  %358 = load i64, ptr %43, align 8, !tbaa !9
  %359 = getelementptr inbounds float, ptr %357, i64 %358
  %360 = load ptr, ptr %27, align 8, !tbaa !5
  %361 = load ptr, ptr %31, align 8, !tbaa !5
  %362 = getelementptr inbounds float, ptr %361, i64 1
  %363 = load ptr, ptr %30, align 8, !tbaa !5
  %364 = call i32 @slaqsy_(ptr noundef %355, ptr noundef %356, ptr noundef %359, ptr noundef %360, ptr noundef %362, ptr noundef %59, ptr noundef %56, ptr noundef %363)
  %365 = load ptr, ptr %30, align 8, !tbaa !5
  %366 = call i64 @lsame_(ptr noundef %365, ptr noundef @.str.2)
  store i64 %366, ptr %62, align 8, !tbaa !9
  br label %367

367:                                              ; preds = %354, %343
  br label %368

368:                                              ; preds = %367, %340
  %369 = load i64, ptr %62, align 8, !tbaa !9
  %370 = icmp ne i64 %369, 0
  br i1 %370, label %371, label %414

371:                                              ; preds = %368
  %372 = load ptr, ptr %25, align 8, !tbaa !5
  %373 = load i64, ptr %372, align 8, !tbaa !9
  store i64 %373, ptr %50, align 8, !tbaa !9
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %374

374:                                              ; preds = %410, %371
  %375 = load i64, ptr %55, align 8, !tbaa !9
  %376 = load i64, ptr %50, align 8, !tbaa !9
  %377 = icmp sle i64 %375, %376
  br i1 %377, label %378, label %413

378:                                              ; preds = %374
  %379 = load ptr, ptr %24, align 8, !tbaa !5
  %380 = load i64, ptr %379, align 8, !tbaa !9
  store i64 %380, ptr %51, align 8, !tbaa !9
  store i64 1, ptr %54, align 8, !tbaa !9
  br label %381

381:                                              ; preds = %406, %378
  %382 = load i64, ptr %54, align 8, !tbaa !9
  %383 = load i64, ptr %51, align 8, !tbaa !9
  %384 = icmp sle i64 %382, %383
  br i1 %384, label %385, label %409

385:                                              ; preds = %381
  %386 = load ptr, ptr %31, align 8, !tbaa !5
  %387 = load i64, ptr %54, align 8, !tbaa !9
  %388 = getelementptr inbounds float, ptr %386, i64 %387
  %389 = load float, ptr %388, align 4, !tbaa !12
  %390 = load ptr, ptr %32, align 8, !tbaa !5
  %391 = load i64, ptr %54, align 8, !tbaa !9
  %392 = load i64, ptr %55, align 8, !tbaa !9
  %393 = load i64, ptr %46, align 8, !tbaa !9
  %394 = mul nsw i64 %392, %393
  %395 = add nsw i64 %391, %394
  %396 = getelementptr inbounds float, ptr %390, i64 %395
  %397 = load float, ptr %396, align 4, !tbaa !12
  %398 = fmul float %389, %397
  %399 = load ptr, ptr %32, align 8, !tbaa !5
  %400 = load i64, ptr %54, align 8, !tbaa !9
  %401 = load i64, ptr %55, align 8, !tbaa !9
  %402 = load i64, ptr %46, align 8, !tbaa !9
  %403 = mul nsw i64 %401, %402
  %404 = add nsw i64 %400, %403
  %405 = getelementptr inbounds float, ptr %399, i64 %404
  store float %398, ptr %405, align 4, !tbaa !12
  br label %406

406:                                              ; preds = %385
  %407 = load i64, ptr %54, align 8, !tbaa !9
  %408 = add nsw i64 %407, 1
  store i64 %408, ptr %54, align 8, !tbaa !9
  br label %381, !llvm.loop !16

409:                                              ; preds = %381
  br label %410

410:                                              ; preds = %409
  %411 = load i64, ptr %55, align 8, !tbaa !9
  %412 = add nsw i64 %411, 1
  store i64 %412, ptr %55, align 8, !tbaa !9
  br label %374, !llvm.loop !17

413:                                              ; preds = %374
  br label %414

414:                                              ; preds = %413, %368
  %415 = load i64, ptr %63, align 8, !tbaa !9
  %416 = icmp ne i64 %415, 0
  br i1 %416, label %420, label %417

417:                                              ; preds = %414
  %418 = load i64, ptr %61, align 8, !tbaa !9
  %419 = icmp ne i64 %418, 0
  br i1 %419, label %420, label %447

420:                                              ; preds = %417, %414
  %421 = load ptr, ptr %23, align 8, !tbaa !5
  %422 = load ptr, ptr %24, align 8, !tbaa !5
  %423 = load ptr, ptr %24, align 8, !tbaa !5
  %424 = load ptr, ptr %26, align 8, !tbaa !5
  %425 = load i64, ptr %43, align 8, !tbaa !9
  %426 = getelementptr inbounds float, ptr %424, i64 %425
  %427 = load ptr, ptr %27, align 8, !tbaa !5
  %428 = load ptr, ptr %28, align 8, !tbaa !5
  %429 = load i64, ptr %45, align 8, !tbaa !9
  %430 = getelementptr inbounds float, ptr %428, i64 %429
  %431 = load ptr, ptr %29, align 8, !tbaa !5
  %432 = call i32 @slacpy_(ptr noundef %421, ptr noundef %422, ptr noundef %423, ptr noundef %426, ptr noundef %427, ptr noundef %430, ptr noundef %431)
  %433 = load ptr, ptr %23, align 8, !tbaa !5
  %434 = load ptr, ptr %24, align 8, !tbaa !5
  %435 = load ptr, ptr %28, align 8, !tbaa !5
  %436 = load i64, ptr %45, align 8, !tbaa !9
  %437 = getelementptr inbounds float, ptr %435, i64 %436
  %438 = load ptr, ptr %29, align 8, !tbaa !5
  %439 = load ptr, ptr %41, align 8, !tbaa !5
  %440 = call i32 @spotrf_(ptr noundef %433, ptr noundef %434, ptr noundef %437, ptr noundef %438, ptr noundef %439)
  %441 = load ptr, ptr %41, align 8, !tbaa !5
  %442 = load i64, ptr %441, align 8, !tbaa !9
  %443 = icmp sgt i64 %442, 0
  br i1 %443, label %444, label %446

444:                                              ; preds = %420
  %445 = load ptr, ptr %36, align 8, !tbaa !5
  store float 0.000000e+00, ptr %445, align 4, !tbaa !12
  store i32 0, ptr %21, align 4
  store i32 1, ptr %67, align 4
  br label %598

446:                                              ; preds = %420
  br label %447

447:                                              ; preds = %446, %417
  %448 = load ptr, ptr %23, align 8, !tbaa !5
  %449 = load ptr, ptr %24, align 8, !tbaa !5
  %450 = load ptr, ptr %26, align 8, !tbaa !5
  %451 = load i64, ptr %43, align 8, !tbaa !9
  %452 = getelementptr inbounds float, ptr %450, i64 %451
  %453 = load ptr, ptr %27, align 8, !tbaa !5
  %454 = load ptr, ptr %39, align 8, !tbaa !5
  %455 = getelementptr inbounds float, ptr %454, i64 1
  %456 = call double @slansy_(ptr noundef @.str.8, ptr noundef %448, ptr noundef %449, ptr noundef %452, ptr noundef %453, ptr noundef %455)
  %457 = fptrunc double %456 to float
  store float %457, ptr %60, align 4, !tbaa !12
  %458 = load ptr, ptr %23, align 8, !tbaa !5
  %459 = load ptr, ptr %24, align 8, !tbaa !5
  %460 = load ptr, ptr %28, align 8, !tbaa !5
  %461 = load i64, ptr %45, align 8, !tbaa !9
  %462 = getelementptr inbounds float, ptr %460, i64 %461
  %463 = load ptr, ptr %29, align 8, !tbaa !5
  %464 = load ptr, ptr %36, align 8, !tbaa !5
  %465 = load ptr, ptr %39, align 8, !tbaa !5
  %466 = getelementptr inbounds float, ptr %465, i64 1
  %467 = load ptr, ptr %40, align 8, !tbaa !5
  %468 = getelementptr inbounds i64, ptr %467, i64 1
  %469 = load ptr, ptr %41, align 8, !tbaa !5
  %470 = call i32 @spocon_(ptr noundef %458, ptr noundef %459, ptr noundef %462, ptr noundef %463, ptr noundef %60, ptr noundef %464, ptr noundef %466, ptr noundef %468, ptr noundef %469)
  %471 = load ptr, ptr %24, align 8, !tbaa !5
  %472 = load ptr, ptr %25, align 8, !tbaa !5
  %473 = load ptr, ptr %32, align 8, !tbaa !5
  %474 = load i64, ptr %47, align 8, !tbaa !9
  %475 = getelementptr inbounds float, ptr %473, i64 %474
  %476 = load ptr, ptr %33, align 8, !tbaa !5
  %477 = load ptr, ptr %34, align 8, !tbaa !5
  %478 = load i64, ptr %49, align 8, !tbaa !9
  %479 = getelementptr inbounds float, ptr %477, i64 %478
  %480 = load ptr, ptr %35, align 8, !tbaa !5
  %481 = call i32 @slacpy_(ptr noundef @.str.9, ptr noundef %471, ptr noundef %472, ptr noundef %475, ptr noundef %476, ptr noundef %479, ptr noundef %480)
  %482 = load ptr, ptr %23, align 8, !tbaa !5
  %483 = load ptr, ptr %24, align 8, !tbaa !5
  %484 = load ptr, ptr %25, align 8, !tbaa !5
  %485 = load ptr, ptr %28, align 8, !tbaa !5
  %486 = load i64, ptr %45, align 8, !tbaa !9
  %487 = getelementptr inbounds float, ptr %485, i64 %486
  %488 = load ptr, ptr %29, align 8, !tbaa !5
  %489 = load ptr, ptr %34, align 8, !tbaa !5
  %490 = load i64, ptr %49, align 8, !tbaa !9
  %491 = getelementptr inbounds float, ptr %489, i64 %490
  %492 = load ptr, ptr %35, align 8, !tbaa !5
  %493 = load ptr, ptr %41, align 8, !tbaa !5
  %494 = call i32 @spotrs_(ptr noundef %482, ptr noundef %483, ptr noundef %484, ptr noundef %487, ptr noundef %488, ptr noundef %491, ptr noundef %492, ptr noundef %493)
  %495 = load ptr, ptr %23, align 8, !tbaa !5
  %496 = load ptr, ptr %24, align 8, !tbaa !5
  %497 = load ptr, ptr %25, align 8, !tbaa !5
  %498 = load ptr, ptr %26, align 8, !tbaa !5
  %499 = load i64, ptr %43, align 8, !tbaa !9
  %500 = getelementptr inbounds float, ptr %498, i64 %499
  %501 = load ptr, ptr %27, align 8, !tbaa !5
  %502 = load ptr, ptr %28, align 8, !tbaa !5
  %503 = load i64, ptr %45, align 8, !tbaa !9
  %504 = getelementptr inbounds float, ptr %502, i64 %503
  %505 = load ptr, ptr %29, align 8, !tbaa !5
  %506 = load ptr, ptr %32, align 8, !tbaa !5
  %507 = load i64, ptr %47, align 8, !tbaa !9
  %508 = getelementptr inbounds float, ptr %506, i64 %507
  %509 = load ptr, ptr %33, align 8, !tbaa !5
  %510 = load ptr, ptr %34, align 8, !tbaa !5
  %511 = load i64, ptr %49, align 8, !tbaa !9
  %512 = getelementptr inbounds float, ptr %510, i64 %511
  %513 = load ptr, ptr %35, align 8, !tbaa !5
  %514 = load ptr, ptr %37, align 8, !tbaa !5
  %515 = getelementptr inbounds float, ptr %514, i64 1
  %516 = load ptr, ptr %38, align 8, !tbaa !5
  %517 = getelementptr inbounds float, ptr %516, i64 1
  %518 = load ptr, ptr %39, align 8, !tbaa !5
  %519 = getelementptr inbounds float, ptr %518, i64 1
  %520 = load ptr, ptr %40, align 8, !tbaa !5
  %521 = getelementptr inbounds i64, ptr %520, i64 1
  %522 = load ptr, ptr %41, align 8, !tbaa !5
  %523 = call i32 @sporfs_(ptr noundef %495, ptr noundef %496, ptr noundef %497, ptr noundef %500, ptr noundef %501, ptr noundef %504, ptr noundef %505, ptr noundef %508, ptr noundef %509, ptr noundef %512, ptr noundef %513, ptr noundef %515, ptr noundef %517, ptr noundef %519, ptr noundef %521, ptr noundef %522)
  %524 = load i64, ptr %62, align 8, !tbaa !9
  %525 = icmp ne i64 %524, 0
  br i1 %525, label %526, label %586

526:                                              ; preds = %447
  %527 = load ptr, ptr %25, align 8, !tbaa !5
  %528 = load i64, ptr %527, align 8, !tbaa !9
  store i64 %528, ptr %50, align 8, !tbaa !9
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %529

529:                                              ; preds = %565, %526
  %530 = load i64, ptr %55, align 8, !tbaa !9
  %531 = load i64, ptr %50, align 8, !tbaa !9
  %532 = icmp sle i64 %530, %531
  br i1 %532, label %533, label %568

533:                                              ; preds = %529
  %534 = load ptr, ptr %24, align 8, !tbaa !5
  %535 = load i64, ptr %534, align 8, !tbaa !9
  store i64 %535, ptr %51, align 8, !tbaa !9
  store i64 1, ptr %54, align 8, !tbaa !9
  br label %536

536:                                              ; preds = %561, %533
  %537 = load i64, ptr %54, align 8, !tbaa !9
  %538 = load i64, ptr %51, align 8, !tbaa !9
  %539 = icmp sle i64 %537, %538
  br i1 %539, label %540, label %564

540:                                              ; preds = %536
  %541 = load ptr, ptr %31, align 8, !tbaa !5
  %542 = load i64, ptr %54, align 8, !tbaa !9
  %543 = getelementptr inbounds float, ptr %541, i64 %542
  %544 = load float, ptr %543, align 4, !tbaa !12
  %545 = load ptr, ptr %34, align 8, !tbaa !5
  %546 = load i64, ptr %54, align 8, !tbaa !9
  %547 = load i64, ptr %55, align 8, !tbaa !9
  %548 = load i64, ptr %48, align 8, !tbaa !9
  %549 = mul nsw i64 %547, %548
  %550 = add nsw i64 %546, %549
  %551 = getelementptr inbounds float, ptr %545, i64 %550
  %552 = load float, ptr %551, align 4, !tbaa !12
  %553 = fmul float %544, %552
  %554 = load ptr, ptr %34, align 8, !tbaa !5
  %555 = load i64, ptr %54, align 8, !tbaa !9
  %556 = load i64, ptr %55, align 8, !tbaa !9
  %557 = load i64, ptr %48, align 8, !tbaa !9
  %558 = mul nsw i64 %556, %557
  %559 = add nsw i64 %555, %558
  %560 = getelementptr inbounds float, ptr %554, i64 %559
  store float %553, ptr %560, align 4, !tbaa !12
  br label %561

561:                                              ; preds = %540
  %562 = load i64, ptr %54, align 8, !tbaa !9
  %563 = add nsw i64 %562, 1
  store i64 %563, ptr %54, align 8, !tbaa !9
  br label %536, !llvm.loop !18

564:                                              ; preds = %536
  br label %565

565:                                              ; preds = %564
  %566 = load i64, ptr %55, align 8, !tbaa !9
  %567 = add nsw i64 %566, 1
  store i64 %567, ptr %55, align 8, !tbaa !9
  br label %529, !llvm.loop !19

568:                                              ; preds = %529
  %569 = load ptr, ptr %25, align 8, !tbaa !5
  %570 = load i64, ptr %569, align 8, !tbaa !9
  store i64 %570, ptr %50, align 8, !tbaa !9
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %571

571:                                              ; preds = %582, %568
  %572 = load i64, ptr %55, align 8, !tbaa !9
  %573 = load i64, ptr %50, align 8, !tbaa !9
  %574 = icmp sle i64 %572, %573
  br i1 %574, label %575, label %585

575:                                              ; preds = %571
  %576 = load float, ptr %59, align 4, !tbaa !12
  %577 = load ptr, ptr %37, align 8, !tbaa !5
  %578 = load i64, ptr %55, align 8, !tbaa !9
  %579 = getelementptr inbounds float, ptr %577, i64 %578
  %580 = load float, ptr %579, align 4, !tbaa !12
  %581 = fdiv float %580, %576
  store float %581, ptr %579, align 4, !tbaa !12
  br label %582

582:                                              ; preds = %575
  %583 = load i64, ptr %55, align 8, !tbaa !9
  %584 = add nsw i64 %583, 1
  store i64 %584, ptr %55, align 8, !tbaa !9
  br label %571, !llvm.loop !20

585:                                              ; preds = %571
  br label %586

586:                                              ; preds = %585, %447
  %587 = load ptr, ptr %36, align 8, !tbaa !5
  %588 = load float, ptr %587, align 4, !tbaa !12
  %589 = fpext float %588 to double
  %590 = call double @slamch_(ptr noundef @.str.10)
  %591 = fcmp olt double %589, %590
  br i1 %591, label %592, label %597

592:                                              ; preds = %586
  %593 = load ptr, ptr %24, align 8, !tbaa !5
  %594 = load i64, ptr %593, align 8, !tbaa !9
  %595 = add nsw i64 %594, 1
  %596 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 %595, ptr %596, align 8, !tbaa !9
  br label %597

597:                                              ; preds = %592, %586
  store i32 0, ptr %21, align 4
  store i32 1, ptr %67, align 4
  br label %598

598:                                              ; preds = %597, %444, %335
  call void @llvm.lifetime.end.p0(i64 4, 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 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 4, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 4, 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
  %599 = load i32, ptr %21, align 4
  ret i32 %599
}

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

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

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

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

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

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

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

declare i32 @sporfs_(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 = distinct !{!16, !15}
!17 = distinct !{!17, !15}
!18 = distinct !{!18, !15}
!19 = distinct !{!19, !15}
!20 = distinct !{!20, !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"

@.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 @sposvx_(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 float, ptr %10, i64 %28
  %30 = load i64, ptr %13, align 8, !tbaa !5
  %31 = xor i64 %30, -1
  %32 = getelementptr inbounds float, 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 %.thread269.sink.split, label %44

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

46:                                               ; preds = %44
  %47 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.6) #4
  %.not245 = icmp eq i64 %47, 0
  br i1 %.not245, label %.thread269.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 %.thread269.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 %.thread269.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 %.thread269.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 %.thread269.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 %.0232262, 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
  %.not246 = icmp eq i64 %65, 0
  br i1 %.not246, label %.thread269.sink.split, label %.thread265

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

67:                                               ; preds = %66
  %68 = load i64, ptr %2, align 8, !tbaa !5
  %.not247273 = icmp slt i64 %68, 1
  br i1 %.not247273, 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
  %.0233276 = phi float [ 0.000000e+00, %.lr.ph.preheader.new ], [ %81, %.lr.ph ]
  %.0234275 = phi float [ %.0230263, %.lr.ph.preheader.new ], [ %79, %.lr.ph ]
  %.0235274 = 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 %.0235274
  %71 = load float, ptr %70, align 4, !tbaa !10
  %72 = fcmp ole float %.0234275, %71
  %73 = select i1 %72, float %.0234275, float %71
  %74 = fcmp oge float %.0233276, %71
  %75 = select i1 %74, float %.0233276, float %71
  %76 = getelementptr float, ptr %9, i64 %.0235274
  %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 %.0235274, 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
  %.lcssa357.ph = phi float [ poison, %.lr.ph.preheader ], [ %79, %.lr.ph ]
  %.lcssa.ph = phi float [ poison, %.lr.ph.preheader ], [ %81, %.lr.ph ]
  %.0233276.unr = phi float [ 0.000000e+00, %.lr.ph.preheader ], [ %81, %.lr.ph ]
  %.0234275.unr = phi float [ %.0230263, %.lr.ph.preheader ], [ %79, %.lr.ph ]
  %.0235274.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 %.0235274.unr
  %84 = load float, ptr %83, align 4, !tbaa !10
  %85 = fcmp ole float %.0234275.unr, %84
  %86 = select i1 %85, float %.0234275.unr, float %84
  %87 = fcmp oge float %.0233276.unr, %84
  %88 = select i1 %87, float %.0233276.unr, float %84
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %67
  %.0234.lcssa = phi float [ %.0230263, %67 ], [ %.lcssa357.ph, %._crit_edge.loopexit.unr-lcssa ], [ %86, %.lr.ph.epil ]
  %.0233.lcssa = phi float [ 0.000000e+00, %67 ], [ %.lcssa.ph, %._crit_edge.loopexit.unr-lcssa ], [ %88, %.lr.ph.epil ]
  %89 = fcmp ugt float %.0234.lcssa, 0.000000e+00
  br i1 %89, label %90, label %.thread269.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 %.0234.lcssa, %.0264
  %94 = select i1 %93, float %.0234.lcssa, float %.0264
  %95 = fcmp ole float %.0233.lcssa, %.0230263
  %96 = select i1 %95, float %.0233.lcssa, float %.0230263
  %97 = fdiv float %94, %96
  store float %97, ptr %23, align 4, !tbaa !10
  br label %.thread265

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

.thread265:                                       ; 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 %.thread269

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

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

.thread269.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 %.thread269

.thread269:                                       ; preds = %.thread269.sink.split, %.thread265
  %107 = phi i64 [ %.pr, %.thread265 ], [ %.sink, %.thread269.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 %239

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

111:                                              ; preds = %110
  %112 = call i32 @spoequ_(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 @slaqsy_(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 ], [ %.0232262, %111 ], [ %.0232262, %110 ]
  %.not249 = icmp eq i64 %.1, 0
  br i1 %.not249, label %.loopexit272, label %119

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

.lr.ph286:                                        ; preds = %119
  %121 = load i64, ptr %2, align 8, !tbaa !5
  %.not254278 = icmp slt i64 %121, 1
  br i1 %.not254278, label %.loopexit272, label %.lr.ph281.preheader

.lr.ph281.preheader:                              ; preds = %.lr.ph286
  %122 = add nuw i64 %120, 4611686018427387903
  %123 = mul i64 %27, %122
  %124 = shl i64 %121, 2
  %125 = add i64 %123, %121
  %126 = shl i64 %125, 2
  %scevgep = getelementptr i8, ptr %10, i64 %126
  %scevgep314 = getelementptr i8, ptr %9, i64 %124
  %127 = add nuw i64 %121, 1
  %min.iters.check = icmp ult i64 %121, 8
  %bound0 = icmp ugt ptr %scevgep314, %10
  %bound1 = icmp ugt ptr %scevgep, %9
  %found.conflict = and i1 %bound0, %bound1
  %.mask = and i64 %27, 2305843009213693952
  %stride.check = icmp ne i64 %.mask, 0
  %128 = or i1 %found.conflict, %stride.check
  %n.vec = and i64 %121, 9223372036854775800
  %ind.end = or disjoint i64 %n.vec, 1
  %cmp.n = icmp eq i64 %121, %n.vec
  br label %.lr.ph281

.lr.ph281:                                        ; preds = %.lr.ph281.preheader, %._crit_edge282
  %.1236284 = phi i64 [ %164, %._crit_edge282 ], [ 1, %.lr.ph281.preheader ]
  %129 = mul nsw i64 %.1236284, %27
  %invariant.gep = getelementptr float, ptr %29, i64 %129
  %brmerge = select i1 %min.iters.check, i1 true, i1 %128
  br i1 %brmerge, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %.lr.ph281, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph281 ]
  %offset.idx = or disjoint i64 %index, 1
  %130 = getelementptr float, ptr %9, i64 %index
  %131 = getelementptr inbounds i8, ptr %130, i64 16
  %wide.load = load <4 x float>, ptr %130, align 4, !tbaa !10, !alias.scope !14
  %wide.load315 = load <4 x float>, ptr %131, align 4, !tbaa !10, !alias.scope !14
  %132 = getelementptr float, ptr %invariant.gep, i64 %offset.idx
  %133 = getelementptr i8, ptr %132, i64 16
  %wide.load316 = load <4 x float>, ptr %132, align 4, !tbaa !10, !alias.scope !17, !noalias !14
  %wide.load317 = load <4 x float>, ptr %133, align 4, !tbaa !10, !alias.scope !17, !noalias !14
  %134 = fmul <4 x float> %wide.load, %wide.load316
  %135 = fmul <4 x float> %wide.load315, %wide.load317
  store <4 x float> %134, ptr %132, align 4, !tbaa !10, !alias.scope !17, !noalias !14
  store <4 x float> %135, ptr %133, align 4, !tbaa !10, !alias.scope !17, !noalias !14
  %index.next = add nuw i64 %index, 8
  %136 = icmp eq i64 %index.next, %n.vec
  br i1 %136, label %middle.block, label %vector.body, !llvm.loop !19

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

scalar.ph.preheader:                              ; preds = %.lr.ph281, %middle.block
  %.0237279.ph = phi i64 [ 1, %.lr.ph281 ], [ %ind.end, %middle.block ]
  %137 = sub i64 %127, %.0237279.ph
  %138 = sub i64 %121, %.0237279.ph
  %xtraiter360 = and i64 %137, 3
  %lcmp.mod361.not = icmp eq i64 %xtraiter360, 0
  br i1 %lcmp.mod361.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %.0237279.prol = phi i64 [ %143, %scalar.ph.prol ], [ %.0237279.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %139 = getelementptr inbounds float, ptr %26, i64 %.0237279.prol
  %140 = load float, ptr %139, align 4, !tbaa !10
  %gep.prol = getelementptr float, ptr %invariant.gep, i64 %.0237279.prol
  %141 = load float, ptr %gep.prol, align 4, !tbaa !10
  %142 = fmul float %140, %141
  store float %142, ptr %gep.prol, align 4, !tbaa !10
  %143 = add nuw i64 %.0237279.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter360
  br i1 %prol.iter.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !22

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.0237279.unr = phi i64 [ %.0237279.ph, %scalar.ph.preheader ], [ %143, %scalar.ph.prol ]
  %144 = icmp ult i64 %138, 3
  br i1 %144, label %._crit_edge282, label %scalar.ph.preheader.new

scalar.ph.preheader.new:                          ; preds = %scalar.ph.prol.loopexit
  %invariant.gep370 = getelementptr i8, ptr %invariant.gep, i64 4
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %.0237279 = phi i64 [ %.0237279.unr, %scalar.ph.preheader.new ], [ %163, %scalar.ph ]
  %145 = getelementptr inbounds float, ptr %26, i64 %.0237279
  %146 = load float, ptr %145, align 4, !tbaa !10
  %gep = getelementptr float, ptr %invariant.gep, i64 %.0237279
  %147 = load float, ptr %gep, align 4, !tbaa !10
  %148 = fmul float %146, %147
  store float %148, ptr %gep, align 4, !tbaa !10
  %149 = getelementptr float, ptr %9, i64 %.0237279
  %150 = load float, ptr %149, align 4, !tbaa !10
  %gep371 = getelementptr float, ptr %invariant.gep370, i64 %.0237279
  %151 = load float, ptr %gep371, align 4, !tbaa !10
  %152 = fmul float %150, %151
  store float %152, ptr %gep371, align 4, !tbaa !10
  %153 = add nuw i64 %.0237279, 2
  %154 = getelementptr inbounds float, ptr %26, i64 %153
  %155 = load float, ptr %154, align 4, !tbaa !10
  %gep.2 = getelementptr float, ptr %invariant.gep, i64 %153
  %156 = load float, ptr %gep.2, align 4, !tbaa !10
  %157 = fmul float %155, %156
  store float %157, ptr %gep.2, align 4, !tbaa !10
  %158 = add nuw i64 %.0237279, 3
  %159 = getelementptr inbounds float, ptr %26, i64 %158
  %160 = load float, ptr %159, align 4, !tbaa !10
  %gep.3 = getelementptr float, ptr %invariant.gep, i64 %158
  %161 = load float, ptr %gep.3, align 4, !tbaa !10
  %162 = fmul float %160, %161
  store float %162, ptr %gep.3, align 4, !tbaa !10
  %163 = add nuw i64 %.0237279, 4
  %exitcond306.not.3 = icmp eq i64 %158, %121
  br i1 %exitcond306.not.3, label %._crit_edge282, label %scalar.ph, !llvm.loop !24

._crit_edge282:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %164 = add nuw i64 %.1236284, 1
  %exitcond307.not = icmp eq i64 %.1236284, %120
  br i1 %exitcond307.not, label %.loopexit272, label %.lr.ph281, !llvm.loop !25

.loopexit272:                                     ; preds = %._crit_edge282, %.lr.ph286, %119, %118
  br i1 %or.cond, label %165, label %171

165:                                              ; preds = %.loopexit272
  %166 = call i32 @slacpy_(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
  %167 = call i32 @spotrf_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %19) #4
  %168 = load i64, ptr %19, align 8, !tbaa !5
  %169 = icmp sgt i64 %168, 0
  br i1 %169, label %170, label %171

170:                                              ; preds = %165
  store float 0.000000e+00, ptr %14, align 4, !tbaa !10
  br label %239

171:                                              ; preds = %165, %.loopexit272
  %172 = call double @slansy_(ptr noundef nonnull @.str.8, ptr noundef %1, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %17) #4
  %173 = fptrunc double %172 to float
  store float %173, ptr %24, align 4, !tbaa !10
  %174 = call i32 @spocon_(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
  %175 = call i32 @slacpy_(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
  %176 = call i32 @spotrs_(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
  %177 = call i32 @sporfs_(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 %.not249, label %.loopexit, label %178

178:                                              ; preds = %171
  %179 = load i64, ptr %3, align 8, !tbaa !5
  %.not251294 = icmp slt i64 %179, 1
  br i1 %.not251294, label %.loopexit, label %.lr.ph297

.lr.ph297:                                        ; preds = %178
  %180 = load i64, ptr %2, align 8, !tbaa !5
  %.not253287 = icmp slt i64 %180, 1
  br i1 %.not253287, label %.lr.ph302, label %.lr.ph290.preheader

.lr.ph290.preheader:                              ; preds = %.lr.ph297
  %181 = add nuw i64 %179, 4611686018427387903
  %182 = mul i64 %30, %181
  %183 = shl i64 %180, 2
  %184 = add i64 %182, %180
  %185 = shl i64 %184, 2
  %scevgep319 = getelementptr i8, ptr %12, i64 %185
  %scevgep320 = getelementptr i8, ptr %9, i64 %183
  %186 = add nuw i64 %180, 1
  %min.iters.check327 = icmp ult i64 %180, 8
  %bound0321 = icmp ugt ptr %scevgep320, %12
  %bound1322 = icmp ugt ptr %scevgep319, %9
  %found.conflict323 = and i1 %bound0321, %bound1322
  %.mask356 = and i64 %30, 2305843009213693952
  %stride.check324 = icmp ne i64 %.mask356, 0
  %187 = or i1 %found.conflict323, %stride.check324
  %n.vec330 = and i64 %180, 9223372036854775800
  %ind.end331 = or disjoint i64 %n.vec330, 1
  %cmp.n341 = icmp eq i64 %180, %n.vec330
  br label %.lr.ph290

.lr.ph290:                                        ; preds = %.lr.ph290.preheader, %._crit_edge291
  %.2295 = phi i64 [ %223, %._crit_edge291 ], [ 1, %.lr.ph290.preheader ]
  %188 = mul nsw i64 %.2295, %30
  %invariant.gep292 = getelementptr float, ptr %32, i64 %188
  %brmerge374 = select i1 %min.iters.check327, i1 true, i1 %187
  br i1 %brmerge374, label %scalar.ph326.preheader, label %vector.body333

vector.body333:                                   ; preds = %.lr.ph290, %vector.body333
  %index334 = phi i64 [ %index.next340, %vector.body333 ], [ 0, %.lr.ph290 ]
  %offset.idx335 = or disjoint i64 %index334, 1
  %189 = getelementptr float, ptr %9, i64 %index334
  %190 = getelementptr inbounds i8, ptr %189, i64 16
  %wide.load336 = load <4 x float>, ptr %189, align 4, !tbaa !10, !alias.scope !26
  %wide.load337 = load <4 x float>, ptr %190, align 4, !tbaa !10, !alias.scope !26
  %191 = getelementptr float, ptr %invariant.gep292, i64 %offset.idx335
  %192 = getelementptr i8, ptr %191, i64 16
  %wide.load338 = load <4 x float>, ptr %191, align 4, !tbaa !10, !alias.scope !29, !noalias !26
  %wide.load339 = load <4 x float>, ptr %192, align 4, !tbaa !10, !alias.scope !29, !noalias !26
  %193 = fmul <4 x float> %wide.load336, %wide.load338
  %194 = fmul <4 x float> %wide.load337, %wide.load339
  store <4 x float> %193, ptr %191, align 4, !tbaa !10, !alias.scope !29, !noalias !26
  store <4 x float> %194, ptr %192, align 4, !tbaa !10, !alias.scope !29, !noalias !26
  %index.next340 = add nuw i64 %index334, 8
  %195 = icmp eq i64 %index.next340, %n.vec330
  br i1 %195, label %middle.block325, label %vector.body333, !llvm.loop !31

middle.block325:                                  ; preds = %vector.body333
  br i1 %cmp.n341, label %._crit_edge291, label %scalar.ph326.preheader

scalar.ph326.preheader:                           ; preds = %.lr.ph290, %middle.block325
  %.1238288.ph = phi i64 [ 1, %.lr.ph290 ], [ %ind.end331, %middle.block325 ]
  %196 = sub i64 %186, %.1238288.ph
  %197 = sub i64 %180, %.1238288.ph
  %xtraiter362 = and i64 %196, 3
  %lcmp.mod363.not = icmp eq i64 %xtraiter362, 0
  br i1 %lcmp.mod363.not, label %scalar.ph326.prol.loopexit, label %scalar.ph326.prol

scalar.ph326.prol:                                ; preds = %scalar.ph326.preheader, %scalar.ph326.prol
  %.1238288.prol = phi i64 [ %202, %scalar.ph326.prol ], [ %.1238288.ph, %scalar.ph326.preheader ]
  %prol.iter364 = phi i64 [ %prol.iter364.next, %scalar.ph326.prol ], [ 0, %scalar.ph326.preheader ]
  %198 = getelementptr inbounds float, ptr %26, i64 %.1238288.prol
  %199 = load float, ptr %198, align 4, !tbaa !10
  %gep293.prol = getelementptr float, ptr %invariant.gep292, i64 %.1238288.prol
  %200 = load float, ptr %gep293.prol, align 4, !tbaa !10
  %201 = fmul float %199, %200
  store float %201, ptr %gep293.prol, align 4, !tbaa !10
  %202 = add nuw i64 %.1238288.prol, 1
  %prol.iter364.next = add i64 %prol.iter364, 1
  %prol.iter364.cmp.not = icmp eq i64 %prol.iter364.next, %xtraiter362
  br i1 %prol.iter364.cmp.not, label %scalar.ph326.prol.loopexit, label %scalar.ph326.prol, !llvm.loop !32

scalar.ph326.prol.loopexit:                       ; preds = %scalar.ph326.prol, %scalar.ph326.preheader
  %.1238288.unr = phi i64 [ %.1238288.ph, %scalar.ph326.preheader ], [ %202, %scalar.ph326.prol ]
  %203 = icmp ult i64 %197, 3
  br i1 %203, label %._crit_edge291, label %scalar.ph326.preheader.new

scalar.ph326.preheader.new:                       ; preds = %scalar.ph326.prol.loopexit
  %invariant.gep372 = getelementptr i8, ptr %invariant.gep292, i64 4
  br label %scalar.ph326

scalar.ph326:                                     ; preds = %scalar.ph326, %scalar.ph326.preheader.new
  %.1238288 = phi i64 [ %.1238288.unr, %scalar.ph326.preheader.new ], [ %222, %scalar.ph326 ]
  %204 = getelementptr inbounds float, ptr %26, i64 %.1238288
  %205 = load float, ptr %204, align 4, !tbaa !10
  %gep293 = getelementptr float, ptr %invariant.gep292, i64 %.1238288
  %206 = load float, ptr %gep293, align 4, !tbaa !10
  %207 = fmul float %205, %206
  store float %207, ptr %gep293, align 4, !tbaa !10
  %208 = getelementptr float, ptr %9, i64 %.1238288
  %209 = load float, ptr %208, align 4, !tbaa !10
  %gep373 = getelementptr float, ptr %invariant.gep372, i64 %.1238288
  %210 = load float, ptr %gep373, align 4, !tbaa !10
  %211 = fmul float %209, %210
  store float %211, ptr %gep373, align 4, !tbaa !10
  %212 = add nuw i64 %.1238288, 2
  %213 = getelementptr inbounds float, ptr %26, i64 %212
  %214 = load float, ptr %213, align 4, !tbaa !10
  %gep293.2 = getelementptr float, ptr %invariant.gep292, i64 %212
  %215 = load float, ptr %gep293.2, align 4, !tbaa !10
  %216 = fmul float %214, %215
  store float %216, ptr %gep293.2, align 4, !tbaa !10
  %217 = add nuw i64 %.1238288, 3
  %218 = getelementptr inbounds float, ptr %26, i64 %217
  %219 = load float, ptr %218, align 4, !tbaa !10
  %gep293.3 = getelementptr float, ptr %invariant.gep292, i64 %217
  %220 = load float, ptr %gep293.3, align 4, !tbaa !10
  %221 = fmul float %219, %220
  store float %221, ptr %gep293.3, align 4, !tbaa !10
  %222 = add nuw i64 %.1238288, 4
  %exitcond308.not.3 = icmp eq i64 %217, %180
  br i1 %exitcond308.not.3, label %._crit_edge291, label %scalar.ph326, !llvm.loop !33

._crit_edge291:                                   ; preds = %scalar.ph326.prol.loopexit, %scalar.ph326, %middle.block325
  %223 = add nuw i64 %.2295, 1
  %exitcond309.not = icmp eq i64 %.2295, %179
  br i1 %exitcond309.not, label %._crit_edge298, label %.lr.ph290, !llvm.loop !34

._crit_edge298:                                   ; preds = %._crit_edge291
  br i1 %.not251294, label %.loopexit, label %.lr.ph302

.lr.ph302:                                        ; preds = %.lr.ph297, %._crit_edge298
  %224 = load float, ptr %23, align 4, !tbaa !10
  %min.iters.check344 = icmp ult i64 %179, 4
  br i1 %min.iters.check344, label %scalar.ph343.preheader, label %vector.ph345

vector.ph345:                                     ; preds = %.lr.ph302
  %n.vec347 = and i64 %179, 9223372036854775804
  %ind.end348 = or disjoint i64 %n.vec347, 1
  %broadcast.splatinsert = insertelement <4 x float> poison, float %224, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body350

vector.body350:                                   ; preds = %vector.body350, %vector.ph345
  %index351 = phi i64 [ 0, %vector.ph345 ], [ %index.next354, %vector.body350 ]
  %225 = getelementptr float, ptr %15, i64 %index351
  %wide.load353 = load <4 x float>, ptr %225, align 4, !tbaa !10
  %226 = fdiv <4 x float> %wide.load353, %broadcast.splat
  store <4 x float> %226, ptr %225, align 4, !tbaa !10
  %index.next354 = add nuw i64 %index351, 4
  %227 = icmp eq i64 %index.next354, %n.vec347
  br i1 %227, label %middle.block342, label %vector.body350, !llvm.loop !35

middle.block342:                                  ; preds = %vector.body350
  %cmp.n355 = icmp eq i64 %179, %n.vec347
  br i1 %cmp.n355, label %.loopexit, label %scalar.ph343.preheader

scalar.ph343.preheader:                           ; preds = %middle.block342, %.lr.ph302
  %.3300.ph = phi i64 [ 1, %.lr.ph302 ], [ %ind.end348, %middle.block342 ]
  br label %scalar.ph343

scalar.ph343:                                     ; preds = %scalar.ph343.preheader, %scalar.ph343
  %.3300 = phi i64 [ %231, %scalar.ph343 ], [ %.3300.ph, %scalar.ph343.preheader ]
  %228 = getelementptr inbounds float, ptr %33, i64 %.3300
  %229 = load float, ptr %228, align 4, !tbaa !10
  %230 = fdiv float %229, %224
  store float %230, ptr %228, align 4, !tbaa !10
  %231 = add nuw i64 %.3300, 1
  %exitcond310.not = icmp eq i64 %.3300, %179
  br i1 %exitcond310.not, label %.loopexit, label %scalar.ph343, !llvm.loop !36

.loopexit:                                        ; preds = %scalar.ph343, %middle.block342, %178, %._crit_edge298, %171
  %232 = load float, ptr %14, align 4, !tbaa !10
  %233 = fpext float %232 to double
  %234 = call double @slamch_(ptr noundef nonnull @.str.10) #4
  %235 = fcmp ogt double %234, %233
  br i1 %235, label %236, label %239

236:                                              ; preds = %.loopexit
  %237 = load i64, ptr %2, align 8, !tbaa !5
  %238 = add nsw i64 %237, 1
  store i64 %238, ptr %19, align 8, !tbaa !5
  br label %239

239:                                              ; preds = %.loopexit, %236, %170, %.thread269
  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 @spoequ_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

declare i32 @sporfs_(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 = !{!18}
!18 = distinct !{!18, !16}
!19 = distinct !{!19, !13, !20, !21}
!20 = !{!"llvm.loop.isvectorized", i32 1}
!21 = !{!"llvm.loop.unroll.runtime.disable"}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.unroll.disable"}
!24 = distinct !{!24, !13, !20}
!25 = distinct !{!25, !13}
!26 = !{!27}
!27 = distinct !{!27, !28}
!28 = distinct !{!28, !"LVerDomain"}
!29 = !{!30}
!30 = distinct !{!30, !28}
!31 = distinct !{!31, !13, !20, !21}
!32 = distinct !{!32, !23}
!33 = distinct !{!33, !13, !20}
!34 = distinct !{!34, !13}
!35 = distinct !{!35, !13, !20, !21}
!36 = distinct !{!36, !13, !21, !20}


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