; 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::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_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%union.anon.0 = type { ptr }
%"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::ipm2state" = type { i64, i64, i64, double, double, double, i64, 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::sparsematrix", %"struct.alglib_impl::ae_vector", i8, double, %"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::sparsematrix", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ipm2vars", %"struct.alglib_impl::ipm2vars", %"struct.alglib_impl::ipm2vars", %"struct.alglib_impl::ipm2vars", %"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::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ipm2righthandside", i64, i64, i8, i8, i8, %"struct.alglib_impl::stimer", %"struct.alglib_impl::stimer", %"struct.alglib_impl::stimer", %"struct.alglib_impl::stimer", %"struct.alglib_impl::stimer", %"struct.alglib_impl::ipm2reducedsystem", %"struct.alglib_impl::ipm2righthandside", %"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::sparsematrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::ipm2vars" = 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::stimer" = type { i64, i64, i8 }
%"struct.alglib_impl::ipm2reducedsystem" = type { %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::ae_vector", %"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::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_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::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::ipm2righthandside" = 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_state" = type { i64, double, double, double, ptr, %"struct.alglib_impl::ae_dyn_block", ptr, i32, ptr, i64, ptr, ptr, ptr }

@.str.589 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.590 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.591 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.593 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.636 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.637 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.638 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.639 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.640 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.641 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.642 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.643 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.644 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.645 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.646 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.647 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.648 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.649 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.650 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.651 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.652 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.653 = external hidden unnamed_addr constant [48 x i8], align 1
@_ZN11alglib_implL20ipm2solver_defipmitsE = external hidden global i64, align 8
@.str.654 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.655 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.656 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.657 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.658 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.659 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.660 = external hidden unnamed_addr constant [38 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_sqrtEdPNS_8ae_stateE(double noundef, ptr noundef) #1

declare noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef, double 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 noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef, double noundef) #1

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

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

declare void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef, double noundef, ptr noundef, ptr noundef) #1

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

declare void @_ZN11alglib_impl5rmulvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef, double noundef, ptr noundef, ptr noundef) #1

declare void @_ZN11alglib_impl5rmulrEldPNS_9ae_matrixElPNS_8ae_stateE(i64 noundef, double noundef, ptr noundef, i64 noundef, ptr noundef) #1

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

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

declare noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext, double noundef, double 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_impl6rgrowvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef) #1

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

declare void @_ZN11alglib_impl13sparsecopybufEPKNS_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_impl6igrowvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef, ptr 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_impl25scaleshiftsparselcinplaceEPKNS_9ae_vectorES2_lPNS_12sparsematrixElPS0_S5_PNS_8ae_stateE(ptr 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_impl20scalesparseqpinplaceEPKNS_9ae_vectorElPNS_12sparsematrixEPNS_9ae_matrixEPS0_lS7_PNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl24normalizesparselcinplaceEPNS_12sparsematrixElPNS_9ae_vectorES3_lbS3_bPNS_8ae_stateE(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
declare dso_local void @_ZN11alglib_impl31normalizesparselcinplaceuniformEPNS_12sparsematrixElPNS_9ae_vectorES3_lS3_bPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, i1 noundef zeroext, ptr noundef) #2

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl8ipm2initEPNS_9ipm2stateEPKNS_9ae_vectorES4_lPKNS_9ae_matrixEPKNS_12sparsematrixElbS7_S4_lS4_dS4_S4_SA_lS7_lS4_S4_bbPNS_8ae_stateE(ptr noundef %0, ptr noundef %1, ptr noundef %2, i64 noundef %3, ptr noundef %4, ptr noundef %5, i64 noundef %6, i1 noundef zeroext %7, ptr noundef %8, ptr noundef %9, i64 noundef %10, ptr noundef %11, double noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, i64 noundef %16, ptr noundef %17, i64 noundef %18, ptr noundef %19, ptr noundef %20, i1 noundef zeroext %21, i1 noundef zeroext %22, ptr noundef %23) #2 {
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca i64, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca i64, align 8
  %32 = alloca i8, align 1
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca i64, align 8
  %36 = alloca ptr, align 8
  %37 = alloca double, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca i64, align 8
  %42 = alloca ptr, align 8
  %43 = alloca i64, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca i8, align 1
  %47 = alloca i8, align 1
  %48 = alloca ptr, align 8
  %49 = alloca i64, align 8
  %50 = alloca i64, align 8
  %51 = alloca i64, align 8
  %52 = alloca i64, align 8
  %53 = alloca i64, align 8
  %54 = alloca i64, align 8
  %55 = alloca i64, align 8
  %56 = alloca i64, align 8
  %57 = alloca double, align 8
  %58 = alloca double, align 8
  %59 = alloca i64, align 8
  %60 = alloca i64, align 8
  store ptr %0, ptr %25, align 8, !tbaa !5
  store ptr %1, ptr %26, align 8, !tbaa !5
  store ptr %2, ptr %27, align 8, !tbaa !5
  store i64 %3, ptr %28, align 8, !tbaa !9
  store ptr %4, ptr %29, align 8, !tbaa !5
  store ptr %5, ptr %30, align 8, !tbaa !5
  store i64 %6, ptr %31, align 8, !tbaa !9
  %61 = zext i1 %7 to i8
  store i8 %61, ptr %32, align 1, !tbaa !11
  store ptr %8, ptr %33, align 8, !tbaa !5
  store ptr %9, ptr %34, align 8, !tbaa !5
  store i64 %10, ptr %35, align 8, !tbaa !9
  store ptr %11, ptr %36, align 8, !tbaa !5
  store double %12, ptr %37, align 8, !tbaa !13
  store ptr %13, ptr %38, align 8, !tbaa !5
  store ptr %14, ptr %39, align 8, !tbaa !5
  store ptr %15, ptr %40, align 8, !tbaa !5
  store i64 %16, ptr %41, align 8, !tbaa !9
  store ptr %17, ptr %42, align 8, !tbaa !5
  store i64 %18, ptr %43, align 8, !tbaa !9
  store ptr %19, ptr %44, align 8, !tbaa !5
  store ptr %20, ptr %45, align 8, !tbaa !5
  %62 = zext i1 %21 to i8
  store i8 %62, ptr %46, align 1, !tbaa !11
  %63 = zext i1 %22 to i8
  store i8 %63, ptr %47, align 1, !tbaa !11
  store ptr %23, ptr %48, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #3
  %64 = load i64, ptr %28, align 8, !tbaa !9
  %65 = icmp sge i64 %64, 1
  %66 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %65, ptr noundef @.str.636, ptr noundef %66)
  %67 = load ptr, ptr %26, align 8, !tbaa !5
  %68 = load i64, ptr %28, align 8, !tbaa !9
  %69 = load ptr, ptr %48, align 8, !tbaa !5
  %70 = call noundef zeroext i1 @_ZN11alglib_impl14isfinitevectorEPKNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %67, i64 noundef %68, ptr noundef %69)
  %71 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %70, ptr noundef @.str.637, ptr noundef %71)
  %72 = load ptr, ptr %27, align 8, !tbaa !5
  %73 = load i64, ptr %28, align 8, !tbaa !9
  %74 = load ptr, ptr %48, align 8, !tbaa !5
  %75 = call noundef zeroext i1 @_ZN11alglib_impl14isfinitevectorEPKNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %72, i64 noundef %73, ptr noundef %74)
  %76 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %75, ptr noundef @.str.638, ptr noundef %76)
  %77 = load i64, ptr %31, align 8, !tbaa !9
  %78 = icmp eq i64 %77, 0
  br i1 %78, label %82, label %79

79:                                               ; preds = %24
  %80 = load i64, ptr %31, align 8, !tbaa !9
  %81 = icmp eq i64 %80, 1
  br label %82

82:                                               ; preds = %79, %24
  %83 = phi i1 [ true, %24 ], [ %81, %79 ]
  %84 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %83, ptr noundef @.str.639, ptr noundef %84)
  %85 = load ptr, ptr %36, align 8, !tbaa !5
  %86 = load i64, ptr %28, align 8, !tbaa !9
  %87 = load ptr, ptr %48, align 8, !tbaa !5
  %88 = call noundef zeroext i1 @_ZN11alglib_impl14isfinitevectorEPKNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %85, i64 noundef %86, ptr noundef %87)
  %89 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %88, ptr noundef @.str.640, ptr noundef %89)
  %90 = load i64, ptr %43, align 8, !tbaa !9
  %91 = icmp sge i64 %90, 0
  %92 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %91, ptr noundef @.str.641, ptr noundef %92)
  %93 = load i64, ptr %41, align 8, !tbaa !9
  %94 = icmp sge i64 %93, 0
  %95 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %94, ptr noundef @.str.642, ptr noundef %95)
  %96 = load ptr, ptr %42, align 8, !tbaa !5
  %97 = load i64, ptr %43, align 8, !tbaa !9
  %98 = load i64, ptr %28, align 8, !tbaa !9
  %99 = load ptr, ptr %48, align 8, !tbaa !5
  %100 = call noundef zeroext i1 @_ZN11alglib_impl20apservisfinitematrixEPKNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %96, i64 noundef %97, i64 noundef %98, ptr noundef %99)
  %101 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %100, ptr noundef @.str.643, ptr noundef %101)
  %102 = load i64, ptr %41, align 8, !tbaa !9
  %103 = icmp eq i64 %102, 0
  br i1 %103, label %109, label %104

104:                                              ; preds = %82
  %105 = load ptr, ptr %40, align 8, !tbaa !5
  %106 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %105, i32 0, i32 5
  %107 = load i64, ptr %106, align 8, !tbaa !15
  %108 = icmp eq i64 %107, 1
  br label %109

109:                                              ; preds = %104, %82
  %110 = phi i1 [ true, %82 ], [ %108, %104 ]
  %111 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %110, ptr noundef @.str.644, ptr noundef %111)
  %112 = load i64, ptr %41, align 8, !tbaa !9
  %113 = icmp eq i64 %112, 0
  br i1 %113, label %128, label %114

114:                                              ; preds = %109
  %115 = load ptr, ptr %40, align 8, !tbaa !5
  %116 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %115, i32 0, i32 6
  %117 = load i64, ptr %116, align 8, !tbaa !19
  %118 = load i64, ptr %41, align 8, !tbaa !9
  %119 = icmp eq i64 %117, %118
  br i1 %119, label %120, label %126

120:                                              ; preds = %114
  %121 = load ptr, ptr %40, align 8, !tbaa !5
  %122 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %121, i32 0, i32 7
  %123 = load i64, ptr %122, align 8, !tbaa !20
  %124 = load i64, ptr %28, align 8, !tbaa !9
  %125 = icmp eq i64 %123, %124
  br label %126

126:                                              ; preds = %120, %114
  %127 = phi i1 [ false, %114 ], [ %125, %120 ]
  br label %128

128:                                              ; preds = %126, %109
  %129 = phi i1 [ true, %109 ], [ %127, %126 ]
  %130 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %129, ptr noundef @.str.645, ptr noundef %130)
  %131 = load ptr, ptr %44, align 8, !tbaa !5
  %132 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %131, i32 0, i32 0
  %133 = load i64, ptr %132, align 8, !tbaa !21
  %134 = load i64, ptr %43, align 8, !tbaa !9
  %135 = load i64, ptr %41, align 8, !tbaa !9
  %136 = add nsw i64 %134, %135
  %137 = icmp sge i64 %133, %136
  %138 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %137, ptr noundef @.str.646, ptr noundef %138)
  %139 = load ptr, ptr %45, align 8, !tbaa !5
  %140 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %139, i32 0, i32 0
  %141 = load i64, ptr %140, align 8, !tbaa !21
  %142 = load i64, ptr %43, align 8, !tbaa !9
  %143 = load i64, ptr %41, align 8, !tbaa !9
  %144 = add nsw i64 %142, %143
  %145 = icmp sge i64 %141, %144
  %146 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %145, ptr noundef @.str.647, ptr noundef %146)
  %147 = load i64, ptr %35, align 8, !tbaa !9
  %148 = icmp sge i64 %147, 0
  %149 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %148, ptr noundef @.str.648, ptr noundef %149)
  %150 = load i64, ptr %35, align 8, !tbaa !9
  %151 = icmp eq i64 %150, 0
  br i1 %151, label %158, label %152

152:                                              ; preds = %128
  %153 = load ptr, ptr %33, align 8, !tbaa !5
  %154 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %153, i32 0, i32 0
  %155 = load i64, ptr %154, align 8, !tbaa !22
  %156 = load i64, ptr %35, align 8, !tbaa !9
  %157 = icmp sge i64 %155, %156
  br label %158

158:                                              ; preds = %152, %128
  %159 = phi i1 [ true, %128 ], [ %157, %152 ]
  %160 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %159, ptr noundef @.str.649, ptr noundef %160)
  %161 = load i64, ptr %35, align 8, !tbaa !9
  %162 = icmp eq i64 %161, 0
  br i1 %162, label %169, label %163

163:                                              ; preds = %158
  %164 = load ptr, ptr %33, align 8, !tbaa !5
  %165 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %164, i32 0, i32 1
  %166 = load i64, ptr %165, align 8, !tbaa !24
  %167 = load i64, ptr %28, align 8, !tbaa !9
  %168 = icmp sge i64 %166, %167
  br label %169

169:                                              ; preds = %163, %158
  %170 = phi i1 [ true, %158 ], [ %168, %163 ]
  %171 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %170, ptr noundef @.str.650, ptr noundef %171)
  %172 = load i64, ptr %35, align 8, !tbaa !9
  %173 = icmp eq i64 %172, 0
  br i1 %173, label %180, label %174

174:                                              ; preds = %169
  %175 = load ptr, ptr %34, align 8, !tbaa !5
  %176 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %175, i32 0, i32 0
  %177 = load i64, ptr %176, align 8, !tbaa !21
  %178 = load i64, ptr %35, align 8, !tbaa !9
  %179 = icmp sge i64 %177, %178
  br label %180

180:                                              ; preds = %174, %169
  %181 = phi i1 [ true, %169 ], [ %179, %174 ]
  %182 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %181, ptr noundef @.str.651, ptr noundef %182)
  store i64 0, ptr %52, align 8, !tbaa !9
  br label %183

183:                                              ; preds = %199, %180
  %184 = load i64, ptr %52, align 8, !tbaa !9
  %185 = load i64, ptr %35, align 8, !tbaa !9
  %186 = sub nsw i64 %185, 1
  %187 = icmp sle i64 %184, %186
  br i1 %187, label %188, label %202

188:                                              ; preds = %183
  %189 = load ptr, ptr %34, align 8, !tbaa !5
  %190 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %189, i32 0, i32 4
  %191 = load ptr, ptr %190, align 8, !tbaa !25
  %192 = load i64, ptr %52, align 8, !tbaa !9
  %193 = getelementptr inbounds double, ptr %191, i64 %192
  %194 = load double, ptr %193, align 8, !tbaa !13
  %195 = load ptr, ptr %48, align 8, !tbaa !5
  %196 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %194, ptr noundef %195)
  %197 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %196, double noundef 1.000000e+00)
  %198 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %197, ptr noundef @.str.652, ptr noundef %198)
  br label %199

199:                                              ; preds = %188
  %200 = load i64, ptr %52, align 8, !tbaa !9
  %201 = add nsw i64 %200, 1
  store i64 %201, ptr %52, align 8, !tbaa !9
  br label %183, !llvm.loop !26

202:                                              ; preds = %183
  %203 = load double, ptr %37, align 8, !tbaa !13
  %204 = load ptr, ptr %48, align 8, !tbaa !5
  %205 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %203, ptr noundef %204)
  br i1 %205, label %206, label %209

206:                                              ; preds = %202
  %207 = load double, ptr %37, align 8, !tbaa !13
  %208 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %207, double noundef 0.000000e+00)
  br label %209

209:                                              ; preds = %206, %202
  %210 = phi i1 [ false, %202 ], [ %208, %206 ]
  %211 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %210, ptr noundef @.str.653, ptr noundef %211)
  %212 = load i64, ptr %28, align 8, !tbaa !9
  %213 = load i64, ptr %35, align 8, !tbaa !9
  %214 = add nsw i64 %212, %213
  %215 = load i64, ptr %41, align 8, !tbaa !9
  %216 = add nsw i64 %214, %215
  %217 = load i64, ptr %43, align 8, !tbaa !9
  %218 = add nsw i64 %216, %217
  store i64 %218, ptr %49, align 8, !tbaa !9
  %219 = load i64, ptr %28, align 8, !tbaa !9
  %220 = load i64, ptr %35, align 8, !tbaa !9
  %221 = add nsw i64 %219, %220
  store i64 %221, ptr %50, align 8, !tbaa !9
  %222 = load i64, ptr %28, align 8, !tbaa !9
  %223 = load ptr, ptr %25, align 8, !tbaa !5
  %224 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %223, i32 0, i32 0
  store i64 %222, ptr %224, align 8, !tbaa !28
  %225 = load i64, ptr %50, align 8, !tbaa !9
  %226 = load ptr, ptr %25, align 8, !tbaa !5
  %227 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %226, i32 0, i32 1
  store i64 %225, ptr %227, align 8, !tbaa !44
  %228 = load i64, ptr %49, align 8, !tbaa !9
  %229 = load ptr, ptr %25, align 8, !tbaa !5
  %230 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %229, i32 0, i32 2
  store i64 %228, ptr %230, align 8, !tbaa !45
  %231 = load ptr, ptr %25, align 8, !tbaa !5
  %232 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %231, i32 0, i32 7
  store i8 0, ptr %232, align 8, !tbaa !46
  %233 = load ptr, ptr %25, align 8, !tbaa !5
  %234 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl11ipm2setcondEPNS_9ipm2stateEdddPNS_8ae_stateE(ptr noundef %233, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, ptr noundef %234)
  %235 = load i64, ptr @_ZN11alglib_implL20ipm2solver_defipmitsE, align 8, !tbaa !9
  %236 = load ptr, ptr %25, align 8, !tbaa !5
  %237 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %236, i32 0, i32 6
  store i64 %235, ptr %237, align 8, !tbaa !47
  %238 = load ptr, ptr %25, align 8, !tbaa !5
  %239 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %238, i32 0, i32 49
  store i64 0, ptr %239, align 8, !tbaa !48
  %240 = load ptr, ptr %25, align 8, !tbaa !5
  %241 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %240, i32 0, i32 50
  store i64 0, ptr %241, align 8, !tbaa !49
  %242 = load ptr, ptr %25, align 8, !tbaa !5
  %243 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %242, i32 0, i32 51
  store i8 0, ptr %243, align 8, !tbaa !50
  %244 = load ptr, ptr %25, align 8, !tbaa !5
  %245 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %244, i32 0, i32 52
  store i8 0, ptr %245, align 1, !tbaa !51
  %246 = load ptr, ptr %25, align 8, !tbaa !5
  %247 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %246, i32 0, i32 53
  store i8 0, ptr %247, align 2, !tbaa !52
  %248 = load i64, ptr %49, align 8, !tbaa !9
  %249 = load ptr, ptr %25, align 8, !tbaa !5
  %250 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %249, i32 0, i32 8
  %251 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %248, double noundef 1.000000e+00, ptr noundef %250, ptr noundef %251)
  %252 = load i64, ptr %49, align 8, !tbaa !9
  %253 = load ptr, ptr %25, align 8, !tbaa !5
  %254 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %253, i32 0, i32 9
  %255 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %252, double noundef 1.000000e+00, ptr noundef %254, ptr noundef %255)
  %256 = load i64, ptr %49, align 8, !tbaa !9
  %257 = load ptr, ptr %25, align 8, !tbaa !5
  %258 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %257, i32 0, i32 10
  %259 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %256, double noundef 0.000000e+00, ptr noundef %258, ptr noundef %259)
  store i64 0, ptr %52, align 8, !tbaa !9
  br label %260

260:                                              ; preds = %311, %209
  %261 = load i64, ptr %52, align 8, !tbaa !9
  %262 = load i64, ptr %28, align 8, !tbaa !9
  %263 = sub nsw i64 %262, 1
  %264 = icmp sle i64 %261, %263
  br i1 %264, label %265, label %314

265:                                              ; preds = %260
  %266 = load ptr, ptr %26, align 8, !tbaa !5
  %267 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %266, i32 0, i32 4
  %268 = load ptr, ptr %267, align 8, !tbaa !25
  %269 = load i64, ptr %52, align 8, !tbaa !9
  %270 = getelementptr inbounds double, ptr %268, i64 %269
  %271 = load double, ptr %270, align 8, !tbaa !13
  %272 = fcmp ogt double %271, 0.000000e+00
  %273 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %272, ptr noundef @.str.654, ptr noundef %273)
  %274 = load ptr, ptr %26, align 8, !tbaa !5
  %275 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %274, i32 0, i32 4
  %276 = load ptr, ptr %275, align 8, !tbaa !25
  %277 = load i64, ptr %52, align 8, !tbaa !9
  %278 = getelementptr inbounds double, ptr %276, i64 %277
  %279 = load double, ptr %278, align 8, !tbaa !13
  %280 = load ptr, ptr %25, align 8, !tbaa !5
  %281 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %280, i32 0, i32 8
  %282 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %281, i32 0, i32 4
  %283 = load ptr, ptr %282, align 8, !tbaa !25
  %284 = load i64, ptr %52, align 8, !tbaa !9
  %285 = getelementptr inbounds double, ptr %283, i64 %284
  store double %279, ptr %285, align 8, !tbaa !13
  %286 = load ptr, ptr %26, align 8, !tbaa !5
  %287 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %286, i32 0, i32 4
  %288 = load ptr, ptr %287, align 8, !tbaa !25
  %289 = load i64, ptr %52, align 8, !tbaa !9
  %290 = getelementptr inbounds double, ptr %288, i64 %289
  %291 = load double, ptr %290, align 8, !tbaa !13
  %292 = fdiv double 1.000000e+00, %291
  %293 = load ptr, ptr %25, align 8, !tbaa !5
  %294 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %293, i32 0, i32 9
  %295 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %294, i32 0, i32 4
  %296 = load ptr, ptr %295, align 8, !tbaa !25
  %297 = load i64, ptr %52, align 8, !tbaa !9
  %298 = getelementptr inbounds double, ptr %296, i64 %297
  store double %292, ptr %298, align 8, !tbaa !13
  %299 = load ptr, ptr %27, align 8, !tbaa !5
  %300 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %299, i32 0, i32 4
  %301 = load ptr, ptr %300, align 8, !tbaa !25
  %302 = load i64, ptr %52, align 8, !tbaa !9
  %303 = getelementptr inbounds double, ptr %301, i64 %302
  %304 = load double, ptr %303, align 8, !tbaa !13
  %305 = load ptr, ptr %25, align 8, !tbaa !5
  %306 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %305, i32 0, i32 10
  %307 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %306, i32 0, i32 4
  %308 = load ptr, ptr %307, align 8, !tbaa !25
  %309 = load i64, ptr %52, align 8, !tbaa !9
  %310 = getelementptr inbounds double, ptr %308, i64 %309
  store double %304, ptr %310, align 8, !tbaa !13
  br label %311

311:                                              ; preds = %265
  %312 = load i64, ptr %52, align 8, !tbaa !9
  %313 = add nsw i64 %312, 1
  store i64 %313, ptr %52, align 8, !tbaa !9
  br label %260, !llvm.loop !53

314:                                              ; preds = %260
  %315 = load i64, ptr %49, align 8, !tbaa !9
  %316 = load ptr, ptr %25, align 8, !tbaa !5
  %317 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %316, i32 0, i32 12
  %318 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %315, double noundef 0.000000e+00, ptr noundef %317, ptr noundef %318)
  %319 = load i64, ptr %28, align 8, !tbaa !9
  %320 = load ptr, ptr %36, align 8, !tbaa !5
  %321 = load ptr, ptr %25, align 8, !tbaa !5
  %322 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %321, i32 0, i32 12
  %323 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %319, ptr noundef %320, ptr noundef %322, ptr noundef %323)
  %324 = load ptr, ptr %25, align 8, !tbaa !5
  %325 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %324, i32 0, i32 71
  %326 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %325, i32 0, i32 5
  store i64 1, ptr %326, align 8, !tbaa !54
  %327 = load i64, ptr %28, align 8, !tbaa !9
  %328 = load ptr, ptr %25, align 8, !tbaa !5
  %329 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %328, i32 0, i32 71
  %330 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %329, i32 0, i32 6
  store i64 %327, ptr %330, align 8, !tbaa !55
  %331 = load i64, ptr %28, align 8, !tbaa !9
  %332 = load ptr, ptr %25, align 8, !tbaa !5
  %333 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %332, i32 0, i32 71
  %334 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %333, i32 0, i32 7
  store i64 %331, ptr %334, align 8, !tbaa !56
  %335 = load i64, ptr %28, align 8, !tbaa !9
  %336 = add nsw i64 %335, 1
  %337 = load ptr, ptr %25, align 8, !tbaa !5
  %338 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %337, i32 0, i32 71
  %339 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %338, i32 0, i32 2
  %340 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl7iallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %336, ptr noundef %339, ptr noundef %340)
  %341 = load i64, ptr %31, align 8, !tbaa !9
  %342 = icmp eq i64 %341, 0
  br i1 %342, label %343, label %605

343:                                              ; preds = %314
  store i64 0, ptr %59, align 8, !tbaa !9
  store i64 0, ptr %52, align 8, !tbaa !9
  br label %344

344:                                              ; preds = %387, %343
  %345 = load i64, ptr %52, align 8, !tbaa !9
  %346 = load i64, ptr %28, align 8, !tbaa !9
  %347 = sub nsw i64 %346, 1
  %348 = icmp sle i64 %345, %347
  br i1 %348, label %349, label %390

349:                                              ; preds = %344
  %350 = load i64, ptr %59, align 8, !tbaa !9
  %351 = add nsw i64 %350, 1
  store i64 %351, ptr %59, align 8, !tbaa !9
  %352 = load i8, ptr %32, align 1, !tbaa !11, !range !57, !noundef !58
  %353 = trunc i8 %352 to i1
  br i1 %353, label %354, label %359

354:                                              ; preds = %349
  %355 = load i64, ptr %52, align 8, !tbaa !9
  %356 = add nsw i64 %355, 1
  store i64 %356, ptr %55, align 8, !tbaa !9
  %357 = load i64, ptr %28, align 8, !tbaa !9
  %358 = sub nsw i64 %357, 1
  store i64 %358, ptr %56, align 8, !tbaa !9
  br label %362

359:                                              ; preds = %349
  store i64 0, ptr %55, align 8, !tbaa !9
  %360 = load i64, ptr %52, align 8, !tbaa !9
  %361 = sub nsw i64 %360, 1
  store i64 %361, ptr %56, align 8, !tbaa !9
  br label %362

362:                                              ; preds = %359, %354
  %363 = load i64, ptr %55, align 8, !tbaa !9
  store i64 %363, ptr %53, align 8, !tbaa !9
  br label %364

364:                                              ; preds = %383, %362
  %365 = load i64, ptr %53, align 8, !tbaa !9
  %366 = load i64, ptr %56, align 8, !tbaa !9
  %367 = icmp sle i64 %365, %366
  br i1 %367, label %368, label %386

368:                                              ; preds = %364
  %369 = load ptr, ptr %29, align 8, !tbaa !5
  %370 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %369, i32 0, i32 6
  %371 = load ptr, ptr %370, align 8, !tbaa !25
  %372 = load i64, ptr %52, align 8, !tbaa !9
  %373 = getelementptr inbounds ptr, ptr %371, i64 %372
  %374 = load ptr, ptr %373, align 8, !tbaa !5
  %375 = load i64, ptr %53, align 8, !tbaa !9
  %376 = getelementptr inbounds double, ptr %374, i64 %375
  %377 = load double, ptr %376, align 8, !tbaa !13
  %378 = fcmp une double %377, 0.000000e+00
  br i1 %378, label %379, label %382

379:                                              ; preds = %368
  %380 = load i64, ptr %59, align 8, !tbaa !9
  %381 = add nsw i64 %380, 1
  store i64 %381, ptr %59, align 8, !tbaa !9
  br label %382

382:                                              ; preds = %379, %368
  br label %383

383:                                              ; preds = %382
  %384 = load i64, ptr %53, align 8, !tbaa !9
  %385 = add nsw i64 %384, 1
  store i64 %385, ptr %53, align 8, !tbaa !9
  br label %364, !llvm.loop !59

386:                                              ; preds = %364
  br label %387

387:                                              ; preds = %386
  %388 = load i64, ptr %52, align 8, !tbaa !9
  %389 = add nsw i64 %388, 1
  store i64 %389, ptr %52, align 8, !tbaa !9
  br label %344, !llvm.loop !60

390:                                              ; preds = %344
  %391 = load i64, ptr %59, align 8, !tbaa !9
  %392 = load i64, ptr %28, align 8, !tbaa !9
  %393 = add nsw i64 %391, %392
  %394 = load ptr, ptr %25, align 8, !tbaa !5
  %395 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %394, i32 0, i32 71
  %396 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %395, i32 0, i32 1
  %397 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl7iallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %393, ptr noundef %396, ptr noundef %397)
  %398 = load i64, ptr %59, align 8, !tbaa !9
  %399 = load i64, ptr %28, align 8, !tbaa !9
  %400 = add nsw i64 %398, %399
  %401 = load ptr, ptr %25, align 8, !tbaa !5
  %402 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %401, i32 0, i32 71
  %403 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %402, i32 0, i32 0
  %404 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %400, ptr noundef %403, ptr noundef %404)
  %405 = load ptr, ptr %25, align 8, !tbaa !5
  %406 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %405, i32 0, i32 71
  %407 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %406, i32 0, i32 2
  %408 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %407, i32 0, i32 4
  %409 = load ptr, ptr %408, align 8, !tbaa !25
  %410 = getelementptr inbounds i64, ptr %409, i64 0
  store i64 0, ptr %410, align 8, !tbaa !9
  store i64 0, ptr %60, align 8, !tbaa !9
  store double 0.000000e+00, ptr %58, align 8, !tbaa !13
  store i64 0, ptr %52, align 8, !tbaa !9
  br label %411

411:                                              ; preds = %572, %390
  %412 = load i64, ptr %52, align 8, !tbaa !9
  %413 = load ptr, ptr %25, align 8, !tbaa !5
  %414 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %413, i32 0, i32 0
  %415 = load i64, ptr %414, align 8, !tbaa !28
  %416 = sub nsw i64 %415, 1
  %417 = icmp sle i64 %412, %416
  br i1 %417, label %418, label %575

418:                                              ; preds = %411
  %419 = load i8, ptr %32, align 1, !tbaa !11, !range !57, !noundef !58
  %420 = trunc i8 %419 to i1
  br i1 %420, label %474, label %421

421:                                              ; preds = %418
  store i64 0, ptr %53, align 8, !tbaa !9
  br label %422

422:                                              ; preds = %470, %421
  %423 = load i64, ptr %53, align 8, !tbaa !9
  %424 = load i64, ptr %52, align 8, !tbaa !9
  %425 = sub nsw i64 %424, 1
  %426 = icmp sle i64 %423, %425
  br i1 %426, label %427, label %473

427:                                              ; preds = %422
  %428 = load ptr, ptr %29, align 8, !tbaa !5
  %429 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %428, i32 0, i32 6
  %430 = load ptr, ptr %429, align 8, !tbaa !25
  %431 = load i64, ptr %52, align 8, !tbaa !9
  %432 = getelementptr inbounds ptr, ptr %430, i64 %431
  %433 = load ptr, ptr %432, align 8, !tbaa !5
  %434 = load i64, ptr %53, align 8, !tbaa !9
  %435 = getelementptr inbounds double, ptr %433, i64 %434
  %436 = load double, ptr %435, align 8, !tbaa !13
  %437 = fcmp une double %436, 0.000000e+00
  br i1 %437, label %438, label %469

438:                                              ; preds = %427
  %439 = load ptr, ptr %29, align 8, !tbaa !5
  %440 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %439, i32 0, i32 6
  %441 = load ptr, ptr %440, align 8, !tbaa !25
  %442 = load i64, ptr %52, align 8, !tbaa !9
  %443 = getelementptr inbounds ptr, ptr %441, i64 %442
  %444 = load ptr, ptr %443, align 8, !tbaa !5
  %445 = load i64, ptr %53, align 8, !tbaa !9
  %446 = getelementptr inbounds double, ptr %444, i64 %445
  %447 = load double, ptr %446, align 8, !tbaa !13
  store double %447, ptr %57, align 8, !tbaa !13
  %448 = load i64, ptr %53, align 8, !tbaa !9
  %449 = load ptr, ptr %25, align 8, !tbaa !5
  %450 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %449, i32 0, i32 71
  %451 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %450, i32 0, i32 1
  %452 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %451, i32 0, i32 4
  %453 = load ptr, ptr %452, align 8, !tbaa !25
  %454 = load i64, ptr %60, align 8, !tbaa !9
  %455 = getelementptr inbounds i64, ptr %453, i64 %454
  store i64 %448, ptr %455, align 8, !tbaa !9
  %456 = load double, ptr %57, align 8, !tbaa !13
  %457 = load ptr, ptr %25, align 8, !tbaa !5
  %458 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %457, i32 0, i32 71
  %459 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %458, i32 0, i32 0
  %460 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %459, i32 0, i32 4
  %461 = load ptr, ptr %460, align 8, !tbaa !25
  %462 = load i64, ptr %60, align 8, !tbaa !9
  %463 = getelementptr inbounds double, ptr %461, i64 %462
  store double %456, ptr %463, align 8, !tbaa !13
  %464 = load double, ptr %58, align 8, !tbaa !13
  %465 = load double, ptr %57, align 8, !tbaa !13
  %466 = fadd double %464, %465
  store double %466, ptr %58, align 8, !tbaa !13
  %467 = load i64, ptr %60, align 8, !tbaa !9
  %468 = add nsw i64 %467, 1
  store i64 %468, ptr %60, align 8, !tbaa !9
  br label %469

469:                                              ; preds = %438, %427
  br label %470

470:                                              ; preds = %469
  %471 = load i64, ptr %53, align 8, !tbaa !9
  %472 = add nsw i64 %471, 1
  store i64 %472, ptr %53, align 8, !tbaa !9
  br label %422, !llvm.loop !61

473:                                              ; preds = %422
  br label %474

474:                                              ; preds = %473, %418
  %475 = load ptr, ptr %29, align 8, !tbaa !5
  %476 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %475, i32 0, i32 6
  %477 = load ptr, ptr %476, align 8, !tbaa !25
  %478 = load i64, ptr %52, align 8, !tbaa !9
  %479 = getelementptr inbounds ptr, ptr %477, i64 %478
  %480 = load ptr, ptr %479, align 8, !tbaa !5
  %481 = load i64, ptr %52, align 8, !tbaa !9
  %482 = getelementptr inbounds double, ptr %480, i64 %481
  %483 = load double, ptr %482, align 8, !tbaa !13
  store double %483, ptr %57, align 8, !tbaa !13
  %484 = load i64, ptr %52, align 8, !tbaa !9
  %485 = load ptr, ptr %25, align 8, !tbaa !5
  %486 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %485, i32 0, i32 71
  %487 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %486, i32 0, i32 1
  %488 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %487, i32 0, i32 4
  %489 = load ptr, ptr %488, align 8, !tbaa !25
  %490 = load i64, ptr %60, align 8, !tbaa !9
  %491 = getelementptr inbounds i64, ptr %489, i64 %490
  store i64 %484, ptr %491, align 8, !tbaa !9
  %492 = load double, ptr %57, align 8, !tbaa !13
  %493 = load ptr, ptr %25, align 8, !tbaa !5
  %494 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %493, i32 0, i32 71
  %495 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %494, i32 0, i32 0
  %496 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %495, i32 0, i32 4
  %497 = load ptr, ptr %496, align 8, !tbaa !25
  %498 = load i64, ptr %60, align 8, !tbaa !9
  %499 = getelementptr inbounds double, ptr %497, i64 %498
  store double %492, ptr %499, align 8, !tbaa !13
  %500 = load double, ptr %58, align 8, !tbaa !13
  %501 = load double, ptr %57, align 8, !tbaa !13
  %502 = fadd double %500, %501
  store double %502, ptr %58, align 8, !tbaa !13
  %503 = load i64, ptr %60, align 8, !tbaa !9
  %504 = add nsw i64 %503, 1
  store i64 %504, ptr %60, align 8, !tbaa !9
  %505 = load i8, ptr %32, align 1, !tbaa !11, !range !57, !noundef !58
  %506 = trunc i8 %505 to i1
  br i1 %506, label %507, label %562

507:                                              ; preds = %474
  %508 = load i64, ptr %52, align 8, !tbaa !9
  %509 = add nsw i64 %508, 1
  store i64 %509, ptr %53, align 8, !tbaa !9
  br label %510

510:                                              ; preds = %558, %507
  %511 = load i64, ptr %53, align 8, !tbaa !9
  %512 = load i64, ptr %28, align 8, !tbaa !9
  %513 = sub nsw i64 %512, 1
  %514 = icmp sle i64 %511, %513
  br i1 %514, label %515, label %561

515:                                              ; preds = %510
  %516 = load ptr, ptr %29, align 8, !tbaa !5
  %517 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %516, i32 0, i32 6
  %518 = load ptr, ptr %517, align 8, !tbaa !25
  %519 = load i64, ptr %52, align 8, !tbaa !9
  %520 = getelementptr inbounds ptr, ptr %518, i64 %519
  %521 = load ptr, ptr %520, align 8, !tbaa !5
  %522 = load i64, ptr %53, align 8, !tbaa !9
  %523 = getelementptr inbounds double, ptr %521, i64 %522
  %524 = load double, ptr %523, align 8, !tbaa !13
  %525 = fcmp une double %524, 0.000000e+00
  br i1 %525, label %526, label %557

526:                                              ; preds = %515
  %527 = load ptr, ptr %29, align 8, !tbaa !5
  %528 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %527, i32 0, i32 6
  %529 = load ptr, ptr %528, align 8, !tbaa !25
  %530 = load i64, ptr %52, align 8, !tbaa !9
  %531 = getelementptr inbounds ptr, ptr %529, i64 %530
  %532 = load ptr, ptr %531, align 8, !tbaa !5
  %533 = load i64, ptr %53, align 8, !tbaa !9
  %534 = getelementptr inbounds double, ptr %532, i64 %533
  %535 = load double, ptr %534, align 8, !tbaa !13
  store double %535, ptr %57, align 8, !tbaa !13
  %536 = load i64, ptr %53, align 8, !tbaa !9
  %537 = load ptr, ptr %25, align 8, !tbaa !5
  %538 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %537, i32 0, i32 71
  %539 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %538, i32 0, i32 1
  %540 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %539, i32 0, i32 4
  %541 = load ptr, ptr %540, align 8, !tbaa !25
  %542 = load i64, ptr %60, align 8, !tbaa !9
  %543 = getelementptr inbounds i64, ptr %541, i64 %542
  store i64 %536, ptr %543, align 8, !tbaa !9
  %544 = load double, ptr %57, align 8, !tbaa !13
  %545 = load ptr, ptr %25, align 8, !tbaa !5
  %546 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %545, i32 0, i32 71
  %547 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %546, i32 0, i32 0
  %548 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %547, i32 0, i32 4
  %549 = load ptr, ptr %548, align 8, !tbaa !25
  %550 = load i64, ptr %60, align 8, !tbaa !9
  %551 = getelementptr inbounds double, ptr %549, i64 %550
  store double %544, ptr %551, align 8, !tbaa !13
  %552 = load double, ptr %58, align 8, !tbaa !13
  %553 = load double, ptr %57, align 8, !tbaa !13
  %554 = fadd double %552, %553
  store double %554, ptr %58, align 8, !tbaa !13
  %555 = load i64, ptr %60, align 8, !tbaa !9
  %556 = add nsw i64 %555, 1
  store i64 %556, ptr %60, align 8, !tbaa !9
  br label %557

557:                                              ; preds = %526, %515
  br label %558

558:                                              ; preds = %557
  %559 = load i64, ptr %53, align 8, !tbaa !9
  %560 = add nsw i64 %559, 1
  store i64 %560, ptr %53, align 8, !tbaa !9
  br label %510, !llvm.loop !62

561:                                              ; preds = %510
  br label %562

562:                                              ; preds = %561, %474
  %563 = load i64, ptr %60, align 8, !tbaa !9
  %564 = load ptr, ptr %25, align 8, !tbaa !5
  %565 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %564, i32 0, i32 71
  %566 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %565, i32 0, i32 2
  %567 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %566, i32 0, i32 4
  %568 = load ptr, ptr %567, align 8, !tbaa !25
  %569 = load i64, ptr %52, align 8, !tbaa !9
  %570 = add nsw i64 %569, 1
  %571 = getelementptr inbounds i64, ptr %568, i64 %570
  store i64 %563, ptr %571, align 8, !tbaa !9
  br label %572

572:                                              ; preds = %562
  %573 = load i64, ptr %52, align 8, !tbaa !9
  %574 = add nsw i64 %573, 1
  store i64 %574, ptr %52, align 8, !tbaa !9
  br label %411, !llvm.loop !63

575:                                              ; preds = %411
  %576 = load double, ptr %58, align 8, !tbaa !13
  %577 = load ptr, ptr %48, align 8, !tbaa !5
  %578 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %576, ptr noundef %577)
  %579 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %578, ptr noundef @.str.591, ptr noundef %579)
  %580 = load i64, ptr %60, align 8, !tbaa !9
  %581 = load i64, ptr %59, align 8, !tbaa !9
  %582 = icmp eq i64 %580, %581
  %583 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %582, ptr noundef @.str.593, ptr noundef %583)
  %584 = load i64, ptr %60, align 8, !tbaa !9
  %585 = load ptr, ptr %25, align 8, !tbaa !5
  %586 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %585, i32 0, i32 71
  %587 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %586, i32 0, i32 0
  %588 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %587, i32 0, i32 0
  %589 = load i64, ptr %588, align 8, !tbaa !64
  %590 = icmp sle i64 %584, %589
  br i1 %590, label %591, label %599

591:                                              ; preds = %575
  %592 = load i64, ptr %60, align 8, !tbaa !9
  %593 = load ptr, ptr %25, align 8, !tbaa !5
  %594 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %593, i32 0, i32 71
  %595 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %594, i32 0, i32 1
  %596 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %595, i32 0, i32 0
  %597 = load i64, ptr %596, align 8, !tbaa !65
  %598 = icmp sle i64 %592, %597
  br label %599

599:                                              ; preds = %591, %575
  %600 = phi i1 [ false, %575 ], [ %598, %591 ]
  %601 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %600, ptr noundef @.str.655, ptr noundef %601)
  %602 = load ptr, ptr %25, align 8, !tbaa !5
  %603 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %602, i32 0, i32 71
  %604 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl22sparsecreatecrsinplaceEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %603, ptr noundef %604)
  br label %605

605:                                              ; preds = %599, %314
  %606 = load i64, ptr %31, align 8, !tbaa !9
  %607 = icmp eq i64 %606, 1
  br i1 %607, label %608, label %882

608:                                              ; preds = %605
  %609 = load ptr, ptr %30, align 8, !tbaa !5
  %610 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %609, i32 0, i32 5
  %611 = load i64, ptr %610, align 8, !tbaa !15
  %612 = icmp eq i64 %611, 1
  %613 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %612, ptr noundef @.str.589, ptr noundef %613)
  %614 = load ptr, ptr %30, align 8, !tbaa !5
  %615 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %614, i32 0, i32 6
  %616 = load i64, ptr %615, align 8, !tbaa !19
  %617 = load i64, ptr %28, align 8, !tbaa !9
  %618 = icmp eq i64 %616, %617
  %619 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %618, ptr noundef @.str.590, ptr noundef %619)
  %620 = load ptr, ptr %30, align 8, !tbaa !5
  %621 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %620, i32 0, i32 7
  %622 = load i64, ptr %621, align 8, !tbaa !20
  %623 = load i64, ptr %28, align 8, !tbaa !9
  %624 = icmp eq i64 %622, %623
  %625 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %624, ptr noundef @.str.590, ptr noundef %625)
  %626 = load ptr, ptr %30, align 8, !tbaa !5
  %627 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %626, i32 0, i32 2
  %628 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %627, i32 0, i32 4
  %629 = load ptr, ptr %628, align 8, !tbaa !25
  %630 = load i64, ptr %28, align 8, !tbaa !9
  %631 = getelementptr inbounds i64, ptr %629, i64 %630
  %632 = load i64, ptr %631, align 8, !tbaa !9
  %633 = load i64, ptr %28, align 8, !tbaa !9
  %634 = add nsw i64 %632, %633
  %635 = load ptr, ptr %25, align 8, !tbaa !5
  %636 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %635, i32 0, i32 71
  %637 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %636, i32 0, i32 1
  %638 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl7iallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %634, ptr noundef %637, ptr noundef %638)
  %639 = load ptr, ptr %30, align 8, !tbaa !5
  %640 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %639, i32 0, i32 2
  %641 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %640, i32 0, i32 4
  %642 = load ptr, ptr %641, align 8, !tbaa !25
  %643 = load i64, ptr %28, align 8, !tbaa !9
  %644 = getelementptr inbounds i64, ptr %642, i64 %643
  %645 = load i64, ptr %644, align 8, !tbaa !9
  %646 = load i64, ptr %28, align 8, !tbaa !9
  %647 = add nsw i64 %645, %646
  %648 = load ptr, ptr %25, align 8, !tbaa !5
  %649 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %648, i32 0, i32 71
  %650 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %649, i32 0, i32 0
  %651 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %647, ptr noundef %650, ptr noundef %651)
  %652 = load ptr, ptr %25, align 8, !tbaa !5
  %653 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %652, i32 0, i32 71
  %654 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %653, i32 0, i32 2
  %655 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %654, i32 0, i32 4
  %656 = load ptr, ptr %655, align 8, !tbaa !25
  %657 = getelementptr inbounds i64, ptr %656, i64 0
  store i64 0, ptr %657, align 8, !tbaa !9
  store i64 0, ptr %60, align 8, !tbaa !9
  store double 0.000000e+00, ptr %58, align 8, !tbaa !13
  store i64 0, ptr %52, align 8, !tbaa !9
  br label %658

658:                                              ; preds = %853, %608
  %659 = load i64, ptr %52, align 8, !tbaa !9
  %660 = load ptr, ptr %25, align 8, !tbaa !5
  %661 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %660, i32 0, i32 0
  %662 = load i64, ptr %661, align 8, !tbaa !28
  %663 = sub nsw i64 %662, 1
  %664 = icmp sle i64 %659, %663
  br i1 %664, label %665, label %856

665:                                              ; preds = %658
  %666 = load i8, ptr %32, align 1, !tbaa !11, !range !57, !noundef !58
  %667 = trunc i8 %666 to i1
  br i1 %667, label %728, label %668

668:                                              ; preds = %665
  %669 = load ptr, ptr %30, align 8, !tbaa !5
  %670 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %669, i32 0, i32 2
  %671 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %670, i32 0, i32 4
  %672 = load ptr, ptr %671, align 8, !tbaa !25
  %673 = load i64, ptr %52, align 8, !tbaa !9
  %674 = getelementptr inbounds i64, ptr %672, i64 %673
  %675 = load i64, ptr %674, align 8, !tbaa !9
  store i64 %675, ptr %55, align 8, !tbaa !9
  %676 = load ptr, ptr %30, align 8, !tbaa !5
  %677 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %676, i32 0, i32 3
  %678 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %677, i32 0, i32 4
  %679 = load ptr, ptr %678, align 8, !tbaa !25
  %680 = load i64, ptr %52, align 8, !tbaa !9
  %681 = getelementptr inbounds i64, ptr %679, i64 %680
  %682 = load i64, ptr %681, align 8, !tbaa !9
  %683 = sub nsw i64 %682, 1
  store i64 %683, ptr %56, align 8, !tbaa !9
  %684 = load i64, ptr %55, align 8, !tbaa !9
  store i64 %684, ptr %54, align 8, !tbaa !9
  br label %685

685:                                              ; preds = %724, %668
  %686 = load i64, ptr %54, align 8, !tbaa !9
  %687 = load i64, ptr %56, align 8, !tbaa !9
  %688 = icmp sle i64 %686, %687
  br i1 %688, label %689, label %727

689:                                              ; preds = %685
  %690 = load ptr, ptr %30, align 8, !tbaa !5
  %691 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %690, i32 0, i32 0
  %692 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %691, i32 0, i32 4
  %693 = load ptr, ptr %692, align 8, !tbaa !25
  %694 = load i64, ptr %54, align 8, !tbaa !9
  %695 = getelementptr inbounds double, ptr %693, i64 %694
  %696 = load double, ptr %695, align 8, !tbaa !13
  store double %696, ptr %57, align 8, !tbaa !13
  %697 = load ptr, ptr %30, align 8, !tbaa !5
  %698 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %697, i32 0, i32 1
  %699 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %698, i32 0, i32 4
  %700 = load ptr, ptr %699, align 8, !tbaa !25
  %701 = load i64, ptr %54, align 8, !tbaa !9
  %702 = getelementptr inbounds i64, ptr %700, i64 %701
  %703 = load i64, ptr %702, align 8, !tbaa !9
  %704 = load ptr, ptr %25, align 8, !tbaa !5
  %705 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %704, i32 0, i32 71
  %706 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %705, i32 0, i32 1
  %707 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %706, i32 0, i32 4
  %708 = load ptr, ptr %707, align 8, !tbaa !25
  %709 = load i64, ptr %60, align 8, !tbaa !9
  %710 = getelementptr inbounds i64, ptr %708, i64 %709
  store i64 %703, ptr %710, align 8, !tbaa !9
  %711 = load double, ptr %57, align 8, !tbaa !13
  %712 = load ptr, ptr %25, align 8, !tbaa !5
  %713 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %712, i32 0, i32 71
  %714 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %713, i32 0, i32 0
  %715 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %714, i32 0, i32 4
  %716 = load ptr, ptr %715, align 8, !tbaa !25
  %717 = load i64, ptr %60, align 8, !tbaa !9
  %718 = getelementptr inbounds double, ptr %716, i64 %717
  store double %711, ptr %718, align 8, !tbaa !13
  %719 = load double, ptr %58, align 8, !tbaa !13
  %720 = load double, ptr %57, align 8, !tbaa !13
  %721 = fadd double %719, %720
  store double %721, ptr %58, align 8, !tbaa !13
  %722 = load i64, ptr %60, align 8, !tbaa !9
  %723 = add nsw i64 %722, 1
  store i64 %723, ptr %60, align 8, !tbaa !9
  br label %724

724:                                              ; preds = %689
  %725 = load i64, ptr %54, align 8, !tbaa !9
  %726 = add nsw i64 %725, 1
  store i64 %726, ptr %54, align 8, !tbaa !9
  br label %685, !llvm.loop !66

727:                                              ; preds = %685
  br label %728

728:                                              ; preds = %727, %665
  store double 0.000000e+00, ptr %57, align 8, !tbaa !13
  %729 = load ptr, ptr %30, align 8, !tbaa !5
  %730 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %729, i32 0, i32 4
  %731 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %730, i32 0, i32 4
  %732 = load ptr, ptr %731, align 8, !tbaa !25
  %733 = load i64, ptr %52, align 8, !tbaa !9
  %734 = getelementptr inbounds i64, ptr %732, i64 %733
  %735 = load i64, ptr %734, align 8, !tbaa !9
  %736 = load ptr, ptr %30, align 8, !tbaa !5
  %737 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %736, i32 0, i32 3
  %738 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %737, i32 0, i32 4
  %739 = load ptr, ptr %738, align 8, !tbaa !25
  %740 = load i64, ptr %52, align 8, !tbaa !9
  %741 = getelementptr inbounds i64, ptr %739, i64 %740
  %742 = load i64, ptr %741, align 8, !tbaa !9
  %743 = icmp ne i64 %735, %742
  br i1 %743, label %744, label %758

744:                                              ; preds = %728
  %745 = load ptr, ptr %30, align 8, !tbaa !5
  %746 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %745, i32 0, i32 0
  %747 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %746, i32 0, i32 4
  %748 = load ptr, ptr %747, align 8, !tbaa !25
  %749 = load ptr, ptr %30, align 8, !tbaa !5
  %750 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %749, i32 0, i32 3
  %751 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %750, i32 0, i32 4
  %752 = load ptr, ptr %751, align 8, !tbaa !25
  %753 = load i64, ptr %52, align 8, !tbaa !9
  %754 = getelementptr inbounds i64, ptr %752, i64 %753
  %755 = load i64, ptr %754, align 8, !tbaa !9
  %756 = getelementptr inbounds double, ptr %748, i64 %755
  %757 = load double, ptr %756, align 8, !tbaa !13
  store double %757, ptr %57, align 8, !tbaa !13
  br label %758

758:                                              ; preds = %744, %728
  %759 = load i64, ptr %52, align 8, !tbaa !9
  %760 = load ptr, ptr %25, align 8, !tbaa !5
  %761 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %760, i32 0, i32 71
  %762 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %761, i32 0, i32 1
  %763 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %762, i32 0, i32 4
  %764 = load ptr, ptr %763, align 8, !tbaa !25
  %765 = load i64, ptr %60, align 8, !tbaa !9
  %766 = getelementptr inbounds i64, ptr %764, i64 %765
  store i64 %759, ptr %766, align 8, !tbaa !9
  %767 = load double, ptr %57, align 8, !tbaa !13
  %768 = load ptr, ptr %25, align 8, !tbaa !5
  %769 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %768, i32 0, i32 71
  %770 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %769, i32 0, i32 0
  %771 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %770, i32 0, i32 4
  %772 = load ptr, ptr %771, align 8, !tbaa !25
  %773 = load i64, ptr %60, align 8, !tbaa !9
  %774 = getelementptr inbounds double, ptr %772, i64 %773
  store double %767, ptr %774, align 8, !tbaa !13
  %775 = load double, ptr %58, align 8, !tbaa !13
  %776 = load double, ptr %57, align 8, !tbaa !13
  %777 = fadd double %775, %776
  store double %777, ptr %58, align 8, !tbaa !13
  %778 = load i64, ptr %60, align 8, !tbaa !9
  %779 = add nsw i64 %778, 1
  store i64 %779, ptr %60, align 8, !tbaa !9
  %780 = load i8, ptr %32, align 1, !tbaa !11, !range !57, !noundef !58
  %781 = trunc i8 %780 to i1
  br i1 %781, label %782, label %843

782:                                              ; preds = %758
  %783 = load ptr, ptr %30, align 8, !tbaa !5
  %784 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %783, i32 0, i32 4
  %785 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %784, i32 0, i32 4
  %786 = load ptr, ptr %785, align 8, !tbaa !25
  %787 = load i64, ptr %52, align 8, !tbaa !9
  %788 = getelementptr inbounds i64, ptr %786, i64 %787
  %789 = load i64, ptr %788, align 8, !tbaa !9
  store i64 %789, ptr %55, align 8, !tbaa !9
  %790 = load ptr, ptr %30, align 8, !tbaa !5
  %791 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %790, i32 0, i32 2
  %792 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %791, i32 0, i32 4
  %793 = load ptr, ptr %792, align 8, !tbaa !25
  %794 = load i64, ptr %52, align 8, !tbaa !9
  %795 = add nsw i64 %794, 1
  %796 = getelementptr inbounds i64, ptr %793, i64 %795
  %797 = load i64, ptr %796, align 8, !tbaa !9
  %798 = sub nsw i64 %797, 1
  store i64 %798, ptr %56, align 8, !tbaa !9
  %799 = load i64, ptr %55, align 8, !tbaa !9
  store i64 %799, ptr %54, align 8, !tbaa !9
  br label %800

800:                                              ; preds = %839, %782
  %801 = load i64, ptr %54, align 8, !tbaa !9
  %802 = load i64, ptr %56, align 8, !tbaa !9
  %803 = icmp sle i64 %801, %802
  br i1 %803, label %804, label %842

804:                                              ; preds = %800
  %805 = load ptr, ptr %30, align 8, !tbaa !5
  %806 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %805, i32 0, i32 0
  %807 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %806, i32 0, i32 4
  %808 = load ptr, ptr %807, align 8, !tbaa !25
  %809 = load i64, ptr %54, align 8, !tbaa !9
  %810 = getelementptr inbounds double, ptr %808, i64 %809
  %811 = load double, ptr %810, align 8, !tbaa !13
  store double %811, ptr %57, align 8, !tbaa !13
  %812 = load ptr, ptr %30, align 8, !tbaa !5
  %813 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %812, i32 0, i32 1
  %814 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %813, i32 0, i32 4
  %815 = load ptr, ptr %814, align 8, !tbaa !25
  %816 = load i64, ptr %54, align 8, !tbaa !9
  %817 = getelementptr inbounds i64, ptr %815, i64 %816
  %818 = load i64, ptr %817, align 8, !tbaa !9
  %819 = load ptr, ptr %25, align 8, !tbaa !5
  %820 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %819, i32 0, i32 71
  %821 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %820, i32 0, i32 1
  %822 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %821, i32 0, i32 4
  %823 = load ptr, ptr %822, align 8, !tbaa !25
  %824 = load i64, ptr %60, align 8, !tbaa !9
  %825 = getelementptr inbounds i64, ptr %823, i64 %824
  store i64 %818, ptr %825, align 8, !tbaa !9
  %826 = load double, ptr %57, align 8, !tbaa !13
  %827 = load ptr, ptr %25, align 8, !tbaa !5
  %828 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %827, i32 0, i32 71
  %829 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %828, i32 0, i32 0
  %830 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %829, i32 0, i32 4
  %831 = load ptr, ptr %830, align 8, !tbaa !25
  %832 = load i64, ptr %60, align 8, !tbaa !9
  %833 = getelementptr inbounds double, ptr %831, i64 %832
  store double %826, ptr %833, align 8, !tbaa !13
  %834 = load double, ptr %58, align 8, !tbaa !13
  %835 = load double, ptr %57, align 8, !tbaa !13
  %836 = fadd double %834, %835
  store double %836, ptr %58, align 8, !tbaa !13
  %837 = load i64, ptr %60, align 8, !tbaa !9
  %838 = add nsw i64 %837, 1
  store i64 %838, ptr %60, align 8, !tbaa !9
  br label %839

839:                                              ; preds = %804
  %840 = load i64, ptr %54, align 8, !tbaa !9
  %841 = add nsw i64 %840, 1
  store i64 %841, ptr %54, align 8, !tbaa !9
  br label %800, !llvm.loop !67

842:                                              ; preds = %800
  br label %843

843:                                              ; preds = %842, %758
  %844 = load i64, ptr %60, align 8, !tbaa !9
  %845 = load ptr, ptr %25, align 8, !tbaa !5
  %846 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %845, i32 0, i32 71
  %847 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %846, i32 0, i32 2
  %848 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %847, i32 0, i32 4
  %849 = load ptr, ptr %848, align 8, !tbaa !25
  %850 = load i64, ptr %52, align 8, !tbaa !9
  %851 = add nsw i64 %850, 1
  %852 = getelementptr inbounds i64, ptr %849, i64 %851
  store i64 %844, ptr %852, align 8, !tbaa !9
  br label %853

853:                                              ; preds = %843
  %854 = load i64, ptr %52, align 8, !tbaa !9
  %855 = add nsw i64 %854, 1
  store i64 %855, ptr %52, align 8, !tbaa !9
  br label %658, !llvm.loop !68

856:                                              ; preds = %658
  %857 = load double, ptr %58, align 8, !tbaa !13
  %858 = load ptr, ptr %48, align 8, !tbaa !5
  %859 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %857, ptr noundef %858)
  %860 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %859, ptr noundef @.str.656, ptr noundef %860)
  %861 = load i64, ptr %60, align 8, !tbaa !9
  %862 = load ptr, ptr %25, align 8, !tbaa !5
  %863 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %862, i32 0, i32 71
  %864 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %863, i32 0, i32 0
  %865 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %864, i32 0, i32 0
  %866 = load i64, ptr %865, align 8, !tbaa !64
  %867 = icmp sle i64 %861, %866
  br i1 %867, label %868, label %876

868:                                              ; preds = %856
  %869 = load i64, ptr %60, align 8, !tbaa !9
  %870 = load ptr, ptr %25, align 8, !tbaa !5
  %871 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %870, i32 0, i32 71
  %872 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %871, i32 0, i32 1
  %873 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %872, i32 0, i32 0
  %874 = load i64, ptr %873, align 8, !tbaa !65
  %875 = icmp sle i64 %869, %874
  br label %876

876:                                              ; preds = %868, %856
  %877 = phi i1 [ false, %856 ], [ %875, %868 ]
  %878 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %877, ptr noundef @.str.655, ptr noundef %878)
  %879 = load ptr, ptr %25, align 8, !tbaa !5
  %880 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %879, i32 0, i32 71
  %881 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl22sparsecreatecrsinplaceEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %880, ptr noundef %881)
  br label %882

882:                                              ; preds = %876, %605
  %883 = load i8, ptr %32, align 1, !tbaa !11, !range !57, !noundef !58
  %884 = trunc i8 %883 to i1
  br i1 %884, label %885, label %896

885:                                              ; preds = %882
  %886 = load ptr, ptr %25, align 8, !tbaa !5
  %887 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %886, i32 0, i32 71
  %888 = load ptr, ptr %25, align 8, !tbaa !5
  %889 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %888, i32 0, i32 70
  %890 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl25sparsecopytransposecrsbufEPKNS_12sparsematrixEPS0_PNS_8ae_stateE(ptr noundef %887, ptr noundef %889, ptr noundef %890)
  %891 = load ptr, ptr %25, align 8, !tbaa !5
  %892 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %891, i32 0, i32 70
  %893 = load ptr, ptr %25, align 8, !tbaa !5
  %894 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %893, i32 0, i32 71
  %895 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl13sparsecopybufEPKNS_12sparsematrixEPS0_PNS_8ae_stateE(ptr noundef %892, ptr noundef %894, ptr noundef %895)
  br label %896

896:                                              ; preds = %885, %882
  %897 = load i64, ptr %35, align 8, !tbaa !9
  %898 = icmp sgt i64 %897, 0
  br i1 %898, label %899, label %933

899:                                              ; preds = %896
  store i64 0, ptr %52, align 8, !tbaa !9
  br label %900

900:                                              ; preds = %916, %899
  %901 = load i64, ptr %52, align 8, !tbaa !9
  %902 = load i64, ptr %35, align 8, !tbaa !9
  %903 = sub nsw i64 %902, 1
  %904 = icmp sle i64 %901, %903
  br i1 %904, label %905, label %919

905:                                              ; preds = %900
  %906 = load ptr, ptr %34, align 8, !tbaa !5
  %907 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %906, i32 0, i32 4
  %908 = load ptr, ptr %907, align 8, !tbaa !25
  %909 = load i64, ptr %52, align 8, !tbaa !9
  %910 = getelementptr inbounds double, ptr %908, i64 %909
  %911 = load double, ptr %910, align 8, !tbaa !13
  %912 = load ptr, ptr %48, align 8, !tbaa !5
  %913 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %911, ptr noundef %912)
  %914 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %913, double noundef 1.000000e+00)
  %915 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %914, ptr noundef @.str.657, ptr noundef %915)
  br label %916

916:                                              ; preds = %905
  %917 = load i64, ptr %52, align 8, !tbaa !9
  %918 = add nsw i64 %917, 1
  store i64 %918, ptr %52, align 8, !tbaa !9
  br label %900, !llvm.loop !69

919:                                              ; preds = %900
  %920 = load i64, ptr %35, align 8, !tbaa !9
  %921 = load ptr, ptr %25, align 8, !tbaa !5
  %922 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %921, i32 0, i32 0
  %923 = load i64, ptr %922, align 8, !tbaa !28
  %924 = load ptr, ptr %33, align 8, !tbaa !5
  %925 = load ptr, ptr %25, align 8, !tbaa !5
  %926 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %925, i32 0, i32 72
  %927 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rcopyallocmEllPKNS_9ae_matrixEPS0_PNS_8ae_stateE(i64 noundef %920, i64 noundef %923, ptr noundef %924, ptr noundef %926, ptr noundef %927)
  %928 = load i64, ptr %35, align 8, !tbaa !9
  %929 = load ptr, ptr %34, align 8, !tbaa !5
  %930 = load ptr, ptr %25, align 8, !tbaa !5
  %931 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %930, i32 0, i32 73
  %932 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %928, ptr noundef %929, ptr noundef %931, ptr noundef %932)
  br label %933

933:                                              ; preds = %919, %896
  %934 = load ptr, ptr %25, align 8, !tbaa !5
  %935 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %934, i32 0, i32 8
  %936 = load ptr, ptr %25, align 8, !tbaa !5
  %937 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %936, i32 0, i32 0
  %938 = load i64, ptr %937, align 8, !tbaa !28
  %939 = load ptr, ptr %25, align 8, !tbaa !5
  %940 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %939, i32 0, i32 71
  %941 = load ptr, ptr %25, align 8, !tbaa !5
  %942 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %941, i32 0, i32 72
  %943 = load ptr, ptr %25, align 8, !tbaa !5
  %944 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %943, i32 0, i32 73
  %945 = load i64, ptr %35, align 8, !tbaa !9
  %946 = load ptr, ptr %25, align 8, !tbaa !5
  %947 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %946, i32 0, i32 12
  %948 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl20scalesparseqpinplaceEPKNS_9ae_vectorElPNS_12sparsematrixEPNS_9ae_matrixEPS0_lS7_PNS_8ae_stateE(ptr noundef %935, i64 noundef %938, ptr noundef %940, ptr noundef %942, ptr noundef %944, i64 noundef %945, ptr noundef %947, ptr noundef %948)
  %949 = load i8, ptr %47, align 1, !tbaa !11, !range !57, !noundef !58
  %950 = trunc i8 %949 to i1
  br i1 %950, label %1025, label %951

951:                                              ; preds = %933
  %952 = load double, ptr %37, align 8, !tbaa !13
  %953 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %952, double noundef 0.000000e+00)
  br i1 %953, label %954, label %978

954:                                              ; preds = %951
  %955 = load ptr, ptr %25, align 8, !tbaa !5
  %956 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %955, i32 0, i32 71
  %957 = load ptr, ptr %25, align 8, !tbaa !5
  %958 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %957, i32 0, i32 72
  %959 = load ptr, ptr %25, align 8, !tbaa !5
  %960 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %959, i32 0, i32 73
  %961 = load i64, ptr %35, align 8, !tbaa !9
  %962 = load ptr, ptr %25, align 8, !tbaa !5
  %963 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %962, i32 0, i32 12
  %964 = load ptr, ptr %25, align 8, !tbaa !5
  %965 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %964, i32 0, i32 0
  %966 = load i64, ptr %965, align 8, !tbaa !28
  %967 = load ptr, ptr %48, align 8, !tbaa !5
  %968 = call noundef double @_ZN11alglib_impl24normalizesparseqpinplaceEPNS_12sparsematrixEbPNS_9ae_matrixEPNS_9ae_vectorElS5_lPNS_8ae_stateE(ptr noundef %956, i1 noundef zeroext false, ptr noundef %958, ptr noundef %960, i64 noundef %961, ptr noundef %963, i64 noundef %966, ptr noundef %967)
  %969 = load ptr, ptr %25, align 8, !tbaa !5
  %970 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %969, i32 0, i32 11
  store double %968, ptr %970, align 8, !tbaa !70
  %971 = load ptr, ptr %25, align 8, !tbaa !5
  %972 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %971, i32 0, i32 11
  %973 = load double, ptr %972, align 8, !tbaa !70
  %974 = load ptr, ptr %48, align 8, !tbaa !5
  %975 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %973, double noundef 1.000000e+00, ptr noundef %974)
  %976 = load ptr, ptr %25, align 8, !tbaa !5
  %977 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %976, i32 0, i32 11
  store double %975, ptr %977, align 8, !tbaa !70
  br label %1024

978:                                              ; preds = %951
  %979 = load double, ptr %37, align 8, !tbaa !13
  %980 = fdiv double 1.000000e+00, %979
  store double %980, ptr %57, align 8, !tbaa !13
  %981 = load ptr, ptr %25, align 8, !tbaa !5
  %982 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %981, i32 0, i32 71
  %983 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %982, i32 0, i32 2
  %984 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %983, i32 0, i32 4
  %985 = load ptr, ptr %984, align 8, !tbaa !25
  %986 = load ptr, ptr %25, align 8, !tbaa !5
  %987 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %986, i32 0, i32 0
  %988 = load i64, ptr %987, align 8, !tbaa !28
  %989 = getelementptr inbounds i64, ptr %985, i64 %988
  %990 = load i64, ptr %989, align 8, !tbaa !9
  %991 = load double, ptr %57, align 8, !tbaa !13
  %992 = load ptr, ptr %25, align 8, !tbaa !5
  %993 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %992, i32 0, i32 71
  %994 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %993, i32 0, i32 0
  %995 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl5rmulvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %990, double noundef %991, ptr noundef %994, ptr noundef %995)
  %996 = load i64, ptr %49, align 8, !tbaa !9
  %997 = load double, ptr %57, align 8, !tbaa !13
  %998 = load ptr, ptr %25, align 8, !tbaa !5
  %999 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %998, i32 0, i32 12
  %1000 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl5rmulvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %996, double noundef %997, ptr noundef %999, ptr noundef %1000)
  store i64 0, ptr %54, align 8, !tbaa !9
  br label %1001

1001:                                             ; preds = %1017, %978
  %1002 = load i64, ptr %54, align 8, !tbaa !9
  %1003 = load i64, ptr %35, align 8, !tbaa !9
  %1004 = sub nsw i64 %1003, 1
  %1005 = icmp sle i64 %1002, %1004
  br i1 %1005, label %1006, label %1020

1006:                                             ; preds = %1001
  %1007 = load ptr, ptr %25, align 8, !tbaa !5
  %1008 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1007, i32 0, i32 0
  %1009 = load i64, ptr %1008, align 8, !tbaa !28
  %1010 = load double, ptr %57, align 8, !tbaa !13
  %1011 = load ptr, ptr %48, align 8, !tbaa !5
  %1012 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %1010, ptr noundef %1011)
  %1013 = load ptr, ptr %25, align 8, !tbaa !5
  %1014 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1013, i32 0, i32 72
  %1015 = load i64, ptr %54, align 8, !tbaa !9
  %1016 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl5rmulrEldPNS_9ae_matrixElPNS_8ae_stateE(i64 noundef %1009, double noundef %1012, ptr noundef %1014, i64 noundef %1015, ptr noundef %1016)
  br label %1017

1017:                                             ; preds = %1006
  %1018 = load i64, ptr %54, align 8, !tbaa !9
  %1019 = add nsw i64 %1018, 1
  store i64 %1019, ptr %54, align 8, !tbaa !9
  br label %1001, !llvm.loop !71

1020:                                             ; preds = %1001
  %1021 = load double, ptr %37, align 8, !tbaa !13
  %1022 = load ptr, ptr %25, align 8, !tbaa !5
  %1023 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1022, i32 0, i32 11
  store double %1021, ptr %1023, align 8, !tbaa !70
  br label %1024

1024:                                             ; preds = %1020, %954
  br label %1028

1025:                                             ; preds = %933
  %1026 = load ptr, ptr %25, align 8, !tbaa !5
  %1027 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1026, i32 0, i32 11
  store double 1.000000e+00, ptr %1027, align 8, !tbaa !70
  br label %1028

1028:                                             ; preds = %1025, %1024
  %1029 = load ptr, ptr %25, align 8, !tbaa !5
  %1030 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1029, i32 0, i32 13
  %1031 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1030, i32 0, i32 5
  store i64 1, ptr %1031, align 8, !tbaa !72
  %1032 = load i64, ptr %49, align 8, !tbaa !9
  %1033 = load ptr, ptr %25, align 8, !tbaa !5
  %1034 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1033, i32 0, i32 13
  %1035 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1034, i32 0, i32 6
  store i64 %1032, ptr %1035, align 8, !tbaa !73
  %1036 = load i64, ptr %49, align 8, !tbaa !9
  %1037 = load ptr, ptr %25, align 8, !tbaa !5
  %1038 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1037, i32 0, i32 13
  %1039 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1038, i32 0, i32 7
  store i64 %1036, ptr %1039, align 8, !tbaa !74
  %1040 = load i64, ptr %49, align 8, !tbaa !9
  %1041 = add nsw i64 %1040, 1
  %1042 = load ptr, ptr %25, align 8, !tbaa !5
  %1043 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1042, i32 0, i32 13
  %1044 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1043, i32 0, i32 2
  %1045 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl7iallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1041, ptr noundef %1044, ptr noundef %1045)
  %1046 = load ptr, ptr %25, align 8, !tbaa !5
  %1047 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1046, i32 0, i32 71
  %1048 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1047, i32 0, i32 5
  %1049 = load i64, ptr %1048, align 8, !tbaa !54
  %1050 = icmp eq i64 %1049, 1
  %1051 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1050, ptr noundef @.str.589, ptr noundef %1051)
  %1052 = load ptr, ptr %25, align 8, !tbaa !5
  %1053 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1052, i32 0, i32 71
  %1054 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1053, i32 0, i32 6
  %1055 = load i64, ptr %1054, align 8, !tbaa !55
  %1056 = load i64, ptr %28, align 8, !tbaa !9
  %1057 = icmp eq i64 %1055, %1056
  %1058 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1057, ptr noundef @.str.590, ptr noundef %1058)
  %1059 = load ptr, ptr %25, align 8, !tbaa !5
  %1060 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1059, i32 0, i32 71
  %1061 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1060, i32 0, i32 7
  %1062 = load i64, ptr %1061, align 8, !tbaa !56
  %1063 = load i64, ptr %28, align 8, !tbaa !9
  %1064 = icmp eq i64 %1062, %1063
  %1065 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1064, ptr noundef @.str.590, ptr noundef %1065)
  %1066 = load ptr, ptr %25, align 8, !tbaa !5
  %1067 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1066, i32 0, i32 71
  %1068 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1067, i32 0, i32 2
  %1069 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1068, i32 0, i32 4
  %1070 = load ptr, ptr %1069, align 8, !tbaa !25
  %1071 = load i64, ptr %28, align 8, !tbaa !9
  %1072 = getelementptr inbounds i64, ptr %1070, i64 %1071
  %1073 = load i64, ptr %1072, align 8, !tbaa !9
  %1074 = load i64, ptr %35, align 8, !tbaa !9
  %1075 = load i64, ptr %28, align 8, !tbaa !9
  %1076 = add nsw i64 %1075, 1
  %1077 = mul nsw i64 %1074, %1076
  %1078 = add nsw i64 %1073, %1077
  %1079 = load ptr, ptr %25, align 8, !tbaa !5
  %1080 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1079, i32 0, i32 2
  %1081 = load i64, ptr %1080, align 8, !tbaa !45
  %1082 = load i64, ptr %28, align 8, !tbaa !9
  %1083 = sub nsw i64 %1081, %1082
  %1084 = add nsw i64 %1078, %1083
  %1085 = load ptr, ptr %25, align 8, !tbaa !5
  %1086 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1085, i32 0, i32 13
  %1087 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1086, i32 0, i32 1
  %1088 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl7iallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1084, ptr noundef %1087, ptr noundef %1088)
  %1089 = load ptr, ptr %25, align 8, !tbaa !5
  %1090 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1089, i32 0, i32 71
  %1091 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1090, i32 0, i32 2
  %1092 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1091, i32 0, i32 4
  %1093 = load ptr, ptr %1092, align 8, !tbaa !25
  %1094 = load i64, ptr %28, align 8, !tbaa !9
  %1095 = getelementptr inbounds i64, ptr %1093, i64 %1094
  %1096 = load i64, ptr %1095, align 8, !tbaa !9
  %1097 = load i64, ptr %35, align 8, !tbaa !9
  %1098 = load i64, ptr %28, align 8, !tbaa !9
  %1099 = add nsw i64 %1098, 1
  %1100 = mul nsw i64 %1097, %1099
  %1101 = add nsw i64 %1096, %1100
  %1102 = load ptr, ptr %25, align 8, !tbaa !5
  %1103 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1102, i32 0, i32 2
  %1104 = load i64, ptr %1103, align 8, !tbaa !45
  %1105 = load i64, ptr %28, align 8, !tbaa !9
  %1106 = sub nsw i64 %1104, %1105
  %1107 = add nsw i64 %1101, %1106
  %1108 = load ptr, ptr %25, align 8, !tbaa !5
  %1109 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1108, i32 0, i32 13
  %1110 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1109, i32 0, i32 0
  %1111 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1107, ptr noundef %1110, ptr noundef %1111)
  %1112 = load ptr, ptr %25, align 8, !tbaa !5
  %1113 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1112, i32 0, i32 13
  %1114 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1113, i32 0, i32 2
  %1115 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1114, i32 0, i32 4
  %1116 = load ptr, ptr %1115, align 8, !tbaa !25
  %1117 = getelementptr inbounds i64, ptr %1116, i64 0
  store i64 0, ptr %1117, align 8, !tbaa !9
  store i64 0, ptr %60, align 8, !tbaa !9
  store double 0.000000e+00, ptr %58, align 8, !tbaa !13
  store i64 0, ptr %52, align 8, !tbaa !9
  br label %1118

1118:                                             ; preds = %1253, %1028
  %1119 = load i64, ptr %52, align 8, !tbaa !9
  %1120 = load ptr, ptr %25, align 8, !tbaa !5
  %1121 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1120, i32 0, i32 0
  %1122 = load i64, ptr %1121, align 8, !tbaa !28
  %1123 = sub nsw i64 %1122, 1
  %1124 = icmp sle i64 %1119, %1123
  br i1 %1124, label %1125, label %1256

1125:                                             ; preds = %1118
  %1126 = load ptr, ptr %25, align 8, !tbaa !5
  %1127 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1126, i32 0, i32 71
  %1128 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1127, i32 0, i32 2
  %1129 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1128, i32 0, i32 4
  %1130 = load ptr, ptr %1129, align 8, !tbaa !25
  %1131 = load i64, ptr %52, align 8, !tbaa !9
  %1132 = getelementptr inbounds i64, ptr %1130, i64 %1131
  %1133 = load i64, ptr %1132, align 8, !tbaa !9
  store i64 %1133, ptr %55, align 8, !tbaa !9
  %1134 = load ptr, ptr %25, align 8, !tbaa !5
  %1135 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1134, i32 0, i32 71
  %1136 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1135, i32 0, i32 3
  %1137 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1136, i32 0, i32 4
  %1138 = load ptr, ptr %1137, align 8, !tbaa !25
  %1139 = load i64, ptr %52, align 8, !tbaa !9
  %1140 = getelementptr inbounds i64, ptr %1138, i64 %1139
  %1141 = load i64, ptr %1140, align 8, !tbaa !9
  %1142 = sub nsw i64 %1141, 1
  store i64 %1142, ptr %56, align 8, !tbaa !9
  %1143 = load i64, ptr %55, align 8, !tbaa !9
  store i64 %1143, ptr %54, align 8, !tbaa !9
  br label %1144

1144:                                             ; preds = %1185, %1125
  %1145 = load i64, ptr %54, align 8, !tbaa !9
  %1146 = load i64, ptr %56, align 8, !tbaa !9
  %1147 = icmp sle i64 %1145, %1146
  br i1 %1147, label %1148, label %1188

1148:                                             ; preds = %1144
  %1149 = load ptr, ptr %25, align 8, !tbaa !5
  %1150 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1149, i32 0, i32 71
  %1151 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1150, i32 0, i32 0
  %1152 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1151, i32 0, i32 4
  %1153 = load ptr, ptr %1152, align 8, !tbaa !25
  %1154 = load i64, ptr %54, align 8, !tbaa !9
  %1155 = getelementptr inbounds double, ptr %1153, i64 %1154
  %1156 = load double, ptr %1155, align 8, !tbaa !13
  store double %1156, ptr %57, align 8, !tbaa !13
  %1157 = load ptr, ptr %25, align 8, !tbaa !5
  %1158 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1157, i32 0, i32 71
  %1159 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1158, i32 0, i32 1
  %1160 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1159, i32 0, i32 4
  %1161 = load ptr, ptr %1160, align 8, !tbaa !25
  %1162 = load i64, ptr %54, align 8, !tbaa !9
  %1163 = getelementptr inbounds i64, ptr %1161, i64 %1162
  %1164 = load i64, ptr %1163, align 8, !tbaa !9
  %1165 = load ptr, ptr %25, align 8, !tbaa !5
  %1166 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1165, i32 0, i32 13
  %1167 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1166, i32 0, i32 1
  %1168 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1167, i32 0, i32 4
  %1169 = load ptr, ptr %1168, align 8, !tbaa !25
  %1170 = load i64, ptr %60, align 8, !tbaa !9
  %1171 = getelementptr inbounds i64, ptr %1169, i64 %1170
  store i64 %1164, ptr %1171, align 8, !tbaa !9
  %1172 = load double, ptr %57, align 8, !tbaa !13
  %1173 = load ptr, ptr %25, align 8, !tbaa !5
  %1174 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1173, i32 0, i32 13
  %1175 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1174, i32 0, i32 0
  %1176 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1175, i32 0, i32 4
  %1177 = load ptr, ptr %1176, align 8, !tbaa !25
  %1178 = load i64, ptr %60, align 8, !tbaa !9
  %1179 = getelementptr inbounds double, ptr %1177, i64 %1178
  store double %1172, ptr %1179, align 8, !tbaa !13
  %1180 = load double, ptr %58, align 8, !tbaa !13
  %1181 = load double, ptr %57, align 8, !tbaa !13
  %1182 = fadd double %1180, %1181
  store double %1182, ptr %58, align 8, !tbaa !13
  %1183 = load i64, ptr %60, align 8, !tbaa !9
  %1184 = add nsw i64 %1183, 1
  store i64 %1184, ptr %60, align 8, !tbaa !9
  br label %1185

1185:                                             ; preds = %1148
  %1186 = load i64, ptr %54, align 8, !tbaa !9
  %1187 = add nsw i64 %1186, 1
  store i64 %1187, ptr %54, align 8, !tbaa !9
  br label %1144, !llvm.loop !75

1188:                                             ; preds = %1144
  store double 0.000000e+00, ptr %57, align 8, !tbaa !13
  %1189 = load ptr, ptr %25, align 8, !tbaa !5
  %1190 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1189, i32 0, i32 71
  %1191 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1190, i32 0, i32 4
  %1192 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1191, i32 0, i32 4
  %1193 = load ptr, ptr %1192, align 8, !tbaa !25
  %1194 = load i64, ptr %52, align 8, !tbaa !9
  %1195 = getelementptr inbounds i64, ptr %1193, i64 %1194
  %1196 = load i64, ptr %1195, align 8, !tbaa !9
  %1197 = load ptr, ptr %25, align 8, !tbaa !5
  %1198 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1197, i32 0, i32 71
  %1199 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1198, i32 0, i32 3
  %1200 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1199, i32 0, i32 4
  %1201 = load ptr, ptr %1200, align 8, !tbaa !25
  %1202 = load i64, ptr %52, align 8, !tbaa !9
  %1203 = getelementptr inbounds i64, ptr %1201, i64 %1202
  %1204 = load i64, ptr %1203, align 8, !tbaa !9
  %1205 = icmp ne i64 %1196, %1204
  br i1 %1205, label %1206, label %1222

1206:                                             ; preds = %1188
  %1207 = load ptr, ptr %25, align 8, !tbaa !5
  %1208 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1207, i32 0, i32 71
  %1209 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1208, i32 0, i32 0
  %1210 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1209, i32 0, i32 4
  %1211 = load ptr, ptr %1210, align 8, !tbaa !25
  %1212 = load ptr, ptr %25, align 8, !tbaa !5
  %1213 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1212, i32 0, i32 71
  %1214 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1213, i32 0, i32 3
  %1215 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1214, i32 0, i32 4
  %1216 = load ptr, ptr %1215, align 8, !tbaa !25
  %1217 = load i64, ptr %52, align 8, !tbaa !9
  %1218 = getelementptr inbounds i64, ptr %1216, i64 %1217
  %1219 = load i64, ptr %1218, align 8, !tbaa !9
  %1220 = getelementptr inbounds double, ptr %1211, i64 %1219
  %1221 = load double, ptr %1220, align 8, !tbaa !13
  store double %1221, ptr %57, align 8, !tbaa !13
  br label %1222

1222:                                             ; preds = %1206, %1188
  %1223 = load i64, ptr %52, align 8, !tbaa !9
  %1224 = load ptr, ptr %25, align 8, !tbaa !5
  %1225 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1224, i32 0, i32 13
  %1226 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1225, i32 0, i32 1
  %1227 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1226, i32 0, i32 4
  %1228 = load ptr, ptr %1227, align 8, !tbaa !25
  %1229 = load i64, ptr %60, align 8, !tbaa !9
  %1230 = getelementptr inbounds i64, ptr %1228, i64 %1229
  store i64 %1223, ptr %1230, align 8, !tbaa !9
  %1231 = load double, ptr %57, align 8, !tbaa !13
  %1232 = load ptr, ptr %25, align 8, !tbaa !5
  %1233 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1232, i32 0, i32 13
  %1234 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1233, i32 0, i32 0
  %1235 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1234, i32 0, i32 4
  %1236 = load ptr, ptr %1235, align 8, !tbaa !25
  %1237 = load i64, ptr %60, align 8, !tbaa !9
  %1238 = getelementptr inbounds double, ptr %1236, i64 %1237
  store double %1231, ptr %1238, align 8, !tbaa !13
  %1239 = load double, ptr %58, align 8, !tbaa !13
  %1240 = load double, ptr %57, align 8, !tbaa !13
  %1241 = fadd double %1239, %1240
  store double %1241, ptr %58, align 8, !tbaa !13
  %1242 = load i64, ptr %60, align 8, !tbaa !9
  %1243 = add nsw i64 %1242, 1
  store i64 %1243, ptr %60, align 8, !tbaa !9
  %1244 = load i64, ptr %60, align 8, !tbaa !9
  %1245 = load ptr, ptr %25, align 8, !tbaa !5
  %1246 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1245, i32 0, i32 13
  %1247 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1246, i32 0, i32 2
  %1248 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1247, i32 0, i32 4
  %1249 = load ptr, ptr %1248, align 8, !tbaa !25
  %1250 = load i64, ptr %52, align 8, !tbaa !9
  %1251 = add nsw i64 %1250, 1
  %1252 = getelementptr inbounds i64, ptr %1249, i64 %1251
  store i64 %1244, ptr %1252, align 8, !tbaa !9
  br label %1253

1253:                                             ; preds = %1222
  %1254 = load i64, ptr %52, align 8, !tbaa !9
  %1255 = add nsw i64 %1254, 1
  store i64 %1255, ptr %52, align 8, !tbaa !9
  br label %1118, !llvm.loop !76

1256:                                             ; preds = %1118
  %1257 = load double, ptr %58, align 8, !tbaa !13
  %1258 = load ptr, ptr %48, align 8, !tbaa !5
  %1259 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %1257, ptr noundef %1258)
  %1260 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1259, ptr noundef @.str.656, ptr noundef %1260)
  %1261 = load ptr, ptr %25, align 8, !tbaa !5
  %1262 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1261, i32 0, i32 0
  %1263 = load i64, ptr %1262, align 8, !tbaa !28
  store i64 %1263, ptr %52, align 8, !tbaa !9
  br label %1264

1264:                                             ; preds = %1376, %1256
  %1265 = load i64, ptr %52, align 8, !tbaa !9
  %1266 = load ptr, ptr %25, align 8, !tbaa !5
  %1267 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1266, i32 0, i32 1
  %1268 = load i64, ptr %1267, align 8, !tbaa !44
  %1269 = sub nsw i64 %1268, 1
  %1270 = icmp sle i64 %1265, %1269
  br i1 %1270, label %1271, label %1379

1271:                                             ; preds = %1264
  %1272 = load ptr, ptr %25, align 8, !tbaa !5
  %1273 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1272, i32 0, i32 13
  %1274 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1273, i32 0, i32 2
  %1275 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1274, i32 0, i32 4
  %1276 = load ptr, ptr %1275, align 8, !tbaa !25
  %1277 = load i64, ptr %52, align 8, !tbaa !9
  %1278 = getelementptr inbounds i64, ptr %1276, i64 %1277
  %1279 = load i64, ptr %1278, align 8, !tbaa !9
  store i64 %1279, ptr %60, align 8, !tbaa !9
  store i64 0, ptr %53, align 8, !tbaa !9
  br label %1280

1280:                                             ; preds = %1334, %1271
  %1281 = load i64, ptr %53, align 8, !tbaa !9
  %1282 = load i64, ptr %28, align 8, !tbaa !9
  %1283 = sub nsw i64 %1282, 1
  %1284 = icmp sle i64 %1281, %1283
  br i1 %1284, label %1285, label %1337

1285:                                             ; preds = %1280
  %1286 = load ptr, ptr %25, align 8, !tbaa !5
  %1287 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1286, i32 0, i32 72
  %1288 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1287, i32 0, i32 6
  %1289 = load ptr, ptr %1288, align 8, !tbaa !25
  %1290 = load i64, ptr %52, align 8, !tbaa !9
  %1291 = load ptr, ptr %25, align 8, !tbaa !5
  %1292 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1291, i32 0, i32 0
  %1293 = load i64, ptr %1292, align 8, !tbaa !28
  %1294 = sub nsw i64 %1290, %1293
  %1295 = getelementptr inbounds ptr, ptr %1289, i64 %1294
  %1296 = load ptr, ptr %1295, align 8, !tbaa !5
  %1297 = load i64, ptr %53, align 8, !tbaa !9
  %1298 = getelementptr inbounds double, ptr %1296, i64 %1297
  %1299 = load double, ptr %1298, align 8, !tbaa !13
  %1300 = fcmp une double %1299, 0.000000e+00
  br i1 %1300, label %1301, label %1333

1301:                                             ; preds = %1285
  %1302 = load i64, ptr %53, align 8, !tbaa !9
  %1303 = load ptr, ptr %25, align 8, !tbaa !5
  %1304 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1303, i32 0, i32 13
  %1305 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1304, i32 0, i32 1
  %1306 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1305, i32 0, i32 4
  %1307 = load ptr, ptr %1306, align 8, !tbaa !25
  %1308 = load i64, ptr %60, align 8, !tbaa !9
  %1309 = getelementptr inbounds i64, ptr %1307, i64 %1308
  store i64 %1302, ptr %1309, align 8, !tbaa !9
  %1310 = load ptr, ptr %25, align 8, !tbaa !5
  %1311 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1310, i32 0, i32 72
  %1312 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1311, i32 0, i32 6
  %1313 = load ptr, ptr %1312, align 8, !tbaa !25
  %1314 = load i64, ptr %52, align 8, !tbaa !9
  %1315 = load ptr, ptr %25, align 8, !tbaa !5
  %1316 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1315, i32 0, i32 0
  %1317 = load i64, ptr %1316, align 8, !tbaa !28
  %1318 = sub nsw i64 %1314, %1317
  %1319 = getelementptr inbounds ptr, ptr %1313, i64 %1318
  %1320 = load ptr, ptr %1319, align 8, !tbaa !5
  %1321 = load i64, ptr %53, align 8, !tbaa !9
  %1322 = getelementptr inbounds double, ptr %1320, i64 %1321
  %1323 = load double, ptr %1322, align 8, !tbaa !13
  %1324 = load ptr, ptr %25, align 8, !tbaa !5
  %1325 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1324, i32 0, i32 13
  %1326 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1325, i32 0, i32 0
  %1327 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1326, i32 0, i32 4
  %1328 = load ptr, ptr %1327, align 8, !tbaa !25
  %1329 = load i64, ptr %60, align 8, !tbaa !9
  %1330 = getelementptr inbounds double, ptr %1328, i64 %1329
  store double %1323, ptr %1330, align 8, !tbaa !13
  %1331 = load i64, ptr %60, align 8, !tbaa !9
  %1332 = add nsw i64 %1331, 1
  store i64 %1332, ptr %60, align 8, !tbaa !9
  br label %1333

1333:                                             ; preds = %1301, %1285
  br label %1334

1334:                                             ; preds = %1333
  %1335 = load i64, ptr %53, align 8, !tbaa !9
  %1336 = add nsw i64 %1335, 1
  store i64 %1336, ptr %53, align 8, !tbaa !9
  br label %1280, !llvm.loop !77

1337:                                             ; preds = %1280
  %1338 = load i64, ptr %52, align 8, !tbaa !9
  %1339 = load ptr, ptr %25, align 8, !tbaa !5
  %1340 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1339, i32 0, i32 13
  %1341 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1340, i32 0, i32 1
  %1342 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1341, i32 0, i32 4
  %1343 = load ptr, ptr %1342, align 8, !tbaa !25
  %1344 = load i64, ptr %60, align 8, !tbaa !9
  %1345 = getelementptr inbounds i64, ptr %1343, i64 %1344
  store i64 %1338, ptr %1345, align 8, !tbaa !9
  %1346 = load ptr, ptr %25, align 8, !tbaa !5
  %1347 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1346, i32 0, i32 73
  %1348 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1347, i32 0, i32 4
  %1349 = load ptr, ptr %1348, align 8, !tbaa !25
  %1350 = load i64, ptr %52, align 8, !tbaa !9
  %1351 = load ptr, ptr %25, align 8, !tbaa !5
  %1352 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1351, i32 0, i32 0
  %1353 = load i64, ptr %1352, align 8, !tbaa !28
  %1354 = sub nsw i64 %1350, %1353
  %1355 = getelementptr inbounds double, ptr %1349, i64 %1354
  %1356 = load double, ptr %1355, align 8, !tbaa !13
  %1357 = fneg double %1356
  %1358 = load ptr, ptr %25, align 8, !tbaa !5
  %1359 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1358, i32 0, i32 13
  %1360 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1359, i32 0, i32 0
  %1361 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1360, i32 0, i32 4
  %1362 = load ptr, ptr %1361, align 8, !tbaa !25
  %1363 = load i64, ptr %60, align 8, !tbaa !9
  %1364 = getelementptr inbounds double, ptr %1362, i64 %1363
  store double %1357, ptr %1364, align 8, !tbaa !13
  %1365 = load i64, ptr %60, align 8, !tbaa !9
  %1366 = add nsw i64 %1365, 1
  store i64 %1366, ptr %60, align 8, !tbaa !9
  %1367 = load i64, ptr %60, align 8, !tbaa !9
  %1368 = load ptr, ptr %25, align 8, !tbaa !5
  %1369 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1368, i32 0, i32 13
  %1370 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1369, i32 0, i32 2
  %1371 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1370, i32 0, i32 4
  %1372 = load ptr, ptr %1371, align 8, !tbaa !25
  %1373 = load i64, ptr %52, align 8, !tbaa !9
  %1374 = add nsw i64 %1373, 1
  %1375 = getelementptr inbounds i64, ptr %1372, i64 %1374
  store i64 %1367, ptr %1375, align 8, !tbaa !9
  br label %1376

1376:                                             ; preds = %1337
  %1377 = load i64, ptr %52, align 8, !tbaa !9
  %1378 = add nsw i64 %1377, 1
  store i64 %1378, ptr %52, align 8, !tbaa !9
  br label %1264, !llvm.loop !78

1379:                                             ; preds = %1264
  %1380 = load ptr, ptr %25, align 8, !tbaa !5
  %1381 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1380, i32 0, i32 1
  %1382 = load i64, ptr %1381, align 8, !tbaa !44
  store i64 %1382, ptr %52, align 8, !tbaa !9
  br label %1383

1383:                                             ; preds = %1417, %1379
  %1384 = load i64, ptr %52, align 8, !tbaa !9
  %1385 = load ptr, ptr %25, align 8, !tbaa !5
  %1386 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1385, i32 0, i32 2
  %1387 = load i64, ptr %1386, align 8, !tbaa !45
  %1388 = sub nsw i64 %1387, 1
  %1389 = icmp sle i64 %1384, %1388
  br i1 %1389, label %1390, label %1420

1390:                                             ; preds = %1383
  %1391 = load i64, ptr %52, align 8, !tbaa !9
  %1392 = load ptr, ptr %25, align 8, !tbaa !5
  %1393 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1392, i32 0, i32 13
  %1394 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1393, i32 0, i32 1
  %1395 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1394, i32 0, i32 4
  %1396 = load ptr, ptr %1395, align 8, !tbaa !25
  %1397 = load i64, ptr %60, align 8, !tbaa !9
  %1398 = getelementptr inbounds i64, ptr %1396, i64 %1397
  store i64 %1391, ptr %1398, align 8, !tbaa !9
  %1399 = load ptr, ptr %25, align 8, !tbaa !5
  %1400 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1399, i32 0, i32 13
  %1401 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1400, i32 0, i32 0
  %1402 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1401, i32 0, i32 4
  %1403 = load ptr, ptr %1402, align 8, !tbaa !25
  %1404 = load i64, ptr %60, align 8, !tbaa !9
  %1405 = getelementptr inbounds double, ptr %1403, i64 %1404
  store double 0.000000e+00, ptr %1405, align 8, !tbaa !13
  %1406 = load i64, ptr %60, align 8, !tbaa !9
  %1407 = add nsw i64 %1406, 1
  store i64 %1407, ptr %60, align 8, !tbaa !9
  %1408 = load i64, ptr %60, align 8, !tbaa !9
  %1409 = load ptr, ptr %25, align 8, !tbaa !5
  %1410 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1409, i32 0, i32 13
  %1411 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1410, i32 0, i32 2
  %1412 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1411, i32 0, i32 4
  %1413 = load ptr, ptr %1412, align 8, !tbaa !25
  %1414 = load i64, ptr %52, align 8, !tbaa !9
  %1415 = add nsw i64 %1414, 1
  %1416 = getelementptr inbounds i64, ptr %1413, i64 %1415
  store i64 %1408, ptr %1416, align 8, !tbaa !9
  br label %1417

1417:                                             ; preds = %1390
  %1418 = load i64, ptr %52, align 8, !tbaa !9
  %1419 = add nsw i64 %1418, 1
  store i64 %1419, ptr %52, align 8, !tbaa !9
  br label %1383, !llvm.loop !79

1420:                                             ; preds = %1383
  %1421 = load i64, ptr %60, align 8, !tbaa !9
  %1422 = load ptr, ptr %25, align 8, !tbaa !5
  %1423 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1422, i32 0, i32 13
  %1424 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1423, i32 0, i32 0
  %1425 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1424, i32 0, i32 0
  %1426 = load i64, ptr %1425, align 8, !tbaa !80
  %1427 = icmp sle i64 %1421, %1426
  br i1 %1427, label %1428, label %1436

1428:                                             ; preds = %1420
  %1429 = load i64, ptr %60, align 8, !tbaa !9
  %1430 = load ptr, ptr %25, align 8, !tbaa !5
  %1431 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1430, i32 0, i32 13
  %1432 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1431, i32 0, i32 1
  %1433 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1432, i32 0, i32 0
  %1434 = load i64, ptr %1433, align 8, !tbaa !81
  %1435 = icmp sle i64 %1429, %1434
  br label %1436

1436:                                             ; preds = %1428, %1420
  %1437 = phi i1 [ false, %1420 ], [ %1435, %1428 ]
  %1438 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1437, ptr noundef @.str.655, ptr noundef %1438)
  %1439 = load ptr, ptr %25, align 8, !tbaa !5
  %1440 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1439, i32 0, i32 13
  %1441 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl22sparsecreatecrsinplaceEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %1440, ptr noundef %1441)
  %1442 = load ptr, ptr %25, align 8, !tbaa !5
  %1443 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1442, i32 0, i32 13
  %1444 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1443, i32 0, i32 2
  %1445 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1444, i32 0, i32 4
  %1446 = load ptr, ptr %1445, align 8, !tbaa !25
  %1447 = load ptr, ptr %25, align 8, !tbaa !5
  %1448 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1447, i32 0, i32 2
  %1449 = load i64, ptr %1448, align 8, !tbaa !45
  %1450 = getelementptr inbounds i64, ptr %1446, i64 %1449
  %1451 = load i64, ptr %1450, align 8, !tbaa !9
  %1452 = load ptr, ptr %25, align 8, !tbaa !5
  %1453 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1452, i32 0, i32 2
  %1454 = load i64, ptr %1453, align 8, !tbaa !45
  %1455 = icmp eq i64 %1451, %1454
  %1456 = load ptr, ptr %25, align 8, !tbaa !5
  %1457 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1456, i32 0, i32 15
  %1458 = zext i1 %1455 to i8
  store i8 %1458, ptr %1457, align 8, !tbaa !82
  %1459 = load ptr, ptr %25, align 8, !tbaa !5
  %1460 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1459, i32 0, i32 0
  %1461 = load i64, ptr %1460, align 8, !tbaa !28
  %1462 = load ptr, ptr %38, align 8, !tbaa !5
  %1463 = load ptr, ptr %25, align 8, !tbaa !5
  %1464 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1463, i32 0, i32 24
  %1465 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %1461, ptr noundef %1462, ptr noundef %1464, ptr noundef %1465)
  %1466 = load ptr, ptr %25, align 8, !tbaa !5
  %1467 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1466, i32 0, i32 0
  %1468 = load i64, ptr %1467, align 8, !tbaa !28
  %1469 = load ptr, ptr %39, align 8, !tbaa !5
  %1470 = load ptr, ptr %25, align 8, !tbaa !5
  %1471 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1470, i32 0, i32 25
  %1472 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %1468, ptr noundef %1469, ptr noundef %1471, ptr noundef %1472)
  %1473 = load ptr, ptr %25, align 8, !tbaa !5
  %1474 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1473, i32 0, i32 2
  %1475 = load i64, ptr %1474, align 8, !tbaa !45
  %1476 = load ptr, ptr %48, align 8, !tbaa !5
  %1477 = getelementptr inbounds %"struct.alglib_impl::ae_state", ptr %1476, i32 0, i32 3
  %1478 = load double, ptr %1477, align 8, !tbaa !83
  %1479 = load ptr, ptr %25, align 8, !tbaa !5
  %1480 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1479, i32 0, i32 26
  %1481 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1475, double noundef %1478, ptr noundef %1480, ptr noundef %1481)
  %1482 = load ptr, ptr %25, align 8, !tbaa !5
  %1483 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1482, i32 0, i32 2
  %1484 = load i64, ptr %1483, align 8, !tbaa !45
  %1485 = load ptr, ptr %48, align 8, !tbaa !5
  %1486 = getelementptr inbounds %"struct.alglib_impl::ae_state", ptr %1485, i32 0, i32 2
  %1487 = load double, ptr %1486, align 8, !tbaa !87
  %1488 = load ptr, ptr %25, align 8, !tbaa !5
  %1489 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1488, i32 0, i32 27
  %1490 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1484, double noundef %1487, ptr noundef %1489, ptr noundef %1490)
  %1491 = load ptr, ptr %25, align 8, !tbaa !5
  %1492 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1491, i32 0, i32 2
  %1493 = load i64, ptr %1492, align 8, !tbaa !45
  %1494 = load ptr, ptr %25, align 8, !tbaa !5
  %1495 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1494, i32 0, i32 30
  %1496 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl10bsetallocvElbPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1493, i1 noundef zeroext false, ptr noundef %1495, ptr noundef %1496)
  %1497 = load ptr, ptr %25, align 8, !tbaa !5
  %1498 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1497, i32 0, i32 2
  %1499 = load i64, ptr %1498, align 8, !tbaa !45
  %1500 = load ptr, ptr %25, align 8, !tbaa !5
  %1501 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1500, i32 0, i32 31
  %1502 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl10bsetallocvElbPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1499, i1 noundef zeroext false, ptr noundef %1501, ptr noundef %1502)
  store i64 0, ptr %52, align 8, !tbaa !9
  br label %1503

1503:                                             ; preds = %1600, %1436
  %1504 = load i64, ptr %52, align 8, !tbaa !9
  %1505 = load ptr, ptr %25, align 8, !tbaa !5
  %1506 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1505, i32 0, i32 0
  %1507 = load i64, ptr %1506, align 8, !tbaa !28
  %1508 = sub nsw i64 %1507, 1
  %1509 = icmp sle i64 %1504, %1508
  br i1 %1509, label %1510, label %1603

1510:                                             ; preds = %1503
  %1511 = load ptr, ptr %38, align 8, !tbaa !5
  %1512 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1511, i32 0, i32 4
  %1513 = load ptr, ptr %1512, align 8, !tbaa !25
  %1514 = load i64, ptr %52, align 8, !tbaa !9
  %1515 = getelementptr inbounds double, ptr %1513, i64 %1514
  %1516 = load double, ptr %1515, align 8, !tbaa !13
  %1517 = load ptr, ptr %48, align 8, !tbaa !5
  %1518 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %1516, ptr noundef %1517)
  %1519 = load ptr, ptr %25, align 8, !tbaa !5
  %1520 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1519, i32 0, i32 30
  %1521 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1520, i32 0, i32 4
  %1522 = load ptr, ptr %1521, align 8, !tbaa !25
  %1523 = load i64, ptr %52, align 8, !tbaa !9
  %1524 = getelementptr inbounds i8, ptr %1522, i64 %1523
  %1525 = zext i1 %1518 to i8
  store i8 %1525, ptr %1524, align 1, !tbaa !11
  %1526 = load ptr, ptr %39, align 8, !tbaa !5
  %1527 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1526, i32 0, i32 4
  %1528 = load ptr, ptr %1527, align 8, !tbaa !25
  %1529 = load i64, ptr %52, align 8, !tbaa !9
  %1530 = getelementptr inbounds double, ptr %1528, i64 %1529
  %1531 = load double, ptr %1530, align 8, !tbaa !13
  %1532 = load ptr, ptr %48, align 8, !tbaa !5
  %1533 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %1531, ptr noundef %1532)
  %1534 = load ptr, ptr %25, align 8, !tbaa !5
  %1535 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1534, i32 0, i32 31
  %1536 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1535, i32 0, i32 4
  %1537 = load ptr, ptr %1536, align 8, !tbaa !25
  %1538 = load i64, ptr %52, align 8, !tbaa !9
  %1539 = getelementptr inbounds i8, ptr %1537, i64 %1538
  %1540 = zext i1 %1533 to i8
  store i8 %1540, ptr %1539, align 1, !tbaa !11
  %1541 = load ptr, ptr %25, align 8, !tbaa !5
  %1542 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1541, i32 0, i32 30
  %1543 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1542, i32 0, i32 4
  %1544 = load ptr, ptr %1543, align 8, !tbaa !25
  %1545 = load i64, ptr %52, align 8, !tbaa !9
  %1546 = getelementptr inbounds i8, ptr %1544, i64 %1545
  %1547 = load i8, ptr %1546, align 1, !tbaa !11, !range !57, !noundef !58
  %1548 = trunc i8 %1547 to i1
  br i1 %1548, label %1549, label %1572

1549:                                             ; preds = %1510
  %1550 = load ptr, ptr %25, align 8, !tbaa !5
  %1551 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1550, i32 0, i32 31
  %1552 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1551, i32 0, i32 4
  %1553 = load ptr, ptr %1552, align 8, !tbaa !25
  %1554 = load i64, ptr %52, align 8, !tbaa !9
  %1555 = getelementptr inbounds i8, ptr %1553, i64 %1554
  %1556 = load i8, ptr %1555, align 1, !tbaa !11, !range !57, !noundef !58
  %1557 = trunc i8 %1556 to i1
  br i1 %1557, label %1558, label %1572

1558:                                             ; preds = %1549
  %1559 = load ptr, ptr %38, align 8, !tbaa !5
  %1560 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1559, i32 0, i32 4
  %1561 = load ptr, ptr %1560, align 8, !tbaa !25
  %1562 = load i64, ptr %52, align 8, !tbaa !9
  %1563 = getelementptr inbounds double, ptr %1561, i64 %1562
  %1564 = load double, ptr %1563, align 8, !tbaa !13
  %1565 = load ptr, ptr %39, align 8, !tbaa !5
  %1566 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1565, i32 0, i32 4
  %1567 = load ptr, ptr %1566, align 8, !tbaa !25
  %1568 = load i64, ptr %52, align 8, !tbaa !9
  %1569 = getelementptr inbounds double, ptr %1567, i64 %1568
  %1570 = load double, ptr %1569, align 8, !tbaa !13
  %1571 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1564, double noundef %1570)
  br label %1572

1572:                                             ; preds = %1558, %1549, %1510
  %1573 = phi i1 [ false, %1549 ], [ false, %1510 ], [ %1571, %1558 ]
  %1574 = xor i1 %1573, true
  %1575 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1574, ptr noundef @.str.658, ptr noundef %1575)
  %1576 = load ptr, ptr %38, align 8, !tbaa !5
  %1577 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1576, i32 0, i32 4
  %1578 = load ptr, ptr %1577, align 8, !tbaa !25
  %1579 = load i64, ptr %52, align 8, !tbaa !9
  %1580 = getelementptr inbounds double, ptr %1578, i64 %1579
  %1581 = load double, ptr %1580, align 8, !tbaa !13
  %1582 = load ptr, ptr %25, align 8, !tbaa !5
  %1583 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1582, i32 0, i32 26
  %1584 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1583, i32 0, i32 4
  %1585 = load ptr, ptr %1584, align 8, !tbaa !25
  %1586 = load i64, ptr %52, align 8, !tbaa !9
  %1587 = getelementptr inbounds double, ptr %1585, i64 %1586
  store double %1581, ptr %1587, align 8, !tbaa !13
  %1588 = load ptr, ptr %39, align 8, !tbaa !5
  %1589 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1588, i32 0, i32 4
  %1590 = load ptr, ptr %1589, align 8, !tbaa !25
  %1591 = load i64, ptr %52, align 8, !tbaa !9
  %1592 = getelementptr inbounds double, ptr %1590, i64 %1591
  %1593 = load double, ptr %1592, align 8, !tbaa !13
  %1594 = load ptr, ptr %25, align 8, !tbaa !5
  %1595 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1594, i32 0, i32 27
  %1596 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1595, i32 0, i32 4
  %1597 = load ptr, ptr %1596, align 8, !tbaa !25
  %1598 = load i64, ptr %52, align 8, !tbaa !9
  %1599 = getelementptr inbounds double, ptr %1597, i64 %1598
  store double %1593, ptr %1599, align 8, !tbaa !13
  br label %1600

1600:                                             ; preds = %1572
  %1601 = load i64, ptr %52, align 8, !tbaa !9
  %1602 = add nsw i64 %1601, 1
  store i64 %1602, ptr %52, align 8, !tbaa !9
  br label %1503, !llvm.loop !88

1603:                                             ; preds = %1503
  %1604 = load ptr, ptr %25, align 8, !tbaa !5
  %1605 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1604, i32 0, i32 8
  %1606 = load ptr, ptr %25, align 8, !tbaa !5
  %1607 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1606, i32 0, i32 10
  %1608 = load ptr, ptr %25, align 8, !tbaa !5
  %1609 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1608, i32 0, i32 26
  %1610 = load ptr, ptr %25, align 8, !tbaa !5
  %1611 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1610, i32 0, i32 27
  %1612 = load ptr, ptr %25, align 8, !tbaa !5
  %1613 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1612, i32 0, i32 2
  %1614 = load i64, ptr %1613, align 8, !tbaa !45
  %1615 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl19scaleshiftbcinplaceEPKNS_9ae_vectorES2_PS0_S3_lPNS_8ae_stateE(ptr noundef %1605, ptr noundef %1607, ptr noundef %1609, ptr noundef %1611, i64 noundef %1614, ptr noundef %1615)
  %1616 = load i64, ptr %43, align 8, !tbaa !9
  %1617 = load i64, ptr %41, align 8, !tbaa !9
  %1618 = add nsw i64 %1616, %1617
  store i64 %1618, ptr %51, align 8, !tbaa !9
  %1619 = load i64, ptr %51, align 8, !tbaa !9
  %1620 = load ptr, ptr %25, align 8, !tbaa !5
  %1621 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1620, i32 0, i32 34
  store i64 %1619, ptr %1621, align 8, !tbaa !89
  store i64 0, ptr %52, align 8, !tbaa !9
  br label %1622

1622:                                             ; preds = %1668, %1603
  %1623 = load i64, ptr %52, align 8, !tbaa !9
  %1624 = load i64, ptr %51, align 8, !tbaa !9
  %1625 = sub nsw i64 %1624, 1
  %1626 = icmp sle i64 %1623, %1625
  br i1 %1626, label %1627, label %1671

1627:                                             ; preds = %1622
  %1628 = load ptr, ptr %44, align 8, !tbaa !5
  %1629 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1628, i32 0, i32 4
  %1630 = load ptr, ptr %1629, align 8, !tbaa !25
  %1631 = load i64, ptr %52, align 8, !tbaa !9
  %1632 = getelementptr inbounds double, ptr %1630, i64 %1631
  %1633 = load double, ptr %1632, align 8, !tbaa !13
  %1634 = load ptr, ptr %48, align 8, !tbaa !5
  %1635 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %1633, ptr noundef %1634)
  br i1 %1635, label %1645, label %1636

1636:                                             ; preds = %1627
  %1637 = load ptr, ptr %44, align 8, !tbaa !5
  %1638 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1637, i32 0, i32 4
  %1639 = load ptr, ptr %1638, align 8, !tbaa !25
  %1640 = load i64, ptr %52, align 8, !tbaa !9
  %1641 = getelementptr inbounds double, ptr %1639, i64 %1640
  %1642 = load double, ptr %1641, align 8, !tbaa !13
  %1643 = load ptr, ptr %48, align 8, !tbaa !5
  %1644 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isneginfEdPNS_8ae_stateE(double noundef %1642, ptr noundef %1643)
  br label %1645

1645:                                             ; preds = %1636, %1627
  %1646 = phi i1 [ true, %1627 ], [ %1644, %1636 ]
  %1647 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1646, ptr noundef @.str.659, ptr noundef %1647)
  %1648 = load ptr, ptr %45, align 8, !tbaa !5
  %1649 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1648, i32 0, i32 4
  %1650 = load ptr, ptr %1649, align 8, !tbaa !25
  %1651 = load i64, ptr %52, align 8, !tbaa !9
  %1652 = getelementptr inbounds double, ptr %1650, i64 %1651
  %1653 = load double, ptr %1652, align 8, !tbaa !13
  %1654 = load ptr, ptr %48, align 8, !tbaa !5
  %1655 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %1653, ptr noundef %1654)
  br i1 %1655, label %1665, label %1656

1656:                                             ; preds = %1645
  %1657 = load ptr, ptr %45, align 8, !tbaa !5
  %1658 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1657, i32 0, i32 4
  %1659 = load ptr, ptr %1658, align 8, !tbaa !25
  %1660 = load i64, ptr %52, align 8, !tbaa !9
  %1661 = getelementptr inbounds double, ptr %1659, i64 %1660
  %1662 = load double, ptr %1661, align 8, !tbaa !13
  %1663 = load ptr, ptr %48, align 8, !tbaa !5
  %1664 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isposinfEdPNS_8ae_stateE(double noundef %1662, ptr noundef %1663)
  br label %1665

1665:                                             ; preds = %1656, %1645
  %1666 = phi i1 [ true, %1645 ], [ %1664, %1656 ]
  %1667 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1666, ptr noundef @.str.660, ptr noundef %1667)
  br label %1668

1668:                                             ; preds = %1665
  %1669 = load i64, ptr %52, align 8, !tbaa !9
  %1670 = add nsw i64 %1669, 1
  store i64 %1670, ptr %52, align 8, !tbaa !9
  br label %1622, !llvm.loop !90

1671:                                             ; preds = %1622
  %1672 = load i64, ptr %51, align 8, !tbaa !9
  %1673 = load ptr, ptr %25, align 8, !tbaa !5
  %1674 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1673, i32 0, i32 34
  store i64 %1672, ptr %1674, align 8, !tbaa !89
  %1675 = load i64, ptr %51, align 8, !tbaa !9
  %1676 = load ptr, ptr %25, align 8, !tbaa !5
  %1677 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1676, i32 0, i32 67
  %1678 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1677, i32 0, i32 6
  store i64 %1675, ptr %1678, align 8, !tbaa !91
  %1679 = load ptr, ptr %25, align 8, !tbaa !5
  %1680 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1679, i32 0, i32 2
  %1681 = load i64, ptr %1680, align 8, !tbaa !45
  %1682 = load ptr, ptr %25, align 8, !tbaa !5
  %1683 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1682, i32 0, i32 67
  %1684 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1683, i32 0, i32 7
  store i64 %1681, ptr %1684, align 8, !tbaa !92
  %1685 = load i64, ptr %51, align 8, !tbaa !9
  %1686 = add nsw i64 %1685, 1
  %1687 = load ptr, ptr %25, align 8, !tbaa !5
  %1688 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1687, i32 0, i32 67
  %1689 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1688, i32 0, i32 2
  %1690 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl7iallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1686, ptr noundef %1689, ptr noundef %1690)
  %1691 = load ptr, ptr %25, align 8, !tbaa !5
  %1692 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1691, i32 0, i32 67
  %1693 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1692, i32 0, i32 2
  %1694 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1693, i32 0, i32 4
  %1695 = load ptr, ptr %1694, align 8, !tbaa !25
  %1696 = getelementptr inbounds i64, ptr %1695, i64 0
  store i64 0, ptr %1696, align 8, !tbaa !9
  store i64 0, ptr %52, align 8, !tbaa !9
  br label %1697

1697:                                             ; preds = %1794, %1671
  %1698 = load i64, ptr %52, align 8, !tbaa !9
  %1699 = load i64, ptr %41, align 8, !tbaa !9
  %1700 = sub nsw i64 %1699, 1
  %1701 = icmp sle i64 %1698, %1700
  br i1 %1701, label %1702, label %1797

1702:                                             ; preds = %1697
  %1703 = load ptr, ptr %25, align 8, !tbaa !5
  %1704 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1703, i32 0, i32 67
  %1705 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1704, i32 0, i32 2
  %1706 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1705, i32 0, i32 4
  %1707 = load ptr, ptr %1706, align 8, !tbaa !25
  %1708 = load i64, ptr %52, align 8, !tbaa !9
  %1709 = getelementptr inbounds i64, ptr %1707, i64 %1708
  %1710 = load i64, ptr %1709, align 8, !tbaa !9
  store i64 %1710, ptr %60, align 8, !tbaa !9
  %1711 = load i64, ptr %60, align 8, !tbaa !9
  %1712 = load ptr, ptr %25, align 8, !tbaa !5
  %1713 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1712, i32 0, i32 2
  %1714 = load i64, ptr %1713, align 8, !tbaa !45
  %1715 = add nsw i64 %1711, %1714
  %1716 = load ptr, ptr %25, align 8, !tbaa !5
  %1717 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1716, i32 0, i32 67
  %1718 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1717, i32 0, i32 1
  %1719 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl6igrowvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1715, ptr noundef %1718, ptr noundef %1719)
  %1720 = load i64, ptr %60, align 8, !tbaa !9
  %1721 = load ptr, ptr %25, align 8, !tbaa !5
  %1722 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1721, i32 0, i32 2
  %1723 = load i64, ptr %1722, align 8, !tbaa !45
  %1724 = add nsw i64 %1720, %1723
  %1725 = load ptr, ptr %25, align 8, !tbaa !5
  %1726 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1725, i32 0, i32 67
  %1727 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1726, i32 0, i32 0
  %1728 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl6rgrowvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1724, ptr noundef %1727, ptr noundef %1728)
  %1729 = load ptr, ptr %40, align 8, !tbaa !5
  %1730 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1729, i32 0, i32 2
  %1731 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1730, i32 0, i32 4
  %1732 = load ptr, ptr %1731, align 8, !tbaa !25
  %1733 = load i64, ptr %52, align 8, !tbaa !9
  %1734 = getelementptr inbounds i64, ptr %1732, i64 %1733
  %1735 = load i64, ptr %1734, align 8, !tbaa !9
  store i64 %1735, ptr %55, align 8, !tbaa !9
  %1736 = load ptr, ptr %40, align 8, !tbaa !5
  %1737 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1736, i32 0, i32 2
  %1738 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1737, i32 0, i32 4
  %1739 = load ptr, ptr %1738, align 8, !tbaa !25
  %1740 = load i64, ptr %52, align 8, !tbaa !9
  %1741 = add nsw i64 %1740, 1
  %1742 = getelementptr inbounds i64, ptr %1739, i64 %1741
  %1743 = load i64, ptr %1742, align 8, !tbaa !9
  %1744 = sub nsw i64 %1743, 1
  store i64 %1744, ptr %56, align 8, !tbaa !9
  %1745 = load i64, ptr %55, align 8, !tbaa !9
  store i64 %1745, ptr %53, align 8, !tbaa !9
  br label %1746

1746:                                             ; preds = %1781, %1702
  %1747 = load i64, ptr %53, align 8, !tbaa !9
  %1748 = load i64, ptr %56, align 8, !tbaa !9
  %1749 = icmp sle i64 %1747, %1748
  br i1 %1749, label %1750, label %1784

1750:                                             ; preds = %1746
  %1751 = load ptr, ptr %40, align 8, !tbaa !5
  %1752 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1751, i32 0, i32 1
  %1753 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1752, i32 0, i32 4
  %1754 = load ptr, ptr %1753, align 8, !tbaa !25
  %1755 = load i64, ptr %53, align 8, !tbaa !9
  %1756 = getelementptr inbounds i64, ptr %1754, i64 %1755
  %1757 = load i64, ptr %1756, align 8, !tbaa !9
  %1758 = load ptr, ptr %25, align 8, !tbaa !5
  %1759 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1758, i32 0, i32 67
  %1760 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1759, i32 0, i32 1
  %1761 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1760, i32 0, i32 4
  %1762 = load ptr, ptr %1761, align 8, !tbaa !25
  %1763 = load i64, ptr %60, align 8, !tbaa !9
  %1764 = getelementptr inbounds i64, ptr %1762, i64 %1763
  store i64 %1757, ptr %1764, align 8, !tbaa !9
  %1765 = load ptr, ptr %40, align 8, !tbaa !5
  %1766 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1765, i32 0, i32 0
  %1767 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1766, i32 0, i32 4
  %1768 = load ptr, ptr %1767, align 8, !tbaa !25
  %1769 = load i64, ptr %53, align 8, !tbaa !9
  %1770 = getelementptr inbounds double, ptr %1768, i64 %1769
  %1771 = load double, ptr %1770, align 8, !tbaa !13
  %1772 = load ptr, ptr %25, align 8, !tbaa !5
  %1773 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1772, i32 0, i32 67
  %1774 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1773, i32 0, i32 0
  %1775 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1774, i32 0, i32 4
  %1776 = load ptr, ptr %1775, align 8, !tbaa !25
  %1777 = load i64, ptr %60, align 8, !tbaa !9
  %1778 = getelementptr inbounds double, ptr %1776, i64 %1777
  store double %1771, ptr %1778, align 8, !tbaa !13
  %1779 = load i64, ptr %60, align 8, !tbaa !9
  %1780 = add nsw i64 %1779, 1
  store i64 %1780, ptr %60, align 8, !tbaa !9
  br label %1781

1781:                                             ; preds = %1750
  %1782 = load i64, ptr %53, align 8, !tbaa !9
  %1783 = add nsw i64 %1782, 1
  store i64 %1783, ptr %53, align 8, !tbaa !9
  br label %1746, !llvm.loop !93

1784:                                             ; preds = %1746
  %1785 = load i64, ptr %60, align 8, !tbaa !9
  %1786 = load ptr, ptr %25, align 8, !tbaa !5
  %1787 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1786, i32 0, i32 67
  %1788 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1787, i32 0, i32 2
  %1789 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1788, i32 0, i32 4
  %1790 = load ptr, ptr %1789, align 8, !tbaa !25
  %1791 = load i64, ptr %52, align 8, !tbaa !9
  %1792 = add nsw i64 %1791, 1
  %1793 = getelementptr inbounds i64, ptr %1790, i64 %1792
  store i64 %1785, ptr %1793, align 8, !tbaa !9
  br label %1794

1794:                                             ; preds = %1784
  %1795 = load i64, ptr %52, align 8, !tbaa !9
  %1796 = add nsw i64 %1795, 1
  store i64 %1796, ptr %52, align 8, !tbaa !9
  br label %1697, !llvm.loop !94

1797:                                             ; preds = %1697
  store i64 0, ptr %52, align 8, !tbaa !9
  br label %1798

1798:                                             ; preds = %1893, %1797
  %1799 = load i64, ptr %52, align 8, !tbaa !9
  %1800 = load i64, ptr %43, align 8, !tbaa !9
  %1801 = sub nsw i64 %1800, 1
  %1802 = icmp sle i64 %1799, %1801
  br i1 %1802, label %1803, label %1896

1803:                                             ; preds = %1798
  %1804 = load ptr, ptr %25, align 8, !tbaa !5
  %1805 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1804, i32 0, i32 67
  %1806 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1805, i32 0, i32 2
  %1807 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1806, i32 0, i32 4
  %1808 = load ptr, ptr %1807, align 8, !tbaa !25
  %1809 = load i64, ptr %41, align 8, !tbaa !9
  %1810 = load i64, ptr %52, align 8, !tbaa !9
  %1811 = add nsw i64 %1809, %1810
  %1812 = getelementptr inbounds i64, ptr %1808, i64 %1811
  %1813 = load i64, ptr %1812, align 8, !tbaa !9
  store i64 %1813, ptr %60, align 8, !tbaa !9
  %1814 = load i64, ptr %60, align 8, !tbaa !9
  %1815 = load ptr, ptr %25, align 8, !tbaa !5
  %1816 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1815, i32 0, i32 2
  %1817 = load i64, ptr %1816, align 8, !tbaa !45
  %1818 = add nsw i64 %1814, %1817
  %1819 = load ptr, ptr %25, align 8, !tbaa !5
  %1820 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1819, i32 0, i32 67
  %1821 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1820, i32 0, i32 1
  %1822 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl6igrowvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1818, ptr noundef %1821, ptr noundef %1822)
  %1823 = load i64, ptr %60, align 8, !tbaa !9
  %1824 = load ptr, ptr %25, align 8, !tbaa !5
  %1825 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1824, i32 0, i32 2
  %1826 = load i64, ptr %1825, align 8, !tbaa !45
  %1827 = add nsw i64 %1823, %1826
  %1828 = load ptr, ptr %25, align 8, !tbaa !5
  %1829 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1828, i32 0, i32 67
  %1830 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1829, i32 0, i32 0
  %1831 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl6rgrowvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1827, ptr noundef %1830, ptr noundef %1831)
  store i64 0, ptr %54, align 8, !tbaa !9
  br label %1832

1832:                                             ; preds = %1878, %1803
  %1833 = load i64, ptr %54, align 8, !tbaa !9
  %1834 = load ptr, ptr %25, align 8, !tbaa !5
  %1835 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1834, i32 0, i32 0
  %1836 = load i64, ptr %1835, align 8, !tbaa !28
  %1837 = sub nsw i64 %1836, 1
  %1838 = icmp sle i64 %1833, %1837
  br i1 %1838, label %1839, label %1881

1839:                                             ; preds = %1832
  %1840 = load ptr, ptr %42, align 8, !tbaa !5
  %1841 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1840, i32 0, i32 6
  %1842 = load ptr, ptr %1841, align 8, !tbaa !25
  %1843 = load i64, ptr %52, align 8, !tbaa !9
  %1844 = getelementptr inbounds ptr, ptr %1842, i64 %1843
  %1845 = load ptr, ptr %1844, align 8, !tbaa !5
  %1846 = load i64, ptr %54, align 8, !tbaa !9
  %1847 = getelementptr inbounds double, ptr %1845, i64 %1846
  %1848 = load double, ptr %1847, align 8, !tbaa !13
  %1849 = fcmp une double %1848, 0.000000e+00
  br i1 %1849, label %1850, label %1877

1850:                                             ; preds = %1839
  %1851 = load i64, ptr %54, align 8, !tbaa !9
  %1852 = load ptr, ptr %25, align 8, !tbaa !5
  %1853 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1852, i32 0, i32 67
  %1854 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1853, i32 0, i32 1
  %1855 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1854, i32 0, i32 4
  %1856 = load ptr, ptr %1855, align 8, !tbaa !25
  %1857 = load i64, ptr %60, align 8, !tbaa !9
  %1858 = getelementptr inbounds i64, ptr %1856, i64 %1857
  store i64 %1851, ptr %1858, align 8, !tbaa !9
  %1859 = load ptr, ptr %42, align 8, !tbaa !5
  %1860 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1859, i32 0, i32 6
  %1861 = load ptr, ptr %1860, align 8, !tbaa !25
  %1862 = load i64, ptr %52, align 8, !tbaa !9
  %1863 = getelementptr inbounds ptr, ptr %1861, i64 %1862
  %1864 = load ptr, ptr %1863, align 8, !tbaa !5
  %1865 = load i64, ptr %54, align 8, !tbaa !9
  %1866 = getelementptr inbounds double, ptr %1864, i64 %1865
  %1867 = load double, ptr %1866, align 8, !tbaa !13
  %1868 = load ptr, ptr %25, align 8, !tbaa !5
  %1869 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1868, i32 0, i32 67
  %1870 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1869, i32 0, i32 0
  %1871 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1870, i32 0, i32 4
  %1872 = load ptr, ptr %1871, align 8, !tbaa !25
  %1873 = load i64, ptr %60, align 8, !tbaa !9
  %1874 = getelementptr inbounds double, ptr %1872, i64 %1873
  store double %1867, ptr %1874, align 8, !tbaa !13
  %1875 = load i64, ptr %60, align 8, !tbaa !9
  %1876 = add nsw i64 %1875, 1
  store i64 %1876, ptr %60, align 8, !tbaa !9
  br label %1877

1877:                                             ; preds = %1850, %1839
  br label %1878

1878:                                             ; preds = %1877
  %1879 = load i64, ptr %54, align 8, !tbaa !9
  %1880 = add nsw i64 %1879, 1
  store i64 %1880, ptr %54, align 8, !tbaa !9
  br label %1832, !llvm.loop !95

1881:                                             ; preds = %1832
  %1882 = load i64, ptr %60, align 8, !tbaa !9
  %1883 = load ptr, ptr %25, align 8, !tbaa !5
  %1884 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1883, i32 0, i32 67
  %1885 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1884, i32 0, i32 2
  %1886 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1885, i32 0, i32 4
  %1887 = load ptr, ptr %1886, align 8, !tbaa !25
  %1888 = load i64, ptr %41, align 8, !tbaa !9
  %1889 = load i64, ptr %52, align 8, !tbaa !9
  %1890 = add nsw i64 %1888, %1889
  %1891 = add nsw i64 %1890, 1
  %1892 = getelementptr inbounds i64, ptr %1887, i64 %1891
  store i64 %1882, ptr %1892, align 8, !tbaa !9
  br label %1893

1893:                                             ; preds = %1881
  %1894 = load i64, ptr %52, align 8, !tbaa !9
  %1895 = add nsw i64 %1894, 1
  store i64 %1895, ptr %52, align 8, !tbaa !9
  br label %1798, !llvm.loop !96

1896:                                             ; preds = %1798
  %1897 = load ptr, ptr %25, align 8, !tbaa !5
  %1898 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1897, i32 0, i32 67
  %1899 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl22sparsecreatecrsinplaceEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %1898, ptr noundef %1899)
  %1900 = load i64, ptr %51, align 8, !tbaa !9
  %1901 = load ptr, ptr %44, align 8, !tbaa !5
  %1902 = load ptr, ptr %25, align 8, !tbaa !5
  %1903 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1902, i32 0, i32 68
  %1904 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %1900, ptr noundef %1901, ptr noundef %1903, ptr noundef %1904)
  %1905 = load i64, ptr %51, align 8, !tbaa !9
  %1906 = load ptr, ptr %45, align 8, !tbaa !5
  %1907 = load ptr, ptr %25, align 8, !tbaa !5
  %1908 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1907, i32 0, i32 69
  %1909 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %1905, ptr noundef %1906, ptr noundef %1908, ptr noundef %1909)
  %1910 = load ptr, ptr %25, align 8, !tbaa !5
  %1911 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1910, i32 0, i32 8
  %1912 = load ptr, ptr %25, align 8, !tbaa !5
  %1913 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1912, i32 0, i32 10
  %1914 = load ptr, ptr %25, align 8, !tbaa !5
  %1915 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1914, i32 0, i32 2
  %1916 = load i64, ptr %1915, align 8, !tbaa !45
  %1917 = load ptr, ptr %25, align 8, !tbaa !5
  %1918 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1917, i32 0, i32 67
  %1919 = load i64, ptr %51, align 8, !tbaa !9
  %1920 = load ptr, ptr %25, align 8, !tbaa !5
  %1921 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1920, i32 0, i32 68
  %1922 = load ptr, ptr %25, align 8, !tbaa !5
  %1923 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1922, i32 0, i32 69
  %1924 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl25scaleshiftsparselcinplaceEPKNS_9ae_vectorES2_lPNS_12sparsematrixElPS0_S5_PNS_8ae_stateE(ptr noundef %1911, ptr noundef %1913, i64 noundef %1916, ptr noundef %1918, i64 noundef %1919, ptr noundef %1921, ptr noundef %1923, ptr noundef %1924)
  %1925 = load i8, ptr %47, align 1, !tbaa !11, !range !57, !noundef !58
  %1926 = trunc i8 %1925 to i1
  br i1 %1926, label %1959, label %1927

1927:                                             ; preds = %1896
  %1928 = load i8, ptr %46, align 1, !tbaa !11, !range !57, !noundef !58
  %1929 = trunc i8 %1928 to i1
  br i1 %1929, label %1930, label %1944

1930:                                             ; preds = %1927
  %1931 = load ptr, ptr %25, align 8, !tbaa !5
  %1932 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1931, i32 0, i32 67
  %1933 = load i64, ptr %51, align 8, !tbaa !9
  %1934 = load ptr, ptr %25, align 8, !tbaa !5
  %1935 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1934, i32 0, i32 68
  %1936 = load ptr, ptr %25, align 8, !tbaa !5
  %1937 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1936, i32 0, i32 69
  %1938 = load ptr, ptr %25, align 8, !tbaa !5
  %1939 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1938, i32 0, i32 2
  %1940 = load i64, ptr %1939, align 8, !tbaa !45
  %1941 = load ptr, ptr %25, align 8, !tbaa !5
  %1942 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1941, i32 0, i32 33
  %1943 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl31normalizesparselcinplaceuniformEPNS_12sparsematrixElPNS_9ae_vectorES3_lS3_bPNS_8ae_stateE(ptr noundef %1932, i64 noundef %1933, ptr noundef %1935, ptr noundef %1937, i64 noundef %1940, ptr noundef %1942, i1 noundef zeroext true, ptr noundef %1943)
  br label %1958

1944:                                             ; preds = %1927
  %1945 = load ptr, ptr %25, align 8, !tbaa !5
  %1946 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1945, i32 0, i32 67
  %1947 = load i64, ptr %51, align 8, !tbaa !9
  %1948 = load ptr, ptr %25, align 8, !tbaa !5
  %1949 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1948, i32 0, i32 68
  %1950 = load ptr, ptr %25, align 8, !tbaa !5
  %1951 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1950, i32 0, i32 69
  %1952 = load ptr, ptr %25, align 8, !tbaa !5
  %1953 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1952, i32 0, i32 2
  %1954 = load i64, ptr %1953, align 8, !tbaa !45
  %1955 = load ptr, ptr %25, align 8, !tbaa !5
  %1956 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1955, i32 0, i32 33
  %1957 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl24normalizesparselcinplaceEPNS_12sparsematrixElPNS_9ae_vectorES3_lbS3_bPNS_8ae_stateE(ptr noundef %1946, i64 noundef %1947, ptr noundef %1949, ptr noundef %1951, i64 noundef %1954, i1 noundef zeroext true, ptr noundef %1956, i1 noundef zeroext true, ptr noundef %1957)
  br label %1958

1958:                                             ; preds = %1944, %1930
  br label %1964

1959:                                             ; preds = %1896
  %1960 = load i64, ptr %51, align 8, !tbaa !9
  %1961 = load ptr, ptr %25, align 8, !tbaa !5
  %1962 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1961, i32 0, i32 33
  %1963 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1960, double noundef 1.000000e+00, ptr noundef %1962, ptr noundef %1963)
  br label %1964

1964:                                             ; preds = %1959, %1958
  store i64 0, ptr %52, align 8, !tbaa !9
  br label %1965

1965:                                             ; preds = %1987, %1964
  %1966 = load i64, ptr %52, align 8, !tbaa !9
  %1967 = load i64, ptr %51, align 8, !tbaa !9
  %1968 = sub nsw i64 %1967, 1
  %1969 = icmp sle i64 %1966, %1968
  br i1 %1969, label %1970, label %1990

1970:                                             ; preds = %1965
  %1971 = load ptr, ptr %25, align 8, !tbaa !5
  %1972 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1971, i32 0, i32 33
  %1973 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1972, i32 0, i32 4
  %1974 = load ptr, ptr %1973, align 8, !tbaa !25
  %1975 = load i64, ptr %52, align 8, !tbaa !9
  %1976 = getelementptr inbounds double, ptr %1974, i64 %1975
  %1977 = load double, ptr %1976, align 8, !tbaa !13
  %1978 = fcmp oeq double %1977, 0.000000e+00
  br i1 %1978, label %1979, label %1986

1979:                                             ; preds = %1970
  %1980 = load ptr, ptr %25, align 8, !tbaa !5
  %1981 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1980, i32 0, i32 33
  %1982 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1981, i32 0, i32 4
  %1983 = load ptr, ptr %1982, align 8, !tbaa !25
  %1984 = load i64, ptr %52, align 8, !tbaa !9
  %1985 = getelementptr inbounds double, ptr %1983, i64 %1984
  store double 1.000000e+00, ptr %1985, align 8, !tbaa !13
  br label %1986

1986:                                             ; preds = %1979, %1970
  br label %1987

1987:                                             ; preds = %1986
  %1988 = load i64, ptr %52, align 8, !tbaa !9
  %1989 = add nsw i64 %1988, 1
  store i64 %1989, ptr %52, align 8, !tbaa !9
  br label %1965, !llvm.loop !97

1990:                                             ; preds = %1965
  %1991 = load i64, ptr %51, align 8, !tbaa !9
  %1992 = load ptr, ptr %25, align 8, !tbaa !5
  %1993 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1992, i32 0, i32 32
  %1994 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1993, i32 0, i32 6
  store i64 %1991, ptr %1994, align 8, !tbaa !98
  %1995 = load ptr, ptr %25, align 8, !tbaa !5
  %1996 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1995, i32 0, i32 2
  %1997 = load i64, ptr %1996, align 8, !tbaa !45
  %1998 = load ptr, ptr %25, align 8, !tbaa !5
  %1999 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1998, i32 0, i32 32
  %2000 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1999, i32 0, i32 7
  store i64 %1997, ptr %2000, align 8, !tbaa !99
  %2001 = load i64, ptr %51, align 8, !tbaa !9
  %2002 = add nsw i64 %2001, 1
  %2003 = load ptr, ptr %25, align 8, !tbaa !5
  %2004 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2003, i32 0, i32 32
  %2005 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %2004, i32 0, i32 2
  %2006 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl7iallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %2002, ptr noundef %2005, ptr noundef %2006)
  %2007 = load ptr, ptr %25, align 8, !tbaa !5
  %2008 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2007, i32 0, i32 32
  %2009 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %2008, i32 0, i32 2
  %2010 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2009, i32 0, i32 4
  %2011 = load ptr, ptr %2010, align 8, !tbaa !25
  %2012 = getelementptr inbounds i64, ptr %2011, i64 0
  store i64 0, ptr %2012, align 8, !tbaa !9
  store i64 0, ptr %52, align 8, !tbaa !9
  br label %2013

2013:                                             ; preds = %2209, %1990
  %2014 = load i64, ptr %52, align 8, !tbaa !9
  %2015 = load i64, ptr %51, align 8, !tbaa !9
  %2016 = sub nsw i64 %2015, 1
  %2017 = icmp sle i64 %2014, %2016
  br i1 %2017, label %2018, label %2212

2018:                                             ; preds = %2013
  %2019 = load ptr, ptr %25, align 8, !tbaa !5
  %2020 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2019, i32 0, i32 32
  %2021 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %2020, i32 0, i32 2
  %2022 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2021, i32 0, i32 4
  %2023 = load ptr, ptr %2022, align 8, !tbaa !25
  %2024 = load i64, ptr %52, align 8, !tbaa !9
  %2025 = getelementptr inbounds i64, ptr %2023, i64 %2024
  %2026 = load i64, ptr %2025, align 8, !tbaa !9
  store i64 %2026, ptr %60, align 8, !tbaa !9
  %2027 = load i64, ptr %60, align 8, !tbaa !9
  %2028 = load ptr, ptr %25, align 8, !tbaa !5
  %2029 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2028, i32 0, i32 2
  %2030 = load i64, ptr %2029, align 8, !tbaa !45
  %2031 = add nsw i64 %2027, %2030
  %2032 = load ptr, ptr %25, align 8, !tbaa !5
  %2033 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2032, i32 0, i32 32
  %2034 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %2033, i32 0, i32 1
  %2035 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl6igrowvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %2031, ptr noundef %2034, ptr noundef %2035)
  %2036 = load i64, ptr %60, align 8, !tbaa !9
  %2037 = load ptr, ptr %25, align 8, !tbaa !5
  %2038 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2037, i32 0, i32 2
  %2039 = load i64, ptr %2038, align 8, !tbaa !45
  %2040 = add nsw i64 %2036, %2039
  %2041 = load ptr, ptr %25, align 8, !tbaa !5
  %2042 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2041, i32 0, i32 32
  %2043 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %2042, i32 0, i32 0
  %2044 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl6rgrowvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %2040, ptr noundef %2043, ptr noundef %2044)
  %2045 = load ptr, ptr %25, align 8, !tbaa !5
  %2046 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2045, i32 0, i32 67
  %2047 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %2046, i32 0, i32 2
  %2048 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2047, i32 0, i32 4
  %2049 = load ptr, ptr %2048, align 8, !tbaa !25
  %2050 = load i64, ptr %52, align 8, !tbaa !9
  %2051 = getelementptr inbounds i64, ptr %2049, i64 %2050
  %2052 = load i64, ptr %2051, align 8, !tbaa !9
  store i64 %2052, ptr %55, align 8, !tbaa !9
  %2053 = load ptr, ptr %25, align 8, !tbaa !5
  %2054 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2053, i32 0, i32 67
  %2055 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %2054, i32 0, i32 2
  %2056 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2055, i32 0, i32 4
  %2057 = load ptr, ptr %2056, align 8, !tbaa !25
  %2058 = load i64, ptr %52, align 8, !tbaa !9
  %2059 = add nsw i64 %2058, 1
  %2060 = getelementptr inbounds i64, ptr %2057, i64 %2059
  %2061 = load i64, ptr %2060, align 8, !tbaa !9
  %2062 = sub nsw i64 %2061, 1
  store i64 %2062, ptr %56, align 8, !tbaa !9
  %2063 = load i64, ptr %55, align 8, !tbaa !9
  store i64 %2063, ptr %53, align 8, !tbaa !9
  br label %2064

2064:                                             ; preds = %2101, %2018
  %2065 = load i64, ptr %53, align 8, !tbaa !9
  %2066 = load i64, ptr %56, align 8, !tbaa !9
  %2067 = icmp sle i64 %2065, %2066
  br i1 %2067, label %2068, label %2104

2068:                                             ; preds = %2064
  %2069 = load ptr, ptr %25, align 8, !tbaa !5
  %2070 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2069, i32 0, i32 67
  %2071 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %2070, i32 0, i32 1
  %2072 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2071, i32 0, i32 4
  %2073 = load ptr, ptr %2072, align 8, !tbaa !25
  %2074 = load i64, ptr %53, align 8, !tbaa !9
  %2075 = getelementptr inbounds i64, ptr %2073, i64 %2074
  %2076 = load i64, ptr %2075, align 8, !tbaa !9
  %2077 = load ptr, ptr %25, align 8, !tbaa !5
  %2078 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2077, i32 0, i32 32
  %2079 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %2078, i32 0, i32 1
  %2080 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2079, i32 0, i32 4
  %2081 = load ptr, ptr %2080, align 8, !tbaa !25
  %2082 = load i64, ptr %60, align 8, !tbaa !9
  %2083 = getelementptr inbounds i64, ptr %2081, i64 %2082
  store i64 %2076, ptr %2083, align 8, !tbaa !9
  %2084 = load ptr, ptr %25, align 8, !tbaa !5
  %2085 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2084, i32 0, i32 67
  %2086 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %2085, i32 0, i32 0
  %2087 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2086, i32 0, i32 4
  %2088 = load ptr, ptr %2087, align 8, !tbaa !25
  %2089 = load i64, ptr %53, align 8, !tbaa !9
  %2090 = getelementptr inbounds double, ptr %2088, i64 %2089
  %2091 = load double, ptr %2090, align 8, !tbaa !13
  %2092 = load ptr, ptr %25, align 8, !tbaa !5
  %2093 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2092, i32 0, i32 32
  %2094 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %2093, i32 0, i32 0
  %2095 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2094, i32 0, i32 4
  %2096 = load ptr, ptr %2095, align 8, !tbaa !25
  %2097 = load i64, ptr %60, align 8, !tbaa !9
  %2098 = getelementptr inbounds double, ptr %2096, i64 %2097
  store double %2091, ptr %2098, align 8, !tbaa !13
  %2099 = load i64, ptr %60, align 8, !tbaa !9
  %2100 = add nsw i64 %2099, 1
  store i64 %2100, ptr %60, align 8, !tbaa !9
  br label %2101

2101:                                             ; preds = %2068
  %2102 = load i64, ptr %53, align 8, !tbaa !9
  %2103 = add nsw i64 %2102, 1
  store i64 %2103, ptr %53, align 8, !tbaa !9
  br label %2064, !llvm.loop !100

2104:                                             ; preds = %2064
  %2105 = load ptr, ptr %25, align 8, !tbaa !5
  %2106 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2105, i32 0, i32 1
  %2107 = load i64, ptr %2106, align 8, !tbaa !44
  %2108 = load i64, ptr %52, align 8, !tbaa !9
  %2109 = add nsw i64 %2107, %2108
  %2110 = load ptr, ptr %25, align 8, !tbaa !5
  %2111 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2110, i32 0, i32 32
  %2112 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %2111, i32 0, i32 1
  %2113 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2112, i32 0, i32 4
  %2114 = load ptr, ptr %2113, align 8, !tbaa !25
  %2115 = load i64, ptr %60, align 8, !tbaa !9
  %2116 = getelementptr inbounds i64, ptr %2114, i64 %2115
  store i64 %2109, ptr %2116, align 8, !tbaa !9
  %2117 = load ptr, ptr %25, align 8, !tbaa !5
  %2118 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2117, i32 0, i32 32
  %2119 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %2118, i32 0, i32 0
  %2120 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2119, i32 0, i32 4
  %2121 = load ptr, ptr %2120, align 8, !tbaa !25
  %2122 = load i64, ptr %60, align 8, !tbaa !9
  %2123 = getelementptr inbounds double, ptr %2121, i64 %2122
  store double -1.000000e+00, ptr %2123, align 8, !tbaa !13
  %2124 = load i64, ptr %60, align 8, !tbaa !9
  %2125 = add nsw i64 %2124, 1
  store i64 %2125, ptr %60, align 8, !tbaa !9
  %2126 = load i64, ptr %60, align 8, !tbaa !9
  %2127 = load ptr, ptr %25, align 8, !tbaa !5
  %2128 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2127, i32 0, i32 32
  %2129 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %2128, i32 0, i32 2
  %2130 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2129, i32 0, i32 4
  %2131 = load ptr, ptr %2130, align 8, !tbaa !25
  %2132 = load i64, ptr %52, align 8, !tbaa !9
  %2133 = add nsw i64 %2132, 1
  %2134 = getelementptr inbounds i64, ptr %2131, i64 %2133
  store i64 %2126, ptr %2134, align 8, !tbaa !9
  %2135 = load ptr, ptr %25, align 8, !tbaa !5
  %2136 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2135, i32 0, i32 68
  %2137 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2136, i32 0, i32 4
  %2138 = load ptr, ptr %2137, align 8, !tbaa !25
  %2139 = load i64, ptr %52, align 8, !tbaa !9
  %2140 = getelementptr inbounds double, ptr %2138, i64 %2139
  %2141 = load double, ptr %2140, align 8, !tbaa !13
  %2142 = load ptr, ptr %25, align 8, !tbaa !5
  %2143 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2142, i32 0, i32 26
  %2144 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2143, i32 0, i32 4
  %2145 = load ptr, ptr %2144, align 8, !tbaa !25
  %2146 = load ptr, ptr %25, align 8, !tbaa !5
  %2147 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2146, i32 0, i32 1
  %2148 = load i64, ptr %2147, align 8, !tbaa !44
  %2149 = load i64, ptr %52, align 8, !tbaa !9
  %2150 = add nsw i64 %2148, %2149
  %2151 = getelementptr inbounds double, ptr %2145, i64 %2150
  store double %2141, ptr %2151, align 8, !tbaa !13
  %2152 = load ptr, ptr %25, align 8, !tbaa !5
  %2153 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2152, i32 0, i32 69
  %2154 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2153, i32 0, i32 4
  %2155 = load ptr, ptr %2154, align 8, !tbaa !25
  %2156 = load i64, ptr %52, align 8, !tbaa !9
  %2157 = getelementptr inbounds double, ptr %2155, i64 %2156
  %2158 = load double, ptr %2157, align 8, !tbaa !13
  %2159 = load ptr, ptr %25, align 8, !tbaa !5
  %2160 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2159, i32 0, i32 27
  %2161 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2160, i32 0, i32 4
  %2162 = load ptr, ptr %2161, align 8, !tbaa !25
  %2163 = load ptr, ptr %25, align 8, !tbaa !5
  %2164 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2163, i32 0, i32 1
  %2165 = load i64, ptr %2164, align 8, !tbaa !44
  %2166 = load i64, ptr %52, align 8, !tbaa !9
  %2167 = add nsw i64 %2165, %2166
  %2168 = getelementptr inbounds double, ptr %2162, i64 %2167
  store double %2158, ptr %2168, align 8, !tbaa !13
  %2169 = load ptr, ptr %25, align 8, !tbaa !5
  %2170 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2169, i32 0, i32 68
  %2171 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2170, i32 0, i32 4
  %2172 = load ptr, ptr %2171, align 8, !tbaa !25
  %2173 = load i64, ptr %52, align 8, !tbaa !9
  %2174 = getelementptr inbounds double, ptr %2172, i64 %2173
  %2175 = load double, ptr %2174, align 8, !tbaa !13
  %2176 = load ptr, ptr %48, align 8, !tbaa !5
  %2177 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %2175, ptr noundef %2176)
  %2178 = load ptr, ptr %25, align 8, !tbaa !5
  %2179 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2178, i32 0, i32 30
  %2180 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2179, i32 0, i32 4
  %2181 = load ptr, ptr %2180, align 8, !tbaa !25
  %2182 = load ptr, ptr %25, align 8, !tbaa !5
  %2183 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2182, i32 0, i32 1
  %2184 = load i64, ptr %2183, align 8, !tbaa !44
  %2185 = load i64, ptr %52, align 8, !tbaa !9
  %2186 = add nsw i64 %2184, %2185
  %2187 = getelementptr inbounds i8, ptr %2181, i64 %2186
  %2188 = zext i1 %2177 to i8
  store i8 %2188, ptr %2187, align 1, !tbaa !11
  %2189 = load ptr, ptr %25, align 8, !tbaa !5
  %2190 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2189, i32 0, i32 69
  %2191 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2190, i32 0, i32 4
  %2192 = load ptr, ptr %2191, align 8, !tbaa !25
  %2193 = load i64, ptr %52, align 8, !tbaa !9
  %2194 = getelementptr inbounds double, ptr %2192, i64 %2193
  %2195 = load double, ptr %2194, align 8, !tbaa !13
  %2196 = load ptr, ptr %48, align 8, !tbaa !5
  %2197 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %2195, ptr noundef %2196)
  %2198 = load ptr, ptr %25, align 8, !tbaa !5
  %2199 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2198, i32 0, i32 31
  %2200 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2199, i32 0, i32 4
  %2201 = load ptr, ptr %2200, align 8, !tbaa !25
  %2202 = load ptr, ptr %25, align 8, !tbaa !5
  %2203 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2202, i32 0, i32 1
  %2204 = load i64, ptr %2203, align 8, !tbaa !44
  %2205 = load i64, ptr %52, align 8, !tbaa !9
  %2206 = add nsw i64 %2204, %2205
  %2207 = getelementptr inbounds i8, ptr %2201, i64 %2206
  %2208 = zext i1 %2197 to i8
  store i8 %2208, ptr %2207, align 1, !tbaa !11
  br label %2209

2209:                                             ; preds = %2104
  %2210 = load i64, ptr %52, align 8, !tbaa !9
  %2211 = add nsw i64 %2210, 1
  store i64 %2211, ptr %52, align 8, !tbaa !9
  br label %2013, !llvm.loop !101

2212:                                             ; preds = %2013
  %2213 = load ptr, ptr %25, align 8, !tbaa !5
  %2214 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2213, i32 0, i32 32
  %2215 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl22sparsecreatecrsinplaceEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %2214, ptr noundef %2215)
  %2216 = load ptr, ptr %25, align 8, !tbaa !5
  %2217 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2216, i32 0, i32 16
  store double 0.000000e+00, ptr %2217, align 8, !tbaa !102
  %2218 = load ptr, ptr %25, align 8, !tbaa !5
  %2219 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2218, i32 0, i32 2
  %2220 = load i64, ptr %2219, align 8, !tbaa !45
  %2221 = load ptr, ptr %25, align 8, !tbaa !5
  %2222 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2221, i32 0, i32 28
  %2223 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %2220, ptr noundef %2222, ptr noundef %2223)
  %2224 = load ptr, ptr %25, align 8, !tbaa !5
  %2225 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2224, i32 0, i32 2
  %2226 = load i64, ptr %2225, align 8, !tbaa !45
  %2227 = load ptr, ptr %25, align 8, !tbaa !5
  %2228 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2227, i32 0, i32 29
  %2229 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %2226, ptr noundef %2228, ptr noundef %2229)
  store i64 0, ptr %52, align 8, !tbaa !9
  br label %2230

2230:                                             ; preds = %2286, %2212
  %2231 = load i64, ptr %52, align 8, !tbaa !9
  %2232 = load ptr, ptr %25, align 8, !tbaa !5
  %2233 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2232, i32 0, i32 2
  %2234 = load i64, ptr %2233, align 8, !tbaa !45
  %2235 = sub nsw i64 %2234, 1
  %2236 = icmp sle i64 %2231, %2235
  br i1 %2236, label %2237, label %2289

2237:                                             ; preds = %2230
  %2238 = load ptr, ptr %25, align 8, !tbaa !5
  %2239 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2238, i32 0, i32 26
  %2240 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2239, i32 0, i32 4
  %2241 = load ptr, ptr %2240, align 8, !tbaa !25
  %2242 = load i64, ptr %52, align 8, !tbaa !9
  %2243 = getelementptr inbounds double, ptr %2241, i64 %2242
  %2244 = load double, ptr %2243, align 8, !tbaa !13
  %2245 = load ptr, ptr %48, align 8, !tbaa !5
  %2246 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %2244, ptr noundef %2245)
  %2247 = load ptr, ptr %25, align 8, !tbaa !5
  %2248 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2247, i32 0, i32 26
  %2249 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2248, i32 0, i32 4
  %2250 = load ptr, ptr %2249, align 8, !tbaa !25
  %2251 = load i64, ptr %52, align 8, !tbaa !9
  %2252 = getelementptr inbounds double, ptr %2250, i64 %2251
  %2253 = load double, ptr %2252, align 8, !tbaa !13
  %2254 = load ptr, ptr %48, align 8, !tbaa !5
  %2255 = call noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext %2246, double noundef %2253, double noundef -1.000000e+297, ptr noundef %2254)
  %2256 = load ptr, ptr %25, align 8, !tbaa !5
  %2257 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2256, i32 0, i32 28
  %2258 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2257, i32 0, i32 4
  %2259 = load ptr, ptr %2258, align 8, !tbaa !25
  %2260 = load i64, ptr %52, align 8, !tbaa !9
  %2261 = getelementptr inbounds double, ptr %2259, i64 %2260
  store double %2255, ptr %2261, align 8, !tbaa !13
  %2262 = load ptr, ptr %25, align 8, !tbaa !5
  %2263 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2262, i32 0, i32 27
  %2264 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2263, i32 0, i32 4
  %2265 = load ptr, ptr %2264, align 8, !tbaa !25
  %2266 = load i64, ptr %52, align 8, !tbaa !9
  %2267 = getelementptr inbounds double, ptr %2265, i64 %2266
  %2268 = load double, ptr %2267, align 8, !tbaa !13
  %2269 = load ptr, ptr %48, align 8, !tbaa !5
  %2270 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %2268, ptr noundef %2269)
  %2271 = load ptr, ptr %25, align 8, !tbaa !5
  %2272 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2271, i32 0, i32 27
  %2273 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2272, i32 0, i32 4
  %2274 = load ptr, ptr %2273, align 8, !tbaa !25
  %2275 = load i64, ptr %52, align 8, !tbaa !9
  %2276 = getelementptr inbounds double, ptr %2274, i64 %2275
  %2277 = load double, ptr %2276, align 8, !tbaa !13
  %2278 = load ptr, ptr %48, align 8, !tbaa !5
  %2279 = call noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext %2270, double noundef %2277, double noundef 1.000000e+297, ptr noundef %2278)
  %2280 = load ptr, ptr %25, align 8, !tbaa !5
  %2281 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %2280, i32 0, i32 29
  %2282 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2281, i32 0, i32 4
  %2283 = load ptr, ptr %2282, align 8, !tbaa !25
  %2284 = load i64, ptr %52, align 8, !tbaa !9
  %2285 = getelementptr inbounds double, ptr %2283, i64 %2284
  store double %2279, ptr %2285, align 8, !tbaa !13
  br label %2286

2286:                                             ; preds = %2237
  %2287 = load i64, ptr %52, align 8, !tbaa !9
  %2288 = add nsw i64 %2287, 1
  store i64 %2288, ptr %52, align 8, !tbaa !9
  br label %2230, !llvm.loop !103

2289:                                             ; preds = %2230
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #3
  ret void
}

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"double", !7, i64 0}
!15 = !{!16, !10, i64 320}
!16 = !{!"_ZTSN11alglib_impl12sparsematrixE", !17, i64 0, !17, i64 64, !17, i64 128, !17, i64 192, !17, i64 256, !10, i64 320, !10, i64 328, !10, i64 336, !10, i64 344, !10, i64 352, !10, i64 360}
!17 = !{!"_ZTSN11alglib_impl9ae_vectorE", !10, i64 0, !10, i64 8, !12, i64 16, !18, i64 24, !7, i64 56}
!18 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!19 = !{!16, !10, i64 328}
!20 = !{!16, !10, i64 336}
!21 = !{!17, !10, i64 0}
!22 = !{!23, !10, i64 0}
!23 = !{!"_ZTSN11alglib_impl9ae_matrixE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !12, i64 32, !18, i64 40, !7, i64 72}
!24 = !{!23, !10, i64 8}
!25 = !{!7, !7, i64 0}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}
!28 = !{!29, !10, i64 0}
!29 = !{!"_ZTSN11alglib_impl9ipm2stateE", !10, i64 0, !10, i64 8, !10, i64 16, !14, i64 24, !14, i64 32, !14, i64 40, !10, i64 48, !12, i64 56, !17, i64 64, !17, i64 128, !17, i64 192, !14, i64 256, !17, i64 264, !16, i64 328, !17, i64 696, !12, i64 760, !14, i64 768, !17, i64 776, !17, i64 840, !17, i64 904, !17, i64 968, !17, i64 1032, !17, i64 1096, !17, i64 1160, !17, i64 1224, !17, i64 1288, !17, i64 1352, !17, i64 1416, !17, i64 1480, !17, i64 1544, !17, i64 1608, !17, i64 1672, !16, i64 1736, !17, i64 2104, !10, i64 2168, !30, i64 2176, !30, i64 2576, !30, i64 2976, !30, i64 3376, !17, i64 3776, !17, i64 3840, !17, i64 3904, !17, i64 3968, !10, i64 4032, !10, i64 4040, !17, i64 4048, !17, i64 4112, !17, i64 4176, !31, i64 4240, !10, i64 4624, !10, i64 4632, !12, i64 4640, !12, i64 4641, !12, i64 4642, !32, i64 4648, !32, i64 4672, !32, i64 4696, !32, i64 4720, !32, i64 4744, !33, i64 4768, !31, i64 21736, !17, i64 22120, !17, i64 22184, !17, i64 22248, !17, i64 22312, !17, i64 22376, !23, i64 22440, !16, i64 22520, !17, i64 22888, !17, i64 22952, !16, i64 23016, !16, i64 23384, !23, i64 23752, !17, i64 23832}
!30 = !{!"_ZTSN11alglib_impl8ipm2varsE", !10, i64 0, !10, i64 8, !17, i64 16, !17, i64 80, !17, i64 144, !17, i64 208, !17, i64 272, !17, i64 336}
!31 = !{!"_ZTSN11alglib_impl17ipm2righthandsideE", !17, i64 0, !17, i64 64, !17, i64 128, !17, i64 192, !17, i64 256, !17, i64 320}
!32 = !{!"_ZTSN11alglib_impl6stimerE", !10, i64 0, !10, i64 8, !12, i64 16}
!33 = !{!"_ZTSN11alglib_impl17ipm2reducedsystemE", !16, i64 0, !17, i64 368, !34, i64 432, !17, i64 15496, !17, i64 15560, !17, i64 15624, !17, i64 15688, !17, i64 15752, !17, i64 15816, !17, i64 15880, !17, i64 15944, !17, i64 16008, !17, i64 16072, !17, i64 16136, !17, i64 16200, !17, i64 16264, !17, i64 16328, !17, i64 16392, !17, i64 16456, !17, i64 16520, !17, i64 16584, !17, i64 16648, !17, i64 16712, !17, i64 16776, !17, i64 16840, !17, i64 16904}
!34 = !{!"_ZTSN11alglib_impl14spcholanalysisE", !10, i64 0, !10, i64 8, !10, i64 16, !12, i64 24, !10, i64 32, !14, i64 40, !14, i64 48, !14, i64 56, !14, i64 64, !17, i64 72, !12, i64 136, !12, i64 137, !12, i64 138, !12, i64 139, !12, i64 140, !17, i64 144, !10, i64 208, !17, i64 216, !17, i64 280, !17, i64 344, !17, i64 408, !17, i64 472, !17, i64 536, !12, i64 600, !17, i64 608, !17, i64 672, !17, i64 736, !17, i64 800, !17, i64 864, !17, i64 928, !12, i64 992, !12, i64 993, !35, i64 1000, !17, i64 1512, !17, i64 1576, !17, i64 1640, !17, i64 1704, !17, i64 1768, !17, i64 1832, !36, i64 1896, !36, i64 2040, !36, i64 2184, !36, i64 2328, !36, i64 2472, !36, i64 2616, !17, i64 2760, !17, i64 2824, !17, i64 2888, !17, i64 2952, !17, i64 3016, !38, i64 3080, !43, i64 7464, !17, i64 13816, !17, i64 13880, !17, i64 13944, !17, i64 14008, !17, i64 14072, !17, i64 14136, !16, i64 14200, !16, i64 14568, !17, i64 14936, !17, i64 15000}
!35 = !{!"_ZTSN11alglib_impl9spcholadjE", !17, i64 0, !17, i64 64, !17, i64 128, !17, i64 192, !17, i64 256, !17, i64 320, !17, i64 384, !17, i64 448}
!36 = !{!"_ZTSN11alglib_impl9ae_nxpoolE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !18, i64 32, !37, i64 64, !18, i64 112}
!37 = !{!"_ZTSN11alglib_impl7ae_lockE", !6, i64 0, !18, i64 8, !12, i64 40}
!38 = !{!"_ZTSN11alglib_impl9amdbufferE", !10, i64 0, !12, i64 8, !12, i64 9, !17, i64 16, !17, i64 80, !17, i64 144, !39, i64 208, !39, i64 568, !39, i64 928, !40, i64 1288, !41, i64 1496, !42, i64 1968, !17, i64 2120, !17, i64 2184, !17, i64 2248, !42, i64 2312, !42, i64 2464, !42, i64 2616, !42, i64 2768, !42, i64 2920, !42, i64 3072, !17, i64 3224, !10, i64 3288, !42, i64 3296, !42, i64 3448, !39, i64 3600, !42, i64 3960, !17, i64 4112, !17, i64 4176, !17, i64 4240, !23, i64 4304}
!39 = !{!"_ZTSN11alglib_impl8amdknsetE", !10, i64 0, !10, i64 8, !17, i64 16, !17, i64 80, !17, i64 144, !17, i64 208, !17, i64 272, !10, i64 336, !10, i64 344, !10, i64 352}
!40 = !{!"_ZTSN11alglib_impl11amdllmatrixE", !10, i64 0, !17, i64 8, !17, i64 72, !17, i64 136, !10, i64 200}
!41 = !{!"_ZTSN11alglib_impl12amdvertexsetE", !10, i64 0, !12, i64 8, !10, i64 16, !17, i64 24, !17, i64 88, !17, i64 152, !17, i64 216, !17, i64 280, !17, i64 344, !17, i64 408}
!42 = !{!"_ZTSN11alglib_impl5nisetE", !10, i64 0, !10, i64 8, !17, i64 16, !17, i64 80, !10, i64 144}
!43 = !{!"_ZTSN11alglib_impl18priorityamdbuffersE", !17, i64 0, !17, i64 64, !38, i64 128, !16, i64 4512, !16, i64 4880, !16, i64 5248, !16, i64 5616, !16, i64 5984}
!44 = !{!29, !10, i64 8}
!45 = !{!29, !10, i64 16}
!46 = !{!29, !12, i64 56}
!47 = !{!29, !10, i64 48}
!48 = !{!29, !10, i64 4624}
!49 = !{!29, !10, i64 4632}
!50 = !{!29, !12, i64 4640}
!51 = !{!29, !12, i64 4641}
!52 = !{!29, !12, i64 4642}
!53 = distinct !{!53, !27}
!54 = !{!29, !10, i64 23704}
!55 = !{!29, !10, i64 23712}
!56 = !{!29, !10, i64 23720}
!57 = !{i8 0, i8 2}
!58 = !{}
!59 = distinct !{!59, !27}
!60 = distinct !{!60, !27}
!61 = distinct !{!61, !27}
!62 = distinct !{!62, !27}
!63 = distinct !{!63, !27}
!64 = !{!29, !10, i64 23384}
!65 = !{!29, !10, i64 23448}
!66 = distinct !{!66, !27}
!67 = distinct !{!67, !27}
!68 = distinct !{!68, !27}
!69 = distinct !{!69, !27}
!70 = !{!29, !14, i64 256}
!71 = distinct !{!71, !27}
!72 = !{!29, !10, i64 648}
!73 = !{!29, !10, i64 656}
!74 = !{!29, !10, i64 664}
!75 = distinct !{!75, !27}
!76 = distinct !{!76, !27}
!77 = distinct !{!77, !27}
!78 = distinct !{!78, !27}
!79 = distinct !{!79, !27}
!80 = !{!29, !10, i64 328}
!81 = !{!29, !10, i64 392}
!82 = !{!29, !12, i64 760}
!83 = !{!84, !14, i64 24}
!84 = !{!"_ZTSN11alglib_impl8ae_stateE", !10, i64 0, !14, i64 8, !14, i64 16, !14, i64 24, !6, i64 32, !18, i64 40, !6, i64 72, !85, i64 80, !6, i64 88, !86, i64 96, !6, i64 104, !6, i64 112, !6, i64 120}
!85 = !{!"_ZTSN11alglib_impl13ae_error_typeE", !7, i64 0}
!86 = !{!"long long", !7, i64 0}
!87 = !{!84, !14, i64 16}
!88 = distinct !{!88, !27}
!89 = !{!29, !10, i64 2168}
!90 = distinct !{!90, !27}
!91 = !{!29, !10, i64 22848}
!92 = !{!29, !10, i64 22856}
!93 = distinct !{!93, !27}
!94 = distinct !{!94, !27}
!95 = distinct !{!95, !27}
!96 = distinct !{!96, !27}
!97 = distinct !{!97, !27}
!98 = !{!29, !10, i64 2064}
!99 = !{!29, !10, i64 2072}
!100 = distinct !{!100, !27}
!101 = distinct !{!101, !27}
!102 = !{!29, !14, i64 768}
!103 = distinct !{!103, !27}


; 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.589 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.590 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.591 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.593 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.636 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.637 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.638 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.639 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.640 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.641 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.642 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.643 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.644 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.645 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.646 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.647 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.648 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.649 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.650 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.651 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.652 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.653 = external hidden unnamed_addr constant [48 x i8], align 1
@_ZN11alglib_implL20ipm2solver_defipmitsE = external hidden local_unnamed_addr global i64, align 8
@.str.654 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.655 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.656 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.657 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.658 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.659 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.660 = external hidden unnamed_addr constant [38 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_sqrtEdPNS_8ae_stateE(double noundef, ptr noundef) local_unnamed_addr #0

declare noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef, double 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 noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef, double noundef) local_unnamed_addr #0

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

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

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

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

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

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

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

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

declare noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext, double noundef, double 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_impl6rgrowvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

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

declare void @_ZN11alglib_impl13sparsecopybufEPKNS_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_impl6igrowvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef, ptr 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_impl25scaleshiftsparselcinplaceEPKNS_9ae_vectorES2_lPNS_12sparsematrixElPS0_S5_PNS_8ae_stateE(ptr 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_impl20scalesparseqpinplaceEPKNS_9ae_vectorElPNS_12sparsematrixEPNS_9ae_matrixEPS0_lS7_PNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl24normalizesparselcinplaceEPNS_12sparsematrixElPNS_9ae_vectorES3_lbS3_bPNS_8ae_stateE(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
declare dso_local void @_ZN11alglib_impl31normalizesparselcinplaceuniformEPNS_12sparsematrixElPNS_9ae_vectorES3_lS3_bPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, i1 noundef zeroext, ptr noundef) local_unnamed_addr #1

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl8ipm2initEPNS_9ipm2stateEPKNS_9ae_vectorES4_lPKNS_9ae_matrixEPKNS_12sparsematrixElbS7_S4_lS4_dS4_S4_SA_lS7_lS4_S4_bbPNS_8ae_stateE(ptr noundef %0, ptr noundef %1, ptr noundef %2, i64 noundef %3, ptr nocapture noundef readonly %4, ptr nocapture noundef readonly %5, i64 noundef %6, i1 noundef zeroext %7, ptr noundef %8, ptr noundef %9, i64 noundef %10, ptr noundef %11, double noundef %12, ptr noundef %13, ptr noundef %14, ptr nocapture noundef readonly %15, i64 noundef %16, ptr noundef %17, i64 noundef %18, ptr noundef %19, ptr noundef %20, i1 noundef zeroext %21, i1 noundef zeroext %22, ptr noundef %23) local_unnamed_addr #1 {
  %25 = icmp sgt i64 %3, 0
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %25, ptr noundef nonnull @.str.636, ptr noundef %23)
  %26 = tail call noundef zeroext i1 @_ZN11alglib_impl14isfinitevectorEPKNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %1, i64 noundef %3, ptr noundef %23)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %26, ptr noundef nonnull @.str.637, ptr noundef %23)
  %27 = tail call noundef zeroext i1 @_ZN11alglib_impl14isfinitevectorEPKNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %2, i64 noundef %3, ptr noundef %23)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %27, ptr noundef nonnull @.str.638, ptr noundef %23)
  %28 = icmp ult i64 %6, 2
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %28, ptr noundef nonnull @.str.639, ptr noundef %23)
  %29 = tail call noundef zeroext i1 @_ZN11alglib_impl14isfinitevectorEPKNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %11, i64 noundef %3, ptr noundef %23)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %29, ptr noundef nonnull @.str.640, ptr noundef %23)
  %30 = icmp sgt i64 %18, -1
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %30, ptr noundef nonnull @.str.641, ptr noundef %23)
  %31 = icmp sgt i64 %16, -1
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %31, ptr noundef nonnull @.str.642, ptr noundef %23)
  %32 = tail call noundef zeroext i1 @_ZN11alglib_impl20apservisfinitematrixEPKNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %17, i64 noundef %18, i64 noundef %3, ptr noundef %23)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %32, ptr noundef nonnull @.str.643, ptr noundef %23)
  %33 = icmp eq i64 %16, 0
  br i1 %33, label %.critedge, label %34

34:                                               ; preds = %24
  %35 = getelementptr inbounds i8, ptr %15, i64 320
  %36 = load i64, ptr %35, align 8, !tbaa !5
  %37 = icmp eq i64 %36, 1
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %37, ptr noundef nonnull @.str.644, ptr noundef %23)
  %38 = getelementptr inbounds i8, ptr %15, i64 328
  %39 = load i64, ptr %38, align 8, !tbaa !14
  %40 = icmp eq i64 %39, %16
  br i1 %40, label %41, label %45

41:                                               ; preds = %34
  %42 = getelementptr inbounds i8, ptr %15, i64 336
  %43 = load i64, ptr %42, align 8, !tbaa !15
  %44 = icmp eq i64 %43, %3
  br label %45

.critedge:                                        ; preds = %24
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext true, ptr noundef nonnull @.str.644, ptr noundef %23)
  br label %45

45:                                               ; preds = %.critedge, %34, %41
  %46 = phi i1 [ false, %34 ], [ %44, %41 ], [ true, %.critedge ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %46, ptr noundef nonnull @.str.645, ptr noundef %23)
  %47 = load i64, ptr %19, align 8, !tbaa !16
  %48 = add i64 %18, %16
  %49 = icmp sge i64 %47, %48
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %49, ptr noundef nonnull @.str.646, ptr noundef %23)
  %50 = load i64, ptr %20, align 8, !tbaa !16
  %51 = icmp sge i64 %50, %48
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %51, ptr noundef nonnull @.str.647, ptr noundef %23)
  %52 = icmp sgt i64 %10, -1
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %52, ptr noundef nonnull @.str.648, ptr noundef %23)
  %53 = icmp eq i64 %10, 0
  br i1 %53, label %.thread1126, label %54

.thread1126:                                      ; preds = %45
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext true, ptr noundef nonnull @.str.649, ptr noundef %23)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext true, ptr noundef nonnull @.str.650, ptr noundef %23)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext true, ptr noundef nonnull @.str.651, ptr noundef %23)
  br label %._crit_edge

54:                                               ; preds = %45
  %55 = load i64, ptr %8, align 8, !tbaa !17
  %56 = icmp sge i64 %55, %10
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %56, ptr noundef nonnull @.str.649, ptr noundef %23)
  %57 = getelementptr inbounds i8, ptr %8, i64 8
  %58 = load i64, ptr %57, align 8, !tbaa !19
  %59 = icmp sge i64 %58, %3
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %59, ptr noundef nonnull @.str.650, ptr noundef %23)
  %60 = load i64, ptr %9, align 8, !tbaa !16
  %61 = icmp sge i64 %60, %10
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %61, ptr noundef nonnull @.str.651, ptr noundef %23)
  %.not.not924 = icmp sgt i64 %10, 0
  br i1 %.not.not924, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %54
  %62 = getelementptr inbounds i8, ptr %9, i64 56
  br label %63

63:                                               ; preds = %.lr.ph, %63
  %.0853925 = phi i64 [ 0, %.lr.ph ], [ %69, %63 ]
  %64 = load ptr, ptr %62, align 8, !tbaa !20
  %65 = getelementptr inbounds double, ptr %64, i64 %.0853925
  %66 = load double, ptr %65, align 8, !tbaa !21
  %67 = tail call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %66, ptr noundef %23)
  %68 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %67, double noundef 1.000000e+00)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %68, ptr noundef nonnull @.str.652, ptr noundef %23)
  %69 = add nuw nsw i64 %.0853925, 1
  %exitcond.not = icmp eq i64 %69, %10
  br i1 %exitcond.not, label %._crit_edge, label %63, !llvm.loop !23

._crit_edge:                                      ; preds = %63, %.thread1126, %54
  %.not.not9241128 = phi i1 [ false, %.thread1126 ], [ false, %54 ], [ %.not.not924, %63 ]
  %70 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %12, ptr noundef %23)
  br i1 %70, label %71, label %73

71:                                               ; preds = %._crit_edge
  %72 = tail call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %12, double noundef 0.000000e+00)
  br label %73

73:                                               ; preds = %71, %._crit_edge
  %74 = phi i1 [ false, %._crit_edge ], [ %72, %71 ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %74, ptr noundef nonnull @.str.653, ptr noundef %23)
  %75 = add nsw i64 %10, %3
  %76 = add i64 %48, %75
  store i64 %3, ptr %0, align 8, !tbaa !25
  %77 = getelementptr inbounds i8, ptr %0, i64 8
  store i64 %75, ptr %77, align 8, !tbaa !41
  %78 = getelementptr inbounds i8, ptr %0, i64 16
  store i64 %76, ptr %78, align 8, !tbaa !42
  %79 = getelementptr inbounds i8, ptr %0, i64 56
  store i8 0, ptr %79, align 8, !tbaa !43
  tail call void @_ZN11alglib_impl11ipm2setcondEPNS_9ipm2stateEdddPNS_8ae_stateE(ptr noundef nonnull %0, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, ptr noundef %23)
  %80 = load i64, ptr @_ZN11alglib_implL20ipm2solver_defipmitsE, align 8, !tbaa !44
  %81 = getelementptr inbounds i8, ptr %0, i64 48
  store i64 %80, ptr %81, align 8, !tbaa !45
  %82 = getelementptr inbounds i8, ptr %0, i64 4624
  %83 = getelementptr inbounds i8, ptr %0, i64 64
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(19) %82, i8 0, i64 19, i1 false)
  tail call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %76, double noundef 1.000000e+00, ptr noundef nonnull %83, ptr noundef %23)
  %84 = getelementptr inbounds i8, ptr %0, i64 128
  tail call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %76, double noundef 1.000000e+00, ptr noundef nonnull %84, ptr noundef %23)
  %85 = getelementptr inbounds i8, ptr %0, i64 192
  tail call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %76, double noundef 0.000000e+00, ptr noundef nonnull %85, ptr noundef %23)
  br i1 %25, label %.lr.ph929, label %._crit_edge930

.lr.ph929:                                        ; preds = %73
  %86 = getelementptr inbounds i8, ptr %1, i64 56
  %87 = getelementptr inbounds i8, ptr %0, i64 120
  %88 = getelementptr inbounds i8, ptr %0, i64 184
  %89 = getelementptr inbounds i8, ptr %2, i64 56
  %90 = getelementptr inbounds i8, ptr %0, i64 248
  br label %91

91:                                               ; preds = %.lr.ph929, %91
  %.1854927 = phi i64 [ 0, %.lr.ph929 ], [ %112, %91 ]
  %92 = load ptr, ptr %86, align 8, !tbaa !20
  %93 = getelementptr inbounds double, ptr %92, i64 %.1854927
  %94 = load double, ptr %93, align 8, !tbaa !21
  %95 = fcmp ogt double %94, 0.000000e+00
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %95, ptr noundef nonnull @.str.654, ptr noundef %23)
  %96 = load ptr, ptr %86, align 8, !tbaa !20
  %97 = getelementptr inbounds double, ptr %96, i64 %.1854927
  %98 = load double, ptr %97, align 8, !tbaa !21
  %99 = load ptr, ptr %87, align 8, !tbaa !20
  %100 = getelementptr inbounds double, ptr %99, i64 %.1854927
  store double %98, ptr %100, align 8, !tbaa !21
  %101 = load ptr, ptr %86, align 8, !tbaa !20
  %102 = getelementptr inbounds double, ptr %101, i64 %.1854927
  %103 = load double, ptr %102, align 8, !tbaa !21
  %104 = fdiv double 1.000000e+00, %103
  %105 = load ptr, ptr %88, align 8, !tbaa !20
  %106 = getelementptr inbounds double, ptr %105, i64 %.1854927
  store double %104, ptr %106, align 8, !tbaa !21
  %107 = load ptr, ptr %89, align 8, !tbaa !20
  %108 = getelementptr inbounds double, ptr %107, i64 %.1854927
  %109 = load double, ptr %108, align 8, !tbaa !21
  %110 = load ptr, ptr %90, align 8, !tbaa !20
  %111 = getelementptr inbounds double, ptr %110, i64 %.1854927
  store double %109, ptr %111, align 8, !tbaa !21
  %112 = add nuw nsw i64 %.1854927, 1
  %exitcond1104.not = icmp eq i64 %112, %3
  br i1 %exitcond1104.not, label %._crit_edge930, label %91, !llvm.loop !46

._crit_edge930:                                   ; preds = %91, %73
  %113 = add nsw i64 %3, -1
  %114 = getelementptr inbounds i8, ptr %0, i64 264
  tail call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %76, double noundef 0.000000e+00, ptr noundef nonnull %114, ptr noundef %23)
  tail call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %3, ptr noundef %11, ptr noundef nonnull %114, ptr noundef %23)
  %115 = getelementptr inbounds i8, ptr %0, i64 23384
  %116 = getelementptr inbounds i8, ptr %0, i64 23704
  store i64 1, ptr %116, align 8, !tbaa !47
  %117 = getelementptr inbounds i8, ptr %0, i64 23712
  store i64 %3, ptr %117, align 8, !tbaa !48
  %118 = getelementptr inbounds i8, ptr %0, i64 23720
  store i64 %3, ptr %118, align 8, !tbaa !49
  %119 = add nsw i64 %3, 1
  %120 = getelementptr inbounds i8, ptr %0, i64 23512
  tail call void @_ZN11alglib_impl7iallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %119, ptr noundef nonnull %120, ptr noundef %23)
  switch i64 %6, label %359 [
    i64 0, label %.preheader922
    i64 1, label %204
  ]

.preheader922:                                    ; preds = %._crit_edge930
  br i1 %25, label %.lr.ph939, label %._crit_edge940

.lr.ph939:                                        ; preds = %.preheader922
  %121 = getelementptr inbounds i8, ptr %4, i64 72
  br label %122

.loopexit921:                                     ; preds = %scalar.ph, %middle.block, %122
  %.1822.lcssa = phi i64 [ %123, %122 ], [ %142, %middle.block ], [ %.2823, %scalar.ph ]
  %exitcond1108.not = icmp eq i64 %124, %3
  br i1 %exitcond1108.not, label %._crit_edge940, label %122, !llvm.loop !50

122:                                              ; preds = %.lr.ph939, %.loopexit921
  %.0821938 = phi i64 [ 0, %.lr.ph939 ], [ %.1822.lcssa, %.loopexit921 ]
  %.2855937 = phi i64 [ 0, %.lr.ph939 ], [ %124, %.loopexit921 ]
  %123 = add nsw i64 %.0821938, 1
  %124 = add nuw nsw i64 %.2855937, 1
  %125 = add nsw i64 %.2855937, -1
  %.0841 = select i1 %7, i64 %124, i64 0
  %.0840 = select i1 %7, i64 %113, i64 %125
  %.not909931 = icmp sgt i64 %.0841, %.0840
  br i1 %.not909931, label %.loopexit921, label %.lr.ph935

.lr.ph935:                                        ; preds = %122
  %126 = load ptr, ptr %121, align 8, !tbaa !20
  %127 = getelementptr inbounds ptr, ptr %126, i64 %.2855937
  %128 = load ptr, ptr %127, align 8, !tbaa !51
  %129 = add nsw i64 %.0840, 1
  %130 = sub i64 %129, %.0841
  %min.iters.check = icmp ult i64 %130, 4
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph935
  %n.vec = and i64 %130, -4
  %ind.end = add i64 %.0841, %n.vec
  %131 = insertelement <2 x i64> <i64 poison, i64 0>, i64 %123, i64 0
  %132 = getelementptr double, ptr %128, i64 %.0841
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vec.phi = phi <2 x i64> [ %131, %vector.ph ], [ %139, %vector.body ]
  %vec.phi1151 = phi <2 x i64> [ zeroinitializer, %vector.ph ], [ %140, %vector.body ]
  %133 = getelementptr double, ptr %132, i64 %index
  %134 = getelementptr inbounds i8, ptr %133, i64 16
  %wide.load = load <2 x double>, ptr %133, align 8, !tbaa !21
  %wide.load1152 = load <2 x double>, ptr %134, align 8, !tbaa !21
  %135 = fcmp une <2 x double> %wide.load, zeroinitializer
  %136 = fcmp une <2 x double> %wide.load1152, zeroinitializer
  %137 = zext <2 x i1> %135 to <2 x i64>
  %138 = zext <2 x i1> %136 to <2 x i64>
  %139 = add <2 x i64> %vec.phi, %137
  %140 = add <2 x i64> %vec.phi1151, %138
  %index.next = add nuw i64 %index, 4
  %141 = icmp eq i64 %index.next, %n.vec
  br i1 %141, label %middle.block, label %vector.body, !llvm.loop !52

middle.block:                                     ; preds = %vector.body
  %bin.rdx = add <2 x i64> %140, %139
  %142 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx)
  %cmp.n = icmp eq i64 %130, %n.vec
  br i1 %cmp.n, label %.loopexit921, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %.lr.ph935
  %.1822933.ph = phi i64 [ %123, %.lr.ph935 ], [ %142, %middle.block ]
  %.0847932.ph = phi i64 [ %.0841, %.lr.ph935 ], [ %ind.end, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %.1822933 = phi i64 [ %.2823, %scalar.ph ], [ %.1822933.ph, %scalar.ph.preheader ]
  %.0847932 = phi i64 [ %147, %scalar.ph ], [ %.0847932.ph, %scalar.ph.preheader ]
  %143 = getelementptr inbounds double, ptr %128, i64 %.0847932
  %144 = load double, ptr %143, align 8, !tbaa !21
  %145 = fcmp une double %144, 0.000000e+00
  %146 = zext i1 %145 to i64
  %.2823 = add nsw i64 %.1822933, %146
  %147 = add nuw i64 %.0847932, 1
  %exitcond1107.not = icmp eq i64 %.0847932, %.0840
  br i1 %exitcond1107.not, label %.loopexit921, label %scalar.ph, !llvm.loop !55

._crit_edge940:                                   ; preds = %.loopexit921, %.preheader922
  %.0821.lcssa = phi i64 [ 0, %.preheader922 ], [ %.1822.lcssa, %.loopexit921 ]
  %148 = add nsw i64 %.0821.lcssa, %3
  %149 = getelementptr inbounds i8, ptr %0, i64 23448
  tail call void @_ZN11alglib_impl7iallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %148, ptr noundef nonnull %149, ptr noundef %23)
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %148, ptr noundef nonnull %115, ptr noundef %23)
  %150 = getelementptr inbounds i8, ptr %0, i64 23568
  %151 = load ptr, ptr %150, align 8, !tbaa !20
  store i64 0, ptr %151, align 8, !tbaa !44
  %152 = load i64, ptr %0, align 8, !tbaa !25
  %.not.not882957 = icmp sgt i64 %152, 0
  br i1 %.not.not882957, label %.lr.ph963, label %._crit_edge964

.lr.ph963:                                        ; preds = %._crit_edge940
  %153 = getelementptr inbounds i8, ptr %4, i64 72
  %154 = getelementptr inbounds i8, ptr %0, i64 23504
  %155 = getelementptr inbounds i8, ptr %0, i64 23440
  br label %156

156:                                              ; preds = %.lr.ph963, %.loopexit918
  %.0961 = phi i64 [ 0, %.lr.ph963 ], [ %.6, %.loopexit918 ]
  %.0824960 = phi double [ 0.000000e+00, %.lr.ph963 ], [ %.6830, %.loopexit918 ]
  %.3856958 = phi i64 [ 0, %.lr.ph963 ], [ %198, %.loopexit918 ]
  %.not907.not942 = icmp eq i64 %.3856958, 0
  %or.cond.not = or i1 %.not907.not942, %7
  br i1 %or.cond.not, label %.loopexit920, label %.lr.ph946

.lr.ph946:                                        ; preds = %156, %170
  %.1945 = phi i64 [ %.2, %170 ], [ %.0961, %156 ]
  %.1825944 = phi double [ %.2826, %170 ], [ %.0824960, %156 ]
  %.1848943 = phi i64 [ %171, %170 ], [ 0, %156 ]
  %157 = load ptr, ptr %153, align 8, !tbaa !20
  %158 = getelementptr inbounds ptr, ptr %157, i64 %.3856958
  %159 = load ptr, ptr %158, align 8, !tbaa !51
  %160 = getelementptr inbounds double, ptr %159, i64 %.1848943
  %161 = load double, ptr %160, align 8, !tbaa !21
  %162 = fcmp une double %161, 0.000000e+00
  br i1 %162, label %163, label %170

163:                                              ; preds = %.lr.ph946
  %164 = load ptr, ptr %154, align 8, !tbaa !20
  %165 = getelementptr inbounds i64, ptr %164, i64 %.1945
  store i64 %.1848943, ptr %165, align 8, !tbaa !44
  %166 = load ptr, ptr %155, align 8, !tbaa !20
  %167 = getelementptr inbounds double, ptr %166, i64 %.1945
  store double %161, ptr %167, align 8, !tbaa !21
  %168 = fadd double %.1825944, %161
  %169 = add nsw i64 %.1945, 1
  br label %170

170:                                              ; preds = %.lr.ph946, %163
  %.2826 = phi double [ %168, %163 ], [ %.1825944, %.lr.ph946 ]
  %.2 = phi i64 [ %169, %163 ], [ %.1945, %.lr.ph946 ]
  %171 = add nuw nsw i64 %.1848943, 1
  %exitcond1109.not = icmp eq i64 %171, %.3856958
  br i1 %exitcond1109.not, label %.loopexit920, label %.lr.ph946, !llvm.loop !56

.loopexit920:                                     ; preds = %170, %156
  %.3827 = phi double [ %.0824960, %156 ], [ %.2826, %170 ]
  %.3 = phi i64 [ %.0961, %156 ], [ %.2, %170 ]
  %172 = load ptr, ptr %153, align 8, !tbaa !20
  %173 = getelementptr inbounds ptr, ptr %172, i64 %.3856958
  %174 = load ptr, ptr %173, align 8, !tbaa !51
  %175 = getelementptr inbounds double, ptr %174, i64 %.3856958
  %176 = load double, ptr %175, align 8, !tbaa !21
  %177 = load ptr, ptr %154, align 8, !tbaa !20
  %178 = getelementptr inbounds i64, ptr %177, i64 %.3
  store i64 %.3856958, ptr %178, align 8, !tbaa !44
  %179 = load ptr, ptr %155, align 8, !tbaa !20
  %180 = getelementptr inbounds double, ptr %179, i64 %.3
  store double %176, ptr %180, align 8, !tbaa !21
  %181 = fadd double %.3827, %176
  %182 = add nsw i64 %.3, 1
  %.not908.not950 = icmp slt i64 %.3856958, %113
  %or.cond1090 = select i1 %7, i1 %.not908.not950, i1 false
  br i1 %or.cond1090, label %.lr.ph954, label %.loopexit918

.lr.ph954:                                        ; preds = %.loopexit920, %196
  %.2849953.in = phi i64 [ %.2849953, %196 ], [ %.3856958, %.loopexit920 ]
  %.4952 = phi i64 [ %.5, %196 ], [ %182, %.loopexit920 ]
  %.4828951 = phi double [ %.5829, %196 ], [ %181, %.loopexit920 ]
  %.2849953 = add nuw nsw i64 %.2849953.in, 1
  %183 = load ptr, ptr %153, align 8, !tbaa !20
  %184 = getelementptr inbounds ptr, ptr %183, i64 %.3856958
  %185 = load ptr, ptr %184, align 8, !tbaa !51
  %186 = getelementptr inbounds double, ptr %185, i64 %.2849953
  %187 = load double, ptr %186, align 8, !tbaa !21
  %188 = fcmp une double %187, 0.000000e+00
  br i1 %188, label %189, label %196

189:                                              ; preds = %.lr.ph954
  %190 = load ptr, ptr %154, align 8, !tbaa !20
  %191 = getelementptr inbounds i64, ptr %190, i64 %.4952
  store i64 %.2849953, ptr %191, align 8, !tbaa !44
  %192 = load ptr, ptr %155, align 8, !tbaa !20
  %193 = getelementptr inbounds double, ptr %192, i64 %.4952
  store double %187, ptr %193, align 8, !tbaa !21
  %194 = fadd double %.4828951, %187
  %195 = add nsw i64 %.4952, 1
  br label %196

196:                                              ; preds = %.lr.ph954, %189
  %.5829 = phi double [ %194, %189 ], [ %.4828951, %.lr.ph954 ]
  %.5 = phi i64 [ %195, %189 ], [ %.4952, %.lr.ph954 ]
  %.not908.not = icmp slt i64 %.2849953, %113
  br i1 %.not908.not, label %.lr.ph954, label %.loopexit918, !llvm.loop !57

.loopexit918:                                     ; preds = %196, %.loopexit920
  %.6830 = phi double [ %181, %.loopexit920 ], [ %.5829, %196 ]
  %.6 = phi i64 [ %182, %.loopexit920 ], [ %.5, %196 ]
  %197 = load ptr, ptr %150, align 8, !tbaa !20
  %198 = add nuw nsw i64 %.3856958, 1
  %199 = getelementptr inbounds i64, ptr %197, i64 %198
  store i64 %.6, ptr %199, align 8, !tbaa !44
  %200 = load i64, ptr %0, align 8, !tbaa !25
  %.not.not882 = icmp slt i64 %198, %200
  br i1 %.not.not882, label %156, label %._crit_edge964, !llvm.loop !58

._crit_edge964:                                   ; preds = %.loopexit918, %._crit_edge940
  %.0824.lcssa = phi double [ 0.000000e+00, %._crit_edge940 ], [ %.6830, %.loopexit918 ]
  %.0.lcssa = phi i64 [ 0, %._crit_edge940 ], [ %.6, %.loopexit918 ]
  %201 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %.0824.lcssa, ptr noundef %23)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %201, ptr noundef nonnull @.str.591, ptr noundef %23)
  %202 = icmp eq i64 %.0.lcssa, %.0821.lcssa
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %202, ptr noundef nonnull @.str.593, ptr noundef %23)
  %203 = load i64, ptr %115, align 8, !tbaa !59
  %.not = icmp sgt i64 %.0.lcssa, %203
  br i1 %.not, label %.sink.split, label %.sink.split.sink.split

204:                                              ; preds = %._crit_edge930
  %205 = getelementptr inbounds i8, ptr %5, i64 320
  %206 = load i64, ptr %205, align 8, !tbaa !5
  %207 = icmp eq i64 %206, 1
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %207, ptr noundef nonnull @.str.589, ptr noundef %23)
  %208 = getelementptr inbounds i8, ptr %5, i64 328
  %209 = load i64, ptr %208, align 8, !tbaa !14
  %210 = icmp eq i64 %209, %3
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %210, ptr noundef nonnull @.str.590, ptr noundef %23)
  %211 = getelementptr inbounds i8, ptr %5, i64 336
  %212 = load i64, ptr %211, align 8, !tbaa !15
  %213 = icmp eq i64 %212, %3
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %213, ptr noundef nonnull @.str.590, ptr noundef %23)
  %214 = getelementptr inbounds i8, ptr %5, i64 184
  %215 = load ptr, ptr %214, align 8, !tbaa !20
  %216 = getelementptr inbounds i64, ptr %215, i64 %3
  %217 = load i64, ptr %216, align 8, !tbaa !44
  %218 = add nsw i64 %217, %3
  %219 = getelementptr inbounds i8, ptr %0, i64 23448
  tail call void @_ZN11alglib_impl7iallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %218, ptr noundef nonnull %219, ptr noundef %23)
  %220 = load ptr, ptr %214, align 8, !tbaa !20
  %221 = getelementptr inbounds i64, ptr %220, i64 %3
  %222 = load i64, ptr %221, align 8, !tbaa !44
  %223 = add nsw i64 %222, %3
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %223, ptr noundef nonnull %115, ptr noundef %23)
  %224 = getelementptr inbounds i8, ptr %0, i64 23568
  %225 = load ptr, ptr %224, align 8, !tbaa !20
  store i64 0, ptr %225, align 8, !tbaa !44
  %226 = load i64, ptr %0, align 8, !tbaa !25
  %.not883.not983 = icmp sgt i64 %226, 0
  br i1 %.not883.not983, label %.lr.ph988, label %._crit_edge989

.lr.ph988:                                        ; preds = %204
  %227 = getelementptr inbounds i8, ptr %5, i64 248
  %228 = getelementptr inbounds i8, ptr %5, i64 56
  %229 = getelementptr inbounds i8, ptr %5, i64 120
  %230 = getelementptr inbounds i8, ptr %0, i64 23504
  %231 = getelementptr inbounds i8, ptr %0, i64 23440
  %232 = getelementptr inbounds i8, ptr %5, i64 312
  br label %233

233:                                              ; preds = %.lr.ph988, %.loopexit
  %.7986 = phi i64 [ 0, %.lr.ph988 ], [ %.11, %.loopexit ]
  %.7831985 = phi double [ 0.000000e+00, %.lr.ph988 ], [ %.11835, %.loopexit ]
  %.4857984 = phi i64 [ 0, %.lr.ph988 ], [ %352, %.loopexit ]
  %.pre1121 = load ptr, ptr %227, align 8, !tbaa !20
  br i1 %7, label %.loopexit916, label %234

234:                                              ; preds = %233
  %235 = load ptr, ptr %214, align 8, !tbaa !20
  %236 = getelementptr inbounds i64, ptr %235, i64 %.4857984
  %237 = load i64, ptr %236, align 8, !tbaa !44
  %238 = getelementptr inbounds i64, ptr %.pre1121, i64 %.4857984
  %239 = load i64, ptr %238, align 8, !tbaa !44
  %.not904.not967 = icmp slt i64 %237, %239
  br i1 %.not904.not967, label %.lr.ph972.preheader, label %.loopexit916

.lr.ph972.preheader:                              ; preds = %234
  %240 = add i64 %.7986, %239
  %241 = sub i64 %240, %237
  %242 = sub i64 %239, %237
  %.neg = add i64 %237, 1
  %xtraiter = and i64 %242, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph972.prol.loopexit, label %.lr.ph972.prol

.lr.ph972.prol:                                   ; preds = %.lr.ph972.preheader
  %243 = load ptr, ptr %228, align 8, !tbaa !20
  %244 = getelementptr inbounds double, ptr %243, i64 %237
  %245 = load double, ptr %244, align 8, !tbaa !21
  %246 = load ptr, ptr %229, align 8, !tbaa !20
  %247 = getelementptr inbounds i64, ptr %246, i64 %237
  %248 = load i64, ptr %247, align 8, !tbaa !44
  %249 = load ptr, ptr %230, align 8, !tbaa !20
  %250 = getelementptr inbounds i64, ptr %249, i64 %.7986
  store i64 %248, ptr %250, align 8, !tbaa !44
  %251 = load ptr, ptr %231, align 8, !tbaa !20
  %252 = getelementptr inbounds double, ptr %251, i64 %.7986
  store double %245, ptr %252, align 8, !tbaa !21
  %253 = fadd double %.7831985, %245
  %254 = add i64 %.7986, 1
  %255 = add nsw i64 %237, 1
  br label %.lr.ph972.prol.loopexit

.lr.ph972.prol.loopexit:                          ; preds = %.lr.ph972.prol, %.lr.ph972.preheader
  %.lcssa1163.unr = phi double [ poison, %.lr.ph972.preheader ], [ %253, %.lr.ph972.prol ]
  %.8970.unr = phi i64 [ %.7986, %.lr.ph972.preheader ], [ %254, %.lr.ph972.prol ]
  %.8832969.unr = phi double [ %.7831985, %.lr.ph972.preheader ], [ %253, %.lr.ph972.prol ]
  %.0842968.unr = phi i64 [ %237, %.lr.ph972.preheader ], [ %255, %.lr.ph972.prol ]
  %256 = icmp eq i64 %239, %.neg
  br i1 %256, label %.loopexit916.loopexit, label %.lr.ph972

.lr.ph972:                                        ; preds = %.lr.ph972.prol.loopexit, %.lr.ph972
  %.8970 = phi i64 [ %281, %.lr.ph972 ], [ %.8970.unr, %.lr.ph972.prol.loopexit ]
  %.8832969 = phi double [ %280, %.lr.ph972 ], [ %.8832969.unr, %.lr.ph972.prol.loopexit ]
  %.0842968 = phi i64 [ %282, %.lr.ph972 ], [ %.0842968.unr, %.lr.ph972.prol.loopexit ]
  %257 = load ptr, ptr %228, align 8, !tbaa !20
  %258 = getelementptr inbounds double, ptr %257, i64 %.0842968
  %259 = load double, ptr %258, align 8, !tbaa !21
  %260 = load ptr, ptr %229, align 8, !tbaa !20
  %261 = getelementptr inbounds i64, ptr %260, i64 %.0842968
  %262 = load i64, ptr %261, align 8, !tbaa !44
  %263 = load ptr, ptr %230, align 8, !tbaa !20
  %264 = getelementptr inbounds i64, ptr %263, i64 %.8970
  store i64 %262, ptr %264, align 8, !tbaa !44
  %265 = load ptr, ptr %231, align 8, !tbaa !20
  %266 = getelementptr inbounds double, ptr %265, i64 %.8970
  store double %259, ptr %266, align 8, !tbaa !21
  %267 = fadd double %.8832969, %259
  %268 = add i64 %.8970, 1
  %269 = add nsw i64 %.0842968, 1
  %270 = load ptr, ptr %228, align 8, !tbaa !20
  %271 = getelementptr inbounds double, ptr %270, i64 %269
  %272 = load double, ptr %271, align 8, !tbaa !21
  %273 = load ptr, ptr %229, align 8, !tbaa !20
  %274 = getelementptr inbounds i64, ptr %273, i64 %269
  %275 = load i64, ptr %274, align 8, !tbaa !44
  %276 = load ptr, ptr %230, align 8, !tbaa !20
  %277 = getelementptr inbounds i64, ptr %276, i64 %268
  store i64 %275, ptr %277, align 8, !tbaa !44
  %278 = load ptr, ptr %231, align 8, !tbaa !20
  %279 = getelementptr inbounds double, ptr %278, i64 %268
  store double %272, ptr %279, align 8, !tbaa !21
  %280 = fadd double %267, %272
  %281 = add i64 %.8970, 2
  %282 = add nsw i64 %.0842968, 2
  %exitcond1105.not.1 = icmp eq i64 %281, %241
  br i1 %exitcond1105.not.1, label %.loopexit916.loopexit, label %.lr.ph972, !llvm.loop !60

.loopexit916.loopexit:                            ; preds = %.lr.ph972, %.lr.ph972.prol.loopexit
  %.lcssa1163 = phi double [ %.lcssa1163.unr, %.lr.ph972.prol.loopexit ], [ %280, %.lr.ph972 ]
  %.pre = load ptr, ptr %227, align 8, !tbaa !20
  br label %.loopexit916

.loopexit916:                                     ; preds = %.loopexit916.loopexit, %234, %233
  %283 = phi ptr [ %.pre1121, %233 ], [ %.pre1121, %234 ], [ %.pre, %.loopexit916.loopexit ]
  %.9833 = phi double [ %.7831985, %233 ], [ %.7831985, %234 ], [ %.lcssa1163, %.loopexit916.loopexit ]
  %.9 = phi i64 [ %.7986, %233 ], [ %.7986, %234 ], [ %241, %.loopexit916.loopexit ]
  %284 = load ptr, ptr %232, align 8, !tbaa !20
  %285 = getelementptr inbounds i64, ptr %284, i64 %.4857984
  %286 = load i64, ptr %285, align 8, !tbaa !44
  %287 = getelementptr inbounds i64, ptr %283, i64 %.4857984
  %288 = load i64, ptr %287, align 8, !tbaa !44
  %.not905 = icmp eq i64 %286, %288
  br i1 %.not905, label %293, label %289

289:                                              ; preds = %.loopexit916
  %290 = load ptr, ptr %228, align 8, !tbaa !20
  %291 = getelementptr inbounds double, ptr %290, i64 %288
  %292 = load double, ptr %291, align 8, !tbaa !21
  br label %293

293:                                              ; preds = %289, %.loopexit916
  %.0838 = phi double [ %292, %289 ], [ 0.000000e+00, %.loopexit916 ]
  %294 = load ptr, ptr %230, align 8, !tbaa !20
  %295 = getelementptr inbounds i64, ptr %294, i64 %.9
  store i64 %.4857984, ptr %295, align 8, !tbaa !44
  %296 = load ptr, ptr %231, align 8, !tbaa !20
  %297 = getelementptr inbounds double, ptr %296, i64 %.9
  store double %.0838, ptr %297, align 8, !tbaa !21
  %298 = fadd double %.9833, %.0838
  %299 = add i64 %.9, 1
  br i1 %7, label %300, label %.loopexit

300:                                              ; preds = %293
  %301 = load ptr, ptr %232, align 8, !tbaa !20
  %302 = getelementptr inbounds i64, ptr %301, i64 %.4857984
  %303 = load i64, ptr %302, align 8, !tbaa !44
  %304 = load ptr, ptr %214, align 8, !tbaa !20
  %305 = getelementptr inbounds i64, ptr %304, i64 %.4857984
  %306 = getelementptr inbounds i8, ptr %305, i64 8
  %307 = load i64, ptr %306, align 8, !tbaa !44
  %.not906.not975 = icmp slt i64 %303, %307
  br i1 %.not906.not975, label %.lr.ph980.preheader, label %.loopexit

.lr.ph980.preheader:                              ; preds = %300
  %308 = add i64 %299, %307
  %309 = sub i64 %308, %303
  %310 = sub i64 %307, %303
  %.neg1175 = add i64 %303, 1
  %xtraiter1165 = and i64 %310, 1
  %lcmp.mod1166.not = icmp eq i64 %xtraiter1165, 0
  br i1 %lcmp.mod1166.not, label %.lr.ph980.prol.loopexit, label %.lr.ph980.prol

.lr.ph980.prol:                                   ; preds = %.lr.ph980.preheader
  %311 = load ptr, ptr %228, align 8, !tbaa !20
  %312 = getelementptr inbounds double, ptr %311, i64 %303
  %313 = load double, ptr %312, align 8, !tbaa !21
  %314 = load ptr, ptr %229, align 8, !tbaa !20
  %315 = getelementptr inbounds i64, ptr %314, i64 %303
  %316 = load i64, ptr %315, align 8, !tbaa !44
  %317 = load ptr, ptr %230, align 8, !tbaa !20
  %318 = getelementptr inbounds i64, ptr %317, i64 %299
  store i64 %316, ptr %318, align 8, !tbaa !44
  %319 = load ptr, ptr %231, align 8, !tbaa !20
  %320 = getelementptr inbounds double, ptr %319, i64 %299
  store double %313, ptr %320, align 8, !tbaa !21
  %321 = fadd double %298, %313
  %322 = add i64 %.9, 2
  %323 = add nsw i64 %303, 1
  br label %.lr.ph980.prol.loopexit

.lr.ph980.prol.loopexit:                          ; preds = %.lr.ph980.prol, %.lr.ph980.preheader
  %.lcssa1164.unr = phi double [ poison, %.lr.ph980.preheader ], [ %321, %.lr.ph980.prol ]
  %.10978.unr = phi i64 [ %299, %.lr.ph980.preheader ], [ %322, %.lr.ph980.prol ]
  %.10834977.unr = phi double [ %298, %.lr.ph980.preheader ], [ %321, %.lr.ph980.prol ]
  %.1843976.unr = phi i64 [ %303, %.lr.ph980.preheader ], [ %323, %.lr.ph980.prol ]
  %324 = icmp eq i64 %307, %.neg1175
  br i1 %324, label %.loopexit, label %.lr.ph980

.lr.ph980:                                        ; preds = %.lr.ph980.prol.loopexit, %.lr.ph980
  %.10978 = phi i64 [ %349, %.lr.ph980 ], [ %.10978.unr, %.lr.ph980.prol.loopexit ]
  %.10834977 = phi double [ %348, %.lr.ph980 ], [ %.10834977.unr, %.lr.ph980.prol.loopexit ]
  %.1843976 = phi i64 [ %350, %.lr.ph980 ], [ %.1843976.unr, %.lr.ph980.prol.loopexit ]
  %325 = load ptr, ptr %228, align 8, !tbaa !20
  %326 = getelementptr inbounds double, ptr %325, i64 %.1843976
  %327 = load double, ptr %326, align 8, !tbaa !21
  %328 = load ptr, ptr %229, align 8, !tbaa !20
  %329 = getelementptr inbounds i64, ptr %328, i64 %.1843976
  %330 = load i64, ptr %329, align 8, !tbaa !44
  %331 = load ptr, ptr %230, align 8, !tbaa !20
  %332 = getelementptr inbounds i64, ptr %331, i64 %.10978
  store i64 %330, ptr %332, align 8, !tbaa !44
  %333 = load ptr, ptr %231, align 8, !tbaa !20
  %334 = getelementptr inbounds double, ptr %333, i64 %.10978
  store double %327, ptr %334, align 8, !tbaa !21
  %335 = fadd double %.10834977, %327
  %336 = add i64 %.10978, 1
  %337 = add nsw i64 %.1843976, 1
  %338 = load ptr, ptr %228, align 8, !tbaa !20
  %339 = getelementptr inbounds double, ptr %338, i64 %337
  %340 = load double, ptr %339, align 8, !tbaa !21
  %341 = load ptr, ptr %229, align 8, !tbaa !20
  %342 = getelementptr inbounds i64, ptr %341, i64 %337
  %343 = load i64, ptr %342, align 8, !tbaa !44
  %344 = load ptr, ptr %230, align 8, !tbaa !20
  %345 = getelementptr inbounds i64, ptr %344, i64 %336
  store i64 %343, ptr %345, align 8, !tbaa !44
  %346 = load ptr, ptr %231, align 8, !tbaa !20
  %347 = getelementptr inbounds double, ptr %346, i64 %336
  store double %340, ptr %347, align 8, !tbaa !21
  %348 = fadd double %335, %340
  %349 = add i64 %.10978, 2
  %350 = add nsw i64 %.1843976, 2
  %exitcond1106.not.1 = icmp eq i64 %349, %309
  br i1 %exitcond1106.not.1, label %.loopexit, label %.lr.ph980, !llvm.loop !61

.loopexit:                                        ; preds = %.lr.ph980.prol.loopexit, %.lr.ph980, %300, %293
  %.11835 = phi double [ %298, %293 ], [ %298, %300 ], [ %.lcssa1164.unr, %.lr.ph980.prol.loopexit ], [ %348, %.lr.ph980 ]
  %.11 = phi i64 [ %299, %293 ], [ %299, %300 ], [ %309, %.lr.ph980 ], [ %309, %.lr.ph980.prol.loopexit ]
  %351 = load ptr, ptr %224, align 8, !tbaa !20
  %352 = add nuw nsw i64 %.4857984, 1
  %353 = getelementptr inbounds i64, ptr %351, i64 %352
  store i64 %.11, ptr %353, align 8, !tbaa !44
  %354 = load i64, ptr %0, align 8, !tbaa !25
  %.not883.not = icmp slt i64 %352, %354
  br i1 %.not883.not, label %233, label %._crit_edge989, !llvm.loop !62

._crit_edge989:                                   ; preds = %.loopexit, %204
  %.7831.lcssa = phi double [ 0.000000e+00, %204 ], [ %.11835, %.loopexit ]
  %.7.lcssa = phi i64 [ 0, %204 ], [ %.11, %.loopexit ]
  %355 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %.7831.lcssa, ptr noundef %23)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %355, ptr noundef nonnull @.str.656, ptr noundef %23)
  %356 = load i64, ptr %115, align 8, !tbaa !59
  %.not884 = icmp sgt i64 %.7.lcssa, %356
  br i1 %.not884, label %.sink.split, label %.sink.split.sink.split

.sink.split.sink.split:                           ; preds = %._crit_edge989, %._crit_edge964
  %.sink1140 = phi ptr [ %149, %._crit_edge964 ], [ %219, %._crit_edge989 ]
  %.7.lcssa.sink = phi i64 [ %.0.lcssa, %._crit_edge964 ], [ %.7.lcssa, %._crit_edge989 ]
  %357 = load i64, ptr %.sink1140, align 8, !tbaa !63
  %358 = icmp sle i64 %.7.lcssa.sink, %357
  br label %.sink.split

.sink.split:                                      ; preds = %.sink.split.sink.split, %._crit_edge989, %._crit_edge964
  %.sink = phi i1 [ false, %._crit_edge964 ], [ false, %._crit_edge989 ], [ %358, %.sink.split.sink.split ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %.sink, ptr noundef nonnull @.str.655, ptr noundef %23)
  tail call void @_ZN11alglib_impl22sparsecreatecrsinplaceEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef nonnull %115, ptr noundef %23)
  br label %359

359:                                              ; preds = %.sink.split, %._crit_edge930
  br i1 %7, label %360, label %362

360:                                              ; preds = %359
  %361 = getelementptr inbounds i8, ptr %0, i64 23016
  tail call void @_ZN11alglib_impl25sparsecopytransposecrsbufEPKNS_12sparsematrixEPS0_PNS_8ae_stateE(ptr noundef nonnull %115, ptr noundef nonnull %361, ptr noundef %23)
  tail call void @_ZN11alglib_impl13sparsecopybufEPKNS_12sparsematrixEPS0_PNS_8ae_stateE(ptr noundef nonnull %361, ptr noundef nonnull %115, ptr noundef %23)
  br label %362

362:                                              ; preds = %360, %359
  br i1 %.not.not9241128, label %.preheader915, label %375

.preheader915:                                    ; preds = %362
  %363 = getelementptr inbounds i8, ptr %9, i64 56
  br label %364

364:                                              ; preds = %.preheader915, %364
  %.5858992 = phi i64 [ 0, %.preheader915 ], [ %370, %364 ]
  %365 = load ptr, ptr %363, align 8, !tbaa !20
  %366 = getelementptr inbounds double, ptr %365, i64 %.5858992
  %367 = load double, ptr %366, align 8, !tbaa !21
  %368 = tail call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %367, ptr noundef %23)
  %369 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %368, double noundef 1.000000e+00)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %369, ptr noundef nonnull @.str.657, ptr noundef %23)
  %370 = add nuw nsw i64 %.5858992, 1
  %exitcond1110.not = icmp eq i64 %370, %10
  br i1 %exitcond1110.not, label %371, label %364, !llvm.loop !64

371:                                              ; preds = %364
  %372 = load i64, ptr %0, align 8, !tbaa !25
  %373 = getelementptr inbounds i8, ptr %0, i64 23752
  tail call void @_ZN11alglib_impl11rcopyallocmEllPKNS_9ae_matrixEPS0_PNS_8ae_stateE(i64 noundef %10, i64 noundef %372, ptr noundef %8, ptr noundef nonnull %373, ptr noundef %23)
  %374 = getelementptr inbounds i8, ptr %0, i64 23832
  tail call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %10, ptr noundef nonnull %9, ptr noundef nonnull %374, ptr noundef %23)
  br label %375

375:                                              ; preds = %371, %362
  %376 = load i64, ptr %0, align 8, !tbaa !25
  %377 = getelementptr inbounds i8, ptr %0, i64 23752
  %378 = getelementptr inbounds i8, ptr %0, i64 23832
  tail call void @_ZN11alglib_impl20scalesparseqpinplaceEPKNS_9ae_vectorElPNS_12sparsematrixEPNS_9ae_matrixEPS0_lS7_PNS_8ae_stateE(ptr noundef nonnull %83, i64 noundef %376, ptr noundef nonnull %115, ptr noundef nonnull %377, ptr noundef nonnull %378, i64 noundef %10, ptr noundef nonnull %114, ptr noundef %23)
  br i1 %22, label %397, label %379

379:                                              ; preds = %375
  %380 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %12, double noundef 0.000000e+00)
  br i1 %380, label %381, label %386

381:                                              ; preds = %379
  %382 = load i64, ptr %0, align 8, !tbaa !25
  %383 = tail call noundef double @_ZN11alglib_impl24normalizesparseqpinplaceEPNS_12sparsematrixEbPNS_9ae_matrixEPNS_9ae_vectorElS5_lPNS_8ae_stateE(ptr noundef nonnull %115, i1 noundef zeroext false, ptr noundef nonnull %377, ptr noundef nonnull %378, i64 noundef %10, ptr noundef nonnull %114, i64 noundef %382, ptr noundef %23)
  %384 = getelementptr inbounds i8, ptr %0, i64 256
  store double %383, ptr %384, align 8, !tbaa !65
  %385 = tail call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %383, double noundef 1.000000e+00, ptr noundef %23)
  store double %385, ptr %384, align 8, !tbaa !65
  br label %399

386:                                              ; preds = %379
  %387 = fdiv double 1.000000e+00, %12
  %388 = getelementptr inbounds i8, ptr %0, i64 23568
  %389 = load ptr, ptr %388, align 8, !tbaa !20
  %390 = load i64, ptr %0, align 8, !tbaa !25
  %391 = getelementptr inbounds i64, ptr %389, i64 %390
  %392 = load i64, ptr %391, align 8, !tbaa !44
  tail call void @_ZN11alglib_impl5rmulvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %392, double noundef %387, ptr noundef nonnull %115, ptr noundef %23)
  tail call void @_ZN11alglib_impl5rmulvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %76, double noundef %387, ptr noundef nonnull %114, ptr noundef %23)
  br i1 %.not.not9241128, label %.lr.ph996, label %._crit_edge997

.lr.ph996:                                        ; preds = %386, %.lr.ph996
  %.2844994 = phi i64 [ %395, %.lr.ph996 ], [ 0, %386 ]
  %393 = load i64, ptr %0, align 8, !tbaa !25
  %394 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %387, ptr noundef %23)
  tail call void @_ZN11alglib_impl5rmulrEldPNS_9ae_matrixElPNS_8ae_stateE(i64 noundef %393, double noundef %394, ptr noundef nonnull %377, i64 noundef %.2844994, ptr noundef %23)
  %395 = add nuw nsw i64 %.2844994, 1
  %exitcond1111.not = icmp eq i64 %395, %10
  br i1 %exitcond1111.not, label %._crit_edge997, label %.lr.ph996, !llvm.loop !66

._crit_edge997:                                   ; preds = %.lr.ph996, %386
  %396 = getelementptr inbounds i8, ptr %0, i64 256
  store double %12, ptr %396, align 8, !tbaa !65
  br label %399

397:                                              ; preds = %375
  %398 = getelementptr inbounds i8, ptr %0, i64 256
  store double 1.000000e+00, ptr %398, align 8, !tbaa !65
  br label %399

399:                                              ; preds = %381, %._crit_edge997, %397
  %400 = getelementptr inbounds i8, ptr %0, i64 328
  %401 = getelementptr inbounds i8, ptr %0, i64 648
  store i64 1, ptr %401, align 8, !tbaa !67
  %402 = getelementptr inbounds i8, ptr %0, i64 656
  store i64 %76, ptr %402, align 8, !tbaa !68
  %403 = getelementptr inbounds i8, ptr %0, i64 664
  store i64 %76, ptr %403, align 8, !tbaa !69
  %404 = add nsw i64 %76, 1
  %405 = getelementptr inbounds i8, ptr %0, i64 456
  tail call void @_ZN11alglib_impl7iallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %404, ptr noundef nonnull %405, ptr noundef %23)
  %406 = load i64, ptr %116, align 8, !tbaa !47
  %407 = icmp eq i64 %406, 1
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %407, ptr noundef nonnull @.str.589, ptr noundef %23)
  %408 = load i64, ptr %117, align 8, !tbaa !48
  %409 = icmp eq i64 %408, %3
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %409, ptr noundef nonnull @.str.590, ptr noundef %23)
  %410 = load i64, ptr %118, align 8, !tbaa !49
  %411 = icmp eq i64 %410, %3
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %411, ptr noundef nonnull @.str.590, ptr noundef %23)
  %412 = getelementptr inbounds i8, ptr %0, i64 23568
  %413 = load ptr, ptr %412, align 8, !tbaa !20
  %414 = getelementptr inbounds i64, ptr %413, i64 %3
  %415 = load i64, ptr %414, align 8, !tbaa !44
  %416 = mul nsw i64 %119, %10
  %417 = load i64, ptr %78, align 8, !tbaa !42
  %418 = sub i64 %416, %3
  %419 = add i64 %418, %415
  %420 = add i64 %419, %417
  %421 = getelementptr inbounds i8, ptr %0, i64 392
  tail call void @_ZN11alglib_impl7iallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %420, ptr noundef nonnull %421, ptr noundef %23)
  %422 = load ptr, ptr %412, align 8, !tbaa !20
  %423 = getelementptr inbounds i64, ptr %422, i64 %3
  %424 = load i64, ptr %423, align 8, !tbaa !44
  %425 = load i64, ptr %78, align 8, !tbaa !42
  %426 = add i64 %418, %424
  %427 = add i64 %426, %425
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %427, ptr noundef nonnull %400, ptr noundef %23)
  %428 = getelementptr inbounds i8, ptr %0, i64 512
  %429 = load ptr, ptr %428, align 8, !tbaa !20
  store i64 0, ptr %429, align 8, !tbaa !44
  %430 = load i64, ptr %0, align 8, !tbaa !25
  %.not887.not1007 = icmp sgt i64 %430, 0
  br i1 %.not887.not1007, label %.lr.ph1012, label %._crit_edge1013

.lr.ph1012:                                       ; preds = %399
  %431 = getelementptr inbounds i8, ptr %0, i64 23632
  %432 = getelementptr inbounds i8, ptr %0, i64 23440
  %433 = getelementptr inbounds i8, ptr %0, i64 23504
  %434 = getelementptr inbounds i8, ptr %0, i64 448
  %435 = getelementptr inbounds i8, ptr %0, i64 384
  %436 = getelementptr inbounds i8, ptr %0, i64 23696
  br label %437

437:                                              ; preds = %.lr.ph1012, %495
  %.121010 = phi i64 [ 0, %.lr.ph1012 ], [ %501, %495 ]
  %.128361009 = phi double [ 0.000000e+00, %.lr.ph1012 ], [ %500, %495 ]
  %.68591008 = phi i64 [ 0, %.lr.ph1012 ], [ %503, %495 ]
  %438 = load ptr, ptr %412, align 8, !tbaa !20
  %439 = getelementptr inbounds i64, ptr %438, i64 %.68591008
  %440 = load i64, ptr %439, align 8, !tbaa !44
  %441 = load ptr, ptr %431, align 8, !tbaa !20
  %442 = getelementptr inbounds i64, ptr %441, i64 %.68591008
  %443 = load i64, ptr %442, align 8, !tbaa !44
  %.not902.not998 = icmp slt i64 %440, %443
  br i1 %.not902.not998, label %.lr.ph1003.preheader, label %._crit_edge1004

.lr.ph1003.preheader:                             ; preds = %437
  %444 = add i64 %.121010, %443
  %445 = sub i64 %444, %440
  %446 = sub i64 %443, %440
  %.neg1176 = add i64 %440, 1
  %xtraiter1167 = and i64 %446, 1
  %lcmp.mod1168.not = icmp eq i64 %xtraiter1167, 0
  br i1 %lcmp.mod1168.not, label %.lr.ph1003.prol.loopexit, label %.lr.ph1003.prol

.lr.ph1003.prol:                                  ; preds = %.lr.ph1003.preheader
  %447 = load ptr, ptr %432, align 8, !tbaa !20
  %448 = getelementptr inbounds double, ptr %447, i64 %440
  %449 = load double, ptr %448, align 8, !tbaa !21
  %450 = load ptr, ptr %433, align 8, !tbaa !20
  %451 = getelementptr inbounds i64, ptr %450, i64 %440
  %452 = load i64, ptr %451, align 8, !tbaa !44
  %453 = load ptr, ptr %434, align 8, !tbaa !20
  %454 = getelementptr inbounds i64, ptr %453, i64 %.121010
  store i64 %452, ptr %454, align 8, !tbaa !44
  %455 = load ptr, ptr %435, align 8, !tbaa !20
  %456 = getelementptr inbounds double, ptr %455, i64 %.121010
  store double %449, ptr %456, align 8, !tbaa !21
  %457 = fadd double %.128361009, %449
  %458 = add i64 %.121010, 1
  %459 = add nsw i64 %440, 1
  br label %.lr.ph1003.prol.loopexit

.lr.ph1003.prol.loopexit:                         ; preds = %.lr.ph1003.prol, %.lr.ph1003.preheader
  %.lcssa1158.unr = phi double [ poison, %.lr.ph1003.preheader ], [ %457, %.lr.ph1003.prol ]
  %.131001.unr = phi i64 [ %.121010, %.lr.ph1003.preheader ], [ %458, %.lr.ph1003.prol ]
  %.138371000.unr = phi double [ %.128361009, %.lr.ph1003.preheader ], [ %457, %.lr.ph1003.prol ]
  %.3845999.unr = phi i64 [ %440, %.lr.ph1003.preheader ], [ %459, %.lr.ph1003.prol ]
  %460 = icmp eq i64 %443, %.neg1176
  br i1 %460, label %._crit_edge1004.loopexit, label %.lr.ph1003

.lr.ph1003:                                       ; preds = %.lr.ph1003.prol.loopexit, %.lr.ph1003
  %.131001 = phi i64 [ %485, %.lr.ph1003 ], [ %.131001.unr, %.lr.ph1003.prol.loopexit ]
  %.138371000 = phi double [ %484, %.lr.ph1003 ], [ %.138371000.unr, %.lr.ph1003.prol.loopexit ]
  %.3845999 = phi i64 [ %486, %.lr.ph1003 ], [ %.3845999.unr, %.lr.ph1003.prol.loopexit ]
  %461 = load ptr, ptr %432, align 8, !tbaa !20
  %462 = getelementptr inbounds double, ptr %461, i64 %.3845999
  %463 = load double, ptr %462, align 8, !tbaa !21
  %464 = load ptr, ptr %433, align 8, !tbaa !20
  %465 = getelementptr inbounds i64, ptr %464, i64 %.3845999
  %466 = load i64, ptr %465, align 8, !tbaa !44
  %467 = load ptr, ptr %434, align 8, !tbaa !20
  %468 = getelementptr inbounds i64, ptr %467, i64 %.131001
  store i64 %466, ptr %468, align 8, !tbaa !44
  %469 = load ptr, ptr %435, align 8, !tbaa !20
  %470 = getelementptr inbounds double, ptr %469, i64 %.131001
  store double %463, ptr %470, align 8, !tbaa !21
  %471 = fadd double %.138371000, %463
  %472 = add i64 %.131001, 1
  %473 = add nsw i64 %.3845999, 1
  %474 = load ptr, ptr %432, align 8, !tbaa !20
  %475 = getelementptr inbounds double, ptr %474, i64 %473
  %476 = load double, ptr %475, align 8, !tbaa !21
  %477 = load ptr, ptr %433, align 8, !tbaa !20
  %478 = getelementptr inbounds i64, ptr %477, i64 %473
  %479 = load i64, ptr %478, align 8, !tbaa !44
  %480 = load ptr, ptr %434, align 8, !tbaa !20
  %481 = getelementptr inbounds i64, ptr %480, i64 %472
  store i64 %479, ptr %481, align 8, !tbaa !44
  %482 = load ptr, ptr %435, align 8, !tbaa !20
  %483 = getelementptr inbounds double, ptr %482, i64 %472
  store double %476, ptr %483, align 8, !tbaa !21
  %484 = fadd double %471, %476
  %485 = add i64 %.131001, 2
  %486 = add nsw i64 %.3845999, 2
  %exitcond1112.not.1 = icmp eq i64 %485, %445
  br i1 %exitcond1112.not.1, label %._crit_edge1004.loopexit, label %.lr.ph1003, !llvm.loop !70

._crit_edge1004.loopexit:                         ; preds = %.lr.ph1003, %.lr.ph1003.prol.loopexit
  %.lcssa1158 = phi double [ %.lcssa1158.unr, %.lr.ph1003.prol.loopexit ], [ %484, %.lr.ph1003 ]
  %.pre1122 = load ptr, ptr %431, align 8, !tbaa !20
  %.phi.trans.insert = getelementptr inbounds i64, ptr %.pre1122, i64 %.68591008
  %.pre1123 = load i64, ptr %.phi.trans.insert, align 8, !tbaa !44
  br label %._crit_edge1004

._crit_edge1004:                                  ; preds = %._crit_edge1004.loopexit, %437
  %487 = phi i64 [ %443, %437 ], [ %.pre1123, %._crit_edge1004.loopexit ]
  %.13837.lcssa = phi double [ %.128361009, %437 ], [ %.lcssa1158, %._crit_edge1004.loopexit ]
  %.13.lcssa = phi i64 [ %.121010, %437 ], [ %445, %._crit_edge1004.loopexit ]
  %488 = load ptr, ptr %436, align 8, !tbaa !20
  %489 = getelementptr inbounds i64, ptr %488, i64 %.68591008
  %490 = load i64, ptr %489, align 8, !tbaa !44
  %.not903 = icmp eq i64 %490, %487
  br i1 %.not903, label %495, label %491

491:                                              ; preds = %._crit_edge1004
  %492 = load ptr, ptr %432, align 8, !tbaa !20
  %493 = getelementptr inbounds double, ptr %492, i64 %487
  %494 = load double, ptr %493, align 8, !tbaa !21
  br label %495

495:                                              ; preds = %491, %._crit_edge1004
  %.1839 = phi double [ %494, %491 ], [ 0.000000e+00, %._crit_edge1004 ]
  %496 = load ptr, ptr %434, align 8, !tbaa !20
  %497 = getelementptr inbounds i64, ptr %496, i64 %.13.lcssa
  store i64 %.68591008, ptr %497, align 8, !tbaa !44
  %498 = load ptr, ptr %435, align 8, !tbaa !20
  %499 = getelementptr inbounds double, ptr %498, i64 %.13.lcssa
  store double %.1839, ptr %499, align 8, !tbaa !21
  %500 = fadd double %.13837.lcssa, %.1839
  %501 = add nsw i64 %.13.lcssa, 1
  %502 = load ptr, ptr %428, align 8, !tbaa !20
  %503 = add nuw nsw i64 %.68591008, 1
  %504 = getelementptr inbounds i64, ptr %502, i64 %503
  store i64 %501, ptr %504, align 8, !tbaa !44
  %505 = load i64, ptr %0, align 8, !tbaa !25
  %.not887.not = icmp slt i64 %503, %505
  br i1 %.not887.not, label %437, label %._crit_edge1013, !llvm.loop !71

._crit_edge1013:                                  ; preds = %495, %399
  %.12836.lcssa = phi double [ 0.000000e+00, %399 ], [ %500, %495 ]
  %.12.lcssa = phi i64 [ 0, %399 ], [ %501, %495 ]
  %506 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %.12836.lcssa, ptr noundef %23)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %506, ptr noundef nonnull @.str.656, ptr noundef %23)
  %507 = load i64, ptr %0, align 8, !tbaa !25
  %508 = load i64, ptr %77, align 8, !tbaa !41
  %.not888.not1023 = icmp slt i64 %507, %508
  br i1 %.not888.not1023, label %.lr.ph1026, label %.preheader914

.lr.ph1026:                                       ; preds = %._crit_edge1013
  %509 = getelementptr inbounds i8, ptr %0, i64 23824
  %510 = getelementptr inbounds i8, ptr %0, i64 448
  %511 = getelementptr inbounds i8, ptr %0, i64 384
  %512 = getelementptr inbounds i8, ptr %0, i64 23888
  br label %516

.preheader914:                                    ; preds = %._crit_edge1021, %._crit_edge1013
  %.14.lcssa = phi i64 [ %.12.lcssa, %._crit_edge1013 ], [ %554, %._crit_edge1021 ]
  %.lcssa = phi i64 [ %508, %._crit_edge1013 ], [ %558, %._crit_edge1021 ]
  %513 = load i64, ptr %78, align 8, !tbaa !42
  %.not889.not1029 = icmp slt i64 %.lcssa, %513
  br i1 %.not889.not1029, label %.lr.ph1032, label %._crit_edge1033

.lr.ph1032:                                       ; preds = %.preheader914
  %514 = getelementptr inbounds i8, ptr %0, i64 448
  %515 = getelementptr inbounds i8, ptr %0, i64 384
  br label %559

516:                                              ; preds = %.lr.ph1026, %._crit_edge1021
  %.78601024 = phi i64 [ %507, %.lr.ph1026 ], [ %556, %._crit_edge1021 ]
  %517 = load ptr, ptr %428, align 8, !tbaa !20
  %518 = getelementptr inbounds i64, ptr %517, i64 %.78601024
  %519 = load i64, ptr %518, align 8, !tbaa !44
  br i1 %25, label %.lr.ph1020.preheader, label %._crit_edge1021

.lr.ph1020.preheader:                             ; preds = %516
  %.pre1124 = load i64, ptr %0, align 8, !tbaa !25
  br label %.lr.ph1020

.lr.ph1020:                                       ; preds = %.lr.ph1020.preheader, %541
  %520 = phi i64 [ %542, %541 ], [ %.pre1124, %.lr.ph1020.preheader ]
  %.151018 = phi i64 [ %.16, %541 ], [ %519, %.lr.ph1020.preheader ]
  %.38501017 = phi i64 [ %543, %541 ], [ 0, %.lr.ph1020.preheader ]
  %521 = load ptr, ptr %509, align 8, !tbaa !20
  %522 = sub nsw i64 %.78601024, %520
  %523 = getelementptr inbounds ptr, ptr %521, i64 %522
  %524 = load ptr, ptr %523, align 8, !tbaa !51
  %525 = getelementptr inbounds double, ptr %524, i64 %.38501017
  %526 = load double, ptr %525, align 8, !tbaa !21
  %527 = fcmp une double %526, 0.000000e+00
  br i1 %527, label %528, label %541

528:                                              ; preds = %.lr.ph1020
  %529 = load ptr, ptr %510, align 8, !tbaa !20
  %530 = getelementptr inbounds i64, ptr %529, i64 %.151018
  store i64 %.38501017, ptr %530, align 8, !tbaa !44
  %531 = load ptr, ptr %509, align 8, !tbaa !20
  %532 = load i64, ptr %0, align 8, !tbaa !25
  %533 = sub nsw i64 %.78601024, %532
  %534 = getelementptr inbounds ptr, ptr %531, i64 %533
  %535 = load ptr, ptr %534, align 8, !tbaa !51
  %536 = getelementptr inbounds double, ptr %535, i64 %.38501017
  %537 = load double, ptr %536, align 8, !tbaa !21
  %538 = load ptr, ptr %511, align 8, !tbaa !20
  %539 = getelementptr inbounds double, ptr %538, i64 %.151018
  store double %537, ptr %539, align 8, !tbaa !21
  %540 = add nsw i64 %.151018, 1
  br label %541

541:                                              ; preds = %.lr.ph1020, %528
  %542 = phi i64 [ %532, %528 ], [ %520, %.lr.ph1020 ]
  %.16 = phi i64 [ %540, %528 ], [ %.151018, %.lr.ph1020 ]
  %543 = add nuw nsw i64 %.38501017, 1
  %exitcond1113.not = icmp eq i64 %543, %3
  br i1 %exitcond1113.not, label %._crit_edge1021, label %.lr.ph1020, !llvm.loop !72

._crit_edge1021:                                  ; preds = %541, %516
  %.15.lcssa = phi i64 [ %519, %516 ], [ %.16, %541 ]
  %544 = load ptr, ptr %510, align 8, !tbaa !20
  %545 = getelementptr inbounds i64, ptr %544, i64 %.15.lcssa
  store i64 %.78601024, ptr %545, align 8, !tbaa !44
  %546 = load ptr, ptr %512, align 8, !tbaa !20
  %547 = load i64, ptr %0, align 8, !tbaa !25
  %548 = sub nsw i64 %.78601024, %547
  %549 = getelementptr inbounds double, ptr %546, i64 %548
  %550 = load double, ptr %549, align 8, !tbaa !21
  %551 = fneg double %550
  %552 = load ptr, ptr %511, align 8, !tbaa !20
  %553 = getelementptr inbounds double, ptr %552, i64 %.15.lcssa
  store double %551, ptr %553, align 8, !tbaa !21
  %554 = add nsw i64 %.15.lcssa, 1
  %555 = load ptr, ptr %428, align 8, !tbaa !20
  %556 = add nsw i64 %.78601024, 1
  %557 = getelementptr inbounds i64, ptr %555, i64 %556
  store i64 %554, ptr %557, align 8, !tbaa !44
  %558 = load i64, ptr %77, align 8, !tbaa !41
  %.not888.not = icmp slt i64 %556, %558
  br i1 %.not888.not, label %516, label %.preheader914, !llvm.loop !73

559:                                              ; preds = %.lr.ph1032, %559
  %.171031 = phi i64 [ %.14.lcssa, %.lr.ph1032 ], [ %564, %559 ]
  %.88611030 = phi i64 [ %.lcssa, %.lr.ph1032 ], [ %566, %559 ]
  %560 = load ptr, ptr %514, align 8, !tbaa !20
  %561 = getelementptr inbounds i64, ptr %560, i64 %.171031
  store i64 %.88611030, ptr %561, align 8, !tbaa !44
  %562 = load ptr, ptr %515, align 8, !tbaa !20
  %563 = getelementptr inbounds double, ptr %562, i64 %.171031
  store double 0.000000e+00, ptr %563, align 8, !tbaa !21
  %564 = add nsw i64 %.171031, 1
  %565 = load ptr, ptr %428, align 8, !tbaa !20
  %566 = add nsw i64 %.88611030, 1
  %567 = getelementptr inbounds i64, ptr %565, i64 %566
  store i64 %564, ptr %567, align 8, !tbaa !44
  %568 = load i64, ptr %78, align 8, !tbaa !42
  %.not889.not = icmp slt i64 %566, %568
  br i1 %.not889.not, label %559, label %._crit_edge1033, !llvm.loop !74

._crit_edge1033:                                  ; preds = %559, %.preheader914
  %.17.lcssa = phi i64 [ %.14.lcssa, %.preheader914 ], [ %564, %559 ]
  %569 = load i64, ptr %400, align 8, !tbaa !75
  %.not890 = icmp sgt i64 %.17.lcssa, %569
  br i1 %.not890, label %573, label %570

570:                                              ; preds = %._crit_edge1033
  %571 = load i64, ptr %421, align 8, !tbaa !76
  %572 = icmp sle i64 %.17.lcssa, %571
  br label %573

573:                                              ; preds = %570, %._crit_edge1033
  %574 = phi i1 [ false, %._crit_edge1033 ], [ %572, %570 ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %574, ptr noundef nonnull @.str.655, ptr noundef %23)
  tail call void @_ZN11alglib_impl22sparsecreatecrsinplaceEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef nonnull %400, ptr noundef %23)
  %575 = load ptr, ptr %428, align 8, !tbaa !20
  %576 = load i64, ptr %78, align 8, !tbaa !42
  %577 = getelementptr inbounds i64, ptr %575, i64 %576
  %578 = load i64, ptr %577, align 8, !tbaa !44
  %579 = icmp eq i64 %578, %576
  %580 = getelementptr inbounds i8, ptr %0, i64 760
  %581 = zext i1 %579 to i8
  store i8 %581, ptr %580, align 8, !tbaa !77
  %582 = load i64, ptr %0, align 8, !tbaa !25
  %583 = getelementptr inbounds i8, ptr %0, i64 1224
  tail call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %582, ptr noundef %13, ptr noundef nonnull %583, ptr noundef %23)
  %584 = load i64, ptr %0, align 8, !tbaa !25
  %585 = getelementptr inbounds i8, ptr %0, i64 1288
  tail call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %584, ptr noundef %14, ptr noundef nonnull %585, ptr noundef %23)
  %586 = load i64, ptr %78, align 8, !tbaa !42
  %587 = getelementptr inbounds i8, ptr %23, i64 24
  %588 = load double, ptr %587, align 8, !tbaa !78
  %589 = getelementptr inbounds i8, ptr %0, i64 1352
  tail call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %586, double noundef %588, ptr noundef nonnull %589, ptr noundef %23)
  %590 = load i64, ptr %78, align 8, !tbaa !42
  %591 = getelementptr inbounds i8, ptr %23, i64 16
  %592 = load double, ptr %591, align 8, !tbaa !82
  %593 = getelementptr inbounds i8, ptr %0, i64 1416
  tail call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %590, double noundef %592, ptr noundef nonnull %593, ptr noundef %23)
  %594 = load i64, ptr %78, align 8, !tbaa !42
  %595 = getelementptr inbounds i8, ptr %0, i64 1608
  tail call void @_ZN11alglib_impl10bsetallocvElbPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %594, i1 noundef zeroext false, ptr noundef nonnull %595, ptr noundef %23)
  %596 = load i64, ptr %78, align 8, !tbaa !42
  %597 = getelementptr inbounds i8, ptr %0, i64 1672
  tail call void @_ZN11alglib_impl10bsetallocvElbPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %596, i1 noundef zeroext false, ptr noundef nonnull %597, ptr noundef %23)
  %598 = load i64, ptr %0, align 8, !tbaa !25
  %.not891.not1035 = icmp sgt i64 %598, 0
  br i1 %.not891.not1035, label %.lr.ph1038, label %._crit_edge1039

.lr.ph1038:                                       ; preds = %573
  %599 = getelementptr inbounds i8, ptr %13, i64 56
  %600 = getelementptr inbounds i8, ptr %0, i64 1664
  %601 = getelementptr inbounds i8, ptr %14, i64 56
  %602 = getelementptr inbounds i8, ptr %0, i64 1728
  %603 = getelementptr inbounds i8, ptr %0, i64 1408
  %604 = getelementptr inbounds i8, ptr %0, i64 1472
  br label %605

605:                                              ; preds = %.lr.ph1038, %637
  %.98621036 = phi i64 [ 0, %.lr.ph1038 ], [ %650, %637 ]
  %606 = load ptr, ptr %599, align 8, !tbaa !20
  %607 = getelementptr inbounds double, ptr %606, i64 %.98621036
  %608 = load double, ptr %607, align 8, !tbaa !21
  %609 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %608, ptr noundef %23)
  %610 = load ptr, ptr %600, align 8, !tbaa !20
  %611 = getelementptr inbounds i8, ptr %610, i64 %.98621036
  %612 = zext i1 %609 to i8
  store i8 %612, ptr %611, align 1, !tbaa !83
  %613 = load ptr, ptr %601, align 8, !tbaa !20
  %614 = getelementptr inbounds double, ptr %613, i64 %.98621036
  %615 = load double, ptr %614, align 8, !tbaa !21
  %616 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %615, ptr noundef %23)
  %617 = load ptr, ptr %602, align 8, !tbaa !20
  %618 = getelementptr inbounds i8, ptr %617, i64 %.98621036
  %619 = zext i1 %616 to i8
  store i8 %619, ptr %618, align 1, !tbaa !83
  %620 = load ptr, ptr %600, align 8, !tbaa !20
  %621 = getelementptr inbounds i8, ptr %620, i64 %.98621036
  %622 = load i8, ptr %621, align 1, !tbaa !83, !range !84, !noundef !85
  %623 = trunc nuw i8 %622 to i1
  br i1 %623, label %624, label %637

624:                                              ; preds = %605
  %625 = load ptr, ptr %602, align 8, !tbaa !20
  %626 = getelementptr inbounds i8, ptr %625, i64 %.98621036
  %627 = load i8, ptr %626, align 1, !tbaa !83, !range !84, !noundef !85
  %628 = trunc nuw i8 %627 to i1
  br i1 %628, label %629, label %637

629:                                              ; preds = %624
  %630 = load ptr, ptr %599, align 8, !tbaa !20
  %631 = getelementptr inbounds double, ptr %630, i64 %.98621036
  %632 = load double, ptr %631, align 8, !tbaa !21
  %633 = load ptr, ptr %601, align 8, !tbaa !20
  %634 = getelementptr inbounds double, ptr %633, i64 %.98621036
  %635 = load double, ptr %634, align 8, !tbaa !21
  %636 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %632, double noundef %635)
  br label %637

637:                                              ; preds = %629, %624, %605
  %638 = phi i1 [ false, %624 ], [ false, %605 ], [ %636, %629 ]
  %639 = xor i1 %638, true
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %639, ptr noundef nonnull @.str.658, ptr noundef %23)
  %640 = load ptr, ptr %599, align 8, !tbaa !20
  %641 = getelementptr inbounds double, ptr %640, i64 %.98621036
  %642 = load double, ptr %641, align 8, !tbaa !21
  %643 = load ptr, ptr %603, align 8, !tbaa !20
  %644 = getelementptr inbounds double, ptr %643, i64 %.98621036
  store double %642, ptr %644, align 8, !tbaa !21
  %645 = load ptr, ptr %601, align 8, !tbaa !20
  %646 = getelementptr inbounds double, ptr %645, i64 %.98621036
  %647 = load double, ptr %646, align 8, !tbaa !21
  %648 = load ptr, ptr %604, align 8, !tbaa !20
  %649 = getelementptr inbounds double, ptr %648, i64 %.98621036
  store double %647, ptr %649, align 8, !tbaa !21
  %650 = add nuw nsw i64 %.98621036, 1
  %651 = load i64, ptr %0, align 8, !tbaa !25
  %.not891.not = icmp slt i64 %650, %651
  br i1 %.not891.not, label %605, label %._crit_edge1039, !llvm.loop !86

._crit_edge1039:                                  ; preds = %637, %573
  %652 = load i64, ptr %78, align 8, !tbaa !42
  tail call void @_ZN11alglib_impl19scaleshiftbcinplaceEPKNS_9ae_vectorES2_PS0_S3_lPNS_8ae_stateE(ptr noundef nonnull %83, ptr noundef nonnull %85, ptr noundef nonnull %589, ptr noundef nonnull %593, i64 noundef %652, ptr noundef %23)
  %653 = getelementptr inbounds i8, ptr %0, i64 2168
  store i64 %48, ptr %653, align 8, !tbaa !87
  %.not892.not1040 = icmp sgt i64 %48, 0
  br i1 %.not892.not1040, label %.lr.ph1043, label %._crit_edge1044

.lr.ph1043:                                       ; preds = %._crit_edge1039
  %654 = getelementptr inbounds i8, ptr %19, i64 56
  %655 = getelementptr inbounds i8, ptr %20, i64 56
  br label %656

656:                                              ; preds = %.lr.ph1043, %677
  %.108631041 = phi i64 [ 0, %.lr.ph1043 ], [ %679, %677 ]
  %657 = load ptr, ptr %654, align 8, !tbaa !20
  %658 = getelementptr inbounds double, ptr %657, i64 %.108631041
  %659 = load double, ptr %658, align 8, !tbaa !21
  %660 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %659, ptr noundef %23)
  br i1 %660, label %666, label %661

661:                                              ; preds = %656
  %662 = load ptr, ptr %654, align 8, !tbaa !20
  %663 = getelementptr inbounds double, ptr %662, i64 %.108631041
  %664 = load double, ptr %663, align 8, !tbaa !21
  %665 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isneginfEdPNS_8ae_stateE(double noundef %664, ptr noundef %23)
  br label %666

666:                                              ; preds = %661, %656
  %667 = phi i1 [ true, %656 ], [ %665, %661 ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %667, ptr noundef nonnull @.str.659, ptr noundef %23)
  %668 = load ptr, ptr %655, align 8, !tbaa !20
  %669 = getelementptr inbounds double, ptr %668, i64 %.108631041
  %670 = load double, ptr %669, align 8, !tbaa !21
  %671 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %670, ptr noundef %23)
  br i1 %671, label %677, label %672

672:                                              ; preds = %666
  %673 = load ptr, ptr %655, align 8, !tbaa !20
  %674 = getelementptr inbounds double, ptr %673, i64 %.108631041
  %675 = load double, ptr %674, align 8, !tbaa !21
  %676 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isposinfEdPNS_8ae_stateE(double noundef %675, ptr noundef %23)
  br label %677

677:                                              ; preds = %672, %666
  %678 = phi i1 [ true, %666 ], [ %676, %672 ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %678, ptr noundef nonnull @.str.660, ptr noundef %23)
  %679 = add nuw nsw i64 %.108631041, 1
  %exitcond1114.not = icmp eq i64 %679, %48
  br i1 %exitcond1114.not, label %._crit_edge1044, label %656, !llvm.loop !88

._crit_edge1044:                                  ; preds = %677, %._crit_edge1039
  store i64 %48, ptr %653, align 8, !tbaa !87
  %680 = getelementptr inbounds i8, ptr %0, i64 22520
  %681 = getelementptr inbounds i8, ptr %0, i64 22848
  store i64 %48, ptr %681, align 8, !tbaa !89
  %682 = load i64, ptr %78, align 8, !tbaa !42
  %683 = getelementptr inbounds i8, ptr %0, i64 22856
  store i64 %682, ptr %683, align 8, !tbaa !90
  %684 = add nsw i64 %48, 1
  %685 = getelementptr inbounds i8, ptr %0, i64 22648
  tail call void @_ZN11alglib_impl7iallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %684, ptr noundef nonnull %685, ptr noundef %23)
  %686 = getelementptr inbounds i8, ptr %0, i64 22704
  %687 = load ptr, ptr %686, align 8, !tbaa !20
  store i64 0, ptr %687, align 8, !tbaa !44
  %.not893.not1052 = icmp sgt i64 %16, 0
  br i1 %.not893.not1052, label %.lr.ph1055, label %.preheader

.lr.ph1055:                                       ; preds = %._crit_edge1044
  %688 = getelementptr inbounds i8, ptr %0, i64 22584
  %689 = getelementptr inbounds i8, ptr %15, i64 184
  %690 = getelementptr inbounds i8, ptr %15, i64 120
  %691 = getelementptr inbounds i8, ptr %0, i64 22640
  %692 = getelementptr inbounds i8, ptr %15, i64 56
  %693 = getelementptr inbounds i8, ptr %0, i64 22576
  br label %698

.preheader:                                       ; preds = %._crit_edge1050, %._crit_edge1044
  %.not894.not1063 = icmp sgt i64 %18, 0
  br i1 %.not894.not1063, label %.lr.ph1065, label %._crit_edge1066

.lr.ph1065:                                       ; preds = %.preheader
  %694 = getelementptr inbounds i8, ptr %0, i64 22584
  %695 = getelementptr inbounds i8, ptr %17, i64 72
  %696 = getelementptr inbounds i8, ptr %0, i64 22640
  %697 = getelementptr inbounds i8, ptr %0, i64 22576
  br label %752

698:                                              ; preds = %.lr.ph1055, %._crit_edge1050
  %.118641053 = phi i64 [ 0, %.lr.ph1055 ], [ %709, %._crit_edge1050 ]
  %699 = load ptr, ptr %686, align 8, !tbaa !20
  %700 = getelementptr inbounds i64, ptr %699, i64 %.118641053
  %701 = load i64, ptr %700, align 8, !tbaa !44
  %702 = load i64, ptr %78, align 8, !tbaa !42
  %703 = add nsw i64 %702, %701
  tail call void @_ZN11alglib_impl6igrowvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %703, ptr noundef nonnull %688, ptr noundef %23)
  %704 = load i64, ptr %78, align 8, !tbaa !42
  %705 = add nsw i64 %704, %701
  tail call void @_ZN11alglib_impl6rgrowvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %705, ptr noundef nonnull %680, ptr noundef %23)
  %706 = load ptr, ptr %689, align 8, !tbaa !20
  %707 = getelementptr inbounds i64, ptr %706, i64 %.118641053
  %708 = load i64, ptr %707, align 8, !tbaa !44
  %709 = add nuw nsw i64 %.118641053, 1
  %710 = getelementptr inbounds i64, ptr %706, i64 %709
  %711 = load i64, ptr %710, align 8, !tbaa !44
  %.not900.not1045 = icmp slt i64 %708, %711
  br i1 %.not900.not1045, label %.lr.ph1049.preheader, label %._crit_edge1050

.lr.ph1049.preheader:                             ; preds = %698
  %712 = sub i64 %711, %708
  %.neg1177 = add i64 %708, 1
  %xtraiter1169 = and i64 %712, 1
  %lcmp.mod1170.not = icmp eq i64 %xtraiter1169, 0
  br i1 %lcmp.mod1170.not, label %.lr.ph1049.prol.loopexit, label %.lr.ph1049.prol

.lr.ph1049.prol:                                  ; preds = %.lr.ph1049.preheader
  %713 = load ptr, ptr %690, align 8, !tbaa !20
  %714 = getelementptr inbounds i64, ptr %713, i64 %708
  %715 = load i64, ptr %714, align 8, !tbaa !44
  %716 = load ptr, ptr %691, align 8, !tbaa !20
  %717 = getelementptr inbounds i64, ptr %716, i64 %701
  store i64 %715, ptr %717, align 8, !tbaa !44
  %718 = load ptr, ptr %692, align 8, !tbaa !20
  %719 = getelementptr inbounds double, ptr %718, i64 %708
  %720 = load double, ptr %719, align 8, !tbaa !21
  %721 = load ptr, ptr %693, align 8, !tbaa !20
  %722 = getelementptr inbounds double, ptr %721, i64 %701
  store double %720, ptr %722, align 8, !tbaa !21
  %723 = add nsw i64 %701, 1
  %724 = add nsw i64 %708, 1
  br label %.lr.ph1049.prol.loopexit

.lr.ph1049.prol.loopexit:                         ; preds = %.lr.ph1049.prol, %.lr.ph1049.preheader
  %.lcssa1154.unr = phi i64 [ poison, %.lr.ph1049.preheader ], [ %723, %.lr.ph1049.prol ]
  %.181047.unr = phi i64 [ %701, %.lr.ph1049.preheader ], [ %723, %.lr.ph1049.prol ]
  %.48511046.unr = phi i64 [ %708, %.lr.ph1049.preheader ], [ %724, %.lr.ph1049.prol ]
  %725 = icmp eq i64 %711, %.neg1177
  br i1 %725, label %._crit_edge1050, label %.lr.ph1049

.lr.ph1049:                                       ; preds = %.lr.ph1049.prol.loopexit, %.lr.ph1049
  %.181047 = phi i64 [ %748, %.lr.ph1049 ], [ %.181047.unr, %.lr.ph1049.prol.loopexit ]
  %.48511046 = phi i64 [ %749, %.lr.ph1049 ], [ %.48511046.unr, %.lr.ph1049.prol.loopexit ]
  %726 = load ptr, ptr %690, align 8, !tbaa !20
  %727 = getelementptr inbounds i64, ptr %726, i64 %.48511046
  %728 = load i64, ptr %727, align 8, !tbaa !44
  %729 = load ptr, ptr %691, align 8, !tbaa !20
  %730 = getelementptr inbounds i64, ptr %729, i64 %.181047
  store i64 %728, ptr %730, align 8, !tbaa !44
  %731 = load ptr, ptr %692, align 8, !tbaa !20
  %732 = getelementptr inbounds double, ptr %731, i64 %.48511046
  %733 = load double, ptr %732, align 8, !tbaa !21
  %734 = load ptr, ptr %693, align 8, !tbaa !20
  %735 = getelementptr inbounds double, ptr %734, i64 %.181047
  store double %733, ptr %735, align 8, !tbaa !21
  %736 = add nsw i64 %.181047, 1
  %737 = add nsw i64 %.48511046, 1
  %738 = load ptr, ptr %690, align 8, !tbaa !20
  %739 = getelementptr inbounds i64, ptr %738, i64 %737
  %740 = load i64, ptr %739, align 8, !tbaa !44
  %741 = load ptr, ptr %691, align 8, !tbaa !20
  %742 = getelementptr inbounds i64, ptr %741, i64 %736
  store i64 %740, ptr %742, align 8, !tbaa !44
  %743 = load ptr, ptr %692, align 8, !tbaa !20
  %744 = getelementptr inbounds double, ptr %743, i64 %737
  %745 = load double, ptr %744, align 8, !tbaa !21
  %746 = load ptr, ptr %693, align 8, !tbaa !20
  %747 = getelementptr inbounds double, ptr %746, i64 %736
  store double %745, ptr %747, align 8, !tbaa !21
  %748 = add nsw i64 %.181047, 2
  %749 = add nsw i64 %.48511046, 2
  %exitcond1115.not.1 = icmp eq i64 %749, %711
  br i1 %exitcond1115.not.1, label %._crit_edge1050, label %.lr.ph1049, !llvm.loop !91

._crit_edge1050:                                  ; preds = %.lr.ph1049.prol.loopexit, %.lr.ph1049, %698
  %.18.lcssa = phi i64 [ %701, %698 ], [ %.lcssa1154.unr, %.lr.ph1049.prol.loopexit ], [ %748, %.lr.ph1049 ]
  %750 = load ptr, ptr %686, align 8, !tbaa !20
  %751 = getelementptr inbounds i64, ptr %750, i64 %709
  store i64 %.18.lcssa, ptr %751, align 8, !tbaa !44
  %exitcond1116.not = icmp eq i64 %709, %16
  br i1 %exitcond1116.not, label %.preheader, label %698, !llvm.loop !92

752:                                              ; preds = %.lr.ph1065, %._crit_edge1061
  %.128651064 = phi i64 [ 0, %.lr.ph1065 ], [ %786, %._crit_edge1061 ]
  %753 = load ptr, ptr %686, align 8, !tbaa !20
  %754 = add nsw i64 %.128651064, %16
  %755 = getelementptr inbounds i64, ptr %753, i64 %754
  %756 = load i64, ptr %755, align 8, !tbaa !44
  %757 = load i64, ptr %78, align 8, !tbaa !42
  %758 = add nsw i64 %757, %756
  tail call void @_ZN11alglib_impl6igrowvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %758, ptr noundef nonnull %694, ptr noundef %23)
  %759 = load i64, ptr %78, align 8, !tbaa !42
  %760 = add nsw i64 %759, %756
  tail call void @_ZN11alglib_impl6rgrowvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %760, ptr noundef nonnull %680, ptr noundef %23)
  %761 = load i64, ptr %0, align 8, !tbaa !25
  %.not899.not1056 = icmp sgt i64 %761, 0
  br i1 %.not899.not1056, label %.lr.ph1060, label %._crit_edge1061

.lr.ph1060:                                       ; preds = %752, %780
  %762 = phi i64 [ %781, %780 ], [ %761, %752 ]
  %.191058 = phi i64 [ %.20, %780 ], [ %756, %752 ]
  %.48461057 = phi i64 [ %782, %780 ], [ 0, %752 ]
  %763 = load ptr, ptr %695, align 8, !tbaa !20
  %764 = getelementptr inbounds ptr, ptr %763, i64 %.128651064
  %765 = load ptr, ptr %764, align 8, !tbaa !51
  %766 = getelementptr inbounds double, ptr %765, i64 %.48461057
  %767 = load double, ptr %766, align 8, !tbaa !21
  %768 = fcmp une double %767, 0.000000e+00
  br i1 %768, label %769, label %780

769:                                              ; preds = %.lr.ph1060
  %770 = load ptr, ptr %696, align 8, !tbaa !20
  %771 = getelementptr inbounds i64, ptr %770, i64 %.191058
  store i64 %.48461057, ptr %771, align 8, !tbaa !44
  %772 = load ptr, ptr %695, align 8, !tbaa !20
  %773 = getelementptr inbounds ptr, ptr %772, i64 %.128651064
  %774 = load ptr, ptr %773, align 8, !tbaa !51
  %775 = getelementptr inbounds double, ptr %774, i64 %.48461057
  %776 = load double, ptr %775, align 8, !tbaa !21
  %777 = load ptr, ptr %697, align 8, !tbaa !20
  %778 = getelementptr inbounds double, ptr %777, i64 %.191058
  store double %776, ptr %778, align 8, !tbaa !21
  %779 = add nsw i64 %.191058, 1
  %.pre1125 = load i64, ptr %0, align 8, !tbaa !25
  br label %780

780:                                              ; preds = %.lr.ph1060, %769
  %781 = phi i64 [ %.pre1125, %769 ], [ %762, %.lr.ph1060 ]
  %.20 = phi i64 [ %779, %769 ], [ %.191058, %.lr.ph1060 ]
  %782 = add nuw nsw i64 %.48461057, 1
  %.not899.not = icmp slt i64 %782, %781
  br i1 %.not899.not, label %.lr.ph1060, label %._crit_edge1061, !llvm.loop !93

._crit_edge1061:                                  ; preds = %780, %752
  %.19.lcssa = phi i64 [ %756, %752 ], [ %.20, %780 ]
  %783 = load ptr, ptr %686, align 8, !tbaa !20
  %784 = getelementptr i64, ptr %783, i64 %754
  %785 = getelementptr i8, ptr %784, i64 8
  store i64 %.19.lcssa, ptr %785, align 8, !tbaa !44
  %786 = add nuw nsw i64 %.128651064, 1
  %exitcond1117.not = icmp eq i64 %786, %18
  br i1 %exitcond1117.not, label %._crit_edge1066, label %752, !llvm.loop !94

._crit_edge1066:                                  ; preds = %._crit_edge1061, %.preheader
  tail call void @_ZN11alglib_impl22sparsecreatecrsinplaceEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef nonnull %680, ptr noundef %23)
  %787 = getelementptr inbounds i8, ptr %0, i64 22888
  tail call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %48, ptr noundef nonnull %19, ptr noundef nonnull %787, ptr noundef %23)
  %788 = getelementptr inbounds i8, ptr %0, i64 22952
  tail call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %48, ptr noundef nonnull %20, ptr noundef nonnull %788, ptr noundef %23)
  %789 = load i64, ptr %78, align 8, !tbaa !42
  tail call void @_ZN11alglib_impl25scaleshiftsparselcinplaceEPKNS_9ae_vectorES2_lPNS_12sparsematrixElPS0_S5_PNS_8ae_stateE(ptr noundef nonnull %83, ptr noundef nonnull %85, i64 noundef %789, ptr noundef nonnull %680, i64 noundef %48, ptr noundef nonnull %787, ptr noundef nonnull %788, ptr noundef %23)
  br i1 %22, label %795, label %790

790:                                              ; preds = %._crit_edge1066
  %791 = load i64, ptr %78, align 8, !tbaa !42
  %792 = getelementptr inbounds i8, ptr %0, i64 2104
  br i1 %21, label %793, label %794

793:                                              ; preds = %790
  tail call void @_ZN11alglib_impl31normalizesparselcinplaceuniformEPNS_12sparsematrixElPNS_9ae_vectorES3_lS3_bPNS_8ae_stateE(ptr noundef nonnull %680, i64 noundef %48, ptr noundef nonnull %787, ptr noundef nonnull %788, i64 noundef %791, ptr noundef nonnull %792, i1 noundef zeroext true, ptr noundef %23)
  br label %797

794:                                              ; preds = %790
  tail call void @_ZN11alglib_impl24normalizesparselcinplaceEPNS_12sparsematrixElPNS_9ae_vectorES3_lbS3_bPNS_8ae_stateE(ptr noundef nonnull %680, i64 noundef %48, ptr noundef nonnull %787, ptr noundef nonnull %788, i64 noundef %791, i1 noundef zeroext true, ptr noundef nonnull %792, i1 noundef zeroext true, ptr noundef %23)
  br label %797

795:                                              ; preds = %._crit_edge1066
  %796 = getelementptr inbounds i8, ptr %0, i64 2104
  tail call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %48, double noundef 1.000000e+00, ptr noundef nonnull %796, ptr noundef %23)
  br label %797

797:                                              ; preds = %793, %794, %795
  br i1 %.not892.not1040, label %.lr.ph1070, label %._crit_edge1071

.lr.ph1070:                                       ; preds = %797
  %798 = getelementptr inbounds i8, ptr %0, i64 2160
  %799 = add i64 %18, %16
  %xtraiter1171 = and i64 %48, 1
  %800 = icmp eq i64 %799, 1
  br i1 %800, label %._crit_edge1071.loopexit.unr-lcssa, label %.lr.ph1070.new

.lr.ph1070.new:                                   ; preds = %.lr.ph1070
  %unroll_iter = and i64 %48, 9223372036854775806
  br label %801

801:                                              ; preds = %814, %.lr.ph1070.new
  %.138661068 = phi i64 [ 0, %.lr.ph1070.new ], [ %815, %814 ]
  %niter = phi i64 [ 0, %.lr.ph1070.new ], [ %niter.next.1, %814 ]
  %802 = load ptr, ptr %798, align 8, !tbaa !20
  %803 = getelementptr inbounds double, ptr %802, i64 %.138661068
  %804 = load double, ptr %803, align 8, !tbaa !21
  %805 = fcmp oeq double %804, 0.000000e+00
  br i1 %805, label %806, label %807

806:                                              ; preds = %801
  store double 1.000000e+00, ptr %803, align 8, !tbaa !21
  br label %807

807:                                              ; preds = %801, %806
  %808 = or disjoint i64 %.138661068, 1
  %809 = load ptr, ptr %798, align 8, !tbaa !20
  %810 = getelementptr inbounds double, ptr %809, i64 %808
  %811 = load double, ptr %810, align 8, !tbaa !21
  %812 = fcmp oeq double %811, 0.000000e+00
  br i1 %812, label %813, label %814

813:                                              ; preds = %807
  store double 1.000000e+00, ptr %810, align 8, !tbaa !21
  br label %814

814:                                              ; preds = %813, %807
  %815 = add nuw nsw i64 %.138661068, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge1071.loopexit.unr-lcssa, label %801, !llvm.loop !95

._crit_edge1071.loopexit.unr-lcssa:               ; preds = %814, %.lr.ph1070
  %.138661068.unr = phi i64 [ 0, %.lr.ph1070 ], [ %815, %814 ]
  %lcmp.mod1172.not = icmp eq i64 %xtraiter1171, 0
  br i1 %lcmp.mod1172.not, label %._crit_edge1071, label %.epil.preheader

.epil.preheader:                                  ; preds = %._crit_edge1071.loopexit.unr-lcssa
  %816 = load ptr, ptr %798, align 8, !tbaa !20
  %817 = getelementptr inbounds double, ptr %816, i64 %.138661068.unr
  %818 = load double, ptr %817, align 8, !tbaa !21
  %819 = fcmp oeq double %818, 0.000000e+00
  br i1 %819, label %820, label %._crit_edge1071

820:                                              ; preds = %.epil.preheader
  store double 1.000000e+00, ptr %817, align 8, !tbaa !21
  br label %._crit_edge1071

._crit_edge1071:                                  ; preds = %._crit_edge1071.loopexit.unr-lcssa, %820, %.epil.preheader, %797
  %821 = getelementptr inbounds i8, ptr %0, i64 1736
  %822 = getelementptr inbounds i8, ptr %0, i64 2064
  store i64 %48, ptr %822, align 8, !tbaa !96
  %823 = load i64, ptr %78, align 8, !tbaa !42
  %824 = getelementptr inbounds i8, ptr %0, i64 2072
  store i64 %823, ptr %824, align 8, !tbaa !97
  %825 = getelementptr inbounds i8, ptr %0, i64 1864
  tail call void @_ZN11alglib_impl7iallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %684, ptr noundef nonnull %825, ptr noundef %23)
  %826 = getelementptr inbounds i8, ptr %0, i64 1920
  %827 = load ptr, ptr %826, align 8, !tbaa !20
  store i64 0, ptr %827, align 8, !tbaa !44
  br i1 %.not892.not1040, label %.lr.ph1082, label %._crit_edge1083

.lr.ph1082:                                       ; preds = %._crit_edge1071
  %828 = getelementptr inbounds i8, ptr %0, i64 1800
  %829 = getelementptr inbounds i8, ptr %0, i64 22640
  %830 = getelementptr inbounds i8, ptr %0, i64 1856
  %831 = getelementptr inbounds i8, ptr %0, i64 22576
  %832 = getelementptr inbounds i8, ptr %0, i64 1792
  %833 = getelementptr inbounds i8, ptr %0, i64 22944
  %834 = getelementptr inbounds i8, ptr %0, i64 1408
  %835 = getelementptr inbounds i8, ptr %0, i64 23008
  %836 = getelementptr inbounds i8, ptr %0, i64 1472
  %837 = getelementptr inbounds i8, ptr %0, i64 1664
  %838 = getelementptr inbounds i8, ptr %0, i64 1728
  br label %839

839:                                              ; preds = %.lr.ph1082, %._crit_edge1077
  %.148671080 = phi i64 [ 0, %.lr.ph1082 ], [ %850, %._crit_edge1077 ]
  %840 = load ptr, ptr %826, align 8, !tbaa !20
  %841 = getelementptr inbounds i64, ptr %840, i64 %.148671080
  %842 = load i64, ptr %841, align 8, !tbaa !44
  %843 = load i64, ptr %78, align 8, !tbaa !42
  %844 = add nsw i64 %843, %842
  tail call void @_ZN11alglib_impl6igrowvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %844, ptr noundef nonnull %828, ptr noundef %23)
  %845 = load i64, ptr %78, align 8, !tbaa !42
  %846 = add nsw i64 %845, %842
  tail call void @_ZN11alglib_impl6rgrowvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %846, ptr noundef nonnull %821, ptr noundef %23)
  %847 = load ptr, ptr %686, align 8, !tbaa !20
  %848 = getelementptr inbounds i64, ptr %847, i64 %.148671080
  %849 = load i64, ptr %848, align 8, !tbaa !44
  %850 = add nuw nsw i64 %.148671080, 1
  %851 = getelementptr inbounds i64, ptr %847, i64 %850
  %852 = load i64, ptr %851, align 8, !tbaa !44
  %.not898.not1072 = icmp slt i64 %849, %852
  br i1 %.not898.not1072, label %.lr.ph1076.preheader, label %._crit_edge1077

.lr.ph1076.preheader:                             ; preds = %839
  %853 = sub i64 %852, %849
  %.neg1178 = add i64 %849, 1
  %xtraiter1173 = and i64 %853, 1
  %lcmp.mod1174.not = icmp eq i64 %xtraiter1173, 0
  br i1 %lcmp.mod1174.not, label %.lr.ph1076.prol.loopexit, label %.lr.ph1076.prol

.lr.ph1076.prol:                                  ; preds = %.lr.ph1076.preheader
  %854 = load ptr, ptr %829, align 8, !tbaa !20
  %855 = getelementptr inbounds i64, ptr %854, i64 %849
  %856 = load i64, ptr %855, align 8, !tbaa !44
  %857 = load ptr, ptr %830, align 8, !tbaa !20
  %858 = getelementptr inbounds i64, ptr %857, i64 %842
  store i64 %856, ptr %858, align 8, !tbaa !44
  %859 = load ptr, ptr %831, align 8, !tbaa !20
  %860 = getelementptr inbounds double, ptr %859, i64 %849
  %861 = load double, ptr %860, align 8, !tbaa !21
  %862 = load ptr, ptr %832, align 8, !tbaa !20
  %863 = getelementptr inbounds double, ptr %862, i64 %842
  store double %861, ptr %863, align 8, !tbaa !21
  %864 = add nsw i64 %842, 1
  %865 = add nsw i64 %849, 1
  br label %.lr.ph1076.prol.loopexit

.lr.ph1076.prol.loopexit:                         ; preds = %.lr.ph1076.prol, %.lr.ph1076.preheader
  %.lcssa1153.unr = phi i64 [ poison, %.lr.ph1076.preheader ], [ %864, %.lr.ph1076.prol ]
  %.211074.unr = phi i64 [ %842, %.lr.ph1076.preheader ], [ %864, %.lr.ph1076.prol ]
  %.58521073.unr = phi i64 [ %849, %.lr.ph1076.preheader ], [ %865, %.lr.ph1076.prol ]
  %866 = icmp eq i64 %852, %.neg1178
  br i1 %866, label %._crit_edge1077, label %.lr.ph1076

.lr.ph1076:                                       ; preds = %.lr.ph1076.prol.loopexit, %.lr.ph1076
  %.211074 = phi i64 [ %889, %.lr.ph1076 ], [ %.211074.unr, %.lr.ph1076.prol.loopexit ]
  %.58521073 = phi i64 [ %890, %.lr.ph1076 ], [ %.58521073.unr, %.lr.ph1076.prol.loopexit ]
  %867 = load ptr, ptr %829, align 8, !tbaa !20
  %868 = getelementptr inbounds i64, ptr %867, i64 %.58521073
  %869 = load i64, ptr %868, align 8, !tbaa !44
  %870 = load ptr, ptr %830, align 8, !tbaa !20
  %871 = getelementptr inbounds i64, ptr %870, i64 %.211074
  store i64 %869, ptr %871, align 8, !tbaa !44
  %872 = load ptr, ptr %831, align 8, !tbaa !20
  %873 = getelementptr inbounds double, ptr %872, i64 %.58521073
  %874 = load double, ptr %873, align 8, !tbaa !21
  %875 = load ptr, ptr %832, align 8, !tbaa !20
  %876 = getelementptr inbounds double, ptr %875, i64 %.211074
  store double %874, ptr %876, align 8, !tbaa !21
  %877 = add nsw i64 %.211074, 1
  %878 = add nsw i64 %.58521073, 1
  %879 = load ptr, ptr %829, align 8, !tbaa !20
  %880 = getelementptr inbounds i64, ptr %879, i64 %878
  %881 = load i64, ptr %880, align 8, !tbaa !44
  %882 = load ptr, ptr %830, align 8, !tbaa !20
  %883 = getelementptr inbounds i64, ptr %882, i64 %877
  store i64 %881, ptr %883, align 8, !tbaa !44
  %884 = load ptr, ptr %831, align 8, !tbaa !20
  %885 = getelementptr inbounds double, ptr %884, i64 %878
  %886 = load double, ptr %885, align 8, !tbaa !21
  %887 = load ptr, ptr %832, align 8, !tbaa !20
  %888 = getelementptr inbounds double, ptr %887, i64 %877
  store double %886, ptr %888, align 8, !tbaa !21
  %889 = add nsw i64 %.211074, 2
  %890 = add nsw i64 %.58521073, 2
  %exitcond1119.not.1 = icmp eq i64 %890, %852
  br i1 %exitcond1119.not.1, label %._crit_edge1077, label %.lr.ph1076, !llvm.loop !98

._crit_edge1077:                                  ; preds = %.lr.ph1076.prol.loopexit, %.lr.ph1076, %839
  %.21.lcssa = phi i64 [ %842, %839 ], [ %.lcssa1153.unr, %.lr.ph1076.prol.loopexit ], [ %889, %.lr.ph1076 ]
  %891 = load i64, ptr %77, align 8, !tbaa !41
  %892 = add nsw i64 %891, %.148671080
  %893 = load ptr, ptr %830, align 8, !tbaa !20
  %894 = getelementptr inbounds i64, ptr %893, i64 %.21.lcssa
  store i64 %892, ptr %894, align 8, !tbaa !44
  %895 = load ptr, ptr %832, align 8, !tbaa !20
  %896 = getelementptr inbounds double, ptr %895, i64 %.21.lcssa
  store double -1.000000e+00, ptr %896, align 8, !tbaa !21
  %897 = add nsw i64 %.21.lcssa, 1
  %898 = load ptr, ptr %826, align 8, !tbaa !20
  %899 = getelementptr inbounds i64, ptr %898, i64 %850
  store i64 %897, ptr %899, align 8, !tbaa !44
  %900 = load ptr, ptr %833, align 8, !tbaa !20
  %901 = getelementptr inbounds double, ptr %900, i64 %.148671080
  %902 = load double, ptr %901, align 8, !tbaa !21
  %903 = load ptr, ptr %834, align 8, !tbaa !20
  %904 = load i64, ptr %77, align 8, !tbaa !41
  %905 = getelementptr double, ptr %903, i64 %904
  %906 = getelementptr double, ptr %905, i64 %.148671080
  store double %902, ptr %906, align 8, !tbaa !21
  %907 = load ptr, ptr %835, align 8, !tbaa !20
  %908 = getelementptr inbounds double, ptr %907, i64 %.148671080
  %909 = load double, ptr %908, align 8, !tbaa !21
  %910 = load ptr, ptr %836, align 8, !tbaa !20
  %911 = getelementptr double, ptr %910, i64 %904
  %912 = getelementptr double, ptr %911, i64 %.148671080
  store double %909, ptr %912, align 8, !tbaa !21
  %913 = load ptr, ptr %833, align 8, !tbaa !20
  %914 = getelementptr inbounds double, ptr %913, i64 %.148671080
  %915 = load double, ptr %914, align 8, !tbaa !21
  %916 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %915, ptr noundef %23)
  %917 = load ptr, ptr %837, align 8, !tbaa !20
  %918 = load i64, ptr %77, align 8, !tbaa !41
  %919 = getelementptr i8, ptr %917, i64 %918
  %920 = getelementptr i8, ptr %919, i64 %.148671080
  %921 = zext i1 %916 to i8
  store i8 %921, ptr %920, align 1, !tbaa !83
  %922 = load ptr, ptr %835, align 8, !tbaa !20
  %923 = getelementptr inbounds double, ptr %922, i64 %.148671080
  %924 = load double, ptr %923, align 8, !tbaa !21
  %925 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %924, ptr noundef %23)
  %926 = load ptr, ptr %838, align 8, !tbaa !20
  %927 = load i64, ptr %77, align 8, !tbaa !41
  %928 = getelementptr i8, ptr %926, i64 %927
  %929 = getelementptr i8, ptr %928, i64 %.148671080
  %930 = zext i1 %925 to i8
  store i8 %930, ptr %929, align 1, !tbaa !83
  %exitcond1120.not = icmp eq i64 %850, %48
  br i1 %exitcond1120.not, label %._crit_edge1083, label %839, !llvm.loop !99

._crit_edge1083:                                  ; preds = %._crit_edge1077, %._crit_edge1071
  tail call void @_ZN11alglib_impl22sparsecreatecrsinplaceEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef nonnull %821, ptr noundef %23)
  %931 = getelementptr inbounds i8, ptr %0, i64 768
  store double 0.000000e+00, ptr %931, align 8, !tbaa !100
  %932 = load i64, ptr %78, align 8, !tbaa !42
  %933 = getelementptr inbounds i8, ptr %0, i64 1480
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %932, ptr noundef nonnull %933, ptr noundef %23)
  %934 = load i64, ptr %78, align 8, !tbaa !42
  %935 = getelementptr inbounds i8, ptr %0, i64 1544
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %934, ptr noundef nonnull %935, ptr noundef %23)
  %936 = load i64, ptr %78, align 8, !tbaa !42
  %.not897.not1084 = icmp sgt i64 %936, 0
  br i1 %.not897.not1084, label %.lr.ph1087, label %._crit_edge1088

.lr.ph1087:                                       ; preds = %._crit_edge1083
  %937 = getelementptr inbounds i8, ptr %0, i64 1408
  %938 = getelementptr inbounds i8, ptr %0, i64 1536
  %939 = getelementptr inbounds i8, ptr %0, i64 1472
  %940 = getelementptr inbounds i8, ptr %0, i64 1600
  br label %941

941:                                              ; preds = %.lr.ph1087, %941
  %.158681085 = phi i64 [ 0, %.lr.ph1087 ], [ %962, %941 ]
  %942 = load ptr, ptr %937, align 8, !tbaa !20
  %943 = getelementptr inbounds double, ptr %942, i64 %.158681085
  %944 = load double, ptr %943, align 8, !tbaa !21
  %945 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %944, ptr noundef %23)
  %946 = load ptr, ptr %937, align 8, !tbaa !20
  %947 = getelementptr inbounds double, ptr %946, i64 %.158681085
  %948 = load double, ptr %947, align 8, !tbaa !21
  %949 = tail call noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext %945, double noundef %948, double noundef -1.000000e+297, ptr noundef %23)
  %950 = load ptr, ptr %938, align 8, !tbaa !20
  %951 = getelementptr inbounds double, ptr %950, i64 %.158681085
  store double %949, ptr %951, align 8, !tbaa !21
  %952 = load ptr, ptr %939, align 8, !tbaa !20
  %953 = getelementptr inbounds double, ptr %952, i64 %.158681085
  %954 = load double, ptr %953, align 8, !tbaa !21
  %955 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %954, ptr noundef %23)
  %956 = load ptr, ptr %939, align 8, !tbaa !20
  %957 = getelementptr inbounds double, ptr %956, i64 %.158681085
  %958 = load double, ptr %957, align 8, !tbaa !21
  %959 = tail call noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext %955, double noundef %958, double noundef 1.000000e+297, ptr noundef %23)
  %960 = load ptr, ptr %940, align 8, !tbaa !20
  %961 = getelementptr inbounds double, ptr %960, i64 %.158681085
  store double %959, ptr %961, align 8, !tbaa !21
  %962 = add nuw nsw i64 %.158681085, 1
  %963 = load i64, ptr %78, align 8, !tbaa !42
  %.not897.not = icmp slt i64 %962, %963
  br i1 %.not897.not, label %941, label %._crit_edge1088, !llvm.loop !101

._crit_edge1088:                                  ; preds = %941, %._crit_edge1083
  ret void
}

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.vector.reduce.add.v2i64(<2 x i64>) #3

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" }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }

!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, !8, i64 320}
!6 = !{!"_ZTSN11alglib_impl12sparsematrixE", !7, i64 0, !7, i64 64, !7, i64 128, !7, i64 192, !7, i64 256, !8, i64 320, !8, i64 328, !8, i64 336, !8, i64 344, !8, i64 352, !8, i64 360}
!7 = !{!"_ZTSN11alglib_impl9ae_vectorE", !8, i64 0, !8, i64 8, !11, i64 16, !12, i64 24, !9, i64 56}
!8 = !{!"long", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C++ TBAA"}
!11 = !{!"bool", !9, i64 0}
!12 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24}
!13 = !{!"any pointer", !9, i64 0}
!14 = !{!6, !8, i64 328}
!15 = !{!6, !8, i64 336}
!16 = !{!7, !8, i64 0}
!17 = !{!18, !8, i64 0}
!18 = !{!"_ZTSN11alglib_impl9ae_matrixE", !8, i64 0, !8, i64 8, !8, i64 16, !8, i64 24, !11, i64 32, !12, i64 40, !9, i64 72}
!19 = !{!18, !8, i64 8}
!20 = !{!9, !9, i64 0}
!21 = !{!22, !22, i64 0}
!22 = !{!"double", !9, i64 0}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = !{!26, !8, i64 0}
!26 = !{!"_ZTSN11alglib_impl9ipm2stateE", !8, i64 0, !8, i64 8, !8, i64 16, !22, i64 24, !22, i64 32, !22, i64 40, !8, i64 48, !11, i64 56, !7, i64 64, !7, i64 128, !7, i64 192, !22, i64 256, !7, i64 264, !6, i64 328, !7, i64 696, !11, i64 760, !22, i64 768, !7, i64 776, !7, i64 840, !7, i64 904, !7, i64 968, !7, i64 1032, !7, i64 1096, !7, i64 1160, !7, i64 1224, !7, i64 1288, !7, i64 1352, !7, i64 1416, !7, i64 1480, !7, i64 1544, !7, i64 1608, !7, i64 1672, !6, i64 1736, !7, i64 2104, !8, i64 2168, !27, i64 2176, !27, i64 2576, !27, i64 2976, !27, i64 3376, !7, i64 3776, !7, i64 3840, !7, i64 3904, !7, i64 3968, !8, i64 4032, !8, i64 4040, !7, i64 4048, !7, i64 4112, !7, i64 4176, !28, i64 4240, !8, i64 4624, !8, i64 4632, !11, i64 4640, !11, i64 4641, !11, i64 4642, !29, i64 4648, !29, i64 4672, !29, i64 4696, !29, i64 4720, !29, i64 4744, !30, i64 4768, !28, i64 21736, !7, i64 22120, !7, i64 22184, !7, i64 22248, !7, i64 22312, !7, i64 22376, !18, i64 22440, !6, i64 22520, !7, i64 22888, !7, i64 22952, !6, i64 23016, !6, i64 23384, !18, i64 23752, !7, i64 23832}
!27 = !{!"_ZTSN11alglib_impl8ipm2varsE", !8, i64 0, !8, i64 8, !7, i64 16, !7, i64 80, !7, i64 144, !7, i64 208, !7, i64 272, !7, i64 336}
!28 = !{!"_ZTSN11alglib_impl17ipm2righthandsideE", !7, i64 0, !7, i64 64, !7, i64 128, !7, i64 192, !7, i64 256, !7, i64 320}
!29 = !{!"_ZTSN11alglib_impl6stimerE", !8, i64 0, !8, i64 8, !11, i64 16}
!30 = !{!"_ZTSN11alglib_impl17ipm2reducedsystemE", !6, i64 0, !7, i64 368, !31, i64 432, !7, i64 15496, !7, i64 15560, !7, i64 15624, !7, i64 15688, !7, i64 15752, !7, i64 15816, !7, i64 15880, !7, i64 15944, !7, i64 16008, !7, i64 16072, !7, i64 16136, !7, i64 16200, !7, i64 16264, !7, i64 16328, !7, i64 16392, !7, i64 16456, !7, i64 16520, !7, i64 16584, !7, i64 16648, !7, i64 16712, !7, i64 16776, !7, i64 16840, !7, i64 16904}
!31 = !{!"_ZTSN11alglib_impl14spcholanalysisE", !8, i64 0, !8, i64 8, !8, i64 16, !11, i64 24, !8, i64 32, !22, i64 40, !22, i64 48, !22, i64 56, !22, i64 64, !7, i64 72, !11, i64 136, !11, i64 137, !11, i64 138, !11, i64 139, !11, i64 140, !7, i64 144, !8, i64 208, !7, i64 216, !7, i64 280, !7, i64 344, !7, i64 408, !7, i64 472, !7, i64 536, !11, i64 600, !7, i64 608, !7, i64 672, !7, i64 736, !7, i64 800, !7, i64 864, !7, i64 928, !11, i64 992, !11, i64 993, !32, i64 1000, !7, i64 1512, !7, i64 1576, !7, i64 1640, !7, i64 1704, !7, i64 1768, !7, i64 1832, !33, i64 1896, !33, i64 2040, !33, i64 2184, !33, i64 2328, !33, i64 2472, !33, i64 2616, !7, i64 2760, !7, i64 2824, !7, i64 2888, !7, i64 2952, !7, i64 3016, !35, i64 3080, !40, i64 7464, !7, i64 13816, !7, i64 13880, !7, i64 13944, !7, i64 14008, !7, i64 14072, !7, i64 14136, !6, i64 14200, !6, i64 14568, !7, i64 14936, !7, i64 15000}
!32 = !{!"_ZTSN11alglib_impl9spcholadjE", !7, i64 0, !7, i64 64, !7, i64 128, !7, i64 192, !7, i64 256, !7, i64 320, !7, i64 384, !7, i64 448}
!33 = !{!"_ZTSN11alglib_impl9ae_nxpoolE", !8, i64 0, !8, i64 8, !8, i64 16, !8, i64 24, !12, i64 32, !34, i64 64, !12, i64 112}
!34 = !{!"_ZTSN11alglib_impl7ae_lockE", !13, i64 0, !12, i64 8, !11, i64 40}
!35 = !{!"_ZTSN11alglib_impl9amdbufferE", !8, i64 0, !11, i64 8, !11, i64 9, !7, i64 16, !7, i64 80, !7, i64 144, !36, i64 208, !36, i64 568, !36, i64 928, !37, i64 1288, !38, i64 1496, !39, i64 1968, !7, i64 2120, !7, i64 2184, !7, i64 2248, !39, i64 2312, !39, i64 2464, !39, i64 2616, !39, i64 2768, !39, i64 2920, !39, i64 3072, !7, i64 3224, !8, i64 3288, !39, i64 3296, !39, i64 3448, !36, i64 3600, !39, i64 3960, !7, i64 4112, !7, i64 4176, !7, i64 4240, !18, i64 4304}
!36 = !{!"_ZTSN11alglib_impl8amdknsetE", !8, i64 0, !8, i64 8, !7, i64 16, !7, i64 80, !7, i64 144, !7, i64 208, !7, i64 272, !8, i64 336, !8, i64 344, !8, i64 352}
!37 = !{!"_ZTSN11alglib_impl11amdllmatrixE", !8, i64 0, !7, i64 8, !7, i64 72, !7, i64 136, !8, i64 200}
!38 = !{!"_ZTSN11alglib_impl12amdvertexsetE", !8, i64 0, !11, i64 8, !8, i64 16, !7, i64 24, !7, i64 88, !7, i64 152, !7, i64 216, !7, i64 280, !7, i64 344, !7, i64 408}
!39 = !{!"_ZTSN11alglib_impl5nisetE", !8, i64 0, !8, i64 8, !7, i64 16, !7, i64 80, !8, i64 144}
!40 = !{!"_ZTSN11alglib_impl18priorityamdbuffersE", !7, i64 0, !7, i64 64, !35, i64 128, !6, i64 4512, !6, i64 4880, !6, i64 5248, !6, i64 5616, !6, i64 5984}
!41 = !{!26, !8, i64 8}
!42 = !{!26, !8, i64 16}
!43 = !{!26, !11, i64 56}
!44 = !{!8, !8, i64 0}
!45 = !{!26, !8, i64 48}
!46 = distinct !{!46, !24}
!47 = !{!26, !8, i64 23704}
!48 = !{!26, !8, i64 23712}
!49 = !{!26, !8, i64 23720}
!50 = distinct !{!50, !24}
!51 = !{!13, !13, i64 0}
!52 = distinct !{!52, !24, !53, !54}
!53 = !{!"llvm.loop.isvectorized", i32 1}
!54 = !{!"llvm.loop.unroll.runtime.disable"}
!55 = distinct !{!55, !24, !54, !53}
!56 = distinct !{!56, !24}
!57 = distinct !{!57, !24}
!58 = distinct !{!58, !24}
!59 = !{!26, !8, i64 23384}
!60 = distinct !{!60, !24}
!61 = distinct !{!61, !24}
!62 = distinct !{!62, !24}
!63 = !{!26, !8, i64 23448}
!64 = distinct !{!64, !24}
!65 = !{!26, !22, i64 256}
!66 = distinct !{!66, !24}
!67 = !{!26, !8, i64 648}
!68 = !{!26, !8, i64 656}
!69 = !{!26, !8, i64 664}
!70 = distinct !{!70, !24}
!71 = distinct !{!71, !24}
!72 = distinct !{!72, !24}
!73 = distinct !{!73, !24}
!74 = distinct !{!74, !24}
!75 = !{!26, !8, i64 328}
!76 = !{!26, !8, i64 392}
!77 = !{!26, !11, i64 760}
!78 = !{!79, !22, i64 24}
!79 = !{!"_ZTSN11alglib_impl8ae_stateE", !8, i64 0, !22, i64 8, !22, i64 16, !22, i64 24, !13, i64 32, !12, i64 40, !13, i64 72, !80, i64 80, !13, i64 88, !81, i64 96, !13, i64 104, !13, i64 112, !13, i64 120}
!80 = !{!"_ZTSN11alglib_impl13ae_error_typeE", !9, i64 0}
!81 = !{!"long long", !9, i64 0}
!82 = !{!79, !22, i64 16}
!83 = !{!11, !11, i64 0}
!84 = !{i8 0, i8 2}
!85 = !{}
!86 = distinct !{!86, !24}
!87 = !{!26, !8, i64 2168}
!88 = distinct !{!88, !24}
!89 = !{!26, !8, i64 22848}
!90 = !{!26, !8, i64 22856}
!91 = distinct !{!91, !24}
!92 = distinct !{!92, !24}
!93 = distinct !{!93, !24}
!94 = distinct !{!94, !24}
!95 = distinct !{!95, !24}
!96 = !{!26, !8, i64 2064}
!97 = !{!26, !8, i64 2072}
!98 = distinct !{!98, !24}
!99 = distinct !{!99, !24}
!100 = !{!26, !22, i64 768}
!101 = distinct !{!101, !24}


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