; LLVM IR from Dimandragon/non-parametric-dsp :: alglib-cpp/src (optimization)

; 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::vipmstate" = type { i8, i8, i64, i64, double, double, double, i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::ae_vector", i64, i8, %"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_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"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, %"struct.alglib_impl::vipmvars", %"struct.alglib_impl::vipmvars", %"struct.alglib_impl::vipmvars", %"struct.alglib_impl::vipmvars", %"struct.alglib_impl::vipmvars", %"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, i8, i8, i64, i8, i8, %"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::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::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::vipmreducedsparsesystem", %"struct.alglib_impl::vipmrighthandside", %"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::ae_vector", %"struct.alglib_impl::vipmvars", %"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_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::sparsematrix" }
%"struct.alglib_impl::vipmreducedsparsesystem" = type { %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::spcholanalysis", %"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::spcholanalysis" = type { i64, i64, i64, i8, i64, double, double, double, double, %"struct.alglib_impl::ae_vector", i8, i8, i8, i8, i8, %"struct.alglib_impl::ae_vector", 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", i8, %"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", i8, i8, %"struct.alglib_impl::spcholadj", %"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_nxpool", %"struct.alglib_impl::ae_nxpool", %"struct.alglib_impl::ae_nxpool", %"struct.alglib_impl::ae_nxpool", %"struct.alglib_impl::ae_nxpool", %"struct.alglib_impl::ae_nxpool", %"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::amdbuffer", %"struct.alglib_impl::priorityamdbuffers", %"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", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::spcholadj" = 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", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::ae_nxpool" = type { i64, i64, i64, i64, %"struct.alglib_impl::ae_dyn_block", %"struct.alglib_impl::ae_lock", %"struct.alglib_impl::ae_dyn_block" }
%"struct.alglib_impl::ae_lock" = type { ptr, %"struct.alglib_impl::ae_dyn_block", i8 }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%"struct.alglib_impl::amdbuffer" = type { i64, i8, i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::amdknset", %"struct.alglib_impl::amdknset", %"struct.alglib_impl::amdknset", %"struct.alglib_impl::amdllmatrix", %"struct.alglib_impl::amdvertexset", %"struct.alglib_impl::niset", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::niset", %"struct.alglib_impl::niset", %"struct.alglib_impl::niset", %"struct.alglib_impl::niset", %"struct.alglib_impl::niset", %"struct.alglib_impl::niset", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::niset", %"struct.alglib_impl::niset", %"struct.alglib_impl::amdknset", %"struct.alglib_impl::niset", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix" }
%"struct.alglib_impl::amdllmatrix" = type { i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64 }
%"struct.alglib_impl::amdvertexset" = type { i64, i8, 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" }
%"struct.alglib_impl::amdknset" = type { 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", i64, i64, i64 }
%"struct.alglib_impl::niset" = type { i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64 }
%"struct.alglib_impl::priorityamdbuffers" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::amdbuffer", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix" }
%"struct.alglib_impl::vipmrighthandside" = 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", %"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::vipmvars" = type { 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", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"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 }
%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 }
%"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::ae_state" = type { i64, double, double, double, ptr, %"struct.alglib_impl::ae_dyn_block", ptr, i32, ptr, i64, ptr, ptr, ptr }

@.str.595 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.596 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.597 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.598 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.599 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.600 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.601 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.602 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.603 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.604 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.605 = external hidden unnamed_addr constant [83 x i8], align 1
@.str.606 = external hidden unnamed_addr constant [72 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

declare noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef, ptr noundef) #1

declare noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef, ptr noundef) #1

declare noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef, double noundef) #1

declare noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef, double noundef) #1

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

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

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

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

declare noundef zeroext i1 @_ZN11alglib_impl11ae_isneginfEdPNS_8ae_stateE(double noundef, ptr noundef) #1

declare noundef zeroext i1 @_ZN11alglib_impl11ae_isposinfEdPNS_8ae_stateE(double noundef, ptr noundef) #1

declare void @_ZN11alglib_impl18sparsecopytocrsbufEPKNS_12sparsematrixEPS0_PNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) #1

declare noundef zeroext i1 @_ZN11alglib_impl20apservisfinitematrixEPKNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef) #1

declare void @_ZN11alglib_impl22sparsecreatecrsinplaceEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef, ptr noundef) #1

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl18vipmsetconstraintsEPNS_9vipmstateEPKNS_9ae_vectorES4_PKNS_12sparsematrixElPKNS_9ae_matrixElS4_S4_PNS_8ae_stateE(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i64 noundef %4, ptr noundef %5, i64 noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9) #2 {
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i64, align 8
  %16 = alloca ptr, align 8
  %17 = alloca i64, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  store ptr %0, ptr %11, align 8, !tbaa !5
  store ptr %1, ptr %12, align 8, !tbaa !5
  store ptr %2, ptr %13, align 8, !tbaa !5
  store ptr %3, ptr %14, align 8, !tbaa !5
  store i64 %4, ptr %15, align 8, !tbaa !9
  store ptr %5, ptr %16, align 8, !tbaa !5
  store i64 %6, ptr %17, align 8, !tbaa !9
  store ptr %7, ptr %18, align 8, !tbaa !5
  store ptr %8, ptr %19, align 8, !tbaa !5
  store ptr %9, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #3
  %34 = load ptr, ptr %11, align 8, !tbaa !5
  %35 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %34, i32 0, i32 2
  %36 = load i64, ptr %35, align 8, !tbaa !11
  store i64 %36, ptr %22, align 8, !tbaa !9
  %37 = load ptr, ptr %11, align 8, !tbaa !5
  %38 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %37, i32 0, i32 3
  %39 = load i64, ptr %38, align 8, !tbaa !32
  store i64 %39, ptr %23, align 8, !tbaa !9
  %40 = load i64, ptr %22, align 8, !tbaa !9
  %41 = load i64, ptr %23, align 8, !tbaa !9
  %42 = sub nsw i64 %40, %41
  store i64 %42, ptr %24, align 8, !tbaa !9
  %43 = load i64, ptr %17, align 8, !tbaa !9
  %44 = icmp sge i64 %43, 0
  %45 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %44, ptr noundef @.str.595, ptr noundef %45)
  %46 = load i64, ptr %15, align 8, !tbaa !9
  %47 = icmp sge i64 %46, 0
  %48 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %47, ptr noundef @.str.596, ptr noundef %48)
  %49 = load ptr, ptr %16, align 8, !tbaa !5
  %50 = load i64, ptr %17, align 8, !tbaa !9
  %51 = load i64, ptr %22, align 8, !tbaa !9
  %52 = load ptr, ptr %20, align 8, !tbaa !5
  %53 = call noundef zeroext i1 @_ZN11alglib_impl20apservisfinitematrixEPKNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %49, i64 noundef %50, i64 noundef %51, ptr noundef %52)
  %54 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %53, ptr noundef @.str.597, ptr noundef %54)
  %55 = load i64, ptr %15, align 8, !tbaa !9
  %56 = icmp eq i64 %55, 0
  br i1 %56, label %62, label %57

57:                                               ; preds = %10
  %58 = load ptr, ptr %14, align 8, !tbaa !5
  %59 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %58, i32 0, i32 5
  %60 = load i64, ptr %59, align 8, !tbaa !33
  %61 = icmp eq i64 %60, 1
  br label %62

62:                                               ; preds = %57, %10
  %63 = phi i1 [ true, %10 ], [ %61, %57 ]
  %64 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %63, ptr noundef @.str.598, ptr noundef %64)
  %65 = load i64, ptr %15, align 8, !tbaa !9
  %66 = icmp eq i64 %65, 0
  br i1 %66, label %81, label %67

67:                                               ; preds = %62
  %68 = load ptr, ptr %14, align 8, !tbaa !5
  %69 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %68, i32 0, i32 6
  %70 = load i64, ptr %69, align 8, !tbaa !34
  %71 = load i64, ptr %15, align 8, !tbaa !9
  %72 = icmp eq i64 %70, %71
  br i1 %72, label %73, label %79

73:                                               ; preds = %67
  %74 = load ptr, ptr %14, align 8, !tbaa !5
  %75 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %74, i32 0, i32 7
  %76 = load i64, ptr %75, align 8, !tbaa !35
  %77 = load i64, ptr %22, align 8, !tbaa !9
  %78 = icmp eq i64 %76, %77
  br label %79

79:                                               ; preds = %73, %67
  %80 = phi i1 [ false, %67 ], [ %78, %73 ]
  br label %81

81:                                               ; preds = %79, %62
  %82 = phi i1 [ true, %62 ], [ %80, %79 ]
  %83 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %82, ptr noundef @.str.599, ptr noundef %83)
  %84 = load ptr, ptr %18, align 8, !tbaa !5
  %85 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %84, i32 0, i32 0
  %86 = load i64, ptr %85, align 8, !tbaa !36
  %87 = load i64, ptr %17, align 8, !tbaa !9
  %88 = load i64, ptr %15, align 8, !tbaa !9
  %89 = add nsw i64 %87, %88
  %90 = icmp sge i64 %86, %89
  %91 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %90, ptr noundef @.str.600, ptr noundef %91)
  %92 = load ptr, ptr %19, align 8, !tbaa !5
  %93 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %92, i32 0, i32 0
  %94 = load i64, ptr %93, align 8, !tbaa !36
  %95 = load i64, ptr %17, align 8, !tbaa !9
  %96 = load i64, ptr %15, align 8, !tbaa !9
  %97 = add nsw i64 %95, %96
  %98 = icmp sge i64 %94, %97
  %99 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %98, ptr noundef @.str.601, ptr noundef %99)
  %100 = load ptr, ptr %11, align 8, !tbaa !5
  %101 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %100, i32 0, i32 56
  store i8 0, ptr %101, align 1, !tbaa !37
  %102 = load ptr, ptr %11, align 8, !tbaa !5
  %103 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %102, i32 0, i32 55
  store i8 0, ptr %103, align 8, !tbaa !38
  %104 = load ptr, ptr %11, align 8, !tbaa !5
  %105 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %104, i32 0, i32 18
  %106 = load i64, ptr %22, align 8, !tbaa !9
  %107 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %105, i64 noundef %106, ptr noundef %107)
  %108 = load ptr, ptr %11, align 8, !tbaa !5
  %109 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %108, i32 0, i32 19
  %110 = load i64, ptr %22, align 8, !tbaa !9
  %111 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %109, i64 noundef %110, ptr noundef %111)
  %112 = load ptr, ptr %11, align 8, !tbaa !5
  %113 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %112, i32 0, i32 20
  %114 = load i64, ptr %22, align 8, !tbaa !9
  %115 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %113, i64 noundef %114, ptr noundef %115)
  %116 = load ptr, ptr %11, align 8, !tbaa !5
  %117 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %116, i32 0, i32 21
  %118 = load i64, ptr %22, align 8, !tbaa !9
  %119 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %117, i64 noundef %118, ptr noundef %119)
  %120 = load ptr, ptr %11, align 8, !tbaa !5
  %121 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %120, i32 0, i32 22
  %122 = load i64, ptr %22, align 8, !tbaa !9
  %123 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl23bvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %121, i64 noundef %122, ptr noundef %123)
  %124 = load ptr, ptr %11, align 8, !tbaa !5
  %125 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %124, i32 0, i32 23
  %126 = load i64, ptr %22, align 8, !tbaa !9
  %127 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl23bvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %125, i64 noundef %126, ptr noundef %127)
  store i64 0, ptr %25, align 8, !tbaa !9
  br label %128

128:                                              ; preds = %247, %81
  %129 = load i64, ptr %25, align 8, !tbaa !9
  %130 = load i64, ptr %22, align 8, !tbaa !9
  %131 = sub nsw i64 %130, 1
  %132 = icmp sle i64 %129, %131
  br i1 %132, label %133, label %250

133:                                              ; preds = %128
  %134 = load ptr, ptr %12, align 8, !tbaa !5
  %135 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %134, i32 0, i32 4
  %136 = load ptr, ptr %135, align 8, !tbaa !39
  %137 = load i64, ptr %25, align 8, !tbaa !9
  %138 = getelementptr inbounds double, ptr %136, i64 %137
  %139 = load double, ptr %138, align 8, !tbaa !40
  %140 = load ptr, ptr %20, align 8, !tbaa !5
  %141 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %139, ptr noundef %140)
  %142 = load ptr, ptr %11, align 8, !tbaa !5
  %143 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %142, i32 0, i32 22
  %144 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %143, i32 0, i32 4
  %145 = load ptr, ptr %144, align 8, !tbaa !39
  %146 = load i64, ptr %25, align 8, !tbaa !9
  %147 = getelementptr inbounds i8, ptr %145, i64 %146
  %148 = zext i1 %141 to i8
  store i8 %148, ptr %147, align 1, !tbaa !41
  %149 = load ptr, ptr %13, align 8, !tbaa !5
  %150 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %149, i32 0, i32 4
  %151 = load ptr, ptr %150, align 8, !tbaa !39
  %152 = load i64, ptr %25, align 8, !tbaa !9
  %153 = getelementptr inbounds double, ptr %151, i64 %152
  %154 = load double, ptr %153, align 8, !tbaa !40
  %155 = load ptr, ptr %20, align 8, !tbaa !5
  %156 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %154, ptr noundef %155)
  %157 = load ptr, ptr %11, align 8, !tbaa !5
  %158 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %157, i32 0, i32 23
  %159 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %158, i32 0, i32 4
  %160 = load ptr, ptr %159, align 8, !tbaa !39
  %161 = load i64, ptr %25, align 8, !tbaa !9
  %162 = getelementptr inbounds i8, ptr %160, i64 %161
  %163 = zext i1 %156 to i8
  store i8 %163, ptr %162, align 1, !tbaa !41
  %164 = load ptr, ptr %11, align 8, !tbaa !5
  %165 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %164, i32 0, i32 22
  %166 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %165, i32 0, i32 4
  %167 = load ptr, ptr %166, align 8, !tbaa !39
  %168 = load i64, ptr %25, align 8, !tbaa !9
  %169 = getelementptr inbounds i8, ptr %167, i64 %168
  %170 = load i8, ptr %169, align 1, !tbaa !41, !range !42, !noundef !43
  %171 = trunc i8 %170 to i1
  br i1 %171, label %172, label %195

172:                                              ; preds = %133
  %173 = load ptr, ptr %11, align 8, !tbaa !5
  %174 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %173, i32 0, i32 23
  %175 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %174, i32 0, i32 4
  %176 = load ptr, ptr %175, align 8, !tbaa !39
  %177 = load i64, ptr %25, align 8, !tbaa !9
  %178 = getelementptr inbounds i8, ptr %176, i64 %177
  %179 = load i8, ptr %178, align 1, !tbaa !41, !range !42, !noundef !43
  %180 = trunc i8 %179 to i1
  br i1 %180, label %181, label %195

181:                                              ; preds = %172
  %182 = load ptr, ptr %12, align 8, !tbaa !5
  %183 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %182, i32 0, i32 4
  %184 = load ptr, ptr %183, align 8, !tbaa !39
  %185 = load i64, ptr %25, align 8, !tbaa !9
  %186 = getelementptr inbounds double, ptr %184, i64 %185
  %187 = load double, ptr %186, align 8, !tbaa !40
  %188 = load ptr, ptr %13, align 8, !tbaa !5
  %189 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %188, i32 0, i32 4
  %190 = load ptr, ptr %189, align 8, !tbaa !39
  %191 = load i64, ptr %25, align 8, !tbaa !9
  %192 = getelementptr inbounds double, ptr %190, i64 %191
  %193 = load double, ptr %192, align 8, !tbaa !40
  %194 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %187, double noundef %193)
  br label %195

195:                                              ; preds = %181, %172, %133
  %196 = phi i1 [ false, %172 ], [ false, %133 ], [ %194, %181 ]
  %197 = xor i1 %196, true
  %198 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %197, ptr noundef @.str.602, ptr noundef %198)
  %199 = load ptr, ptr %12, align 8, !tbaa !5
  %200 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %199, i32 0, i32 4
  %201 = load ptr, ptr %200, align 8, !tbaa !39
  %202 = load i64, ptr %25, align 8, !tbaa !9
  %203 = getelementptr inbounds double, ptr %201, i64 %202
  %204 = load double, ptr %203, align 8, !tbaa !40
  %205 = load ptr, ptr %11, align 8, !tbaa !5
  %206 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %205, i32 0, i32 18
  %207 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %206, i32 0, i32 4
  %208 = load ptr, ptr %207, align 8, !tbaa !39
  %209 = load i64, ptr %25, align 8, !tbaa !9
  %210 = getelementptr inbounds double, ptr %208, i64 %209
  store double %204, ptr %210, align 8, !tbaa !40
  %211 = load ptr, ptr %13, align 8, !tbaa !5
  %212 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %211, i32 0, i32 4
  %213 = load ptr, ptr %212, align 8, !tbaa !39
  %214 = load i64, ptr %25, align 8, !tbaa !9
  %215 = getelementptr inbounds double, ptr %213, i64 %214
  %216 = load double, ptr %215, align 8, !tbaa !40
  %217 = load ptr, ptr %11, align 8, !tbaa !5
  %218 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %217, i32 0, i32 19
  %219 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %218, i32 0, i32 4
  %220 = load ptr, ptr %219, align 8, !tbaa !39
  %221 = load i64, ptr %25, align 8, !tbaa !9
  %222 = getelementptr inbounds double, ptr %220, i64 %221
  store double %216, ptr %222, align 8, !tbaa !40
  %223 = load ptr, ptr %12, align 8, !tbaa !5
  %224 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %223, i32 0, i32 4
  %225 = load ptr, ptr %224, align 8, !tbaa !39
  %226 = load i64, ptr %25, align 8, !tbaa !9
  %227 = getelementptr inbounds double, ptr %225, i64 %226
  %228 = load double, ptr %227, align 8, !tbaa !40
  %229 = load ptr, ptr %11, align 8, !tbaa !5
  %230 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %229, i32 0, i32 20
  %231 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %230, i32 0, i32 4
  %232 = load ptr, ptr %231, align 8, !tbaa !39
  %233 = load i64, ptr %25, align 8, !tbaa !9
  %234 = getelementptr inbounds double, ptr %232, i64 %233
  store double %228, ptr %234, align 8, !tbaa !40
  %235 = load ptr, ptr %13, align 8, !tbaa !5
  %236 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %235, i32 0, i32 4
  %237 = load ptr, ptr %236, align 8, !tbaa !39
  %238 = load i64, ptr %25, align 8, !tbaa !9
  %239 = getelementptr inbounds double, ptr %237, i64 %238
  %240 = load double, ptr %239, align 8, !tbaa !40
  %241 = load ptr, ptr %11, align 8, !tbaa !5
  %242 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %241, i32 0, i32 21
  %243 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %242, i32 0, i32 4
  %244 = load ptr, ptr %243, align 8, !tbaa !39
  %245 = load i64, ptr %25, align 8, !tbaa !9
  %246 = getelementptr inbounds double, ptr %244, i64 %245
  store double %240, ptr %246, align 8, !tbaa !40
  br label %247

247:                                              ; preds = %195
  %248 = load i64, ptr %25, align 8, !tbaa !9
  %249 = add nsw i64 %248, 1
  store i64 %249, ptr %25, align 8, !tbaa !9
  br label %128, !llvm.loop !44

250:                                              ; preds = %128
  %251 = load ptr, ptr %11, align 8, !tbaa !5
  %252 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %251, i32 0, i32 8
  %253 = load ptr, ptr %11, align 8, !tbaa !5
  %254 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %253, i32 0, i32 10
  %255 = load ptr, ptr %11, align 8, !tbaa !5
  %256 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %255, i32 0, i32 18
  %257 = load ptr, ptr %11, align 8, !tbaa !5
  %258 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %257, i32 0, i32 19
  %259 = load i64, ptr %22, align 8, !tbaa !9
  %260 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl19scaleshiftbcinplaceEPKNS_9ae_vectorES2_PS0_S3_lPNS_8ae_stateE(ptr noundef %252, ptr noundef %254, ptr noundef %256, ptr noundef %258, i64 noundef %259, ptr noundef %260)
  %261 = load i64, ptr %17, align 8, !tbaa !9
  %262 = load i64, ptr %15, align 8, !tbaa !9
  %263 = add nsw i64 %261, %262
  store i64 %263, ptr %21, align 8, !tbaa !9
  %264 = load ptr, ptr %11, align 8, !tbaa !5
  %265 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %264, i32 0, i32 31
  %266 = load i64, ptr %21, align 8, !tbaa !9
  %267 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %265, i64 noundef %266, ptr noundef %267)
  %268 = load ptr, ptr %11, align 8, !tbaa !5
  %269 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %268, i32 0, i32 32
  %270 = load i64, ptr %21, align 8, !tbaa !9
  %271 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %269, i64 noundef %270, ptr noundef %271)
  %272 = load ptr, ptr %11, align 8, !tbaa !5
  %273 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %272, i32 0, i32 29
  %274 = load i64, ptr %21, align 8, !tbaa !9
  %275 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %273, i64 noundef %274, ptr noundef %275)
  %276 = load ptr, ptr %11, align 8, !tbaa !5
  %277 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %276, i32 0, i32 30
  %278 = load i64, ptr %21, align 8, !tbaa !9
  %279 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl23bvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %277, i64 noundef %278, ptr noundef %279)
  %280 = load ptr, ptr %11, align 8, !tbaa !5
  %281 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %280, i32 0, i32 33
  %282 = load i64, ptr %21, align 8, !tbaa !9
  %283 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl23bvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %281, i64 noundef %282, ptr noundef %283)
  %284 = load ptr, ptr %11, align 8, !tbaa !5
  %285 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %284, i32 0, i32 24
  %286 = load i64, ptr %17, align 8, !tbaa !9
  %287 = load i64, ptr %22, align 8, !tbaa !9
  %288 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %285, i64 noundef %286, i64 noundef %287, ptr noundef %288)
  %289 = load i64, ptr %15, align 8, !tbaa !9
  %290 = icmp sgt i64 %289, 0
  br i1 %290, label %291, label %296

291:                                              ; preds = %250
  %292 = load ptr, ptr %14, align 8, !tbaa !5
  %293 = load ptr, ptr %11, align 8, !tbaa !5
  %294 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %293, i32 0, i32 26
  %295 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl18sparsecopytocrsbufEPKNS_12sparsematrixEPS0_PNS_8ae_stateE(ptr noundef %292, ptr noundef %294, ptr noundef %295)
  br label %296

296:                                              ; preds = %291, %250
  %297 = load i64, ptr %17, align 8, !tbaa !9
  %298 = icmp sgt i64 %297, 0
  br i1 %298, label %299, label %306

299:                                              ; preds = %296
  %300 = load i64, ptr %17, align 8, !tbaa !9
  %301 = load i64, ptr %22, align 8, !tbaa !9
  %302 = load ptr, ptr %16, align 8, !tbaa !5
  %303 = load ptr, ptr %11, align 8, !tbaa !5
  %304 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %303, i32 0, i32 24
  %305 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixcopyEllPKNS_9ae_matrixEllPS0_llPNS_8ae_stateE(i64 noundef %300, i64 noundef %301, ptr noundef %302, i64 noundef 0, i64 noundef 0, ptr noundef %304, i64 noundef 0, i64 noundef 0, ptr noundef %305)
  br label %306

306:                                              ; preds = %299, %296
  store i64 0, ptr %25, align 8, !tbaa !9
  br label %307

307:                                              ; preds = %711, %306
  %308 = load i64, ptr %25, align 8, !tbaa !9
  %309 = load i64, ptr %21, align 8, !tbaa !9
  %310 = sub nsw i64 %309, 1
  %311 = icmp sle i64 %308, %310
  br i1 %311, label %312, label %714

312:                                              ; preds = %307
  %313 = load ptr, ptr %18, align 8, !tbaa !5
  %314 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %313, i32 0, i32 4
  %315 = load ptr, ptr %314, align 8, !tbaa !39
  %316 = load i64, ptr %25, align 8, !tbaa !9
  %317 = getelementptr inbounds double, ptr %315, i64 %316
  %318 = load double, ptr %317, align 8, !tbaa !40
  %319 = load ptr, ptr %20, align 8, !tbaa !5
  %320 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %318, ptr noundef %319)
  br i1 %320, label %330, label %321

321:                                              ; preds = %312
  %322 = load ptr, ptr %18, align 8, !tbaa !5
  %323 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %322, i32 0, i32 4
  %324 = load ptr, ptr %323, align 8, !tbaa !39
  %325 = load i64, ptr %25, align 8, !tbaa !9
  %326 = getelementptr inbounds double, ptr %324, i64 %325
  %327 = load double, ptr %326, align 8, !tbaa !40
  %328 = load ptr, ptr %20, align 8, !tbaa !5
  %329 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isneginfEdPNS_8ae_stateE(double noundef %327, ptr noundef %328)
  br label %330

330:                                              ; preds = %321, %312
  %331 = phi i1 [ true, %312 ], [ %329, %321 ]
  %332 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %331, ptr noundef @.str.603, ptr noundef %332)
  %333 = load ptr, ptr %19, align 8, !tbaa !5
  %334 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %333, i32 0, i32 4
  %335 = load ptr, ptr %334, align 8, !tbaa !39
  %336 = load i64, ptr %25, align 8, !tbaa !9
  %337 = getelementptr inbounds double, ptr %335, i64 %336
  %338 = load double, ptr %337, align 8, !tbaa !40
  %339 = load ptr, ptr %20, align 8, !tbaa !5
  %340 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %338, ptr noundef %339)
  br i1 %340, label %350, label %341

341:                                              ; preds = %330
  %342 = load ptr, ptr %19, align 8, !tbaa !5
  %343 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %342, i32 0, i32 4
  %344 = load ptr, ptr %343, align 8, !tbaa !39
  %345 = load i64, ptr %25, align 8, !tbaa !9
  %346 = getelementptr inbounds double, ptr %344, i64 %345
  %347 = load double, ptr %346, align 8, !tbaa !40
  %348 = load ptr, ptr %20, align 8, !tbaa !5
  %349 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isposinfEdPNS_8ae_stateE(double noundef %347, ptr noundef %348)
  br label %350

350:                                              ; preds = %341, %330
  %351 = phi i1 [ true, %330 ], [ %349, %341 ]
  %352 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %351, ptr noundef @.str.604, ptr noundef %352)
  %353 = load ptr, ptr %18, align 8, !tbaa !5
  %354 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %353, i32 0, i32 4
  %355 = load ptr, ptr %354, align 8, !tbaa !39
  %356 = load i64, ptr %25, align 8, !tbaa !9
  %357 = getelementptr inbounds double, ptr %355, i64 %356
  %358 = load double, ptr %357, align 8, !tbaa !40
  %359 = load ptr, ptr %20, align 8, !tbaa !5
  %360 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %358, ptr noundef %359)
  br i1 %360, label %370, label %361

361:                                              ; preds = %350
  %362 = load ptr, ptr %19, align 8, !tbaa !5
  %363 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %362, i32 0, i32 4
  %364 = load ptr, ptr %363, align 8, !tbaa !39
  %365 = load i64, ptr %25, align 8, !tbaa !9
  %366 = getelementptr inbounds double, ptr %364, i64 %365
  %367 = load double, ptr %366, align 8, !tbaa !40
  %368 = load ptr, ptr %20, align 8, !tbaa !5
  %369 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %367, ptr noundef %368)
  br i1 %369, label %370, label %592

370:                                              ; preds = %361, %350
  %371 = load ptr, ptr %18, align 8, !tbaa !5
  %372 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %371, i32 0, i32 4
  %373 = load ptr, ptr %372, align 8, !tbaa !39
  %374 = load i64, ptr %25, align 8, !tbaa !9
  %375 = getelementptr inbounds double, ptr %373, i64 %374
  %376 = load double, ptr %375, align 8, !tbaa !40
  %377 = load ptr, ptr %20, align 8, !tbaa !5
  %378 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %376, ptr noundef %377)
  br i1 %378, label %379, label %556

379:                                              ; preds = %370
  %380 = load ptr, ptr %19, align 8, !tbaa !5
  %381 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %380, i32 0, i32 4
  %382 = load ptr, ptr %381, align 8, !tbaa !39
  %383 = load i64, ptr %25, align 8, !tbaa !9
  %384 = getelementptr inbounds double, ptr %382, i64 %383
  %385 = load double, ptr %384, align 8, !tbaa !40
  %386 = load ptr, ptr %20, align 8, !tbaa !5
  %387 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %385, ptr noundef %386)
  br i1 %387, label %388, label %402

388:                                              ; preds = %379
  %389 = load ptr, ptr %19, align 8, !tbaa !5
  %390 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %389, i32 0, i32 4
  %391 = load ptr, ptr %390, align 8, !tbaa !39
  %392 = load i64, ptr %25, align 8, !tbaa !9
  %393 = getelementptr inbounds double, ptr %391, i64 %392
  %394 = load double, ptr %393, align 8, !tbaa !40
  %395 = load ptr, ptr %18, align 8, !tbaa !5
  %396 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %395, i32 0, i32 4
  %397 = load ptr, ptr %396, align 8, !tbaa !39
  %398 = load i64, ptr %25, align 8, !tbaa !9
  %399 = getelementptr inbounds double, ptr %397, i64 %398
  %400 = load double, ptr %399, align 8, !tbaa !40
  %401 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %394, double noundef %400)
  br label %402

402:                                              ; preds = %388, %379
  %403 = phi i1 [ true, %379 ], [ %401, %388 ]
  %404 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %403, ptr noundef @.str.605, ptr noundef %404)
  %405 = load ptr, ptr %19, align 8, !tbaa !5
  %406 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %405, i32 0, i32 4
  %407 = load ptr, ptr %406, align 8, !tbaa !39
  %408 = load i64, ptr %25, align 8, !tbaa !9
  %409 = getelementptr inbounds double, ptr %407, i64 %408
  %410 = load double, ptr %409, align 8, !tbaa !40
  %411 = load ptr, ptr %20, align 8, !tbaa !5
  %412 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %410, ptr noundef %411)
  br i1 %412, label %413, label %521

413:                                              ; preds = %402
  %414 = load ptr, ptr %19, align 8, !tbaa !5
  %415 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %414, i32 0, i32 4
  %416 = load ptr, ptr %415, align 8, !tbaa !39
  %417 = load i64, ptr %25, align 8, !tbaa !9
  %418 = getelementptr inbounds double, ptr %416, i64 %417
  %419 = load double, ptr %418, align 8, !tbaa !40
  %420 = load ptr, ptr %20, align 8, !tbaa !5
  %421 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %419, ptr noundef %420)
  %422 = load ptr, ptr %18, align 8, !tbaa !5
  %423 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %422, i32 0, i32 4
  %424 = load ptr, ptr %423, align 8, !tbaa !39
  %425 = load i64, ptr %25, align 8, !tbaa !9
  %426 = getelementptr inbounds double, ptr %424, i64 %425
  %427 = load double, ptr %426, align 8, !tbaa !40
  %428 = load ptr, ptr %20, align 8, !tbaa !5
  %429 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %427, ptr noundef %428)
  %430 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %421, double noundef %429)
  br i1 %430, label %431, label %475

431:                                              ; preds = %413
  %432 = load ptr, ptr %18, align 8, !tbaa !5
  %433 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %432, i32 0, i32 4
  %434 = load ptr, ptr %433, align 8, !tbaa !39
  %435 = load i64, ptr %25, align 8, !tbaa !9
  %436 = getelementptr inbounds double, ptr %434, i64 %435
  %437 = load double, ptr %436, align 8, !tbaa !40
  %438 = load ptr, ptr %11, align 8, !tbaa !5
  %439 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %438, i32 0, i32 31
  %440 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %439, i32 0, i32 4
  %441 = load ptr, ptr %440, align 8, !tbaa !39
  %442 = load i64, ptr %25, align 8, !tbaa !9
  %443 = getelementptr inbounds double, ptr %441, i64 %442
  store double %437, ptr %443, align 8, !tbaa !40
  %444 = load ptr, ptr %19, align 8, !tbaa !5
  %445 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %444, i32 0, i32 4
  %446 = load ptr, ptr %445, align 8, !tbaa !39
  %447 = load i64, ptr %25, align 8, !tbaa !9
  %448 = getelementptr inbounds double, ptr %446, i64 %447
  %449 = load double, ptr %448, align 8, !tbaa !40
  %450 = load ptr, ptr %18, align 8, !tbaa !5
  %451 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %450, i32 0, i32 4
  %452 = load ptr, ptr %451, align 8, !tbaa !39
  %453 = load i64, ptr %25, align 8, !tbaa !9
  %454 = getelementptr inbounds double, ptr %452, i64 %453
  %455 = load double, ptr %454, align 8, !tbaa !40
  %456 = fsub double %449, %455
  %457 = load ptr, ptr %11, align 8, !tbaa !5
  %458 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %457, i32 0, i32 32
  %459 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %458, i32 0, i32 4
  %460 = load ptr, ptr %459, align 8, !tbaa !39
  %461 = load i64, ptr %25, align 8, !tbaa !9
  %462 = getelementptr inbounds double, ptr %460, i64 %461
  store double %456, ptr %462, align 8, !tbaa !40
  %463 = load ptr, ptr %11, align 8, !tbaa !5
  %464 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %463, i32 0, i32 33
  %465 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %464, i32 0, i32 4
  %466 = load ptr, ptr %465, align 8, !tbaa !39
  %467 = load i64, ptr %25, align 8, !tbaa !9
  %468 = getelementptr inbounds i8, ptr %466, i64 %467
  store i8 1, ptr %468, align 1, !tbaa !41
  %469 = load ptr, ptr %11, align 8, !tbaa !5
  %470 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %469, i32 0, i32 30
  %471 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %470, i32 0, i32 4
  %472 = load ptr, ptr %471, align 8, !tbaa !39
  %473 = load i64, ptr %25, align 8, !tbaa !9
  %474 = getelementptr inbounds i8, ptr %472, i64 %473
  store i8 0, ptr %474, align 1, !tbaa !41
  store double 1.000000e+00, ptr %32, align 8, !tbaa !40
  br label %520

475:                                              ; preds = %413
  %476 = load ptr, ptr %19, align 8, !tbaa !5
  %477 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %476, i32 0, i32 4
  %478 = load ptr, ptr %477, align 8, !tbaa !39
  %479 = load i64, ptr %25, align 8, !tbaa !9
  %480 = getelementptr inbounds double, ptr %478, i64 %479
  %481 = load double, ptr %480, align 8, !tbaa !40
  %482 = fneg double %481
  %483 = load ptr, ptr %11, align 8, !tbaa !5
  %484 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %483, i32 0, i32 31
  %485 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %484, i32 0, i32 4
  %486 = load ptr, ptr %485, align 8, !tbaa !39
  %487 = load i64, ptr %25, align 8, !tbaa !9
  %488 = getelementptr inbounds double, ptr %486, i64 %487
  store double %482, ptr %488, align 8, !tbaa !40
  %489 = load ptr, ptr %19, align 8, !tbaa !5
  %490 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %489, i32 0, i32 4
  %491 = load ptr, ptr %490, align 8, !tbaa !39
  %492 = load i64, ptr %25, align 8, !tbaa !9
  %493 = getelementptr inbounds double, ptr %491, i64 %492
  %494 = load double, ptr %493, align 8, !tbaa !40
  %495 = load ptr, ptr %18, align 8, !tbaa !5
  %496 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %495, i32 0, i32 4
  %497 = load ptr, ptr %496, align 8, !tbaa !39
  %498 = load i64, ptr %25, align 8, !tbaa !9
  %499 = getelementptr inbounds double, ptr %497, i64 %498
  %500 = load double, ptr %499, align 8, !tbaa !40
  %501 = fsub double %494, %500
  %502 = load ptr, ptr %11, align 8, !tbaa !5
  %503 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %502, i32 0, i32 32
  %504 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %503, i32 0, i32 4
  %505 = load ptr, ptr %504, align 8, !tbaa !39
  %506 = load i64, ptr %25, align 8, !tbaa !9
  %507 = getelementptr inbounds double, ptr %505, i64 %506
  store double %501, ptr %507, align 8, !tbaa !40
  %508 = load ptr, ptr %11, align 8, !tbaa !5
  %509 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %508, i32 0, i32 33
  %510 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %509, i32 0, i32 4
  %511 = load ptr, ptr %510, align 8, !tbaa !39
  %512 = load i64, ptr %25, align 8, !tbaa !9
  %513 = getelementptr inbounds i8, ptr %511, i64 %512
  store i8 1, ptr %513, align 1, !tbaa !41
  %514 = load ptr, ptr %11, align 8, !tbaa !5
  %515 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %514, i32 0, i32 30
  %516 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %515, i32 0, i32 4
  %517 = load ptr, ptr %516, align 8, !tbaa !39
  %518 = load i64, ptr %25, align 8, !tbaa !9
  %519 = getelementptr inbounds i8, ptr %517, i64 %518
  store i8 1, ptr %519, align 1, !tbaa !41
  store double -1.000000e+00, ptr %32, align 8, !tbaa !40
  br label %520

520:                                              ; preds = %475, %431
  br label %555

521:                                              ; preds = %402
  %522 = load ptr, ptr %18, align 8, !tbaa !5
  %523 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %522, i32 0, i32 4
  %524 = load ptr, ptr %523, align 8, !tbaa !39
  %525 = load i64, ptr %25, align 8, !tbaa !9
  %526 = getelementptr inbounds double, ptr %524, i64 %525
  %527 = load double, ptr %526, align 8, !tbaa !40
  %528 = load ptr, ptr %11, align 8, !tbaa !5
  %529 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %528, i32 0, i32 31
  %530 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %529, i32 0, i32 4
  %531 = load ptr, ptr %530, align 8, !tbaa !39
  %532 = load i64, ptr %25, align 8, !tbaa !9
  %533 = getelementptr inbounds double, ptr %531, i64 %532
  store double %527, ptr %533, align 8, !tbaa !40
  %534 = load ptr, ptr %20, align 8, !tbaa !5
  %535 = getelementptr inbounds %"struct.alglib_impl::ae_state", ptr %534, i32 0, i32 2
  %536 = load double, ptr %535, align 8, !tbaa !46
  %537 = load ptr, ptr %11, align 8, !tbaa !5
  %538 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %537, i32 0, i32 32
  %539 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %538, i32 0, i32 4
  %540 = load ptr, ptr %539, align 8, !tbaa !39
  %541 = load i64, ptr %25, align 8, !tbaa !9
  %542 = getelementptr inbounds double, ptr %540, i64 %541
  store double %536, ptr %542, align 8, !tbaa !40
  %543 = load ptr, ptr %11, align 8, !tbaa !5
  %544 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %543, i32 0, i32 33
  %545 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %544, i32 0, i32 4
  %546 = load ptr, ptr %545, align 8, !tbaa !39
  %547 = load i64, ptr %25, align 8, !tbaa !9
  %548 = getelementptr inbounds i8, ptr %546, i64 %547
  store i8 0, ptr %548, align 1, !tbaa !41
  %549 = load ptr, ptr %11, align 8, !tbaa !5
  %550 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %549, i32 0, i32 30
  %551 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %550, i32 0, i32 4
  %552 = load ptr, ptr %551, align 8, !tbaa !39
  %553 = load i64, ptr %25, align 8, !tbaa !9
  %554 = getelementptr inbounds i8, ptr %552, i64 %553
  store i8 0, ptr %554, align 1, !tbaa !41
  store double 1.000000e+00, ptr %32, align 8, !tbaa !40
  br label %555

555:                                              ; preds = %521, %520
  br label %591

556:                                              ; preds = %370
  %557 = load ptr, ptr %19, align 8, !tbaa !5
  %558 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %557, i32 0, i32 4
  %559 = load ptr, ptr %558, align 8, !tbaa !39
  %560 = load i64, ptr %25, align 8, !tbaa !9
  %561 = getelementptr inbounds double, ptr %559, i64 %560
  %562 = load double, ptr %561, align 8, !tbaa !40
  %563 = fneg double %562
  %564 = load ptr, ptr %11, align 8, !tbaa !5
  %565 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %564, i32 0, i32 31
  %566 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %565, i32 0, i32 4
  %567 = load ptr, ptr %566, align 8, !tbaa !39
  %568 = load i64, ptr %25, align 8, !tbaa !9
  %569 = getelementptr inbounds double, ptr %567, i64 %568
  store double %563, ptr %569, align 8, !tbaa !40
  %570 = load ptr, ptr %20, align 8, !tbaa !5
  %571 = getelementptr inbounds %"struct.alglib_impl::ae_state", ptr %570, i32 0, i32 2
  %572 = load double, ptr %571, align 8, !tbaa !46
  %573 = load ptr, ptr %11, align 8, !tbaa !5
  %574 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %573, i32 0, i32 32
  %575 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %574, i32 0, i32 4
  %576 = load ptr, ptr %575, align 8, !tbaa !39
  %577 = load i64, ptr %25, align 8, !tbaa !9
  %578 = getelementptr inbounds double, ptr %576, i64 %577
  store double %572, ptr %578, align 8, !tbaa !40
  %579 = load ptr, ptr %11, align 8, !tbaa !5
  %580 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %579, i32 0, i32 33
  %581 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %580, i32 0, i32 4
  %582 = load ptr, ptr %581, align 8, !tbaa !39
  %583 = load i64, ptr %25, align 8, !tbaa !9
  %584 = getelementptr inbounds i8, ptr %582, i64 %583
  store i8 0, ptr %584, align 1, !tbaa !41
  %585 = load ptr, ptr %11, align 8, !tbaa !5
  %586 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %585, i32 0, i32 30
  %587 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %586, i32 0, i32 4
  %588 = load ptr, ptr %587, align 8, !tbaa !39
  %589 = load i64, ptr %25, align 8, !tbaa !9
  %590 = getelementptr inbounds i8, ptr %588, i64 %589
  store i8 1, ptr %590, align 1, !tbaa !41
  store double -1.000000e+00, ptr %32, align 8, !tbaa !40
  br label %591

591:                                              ; preds = %556, %555
  br label %617

592:                                              ; preds = %361
  %593 = load ptr, ptr %11, align 8, !tbaa !5
  %594 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %593, i32 0, i32 31
  %595 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %594, i32 0, i32 4
  %596 = load ptr, ptr %595, align 8, !tbaa !39
  %597 = load i64, ptr %25, align 8, !tbaa !9
  %598 = getelementptr inbounds double, ptr %596, i64 %597
  store double -1.000000e+00, ptr %598, align 8, !tbaa !40
  %599 = load ptr, ptr %11, align 8, !tbaa !5
  %600 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %599, i32 0, i32 32
  %601 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %600, i32 0, i32 4
  %602 = load ptr, ptr %601, align 8, !tbaa !39
  %603 = load i64, ptr %25, align 8, !tbaa !9
  %604 = getelementptr inbounds double, ptr %602, i64 %603
  store double 2.000000e+00, ptr %604, align 8, !tbaa !40
  %605 = load ptr, ptr %11, align 8, !tbaa !5
  %606 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %605, i32 0, i32 33
  %607 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %606, i32 0, i32 4
  %608 = load ptr, ptr %607, align 8, !tbaa !39
  %609 = load i64, ptr %25, align 8, !tbaa !9
  %610 = getelementptr inbounds i8, ptr %608, i64 %609
  store i8 1, ptr %610, align 1, !tbaa !41
  %611 = load ptr, ptr %11, align 8, !tbaa !5
  %612 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %611, i32 0, i32 30
  %613 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %612, i32 0, i32 4
  %614 = load ptr, ptr %613, align 8, !tbaa !39
  %615 = load i64, ptr %25, align 8, !tbaa !9
  %616 = getelementptr inbounds i8, ptr %614, i64 %615
  store i8 0, ptr %616, align 1, !tbaa !41
  store double 0.000000e+00, ptr %32, align 8, !tbaa !40
  br label %617

617:                                              ; preds = %592, %591
  %618 = load i64, ptr %25, align 8, !tbaa !9
  %619 = load i64, ptr %15, align 8, !tbaa !9
  %620 = icmp slt i64 %618, %619
  br i1 %620, label %621, label %667

621:                                              ; preds = %617
  %622 = load ptr, ptr %11, align 8, !tbaa !5
  %623 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %622, i32 0, i32 26
  %624 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %623, i32 0, i32 2
  %625 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %624, i32 0, i32 4
  %626 = load ptr, ptr %625, align 8, !tbaa !39
  %627 = load i64, ptr %25, align 8, !tbaa !9
  %628 = getelementptr inbounds i64, ptr %626, i64 %627
  %629 = load i64, ptr %628, align 8, !tbaa !9
  store i64 %629, ptr %27, align 8, !tbaa !9
  %630 = load ptr, ptr %11, align 8, !tbaa !5
  %631 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %630, i32 0, i32 26
  %632 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %631, i32 0, i32 2
  %633 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %632, i32 0, i32 4
  %634 = load ptr, ptr %633, align 8, !tbaa !39
  %635 = load i64, ptr %25, align 8, !tbaa !9
  %636 = add nsw i64 %635, 1
  %637 = getelementptr inbounds i64, ptr %634, i64 %636
  %638 = load i64, ptr %637, align 8, !tbaa !9
  %639 = sub nsw i64 %638, 1
  store i64 %639, ptr %28, align 8, !tbaa !9
  %640 = load i64, ptr %27, align 8, !tbaa !9
  store i64 %640, ptr %26, align 8, !tbaa !9
  br label %641

641:                                              ; preds = %663, %621
  %642 = load i64, ptr %26, align 8, !tbaa !9
  %643 = load i64, ptr %28, align 8, !tbaa !9
  %644 = icmp sle i64 %642, %643
  br i1 %644, label %645, label %666

645:                                              ; preds = %641
  %646 = load ptr, ptr %11, align 8, !tbaa !5
  %647 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %646, i32 0, i32 26
  %648 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %647, i32 0, i32 0
  %649 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %648, i32 0, i32 4
  %650 = load ptr, ptr %649, align 8, !tbaa !39
  %651 = load i64, ptr %26, align 8, !tbaa !9
  %652 = getelementptr inbounds double, ptr %650, i64 %651
  %653 = load double, ptr %652, align 8, !tbaa !40
  %654 = load double, ptr %32, align 8, !tbaa !40
  %655 = fmul double %653, %654
  %656 = load ptr, ptr %11, align 8, !tbaa !5
  %657 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %656, i32 0, i32 26
  %658 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %657, i32 0, i32 0
  %659 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %658, i32 0, i32 4
  %660 = load ptr, ptr %659, align 8, !tbaa !39
  %661 = load i64, ptr %26, align 8, !tbaa !9
  %662 = getelementptr inbounds double, ptr %660, i64 %661
  store double %655, ptr %662, align 8, !tbaa !40
  br label %663

663:                                              ; preds = %645
  %664 = load i64, ptr %26, align 8, !tbaa !9
  %665 = add nsw i64 %664, 1
  store i64 %665, ptr %26, align 8, !tbaa !9
  br label %641, !llvm.loop !50

666:                                              ; preds = %641
  br label %703

667:                                              ; preds = %617
  store i64 0, ptr %26, align 8, !tbaa !9
  br label %668

668:                                              ; preds = %699, %667
  %669 = load i64, ptr %26, align 8, !tbaa !9
  %670 = load i64, ptr %22, align 8, !tbaa !9
  %671 = sub nsw i64 %670, 1
  %672 = icmp sle i64 %669, %671
  br i1 %672, label %673, label %702

673:                                              ; preds = %668
  %674 = load ptr, ptr %11, align 8, !tbaa !5
  %675 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %674, i32 0, i32 24
  %676 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %675, i32 0, i32 6
  %677 = load ptr, ptr %676, align 8, !tbaa !39
  %678 = load i64, ptr %25, align 8, !tbaa !9
  %679 = load i64, ptr %15, align 8, !tbaa !9
  %680 = sub nsw i64 %678, %679
  %681 = getelementptr inbounds ptr, ptr %677, i64 %680
  %682 = load ptr, ptr %681, align 8, !tbaa !5
  %683 = load i64, ptr %26, align 8, !tbaa !9
  %684 = getelementptr inbounds double, ptr %682, i64 %683
  %685 = load double, ptr %684, align 8, !tbaa !40
  %686 = load double, ptr %32, align 8, !tbaa !40
  %687 = fmul double %685, %686
  %688 = load ptr, ptr %11, align 8, !tbaa !5
  %689 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %688, i32 0, i32 24
  %690 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %689, i32 0, i32 6
  %691 = load ptr, ptr %690, align 8, !tbaa !39
  %692 = load i64, ptr %25, align 8, !tbaa !9
  %693 = load i64, ptr %15, align 8, !tbaa !9
  %694 = sub nsw i64 %692, %693
  %695 = getelementptr inbounds ptr, ptr %691, i64 %694
  %696 = load ptr, ptr %695, align 8, !tbaa !5
  %697 = load i64, ptr %26, align 8, !tbaa !9
  %698 = getelementptr inbounds double, ptr %696, i64 %697
  store double %687, ptr %698, align 8, !tbaa !40
  br label %699

699:                                              ; preds = %673
  %700 = load i64, ptr %26, align 8, !tbaa !9
  %701 = add nsw i64 %700, 1
  store i64 %701, ptr %26, align 8, !tbaa !9
  br label %668, !llvm.loop !51

702:                                              ; preds = %668
  br label %703

703:                                              ; preds = %702, %666
  %704 = load double, ptr %32, align 8, !tbaa !40
  %705 = load ptr, ptr %11, align 8, !tbaa !5
  %706 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %705, i32 0, i32 29
  %707 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %706, i32 0, i32 4
  %708 = load ptr, ptr %707, align 8, !tbaa !39
  %709 = load i64, ptr %25, align 8, !tbaa !9
  %710 = getelementptr inbounds double, ptr %708, i64 %709
  store double %704, ptr %710, align 8, !tbaa !40
  br label %711

711:                                              ; preds = %703
  %712 = load i64, ptr %25, align 8, !tbaa !9
  %713 = add nsw i64 %712, 1
  store i64 %713, ptr %25, align 8, !tbaa !9
  br label %307, !llvm.loop !52

714:                                              ; preds = %307
  %715 = load ptr, ptr %11, align 8, !tbaa !5
  %716 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %715, i32 0, i32 8
  %717 = load ptr, ptr %11, align 8, !tbaa !5
  %718 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %717, i32 0, i32 10
  %719 = load i64, ptr %22, align 8, !tbaa !9
  %720 = load ptr, ptr %11, align 8, !tbaa !5
  %721 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %720, i32 0, i32 26
  %722 = load i64, ptr %15, align 8, !tbaa !9
  %723 = load ptr, ptr %11, align 8, !tbaa !5
  %724 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %723, i32 0, i32 24
  %725 = load i64, ptr %17, align 8, !tbaa !9
  %726 = load ptr, ptr %11, align 8, !tbaa !5
  %727 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %726, i32 0, i32 31
  %728 = load ptr, ptr %11, align 8, !tbaa !5
  %729 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %728, i32 0, i32 32
  %730 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl26scaleshiftmixedbrlcinplaceEPKNS_9ae_vectorES2_lPNS_12sparsematrixElPNS_9ae_matrixElPS0_S7_PNS_8ae_stateE(ptr noundef %716, ptr noundef %718, i64 noundef %719, ptr noundef %721, i64 noundef %722, ptr noundef %724, i64 noundef %725, ptr noundef %727, ptr noundef %729, ptr noundef %730)
  %731 = load ptr, ptr %11, align 8, !tbaa !5
  %732 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %731, i32 0, i32 1
  %733 = load i8, ptr %732, align 1, !tbaa !53, !range !42, !noundef !43
  %734 = trunc i8 %733 to i1
  br i1 %734, label %735, label %781

735:                                              ; preds = %714
  %736 = load ptr, ptr %11, align 8, !tbaa !5
  %737 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %736, i32 0, i32 26
  %738 = load i64, ptr %15, align 8, !tbaa !9
  %739 = load ptr, ptr %11, align 8, !tbaa !5
  %740 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %739, i32 0, i32 24
  %741 = load i64, ptr %17, align 8, !tbaa !9
  %742 = load ptr, ptr %11, align 8, !tbaa !5
  %743 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %742, i32 0, i32 31
  %744 = load ptr, ptr %11, align 8, !tbaa !5
  %745 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %744, i32 0, i32 32
  %746 = load i64, ptr %22, align 8, !tbaa !9
  %747 = load ptr, ptr %11, align 8, !tbaa !5
  %748 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %747, i32 0, i32 91
  %749 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl25normalizemixedbrlcinplaceEPNS_12sparsematrixElPNS_9ae_matrixElPNS_9ae_vectorES5_lbS5_bPNS_8ae_stateE(ptr noundef %737, i64 noundef %738, ptr noundef %740, i64 noundef %741, ptr noundef %743, ptr noundef %745, i64 noundef %746, i1 noundef zeroext true, ptr noundef %748, i1 noundef zeroext true, ptr noundef %749)
  store i64 0, ptr %25, align 8, !tbaa !9
  br label %750

750:                                              ; preds = %777, %735
  %751 = load i64, ptr %25, align 8, !tbaa !9
  %752 = load i64, ptr %21, align 8, !tbaa !9
  %753 = sub nsw i64 %752, 1
  %754 = icmp sle i64 %751, %753
  br i1 %754, label %755, label %780

755:                                              ; preds = %750
  %756 = load ptr, ptr %11, align 8, !tbaa !5
  %757 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %756, i32 0, i32 29
  %758 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %757, i32 0, i32 4
  %759 = load ptr, ptr %758, align 8, !tbaa !39
  %760 = load i64, ptr %25, align 8, !tbaa !9
  %761 = getelementptr inbounds double, ptr %759, i64 %760
  %762 = load double, ptr %761, align 8, !tbaa !40
  %763 = load ptr, ptr %11, align 8, !tbaa !5
  %764 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %763, i32 0, i32 91
  %765 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %764, i32 0, i32 4
  %766 = load ptr, ptr %765, align 8, !tbaa !39
  %767 = load i64, ptr %25, align 8, !tbaa !9
  %768 = getelementptr inbounds double, ptr %766, i64 %767
  %769 = load double, ptr %768, align 8, !tbaa !40
  %770 = fmul double %762, %769
  %771 = load ptr, ptr %11, align 8, !tbaa !5
  %772 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %771, i32 0, i32 29
  %773 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %772, i32 0, i32 4
  %774 = load ptr, ptr %773, align 8, !tbaa !39
  %775 = load i64, ptr %25, align 8, !tbaa !9
  %776 = getelementptr inbounds double, ptr %774, i64 %775
  store double %770, ptr %776, align 8, !tbaa !40
  br label %777

777:                                              ; preds = %755
  %778 = load i64, ptr %25, align 8, !tbaa !9
  %779 = add nsw i64 %778, 1
  store i64 %779, ptr %25, align 8, !tbaa !9
  br label %750, !llvm.loop !54

780:                                              ; preds = %750
  br label %781

781:                                              ; preds = %780, %714
  %782 = load i64, ptr %17, align 8, !tbaa !9
  %783 = load ptr, ptr %11, align 8, !tbaa !5
  %784 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %783, i32 0, i32 34
  store i64 %782, ptr %784, align 8, !tbaa !55
  %785 = load i64, ptr %15, align 8, !tbaa !9
  %786 = load ptr, ptr %11, align 8, !tbaa !5
  %787 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %786, i32 0, i32 35
  store i64 %785, ptr %787, align 8, !tbaa !56
  %788 = load ptr, ptr %11, align 8, !tbaa !5
  %789 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %788, i32 0, i32 96
  %790 = load i64, ptr %24, align 8, !tbaa !9
  %791 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %789, i64 noundef %790, ptr noundef %791)
  store i64 0, ptr %25, align 8, !tbaa !9
  br label %792

792:                                              ; preds = %804, %781
  %793 = load i64, ptr %25, align 8, !tbaa !9
  %794 = load i64, ptr %24, align 8, !tbaa !9
  %795 = sub nsw i64 %794, 1
  %796 = icmp sle i64 %793, %795
  br i1 %796, label %797, label %807

797:                                              ; preds = %792
  %798 = load ptr, ptr %11, align 8, !tbaa !5
  %799 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %798, i32 0, i32 96
  %800 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %799, i32 0, i32 4
  %801 = load ptr, ptr %800, align 8, !tbaa !39
  %802 = load i64, ptr %25, align 8, !tbaa !9
  %803 = getelementptr inbounds i64, ptr %801, i64 %802
  store i64 0, ptr %803, align 8, !tbaa !9
  br label %804

804:                                              ; preds = %797
  %805 = load i64, ptr %25, align 8, !tbaa !9
  %806 = add nsw i64 %805, 1
  store i64 %806, ptr %25, align 8, !tbaa !9
  br label %792, !llvm.loop !57

807:                                              ; preds = %792
  %808 = load i64, ptr %17, align 8, !tbaa !9
  %809 = load i64, ptr %15, align 8, !tbaa !9
  %810 = add nsw i64 %808, %809
  %811 = load ptr, ptr %11, align 8, !tbaa !5
  %812 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %811, i32 0, i32 28
  %813 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %812, i32 0, i32 6
  store i64 %810, ptr %813, align 8, !tbaa !58
  %814 = load i64, ptr %24, align 8, !tbaa !9
  %815 = load ptr, ptr %11, align 8, !tbaa !5
  %816 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %815, i32 0, i32 28
  %817 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %816, i32 0, i32 7
  store i64 %814, ptr %817, align 8, !tbaa !59
  %818 = load ptr, ptr %11, align 8, !tbaa !5
  %819 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %818, i32 0, i32 28
  %820 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %819, i32 0, i32 2
  %821 = load i64, ptr %17, align 8, !tbaa !9
  %822 = load i64, ptr %15, align 8, !tbaa !9
  %823 = add nsw i64 %821, %822
  %824 = add nsw i64 %823, 1
  %825 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %820, i64 noundef %824, ptr noundef %825)
  %826 = load ptr, ptr %11, align 8, !tbaa !5
  %827 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %826, i32 0, i32 28
  %828 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %827, i32 0, i32 1
  %829 = load i64, ptr %24, align 8, !tbaa !9
  %830 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %828, i64 noundef %829, ptr noundef %830)
  %831 = load ptr, ptr %11, align 8, !tbaa !5
  %832 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %831, i32 0, i32 28
  %833 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %832, i32 0, i32 0
  %834 = load i64, ptr %24, align 8, !tbaa !9
  %835 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %833, i64 noundef %834, ptr noundef %835)
  %836 = load ptr, ptr %11, align 8, !tbaa !5
  %837 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %836, i32 0, i32 28
  %838 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %837, i32 0, i32 2
  %839 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %838, i32 0, i32 4
  %840 = load ptr, ptr %839, align 8, !tbaa !39
  %841 = getelementptr inbounds i64, ptr %840, i64 0
  store i64 0, ptr %841, align 8, !tbaa !9
  %842 = load i64, ptr %15, align 8, !tbaa !9
  %843 = load ptr, ptr %11, align 8, !tbaa !5
  %844 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %843, i32 0, i32 27
  %845 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %844, i32 0, i32 6
  store i64 %842, ptr %845, align 8, !tbaa !60
  %846 = load i64, ptr %23, align 8, !tbaa !9
  %847 = load ptr, ptr %11, align 8, !tbaa !5
  %848 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %847, i32 0, i32 27
  %849 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %848, i32 0, i32 7
  store i64 %846, ptr %849, align 8, !tbaa !61
  %850 = load i64, ptr %15, align 8, !tbaa !9
  %851 = icmp sgt i64 %850, 0
  br i1 %851, label %852, label %1048

852:                                              ; preds = %807
  %853 = load ptr, ptr %11, align 8, !tbaa !5
  %854 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %853, i32 0, i32 27
  %855 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %854, i32 0, i32 2
  %856 = load i64, ptr %15, align 8, !tbaa !9
  %857 = add nsw i64 %856, 1
  %858 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %855, i64 noundef %857, ptr noundef %858)
  %859 = load ptr, ptr %11, align 8, !tbaa !5
  %860 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %859, i32 0, i32 27
  %861 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %860, i32 0, i32 1
  %862 = load ptr, ptr %14, align 8, !tbaa !5
  %863 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %862, i32 0, i32 2
  %864 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %863, i32 0, i32 4
  %865 = load ptr, ptr %864, align 8, !tbaa !39
  %866 = load i64, ptr %15, align 8, !tbaa !9
  %867 = getelementptr inbounds i64, ptr %865, i64 %866
  %868 = load i64, ptr %867, align 8, !tbaa !9
  %869 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %861, i64 noundef %868, ptr noundef %869)
  %870 = load ptr, ptr %11, align 8, !tbaa !5
  %871 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %870, i32 0, i32 27
  %872 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %871, i32 0, i32 0
  %873 = load ptr, ptr %14, align 8, !tbaa !5
  %874 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %873, i32 0, i32 2
  %875 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %874, i32 0, i32 4
  %876 = load ptr, ptr %875, align 8, !tbaa !39
  %877 = load i64, ptr %15, align 8, !tbaa !9
  %878 = getelementptr inbounds i64, ptr %876, i64 %877
  %879 = load i64, ptr %878, align 8, !tbaa !9
  %880 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %872, i64 noundef %879, ptr noundef %880)
  %881 = load ptr, ptr %11, align 8, !tbaa !5
  %882 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %881, i32 0, i32 27
  %883 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %882, i32 0, i32 2
  %884 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %883, i32 0, i32 4
  %885 = load ptr, ptr %884, align 8, !tbaa !39
  %886 = getelementptr inbounds i64, ptr %885, i64 0
  store i64 0, ptr %886, align 8, !tbaa !9
  store i64 0, ptr %25, align 8, !tbaa !9
  br label %887

887:                                              ; preds = %1044, %852
  %888 = load i64, ptr %25, align 8, !tbaa !9
  %889 = load i64, ptr %15, align 8, !tbaa !9
  %890 = sub nsw i64 %889, 1
  %891 = icmp sle i64 %888, %890
  br i1 %891, label %892, label %1047

892:                                              ; preds = %887
  %893 = load ptr, ptr %11, align 8, !tbaa !5
  %894 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %893, i32 0, i32 27
  %895 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %894, i32 0, i32 2
  %896 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %895, i32 0, i32 4
  %897 = load ptr, ptr %896, align 8, !tbaa !39
  %898 = load i64, ptr %25, align 8, !tbaa !9
  %899 = getelementptr inbounds i64, ptr %897, i64 %898
  %900 = load i64, ptr %899, align 8, !tbaa !9
  store i64 %900, ptr %30, align 8, !tbaa !9
  %901 = load ptr, ptr %11, align 8, !tbaa !5
  %902 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %901, i32 0, i32 28
  %903 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %902, i32 0, i32 2
  %904 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %903, i32 0, i32 4
  %905 = load ptr, ptr %904, align 8, !tbaa !39
  %906 = load i64, ptr %25, align 8, !tbaa !9
  %907 = getelementptr inbounds i64, ptr %905, i64 %906
  %908 = load i64, ptr %907, align 8, !tbaa !9
  store i64 %908, ptr %31, align 8, !tbaa !9
  %909 = load ptr, ptr %11, align 8, !tbaa !5
  %910 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %909, i32 0, i32 26
  %911 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %910, i32 0, i32 2
  %912 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %911, i32 0, i32 4
  %913 = load ptr, ptr %912, align 8, !tbaa !39
  %914 = load i64, ptr %25, align 8, !tbaa !9
  %915 = getelementptr inbounds i64, ptr %913, i64 %914
  %916 = load i64, ptr %915, align 8, !tbaa !9
  store i64 %916, ptr %27, align 8, !tbaa !9
  %917 = load ptr, ptr %11, align 8, !tbaa !5
  %918 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %917, i32 0, i32 26
  %919 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %918, i32 0, i32 2
  %920 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %919, i32 0, i32 4
  %921 = load ptr, ptr %920, align 8, !tbaa !39
  %922 = load i64, ptr %25, align 8, !tbaa !9
  %923 = add nsw i64 %922, 1
  %924 = getelementptr inbounds i64, ptr %921, i64 %923
  %925 = load i64, ptr %924, align 8, !tbaa !9
  %926 = sub nsw i64 %925, 1
  store i64 %926, ptr %28, align 8, !tbaa !9
  %927 = load i64, ptr %27, align 8, !tbaa !9
  store i64 %927, ptr %26, align 8, !tbaa !9
  br label %928

928:                                              ; preds = %1022, %892
  %929 = load i64, ptr %26, align 8, !tbaa !9
  %930 = load i64, ptr %28, align 8, !tbaa !9
  %931 = icmp sle i64 %929, %930
  br i1 %931, label %932, label %1025

932:                                              ; preds = %928
  %933 = load ptr, ptr %11, align 8, !tbaa !5
  %934 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %933, i32 0, i32 26
  %935 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %934, i32 0, i32 0
  %936 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %935, i32 0, i32 4
  %937 = load ptr, ptr %936, align 8, !tbaa !39
  %938 = load i64, ptr %26, align 8, !tbaa !9
  %939 = getelementptr inbounds double, ptr %937, i64 %938
  %940 = load double, ptr %939, align 8, !tbaa !40
  store double %940, ptr %33, align 8, !tbaa !40
  %941 = load ptr, ptr %11, align 8, !tbaa !5
  %942 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %941, i32 0, i32 26
  %943 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %942, i32 0, i32 1
  %944 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %943, i32 0, i32 4
  %945 = load ptr, ptr %944, align 8, !tbaa !39
  %946 = load i64, ptr %26, align 8, !tbaa !9
  %947 = getelementptr inbounds i64, ptr %945, i64 %946
  %948 = load i64, ptr %947, align 8, !tbaa !9
  store i64 %948, ptr %29, align 8, !tbaa !9
  %949 = load i64, ptr %29, align 8, !tbaa !9
  %950 = load i64, ptr %23, align 8, !tbaa !9
  %951 = icmp slt i64 %949, %950
  br i1 %951, label %952, label %971

952:                                              ; preds = %932
  %953 = load i64, ptr %29, align 8, !tbaa !9
  %954 = load ptr, ptr %11, align 8, !tbaa !5
  %955 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %954, i32 0, i32 27
  %956 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %955, i32 0, i32 1
  %957 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %956, i32 0, i32 4
  %958 = load ptr, ptr %957, align 8, !tbaa !39
  %959 = load i64, ptr %30, align 8, !tbaa !9
  %960 = getelementptr inbounds i64, ptr %958, i64 %959
  store i64 %953, ptr %960, align 8, !tbaa !9
  %961 = load double, ptr %33, align 8, !tbaa !40
  %962 = load ptr, ptr %11, align 8, !tbaa !5
  %963 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %962, i32 0, i32 27
  %964 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %963, i32 0, i32 0
  %965 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %964, i32 0, i32 4
  %966 = load ptr, ptr %965, align 8, !tbaa !39
  %967 = load i64, ptr %30, align 8, !tbaa !9
  %968 = getelementptr inbounds double, ptr %966, i64 %967
  store double %961, ptr %968, align 8, !tbaa !40
  %969 = load i64, ptr %30, align 8, !tbaa !9
  %970 = add nsw i64 %969, 1
  store i64 %970, ptr %30, align 8, !tbaa !9
  br label %1021

971:                                              ; preds = %932
  %972 = load ptr, ptr %11, align 8, !tbaa !5
  %973 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %972, i32 0, i32 96
  %974 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %973, i32 0, i32 4
  %975 = load ptr, ptr %974, align 8, !tbaa !39
  %976 = load i64, ptr %29, align 8, !tbaa !9
  %977 = load i64, ptr %23, align 8, !tbaa !9
  %978 = sub nsw i64 %976, %977
  %979 = getelementptr inbounds i64, ptr %975, i64 %978
  %980 = load i64, ptr %979, align 8, !tbaa !9
  %981 = icmp eq i64 %980, 0
  %982 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %981, ptr noundef @.str.606, ptr noundef %982)
  %983 = load i64, ptr %29, align 8, !tbaa !9
  %984 = load i64, ptr %23, align 8, !tbaa !9
  %985 = sub nsw i64 %983, %984
  %986 = load ptr, ptr %11, align 8, !tbaa !5
  %987 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %986, i32 0, i32 28
  %988 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %987, i32 0, i32 1
  %989 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %988, i32 0, i32 4
  %990 = load ptr, ptr %989, align 8, !tbaa !39
  %991 = load i64, ptr %31, align 8, !tbaa !9
  %992 = getelementptr inbounds i64, ptr %990, i64 %991
  store i64 %985, ptr %992, align 8, !tbaa !9
  %993 = load double, ptr %33, align 8, !tbaa !40
  %994 = load ptr, ptr %11, align 8, !tbaa !5
  %995 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %994, i32 0, i32 28
  %996 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %995, i32 0, i32 0
  %997 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %996, i32 0, i32 4
  %998 = load ptr, ptr %997, align 8, !tbaa !39
  %999 = load i64, ptr %31, align 8, !tbaa !9
  %1000 = getelementptr inbounds double, ptr %998, i64 %999
  store double %993, ptr %1000, align 8, !tbaa !40
  %1001 = load ptr, ptr %11, align 8, !tbaa !5
  %1002 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1001, i32 0, i32 96
  %1003 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1002, i32 0, i32 4
  %1004 = load ptr, ptr %1003, align 8, !tbaa !39
  %1005 = load i64, ptr %29, align 8, !tbaa !9
  %1006 = load i64, ptr %23, align 8, !tbaa !9
  %1007 = sub nsw i64 %1005, %1006
  %1008 = getelementptr inbounds i64, ptr %1004, i64 %1007
  %1009 = load i64, ptr %1008, align 8, !tbaa !9
  %1010 = add nsw i64 %1009, 1
  %1011 = load ptr, ptr %11, align 8, !tbaa !5
  %1012 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1011, i32 0, i32 96
  %1013 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1012, i32 0, i32 4
  %1014 = load ptr, ptr %1013, align 8, !tbaa !39
  %1015 = load i64, ptr %29, align 8, !tbaa !9
  %1016 = load i64, ptr %23, align 8, !tbaa !9
  %1017 = sub nsw i64 %1015, %1016
  %1018 = getelementptr inbounds i64, ptr %1014, i64 %1017
  store i64 %1010, ptr %1018, align 8, !tbaa !9
  %1019 = load i64, ptr %31, align 8, !tbaa !9
  %1020 = add nsw i64 %1019, 1
  store i64 %1020, ptr %31, align 8, !tbaa !9
  br label %1021

1021:                                             ; preds = %971, %952
  br label %1022

1022:                                             ; preds = %1021
  %1023 = load i64, ptr %26, align 8, !tbaa !9
  %1024 = add nsw i64 %1023, 1
  store i64 %1024, ptr %26, align 8, !tbaa !9
  br label %928, !llvm.loop !62

1025:                                             ; preds = %928
  %1026 = load i64, ptr %30, align 8, !tbaa !9
  %1027 = load ptr, ptr %11, align 8, !tbaa !5
  %1028 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1027, i32 0, i32 27
  %1029 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1028, i32 0, i32 2
  %1030 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1029, i32 0, i32 4
  %1031 = load ptr, ptr %1030, align 8, !tbaa !39
  %1032 = load i64, ptr %25, align 8, !tbaa !9
  %1033 = add nsw i64 %1032, 1
  %1034 = getelementptr inbounds i64, ptr %1031, i64 %1033
  store i64 %1026, ptr %1034, align 8, !tbaa !9
  %1035 = load i64, ptr %31, align 8, !tbaa !9
  %1036 = load ptr, ptr %11, align 8, !tbaa !5
  %1037 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1036, i32 0, i32 28
  %1038 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1037, i32 0, i32 2
  %1039 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1038, i32 0, i32 4
  %1040 = load ptr, ptr %1039, align 8, !tbaa !39
  %1041 = load i64, ptr %25, align 8, !tbaa !9
  %1042 = add nsw i64 %1041, 1
  %1043 = getelementptr inbounds i64, ptr %1040, i64 %1042
  store i64 %1035, ptr %1043, align 8, !tbaa !9
  br label %1044

1044:                                             ; preds = %1025
  %1045 = load i64, ptr %25, align 8, !tbaa !9
  %1046 = add nsw i64 %1045, 1
  store i64 %1046, ptr %25, align 8, !tbaa !9
  br label %887, !llvm.loop !63

1047:                                             ; preds = %887
  br label %1048

1048:                                             ; preds = %1047, %807
  %1049 = load ptr, ptr %11, align 8, !tbaa !5
  %1050 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1049, i32 0, i32 27
  %1051 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl22sparsecreatecrsinplaceEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %1050, ptr noundef %1051)
  %1052 = load i64, ptr %17, align 8, !tbaa !9
  %1053 = icmp sgt i64 %1052, 0
  br i1 %1053, label %1054, label %1180

1054:                                             ; preds = %1048
  %1055 = load ptr, ptr %11, align 8, !tbaa !5
  %1056 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1055, i32 0, i32 25
  %1057 = load i64, ptr %17, align 8, !tbaa !9
  %1058 = load i64, ptr %23, align 8, !tbaa !9
  %1059 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %1056, i64 noundef %1057, i64 noundef %1058, ptr noundef %1059)
  %1060 = load i64, ptr %17, align 8, !tbaa !9
  %1061 = load i64, ptr %23, align 8, !tbaa !9
  %1062 = load ptr, ptr %11, align 8, !tbaa !5
  %1063 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1062, i32 0, i32 24
  %1064 = load ptr, ptr %11, align 8, !tbaa !5
  %1065 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1064, i32 0, i32 25
  %1066 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixcopyEllPKNS_9ae_matrixEllPS0_llPNS_8ae_stateE(i64 noundef %1060, i64 noundef %1061, ptr noundef %1063, i64 noundef 0, i64 noundef 0, ptr noundef %1065, i64 noundef 0, i64 noundef 0, ptr noundef %1066)
  store i64 0, ptr %25, align 8, !tbaa !9
  br label %1067

1067:                                             ; preds = %1176, %1054
  %1068 = load i64, ptr %25, align 8, !tbaa !9
  %1069 = load i64, ptr %17, align 8, !tbaa !9
  %1070 = sub nsw i64 %1069, 1
  %1071 = icmp sle i64 %1068, %1070
  br i1 %1071, label %1072, label %1179

1072:                                             ; preds = %1067
  %1073 = load ptr, ptr %11, align 8, !tbaa !5
  %1074 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1073, i32 0, i32 28
  %1075 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1074, i32 0, i32 2
  %1076 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1075, i32 0, i32 4
  %1077 = load ptr, ptr %1076, align 8, !tbaa !39
  %1078 = load i64, ptr %15, align 8, !tbaa !9
  %1079 = load i64, ptr %25, align 8, !tbaa !9
  %1080 = add nsw i64 %1078, %1079
  %1081 = getelementptr inbounds i64, ptr %1077, i64 %1080
  %1082 = load i64, ptr %1081, align 8, !tbaa !9
  store i64 %1082, ptr %31, align 8, !tbaa !9
  %1083 = load i64, ptr %23, align 8, !tbaa !9
  store i64 %1083, ptr %29, align 8, !tbaa !9
  br label %1084

1084:                                             ; preds = %1161, %1072
  %1085 = load i64, ptr %29, align 8, !tbaa !9
  %1086 = load i64, ptr %22, align 8, !tbaa !9
  %1087 = sub nsw i64 %1086, 1
  %1088 = icmp sle i64 %1085, %1087
  br i1 %1088, label %1089, label %1164

1089:                                             ; preds = %1084
  %1090 = load ptr, ptr %11, align 8, !tbaa !5
  %1091 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1090, i32 0, i32 24
  %1092 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1091, i32 0, i32 6
  %1093 = load ptr, ptr %1092, align 8, !tbaa !39
  %1094 = load i64, ptr %25, align 8, !tbaa !9
  %1095 = getelementptr inbounds ptr, ptr %1093, i64 %1094
  %1096 = load ptr, ptr %1095, align 8, !tbaa !5
  %1097 = load i64, ptr %29, align 8, !tbaa !9
  %1098 = getelementptr inbounds double, ptr %1096, i64 %1097
  %1099 = load double, ptr %1098, align 8, !tbaa !40
  %1100 = fcmp une double %1099, 0.000000e+00
  br i1 %1100, label %1101, label %1160

1101:                                             ; preds = %1089
  %1102 = load ptr, ptr %11, align 8, !tbaa !5
  %1103 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1102, i32 0, i32 96
  %1104 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1103, i32 0, i32 4
  %1105 = load ptr, ptr %1104, align 8, !tbaa !39
  %1106 = load i64, ptr %29, align 8, !tbaa !9
  %1107 = load i64, ptr %23, align 8, !tbaa !9
  %1108 = sub nsw i64 %1106, %1107
  %1109 = getelementptr inbounds i64, ptr %1105, i64 %1108
  %1110 = load i64, ptr %1109, align 8, !tbaa !9
  %1111 = icmp eq i64 %1110, 0
  %1112 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1111, ptr noundef @.str.606, ptr noundef %1112)
  %1113 = load i64, ptr %29, align 8, !tbaa !9
  %1114 = load i64, ptr %23, align 8, !tbaa !9
  %1115 = sub nsw i64 %1113, %1114
  %1116 = load ptr, ptr %11, align 8, !tbaa !5
  %1117 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1116, i32 0, i32 28
  %1118 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1117, i32 0, i32 1
  %1119 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1118, i32 0, i32 4
  %1120 = load ptr, ptr %1119, align 8, !tbaa !39
  %1121 = load i64, ptr %31, align 8, !tbaa !9
  %1122 = getelementptr inbounds i64, ptr %1120, i64 %1121
  store i64 %1115, ptr %1122, align 8, !tbaa !9
  %1123 = load ptr, ptr %11, align 8, !tbaa !5
  %1124 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1123, i32 0, i32 24
  %1125 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1124, i32 0, i32 6
  %1126 = load ptr, ptr %1125, align 8, !tbaa !39
  %1127 = load i64, ptr %25, align 8, !tbaa !9
  %1128 = getelementptr inbounds ptr, ptr %1126, i64 %1127
  %1129 = load ptr, ptr %1128, align 8, !tbaa !5
  %1130 = load i64, ptr %29, align 8, !tbaa !9
  %1131 = getelementptr inbounds double, ptr %1129, i64 %1130
  %1132 = load double, ptr %1131, align 8, !tbaa !40
  %1133 = load ptr, ptr %11, align 8, !tbaa !5
  %1134 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1133, i32 0, i32 28
  %1135 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1134, i32 0, i32 0
  %1136 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1135, i32 0, i32 4
  %1137 = load ptr, ptr %1136, align 8, !tbaa !39
  %1138 = load i64, ptr %31, align 8, !tbaa !9
  %1139 = getelementptr inbounds double, ptr %1137, i64 %1138
  store double %1132, ptr %1139, align 8, !tbaa !40
  %1140 = load ptr, ptr %11, align 8, !tbaa !5
  %1141 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1140, i32 0, i32 96
  %1142 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1141, i32 0, i32 4
  %1143 = load ptr, ptr %1142, align 8, !tbaa !39
  %1144 = load i64, ptr %29, align 8, !tbaa !9
  %1145 = load i64, ptr %23, align 8, !tbaa !9
  %1146 = sub nsw i64 %1144, %1145
  %1147 = getelementptr inbounds i64, ptr %1143, i64 %1146
  %1148 = load i64, ptr %1147, align 8, !tbaa !9
  %1149 = add nsw i64 %1148, 1
  %1150 = load ptr, ptr %11, align 8, !tbaa !5
  %1151 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1150, i32 0, i32 96
  %1152 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1151, i32 0, i32 4
  %1153 = load ptr, ptr %1152, align 8, !tbaa !39
  %1154 = load i64, ptr %29, align 8, !tbaa !9
  %1155 = load i64, ptr %23, align 8, !tbaa !9
  %1156 = sub nsw i64 %1154, %1155
  %1157 = getelementptr inbounds i64, ptr %1153, i64 %1156
  store i64 %1149, ptr %1157, align 8, !tbaa !9
  %1158 = load i64, ptr %31, align 8, !tbaa !9
  %1159 = add nsw i64 %1158, 1
  store i64 %1159, ptr %31, align 8, !tbaa !9
  br label %1160

1160:                                             ; preds = %1101, %1089
  br label %1161

1161:                                             ; preds = %1160
  %1162 = load i64, ptr %29, align 8, !tbaa !9
  %1163 = add nsw i64 %1162, 1
  store i64 %1163, ptr %29, align 8, !tbaa !9
  br label %1084, !llvm.loop !64

1164:                                             ; preds = %1084
  %1165 = load i64, ptr %31, align 8, !tbaa !9
  %1166 = load ptr, ptr %11, align 8, !tbaa !5
  %1167 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1166, i32 0, i32 28
  %1168 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1167, i32 0, i32 2
  %1169 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1168, i32 0, i32 4
  %1170 = load ptr, ptr %1169, align 8, !tbaa !39
  %1171 = load i64, ptr %15, align 8, !tbaa !9
  %1172 = load i64, ptr %25, align 8, !tbaa !9
  %1173 = add nsw i64 %1171, %1172
  %1174 = add nsw i64 %1173, 1
  %1175 = getelementptr inbounds i64, ptr %1170, i64 %1174
  store i64 %1165, ptr %1175, align 8, !tbaa !9
  br label %1176

1176:                                             ; preds = %1164
  %1177 = load i64, ptr %25, align 8, !tbaa !9
  %1178 = add nsw i64 %1177, 1
  store i64 %1178, ptr %25, align 8, !tbaa !9
  br label %1067, !llvm.loop !65

1179:                                             ; preds = %1067
  br label %1180

1180:                                             ; preds = %1179, %1048
  %1181 = load ptr, ptr %11, align 8, !tbaa !5
  %1182 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1181, i32 0, i32 28
  %1183 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN11alglib_impl22sparsecreatecrsinplaceEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %1182, ptr noundef %1183)
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #3
  ret void
}

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 = { 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, !10, i64 8}
!12 = !{!"_ZTSN11alglib_impl9vipmstateE", !13, i64 0, !13, i64 1, !10, i64 8, !10, i64 16, !14, i64 24, !14, i64 32, !14, i64 40, !13, i64 48, !15, i64 56, !15, i64 120, !15, i64 184, !14, i64 248, !15, i64 256, !17, i64 320, !18, i64 400, !15, i64 768, !10, i64 832, !13, i64 840, !15, i64 848, !15, i64 912, !15, i64 976, !15, i64 1040, !15, i64 1104, !15, i64 1168, !17, i64 1232, !17, i64 1312, !18, i64 1392, !18, i64 1760, !18, i64 2128, !15, i64 2496, !15, i64 2560, !15, i64 2624, !15, i64 2688, !15, i64 2752, !10, i64 2816, !10, i64 2824, !19, i64 2832, !19, i64 3488, !19, i64 4144, !19, i64 4800, !19, i64 5456, !15, i64 6112, !15, i64 6176, !15, i64 6240, !15, i64 6304, !15, i64 6368, !10, i64 6432, !10, i64 6440, !10, i64 6448, !10, i64 6456, !10, i64 6464, !10, i64 6472, !13, i64 6480, !13, i64 6481, !10, i64 6488, !13, i64 6496, !13, i64 6497, !15, i64 6504, !15, i64 6568, !15, i64 6632, !15, i64 6696, !15, i64 6760, !15, i64 6824, !15, i64 6888, !15, i64 6952, !15, i64 7016, !15, i64 7080, !15, i64 7144, !15, i64 7208, !15, i64 7272, !15, i64 7336, !15, i64 7400, !17, i64 7464, !15, i64 7544, !15, i64 7608, !15, i64 7672, !15, i64 7736, !15, i64 7800, !20, i64 7864, !31, i64 23944, !15, i64 24584, !15, i64 24648, !15, i64 24712, !15, i64 24776, !15, i64 24840, !15, i64 24904, !15, i64 24968, !15, i64 25032, !19, i64 25096, !15, i64 25752, !15, i64 25816, !15, i64 25880, !15, i64 25944, !15, i64 26008, !17, i64 26072, !15, i64 26152, !15, i64 26216, !18, i64 26280}
!13 = !{!"bool", !7, i64 0}
!14 = !{!"double", !7, i64 0}
!15 = !{!"_ZTSN11alglib_impl9ae_vectorE", !10, i64 0, !10, i64 8, !13, i64 16, !16, i64 24, !7, i64 56}
!16 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!17 = !{!"_ZTSN11alglib_impl9ae_matrixE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !13, i64 32, !16, i64 40, !7, i64 72}
!18 = !{!"_ZTSN11alglib_impl12sparsematrixE", !15, i64 0, !15, i64 64, !15, i64 128, !15, i64 192, !15, i64 256, !10, i64 320, !10, i64 328, !10, i64 336, !10, i64 344, !10, i64 352, !10, i64 360}
!19 = !{!"_ZTSN11alglib_impl8vipmvarsE", !10, i64 0, !10, i64 8, !15, i64 16, !15, i64 80, !15, i64 144, !15, i64 208, !15, i64 272, !15, i64 336, !15, i64 400, !15, i64 464, !15, i64 528, !15, i64 592}
!20 = !{!"_ZTSN11alglib_impl23vipmreducedsparsesystemE", !18, i64 0, !15, i64 368, !15, i64 432, !15, i64 496, !15, i64 560, !10, i64 624, !21, i64 632, !15, i64 15696, !15, i64 15760, !15, i64 15824, !15, i64 15888, !15, i64 15952, !15, i64 16016}
!21 = !{!"_ZTSN11alglib_impl14spcholanalysisE", !10, i64 0, !10, i64 8, !10, i64 16, !13, i64 24, !10, i64 32, !14, i64 40, !14, i64 48, !14, i64 56, !14, i64 64, !15, i64 72, !13, i64 136, !13, i64 137, !13, i64 138, !13, i64 139, !13, i64 140, !15, i64 144, !10, i64 208, !15, i64 216, !15, i64 280, !15, i64 344, !15, i64 408, !15, i64 472, !15, i64 536, !13, i64 600, !15, i64 608, !15, i64 672, !15, i64 736, !15, i64 800, !15, i64 864, !15, i64 928, !13, i64 992, !13, i64 993, !22, i64 1000, !15, i64 1512, !15, i64 1576, !15, i64 1640, !15, i64 1704, !15, i64 1768, !15, i64 1832, !23, i64 1896, !23, i64 2040, !23, i64 2184, !23, i64 2328, !23, i64 2472, !23, i64 2616, !15, i64 2760, !15, i64 2824, !15, i64 2888, !15, i64 2952, !15, i64 3016, !25, i64 3080, !30, i64 7464, !15, i64 13816, !15, i64 13880, !15, i64 13944, !15, i64 14008, !15, i64 14072, !15, i64 14136, !18, i64 14200, !18, i64 14568, !15, i64 14936, !15, i64 15000}
!22 = !{!"_ZTSN11alglib_impl9spcholadjE", !15, i64 0, !15, i64 64, !15, i64 128, !15, i64 192, !15, i64 256, !15, i64 320, !15, i64 384, !15, i64 448}
!23 = !{!"_ZTSN11alglib_impl9ae_nxpoolE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !16, i64 32, !24, i64 64, !16, i64 112}
!24 = !{!"_ZTSN11alglib_impl7ae_lockE", !6, i64 0, !16, i64 8, !13, i64 40}
!25 = !{!"_ZTSN11alglib_impl9amdbufferE", !10, i64 0, !13, i64 8, !13, i64 9, !15, i64 16, !15, i64 80, !15, i64 144, !26, i64 208, !26, i64 568, !26, i64 928, !27, i64 1288, !28, i64 1496, !29, i64 1968, !15, i64 2120, !15, i64 2184, !15, i64 2248, !29, i64 2312, !29, i64 2464, !29, i64 2616, !29, i64 2768, !29, i64 2920, !29, i64 3072, !15, i64 3224, !10, i64 3288, !29, i64 3296, !29, i64 3448, !26, i64 3600, !29, i64 3960, !15, i64 4112, !15, i64 4176, !15, i64 4240, !17, i64 4304}
!26 = !{!"_ZTSN11alglib_impl8amdknsetE", !10, i64 0, !10, i64 8, !15, i64 16, !15, i64 80, !15, i64 144, !15, i64 208, !15, i64 272, !10, i64 336, !10, i64 344, !10, i64 352}
!27 = !{!"_ZTSN11alglib_impl11amdllmatrixE", !10, i64 0, !15, i64 8, !15, i64 72, !15, i64 136, !10, i64 200}
!28 = !{!"_ZTSN11alglib_impl12amdvertexsetE", !10, i64 0, !13, i64 8, !10, i64 16, !15, i64 24, !15, i64 88, !15, i64 152, !15, i64 216, !15, i64 280, !15, i64 344, !15, i64 408}
!29 = !{!"_ZTSN11alglib_impl5nisetE", !10, i64 0, !10, i64 8, !15, i64 16, !15, i64 80, !10, i64 144}
!30 = !{!"_ZTSN11alglib_impl18priorityamdbuffersE", !15, i64 0, !15, i64 64, !25, i64 128, !18, i64 4512, !18, i64 4880, !18, i64 5248, !18, i64 5616, !18, i64 5984}
!31 = !{!"_ZTSN11alglib_impl17vipmrighthandsideE", !15, i64 0, !15, i64 64, !15, i64 128, !15, i64 192, !15, i64 256, !15, i64 320, !15, i64 384, !15, i64 448, !15, i64 512, !15, i64 576}
!32 = !{!12, !10, i64 16}
!33 = !{!18, !10, i64 320}
!34 = !{!18, !10, i64 328}
!35 = !{!18, !10, i64 336}
!36 = !{!15, !10, i64 0}
!37 = !{!12, !13, i64 6497}
!38 = !{!12, !13, i64 6496}
!39 = !{!7, !7, i64 0}
!40 = !{!14, !14, i64 0}
!41 = !{!13, !13, i64 0}
!42 = !{i8 0, i8 2}
!43 = !{}
!44 = distinct !{!44, !45}
!45 = !{!"llvm.loop.mustprogress"}
!46 = !{!47, !14, i64 16}
!47 = !{!"_ZTSN11alglib_impl8ae_stateE", !10, i64 0, !14, i64 8, !14, i64 16, !14, i64 24, !6, i64 32, !16, i64 40, !6, i64 72, !48, i64 80, !6, i64 88, !49, i64 96, !6, i64 104, !6, i64 112, !6, i64 120}
!48 = !{!"_ZTSN11alglib_impl13ae_error_typeE", !7, i64 0}
!49 = !{!"long long", !7, i64 0}
!50 = distinct !{!50, !45}
!51 = distinct !{!51, !45}
!52 = distinct !{!52, !45}
!53 = !{!12, !13, i64 1}
!54 = distinct !{!54, !45}
!55 = !{!12, !10, i64 2816}
!56 = !{!12, !10, i64 2824}
!57 = distinct !{!57, !45}
!58 = !{!12, !10, i64 2456}
!59 = !{!12, !10, i64 2464}
!60 = !{!12, !10, i64 2088}
!61 = !{!12, !10, i64 2096}
!62 = distinct !{!62, !45}
!63 = distinct !{!63, !45}
!64 = distinct !{!64, !45}
!65 = distinct !{!65, !45}


; 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.595 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.596 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.597 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.598 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.599 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.600 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.601 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.602 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.603 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.604 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.605 = external hidden unnamed_addr constant [83 x i8], align 1
@.str.606 = external hidden unnamed_addr constant [72 x i8], align 1

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

declare noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef, ptr noundef) local_unnamed_addr #0

declare noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef, ptr noundef) local_unnamed_addr #0

declare noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef, double noundef) local_unnamed_addr #0

declare noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef, double noundef) local_unnamed_addr #0

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

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

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

declare void @_ZN11alglib_impl11rmatrixcopyEllPKNS_9ae_matrixEllPS0_llPNS_8ae_stateE(i64 noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #0

declare noundef zeroext i1 @_ZN11alglib_impl11ae_isneginfEdPNS_8ae_stateE(double noundef, ptr noundef) local_unnamed_addr #0

declare noundef zeroext i1 @_ZN11alglib_impl11ae_isposinfEdPNS_8ae_stateE(double noundef, ptr noundef) local_unnamed_addr #0

declare void @_ZN11alglib_impl18sparsecopytocrsbufEPKNS_12sparsematrixEPS0_PNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare noundef zeroext i1 @_ZN11alglib_impl20apservisfinitematrixEPKNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #0

declare void @_ZN11alglib_impl22sparsecreatecrsinplaceEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #0

declare void @_ZN11alglib_impl23bvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #0

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl25normalizemixedbrlcinplaceEPNS_12sparsematrixElPNS_9ae_matrixElPNS_9ae_vectorES5_lbS5_bPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef, i64 noundef, i1 noundef zeroext, ptr noundef, i1 noundef zeroext, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl18vipmsetconstraintsEPNS_9vipmstateEPKNS_9ae_vectorES4_PKNS_12sparsematrixElPKNS_9ae_matrixElS4_S4_PNS_8ae_stateE(ptr noundef %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr noundef %3, i64 noundef %4, ptr noundef %5, i64 noundef %6, ptr nocapture noundef readonly %7, ptr nocapture noundef readonly %8, ptr noundef %9) local_unnamed_addr #1 {
  %11 = getelementptr inbounds i8, ptr %0, i64 8
  %12 = load i64, ptr %11, align 8, !tbaa !5
  %13 = getelementptr inbounds i8, ptr %0, i64 16
  %14 = load i64, ptr %13, align 8, !tbaa !30
  %15 = sub i64 %12, %14
  %16 = icmp sgt i64 %6, -1
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %16, ptr noundef nonnull @.str.595, ptr noundef %9)
  %17 = icmp sgt i64 %4, -1
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %17, ptr noundef nonnull @.str.596, ptr noundef %9)
  %18 = tail call noundef zeroext i1 @_ZN11alglib_impl20apservisfinitematrixEPKNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %5, i64 noundef %6, i64 noundef %12, ptr noundef %9)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %18, ptr noundef nonnull @.str.597, ptr noundef %9)
  %19 = icmp eq i64 %4, 0
  br i1 %19, label %.critedge, label %20

20:                                               ; preds = %10
  %21 = getelementptr inbounds i8, ptr %3, i64 320
  %22 = load i64, ptr %21, align 8, !tbaa !31
  %23 = icmp eq i64 %22, 1
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %23, ptr noundef nonnull @.str.598, ptr noundef %9)
  %24 = getelementptr inbounds i8, ptr %3, i64 328
  %25 = load i64, ptr %24, align 8, !tbaa !32
  %26 = icmp eq i64 %25, %4
  br i1 %26, label %27, label %31

27:                                               ; preds = %20
  %28 = getelementptr inbounds i8, ptr %3, i64 336
  %29 = load i64, ptr %28, align 8, !tbaa !33
  %30 = icmp eq i64 %29, %12
  br label %31

.critedge:                                        ; preds = %10
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext true, ptr noundef nonnull @.str.598, ptr noundef %9)
  br label %31

31:                                               ; preds = %.critedge, %20, %27
  %32 = phi i1 [ false, %20 ], [ %30, %27 ], [ true, %.critedge ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %32, ptr noundef nonnull @.str.599, ptr noundef %9)
  %33 = load i64, ptr %7, align 8, !tbaa !34
  %34 = add nsw i64 %6, %4
  %35 = icmp sge i64 %33, %34
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %35, ptr noundef nonnull @.str.600, ptr noundef %9)
  %36 = load i64, ptr %8, align 8, !tbaa !34
  %37 = icmp sge i64 %36, %34
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %37, ptr noundef nonnull @.str.601, ptr noundef %9)
  %38 = getelementptr inbounds i8, ptr %0, i64 6497
  store i8 0, ptr %38, align 1, !tbaa !35
  %39 = getelementptr inbounds i8, ptr %0, i64 6496
  store i8 0, ptr %39, align 8, !tbaa !36
  %40 = getelementptr inbounds i8, ptr %0, i64 848
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %40, i64 noundef %12, ptr noundef %9)
  %41 = getelementptr inbounds i8, ptr %0, i64 912
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %41, i64 noundef %12, ptr noundef %9)
  %42 = getelementptr inbounds i8, ptr %0, i64 976
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %42, i64 noundef %12, ptr noundef %9)
  %43 = getelementptr inbounds i8, ptr %0, i64 1040
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %43, i64 noundef %12, ptr noundef %9)
  %44 = getelementptr inbounds i8, ptr %0, i64 1104
  tail call void @_ZN11alglib_impl23bvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %44, i64 noundef %12, ptr noundef %9)
  %45 = getelementptr inbounds i8, ptr %0, i64 1168
  tail call void @_ZN11alglib_impl23bvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %45, i64 noundef %12, ptr noundef %9)
  %.not.not466 = icmp sgt i64 %12, 0
  br i1 %.not.not466, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %31
  %46 = getelementptr inbounds i8, ptr %1, i64 56
  %47 = getelementptr inbounds i8, ptr %0, i64 1160
  %48 = getelementptr inbounds i8, ptr %2, i64 56
  %49 = getelementptr inbounds i8, ptr %0, i64 1224
  %50 = getelementptr inbounds i8, ptr %0, i64 904
  %51 = getelementptr inbounds i8, ptr %0, i64 968
  %52 = getelementptr inbounds i8, ptr %0, i64 1032
  %53 = getelementptr inbounds i8, ptr %0, i64 1096
  br label %54

54:                                               ; preds = %.lr.ph, %86
  %.0467 = phi i64 [ 0, %.lr.ph ], [ %109, %86 ]
  %55 = load ptr, ptr %46, align 8, !tbaa !37
  %56 = getelementptr inbounds double, ptr %55, i64 %.0467
  %57 = load double, ptr %56, align 8, !tbaa !38
  %58 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %57, ptr noundef %9)
  %59 = load ptr, ptr %47, align 8, !tbaa !37
  %60 = getelementptr inbounds i8, ptr %59, i64 %.0467
  %61 = zext i1 %58 to i8
  store i8 %61, ptr %60, align 1, !tbaa !39
  %62 = load ptr, ptr %48, align 8, !tbaa !37
  %63 = getelementptr inbounds double, ptr %62, i64 %.0467
  %64 = load double, ptr %63, align 8, !tbaa !38
  %65 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %64, ptr noundef %9)
  %66 = load ptr, ptr %49, align 8, !tbaa !37
  %67 = getelementptr inbounds i8, ptr %66, i64 %.0467
  %68 = zext i1 %65 to i8
  store i8 %68, ptr %67, align 1, !tbaa !39
  %69 = load ptr, ptr %47, align 8, !tbaa !37
  %70 = getelementptr inbounds i8, ptr %69, i64 %.0467
  %71 = load i8, ptr %70, align 1, !tbaa !39, !range !40, !noundef !41
  %72 = trunc nuw i8 %71 to i1
  br i1 %72, label %73, label %86

73:                                               ; preds = %54
  %74 = load ptr, ptr %49, align 8, !tbaa !37
  %75 = getelementptr inbounds i8, ptr %74, i64 %.0467
  %76 = load i8, ptr %75, align 1, !tbaa !39, !range !40, !noundef !41
  %77 = trunc nuw i8 %76 to i1
  br i1 %77, label %78, label %86

78:                                               ; preds = %73
  %79 = load ptr, ptr %46, align 8, !tbaa !37
  %80 = getelementptr inbounds double, ptr %79, i64 %.0467
  %81 = load double, ptr %80, align 8, !tbaa !38
  %82 = load ptr, ptr %48, align 8, !tbaa !37
  %83 = getelementptr inbounds double, ptr %82, i64 %.0467
  %84 = load double, ptr %83, align 8, !tbaa !38
  %85 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %81, double noundef %84)
  br label %86

86:                                               ; preds = %78, %73, %54
  %87 = phi i1 [ false, %73 ], [ false, %54 ], [ %85, %78 ]
  %88 = xor i1 %87, true
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %88, ptr noundef nonnull @.str.602, ptr noundef %9)
  %89 = load ptr, ptr %46, align 8, !tbaa !37
  %90 = getelementptr inbounds double, ptr %89, i64 %.0467
  %91 = load double, ptr %90, align 8, !tbaa !38
  %92 = load ptr, ptr %50, align 8, !tbaa !37
  %93 = getelementptr inbounds double, ptr %92, i64 %.0467
  store double %91, ptr %93, align 8, !tbaa !38
  %94 = load ptr, ptr %48, align 8, !tbaa !37
  %95 = getelementptr inbounds double, ptr %94, i64 %.0467
  %96 = load double, ptr %95, align 8, !tbaa !38
  %97 = load ptr, ptr %51, align 8, !tbaa !37
  %98 = getelementptr inbounds double, ptr %97, i64 %.0467
  store double %96, ptr %98, align 8, !tbaa !38
  %99 = load ptr, ptr %46, align 8, !tbaa !37
  %100 = getelementptr inbounds double, ptr %99, i64 %.0467
  %101 = load double, ptr %100, align 8, !tbaa !38
  %102 = load ptr, ptr %52, align 8, !tbaa !37
  %103 = getelementptr inbounds double, ptr %102, i64 %.0467
  store double %101, ptr %103, align 8, !tbaa !38
  %104 = load ptr, ptr %48, align 8, !tbaa !37
  %105 = getelementptr inbounds double, ptr %104, i64 %.0467
  %106 = load double, ptr %105, align 8, !tbaa !38
  %107 = load ptr, ptr %53, align 8, !tbaa !37
  %108 = getelementptr inbounds double, ptr %107, i64 %.0467
  store double %106, ptr %108, align 8, !tbaa !38
  %109 = add nuw nsw i64 %.0467, 1
  %exitcond.not = icmp eq i64 %109, %12
  br i1 %exitcond.not, label %._crit_edge, label %54, !llvm.loop !42

._crit_edge:                                      ; preds = %86, %31
  %110 = getelementptr inbounds i8, ptr %0, i64 56
  %111 = getelementptr inbounds i8, ptr %0, i64 184
  tail call void @_ZN11alglib_impl19scaleshiftbcinplaceEPKNS_9ae_vectorES2_PS0_S3_lPNS_8ae_stateE(ptr noundef nonnull %110, ptr noundef nonnull %111, ptr noundef nonnull %40, ptr noundef nonnull %41, i64 noundef %12, ptr noundef %9)
  %112 = getelementptr inbounds i8, ptr %0, i64 2624
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %112, i64 noundef %34, ptr noundef %9)
  %113 = getelementptr inbounds i8, ptr %0, i64 2688
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %113, i64 noundef %34, ptr noundef %9)
  %114 = getelementptr inbounds i8, ptr %0, i64 2496
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %114, i64 noundef %34, ptr noundef %9)
  %115 = getelementptr inbounds i8, ptr %0, i64 2560
  tail call void @_ZN11alglib_impl23bvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %115, i64 noundef %34, ptr noundef %9)
  %116 = getelementptr inbounds i8, ptr %0, i64 2752
  tail call void @_ZN11alglib_impl23bvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %116, i64 noundef %34, ptr noundef %9)
  %117 = getelementptr inbounds i8, ptr %0, i64 1232
  tail call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %117, i64 noundef %6, i64 noundef %12, ptr noundef %9)
  %118 = icmp sgt i64 %4, 0
  br i1 %118, label %119, label %121

119:                                              ; preds = %._crit_edge
  %120 = getelementptr inbounds i8, ptr %0, i64 1392
  tail call void @_ZN11alglib_impl18sparsecopytocrsbufEPKNS_12sparsematrixEPS0_PNS_8ae_stateE(ptr noundef %3, ptr noundef nonnull %120, ptr noundef %9)
  br label %121

121:                                              ; preds = %119, %._crit_edge
  %122 = icmp sgt i64 %6, 0
  br i1 %122, label %123, label %124

123:                                              ; preds = %121
  tail call void @_ZN11alglib_impl11rmatrixcopyEllPKNS_9ae_matrixEllPS0_llPNS_8ae_stateE(i64 noundef %6, i64 noundef %12, ptr noundef %5, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %117, i64 noundef 0, i64 noundef 0, ptr noundef %9)
  br label %124

124:                                              ; preds = %123, %121
  %.not.not453475 = icmp sgt i64 %34, 0
  br i1 %.not.not453475, label %.lr.ph479, label %._crit_edge480

.lr.ph479:                                        ; preds = %124
  %125 = getelementptr inbounds i8, ptr %7, i64 56
  %126 = getelementptr inbounds i8, ptr %8, i64 56
  %127 = getelementptr inbounds i8, ptr %0, i64 2680
  %128 = getelementptr inbounds i8, ptr %0, i64 2744
  %129 = getelementptr inbounds i8, ptr %0, i64 2808
  %130 = getelementptr inbounds i8, ptr %0, i64 2616
  %131 = getelementptr inbounds i8, ptr %9, i64 16
  %132 = getelementptr inbounds i8, ptr %0, i64 1304
  %133 = getelementptr inbounds i8, ptr %0, i64 1576
  %134 = getelementptr inbounds i8, ptr %0, i64 1448
  %135 = getelementptr inbounds i8, ptr %0, i64 2552
  %xtraiter = and i64 %12, 1
  %136 = icmp eq i64 %12, 1
  %unroll_iter = and i64 %12, 9223372036854775806
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br label %137

137:                                              ; preds = %.lr.ph479, %.loopexit464
  %.1476 = phi i64 [ 0, %.lr.ph479 ], [ %310, %.loopexit464 ]
  %138 = load ptr, ptr %125, align 8, !tbaa !37
  %139 = getelementptr inbounds double, ptr %138, i64 %.1476
  %140 = load double, ptr %139, align 8, !tbaa !38
  %141 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %140, ptr noundef %9)
  br i1 %141, label %147, label %142

142:                                              ; preds = %137
  %143 = load ptr, ptr %125, align 8, !tbaa !37
  %144 = getelementptr inbounds double, ptr %143, i64 %.1476
  %145 = load double, ptr %144, align 8, !tbaa !38
  %146 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isneginfEdPNS_8ae_stateE(double noundef %145, ptr noundef %9)
  br label %147

147:                                              ; preds = %142, %137
  %148 = phi i1 [ true, %137 ], [ %146, %142 ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %148, ptr noundef nonnull @.str.603, ptr noundef %9)
  %149 = load ptr, ptr %126, align 8, !tbaa !37
  %150 = getelementptr inbounds double, ptr %149, i64 %.1476
  %151 = load double, ptr %150, align 8, !tbaa !38
  %152 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %151, ptr noundef %9)
  br i1 %152, label %158, label %153

153:                                              ; preds = %147
  %154 = load ptr, ptr %126, align 8, !tbaa !37
  %155 = getelementptr inbounds double, ptr %154, i64 %.1476
  %156 = load double, ptr %155, align 8, !tbaa !38
  %157 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isposinfEdPNS_8ae_stateE(double noundef %156, ptr noundef %9)
  br label %158

158:                                              ; preds = %153, %147
  %159 = phi i1 [ true, %147 ], [ %157, %153 ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %159, ptr noundef nonnull @.str.604, ptr noundef %9)
  %160 = load ptr, ptr %125, align 8, !tbaa !37
  %161 = getelementptr inbounds double, ptr %160, i64 %.1476
  %162 = load double, ptr %161, align 8, !tbaa !38
  %163 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %162, ptr noundef %9)
  br i1 %163, label %169, label %164

164:                                              ; preds = %158
  %165 = load ptr, ptr %126, align 8, !tbaa !37
  %166 = getelementptr inbounds double, ptr %165, i64 %.1476
  %167 = load double, ptr %166, align 8, !tbaa !38
  %168 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %167, ptr noundef %9)
  br i1 %168, label %169, label %242

169:                                              ; preds = %164, %158
  %170 = load ptr, ptr %125, align 8, !tbaa !37
  %171 = getelementptr inbounds double, ptr %170, i64 %.1476
  %172 = load double, ptr %171, align 8, !tbaa !38
  %173 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %172, ptr noundef %9)
  %174 = load ptr, ptr %126, align 8, !tbaa !37
  %175 = getelementptr inbounds double, ptr %174, i64 %.1476
  %176 = load double, ptr %175, align 8, !tbaa !38
  br i1 %173, label %177, label %237

177:                                              ; preds = %169
  %178 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %176, ptr noundef %9)
  br i1 %178, label %179, label %187

179:                                              ; preds = %177
  %180 = load ptr, ptr %126, align 8, !tbaa !37
  %181 = getelementptr inbounds double, ptr %180, i64 %.1476
  %182 = load double, ptr %181, align 8, !tbaa !38
  %183 = load ptr, ptr %125, align 8, !tbaa !37
  %184 = getelementptr inbounds double, ptr %183, i64 %.1476
  %185 = load double, ptr %184, align 8, !tbaa !38
  %186 = tail call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %182, double noundef %185)
  br label %187

187:                                              ; preds = %179, %177
  %188 = phi i1 [ true, %177 ], [ %186, %179 ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %188, ptr noundef nonnull @.str.605, ptr noundef %9)
  %189 = load ptr, ptr %126, align 8, !tbaa !37
  %190 = getelementptr inbounds double, ptr %189, i64 %.1476
  %191 = load double, ptr %190, align 8, !tbaa !38
  %192 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %191, ptr noundef %9)
  br i1 %192, label %193, label %230

193:                                              ; preds = %187
  %194 = load ptr, ptr %126, align 8, !tbaa !37
  %195 = getelementptr inbounds double, ptr %194, i64 %.1476
  %196 = load double, ptr %195, align 8, !tbaa !38
  %197 = tail call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %196, ptr noundef %9)
  %198 = load ptr, ptr %125, align 8, !tbaa !37
  %199 = getelementptr inbounds double, ptr %198, i64 %.1476
  %200 = load double, ptr %199, align 8, !tbaa !38
  %201 = tail call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %200, ptr noundef %9)
  %202 = tail call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %197, double noundef %201)
  br i1 %202, label %203, label %216

203:                                              ; preds = %193
  %204 = load ptr, ptr %125, align 8, !tbaa !37
  %205 = getelementptr inbounds double, ptr %204, i64 %.1476
  %206 = load double, ptr %205, align 8, !tbaa !38
  %207 = load ptr, ptr %127, align 8, !tbaa !37
  %208 = getelementptr inbounds double, ptr %207, i64 %.1476
  store double %206, ptr %208, align 8, !tbaa !38
  %209 = load ptr, ptr %126, align 8, !tbaa !37
  %210 = getelementptr inbounds double, ptr %209, i64 %.1476
  %211 = load double, ptr %210, align 8, !tbaa !38
  %212 = load ptr, ptr %125, align 8, !tbaa !37
  %213 = getelementptr inbounds double, ptr %212, i64 %.1476
  %214 = load double, ptr %213, align 8, !tbaa !38
  %215 = fsub double %211, %214
  br label %245

216:                                              ; preds = %193
  %217 = load ptr, ptr %126, align 8, !tbaa !37
  %218 = getelementptr inbounds double, ptr %217, i64 %.1476
  %219 = load double, ptr %218, align 8, !tbaa !38
  %220 = fneg double %219
  %221 = load ptr, ptr %127, align 8, !tbaa !37
  %222 = getelementptr inbounds double, ptr %221, i64 %.1476
  store double %220, ptr %222, align 8, !tbaa !38
  %223 = load ptr, ptr %126, align 8, !tbaa !37
  %224 = getelementptr inbounds double, ptr %223, i64 %.1476
  %225 = load double, ptr %224, align 8, !tbaa !38
  %226 = load ptr, ptr %125, align 8, !tbaa !37
  %227 = getelementptr inbounds double, ptr %226, i64 %.1476
  %228 = load double, ptr %227, align 8, !tbaa !38
  %229 = fsub double %225, %228
  br label %245

230:                                              ; preds = %187
  %231 = load ptr, ptr %125, align 8, !tbaa !37
  %232 = getelementptr inbounds double, ptr %231, i64 %.1476
  %233 = load double, ptr %232, align 8, !tbaa !38
  %234 = load ptr, ptr %127, align 8, !tbaa !37
  %235 = getelementptr inbounds double, ptr %234, i64 %.1476
  store double %233, ptr %235, align 8, !tbaa !38
  %236 = load double, ptr %131, align 8, !tbaa !44
  br label %245

237:                                              ; preds = %169
  %238 = fneg double %176
  %239 = load ptr, ptr %127, align 8, !tbaa !37
  %240 = getelementptr inbounds double, ptr %239, i64 %.1476
  store double %238, ptr %240, align 8, !tbaa !38
  %241 = load double, ptr %131, align 8, !tbaa !44
  br label %245

242:                                              ; preds = %164
  %243 = load ptr, ptr %127, align 8, !tbaa !37
  %244 = getelementptr inbounds double, ptr %243, i64 %.1476
  store double -1.000000e+00, ptr %244, align 8, !tbaa !38
  br label %245

245:                                              ; preds = %237, %203, %216, %230, %242
  %.sink526 = phi double [ %241, %237 ], [ %215, %203 ], [ %229, %216 ], [ %236, %230 ], [ 2.000000e+00, %242 ]
  %.sink523 = phi i8 [ 0, %237 ], [ 1, %203 ], [ 1, %216 ], [ 0, %230 ], [ 1, %242 ]
  %.sink = phi i8 [ 1, %237 ], [ 0, %203 ], [ 1, %216 ], [ 0, %230 ], [ 0, %242 ]
  %.0432 = phi double [ -1.000000e+00, %237 ], [ 1.000000e+00, %203 ], [ -1.000000e+00, %216 ], [ 1.000000e+00, %230 ], [ 0.000000e+00, %242 ]
  %246 = load ptr, ptr %128, align 8, !tbaa !37
  %247 = getelementptr inbounds double, ptr %246, i64 %.1476
  store double %.sink526, ptr %247, align 8, !tbaa !38
  %248 = load ptr, ptr %129, align 8, !tbaa !37
  %249 = getelementptr inbounds i8, ptr %248, i64 %.1476
  store i8 %.sink523, ptr %249, align 1, !tbaa !39
  %250 = load ptr, ptr %130, align 8, !tbaa !37
  %251 = getelementptr inbounds i8, ptr %250, i64 %.1476
  store i8 %.sink, ptr %251, align 1, !tbaa !39
  %252 = icmp slt i64 %.1476, %4
  br i1 %252, label %254, label %.preheader

.preheader:                                       ; preds = %245
  br i1 %.not.not466, label %.lr.ph470, label %.loopexit464

.lr.ph470:                                        ; preds = %.preheader
  %253 = sub nsw i64 %.1476, %4
  br i1 %136, label %.loopexit464.loopexit532.unr-lcssa, label %.lr.ph470.new

254:                                              ; preds = %245
  %255 = load ptr, ptr %133, align 8, !tbaa !37
  %256 = getelementptr inbounds i64, ptr %255, i64 %.1476
  %257 = load i64, ptr %256, align 8, !tbaa !48
  %258 = getelementptr inbounds i8, ptr %256, i64 8
  %259 = load i64, ptr %258, align 8, !tbaa !48
  %.not.not461471 = icmp slt i64 %257, %259
  br i1 %.not.not461471, label %.lr.ph474.preheader, label %.loopexit464

.lr.ph474.preheader:                              ; preds = %254
  %260 = sub i64 %259, %257
  %xtraiter533 = and i64 %260, 3
  %lcmp.mod534.not = icmp eq i64 %xtraiter533, 0
  br i1 %lcmp.mod534.not, label %.lr.ph474.prol.loopexit, label %.lr.ph474.prol

.lr.ph474.prol:                                   ; preds = %.lr.ph474.preheader, %.lr.ph474.prol
  %.0440472.prol = phi i64 [ %265, %.lr.ph474.prol ], [ %257, %.lr.ph474.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph474.prol ], [ 0, %.lr.ph474.preheader ]
  %261 = load ptr, ptr %134, align 8, !tbaa !37
  %262 = getelementptr inbounds double, ptr %261, i64 %.0440472.prol
  %263 = load double, ptr %262, align 8, !tbaa !38
  %264 = fmul double %.0432, %263
  store double %264, ptr %262, align 8, !tbaa !38
  %265 = add nsw i64 %.0440472.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter533
  br i1 %prol.iter.cmp.not, label %.lr.ph474.prol.loopexit, label %.lr.ph474.prol, !llvm.loop !49

.lr.ph474.prol.loopexit:                          ; preds = %.lr.ph474.prol, %.lr.ph474.preheader
  %.0440472.unr = phi i64 [ %257, %.lr.ph474.preheader ], [ %265, %.lr.ph474.prol ]
  %266 = sub i64 %257, %259
  %267 = icmp ugt i64 %266, -4
  br i1 %267, label %.loopexit464, label %.lr.ph474

.lr.ph474:                                        ; preds = %.lr.ph474.prol.loopexit, %.lr.ph474
  %.0440472 = phi i64 [ %287, %.lr.ph474 ], [ %.0440472.unr, %.lr.ph474.prol.loopexit ]
  %268 = load ptr, ptr %134, align 8, !tbaa !37
  %269 = getelementptr inbounds double, ptr %268, i64 %.0440472
  %270 = load double, ptr %269, align 8, !tbaa !38
  %271 = fmul double %.0432, %270
  store double %271, ptr %269, align 8, !tbaa !38
  %272 = load ptr, ptr %134, align 8, !tbaa !37
  %273 = getelementptr double, ptr %272, i64 %.0440472
  %274 = getelementptr i8, ptr %273, i64 8
  %275 = load double, ptr %274, align 8, !tbaa !38
  %276 = fmul double %.0432, %275
  store double %276, ptr %274, align 8, !tbaa !38
  %277 = load ptr, ptr %134, align 8, !tbaa !37
  %278 = getelementptr double, ptr %277, i64 %.0440472
  %279 = getelementptr i8, ptr %278, i64 16
  %280 = load double, ptr %279, align 8, !tbaa !38
  %281 = fmul double %.0432, %280
  store double %281, ptr %279, align 8, !tbaa !38
  %282 = load ptr, ptr %134, align 8, !tbaa !37
  %283 = getelementptr double, ptr %282, i64 %.0440472
  %284 = getelementptr i8, ptr %283, i64 24
  %285 = load double, ptr %284, align 8, !tbaa !38
  %286 = fmul double %.0432, %285
  store double %286, ptr %284, align 8, !tbaa !38
  %287 = add nsw i64 %.0440472, 4
  %exitcond510.not.3 = icmp eq i64 %287, %259
  br i1 %exitcond510.not.3, label %.loopexit464, label %.lr.ph474, !llvm.loop !51

.lr.ph470.new:                                    ; preds = %.lr.ph470, %.lr.ph470.new
  %.1441469 = phi i64 [ %301, %.lr.ph470.new ], [ 0, %.lr.ph470 ]
  %niter = phi i64 [ %niter.next.1, %.lr.ph470.new ], [ 0, %.lr.ph470 ]
  %288 = load ptr, ptr %132, align 8, !tbaa !37
  %289 = getelementptr inbounds ptr, ptr %288, i64 %253
  %290 = load ptr, ptr %289, align 8, !tbaa !52
  %291 = getelementptr inbounds double, ptr %290, i64 %.1441469
  %292 = load double, ptr %291, align 8, !tbaa !38
  %293 = fmul double %.0432, %292
  store double %293, ptr %291, align 8, !tbaa !38
  %294 = or disjoint i64 %.1441469, 1
  %295 = load ptr, ptr %132, align 8, !tbaa !37
  %296 = getelementptr inbounds ptr, ptr %295, i64 %253
  %297 = load ptr, ptr %296, align 8, !tbaa !52
  %298 = getelementptr inbounds double, ptr %297, i64 %294
  %299 = load double, ptr %298, align 8, !tbaa !38
  %300 = fmul double %.0432, %299
  store double %300, ptr %298, align 8, !tbaa !38
  %301 = add nuw nsw i64 %.1441469, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.loopexit464.loopexit532.unr-lcssa, label %.lr.ph470.new, !llvm.loop !53

.loopexit464.loopexit532.unr-lcssa:               ; preds = %.lr.ph470.new, %.lr.ph470
  %.1441469.unr = phi i64 [ 0, %.lr.ph470 ], [ %301, %.lr.ph470.new ]
  br i1 %lcmp.mod.not, label %.loopexit464, label %.loopexit464.loopexit532.epilog-lcssa

.loopexit464.loopexit532.epilog-lcssa:            ; preds = %.loopexit464.loopexit532.unr-lcssa
  %302 = load ptr, ptr %132, align 8, !tbaa !37
  %303 = getelementptr inbounds ptr, ptr %302, i64 %253
  %304 = load ptr, ptr %303, align 8, !tbaa !52
  %305 = getelementptr inbounds double, ptr %304, i64 %.1441469.unr
  %306 = load double, ptr %305, align 8, !tbaa !38
  %307 = fmul double %.0432, %306
  store double %307, ptr %305, align 8, !tbaa !38
  br label %.loopexit464

.loopexit464:                                     ; preds = %.loopexit464.loopexit532.epilog-lcssa, %.loopexit464.loopexit532.unr-lcssa, %.lr.ph474.prol.loopexit, %.lr.ph474, %.preheader, %254
  %308 = load ptr, ptr %135, align 8, !tbaa !37
  %309 = getelementptr inbounds double, ptr %308, i64 %.1476
  store double %.0432, ptr %309, align 8, !tbaa !38
  %310 = add nuw nsw i64 %.1476, 1
  %exitcond511.not = icmp eq i64 %310, %34
  br i1 %exitcond511.not, label %._crit_edge480, label %137, !llvm.loop !54

._crit_edge480:                                   ; preds = %.loopexit464, %124
  %311 = getelementptr inbounds i8, ptr %0, i64 1392
  tail call void @_ZN11alglib_impl26scaleshiftmixedbrlcinplaceEPKNS_9ae_vectorES2_lPNS_12sparsematrixElPNS_9ae_matrixElPS0_S7_PNS_8ae_stateE(ptr noundef nonnull %110, ptr noundef nonnull %111, i64 noundef %12, ptr noundef nonnull %311, i64 noundef %4, ptr noundef nonnull %117, i64 noundef %6, ptr noundef nonnull %112, ptr noundef nonnull %113, ptr noundef %9)
  %312 = getelementptr inbounds i8, ptr %0, i64 1
  %313 = load i8, ptr %312, align 1, !tbaa !55, !range !40, !noundef !41
  %314 = trunc nuw i8 %313 to i1
  br i1 %314, label %315, label %.loopexit463

315:                                              ; preds = %._crit_edge480
  %316 = getelementptr inbounds i8, ptr %0, i64 25880
  tail call void @_ZN11alglib_impl25normalizemixedbrlcinplaceEPNS_12sparsematrixElPNS_9ae_matrixElPNS_9ae_vectorES5_lbS5_bPNS_8ae_stateE(ptr noundef nonnull %311, i64 noundef %4, ptr noundef nonnull %117, i64 noundef %6, ptr noundef nonnull %112, ptr noundef nonnull %113, i64 noundef %12, i1 noundef zeroext true, ptr noundef nonnull %316, i1 noundef zeroext true, ptr noundef %9)
  br i1 %.not.not453475, label %.lr.ph484, label %.loopexit463

.lr.ph484:                                        ; preds = %315
  %317 = getelementptr inbounds i8, ptr %0, i64 2552
  %318 = getelementptr inbounds i8, ptr %0, i64 25936
  %319 = add i64 %6, %4
  %xtraiter536 = and i64 %34, 1
  %320 = icmp eq i64 %319, 1
  br i1 %320, label %.loopexit463.loopexit.unr-lcssa, label %.lr.ph484.new

.lr.ph484.new:                                    ; preds = %.lr.ph484
  %unroll_iter538 = and i64 %34, 9223372036854775806
  br label %321

321:                                              ; preds = %321, %.lr.ph484.new
  %.2482 = phi i64 [ 0, %.lr.ph484.new ], [ %337, %321 ]
  %niter539 = phi i64 [ 0, %.lr.ph484.new ], [ %niter539.next.1, %321 ]
  %322 = load ptr, ptr %317, align 8, !tbaa !37
  %323 = getelementptr inbounds double, ptr %322, i64 %.2482
  %324 = load double, ptr %323, align 8, !tbaa !38
  %325 = load ptr, ptr %318, align 8, !tbaa !37
  %326 = getelementptr inbounds double, ptr %325, i64 %.2482
  %327 = load double, ptr %326, align 8, !tbaa !38
  %328 = fmul double %324, %327
  store double %328, ptr %323, align 8, !tbaa !38
  %329 = or disjoint i64 %.2482, 1
  %330 = load ptr, ptr %317, align 8, !tbaa !37
  %331 = getelementptr inbounds double, ptr %330, i64 %329
  %332 = load double, ptr %331, align 8, !tbaa !38
  %333 = load ptr, ptr %318, align 8, !tbaa !37
  %334 = getelementptr inbounds double, ptr %333, i64 %329
  %335 = load double, ptr %334, align 8, !tbaa !38
  %336 = fmul double %332, %335
  store double %336, ptr %331, align 8, !tbaa !38
  %337 = add nuw nsw i64 %.2482, 2
  %niter539.next.1 = add i64 %niter539, 2
  %niter539.ncmp.1 = icmp eq i64 %niter539.next.1, %unroll_iter538
  br i1 %niter539.ncmp.1, label %.loopexit463.loopexit.unr-lcssa, label %321, !llvm.loop !56

.loopexit463.loopexit.unr-lcssa:                  ; preds = %321, %.lr.ph484
  %.2482.unr = phi i64 [ 0, %.lr.ph484 ], [ %337, %321 ]
  %lcmp.mod537.not = icmp eq i64 %xtraiter536, 0
  br i1 %lcmp.mod537.not, label %.loopexit463, label %.loopexit463.loopexit.epilog-lcssa

.loopexit463.loopexit.epilog-lcssa:               ; preds = %.loopexit463.loopexit.unr-lcssa
  %338 = load ptr, ptr %317, align 8, !tbaa !37
  %339 = getelementptr inbounds double, ptr %338, i64 %.2482.unr
  %340 = load double, ptr %339, align 8, !tbaa !38
  %341 = load ptr, ptr %318, align 8, !tbaa !37
  %342 = getelementptr inbounds double, ptr %341, i64 %.2482.unr
  %343 = load double, ptr %342, align 8, !tbaa !38
  %344 = fmul double %340, %343
  store double %344, ptr %339, align 8, !tbaa !38
  br label %.loopexit463

.loopexit463:                                     ; preds = %.loopexit463.loopexit.epilog-lcssa, %.loopexit463.loopexit.unr-lcssa, %315, %._crit_edge480
  %345 = getelementptr inbounds i8, ptr %0, i64 2816
  store i64 %6, ptr %345, align 8, !tbaa !57
  %346 = getelementptr inbounds i8, ptr %0, i64 2824
  store i64 %4, ptr %346, align 8, !tbaa !58
  %347 = getelementptr inbounds i8, ptr %0, i64 26216
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %347, i64 noundef %15, ptr noundef %9)
  %.not.not455485 = icmp sgt i64 %15, 0
  br i1 %.not.not455485, label %.lr.ph488, label %._crit_edge489

.lr.ph488:                                        ; preds = %.loopexit463
  %348 = getelementptr inbounds i8, ptr %0, i64 26272
  %xtraiter541 = and i64 %15, 3
  %349 = sub i64 %14, %12
  %350 = icmp ugt i64 %349, -4
  br i1 %350, label %._crit_edge489.loopexit.unr-lcssa, label %.lr.ph488.new

.lr.ph488.new:                                    ; preds = %.lr.ph488
  %unroll_iter543 = and i64 %15, 9223372036854775804
  br label %351

351:                                              ; preds = %351, %.lr.ph488.new
  %.3486 = phi i64 [ 0, %.lr.ph488.new ], [ %363, %351 ]
  %niter544 = phi i64 [ 0, %.lr.ph488.new ], [ %niter544.next.3, %351 ]
  %352 = load ptr, ptr %348, align 8, !tbaa !37
  %353 = getelementptr inbounds i64, ptr %352, i64 %.3486
  store i64 0, ptr %353, align 8, !tbaa !48
  %354 = or disjoint i64 %.3486, 1
  %355 = load ptr, ptr %348, align 8, !tbaa !37
  %356 = getelementptr inbounds i64, ptr %355, i64 %354
  store i64 0, ptr %356, align 8, !tbaa !48
  %357 = or disjoint i64 %.3486, 2
  %358 = load ptr, ptr %348, align 8, !tbaa !37
  %359 = getelementptr inbounds i64, ptr %358, i64 %357
  store i64 0, ptr %359, align 8, !tbaa !48
  %360 = or disjoint i64 %.3486, 3
  %361 = load ptr, ptr %348, align 8, !tbaa !37
  %362 = getelementptr inbounds i64, ptr %361, i64 %360
  store i64 0, ptr %362, align 8, !tbaa !48
  %363 = add nuw nsw i64 %.3486, 4
  %niter544.next.3 = add i64 %niter544, 4
  %niter544.ncmp.3 = icmp eq i64 %niter544.next.3, %unroll_iter543
  br i1 %niter544.ncmp.3, label %._crit_edge489.loopexit.unr-lcssa, label %351, !llvm.loop !59

._crit_edge489.loopexit.unr-lcssa:                ; preds = %351, %.lr.ph488
  %.3486.unr = phi i64 [ 0, %.lr.ph488 ], [ %363, %351 ]
  %lcmp.mod542.not = icmp eq i64 %xtraiter541, 0
  br i1 %lcmp.mod542.not, label %._crit_edge489, label %.epil.preheader540

.epil.preheader540:                               ; preds = %._crit_edge489.loopexit.unr-lcssa, %.epil.preheader540
  %.3486.epil = phi i64 [ %366, %.epil.preheader540 ], [ %.3486.unr, %._crit_edge489.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader540 ], [ 0, %._crit_edge489.loopexit.unr-lcssa ]
  %364 = load ptr, ptr %348, align 8, !tbaa !37
  %365 = getelementptr inbounds i64, ptr %364, i64 %.3486.epil
  store i64 0, ptr %365, align 8, !tbaa !48
  %366 = add nuw nsw i64 %.3486.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter541
  br i1 %epil.iter.cmp.not, label %._crit_edge489, label %.epil.preheader540, !llvm.loop !60

._crit_edge489:                                   ; preds = %._crit_edge489.loopexit.unr-lcssa, %.epil.preheader540, %.loopexit463
  %367 = getelementptr inbounds i8, ptr %0, i64 2128
  %368 = getelementptr inbounds i8, ptr %0, i64 2456
  store i64 %34, ptr %368, align 8, !tbaa !61
  %369 = getelementptr inbounds i8, ptr %0, i64 2464
  store i64 %15, ptr %369, align 8, !tbaa !62
  %370 = getelementptr inbounds i8, ptr %0, i64 2256
  %371 = add nsw i64 %34, 1
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %370, i64 noundef %371, ptr noundef %9)
  %372 = getelementptr inbounds i8, ptr %0, i64 2192
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %372, i64 noundef %15, ptr noundef %9)
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %367, i64 noundef %15, ptr noundef %9)
  %373 = getelementptr inbounds i8, ptr %0, i64 2312
  %374 = load ptr, ptr %373, align 8, !tbaa !37
  store i64 0, ptr %374, align 8, !tbaa !48
  %375 = getelementptr inbounds i8, ptr %0, i64 1760
  %376 = getelementptr inbounds i8, ptr %0, i64 2088
  store i64 %4, ptr %376, align 8, !tbaa !63
  %377 = getelementptr inbounds i8, ptr %0, i64 2096
  store i64 %14, ptr %377, align 8, !tbaa !64
  br i1 %118, label %378, label %.loopexit462

378:                                              ; preds = %._crit_edge489
  %379 = getelementptr inbounds i8, ptr %0, i64 1888
  %380 = add nuw nsw i64 %4, 1
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %379, i64 noundef %380, ptr noundef %9)
  %381 = getelementptr inbounds i8, ptr %0, i64 1824
  %382 = getelementptr inbounds i8, ptr %3, i64 184
  %383 = load ptr, ptr %382, align 8, !tbaa !37
  %384 = getelementptr inbounds i64, ptr %383, i64 %4
  %385 = load i64, ptr %384, align 8, !tbaa !48
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %381, i64 noundef %385, ptr noundef %9)
  %386 = load ptr, ptr %382, align 8, !tbaa !37
  %387 = getelementptr inbounds i64, ptr %386, i64 %4
  %388 = load i64, ptr %387, align 8, !tbaa !48
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %375, i64 noundef %388, ptr noundef %9)
  %389 = getelementptr inbounds i8, ptr %0, i64 1944
  %390 = load ptr, ptr %389, align 8, !tbaa !37
  store i64 0, ptr %390, align 8, !tbaa !48
  %391 = getelementptr inbounds i8, ptr %0, i64 1576
  %392 = getelementptr inbounds i8, ptr %0, i64 1448
  %393 = getelementptr inbounds i8, ptr %0, i64 1512
  %394 = getelementptr inbounds i8, ptr %0, i64 26272
  %395 = getelementptr inbounds i8, ptr %0, i64 2248
  %396 = getelementptr inbounds i8, ptr %0, i64 2184
  %397 = getelementptr inbounds i8, ptr %0, i64 1880
  %398 = getelementptr inbounds i8, ptr %0, i64 1816
  br label %399

399:                                              ; preds = %378, %._crit_edge496
  %.4498 = phi i64 [ 0, %378 ], [ %409, %._crit_edge496 ]
  %400 = load ptr, ptr %389, align 8, !tbaa !37
  %401 = getelementptr inbounds i64, ptr %400, i64 %.4498
  %402 = load i64, ptr %401, align 8, !tbaa !48
  %403 = load ptr, ptr %373, align 8, !tbaa !37
  %404 = getelementptr inbounds i64, ptr %403, i64 %.4498
  %405 = load i64, ptr %404, align 8, !tbaa !48
  %406 = load ptr, ptr %391, align 8, !tbaa !37
  %407 = getelementptr inbounds i64, ptr %406, i64 %.4498
  %408 = load i64, ptr %407, align 8, !tbaa !48
  %409 = add nuw nsw i64 %.4498, 1
  %410 = getelementptr inbounds i64, ptr %406, i64 %409
  %411 = load i64, ptr %410, align 8, !tbaa !48
  %.not.not459490 = icmp slt i64 %408, %411
  br i1 %.not.not459490, label %.lr.ph495, label %._crit_edge496

.lr.ph495:                                        ; preds = %399, %440
  %.0433493 = phi i64 [ %.1434, %440 ], [ %405, %399 ]
  %.0437492 = phi i64 [ %.1438, %440 ], [ %402, %399 ]
  %.2442491 = phi i64 [ %441, %440 ], [ %408, %399 ]
  %412 = load ptr, ptr %392, align 8, !tbaa !37
  %413 = getelementptr inbounds double, ptr %412, i64 %.2442491
  %414 = load double, ptr %413, align 8, !tbaa !38
  %415 = load ptr, ptr %393, align 8, !tbaa !37
  %416 = getelementptr inbounds i64, ptr %415, i64 %.2442491
  %417 = load i64, ptr %416, align 8, !tbaa !48
  %418 = icmp slt i64 %417, %14
  br i1 %418, label %419, label %425

419:                                              ; preds = %.lr.ph495
  %420 = load ptr, ptr %397, align 8, !tbaa !37
  %421 = getelementptr inbounds i64, ptr %420, i64 %.0437492
  store i64 %417, ptr %421, align 8, !tbaa !48
  %422 = load ptr, ptr %398, align 8, !tbaa !37
  %423 = getelementptr inbounds double, ptr %422, i64 %.0437492
  store double %414, ptr %423, align 8, !tbaa !38
  %424 = add nsw i64 %.0437492, 1
  br label %440

425:                                              ; preds = %.lr.ph495
  %426 = load ptr, ptr %394, align 8, !tbaa !37
  %427 = sub nsw i64 %417, %14
  %428 = getelementptr inbounds i64, ptr %426, i64 %427
  %429 = load i64, ptr %428, align 8, !tbaa !48
  %430 = icmp eq i64 %429, 0
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %430, ptr noundef nonnull @.str.606, ptr noundef %9)
  %431 = load ptr, ptr %395, align 8, !tbaa !37
  %432 = getelementptr inbounds i64, ptr %431, i64 %.0433493
  store i64 %427, ptr %432, align 8, !tbaa !48
  %433 = load ptr, ptr %396, align 8, !tbaa !37
  %434 = getelementptr inbounds double, ptr %433, i64 %.0433493
  store double %414, ptr %434, align 8, !tbaa !38
  %435 = load ptr, ptr %394, align 8, !tbaa !37
  %436 = getelementptr inbounds i64, ptr %435, i64 %427
  %437 = load i64, ptr %436, align 8, !tbaa !48
  %438 = add nsw i64 %437, 1
  store i64 %438, ptr %436, align 8, !tbaa !48
  %439 = add nsw i64 %.0433493, 1
  br label %440

440:                                              ; preds = %419, %425
  %.1438 = phi i64 [ %424, %419 ], [ %.0437492, %425 ]
  %.1434 = phi i64 [ %.0433493, %419 ], [ %439, %425 ]
  %441 = add i64 %.2442491, 1
  %exitcond514.not = icmp eq i64 %441, %411
  br i1 %exitcond514.not, label %._crit_edge496.loopexit, label %.lr.ph495, !llvm.loop !65

._crit_edge496.loopexit:                          ; preds = %440
  %.pre = load ptr, ptr %389, align 8, !tbaa !37
  br label %._crit_edge496

._crit_edge496:                                   ; preds = %._crit_edge496.loopexit, %399
  %442 = phi ptr [ %400, %399 ], [ %.pre, %._crit_edge496.loopexit ]
  %.0437.lcssa = phi i64 [ %402, %399 ], [ %.1438, %._crit_edge496.loopexit ]
  %.0433.lcssa = phi i64 [ %405, %399 ], [ %.1434, %._crit_edge496.loopexit ]
  %443 = getelementptr inbounds i64, ptr %442, i64 %409
  store i64 %.0437.lcssa, ptr %443, align 8, !tbaa !48
  %444 = load ptr, ptr %373, align 8, !tbaa !37
  %445 = getelementptr inbounds i64, ptr %444, i64 %409
  store i64 %.0433.lcssa, ptr %445, align 8, !tbaa !48
  %exitcond515.not = icmp eq i64 %409, %4
  br i1 %exitcond515.not, label %.loopexit462, label %399, !llvm.loop !66

.loopexit462:                                     ; preds = %._crit_edge496, %._crit_edge489
  tail call void @_ZN11alglib_impl22sparsecreatecrsinplaceEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef nonnull %375, ptr noundef %9)
  br i1 %122, label %446, label %.loopexit

446:                                              ; preds = %.loopexit462
  %447 = getelementptr inbounds i8, ptr %0, i64 1312
  tail call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %447, i64 noundef %6, i64 noundef %14, ptr noundef %9)
  tail call void @_ZN11alglib_impl11rmatrixcopyEllPKNS_9ae_matrixEllPS0_llPNS_8ae_stateE(i64 noundef %6, i64 noundef %14, ptr noundef nonnull %117, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %447, i64 noundef 0, i64 noundef 0, ptr noundef %9)
  %.not.not458499 = icmp slt i64 %14, %12
  %448 = getelementptr inbounds i8, ptr %0, i64 1304
  %449 = getelementptr inbounds i8, ptr %0, i64 26272
  %450 = getelementptr inbounds i8, ptr %0, i64 2248
  %451 = getelementptr inbounds i8, ptr %0, i64 2184
  br i1 %.not.not458499, label %.lr.ph503.us, label %.split.preheader

.split.preheader:                                 ; preds = %446
  %xtraiter545 = and i64 %6, 3
  %452 = icmp ult i64 %6, 4
  br i1 %452, label %.loopexit.loopexit531.unr-lcssa, label %.split.preheader.new

.split.preheader.new:                             ; preds = %.split.preheader
  %unroll_iter548 = and i64 %6, 9223372036854775804
  br label %.split

.lr.ph503.us:                                     ; preds = %446, %._crit_edge504.us
  %.5506.us = phi i64 [ %489, %._crit_edge504.us ], [ 0, %446 ]
  %453 = load ptr, ptr %373, align 8, !tbaa !37
  %454 = add nsw i64 %.5506.us, %4
  %455 = getelementptr inbounds i64, ptr %453, i64 %454
  %456 = load i64, ptr %455, align 8, !tbaa !48
  br label %457

457:                                              ; preds = %.lr.ph503.us, %484
  %.2435501.us = phi i64 [ %456, %.lr.ph503.us ], [ %.3436.us, %484 ]
  %.0439500.us = phi i64 [ %14, %.lr.ph503.us ], [ %485, %484 ]
  %458 = load ptr, ptr %448, align 8, !tbaa !37
  %459 = getelementptr inbounds ptr, ptr %458, i64 %.5506.us
  %460 = load ptr, ptr %459, align 8, !tbaa !52
  %461 = getelementptr inbounds double, ptr %460, i64 %.0439500.us
  %462 = load double, ptr %461, align 8, !tbaa !38
  %463 = fcmp une double %462, 0.000000e+00
  br i1 %463, label %464, label %484

464:                                              ; preds = %457
  %465 = load ptr, ptr %449, align 8, !tbaa !37
  %466 = sub nsw i64 %.0439500.us, %14
  %467 = getelementptr inbounds i64, ptr %465, i64 %466
  %468 = load i64, ptr %467, align 8, !tbaa !48
  %469 = icmp eq i64 %468, 0
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %469, ptr noundef nonnull @.str.606, ptr noundef %9)
  %470 = load ptr, ptr %450, align 8, !tbaa !37
  %471 = getelementptr inbounds i64, ptr %470, i64 %.2435501.us
  store i64 %466, ptr %471, align 8, !tbaa !48
  %472 = load ptr, ptr %448, align 8, !tbaa !37
  %473 = getelementptr inbounds ptr, ptr %472, i64 %.5506.us
  %474 = load ptr, ptr %473, align 8, !tbaa !52
  %475 = getelementptr inbounds double, ptr %474, i64 %.0439500.us
  %476 = load double, ptr %475, align 8, !tbaa !38
  %477 = load ptr, ptr %451, align 8, !tbaa !37
  %478 = getelementptr inbounds double, ptr %477, i64 %.2435501.us
  store double %476, ptr %478, align 8, !tbaa !38
  %479 = load ptr, ptr %449, align 8, !tbaa !37
  %480 = getelementptr inbounds i64, ptr %479, i64 %466
  %481 = load i64, ptr %480, align 8, !tbaa !48
  %482 = add nsw i64 %481, 1
  store i64 %482, ptr %480, align 8, !tbaa !48
  %483 = add nsw i64 %.2435501.us, 1
  br label %484

484:                                              ; preds = %464, %457
  %.3436.us = phi i64 [ %483, %464 ], [ %.2435501.us, %457 ]
  %485 = add i64 %.0439500.us, 1
  %exitcond517.not = icmp eq i64 %485, %12
  br i1 %exitcond517.not, label %._crit_edge504.us, label %457, !llvm.loop !67

._crit_edge504.us:                                ; preds = %484
  %486 = load ptr, ptr %373, align 8, !tbaa !37
  %487 = getelementptr i64, ptr %486, i64 %454
  %488 = getelementptr i8, ptr %487, i64 8
  store i64 %.3436.us, ptr %488, align 8, !tbaa !48
  %489 = add nuw nsw i64 %.5506.us, 1
  %exitcond518.not = icmp eq i64 %489, %6
  br i1 %exitcond518.not, label %.loopexit, label %.lr.ph503.us, !llvm.loop !68

.split:                                           ; preds = %.split, %.split.preheader.new
  %.5506 = phi i64 [ 0, %.split.preheader.new ], [ %513, %.split ]
  %niter549 = phi i64 [ 0, %.split.preheader.new ], [ %niter549.next.3, %.split ]
  %490 = load ptr, ptr %373, align 8, !tbaa !37
  %491 = getelementptr i64, ptr %490, i64 %.5506
  %492 = getelementptr i64, ptr %491, i64 %4
  %493 = load i64, ptr %492, align 8, !tbaa !48
  %494 = getelementptr i8, ptr %492, i64 8
  store i64 %493, ptr %494, align 8, !tbaa !48
  %495 = or disjoint i64 %.5506, 1
  %496 = load ptr, ptr %373, align 8, !tbaa !37
  %497 = getelementptr i64, ptr %496, i64 %495
  %498 = getelementptr i64, ptr %497, i64 %4
  %499 = load i64, ptr %498, align 8, !tbaa !48
  %500 = getelementptr i8, ptr %498, i64 8
  store i64 %499, ptr %500, align 8, !tbaa !48
  %501 = or disjoint i64 %.5506, 2
  %502 = load ptr, ptr %373, align 8, !tbaa !37
  %503 = getelementptr i64, ptr %502, i64 %501
  %504 = getelementptr i64, ptr %503, i64 %4
  %505 = load i64, ptr %504, align 8, !tbaa !48
  %506 = getelementptr i8, ptr %504, i64 8
  store i64 %505, ptr %506, align 8, !tbaa !48
  %507 = or disjoint i64 %.5506, 3
  %508 = load ptr, ptr %373, align 8, !tbaa !37
  %509 = getelementptr i64, ptr %508, i64 %507
  %510 = getelementptr i64, ptr %509, i64 %4
  %511 = load i64, ptr %510, align 8, !tbaa !48
  %512 = getelementptr i8, ptr %510, i64 8
  store i64 %511, ptr %512, align 8, !tbaa !48
  %513 = add nuw nsw i64 %.5506, 4
  %niter549.next.3 = add i64 %niter549, 4
  %niter549.ncmp.3 = icmp eq i64 %niter549.next.3, %unroll_iter548
  br i1 %niter549.ncmp.3, label %.loopexit.loopexit531.unr-lcssa, label %.split, !llvm.loop !68

.loopexit.loopexit531.unr-lcssa:                  ; preds = %.split, %.split.preheader
  %.5506.unr = phi i64 [ 0, %.split.preheader ], [ %513, %.split ]
  %lcmp.mod547.not = icmp eq i64 %xtraiter545, 0
  br i1 %lcmp.mod547.not, label %.loopexit, label %.split.epil

.split.epil:                                      ; preds = %.loopexit.loopexit531.unr-lcssa, %.split.epil
  %.5506.epil = phi i64 [ %519, %.split.epil ], [ %.5506.unr, %.loopexit.loopexit531.unr-lcssa ]
  %epil.iter546 = phi i64 [ %epil.iter546.next, %.split.epil ], [ 0, %.loopexit.loopexit531.unr-lcssa ]
  %514 = load ptr, ptr %373, align 8, !tbaa !37
  %515 = getelementptr i64, ptr %514, i64 %.5506.epil
  %516 = getelementptr i64, ptr %515, i64 %4
  %517 = load i64, ptr %516, align 8, !tbaa !48
  %518 = getelementptr i8, ptr %516, i64 8
  store i64 %517, ptr %518, align 8, !tbaa !48
  %519 = add nuw nsw i64 %.5506.epil, 1
  %epil.iter546.next = add i64 %epil.iter546, 1
  %epil.iter546.cmp.not = icmp eq i64 %epil.iter546.next, %xtraiter545
  br i1 %epil.iter546.cmp.not, label %.loopexit, label %.split.epil, !llvm.loop !69

.loopexit:                                        ; preds = %.loopexit.loopexit531.unr-lcssa, %.split.epil, %._crit_edge504.us, %.loopexit462
  tail call void @_ZN11alglib_impl22sparsecreatecrsinplaceEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef nonnull %367, ptr noundef %9)
  ret void
}

attributes #0 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress 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" }

!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, !10, i64 8}
!6 = !{!"_ZTSN11alglib_impl9vipmstateE", !7, i64 0, !7, i64 1, !10, i64 8, !10, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !7, i64 48, !12, i64 56, !12, i64 120, !12, i64 184, !11, i64 248, !12, i64 256, !15, i64 320, !16, i64 400, !12, i64 768, !10, i64 832, !7, i64 840, !12, i64 848, !12, i64 912, !12, i64 976, !12, i64 1040, !12, i64 1104, !12, i64 1168, !15, i64 1232, !15, i64 1312, !16, i64 1392, !16, i64 1760, !16, i64 2128, !12, i64 2496, !12, i64 2560, !12, i64 2624, !12, i64 2688, !12, i64 2752, !10, i64 2816, !10, i64 2824, !17, i64 2832, !17, i64 3488, !17, i64 4144, !17, i64 4800, !17, i64 5456, !12, i64 6112, !12, i64 6176, !12, i64 6240, !12, i64 6304, !12, i64 6368, !10, i64 6432, !10, i64 6440, !10, i64 6448, !10, i64 6456, !10, i64 6464, !10, i64 6472, !7, i64 6480, !7, i64 6481, !10, i64 6488, !7, i64 6496, !7, i64 6497, !12, i64 6504, !12, i64 6568, !12, i64 6632, !12, i64 6696, !12, i64 6760, !12, i64 6824, !12, i64 6888, !12, i64 6952, !12, i64 7016, !12, i64 7080, !12, i64 7144, !12, i64 7208, !12, i64 7272, !12, i64 7336, !12, i64 7400, !15, i64 7464, !12, i64 7544, !12, i64 7608, !12, i64 7672, !12, i64 7736, !12, i64 7800, !18, i64 7864, !29, i64 23944, !12, i64 24584, !12, i64 24648, !12, i64 24712, !12, i64 24776, !12, i64 24840, !12, i64 24904, !12, i64 24968, !12, i64 25032, !17, i64 25096, !12, i64 25752, !12, i64 25816, !12, i64 25880, !12, i64 25944, !12, i64 26008, !15, i64 26072, !12, i64 26152, !12, i64 26216, !16, i64 26280}
!7 = !{!"bool", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"long", !8, i64 0}
!11 = !{!"double", !8, i64 0}
!12 = !{!"_ZTSN11alglib_impl9ae_vectorE", !10, i64 0, !10, i64 8, !7, i64 16, !13, i64 24, !8, i64 56}
!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_impl9ae_matrixE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !7, i64 32, !13, i64 40, !8, i64 72}
!16 = !{!"_ZTSN11alglib_impl12sparsematrixE", !12, i64 0, !12, i64 64, !12, i64 128, !12, i64 192, !12, i64 256, !10, i64 320, !10, i64 328, !10, i64 336, !10, i64 344, !10, i64 352, !10, i64 360}
!17 = !{!"_ZTSN11alglib_impl8vipmvarsE", !10, i64 0, !10, i64 8, !12, i64 16, !12, i64 80, !12, i64 144, !12, i64 208, !12, i64 272, !12, i64 336, !12, i64 400, !12, i64 464, !12, i64 528, !12, i64 592}
!18 = !{!"_ZTSN11alglib_impl23vipmreducedsparsesystemE", !16, i64 0, !12, i64 368, !12, i64 432, !12, i64 496, !12, i64 560, !10, i64 624, !19, i64 632, !12, i64 15696, !12, i64 15760, !12, i64 15824, !12, i64 15888, !12, i64 15952, !12, i64 16016}
!19 = !{!"_ZTSN11alglib_impl14spcholanalysisE", !10, i64 0, !10, i64 8, !10, i64 16, !7, i64 24, !10, i64 32, !11, i64 40, !11, i64 48, !11, i64 56, !11, i64 64, !12, i64 72, !7, i64 136, !7, i64 137, !7, i64 138, !7, i64 139, !7, i64 140, !12, i64 144, !10, i64 208, !12, i64 216, !12, i64 280, !12, i64 344, !12, i64 408, !12, i64 472, !12, i64 536, !7, i64 600, !12, i64 608, !12, i64 672, !12, i64 736, !12, i64 800, !12, i64 864, !12, i64 928, !7, i64 992, !7, i64 993, !20, i64 1000, !12, i64 1512, !12, i64 1576, !12, i64 1640, !12, i64 1704, !12, i64 1768, !12, i64 1832, !21, i64 1896, !21, i64 2040, !21, i64 2184, !21, i64 2328, !21, i64 2472, !21, i64 2616, !12, i64 2760, !12, i64 2824, !12, i64 2888, !12, i64 2952, !12, i64 3016, !23, i64 3080, !28, i64 7464, !12, i64 13816, !12, i64 13880, !12, i64 13944, !12, i64 14008, !12, i64 14072, !12, i64 14136, !16, i64 14200, !16, i64 14568, !12, i64 14936, !12, i64 15000}
!20 = !{!"_ZTSN11alglib_impl9spcholadjE", !12, i64 0, !12, i64 64, !12, i64 128, !12, i64 192, !12, i64 256, !12, i64 320, !12, i64 384, !12, i64 448}
!21 = !{!"_ZTSN11alglib_impl9ae_nxpoolE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !13, i64 32, !22, i64 64, !13, i64 112}
!22 = !{!"_ZTSN11alglib_impl7ae_lockE", !14, i64 0, !13, i64 8, !7, i64 40}
!23 = !{!"_ZTSN11alglib_impl9amdbufferE", !10, i64 0, !7, i64 8, !7, i64 9, !12, i64 16, !12, i64 80, !12, i64 144, !24, i64 208, !24, i64 568, !24, i64 928, !25, i64 1288, !26, i64 1496, !27, i64 1968, !12, i64 2120, !12, i64 2184, !12, i64 2248, !27, i64 2312, !27, i64 2464, !27, i64 2616, !27, i64 2768, !27, i64 2920, !27, i64 3072, !12, i64 3224, !10, i64 3288, !27, i64 3296, !27, i64 3448, !24, i64 3600, !27, i64 3960, !12, i64 4112, !12, i64 4176, !12, i64 4240, !15, i64 4304}
!24 = !{!"_ZTSN11alglib_impl8amdknsetE", !10, i64 0, !10, i64 8, !12, i64 16, !12, i64 80, !12, i64 144, !12, i64 208, !12, i64 272, !10, i64 336, !10, i64 344, !10, i64 352}
!25 = !{!"_ZTSN11alglib_impl11amdllmatrixE", !10, i64 0, !12, i64 8, !12, i64 72, !12, i64 136, !10, i64 200}
!26 = !{!"_ZTSN11alglib_impl12amdvertexsetE", !10, i64 0, !7, i64 8, !10, i64 16, !12, i64 24, !12, i64 88, !12, i64 152, !12, i64 216, !12, i64 280, !12, i64 344, !12, i64 408}
!27 = !{!"_ZTSN11alglib_impl5nisetE", !10, i64 0, !10, i64 8, !12, i64 16, !12, i64 80, !10, i64 144}
!28 = !{!"_ZTSN11alglib_impl18priorityamdbuffersE", !12, i64 0, !12, i64 64, !23, i64 128, !16, i64 4512, !16, i64 4880, !16, i64 5248, !16, i64 5616, !16, i64 5984}
!29 = !{!"_ZTSN11alglib_impl17vipmrighthandsideE", !12, i64 0, !12, i64 64, !12, i64 128, !12, i64 192, !12, i64 256, !12, i64 320, !12, i64 384, !12, i64 448, !12, i64 512, !12, i64 576}
!30 = !{!6, !10, i64 16}
!31 = !{!16, !10, i64 320}
!32 = !{!16, !10, i64 328}
!33 = !{!16, !10, i64 336}
!34 = !{!12, !10, i64 0}
!35 = !{!6, !7, i64 6497}
!36 = !{!6, !7, i64 6496}
!37 = !{!8, !8, i64 0}
!38 = !{!11, !11, i64 0}
!39 = !{!7, !7, i64 0}
!40 = !{i8 0, i8 2}
!41 = !{}
!42 = distinct !{!42, !43}
!43 = !{!"llvm.loop.mustprogress"}
!44 = !{!45, !11, i64 16}
!45 = !{!"_ZTSN11alglib_impl8ae_stateE", !10, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !14, i64 32, !13, i64 40, !14, i64 72, !46, i64 80, !14, i64 88, !47, i64 96, !14, i64 104, !14, i64 112, !14, i64 120}
!46 = !{!"_ZTSN11alglib_impl13ae_error_typeE", !8, i64 0}
!47 = !{!"long long", !8, i64 0}
!48 = !{!10, !10, i64 0}
!49 = distinct !{!49, !50}
!50 = !{!"llvm.loop.unroll.disable"}
!51 = distinct !{!51, !43}
!52 = !{!14, !14, i64 0}
!53 = distinct !{!53, !43}
!54 = distinct !{!54, !43}
!55 = !{!6, !7, i64 1}
!56 = distinct !{!56, !43}
!57 = !{!6, !10, i64 2816}
!58 = !{!6, !10, i64 2824}
!59 = distinct !{!59, !43}
!60 = distinct !{!60, !50}
!61 = !{!6, !10, i64 2456}
!62 = !{!6, !10, i64 2464}
!63 = !{!6, !10, i64 2088}
!64 = !{!6, !10, i64 2096}
!65 = distinct !{!65, !43}
!66 = distinct !{!66, !43}
!67 = distinct !{!67, !43}
!68 = distinct !{!68, !43}
!69 = distinct !{!69, !50}


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