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

@.str.858 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.859 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.860 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.861 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.862 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.863 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.864 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.865 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.866 = external hidden unnamed_addr constant [26 x i8], align 1
@_ZN11alglib_implL28reviseddualsimplex_ssinvalidE = external hidden global i64, align 8
@.str.867 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.868 = external hidden unnamed_addr constant [41 x i8], align 1
@_ZN11alglib_implL31reviseddualsimplex_ccinfeasibleE = external hidden global i64, align 8
@_ZN11alglib_implL26reviseddualsimplex_ccrangeE = external hidden global i64, align 8
@_ZN11alglib_implL26reviseddualsimplex_ccfixedE = external hidden global i64, align 8
@_ZN11alglib_implL26reviseddualsimplex_cclowerE = external hidden global i64, align 8
@_ZN11alglib_implL26reviseddualsimplex_ccupperE = external hidden global i64, align 8
@.str.869 = external hidden unnamed_addr constant [38 x i8], align 1
@_ZN11alglib_implL25reviseddualsimplex_ccfreeE = external hidden global i64, align 8
@.str.870 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.871 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.872 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.873 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.874 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.875 = external hidden unnamed_addr constant [59 x i8], align 1

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

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

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

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

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 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_impl10ae_fp_lessEdd(double noundef, double noundef) #1

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

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

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

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

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

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

declare void @_ZN11alglib_impl5rsetvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef, double noundef, ptr 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_impl25sparsecopytransposecrsbufEPKNS_12sparsematrixEPS0_PNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) #1

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl13dsssetproblemEPNS_16dualsimplexstateEPKNS_9ae_vectorES4_S4_PKNS_9ae_matrixEPKNS_12sparsematrixElS4_S4_lPKNS_16dualsimplexbasisElPKNS_19dualsimplexsettingsEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, i64 noundef %6, ptr noundef %7, ptr noundef %8, i64 noundef %9, ptr noundef %10, i64 noundef %11, ptr noundef %12, ptr noundef %13) #3 {
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca i64, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca i64, align 8
  %25 = alloca ptr, align 8
  %26 = alloca i64, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca i8, align 1
  %37 = alloca i64, align 8
  %38 = alloca i8, align 1
  %39 = alloca double, align 8
  %40 = alloca i32, align 4
  store ptr %0, ptr %15, align 8, !tbaa !5
  store ptr %1, ptr %16, align 8, !tbaa !5
  store ptr %2, ptr %17, align 8, !tbaa !5
  store ptr %3, ptr %18, align 8, !tbaa !5
  store ptr %4, ptr %19, align 8, !tbaa !5
  store ptr %5, ptr %20, align 8, !tbaa !5
  store i64 %6, ptr %21, align 8, !tbaa !9
  store ptr %7, ptr %22, align 8, !tbaa !5
  store ptr %8, ptr %23, align 8, !tbaa !5
  store i64 %9, ptr %24, align 8, !tbaa !9
  store ptr %10, ptr %25, align 8, !tbaa !5
  store i64 %11, ptr %26, align 8, !tbaa !9
  store ptr %12, ptr %27, align 8, !tbaa !5
  store ptr %13, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #4
  %41 = load ptr, ptr %15, align 8, !tbaa !5
  %42 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %41, i32 0, i32 8
  %43 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %42, i32 0, i32 0
  %44 = load i64, ptr %43, align 8, !tbaa !11
  store i64 %44, ptr %33, align 8, !tbaa !9
  %45 = load ptr, ptr %15, align 8, !tbaa !5
  %46 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %45, i32 0, i32 8
  %47 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %46, i32 0, i32 1
  %48 = load i64, ptr %47, align 8, !tbaa !27
  store i64 %48, ptr %37, align 8, !tbaa !9
  %49 = load ptr, ptr %17, align 8, !tbaa !5
  %50 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %49, i32 0, i32 0
  %51 = load i64, ptr %50, align 8, !tbaa !28
  %52 = load i64, ptr %33, align 8, !tbaa !9
  %53 = icmp sge i64 %51, %52
  %54 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %53, ptr noundef @.str.858, ptr noundef %54)
  %55 = load ptr, ptr %18, align 8, !tbaa !5
  %56 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %55, i32 0, i32 0
  %57 = load i64, ptr %56, align 8, !tbaa !28
  %58 = load i64, ptr %33, align 8, !tbaa !9
  %59 = icmp sge i64 %57, %58
  %60 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %59, ptr noundef @.str.859, ptr noundef %60)
  %61 = load ptr, ptr %16, align 8, !tbaa !5
  %62 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %61, i32 0, i32 0
  %63 = load i64, ptr %62, align 8, !tbaa !28
  %64 = load i64, ptr %33, align 8, !tbaa !9
  %65 = icmp sge i64 %63, %64
  %66 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %65, ptr noundef @.str.860, ptr noundef %66)
  %67 = load ptr, ptr %16, align 8, !tbaa !5
  %68 = load i64, ptr %33, align 8, !tbaa !9
  %69 = load ptr, ptr %28, 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 %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %70, ptr noundef @.str.861, ptr noundef %71)
  %72 = load i64, ptr %21, align 8, !tbaa !9
  %73 = icmp eq i64 %72, 0
  br i1 %73, label %77, label %74

74:                                               ; preds = %14
  %75 = load i64, ptr %21, align 8, !tbaa !9
  %76 = icmp eq i64 %75, 1
  br label %77

77:                                               ; preds = %74, %14
  %78 = phi i1 [ true, %14 ], [ %76, %74 ]
  %79 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %78, ptr noundef @.str.862, ptr noundef %79)
  %80 = load i64, ptr %26, align 8, !tbaa !9
  %81 = icmp eq i64 %80, 0
  br i1 %81, label %88, label %82

82:                                               ; preds = %77
  %83 = load i64, ptr %26, align 8, !tbaa !9
  %84 = icmp eq i64 %83, 1
  br i1 %84, label %88, label %85

85:                                               ; preds = %82
  %86 = load i64, ptr %26, align 8, !tbaa !9
  %87 = icmp eq i64 %86, 2
  br label %88

88:                                               ; preds = %85, %82, %77
  %89 = phi i1 [ true, %82 ], [ true, %77 ], [ %87, %85 ]
  %90 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %89, ptr noundef @.str.863, ptr noundef %90)
  %91 = load i64, ptr %24, align 8, !tbaa !9
  %92 = icmp sge i64 %91, 0
  %93 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %92, ptr noundef @.str.864, ptr noundef %93)
  %94 = load i64, ptr %24, align 8, !tbaa !9
  %95 = icmp sgt i64 %94, 0
  br i1 %95, label %96, label %112

96:                                               ; preds = %88
  %97 = load i64, ptr %21, align 8, !tbaa !9
  %98 = icmp eq i64 %97, 1
  br i1 %98, label %99, label %112

99:                                               ; preds = %96
  %100 = load ptr, ptr %20, align 8, !tbaa !5
  %101 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %100, i32 0, i32 6
  %102 = load i64, ptr %101, align 8, !tbaa !29
  %103 = load i64, ptr %24, align 8, !tbaa !9
  %104 = icmp eq i64 %102, %103
  %105 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %104, ptr noundef @.str.865, ptr noundef %105)
  %106 = load ptr, ptr %20, align 8, !tbaa !5
  %107 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %106, i32 0, i32 7
  %108 = load i64, ptr %107, align 8, !tbaa !30
  %109 = load i64, ptr %33, align 8, !tbaa !9
  %110 = icmp eq i64 %108, %109
  %111 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %110, ptr noundef @.str.866, ptr noundef %111)
  br label %112

112:                                              ; preds = %99, %96, %88
  %113 = load ptr, ptr %15, align 8, !tbaa !5
  %114 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %113, i32 0, i32 8
  %115 = load i64, ptr @_ZN11alglib_implL28reviseddualsimplex_ssinvalidE, align 8, !tbaa !9
  %116 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_implL33reviseddualsimplex_downgradestateEPNS_21dualsimplexsubproblemElPNS_8ae_stateE(ptr noundef %114, i64 noundef %115, ptr noundef %116)
  %117 = load ptr, ptr %15, align 8, !tbaa !5
  %118 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %117, i32 0, i32 8
  %119 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %118, i32 0, i32 3
  %120 = load i64, ptr %33, align 8, !tbaa !9
  %121 = load i64, ptr %24, align 8, !tbaa !9
  %122 = add nsw i64 %120, %121
  %123 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %119, i64 noundef %122, ptr noundef %123)
  %124 = load ptr, ptr %15, align 8, !tbaa !5
  %125 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %124, i32 0, i32 8
  %126 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %125, i32 0, i32 4
  %127 = load i64, ptr %33, align 8, !tbaa !9
  %128 = load i64, ptr %24, align 8, !tbaa !9
  %129 = add nsw i64 %127, %128
  %130 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %126, i64 noundef %129, ptr noundef %130)
  %131 = load ptr, ptr %15, align 8, !tbaa !5
  %132 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %131, i32 0, i32 8
  %133 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %132, i32 0, i32 5
  %134 = load i64, ptr %33, align 8, !tbaa !9
  %135 = load i64, ptr %24, align 8, !tbaa !9
  %136 = add nsw i64 %134, %135
  %137 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl13ivectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %133, i64 noundef %136, ptr noundef %137)
  %138 = load ptr, ptr %15, align 8, !tbaa !5
  %139 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %138, i32 0, i32 8
  %140 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %139, i32 0, i32 2
  %141 = load i64, ptr %33, align 8, !tbaa !9
  %142 = load i64, ptr %24, align 8, !tbaa !9
  %143 = add nsw i64 %141, %142
  %144 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %140, i64 noundef %143, ptr noundef %144)
  %145 = load ptr, ptr %15, align 8, !tbaa !5
  %146 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %145, i32 0, i32 8
  %147 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %146, i32 0, i32 15
  %148 = load i64, ptr %33, align 8, !tbaa !9
  %149 = load i64, ptr %24, align 8, !tbaa !9
  %150 = add nsw i64 %148, %149
  %151 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %147, i64 noundef %150, ptr noundef %151)
  %152 = load ptr, ptr %15, align 8, !tbaa !5
  %153 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %152, i32 0, i32 8
  %154 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %153, i32 0, i32 6
  %155 = load i64, ptr %33, align 8, !tbaa !9
  %156 = load i64, ptr %24, align 8, !tbaa !9
  %157 = add nsw i64 %155, %156
  %158 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %154, i64 noundef %157, ptr noundef %158)
  %159 = load ptr, ptr %15, align 8, !tbaa !5
  %160 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %159, i32 0, i32 8
  %161 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %160, i32 0, i32 7
  %162 = load i64, ptr %33, align 8, !tbaa !9
  %163 = load i64, ptr %24, align 8, !tbaa !9
  %164 = add nsw i64 %162, %163
  %165 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %161, i64 noundef %164, ptr noundef %165)
  %166 = load ptr, ptr %15, align 8, !tbaa !5
  %167 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %166, i32 0, i32 8
  %168 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %167, i32 0, i32 9
  %169 = load i64, ptr %24, align 8, !tbaa !9
  %170 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %168, i64 noundef %169, ptr noundef %170)
  %171 = load ptr, ptr %15, align 8, !tbaa !5
  %172 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %171, i32 0, i32 8
  %173 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %172, i32 0, i32 10
  %174 = load i64, ptr %24, align 8, !tbaa !9
  %175 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %173, i64 noundef %174, ptr noundef %175)
  %176 = load ptr, ptr %15, align 8, !tbaa !5
  %177 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %176, i32 0, i32 8
  %178 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %177, i32 0, i32 11
  %179 = load i64, ptr %24, align 8, !tbaa !9
  %180 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %178, i64 noundef %179, ptr noundef %180)
  %181 = load ptr, ptr %15, align 8, !tbaa !5
  %182 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %181, i32 0, i32 8
  %183 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %182, i32 0, i32 12
  %184 = load i64, ptr %24, align 8, !tbaa !9
  %185 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl13ivectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %183, i64 noundef %184, ptr noundef %185)
  %186 = load ptr, ptr %15, align 8, !tbaa !5
  %187 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %186, i32 0, i32 8
  %188 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %187, i32 0, i32 13
  %189 = load i64, ptr %24, align 8, !tbaa !9
  %190 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %188, i64 noundef %189, ptr noundef %190)
  %191 = load ptr, ptr %15, align 8, !tbaa !5
  %192 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %191, i32 0, i32 8
  %193 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %192, i32 0, i32 14
  %194 = load i64, ptr %24, align 8, !tbaa !9
  %195 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %193, i64 noundef %194, ptr noundef %195)
  %196 = load i64, ptr %33, align 8, !tbaa !9
  %197 = load ptr, ptr %15, align 8, !tbaa !5
  %198 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %197, i32 0, i32 3
  store i64 %196, ptr %198, align 8, !tbaa !31
  %199 = load i64, ptr %24, align 8, !tbaa !9
  %200 = load ptr, ptr %15, align 8, !tbaa !5
  %201 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %200, i32 0, i32 4
  store i64 %199, ptr %201, align 8, !tbaa !32
  store i64 0, ptr %29, align 8, !tbaa !9
  br label %202

202:                                              ; preds = %232, %112
  %203 = load i64, ptr %29, align 8, !tbaa !9
  %204 = load i64, ptr %33, align 8, !tbaa !9
  %205 = sub nsw i64 %204, 1
  %206 = icmp sle i64 %203, %205
  br i1 %206, label %207, label %235

207:                                              ; preds = %202
  %208 = load ptr, ptr %17, align 8, !tbaa !5
  %209 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %208, i32 0, i32 4
  %210 = load ptr, ptr %209, align 8, !tbaa !33
  %211 = load i64, ptr %29, align 8, !tbaa !9
  %212 = getelementptr inbounds double, ptr %210, i64 %211
  %213 = load double, ptr %212, align 8, !tbaa !34
  %214 = load ptr, ptr %15, align 8, !tbaa !5
  %215 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %214, i32 0, i32 1
  %216 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %215, i32 0, i32 4
  %217 = load ptr, ptr %216, align 8, !tbaa !33
  %218 = load i64, ptr %29, align 8, !tbaa !9
  %219 = getelementptr inbounds double, ptr %217, i64 %218
  store double %213, ptr %219, align 8, !tbaa !34
  %220 = load ptr, ptr %18, align 8, !tbaa !5
  %221 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %220, i32 0, i32 4
  %222 = load ptr, ptr %221, align 8, !tbaa !33
  %223 = load i64, ptr %29, align 8, !tbaa !9
  %224 = getelementptr inbounds double, ptr %222, i64 %223
  %225 = load double, ptr %224, align 8, !tbaa !34
  %226 = load ptr, ptr %15, align 8, !tbaa !5
  %227 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %226, i32 0, i32 2
  %228 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %227, i32 0, i32 4
  %229 = load ptr, ptr %228, align 8, !tbaa !33
  %230 = load i64, ptr %29, align 8, !tbaa !9
  %231 = getelementptr inbounds double, ptr %229, i64 %230
  store double %225, ptr %231, align 8, !tbaa !34
  br label %232

232:                                              ; preds = %207
  %233 = load i64, ptr %29, align 8, !tbaa !9
  %234 = add nsw i64 %233, 1
  store i64 %234, ptr %29, align 8, !tbaa !9
  br label %202, !llvm.loop !35

235:                                              ; preds = %202
  %236 = load i64, ptr %33, align 8, !tbaa !9
  %237 = load i64, ptr %24, align 8, !tbaa !9
  %238 = add nsw i64 %236, %237
  %239 = load ptr, ptr %15, align 8, !tbaa !5
  %240 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %239, i32 0, i32 8
  %241 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %240, i32 0, i32 2
  %242 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl5rsetvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %238, double noundef 0.000000e+00, ptr noundef %241, ptr noundef %242)
  %243 = load i64, ptr %33, align 8, !tbaa !9
  %244 = load i64, ptr %24, align 8, !tbaa !9
  %245 = add nsw i64 %243, %244
  %246 = load ptr, ptr %15, align 8, !tbaa !5
  %247 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %246, i32 0, i32 8
  %248 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %247, i32 0, i32 15
  %249 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl5rsetvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %245, double noundef 0.000000e+00, ptr noundef %248, ptr noundef %249)
  store i64 0, ptr %29, align 8, !tbaa !9
  br label %250

250:                                              ; preds = %282, %235
  %251 = load i64, ptr %29, align 8, !tbaa !9
  %252 = load i64, ptr %33, align 8, !tbaa !9
  %253 = sub nsw i64 %252, 1
  %254 = icmp sle i64 %251, %253
  br i1 %254, label %255, label %285

255:                                              ; preds = %250
  %256 = load ptr, ptr %16, align 8, !tbaa !5
  %257 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %256, i32 0, i32 4
  %258 = load ptr, ptr %257, align 8, !tbaa !33
  %259 = load i64, ptr %29, align 8, !tbaa !9
  %260 = getelementptr inbounds double, ptr %258, i64 %259
  %261 = load double, ptr %260, align 8, !tbaa !34
  %262 = load ptr, ptr %15, align 8, !tbaa !5
  %263 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %262, i32 0, i32 8
  %264 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %263, i32 0, i32 2
  %265 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %264, i32 0, i32 4
  %266 = load ptr, ptr %265, align 8, !tbaa !33
  %267 = load i64, ptr %29, align 8, !tbaa !9
  %268 = getelementptr inbounds double, ptr %266, i64 %267
  store double %261, ptr %268, align 8, !tbaa !34
  %269 = load ptr, ptr %16, align 8, !tbaa !5
  %270 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %269, i32 0, i32 4
  %271 = load ptr, ptr %270, align 8, !tbaa !33
  %272 = load i64, ptr %29, align 8, !tbaa !9
  %273 = getelementptr inbounds double, ptr %271, i64 %272
  %274 = load double, ptr %273, align 8, !tbaa !34
  %275 = load ptr, ptr %15, align 8, !tbaa !5
  %276 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %275, i32 0, i32 8
  %277 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %276, i32 0, i32 15
  %278 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %277, i32 0, i32 4
  %279 = load ptr, ptr %278, align 8, !tbaa !33
  %280 = load i64, ptr %29, align 8, !tbaa !9
  %281 = getelementptr inbounds double, ptr %279, i64 %280
  store double %274, ptr %281, align 8, !tbaa !34
  br label %282

282:                                              ; preds = %255
  %283 = load i64, ptr %29, align 8, !tbaa !9
  %284 = add nsw i64 %283, 1
  store i64 %284, ptr %29, align 8, !tbaa !9
  br label %250, !llvm.loop !37

285:                                              ; preds = %250
  store i64 0, ptr %29, align 8, !tbaa !9
  br label %286

286:                                              ; preds = %528, %285
  %287 = load i64, ptr %29, align 8, !tbaa !9
  %288 = load i64, ptr %33, align 8, !tbaa !9
  %289 = sub nsw i64 %288, 1
  %290 = icmp sle i64 %287, %289
  br i1 %290, label %291, label %531

291:                                              ; preds = %286
  %292 = load ptr, ptr %17, align 8, !tbaa !5
  %293 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %292, i32 0, i32 4
  %294 = load ptr, ptr %293, align 8, !tbaa !33
  %295 = load i64, ptr %29, align 8, !tbaa !9
  %296 = getelementptr inbounds double, ptr %294, i64 %295
  %297 = load double, ptr %296, align 8, !tbaa !34
  %298 = load ptr, ptr %28, align 8, !tbaa !5
  %299 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %297, ptr noundef %298)
  br i1 %299, label %309, label %300

300:                                              ; preds = %291
  %301 = load ptr, ptr %17, align 8, !tbaa !5
  %302 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %301, i32 0, i32 4
  %303 = load ptr, ptr %302, align 8, !tbaa !33
  %304 = load i64, ptr %29, align 8, !tbaa !9
  %305 = getelementptr inbounds double, ptr %303, i64 %304
  %306 = load double, ptr %305, align 8, !tbaa !34
  %307 = load ptr, ptr %28, align 8, !tbaa !5
  %308 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isneginfEdPNS_8ae_stateE(double noundef %306, ptr noundef %307)
  br label %309

309:                                              ; preds = %300, %291
  %310 = phi i1 [ true, %291 ], [ %308, %300 ]
  %311 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %310, ptr noundef @.str.867, ptr noundef %311)
  %312 = load ptr, ptr %18, align 8, !tbaa !5
  %313 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %312, i32 0, i32 4
  %314 = load ptr, ptr %313, align 8, !tbaa !33
  %315 = load i64, ptr %29, align 8, !tbaa !9
  %316 = getelementptr inbounds double, ptr %314, i64 %315
  %317 = load double, ptr %316, align 8, !tbaa !34
  %318 = load ptr, ptr %28, align 8, !tbaa !5
  %319 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %317, ptr noundef %318)
  br i1 %319, label %329, label %320

320:                                              ; preds = %309
  %321 = load ptr, ptr %18, align 8, !tbaa !5
  %322 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %321, i32 0, i32 4
  %323 = load ptr, ptr %322, align 8, !tbaa !33
  %324 = load i64, ptr %29, align 8, !tbaa !9
  %325 = getelementptr inbounds double, ptr %323, i64 %324
  %326 = load double, ptr %325, align 8, !tbaa !34
  %327 = load ptr, ptr %28, align 8, !tbaa !5
  %328 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isposinfEdPNS_8ae_stateE(double noundef %326, ptr noundef %327)
  br label %329

329:                                              ; preds = %320, %309
  %330 = phi i1 [ true, %309 ], [ %328, %320 ]
  %331 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %330, ptr noundef @.str.868, ptr noundef %331)
  %332 = load ptr, ptr %17, align 8, !tbaa !5
  %333 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %332, i32 0, i32 4
  %334 = load ptr, ptr %333, align 8, !tbaa !33
  %335 = load i64, ptr %29, align 8, !tbaa !9
  %336 = getelementptr inbounds double, ptr %334, i64 %335
  %337 = load double, ptr %336, align 8, !tbaa !34
  %338 = load ptr, ptr %15, align 8, !tbaa !5
  %339 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %338, i32 0, i32 8
  %340 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %339, i32 0, i32 3
  %341 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %340, i32 0, i32 4
  %342 = load ptr, ptr %341, align 8, !tbaa !33
  %343 = load i64, ptr %29, align 8, !tbaa !9
  %344 = getelementptr inbounds double, ptr %342, i64 %343
  store double %337, ptr %344, align 8, !tbaa !34
  %345 = load ptr, ptr %18, align 8, !tbaa !5
  %346 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %345, i32 0, i32 4
  %347 = load ptr, ptr %346, align 8, !tbaa !33
  %348 = load i64, ptr %29, align 8, !tbaa !9
  %349 = getelementptr inbounds double, ptr %347, i64 %348
  %350 = load double, ptr %349, align 8, !tbaa !34
  %351 = load ptr, ptr %15, align 8, !tbaa !5
  %352 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %351, i32 0, i32 8
  %353 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %352, i32 0, i32 4
  %354 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %353, i32 0, i32 4
  %355 = load ptr, ptr %354, align 8, !tbaa !33
  %356 = load i64, ptr %29, align 8, !tbaa !9
  %357 = getelementptr inbounds double, ptr %355, i64 %356
  store double %350, ptr %357, align 8, !tbaa !34
  %358 = load ptr, ptr %17, align 8, !tbaa !5
  %359 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %358, i32 0, i32 4
  %360 = load ptr, ptr %359, align 8, !tbaa !33
  %361 = load i64, ptr %29, align 8, !tbaa !9
  %362 = getelementptr inbounds double, ptr %360, i64 %361
  %363 = load double, ptr %362, align 8, !tbaa !34
  %364 = load ptr, ptr %28, align 8, !tbaa !5
  %365 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %363, ptr noundef %364)
  br i1 %365, label %366, label %445

366:                                              ; preds = %329
  %367 = load ptr, ptr %18, align 8, !tbaa !5
  %368 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %367, i32 0, i32 4
  %369 = load ptr, ptr %368, align 8, !tbaa !33
  %370 = load i64, ptr %29, align 8, !tbaa !9
  %371 = getelementptr inbounds double, ptr %369, i64 %370
  %372 = load double, ptr %371, align 8, !tbaa !34
  %373 = load ptr, ptr %28, align 8, !tbaa !5
  %374 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %372, ptr noundef %373)
  br i1 %374, label %375, label %445

375:                                              ; preds = %366
  %376 = load ptr, ptr %17, align 8, !tbaa !5
  %377 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %376, i32 0, i32 4
  %378 = load ptr, ptr %377, align 8, !tbaa !33
  %379 = load i64, ptr %29, align 8, !tbaa !9
  %380 = getelementptr inbounds double, ptr %378, i64 %379
  %381 = load double, ptr %380, align 8, !tbaa !34
  %382 = load ptr, ptr %18, align 8, !tbaa !5
  %383 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %382, i32 0, i32 4
  %384 = load ptr, ptr %383, align 8, !tbaa !33
  %385 = load i64, ptr %29, align 8, !tbaa !9
  %386 = getelementptr inbounds double, ptr %384, i64 %385
  %387 = load double, ptr %386, align 8, !tbaa !34
  %388 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %381, double noundef %387)
  br i1 %388, label %389, label %398

389:                                              ; preds = %375
  %390 = load i64, ptr @_ZN11alglib_implL31reviseddualsimplex_ccinfeasibleE, align 8, !tbaa !9
  %391 = load ptr, ptr %15, align 8, !tbaa !5
  %392 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %391, i32 0, i32 8
  %393 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %392, i32 0, i32 5
  %394 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %393, i32 0, i32 4
  %395 = load ptr, ptr %394, align 8, !tbaa !33
  %396 = load i64, ptr %29, align 8, !tbaa !9
  %397 = getelementptr inbounds i64, ptr %395, i64 %396
  store i64 %390, ptr %397, align 8, !tbaa !9
  br label %398

398:                                              ; preds = %389, %375
  %399 = load ptr, ptr %17, align 8, !tbaa !5
  %400 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %399, i32 0, i32 4
  %401 = load ptr, ptr %400, align 8, !tbaa !33
  %402 = load i64, ptr %29, align 8, !tbaa !9
  %403 = getelementptr inbounds double, ptr %401, i64 %402
  %404 = load double, ptr %403, align 8, !tbaa !34
  %405 = load ptr, ptr %18, align 8, !tbaa !5
  %406 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %405, i32 0, i32 4
  %407 = load ptr, ptr %406, align 8, !tbaa !33
  %408 = load i64, ptr %29, align 8, !tbaa !9
  %409 = getelementptr inbounds double, ptr %407, i64 %408
  %410 = load double, ptr %409, align 8, !tbaa !34
  %411 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %404, double noundef %410)
  br i1 %411, label %412, label %421

412:                                              ; preds = %398
  %413 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_ccrangeE, align 8, !tbaa !9
  %414 = load ptr, ptr %15, align 8, !tbaa !5
  %415 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %414, i32 0, i32 8
  %416 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %415, i32 0, i32 5
  %417 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %416, i32 0, i32 4
  %418 = load ptr, ptr %417, align 8, !tbaa !33
  %419 = load i64, ptr %29, align 8, !tbaa !9
  %420 = getelementptr inbounds i64, ptr %418, i64 %419
  store i64 %413, ptr %420, align 8, !tbaa !9
  br label %421

421:                                              ; preds = %412, %398
  %422 = load ptr, ptr %17, align 8, !tbaa !5
  %423 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %422, i32 0, i32 4
  %424 = load ptr, ptr %423, align 8, !tbaa !33
  %425 = load i64, ptr %29, align 8, !tbaa !9
  %426 = getelementptr inbounds double, ptr %424, i64 %425
  %427 = load double, ptr %426, align 8, !tbaa !34
  %428 = load ptr, ptr %18, align 8, !tbaa !5
  %429 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %428, i32 0, i32 4
  %430 = load ptr, ptr %429, align 8, !tbaa !33
  %431 = load i64, ptr %29, align 8, !tbaa !9
  %432 = getelementptr inbounds double, ptr %430, i64 %431
  %433 = load double, ptr %432, align 8, !tbaa !34
  %434 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %427, double noundef %433)
  br i1 %434, label %435, label %444

435:                                              ; preds = %421
  %436 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_ccfixedE, align 8, !tbaa !9
  %437 = load ptr, ptr %15, align 8, !tbaa !5
  %438 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %437, i32 0, i32 8
  %439 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %438, i32 0, i32 5
  %440 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %439, i32 0, i32 4
  %441 = load ptr, ptr %440, align 8, !tbaa !33
  %442 = load i64, ptr %29, align 8, !tbaa !9
  %443 = getelementptr inbounds i64, ptr %441, i64 %442
  store i64 %436, ptr %443, align 8, !tbaa !9
  br label %444

444:                                              ; preds = %435, %421
  br label %528

445:                                              ; preds = %366, %329
  %446 = load ptr, ptr %17, align 8, !tbaa !5
  %447 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %446, i32 0, i32 4
  %448 = load ptr, ptr %447, align 8, !tbaa !33
  %449 = load i64, ptr %29, align 8, !tbaa !9
  %450 = getelementptr inbounds double, ptr %448, i64 %449
  %451 = load double, ptr %450, align 8, !tbaa !34
  %452 = load ptr, ptr %28, align 8, !tbaa !5
  %453 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %451, ptr noundef %452)
  br i1 %453, label %454, label %472

454:                                              ; preds = %445
  %455 = load ptr, ptr %18, align 8, !tbaa !5
  %456 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %455, i32 0, i32 4
  %457 = load ptr, ptr %456, align 8, !tbaa !33
  %458 = load i64, ptr %29, align 8, !tbaa !9
  %459 = getelementptr inbounds double, ptr %457, i64 %458
  %460 = load double, ptr %459, align 8, !tbaa !34
  %461 = load ptr, ptr %28, align 8, !tbaa !5
  %462 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %460, ptr noundef %461)
  br i1 %462, label %472, label %463

463:                                              ; preds = %454
  %464 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_cclowerE, align 8, !tbaa !9
  %465 = load ptr, ptr %15, align 8, !tbaa !5
  %466 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %465, i32 0, i32 8
  %467 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %466, i32 0, i32 5
  %468 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %467, i32 0, i32 4
  %469 = load ptr, ptr %468, align 8, !tbaa !33
  %470 = load i64, ptr %29, align 8, !tbaa !9
  %471 = getelementptr inbounds i64, ptr %469, i64 %470
  store i64 %464, ptr %471, align 8, !tbaa !9
  br label %528

472:                                              ; preds = %454, %445
  %473 = load ptr, ptr %17, align 8, !tbaa !5
  %474 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %473, i32 0, i32 4
  %475 = load ptr, ptr %474, align 8, !tbaa !33
  %476 = load i64, ptr %29, align 8, !tbaa !9
  %477 = getelementptr inbounds double, ptr %475, i64 %476
  %478 = load double, ptr %477, align 8, !tbaa !34
  %479 = load ptr, ptr %28, align 8, !tbaa !5
  %480 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %478, ptr noundef %479)
  br i1 %480, label %499, label %481

481:                                              ; preds = %472
  %482 = load ptr, ptr %18, align 8, !tbaa !5
  %483 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %482, i32 0, i32 4
  %484 = load ptr, ptr %483, align 8, !tbaa !33
  %485 = load i64, ptr %29, align 8, !tbaa !9
  %486 = getelementptr inbounds double, ptr %484, i64 %485
  %487 = load double, ptr %486, align 8, !tbaa !34
  %488 = load ptr, ptr %28, align 8, !tbaa !5
  %489 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %487, ptr noundef %488)
  br i1 %489, label %490, label %499

490:                                              ; preds = %481
  %491 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_ccupperE, align 8, !tbaa !9
  %492 = load ptr, ptr %15, align 8, !tbaa !5
  %493 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %492, i32 0, i32 8
  %494 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %493, i32 0, i32 5
  %495 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %494, i32 0, i32 4
  %496 = load ptr, ptr %495, align 8, !tbaa !33
  %497 = load i64, ptr %29, align 8, !tbaa !9
  %498 = getelementptr inbounds i64, ptr %496, i64 %497
  store i64 %491, ptr %498, align 8, !tbaa !9
  br label %528

499:                                              ; preds = %481, %472
  %500 = load ptr, ptr %17, align 8, !tbaa !5
  %501 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %500, i32 0, i32 4
  %502 = load ptr, ptr %501, align 8, !tbaa !33
  %503 = load i64, ptr %29, align 8, !tbaa !9
  %504 = getelementptr inbounds double, ptr %502, i64 %503
  %505 = load double, ptr %504, align 8, !tbaa !34
  %506 = load ptr, ptr %28, align 8, !tbaa !5
  %507 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isneginfEdPNS_8ae_stateE(double noundef %505, ptr noundef %506)
  br i1 %507, label %508, label %517

508:                                              ; preds = %499
  %509 = load ptr, ptr %18, align 8, !tbaa !5
  %510 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %509, i32 0, i32 4
  %511 = load ptr, ptr %510, align 8, !tbaa !33
  %512 = load i64, ptr %29, align 8, !tbaa !9
  %513 = getelementptr inbounds double, ptr %511, i64 %512
  %514 = load double, ptr %513, align 8, !tbaa !34
  %515 = load ptr, ptr %28, align 8, !tbaa !5
  %516 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isposinfEdPNS_8ae_stateE(double noundef %514, ptr noundef %515)
  br label %517

517:                                              ; preds = %508, %499
  %518 = phi i1 [ false, %499 ], [ %516, %508 ]
  %519 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %518, ptr noundef @.str.869, ptr noundef %519)
  %520 = load i64, ptr @_ZN11alglib_implL25reviseddualsimplex_ccfreeE, align 8, !tbaa !9
  %521 = load ptr, ptr %15, align 8, !tbaa !5
  %522 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %521, i32 0, i32 8
  %523 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %522, i32 0, i32 5
  %524 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %523, i32 0, i32 4
  %525 = load ptr, ptr %524, align 8, !tbaa !33
  %526 = load i64, ptr %29, align 8, !tbaa !9
  %527 = getelementptr inbounds i64, ptr %525, i64 %526
  store i64 %520, ptr %527, align 8, !tbaa !9
  br label %528

528:                                              ; preds = %517, %490, %463, %444
  %529 = load i64, ptr %29, align 8, !tbaa !9
  %530 = add nsw i64 %529, 1
  store i64 %530, ptr %29, align 8, !tbaa !9
  br label %286, !llvm.loop !38

531:                                              ; preds = %286
  %532 = load i64, ptr %24, align 8, !tbaa !9
  %533 = icmp eq i64 %532, 0
  br i1 %533, label %534, label %549

534:                                              ; preds = %531
  %535 = load ptr, ptr %15, align 8, !tbaa !5
  %536 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %535, i32 0, i32 8
  %537 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %536, i32 0, i32 1
  store i64 0, ptr %537, align 8, !tbaa !27
  %538 = load ptr, ptr %15, align 8, !tbaa !5
  %539 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %538, i32 0, i32 8
  %540 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %539, i32 0, i32 0
  %541 = load i64, ptr %540, align 8, !tbaa !11
  %542 = load ptr, ptr %15, align 8, !tbaa !5
  %543 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %542, i32 0, i32 8
  %544 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %543, i32 0, i32 1
  %545 = load i64, ptr %544, align 8, !tbaa !27
  %546 = load ptr, ptr %15, align 8, !tbaa !5
  %547 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %546, i32 0, i32 7
  %548 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_implL28reviseddualsimplex_basisinitEllPNS_16dualsimplexbasisEPNS_8ae_stateE(i64 noundef %541, i64 noundef %545, ptr noundef %547, ptr noundef %548)
  store i32 1, ptr %40, align 4
  br label %1443

549:                                              ; preds = %531
  store i8 0, ptr %36, align 1, !tbaa !39
  %550 = load i64, ptr %24, align 8, !tbaa !9
  %551 = load ptr, ptr %15, align 8, !tbaa !5
  %552 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %551, i32 0, i32 8
  %553 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %552, i32 0, i32 1
  store i64 %550, ptr %553, align 8, !tbaa !27
  %554 = load i64, ptr %21, align 8, !tbaa !9
  %555 = icmp eq i64 %554, 0
  br i1 %555, label %556, label %558

556:                                              ; preds = %549
  %557 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext false, ptr noundef @.str.870, ptr noundef %557)
  br label %558

558:                                              ; preds = %556, %549
  %559 = load i64, ptr %21, align 8, !tbaa !9
  %560 = icmp eq i64 %559, 1
  br i1 %560, label %561, label %971

561:                                              ; preds = %558
  %562 = load ptr, ptr %15, align 8, !tbaa !5
  %563 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %562, i32 0, i32 6
  %564 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %563, i32 0, i32 0
  %565 = load ptr, ptr %20, align 8, !tbaa !5
  %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 !33
  %569 = load i64, ptr %24, align 8, !tbaa !9
  %570 = getelementptr inbounds i64, ptr %568, i64 %569
  %571 = load i64, ptr %570, align 8, !tbaa !9
  %572 = load i64, ptr %24, align 8, !tbaa !9
  %573 = add nsw i64 %571, %572
  %574 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %564, i64 noundef %573, ptr noundef %574)
  %575 = load ptr, ptr %15, align 8, !tbaa !5
  %576 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %575, i32 0, i32 6
  %577 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %576, i32 0, i32 1
  %578 = load ptr, ptr %20, align 8, !tbaa !5
  %579 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %578, i32 0, i32 2
  %580 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %579, i32 0, i32 4
  %581 = load ptr, ptr %580, align 8, !tbaa !33
  %582 = load i64, ptr %24, align 8, !tbaa !9
  %583 = getelementptr inbounds i64, ptr %581, i64 %582
  %584 = load i64, ptr %583, align 8, !tbaa !9
  %585 = load i64, ptr %24, align 8, !tbaa !9
  %586 = add nsw i64 %584, %585
  %587 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %577, i64 noundef %586, ptr noundef %587)
  %588 = load ptr, ptr %15, align 8, !tbaa !5
  %589 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %588, i32 0, i32 6
  %590 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %589, i32 0, i32 2
  %591 = load i64, ptr %33, align 8, !tbaa !9
  %592 = load i64, ptr %24, align 8, !tbaa !9
  %593 = add nsw i64 %591, %592
  %594 = add nsw i64 %593, 1
  %595 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %590, i64 noundef %594, ptr noundef %595)
  %596 = load ptr, ptr %15, align 8, !tbaa !5
  %597 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %596, i32 0, i32 6
  %598 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %597, i32 0, i32 3
  %599 = load i64, ptr %33, align 8, !tbaa !9
  %600 = load i64, ptr %24, align 8, !tbaa !9
  %601 = add nsw i64 %599, %600
  %602 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %598, i64 noundef %601, ptr noundef %602)
  %603 = load ptr, ptr %15, align 8, !tbaa !5
  %604 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %603, i32 0, i32 6
  %605 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %604, i32 0, i32 4
  %606 = load i64, ptr %33, align 8, !tbaa !9
  %607 = load i64, ptr %24, align 8, !tbaa !9
  %608 = add nsw i64 %606, %607
  %609 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %605, i64 noundef %608, ptr noundef %609)
  %610 = load ptr, ptr %20, align 8, !tbaa !5
  %611 = load ptr, ptr %15, align 8, !tbaa !5
  %612 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %611, i32 0, i32 6
  %613 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl25sparsecopytransposecrsbufEPKNS_12sparsematrixEPS0_PNS_8ae_stateE(ptr noundef %610, ptr noundef %612, ptr noundef %613)
  %614 = load ptr, ptr %15, align 8, !tbaa !5
  %615 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %614, i32 0, i32 0
  %616 = load i64, ptr %24, align 8, !tbaa !9
  %617 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %615, i64 noundef %616, ptr noundef %617)
  store i64 0, ptr %29, align 8, !tbaa !9
  br label %618

618:                                              ; preds = %630, %561
  %619 = load i64, ptr %29, align 8, !tbaa !9
  %620 = load i64, ptr %24, align 8, !tbaa !9
  %621 = sub nsw i64 %620, 1
  %622 = icmp sle i64 %619, %621
  br i1 %622, label %623, label %633

623:                                              ; preds = %618
  %624 = load ptr, ptr %15, align 8, !tbaa !5
  %625 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %624, i32 0, i32 0
  %626 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %625, i32 0, i32 4
  %627 = load ptr, ptr %626, align 8, !tbaa !33
  %628 = load i64, ptr %29, align 8, !tbaa !9
  %629 = getelementptr inbounds double, ptr %627, i64 %628
  store double 0.000000e+00, ptr %629, align 8, !tbaa !34
  br label %630

630:                                              ; preds = %623
  %631 = load i64, ptr %29, align 8, !tbaa !9
  %632 = add nsw i64 %631, 1
  store i64 %632, ptr %29, align 8, !tbaa !9
  br label %618, !llvm.loop !40

633:                                              ; preds = %618
  store i64 0, ptr %29, align 8, !tbaa !9
  br label %634

634:                                              ; preds = %708, %633
  %635 = load i64, ptr %29, align 8, !tbaa !9
  %636 = load i64, ptr %33, align 8, !tbaa !9
  %637 = sub nsw i64 %636, 1
  %638 = icmp sle i64 %635, %637
  br i1 %638, label %639, label %711

639:                                              ; preds = %634
  %640 = load ptr, ptr %15, align 8, !tbaa !5
  %641 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %640, i32 0, i32 6
  %642 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %641, i32 0, i32 2
  %643 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %642, i32 0, i32 4
  %644 = load ptr, ptr %643, align 8, !tbaa !33
  %645 = load i64, ptr %29, align 8, !tbaa !9
  %646 = getelementptr inbounds i64, ptr %644, i64 %645
  %647 = load i64, ptr %646, align 8, !tbaa !9
  store i64 %647, ptr %34, align 8, !tbaa !9
  %648 = load ptr, ptr %15, align 8, !tbaa !5
  %649 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %648, i32 0, i32 6
  %650 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %649, i32 0, i32 2
  %651 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %650, i32 0, i32 4
  %652 = load ptr, ptr %651, align 8, !tbaa !33
  %653 = load i64, ptr %29, align 8, !tbaa !9
  %654 = add nsw i64 %653, 1
  %655 = getelementptr inbounds i64, ptr %652, i64 %654
  %656 = load i64, ptr %655, align 8, !tbaa !9
  %657 = sub nsw i64 %656, 1
  store i64 %657, ptr %35, align 8, !tbaa !9
  %658 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %658, ptr %30, align 8, !tbaa !9
  br label %659

659:                                              ; preds = %704, %639
  %660 = load i64, ptr %30, align 8, !tbaa !9
  %661 = load i64, ptr %35, align 8, !tbaa !9
  %662 = icmp sle i64 %660, %661
  br i1 %662, label %663, label %707

663:                                              ; preds = %659
  %664 = load ptr, ptr %15, align 8, !tbaa !5
  %665 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %664, i32 0, i32 6
  %666 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %665, i32 0, i32 0
  %667 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %666, i32 0, i32 4
  %668 = load ptr, ptr %667, align 8, !tbaa !33
  %669 = load i64, ptr %30, align 8, !tbaa !9
  %670 = getelementptr inbounds double, ptr %668, i64 %669
  %671 = load double, ptr %670, align 8, !tbaa !34
  store double %671, ptr %39, align 8, !tbaa !34
  %672 = load ptr, ptr %15, align 8, !tbaa !5
  %673 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %672, i32 0, i32 6
  %674 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %673, i32 0, i32 1
  %675 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %674, i32 0, i32 4
  %676 = load ptr, ptr %675, align 8, !tbaa !33
  %677 = load i64, ptr %30, align 8, !tbaa !9
  %678 = getelementptr inbounds i64, ptr %676, i64 %677
  %679 = load i64, ptr %678, align 8, !tbaa !9
  store i64 %679, ptr %31, align 8, !tbaa !9
  %680 = load double, ptr %39, align 8, !tbaa !34
  %681 = load ptr, ptr %15, align 8, !tbaa !5
  %682 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %681, i32 0, i32 6
  %683 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %682, i32 0, i32 0
  %684 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %683, i32 0, i32 4
  %685 = load ptr, ptr %684, align 8, !tbaa !33
  %686 = load i64, ptr %30, align 8, !tbaa !9
  %687 = getelementptr inbounds double, ptr %685, i64 %686
  store double %680, ptr %687, align 8, !tbaa !34
  %688 = load ptr, ptr %15, align 8, !tbaa !5
  %689 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %688, i32 0, i32 0
  %690 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %689, i32 0, i32 4
  %691 = load ptr, ptr %690, align 8, !tbaa !33
  %692 = load i64, ptr %31, align 8, !tbaa !9
  %693 = getelementptr inbounds double, ptr %691, i64 %692
  %694 = load double, ptr %693, align 8, !tbaa !34
  %695 = load double, ptr %39, align 8, !tbaa !34
  %696 = load double, ptr %39, align 8, !tbaa !34
  %697 = call double @llvm.fmuladd.f64(double %695, double %696, double %694)
  %698 = load ptr, ptr %15, align 8, !tbaa !5
  %699 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %698, i32 0, i32 0
  %700 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %699, i32 0, i32 4
  %701 = load ptr, ptr %700, align 8, !tbaa !33
  %702 = load i64, ptr %31, align 8, !tbaa !9
  %703 = getelementptr inbounds double, ptr %701, i64 %702
  store double %697, ptr %703, align 8, !tbaa !34
  br label %704

704:                                              ; preds = %663
  %705 = load i64, ptr %30, align 8, !tbaa !9
  %706 = add nsw i64 %705, 1
  store i64 %706, ptr %30, align 8, !tbaa !9
  br label %659, !llvm.loop !41

707:                                              ; preds = %659
  br label %708

708:                                              ; preds = %707
  %709 = load i64, ptr %29, align 8, !tbaa !9
  %710 = add nsw i64 %709, 1
  store i64 %710, ptr %29, align 8, !tbaa !9
  br label %634, !llvm.loop !42

711:                                              ; preds = %634
  %712 = load ptr, ptr %15, align 8, !tbaa !5
  %713 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %712, i32 0, i32 50
  %714 = load i64, ptr %24, align 8, !tbaa !9
  %715 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %713, i64 noundef %714, ptr noundef %715)
  store i64 0, ptr %29, align 8, !tbaa !9
  br label %716

716:                                              ; preds = %753, %711
  %717 = load i64, ptr %29, align 8, !tbaa !9
  %718 = load i64, ptr %24, align 8, !tbaa !9
  %719 = sub nsw i64 %718, 1
  %720 = icmp sle i64 %717, %719
  br i1 %720, label %721, label %756

721:                                              ; preds = %716
  %722 = load ptr, ptr %15, align 8, !tbaa !5
  %723 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %722, i32 0, i32 0
  %724 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %723, i32 0, i32 4
  %725 = load ptr, ptr %724, align 8, !tbaa !33
  %726 = load i64, ptr %29, align 8, !tbaa !9
  %727 = getelementptr inbounds double, ptr %725, i64 %726
  %728 = load double, ptr %727, align 8, !tbaa !34
  %729 = load ptr, ptr %28, align 8, !tbaa !5
  %730 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %728, ptr noundef %729)
  %731 = load ptr, ptr %28, align 8, !tbaa !5
  %732 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %730, double noundef 1.000000e+00, ptr noundef %731)
  %733 = load ptr, ptr %15, align 8, !tbaa !5
  %734 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %733, i32 0, i32 0
  %735 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %734, i32 0, i32 4
  %736 = load ptr, ptr %735, align 8, !tbaa !33
  %737 = load i64, ptr %29, align 8, !tbaa !9
  %738 = getelementptr inbounds double, ptr %736, i64 %737
  store double %732, ptr %738, align 8, !tbaa !34
  %739 = load ptr, ptr %15, align 8, !tbaa !5
  %740 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %739, i32 0, i32 0
  %741 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %740, i32 0, i32 4
  %742 = load ptr, ptr %741, align 8, !tbaa !33
  %743 = load i64, ptr %29, align 8, !tbaa !9
  %744 = getelementptr inbounds double, ptr %742, i64 %743
  %745 = load double, ptr %744, align 8, !tbaa !34
  %746 = fdiv double 1.000000e+00, %745
  %747 = load ptr, ptr %15, align 8, !tbaa !5
  %748 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %747, i32 0, i32 50
  %749 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %748, i32 0, i32 4
  %750 = load ptr, ptr %749, align 8, !tbaa !33
  %751 = load i64, ptr %29, align 8, !tbaa !9
  %752 = getelementptr inbounds double, ptr %750, i64 %751
  store double %746, ptr %752, align 8, !tbaa !34
  br label %753

753:                                              ; preds = %721
  %754 = load i64, ptr %29, align 8, !tbaa !9
  %755 = add nsw i64 %754, 1
  store i64 %755, ptr %29, align 8, !tbaa !9
  br label %716, !llvm.loop !43

756:                                              ; preds = %716
  store i64 0, ptr %29, align 8, !tbaa !9
  br label %757

757:                                              ; preds = %821, %756
  %758 = load i64, ptr %29, align 8, !tbaa !9
  %759 = load i64, ptr %33, align 8, !tbaa !9
  %760 = sub nsw i64 %759, 1
  %761 = icmp sle i64 %758, %760
  br i1 %761, label %762, label %824

762:                                              ; preds = %757
  %763 = load ptr, ptr %15, align 8, !tbaa !5
  %764 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %763, i32 0, i32 6
  %765 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %764, i32 0, i32 2
  %766 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %765, i32 0, i32 4
  %767 = load ptr, ptr %766, align 8, !tbaa !33
  %768 = load i64, ptr %29, align 8, !tbaa !9
  %769 = getelementptr inbounds i64, ptr %767, i64 %768
  %770 = load i64, ptr %769, align 8, !tbaa !9
  store i64 %770, ptr %34, align 8, !tbaa !9
  %771 = load ptr, ptr %15, align 8, !tbaa !5
  %772 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %771, i32 0, i32 6
  %773 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %772, i32 0, i32 2
  %774 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %773, i32 0, i32 4
  %775 = load ptr, ptr %774, align 8, !tbaa !33
  %776 = load i64, ptr %29, align 8, !tbaa !9
  %777 = add nsw i64 %776, 1
  %778 = getelementptr inbounds i64, ptr %775, i64 %777
  %779 = load i64, ptr %778, align 8, !tbaa !9
  %780 = sub nsw i64 %779, 1
  store i64 %780, ptr %35, align 8, !tbaa !9
  %781 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %781, ptr %30, align 8, !tbaa !9
  br label %782

782:                                              ; preds = %817, %762
  %783 = load i64, ptr %30, align 8, !tbaa !9
  %784 = load i64, ptr %35, align 8, !tbaa !9
  %785 = icmp sle i64 %783, %784
  br i1 %785, label %786, label %820

786:                                              ; preds = %782
  %787 = load ptr, ptr %15, align 8, !tbaa !5
  %788 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %787, i32 0, i32 6
  %789 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %788, i32 0, i32 0
  %790 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %789, i32 0, i32 4
  %791 = load ptr, ptr %790, align 8, !tbaa !33
  %792 = load i64, ptr %30, align 8, !tbaa !9
  %793 = getelementptr inbounds double, ptr %791, i64 %792
  %794 = load double, ptr %793, align 8, !tbaa !34
  %795 = load ptr, ptr %15, align 8, !tbaa !5
  %796 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %795, i32 0, i32 50
  %797 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %796, i32 0, i32 4
  %798 = load ptr, ptr %797, align 8, !tbaa !33
  %799 = load ptr, ptr %15, align 8, !tbaa !5
  %800 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %799, i32 0, i32 6
  %801 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %800, i32 0, i32 1
  %802 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %801, i32 0, i32 4
  %803 = load ptr, ptr %802, align 8, !tbaa !33
  %804 = load i64, ptr %30, align 8, !tbaa !9
  %805 = getelementptr inbounds i64, ptr %803, i64 %804
  %806 = load i64, ptr %805, align 8, !tbaa !9
  %807 = getelementptr inbounds double, ptr %798, i64 %806
  %808 = load double, ptr %807, align 8, !tbaa !34
  %809 = fmul double %794, %808
  %810 = load ptr, ptr %15, align 8, !tbaa !5
  %811 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %810, i32 0, i32 6
  %812 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %811, i32 0, i32 0
  %813 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %812, i32 0, i32 4
  %814 = load ptr, ptr %813, align 8, !tbaa !33
  %815 = load i64, ptr %30, align 8, !tbaa !9
  %816 = getelementptr inbounds double, ptr %814, i64 %815
  store double %809, ptr %816, align 8, !tbaa !34
  br label %817

817:                                              ; preds = %786
  %818 = load i64, ptr %30, align 8, !tbaa !9
  %819 = add nsw i64 %818, 1
  store i64 %819, ptr %30, align 8, !tbaa !9
  br label %782, !llvm.loop !44

820:                                              ; preds = %782
  br label %821

821:                                              ; preds = %820
  %822 = load i64, ptr %29, align 8, !tbaa !9
  %823 = add nsw i64 %822, 1
  store i64 %823, ptr %29, align 8, !tbaa !9
  br label %757, !llvm.loop !45

824:                                              ; preds = %757
  %825 = load ptr, ptr %15, align 8, !tbaa !5
  %826 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %825, i32 0, i32 6
  %827 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %826, i32 0, i32 0
  %828 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %827, i32 0, i32 0
  %829 = load i64, ptr %828, align 8, !tbaa !46
  %830 = load ptr, ptr %20, align 8, !tbaa !5
  %831 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %830, i32 0, i32 2
  %832 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %831, i32 0, i32 4
  %833 = load ptr, ptr %832, align 8, !tbaa !33
  %834 = load i64, ptr %24, align 8, !tbaa !9
  %835 = getelementptr inbounds i64, ptr %833, i64 %834
  %836 = load i64, ptr %835, align 8, !tbaa !9
  %837 = load i64, ptr %24, align 8, !tbaa !9
  %838 = add nsw i64 %836, %837
  %839 = icmp sge i64 %829, %838
  %840 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %839, ptr noundef @.str.869, ptr noundef %840)
  %841 = load ptr, ptr %15, align 8, !tbaa !5
  %842 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %841, i32 0, i32 6
  %843 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %842, i32 0, i32 1
  %844 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %843, i32 0, i32 0
  %845 = load i64, ptr %844, align 8, !tbaa !47
  %846 = load ptr, ptr %20, align 8, !tbaa !5
  %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 !33
  %850 = load i64, ptr %24, align 8, !tbaa !9
  %851 = getelementptr inbounds i64, ptr %849, i64 %850
  %852 = load i64, ptr %851, align 8, !tbaa !9
  %853 = load i64, ptr %24, align 8, !tbaa !9
  %854 = add nsw i64 %852, %853
  %855 = icmp sge i64 %845, %854
  %856 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %855, ptr noundef @.str.869, ptr noundef %856)
  %857 = load ptr, ptr %15, align 8, !tbaa !5
  %858 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %857, i32 0, i32 6
  %859 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %858, i32 0, i32 2
  %860 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %859, i32 0, i32 0
  %861 = load i64, ptr %860, align 8, !tbaa !48
  %862 = load i64, ptr %33, align 8, !tbaa !9
  %863 = load i64, ptr %24, align 8, !tbaa !9
  %864 = add nsw i64 %862, %863
  %865 = add nsw i64 %864, 1
  %866 = icmp sge i64 %861, %865
  %867 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %866, ptr noundef @.str.869, ptr noundef %867)
  %868 = load ptr, ptr %15, align 8, !tbaa !5
  %869 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %868, i32 0, i32 6
  %870 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %869, i32 0, i32 3
  %871 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %870, i32 0, i32 0
  %872 = load i64, ptr %871, align 8, !tbaa !49
  %873 = load i64, ptr %33, align 8, !tbaa !9
  %874 = load i64, ptr %24, align 8, !tbaa !9
  %875 = add nsw i64 %873, %874
  %876 = icmp sge i64 %872, %875
  %877 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %876, ptr noundef @.str.869, ptr noundef %877)
  %878 = load ptr, ptr %15, align 8, !tbaa !5
  %879 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %878, i32 0, i32 6
  %880 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %879, i32 0, i32 4
  %881 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %880, i32 0, i32 0
  %882 = load i64, ptr %881, align 8, !tbaa !50
  %883 = load i64, ptr %33, align 8, !tbaa !9
  %884 = load i64, ptr %24, align 8, !tbaa !9
  %885 = add nsw i64 %883, %884
  %886 = icmp sge i64 %882, %885
  %887 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %886, ptr noundef @.str.869, ptr noundef %887)
  %888 = load ptr, ptr %15, align 8, !tbaa !5
  %889 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %888, i32 0, i32 6
  %890 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %889, i32 0, i32 2
  %891 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %890, i32 0, i32 4
  %892 = load ptr, ptr %891, align 8, !tbaa !33
  %893 = load i64, ptr %33, align 8, !tbaa !9
  %894 = getelementptr inbounds i64, ptr %892, i64 %893
  %895 = load i64, ptr %894, align 8, !tbaa !9
  store i64 %895, ptr %32, align 8, !tbaa !9
  store i64 0, ptr %29, align 8, !tbaa !9
  br label %896

896:                                              ; preds = %950, %824
  %897 = load i64, ptr %29, align 8, !tbaa !9
  %898 = load i64, ptr %24, align 8, !tbaa !9
  %899 = sub nsw i64 %898, 1
  %900 = icmp sle i64 %897, %899
  br i1 %900, label %901, label %953

901:                                              ; preds = %896
  %902 = load ptr, ptr %15, align 8, !tbaa !5
  %903 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %902, i32 0, i32 6
  %904 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %903, i32 0, i32 0
  %905 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %904, i32 0, i32 4
  %906 = load ptr, ptr %905, align 8, !tbaa !33
  %907 = load i64, ptr %32, align 8, !tbaa !9
  %908 = load i64, ptr %29, align 8, !tbaa !9
  %909 = add nsw i64 %907, %908
  %910 = getelementptr inbounds double, ptr %906, i64 %909
  store double -1.000000e+00, ptr %910, align 8, !tbaa !34
  %911 = load i64, ptr %29, align 8, !tbaa !9
  %912 = load ptr, ptr %15, align 8, !tbaa !5
  %913 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %912, i32 0, i32 6
  %914 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %913, i32 0, i32 1
  %915 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %914, i32 0, i32 4
  %916 = load ptr, ptr %915, align 8, !tbaa !33
  %917 = load i64, ptr %32, align 8, !tbaa !9
  %918 = load i64, ptr %29, align 8, !tbaa !9
  %919 = add nsw i64 %917, %918
  %920 = getelementptr inbounds i64, ptr %916, i64 %919
  store i64 %911, ptr %920, align 8, !tbaa !9
  %921 = load ptr, ptr %15, align 8, !tbaa !5
  %922 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %921, i32 0, i32 6
  %923 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %922, i32 0, i32 2
  %924 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %923, i32 0, i32 4
  %925 = load ptr, ptr %924, align 8, !tbaa !33
  %926 = load i64, ptr %33, align 8, !tbaa !9
  %927 = load i64, ptr %29, align 8, !tbaa !9
  %928 = add nsw i64 %926, %927
  %929 = getelementptr inbounds i64, ptr %925, i64 %928
  %930 = load i64, ptr %929, align 8, !tbaa !9
  %931 = add nsw i64 %930, 1
  %932 = load ptr, ptr %15, align 8, !tbaa !5
  %933 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %932, i32 0, i32 6
  %934 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %933, i32 0, i32 2
  %935 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %934, i32 0, i32 4
  %936 = load ptr, ptr %935, align 8, !tbaa !33
  %937 = load i64, ptr %33, align 8, !tbaa !9
  %938 = load i64, ptr %29, align 8, !tbaa !9
  %939 = add nsw i64 %937, %938
  %940 = add nsw i64 %939, 1
  %941 = getelementptr inbounds i64, ptr %936, i64 %940
  store i64 %931, ptr %941, align 8, !tbaa !9
  %942 = load ptr, ptr %15, align 8, !tbaa !5
  %943 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %942, i32 0, i32 6
  %944 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %943, i32 0, i32 9
  %945 = load i64, ptr %944, align 8, !tbaa !51
  %946 = add nsw i64 %945, 1
  %947 = load ptr, ptr %15, align 8, !tbaa !5
  %948 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %947, i32 0, i32 6
  %949 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %948, i32 0, i32 9
  store i64 %946, ptr %949, align 8, !tbaa !51
  br label %950

950:                                              ; preds = %901
  %951 = load i64, ptr %29, align 8, !tbaa !9
  %952 = add nsw i64 %951, 1
  store i64 %952, ptr %29, align 8, !tbaa !9
  br label %896, !llvm.loop !52

953:                                              ; preds = %896
  %954 = load ptr, ptr %15, align 8, !tbaa !5
  %955 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %954, i32 0, i32 6
  %956 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %955, i32 0, i32 6
  %957 = load i64, ptr %956, align 8, !tbaa !53
  %958 = load i64, ptr %24, align 8, !tbaa !9
  %959 = add nsw i64 %957, %958
  %960 = load ptr, ptr %15, align 8, !tbaa !5
  %961 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %960, i32 0, i32 6
  %962 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %961, i32 0, i32 6
  store i64 %959, ptr %962, align 8, !tbaa !53
  %963 = load ptr, ptr %15, align 8, !tbaa !5
  %964 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %963, i32 0, i32 6
  %965 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl15sparseinitduidxEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %964, ptr noundef %965)
  %966 = load ptr, ptr %15, align 8, !tbaa !5
  %967 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %966, i32 0, i32 6
  %968 = load ptr, ptr %15, align 8, !tbaa !5
  %969 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %968, i32 0, i32 5
  %970 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl25sparsecopytransposecrsbufEPKNS_12sparsematrixEPS0_PNS_8ae_stateE(ptr noundef %967, ptr noundef %969, ptr noundef %970)
  store i8 1, ptr %36, align 1, !tbaa !39
  br label %971

971:                                              ; preds = %953, %558
  %972 = load i8, ptr %36, align 1, !tbaa !39, !range !54, !noundef !55
  %973 = trunc i8 %972 to i1
  %974 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %973, ptr noundef @.str.871, ptr noundef %974)
  store i64 0, ptr %29, align 8, !tbaa !9
  br label %975

975:                                              ; preds = %1249, %971
  %976 = load i64, ptr %29, align 8, !tbaa !9
  %977 = load i64, ptr %24, align 8, !tbaa !9
  %978 = sub nsw i64 %977, 1
  %979 = icmp sle i64 %976, %978
  br i1 %979, label %980, label %1252

980:                                              ; preds = %975
  %981 = load ptr, ptr %22, align 8, !tbaa !5
  %982 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %981, i32 0, i32 4
  %983 = load ptr, ptr %982, align 8, !tbaa !33
  %984 = load i64, ptr %29, align 8, !tbaa !9
  %985 = getelementptr inbounds double, ptr %983, i64 %984
  %986 = load double, ptr %985, align 8, !tbaa !34
  %987 = load ptr, ptr %28, align 8, !tbaa !5
  %988 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %986, ptr noundef %987)
  br i1 %988, label %998, label %989

989:                                              ; preds = %980
  %990 = load ptr, ptr %22, align 8, !tbaa !5
  %991 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %990, i32 0, i32 4
  %992 = load ptr, ptr %991, align 8, !tbaa !33
  %993 = load i64, ptr %29, align 8, !tbaa !9
  %994 = getelementptr inbounds double, ptr %992, i64 %993
  %995 = load double, ptr %994, align 8, !tbaa !34
  %996 = load ptr, ptr %28, align 8, !tbaa !5
  %997 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isneginfEdPNS_8ae_stateE(double noundef %995, ptr noundef %996)
  br label %998

998:                                              ; preds = %989, %980
  %999 = phi i1 [ true, %980 ], [ %997, %989 ]
  %1000 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %999, ptr noundef @.str.872, ptr noundef %1000)
  %1001 = load ptr, ptr %23, align 8, !tbaa !5
  %1002 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1001, i32 0, i32 4
  %1003 = load ptr, ptr %1002, align 8, !tbaa !33
  %1004 = load i64, ptr %29, align 8, !tbaa !9
  %1005 = getelementptr inbounds double, ptr %1003, i64 %1004
  %1006 = load double, ptr %1005, align 8, !tbaa !34
  %1007 = load ptr, ptr %28, align 8, !tbaa !5
  %1008 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %1006, ptr noundef %1007)
  br i1 %1008, label %1018, label %1009

1009:                                             ; preds = %998
  %1010 = load ptr, ptr %23, align 8, !tbaa !5
  %1011 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1010, i32 0, i32 4
  %1012 = load ptr, ptr %1011, align 8, !tbaa !33
  %1013 = load i64, ptr %29, align 8, !tbaa !9
  %1014 = getelementptr inbounds double, ptr %1012, i64 %1013
  %1015 = load double, ptr %1014, align 8, !tbaa !34
  %1016 = load ptr, ptr %28, align 8, !tbaa !5
  %1017 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isposinfEdPNS_8ae_stateE(double noundef %1015, ptr noundef %1016)
  br label %1018

1018:                                             ; preds = %1009, %998
  %1019 = phi i1 [ true, %998 ], [ %1017, %1009 ]
  %1020 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1019, ptr noundef @.str.873, ptr noundef %1020)
  %1021 = load ptr, ptr %22, align 8, !tbaa !5
  %1022 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1021, i32 0, i32 4
  %1023 = load ptr, ptr %1022, align 8, !tbaa !33
  %1024 = load i64, ptr %29, align 8, !tbaa !9
  %1025 = getelementptr inbounds double, ptr %1023, i64 %1024
  %1026 = load double, ptr %1025, align 8, !tbaa !34
  %1027 = load ptr, ptr %15, align 8, !tbaa !5
  %1028 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1027, i32 0, i32 0
  %1029 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1028, i32 0, i32 4
  %1030 = load ptr, ptr %1029, align 8, !tbaa !33
  %1031 = load i64, ptr %29, align 8, !tbaa !9
  %1032 = getelementptr inbounds double, ptr %1030, i64 %1031
  %1033 = load double, ptr %1032, align 8, !tbaa !34
  %1034 = fdiv double %1026, %1033
  %1035 = load ptr, ptr %15, align 8, !tbaa !5
  %1036 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1035, i32 0, i32 8
  %1037 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1036, i32 0, i32 3
  %1038 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1037, i32 0, i32 4
  %1039 = load ptr, ptr %1038, align 8, !tbaa !33
  %1040 = load i64, ptr %33, align 8, !tbaa !9
  %1041 = load i64, ptr %29, align 8, !tbaa !9
  %1042 = add nsw i64 %1040, %1041
  %1043 = getelementptr inbounds double, ptr %1039, i64 %1042
  store double %1034, ptr %1043, align 8, !tbaa !34
  %1044 = load ptr, ptr %23, align 8, !tbaa !5
  %1045 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1044, i32 0, i32 4
  %1046 = load ptr, ptr %1045, align 8, !tbaa !33
  %1047 = load i64, ptr %29, align 8, !tbaa !9
  %1048 = getelementptr inbounds double, ptr %1046, i64 %1047
  %1049 = load double, ptr %1048, align 8, !tbaa !34
  %1050 = load ptr, ptr %15, align 8, !tbaa !5
  %1051 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1050, i32 0, i32 0
  %1052 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1051, i32 0, i32 4
  %1053 = load ptr, ptr %1052, align 8, !tbaa !33
  %1054 = load i64, ptr %29, align 8, !tbaa !9
  %1055 = getelementptr inbounds double, ptr %1053, i64 %1054
  %1056 = load double, ptr %1055, align 8, !tbaa !34
  %1057 = fdiv double %1049, %1056
  %1058 = load ptr, ptr %15, align 8, !tbaa !5
  %1059 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1058, i32 0, i32 8
  %1060 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1059, i32 0, i32 4
  %1061 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1060, i32 0, i32 4
  %1062 = load ptr, ptr %1061, align 8, !tbaa !33
  %1063 = load i64, ptr %33, align 8, !tbaa !9
  %1064 = load i64, ptr %29, align 8, !tbaa !9
  %1065 = add nsw i64 %1063, %1064
  %1066 = getelementptr inbounds double, ptr %1062, i64 %1065
  store double %1057, ptr %1066, align 8, !tbaa !34
  %1067 = load ptr, ptr %22, align 8, !tbaa !5
  %1068 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1067, i32 0, i32 4
  %1069 = load ptr, ptr %1068, align 8, !tbaa !33
  %1070 = load i64, ptr %29, align 8, !tbaa !9
  %1071 = getelementptr inbounds double, ptr %1069, i64 %1070
  %1072 = load double, ptr %1071, align 8, !tbaa !34
  %1073 = load ptr, ptr %28, align 8, !tbaa !5
  %1074 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %1072, ptr noundef %1073)
  br i1 %1074, label %1075, label %1160

1075:                                             ; preds = %1018
  %1076 = load ptr, ptr %23, align 8, !tbaa !5
  %1077 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1076, i32 0, i32 4
  %1078 = load ptr, ptr %1077, align 8, !tbaa !33
  %1079 = load i64, ptr %29, align 8, !tbaa !9
  %1080 = getelementptr inbounds double, ptr %1078, i64 %1079
  %1081 = load double, ptr %1080, align 8, !tbaa !34
  %1082 = load ptr, ptr %28, align 8, !tbaa !5
  %1083 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %1081, ptr noundef %1082)
  br i1 %1083, label %1084, label %1160

1084:                                             ; preds = %1075
  %1085 = load ptr, ptr %22, align 8, !tbaa !5
  %1086 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1085, i32 0, i32 4
  %1087 = load ptr, ptr %1086, align 8, !tbaa !33
  %1088 = load i64, ptr %29, align 8, !tbaa !9
  %1089 = getelementptr inbounds double, ptr %1087, i64 %1088
  %1090 = load double, ptr %1089, align 8, !tbaa !34
  %1091 = load ptr, ptr %23, align 8, !tbaa !5
  %1092 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1091, i32 0, i32 4
  %1093 = load ptr, ptr %1092, align 8, !tbaa !33
  %1094 = load i64, ptr %29, align 8, !tbaa !9
  %1095 = getelementptr inbounds double, ptr %1093, i64 %1094
  %1096 = load double, ptr %1095, align 8, !tbaa !34
  %1097 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1090, double noundef %1096)
  br i1 %1097, label %1098, label %1109

1098:                                             ; preds = %1084
  %1099 = load i64, ptr @_ZN11alglib_implL31reviseddualsimplex_ccinfeasibleE, align 8, !tbaa !9
  %1100 = load ptr, ptr %15, align 8, !tbaa !5
  %1101 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1100, i32 0, i32 8
  %1102 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1101, i32 0, i32 5
  %1103 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1102, i32 0, i32 4
  %1104 = load ptr, ptr %1103, align 8, !tbaa !33
  %1105 = load i64, ptr %33, align 8, !tbaa !9
  %1106 = load i64, ptr %29, align 8, !tbaa !9
  %1107 = add nsw i64 %1105, %1106
  %1108 = getelementptr inbounds i64, ptr %1104, i64 %1107
  store i64 %1099, ptr %1108, align 8, !tbaa !9
  br label %1109

1109:                                             ; preds = %1098, %1084
  %1110 = load ptr, ptr %22, align 8, !tbaa !5
  %1111 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1110, i32 0, i32 4
  %1112 = load ptr, ptr %1111, align 8, !tbaa !33
  %1113 = load i64, ptr %29, align 8, !tbaa !9
  %1114 = getelementptr inbounds double, ptr %1112, i64 %1113
  %1115 = load double, ptr %1114, align 8, !tbaa !34
  %1116 = load ptr, ptr %23, align 8, !tbaa !5
  %1117 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1116, i32 0, i32 4
  %1118 = load ptr, ptr %1117, align 8, !tbaa !33
  %1119 = load i64, ptr %29, align 8, !tbaa !9
  %1120 = getelementptr inbounds double, ptr %1118, i64 %1119
  %1121 = load double, ptr %1120, align 8, !tbaa !34
  %1122 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %1115, double noundef %1121)
  br i1 %1122, label %1123, label %1134

1123:                                             ; preds = %1109
  %1124 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_ccrangeE, align 8, !tbaa !9
  %1125 = load ptr, ptr %15, align 8, !tbaa !5
  %1126 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1125, i32 0, i32 8
  %1127 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1126, i32 0, i32 5
  %1128 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1127, i32 0, i32 4
  %1129 = load ptr, ptr %1128, align 8, !tbaa !33
  %1130 = load i64, ptr %33, align 8, !tbaa !9
  %1131 = load i64, ptr %29, align 8, !tbaa !9
  %1132 = add nsw i64 %1130, %1131
  %1133 = getelementptr inbounds i64, ptr %1129, i64 %1132
  store i64 %1124, ptr %1133, align 8, !tbaa !9
  br label %1134

1134:                                             ; preds = %1123, %1109
  %1135 = load ptr, ptr %22, align 8, !tbaa !5
  %1136 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1135, i32 0, i32 4
  %1137 = load ptr, ptr %1136, align 8, !tbaa !33
  %1138 = load i64, ptr %29, align 8, !tbaa !9
  %1139 = getelementptr inbounds double, ptr %1137, i64 %1138
  %1140 = load double, ptr %1139, align 8, !tbaa !34
  %1141 = load ptr, ptr %23, align 8, !tbaa !5
  %1142 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1141, i32 0, i32 4
  %1143 = load ptr, ptr %1142, align 8, !tbaa !33
  %1144 = load i64, ptr %29, align 8, !tbaa !9
  %1145 = getelementptr inbounds double, ptr %1143, i64 %1144
  %1146 = load double, ptr %1145, align 8, !tbaa !34
  %1147 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1140, double noundef %1146)
  br i1 %1147, label %1148, label %1159

1148:                                             ; preds = %1134
  %1149 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_ccfixedE, align 8, !tbaa !9
  %1150 = load ptr, ptr %15, align 8, !tbaa !5
  %1151 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1150, i32 0, i32 8
  %1152 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1151, i32 0, i32 5
  %1153 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1152, i32 0, i32 4
  %1154 = load ptr, ptr %1153, align 8, !tbaa !33
  %1155 = load i64, ptr %33, align 8, !tbaa !9
  %1156 = load i64, ptr %29, align 8, !tbaa !9
  %1157 = add nsw i64 %1155, %1156
  %1158 = getelementptr inbounds i64, ptr %1154, i64 %1157
  store i64 %1149, ptr %1158, align 8, !tbaa !9
  br label %1159

1159:                                             ; preds = %1148, %1134
  br label %1249

1160:                                             ; preds = %1075, %1018
  %1161 = load ptr, ptr %22, align 8, !tbaa !5
  %1162 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1161, i32 0, i32 4
  %1163 = load ptr, ptr %1162, align 8, !tbaa !33
  %1164 = load i64, ptr %29, align 8, !tbaa !9
  %1165 = getelementptr inbounds double, ptr %1163, i64 %1164
  %1166 = load double, ptr %1165, align 8, !tbaa !34
  %1167 = load ptr, ptr %28, align 8, !tbaa !5
  %1168 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %1166, ptr noundef %1167)
  br i1 %1168, label %1169, label %1189

1169:                                             ; preds = %1160
  %1170 = load ptr, ptr %23, align 8, !tbaa !5
  %1171 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1170, i32 0, i32 4
  %1172 = load ptr, ptr %1171, align 8, !tbaa !33
  %1173 = load i64, ptr %29, align 8, !tbaa !9
  %1174 = getelementptr inbounds double, ptr %1172, i64 %1173
  %1175 = load double, ptr %1174, align 8, !tbaa !34
  %1176 = load ptr, ptr %28, align 8, !tbaa !5
  %1177 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %1175, ptr noundef %1176)
  br i1 %1177, label %1189, label %1178

1178:                                             ; preds = %1169
  %1179 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_cclowerE, align 8, !tbaa !9
  %1180 = load ptr, ptr %15, align 8, !tbaa !5
  %1181 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1180, i32 0, i32 8
  %1182 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1181, i32 0, i32 5
  %1183 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1182, i32 0, i32 4
  %1184 = load ptr, ptr %1183, align 8, !tbaa !33
  %1185 = load i64, ptr %33, align 8, !tbaa !9
  %1186 = load i64, ptr %29, align 8, !tbaa !9
  %1187 = add nsw i64 %1185, %1186
  %1188 = getelementptr inbounds i64, ptr %1184, i64 %1187
  store i64 %1179, ptr %1188, align 8, !tbaa !9
  br label %1249

1189:                                             ; preds = %1169, %1160
  %1190 = load ptr, ptr %22, align 8, !tbaa !5
  %1191 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1190, i32 0, i32 4
  %1192 = load ptr, ptr %1191, align 8, !tbaa !33
  %1193 = load i64, ptr %29, align 8, !tbaa !9
  %1194 = getelementptr inbounds double, ptr %1192, i64 %1193
  %1195 = load double, ptr %1194, align 8, !tbaa !34
  %1196 = load ptr, ptr %28, align 8, !tbaa !5
  %1197 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %1195, ptr noundef %1196)
  br i1 %1197, label %1218, label %1198

1198:                                             ; preds = %1189
  %1199 = load ptr, ptr %23, align 8, !tbaa !5
  %1200 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1199, i32 0, i32 4
  %1201 = load ptr, ptr %1200, align 8, !tbaa !33
  %1202 = load i64, ptr %29, align 8, !tbaa !9
  %1203 = getelementptr inbounds double, ptr %1201, i64 %1202
  %1204 = load double, ptr %1203, align 8, !tbaa !34
  %1205 = load ptr, ptr %28, align 8, !tbaa !5
  %1206 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %1204, ptr noundef %1205)
  br i1 %1206, label %1207, label %1218

1207:                                             ; preds = %1198
  %1208 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_ccupperE, align 8, !tbaa !9
  %1209 = load ptr, ptr %15, align 8, !tbaa !5
  %1210 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1209, i32 0, i32 8
  %1211 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1210, i32 0, i32 5
  %1212 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1211, i32 0, i32 4
  %1213 = load ptr, ptr %1212, align 8, !tbaa !33
  %1214 = load i64, ptr %33, align 8, !tbaa !9
  %1215 = load i64, ptr %29, align 8, !tbaa !9
  %1216 = add nsw i64 %1214, %1215
  %1217 = getelementptr inbounds i64, ptr %1213, i64 %1216
  store i64 %1208, ptr %1217, align 8, !tbaa !9
  br label %1249

1218:                                             ; preds = %1198, %1189
  %1219 = load ptr, ptr %22, align 8, !tbaa !5
  %1220 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1219, i32 0, i32 4
  %1221 = load ptr, ptr %1220, align 8, !tbaa !33
  %1222 = load i64, ptr %29, align 8, !tbaa !9
  %1223 = getelementptr inbounds double, ptr %1221, i64 %1222
  %1224 = load double, ptr %1223, align 8, !tbaa !34
  %1225 = load ptr, ptr %28, align 8, !tbaa !5
  %1226 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isneginfEdPNS_8ae_stateE(double noundef %1224, ptr noundef %1225)
  br i1 %1226, label %1227, label %1236

1227:                                             ; preds = %1218
  %1228 = load ptr, ptr %23, align 8, !tbaa !5
  %1229 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1228, i32 0, i32 4
  %1230 = load ptr, ptr %1229, align 8, !tbaa !33
  %1231 = load i64, ptr %29, align 8, !tbaa !9
  %1232 = getelementptr inbounds double, ptr %1230, i64 %1231
  %1233 = load double, ptr %1232, align 8, !tbaa !34
  %1234 = load ptr, ptr %28, align 8, !tbaa !5
  %1235 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isposinfEdPNS_8ae_stateE(double noundef %1233, ptr noundef %1234)
  br label %1236

1236:                                             ; preds = %1227, %1218
  %1237 = phi i1 [ false, %1218 ], [ %1235, %1227 ]
  %1238 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1237, ptr noundef @.str.874, ptr noundef %1238)
  %1239 = load i64, ptr @_ZN11alglib_implL25reviseddualsimplex_ccfreeE, align 8, !tbaa !9
  %1240 = load ptr, ptr %15, align 8, !tbaa !5
  %1241 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1240, i32 0, i32 8
  %1242 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1241, i32 0, i32 5
  %1243 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1242, i32 0, i32 4
  %1244 = load ptr, ptr %1243, align 8, !tbaa !33
  %1245 = load i64, ptr %33, align 8, !tbaa !9
  %1246 = load i64, ptr %29, align 8, !tbaa !9
  %1247 = add nsw i64 %1245, %1246
  %1248 = getelementptr inbounds i64, ptr %1244, i64 %1247
  store i64 %1239, ptr %1248, align 8, !tbaa !9
  br label %1249

1249:                                             ; preds = %1236, %1207, %1178, %1159
  %1250 = load i64, ptr %29, align 8, !tbaa !9
  %1251 = add nsw i64 %1250, 1
  store i64 %1251, ptr %29, align 8, !tbaa !9
  br label %975, !llvm.loop !56

1252:                                             ; preds = %975
  store i8 0, ptr %38, align 1, !tbaa !39
  %1253 = load i64, ptr %26, align 8, !tbaa !9
  %1254 = icmp eq i64 %1253, 2
  br i1 %1254, label %1255, label %1283

1255:                                             ; preds = %1252
  %1256 = load ptr, ptr %25, align 8, !tbaa !5
  %1257 = getelementptr inbounds %"struct.alglib_impl::dualsimplexbasis", ptr %1256, i32 0, i32 0
  %1258 = load i64, ptr %1257, align 8, !tbaa !57
  %1259 = load ptr, ptr %15, align 8, !tbaa !5
  %1260 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1259, i32 0, i32 8
  %1261 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1260, i32 0, i32 0
  %1262 = load i64, ptr %1261, align 8, !tbaa !11
  %1263 = icmp eq i64 %1258, %1262
  %1264 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1263, ptr noundef @.str.875, ptr noundef %1264)
  %1265 = load ptr, ptr %25, align 8, !tbaa !5
  %1266 = getelementptr inbounds %"struct.alglib_impl::dualsimplexbasis", ptr %1265, i32 0, i32 1
  %1267 = load i64, ptr %1266, align 8, !tbaa !58
  %1268 = load ptr, ptr %15, align 8, !tbaa !5
  %1269 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1268, i32 0, i32 8
  %1270 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1269, i32 0, i32 1
  %1271 = load i64, ptr %1270, align 8, !tbaa !27
  %1272 = icmp eq i64 %1267, %1271
  %1273 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1272, ptr noundef @.str.875, ptr noundef %1273)
  %1274 = load ptr, ptr %15, align 8, !tbaa !5
  %1275 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1274, i32 0, i32 7
  %1276 = load ptr, ptr %25, align 8, !tbaa !5
  %1277 = load ptr, ptr %15, align 8, !tbaa !5
  %1278 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1277, i32 0, i32 6
  %1279 = load ptr, ptr %27, align 8, !tbaa !5
  %1280 = load ptr, ptr %28, align 8, !tbaa !5
  %1281 = call noundef zeroext i1 @_ZN11alglib_implL37reviseddualsimplex_basistryimportfromEPNS_16dualsimplexbasisEPKS0_PKNS_12sparsematrixEPKNS_19dualsimplexsettingsEPNS_8ae_stateE(ptr noundef %1275, ptr noundef %1276, ptr noundef %1278, ptr noundef %1279, ptr noundef %1280)
  %1282 = zext i1 %1281 to i8
  store i8 %1282, ptr %38, align 1, !tbaa !39
  br label %1283

1283:                                             ; preds = %1255, %1252
  %1284 = load i64, ptr %26, align 8, !tbaa !9
  %1285 = icmp eq i64 %1284, 1
  br i1 %1285, label %1286, label %1356

1286:                                             ; preds = %1283
  %1287 = load ptr, ptr %15, align 8, !tbaa !5
  %1288 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1287, i32 0, i32 8
  %1289 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1288, i32 0, i32 1
  %1290 = load i64, ptr %1289, align 8, !tbaa !27
  %1291 = load i64, ptr %37, align 8, !tbaa !9
  %1292 = icmp sge i64 %1290, %1291
  br i1 %1292, label %1293, label %1356

1293:                                             ; preds = %1286
  %1294 = load i64, ptr %37, align 8, !tbaa !9
  store i64 %1294, ptr %29, align 8, !tbaa !9
  br label %1295

1295:                                             ; preds = %1340, %1293
  %1296 = load i64, ptr %29, align 8, !tbaa !9
  %1297 = load ptr, ptr %15, align 8, !tbaa !5
  %1298 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1297, i32 0, i32 8
  %1299 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1298, i32 0, i32 1
  %1300 = load i64, ptr %1299, align 8, !tbaa !27
  %1301 = sub nsw i64 %1300, 1
  %1302 = icmp sle i64 %1296, %1301
  br i1 %1302, label %1303, label %1343

1303:                                             ; preds = %1295
  %1304 = load ptr, ptr %15, align 8, !tbaa !5
  %1305 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1304, i32 0, i32 8
  %1306 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1305, i32 0, i32 2
  %1307 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1306, i32 0, i32 4
  %1308 = load ptr, ptr %1307, align 8, !tbaa !33
  %1309 = load i64, ptr %33, align 8, !tbaa !9
  %1310 = load i64, ptr %29, align 8, !tbaa !9
  %1311 = add nsw i64 %1309, %1310
  %1312 = getelementptr inbounds double, ptr %1308, i64 %1311
  store double 0.000000e+00, ptr %1312, align 8, !tbaa !34
  %1313 = load ptr, ptr %15, align 8, !tbaa !5
  %1314 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1313, i32 0, i32 8
  %1315 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1314, i32 0, i32 15
  %1316 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1315, i32 0, i32 4
  %1317 = load ptr, ptr %1316, align 8, !tbaa !33
  %1318 = load i64, ptr %33, align 8, !tbaa !9
  %1319 = load i64, ptr %29, align 8, !tbaa !9
  %1320 = add nsw i64 %1318, %1319
  %1321 = getelementptr inbounds double, ptr %1317, i64 %1320
  store double 0.000000e+00, ptr %1321, align 8, !tbaa !34
  %1322 = load ptr, ptr %15, align 8, !tbaa !5
  %1323 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1322, i32 0, i32 8
  %1324 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1323, i32 0, i32 6
  %1325 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1324, i32 0, i32 4
  %1326 = load ptr, ptr %1325, align 8, !tbaa !33
  %1327 = load i64, ptr %33, align 8, !tbaa !9
  %1328 = load i64, ptr %29, align 8, !tbaa !9
  %1329 = add nsw i64 %1327, %1328
  %1330 = getelementptr inbounds double, ptr %1326, i64 %1329
  store double 0.000000e+00, ptr %1330, align 8, !tbaa !34
  %1331 = load ptr, ptr %15, align 8, !tbaa !5
  %1332 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1331, i32 0, i32 8
  %1333 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1332, i32 0, i32 7
  %1334 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1333, i32 0, i32 4
  %1335 = load ptr, ptr %1334, align 8, !tbaa !33
  %1336 = load i64, ptr %33, align 8, !tbaa !9
  %1337 = load i64, ptr %29, align 8, !tbaa !9
  %1338 = add nsw i64 %1336, %1337
  %1339 = getelementptr inbounds double, ptr %1335, i64 %1338
  store double 0.000000e+00, ptr %1339, align 8, !tbaa !34
  br label %1340

1340:                                             ; preds = %1303
  %1341 = load i64, ptr %29, align 8, !tbaa !9
  %1342 = add nsw i64 %1341, 1
  store i64 %1342, ptr %29, align 8, !tbaa !9
  br label %1295, !llvm.loop !59

1343:                                             ; preds = %1295
  %1344 = load ptr, ptr %15, align 8, !tbaa !5
  %1345 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1344, i32 0, i32 7
  %1346 = load ptr, ptr %15, align 8, !tbaa !5
  %1347 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1346, i32 0, i32 8
  %1348 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1347, i32 0, i32 1
  %1349 = load i64, ptr %1348, align 8, !tbaa !27
  %1350 = load ptr, ptr %15, align 8, !tbaa !5
  %1351 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1350, i32 0, i32 6
  %1352 = load ptr, ptr %27, align 8, !tbaa !5
  %1353 = load ptr, ptr %28, align 8, !tbaa !5
  %1354 = call noundef zeroext i1 @_ZN11alglib_implL33reviseddualsimplex_basistryresizeEPNS_16dualsimplexbasisElPKNS_12sparsematrixEPKNS_19dualsimplexsettingsEPNS_8ae_stateE(ptr noundef %1345, i64 noundef %1349, ptr noundef %1351, ptr noundef %1352, ptr noundef %1353)
  %1355 = zext i1 %1354 to i8
  store i8 %1355, ptr %38, align 1, !tbaa !39
  br label %1356

1356:                                             ; preds = %1343, %1286, %1283
  %1357 = load i8, ptr %38, align 1, !tbaa !39, !range !54, !noundef !55
  %1358 = trunc i8 %1357 to i1
  br i1 %1358, label %1423, label %1359

1359:                                             ; preds = %1356
  store i64 0, ptr %29, align 8, !tbaa !9
  br label %1360

1360:                                             ; preds = %1402, %1359
  %1361 = load i64, ptr %29, align 8, !tbaa !9
  %1362 = load i64, ptr %24, align 8, !tbaa !9
  %1363 = sub nsw i64 %1362, 1
  %1364 = icmp sle i64 %1361, %1363
  br i1 %1364, label %1365, label %1405

1365:                                             ; preds = %1360
  %1366 = load ptr, ptr %15, align 8, !tbaa !5
  %1367 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1366, i32 0, i32 8
  %1368 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1367, i32 0, i32 2
  %1369 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1368, i32 0, i32 4
  %1370 = load ptr, ptr %1369, align 8, !tbaa !33
  %1371 = load i64, ptr %33, align 8, !tbaa !9
  %1372 = load i64, ptr %29, align 8, !tbaa !9
  %1373 = add nsw i64 %1371, %1372
  %1374 = getelementptr inbounds double, ptr %1370, i64 %1373
  store double 0.000000e+00, ptr %1374, align 8, !tbaa !34
  %1375 = load ptr, ptr %15, align 8, !tbaa !5
  %1376 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1375, i32 0, i32 8
  %1377 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1376, i32 0, i32 15
  %1378 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1377, i32 0, i32 4
  %1379 = load ptr, ptr %1378, align 8, !tbaa !33
  %1380 = load i64, ptr %33, align 8, !tbaa !9
  %1381 = load i64, ptr %29, align 8, !tbaa !9
  %1382 = add nsw i64 %1380, %1381
  %1383 = getelementptr inbounds double, ptr %1379, i64 %1382
  store double 0.000000e+00, ptr %1383, align 8, !tbaa !34
  %1384 = load ptr, ptr %15, align 8, !tbaa !5
  %1385 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1384, i32 0, i32 8
  %1386 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1385, i32 0, i32 6
  %1387 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1386, i32 0, i32 4
  %1388 = load ptr, ptr %1387, align 8, !tbaa !33
  %1389 = load i64, ptr %33, align 8, !tbaa !9
  %1390 = load i64, ptr %29, align 8, !tbaa !9
  %1391 = add nsw i64 %1389, %1390
  %1392 = getelementptr inbounds double, ptr %1388, i64 %1391
  store double 0.000000e+00, ptr %1392, align 8, !tbaa !34
  %1393 = load ptr, ptr %15, align 8, !tbaa !5
  %1394 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1393, i32 0, i32 8
  %1395 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1394, i32 0, i32 7
  %1396 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1395, i32 0, i32 4
  %1397 = load ptr, ptr %1396, align 8, !tbaa !33
  %1398 = load i64, ptr %33, align 8, !tbaa !9
  %1399 = load i64, ptr %29, align 8, !tbaa !9
  %1400 = add nsw i64 %1398, %1399
  %1401 = getelementptr inbounds double, ptr %1397, i64 %1400
  store double 0.000000e+00, ptr %1401, align 8, !tbaa !34
  br label %1402

1402:                                             ; preds = %1365
  %1403 = load i64, ptr %29, align 8, !tbaa !9
  %1404 = add nsw i64 %1403, 1
  store i64 %1404, ptr %29, align 8, !tbaa !9
  br label %1360, !llvm.loop !60

1405:                                             ; preds = %1360
  %1406 = load ptr, ptr %15, align 8, !tbaa !5
  %1407 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1406, i32 0, i32 8
  %1408 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1407, i32 0, i32 0
  %1409 = load i64, ptr %1408, align 8, !tbaa !11
  %1410 = load ptr, ptr %15, align 8, !tbaa !5
  %1411 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1410, i32 0, i32 8
  %1412 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1411, i32 0, i32 1
  %1413 = load i64, ptr %1412, align 8, !tbaa !27
  %1414 = load ptr, ptr %15, align 8, !tbaa !5
  %1415 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1414, i32 0, i32 7
  %1416 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_implL28reviseddualsimplex_basisinitEllPNS_16dualsimplexbasisEPNS_8ae_stateE(i64 noundef %1409, i64 noundef %1413, ptr noundef %1415, ptr noundef %1416)
  %1417 = load ptr, ptr %15, align 8, !tbaa !5
  %1418 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1417, i32 0, i32 7
  %1419 = load ptr, ptr %15, align 8, !tbaa !5
  %1420 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1419, i32 0, i32 6
  %1421 = load ptr, ptr %27, align 8, !tbaa !5
  %1422 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_implL32reviseddualsimplex_basisfreshtrfEPNS_16dualsimplexbasisEPKNS_12sparsematrixEPKNS_19dualsimplexsettingsEPNS_8ae_stateE(ptr noundef %1418, ptr noundef %1420, ptr noundef %1421, ptr noundef %1422)
  br label %1423

1423:                                             ; preds = %1405, %1356
  %1424 = load ptr, ptr %15, align 8, !tbaa !5
  %1425 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1424, i32 0, i32 13
  %1426 = load ptr, ptr %15, align 8, !tbaa !5
  %1427 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1426, i32 0, i32 8
  %1428 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1427, i32 0, i32 1
  %1429 = load i64, ptr %1428, align 8, !tbaa !27
  %1430 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %1425, i64 noundef %1429, ptr noundef %1430)
  %1431 = load ptr, ptr %15, align 8, !tbaa !5
  %1432 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1431, i32 0, i32 14
  %1433 = load ptr, ptr %15, align 8, !tbaa !5
  %1434 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1433, i32 0, i32 8
  %1435 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1434, i32 0, i32 0
  %1436 = load i64, ptr %1435, align 8, !tbaa !11
  %1437 = load ptr, ptr %15, align 8, !tbaa !5
  %1438 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1437, i32 0, i32 8
  %1439 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1438, i32 0, i32 1
  %1440 = load i64, ptr %1439, align 8, !tbaa !27
  %1441 = add nsw i64 %1436, %1440
  %1442 = load ptr, ptr %28, align 8, !tbaa !5
  call void @_ZN11alglib_impl13ivectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %1432, i64 noundef %1441, ptr noundef %1442)
  store i32 0, ptr %40, align 4
  br label %1443

1443:                                             ; preds = %1423, %534
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  %1444 = load i32, ptr %40, align 4
  switch i32 %1444, label %1446 [
    i32 0, label %1445
    i32 1, label %1445
  ]

1445:                                             ; preds = %1443, %1443
  ret void

1446:                                             ; preds = %1443
  unreachable
}

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN11alglib_implL37reviseddualsimplex_basistryimportfromEPNS_16dualsimplexbasisEPKS0_PKNS_12sparsematrixEPKNS_19dualsimplexsettingsEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !10, i64 7240}
!12 = !{!"_ZTSN11alglib_impl16dualsimplexstateE", !13, i64 0, !13, i64 64, !13, i64 128, !10, i64 192, !10, i64 200, !16, i64 208, !16, i64 576, !17, i64 944, !24, i64 7240, !24, i64 8096, !24, i64 8952, !13, i64 9808, !13, i64 9872, !13, i64 9936, !13, i64 10000, !10, i64 10064, !10, i64 10072, !10, i64 10080, !10, i64 10088, !10, i64 10096, !10, i64 10104, !10, i64 10112, !10, i64 10120, !10, i64 10128, !10, i64 10136, !10, i64 10144, !10, i64 10152, !10, i64 10160, !10, i64 10168, !19, i64 10176, !10, i64 10184, !19, i64 10192, !10, i64 10200, !19, i64 10208, !10, i64 10216, !14, i64 10224, !14, i64 10225, !14, i64 10226, !13, i64 10232, !13, i64 10296, !13, i64 10360, !13, i64 10424, !13, i64 10488, !13, i64 10552, !10, i64 10616, !13, i64 10624, !13, i64 10688, !13, i64 10752, !13, i64 10816, !25, i64 10880, !13, i64 11616, !13, i64 11680, !13, i64 11744, !26, i64 11808, !26, i64 12016, !13, i64 12224, !13, i64 12288, !13, i64 12352, !13, i64 12416, !13, i64 12480}
!13 = !{!"_ZTSN11alglib_impl9ae_vectorE", !10, i64 0, !10, i64 8, !14, i64 16, !15, i64 24, !7, i64 56}
!14 = !{!"bool", !7, i64 0}
!15 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!16 = !{!"_ZTSN11alglib_impl12sparsematrixE", !13, i64 0, !13, i64 64, !13, i64 128, !13, i64 192, !13, i64 256, !10, i64 320, !10, i64 328, !10, i64 336, !10, i64 344, !10, i64 352, !10, i64 360}
!17 = !{!"_ZTSN11alglib_impl16dualsimplexbasisE", !10, i64 0, !10, i64 8, !13, i64 16, !13, i64 80, !13, i64 144, !10, i64 208, !14, i64 216, !10, i64 224, !18, i64 232, !16, i64 312, !16, i64 680, !16, i64 1048, !13, i64 1416, !13, i64 1480, !13, i64 1544, !13, i64 1608, !13, i64 1672, !13, i64 1736, !13, i64 1800, !14, i64 1864, !19, i64 1872, !10, i64 1880, !10, i64 1888, !19, i64 1896, !13, i64 1904, !13, i64 1968, !13, i64 2032, !13, i64 2096, !13, i64 2160, !18, i64 2224, !13, i64 2304, !13, i64 2368, !16, i64 2432, !16, i64 2800, !20, i64 3168, !13, i64 5736, !13, i64 5800, !13, i64 5864, !16, i64 5928}
!18 = !{!"_ZTSN11alglib_impl9ae_matrixE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !14, i64 32, !15, i64 40, !7, i64 72}
!19 = !{!"double", !7, i64 0}
!20 = !{!"_ZTSN11alglib_impl11sluv2bufferE", !10, i64 0, !16, i64 8, !16, i64 376, !21, i64 744, !21, i64 968, !22, i64 1192, !23, i64 1816, !13, i64 1976, !18, i64 2040, !13, i64 2120, !13, i64 2184, !13, i64 2248, !13, i64 2312, !13, i64 2376, !13, i64 2440, !13, i64 2504}
!21 = !{!"_ZTSN11alglib_impl16sluv2list1matrixE", !10, i64 0, !10, i64 8, !13, i64 16, !13, i64 80, !13, i64 144, !10, i64 208, !10, i64 216}
!22 = !{!"_ZTSN11alglib_impl16sluv2sparsetrailE", !10, i64 0, !10, i64 8, !13, i64 16, !10, i64 80, !10, i64 88, !10, i64 96, !13, i64 104, !13, i64 168, !13, i64 232, !13, i64 296, !13, i64 360, !13, i64 424, !13, i64 488, !10, i64 552, !13, i64 560}
!23 = !{!"_ZTSN11alglib_impl15sluv2densetrailE", !10, i64 0, !10, i64 8, !18, i64 16, !13, i64 96}
!24 = !{!"_ZTSN11alglib_impl21dualsimplexsubproblemE", !10, i64 0, !10, i64 8, !13, i64 16, !13, i64 80, !13, i64 144, !13, i64 208, !13, i64 272, !13, i64 336, !10, i64 400, !13, i64 408, !13, i64 472, !13, i64 536, !13, i64 600, !13, i64 664, !13, i64 728, !13, i64 792}
!25 = !{!"_ZTSN11alglib_impl9apbuffersE", !13, i64 0, !13, i64 64, !13, i64 128, !13, i64 192, !13, i64 256, !13, i64 320, !13, i64 384, !13, i64 448, !13, i64 512, !18, i64 576, !18, i64 656}
!26 = !{!"_ZTSN11alglib_impl9dssvectorE", !10, i64 0, !10, i64 8, !13, i64 16, !13, i64 80, !13, i64 144}
!27 = !{!12, !10, i64 7248}
!28 = !{!13, !10, i64 0}
!29 = !{!16, !10, i64 328}
!30 = !{!16, !10, i64 336}
!31 = !{!12, !10, i64 192}
!32 = !{!12, !10, i64 200}
!33 = !{!7, !7, i64 0}
!34 = !{!19, !19, i64 0}
!35 = distinct !{!35, !36}
!36 = !{!"llvm.loop.mustprogress"}
!37 = distinct !{!37, !36}
!38 = distinct !{!38, !36}
!39 = !{!14, !14, i64 0}
!40 = distinct !{!40, !36}
!41 = distinct !{!41, !36}
!42 = distinct !{!42, !36}
!43 = distinct !{!43, !36}
!44 = distinct !{!44, !36}
!45 = distinct !{!45, !36}
!46 = !{!12, !10, i64 576}
!47 = !{!12, !10, i64 640}
!48 = !{!12, !10, i64 704}
!49 = !{!12, !10, i64 768}
!50 = !{!12, !10, i64 832}
!51 = !{!12, !10, i64 928}
!52 = distinct !{!52, !36}
!53 = !{!12, !10, i64 904}
!54 = !{i8 0, i8 2}
!55 = !{}
!56 = distinct !{!56, !36}
!57 = !{!17, !10, i64 0}
!58 = !{!17, !10, i64 8}
!59 = distinct !{!59, !36}
!60 = distinct !{!60, !36}


; 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.858 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.859 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.860 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.861 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.862 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.863 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.864 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.865 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.866 = external hidden unnamed_addr constant [26 x i8], align 1
@_ZN11alglib_implL28reviseddualsimplex_ssinvalidE = external hidden local_unnamed_addr global i64, align 8
@.str.867 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.868 = external hidden unnamed_addr constant [41 x i8], align 1
@_ZN11alglib_implL31reviseddualsimplex_ccinfeasibleE = external hidden local_unnamed_addr global i64, align 8
@_ZN11alglib_implL26reviseddualsimplex_ccrangeE = external hidden local_unnamed_addr global i64, align 8
@_ZN11alglib_implL26reviseddualsimplex_ccfixedE = external hidden local_unnamed_addr global i64, align 8
@_ZN11alglib_implL26reviseddualsimplex_cclowerE = external hidden local_unnamed_addr global i64, align 8
@_ZN11alglib_implL26reviseddualsimplex_ccupperE = external hidden local_unnamed_addr global i64, align 8
@.str.869 = external hidden unnamed_addr constant [38 x i8], align 1
@_ZN11alglib_implL25reviseddualsimplex_ccfreeE = external hidden local_unnamed_addr global i64, align 8
@.str.870 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.871 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.872 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.873 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.874 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.875 = external hidden unnamed_addr constant [59 x i8], align 1

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

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

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 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_impl10ae_fp_lessEdd(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 void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #0

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

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

declare void @_ZN11alglib_impl13ivectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr 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_impl5rsetvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef, double noundef, ptr 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_impl25sparsecopytransposecrsbufEPKNS_12sparsematrixEPS0_PNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl13dsssetproblemEPNS_16dualsimplexstateEPKNS_9ae_vectorES4_S4_PKNS_9ae_matrixEPKNS_12sparsematrixElS4_S4_lPKNS_16dualsimplexbasisElPKNS_19dualsimplexsettingsEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3, ptr nocapture noundef readnone %4, ptr noundef %5, i64 noundef %6, ptr nocapture noundef readonly %7, ptr nocapture noundef readonly %8, i64 noundef %9, ptr noundef %10, i64 noundef %11, ptr noundef %12, ptr noundef %13) local_unnamed_addr #2 {
  %15 = getelementptr inbounds i8, ptr %0, i64 7240
  %16 = load i64, ptr %15, align 8, !tbaa !5
  %17 = getelementptr inbounds i8, ptr %0, i64 7248
  %18 = load i64, ptr %17, align 8, !tbaa !25
  %19 = load i64, ptr %2, align 8, !tbaa !26
  %20 = icmp sge i64 %19, %16
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %20, ptr noundef nonnull @.str.858, ptr noundef %13)
  %21 = load i64, ptr %3, align 8, !tbaa !26
  %22 = icmp sge i64 %21, %16
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %22, ptr noundef nonnull @.str.859, ptr noundef %13)
  %23 = load i64, ptr %1, align 8, !tbaa !26
  %24 = icmp sge i64 %23, %16
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %24, ptr noundef nonnull @.str.860, ptr noundef %13)
  %25 = tail call noundef zeroext i1 @_ZN11alglib_impl14isfinitevectorEPKNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %1, i64 noundef %16, ptr noundef %13)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %25, ptr noundef nonnull @.str.861, ptr noundef %13)
  %26 = icmp eq i64 %6, 0
  %27 = icmp eq i64 %6, 1
  %28 = icmp ult i64 %6, 2
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %28, ptr noundef nonnull @.str.862, ptr noundef %13)
  %spec.select = icmp ult i64 %11, 3
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %spec.select, ptr noundef nonnull @.str.863, ptr noundef %13)
  %29 = icmp sgt i64 %9, -1
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %29, ptr noundef nonnull @.str.864, ptr noundef %13)
  %30 = icmp sgt i64 %9, 0
  %or.cond3 = and i1 %27, %30
  br i1 %or.cond3, label %31, label %38

31:                                               ; preds = %14
  %32 = getelementptr inbounds i8, ptr %5, i64 328
  %33 = load i64, ptr %32, align 8, !tbaa !27
  %34 = icmp eq i64 %33, %9
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %34, ptr noundef nonnull @.str.865, ptr noundef %13)
  %35 = getelementptr inbounds i8, ptr %5, i64 336
  %36 = load i64, ptr %35, align 8, !tbaa !28
  %37 = icmp eq i64 %36, %16
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %37, ptr noundef nonnull @.str.866, ptr noundef %13)
  br label %38

38:                                               ; preds = %31, %14
  %39 = load i64, ptr @_ZN11alglib_implL28reviseddualsimplex_ssinvalidE, align 8, !tbaa !29
  tail call void @_ZN11alglib_implL33reviseddualsimplex_downgradestateEPNS_21dualsimplexsubproblemElPNS_8ae_stateE(ptr noundef nonnull %15, i64 noundef %39, ptr noundef %13)
  %40 = getelementptr inbounds i8, ptr %0, i64 7320
  %41 = add nsw i64 %16, %9
  tail call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %40, i64 noundef %41, ptr noundef %13)
  %42 = getelementptr inbounds i8, ptr %0, i64 7384
  tail call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %42, i64 noundef %41, ptr noundef %13)
  %43 = getelementptr inbounds i8, ptr %0, i64 7448
  tail call void @_ZN11alglib_impl13ivectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %43, i64 noundef %41, ptr noundef %13)
  %44 = getelementptr inbounds i8, ptr %0, i64 7256
  tail call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %44, i64 noundef %41, ptr noundef %13)
  %45 = getelementptr inbounds i8, ptr %0, i64 8032
  tail call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %45, i64 noundef %41, ptr noundef %13)
  %46 = getelementptr inbounds i8, ptr %0, i64 7512
  tail call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %46, i64 noundef %41, ptr noundef %13)
  %47 = getelementptr inbounds i8, ptr %0, i64 7576
  tail call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %47, i64 noundef %41, ptr noundef %13)
  %48 = getelementptr inbounds i8, ptr %0, i64 7648
  tail call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %48, i64 noundef %9, ptr noundef %13)
  %49 = getelementptr inbounds i8, ptr %0, i64 7712
  tail call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %49, i64 noundef %9, ptr noundef %13)
  %50 = getelementptr inbounds i8, ptr %0, i64 7776
  tail call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %50, i64 noundef %9, ptr noundef %13)
  %51 = getelementptr inbounds i8, ptr %0, i64 7840
  tail call void @_ZN11alglib_impl13ivectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %51, i64 noundef %9, ptr noundef %13)
  %52 = getelementptr inbounds i8, ptr %0, i64 7904
  tail call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %52, i64 noundef %9, ptr noundef %13)
  %53 = getelementptr inbounds i8, ptr %0, i64 7968
  tail call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %53, i64 noundef %9, ptr noundef %13)
  %54 = getelementptr inbounds i8, ptr %0, i64 192
  store i64 %16, ptr %54, align 8, !tbaa !30
  %55 = getelementptr inbounds i8, ptr %0, i64 200
  store i64 %9, ptr %55, align 8, !tbaa !31
  %.not.not528 = icmp sgt i64 %16, 0
  br i1 %.not.not528, label %.lr.ph, label %._crit_edge538.critedge

.lr.ph:                                           ; preds = %38
  %56 = getelementptr inbounds i8, ptr %2, i64 56
  %57 = getelementptr inbounds i8, ptr %0, i64 120
  %58 = getelementptr inbounds i8, ptr %3, i64 56
  %59 = getelementptr inbounds i8, ptr %0, i64 184
  %60 = add nsw i64 %16, -1
  %xtraiter = and i64 %16, 1
  %61 = icmp eq i64 %60, 0
  br i1 %61, label %._crit_edge.unr-lcssa, label %.lr.ph.new

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

62:                                               ; preds = %62, %.lr.ph.new
  %.0529 = phi i64 [ 0, %.lr.ph.new ], [ %84, %62 ]
  %niter = phi i64 [ 0, %.lr.ph.new ], [ %niter.next.1, %62 ]
  %63 = load ptr, ptr %56, align 8, !tbaa !32
  %64 = getelementptr inbounds double, ptr %63, i64 %.0529
  %65 = load double, ptr %64, align 8, !tbaa !33
  %66 = load ptr, ptr %57, align 8, !tbaa !32
  %67 = getelementptr inbounds double, ptr %66, i64 %.0529
  store double %65, ptr %67, align 8, !tbaa !33
  %68 = load ptr, ptr %58, align 8, !tbaa !32
  %69 = getelementptr inbounds double, ptr %68, i64 %.0529
  %70 = load double, ptr %69, align 8, !tbaa !33
  %71 = load ptr, ptr %59, align 8, !tbaa !32
  %72 = getelementptr inbounds double, ptr %71, i64 %.0529
  store double %70, ptr %72, align 8, !tbaa !33
  %73 = or disjoint i64 %.0529, 1
  %74 = load ptr, ptr %56, align 8, !tbaa !32
  %75 = getelementptr inbounds double, ptr %74, i64 %73
  %76 = load double, ptr %75, align 8, !tbaa !33
  %77 = load ptr, ptr %57, align 8, !tbaa !32
  %78 = getelementptr inbounds double, ptr %77, i64 %73
  store double %76, ptr %78, align 8, !tbaa !33
  %79 = load ptr, ptr %58, align 8, !tbaa !32
  %80 = getelementptr inbounds double, ptr %79, i64 %73
  %81 = load double, ptr %80, align 8, !tbaa !33
  %82 = load ptr, ptr %59, align 8, !tbaa !32
  %83 = getelementptr inbounds double, ptr %82, i64 %73
  store double %81, ptr %83, align 8, !tbaa !33
  %84 = add nuw nsw i64 %.0529, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.unr-lcssa, label %62, !llvm.loop !34

._crit_edge.unr-lcssa:                            ; preds = %62, %.lr.ph
  %.0529.unr = phi i64 [ 0, %.lr.ph ], [ %84, %62 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %._crit_edge.epilog-lcssa

._crit_edge.epilog-lcssa:                         ; preds = %._crit_edge.unr-lcssa
  %85 = load ptr, ptr %56, align 8, !tbaa !32
  %86 = getelementptr inbounds double, ptr %85, i64 %.0529.unr
  %87 = load double, ptr %86, align 8, !tbaa !33
  %88 = load ptr, ptr %57, align 8, !tbaa !32
  %89 = getelementptr inbounds double, ptr %88, i64 %.0529.unr
  store double %87, ptr %89, align 8, !tbaa !33
  %90 = load ptr, ptr %58, align 8, !tbaa !32
  %91 = getelementptr inbounds double, ptr %90, i64 %.0529.unr
  %92 = load double, ptr %91, align 8, !tbaa !33
  %93 = load ptr, ptr %59, align 8, !tbaa !32
  %94 = getelementptr inbounds double, ptr %93, i64 %.0529.unr
  store double %92, ptr %94, align 8, !tbaa !33
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.unr-lcssa, %._crit_edge.epilog-lcssa
  tail call void @_ZN11alglib_impl5rsetvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %41, double noundef 0.000000e+00, ptr noundef nonnull %44, ptr noundef %13)
  tail call void @_ZN11alglib_impl5rsetvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %41, double noundef 0.000000e+00, ptr noundef nonnull %45, ptr noundef %13)
  br i1 %.not.not528, label %.lr.ph533, label %._crit_edge538

.lr.ph533:                                        ; preds = %._crit_edge
  %95 = getelementptr inbounds i8, ptr %1, i64 56
  %96 = getelementptr inbounds i8, ptr %0, i64 7312
  %97 = getelementptr inbounds i8, ptr %0, i64 8088
  %xtraiter601 = and i64 %16, 1
  %98 = icmp eq i64 %60, 0
  br i1 %98, label %.preheader527.unr-lcssa, label %.lr.ph533.new

.lr.ph533.new:                                    ; preds = %.lr.ph533
  %unroll_iter603 = and i64 %16, 9223372036854775806
  br label %114

.preheader527.unr-lcssa:                          ; preds = %114, %.lr.ph533
  %.1531.unr = phi i64 [ 0, %.lr.ph533 ], [ %136, %114 ]
  %lcmp.mod602.not = icmp eq i64 %xtraiter601, 0
  br i1 %lcmp.mod602.not, label %.preheader527, label %.preheader527.epilog-lcssa

.preheader527.epilog-lcssa:                       ; preds = %.preheader527.unr-lcssa
  %99 = load ptr, ptr %95, align 8, !tbaa !32
  %100 = getelementptr inbounds double, ptr %99, i64 %.1531.unr
  %101 = load double, ptr %100, align 8, !tbaa !33
  %102 = load ptr, ptr %96, align 8, !tbaa !32
  %103 = getelementptr inbounds double, ptr %102, i64 %.1531.unr
  store double %101, ptr %103, align 8, !tbaa !33
  %104 = load ptr, ptr %95, align 8, !tbaa !32
  %105 = getelementptr inbounds double, ptr %104, i64 %.1531.unr
  %106 = load double, ptr %105, align 8, !tbaa !33
  %107 = load ptr, ptr %97, align 8, !tbaa !32
  %108 = getelementptr inbounds double, ptr %107, i64 %.1531.unr
  store double %106, ptr %108, align 8, !tbaa !33
  br label %.preheader527

.preheader527:                                    ; preds = %.preheader527.unr-lcssa, %.preheader527.epilog-lcssa
  br i1 %.not.not528, label %.lr.ph537, label %._crit_edge538

.lr.ph537:                                        ; preds = %.preheader527
  %109 = getelementptr inbounds i8, ptr %2, i64 56
  %110 = getelementptr inbounds i8, ptr %3, i64 56
  %111 = getelementptr inbounds i8, ptr %0, i64 7376
  %112 = getelementptr inbounds i8, ptr %0, i64 7440
  %113 = getelementptr inbounds i8, ptr %0, i64 7504
  br label %137

114:                                              ; preds = %114, %.lr.ph533.new
  %.1531 = phi i64 [ 0, %.lr.ph533.new ], [ %136, %114 ]
  %niter604 = phi i64 [ 0, %.lr.ph533.new ], [ %niter604.next.1, %114 ]
  %115 = load ptr, ptr %95, align 8, !tbaa !32
  %116 = getelementptr inbounds double, ptr %115, i64 %.1531
  %117 = load double, ptr %116, align 8, !tbaa !33
  %118 = load ptr, ptr %96, align 8, !tbaa !32
  %119 = getelementptr inbounds double, ptr %118, i64 %.1531
  store double %117, ptr %119, align 8, !tbaa !33
  %120 = load ptr, ptr %95, align 8, !tbaa !32
  %121 = getelementptr inbounds double, ptr %120, i64 %.1531
  %122 = load double, ptr %121, align 8, !tbaa !33
  %123 = load ptr, ptr %97, align 8, !tbaa !32
  %124 = getelementptr inbounds double, ptr %123, i64 %.1531
  store double %122, ptr %124, align 8, !tbaa !33
  %125 = or disjoint i64 %.1531, 1
  %126 = load ptr, ptr %95, align 8, !tbaa !32
  %127 = getelementptr inbounds double, ptr %126, i64 %125
  %128 = load double, ptr %127, align 8, !tbaa !33
  %129 = load ptr, ptr %96, align 8, !tbaa !32
  %130 = getelementptr inbounds double, ptr %129, i64 %125
  store double %128, ptr %130, align 8, !tbaa !33
  %131 = load ptr, ptr %95, align 8, !tbaa !32
  %132 = getelementptr inbounds double, ptr %131, i64 %125
  %133 = load double, ptr %132, align 8, !tbaa !33
  %134 = load ptr, ptr %97, align 8, !tbaa !32
  %135 = getelementptr inbounds double, ptr %134, i64 %125
  store double %133, ptr %135, align 8, !tbaa !33
  %136 = add nuw nsw i64 %.1531, 2
  %niter604.next.1 = add i64 %niter604, 2
  %niter604.ncmp.1 = icmp eq i64 %niter604.next.1, %unroll_iter603
  br i1 %niter604.ncmp.1, label %.preheader527.unr-lcssa, label %114, !llvm.loop !36

137:                                              ; preds = %.lr.ph537, %246
  %.2535 = phi i64 [ 0, %.lr.ph537 ], [ %247, %246 ]
  %138 = load ptr, ptr %109, align 8, !tbaa !32
  %139 = getelementptr inbounds double, ptr %138, i64 %.2535
  %140 = load double, ptr %139, align 8, !tbaa !33
  %141 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %140, ptr noundef %13)
  br i1 %141, label %147, label %142

142:                                              ; preds = %137
  %143 = load ptr, ptr %109, align 8, !tbaa !32
  %144 = getelementptr inbounds double, ptr %143, i64 %.2535
  %145 = load double, ptr %144, align 8, !tbaa !33
  %146 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isneginfEdPNS_8ae_stateE(double noundef %145, ptr noundef %13)
  br label %147

147:                                              ; preds = %142, %137
  %148 = phi i1 [ true, %137 ], [ %146, %142 ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %148, ptr noundef nonnull @.str.867, ptr noundef %13)
  %149 = load ptr, ptr %110, align 8, !tbaa !32
  %150 = getelementptr inbounds double, ptr %149, i64 %.2535
  %151 = load double, ptr %150, align 8, !tbaa !33
  %152 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %151, ptr noundef %13)
  br i1 %152, label %158, label %153

153:                                              ; preds = %147
  %154 = load ptr, ptr %110, align 8, !tbaa !32
  %155 = getelementptr inbounds double, ptr %154, i64 %.2535
  %156 = load double, ptr %155, align 8, !tbaa !33
  %157 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isposinfEdPNS_8ae_stateE(double noundef %156, ptr noundef %13)
  br label %158

158:                                              ; preds = %153, %147
  %159 = phi i1 [ true, %147 ], [ %157, %153 ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %159, ptr noundef nonnull @.str.868, ptr noundef %13)
  %160 = load ptr, ptr %109, align 8, !tbaa !32
  %161 = getelementptr inbounds double, ptr %160, i64 %.2535
  %162 = load double, ptr %161, align 8, !tbaa !33
  %163 = load ptr, ptr %111, align 8, !tbaa !32
  %164 = getelementptr inbounds double, ptr %163, i64 %.2535
  store double %162, ptr %164, align 8, !tbaa !33
  %165 = load ptr, ptr %110, align 8, !tbaa !32
  %166 = getelementptr inbounds double, ptr %165, i64 %.2535
  %167 = load double, ptr %166, align 8, !tbaa !33
  %168 = load ptr, ptr %112, align 8, !tbaa !32
  %169 = getelementptr inbounds double, ptr %168, i64 %.2535
  store double %167, ptr %169, align 8, !tbaa !33
  %170 = load ptr, ptr %109, align 8, !tbaa !32
  %171 = getelementptr inbounds double, ptr %170, i64 %.2535
  %172 = load double, ptr %171, align 8, !tbaa !33
  %173 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %172, ptr noundef %13)
  br i1 %173, label %174, label %211

174:                                              ; preds = %158
  %175 = load ptr, ptr %110, align 8, !tbaa !32
  %176 = getelementptr inbounds double, ptr %175, i64 %.2535
  %177 = load double, ptr %176, align 8, !tbaa !33
  %178 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %177, ptr noundef %13)
  br i1 %178, label %179, label %211

179:                                              ; preds = %174
  %180 = load ptr, ptr %109, align 8, !tbaa !32
  %181 = getelementptr inbounds double, ptr %180, i64 %.2535
  %182 = load double, ptr %181, align 8, !tbaa !33
  %183 = load ptr, ptr %110, align 8, !tbaa !32
  %184 = getelementptr inbounds double, ptr %183, i64 %.2535
  %185 = load double, ptr %184, align 8, !tbaa !33
  %186 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %182, double noundef %185)
  br i1 %186, label %187, label %191

187:                                              ; preds = %179
  %188 = load i64, ptr @_ZN11alglib_implL31reviseddualsimplex_ccinfeasibleE, align 8, !tbaa !29
  %189 = load ptr, ptr %113, align 8, !tbaa !32
  %190 = getelementptr inbounds i64, ptr %189, i64 %.2535
  store i64 %188, ptr %190, align 8, !tbaa !29
  br label %191

191:                                              ; preds = %187, %179
  %192 = load ptr, ptr %109, align 8, !tbaa !32
  %193 = getelementptr inbounds double, ptr %192, i64 %.2535
  %194 = load double, ptr %193, align 8, !tbaa !33
  %195 = load ptr, ptr %110, align 8, !tbaa !32
  %196 = getelementptr inbounds double, ptr %195, i64 %.2535
  %197 = load double, ptr %196, align 8, !tbaa !33
  %198 = tail call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %194, double noundef %197)
  br i1 %198, label %199, label %203

199:                                              ; preds = %191
  %200 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_ccrangeE, align 8, !tbaa !29
  %201 = load ptr, ptr %113, align 8, !tbaa !32
  %202 = getelementptr inbounds i64, ptr %201, i64 %.2535
  store i64 %200, ptr %202, align 8, !tbaa !29
  br label %203

203:                                              ; preds = %199, %191
  %204 = load ptr, ptr %109, align 8, !tbaa !32
  %205 = getelementptr inbounds double, ptr %204, i64 %.2535
  %206 = load double, ptr %205, align 8, !tbaa !33
  %207 = load ptr, ptr %110, align 8, !tbaa !32
  %208 = getelementptr inbounds double, ptr %207, i64 %.2535
  %209 = load double, ptr %208, align 8, !tbaa !33
  %210 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %206, double noundef %209)
  br i1 %210, label %.sink.split, label %246

211:                                              ; preds = %174, %158
  %212 = load ptr, ptr %109, align 8, !tbaa !32
  %213 = getelementptr inbounds double, ptr %212, i64 %.2535
  %214 = load double, ptr %213, align 8, !tbaa !33
  %215 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %214, ptr noundef %13)
  br i1 %215, label %216, label %221

216:                                              ; preds = %211
  %217 = load ptr, ptr %110, align 8, !tbaa !32
  %218 = getelementptr inbounds double, ptr %217, i64 %.2535
  %219 = load double, ptr %218, align 8, !tbaa !33
  %220 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %219, ptr noundef %13)
  br i1 %220, label %221, label %.sink.split

221:                                              ; preds = %216, %211
  %222 = load ptr, ptr %109, align 8, !tbaa !32
  %223 = getelementptr inbounds double, ptr %222, i64 %.2535
  %224 = load double, ptr %223, align 8, !tbaa !33
  %225 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %224, ptr noundef %13)
  br i1 %225, label %231, label %226

226:                                              ; preds = %221
  %227 = load ptr, ptr %110, align 8, !tbaa !32
  %228 = getelementptr inbounds double, ptr %227, i64 %.2535
  %229 = load double, ptr %228, align 8, !tbaa !33
  %230 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %229, ptr noundef %13)
  br i1 %230, label %.sink.split, label %231

231:                                              ; preds = %226, %221
  %232 = load ptr, ptr %109, align 8, !tbaa !32
  %233 = getelementptr inbounds double, ptr %232, i64 %.2535
  %234 = load double, ptr %233, align 8, !tbaa !33
  %235 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isneginfEdPNS_8ae_stateE(double noundef %234, ptr noundef %13)
  br i1 %235, label %236, label %241

236:                                              ; preds = %231
  %237 = load ptr, ptr %110, align 8, !tbaa !32
  %238 = getelementptr inbounds double, ptr %237, i64 %.2535
  %239 = load double, ptr %238, align 8, !tbaa !33
  %240 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isposinfEdPNS_8ae_stateE(double noundef %239, ptr noundef %13)
  br label %241

241:                                              ; preds = %236, %231
  %242 = phi i1 [ false, %231 ], [ %240, %236 ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %242, ptr noundef nonnull @.str.869, ptr noundef %13)
  br label %.sink.split

.sink.split:                                      ; preds = %226, %216, %203, %241
  %_ZN11alglib_implL26reviseddualsimplex_ccfixedE.sink = phi ptr [ @_ZN11alglib_implL25reviseddualsimplex_ccfreeE, %241 ], [ @_ZN11alglib_implL26reviseddualsimplex_ccfixedE, %203 ], [ @_ZN11alglib_implL26reviseddualsimplex_cclowerE, %216 ], [ @_ZN11alglib_implL26reviseddualsimplex_ccupperE, %226 ]
  %243 = load i64, ptr %_ZN11alglib_implL26reviseddualsimplex_ccfixedE.sink, align 8, !tbaa !29
  %244 = load ptr, ptr %113, align 8, !tbaa !32
  %245 = getelementptr inbounds i64, ptr %244, i64 %.2535
  store i64 %243, ptr %245, align 8, !tbaa !29
  br label %246

246:                                              ; preds = %.sink.split, %203
  %247 = add nuw nsw i64 %.2535, 1
  %exitcond583.not = icmp eq i64 %247, %16
  br i1 %exitcond583.not, label %._crit_edge538, label %137, !llvm.loop !37

._crit_edge538.critedge:                          ; preds = %38
  tail call void @_ZN11alglib_impl5rsetvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %41, double noundef 0.000000e+00, ptr noundef nonnull %44, ptr noundef %13)
  tail call void @_ZN11alglib_impl5rsetvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %41, double noundef 0.000000e+00, ptr noundef nonnull %45, ptr noundef %13)
  br label %._crit_edge538

._crit_edge538:                                   ; preds = %246, %._crit_edge538.critedge, %._crit_edge, %.preheader527
  %248 = icmp eq i64 %9, 0
  br i1 %248, label %249, label %252

249:                                              ; preds = %._crit_edge538
  store i64 0, ptr %17, align 8, !tbaa !25
  %250 = load i64, ptr %15, align 8, !tbaa !5
  %251 = getelementptr inbounds i8, ptr %0, i64 944
  tail call void @_ZN11alglib_implL28reviseddualsimplex_basisinitEllPNS_16dualsimplexbasisEPNS_8ae_stateE(i64 noundef %250, i64 noundef 0, ptr noundef nonnull %251, ptr noundef %13)
  br label %627

252:                                              ; preds = %._crit_edge538
  store i64 %9, ptr %17, align 8, !tbaa !25
  br i1 %26, label %.thread, label %253

.thread:                                          ; preds = %252
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext false, ptr noundef nonnull @.str.870, ptr noundef %13)
  br label %443

253:                                              ; preds = %252
  br i1 %27, label %254, label %443

254:                                              ; preds = %253
  %255 = getelementptr inbounds i8, ptr %0, i64 576
  %256 = getelementptr inbounds i8, ptr %5, i64 184
  %257 = load ptr, ptr %256, align 8, !tbaa !32
  %258 = getelementptr inbounds i64, ptr %257, i64 %9
  %259 = load i64, ptr %258, align 8, !tbaa !29
  %260 = add nsw i64 %259, %9
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %255, i64 noundef %260, ptr noundef %13)
  %261 = getelementptr inbounds i8, ptr %0, i64 640
  %262 = load ptr, ptr %256, align 8, !tbaa !32
  %263 = getelementptr inbounds i64, ptr %262, i64 %9
  %264 = load i64, ptr %263, align 8, !tbaa !29
  %265 = add nsw i64 %264, %9
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %261, i64 noundef %265, ptr noundef %13)
  %266 = getelementptr inbounds i8, ptr %0, i64 704
  %267 = add nsw i64 %41, 1
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %266, i64 noundef %267, ptr noundef %13)
  %268 = getelementptr inbounds i8, ptr %0, i64 768
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %268, i64 noundef %41, ptr noundef %13)
  %269 = getelementptr inbounds i8, ptr %0, i64 832
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %269, i64 noundef %41, ptr noundef %13)
  tail call void @_ZN11alglib_impl25sparsecopytransposecrsbufEPKNS_12sparsematrixEPS0_PNS_8ae_stateE(ptr noundef %5, ptr noundef nonnull %255, ptr noundef %13)
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %0, i64 noundef %9, ptr noundef %13)
  br i1 %30, label %.lr.ph542, label %.preheader526

.lr.ph542:                                        ; preds = %254
  %270 = getelementptr inbounds i8, ptr %0, i64 56
  %271 = add nsw i64 %9, -1
  %xtraiter606 = and i64 %9, 3
  %272 = icmp ult i64 %271, 3
  br i1 %272, label %.preheader526.loopexit.unr-lcssa, label %.lr.ph542.new

.lr.ph542.new:                                    ; preds = %.lr.ph542
  %unroll_iter608 = and i64 %9, 9223372036854775804
  br label %280

.preheader526.loopexit.unr-lcssa:                 ; preds = %280, %.lr.ph542
  %.3540.unr = phi i64 [ 0, %.lr.ph542 ], [ %292, %280 ]
  %lcmp.mod607.not = icmp eq i64 %xtraiter606, 0
  br i1 %lcmp.mod607.not, label %.preheader526, label %.epil.preheader605

.epil.preheader605:                               ; preds = %.preheader526.loopexit.unr-lcssa, %.epil.preheader605
  %.3540.epil = phi i64 [ %275, %.epil.preheader605 ], [ %.3540.unr, %.preheader526.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader605 ], [ 0, %.preheader526.loopexit.unr-lcssa ]
  %273 = load ptr, ptr %270, align 8, !tbaa !32
  %274 = getelementptr inbounds double, ptr %273, i64 %.3540.epil
  store double 0.000000e+00, ptr %274, align 8, !tbaa !33
  %275 = add nuw nsw i64 %.3540.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter606
  br i1 %epil.iter.cmp.not, label %.preheader526, label %.epil.preheader605, !llvm.loop !38

.preheader526:                                    ; preds = %.preheader526.loopexit.unr-lcssa, %.epil.preheader605, %254
  br i1 %.not.not528, label %.lr.ph549, label %._crit_edge550

.lr.ph549:                                        ; preds = %.preheader526
  %276 = getelementptr inbounds i8, ptr %0, i64 760
  %277 = getelementptr inbounds i8, ptr %0, i64 632
  %278 = getelementptr inbounds i8, ptr %0, i64 696
  %279 = getelementptr inbounds i8, ptr %0, i64 56
  br label %293

280:                                              ; preds = %280, %.lr.ph542.new
  %.3540 = phi i64 [ 0, %.lr.ph542.new ], [ %292, %280 ]
  %niter609 = phi i64 [ 0, %.lr.ph542.new ], [ %niter609.next.3, %280 ]
  %281 = load ptr, ptr %270, align 8, !tbaa !32
  %282 = getelementptr inbounds double, ptr %281, i64 %.3540
  store double 0.000000e+00, ptr %282, align 8, !tbaa !33
  %283 = or disjoint i64 %.3540, 1
  %284 = load ptr, ptr %270, align 8, !tbaa !32
  %285 = getelementptr inbounds double, ptr %284, i64 %283
  store double 0.000000e+00, ptr %285, align 8, !tbaa !33
  %286 = or disjoint i64 %.3540, 2
  %287 = load ptr, ptr %270, align 8, !tbaa !32
  %288 = getelementptr inbounds double, ptr %287, i64 %286
  store double 0.000000e+00, ptr %288, align 8, !tbaa !33
  %289 = or disjoint i64 %.3540, 3
  %290 = load ptr, ptr %270, align 8, !tbaa !32
  %291 = getelementptr inbounds double, ptr %290, i64 %289
  store double 0.000000e+00, ptr %291, align 8, !tbaa !33
  %292 = add nuw nsw i64 %.3540, 4
  %niter609.next.3 = add i64 %niter609, 4
  %niter609.ncmp.3 = icmp eq i64 %niter609.next.3, %unroll_iter608
  br i1 %niter609.ncmp.3, label %.preheader526.loopexit.unr-lcssa, label %280, !llvm.loop !40

.loopexit525:                                     ; preds = %.lr.ph546.prol.loopexit, %.lr.ph546, %293
  %exitcond586.not = icmp eq i64 %297, %16
  br i1 %exitcond586.not, label %._crit_edge550, label %293, !llvm.loop !41

293:                                              ; preds = %.lr.ph549, %.loopexit525
  %.4548 = phi i64 [ 0, %.lr.ph549 ], [ %297, %.loopexit525 ]
  %294 = load ptr, ptr %276, align 8, !tbaa !32
  %295 = getelementptr inbounds i64, ptr %294, i64 %.4548
  %296 = load i64, ptr %295, align 8, !tbaa !29
  %297 = add nuw nsw i64 %.4548, 1
  %298 = getelementptr inbounds i64, ptr %294, i64 %297
  %299 = load i64, ptr %298, align 8, !tbaa !29
  %.not520.not543 = icmp slt i64 %296, %299
  br i1 %.not520.not543, label %.lr.ph546.preheader, label %.loopexit525

.lr.ph546.preheader:                              ; preds = %293
  %300 = sub i64 %299, %296
  %.neg = add i64 %296, 1
  %xtraiter610 = and i64 %300, 1
  %lcmp.mod611.not = icmp eq i64 %xtraiter610, 0
  br i1 %lcmp.mod611.not, label %.lr.ph546.prol.loopexit, label %.lr.ph546.prol

.lr.ph546.prol:                                   ; preds = %.lr.ph546.preheader
  %301 = load ptr, ptr %277, align 8, !tbaa !32
  %302 = getelementptr inbounds double, ptr %301, i64 %296
  %303 = load double, ptr %302, align 8, !tbaa !33
  %304 = load ptr, ptr %278, align 8, !tbaa !32
  %305 = getelementptr inbounds i64, ptr %304, i64 %296
  %306 = load i64, ptr %305, align 8, !tbaa !29
  %307 = load ptr, ptr %279, align 8, !tbaa !32
  %308 = getelementptr inbounds double, ptr %307, i64 %306
  %309 = load double, ptr %308, align 8, !tbaa !33
  %310 = tail call double @llvm.fmuladd.f64(double %303, double %303, double %309)
  store double %310, ptr %308, align 8, !tbaa !33
  %311 = add nsw i64 %296, 1
  br label %.lr.ph546.prol.loopexit

.lr.ph546.prol.loopexit:                          ; preds = %.lr.ph546.prol, %.lr.ph546.preheader
  %.0499544.unr = phi i64 [ %296, %.lr.ph546.preheader ], [ %311, %.lr.ph546.prol ]
  %312 = icmp eq i64 %299, %.neg
  br i1 %312, label %.loopexit525, label %.lr.ph546

.lr.ph546:                                        ; preds = %.lr.ph546.prol.loopexit, %.lr.ph546
  %.0499544 = phi i64 [ %334, %.lr.ph546 ], [ %.0499544.unr, %.lr.ph546.prol.loopexit ]
  %313 = load ptr, ptr %277, align 8, !tbaa !32
  %314 = getelementptr inbounds double, ptr %313, i64 %.0499544
  %315 = load double, ptr %314, align 8, !tbaa !33
  %316 = load ptr, ptr %278, align 8, !tbaa !32
  %317 = getelementptr inbounds i64, ptr %316, i64 %.0499544
  %318 = load i64, ptr %317, align 8, !tbaa !29
  %319 = load ptr, ptr %279, align 8, !tbaa !32
  %320 = getelementptr inbounds double, ptr %319, i64 %318
  %321 = load double, ptr %320, align 8, !tbaa !33
  %322 = tail call double @llvm.fmuladd.f64(double %315, double %315, double %321)
  store double %322, ptr %320, align 8, !tbaa !33
  %323 = add nsw i64 %.0499544, 1
  %324 = load ptr, ptr %277, align 8, !tbaa !32
  %325 = getelementptr inbounds double, ptr %324, i64 %323
  %326 = load double, ptr %325, align 8, !tbaa !33
  %327 = load ptr, ptr %278, align 8, !tbaa !32
  %328 = getelementptr inbounds i64, ptr %327, i64 %323
  %329 = load i64, ptr %328, align 8, !tbaa !29
  %330 = load ptr, ptr %279, align 8, !tbaa !32
  %331 = getelementptr inbounds double, ptr %330, i64 %329
  %332 = load double, ptr %331, align 8, !tbaa !33
  %333 = tail call double @llvm.fmuladd.f64(double %326, double %326, double %332)
  store double %333, ptr %331, align 8, !tbaa !33
  %334 = add nsw i64 %.0499544, 2
  %exitcond585.not.1 = icmp eq i64 %334, %299
  br i1 %exitcond585.not.1, label %.loopexit525, label %.lr.ph546, !llvm.loop !42

._crit_edge550:                                   ; preds = %.loopexit525, %.preheader526
  %335 = getelementptr inbounds i8, ptr %0, i64 11616
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %335, i64 noundef %9, ptr noundef %13)
  br i1 %30, label %.lr.ph554, label %.preheader524

.lr.ph554:                                        ; preds = %._crit_edge550
  %336 = getelementptr inbounds i8, ptr %0, i64 56
  %337 = getelementptr inbounds i8, ptr %0, i64 11672
  br label %342

.preheader524:                                    ; preds = %342, %._crit_edge550
  br i1 %.not.not528, label %.lr.ph561, label %._crit_edge562

.lr.ph561:                                        ; preds = %.preheader524
  %338 = getelementptr inbounds i8, ptr %0, i64 760
  %339 = getelementptr inbounds i8, ptr %0, i64 632
  %340 = getelementptr inbounds i8, ptr %0, i64 11672
  %341 = getelementptr inbounds i8, ptr %0, i64 696
  br label %357

342:                                              ; preds = %.lr.ph554, %342
  %.5552 = phi i64 [ 0, %.lr.ph554 ], [ %356, %342 ]
  %343 = load ptr, ptr %336, align 8, !tbaa !32
  %344 = getelementptr inbounds double, ptr %343, i64 %.5552
  %345 = load double, ptr %344, align 8, !tbaa !33
  %346 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %345, ptr noundef %13)
  %347 = tail call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %346, double noundef 1.000000e+00, ptr noundef %13)
  %348 = load ptr, ptr %336, align 8, !tbaa !32
  %349 = getelementptr inbounds double, ptr %348, i64 %.5552
  store double %347, ptr %349, align 8, !tbaa !33
  %350 = load ptr, ptr %336, align 8, !tbaa !32
  %351 = getelementptr inbounds double, ptr %350, i64 %.5552
  %352 = load double, ptr %351, align 8, !tbaa !33
  %353 = fdiv double 1.000000e+00, %352
  %354 = load ptr, ptr %337, align 8, !tbaa !32
  %355 = getelementptr inbounds double, ptr %354, i64 %.5552
  store double %353, ptr %355, align 8, !tbaa !33
  %356 = add nuw nsw i64 %.5552, 1
  %exitcond587.not = icmp eq i64 %356, %9
  br i1 %exitcond587.not, label %.preheader524, label %342, !llvm.loop !43

.loopexit:                                        ; preds = %.lr.ph558.prol.loopexit, %.lr.ph558, %357
  %exitcond589.not = icmp eq i64 %361, %16
  br i1 %exitcond589.not, label %._crit_edge562, label %357, !llvm.loop !44

357:                                              ; preds = %.lr.ph561, %.loopexit
  %.6560 = phi i64 [ 0, %.lr.ph561 ], [ %361, %.loopexit ]
  %358 = load ptr, ptr %338, align 8, !tbaa !32
  %359 = getelementptr inbounds i64, ptr %358, i64 %.6560
  %360 = load i64, ptr %359, align 8, !tbaa !29
  %361 = add nuw nsw i64 %.6560, 1
  %362 = getelementptr inbounds i64, ptr %358, i64 %361
  %363 = load i64, ptr %362, align 8, !tbaa !29
  %.not519.not555 = icmp slt i64 %360, %363
  br i1 %.not519.not555, label %.lr.ph558.preheader, label %.loopexit

.lr.ph558.preheader:                              ; preds = %357
  %364 = sub i64 %363, %360
  %.neg614 = add i64 %360, 1
  %xtraiter612 = and i64 %364, 1
  %lcmp.mod613.not = icmp eq i64 %xtraiter612, 0
  br i1 %lcmp.mod613.not, label %.lr.ph558.prol.loopexit, label %.lr.ph558.prol

.lr.ph558.prol:                                   ; preds = %.lr.ph558.preheader
  %365 = load ptr, ptr %339, align 8, !tbaa !32
  %366 = getelementptr inbounds double, ptr %365, i64 %360
  %367 = load double, ptr %366, align 8, !tbaa !33
  %368 = load ptr, ptr %340, align 8, !tbaa !32
  %369 = load ptr, ptr %341, align 8, !tbaa !32
  %370 = getelementptr inbounds i64, ptr %369, i64 %360
  %371 = load i64, ptr %370, align 8, !tbaa !29
  %372 = getelementptr inbounds double, ptr %368, i64 %371
  %373 = load double, ptr %372, align 8, !tbaa !33
  %374 = fmul double %367, %373
  store double %374, ptr %366, align 8, !tbaa !33
  %375 = add nsw i64 %360, 1
  br label %.lr.ph558.prol.loopexit

.lr.ph558.prol.loopexit:                          ; preds = %.lr.ph558.prol, %.lr.ph558.preheader
  %.1500556.unr = phi i64 [ %360, %.lr.ph558.preheader ], [ %375, %.lr.ph558.prol ]
  %376 = icmp eq i64 %363, %.neg614
  br i1 %376, label %.loopexit, label %.lr.ph558

.lr.ph558:                                        ; preds = %.lr.ph558.prol.loopexit, %.lr.ph558
  %.1500556 = phi i64 [ %398, %.lr.ph558 ], [ %.1500556.unr, %.lr.ph558.prol.loopexit ]
  %377 = load ptr, ptr %339, align 8, !tbaa !32
  %378 = getelementptr inbounds double, ptr %377, i64 %.1500556
  %379 = load double, ptr %378, align 8, !tbaa !33
  %380 = load ptr, ptr %340, align 8, !tbaa !32
  %381 = load ptr, ptr %341, align 8, !tbaa !32
  %382 = getelementptr inbounds i64, ptr %381, i64 %.1500556
  %383 = load i64, ptr %382, align 8, !tbaa !29
  %384 = getelementptr inbounds double, ptr %380, i64 %383
  %385 = load double, ptr %384, align 8, !tbaa !33
  %386 = fmul double %379, %385
  store double %386, ptr %378, align 8, !tbaa !33
  %387 = add nsw i64 %.1500556, 1
  %388 = load ptr, ptr %339, align 8, !tbaa !32
  %389 = getelementptr inbounds double, ptr %388, i64 %387
  %390 = load double, ptr %389, align 8, !tbaa !33
  %391 = load ptr, ptr %340, align 8, !tbaa !32
  %392 = load ptr, ptr %341, align 8, !tbaa !32
  %393 = getelementptr inbounds i64, ptr %392, i64 %387
  %394 = load i64, ptr %393, align 8, !tbaa !29
  %395 = getelementptr inbounds double, ptr %391, i64 %394
  %396 = load double, ptr %395, align 8, !tbaa !33
  %397 = fmul double %390, %396
  store double %397, ptr %389, align 8, !tbaa !33
  %398 = add nsw i64 %.1500556, 2
  %exitcond588.not.1 = icmp eq i64 %398, %363
  br i1 %exitcond588.not.1, label %.loopexit, label %.lr.ph558, !llvm.loop !45

._crit_edge562:                                   ; preds = %.loopexit, %.preheader524
  %399 = load i64, ptr %255, align 8, !tbaa !46
  %400 = load ptr, ptr %256, align 8, !tbaa !32
  %401 = getelementptr inbounds i64, ptr %400, i64 %9
  %402 = load i64, ptr %401, align 8, !tbaa !29
  %403 = add nsw i64 %402, %9
  %404 = icmp sge i64 %399, %403
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %404, ptr noundef nonnull @.str.869, ptr noundef %13)
  %405 = load i64, ptr %261, align 8, !tbaa !47
  %406 = load ptr, ptr %256, align 8, !tbaa !32
  %407 = getelementptr inbounds i64, ptr %406, i64 %9
  %408 = load i64, ptr %407, align 8, !tbaa !29
  %409 = add nsw i64 %408, %9
  %410 = icmp sge i64 %405, %409
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %410, ptr noundef nonnull @.str.869, ptr noundef %13)
  %411 = load i64, ptr %266, align 8, !tbaa !48
  %412 = icmp sgt i64 %411, %41
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %412, ptr noundef nonnull @.str.869, ptr noundef %13)
  %413 = load i64, ptr %268, align 8, !tbaa !49
  %414 = icmp sge i64 %413, %41
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %414, ptr noundef nonnull @.str.869, ptr noundef %13)
  %415 = load i64, ptr %269, align 8, !tbaa !50
  %416 = icmp sge i64 %415, %41
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %416, ptr noundef nonnull @.str.869, ptr noundef %13)
  %417 = getelementptr inbounds i8, ptr %0, i64 760
  %418 = load ptr, ptr %417, align 8, !tbaa !32
  %419 = getelementptr inbounds i64, ptr %418, i64 %16
  %420 = load i64, ptr %419, align 8, !tbaa !29
  br i1 %30, label %.lr.ph566, label %._crit_edge567

.lr.ph566:                                        ; preds = %._crit_edge562
  %421 = getelementptr inbounds i8, ptr %0, i64 632
  %422 = getelementptr inbounds i8, ptr %0, i64 696
  %423 = getelementptr inbounds i8, ptr %0, i64 928
  br label %424

424:                                              ; preds = %.lr.ph566, %424
  %.7564 = phi i64 [ 0, %.lr.ph566 ], [ %438, %424 ]
  %425 = load ptr, ptr %421, align 8, !tbaa !32
  %426 = add nsw i64 %.7564, %420
  %427 = getelementptr inbounds double, ptr %425, i64 %426
  store double -1.000000e+00, ptr %427, align 8, !tbaa !33
  %428 = load ptr, ptr %422, align 8, !tbaa !32
  %429 = getelementptr inbounds i64, ptr %428, i64 %426
  store i64 %.7564, ptr %429, align 8, !tbaa !29
  %430 = load ptr, ptr %417, align 8, !tbaa !32
  %431 = getelementptr i64, ptr %430, i64 %16
  %432 = getelementptr i64, ptr %431, i64 %.7564
  %433 = load i64, ptr %432, align 8, !tbaa !29
  %434 = add nsw i64 %433, 1
  %435 = getelementptr i8, ptr %432, i64 8
  store i64 %434, ptr %435, align 8, !tbaa !29
  %436 = load i64, ptr %423, align 8, !tbaa !51
  %437 = add nsw i64 %436, 1
  store i64 %437, ptr %423, align 8, !tbaa !51
  %438 = add nuw nsw i64 %.7564, 1
  %exitcond590.not = icmp eq i64 %438, %9
  br i1 %exitcond590.not, label %._crit_edge567, label %424, !llvm.loop !52

._crit_edge567:                                   ; preds = %424, %._crit_edge562
  %439 = getelementptr inbounds i8, ptr %0, i64 904
  %440 = load i64, ptr %439, align 8, !tbaa !53
  %441 = add nsw i64 %440, %9
  store i64 %441, ptr %439, align 8, !tbaa !53
  tail call void @_ZN11alglib_impl15sparseinitduidxEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef nonnull %255, ptr noundef %13)
  %442 = getelementptr inbounds i8, ptr %0, i64 208
  tail call void @_ZN11alglib_impl25sparsecopytransposecrsbufEPKNS_12sparsematrixEPS0_PNS_8ae_stateE(ptr noundef nonnull %255, ptr noundef nonnull %442, ptr noundef %13)
  br label %443

443:                                              ; preds = %.thread, %._crit_edge567, %253
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %27, ptr noundef nonnull @.str.871, ptr noundef %13)
  br i1 %30, label %.lr.ph572, label %._crit_edge573

.lr.ph572:                                        ; preds = %443
  %444 = getelementptr inbounds i8, ptr %7, i64 56
  %445 = getelementptr inbounds i8, ptr %8, i64 56
  %446 = getelementptr inbounds i8, ptr %0, i64 56
  %447 = getelementptr inbounds i8, ptr %0, i64 7376
  %448 = getelementptr inbounds i8, ptr %0, i64 7440
  %449 = getelementptr inbounds i8, ptr %0, i64 7504
  br label %450

450:                                              ; preds = %.lr.ph572, %568
  %.8569 = phi i64 [ 0, %.lr.ph572 ], [ %569, %568 ]
  %451 = load ptr, ptr %444, align 8, !tbaa !32
  %452 = getelementptr inbounds double, ptr %451, i64 %.8569
  %453 = load double, ptr %452, align 8, !tbaa !33
  %454 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %453, ptr noundef %13)
  br i1 %454, label %460, label %455

455:                                              ; preds = %450
  %456 = load ptr, ptr %444, align 8, !tbaa !32
  %457 = getelementptr inbounds double, ptr %456, i64 %.8569
  %458 = load double, ptr %457, align 8, !tbaa !33
  %459 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isneginfEdPNS_8ae_stateE(double noundef %458, ptr noundef %13)
  br label %460

460:                                              ; preds = %455, %450
  %461 = phi i1 [ true, %450 ], [ %459, %455 ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %461, ptr noundef nonnull @.str.872, ptr noundef %13)
  %462 = load ptr, ptr %445, align 8, !tbaa !32
  %463 = getelementptr inbounds double, ptr %462, i64 %.8569
  %464 = load double, ptr %463, align 8, !tbaa !33
  %465 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %464, ptr noundef %13)
  br i1 %465, label %471, label %466

466:                                              ; preds = %460
  %467 = load ptr, ptr %445, align 8, !tbaa !32
  %468 = getelementptr inbounds double, ptr %467, i64 %.8569
  %469 = load double, ptr %468, align 8, !tbaa !33
  %470 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isposinfEdPNS_8ae_stateE(double noundef %469, ptr noundef %13)
  br label %471

471:                                              ; preds = %466, %460
  %472 = phi i1 [ true, %460 ], [ %470, %466 ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %472, ptr noundef nonnull @.str.873, ptr noundef %13)
  %473 = load ptr, ptr %444, align 8, !tbaa !32
  %474 = getelementptr inbounds double, ptr %473, i64 %.8569
  %475 = load double, ptr %474, align 8, !tbaa !33
  %476 = load ptr, ptr %446, align 8, !tbaa !32
  %477 = getelementptr inbounds double, ptr %476, i64 %.8569
  %478 = load double, ptr %477, align 8, !tbaa !33
  %479 = fdiv double %475, %478
  %480 = load ptr, ptr %447, align 8, !tbaa !32
  %481 = add nsw i64 %.8569, %16
  %482 = getelementptr inbounds double, ptr %480, i64 %481
  store double %479, ptr %482, align 8, !tbaa !33
  %483 = load ptr, ptr %445, align 8, !tbaa !32
  %484 = getelementptr inbounds double, ptr %483, i64 %.8569
  %485 = load double, ptr %484, align 8, !tbaa !33
  %486 = load ptr, ptr %446, align 8, !tbaa !32
  %487 = getelementptr inbounds double, ptr %486, i64 %.8569
  %488 = load double, ptr %487, align 8, !tbaa !33
  %489 = fdiv double %485, %488
  %490 = load ptr, ptr %448, align 8, !tbaa !32
  %491 = getelementptr inbounds double, ptr %490, i64 %481
  store double %489, ptr %491, align 8, !tbaa !33
  %492 = load ptr, ptr %444, align 8, !tbaa !32
  %493 = getelementptr inbounds double, ptr %492, i64 %.8569
  %494 = load double, ptr %493, align 8, !tbaa !33
  %495 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %494, ptr noundef %13)
  br i1 %495, label %496, label %533

496:                                              ; preds = %471
  %497 = load ptr, ptr %445, align 8, !tbaa !32
  %498 = getelementptr inbounds double, ptr %497, i64 %.8569
  %499 = load double, ptr %498, align 8, !tbaa !33
  %500 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %499, ptr noundef %13)
  br i1 %500, label %501, label %533

501:                                              ; preds = %496
  %502 = load ptr, ptr %444, align 8, !tbaa !32
  %503 = getelementptr inbounds double, ptr %502, i64 %.8569
  %504 = load double, ptr %503, align 8, !tbaa !33
  %505 = load ptr, ptr %445, align 8, !tbaa !32
  %506 = getelementptr inbounds double, ptr %505, i64 %.8569
  %507 = load double, ptr %506, align 8, !tbaa !33
  %508 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %504, double noundef %507)
  br i1 %508, label %509, label %513

509:                                              ; preds = %501
  %510 = load i64, ptr @_ZN11alglib_implL31reviseddualsimplex_ccinfeasibleE, align 8, !tbaa !29
  %511 = load ptr, ptr %449, align 8, !tbaa !32
  %512 = getelementptr inbounds i64, ptr %511, i64 %481
  store i64 %510, ptr %512, align 8, !tbaa !29
  br label %513

513:                                              ; preds = %509, %501
  %514 = load ptr, ptr %444, align 8, !tbaa !32
  %515 = getelementptr inbounds double, ptr %514, i64 %.8569
  %516 = load double, ptr %515, align 8, !tbaa !33
  %517 = load ptr, ptr %445, align 8, !tbaa !32
  %518 = getelementptr inbounds double, ptr %517, i64 %.8569
  %519 = load double, ptr %518, align 8, !tbaa !33
  %520 = tail call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %516, double noundef %519)
  br i1 %520, label %521, label %525

521:                                              ; preds = %513
  %522 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_ccrangeE, align 8, !tbaa !29
  %523 = load ptr, ptr %449, align 8, !tbaa !32
  %524 = getelementptr inbounds i64, ptr %523, i64 %481
  store i64 %522, ptr %524, align 8, !tbaa !29
  br label %525

525:                                              ; preds = %521, %513
  %526 = load ptr, ptr %444, align 8, !tbaa !32
  %527 = getelementptr inbounds double, ptr %526, i64 %.8569
  %528 = load double, ptr %527, align 8, !tbaa !33
  %529 = load ptr, ptr %445, align 8, !tbaa !32
  %530 = getelementptr inbounds double, ptr %529, i64 %.8569
  %531 = load double, ptr %530, align 8, !tbaa !33
  %532 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %528, double noundef %531)
  br i1 %532, label %.sink.split596, label %568

533:                                              ; preds = %496, %471
  %534 = load ptr, ptr %444, align 8, !tbaa !32
  %535 = getelementptr inbounds double, ptr %534, i64 %.8569
  %536 = load double, ptr %535, align 8, !tbaa !33
  %537 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %536, ptr noundef %13)
  br i1 %537, label %538, label %543

538:                                              ; preds = %533
  %539 = load ptr, ptr %445, align 8, !tbaa !32
  %540 = getelementptr inbounds double, ptr %539, i64 %.8569
  %541 = load double, ptr %540, align 8, !tbaa !33
  %542 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %541, ptr noundef %13)
  br i1 %542, label %543, label %.sink.split596

543:                                              ; preds = %538, %533
  %544 = load ptr, ptr %444, align 8, !tbaa !32
  %545 = getelementptr inbounds double, ptr %544, i64 %.8569
  %546 = load double, ptr %545, align 8, !tbaa !33
  %547 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %546, ptr noundef %13)
  br i1 %547, label %553, label %548

548:                                              ; preds = %543
  %549 = load ptr, ptr %445, align 8, !tbaa !32
  %550 = getelementptr inbounds double, ptr %549, i64 %.8569
  %551 = load double, ptr %550, align 8, !tbaa !33
  %552 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %551, ptr noundef %13)
  br i1 %552, label %.sink.split596, label %553

553:                                              ; preds = %548, %543
  %554 = load ptr, ptr %444, align 8, !tbaa !32
  %555 = getelementptr inbounds double, ptr %554, i64 %.8569
  %556 = load double, ptr %555, align 8, !tbaa !33
  %557 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isneginfEdPNS_8ae_stateE(double noundef %556, ptr noundef %13)
  br i1 %557, label %558, label %563

558:                                              ; preds = %553
  %559 = load ptr, ptr %445, align 8, !tbaa !32
  %560 = getelementptr inbounds double, ptr %559, i64 %.8569
  %561 = load double, ptr %560, align 8, !tbaa !33
  %562 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isposinfEdPNS_8ae_stateE(double noundef %561, ptr noundef %13)
  br label %563

563:                                              ; preds = %558, %553
  %564 = phi i1 [ false, %553 ], [ %562, %558 ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %564, ptr noundef nonnull @.str.874, ptr noundef %13)
  br label %.sink.split596

.sink.split596:                                   ; preds = %548, %538, %525, %563
  %_ZN11alglib_implL26reviseddualsimplex_ccfixedE.sink599 = phi ptr [ @_ZN11alglib_implL25reviseddualsimplex_ccfreeE, %563 ], [ @_ZN11alglib_implL26reviseddualsimplex_ccfixedE, %525 ], [ @_ZN11alglib_implL26reviseddualsimplex_cclowerE, %538 ], [ @_ZN11alglib_implL26reviseddualsimplex_ccupperE, %548 ]
  %565 = load i64, ptr %_ZN11alglib_implL26reviseddualsimplex_ccfixedE.sink599, align 8, !tbaa !29
  %566 = load ptr, ptr %449, align 8, !tbaa !32
  %567 = getelementptr inbounds i64, ptr %566, i64 %481
  store i64 %565, ptr %567, align 8, !tbaa !29
  br label %568

568:                                              ; preds = %.sink.split596, %525
  %569 = add nuw nsw i64 %.8569, 1
  %exitcond591.not = icmp eq i64 %569, %9
  br i1 %exitcond591.not, label %._crit_edge573, label %450, !llvm.loop !54

._crit_edge573:                                   ; preds = %568, %443
  switch i64 %11, label %.preheader [
    i64 2, label %590
    i64 1, label %570
  ]

570:                                              ; preds = %._crit_edge573
  %571 = load i64, ptr %17, align 8, !tbaa !25
  %.not = icmp slt i64 %571, %18
  br i1 %.not, label %.preheader, label %.preheader523

.preheader523:                                    ; preds = %570
  %.not517.not574 = icmp slt i64 %18, %571
  br i1 %.not517.not574, label %.lr.ph576, label %._crit_edge577

.lr.ph576:                                        ; preds = %.preheader523
  %572 = getelementptr inbounds i8, ptr %0, i64 7312
  %573 = getelementptr inbounds i8, ptr %0, i64 8088
  %574 = getelementptr inbounds i8, ptr %0, i64 7568
  %575 = getelementptr inbounds i8, ptr %0, i64 7632
  br label %576

576:                                              ; preds = %.lr.ph576, %576
  %.9575 = phi i64 [ %18, %.lr.ph576 ], [ %586, %576 ]
  %577 = load ptr, ptr %572, align 8, !tbaa !32
  %578 = add nsw i64 %.9575, %16
  %579 = getelementptr inbounds double, ptr %577, i64 %578
  store double 0.000000e+00, ptr %579, align 8, !tbaa !33
  %580 = load ptr, ptr %573, align 8, !tbaa !32
  %581 = getelementptr inbounds double, ptr %580, i64 %578
  store double 0.000000e+00, ptr %581, align 8, !tbaa !33
  %582 = load ptr, ptr %574, align 8, !tbaa !32
  %583 = getelementptr inbounds double, ptr %582, i64 %578
  store double 0.000000e+00, ptr %583, align 8, !tbaa !33
  %584 = load ptr, ptr %575, align 8, !tbaa !32
  %585 = getelementptr inbounds double, ptr %584, i64 %578
  store double 0.000000e+00, ptr %585, align 8, !tbaa !33
  %586 = add nsw i64 %.9575, 1
  %exitcond592.not = icmp eq i64 %586, %571
  br i1 %exitcond592.not, label %._crit_edge577, label %576, !llvm.loop !55

._crit_edge577:                                   ; preds = %576, %.preheader523
  %587 = getelementptr inbounds i8, ptr %0, i64 944
  %588 = getelementptr inbounds i8, ptr %0, i64 576
  %589 = tail call noundef zeroext i1 @_ZN11alglib_implL33reviseddualsimplex_basistryresizeEPNS_16dualsimplexbasisElPKNS_12sparsematrixEPKNS_19dualsimplexsettingsEPNS_8ae_stateE(ptr noundef nonnull %587, i64 noundef %571, ptr noundef nonnull %588, ptr noundef %12, ptr noundef %13)
  br i1 %589, label %620, label %.preheader

590:                                              ; preds = %._crit_edge573
  %591 = load i64, ptr %10, align 8, !tbaa !56
  %592 = load i64, ptr %15, align 8, !tbaa !5
  %593 = icmp eq i64 %591, %592
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %593, ptr noundef nonnull @.str.875, ptr noundef %13)
  %594 = getelementptr inbounds i8, ptr %10, i64 8
  %595 = load i64, ptr %594, align 8, !tbaa !57
  %596 = load i64, ptr %17, align 8, !tbaa !25
  %597 = icmp eq i64 %595, %596
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %597, ptr noundef nonnull @.str.875, ptr noundef %13)
  %598 = getelementptr inbounds i8, ptr %0, i64 944
  %599 = getelementptr inbounds i8, ptr %0, i64 576
  %600 = tail call noundef zeroext i1 @_ZN11alglib_implL37reviseddualsimplex_basistryimportfromEPNS_16dualsimplexbasisEPKS0_PKNS_12sparsematrixEPKNS_19dualsimplexsettingsEPNS_8ae_stateE(ptr noundef nonnull %598, ptr noundef nonnull %10, ptr noundef nonnull %599, ptr noundef %12, ptr noundef %13)
  br i1 %600, label %620, label %.preheader

.preheader:                                       ; preds = %._crit_edge577, %570, %._crit_edge573, %590
  br i1 %30, label %.lr.ph580, label %._crit_edge581

.lr.ph580:                                        ; preds = %.preheader
  %601 = getelementptr inbounds i8, ptr %0, i64 7312
  %602 = getelementptr inbounds i8, ptr %0, i64 8088
  %603 = getelementptr inbounds i8, ptr %0, i64 7568
  %604 = getelementptr inbounds i8, ptr %0, i64 7632
  br label %605

605:                                              ; preds = %.lr.ph580, %605
  %.10579 = phi i64 [ 0, %.lr.ph580 ], [ %615, %605 ]
  %606 = load ptr, ptr %601, align 8, !tbaa !32
  %607 = add nsw i64 %.10579, %16
  %608 = getelementptr inbounds double, ptr %606, i64 %607
  store double 0.000000e+00, ptr %608, align 8, !tbaa !33
  %609 = load ptr, ptr %602, align 8, !tbaa !32
  %610 = getelementptr inbounds double, ptr %609, i64 %607
  store double 0.000000e+00, ptr %610, align 8, !tbaa !33
  %611 = load ptr, ptr %603, align 8, !tbaa !32
  %612 = getelementptr inbounds double, ptr %611, i64 %607
  store double 0.000000e+00, ptr %612, align 8, !tbaa !33
  %613 = load ptr, ptr %604, align 8, !tbaa !32
  %614 = getelementptr inbounds double, ptr %613, i64 %607
  store double 0.000000e+00, ptr %614, align 8, !tbaa !33
  %615 = add nuw nsw i64 %.10579, 1
  %exitcond593.not = icmp eq i64 %615, %9
  br i1 %exitcond593.not, label %._crit_edge581, label %605, !llvm.loop !58

._crit_edge581:                                   ; preds = %605, %.preheader
  %616 = load i64, ptr %15, align 8, !tbaa !5
  %617 = load i64, ptr %17, align 8, !tbaa !25
  %618 = getelementptr inbounds i8, ptr %0, i64 944
  tail call void @_ZN11alglib_implL28reviseddualsimplex_basisinitEllPNS_16dualsimplexbasisEPNS_8ae_stateE(i64 noundef %616, i64 noundef %617, ptr noundef nonnull %618, ptr noundef %13)
  %619 = getelementptr inbounds i8, ptr %0, i64 576
  tail call void @_ZN11alglib_implL32reviseddualsimplex_basisfreshtrfEPNS_16dualsimplexbasisEPKNS_12sparsematrixEPKNS_19dualsimplexsettingsEPNS_8ae_stateE(ptr noundef nonnull %618, ptr noundef nonnull %619, ptr noundef %12, ptr noundef %13)
  br label %620

620:                                              ; preds = %._crit_edge577, %._crit_edge581, %590
  %621 = getelementptr inbounds i8, ptr %0, i64 9936
  %622 = load i64, ptr %17, align 8, !tbaa !25
  tail call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %621, i64 noundef %622, ptr noundef %13)
  %623 = getelementptr inbounds i8, ptr %0, i64 10000
  %624 = load i64, ptr %15, align 8, !tbaa !5
  %625 = load i64, ptr %17, align 8, !tbaa !25
  %626 = add nsw i64 %625, %624
  tail call void @_ZN11alglib_impl13ivectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %623, i64 noundef %626, ptr noundef %13)
  br label %627

627:                                              ; preds = %620, %249
  ret void
}

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

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

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

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

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

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 nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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" }

!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 7240}
!6 = !{!"_ZTSN11alglib_impl16dualsimplexstateE", !7, i64 0, !7, i64 64, !7, i64 128, !8, i64 192, !8, i64 200, !14, i64 208, !14, i64 576, !15, i64 944, !22, i64 7240, !22, i64 8096, !22, i64 8952, !7, i64 9808, !7, i64 9872, !7, i64 9936, !7, i64 10000, !8, i64 10064, !8, i64 10072, !8, i64 10080, !8, i64 10088, !8, i64 10096, !8, i64 10104, !8, i64 10112, !8, i64 10120, !8, i64 10128, !8, i64 10136, !8, i64 10144, !8, i64 10152, !8, i64 10160, !8, i64 10168, !17, i64 10176, !8, i64 10184, !17, i64 10192, !8, i64 10200, !17, i64 10208, !8, i64 10216, !11, i64 10224, !11, i64 10225, !11, i64 10226, !7, i64 10232, !7, i64 10296, !7, i64 10360, !7, i64 10424, !7, i64 10488, !7, i64 10552, !8, i64 10616, !7, i64 10624, !7, i64 10688, !7, i64 10752, !7, i64 10816, !23, i64 10880, !7, i64 11616, !7, i64 11680, !7, i64 11744, !24, i64 11808, !24, i64 12016, !7, i64 12224, !7, i64 12288, !7, i64 12352, !7, i64 12416, !7, i64 12480}
!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 = !{!"_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}
!15 = !{!"_ZTSN11alglib_impl16dualsimplexbasisE", !8, i64 0, !8, i64 8, !7, i64 16, !7, i64 80, !7, i64 144, !8, i64 208, !11, i64 216, !8, i64 224, !16, i64 232, !14, i64 312, !14, i64 680, !14, i64 1048, !7, i64 1416, !7, i64 1480, !7, i64 1544, !7, i64 1608, !7, i64 1672, !7, i64 1736, !7, i64 1800, !11, i64 1864, !17, i64 1872, !8, i64 1880, !8, i64 1888, !17, i64 1896, !7, i64 1904, !7, i64 1968, !7, i64 2032, !7, i64 2096, !7, i64 2160, !16, i64 2224, !7, i64 2304, !7, i64 2368, !14, i64 2432, !14, i64 2800, !18, i64 3168, !7, i64 5736, !7, i64 5800, !7, i64 5864, !14, i64 5928}
!16 = !{!"_ZTSN11alglib_impl9ae_matrixE", !8, i64 0, !8, i64 8, !8, i64 16, !8, i64 24, !11, i64 32, !12, i64 40, !9, i64 72}
!17 = !{!"double", !9, i64 0}
!18 = !{!"_ZTSN11alglib_impl11sluv2bufferE", !8, i64 0, !14, i64 8, !14, i64 376, !19, i64 744, !19, i64 968, !20, i64 1192, !21, i64 1816, !7, i64 1976, !16, i64 2040, !7, i64 2120, !7, i64 2184, !7, i64 2248, !7, i64 2312, !7, i64 2376, !7, i64 2440, !7, i64 2504}
!19 = !{!"_ZTSN11alglib_impl16sluv2list1matrixE", !8, i64 0, !8, i64 8, !7, i64 16, !7, i64 80, !7, i64 144, !8, i64 208, !8, i64 216}
!20 = !{!"_ZTSN11alglib_impl16sluv2sparsetrailE", !8, i64 0, !8, i64 8, !7, i64 16, !8, i64 80, !8, i64 88, !8, i64 96, !7, i64 104, !7, i64 168, !7, i64 232, !7, i64 296, !7, i64 360, !7, i64 424, !7, i64 488, !8, i64 552, !7, i64 560}
!21 = !{!"_ZTSN11alglib_impl15sluv2densetrailE", !8, i64 0, !8, i64 8, !16, i64 16, !7, i64 96}
!22 = !{!"_ZTSN11alglib_impl21dualsimplexsubproblemE", !8, i64 0, !8, i64 8, !7, i64 16, !7, i64 80, !7, i64 144, !7, i64 208, !7, i64 272, !7, i64 336, !8, i64 400, !7, i64 408, !7, i64 472, !7, i64 536, !7, i64 600, !7, i64 664, !7, i64 728, !7, i64 792}
!23 = !{!"_ZTSN11alglib_impl9apbuffersE", !7, i64 0, !7, i64 64, !7, i64 128, !7, i64 192, !7, i64 256, !7, i64 320, !7, i64 384, !7, i64 448, !7, i64 512, !16, i64 576, !16, i64 656}
!24 = !{!"_ZTSN11alglib_impl9dssvectorE", !8, i64 0, !8, i64 8, !7, i64 16, !7, i64 80, !7, i64 144}
!25 = !{!6, !8, i64 7248}
!26 = !{!7, !8, i64 0}
!27 = !{!14, !8, i64 328}
!28 = !{!14, !8, i64 336}
!29 = !{!8, !8, i64 0}
!30 = !{!6, !8, i64 192}
!31 = !{!6, !8, i64 200}
!32 = !{!9, !9, i64 0}
!33 = !{!17, !17, i64 0}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = distinct !{!36, !35}
!37 = distinct !{!37, !35}
!38 = distinct !{!38, !39}
!39 = !{!"llvm.loop.unroll.disable"}
!40 = distinct !{!40, !35}
!41 = distinct !{!41, !35}
!42 = distinct !{!42, !35}
!43 = distinct !{!43, !35}
!44 = distinct !{!44, !35}
!45 = distinct !{!45, !35}
!46 = !{!6, !8, i64 576}
!47 = !{!6, !8, i64 640}
!48 = !{!6, !8, i64 704}
!49 = !{!6, !8, i64 768}
!50 = !{!6, !8, i64 832}
!51 = !{!6, !8, i64 928}
!52 = distinct !{!52, !35}
!53 = !{!6, !8, i64 904}
!54 = distinct !{!54, !35}
!55 = distinct !{!55, !35}
!56 = !{!15, !8, i64 0}
!57 = !{!15, !8, i64 8}
!58 = distinct !{!58, !35}


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