; LLVM IR from venumb/ZSPACE :: cpp/depends/alglib/cpp/src (linalg)

; 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.alglib_impl::sluv2buffer" = type { i64, %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sluv2list1matrix", %"struct.alglib_impl::sluv2list1matrix", %"struct.alglib_impl::sluv2sparsetrail", %"struct.alglib_impl::sluv2densetrail", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::sparsematrix" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64, i64, i64, i64 }
%"struct.alglib_impl::sluv2list1matrix" = type { i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64 }
%"struct.alglib_impl::sluv2sparsetrail" = type { i64, i64, %"struct.alglib_impl::ae_vector", i64, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::sluv2densetrail" = type { i64, i64, %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.1 }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%union.anon.1 = type { ptr }
%"struct.alglib_impl::ae_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = type { ptr }

@.str.215 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.216 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.217 = external hidden unnamed_addr constant [32 x i8], align 1
@_ZN11alglib_implL14sptrf_densebndE = external hidden global double, align 8
@.str.218 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.219 = external hidden unnamed_addr constant [48 x i8], align 1

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

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

declare void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext, ptr noundef, ptr noundef) #1

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN11alglib_impl11sparseiscrsEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef, ptr noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZN11alglib_impl14sparsegetnrowsEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef, ptr noundef) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZN11alglib_impl14sparsegetncolsEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef, ptr noundef) #3

declare noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef, ptr noundef) #1

declare void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) #1

declare void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) #1

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #4

declare void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl13rmatrixplurecEPNS_9ae_matrixElllPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) #2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN11alglib_impl7sptrfluEPNS_12sparsematrixElPNS_9ae_vectorES3_PNS_11sluv2bufferEPNS_8ae_stateE(ptr noundef %0, i64 noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) #2 {
  %7 = alloca ptr, align 8
  %8 = alloca i64, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i64, align 8
  %14 = alloca i64, align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca double, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca i8, align 1
  %30 = alloca i64, align 8
  %31 = alloca i8, align 1
  store ptr %0, ptr %7, align 8, !tbaa !5
  store i64 %1, ptr %8, align 8, !tbaa !9
  store ptr %2, ptr %9, align 8, !tbaa !5
  store ptr %3, ptr %10, align 8, !tbaa !5
  store ptr %4, ptr %11, align 8, !tbaa !5
  store ptr %5, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #5
  %32 = load ptr, ptr %7, align 8, !tbaa !5
  %33 = load ptr, ptr %12, align 8, !tbaa !5
  %34 = call noundef zeroext i1 @_ZN11alglib_impl11sparseiscrsEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %32, ptr noundef %33)
  %35 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %34, ptr noundef @.str.215, ptr noundef %35)
  %36 = load ptr, ptr %7, align 8, !tbaa !5
  %37 = load ptr, ptr %12, align 8, !tbaa !5
  %38 = call noundef i64 @_ZN11alglib_impl14sparsegetnrowsEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %36, ptr noundef %37)
  %39 = load ptr, ptr %7, align 8, !tbaa !5
  %40 = load ptr, ptr %12, align 8, !tbaa !5
  %41 = call noundef i64 @_ZN11alglib_impl14sparsegetncolsEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %39, ptr noundef %40)
  %42 = icmp eq i64 %38, %41
  %43 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %42, ptr noundef @.str.216, ptr noundef %43)
  %44 = load i64, ptr %8, align 8, !tbaa !9
  %45 = icmp eq i64 %44, 0
  br i1 %45, label %52, label %46

46:                                               ; preds = %6
  %47 = load i64, ptr %8, align 8, !tbaa !9
  %48 = icmp eq i64 %47, 1
  br i1 %48, label %52, label %49

49:                                               ; preds = %46
  %50 = load i64, ptr %8, align 8, !tbaa !9
  %51 = icmp eq i64 %50, 2
  br label %52

52:                                               ; preds = %49, %46, %6
  %53 = phi i1 [ true, %46 ], [ true, %6 ], [ %51, %49 ]
  %54 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %53, ptr noundef @.str.217, ptr noundef %54)
  store i8 1, ptr %31, align 1, !tbaa !11
  %55 = load ptr, ptr %7, align 8, !tbaa !5
  %56 = load ptr, ptr %12, align 8, !tbaa !5
  %57 = call noundef i64 @_ZN11alglib_impl14sparsegetnrowsEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %55, ptr noundef %56)
  store i64 %57, ptr %13, align 8, !tbaa !9
  %58 = load i64, ptr %8, align 8, !tbaa !9
  %59 = icmp eq i64 %58, 0
  br i1 %59, label %60, label %61

60:                                               ; preds = %52
  store i64 2, ptr %8, align 8, !tbaa !9
  br label %61

61:                                               ; preds = %60, %52
  %62 = load i64, ptr %8, align 8, !tbaa !9
  %63 = icmp eq i64 %62, 2
  %64 = zext i1 %63 to i8
  store i8 %64, ptr %29, align 1, !tbaa !11
  %65 = load i64, ptr %13, align 8, !tbaa !9
  %66 = load ptr, ptr %11, align 8, !tbaa !5
  %67 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %66, i32 0, i32 0
  store i64 %65, ptr %67, align 8, !tbaa !13
  %68 = load ptr, ptr %11, align 8, !tbaa !5
  %69 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %68, i32 0, i32 7
  %70 = load i64, ptr %13, align 8, !tbaa !9
  %71 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %69, i64 noundef %70, ptr noundef %71)
  store i64 0, ptr %15, align 8, !tbaa !9
  br label %72

72:                                               ; preds = %85, %61
  %73 = load i64, ptr %15, align 8, !tbaa !9
  %74 = load i64, ptr %13, align 8, !tbaa !9
  %75 = sub nsw i64 %74, 1
  %76 = icmp sle i64 %73, %75
  br i1 %76, label %77, label %88

77:                                               ; preds = %72
  %78 = load i64, ptr %15, align 8, !tbaa !9
  %79 = load ptr, ptr %11, align 8, !tbaa !5
  %80 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %79, i32 0, i32 7
  %81 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %80, i32 0, i32 4
  %82 = load ptr, ptr %81, align 8, !tbaa !22
  %83 = load i64, ptr %15, align 8, !tbaa !9
  %84 = getelementptr inbounds i64, ptr %82, i64 %83
  store i64 %78, ptr %84, align 8, !tbaa !9
  br label %85

85:                                               ; preds = %77
  %86 = load i64, ptr %15, align 8, !tbaa !9
  %87 = add nsw i64 %86, 1
  store i64 %87, ptr %15, align 8, !tbaa !9
  br label %72, !llvm.loop !23

88:                                               ; preds = %72
  %89 = load ptr, ptr %11, align 8, !tbaa !5
  %90 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %89, i32 0, i32 1
  %91 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %90, i32 0, i32 5
  store i64 1, ptr %91, align 8, !tbaa !25
  %92 = load i64, ptr %13, align 8, !tbaa !9
  %93 = load ptr, ptr %11, align 8, !tbaa !5
  %94 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %93, i32 0, i32 1
  %95 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %94, i32 0, i32 6
  store i64 %92, ptr %95, align 8, !tbaa !26
  %96 = load i64, ptr %13, align 8, !tbaa !9
  %97 = load ptr, ptr %11, align 8, !tbaa !5
  %98 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %97, i32 0, i32 1
  %99 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %98, i32 0, i32 7
  store i64 %96, ptr %99, align 8, !tbaa !27
  %100 = load ptr, ptr %11, align 8, !tbaa !5
  %101 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %100, i32 0, i32 1
  %102 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %101, i32 0, i32 2
  %103 = load i64, ptr %13, align 8, !tbaa !9
  %104 = add nsw i64 %103, 1
  %105 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %102, i64 noundef %104, ptr noundef %105)
  %106 = load ptr, ptr %11, align 8, !tbaa !5
  %107 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %106, i32 0, i32 1
  %108 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %107, i32 0, i32 2
  %109 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %108, i32 0, i32 4
  %110 = load ptr, ptr %109, align 8, !tbaa !22
  %111 = getelementptr inbounds i64, ptr %110, i64 0
  store i64 0, ptr %111, align 8, !tbaa !9
  %112 = load ptr, ptr %11, align 8, !tbaa !5
  %113 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %112, i32 0, i32 2
  %114 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %113, i32 0, i32 5
  store i64 1, ptr %114, align 8, !tbaa !28
  %115 = load i64, ptr %13, align 8, !tbaa !9
  %116 = load ptr, ptr %11, align 8, !tbaa !5
  %117 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %116, i32 0, i32 2
  %118 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %117, i32 0, i32 6
  store i64 %115, ptr %118, align 8, !tbaa !29
  %119 = load i64, ptr %13, align 8, !tbaa !9
  %120 = load ptr, ptr %11, align 8, !tbaa !5
  %121 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %120, i32 0, i32 2
  %122 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %121, i32 0, i32 7
  store i64 %119, ptr %122, align 8, !tbaa !30
  %123 = load ptr, ptr %11, align 8, !tbaa !5
  %124 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %123, i32 0, i32 2
  %125 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %124, i32 0, i32 2
  %126 = load i64, ptr %13, align 8, !tbaa !9
  %127 = add nsw i64 %126, 1
  %128 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %125, i64 noundef %127, ptr noundef %128)
  %129 = load ptr, ptr %11, align 8, !tbaa !5
  %130 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %129, i32 0, i32 2
  %131 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %130, i32 0, i32 2
  %132 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %131, i32 0, i32 4
  %133 = load ptr, ptr %132, align 8, !tbaa !22
  %134 = getelementptr inbounds i64, ptr %133, i64 0
  store i64 0, ptr %134, align 8, !tbaa !9
  %135 = load i64, ptr %13, align 8, !tbaa !9
  %136 = load ptr, ptr %11, align 8, !tbaa !5
  %137 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %136, i32 0, i32 3
  %138 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_implL20sptrf_sluv2list1initElPNS_16sluv2list1matrixEPNS_8ae_stateE(i64 noundef %135, ptr noundef %137, ptr noundef %138)
  %139 = load i64, ptr %13, align 8, !tbaa !9
  %140 = load ptr, ptr %11, align 8, !tbaa !5
  %141 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %140, i32 0, i32 4
  %142 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_implL20sptrf_sluv2list1initElPNS_16sluv2list1matrixEPNS_8ae_stateE(i64 noundef %139, ptr noundef %141, ptr noundef %142)
  %143 = load ptr, ptr %9, align 8, !tbaa !5
  %144 = load i64, ptr %13, align 8, !tbaa !9
  %145 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %143, i64 noundef %144, ptr noundef %145)
  %146 = load ptr, ptr %10, align 8, !tbaa !5
  %147 = load i64, ptr %13, align 8, !tbaa !9
  %148 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %146, i64 noundef %147, ptr noundef %148)
  %149 = load ptr, ptr %11, align 8, !tbaa !5
  %150 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %149, i32 0, i32 9
  %151 = load i64, ptr %13, align 8, !tbaa !9
  %152 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %150, i64 noundef %151, ptr noundef %152)
  %153 = load ptr, ptr %11, align 8, !tbaa !5
  %154 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %153, i32 0, i32 10
  %155 = load i64, ptr %13, align 8, !tbaa !9
  %156 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %154, i64 noundef %155, ptr noundef %156)
  %157 = load ptr, ptr %11, align 8, !tbaa !5
  %158 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %157, i32 0, i32 11
  %159 = load i64, ptr %13, align 8, !tbaa !9
  %160 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %158, i64 noundef %159, ptr noundef %160)
  %161 = load ptr, ptr %11, align 8, !tbaa !5
  %162 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %161, i32 0, i32 12
  %163 = load i64, ptr %13, align 8, !tbaa !9
  %164 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %162, i64 noundef %163, ptr noundef %164)
  %165 = load ptr, ptr %7, align 8, !tbaa !5
  %166 = load ptr, ptr %11, align 8, !tbaa !5
  %167 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %166, i32 0, i32 5
  %168 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_implL21sptrf_sparsetrailinitEPNS_12sparsematrixEPNS_16sluv2sparsetrailEPNS_8ae_stateE(ptr noundef %165, ptr noundef %167, ptr noundef %168)
  %169 = load ptr, ptr %11, align 8, !tbaa !5
  %170 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %169, i32 0, i32 6
  %171 = load i64, ptr %13, align 8, !tbaa !9
  %172 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_implL20sptrf_densetrailinitEPNS_15sluv2densetrailElPNS_8ae_stateE(ptr noundef %170, i64 noundef %171, ptr noundef %172)
  %173 = load double, ptr @_ZN11alglib_implL14sptrf_densebndE, align 8, !tbaa !31
  %174 = load i64, ptr %13, align 8, !tbaa !9
  %175 = sitofp i64 %174 to double
  %176 = fmul double %173, %175
  %177 = load ptr, ptr %12, align 8, !tbaa !5
  %178 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %176, ptr noundef %177)
  %179 = add nsw i64 %178, 1
  store i64 %179, ptr %30, align 8, !tbaa !9
  %180 = load i8, ptr %29, align 1, !tbaa !11, !range !33, !noundef !34
  %181 = trunc i8 %180 to i1
  br i1 %181, label %182, label %213

182:                                              ; preds = %88
  store i64 0, ptr %15, align 8, !tbaa !9
  br label %183

183:                                              ; preds = %209, %182
  %184 = load i64, ptr %15, align 8, !tbaa !9
  %185 = load i64, ptr %13, align 8, !tbaa !9
  %186 = sub nsw i64 %185, 1
  %187 = icmp sle i64 %184, %186
  br i1 %187, label %188, label %212

188:                                              ; preds = %183
  %189 = load ptr, ptr %11, align 8, !tbaa !5
  %190 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %189, i32 0, i32 5
  %191 = getelementptr inbounds %"struct.alglib_impl::sluv2sparsetrail", ptr %190, i32 0, i32 2
  %192 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %191, i32 0, i32 4
  %193 = load ptr, ptr %192, align 8, !tbaa !22
  %194 = load i64, ptr %15, align 8, !tbaa !9
  %195 = getelementptr inbounds i64, ptr %193, i64 %194
  %196 = load i64, ptr %195, align 8, !tbaa !9
  %197 = load i64, ptr %30, align 8, !tbaa !9
  %198 = icmp sgt i64 %196, %197
  br i1 %198, label %199, label %208

199:                                              ; preds = %188
  %200 = load ptr, ptr %11, align 8, !tbaa !5
  %201 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %200, i32 0, i32 5
  %202 = load i64, ptr %15, align 8, !tbaa !9
  %203 = load ptr, ptr %11, align 8, !tbaa !5
  %204 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %203, i32 0, i32 4
  %205 = load ptr, ptr %11, align 8, !tbaa !5
  %206 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %205, i32 0, i32 6
  %207 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_implL24sptrf_sparsetraildensifyEPNS_16sluv2sparsetrailElPNS_16sluv2list1matrixEPNS_15sluv2densetrailEPNS_8ae_stateE(ptr noundef %201, i64 noundef %202, ptr noundef %204, ptr noundef %206, ptr noundef %207)
  br label %208

208:                                              ; preds = %199, %188
  br label %209

209:                                              ; preds = %208
  %210 = load i64, ptr %15, align 8, !tbaa !9
  %211 = add nsw i64 %210, 1
  store i64 %211, ptr %15, align 8, !tbaa !9
  br label %183, !llvm.loop !35

212:                                              ; preds = %183
  br label %213

213:                                              ; preds = %212, %88
  store i64 0, ptr %14, align 8, !tbaa !9
  br label %214

214:                                              ; preds = %506, %213
  %215 = load i64, ptr %14, align 8, !tbaa !9
  %216 = load i64, ptr %13, align 8, !tbaa !9
  %217 = sub nsw i64 %216, 1
  %218 = icmp sle i64 %215, %217
  br i1 %218, label %219, label %509

219:                                              ; preds = %214
  %220 = load ptr, ptr %11, align 8, !tbaa !5
  %221 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %220, i32 0, i32 5
  %222 = load i64, ptr %8, align 8, !tbaa !9
  %223 = load ptr, ptr %12, align 8, !tbaa !5
  %224 = call noundef zeroext i1 @_ZN11alglib_implL26sptrf_sparsetrailfindpivotEPNS_16sluv2sparsetrailElPlS2_PNS_8ae_stateE(ptr noundef %221, i64 noundef %222, ptr noundef %20, ptr noundef %21, ptr noundef %223)
  br i1 %224, label %235, label %225

225:                                              ; preds = %219
  %226 = load ptr, ptr %11, align 8, !tbaa !5
  %227 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %226, i32 0, i32 6
  %228 = getelementptr inbounds %"struct.alglib_impl::sluv2densetrail", ptr %227, i32 0, i32 1
  %229 = load i64, ptr %228, align 8, !tbaa !36
  %230 = load i64, ptr %14, align 8, !tbaa !9
  %231 = add nsw i64 %229, %230
  %232 = load i64, ptr %13, align 8, !tbaa !9
  %233 = icmp eq i64 %231, %232
  %234 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %233, ptr noundef @.str.218, ptr noundef %234)
  br label %509

235:                                              ; preds = %219
  %236 = load i64, ptr %21, align 8, !tbaa !9
  %237 = load ptr, ptr %10, align 8, !tbaa !5
  %238 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %237, i32 0, i32 4
  %239 = load ptr, ptr %238, align 8, !tbaa !22
  %240 = load i64, ptr %14, align 8, !tbaa !9
  %241 = getelementptr inbounds i64, ptr %239, i64 %240
  store i64 %236, ptr %241, align 8, !tbaa !9
  %242 = load i64, ptr %20, align 8, !tbaa !9
  %243 = load ptr, ptr %9, align 8, !tbaa !5
  %244 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %243, i32 0, i32 4
  %245 = load ptr, ptr %244, align 8, !tbaa !22
  %246 = load i64, ptr %14, align 8, !tbaa !9
  %247 = getelementptr inbounds i64, ptr %245, i64 %246
  store i64 %242, ptr %247, align 8, !tbaa !9
  %248 = load ptr, ptr %11, align 8, !tbaa !5
  %249 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %248, i32 0, i32 7
  %250 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %249, i32 0, i32 4
  %251 = load ptr, ptr %250, align 8, !tbaa !22
  %252 = load i64, ptr %14, align 8, !tbaa !9
  %253 = getelementptr inbounds i64, ptr %251, i64 %252
  %254 = load i64, ptr %253, align 8, !tbaa !9
  store i64 %254, ptr %16, align 8, !tbaa !9
  %255 = load ptr, ptr %11, align 8, !tbaa !5
  %256 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %255, i32 0, i32 7
  %257 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %256, i32 0, i32 4
  %258 = load ptr, ptr %257, align 8, !tbaa !22
  %259 = load i64, ptr %20, align 8, !tbaa !9
  %260 = getelementptr inbounds i64, ptr %258, i64 %259
  %261 = load i64, ptr %260, align 8, !tbaa !9
  %262 = load ptr, ptr %11, align 8, !tbaa !5
  %263 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %262, i32 0, i32 7
  %264 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %263, i32 0, i32 4
  %265 = load ptr, ptr %264, align 8, !tbaa !22
  %266 = load i64, ptr %14, align 8, !tbaa !9
  %267 = getelementptr inbounds i64, ptr %265, i64 %266
  store i64 %261, ptr %267, align 8, !tbaa !9
  %268 = load i64, ptr %16, align 8, !tbaa !9
  %269 = load ptr, ptr %11, align 8, !tbaa !5
  %270 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %269, i32 0, i32 7
  %271 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %270, i32 0, i32 4
  %272 = load ptr, ptr %271, align 8, !tbaa !22
  %273 = load i64, ptr %20, align 8, !tbaa !9
  %274 = getelementptr inbounds i64, ptr %272, i64 %273
  store i64 %268, ptr %274, align 8, !tbaa !9
  %275 = load ptr, ptr %11, align 8, !tbaa !5
  %276 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %275, i32 0, i32 3
  %277 = load i64, ptr %14, align 8, !tbaa !9
  %278 = load i64, ptr %20, align 8, !tbaa !9
  %279 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_implL20sptrf_sluv2list1swapEPNS_16sluv2list1matrixEllPNS_8ae_stateE(ptr noundef %276, i64 noundef %277, i64 noundef %278, ptr noundef %279)
  %280 = load ptr, ptr %11, align 8, !tbaa !5
  %281 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %280, i32 0, i32 4
  %282 = load i64, ptr %14, align 8, !tbaa !9
  %283 = load i64, ptr %21, align 8, !tbaa !9
  %284 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_implL20sptrf_sluv2list1swapEPNS_16sluv2list1matrixEllPNS_8ae_stateE(ptr noundef %281, i64 noundef %282, i64 noundef %283, ptr noundef %284)
  %285 = load ptr, ptr %11, align 8, !tbaa !5
  %286 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %285, i32 0, i32 5
  %287 = load i64, ptr %20, align 8, !tbaa !9
  %288 = load i64, ptr %21, align 8, !tbaa !9
  %289 = load ptr, ptr %11, align 8, !tbaa !5
  %290 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %289, i32 0, i32 9
  %291 = load ptr, ptr %11, align 8, !tbaa !5
  %292 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %291, i32 0, i32 11
  %293 = load ptr, ptr %11, align 8, !tbaa !5
  %294 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %293, i32 0, i32 10
  %295 = load ptr, ptr %11, align 8, !tbaa !5
  %296 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %295, i32 0, i32 12
  %297 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_implL25sptrf_sparsetrailpivotoutEPNS_16sluv2sparsetrailEllPdPNS_9ae_vectorES4_PlS4_S4_S5_PNS_8ae_stateE(ptr noundef %286, i64 noundef %287, i64 noundef %288, ptr noundef %26, ptr noundef %290, ptr noundef %292, ptr noundef %24, ptr noundef %294, ptr noundef %296, ptr noundef %25, ptr noundef %297)
  %298 = load i8, ptr %31, align 1, !tbaa !11, !range !33, !noundef !34
  %299 = trunc i8 %298 to i1
  br i1 %299, label %300, label %303

300:                                              ; preds = %235
  %301 = load double, ptr %26, align 8, !tbaa !31
  %302 = fcmp une double %301, 0.000000e+00
  br label %303

303:                                              ; preds = %300, %235
  %304 = phi i1 [ false, %235 ], [ %302, %300 ]
  %305 = zext i1 %304 to i8
  store i8 %305, ptr %31, align 1, !tbaa !11
  %306 = load ptr, ptr %11, align 8, !tbaa !5
  %307 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %306, i32 0, i32 6
  %308 = getelementptr inbounds %"struct.alglib_impl::sluv2densetrail", ptr %307, i32 0, i32 1
  %309 = load i64, ptr %308, align 8, !tbaa !36
  store i64 %309, ptr %28, align 8, !tbaa !9
  store i64 0, ptr %15, align 8, !tbaa !9
  br label %310

310:                                              ; preds = %359, %303
  %311 = load i64, ptr %15, align 8, !tbaa !9
  %312 = load i64, ptr %28, align 8, !tbaa !9
  %313 = sub nsw i64 %312, 1
  %314 = icmp sle i64 %311, %313
  br i1 %314, label %315, label %362

315:                                              ; preds = %310
  %316 = load ptr, ptr %11, align 8, !tbaa !5
  %317 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %316, i32 0, i32 6
  %318 = getelementptr inbounds %"struct.alglib_impl::sluv2densetrail", ptr %317, i32 0, i32 2
  %319 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %318, i32 0, i32 6
  %320 = load ptr, ptr %319, align 8, !tbaa !22
  %321 = load i64, ptr %14, align 8, !tbaa !9
  %322 = getelementptr inbounds ptr, ptr %320, i64 %321
  %323 = load ptr, ptr %322, align 8, !tbaa !5
  %324 = load i64, ptr %15, align 8, !tbaa !9
  %325 = getelementptr inbounds double, ptr %323, i64 %324
  %326 = load double, ptr %325, align 8, !tbaa !31
  store double %326, ptr %22, align 8, !tbaa !31
  %327 = load ptr, ptr %11, align 8, !tbaa !5
  %328 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %327, i32 0, i32 6
  %329 = getelementptr inbounds %"struct.alglib_impl::sluv2densetrail", ptr %328, i32 0, i32 2
  %330 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %329, i32 0, i32 6
  %331 = load ptr, ptr %330, align 8, !tbaa !22
  %332 = load i64, ptr %20, align 8, !tbaa !9
  %333 = getelementptr inbounds ptr, ptr %331, i64 %332
  %334 = load ptr, ptr %333, align 8, !tbaa !5
  %335 = load i64, ptr %15, align 8, !tbaa !9
  %336 = getelementptr inbounds double, ptr %334, i64 %335
  %337 = load double, ptr %336, align 8, !tbaa !31
  %338 = load ptr, ptr %11, align 8, !tbaa !5
  %339 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %338, i32 0, i32 6
  %340 = getelementptr inbounds %"struct.alglib_impl::sluv2densetrail", ptr %339, i32 0, i32 2
  %341 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %340, i32 0, i32 6
  %342 = load ptr, ptr %341, align 8, !tbaa !22
  %343 = load i64, ptr %14, align 8, !tbaa !9
  %344 = getelementptr inbounds ptr, ptr %342, i64 %343
  %345 = load ptr, ptr %344, align 8, !tbaa !5
  %346 = load i64, ptr %15, align 8, !tbaa !9
  %347 = getelementptr inbounds double, ptr %345, i64 %346
  store double %337, ptr %347, align 8, !tbaa !31
  %348 = load double, ptr %22, align 8, !tbaa !31
  %349 = load ptr, ptr %11, align 8, !tbaa !5
  %350 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %349, i32 0, i32 6
  %351 = getelementptr inbounds %"struct.alglib_impl::sluv2densetrail", ptr %350, i32 0, i32 2
  %352 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %351, i32 0, i32 6
  %353 = load ptr, ptr %352, align 8, !tbaa !22
  %354 = load i64, ptr %20, align 8, !tbaa !9
  %355 = getelementptr inbounds ptr, ptr %353, i64 %354
  %356 = load ptr, ptr %355, align 8, !tbaa !5
  %357 = load i64, ptr %15, align 8, !tbaa !9
  %358 = getelementptr inbounds double, ptr %356, i64 %357
  store double %348, ptr %358, align 8, !tbaa !31
  br label %359

359:                                              ; preds = %315
  %360 = load i64, ptr %15, align 8, !tbaa !9
  %361 = add nsw i64 %360, 1
  store i64 %361, ptr %15, align 8, !tbaa !9
  br label %310, !llvm.loop !37

362:                                              ; preds = %310
  %363 = load ptr, ptr %11, align 8, !tbaa !5
  %364 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %363, i32 0, i32 4
  %365 = load i64, ptr %14, align 8, !tbaa !9
  %366 = load double, ptr %26, align 8, !tbaa !31
  %367 = load i64, ptr %13, align 8, !tbaa !9
  %368 = load ptr, ptr %11, align 8, !tbaa !5
  %369 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %368, i32 0, i32 2
  %370 = load i64, ptr %14, align 8, !tbaa !9
  %371 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_implL38sptrf_sluv2list1appendsequencetomatrixEPNS_16sluv2list1matrixElbdlPNS_12sparsematrixElPNS_8ae_stateE(ptr noundef %364, i64 noundef %365, i1 noundef zeroext true, double noundef %366, i64 noundef %367, ptr noundef %369, i64 noundef %370, ptr noundef %371)
  %372 = load ptr, ptr %11, align 8, !tbaa !5
  %373 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %372, i32 0, i32 3
  %374 = load i64, ptr %14, align 8, !tbaa !9
  %375 = load i64, ptr %13, align 8, !tbaa !9
  %376 = load ptr, ptr %11, align 8, !tbaa !5
  %377 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %376, i32 0, i32 1
  %378 = load i64, ptr %14, align 8, !tbaa !9
  %379 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_implL38sptrf_sluv2list1appendsequencetomatrixEPNS_16sluv2list1matrixElbdlPNS_12sparsematrixElPNS_8ae_stateE(ptr noundef %373, i64 noundef %374, i1 noundef zeroext false, double noundef 0.000000e+00, i64 noundef %375, ptr noundef %377, i64 noundef %378, ptr noundef %379)
  %380 = load ptr, ptr %11, align 8, !tbaa !5
  %381 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %380, i32 0, i32 3
  %382 = load ptr, ptr %11, align 8, !tbaa !5
  %383 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %382, i32 0, i32 9
  %384 = load ptr, ptr %11, align 8, !tbaa !5
  %385 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %384, i32 0, i32 11
  %386 = load i64, ptr %24, align 8, !tbaa !9
  %387 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_implL32sptrf_sluv2list1pushsparsevectorEPNS_16sluv2list1matrixEPNS_9ae_vectorES3_lPNS_8ae_stateE(ptr noundef %381, ptr noundef %383, ptr noundef %385, i64 noundef %386, ptr noundef %387)
  %388 = load ptr, ptr %11, align 8, !tbaa !5
  %389 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %388, i32 0, i32 4
  %390 = load ptr, ptr %11, align 8, !tbaa !5
  %391 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %390, i32 0, i32 10
  %392 = load ptr, ptr %11, align 8, !tbaa !5
  %393 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %392, i32 0, i32 12
  %394 = load i64, ptr %25, align 8, !tbaa !9
  %395 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_implL32sptrf_sluv2list1pushsparsevectorEPNS_16sluv2list1matrixEPNS_9ae_vectorES3_lPNS_8ae_stateE(ptr noundef %389, ptr noundef %391, ptr noundef %393, i64 noundef %394, ptr noundef %395)
  %396 = load i64, ptr %24, align 8, !tbaa !9
  %397 = load i64, ptr %25, align 8, !tbaa !9
  %398 = load ptr, ptr %11, align 8, !tbaa !5
  %399 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %398, i32 0, i32 6
  %400 = getelementptr inbounds %"struct.alglib_impl::sluv2densetrail", ptr %399, i32 0, i32 1
  %401 = load i64, ptr %400, align 8, !tbaa !36
  %402 = add nsw i64 %397, %401
  %403 = mul nsw i64 %396, %402
  %404 = icmp sgt i64 %403, 0
  br i1 %404, label %405, label %505

405:                                              ; preds = %362
  %406 = load ptr, ptr %11, align 8, !tbaa !5
  %407 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %406, i32 0, i32 6
  %408 = getelementptr inbounds %"struct.alglib_impl::sluv2densetrail", ptr %407, i32 0, i32 1
  %409 = load i64, ptr %408, align 8, !tbaa !36
  %410 = icmp sgt i64 %409, 0
  br i1 %410, label %411, label %485

411:                                              ; preds = %405
  %412 = load ptr, ptr %11, align 8, !tbaa !5
  %413 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %412, i32 0, i32 6
  %414 = getelementptr inbounds %"struct.alglib_impl::sluv2densetrail", ptr %413, i32 0, i32 1
  %415 = load i64, ptr %414, align 8, !tbaa !36
  store i64 %415, ptr %28, align 8, !tbaa !9
  store i64 0, ptr %15, align 8, !tbaa !9
  br label %416

416:                                              ; preds = %481, %411
  %417 = load i64, ptr %15, align 8, !tbaa !9
  %418 = load i64, ptr %24, align 8, !tbaa !9
  %419 = sub nsw i64 %418, 1
  %420 = icmp sle i64 %417, %419
  br i1 %420, label %421, label %484

421:                                              ; preds = %416
  %422 = load ptr, ptr %11, align 8, !tbaa !5
  %423 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %422, i32 0, i32 9
  %424 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %423, i32 0, i32 4
  %425 = load ptr, ptr %424, align 8, !tbaa !22
  %426 = load i64, ptr %15, align 8, !tbaa !9
  %427 = getelementptr inbounds i64, ptr %425, i64 %426
  %428 = load i64, ptr %427, align 8, !tbaa !9
  store i64 %428, ptr %18, align 8, !tbaa !9
  %429 = load ptr, ptr %11, align 8, !tbaa !5
  %430 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %429, i32 0, i32 11
  %431 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %430, i32 0, i32 4
  %432 = load ptr, ptr %431, align 8, !tbaa !22
  %433 = load i64, ptr %15, align 8, !tbaa !9
  %434 = getelementptr inbounds double, ptr %432, i64 %433
  %435 = load double, ptr %434, align 8, !tbaa !31
  store double %435, ptr %23, align 8, !tbaa !31
  store i64 0, ptr %16, align 8, !tbaa !9
  br label %436

436:                                              ; preds = %477, %421
  %437 = load i64, ptr %16, align 8, !tbaa !9
  %438 = load i64, ptr %28, align 8, !tbaa !9
  %439 = sub nsw i64 %438, 1
  %440 = icmp sle i64 %437, %439
  br i1 %440, label %441, label %480

441:                                              ; preds = %436
  %442 = load ptr, ptr %11, align 8, !tbaa !5
  %443 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %442, i32 0, i32 6
  %444 = getelementptr inbounds %"struct.alglib_impl::sluv2densetrail", ptr %443, i32 0, i32 2
  %445 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %444, i32 0, i32 6
  %446 = load ptr, ptr %445, align 8, !tbaa !22
  %447 = load i64, ptr %18, align 8, !tbaa !9
  %448 = getelementptr inbounds ptr, ptr %446, i64 %447
  %449 = load ptr, ptr %448, align 8, !tbaa !5
  %450 = load i64, ptr %16, align 8, !tbaa !9
  %451 = getelementptr inbounds double, ptr %449, i64 %450
  %452 = load double, ptr %451, align 8, !tbaa !31
  %453 = load double, ptr %23, align 8, !tbaa !31
  %454 = load ptr, ptr %11, align 8, !tbaa !5
  %455 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %454, i32 0, i32 6
  %456 = getelementptr inbounds %"struct.alglib_impl::sluv2densetrail", ptr %455, i32 0, i32 2
  %457 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %456, i32 0, i32 6
  %458 = load ptr, ptr %457, align 8, !tbaa !22
  %459 = load i64, ptr %14, align 8, !tbaa !9
  %460 = getelementptr inbounds ptr, ptr %458, i64 %459
  %461 = load ptr, ptr %460, align 8, !tbaa !5
  %462 = load i64, ptr %16, align 8, !tbaa !9
  %463 = getelementptr inbounds double, ptr %461, i64 %462
  %464 = load double, ptr %463, align 8, !tbaa !31
  %465 = fneg double %453
  %466 = call double @llvm.fmuladd.f64(double %465, double %464, double %452)
  %467 = load ptr, ptr %11, align 8, !tbaa !5
  %468 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %467, i32 0, i32 6
  %469 = getelementptr inbounds %"struct.alglib_impl::sluv2densetrail", ptr %468, i32 0, i32 2
  %470 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %469, i32 0, i32 6
  %471 = load ptr, ptr %470, align 8, !tbaa !22
  %472 = load i64, ptr %18, align 8, !tbaa !9
  %473 = getelementptr inbounds ptr, ptr %471, i64 %472
  %474 = load ptr, ptr %473, align 8, !tbaa !5
  %475 = load i64, ptr %16, align 8, !tbaa !9
  %476 = getelementptr inbounds double, ptr %474, i64 %475
  store double %466, ptr %476, align 8, !tbaa !31
  br label %477

477:                                              ; preds = %441
  %478 = load i64, ptr %16, align 8, !tbaa !9
  %479 = add nsw i64 %478, 1
  store i64 %479, ptr %16, align 8, !tbaa !9
  br label %436, !llvm.loop !38

480:                                              ; preds = %436
  br label %481

481:                                              ; preds = %480
  %482 = load i64, ptr %15, align 8, !tbaa !9
  %483 = add nsw i64 %482, 1
  store i64 %483, ptr %15, align 8, !tbaa !9
  br label %416, !llvm.loop !39

484:                                              ; preds = %416
  br label %485

485:                                              ; preds = %484, %405
  %486 = load ptr, ptr %11, align 8, !tbaa !5
  %487 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %486, i32 0, i32 5
  %488 = load ptr, ptr %11, align 8, !tbaa !5
  %489 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %488, i32 0, i32 9
  %490 = load ptr, ptr %11, align 8, !tbaa !5
  %491 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %490, i32 0, i32 11
  %492 = load i64, ptr %24, align 8, !tbaa !9
  %493 = load ptr, ptr %11, align 8, !tbaa !5
  %494 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %493, i32 0, i32 10
  %495 = load ptr, ptr %11, align 8, !tbaa !5
  %496 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %495, i32 0, i32 12
  %497 = load i64, ptr %25, align 8, !tbaa !9
  %498 = load ptr, ptr %11, align 8, !tbaa !5
  %499 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %498, i32 0, i32 4
  %500 = load ptr, ptr %11, align 8, !tbaa !5
  %501 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %500, i32 0, i32 6
  %502 = load i8, ptr %29, align 1, !tbaa !11, !range !33, !noundef !34
  %503 = trunc i8 %502 to i1
  %504 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_implL23sptrf_sparsetrailupdateEPNS_16sluv2sparsetrailEPNS_9ae_vectorES3_lS3_S3_lPNS_16sluv2list1matrixEPNS_15sluv2densetrailEbPNS_8ae_stateE(ptr noundef %487, ptr noundef %489, ptr noundef %491, i64 noundef %492, ptr noundef %494, ptr noundef %496, i64 noundef %497, ptr noundef %499, ptr noundef %501, i1 noundef zeroext %503, ptr noundef %504)
  br label %505

505:                                              ; preds = %485, %362
  br label %506

506:                                              ; preds = %505
  %507 = load i64, ptr %14, align 8, !tbaa !9
  %508 = add nsw i64 %507, 1
  store i64 %508, ptr %14, align 8, !tbaa !9
  br label %214, !llvm.loop !40

509:                                              ; preds = %225, %214
  %510 = load ptr, ptr %11, align 8, !tbaa !5
  %511 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %510, i32 0, i32 6
  %512 = getelementptr inbounds %"struct.alglib_impl::sluv2densetrail", ptr %511, i32 0, i32 1
  %513 = load i64, ptr %512, align 8, !tbaa !36
  %514 = icmp sgt i64 %513, 0
  br i1 %514, label %515, label %1120

515:                                              ; preds = %509
  %516 = load ptr, ptr %11, align 8, !tbaa !5
  %517 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %516, i32 0, i32 6
  %518 = getelementptr inbounds %"struct.alglib_impl::sluv2densetrail", ptr %517, i32 0, i32 1
  %519 = load i64, ptr %518, align 8, !tbaa !36
  store i64 %519, ptr %28, align 8, !tbaa !9
  %520 = load i64, ptr %13, align 8, !tbaa !9
  %521 = load i64, ptr %28, align 8, !tbaa !9
  %522 = sub nsw i64 %520, %521
  store i64 %522, ptr %15, align 8, !tbaa !9
  br label %523

523:                                              ; preds = %605, %515
  %524 = load i64, ptr %15, align 8, !tbaa !9
  %525 = load i64, ptr %13, align 8, !tbaa !9
  %526 = sub nsw i64 %525, 1
  %527 = icmp sle i64 %524, %526
  br i1 %527, label %528, label %608

528:                                              ; preds = %523
  %529 = load ptr, ptr %11, align 8, !tbaa !5
  %530 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %529, i32 0, i32 6
  %531 = getelementptr inbounds %"struct.alglib_impl::sluv2densetrail", ptr %530, i32 0, i32 3
  %532 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %531, i32 0, i32 4
  %533 = load ptr, ptr %532, align 8, !tbaa !22
  %534 = load i64, ptr %15, align 8, !tbaa !9
  %535 = load i64, ptr %13, align 8, !tbaa !9
  %536 = load i64, ptr %28, align 8, !tbaa !9
  %537 = sub nsw i64 %535, %536
  %538 = sub nsw i64 %534, %537
  %539 = getelementptr inbounds i64, ptr %533, i64 %538
  %540 = load i64, ptr %539, align 8, !tbaa !9
  store i64 %540, ptr %14, align 8, !tbaa !9
  store i64 -1, ptr %17, align 8, !tbaa !9
  %541 = load i64, ptr %15, align 8, !tbaa !9
  store i64 %541, ptr %16, align 8, !tbaa !9
  br label %542

542:                                              ; preds = %561, %528
  %543 = load i64, ptr %16, align 8, !tbaa !9
  %544 = load i64, ptr %13, align 8, !tbaa !9
  %545 = sub nsw i64 %544, 1
  %546 = icmp sle i64 %543, %545
  br i1 %546, label %547, label %564

547:                                              ; preds = %542
  %548 = load ptr, ptr %11, align 8, !tbaa !5
  %549 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %548, i32 0, i32 5
  %550 = getelementptr inbounds %"struct.alglib_impl::sluv2sparsetrail", ptr %549, i32 0, i32 7
  %551 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %550, i32 0, i32 4
  %552 = load ptr, ptr %551, align 8, !tbaa !22
  %553 = load i64, ptr %16, align 8, !tbaa !9
  %554 = getelementptr inbounds i64, ptr %552, i64 %553
  %555 = load i64, ptr %554, align 8, !tbaa !9
  %556 = load i64, ptr %14, align 8, !tbaa !9
  %557 = icmp eq i64 %555, %556
  br i1 %557, label %558, label %560

558:                                              ; preds = %547
  %559 = load i64, ptr %16, align 8, !tbaa !9
  store i64 %559, ptr %17, align 8, !tbaa !9
  br label %564

560:                                              ; preds = %547
  br label %561

561:                                              ; preds = %560
  %562 = load i64, ptr %16, align 8, !tbaa !9
  %563 = add nsw i64 %562, 1
  store i64 %563, ptr %16, align 8, !tbaa !9
  br label %542, !llvm.loop !41

564:                                              ; preds = %558, %542
  %565 = load i64, ptr %17, align 8, !tbaa !9
  %566 = icmp sge i64 %565, 0
  %567 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %566, ptr noundef @.str.219, ptr noundef %567)
  %568 = load ptr, ptr %11, align 8, !tbaa !5
  %569 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %568, i32 0, i32 5
  %570 = getelementptr inbounds %"struct.alglib_impl::sluv2sparsetrail", ptr %569, i32 0, i32 7
  %571 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %570, i32 0, i32 4
  %572 = load ptr, ptr %571, align 8, !tbaa !22
  %573 = load i64, ptr %15, align 8, !tbaa !9
  %574 = getelementptr inbounds i64, ptr %572, i64 %573
  %575 = load i64, ptr %574, align 8, !tbaa !9
  store i64 %575, ptr %14, align 8, !tbaa !9
  %576 = load ptr, ptr %11, align 8, !tbaa !5
  %577 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %576, i32 0, i32 5
  %578 = getelementptr inbounds %"struct.alglib_impl::sluv2sparsetrail", ptr %577, i32 0, i32 7
  %579 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %578, i32 0, i32 4
  %580 = load ptr, ptr %579, align 8, !tbaa !22
  %581 = load i64, ptr %17, align 8, !tbaa !9
  %582 = getelementptr inbounds i64, ptr %580, i64 %581
  %583 = load i64, ptr %582, align 8, !tbaa !9
  %584 = load ptr, ptr %11, align 8, !tbaa !5
  %585 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %584, i32 0, i32 5
  %586 = getelementptr inbounds %"struct.alglib_impl::sluv2sparsetrail", ptr %585, i32 0, i32 7
  %587 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %586, i32 0, i32 4
  %588 = load ptr, ptr %587, align 8, !tbaa !22
  %589 = load i64, ptr %15, align 8, !tbaa !9
  %590 = getelementptr inbounds i64, ptr %588, i64 %589
  store i64 %583, ptr %590, align 8, !tbaa !9
  %591 = load i64, ptr %14, align 8, !tbaa !9
  %592 = load ptr, ptr %11, align 8, !tbaa !5
  %593 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %592, i32 0, i32 5
  %594 = getelementptr inbounds %"struct.alglib_impl::sluv2sparsetrail", ptr %593, i32 0, i32 7
  %595 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %594, i32 0, i32 4
  %596 = load ptr, ptr %595, align 8, !tbaa !22
  %597 = load i64, ptr %17, align 8, !tbaa !9
  %598 = getelementptr inbounds i64, ptr %596, i64 %597
  store i64 %591, ptr %598, align 8, !tbaa !9
  %599 = load i64, ptr %17, align 8, !tbaa !9
  %600 = load ptr, ptr %10, align 8, !tbaa !5
  %601 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %600, i32 0, i32 4
  %602 = load ptr, ptr %601, align 8, !tbaa !22
  %603 = load i64, ptr %15, align 8, !tbaa !9
  %604 = getelementptr inbounds i64, ptr %602, i64 %603
  store i64 %599, ptr %604, align 8, !tbaa !9
  br label %605

605:                                              ; preds = %564
  %606 = load i64, ptr %15, align 8, !tbaa !9
  %607 = add nsw i64 %606, 1
  store i64 %607, ptr %15, align 8, !tbaa !9
  br label %523, !llvm.loop !42

608:                                              ; preds = %523
  %609 = load ptr, ptr %11, align 8, !tbaa !5
  %610 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %609, i32 0, i32 8
  %611 = load ptr, ptr %11, align 8, !tbaa !5
  %612 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %611, i32 0, i32 6
  %613 = getelementptr inbounds %"struct.alglib_impl::sluv2densetrail", ptr %612, i32 0, i32 1
  %614 = load i64, ptr %613, align 8, !tbaa !36
  %615 = load ptr, ptr %11, align 8, !tbaa !5
  %616 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %615, i32 0, i32 6
  %617 = getelementptr inbounds %"struct.alglib_impl::sluv2densetrail", ptr %616, i32 0, i32 1
  %618 = load i64, ptr %617, align 8, !tbaa !36
  %619 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %610, i64 noundef %614, i64 noundef %618, ptr noundef %619)
  store i64 0, ptr %15, align 8, !tbaa !9
  br label %620

620:                                              ; preds = %660, %608
  %621 = load i64, ptr %15, align 8, !tbaa !9
  %622 = load i64, ptr %28, align 8, !tbaa !9
  %623 = sub nsw i64 %622, 1
  %624 = icmp sle i64 %621, %623
  br i1 %624, label %625, label %663

625:                                              ; preds = %620
  store i64 0, ptr %16, align 8, !tbaa !9
  br label %626

626:                                              ; preds = %656, %625
  %627 = load i64, ptr %16, align 8, !tbaa !9
  %628 = load i64, ptr %28, align 8, !tbaa !9
  %629 = sub nsw i64 %628, 1
  %630 = icmp sle i64 %627, %629
  br i1 %630, label %631, label %659

631:                                              ; preds = %626
  %632 = load ptr, ptr %11, align 8, !tbaa !5
  %633 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %632, i32 0, i32 6
  %634 = getelementptr inbounds %"struct.alglib_impl::sluv2densetrail", ptr %633, i32 0, i32 2
  %635 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %634, i32 0, i32 6
  %636 = load ptr, ptr %635, align 8, !tbaa !22
  %637 = load i64, ptr %15, align 8, !tbaa !9
  %638 = load i64, ptr %13, align 8, !tbaa !9
  %639 = load i64, ptr %28, align 8, !tbaa !9
  %640 = sub nsw i64 %638, %639
  %641 = add nsw i64 %637, %640
  %642 = getelementptr inbounds ptr, ptr %636, i64 %641
  %643 = load ptr, ptr %642, align 8, !tbaa !5
  %644 = load i64, ptr %16, align 8, !tbaa !9
  %645 = getelementptr inbounds double, ptr %643, i64 %644
  %646 = load double, ptr %645, align 8, !tbaa !31
  %647 = load ptr, ptr %11, align 8, !tbaa !5
  %648 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %647, i32 0, i32 8
  %649 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %648, i32 0, i32 6
  %650 = load ptr, ptr %649, align 8, !tbaa !22
  %651 = load i64, ptr %15, align 8, !tbaa !9
  %652 = getelementptr inbounds ptr, ptr %650, i64 %651
  %653 = load ptr, ptr %652, align 8, !tbaa !5
  %654 = load i64, ptr %16, align 8, !tbaa !9
  %655 = getelementptr inbounds double, ptr %653, i64 %654
  store double %646, ptr %655, align 8, !tbaa !31
  br label %656

656:                                              ; preds = %631
  %657 = load i64, ptr %16, align 8, !tbaa !9
  %658 = add nsw i64 %657, 1
  store i64 %658, ptr %16, align 8, !tbaa !9
  br label %626, !llvm.loop !43

659:                                              ; preds = %626
  br label %660

660:                                              ; preds = %659
  %661 = load i64, ptr %15, align 8, !tbaa !9
  %662 = add nsw i64 %661, 1
  store i64 %662, ptr %15, align 8, !tbaa !9
  br label %620, !llvm.loop !44

663:                                              ; preds = %620
  %664 = load ptr, ptr %11, align 8, !tbaa !5
  %665 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %664, i32 0, i32 13
  %666 = load i64, ptr %13, align 8, !tbaa !9
  %667 = mul nsw i64 2, %666
  %668 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %665, i64 noundef %667, ptr noundef %668)
  %669 = load ptr, ptr %11, align 8, !tbaa !5
  %670 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %669, i32 0, i32 15
  %671 = load i64, ptr %13, align 8, !tbaa !9
  %672 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %670, i64 noundef %671, ptr noundef %672)
  %673 = load ptr, ptr %11, align 8, !tbaa !5
  %674 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %673, i32 0, i32 8
  %675 = load i64, ptr %28, align 8, !tbaa !9
  %676 = load i64, ptr %28, align 8, !tbaa !9
  %677 = load ptr, ptr %11, align 8, !tbaa !5
  %678 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %677, i32 0, i32 15
  %679 = load ptr, ptr %11, align 8, !tbaa !5
  %680 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %679, i32 0, i32 13
  %681 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl13rmatrixplurecEPNS_9ae_matrixElllPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %674, i64 noundef 0, i64 noundef %675, i64 noundef %676, ptr noundef %678, ptr noundef %680, ptr noundef %681)
  store i64 0, ptr %15, align 8, !tbaa !9
  br label %682

682:                                              ; preds = %779, %663
  %683 = load i64, ptr %15, align 8, !tbaa !9
  %684 = load i64, ptr %28, align 8, !tbaa !9
  %685 = sub nsw i64 %684, 1
  %686 = icmp sle i64 %683, %685
  br i1 %686, label %687, label %782

687:                                              ; preds = %682
  %688 = load ptr, ptr %11, align 8, !tbaa !5
  %689 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %688, i32 0, i32 15
  %690 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %689, i32 0, i32 4
  %691 = load ptr, ptr %690, align 8, !tbaa !22
  %692 = load i64, ptr %15, align 8, !tbaa !9
  %693 = getelementptr inbounds i64, ptr %691, i64 %692
  %694 = load i64, ptr %693, align 8, !tbaa !9
  %695 = load i64, ptr %13, align 8, !tbaa !9
  %696 = load i64, ptr %28, align 8, !tbaa !9
  %697 = sub nsw i64 %695, %696
  %698 = add nsw i64 %694, %697
  %699 = load ptr, ptr %9, align 8, !tbaa !5
  %700 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %699, i32 0, i32 4
  %701 = load ptr, ptr %700, align 8, !tbaa !22
  %702 = load i64, ptr %15, align 8, !tbaa !9
  %703 = load i64, ptr %13, align 8, !tbaa !9
  %704 = load i64, ptr %28, align 8, !tbaa !9
  %705 = sub nsw i64 %703, %704
  %706 = add nsw i64 %702, %705
  %707 = getelementptr inbounds i64, ptr %701, i64 %706
  store i64 %698, ptr %707, align 8, !tbaa !9
  %708 = load ptr, ptr %11, align 8, !tbaa !5
  %709 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %708, i32 0, i32 3
  %710 = load i64, ptr %15, align 8, !tbaa !9
  %711 = load i64, ptr %13, align 8, !tbaa !9
  %712 = load i64, ptr %28, align 8, !tbaa !9
  %713 = sub nsw i64 %711, %712
  %714 = add nsw i64 %710, %713
  %715 = load ptr, ptr %9, align 8, !tbaa !5
  %716 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %715, i32 0, i32 4
  %717 = load ptr, ptr %716, align 8, !tbaa !22
  %718 = load i64, ptr %15, align 8, !tbaa !9
  %719 = load i64, ptr %13, align 8, !tbaa !9
  %720 = load i64, ptr %28, align 8, !tbaa !9
  %721 = sub nsw i64 %719, %720
  %722 = add nsw i64 %718, %721
  %723 = getelementptr inbounds i64, ptr %717, i64 %722
  %724 = load i64, ptr %723, align 8, !tbaa !9
  %725 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_implL20sptrf_sluv2list1swapEPNS_16sluv2list1matrixEllPNS_8ae_stateE(ptr noundef %709, i64 noundef %714, i64 noundef %724, ptr noundef %725)
  %726 = load ptr, ptr %11, align 8, !tbaa !5
  %727 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %726, i32 0, i32 7
  %728 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %727, i32 0, i32 4
  %729 = load ptr, ptr %728, align 8, !tbaa !22
  %730 = load i64, ptr %15, align 8, !tbaa !9
  %731 = load i64, ptr %13, align 8, !tbaa !9
  %732 = load i64, ptr %28, align 8, !tbaa !9
  %733 = sub nsw i64 %731, %732
  %734 = add nsw i64 %730, %733
  %735 = getelementptr inbounds i64, ptr %729, i64 %734
  %736 = load i64, ptr %735, align 8, !tbaa !9
  store i64 %736, ptr %16, align 8, !tbaa !9
  %737 = load ptr, ptr %11, align 8, !tbaa !5
  %738 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %737, i32 0, i32 7
  %739 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %738, i32 0, i32 4
  %740 = load ptr, ptr %739, align 8, !tbaa !22
  %741 = load ptr, ptr %9, align 8, !tbaa !5
  %742 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %741, i32 0, i32 4
  %743 = load ptr, ptr %742, align 8, !tbaa !22
  %744 = load i64, ptr %15, align 8, !tbaa !9
  %745 = load i64, ptr %13, align 8, !tbaa !9
  %746 = load i64, ptr %28, align 8, !tbaa !9
  %747 = sub nsw i64 %745, %746
  %748 = add nsw i64 %744, %747
  %749 = getelementptr inbounds i64, ptr %743, i64 %748
  %750 = load i64, ptr %749, align 8, !tbaa !9
  %751 = getelementptr inbounds i64, ptr %740, i64 %750
  %752 = load i64, ptr %751, align 8, !tbaa !9
  %753 = load ptr, ptr %11, align 8, !tbaa !5
  %754 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %753, i32 0, i32 7
  %755 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %754, i32 0, i32 4
  %756 = load ptr, ptr %755, align 8, !tbaa !22
  %757 = load i64, ptr %15, align 8, !tbaa !9
  %758 = load i64, ptr %13, align 8, !tbaa !9
  %759 = load i64, ptr %28, align 8, !tbaa !9
  %760 = sub nsw i64 %758, %759
  %761 = add nsw i64 %757, %760
  %762 = getelementptr inbounds i64, ptr %756, i64 %761
  store i64 %752, ptr %762, align 8, !tbaa !9
  %763 = load i64, ptr %16, align 8, !tbaa !9
  %764 = load ptr, ptr %11, align 8, !tbaa !5
  %765 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %764, i32 0, i32 7
  %766 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %765, i32 0, i32 4
  %767 = load ptr, ptr %766, align 8, !tbaa !22
  %768 = load ptr, ptr %9, align 8, !tbaa !5
  %769 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %768, i32 0, i32 4
  %770 = load ptr, ptr %769, align 8, !tbaa !22
  %771 = load i64, ptr %15, align 8, !tbaa !9
  %772 = load i64, ptr %13, align 8, !tbaa !9
  %773 = load i64, ptr %28, align 8, !tbaa !9
  %774 = sub nsw i64 %772, %773
  %775 = add nsw i64 %771, %774
  %776 = getelementptr inbounds i64, ptr %770, i64 %775
  %777 = load i64, ptr %776, align 8, !tbaa !9
  %778 = getelementptr inbounds i64, ptr %767, i64 %777
  store i64 %763, ptr %778, align 8, !tbaa !9
  br label %779

779:                                              ; preds = %687
  %780 = load i64, ptr %15, align 8, !tbaa !9
  %781 = add nsw i64 %780, 1
  store i64 %781, ptr %15, align 8, !tbaa !9
  br label %682, !llvm.loop !45

782:                                              ; preds = %682
  %783 = load ptr, ptr %11, align 8, !tbaa !5
  %784 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %783, i32 0, i32 2
  %785 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %784, i32 0, i32 1
  %786 = load ptr, ptr %11, align 8, !tbaa !5
  %787 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %786, i32 0, i32 2
  %788 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %787, i32 0, i32 2
  %789 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %788, i32 0, i32 4
  %790 = load ptr, ptr %789, align 8, !tbaa !22
  %791 = load i64, ptr %13, align 8, !tbaa !9
  %792 = load i64, ptr %28, align 8, !tbaa !9
  %793 = sub nsw i64 %791, %792
  %794 = getelementptr inbounds i64, ptr %790, i64 %793
  %795 = load i64, ptr %794, align 8, !tbaa !9
  %796 = load i64, ptr %13, align 8, !tbaa !9
  %797 = load i64, ptr %28, align 8, !tbaa !9
  %798 = mul nsw i64 %796, %797
  %799 = add nsw i64 %795, %798
  %800 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl13ivectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %785, i64 noundef %799, ptr noundef %800)
  %801 = load ptr, ptr %11, align 8, !tbaa !5
  %802 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %801, i32 0, i32 2
  %803 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %802, i32 0, i32 0
  %804 = load ptr, ptr %11, align 8, !tbaa !5
  %805 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %804, i32 0, i32 2
  %806 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %805, i32 0, i32 2
  %807 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %806, i32 0, i32 4
  %808 = load ptr, ptr %807, align 8, !tbaa !22
  %809 = load i64, ptr %13, align 8, !tbaa !9
  %810 = load i64, ptr %28, align 8, !tbaa !9
  %811 = sub nsw i64 %809, %810
  %812 = getelementptr inbounds i64, ptr %808, i64 %811
  %813 = load i64, ptr %812, align 8, !tbaa !9
  %814 = load i64, ptr %13, align 8, !tbaa !9
  %815 = load i64, ptr %28, align 8, !tbaa !9
  %816 = mul nsw i64 %814, %815
  %817 = add nsw i64 %813, %816
  %818 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %803, i64 noundef %817, ptr noundef %818)
  store i64 0, ptr %16, align 8, !tbaa !9
  br label %819

819:                                              ; preds = %982, %782
  %820 = load i64, ptr %16, align 8, !tbaa !9
  %821 = load i64, ptr %28, align 8, !tbaa !9
  %822 = sub nsw i64 %821, 1
  %823 = icmp sle i64 %820, %822
  br i1 %823, label %824, label %985

824:                                              ; preds = %819
  %825 = load ptr, ptr %11, align 8, !tbaa !5
  %826 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %825, i32 0, i32 2
  %827 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %826, i32 0, i32 2
  %828 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %827, i32 0, i32 4
  %829 = load ptr, ptr %828, align 8, !tbaa !22
  %830 = load i64, ptr %16, align 8, !tbaa !9
  %831 = load i64, ptr %13, align 8, !tbaa !9
  %832 = load i64, ptr %28, align 8, !tbaa !9
  %833 = sub nsw i64 %831, %832
  %834 = add nsw i64 %830, %833
  %835 = getelementptr inbounds i64, ptr %829, i64 %834
  %836 = load i64, ptr %835, align 8, !tbaa !9
  store i64 %836, ptr %27, align 8, !tbaa !9
  %837 = load i64, ptr %13, align 8, !tbaa !9
  %838 = load i64, ptr %28, align 8, !tbaa !9
  %839 = sub nsw i64 %837, %838
  store i64 %839, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %15, align 8, !tbaa !9
  br label %840

840:                                              ; preds = %879, %824
  %841 = load i64, ptr %15, align 8, !tbaa !9
  %842 = load i64, ptr %14, align 8, !tbaa !9
  %843 = sub nsw i64 %842, 1
  %844 = icmp sle i64 %841, %843
  br i1 %844, label %845, label %882

845:                                              ; preds = %840
  %846 = load ptr, ptr %11, align 8, !tbaa !5
  %847 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %846, i32 0, i32 6
  %848 = getelementptr inbounds %"struct.alglib_impl::sluv2densetrail", ptr %847, i32 0, i32 2
  %849 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %848, i32 0, i32 6
  %850 = load ptr, ptr %849, align 8, !tbaa !22
  %851 = load i64, ptr %15, align 8, !tbaa !9
  %852 = getelementptr inbounds ptr, ptr %850, i64 %851
  %853 = load ptr, ptr %852, align 8, !tbaa !5
  %854 = load i64, ptr %16, align 8, !tbaa !9
  %855 = getelementptr inbounds double, ptr %853, i64 %854
  %856 = load double, ptr %855, align 8, !tbaa !31
  store double %856, ptr %22, align 8, !tbaa !31
  %857 = load double, ptr %22, align 8, !tbaa !31
  %858 = fcmp une double %857, 0.000000e+00
  br i1 %858, label %859, label %878

859:                                              ; preds = %845
  %860 = load i64, ptr %15, align 8, !tbaa !9
  %861 = load ptr, ptr %11, align 8, !tbaa !5
  %862 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %861, i32 0, i32 2
  %863 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %862, i32 0, i32 1
  %864 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %863, i32 0, i32 4
  %865 = load ptr, ptr %864, align 8, !tbaa !22
  %866 = load i64, ptr %27, align 8, !tbaa !9
  %867 = getelementptr inbounds i64, ptr %865, i64 %866
  store i64 %860, ptr %867, align 8, !tbaa !9
  %868 = load double, ptr %22, align 8, !tbaa !31
  %869 = load ptr, ptr %11, align 8, !tbaa !5
  %870 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %869, i32 0, i32 2
  %871 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %870, i32 0, i32 0
  %872 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %871, i32 0, i32 4
  %873 = load ptr, ptr %872, align 8, !tbaa !22
  %874 = load i64, ptr %27, align 8, !tbaa !9
  %875 = getelementptr inbounds double, ptr %873, i64 %874
  store double %868, ptr %875, align 8, !tbaa !31
  %876 = load i64, ptr %27, align 8, !tbaa !9
  %877 = add nsw i64 %876, 1
  store i64 %877, ptr %27, align 8, !tbaa !9
  br label %878

878:                                              ; preds = %859, %845
  br label %879

879:                                              ; preds = %878
  %880 = load i64, ptr %15, align 8, !tbaa !9
  %881 = add nsw i64 %880, 1
  store i64 %881, ptr %15, align 8, !tbaa !9
  br label %840, !llvm.loop !46

882:                                              ; preds = %840
  store i64 0, ptr %15, align 8, !tbaa !9
  br label %883

883:                                              ; preds = %925, %882
  %884 = load i64, ptr %15, align 8, !tbaa !9
  %885 = load i64, ptr %16, align 8, !tbaa !9
  %886 = sub nsw i64 %885, 1
  %887 = icmp sle i64 %884, %886
  br i1 %887, label %888, label %928

888:                                              ; preds = %883
  %889 = load ptr, ptr %11, align 8, !tbaa !5
  %890 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %889, i32 0, i32 8
  %891 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %890, i32 0, i32 6
  %892 = load ptr, ptr %891, align 8, !tbaa !22
  %893 = load i64, ptr %15, align 8, !tbaa !9
  %894 = getelementptr inbounds ptr, ptr %892, i64 %893
  %895 = load ptr, ptr %894, align 8, !tbaa !5
  %896 = load i64, ptr %16, align 8, !tbaa !9
  %897 = getelementptr inbounds double, ptr %895, i64 %896
  %898 = load double, ptr %897, align 8, !tbaa !31
  store double %898, ptr %22, align 8, !tbaa !31
  %899 = load double, ptr %22, align 8, !tbaa !31
  %900 = fcmp une double %899, 0.000000e+00
  br i1 %900, label %901, label %924

901:                                              ; preds = %888
  %902 = load i64, ptr %15, align 8, !tbaa !9
  %903 = load i64, ptr %13, align 8, !tbaa !9
  %904 = load i64, ptr %28, align 8, !tbaa !9
  %905 = sub nsw i64 %903, %904
  %906 = add nsw i64 %902, %905
  %907 = load ptr, ptr %11, align 8, !tbaa !5
  %908 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %907, i32 0, i32 2
  %909 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %908, i32 0, i32 1
  %910 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %909, i32 0, i32 4
  %911 = load ptr, ptr %910, align 8, !tbaa !22
  %912 = load i64, ptr %27, align 8, !tbaa !9
  %913 = getelementptr inbounds i64, ptr %911, i64 %912
  store i64 %906, ptr %913, align 8, !tbaa !9
  %914 = load double, ptr %22, align 8, !tbaa !31
  %915 = load ptr, ptr %11, align 8, !tbaa !5
  %916 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %915, i32 0, i32 2
  %917 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %916, i32 0, i32 0
  %918 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %917, i32 0, i32 4
  %919 = load ptr, ptr %918, align 8, !tbaa !22
  %920 = load i64, ptr %27, align 8, !tbaa !9
  %921 = getelementptr inbounds double, ptr %919, i64 %920
  store double %914, ptr %921, align 8, !tbaa !31
  %922 = load i64, ptr %27, align 8, !tbaa !9
  %923 = add nsw i64 %922, 1
  store i64 %923, ptr %27, align 8, !tbaa !9
  br label %924

924:                                              ; preds = %901, %888
  br label %925

925:                                              ; preds = %924
  %926 = load i64, ptr %15, align 8, !tbaa !9
  %927 = add nsw i64 %926, 1
  store i64 %927, ptr %15, align 8, !tbaa !9
  br label %883, !llvm.loop !47

928:                                              ; preds = %883
  %929 = load ptr, ptr %11, align 8, !tbaa !5
  %930 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %929, i32 0, i32 8
  %931 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %930, i32 0, i32 6
  %932 = load ptr, ptr %931, align 8, !tbaa !22
  %933 = load i64, ptr %16, align 8, !tbaa !9
  %934 = getelementptr inbounds ptr, ptr %932, i64 %933
  %935 = load ptr, ptr %934, align 8, !tbaa !5
  %936 = load i64, ptr %16, align 8, !tbaa !9
  %937 = getelementptr inbounds double, ptr %935, i64 %936
  %938 = load double, ptr %937, align 8, !tbaa !31
  store double %938, ptr %22, align 8, !tbaa !31
  %939 = load i64, ptr %16, align 8, !tbaa !9
  %940 = load i64, ptr %13, align 8, !tbaa !9
  %941 = load i64, ptr %28, align 8, !tbaa !9
  %942 = sub nsw i64 %940, %941
  %943 = add nsw i64 %939, %942
  %944 = load ptr, ptr %11, align 8, !tbaa !5
  %945 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %944, i32 0, i32 2
  %946 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %945, i32 0, i32 1
  %947 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %946, i32 0, i32 4
  %948 = load ptr, ptr %947, align 8, !tbaa !22
  %949 = load i64, ptr %27, align 8, !tbaa !9
  %950 = getelementptr inbounds i64, ptr %948, i64 %949
  store i64 %943, ptr %950, align 8, !tbaa !9
  %951 = load double, ptr %22, align 8, !tbaa !31
  %952 = load ptr, ptr %11, align 8, !tbaa !5
  %953 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %952, i32 0, i32 2
  %954 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %953, i32 0, i32 0
  %955 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %954, i32 0, i32 4
  %956 = load ptr, ptr %955, align 8, !tbaa !22
  %957 = load i64, ptr %27, align 8, !tbaa !9
  %958 = getelementptr inbounds double, ptr %956, i64 %957
  store double %951, ptr %958, align 8, !tbaa !31
  %959 = load i64, ptr %27, align 8, !tbaa !9
  %960 = add nsw i64 %959, 1
  store i64 %960, ptr %27, align 8, !tbaa !9
  %961 = load i8, ptr %31, align 1, !tbaa !11, !range !33, !noundef !34
  %962 = trunc i8 %961 to i1
  br i1 %962, label %963, label %966

963:                                              ; preds = %928
  %964 = load double, ptr %22, align 8, !tbaa !31
  %965 = fcmp une double %964, 0.000000e+00
  br label %966

966:                                              ; preds = %963, %928
  %967 = phi i1 [ false, %928 ], [ %965, %963 ]
  %968 = zext i1 %967 to i8
  store i8 %968, ptr %31, align 1, !tbaa !11
  %969 = load i64, ptr %27, align 8, !tbaa !9
  %970 = load ptr, ptr %11, align 8, !tbaa !5
  %971 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %970, i32 0, i32 2
  %972 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %971, i32 0, i32 2
  %973 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %972, i32 0, i32 4
  %974 = load ptr, ptr %973, align 8, !tbaa !22
  %975 = load i64, ptr %16, align 8, !tbaa !9
  %976 = load i64, ptr %13, align 8, !tbaa !9
  %977 = load i64, ptr %28, align 8, !tbaa !9
  %978 = sub nsw i64 %976, %977
  %979 = add nsw i64 %975, %978
  %980 = add nsw i64 %979, 1
  %981 = getelementptr inbounds i64, ptr %974, i64 %980
  store i64 %969, ptr %981, align 8, !tbaa !9
  br label %982

982:                                              ; preds = %966
  %983 = load i64, ptr %16, align 8, !tbaa !9
  %984 = add nsw i64 %983, 1
  store i64 %984, ptr %16, align 8, !tbaa !9
  br label %819, !llvm.loop !48

985:                                              ; preds = %819
  %986 = load ptr, ptr %11, align 8, !tbaa !5
  %987 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %986, i32 0, i32 1
  %988 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %987, i32 0, i32 1
  %989 = load ptr, ptr %11, align 8, !tbaa !5
  %990 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %989, i32 0, i32 1
  %991 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %990, i32 0, i32 2
  %992 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %991, i32 0, i32 4
  %993 = load ptr, ptr %992, align 8, !tbaa !22
  %994 = load i64, ptr %13, align 8, !tbaa !9
  %995 = load i64, ptr %28, align 8, !tbaa !9
  %996 = sub nsw i64 %994, %995
  %997 = getelementptr inbounds i64, ptr %993, i64 %996
  %998 = load i64, ptr %997, align 8, !tbaa !9
  %999 = load i64, ptr %13, align 8, !tbaa !9
  %1000 = load i64, ptr %28, align 8, !tbaa !9
  %1001 = mul nsw i64 %999, %1000
  %1002 = add nsw i64 %998, %1001
  %1003 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl13ivectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %988, i64 noundef %1002, ptr noundef %1003)
  %1004 = load ptr, ptr %11, align 8, !tbaa !5
  %1005 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1004, i32 0, i32 1
  %1006 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1005, i32 0, i32 0
  %1007 = load ptr, ptr %11, align 8, !tbaa !5
  %1008 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1007, i32 0, i32 1
  %1009 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1008, i32 0, i32 2
  %1010 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1009, i32 0, i32 4
  %1011 = load ptr, ptr %1010, align 8, !tbaa !22
  %1012 = load i64, ptr %13, align 8, !tbaa !9
  %1013 = load i64, ptr %28, align 8, !tbaa !9
  %1014 = sub nsw i64 %1012, %1013
  %1015 = getelementptr inbounds i64, ptr %1011, i64 %1014
  %1016 = load i64, ptr %1015, align 8, !tbaa !9
  %1017 = load i64, ptr %13, align 8, !tbaa !9
  %1018 = load i64, ptr %28, align 8, !tbaa !9
  %1019 = mul nsw i64 %1017, %1018
  %1020 = add nsw i64 %1016, %1019
  %1021 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %1006, i64 noundef %1020, ptr noundef %1021)
  store i64 0, ptr %15, align 8, !tbaa !9
  br label %1022

1022:                                             ; preds = %1116, %985
  %1023 = load i64, ptr %15, align 8, !tbaa !9
  %1024 = load i64, ptr %28, align 8, !tbaa !9
  %1025 = sub nsw i64 %1024, 1
  %1026 = icmp sle i64 %1023, %1025
  br i1 %1026, label %1027, label %1119

1027:                                             ; preds = %1022
  %1028 = load ptr, ptr %11, align 8, !tbaa !5
  %1029 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1028, i32 0, i32 3
  %1030 = load i64, ptr %15, align 8, !tbaa !9
  %1031 = load i64, ptr %13, align 8, !tbaa !9
  %1032 = load i64, ptr %28, align 8, !tbaa !9
  %1033 = sub nsw i64 %1031, %1032
  %1034 = add nsw i64 %1030, %1033
  %1035 = load i64, ptr %13, align 8, !tbaa !9
  %1036 = load ptr, ptr %11, align 8, !tbaa !5
  %1037 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1036, i32 0, i32 1
  %1038 = load i64, ptr %15, align 8, !tbaa !9
  %1039 = load i64, ptr %13, align 8, !tbaa !9
  %1040 = load i64, ptr %28, align 8, !tbaa !9
  %1041 = sub nsw i64 %1039, %1040
  %1042 = add nsw i64 %1038, %1041
  %1043 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_implL38sptrf_sluv2list1appendsequencetomatrixEPNS_16sluv2list1matrixElbdlPNS_12sparsematrixElPNS_8ae_stateE(ptr noundef %1029, i64 noundef %1034, i1 noundef zeroext false, double noundef 0.000000e+00, i64 noundef %1035, ptr noundef %1037, i64 noundef %1042, ptr noundef %1043)
  %1044 = load ptr, ptr %11, align 8, !tbaa !5
  %1045 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1044, i32 0, i32 1
  %1046 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1045, i32 0, i32 2
  %1047 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1046, i32 0, i32 4
  %1048 = load ptr, ptr %1047, align 8, !tbaa !22
  %1049 = load i64, ptr %15, align 8, !tbaa !9
  %1050 = load i64, ptr %13, align 8, !tbaa !9
  %1051 = load i64, ptr %28, align 8, !tbaa !9
  %1052 = sub nsw i64 %1050, %1051
  %1053 = add nsw i64 %1049, %1052
  %1054 = add nsw i64 %1053, 1
  %1055 = getelementptr inbounds i64, ptr %1048, i64 %1054
  %1056 = load i64, ptr %1055, align 8, !tbaa !9
  store i64 %1056, ptr %27, align 8, !tbaa !9
  store i64 0, ptr %16, align 8, !tbaa !9
  br label %1057

1057:                                             ; preds = %1099, %1027
  %1058 = load i64, ptr %16, align 8, !tbaa !9
  %1059 = load i64, ptr %15, align 8, !tbaa !9
  %1060 = sub nsw i64 %1059, 1
  %1061 = icmp sle i64 %1058, %1060
  br i1 %1061, label %1062, label %1102

1062:                                             ; preds = %1057
  %1063 = load ptr, ptr %11, align 8, !tbaa !5
  %1064 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1063, i32 0, i32 8
  %1065 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1064, i32 0, i32 6
  %1066 = load ptr, ptr %1065, align 8, !tbaa !22
  %1067 = load i64, ptr %15, align 8, !tbaa !9
  %1068 = getelementptr inbounds ptr, ptr %1066, i64 %1067
  %1069 = load ptr, ptr %1068, align 8, !tbaa !5
  %1070 = load i64, ptr %16, align 8, !tbaa !9
  %1071 = getelementptr inbounds double, ptr %1069, i64 %1070
  %1072 = load double, ptr %1071, align 8, !tbaa !31
  store double %1072, ptr %22, align 8, !tbaa !31
  %1073 = load double, ptr %22, align 8, !tbaa !31
  %1074 = fcmp une double %1073, 0.000000e+00
  br i1 %1074, label %1075, label %1098

1075:                                             ; preds = %1062
  %1076 = load i64, ptr %16, align 8, !tbaa !9
  %1077 = load i64, ptr %13, align 8, !tbaa !9
  %1078 = load i64, ptr %28, align 8, !tbaa !9
  %1079 = sub nsw i64 %1077, %1078
  %1080 = add nsw i64 %1076, %1079
  %1081 = load ptr, ptr %11, align 8, !tbaa !5
  %1082 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1081, i32 0, i32 1
  %1083 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1082, i32 0, i32 1
  %1084 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1083, i32 0, i32 4
  %1085 = load ptr, ptr %1084, align 8, !tbaa !22
  %1086 = load i64, ptr %27, align 8, !tbaa !9
  %1087 = getelementptr inbounds i64, ptr %1085, i64 %1086
  store i64 %1080, ptr %1087, align 8, !tbaa !9
  %1088 = load double, ptr %22, align 8, !tbaa !31
  %1089 = load ptr, ptr %11, align 8, !tbaa !5
  %1090 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1089, i32 0, i32 1
  %1091 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1090, i32 0, i32 0
  %1092 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1091, i32 0, i32 4
  %1093 = load ptr, ptr %1092, align 8, !tbaa !22
  %1094 = load i64, ptr %27, align 8, !tbaa !9
  %1095 = getelementptr inbounds double, ptr %1093, i64 %1094
  store double %1088, ptr %1095, align 8, !tbaa !31
  %1096 = load i64, ptr %27, align 8, !tbaa !9
  %1097 = add nsw i64 %1096, 1
  store i64 %1097, ptr %27, align 8, !tbaa !9
  br label %1098

1098:                                             ; preds = %1075, %1062
  br label %1099

1099:                                             ; preds = %1098
  %1100 = load i64, ptr %16, align 8, !tbaa !9
  %1101 = add nsw i64 %1100, 1
  store i64 %1101, ptr %16, align 8, !tbaa !9
  br label %1057, !llvm.loop !49

1102:                                             ; preds = %1057
  %1103 = load i64, ptr %27, align 8, !tbaa !9
  %1104 = load ptr, ptr %11, align 8, !tbaa !5
  %1105 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1104, i32 0, i32 1
  %1106 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1105, i32 0, i32 2
  %1107 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1106, i32 0, i32 4
  %1108 = load ptr, ptr %1107, align 8, !tbaa !22
  %1109 = load i64, ptr %15, align 8, !tbaa !9
  %1110 = load i64, ptr %13, align 8, !tbaa !9
  %1111 = load i64, ptr %28, align 8, !tbaa !9
  %1112 = sub nsw i64 %1110, %1111
  %1113 = add nsw i64 %1109, %1112
  %1114 = add nsw i64 %1113, 1
  %1115 = getelementptr inbounds i64, ptr %1108, i64 %1114
  store i64 %1103, ptr %1115, align 8, !tbaa !9
  br label %1116

1116:                                             ; preds = %1102
  %1117 = load i64, ptr %15, align 8, !tbaa !9
  %1118 = add nsw i64 %1117, 1
  store i64 %1118, ptr %15, align 8, !tbaa !9
  br label %1022, !llvm.loop !50

1119:                                             ; preds = %1022
  br label %1120

1120:                                             ; preds = %1119, %509
  %1121 = load ptr, ptr %11, align 8, !tbaa !5
  %1122 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1121, i32 0, i32 14
  %1123 = load i64, ptr %13, align 8, !tbaa !9
  %1124 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %1122, i64 noundef %1123, ptr noundef %1124)
  store i64 0, ptr %15, align 8, !tbaa !9
  br label %1125

1125:                                             ; preds = %1155, %1120
  %1126 = load i64, ptr %15, align 8, !tbaa !9
  %1127 = load i64, ptr %13, align 8, !tbaa !9
  %1128 = sub nsw i64 %1127, 1
  %1129 = icmp sle i64 %1126, %1128
  br i1 %1129, label %1130, label %1158

1130:                                             ; preds = %1125
  %1131 = load ptr, ptr %11, align 8, !tbaa !5
  %1132 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1131, i32 0, i32 1
  %1133 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1132, i32 0, i32 2
  %1134 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1133, i32 0, i32 4
  %1135 = load ptr, ptr %1134, align 8, !tbaa !22
  %1136 = load i64, ptr %15, align 8, !tbaa !9
  %1137 = add nsw i64 %1136, 1
  %1138 = getelementptr inbounds i64, ptr %1135, i64 %1137
  %1139 = load i64, ptr %1138, align 8, !tbaa !9
  %1140 = load ptr, ptr %11, align 8, !tbaa !5
  %1141 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1140, i32 0, i32 1
  %1142 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1141, i32 0, i32 2
  %1143 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1142, i32 0, i32 4
  %1144 = load ptr, ptr %1143, align 8, !tbaa !22
  %1145 = load i64, ptr %15, align 8, !tbaa !9
  %1146 = getelementptr inbounds i64, ptr %1144, i64 %1145
  %1147 = load i64, ptr %1146, align 8, !tbaa !9
  %1148 = sub nsw i64 %1139, %1147
  %1149 = load ptr, ptr %11, align 8, !tbaa !5
  %1150 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1149, i32 0, i32 14
  %1151 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1150, i32 0, i32 4
  %1152 = load ptr, ptr %1151, align 8, !tbaa !22
  %1153 = load i64, ptr %15, align 8, !tbaa !9
  %1154 = getelementptr inbounds i64, ptr %1152, i64 %1153
  store i64 %1148, ptr %1154, align 8, !tbaa !9
  br label %1155

1155:                                             ; preds = %1130
  %1156 = load i64, ptr %15, align 8, !tbaa !9
  %1157 = add nsw i64 %1156, 1
  store i64 %1157, ptr %15, align 8, !tbaa !9
  br label %1125, !llvm.loop !51

1158:                                             ; preds = %1125
  store i64 0, ptr %15, align 8, !tbaa !9
  br label %1159

1159:                                             ; preds = %1215, %1158
  %1160 = load i64, ptr %15, align 8, !tbaa !9
  %1161 = load i64, ptr %13, align 8, !tbaa !9
  %1162 = sub nsw i64 %1161, 1
  %1163 = icmp sle i64 %1160, %1162
  br i1 %1163, label %1164, label %1218

1164:                                             ; preds = %1159
  %1165 = load ptr, ptr %11, align 8, !tbaa !5
  %1166 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1165, i32 0, i32 2
  %1167 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1166, i32 0, i32 2
  %1168 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1167, i32 0, i32 4
  %1169 = load ptr, ptr %1168, align 8, !tbaa !22
  %1170 = load i64, ptr %15, align 8, !tbaa !9
  %1171 = getelementptr inbounds i64, ptr %1169, i64 %1170
  %1172 = load i64, ptr %1171, align 8, !tbaa !9
  store i64 %1172, ptr %18, align 8, !tbaa !9
  %1173 = load ptr, ptr %11, align 8, !tbaa !5
  %1174 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1173, i32 0, i32 2
  %1175 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1174, i32 0, i32 2
  %1176 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1175, i32 0, i32 4
  %1177 = load ptr, ptr %1176, align 8, !tbaa !22
  %1178 = load i64, ptr %15, align 8, !tbaa !9
  %1179 = add nsw i64 %1178, 1
  %1180 = getelementptr inbounds i64, ptr %1177, i64 %1179
  %1181 = load i64, ptr %1180, align 8, !tbaa !9
  %1182 = sub nsw i64 %1181, 1
  store i64 %1182, ptr %19, align 8, !tbaa !9
  %1183 = load i64, ptr %18, align 8, !tbaa !9
  store i64 %1183, ptr %16, align 8, !tbaa !9
  br label %1184

1184:                                             ; preds = %1211, %1164
  %1185 = load i64, ptr %16, align 8, !tbaa !9
  %1186 = load i64, ptr %19, align 8, !tbaa !9
  %1187 = icmp sle i64 %1185, %1186
  br i1 %1187, label %1188, label %1214

1188:                                             ; preds = %1184
  %1189 = load ptr, ptr %11, align 8, !tbaa !5
  %1190 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1189, i32 0, i32 2
  %1191 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1190, i32 0, i32 1
  %1192 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1191, i32 0, i32 4
  %1193 = load ptr, ptr %1192, align 8, !tbaa !22
  %1194 = load i64, ptr %16, align 8, !tbaa !9
  %1195 = getelementptr inbounds i64, ptr %1193, i64 %1194
  %1196 = load i64, ptr %1195, align 8, !tbaa !9
  store i64 %1196, ptr %14, align 8, !tbaa !9
  %1197 = load ptr, ptr %11, align 8, !tbaa !5
  %1198 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1197, i32 0, i32 14
  %1199 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1198, i32 0, i32 4
  %1200 = load ptr, ptr %1199, align 8, !tbaa !22
  %1201 = load i64, ptr %14, align 8, !tbaa !9
  %1202 = getelementptr inbounds i64, ptr %1200, i64 %1201
  %1203 = load i64, ptr %1202, align 8, !tbaa !9
  %1204 = add nsw i64 %1203, 1
  %1205 = load ptr, ptr %11, align 8, !tbaa !5
  %1206 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1205, i32 0, i32 14
  %1207 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1206, i32 0, i32 4
  %1208 = load ptr, ptr %1207, align 8, !tbaa !22
  %1209 = load i64, ptr %14, align 8, !tbaa !9
  %1210 = getelementptr inbounds i64, ptr %1208, i64 %1209
  store i64 %1204, ptr %1210, align 8, !tbaa !9
  br label %1211

1211:                                             ; preds = %1188
  %1212 = load i64, ptr %16, align 8, !tbaa !9
  %1213 = add nsw i64 %1212, 1
  store i64 %1213, ptr %16, align 8, !tbaa !9
  br label %1184, !llvm.loop !52

1214:                                             ; preds = %1184
  br label %1215

1215:                                             ; preds = %1214
  %1216 = load i64, ptr %15, align 8, !tbaa !9
  %1217 = add nsw i64 %1216, 1
  store i64 %1217, ptr %15, align 8, !tbaa !9
  br label %1159, !llvm.loop !53

1218:                                             ; preds = %1159
  %1219 = load ptr, ptr %7, align 8, !tbaa !5
  %1220 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1219, i32 0, i32 5
  store i64 1, ptr %1220, align 8, !tbaa !54
  %1221 = load ptr, ptr %11, align 8, !tbaa !5
  %1222 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1221, i32 0, i32 1
  %1223 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1222, i32 0, i32 2
  %1224 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1223, i32 0, i32 4
  %1225 = load ptr, ptr %1224, align 8, !tbaa !22
  %1226 = load i64, ptr %13, align 8, !tbaa !9
  %1227 = getelementptr inbounds i64, ptr %1225, i64 %1226
  %1228 = load i64, ptr %1227, align 8, !tbaa !9
  %1229 = load ptr, ptr %11, align 8, !tbaa !5
  %1230 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1229, i32 0, i32 2
  %1231 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1230, i32 0, i32 2
  %1232 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1231, i32 0, i32 4
  %1233 = load ptr, ptr %1232, align 8, !tbaa !22
  %1234 = load i64, ptr %13, align 8, !tbaa !9
  %1235 = getelementptr inbounds i64, ptr %1233, i64 %1234
  %1236 = load i64, ptr %1235, align 8, !tbaa !9
  %1237 = add nsw i64 %1228, %1236
  %1238 = load ptr, ptr %7, align 8, !tbaa !5
  %1239 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1238, i32 0, i32 9
  store i64 %1237, ptr %1239, align 8, !tbaa !55
  %1240 = load i64, ptr %13, align 8, !tbaa !9
  %1241 = load ptr, ptr %7, align 8, !tbaa !5
  %1242 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1241, i32 0, i32 6
  store i64 %1240, ptr %1242, align 8, !tbaa !56
  %1243 = load i64, ptr %13, align 8, !tbaa !9
  %1244 = load ptr, ptr %7, align 8, !tbaa !5
  %1245 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1244, i32 0, i32 7
  store i64 %1243, ptr %1245, align 8, !tbaa !57
  %1246 = load ptr, ptr %7, align 8, !tbaa !5
  %1247 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1246, i32 0, i32 2
  %1248 = load i64, ptr %13, align 8, !tbaa !9
  %1249 = add nsw i64 %1248, 1
  %1250 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %1247, i64 noundef %1249, ptr noundef %1250)
  %1251 = load ptr, ptr %7, align 8, !tbaa !5
  %1252 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1251, i32 0, i32 1
  %1253 = load ptr, ptr %7, align 8, !tbaa !5
  %1254 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1253, i32 0, i32 9
  %1255 = load i64, ptr %1254, align 8, !tbaa !55
  %1256 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %1252, i64 noundef %1255, ptr noundef %1256)
  %1257 = load ptr, ptr %7, align 8, !tbaa !5
  %1258 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1257, i32 0, i32 0
  %1259 = load ptr, ptr %7, align 8, !tbaa !5
  %1260 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1259, i32 0, i32 9
  %1261 = load i64, ptr %1260, align 8, !tbaa !55
  %1262 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %1258, i64 noundef %1261, ptr noundef %1262)
  %1263 = load ptr, ptr %7, align 8, !tbaa !5
  %1264 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1263, i32 0, i32 2
  %1265 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1264, i32 0, i32 4
  %1266 = load ptr, ptr %1265, align 8, !tbaa !22
  %1267 = getelementptr inbounds i64, ptr %1266, i64 0
  store i64 0, ptr %1267, align 8, !tbaa !9
  store i64 0, ptr %15, align 8, !tbaa !9
  br label %1268

1268:                                             ; preds = %1296, %1218
  %1269 = load i64, ptr %15, align 8, !tbaa !9
  %1270 = load i64, ptr %13, align 8, !tbaa !9
  %1271 = sub nsw i64 %1270, 1
  %1272 = icmp sle i64 %1269, %1271
  br i1 %1272, label %1273, label %1299

1273:                                             ; preds = %1268
  %1274 = load ptr, ptr %7, align 8, !tbaa !5
  %1275 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1274, i32 0, i32 2
  %1276 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1275, i32 0, i32 4
  %1277 = load ptr, ptr %1276, align 8, !tbaa !22
  %1278 = load i64, ptr %15, align 8, !tbaa !9
  %1279 = getelementptr inbounds i64, ptr %1277, i64 %1278
  %1280 = load i64, ptr %1279, align 8, !tbaa !9
  %1281 = load ptr, ptr %11, align 8, !tbaa !5
  %1282 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1281, i32 0, i32 14
  %1283 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1282, i32 0, i32 4
  %1284 = load ptr, ptr %1283, align 8, !tbaa !22
  %1285 = load i64, ptr %15, align 8, !tbaa !9
  %1286 = getelementptr inbounds i64, ptr %1284, i64 %1285
  %1287 = load i64, ptr %1286, align 8, !tbaa !9
  %1288 = add nsw i64 %1280, %1287
  %1289 = load ptr, ptr %7, align 8, !tbaa !5
  %1290 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1289, i32 0, i32 2
  %1291 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1290, i32 0, i32 4
  %1292 = load ptr, ptr %1291, align 8, !tbaa !22
  %1293 = load i64, ptr %15, align 8, !tbaa !9
  %1294 = add nsw i64 %1293, 1
  %1295 = getelementptr inbounds i64, ptr %1292, i64 %1294
  store i64 %1288, ptr %1295, align 8, !tbaa !9
  br label %1296

1296:                                             ; preds = %1273
  %1297 = load i64, ptr %15, align 8, !tbaa !9
  %1298 = add nsw i64 %1297, 1
  store i64 %1298, ptr %15, align 8, !tbaa !9
  br label %1268, !llvm.loop !58

1299:                                             ; preds = %1268
  store i64 0, ptr %15, align 8, !tbaa !9
  br label %1300

1300:                                             ; preds = %1401, %1299
  %1301 = load i64, ptr %15, align 8, !tbaa !9
  %1302 = load i64, ptr %13, align 8, !tbaa !9
  %1303 = sub nsw i64 %1302, 1
  %1304 = icmp sle i64 %1301, %1303
  br i1 %1304, label %1305, label %1404

1305:                                             ; preds = %1300
  %1306 = load ptr, ptr %11, align 8, !tbaa !5
  %1307 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1306, i32 0, i32 1
  %1308 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1307, i32 0, i32 2
  %1309 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1308, i32 0, i32 4
  %1310 = load ptr, ptr %1309, align 8, !tbaa !22
  %1311 = load i64, ptr %15, align 8, !tbaa !9
  %1312 = getelementptr inbounds i64, ptr %1310, i64 %1311
  %1313 = load i64, ptr %1312, align 8, !tbaa !9
  store i64 %1313, ptr %18, align 8, !tbaa !9
  %1314 = load ptr, ptr %11, align 8, !tbaa !5
  %1315 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1314, i32 0, i32 1
  %1316 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1315, i32 0, i32 2
  %1317 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1316, i32 0, i32 4
  %1318 = load ptr, ptr %1317, align 8, !tbaa !22
  %1319 = load i64, ptr %15, align 8, !tbaa !9
  %1320 = add nsw i64 %1319, 1
  %1321 = getelementptr inbounds i64, ptr %1318, i64 %1320
  %1322 = load i64, ptr %1321, align 8, !tbaa !9
  %1323 = sub nsw i64 %1322, 1
  store i64 %1323, ptr %19, align 8, !tbaa !9
  %1324 = load ptr, ptr %7, align 8, !tbaa !5
  %1325 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1324, i32 0, i32 2
  %1326 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1325, i32 0, i32 4
  %1327 = load ptr, ptr %1326, align 8, !tbaa !22
  %1328 = load i64, ptr %15, align 8, !tbaa !9
  %1329 = getelementptr inbounds i64, ptr %1327, i64 %1328
  %1330 = load i64, ptr %1329, align 8, !tbaa !9
  store i64 %1330, ptr %17, align 8, !tbaa !9
  %1331 = load i64, ptr %18, align 8, !tbaa !9
  store i64 %1331, ptr %16, align 8, !tbaa !9
  br label %1332

1332:                                             ; preds = %1373, %1305
  %1333 = load i64, ptr %16, align 8, !tbaa !9
  %1334 = load i64, ptr %19, align 8, !tbaa !9
  %1335 = icmp sle i64 %1333, %1334
  br i1 %1335, label %1336, label %1376

1336:                                             ; preds = %1332
  %1337 = load ptr, ptr %11, align 8, !tbaa !5
  %1338 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1337, i32 0, i32 1
  %1339 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1338, i32 0, i32 1
  %1340 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1339, i32 0, i32 4
  %1341 = load ptr, ptr %1340, align 8, !tbaa !22
  %1342 = load i64, ptr %16, align 8, !tbaa !9
  %1343 = getelementptr inbounds i64, ptr %1341, i64 %1342
  %1344 = load i64, ptr %1343, align 8, !tbaa !9
  %1345 = load ptr, ptr %7, align 8, !tbaa !5
  %1346 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1345, i32 0, i32 1
  %1347 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1346, i32 0, i32 4
  %1348 = load ptr, ptr %1347, align 8, !tbaa !22
  %1349 = load i64, ptr %17, align 8, !tbaa !9
  %1350 = load i64, ptr %16, align 8, !tbaa !9
  %1351 = load i64, ptr %18, align 8, !tbaa !9
  %1352 = sub nsw i64 %1350, %1351
  %1353 = add nsw i64 %1349, %1352
  %1354 = getelementptr inbounds i64, ptr %1348, i64 %1353
  store i64 %1344, ptr %1354, align 8, !tbaa !9
  %1355 = load ptr, ptr %11, align 8, !tbaa !5
  %1356 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1355, i32 0, i32 1
  %1357 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1356, i32 0, i32 0
  %1358 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1357, i32 0, i32 4
  %1359 = load ptr, ptr %1358, align 8, !tbaa !22
  %1360 = load i64, ptr %16, align 8, !tbaa !9
  %1361 = getelementptr inbounds double, ptr %1359, i64 %1360
  %1362 = load double, ptr %1361, align 8, !tbaa !31
  %1363 = load ptr, ptr %7, align 8, !tbaa !5
  %1364 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1363, i32 0, i32 0
  %1365 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1364, i32 0, i32 4
  %1366 = load ptr, ptr %1365, align 8, !tbaa !22
  %1367 = load i64, ptr %17, align 8, !tbaa !9
  %1368 = load i64, ptr %16, align 8, !tbaa !9
  %1369 = load i64, ptr %18, align 8, !tbaa !9
  %1370 = sub nsw i64 %1368, %1369
  %1371 = add nsw i64 %1367, %1370
  %1372 = getelementptr inbounds double, ptr %1366, i64 %1371
  store double %1362, ptr %1372, align 8, !tbaa !31
  br label %1373

1373:                                             ; preds = %1336
  %1374 = load i64, ptr %16, align 8, !tbaa !9
  %1375 = add nsw i64 %1374, 1
  store i64 %1375, ptr %16, align 8, !tbaa !9
  br label %1332, !llvm.loop !59

1376:                                             ; preds = %1332
  %1377 = load ptr, ptr %11, align 8, !tbaa !5
  %1378 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1377, i32 0, i32 1
  %1379 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1378, i32 0, i32 2
  %1380 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1379, i32 0, i32 4
  %1381 = load ptr, ptr %1380, align 8, !tbaa !22
  %1382 = load i64, ptr %15, align 8, !tbaa !9
  %1383 = add nsw i64 %1382, 1
  %1384 = getelementptr inbounds i64, ptr %1381, i64 %1383
  %1385 = load i64, ptr %1384, align 8, !tbaa !9
  %1386 = load ptr, ptr %11, align 8, !tbaa !5
  %1387 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1386, i32 0, i32 1
  %1388 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1387, i32 0, i32 2
  %1389 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1388, i32 0, i32 4
  %1390 = load ptr, ptr %1389, align 8, !tbaa !22
  %1391 = load i64, ptr %15, align 8, !tbaa !9
  %1392 = getelementptr inbounds i64, ptr %1390, i64 %1391
  %1393 = load i64, ptr %1392, align 8, !tbaa !9
  %1394 = sub nsw i64 %1385, %1393
  %1395 = load ptr, ptr %11, align 8, !tbaa !5
  %1396 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1395, i32 0, i32 14
  %1397 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1396, i32 0, i32 4
  %1398 = load ptr, ptr %1397, align 8, !tbaa !22
  %1399 = load i64, ptr %15, align 8, !tbaa !9
  %1400 = getelementptr inbounds i64, ptr %1398, i64 %1399
  store i64 %1394, ptr %1400, align 8, !tbaa !9
  br label %1401

1401:                                             ; preds = %1376
  %1402 = load i64, ptr %15, align 8, !tbaa !9
  %1403 = add nsw i64 %1402, 1
  store i64 %1403, ptr %15, align 8, !tbaa !9
  br label %1300, !llvm.loop !60

1404:                                             ; preds = %1300
  %1405 = load ptr, ptr %7, align 8, !tbaa !5
  %1406 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1405, i32 0, i32 3
  %1407 = load i64, ptr %13, align 8, !tbaa !9
  %1408 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %1406, i64 noundef %1407, ptr noundef %1408)
  %1409 = load ptr, ptr %7, align 8, !tbaa !5
  %1410 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1409, i32 0, i32 4
  %1411 = load i64, ptr %13, align 8, !tbaa !9
  %1412 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %1410, i64 noundef %1411, ptr noundef %1412)
  store i64 0, ptr %15, align 8, !tbaa !9
  br label %1413

1413:                                             ; preds = %1467, %1404
  %1414 = load i64, ptr %15, align 8, !tbaa !9
  %1415 = load i64, ptr %13, align 8, !tbaa !9
  %1416 = sub nsw i64 %1415, 1
  %1417 = icmp sle i64 %1414, %1416
  br i1 %1417, label %1418, label %1470

1418:                                             ; preds = %1413
  %1419 = load ptr, ptr %7, align 8, !tbaa !5
  %1420 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1419, i32 0, i32 2
  %1421 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1420, i32 0, i32 4
  %1422 = load ptr, ptr %1421, align 8, !tbaa !22
  %1423 = load i64, ptr %15, align 8, !tbaa !9
  %1424 = getelementptr inbounds i64, ptr %1422, i64 %1423
  %1425 = load i64, ptr %1424, align 8, !tbaa !9
  %1426 = load ptr, ptr %11, align 8, !tbaa !5
  %1427 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1426, i32 0, i32 14
  %1428 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1427, i32 0, i32 4
  %1429 = load ptr, ptr %1428, align 8, !tbaa !22
  %1430 = load i64, ptr %15, align 8, !tbaa !9
  %1431 = getelementptr inbounds i64, ptr %1429, i64 %1430
  %1432 = load i64, ptr %1431, align 8, !tbaa !9
  %1433 = add nsw i64 %1425, %1432
  %1434 = load ptr, ptr %7, align 8, !tbaa !5
  %1435 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1434, i32 0, i32 3
  %1436 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1435, i32 0, i32 4
  %1437 = load ptr, ptr %1436, align 8, !tbaa !22
  %1438 = load i64, ptr %15, align 8, !tbaa !9
  %1439 = getelementptr inbounds i64, ptr %1437, i64 %1438
  store i64 %1433, ptr %1439, align 8, !tbaa !9
  %1440 = load ptr, ptr %7, align 8, !tbaa !5
  %1441 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1440, i32 0, i32 3
  %1442 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1441, i32 0, i32 4
  %1443 = load ptr, ptr %1442, align 8, !tbaa !22
  %1444 = load i64, ptr %15, align 8, !tbaa !9
  %1445 = getelementptr inbounds i64, ptr %1443, i64 %1444
  %1446 = load i64, ptr %1445, align 8, !tbaa !9
  %1447 = add nsw i64 %1446, 1
  %1448 = load ptr, ptr %7, align 8, !tbaa !5
  %1449 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1448, i32 0, i32 4
  %1450 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1449, i32 0, i32 4
  %1451 = load ptr, ptr %1450, align 8, !tbaa !22
  %1452 = load i64, ptr %15, align 8, !tbaa !9
  %1453 = getelementptr inbounds i64, ptr %1451, i64 %1452
  store i64 %1447, ptr %1453, align 8, !tbaa !9
  %1454 = load ptr, ptr %7, align 8, !tbaa !5
  %1455 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1454, i32 0, i32 3
  %1456 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1455, i32 0, i32 4
  %1457 = load ptr, ptr %1456, align 8, !tbaa !22
  %1458 = load i64, ptr %15, align 8, !tbaa !9
  %1459 = getelementptr inbounds i64, ptr %1457, i64 %1458
  %1460 = load i64, ptr %1459, align 8, !tbaa !9
  %1461 = load ptr, ptr %11, align 8, !tbaa !5
  %1462 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1461, i32 0, i32 14
  %1463 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1462, i32 0, i32 4
  %1464 = load ptr, ptr %1463, align 8, !tbaa !22
  %1465 = load i64, ptr %15, align 8, !tbaa !9
  %1466 = getelementptr inbounds i64, ptr %1464, i64 %1465
  store i64 %1460, ptr %1466, align 8, !tbaa !9
  br label %1467

1467:                                             ; preds = %1418
  %1468 = load i64, ptr %15, align 8, !tbaa !9
  %1469 = add nsw i64 %1468, 1
  store i64 %1469, ptr %15, align 8, !tbaa !9
  br label %1413, !llvm.loop !61

1470:                                             ; preds = %1413
  store i64 0, ptr %15, align 8, !tbaa !9
  br label %1471

1471:                                             ; preds = %1549, %1470
  %1472 = load i64, ptr %15, align 8, !tbaa !9
  %1473 = load i64, ptr %13, align 8, !tbaa !9
  %1474 = sub nsw i64 %1473, 1
  %1475 = icmp sle i64 %1472, %1474
  br i1 %1475, label %1476, label %1552

1476:                                             ; preds = %1471
  %1477 = load ptr, ptr %11, align 8, !tbaa !5
  %1478 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1477, i32 0, i32 2
  %1479 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1478, i32 0, i32 2
  %1480 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1479, i32 0, i32 4
  %1481 = load ptr, ptr %1480, align 8, !tbaa !22
  %1482 = load i64, ptr %15, align 8, !tbaa !9
  %1483 = getelementptr inbounds i64, ptr %1481, i64 %1482
  %1484 = load i64, ptr %1483, align 8, !tbaa !9
  store i64 %1484, ptr %18, align 8, !tbaa !9
  %1485 = load ptr, ptr %11, align 8, !tbaa !5
  %1486 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1485, i32 0, i32 2
  %1487 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1486, i32 0, i32 2
  %1488 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1487, i32 0, i32 4
  %1489 = load ptr, ptr %1488, align 8, !tbaa !22
  %1490 = load i64, ptr %15, align 8, !tbaa !9
  %1491 = add nsw i64 %1490, 1
  %1492 = getelementptr inbounds i64, ptr %1489, i64 %1491
  %1493 = load i64, ptr %1492, align 8, !tbaa !9
  %1494 = sub nsw i64 %1493, 1
  store i64 %1494, ptr %19, align 8, !tbaa !9
  %1495 = load i64, ptr %18, align 8, !tbaa !9
  store i64 %1495, ptr %16, align 8, !tbaa !9
  br label %1496

1496:                                             ; preds = %1545, %1476
  %1497 = load i64, ptr %16, align 8, !tbaa !9
  %1498 = load i64, ptr %19, align 8, !tbaa !9
  %1499 = icmp sle i64 %1497, %1498
  br i1 %1499, label %1500, label %1548

1500:                                             ; preds = %1496
  %1501 = load ptr, ptr %11, align 8, !tbaa !5
  %1502 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1501, i32 0, i32 2
  %1503 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1502, i32 0, i32 1
  %1504 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1503, i32 0, i32 4
  %1505 = load ptr, ptr %1504, align 8, !tbaa !22
  %1506 = load i64, ptr %16, align 8, !tbaa !9
  %1507 = getelementptr inbounds i64, ptr %1505, i64 %1506
  %1508 = load i64, ptr %1507, align 8, !tbaa !9
  store i64 %1508, ptr %14, align 8, !tbaa !9
  %1509 = load ptr, ptr %11, align 8, !tbaa !5
  %1510 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1509, i32 0, i32 14
  %1511 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1510, i32 0, i32 4
  %1512 = load ptr, ptr %1511, align 8, !tbaa !22
  %1513 = load i64, ptr %14, align 8, !tbaa !9
  %1514 = getelementptr inbounds i64, ptr %1512, i64 %1513
  %1515 = load i64, ptr %1514, align 8, !tbaa !9
  store i64 %1515, ptr %27, align 8, !tbaa !9
  %1516 = load i64, ptr %15, align 8, !tbaa !9
  %1517 = load ptr, ptr %7, align 8, !tbaa !5
  %1518 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1517, i32 0, i32 1
  %1519 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1518, i32 0, i32 4
  %1520 = load ptr, ptr %1519, align 8, !tbaa !22
  %1521 = load i64, ptr %27, align 8, !tbaa !9
  %1522 = getelementptr inbounds i64, ptr %1520, i64 %1521
  store i64 %1516, ptr %1522, align 8, !tbaa !9
  %1523 = load ptr, ptr %11, align 8, !tbaa !5
  %1524 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1523, i32 0, i32 2
  %1525 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1524, i32 0, i32 0
  %1526 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1525, i32 0, i32 4
  %1527 = load ptr, ptr %1526, align 8, !tbaa !22
  %1528 = load i64, ptr %16, align 8, !tbaa !9
  %1529 = getelementptr inbounds double, ptr %1527, i64 %1528
  %1530 = load double, ptr %1529, align 8, !tbaa !31
  %1531 = load ptr, ptr %7, align 8, !tbaa !5
  %1532 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1531, i32 0, i32 0
  %1533 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1532, i32 0, i32 4
  %1534 = load ptr, ptr %1533, align 8, !tbaa !22
  %1535 = load i64, ptr %27, align 8, !tbaa !9
  %1536 = getelementptr inbounds double, ptr %1534, i64 %1535
  store double %1530, ptr %1536, align 8, !tbaa !31
  %1537 = load i64, ptr %27, align 8, !tbaa !9
  %1538 = add nsw i64 %1537, 1
  %1539 = load ptr, ptr %11, align 8, !tbaa !5
  %1540 = getelementptr inbounds %"struct.alglib_impl::sluv2buffer", ptr %1539, i32 0, i32 14
  %1541 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1540, i32 0, i32 4
  %1542 = load ptr, ptr %1541, align 8, !tbaa !22
  %1543 = load i64, ptr %14, align 8, !tbaa !9
  %1544 = getelementptr inbounds i64, ptr %1542, i64 %1543
  store i64 %1538, ptr %1544, align 8, !tbaa !9
  br label %1545

1545:                                             ; preds = %1500
  %1546 = load i64, ptr %16, align 8, !tbaa !9
  %1547 = add nsw i64 %1546, 1
  store i64 %1547, ptr %16, align 8, !tbaa !9
  br label %1496, !llvm.loop !62

1548:                                             ; preds = %1496
  br label %1549

1549:                                             ; preds = %1548
  %1550 = load i64, ptr %15, align 8, !tbaa !9
  %1551 = add nsw i64 %1550, 1
  store i64 %1551, ptr %15, align 8, !tbaa !9
  br label %1471, !llvm.loop !63

1552:                                             ; preds = %1471
  %1553 = load i8, ptr %31, align 1, !tbaa !11, !range !33, !noundef !34
  %1554 = trunc i8 %1553 to i1
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  ret i1 %1554
}

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN11alglib_implL20sptrf_sluv2list1initElPNS_16sluv2list1matrixEPNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN11alglib_implL21sptrf_sparsetrailinitEPNS_12sparsematrixEPNS_16sluv2sparsetrailEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN11alglib_implL20sptrf_densetrailinitEPNS_15sluv2densetrailElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN11alglib_implL24sptrf_sparsetraildensifyEPNS_16sluv2sparsetrailElPNS_16sluv2list1matrixEPNS_15sluv2densetrailEPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN11alglib_implL26sptrf_sparsetrailfindpivotEPNS_16sluv2sparsetrailElPlS2_PNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZN11alglib_implL20sptrf_sluv2list1swapEPNS_16sluv2list1matrixEllPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN11alglib_implL25sptrf_sparsetrailpivotoutEPNS_16sluv2sparsetrailEllPdPNS_9ae_vectorES4_PlS4_S4_S5_PNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN11alglib_implL38sptrf_sluv2list1appendsequencetomatrixEPNS_16sluv2list1matrixElbdlPNS_12sparsematrixElPNS_8ae_stateE(ptr noundef, i64 noundef, i1 noundef zeroext, double noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN11alglib_implL32sptrf_sluv2list1pushsparsevectorEPNS_16sluv2list1matrixEPNS_9ae_vectorES3_lPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN11alglib_implL23sptrf_sparsetrailupdateEPNS_16sluv2sparsetrailEPNS_9ae_vectorES3_lS3_S3_lPNS_16sluv2list1matrixEPNS_15sluv2densetrailEbPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef, i1 noundef zeroext, ptr noundef) #2

declare void @_ZN11alglib_impl13ivectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) #1

declare void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) #1

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "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 #2 = { mustprogress 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 #3 = { mustprogress 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 #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { 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++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{!14, !10, i64 0}
!14 = !{!"_ZTSN11alglib_impl11sluv2bufferE", !10, i64 0, !15, i64 8, !15, i64 376, !18, i64 744, !18, i64 968, !19, i64 1192, !20, i64 1816, !16, i64 1976, !21, i64 2040, !16, i64 2120, !16, i64 2184, !16, i64 2248, !16, i64 2312, !16, i64 2376, !16, i64 2440, !16, i64 2504}
!15 = !{!"_ZTSN11alglib_impl12sparsematrixE", !16, i64 0, !16, i64 64, !16, i64 128, !16, i64 192, !16, i64 256, !10, i64 320, !10, i64 328, !10, i64 336, !10, i64 344, !10, i64 352, !10, i64 360}
!16 = !{!"_ZTSN11alglib_impl9ae_vectorE", !10, i64 0, !10, i64 8, !12, i64 16, !17, i64 24, !7, i64 56}
!17 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!18 = !{!"_ZTSN11alglib_impl16sluv2list1matrixE", !10, i64 0, !10, i64 8, !16, i64 16, !16, i64 80, !16, i64 144, !10, i64 208, !10, i64 216}
!19 = !{!"_ZTSN11alglib_impl16sluv2sparsetrailE", !10, i64 0, !10, i64 8, !16, i64 16, !10, i64 80, !10, i64 88, !10, i64 96, !16, i64 104, !16, i64 168, !16, i64 232, !16, i64 296, !16, i64 360, !16, i64 424, !16, i64 488, !10, i64 552, !16, i64 560}
!20 = !{!"_ZTSN11alglib_impl15sluv2densetrailE", !10, i64 0, !10, i64 8, !21, i64 16, !16, i64 96}
!21 = !{!"_ZTSN11alglib_impl9ae_matrixE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !12, i64 32, !17, i64 40, !7, i64 72}
!22 = !{!7, !7, i64 0}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = !{!14, !10, i64 328}
!26 = !{!14, !10, i64 336}
!27 = !{!14, !10, i64 344}
!28 = !{!14, !10, i64 696}
!29 = !{!14, !10, i64 704}
!30 = !{!14, !10, i64 712}
!31 = !{!32, !32, i64 0}
!32 = !{!"double", !7, i64 0}
!33 = !{i8 0, i8 2}
!34 = !{}
!35 = distinct !{!35, !24}
!36 = !{!14, !10, i64 1824}
!37 = distinct !{!37, !24}
!38 = distinct !{!38, !24}
!39 = distinct !{!39, !24}
!40 = distinct !{!40, !24}
!41 = distinct !{!41, !24}
!42 = distinct !{!42, !24}
!43 = distinct !{!43, !24}
!44 = distinct !{!44, !24}
!45 = distinct !{!45, !24}
!46 = distinct !{!46, !24}
!47 = distinct !{!47, !24}
!48 = distinct !{!48, !24}
!49 = distinct !{!49, !24}
!50 = distinct !{!50, !24}
!51 = distinct !{!51, !24}
!52 = distinct !{!52, !24}
!53 = distinct !{!53, !24}
!54 = !{!15, !10, i64 320}
!55 = !{!15, !10, i64 352}
!56 = !{!15, !10, i64 328}
!57 = !{!15, !10, i64 336}
!58 = distinct !{!58, !24}
!59 = distinct !{!59, !24}
!60 = distinct !{!60, !24}
!61 = distinct !{!61, !24}
!62 = distinct !{!62, !24}
!63 = distinct !{!63, !24}


; 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.215 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.216 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.217 = external hidden unnamed_addr constant [32 x i8], align 1
@_ZN11alglib_implL14sptrf_densebndE = external hidden local_unnamed_addr global double, align 8
@.str.218 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.219 = external hidden unnamed_addr constant [48 x i8], align 1

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

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

declare void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN11alglib_impl11sparseiscrsEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZN11alglib_impl14sparsegetnrowsEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZN11alglib_impl14sparsegetncolsEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #3

declare noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef, ptr noundef) local_unnamed_addr #1

declare void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #1

declare void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #4

declare void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl13rmatrixplurecEPNS_9ae_matrixElllPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN11alglib_impl7sptrfluEPNS_12sparsematrixElPNS_9ae_vectorES3_PNS_11sluv2bufferEPNS_8ae_stateE(ptr noundef %0, i64 noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) local_unnamed_addr #2 {
  %7 = alloca i64, align 8
  %8 = alloca i64, align 8
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #6
  %12 = tail call noundef zeroext i1 @_ZN11alglib_impl11sparseiscrsEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %0, ptr noundef %5)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %12, ptr noundef nonnull @.str.215, ptr noundef %5)
  %13 = tail call noundef i64 @_ZN11alglib_impl14sparsegetnrowsEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %0, ptr noundef %5)
  %14 = tail call noundef i64 @_ZN11alglib_impl14sparsegetncolsEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %0, ptr noundef %5)
  %15 = icmp eq i64 %13, %14
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %15, ptr noundef nonnull @.str.216, ptr noundef %5)
  %16 = icmp eq i64 %1, 0
  %spec.select = icmp ult i64 %1, 3
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %spec.select, ptr noundef nonnull @.str.217, ptr noundef %5)
  %17 = tail call noundef i64 @_ZN11alglib_impl14sparsegetnrowsEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %0, ptr noundef %5)
  %spec.store.select = select i1 %16, i64 2, i64 %1
  %18 = icmp eq i64 %spec.store.select, 2
  store i64 %17, ptr %4, align 8, !tbaa !5
  %19 = getelementptr inbounds i8, ptr %4, i64 1976
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %19, i64 noundef %17, ptr noundef %5)
  %.not.not619 = icmp sgt i64 %17, 0
  br i1 %.not.not619, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %6
  %20 = getelementptr inbounds i8, ptr %4, i64 2032
  %xtraiter = and i64 %17, 3
  %21 = icmp ult i64 %17, 4
  br i1 %21, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.new

.lr.ph.new:                                       ; preds = %.lr.ph
  %unroll_iter = and i64 %17, 9223372036854775804
  br label %22

22:                                               ; preds = %22, %.lr.ph.new
  %.0557620 = phi i64 [ 0, %.lr.ph.new ], [ %34, %22 ]
  %niter = phi i64 [ 0, %.lr.ph.new ], [ %niter.next.3, %22 ]
  %23 = load ptr, ptr %20, align 8, !tbaa !19
  %24 = getelementptr inbounds i64, ptr %23, i64 %.0557620
  store i64 %.0557620, ptr %24, align 8, !tbaa !20
  %25 = or disjoint i64 %.0557620, 1
  %26 = load ptr, ptr %20, align 8, !tbaa !19
  %27 = getelementptr inbounds i64, ptr %26, i64 %25
  store i64 %25, ptr %27, align 8, !tbaa !20
  %28 = or disjoint i64 %.0557620, 2
  %29 = load ptr, ptr %20, align 8, !tbaa !19
  %30 = getelementptr inbounds i64, ptr %29, i64 %28
  store i64 %28, ptr %30, align 8, !tbaa !20
  %31 = or disjoint i64 %.0557620, 3
  %32 = load ptr, ptr %20, align 8, !tbaa !19
  %33 = getelementptr inbounds i64, ptr %32, i64 %31
  store i64 %31, ptr %33, align 8, !tbaa !20
  %34 = add nuw nsw i64 %.0557620, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %._crit_edge.loopexit.unr-lcssa, label %22, !llvm.loop !21

._crit_edge.loopexit.unr-lcssa:                   ; preds = %22, %.lr.ph
  %.0557620.unr = phi i64 [ 0, %.lr.ph ], [ %34, %22 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.epil.preheader

.epil.preheader:                                  ; preds = %._crit_edge.loopexit.unr-lcssa, %.epil.preheader
  %.0557620.epil = phi i64 [ %37, %.epil.preheader ], [ %.0557620.unr, %._crit_edge.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader ], [ 0, %._crit_edge.loopexit.unr-lcssa ]
  %35 = load ptr, ptr %20, align 8, !tbaa !19
  %36 = getelementptr inbounds i64, ptr %35, i64 %.0557620.epil
  store i64 %.0557620.epil, ptr %36, align 8, !tbaa !20
  %37 = add nuw nsw i64 %.0557620.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge, label %.epil.preheader, !llvm.loop !23

._crit_edge:                                      ; preds = %._crit_edge.loopexit.unr-lcssa, %.epil.preheader, %6
  %38 = getelementptr inbounds i8, ptr %4, i64 8
  %39 = getelementptr inbounds i8, ptr %4, i64 328
  store i64 1, ptr %39, align 8, !tbaa !25
  %40 = getelementptr inbounds i8, ptr %4, i64 336
  store i64 %17, ptr %40, align 8, !tbaa !26
  %41 = getelementptr inbounds i8, ptr %4, i64 344
  store i64 %17, ptr %41, align 8, !tbaa !27
  %42 = getelementptr inbounds i8, ptr %4, i64 136
  %43 = add nsw i64 %17, 1
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %42, i64 noundef %43, ptr noundef %5)
  %44 = getelementptr inbounds i8, ptr %4, i64 192
  %45 = load ptr, ptr %44, align 8, !tbaa !19
  store i64 0, ptr %45, align 8, !tbaa !20
  %46 = getelementptr inbounds i8, ptr %4, i64 376
  %47 = getelementptr inbounds i8, ptr %4, i64 696
  store i64 1, ptr %47, align 8, !tbaa !28
  %48 = getelementptr inbounds i8, ptr %4, i64 704
  store i64 %17, ptr %48, align 8, !tbaa !29
  %49 = getelementptr inbounds i8, ptr %4, i64 712
  store i64 %17, ptr %49, align 8, !tbaa !30
  %50 = getelementptr inbounds i8, ptr %4, i64 504
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %50, i64 noundef %43, ptr noundef %5)
  %51 = getelementptr inbounds i8, ptr %4, i64 560
  %52 = load ptr, ptr %51, align 8, !tbaa !19
  store i64 0, ptr %52, align 8, !tbaa !20
  %53 = getelementptr inbounds i8, ptr %4, i64 744
  tail call void @_ZN11alglib_implL20sptrf_sluv2list1initElPNS_16sluv2list1matrixEPNS_8ae_stateE(i64 noundef %17, ptr noundef nonnull %53, ptr noundef %5)
  %54 = getelementptr inbounds i8, ptr %4, i64 968
  tail call void @_ZN11alglib_implL20sptrf_sluv2list1initElPNS_16sluv2list1matrixEPNS_8ae_stateE(i64 noundef %17, ptr noundef nonnull %54, ptr noundef %5)
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %2, i64 noundef %17, ptr noundef %5)
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %3, i64 noundef %17, ptr noundef %5)
  %55 = getelementptr inbounds i8, ptr %4, i64 2120
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %55, i64 noundef %17, ptr noundef %5)
  %56 = getelementptr inbounds i8, ptr %4, i64 2184
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %56, i64 noundef %17, ptr noundef %5)
  %57 = getelementptr inbounds i8, ptr %4, i64 2248
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %57, i64 noundef %17, ptr noundef %5)
  %58 = getelementptr inbounds i8, ptr %4, i64 2312
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %58, i64 noundef %17, ptr noundef %5)
  %59 = getelementptr inbounds i8, ptr %4, i64 1192
  tail call void @_ZN11alglib_implL21sptrf_sparsetrailinitEPNS_12sparsematrixEPNS_16sluv2sparsetrailEPNS_8ae_stateE(ptr noundef %0, ptr noundef nonnull %59, ptr noundef %5)
  %60 = getelementptr inbounds i8, ptr %4, i64 1816
  tail call void @_ZN11alglib_implL20sptrf_densetrailinitEPNS_15sluv2densetrailElPNS_8ae_stateE(ptr noundef nonnull %60, i64 noundef %17, ptr noundef %5)
  %61 = load double, ptr @_ZN11alglib_implL14sptrf_densebndE, align 8, !tbaa !31
  %62 = sitofp i64 %17 to double
  %63 = fmul double %61, %62
  %64 = tail call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %63, ptr noundef %5)
  %65 = add nsw i64 %64, 1
  %or.cond = and i1 %18, %.not.not619
  br i1 %or.cond, label %.lr.ph623, label %.loopexit615

.lr.ph623:                                        ; preds = %._crit_edge
  %66 = getelementptr inbounds i8, ptr %4, i64 1264
  br label %67

67:                                               ; preds = %.lr.ph623, %73
  %.1558622 = phi i64 [ 0, %.lr.ph623 ], [ %74, %73 ]
  %68 = load ptr, ptr %66, align 8, !tbaa !19
  %69 = getelementptr inbounds i64, ptr %68, i64 %.1558622
  %70 = load i64, ptr %69, align 8, !tbaa !20
  %71 = icmp sgt i64 %70, %65
  br i1 %71, label %72, label %73

72:                                               ; preds = %67
  tail call void @_ZN11alglib_implL24sptrf_sparsetraildensifyEPNS_16sluv2sparsetrailElPNS_16sluv2list1matrixEPNS_15sluv2densetrailEPNS_8ae_stateE(ptr noundef nonnull %59, i64 noundef %.1558622, ptr noundef nonnull %54, ptr noundef nonnull %60, ptr noundef %5)
  br label %73

73:                                               ; preds = %67, %72
  %74 = add nuw nsw i64 %.1558622, 1
  %exitcond734.not = icmp eq i64 %74, %17
  br i1 %exitcond734.not, label %.loopexit615, label %67, !llvm.loop !33

.loopexit615:                                     ; preds = %73, %._crit_edge
  br i1 %.not.not619, label %.lr.ph644, label %.loopexit613

.lr.ph644:                                        ; preds = %.loopexit615
  %75 = getelementptr inbounds i8, ptr %3, i64 56
  %76 = getelementptr inbounds i8, ptr %2, i64 56
  %77 = getelementptr inbounds i8, ptr %4, i64 2032
  %78 = getelementptr inbounds i8, ptr %4, i64 1824
  %79 = getelementptr inbounds i8, ptr %4, i64 1904
  %80 = getelementptr inbounds i8, ptr %4, i64 2176
  %81 = getelementptr inbounds i8, ptr %4, i64 2304
  br label %82

82:                                               ; preds = %.lr.ph644, %209
  %.0642 = phi i8 [ 1, %.lr.ph644 ], [ %111, %209 ]
  %.0553638 = phi i64 [ 0, %.lr.ph644 ], [ %210, %209 ]
  %83 = call noundef zeroext i1 @_ZN11alglib_implL26sptrf_sparsetrailfindpivotEPNS_16sluv2sparsetrailElPlS2_PNS_8ae_stateE(ptr noundef nonnull %59, i64 noundef %spec.store.select, ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef %5)
  br i1 %83, label %88, label %84

84:                                               ; preds = %82
  %85 = load i64, ptr %78, align 8, !tbaa !34
  %86 = add nsw i64 %85, %.0553638
  %87 = icmp eq i64 %86, %17
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %87, ptr noundef nonnull @.str.218, ptr noundef %5)
  br label %.loopexit613

88:                                               ; preds = %82
  %89 = load i64, ptr %8, align 8, !tbaa !20
  %90 = load ptr, ptr %75, align 8, !tbaa !19
  %91 = getelementptr inbounds i64, ptr %90, i64 %.0553638
  store i64 %89, ptr %91, align 8, !tbaa !20
  %92 = load i64, ptr %7, align 8, !tbaa !20
  %93 = load ptr, ptr %76, align 8, !tbaa !19
  %94 = getelementptr inbounds i64, ptr %93, i64 %.0553638
  store i64 %92, ptr %94, align 8, !tbaa !20
  %95 = load ptr, ptr %77, align 8, !tbaa !19
  %96 = getelementptr inbounds i64, ptr %95, i64 %.0553638
  %97 = load i64, ptr %96, align 8, !tbaa !20
  %98 = getelementptr inbounds i64, ptr %95, i64 %92
  %99 = load i64, ptr %98, align 8, !tbaa !20
  store i64 %99, ptr %96, align 8, !tbaa !20
  %100 = load ptr, ptr %77, align 8, !tbaa !19
  %101 = load i64, ptr %7, align 8, !tbaa !20
  %102 = getelementptr inbounds i64, ptr %100, i64 %101
  store i64 %97, ptr %102, align 8, !tbaa !20
  %103 = load i64, ptr %7, align 8, !tbaa !20
  call void @_ZN11alglib_implL20sptrf_sluv2list1swapEPNS_16sluv2list1matrixEllPNS_8ae_stateE(ptr noundef nonnull %53, i64 noundef %.0553638, i64 noundef %103, ptr noundef %5)
  %104 = load i64, ptr %8, align 8, !tbaa !20
  call void @_ZN11alglib_implL20sptrf_sluv2list1swapEPNS_16sluv2list1matrixEllPNS_8ae_stateE(ptr noundef nonnull %54, i64 noundef %.0553638, i64 noundef %104, ptr noundef %5)
  %105 = load i64, ptr %7, align 8, !tbaa !20
  %106 = load i64, ptr %8, align 8, !tbaa !20
  call void @_ZN11alglib_implL25sptrf_sparsetrailpivotoutEPNS_16sluv2sparsetrailEllPdPNS_9ae_vectorES4_PlS4_S4_S5_PNS_8ae_stateE(ptr noundef nonnull %59, i64 noundef %105, i64 noundef %106, ptr noundef nonnull %11, ptr noundef nonnull %55, ptr noundef nonnull %57, ptr noundef nonnull %9, ptr noundef nonnull %56, ptr noundef nonnull %58, ptr noundef nonnull %10, ptr noundef %5)
  %107 = trunc nuw i8 %.0642 to i1
  %108 = load double, ptr %11, align 8
  %109 = fcmp une double %108, 0.000000e+00
  %110 = select i1 %107, i1 %109, i1 false
  %111 = zext i1 %110 to i8
  %112 = load i64, ptr %78, align 8, !tbaa !34
  %.not.not602624 = icmp sgt i64 %112, 0
  br i1 %.not.not602624, label %.lr.ph627, label %._crit_edge628

.lr.ph627:                                        ; preds = %88
  %113 = load i64, ptr %7, align 8, !tbaa !20
  %xtraiter775 = and i64 %112, 1
  %114 = icmp eq i64 %112, 1
  br i1 %114, label %._crit_edge628.loopexit.unr-lcssa, label %.lr.ph627.new

.lr.ph627.new:                                    ; preds = %.lr.ph627
  %unroll_iter778 = and i64 %112, 9223372036854775806
  br label %115

115:                                              ; preds = %115, %.lr.ph627.new
  %.2559625 = phi i64 [ 0, %.lr.ph627.new ], [ %143, %115 ]
  %niter779 = phi i64 [ 0, %.lr.ph627.new ], [ %niter779.next.1, %115 ]
  %116 = load ptr, ptr %79, align 8, !tbaa !19
  %117 = getelementptr inbounds ptr, ptr %116, i64 %.0553638
  %118 = load ptr, ptr %117, align 8, !tbaa !35
  %119 = getelementptr inbounds double, ptr %118, i64 %.2559625
  %120 = load double, ptr %119, align 8, !tbaa !31
  %121 = getelementptr inbounds ptr, ptr %116, i64 %113
  %122 = load ptr, ptr %121, align 8, !tbaa !35
  %123 = getelementptr inbounds double, ptr %122, i64 %.2559625
  %124 = load double, ptr %123, align 8, !tbaa !31
  store double %124, ptr %119, align 8, !tbaa !31
  %125 = load ptr, ptr %79, align 8, !tbaa !19
  %126 = getelementptr inbounds ptr, ptr %125, i64 %113
  %127 = load ptr, ptr %126, align 8, !tbaa !35
  %128 = getelementptr inbounds double, ptr %127, i64 %.2559625
  store double %120, ptr %128, align 8, !tbaa !31
  %129 = or disjoint i64 %.2559625, 1
  %130 = load ptr, ptr %79, align 8, !tbaa !19
  %131 = getelementptr inbounds ptr, ptr %130, i64 %.0553638
  %132 = load ptr, ptr %131, align 8, !tbaa !35
  %133 = getelementptr inbounds double, ptr %132, i64 %129
  %134 = load double, ptr %133, align 8, !tbaa !31
  %135 = getelementptr inbounds ptr, ptr %130, i64 %113
  %136 = load ptr, ptr %135, align 8, !tbaa !35
  %137 = getelementptr inbounds double, ptr %136, i64 %129
  %138 = load double, ptr %137, align 8, !tbaa !31
  store double %138, ptr %133, align 8, !tbaa !31
  %139 = load ptr, ptr %79, align 8, !tbaa !19
  %140 = getelementptr inbounds ptr, ptr %139, i64 %113
  %141 = load ptr, ptr %140, align 8, !tbaa !35
  %142 = getelementptr inbounds double, ptr %141, i64 %129
  store double %134, ptr %142, align 8, !tbaa !31
  %143 = add nuw nsw i64 %.2559625, 2
  %niter779.next.1 = add i64 %niter779, 2
  %niter779.ncmp.1 = icmp eq i64 %niter779.next.1, %unroll_iter778
  br i1 %niter779.ncmp.1, label %._crit_edge628.loopexit.unr-lcssa, label %115, !llvm.loop !36

._crit_edge628.loopexit.unr-lcssa:                ; preds = %115, %.lr.ph627
  %.2559625.unr = phi i64 [ 0, %.lr.ph627 ], [ %143, %115 ]
  %lcmp.mod777.not = icmp eq i64 %xtraiter775, 0
  br i1 %lcmp.mod777.not, label %._crit_edge628.loopexit, label %._crit_edge628.loopexit.epilog-lcssa

._crit_edge628.loopexit.epilog-lcssa:             ; preds = %._crit_edge628.loopexit.unr-lcssa
  %144 = load ptr, ptr %79, align 8, !tbaa !19
  %145 = getelementptr inbounds ptr, ptr %144, i64 %.0553638
  %146 = load ptr, ptr %145, align 8, !tbaa !35
  %147 = getelementptr inbounds double, ptr %146, i64 %.2559625.unr
  %148 = load double, ptr %147, align 8, !tbaa !31
  %149 = getelementptr inbounds ptr, ptr %144, i64 %113
  %150 = load ptr, ptr %149, align 8, !tbaa !35
  %151 = getelementptr inbounds double, ptr %150, i64 %.2559625.unr
  %152 = load double, ptr %151, align 8, !tbaa !31
  store double %152, ptr %147, align 8, !tbaa !31
  %153 = load ptr, ptr %79, align 8, !tbaa !19
  %154 = getelementptr inbounds ptr, ptr %153, i64 %113
  %155 = load ptr, ptr %154, align 8, !tbaa !35
  %156 = getelementptr inbounds double, ptr %155, i64 %.2559625.unr
  store double %148, ptr %156, align 8, !tbaa !31
  br label %._crit_edge628.loopexit

._crit_edge628.loopexit:                          ; preds = %._crit_edge628.loopexit.unr-lcssa, %._crit_edge628.loopexit.epilog-lcssa
  %.pre = load double, ptr %11, align 8, !tbaa !31
  br label %._crit_edge628

._crit_edge628:                                   ; preds = %._crit_edge628.loopexit, %88
  %157 = phi double [ %.pre, %._crit_edge628.loopexit ], [ %108, %88 ]
  call void @_ZN11alglib_implL38sptrf_sluv2list1appendsequencetomatrixEPNS_16sluv2list1matrixElbdlPNS_12sparsematrixElPNS_8ae_stateE(ptr noundef nonnull %54, i64 noundef %.0553638, i1 noundef zeroext true, double noundef %157, i64 noundef %17, ptr noundef nonnull %46, i64 noundef %.0553638, ptr noundef %5)
  call void @_ZN11alglib_implL38sptrf_sluv2list1appendsequencetomatrixEPNS_16sluv2list1matrixElbdlPNS_12sparsematrixElPNS_8ae_stateE(ptr noundef nonnull %53, i64 noundef %.0553638, i1 noundef zeroext false, double noundef 0.000000e+00, i64 noundef %17, ptr noundef nonnull %38, i64 noundef %.0553638, ptr noundef %5)
  %158 = load i64, ptr %9, align 8, !tbaa !20
  call void @_ZN11alglib_implL32sptrf_sluv2list1pushsparsevectorEPNS_16sluv2list1matrixEPNS_9ae_vectorES3_lPNS_8ae_stateE(ptr noundef nonnull %53, ptr noundef nonnull %55, ptr noundef nonnull %57, i64 noundef %158, ptr noundef %5)
  %159 = load i64, ptr %10, align 8, !tbaa !20
  call void @_ZN11alglib_implL32sptrf_sluv2list1pushsparsevectorEPNS_16sluv2list1matrixEPNS_9ae_vectorES3_lPNS_8ae_stateE(ptr noundef nonnull %54, ptr noundef nonnull %56, ptr noundef nonnull %58, i64 noundef %159, ptr noundef %5)
  %160 = load i64, ptr %9, align 8, !tbaa !20
  %161 = load i64, ptr %10, align 8, !tbaa !20
  %162 = load i64, ptr %78, align 8, !tbaa !34
  %163 = add nsw i64 %162, %161
  %164 = mul nsw i64 %163, %160
  %165 = icmp sgt i64 %164, 0
  br i1 %165, label %166, label %209

166:                                              ; preds = %._crit_edge628
  %167 = icmp sgt i64 %162, 0
  %.not.not603634 = icmp sgt i64 %160, 0
  %or.cond730 = and i1 %167, %.not.not603634
  br i1 %or.cond730, label %.lr.ph632.us.preheader, label %.loopexit612

.lr.ph632.us.preheader:                           ; preds = %166
  %xtraiter781 = and i64 %162, 1
  %168 = icmp eq i64 %162, 1
  %unroll_iter784 = and i64 %162, 9223372036854775806
  %lcmp.mod783.not = icmp eq i64 %xtraiter781, 0
  br label %.lr.ph632.us

.lr.ph632.us:                                     ; preds = %.lr.ph632.us.preheader, %._crit_edge633.us
  %.3560635.us = phi i64 [ %208, %._crit_edge633.us ], [ 0, %.lr.ph632.us.preheader ]
  %169 = load ptr, ptr %80, align 8, !tbaa !19
  %170 = getelementptr inbounds i64, ptr %169, i64 %.3560635.us
  %171 = load i64, ptr %170, align 8, !tbaa !20
  %172 = load ptr, ptr %81, align 8, !tbaa !19
  %173 = getelementptr inbounds double, ptr %172, i64 %.3560635.us
  %174 = load double, ptr %173, align 8, !tbaa !31
  %175 = fneg double %174
  br i1 %168, label %._crit_edge633.us.unr-lcssa, label %.lr.ph632.us.new

.lr.ph632.us.new:                                 ; preds = %.lr.ph632.us, %.lr.ph632.us.new
  %.0564630.us = phi i64 [ %197, %.lr.ph632.us.new ], [ 0, %.lr.ph632.us ]
  %niter785 = phi i64 [ %niter785.next.1, %.lr.ph632.us.new ], [ 0, %.lr.ph632.us ]
  %176 = load ptr, ptr %79, align 8, !tbaa !19
  %177 = getelementptr inbounds ptr, ptr %176, i64 %171
  %178 = load ptr, ptr %177, align 8, !tbaa !35
  %179 = getelementptr inbounds double, ptr %178, i64 %.0564630.us
  %180 = load double, ptr %179, align 8, !tbaa !31
  %181 = getelementptr inbounds ptr, ptr %176, i64 %.0553638
  %182 = load ptr, ptr %181, align 8, !tbaa !35
  %183 = getelementptr inbounds double, ptr %182, i64 %.0564630.us
  %184 = load double, ptr %183, align 8, !tbaa !31
  %185 = call double @llvm.fmuladd.f64(double %175, double %184, double %180)
  store double %185, ptr %179, align 8, !tbaa !31
  %186 = or disjoint i64 %.0564630.us, 1
  %187 = load ptr, ptr %79, align 8, !tbaa !19
  %188 = getelementptr inbounds ptr, ptr %187, i64 %171
  %189 = load ptr, ptr %188, align 8, !tbaa !35
  %190 = getelementptr inbounds double, ptr %189, i64 %186
  %191 = load double, ptr %190, align 8, !tbaa !31
  %192 = getelementptr inbounds ptr, ptr %187, i64 %.0553638
  %193 = load ptr, ptr %192, align 8, !tbaa !35
  %194 = getelementptr inbounds double, ptr %193, i64 %186
  %195 = load double, ptr %194, align 8, !tbaa !31
  %196 = call double @llvm.fmuladd.f64(double %175, double %195, double %191)
  store double %196, ptr %190, align 8, !tbaa !31
  %197 = add nuw nsw i64 %.0564630.us, 2
  %niter785.next.1 = add i64 %niter785, 2
  %niter785.ncmp.1 = icmp eq i64 %niter785.next.1, %unroll_iter784
  br i1 %niter785.ncmp.1, label %._crit_edge633.us.unr-lcssa, label %.lr.ph632.us.new, !llvm.loop !37

._crit_edge633.us.unr-lcssa:                      ; preds = %.lr.ph632.us.new, %.lr.ph632.us
  %.0564630.us.unr = phi i64 [ 0, %.lr.ph632.us ], [ %197, %.lr.ph632.us.new ]
  br i1 %lcmp.mod783.not, label %._crit_edge633.us, label %._crit_edge633.us.epilog-lcssa

._crit_edge633.us.epilog-lcssa:                   ; preds = %._crit_edge633.us.unr-lcssa
  %198 = load ptr, ptr %79, align 8, !tbaa !19
  %199 = getelementptr inbounds ptr, ptr %198, i64 %171
  %200 = load ptr, ptr %199, align 8, !tbaa !35
  %201 = getelementptr inbounds double, ptr %200, i64 %.0564630.us.unr
  %202 = load double, ptr %201, align 8, !tbaa !31
  %203 = getelementptr inbounds ptr, ptr %198, i64 %.0553638
  %204 = load ptr, ptr %203, align 8, !tbaa !35
  %205 = getelementptr inbounds double, ptr %204, i64 %.0564630.us.unr
  %206 = load double, ptr %205, align 8, !tbaa !31
  %207 = call double @llvm.fmuladd.f64(double %175, double %206, double %202)
  store double %207, ptr %201, align 8, !tbaa !31
  br label %._crit_edge633.us

._crit_edge633.us:                                ; preds = %._crit_edge633.us.unr-lcssa, %._crit_edge633.us.epilog-lcssa
  %208 = add nuw nsw i64 %.3560635.us, 1
  %exitcond737.not = icmp eq i64 %208, %160
  br i1 %exitcond737.not, label %.loopexit612, label %.lr.ph632.us, !llvm.loop !38

.loopexit612:                                     ; preds = %._crit_edge633.us, %166
  call void @_ZN11alglib_implL23sptrf_sparsetrailupdateEPNS_16sluv2sparsetrailEPNS_9ae_vectorES3_lS3_S3_lPNS_16sluv2list1matrixEPNS_15sluv2densetrailEbPNS_8ae_stateE(ptr noundef nonnull %59, ptr noundef nonnull %55, ptr noundef nonnull %57, i64 noundef %160, ptr noundef nonnull %56, ptr noundef nonnull %58, i64 noundef %161, ptr noundef nonnull %54, ptr noundef nonnull %60, i1 noundef zeroext %18, ptr noundef %5)
  br label %209

209:                                              ; preds = %._crit_edge628, %.loopexit612
  %210 = add nuw nsw i64 %.0553638, 1
  %exitcond738.not = icmp eq i64 %210, %17
  br i1 %exitcond738.not, label %.loopexit613, label %82, !llvm.loop !39

.loopexit613:                                     ; preds = %209, %.loopexit615, %84
  %.0617 = phi i8 [ %.0642, %84 ], [ 1, %.loopexit615 ], [ %111, %209 ]
  %211 = getelementptr inbounds i8, ptr %4, i64 1824
  %212 = load i64, ptr %211, align 8, !tbaa !34
  %213 = icmp sgt i64 %212, 0
  br i1 %213, label %.lr.ph649, label %.loopexit608

.lr.ph649:                                        ; preds = %.loopexit613
  %214 = sub i64 %17, %212
  %215 = getelementptr inbounds i8, ptr %4, i64 1968
  %216 = getelementptr inbounds i8, ptr %4, i64 1416
  %217 = getelementptr inbounds i8, ptr %3, i64 56
  br label %218

218:                                              ; preds = %.lr.ph649, %230
  %.4561647 = phi i64 [ %214, %.lr.ph649 ], [ %241, %230 ]
  %219 = load ptr, ptr %215, align 8, !tbaa !19
  %220 = sub nsw i64 %.4561647, %214
  %221 = getelementptr inbounds i64, ptr %219, i64 %220
  %222 = load i64, ptr %221, align 8, !tbaa !20
  %223 = load ptr, ptr %216, align 8, !tbaa !19
  br label %224

224:                                              ; preds = %218, %228
  %.1565645 = phi i64 [ %.4561647, %218 ], [ %229, %228 ]
  %225 = getelementptr inbounds i64, ptr %223, i64 %.1565645
  %226 = load i64, ptr %225, align 8, !tbaa !20
  %227 = icmp eq i64 %226, %222
  br i1 %227, label %230, label %228

228:                                              ; preds = %224
  %229 = add nsw i64 %.1565645, 1
  %.not.not601 = icmp slt i64 %229, %17
  br i1 %.not.not601, label %224, label %230, !llvm.loop !40

230:                                              ; preds = %224, %228
  %.0563 = phi i64 [ -1, %228 ], [ %.1565645, %224 ]
  %231 = icmp sgt i64 %.0563, -1
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %231, ptr noundef nonnull @.str.219, ptr noundef %5)
  %232 = load ptr, ptr %216, align 8, !tbaa !19
  %233 = getelementptr inbounds i64, ptr %232, i64 %.4561647
  %234 = load i64, ptr %233, align 8, !tbaa !20
  %235 = getelementptr inbounds i64, ptr %232, i64 %.0563
  %236 = load i64, ptr %235, align 8, !tbaa !20
  store i64 %236, ptr %233, align 8, !tbaa !20
  %237 = load ptr, ptr %216, align 8, !tbaa !19
  %238 = getelementptr inbounds i64, ptr %237, i64 %.0563
  store i64 %234, ptr %238, align 8, !tbaa !20
  %239 = load ptr, ptr %217, align 8, !tbaa !19
  %240 = getelementptr inbounds i64, ptr %239, i64 %.4561647
  store i64 %.0563, ptr %240, align 8, !tbaa !20
  %241 = add nsw i64 %.4561647, 1
  %.not.not583 = icmp slt i64 %241, %17
  br i1 %.not.not583, label %218, label %.preheader610.lr.ph, !llvm.loop !41

.preheader610.lr.ph:                              ; preds = %230
  %.pre759 = load i64, ptr %211, align 8, !tbaa !34
  %242 = getelementptr inbounds i8, ptr %4, i64 2040
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %242, i64 noundef %.pre759, i64 noundef %.pre759, ptr noundef %5)
  %243 = getelementptr inbounds i8, ptr %4, i64 1904
  %244 = getelementptr inbounds i8, ptr %4, i64 2112
  %smax = call i64 @llvm.smax.i64(i64 %212, i64 1)
  %xtraiter787 = and i64 %smax, 1
  %245 = icmp eq i64 %212, 1
  %unroll_iter790 = and i64 %smax, 9223372036854775806
  %lcmp.mod789.not = icmp eq i64 %xtraiter787, 0
  br label %.preheader610.us

.preheader610.us:                                 ; preds = %._crit_edge654.us, %.preheader610.lr.ph
  %.5562656.us = phi i64 [ 0, %.preheader610.lr.ph ], [ %278, %._crit_edge654.us ]
  br i1 %245, label %._crit_edge654.us.unr-lcssa, label %.preheader610.us.new

.preheader610.us.new:                             ; preds = %.preheader610.us, %.preheader610.us.new
  %.2566652.us = phi i64 [ %267, %.preheader610.us.new ], [ 0, %.preheader610.us ]
  %niter791 = phi i64 [ %niter791.next.1, %.preheader610.us.new ], [ 0, %.preheader610.us ]
  %246 = load ptr, ptr %243, align 8, !tbaa !19
  %247 = getelementptr ptr, ptr %246, i64 %.5562656.us
  %248 = getelementptr ptr, ptr %247, i64 %214
  %249 = load ptr, ptr %248, align 8, !tbaa !35
  %250 = getelementptr inbounds double, ptr %249, i64 %.2566652.us
  %251 = load double, ptr %250, align 8, !tbaa !31
  %252 = load ptr, ptr %244, align 8, !tbaa !19
  %253 = getelementptr inbounds ptr, ptr %252, i64 %.5562656.us
  %254 = load ptr, ptr %253, align 8, !tbaa !35
  %255 = getelementptr inbounds double, ptr %254, i64 %.2566652.us
  store double %251, ptr %255, align 8, !tbaa !31
  %256 = or disjoint i64 %.2566652.us, 1
  %257 = load ptr, ptr %243, align 8, !tbaa !19
  %258 = getelementptr ptr, ptr %257, i64 %.5562656.us
  %259 = getelementptr ptr, ptr %258, i64 %214
  %260 = load ptr, ptr %259, align 8, !tbaa !35
  %261 = getelementptr inbounds double, ptr %260, i64 %256
  %262 = load double, ptr %261, align 8, !tbaa !31
  %263 = load ptr, ptr %244, align 8, !tbaa !19
  %264 = getelementptr inbounds ptr, ptr %263, i64 %.5562656.us
  %265 = load ptr, ptr %264, align 8, !tbaa !35
  %266 = getelementptr inbounds double, ptr %265, i64 %256
  store double %262, ptr %266, align 8, !tbaa !31
  %267 = add nuw nsw i64 %.2566652.us, 2
  %niter791.next.1 = add i64 %niter791, 2
  %niter791.ncmp.1 = icmp eq i64 %niter791.next.1, %unroll_iter790
  br i1 %niter791.ncmp.1, label %._crit_edge654.us.unr-lcssa, label %.preheader610.us.new, !llvm.loop !42

._crit_edge654.us.unr-lcssa:                      ; preds = %.preheader610.us.new, %.preheader610.us
  %.2566652.us.unr = phi i64 [ 0, %.preheader610.us ], [ %267, %.preheader610.us.new ]
  br i1 %lcmp.mod789.not, label %._crit_edge654.us, label %._crit_edge654.us.epilog-lcssa

._crit_edge654.us.epilog-lcssa:                   ; preds = %._crit_edge654.us.unr-lcssa
  %268 = load ptr, ptr %243, align 8, !tbaa !19
  %269 = getelementptr ptr, ptr %268, i64 %.5562656.us
  %270 = getelementptr ptr, ptr %269, i64 %214
  %271 = load ptr, ptr %270, align 8, !tbaa !35
  %272 = getelementptr inbounds double, ptr %271, i64 %.2566652.us.unr
  %273 = load double, ptr %272, align 8, !tbaa !31
  %274 = load ptr, ptr %244, align 8, !tbaa !19
  %275 = getelementptr inbounds ptr, ptr %274, i64 %.5562656.us
  %276 = load ptr, ptr %275, align 8, !tbaa !35
  %277 = getelementptr inbounds double, ptr %276, i64 %.2566652.us.unr
  store double %273, ptr %277, align 8, !tbaa !31
  br label %._crit_edge654.us

._crit_edge654.us:                                ; preds = %._crit_edge654.us.unr-lcssa, %._crit_edge654.us.epilog-lcssa
  %278 = add nuw nsw i64 %.5562656.us, 1
  %exitcond740.not = icmp eq i64 %278, %smax
  br i1 %exitcond740.not, label %.lr.ph661, label %.preheader610.us, !llvm.loop !43

.lr.ph661:                                        ; preds = %._crit_edge654.us
  %279 = getelementptr inbounds i8, ptr %4, i64 2376
  %280 = shl nsw i64 %17, 1
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %279, i64 noundef %280, ptr noundef %5)
  %281 = getelementptr inbounds i8, ptr %4, i64 2504
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %281, i64 noundef %17, ptr noundef %5)
  call void @_ZN11alglib_impl13rmatrixplurecEPNS_9ae_matrixElllPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef nonnull %242, i64 noundef 0, i64 noundef %212, i64 noundef %212, ptr noundef nonnull %281, ptr noundef nonnull %279, ptr noundef %5)
  %282 = getelementptr inbounds i8, ptr %4, i64 2560
  %283 = getelementptr inbounds i8, ptr %2, i64 56
  %284 = getelementptr inbounds i8, ptr %4, i64 2032
  %smax741 = call i64 @llvm.smax.i64(i64 %212, i64 1)
  br label %285

285:                                              ; preds = %.lr.ph661, %285
  %.6659 = phi i64 [ 0, %.lr.ph661 ], [ %309, %285 ]
  %286 = load ptr, ptr %282, align 8, !tbaa !19
  %287 = getelementptr inbounds i64, ptr %286, i64 %.6659
  %288 = load i64, ptr %287, align 8, !tbaa !20
  %289 = add nsw i64 %288, %214
  %290 = load ptr, ptr %283, align 8, !tbaa !19
  %291 = add nsw i64 %.6659, %214
  %292 = getelementptr inbounds i64, ptr %290, i64 %291
  store i64 %289, ptr %292, align 8, !tbaa !20
  %293 = load ptr, ptr %283, align 8, !tbaa !19
  %294 = getelementptr inbounds i64, ptr %293, i64 %291
  %295 = load i64, ptr %294, align 8, !tbaa !20
  call void @_ZN11alglib_implL20sptrf_sluv2list1swapEPNS_16sluv2list1matrixEllPNS_8ae_stateE(ptr noundef nonnull %53, i64 noundef %291, i64 noundef %295, ptr noundef %5)
  %296 = load ptr, ptr %284, align 8, !tbaa !19
  %297 = getelementptr inbounds i64, ptr %296, i64 %291
  %298 = load i64, ptr %297, align 8, !tbaa !20
  %299 = load ptr, ptr %283, align 8, !tbaa !19
  %300 = getelementptr inbounds i64, ptr %299, i64 %291
  %301 = load i64, ptr %300, align 8, !tbaa !20
  %302 = getelementptr inbounds i64, ptr %296, i64 %301
  %303 = load i64, ptr %302, align 8, !tbaa !20
  store i64 %303, ptr %297, align 8, !tbaa !20
  %304 = load ptr, ptr %284, align 8, !tbaa !19
  %305 = load ptr, ptr %283, align 8, !tbaa !19
  %306 = getelementptr inbounds i64, ptr %305, i64 %291
  %307 = load i64, ptr %306, align 8, !tbaa !20
  %308 = getelementptr inbounds i64, ptr %304, i64 %307
  store i64 %298, ptr %308, align 8, !tbaa !20
  %309 = add nuw nsw i64 %.6659, 1
  %exitcond742.not = icmp eq i64 %309, %smax741
  br i1 %exitcond742.not, label %.lr.ph679, label %285, !llvm.loop !44

.lr.ph679:                                        ; preds = %285
  %310 = getelementptr inbounds i8, ptr %4, i64 440
  %311 = load ptr, ptr %51, align 8, !tbaa !19
  %312 = getelementptr inbounds i64, ptr %311, i64 %214
  %313 = load i64, ptr %312, align 8, !tbaa !20
  %314 = mul nsw i64 %212, %17
  %315 = add nsw i64 %313, %314
  call void @_ZN11alglib_impl13ivectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %310, i64 noundef %315, ptr noundef %5)
  %316 = load ptr, ptr %51, align 8, !tbaa !19
  %317 = getelementptr inbounds i64, ptr %316, i64 %214
  %318 = load i64, ptr %317, align 8, !tbaa !20
  %319 = add nsw i64 %318, %314
  call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %46, i64 noundef %319, ptr noundef %5)
  %.not.not598663 = icmp sgt i64 %214, 0
  %320 = getelementptr inbounds i8, ptr %4, i64 1904
  %321 = getelementptr inbounds i8, ptr %4, i64 496
  %322 = getelementptr inbounds i8, ptr %4, i64 432
  %323 = getelementptr inbounds i8, ptr %4, i64 2112
  %smax745 = call i64 @llvm.smax.i64(i64 %212, i64 1)
  %324 = trunc nuw i8 %.0617 to i1
  br label %325

325:                                              ; preds = %.lr.ph679, %._crit_edge673
  %.1677 = phi i1 [ %324, %.lr.ph679 ], [ %370, %._crit_edge673 ]
  %.3567676 = phi i64 [ 0, %.lr.ph679 ], [ %374, %._crit_edge673 ]
  %326 = load ptr, ptr %51, align 8, !tbaa !19
  %327 = add nsw i64 %.3567676, %214
  %328 = getelementptr inbounds i64, ptr %326, i64 %327
  %329 = load i64, ptr %328, align 8, !tbaa !20
  br i1 %.not.not598663, label %.lr.ph667, label %.preheader609

.preheader609:                                    ; preds = %342, %325
  %.0554.lcssa = phi i64 [ %329, %325 ], [ %.1555, %342 ]
  %.not.not599669.not = icmp eq i64 %.3567676, 0
  br i1 %.not.not599669.not, label %._crit_edge673, label %.lr.ph672

.lr.ph667:                                        ; preds = %325, %342
  %.0554665 = phi i64 [ %.1555, %342 ], [ %329, %325 ]
  %.7664 = phi i64 [ %343, %342 ], [ 0, %325 ]
  %330 = load ptr, ptr %320, align 8, !tbaa !19
  %331 = getelementptr inbounds ptr, ptr %330, i64 %.7664
  %332 = load ptr, ptr %331, align 8, !tbaa !35
  %333 = getelementptr inbounds double, ptr %332, i64 %.3567676
  %334 = load double, ptr %333, align 8, !tbaa !31
  %335 = fcmp une double %334, 0.000000e+00
  br i1 %335, label %336, label %342

336:                                              ; preds = %.lr.ph667
  %337 = load ptr, ptr %321, align 8, !tbaa !19
  %338 = getelementptr inbounds i64, ptr %337, i64 %.0554665
  store i64 %.7664, ptr %338, align 8, !tbaa !20
  %339 = load ptr, ptr %322, align 8, !tbaa !19
  %340 = getelementptr inbounds double, ptr %339, i64 %.0554665
  store double %334, ptr %340, align 8, !tbaa !31
  %341 = add nsw i64 %.0554665, 1
  br label %342

342:                                              ; preds = %.lr.ph667, %336
  %.1555 = phi i64 [ %341, %336 ], [ %.0554665, %.lr.ph667 ]
  %343 = add nuw nsw i64 %.7664, 1
  %exitcond743.not = icmp eq i64 %343, %214
  br i1 %exitcond743.not, label %.preheader609, label %.lr.ph667, !llvm.loop !45

.lr.ph672:                                        ; preds = %.preheader609, %357
  %.2556671 = phi i64 [ %.3, %357 ], [ %.0554.lcssa, %.preheader609 ]
  %.8670 = phi i64 [ %358, %357 ], [ 0, %.preheader609 ]
  %344 = load ptr, ptr %323, align 8, !tbaa !19
  %345 = getelementptr inbounds ptr, ptr %344, i64 %.8670
  %346 = load ptr, ptr %345, align 8, !tbaa !35
  %347 = getelementptr inbounds double, ptr %346, i64 %.3567676
  %348 = load double, ptr %347, align 8, !tbaa !31
  %349 = fcmp une double %348, 0.000000e+00
  br i1 %349, label %350, label %357

350:                                              ; preds = %.lr.ph672
  %351 = add nsw i64 %.8670, %214
  %352 = load ptr, ptr %321, align 8, !tbaa !19
  %353 = getelementptr inbounds i64, ptr %352, i64 %.2556671
  store i64 %351, ptr %353, align 8, !tbaa !20
  %354 = load ptr, ptr %322, align 8, !tbaa !19
  %355 = getelementptr inbounds double, ptr %354, i64 %.2556671
  store double %348, ptr %355, align 8, !tbaa !31
  %356 = add nsw i64 %.2556671, 1
  br label %357

357:                                              ; preds = %.lr.ph672, %350
  %.3 = phi i64 [ %356, %350 ], [ %.2556671, %.lr.ph672 ]
  %358 = add nuw nsw i64 %.8670, 1
  %exitcond744.not = icmp eq i64 %358, %.3567676
  br i1 %exitcond744.not, label %._crit_edge673, label %.lr.ph672, !llvm.loop !46

._crit_edge673:                                   ; preds = %357, %.preheader609
  %.2556.lcssa = phi i64 [ %.0554.lcssa, %.preheader609 ], [ %.3, %357 ]
  %359 = load ptr, ptr %323, align 8, !tbaa !19
  %360 = getelementptr inbounds ptr, ptr %359, i64 %.3567676
  %361 = load ptr, ptr %360, align 8, !tbaa !35
  %362 = getelementptr inbounds double, ptr %361, i64 %.3567676
  %363 = load double, ptr %362, align 8, !tbaa !31
  %364 = load ptr, ptr %321, align 8, !tbaa !19
  %365 = getelementptr inbounds i64, ptr %364, i64 %.2556.lcssa
  store i64 %327, ptr %365, align 8, !tbaa !20
  %366 = load ptr, ptr %322, align 8, !tbaa !19
  %367 = getelementptr inbounds double, ptr %366, i64 %.2556.lcssa
  store double %363, ptr %367, align 8, !tbaa !31
  %368 = add nsw i64 %.2556.lcssa, 1
  %369 = fcmp une double %363, 0.000000e+00
  %370 = select i1 %.1677, i1 %369, i1 false
  %371 = load ptr, ptr %51, align 8, !tbaa !19
  %372 = getelementptr i64, ptr %371, i64 %327
  %373 = getelementptr i8, ptr %372, i64 8
  store i64 %368, ptr %373, align 8, !tbaa !20
  %374 = add nuw nsw i64 %.3567676, 1
  %exitcond746.not = icmp eq i64 %374, %smax745
  br i1 %exitcond746.not, label %.lr.ph692, label %325, !llvm.loop !47

.lr.ph692:                                        ; preds = %._crit_edge673
  %375 = zext i1 %370 to i8
  %376 = getelementptr inbounds i8, ptr %4, i64 72
  %377 = load ptr, ptr %44, align 8, !tbaa !19
  %378 = getelementptr inbounds i64, ptr %377, i64 %214
  %379 = load i64, ptr %378, align 8, !tbaa !20
  %380 = add nsw i64 %379, %314
  call void @_ZN11alglib_impl13ivectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %376, i64 noundef %380, ptr noundef %5)
  %381 = load ptr, ptr %44, align 8, !tbaa !19
  %382 = getelementptr inbounds i64, ptr %381, i64 %214
  %383 = load i64, ptr %382, align 8, !tbaa !20
  %384 = add nsw i64 %383, %314
  call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %38, i64 noundef %384, ptr noundef %5)
  %385 = getelementptr inbounds i8, ptr %4, i64 2112
  %386 = getelementptr inbounds i8, ptr %4, i64 128
  %387 = getelementptr inbounds i8, ptr %4, i64 64
  %smax748 = call i64 @llvm.smax.i64(i64 %212, i64 1)
  br label %388

388:                                              ; preds = %.lr.ph692, %._crit_edge687
  %.9690 = phi i64 [ 0, %.lr.ph692 ], [ %411, %._crit_edge687 ]
  %389 = add nsw i64 %.9690, %214
  call void @_ZN11alglib_implL38sptrf_sluv2list1appendsequencetomatrixEPNS_16sluv2list1matrixElbdlPNS_12sparsematrixElPNS_8ae_stateE(ptr noundef nonnull %53, i64 noundef %389, i1 noundef zeroext false, double noundef 0.000000e+00, i64 noundef %17, ptr noundef nonnull %38, i64 noundef %389, ptr noundef %5)
  %390 = load ptr, ptr %44, align 8, !tbaa !19
  %391 = add nsw i64 %389, 1
  %392 = getelementptr inbounds i64, ptr %390, i64 %391
  %393 = load i64, ptr %392, align 8, !tbaa !20
  %.not.not597682.not = icmp eq i64 %.9690, 0
  br i1 %.not.not597682.not, label %._crit_edge687, label %.lr.ph686

.lr.ph686:                                        ; preds = %388, %407
  %.4684 = phi i64 [ %.5, %407 ], [ %393, %388 ]
  %.4568683 = phi i64 [ %408, %407 ], [ 0, %388 ]
  %394 = load ptr, ptr %385, align 8, !tbaa !19
  %395 = getelementptr inbounds ptr, ptr %394, i64 %.9690
  %396 = load ptr, ptr %395, align 8, !tbaa !35
  %397 = getelementptr inbounds double, ptr %396, i64 %.4568683
  %398 = load double, ptr %397, align 8, !tbaa !31
  %399 = fcmp une double %398, 0.000000e+00
  br i1 %399, label %400, label %407

400:                                              ; preds = %.lr.ph686
  %401 = add nsw i64 %.4568683, %214
  %402 = load ptr, ptr %386, align 8, !tbaa !19
  %403 = getelementptr inbounds i64, ptr %402, i64 %.4684
  store i64 %401, ptr %403, align 8, !tbaa !20
  %404 = load ptr, ptr %387, align 8, !tbaa !19
  %405 = getelementptr inbounds double, ptr %404, i64 %.4684
  store double %398, ptr %405, align 8, !tbaa !31
  %406 = add nsw i64 %.4684, 1
  br label %407

407:                                              ; preds = %.lr.ph686, %400
  %.5 = phi i64 [ %406, %400 ], [ %.4684, %.lr.ph686 ]
  %408 = add nuw nsw i64 %.4568683, 1
  %exitcond747.not = icmp eq i64 %408, %.9690
  br i1 %exitcond747.not, label %._crit_edge687.loopexit, label %.lr.ph686, !llvm.loop !48

._crit_edge687.loopexit:                          ; preds = %407
  %.pre760 = load ptr, ptr %44, align 8, !tbaa !19
  br label %._crit_edge687

._crit_edge687:                                   ; preds = %._crit_edge687.loopexit, %388
  %409 = phi ptr [ %390, %388 ], [ %.pre760, %._crit_edge687.loopexit ]
  %.4.lcssa = phi i64 [ %393, %388 ], [ %.5, %._crit_edge687.loopexit ]
  %410 = getelementptr inbounds i64, ptr %409, i64 %391
  store i64 %.4.lcssa, ptr %410, align 8, !tbaa !20
  %411 = add nuw nsw i64 %.9690, 1
  %exitcond749.not = icmp eq i64 %411, %smax748
  br i1 %exitcond749.not, label %.loopexit608, label %388, !llvm.loop !49

.loopexit608:                                     ; preds = %._crit_edge687, %.loopexit613
  %.2 = phi i8 [ %.0617, %.loopexit613 ], [ %375, %._crit_edge687 ]
  %412 = getelementptr inbounds i8, ptr %4, i64 2440
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %412, i64 noundef %17, ptr noundef %5)
  br i1 %.not.not619, label %.lr.ph696, label %._crit_edge704

.lr.ph696:                                        ; preds = %.loopexit608
  %413 = getelementptr inbounds i8, ptr %4, i64 2496
  %xtraiter793 = and i64 %17, 1
  %414 = icmp eq i64 %17, 1
  br i1 %414, label %.preheader607.unr-lcssa, label %.lr.ph696.new

.lr.ph696.new:                                    ; preds = %.lr.ph696
  %unroll_iter796 = and i64 %17, 9223372036854775806
  br label %426

.preheader607.unr-lcssa:                          ; preds = %426, %.lr.ph696
  %.10694.unr = phi i64 [ 0, %.lr.ph696 ], [ %437, %426 ]
  %lcmp.mod795.not = icmp eq i64 %xtraiter793, 0
  br i1 %lcmp.mod795.not, label %.preheader607, label %.preheader607.epilog-lcssa

.preheader607.epilog-lcssa:                       ; preds = %.preheader607.unr-lcssa
  %415 = load ptr, ptr %44, align 8, !tbaa !19
  %416 = getelementptr i64, ptr %415, i64 %.10694.unr
  %417 = getelementptr i8, ptr %416, i64 8
  %418 = load i64, ptr %417, align 8, !tbaa !20
  %419 = getelementptr inbounds i64, ptr %415, i64 %.10694.unr
  %420 = load i64, ptr %419, align 8, !tbaa !20
  %421 = sub nsw i64 %418, %420
  %422 = load ptr, ptr %413, align 8, !tbaa !19
  %423 = getelementptr inbounds i64, ptr %422, i64 %.10694.unr
  store i64 %421, ptr %423, align 8, !tbaa !20
  br label %.preheader607

.preheader607:                                    ; preds = %.preheader607.unr-lcssa, %.preheader607.epilog-lcssa
  br i1 %.not.not619, label %.lr.ph703, label %._crit_edge704

.lr.ph703:                                        ; preds = %.preheader607
  %424 = getelementptr inbounds i8, ptr %4, i64 496
  %425 = getelementptr inbounds i8, ptr %4, i64 2496
  br label %445

426:                                              ; preds = %426, %.lr.ph696.new
  %.10694 = phi i64 [ 0, %.lr.ph696.new ], [ %437, %426 ]
  %niter797 = phi i64 [ 0, %.lr.ph696.new ], [ %niter797.next.1, %426 ]
  %427 = load ptr, ptr %44, align 8, !tbaa !19
  %428 = or disjoint i64 %.10694, 1
  %429 = getelementptr inbounds i64, ptr %427, i64 %428
  %430 = load i64, ptr %429, align 8, !tbaa !20
  %431 = getelementptr inbounds i64, ptr %427, i64 %.10694
  %432 = load i64, ptr %431, align 8, !tbaa !20
  %433 = sub nsw i64 %430, %432
  %434 = load ptr, ptr %413, align 8, !tbaa !19
  %435 = getelementptr inbounds i64, ptr %434, i64 %.10694
  store i64 %433, ptr %435, align 8, !tbaa !20
  %436 = load ptr, ptr %44, align 8, !tbaa !19
  %437 = add nuw nsw i64 %.10694, 2
  %438 = getelementptr inbounds i64, ptr %436, i64 %437
  %439 = load i64, ptr %438, align 8, !tbaa !20
  %440 = getelementptr inbounds i64, ptr %436, i64 %428
  %441 = load i64, ptr %440, align 8, !tbaa !20
  %442 = sub nsw i64 %439, %441
  %443 = load ptr, ptr %413, align 8, !tbaa !19
  %444 = getelementptr inbounds i64, ptr %443, i64 %428
  store i64 %442, ptr %444, align 8, !tbaa !20
  %niter797.next.1 = add i64 %niter797, 2
  %niter797.ncmp.1 = icmp eq i64 %niter797.next.1, %unroll_iter796
  br i1 %niter797.ncmp.1, label %.preheader607.unr-lcssa, label %426, !llvm.loop !50

.loopexit606:                                     ; preds = %.lr.ph700.prol.loopexit, %.lr.ph700, %445
  %exitcond752.not = icmp eq i64 %449, %17
  br i1 %exitcond752.not, label %._crit_edge704, label %445, !llvm.loop !51

445:                                              ; preds = %.lr.ph703, %.loopexit606
  %.11702 = phi i64 [ 0, %.lr.ph703 ], [ %449, %.loopexit606 ]
  %446 = load ptr, ptr %51, align 8, !tbaa !19
  %447 = getelementptr inbounds i64, ptr %446, i64 %.11702
  %448 = load i64, ptr %447, align 8, !tbaa !20
  %449 = add nuw nsw i64 %.11702, 1
  %450 = getelementptr inbounds i64, ptr %446, i64 %449
  %451 = load i64, ptr %450, align 8, !tbaa !20
  %.not.not596697 = icmp slt i64 %448, %451
  br i1 %.not.not596697, label %.lr.ph700.preheader, label %.loopexit606

.lr.ph700.preheader:                              ; preds = %445
  %452 = sub i64 %451, %448
  %.neg = add i64 %448, 1
  %xtraiter798 = and i64 %452, 1
  %lcmp.mod799.not = icmp eq i64 %xtraiter798, 0
  br i1 %lcmp.mod799.not, label %.lr.ph700.prol.loopexit, label %.lr.ph700.prol

.lr.ph700.prol:                                   ; preds = %.lr.ph700.preheader
  %453 = load ptr, ptr %424, align 8, !tbaa !19
  %454 = getelementptr inbounds i64, ptr %453, i64 %448
  %455 = load i64, ptr %454, align 8, !tbaa !20
  %456 = load ptr, ptr %425, align 8, !tbaa !19
  %457 = getelementptr inbounds i64, ptr %456, i64 %455
  %458 = load i64, ptr %457, align 8, !tbaa !20
  %459 = add nsw i64 %458, 1
  store i64 %459, ptr %457, align 8, !tbaa !20
  %460 = add nsw i64 %448, 1
  br label %.lr.ph700.prol.loopexit

.lr.ph700.prol.loopexit:                          ; preds = %.lr.ph700.prol, %.lr.ph700.preheader
  %.5569698.unr = phi i64 [ %448, %.lr.ph700.preheader ], [ %460, %.lr.ph700.prol ]
  %461 = icmp eq i64 %451, %.neg
  br i1 %461, label %.loopexit606, label %.lr.ph700

.lr.ph700:                                        ; preds = %.lr.ph700.prol.loopexit, %.lr.ph700
  %.5569698 = phi i64 [ %477, %.lr.ph700 ], [ %.5569698.unr, %.lr.ph700.prol.loopexit ]
  %462 = load ptr, ptr %424, align 8, !tbaa !19
  %463 = getelementptr inbounds i64, ptr %462, i64 %.5569698
  %464 = load i64, ptr %463, align 8, !tbaa !20
  %465 = load ptr, ptr %425, align 8, !tbaa !19
  %466 = getelementptr inbounds i64, ptr %465, i64 %464
  %467 = load i64, ptr %466, align 8, !tbaa !20
  %468 = add nsw i64 %467, 1
  store i64 %468, ptr %466, align 8, !tbaa !20
  %469 = load ptr, ptr %424, align 8, !tbaa !19
  %470 = getelementptr i64, ptr %469, i64 %.5569698
  %471 = getelementptr i8, ptr %470, i64 8
  %472 = load i64, ptr %471, align 8, !tbaa !20
  %473 = load ptr, ptr %425, align 8, !tbaa !19
  %474 = getelementptr inbounds i64, ptr %473, i64 %472
  %475 = load i64, ptr %474, align 8, !tbaa !20
  %476 = add nsw i64 %475, 1
  store i64 %476, ptr %474, align 8, !tbaa !20
  %477 = add nsw i64 %.5569698, 2
  %exitcond751.not.1 = icmp eq i64 %477, %451
  br i1 %exitcond751.not.1, label %.loopexit606, label %.lr.ph700, !llvm.loop !52

._crit_edge704:                                   ; preds = %.loopexit606, %.loopexit608, %.preheader607
  %478 = getelementptr inbounds i8, ptr %0, i64 320
  store i64 1, ptr %478, align 8, !tbaa !53
  %479 = load ptr, ptr %44, align 8, !tbaa !19
  %480 = getelementptr inbounds i64, ptr %479, i64 %17
  %481 = load i64, ptr %480, align 8, !tbaa !20
  %482 = load ptr, ptr %51, align 8, !tbaa !19
  %483 = getelementptr inbounds i64, ptr %482, i64 %17
  %484 = load i64, ptr %483, align 8, !tbaa !20
  %485 = add nsw i64 %484, %481
  %486 = getelementptr inbounds i8, ptr %0, i64 352
  store i64 %485, ptr %486, align 8, !tbaa !54
  %487 = getelementptr inbounds i8, ptr %0, i64 328
  store i64 %17, ptr %487, align 8, !tbaa !55
  %488 = getelementptr inbounds i8, ptr %0, i64 336
  store i64 %17, ptr %488, align 8, !tbaa !56
  %489 = getelementptr inbounds i8, ptr %0, i64 128
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %489, i64 noundef %43, ptr noundef %5)
  %490 = getelementptr inbounds i8, ptr %0, i64 64
  %491 = load i64, ptr %486, align 8, !tbaa !54
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %490, i64 noundef %491, ptr noundef %5)
  %492 = load i64, ptr %486, align 8, !tbaa !54
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %0, i64 noundef %492, ptr noundef %5)
  %493 = getelementptr inbounds i8, ptr %0, i64 184
  %494 = load ptr, ptr %493, align 8, !tbaa !19
  store i64 0, ptr %494, align 8, !tbaa !20
  br i1 %.not.not619, label %.lr.ph708, label %._crit_edge729.critedge

.lr.ph708:                                        ; preds = %._crit_edge704
  %495 = getelementptr inbounds i8, ptr %4, i64 2496
  %xtraiter801 = and i64 %17, 1
  %496 = icmp eq i64 %17, 1
  br i1 %496, label %.preheader605.unr-lcssa, label %.lr.ph708.new

.lr.ph708.new:                                    ; preds = %.lr.ph708
  %unroll_iter804 = and i64 %17, 9223372036854775806
  br label %511

.preheader605.unr-lcssa:                          ; preds = %511, %.lr.ph708
  %.12706.unr = phi i64 [ 0, %.lr.ph708 ], [ %528, %511 ]
  %lcmp.mod803.not = icmp eq i64 %xtraiter801, 0
  br i1 %lcmp.mod803.not, label %.preheader605, label %.preheader605.epilog-lcssa

.preheader605.epilog-lcssa:                       ; preds = %.preheader605.unr-lcssa
  %497 = load ptr, ptr %493, align 8, !tbaa !19
  %498 = getelementptr inbounds i64, ptr %497, i64 %.12706.unr
  %499 = load i64, ptr %498, align 8, !tbaa !20
  %500 = load ptr, ptr %495, align 8, !tbaa !19
  %501 = getelementptr inbounds i64, ptr %500, i64 %.12706.unr
  %502 = load i64, ptr %501, align 8, !tbaa !20
  %503 = add nsw i64 %502, %499
  %504 = getelementptr i64, ptr %497, i64 %.12706.unr
  %505 = getelementptr i8, ptr %504, i64 8
  store i64 %503, ptr %505, align 8, !tbaa !20
  br label %.preheader605

.preheader605:                                    ; preds = %.preheader605.unr-lcssa, %.preheader605.epilog-lcssa
  br i1 %.not.not619, label %.lr.ph716, label %._crit_edge729.critedge

.lr.ph716:                                        ; preds = %.preheader605
  %506 = getelementptr inbounds i8, ptr %4, i64 128
  %507 = getelementptr inbounds i8, ptr %0, i64 120
  %508 = getelementptr inbounds i8, ptr %4, i64 64
  %509 = getelementptr inbounds i8, ptr %0, i64 56
  %510 = getelementptr inbounds i8, ptr %4, i64 2496
  br label %530

511:                                              ; preds = %511, %.lr.ph708.new
  %.12706 = phi i64 [ 0, %.lr.ph708.new ], [ %528, %511 ]
  %niter805 = phi i64 [ 0, %.lr.ph708.new ], [ %niter805.next.1, %511 ]
  %512 = load ptr, ptr %493, align 8, !tbaa !19
  %513 = getelementptr inbounds i64, ptr %512, i64 %.12706
  %514 = load i64, ptr %513, align 8, !tbaa !20
  %515 = load ptr, ptr %495, align 8, !tbaa !19
  %516 = getelementptr inbounds i64, ptr %515, i64 %.12706
  %517 = load i64, ptr %516, align 8, !tbaa !20
  %518 = add nsw i64 %517, %514
  %519 = or disjoint i64 %.12706, 1
  %520 = getelementptr inbounds i64, ptr %512, i64 %519
  store i64 %518, ptr %520, align 8, !tbaa !20
  %521 = load ptr, ptr %493, align 8, !tbaa !19
  %522 = getelementptr inbounds i64, ptr %521, i64 %519
  %523 = load i64, ptr %522, align 8, !tbaa !20
  %524 = load ptr, ptr %495, align 8, !tbaa !19
  %525 = getelementptr inbounds i64, ptr %524, i64 %519
  %526 = load i64, ptr %525, align 8, !tbaa !20
  %527 = add nsw i64 %526, %523
  %528 = add nuw nsw i64 %.12706, 2
  %529 = getelementptr inbounds i64, ptr %521, i64 %528
  store i64 %527, ptr %529, align 8, !tbaa !20
  %niter805.next.1 = add i64 %niter805, 2
  %niter805.ncmp.1 = icmp eq i64 %niter805.next.1, %unroll_iter804
  br i1 %niter805.ncmp.1, label %.preheader605.unr-lcssa, label %511, !llvm.loop !57

530:                                              ; preds = %.lr.ph716, %._crit_edge713
  %.13715 = phi i64 [ 0, %.lr.ph716 ], [ %534, %._crit_edge713 ]
  %531 = load ptr, ptr %44, align 8, !tbaa !19
  %532 = getelementptr inbounds i64, ptr %531, i64 %.13715
  %533 = load i64, ptr %532, align 8, !tbaa !20
  %534 = add nuw nsw i64 %.13715, 1
  %535 = getelementptr inbounds i64, ptr %531, i64 %534
  %536 = load i64, ptr %535, align 8, !tbaa !20
  %537 = load ptr, ptr %493, align 8, !tbaa !19
  %538 = getelementptr inbounds i64, ptr %537, i64 %.13715
  %539 = load i64, ptr %538, align 8, !tbaa !20
  %.not.not595709 = icmp slt i64 %533, %536
  br i1 %.not.not595709, label %.lr.ph712.preheader, label %._crit_edge713

.lr.ph712.preheader:                              ; preds = %530
  %540 = sub i64 %536, %533
  %.neg808 = add i64 %533, 1
  %xtraiter806 = and i64 %540, 1
  %lcmp.mod807.not = icmp eq i64 %xtraiter806, 0
  br i1 %lcmp.mod807.not, label %.lr.ph712.prol.loopexit, label %.lr.ph712.prol

.lr.ph712.prol:                                   ; preds = %.lr.ph712.preheader
  %541 = load ptr, ptr %506, align 8, !tbaa !19
  %542 = getelementptr inbounds i64, ptr %541, i64 %533
  %543 = load i64, ptr %542, align 8, !tbaa !20
  %544 = load ptr, ptr %507, align 8, !tbaa !19
  %545 = getelementptr inbounds i64, ptr %544, i64 %539
  store i64 %543, ptr %545, align 8, !tbaa !20
  %546 = load ptr, ptr %508, align 8, !tbaa !19
  %547 = getelementptr inbounds double, ptr %546, i64 %533
  %548 = load double, ptr %547, align 8, !tbaa !31
  %549 = load ptr, ptr %509, align 8, !tbaa !19
  %550 = getelementptr inbounds double, ptr %549, i64 %539
  store double %548, ptr %550, align 8, !tbaa !31
  %551 = add nsw i64 %533, 1
  br label %.lr.ph712.prol.loopexit

.lr.ph712.prol.loopexit:                          ; preds = %.lr.ph712.prol, %.lr.ph712.preheader
  %.6570710.unr = phi i64 [ %533, %.lr.ph712.preheader ], [ %551, %.lr.ph712.prol ]
  %552 = icmp eq i64 %536, %.neg808
  br i1 %552, label %._crit_edge713.loopexit, label %.lr.ph712

.lr.ph712:                                        ; preds = %.lr.ph712.prol.loopexit, %.lr.ph712
  %.6570710 = phi i64 [ %578, %.lr.ph712 ], [ %.6570710.unr, %.lr.ph712.prol.loopexit ]
  %553 = load ptr, ptr %506, align 8, !tbaa !19
  %554 = getelementptr inbounds i64, ptr %553, i64 %.6570710
  %555 = load i64, ptr %554, align 8, !tbaa !20
  %556 = load ptr, ptr %507, align 8, !tbaa !19
  %557 = sub nsw i64 %.6570710, %533
  %558 = add nsw i64 %557, %539
  %559 = getelementptr inbounds i64, ptr %556, i64 %558
  store i64 %555, ptr %559, align 8, !tbaa !20
  %560 = load ptr, ptr %508, align 8, !tbaa !19
  %561 = getelementptr inbounds double, ptr %560, i64 %.6570710
  %562 = load double, ptr %561, align 8, !tbaa !31
  %563 = load ptr, ptr %509, align 8, !tbaa !19
  %564 = getelementptr inbounds double, ptr %563, i64 %558
  store double %562, ptr %564, align 8, !tbaa !31
  %565 = add nsw i64 %.6570710, 1
  %566 = load ptr, ptr %506, align 8, !tbaa !19
  %567 = getelementptr inbounds i64, ptr %566, i64 %565
  %568 = load i64, ptr %567, align 8, !tbaa !20
  %569 = load ptr, ptr %507, align 8, !tbaa !19
  %570 = sub nsw i64 %565, %533
  %571 = add nsw i64 %570, %539
  %572 = getelementptr inbounds i64, ptr %569, i64 %571
  store i64 %568, ptr %572, align 8, !tbaa !20
  %573 = load ptr, ptr %508, align 8, !tbaa !19
  %574 = getelementptr inbounds double, ptr %573, i64 %565
  %575 = load double, ptr %574, align 8, !tbaa !31
  %576 = load ptr, ptr %509, align 8, !tbaa !19
  %577 = getelementptr inbounds double, ptr %576, i64 %571
  store double %575, ptr %577, align 8, !tbaa !31
  %578 = add nsw i64 %.6570710, 2
  %exitcond754.not.1 = icmp eq i64 %578, %536
  br i1 %exitcond754.not.1, label %._crit_edge713.loopexit, label %.lr.ph712, !llvm.loop !58

._crit_edge713.loopexit:                          ; preds = %.lr.ph712, %.lr.ph712.prol.loopexit
  %.pre761 = load ptr, ptr %44, align 8, !tbaa !19
  %.phi.trans.insert = getelementptr inbounds i64, ptr %.pre761, i64 %534
  %.pre762 = load i64, ptr %.phi.trans.insert, align 8, !tbaa !20
  %.phi.trans.insert763 = getelementptr inbounds i64, ptr %.pre761, i64 %.13715
  %.pre764 = load i64, ptr %.phi.trans.insert763, align 8, !tbaa !20
  br label %._crit_edge713

._crit_edge713:                                   ; preds = %._crit_edge713.loopexit, %530
  %579 = phi i64 [ %.pre764, %._crit_edge713.loopexit ], [ %533, %530 ]
  %580 = phi i64 [ %.pre762, %._crit_edge713.loopexit ], [ %536, %530 ]
  %581 = sub nsw i64 %580, %579
  %582 = load ptr, ptr %510, align 8, !tbaa !19
  %583 = getelementptr inbounds i64, ptr %582, i64 %.13715
  store i64 %581, ptr %583, align 8, !tbaa !20
  %exitcond755.not = icmp eq i64 %534, %17
  br i1 %exitcond755.not, label %._crit_edge717, label %530, !llvm.loop !59

._crit_edge717:                                   ; preds = %._crit_edge713
  %584 = getelementptr inbounds i8, ptr %0, i64 192
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %584, i64 noundef %17, ptr noundef %5)
  %585 = getelementptr inbounds i8, ptr %0, i64 256
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %585, i64 noundef %17, ptr noundef %5)
  br i1 %.not.not619, label %.lr.ph721, label %._crit_edge729

.lr.ph721:                                        ; preds = %._crit_edge717
  %586 = getelementptr inbounds i8, ptr %4, i64 2496
  %587 = getelementptr inbounds i8, ptr %0, i64 248
  %588 = getelementptr inbounds i8, ptr %0, i64 312
  br label %594

.preheader:                                       ; preds = %594
  br i1 %.not.not619, label %.lr.ph728, label %._crit_edge729

.lr.ph728:                                        ; preds = %.preheader
  %589 = getelementptr inbounds i8, ptr %4, i64 496
  %590 = getelementptr inbounds i8, ptr %4, i64 2496
  %591 = getelementptr inbounds i8, ptr %0, i64 120
  %592 = getelementptr inbounds i8, ptr %4, i64 432
  %593 = getelementptr inbounds i8, ptr %0, i64 56
  br label %616

594:                                              ; preds = %.lr.ph721, %594
  %.14719 = phi i64 [ 0, %.lr.ph721 ], [ %615, %594 ]
  %595 = load ptr, ptr %493, align 8, !tbaa !19
  %596 = getelementptr inbounds i64, ptr %595, i64 %.14719
  %597 = load i64, ptr %596, align 8, !tbaa !20
  %598 = load ptr, ptr %586, align 8, !tbaa !19
  %599 = getelementptr inbounds i64, ptr %598, i64 %.14719
  %600 = load i64, ptr %599, align 8, !tbaa !20
  %601 = add nsw i64 %600, %597
  %602 = load ptr, ptr %587, align 8, !tbaa !19
  %603 = getelementptr inbounds i64, ptr %602, i64 %.14719
  store i64 %601, ptr %603, align 8, !tbaa !20
  %604 = load ptr, ptr %587, align 8, !tbaa !19
  %605 = getelementptr inbounds i64, ptr %604, i64 %.14719
  %606 = load i64, ptr %605, align 8, !tbaa !20
  %607 = add nsw i64 %606, 1
  %608 = load ptr, ptr %588, align 8, !tbaa !19
  %609 = getelementptr inbounds i64, ptr %608, i64 %.14719
  store i64 %607, ptr %609, align 8, !tbaa !20
  %610 = load ptr, ptr %587, align 8, !tbaa !19
  %611 = getelementptr inbounds i64, ptr %610, i64 %.14719
  %612 = load i64, ptr %611, align 8, !tbaa !20
  %613 = load ptr, ptr %586, align 8, !tbaa !19
  %614 = getelementptr inbounds i64, ptr %613, i64 %.14719
  store i64 %612, ptr %614, align 8, !tbaa !20
  %615 = add nuw nsw i64 %.14719, 1
  %exitcond756.not = icmp eq i64 %615, %17
  br i1 %exitcond756.not, label %.preheader, label %594, !llvm.loop !60

.loopexit:                                        ; preds = %.lr.ph725, %616
  %exitcond758.not = icmp eq i64 %620, %17
  br i1 %exitcond758.not, label %._crit_edge729, label %616, !llvm.loop !61

616:                                              ; preds = %.lr.ph728, %.loopexit
  %.15727 = phi i64 [ 0, %.lr.ph728 ], [ %620, %.loopexit ]
  %617 = load ptr, ptr %51, align 8, !tbaa !19
  %618 = getelementptr inbounds i64, ptr %617, i64 %.15727
  %619 = load i64, ptr %618, align 8, !tbaa !20
  %620 = add nuw nsw i64 %.15727, 1
  %621 = getelementptr inbounds i64, ptr %617, i64 %620
  %622 = load i64, ptr %621, align 8, !tbaa !20
  %.not.not594722 = icmp slt i64 %619, %622
  br i1 %.not.not594722, label %.lr.ph725, label %.loopexit

.lr.ph725:                                        ; preds = %616, %.lr.ph725
  %.7571723 = phi i64 [ %639, %.lr.ph725 ], [ %619, %616 ]
  %623 = load ptr, ptr %589, align 8, !tbaa !19
  %624 = getelementptr inbounds i64, ptr %623, i64 %.7571723
  %625 = load i64, ptr %624, align 8, !tbaa !20
  %626 = load ptr, ptr %590, align 8, !tbaa !19
  %627 = getelementptr inbounds i64, ptr %626, i64 %625
  %628 = load i64, ptr %627, align 8, !tbaa !20
  %629 = load ptr, ptr %591, align 8, !tbaa !19
  %630 = getelementptr inbounds i64, ptr %629, i64 %628
  store i64 %.15727, ptr %630, align 8, !tbaa !20
  %631 = load ptr, ptr %592, align 8, !tbaa !19
  %632 = getelementptr inbounds double, ptr %631, i64 %.7571723
  %633 = load double, ptr %632, align 8, !tbaa !31
  %634 = load ptr, ptr %593, align 8, !tbaa !19
  %635 = getelementptr inbounds double, ptr %634, i64 %628
  store double %633, ptr %635, align 8, !tbaa !31
  %636 = add nsw i64 %628, 1
  %637 = load ptr, ptr %590, align 8, !tbaa !19
  %638 = getelementptr inbounds i64, ptr %637, i64 %625
  store i64 %636, ptr %638, align 8, !tbaa !20
  %639 = add nsw i64 %.7571723, 1
  %exitcond757.not = icmp eq i64 %639, %622
  br i1 %exitcond757.not, label %.loopexit, label %.lr.ph725, !llvm.loop !62

._crit_edge729.critedge:                          ; preds = %.preheader605, %._crit_edge704
  %640 = getelementptr inbounds i8, ptr %0, i64 192
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %640, i64 noundef %17, ptr noundef %5)
  %641 = getelementptr inbounds i8, ptr %0, i64 256
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %641, i64 noundef %17, ptr noundef %5)
  br label %._crit_edge729

._crit_edge729:                                   ; preds = %.loopexit, %._crit_edge729.critedge, %._crit_edge717, %.preheader
  %642 = trunc nuw i8 %.2 to i1
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #6
  ret i1 %642
}

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN11alglib_implL20sptrf_sluv2list1initElPNS_16sluv2list1matrixEPNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN11alglib_implL21sptrf_sparsetrailinitEPNS_12sparsematrixEPNS_16sluv2sparsetrailEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN11alglib_implL20sptrf_densetrailinitEPNS_15sluv2densetrailElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN11alglib_implL24sptrf_sparsetraildensifyEPNS_16sluv2sparsetrailElPNS_16sluv2list1matrixEPNS_15sluv2densetrailEPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN11alglib_implL26sptrf_sparsetrailfindpivotEPNS_16sluv2sparsetrailElPlS2_PNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZN11alglib_implL20sptrf_sluv2list1swapEPNS_16sluv2list1matrixEllPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN11alglib_implL25sptrf_sparsetrailpivotoutEPNS_16sluv2sparsetrailEllPdPNS_9ae_vectorES4_PlS4_S4_S5_PNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN11alglib_implL38sptrf_sluv2list1appendsequencetomatrixEPNS_16sluv2list1matrixElbdlPNS_12sparsematrixElPNS_8ae_stateE(ptr noundef, i64 noundef, i1 noundef zeroext, double noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN11alglib_implL32sptrf_sluv2list1pushsparsevectorEPNS_16sluv2list1matrixEPNS_9ae_vectorES3_lPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN11alglib_implL23sptrf_sparsetrailupdateEPNS_16sluv2sparsetrailEPNS_9ae_vectorES3_lS3_S3_lPNS_16sluv2list1matrixEPNS_15sluv2densetrailEbPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef, i1 noundef zeroext, ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl13ivectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #1

declare void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #1

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "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 #2 = { mustprogress 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 #3 = { mustprogress 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 #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { 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, !7, i64 0}
!6 = !{!"_ZTSN11alglib_impl11sluv2bufferE", !7, i64 0, !10, i64 8, !10, i64 376, !15, i64 744, !15, i64 968, !16, i64 1192, !17, i64 1816, !11, i64 1976, !18, i64 2040, !11, i64 2120, !11, i64 2184, !11, i64 2248, !11, i64 2312, !11, i64 2376, !11, i64 2440, !11, i64 2504}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSN11alglib_impl12sparsematrixE", !11, i64 0, !11, i64 64, !11, i64 128, !11, i64 192, !11, i64 256, !7, i64 320, !7, i64 328, !7, i64 336, !7, i64 344, !7, i64 352, !7, i64 360}
!11 = !{!"_ZTSN11alglib_impl9ae_vectorE", !7, i64 0, !7, i64 8, !12, i64 16, !13, i64 24, !8, i64 56}
!12 = !{!"bool", !8, i64 0}
!13 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24}
!14 = !{!"any pointer", !8, i64 0}
!15 = !{!"_ZTSN11alglib_impl16sluv2list1matrixE", !7, i64 0, !7, i64 8, !11, i64 16, !11, i64 80, !11, i64 144, !7, i64 208, !7, i64 216}
!16 = !{!"_ZTSN11alglib_impl16sluv2sparsetrailE", !7, i64 0, !7, i64 8, !11, i64 16, !7, i64 80, !7, i64 88, !7, i64 96, !11, i64 104, !11, i64 168, !11, i64 232, !11, i64 296, !11, i64 360, !11, i64 424, !11, i64 488, !7, i64 552, !11, i64 560}
!17 = !{!"_ZTSN11alglib_impl15sluv2densetrailE", !7, i64 0, !7, i64 8, !18, i64 16, !11, i64 96}
!18 = !{!"_ZTSN11alglib_impl9ae_matrixE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !12, i64 32, !13, i64 40, !8, i64 72}
!19 = !{!8, !8, i64 0}
!20 = !{!7, !7, i64 0}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.unroll.disable"}
!25 = !{!6, !7, i64 328}
!26 = !{!6, !7, i64 336}
!27 = !{!6, !7, i64 344}
!28 = !{!6, !7, i64 696}
!29 = !{!6, !7, i64 704}
!30 = !{!6, !7, i64 712}
!31 = !{!32, !32, i64 0}
!32 = !{!"double", !8, i64 0}
!33 = distinct !{!33, !22}
!34 = !{!6, !7, i64 1824}
!35 = !{!14, !14, i64 0}
!36 = distinct !{!36, !22}
!37 = distinct !{!37, !22}
!38 = distinct !{!38, !22}
!39 = distinct !{!39, !22}
!40 = distinct !{!40, !22}
!41 = distinct !{!41, !22}
!42 = distinct !{!42, !22}
!43 = distinct !{!43, !22}
!44 = distinct !{!44, !22}
!45 = distinct !{!45, !22}
!46 = distinct !{!46, !22}
!47 = distinct !{!47, !22}
!48 = distinct !{!48, !22}
!49 = distinct !{!49, !22}
!50 = distinct !{!50, !22}
!51 = distinct !{!51, !22}
!52 = distinct !{!52, !22}
!53 = !{!10, !7, i64 320}
!54 = !{!10, !7, i64 352}
!55 = !{!10, !7, i64 328}
!56 = !{!10, !7, i64 336}
!57 = distinct !{!57, !22}
!58 = distinct !{!58, !22}
!59 = distinct !{!59, !22}
!60 = distinct !{!60, !22}
!61 = distinct !{!61, !22}
!62 = distinct !{!62, !22}


; Effective O3 passes: BDCEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass