; LLVM IR from venumb/ZSPACE :: cpp/depends/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", %"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", double, double, double, i64, i64, i64, i64, i64, %"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::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::sparsematrix" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64, i64, i64, i64 }
%"struct.alglib_impl::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, %"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" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = type { ptr }

@.str.341 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.342 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.343 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.344 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.345 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.346 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.347 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.348 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.349 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.350 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.351 = external hidden unnamed_addr constant [26 x i8], align 1
@_ZN11alglib_implL28reviseddualsimplex_ssinvalidE = external hidden global i64, align 8
@.str.352 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.353 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.354 = 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.355 = external hidden unnamed_addr constant [38 x i8], align 1
@_ZN11alglib_implL25reviseddualsimplex_ccfreeE = external hidden global i64, align 8
@.str.356 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.357 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.358 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.359 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.360 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.361 = 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

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #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_impl10ae_fp_lessEdd(double noundef, double 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_impl11ae_isneginfEdPNS_8ae_stateE(double noundef, ptr noundef) #1

declare noundef zeroext i1 @_ZN11alglib_impl11ae_isposinfEdPNS_8ae_stateE(double 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_16dualsimplexstateEPNS_9ae_vectorES3_S3_S3_PNS_9ae_matrixEPNS_12sparsematrixElS3_S3_lPNS_16dualsimplexbasisElPNS_19dualsimplexsettingsEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, i64 noundef %7, ptr noundef %8, ptr noundef %9, i64 noundef %10, ptr noundef %11, i64 noundef %12, ptr noundef %13, ptr noundef %14) #3 {
  %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 ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca i64, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca i64, align 8
  %27 = alloca ptr, align 8
  %28 = alloca i64, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca i64, align 8
  %37 = alloca i64, align 8
  %38 = alloca i8, align 1
  %39 = alloca i64, align 8
  %40 = alloca i8, align 1
  %41 = alloca double, align 8
  %42 = alloca double, align 8
  %43 = alloca i32, align 4
  store ptr %0, ptr %16, align 8, !tbaa !5
  store ptr %1, ptr %17, align 8, !tbaa !5
  store ptr %2, ptr %18, align 8, !tbaa !5
  store ptr %3, ptr %19, align 8, !tbaa !5
  store ptr %4, ptr %20, align 8, !tbaa !5
  store ptr %5, ptr %21, align 8, !tbaa !5
  store ptr %6, ptr %22, align 8, !tbaa !5
  store i64 %7, ptr %23, align 8, !tbaa !9
  store ptr %8, ptr %24, align 8, !tbaa !5
  store ptr %9, ptr %25, align 8, !tbaa !5
  store i64 %10, ptr %26, align 8, !tbaa !9
  store ptr %11, ptr %27, align 8, !tbaa !5
  store i64 %12, ptr %28, align 8, !tbaa !9
  store ptr %13, ptr %29, align 8, !tbaa !5
  store ptr %14, ptr %30, align 8, !tbaa !5
  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 8, 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
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #4
  %44 = load ptr, ptr %16, align 8, !tbaa !5
  %45 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %44, i32 0, i32 9
  %46 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %45, i32 0, i32 0
  %47 = load i64, ptr %46, align 8, !tbaa !11
  store i64 %47, ptr %35, align 8, !tbaa !9
  %48 = load ptr, ptr %16, align 8, !tbaa !5
  %49 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %48, i32 0, i32 9
  %50 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %49, i32 0, i32 1
  %51 = load i64, ptr %50, align 8, !tbaa !25
  store i64 %51, ptr %39, align 8, !tbaa !9
  %52 = load ptr, ptr %18, align 8, !tbaa !5
  %53 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %52, i32 0, i32 0
  %54 = load i64, ptr %53, align 8, !tbaa !26
  %55 = load i64, ptr %35, align 8, !tbaa !9
  %56 = icmp sge i64 %54, %55
  %57 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %56, ptr noundef @.str.341, ptr noundef %57)
  %58 = load ptr, ptr %19, align 8, !tbaa !5
  %59 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %58, i32 0, i32 0
  %60 = load i64, ptr %59, align 8, !tbaa !26
  %61 = load i64, ptr %35, align 8, !tbaa !9
  %62 = icmp sge i64 %60, %61
  %63 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %62, ptr noundef @.str.342, ptr noundef %63)
  %64 = load ptr, ptr %20, align 8, !tbaa !5
  %65 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %64, i32 0, i32 0
  %66 = load i64, ptr %65, align 8, !tbaa !26
  %67 = load i64, ptr %35, align 8, !tbaa !9
  %68 = icmp sge i64 %66, %67
  %69 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %68, ptr noundef @.str.343, ptr noundef %69)
  %70 = load ptr, ptr %20, align 8, !tbaa !5
  %71 = load i64, ptr %35, align 8, !tbaa !9
  %72 = load ptr, ptr %30, align 8, !tbaa !5
  %73 = call noundef zeroext i1 @_ZN11alglib_impl14isfinitevectorEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %70, i64 noundef %71, ptr noundef %72)
  %74 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %73, ptr noundef @.str.344, ptr noundef %74)
  %75 = load ptr, ptr %17, align 8, !tbaa !5
  %76 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %75, i32 0, i32 0
  %77 = load i64, ptr %76, align 8, !tbaa !26
  %78 = load i64, ptr %35, align 8, !tbaa !9
  %79 = icmp sge i64 %77, %78
  %80 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %79, ptr noundef @.str.345, ptr noundef %80)
  %81 = load ptr, ptr %17, align 8, !tbaa !5
  %82 = load i64, ptr %35, align 8, !tbaa !9
  %83 = load ptr, ptr %30, align 8, !tbaa !5
  %84 = call noundef zeroext i1 @_ZN11alglib_impl14isfinitevectorEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %81, i64 noundef %82, ptr noundef %83)
  %85 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %84, ptr noundef @.str.346, ptr noundef %85)
  %86 = load i64, ptr %23, align 8, !tbaa !9
  %87 = icmp eq i64 %86, 0
  br i1 %87, label %91, label %88

88:                                               ; preds = %15
  %89 = load i64, ptr %23, align 8, !tbaa !9
  %90 = icmp eq i64 %89, 1
  br label %91

91:                                               ; preds = %88, %15
  %92 = phi i1 [ true, %15 ], [ %90, %88 ]
  %93 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %92, ptr noundef @.str.347, ptr noundef %93)
  %94 = load i64, ptr %28, align 8, !tbaa !9
  %95 = icmp eq i64 %94, 0
  br i1 %95, label %102, label %96

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

99:                                               ; preds = %96
  %100 = load i64, ptr %28, align 8, !tbaa !9
  %101 = icmp eq i64 %100, 2
  br label %102

102:                                              ; preds = %99, %96, %91
  %103 = phi i1 [ true, %96 ], [ true, %91 ], [ %101, %99 ]
  %104 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %103, ptr noundef @.str.348, ptr noundef %104)
  %105 = load i64, ptr %26, align 8, !tbaa !9
  %106 = icmp sge i64 %105, 0
  %107 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %106, ptr noundef @.str.349, ptr noundef %107)
  %108 = load i64, ptr %26, align 8, !tbaa !9
  %109 = icmp sgt i64 %108, 0
  br i1 %109, label %110, label %126

110:                                              ; preds = %102
  %111 = load i64, ptr %23, align 8, !tbaa !9
  %112 = icmp eq i64 %111, 1
  br i1 %112, label %113, label %126

113:                                              ; preds = %110
  %114 = load ptr, ptr %22, align 8, !tbaa !5
  %115 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %114, i32 0, i32 6
  %116 = load i64, ptr %115, align 8, !tbaa !27
  %117 = load i64, ptr %26, align 8, !tbaa !9
  %118 = icmp eq i64 %116, %117
  %119 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %118, ptr noundef @.str.350, ptr noundef %119)
  %120 = load ptr, ptr %22, align 8, !tbaa !5
  %121 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %120, i32 0, i32 7
  %122 = load i64, ptr %121, align 8, !tbaa !28
  %123 = load i64, ptr %35, align 8, !tbaa !9
  %124 = icmp eq i64 %122, %123
  %125 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %124, ptr noundef @.str.351, ptr noundef %125)
  br label %126

126:                                              ; preds = %113, %110, %102
  %127 = load ptr, ptr %16, align 8, !tbaa !5
  %128 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %127, i32 0, i32 9
  %129 = load i64, ptr @_ZN11alglib_implL28reviseddualsimplex_ssinvalidE, align 8, !tbaa !9
  %130 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_implL33reviseddualsimplex_downgradestateEPNS_21dualsimplexsubproblemElPNS_8ae_stateE(ptr noundef %128, i64 noundef %129, ptr noundef %130)
  %131 = load ptr, ptr %16, align 8, !tbaa !5
  %132 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %131, i32 0, i32 9
  %133 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %132, i32 0, i32 3
  %134 = load i64, ptr %35, align 8, !tbaa !9
  %135 = load i64, ptr %26, align 8, !tbaa !9
  %136 = add nsw i64 %134, %135
  %137 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %133, i64 noundef %136, ptr noundef %137)
  %138 = load ptr, ptr %16, align 8, !tbaa !5
  %139 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %138, i32 0, i32 9
  %140 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %139, i32 0, i32 4
  %141 = load i64, ptr %35, align 8, !tbaa !9
  %142 = load i64, ptr %26, align 8, !tbaa !9
  %143 = add nsw i64 %141, %142
  %144 = load ptr, ptr %30, 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 %16, align 8, !tbaa !5
  %146 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %145, i32 0, i32 9
  %147 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %146, i32 0, i32 5
  %148 = load i64, ptr %35, align 8, !tbaa !9
  %149 = load i64, ptr %26, align 8, !tbaa !9
  %150 = add nsw i64 %148, %149
  %151 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl13ivectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %147, i64 noundef %150, ptr noundef %151)
  %152 = load ptr, ptr %16, align 8, !tbaa !5
  %153 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %152, i32 0, i32 9
  %154 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %153, i32 0, i32 2
  %155 = load i64, ptr %35, align 8, !tbaa !9
  %156 = load i64, ptr %26, align 8, !tbaa !9
  %157 = add nsw i64 %155, %156
  %158 = load ptr, ptr %30, 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 %16, align 8, !tbaa !5
  %160 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %159, i32 0, i32 9
  %161 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %160, i32 0, i32 13
  %162 = load i64, ptr %35, align 8, !tbaa !9
  %163 = load i64, ptr %26, align 8, !tbaa !9
  %164 = add nsw i64 %162, %163
  %165 = load ptr, ptr %30, 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 %16, align 8, !tbaa !5
  %167 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %166, i32 0, i32 9
  %168 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %167, i32 0, i32 6
  %169 = load i64, ptr %35, align 8, !tbaa !9
  %170 = load i64, ptr %26, align 8, !tbaa !9
  %171 = add nsw i64 %169, %170
  %172 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %168, i64 noundef %171, ptr noundef %172)
  %173 = load ptr, ptr %16, align 8, !tbaa !5
  %174 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %173, i32 0, i32 9
  %175 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %174, i32 0, i32 7
  %176 = load i64, ptr %35, align 8, !tbaa !9
  %177 = load i64, ptr %26, align 8, !tbaa !9
  %178 = add nsw i64 %176, %177
  %179 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %175, i64 noundef %178, ptr noundef %179)
  %180 = load ptr, ptr %16, align 8, !tbaa !5
  %181 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %180, i32 0, i32 9
  %182 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %181, i32 0, i32 9
  %183 = load i64, ptr %26, align 8, !tbaa !9
  %184 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %182, i64 noundef %183, ptr noundef %184)
  %185 = load ptr, ptr %16, align 8, !tbaa !5
  %186 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %185, i32 0, i32 9
  %187 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %186, i32 0, i32 10
  %188 = load i64, ptr %26, align 8, !tbaa !9
  %189 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %187, i64 noundef %188, ptr noundef %189)
  %190 = load ptr, ptr %16, align 8, !tbaa !5
  %191 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %190, i32 0, i32 9
  %192 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %191, i32 0, i32 11
  %193 = load i64, ptr %26, align 8, !tbaa !9
  %194 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %192, i64 noundef %193, ptr noundef %194)
  %195 = load ptr, ptr %16, align 8, !tbaa !5
  %196 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %195, i32 0, i32 9
  %197 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %196, i32 0, i32 12
  %198 = load i64, ptr %26, align 8, !tbaa !9
  %199 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl13ivectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %197, i64 noundef %198, ptr noundef %199)
  %200 = load i64, ptr %35, align 8, !tbaa !9
  %201 = load ptr, ptr %16, align 8, !tbaa !5
  %202 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %201, i32 0, i32 4
  store i64 %200, ptr %202, align 8, !tbaa !29
  %203 = load i64, ptr %26, align 8, !tbaa !9
  %204 = load ptr, ptr %16, align 8, !tbaa !5
  %205 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %204, i32 0, i32 5
  store i64 %203, ptr %205, align 8, !tbaa !30
  store i64 0, ptr %31, align 8, !tbaa !9
  br label %206

206:                                              ; preds = %248, %126
  %207 = load i64, ptr %31, align 8, !tbaa !9
  %208 = load i64, ptr %35, align 8, !tbaa !9
  %209 = sub nsw i64 %208, 1
  %210 = icmp sle i64 %207, %209
  br i1 %210, label %211, label %251

211:                                              ; preds = %206
  %212 = load ptr, ptr %20, align 8, !tbaa !5
  %213 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %212, i32 0, i32 4
  %214 = load ptr, ptr %213, align 8, !tbaa !31
  %215 = load i64, ptr %31, align 8, !tbaa !9
  %216 = getelementptr inbounds double, ptr %214, i64 %215
  %217 = load double, ptr %216, align 8, !tbaa !32
  %218 = load ptr, ptr %16, align 8, !tbaa !5
  %219 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %218, i32 0, i32 0
  %220 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %219, i32 0, i32 4
  %221 = load ptr, ptr %220, align 8, !tbaa !31
  %222 = load i64, ptr %31, align 8, !tbaa !9
  %223 = getelementptr inbounds double, ptr %221, i64 %222
  store double %217, ptr %223, align 8, !tbaa !32
  %224 = load ptr, ptr %18, align 8, !tbaa !5
  %225 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %224, i32 0, i32 4
  %226 = load ptr, ptr %225, align 8, !tbaa !31
  %227 = load i64, ptr %31, align 8, !tbaa !9
  %228 = getelementptr inbounds double, ptr %226, i64 %227
  %229 = load double, ptr %228, align 8, !tbaa !32
  %230 = load ptr, ptr %16, align 8, !tbaa !5
  %231 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %230, i32 0, i32 2
  %232 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %231, i32 0, i32 4
  %233 = load ptr, ptr %232, align 8, !tbaa !31
  %234 = load i64, ptr %31, align 8, !tbaa !9
  %235 = getelementptr inbounds double, ptr %233, i64 %234
  store double %229, ptr %235, align 8, !tbaa !32
  %236 = load ptr, ptr %19, align 8, !tbaa !5
  %237 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %236, i32 0, i32 4
  %238 = load ptr, ptr %237, align 8, !tbaa !31
  %239 = load i64, ptr %31, align 8, !tbaa !9
  %240 = getelementptr inbounds double, ptr %238, i64 %239
  %241 = load double, ptr %240, align 8, !tbaa !32
  %242 = load ptr, ptr %16, align 8, !tbaa !5
  %243 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %242, i32 0, i32 3
  %244 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %243, i32 0, i32 4
  %245 = load ptr, ptr %244, align 8, !tbaa !31
  %246 = load i64, ptr %31, align 8, !tbaa !9
  %247 = getelementptr inbounds double, ptr %245, i64 %246
  store double %241, ptr %247, align 8, !tbaa !32
  br label %248

248:                                              ; preds = %211
  %249 = load i64, ptr %31, align 8, !tbaa !9
  %250 = add nsw i64 %249, 1
  store i64 %250, ptr %31, align 8, !tbaa !9
  br label %206, !llvm.loop !33

251:                                              ; preds = %206
  store i64 0, ptr %31, align 8, !tbaa !9
  br label %252

252:                                              ; preds = %306, %251
  %253 = load i64, ptr %31, align 8, !tbaa !9
  %254 = load i64, ptr %35, align 8, !tbaa !9
  %255 = sub nsw i64 %254, 1
  %256 = icmp sle i64 %253, %255
  br i1 %256, label %257, label %309

257:                                              ; preds = %252
  %258 = load ptr, ptr %20, align 8, !tbaa !5
  %259 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %258, i32 0, i32 4
  %260 = load ptr, ptr %259, align 8, !tbaa !31
  %261 = load i64, ptr %31, align 8, !tbaa !9
  %262 = getelementptr inbounds double, ptr %260, i64 %261
  %263 = load double, ptr %262, align 8, !tbaa !32
  %264 = fcmp ogt double %263, 0.000000e+00
  %265 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %264, ptr noundef @.str.352, ptr noundef %265)
  %266 = load ptr, ptr %17, align 8, !tbaa !5
  %267 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %266, i32 0, i32 4
  %268 = load ptr, ptr %267, align 8, !tbaa !31
  %269 = load i64, ptr %31, align 8, !tbaa !9
  %270 = getelementptr inbounds double, ptr %268, i64 %269
  %271 = load double, ptr %270, align 8, !tbaa !32
  %272 = load ptr, ptr %20, align 8, !tbaa !5
  %273 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %272, i32 0, i32 4
  %274 = load ptr, ptr %273, align 8, !tbaa !31
  %275 = load i64, ptr %31, align 8, !tbaa !9
  %276 = getelementptr inbounds double, ptr %274, i64 %275
  %277 = load double, ptr %276, align 8, !tbaa !32
  %278 = fmul double %271, %277
  %279 = load ptr, ptr %16, align 8, !tbaa !5
  %280 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %279, i32 0, i32 9
  %281 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %280, i32 0, i32 2
  %282 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %281, i32 0, i32 4
  %283 = load ptr, ptr %282, align 8, !tbaa !31
  %284 = load i64, ptr %31, align 8, !tbaa !9
  %285 = getelementptr inbounds double, ptr %283, i64 %284
  store double %278, ptr %285, align 8, !tbaa !32
  %286 = load ptr, ptr %17, align 8, !tbaa !5
  %287 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %286, i32 0, i32 4
  %288 = load ptr, ptr %287, align 8, !tbaa !31
  %289 = load i64, ptr %31, align 8, !tbaa !9
  %290 = getelementptr inbounds double, ptr %288, i64 %289
  %291 = load double, ptr %290, align 8, !tbaa !32
  %292 = load ptr, ptr %20, 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 !31
  %295 = load i64, ptr %31, align 8, !tbaa !9
  %296 = getelementptr inbounds double, ptr %294, i64 %295
  %297 = load double, ptr %296, align 8, !tbaa !32
  %298 = fmul double %291, %297
  %299 = load ptr, ptr %16, align 8, !tbaa !5
  %300 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %299, i32 0, i32 9
  %301 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %300, i32 0, i32 13
  %302 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %301, i32 0, i32 4
  %303 = load ptr, ptr %302, align 8, !tbaa !31
  %304 = load i64, ptr %31, align 8, !tbaa !9
  %305 = getelementptr inbounds double, ptr %303, i64 %304
  store double %298, ptr %305, align 8, !tbaa !32
  br label %306

306:                                              ; preds = %257
  %307 = load i64, ptr %31, align 8, !tbaa !9
  %308 = add nsw i64 %307, 1
  store i64 %308, ptr %31, align 8, !tbaa !9
  br label %252, !llvm.loop !35

309:                                              ; preds = %252
  store i64 0, ptr %31, align 8, !tbaa !9
  br label %310

310:                                              ; preds = %566, %309
  %311 = load i64, ptr %31, align 8, !tbaa !9
  %312 = load i64, ptr %35, align 8, !tbaa !9
  %313 = sub nsw i64 %312, 1
  %314 = icmp sle i64 %311, %313
  br i1 %314, label %315, label %569

315:                                              ; preds = %310
  %316 = load ptr, ptr %18, align 8, !tbaa !5
  %317 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %316, i32 0, i32 4
  %318 = load ptr, ptr %317, align 8, !tbaa !31
  %319 = load i64, ptr %31, align 8, !tbaa !9
  %320 = getelementptr inbounds double, ptr %318, i64 %319
  %321 = load double, ptr %320, align 8, !tbaa !32
  %322 = load ptr, ptr %30, align 8, !tbaa !5
  %323 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %321, ptr noundef %322)
  br i1 %323, label %333, label %324

324:                                              ; preds = %315
  %325 = load ptr, ptr %18, align 8, !tbaa !5
  %326 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %325, i32 0, i32 4
  %327 = load ptr, ptr %326, align 8, !tbaa !31
  %328 = load i64, ptr %31, align 8, !tbaa !9
  %329 = getelementptr inbounds double, ptr %327, i64 %328
  %330 = load double, ptr %329, align 8, !tbaa !32
  %331 = load ptr, ptr %30, align 8, !tbaa !5
  %332 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isneginfEdPNS_8ae_stateE(double noundef %330, ptr noundef %331)
  br label %333

333:                                              ; preds = %324, %315
  %334 = phi i1 [ true, %315 ], [ %332, %324 ]
  %335 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %334, ptr noundef @.str.353, ptr noundef %335)
  %336 = load ptr, ptr %19, align 8, !tbaa !5
  %337 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %336, i32 0, i32 4
  %338 = load ptr, ptr %337, align 8, !tbaa !31
  %339 = load i64, ptr %31, align 8, !tbaa !9
  %340 = getelementptr inbounds double, ptr %338, i64 %339
  %341 = load double, ptr %340, align 8, !tbaa !32
  %342 = load ptr, ptr %30, align 8, !tbaa !5
  %343 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %341, ptr noundef %342)
  br i1 %343, label %353, label %344

344:                                              ; preds = %333
  %345 = load ptr, ptr %19, 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 !31
  %348 = load i64, ptr %31, align 8, !tbaa !9
  %349 = getelementptr inbounds double, ptr %347, i64 %348
  %350 = load double, ptr %349, align 8, !tbaa !32
  %351 = load ptr, ptr %30, align 8, !tbaa !5
  %352 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isposinfEdPNS_8ae_stateE(double noundef %350, ptr noundef %351)
  br label %353

353:                                              ; preds = %344, %333
  %354 = phi i1 [ true, %333 ], [ %352, %344 ]
  %355 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %354, ptr noundef @.str.354, ptr noundef %355)
  %356 = load ptr, ptr %18, align 8, !tbaa !5
  %357 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %356, i32 0, i32 4
  %358 = load ptr, ptr %357, align 8, !tbaa !31
  %359 = load i64, ptr %31, align 8, !tbaa !9
  %360 = getelementptr inbounds double, ptr %358, i64 %359
  %361 = load double, ptr %360, align 8, !tbaa !32
  %362 = load ptr, ptr %20, align 8, !tbaa !5
  %363 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %362, i32 0, i32 4
  %364 = load ptr, ptr %363, align 8, !tbaa !31
  %365 = load i64, ptr %31, align 8, !tbaa !9
  %366 = getelementptr inbounds double, ptr %364, i64 %365
  %367 = load double, ptr %366, align 8, !tbaa !32
  %368 = fdiv double %361, %367
  %369 = load ptr, ptr %16, align 8, !tbaa !5
  %370 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %369, i32 0, i32 9
  %371 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %370, i32 0, i32 3
  %372 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %371, i32 0, i32 4
  %373 = load ptr, ptr %372, align 8, !tbaa !31
  %374 = load i64, ptr %31, align 8, !tbaa !9
  %375 = getelementptr inbounds double, ptr %373, i64 %374
  store double %368, ptr %375, align 8, !tbaa !32
  %376 = load ptr, ptr %19, 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 !31
  %379 = load i64, ptr %31, align 8, !tbaa !9
  %380 = getelementptr inbounds double, ptr %378, i64 %379
  %381 = load double, ptr %380, align 8, !tbaa !32
  %382 = load ptr, ptr %20, 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 !31
  %385 = load i64, ptr %31, align 8, !tbaa !9
  %386 = getelementptr inbounds double, ptr %384, i64 %385
  %387 = load double, ptr %386, align 8, !tbaa !32
  %388 = fdiv double %381, %387
  %389 = load ptr, ptr %16, align 8, !tbaa !5
  %390 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %389, i32 0, i32 9
  %391 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %390, i32 0, i32 4
  %392 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %391, i32 0, i32 4
  %393 = load ptr, ptr %392, align 8, !tbaa !31
  %394 = load i64, ptr %31, align 8, !tbaa !9
  %395 = getelementptr inbounds double, ptr %393, i64 %394
  store double %388, ptr %395, align 8, !tbaa !32
  %396 = load ptr, ptr %18, align 8, !tbaa !5
  %397 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %396, i32 0, i32 4
  %398 = load ptr, ptr %397, align 8, !tbaa !31
  %399 = load i64, ptr %31, align 8, !tbaa !9
  %400 = getelementptr inbounds double, ptr %398, i64 %399
  %401 = load double, ptr %400, align 8, !tbaa !32
  %402 = load ptr, ptr %30, align 8, !tbaa !5
  %403 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %401, ptr noundef %402)
  br i1 %403, label %404, label %483

404:                                              ; preds = %353
  %405 = load ptr, ptr %19, align 8, !tbaa !5
  %406 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %405, i32 0, i32 4
  %407 = load ptr, ptr %406, align 8, !tbaa !31
  %408 = load i64, ptr %31, align 8, !tbaa !9
  %409 = getelementptr inbounds double, ptr %407, i64 %408
  %410 = load double, ptr %409, align 8, !tbaa !32
  %411 = load ptr, ptr %30, align 8, !tbaa !5
  %412 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %410, ptr noundef %411)
  br i1 %412, label %413, label %483

413:                                              ; preds = %404
  %414 = load ptr, ptr %18, align 8, !tbaa !5
  %415 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %414, i32 0, i32 4
  %416 = load ptr, ptr %415, align 8, !tbaa !31
  %417 = load i64, ptr %31, align 8, !tbaa !9
  %418 = getelementptr inbounds double, ptr %416, i64 %417
  %419 = load double, ptr %418, align 8, !tbaa !32
  %420 = load ptr, ptr %19, align 8, !tbaa !5
  %421 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %420, i32 0, i32 4
  %422 = load ptr, ptr %421, align 8, !tbaa !31
  %423 = load i64, ptr %31, align 8, !tbaa !9
  %424 = getelementptr inbounds double, ptr %422, i64 %423
  %425 = load double, ptr %424, align 8, !tbaa !32
  %426 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %419, double noundef %425)
  br i1 %426, label %427, label %436

427:                                              ; preds = %413
  %428 = load i64, ptr @_ZN11alglib_implL31reviseddualsimplex_ccinfeasibleE, align 8, !tbaa !9
  %429 = load ptr, ptr %16, align 8, !tbaa !5
  %430 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %429, i32 0, i32 9
  %431 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %430, i32 0, i32 5
  %432 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %431, i32 0, i32 4
  %433 = load ptr, ptr %432, align 8, !tbaa !31
  %434 = load i64, ptr %31, align 8, !tbaa !9
  %435 = getelementptr inbounds i64, ptr %433, i64 %434
  store i64 %428, ptr %435, align 8, !tbaa !9
  br label %436

436:                                              ; preds = %427, %413
  %437 = load ptr, ptr %18, align 8, !tbaa !5
  %438 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %437, i32 0, i32 4
  %439 = load ptr, ptr %438, align 8, !tbaa !31
  %440 = load i64, ptr %31, align 8, !tbaa !9
  %441 = getelementptr inbounds double, ptr %439, i64 %440
  %442 = load double, ptr %441, align 8, !tbaa !32
  %443 = load ptr, ptr %19, align 8, !tbaa !5
  %444 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %443, i32 0, i32 4
  %445 = load ptr, ptr %444, align 8, !tbaa !31
  %446 = load i64, ptr %31, align 8, !tbaa !9
  %447 = getelementptr inbounds double, ptr %445, i64 %446
  %448 = load double, ptr %447, align 8, !tbaa !32
  %449 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %442, double noundef %448)
  br i1 %449, label %450, label %459

450:                                              ; preds = %436
  %451 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_ccrangeE, align 8, !tbaa !9
  %452 = load ptr, ptr %16, align 8, !tbaa !5
  %453 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %452, i32 0, i32 9
  %454 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %453, i32 0, i32 5
  %455 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %454, i32 0, i32 4
  %456 = load ptr, ptr %455, align 8, !tbaa !31
  %457 = load i64, ptr %31, align 8, !tbaa !9
  %458 = getelementptr inbounds i64, ptr %456, i64 %457
  store i64 %451, ptr %458, align 8, !tbaa !9
  br label %459

459:                                              ; preds = %450, %436
  %460 = load ptr, ptr %18, align 8, !tbaa !5
  %461 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %460, i32 0, i32 4
  %462 = load ptr, ptr %461, align 8, !tbaa !31
  %463 = load i64, ptr %31, align 8, !tbaa !9
  %464 = getelementptr inbounds double, ptr %462, i64 %463
  %465 = load double, ptr %464, align 8, !tbaa !32
  %466 = load ptr, ptr %19, align 8, !tbaa !5
  %467 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %466, i32 0, i32 4
  %468 = load ptr, ptr %467, align 8, !tbaa !31
  %469 = load i64, ptr %31, align 8, !tbaa !9
  %470 = getelementptr inbounds double, ptr %468, i64 %469
  %471 = load double, ptr %470, align 8, !tbaa !32
  %472 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %465, double noundef %471)
  br i1 %472, label %473, label %482

473:                                              ; preds = %459
  %474 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_ccfixedE, align 8, !tbaa !9
  %475 = load ptr, ptr %16, align 8, !tbaa !5
  %476 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %475, i32 0, i32 9
  %477 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %476, i32 0, i32 5
  %478 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %477, i32 0, i32 4
  %479 = load ptr, ptr %478, align 8, !tbaa !31
  %480 = load i64, ptr %31, align 8, !tbaa !9
  %481 = getelementptr inbounds i64, ptr %479, i64 %480
  store i64 %474, ptr %481, align 8, !tbaa !9
  br label %482

482:                                              ; preds = %473, %459
  br label %566

483:                                              ; preds = %404, %353
  %484 = load ptr, ptr %18, align 8, !tbaa !5
  %485 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %484, i32 0, i32 4
  %486 = load ptr, ptr %485, align 8, !tbaa !31
  %487 = load i64, ptr %31, align 8, !tbaa !9
  %488 = getelementptr inbounds double, ptr %486, i64 %487
  %489 = load double, ptr %488, align 8, !tbaa !32
  %490 = load ptr, ptr %30, align 8, !tbaa !5
  %491 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %489, ptr noundef %490)
  br i1 %491, label %492, label %510

492:                                              ; preds = %483
  %493 = load ptr, ptr %19, align 8, !tbaa !5
  %494 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %493, i32 0, i32 4
  %495 = load ptr, ptr %494, align 8, !tbaa !31
  %496 = load i64, ptr %31, align 8, !tbaa !9
  %497 = getelementptr inbounds double, ptr %495, i64 %496
  %498 = load double, ptr %497, align 8, !tbaa !32
  %499 = load ptr, ptr %30, align 8, !tbaa !5
  %500 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %498, ptr noundef %499)
  br i1 %500, label %510, label %501

501:                                              ; preds = %492
  %502 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_cclowerE, align 8, !tbaa !9
  %503 = load ptr, ptr %16, align 8, !tbaa !5
  %504 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %503, i32 0, i32 9
  %505 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %504, i32 0, i32 5
  %506 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %505, i32 0, i32 4
  %507 = load ptr, ptr %506, align 8, !tbaa !31
  %508 = load i64, ptr %31, align 8, !tbaa !9
  %509 = getelementptr inbounds i64, ptr %507, i64 %508
  store i64 %502, ptr %509, align 8, !tbaa !9
  br label %566

510:                                              ; preds = %492, %483
  %511 = load ptr, ptr %18, align 8, !tbaa !5
  %512 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %511, i32 0, i32 4
  %513 = load ptr, ptr %512, align 8, !tbaa !31
  %514 = load i64, ptr %31, align 8, !tbaa !9
  %515 = getelementptr inbounds double, ptr %513, i64 %514
  %516 = load double, ptr %515, align 8, !tbaa !32
  %517 = load ptr, ptr %30, align 8, !tbaa !5
  %518 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %516, ptr noundef %517)
  br i1 %518, label %537, label %519

519:                                              ; preds = %510
  %520 = load ptr, ptr %19, align 8, !tbaa !5
  %521 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %520, i32 0, i32 4
  %522 = load ptr, ptr %521, align 8, !tbaa !31
  %523 = load i64, ptr %31, align 8, !tbaa !9
  %524 = getelementptr inbounds double, ptr %522, i64 %523
  %525 = load double, ptr %524, align 8, !tbaa !32
  %526 = load ptr, ptr %30, align 8, !tbaa !5
  %527 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %525, ptr noundef %526)
  br i1 %527, label %528, label %537

528:                                              ; preds = %519
  %529 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_ccupperE, align 8, !tbaa !9
  %530 = load ptr, ptr %16, align 8, !tbaa !5
  %531 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %530, i32 0, i32 9
  %532 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %531, i32 0, i32 5
  %533 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %532, i32 0, i32 4
  %534 = load ptr, ptr %533, align 8, !tbaa !31
  %535 = load i64, ptr %31, align 8, !tbaa !9
  %536 = getelementptr inbounds i64, ptr %534, i64 %535
  store i64 %529, ptr %536, align 8, !tbaa !9
  br label %566

537:                                              ; preds = %519, %510
  %538 = load ptr, ptr %18, align 8, !tbaa !5
  %539 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %538, i32 0, i32 4
  %540 = load ptr, ptr %539, align 8, !tbaa !31
  %541 = load i64, ptr %31, align 8, !tbaa !9
  %542 = getelementptr inbounds double, ptr %540, i64 %541
  %543 = load double, ptr %542, align 8, !tbaa !32
  %544 = load ptr, ptr %30, align 8, !tbaa !5
  %545 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isneginfEdPNS_8ae_stateE(double noundef %543, ptr noundef %544)
  br i1 %545, label %546, label %555

546:                                              ; preds = %537
  %547 = load ptr, ptr %19, align 8, !tbaa !5
  %548 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %547, i32 0, i32 4
  %549 = load ptr, ptr %548, align 8, !tbaa !31
  %550 = load i64, ptr %31, align 8, !tbaa !9
  %551 = getelementptr inbounds double, ptr %549, i64 %550
  %552 = load double, ptr %551, align 8, !tbaa !32
  %553 = load ptr, ptr %30, align 8, !tbaa !5
  %554 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isposinfEdPNS_8ae_stateE(double noundef %552, ptr noundef %553)
  br label %555

555:                                              ; preds = %546, %537
  %556 = phi i1 [ false, %537 ], [ %554, %546 ]
  %557 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %556, ptr noundef @.str.355, ptr noundef %557)
  %558 = load i64, ptr @_ZN11alglib_implL25reviseddualsimplex_ccfreeE, align 8, !tbaa !9
  %559 = load ptr, ptr %16, align 8, !tbaa !5
  %560 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %559, i32 0, i32 9
  %561 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %560, i32 0, i32 5
  %562 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %561, i32 0, i32 4
  %563 = load ptr, ptr %562, align 8, !tbaa !31
  %564 = load i64, ptr %31, align 8, !tbaa !9
  %565 = getelementptr inbounds i64, ptr %563, i64 %564
  store i64 %558, ptr %565, align 8, !tbaa !9
  br label %566

566:                                              ; preds = %555, %528, %501, %482
  %567 = load i64, ptr %31, align 8, !tbaa !9
  %568 = add nsw i64 %567, 1
  store i64 %568, ptr %31, align 8, !tbaa !9
  br label %310, !llvm.loop !36

569:                                              ; preds = %310
  %570 = load i64, ptr %26, align 8, !tbaa !9
  %571 = icmp eq i64 %570, 0
  br i1 %571, label %572, label %587

572:                                              ; preds = %569
  %573 = load ptr, ptr %16, align 8, !tbaa !5
  %574 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %573, i32 0, i32 9
  %575 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %574, i32 0, i32 1
  store i64 0, ptr %575, align 8, !tbaa !25
  %576 = load ptr, ptr %16, align 8, !tbaa !5
  %577 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %576, i32 0, i32 9
  %578 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %577, i32 0, i32 0
  %579 = load i64, ptr %578, align 8, !tbaa !11
  %580 = load ptr, ptr %16, align 8, !tbaa !5
  %581 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %580, i32 0, i32 9
  %582 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %581, i32 0, i32 1
  %583 = load i64, ptr %582, align 8, !tbaa !25
  %584 = load ptr, ptr %16, align 8, !tbaa !5
  %585 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %584, i32 0, i32 8
  %586 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_implL28reviseddualsimplex_basisinitEllPNS_16dualsimplexbasisEPNS_8ae_stateE(i64 noundef %579, i64 noundef %583, ptr noundef %585, ptr noundef %586)
  store i32 1, ptr %43, align 4
  br label %1491

587:                                              ; preds = %569
  store i8 0, ptr %38, align 1, !tbaa !37
  %588 = load i64, ptr %26, align 8, !tbaa !9
  %589 = load ptr, ptr %16, align 8, !tbaa !5
  %590 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %589, i32 0, i32 9
  %591 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %590, i32 0, i32 1
  store i64 %588, ptr %591, align 8, !tbaa !25
  %592 = load i64, ptr %23, align 8, !tbaa !9
  %593 = icmp eq i64 %592, 0
  br i1 %593, label %594, label %596

594:                                              ; preds = %587
  %595 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext false, ptr noundef @.str.356, ptr noundef %595)
  br label %596

596:                                              ; preds = %594, %587
  %597 = load i64, ptr %23, align 8, !tbaa !9
  %598 = icmp eq i64 %597, 1
  br i1 %598, label %599, label %1012

599:                                              ; preds = %596
  %600 = load ptr, ptr %16, align 8, !tbaa !5
  %601 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %600, i32 0, i32 7
  %602 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %601, i32 0, i32 0
  %603 = load ptr, ptr %22, align 8, !tbaa !5
  %604 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %603, i32 0, i32 2
  %605 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %604, i32 0, i32 4
  %606 = load ptr, ptr %605, align 8, !tbaa !31
  %607 = load i64, ptr %26, align 8, !tbaa !9
  %608 = getelementptr inbounds i64, ptr %606, i64 %607
  %609 = load i64, ptr %608, align 8, !tbaa !9
  %610 = load i64, ptr %26, align 8, !tbaa !9
  %611 = add nsw i64 %609, %610
  %612 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %602, i64 noundef %611, ptr noundef %612)
  %613 = load ptr, ptr %16, align 8, !tbaa !5
  %614 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %613, i32 0, i32 7
  %615 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %614, i32 0, i32 1
  %616 = load ptr, ptr %22, align 8, !tbaa !5
  %617 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %616, i32 0, i32 2
  %618 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %617, i32 0, i32 4
  %619 = load ptr, ptr %618, align 8, !tbaa !31
  %620 = load i64, ptr %26, align 8, !tbaa !9
  %621 = getelementptr inbounds i64, ptr %619, i64 %620
  %622 = load i64, ptr %621, align 8, !tbaa !9
  %623 = load i64, ptr %26, align 8, !tbaa !9
  %624 = add nsw i64 %622, %623
  %625 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %615, i64 noundef %624, ptr noundef %625)
  %626 = load ptr, ptr %16, align 8, !tbaa !5
  %627 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %626, i32 0, i32 7
  %628 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %627, i32 0, i32 2
  %629 = load i64, ptr %35, align 8, !tbaa !9
  %630 = load i64, ptr %26, align 8, !tbaa !9
  %631 = add nsw i64 %629, %630
  %632 = add nsw i64 %631, 1
  %633 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %628, i64 noundef %632, ptr noundef %633)
  %634 = load ptr, ptr %16, align 8, !tbaa !5
  %635 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %634, i32 0, i32 7
  %636 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %635, i32 0, i32 3
  %637 = load i64, ptr %35, align 8, !tbaa !9
  %638 = load i64, ptr %26, align 8, !tbaa !9
  %639 = add nsw i64 %637, %638
  %640 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %636, i64 noundef %639, ptr noundef %640)
  %641 = load ptr, ptr %16, align 8, !tbaa !5
  %642 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %641, i32 0, i32 7
  %643 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %642, i32 0, i32 4
  %644 = load i64, ptr %35, align 8, !tbaa !9
  %645 = load i64, ptr %26, align 8, !tbaa !9
  %646 = add nsw i64 %644, %645
  %647 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %643, i64 noundef %646, ptr noundef %647)
  %648 = load ptr, ptr %22, align 8, !tbaa !5
  %649 = load ptr, ptr %16, align 8, !tbaa !5
  %650 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %649, i32 0, i32 7
  %651 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl25sparsecopytransposecrsbufEPNS_12sparsematrixES1_PNS_8ae_stateE(ptr noundef %648, ptr noundef %650, ptr noundef %651)
  %652 = load ptr, ptr %16, align 8, !tbaa !5
  %653 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %652, i32 0, i32 1
  %654 = load i64, ptr %26, align 8, !tbaa !9
  %655 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %653, i64 noundef %654, ptr noundef %655)
  store i64 0, ptr %31, align 8, !tbaa !9
  br label %656

656:                                              ; preds = %668, %599
  %657 = load i64, ptr %31, align 8, !tbaa !9
  %658 = load i64, ptr %26, align 8, !tbaa !9
  %659 = sub nsw i64 %658, 1
  %660 = icmp sle i64 %657, %659
  br i1 %660, label %661, label %671

661:                                              ; preds = %656
  %662 = load ptr, ptr %16, align 8, !tbaa !5
  %663 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %662, i32 0, i32 1
  %664 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %663, i32 0, i32 4
  %665 = load ptr, ptr %664, align 8, !tbaa !31
  %666 = load i64, ptr %31, align 8, !tbaa !9
  %667 = getelementptr inbounds double, ptr %665, i64 %666
  store double 0.000000e+00, ptr %667, align 8, !tbaa !32
  br label %668

668:                                              ; preds = %661
  %669 = load i64, ptr %31, align 8, !tbaa !9
  %670 = add nsw i64 %669, 1
  store i64 %670, ptr %31, align 8, !tbaa !9
  br label %656, !llvm.loop !38

671:                                              ; preds = %656
  store i64 0, ptr %31, align 8, !tbaa !9
  br label %672

672:                                              ; preds = %754, %671
  %673 = load i64, ptr %31, align 8, !tbaa !9
  %674 = load i64, ptr %35, align 8, !tbaa !9
  %675 = sub nsw i64 %674, 1
  %676 = icmp sle i64 %673, %675
  br i1 %676, label %677, label %757

677:                                              ; preds = %672
  %678 = load ptr, ptr %16, align 8, !tbaa !5
  %679 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %678, i32 0, i32 7
  %680 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %679, i32 0, i32 2
  %681 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %680, i32 0, i32 4
  %682 = load ptr, ptr %681, align 8, !tbaa !31
  %683 = load i64, ptr %31, align 8, !tbaa !9
  %684 = getelementptr inbounds i64, ptr %682, i64 %683
  %685 = load i64, ptr %684, align 8, !tbaa !9
  store i64 %685, ptr %36, align 8, !tbaa !9
  %686 = load ptr, ptr %16, align 8, !tbaa !5
  %687 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %686, i32 0, i32 7
  %688 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %687, i32 0, i32 2
  %689 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %688, i32 0, i32 4
  %690 = load ptr, ptr %689, align 8, !tbaa !31
  %691 = load i64, ptr %31, align 8, !tbaa !9
  %692 = add nsw i64 %691, 1
  %693 = getelementptr inbounds i64, ptr %690, i64 %692
  %694 = load i64, ptr %693, align 8, !tbaa !9
  %695 = sub nsw i64 %694, 1
  store i64 %695, ptr %37, align 8, !tbaa !9
  %696 = load ptr, ptr %20, align 8, !tbaa !5
  %697 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %696, i32 0, i32 4
  %698 = load ptr, ptr %697, align 8, !tbaa !31
  %699 = load i64, ptr %31, align 8, !tbaa !9
  %700 = getelementptr inbounds double, ptr %698, i64 %699
  %701 = load double, ptr %700, align 8, !tbaa !32
  store double %701, ptr %41, align 8, !tbaa !32
  %702 = load i64, ptr %36, align 8, !tbaa !9
  store i64 %702, ptr %32, align 8, !tbaa !9
  br label %703

703:                                              ; preds = %750, %677
  %704 = load i64, ptr %32, align 8, !tbaa !9
  %705 = load i64, ptr %37, align 8, !tbaa !9
  %706 = icmp sle i64 %704, %705
  br i1 %706, label %707, label %753

707:                                              ; preds = %703
  %708 = load double, ptr %41, align 8, !tbaa !32
  %709 = load ptr, ptr %16, align 8, !tbaa !5
  %710 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %709, i32 0, i32 7
  %711 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %710, i32 0, i32 0
  %712 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %711, i32 0, i32 4
  %713 = load ptr, ptr %712, align 8, !tbaa !31
  %714 = load i64, ptr %32, align 8, !tbaa !9
  %715 = getelementptr inbounds double, ptr %713, i64 %714
  %716 = load double, ptr %715, align 8, !tbaa !32
  %717 = fmul double %708, %716
  store double %717, ptr %42, align 8, !tbaa !32
  %718 = load ptr, ptr %16, align 8, !tbaa !5
  %719 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %718, i32 0, i32 7
  %720 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %719, i32 0, i32 1
  %721 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %720, i32 0, i32 4
  %722 = load ptr, ptr %721, align 8, !tbaa !31
  %723 = load i64, ptr %32, align 8, !tbaa !9
  %724 = getelementptr inbounds i64, ptr %722, i64 %723
  %725 = load i64, ptr %724, align 8, !tbaa !9
  store i64 %725, ptr %33, align 8, !tbaa !9
  %726 = load double, ptr %42, align 8, !tbaa !32
  %727 = load ptr, ptr %16, align 8, !tbaa !5
  %728 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %727, i32 0, i32 7
  %729 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %728, i32 0, i32 0
  %730 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %729, i32 0, i32 4
  %731 = load ptr, ptr %730, align 8, !tbaa !31
  %732 = load i64, ptr %32, align 8, !tbaa !9
  %733 = getelementptr inbounds double, ptr %731, i64 %732
  store double %726, ptr %733, align 8, !tbaa !32
  %734 = load ptr, ptr %16, align 8, !tbaa !5
  %735 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %734, i32 0, i32 1
  %736 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %735, i32 0, i32 4
  %737 = load ptr, ptr %736, align 8, !tbaa !31
  %738 = load i64, ptr %33, align 8, !tbaa !9
  %739 = getelementptr inbounds double, ptr %737, i64 %738
  %740 = load double, ptr %739, align 8, !tbaa !32
  %741 = load double, ptr %42, align 8, !tbaa !32
  %742 = load double, ptr %42, align 8, !tbaa !32
  %743 = call double @llvm.fmuladd.f64(double %741, double %742, double %740)
  %744 = load ptr, ptr %16, align 8, !tbaa !5
  %745 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %744, i32 0, i32 1
  %746 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %745, i32 0, i32 4
  %747 = load ptr, ptr %746, align 8, !tbaa !31
  %748 = load i64, ptr %33, align 8, !tbaa !9
  %749 = getelementptr inbounds double, ptr %747, i64 %748
  store double %743, ptr %749, align 8, !tbaa !32
  br label %750

750:                                              ; preds = %707
  %751 = load i64, ptr %32, align 8, !tbaa !9
  %752 = add nsw i64 %751, 1
  store i64 %752, ptr %32, align 8, !tbaa !9
  br label %703, !llvm.loop !39

753:                                              ; preds = %703
  br label %754

754:                                              ; preds = %753
  %755 = load i64, ptr %31, align 8, !tbaa !9
  %756 = add nsw i64 %755, 1
  store i64 %756, ptr %31, align 8, !tbaa !9
  br label %672, !llvm.loop !40

757:                                              ; preds = %672
  %758 = load ptr, ptr %16, align 8, !tbaa !5
  %759 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %758, i32 0, i32 30
  %760 = load i64, ptr %26, align 8, !tbaa !9
  %761 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %759, i64 noundef %760, ptr noundef %761)
  store i64 0, ptr %31, align 8, !tbaa !9
  br label %762

762:                                              ; preds = %799, %757
  %763 = load i64, ptr %31, align 8, !tbaa !9
  %764 = load i64, ptr %26, align 8, !tbaa !9
  %765 = sub nsw i64 %764, 1
  %766 = icmp sle i64 %763, %765
  br i1 %766, label %767, label %802

767:                                              ; preds = %762
  %768 = load ptr, ptr %16, align 8, !tbaa !5
  %769 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %768, i32 0, i32 1
  %770 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %769, i32 0, i32 4
  %771 = load ptr, ptr %770, align 8, !tbaa !31
  %772 = load i64, ptr %31, align 8, !tbaa !9
  %773 = getelementptr inbounds double, ptr %771, i64 %772
  %774 = load double, ptr %773, align 8, !tbaa !32
  %775 = load ptr, ptr %30, align 8, !tbaa !5
  %776 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %774, ptr noundef %775)
  %777 = load ptr, ptr %30, align 8, !tbaa !5
  %778 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %776, double noundef 1.000000e+00, ptr noundef %777)
  %779 = load ptr, ptr %16, align 8, !tbaa !5
  %780 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %779, i32 0, i32 1
  %781 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %780, i32 0, i32 4
  %782 = load ptr, ptr %781, align 8, !tbaa !31
  %783 = load i64, ptr %31, align 8, !tbaa !9
  %784 = getelementptr inbounds double, ptr %782, i64 %783
  store double %778, ptr %784, align 8, !tbaa !32
  %785 = load ptr, ptr %16, align 8, !tbaa !5
  %786 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %785, i32 0, i32 1
  %787 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %786, i32 0, i32 4
  %788 = load ptr, ptr %787, align 8, !tbaa !31
  %789 = load i64, ptr %31, align 8, !tbaa !9
  %790 = getelementptr inbounds double, ptr %788, i64 %789
  %791 = load double, ptr %790, align 8, !tbaa !32
  %792 = fdiv double 1.000000e+00, %791
  %793 = load ptr, ptr %16, align 8, !tbaa !5
  %794 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %793, i32 0, i32 30
  %795 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %794, i32 0, i32 4
  %796 = load ptr, ptr %795, align 8, !tbaa !31
  %797 = load i64, ptr %31, align 8, !tbaa !9
  %798 = getelementptr inbounds double, ptr %796, i64 %797
  store double %792, ptr %798, align 8, !tbaa !32
  br label %799

799:                                              ; preds = %767
  %800 = load i64, ptr %31, align 8, !tbaa !9
  %801 = add nsw i64 %800, 1
  store i64 %801, ptr %31, align 8, !tbaa !9
  br label %762, !llvm.loop !41

802:                                              ; preds = %762
  store i64 0, ptr %31, align 8, !tbaa !9
  br label %803

803:                                              ; preds = %867, %802
  %804 = load i64, ptr %31, align 8, !tbaa !9
  %805 = load i64, ptr %35, align 8, !tbaa !9
  %806 = sub nsw i64 %805, 1
  %807 = icmp sle i64 %804, %806
  br i1 %807, label %808, label %870

808:                                              ; preds = %803
  %809 = load ptr, ptr %16, align 8, !tbaa !5
  %810 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %809, i32 0, i32 7
  %811 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %810, i32 0, i32 2
  %812 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %811, i32 0, i32 4
  %813 = load ptr, ptr %812, align 8, !tbaa !31
  %814 = load i64, ptr %31, align 8, !tbaa !9
  %815 = getelementptr inbounds i64, ptr %813, i64 %814
  %816 = load i64, ptr %815, align 8, !tbaa !9
  store i64 %816, ptr %36, align 8, !tbaa !9
  %817 = load ptr, ptr %16, align 8, !tbaa !5
  %818 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %817, i32 0, i32 7
  %819 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %818, i32 0, i32 2
  %820 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %819, i32 0, i32 4
  %821 = load ptr, ptr %820, align 8, !tbaa !31
  %822 = load i64, ptr %31, align 8, !tbaa !9
  %823 = add nsw i64 %822, 1
  %824 = getelementptr inbounds i64, ptr %821, i64 %823
  %825 = load i64, ptr %824, align 8, !tbaa !9
  %826 = sub nsw i64 %825, 1
  store i64 %826, ptr %37, align 8, !tbaa !9
  %827 = load i64, ptr %36, align 8, !tbaa !9
  store i64 %827, ptr %32, align 8, !tbaa !9
  br label %828

828:                                              ; preds = %863, %808
  %829 = load i64, ptr %32, align 8, !tbaa !9
  %830 = load i64, ptr %37, align 8, !tbaa !9
  %831 = icmp sle i64 %829, %830
  br i1 %831, label %832, label %866

832:                                              ; preds = %828
  %833 = load ptr, ptr %16, align 8, !tbaa !5
  %834 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %833, i32 0, i32 7
  %835 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %834, i32 0, i32 0
  %836 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %835, i32 0, i32 4
  %837 = load ptr, ptr %836, align 8, !tbaa !31
  %838 = load i64, ptr %32, align 8, !tbaa !9
  %839 = getelementptr inbounds double, ptr %837, i64 %838
  %840 = load double, ptr %839, align 8, !tbaa !32
  %841 = load ptr, ptr %16, align 8, !tbaa !5
  %842 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %841, i32 0, i32 30
  %843 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %842, i32 0, i32 4
  %844 = load ptr, ptr %843, align 8, !tbaa !31
  %845 = load ptr, ptr %16, align 8, !tbaa !5
  %846 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %845, i32 0, i32 7
  %847 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %846, i32 0, i32 1
  %848 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %847, i32 0, i32 4
  %849 = load ptr, ptr %848, align 8, !tbaa !31
  %850 = load i64, ptr %32, align 8, !tbaa !9
  %851 = getelementptr inbounds i64, ptr %849, i64 %850
  %852 = load i64, ptr %851, align 8, !tbaa !9
  %853 = getelementptr inbounds double, ptr %844, i64 %852
  %854 = load double, ptr %853, align 8, !tbaa !32
  %855 = fmul double %840, %854
  %856 = load ptr, ptr %16, align 8, !tbaa !5
  %857 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %856, i32 0, i32 7
  %858 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %857, i32 0, i32 0
  %859 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %858, i32 0, i32 4
  %860 = load ptr, ptr %859, align 8, !tbaa !31
  %861 = load i64, ptr %32, align 8, !tbaa !9
  %862 = getelementptr inbounds double, ptr %860, i64 %861
  store double %855, ptr %862, align 8, !tbaa !32
  br label %863

863:                                              ; preds = %832
  %864 = load i64, ptr %32, align 8, !tbaa !9
  %865 = add nsw i64 %864, 1
  store i64 %865, ptr %32, align 8, !tbaa !9
  br label %828, !llvm.loop !42

866:                                              ; preds = %828
  br label %867

867:                                              ; preds = %866
  %868 = load i64, ptr %31, align 8, !tbaa !9
  %869 = add nsw i64 %868, 1
  store i64 %869, ptr %31, align 8, !tbaa !9
  br label %803, !llvm.loop !43

870:                                              ; preds = %803
  %871 = load ptr, ptr %16, align 8, !tbaa !5
  %872 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %871, i32 0, i32 7
  %873 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %872, i32 0, i32 0
  %874 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %873, i32 0, i32 0
  %875 = load i64, ptr %874, align 8, !tbaa !44
  %876 = load ptr, ptr %22, align 8, !tbaa !5
  %877 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %876, i32 0, i32 2
  %878 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %877, i32 0, i32 4
  %879 = load ptr, ptr %878, align 8, !tbaa !31
  %880 = load i64, ptr %26, align 8, !tbaa !9
  %881 = getelementptr inbounds i64, ptr %879, i64 %880
  %882 = load i64, ptr %881, align 8, !tbaa !9
  %883 = load i64, ptr %26, align 8, !tbaa !9
  %884 = add nsw i64 %882, %883
  %885 = icmp sge i64 %875, %884
  %886 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %885, ptr noundef @.str.355, ptr noundef %886)
  %887 = load ptr, ptr %16, align 8, !tbaa !5
  %888 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %887, i32 0, i32 7
  %889 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %888, i32 0, i32 1
  %890 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %889, i32 0, i32 0
  %891 = load i64, ptr %890, align 8, !tbaa !45
  %892 = load ptr, ptr %22, align 8, !tbaa !5
  %893 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %892, i32 0, i32 2
  %894 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %893, i32 0, i32 4
  %895 = load ptr, ptr %894, align 8, !tbaa !31
  %896 = load i64, ptr %26, align 8, !tbaa !9
  %897 = getelementptr inbounds i64, ptr %895, i64 %896
  %898 = load i64, ptr %897, align 8, !tbaa !9
  %899 = load i64, ptr %26, align 8, !tbaa !9
  %900 = add nsw i64 %898, %899
  %901 = icmp sge i64 %891, %900
  %902 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %901, ptr noundef @.str.355, ptr noundef %902)
  %903 = load ptr, ptr %16, align 8, !tbaa !5
  %904 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %903, i32 0, i32 7
  %905 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %904, i32 0, i32 2
  %906 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %905, i32 0, i32 0
  %907 = load i64, ptr %906, align 8, !tbaa !46
  %908 = load i64, ptr %35, align 8, !tbaa !9
  %909 = load i64, ptr %26, align 8, !tbaa !9
  %910 = add nsw i64 %908, %909
  %911 = add nsw i64 %910, 1
  %912 = icmp sge i64 %907, %911
  %913 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %912, ptr noundef @.str.355, ptr noundef %913)
  %914 = load ptr, ptr %16, align 8, !tbaa !5
  %915 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %914, i32 0, i32 7
  %916 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %915, i32 0, i32 3
  %917 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %916, i32 0, i32 0
  %918 = load i64, ptr %917, align 8, !tbaa !47
  %919 = load i64, ptr %35, align 8, !tbaa !9
  %920 = load i64, ptr %26, align 8, !tbaa !9
  %921 = add nsw i64 %919, %920
  %922 = icmp sge i64 %918, %921
  %923 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %922, ptr noundef @.str.355, ptr noundef %923)
  %924 = load ptr, ptr %16, align 8, !tbaa !5
  %925 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %924, i32 0, i32 7
  %926 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %925, i32 0, i32 4
  %927 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %926, i32 0, i32 0
  %928 = load i64, ptr %927, align 8, !tbaa !48
  %929 = load i64, ptr %35, align 8, !tbaa !9
  %930 = load i64, ptr %26, align 8, !tbaa !9
  %931 = add nsw i64 %929, %930
  %932 = icmp sge i64 %928, %931
  %933 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %932, ptr noundef @.str.355, ptr noundef %933)
  %934 = load ptr, ptr %16, align 8, !tbaa !5
  %935 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %934, i32 0, i32 7
  %936 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %935, i32 0, i32 2
  %937 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %936, i32 0, i32 4
  %938 = load ptr, ptr %937, align 8, !tbaa !31
  %939 = load i64, ptr %35, align 8, !tbaa !9
  %940 = getelementptr inbounds i64, ptr %938, i64 %939
  %941 = load i64, ptr %940, align 8, !tbaa !9
  store i64 %941, ptr %34, align 8, !tbaa !9
  store i64 0, ptr %31, align 8, !tbaa !9
  br label %942

942:                                              ; preds = %996, %870
  %943 = load i64, ptr %31, align 8, !tbaa !9
  %944 = load i64, ptr %26, align 8, !tbaa !9
  %945 = sub nsw i64 %944, 1
  %946 = icmp sle i64 %943, %945
  br i1 %946, label %947, label %999

947:                                              ; preds = %942
  %948 = load ptr, ptr %16, align 8, !tbaa !5
  %949 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %948, i32 0, i32 7
  %950 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %949, i32 0, i32 0
  %951 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %950, i32 0, i32 4
  %952 = load ptr, ptr %951, align 8, !tbaa !31
  %953 = load i64, ptr %34, align 8, !tbaa !9
  %954 = load i64, ptr %31, align 8, !tbaa !9
  %955 = add nsw i64 %953, %954
  %956 = getelementptr inbounds double, ptr %952, i64 %955
  store double -1.000000e+00, ptr %956, align 8, !tbaa !32
  %957 = load i64, ptr %31, align 8, !tbaa !9
  %958 = load ptr, ptr %16, align 8, !tbaa !5
  %959 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %958, i32 0, i32 7
  %960 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %959, i32 0, i32 1
  %961 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %960, i32 0, i32 4
  %962 = load ptr, ptr %961, align 8, !tbaa !31
  %963 = load i64, ptr %34, align 8, !tbaa !9
  %964 = load i64, ptr %31, align 8, !tbaa !9
  %965 = add nsw i64 %963, %964
  %966 = getelementptr inbounds i64, ptr %962, i64 %965
  store i64 %957, ptr %966, align 8, !tbaa !9
  %967 = load ptr, ptr %16, align 8, !tbaa !5
  %968 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %967, i32 0, i32 7
  %969 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %968, i32 0, i32 2
  %970 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %969, i32 0, i32 4
  %971 = load ptr, ptr %970, align 8, !tbaa !31
  %972 = load i64, ptr %35, align 8, !tbaa !9
  %973 = load i64, ptr %31, align 8, !tbaa !9
  %974 = add nsw i64 %972, %973
  %975 = getelementptr inbounds i64, ptr %971, i64 %974
  %976 = load i64, ptr %975, align 8, !tbaa !9
  %977 = add nsw i64 %976, 1
  %978 = load ptr, ptr %16, align 8, !tbaa !5
  %979 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %978, i32 0, i32 7
  %980 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %979, i32 0, i32 2
  %981 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %980, i32 0, i32 4
  %982 = load ptr, ptr %981, align 8, !tbaa !31
  %983 = load i64, ptr %35, align 8, !tbaa !9
  %984 = load i64, ptr %31, align 8, !tbaa !9
  %985 = add nsw i64 %983, %984
  %986 = add nsw i64 %985, 1
  %987 = getelementptr inbounds i64, ptr %982, i64 %986
  store i64 %977, ptr %987, align 8, !tbaa !9
  %988 = load ptr, ptr %16, align 8, !tbaa !5
  %989 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %988, i32 0, i32 7
  %990 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %989, i32 0, i32 9
  %991 = load i64, ptr %990, align 8, !tbaa !49
  %992 = add nsw i64 %991, 1
  %993 = load ptr, ptr %16, align 8, !tbaa !5
  %994 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %993, i32 0, i32 7
  %995 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %994, i32 0, i32 9
  store i64 %992, ptr %995, align 8, !tbaa !49
  br label %996

996:                                              ; preds = %947
  %997 = load i64, ptr %31, align 8, !tbaa !9
  %998 = add nsw i64 %997, 1
  store i64 %998, ptr %31, align 8, !tbaa !9
  br label %942, !llvm.loop !50

999:                                              ; preds = %942
  %1000 = load ptr, ptr %16, align 8, !tbaa !5
  %1001 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1000, i32 0, i32 7
  %1002 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1001, i32 0, i32 6
  %1003 = load i64, ptr %1002, align 8, !tbaa !51
  %1004 = load i64, ptr %26, align 8, !tbaa !9
  %1005 = add nsw i64 %1003, %1004
  %1006 = load ptr, ptr %16, align 8, !tbaa !5
  %1007 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1006, i32 0, i32 7
  %1008 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %1007, i32 0, i32 6
  store i64 %1005, ptr %1008, align 8, !tbaa !51
  %1009 = load ptr, ptr %16, align 8, !tbaa !5
  %1010 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1009, i32 0, i32 7
  %1011 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl15sparseinitduidxEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %1010, ptr noundef %1011)
  store i8 1, ptr %38, align 1, !tbaa !37
  br label %1012

1012:                                             ; preds = %999, %596
  %1013 = load i8, ptr %38, align 1, !tbaa !37, !range !52, !noundef !53
  %1014 = trunc i8 %1013 to i1
  %1015 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1014, ptr noundef @.str.357, ptr noundef %1015)
  store i64 0, ptr %31, align 8, !tbaa !9
  br label %1016

1016:                                             ; preds = %1290, %1012
  %1017 = load i64, ptr %31, align 8, !tbaa !9
  %1018 = load i64, ptr %26, align 8, !tbaa !9
  %1019 = sub nsw i64 %1018, 1
  %1020 = icmp sle i64 %1017, %1019
  br i1 %1020, label %1021, label %1293

1021:                                             ; preds = %1016
  %1022 = load ptr, ptr %24, align 8, !tbaa !5
  %1023 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1022, i32 0, i32 4
  %1024 = load ptr, ptr %1023, align 8, !tbaa !31
  %1025 = load i64, ptr %31, align 8, !tbaa !9
  %1026 = getelementptr inbounds double, ptr %1024, i64 %1025
  %1027 = load double, ptr %1026, align 8, !tbaa !32
  %1028 = load ptr, ptr %30, align 8, !tbaa !5
  %1029 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %1027, ptr noundef %1028)
  br i1 %1029, label %1039, label %1030

1030:                                             ; preds = %1021
  %1031 = load ptr, ptr %24, align 8, !tbaa !5
  %1032 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1031, i32 0, i32 4
  %1033 = load ptr, ptr %1032, align 8, !tbaa !31
  %1034 = load i64, ptr %31, align 8, !tbaa !9
  %1035 = getelementptr inbounds double, ptr %1033, i64 %1034
  %1036 = load double, ptr %1035, align 8, !tbaa !32
  %1037 = load ptr, ptr %30, align 8, !tbaa !5
  %1038 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isneginfEdPNS_8ae_stateE(double noundef %1036, ptr noundef %1037)
  br label %1039

1039:                                             ; preds = %1030, %1021
  %1040 = phi i1 [ true, %1021 ], [ %1038, %1030 ]
  %1041 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1040, ptr noundef @.str.358, ptr noundef %1041)
  %1042 = load ptr, ptr %25, align 8, !tbaa !5
  %1043 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1042, i32 0, i32 4
  %1044 = load ptr, ptr %1043, align 8, !tbaa !31
  %1045 = load i64, ptr %31, align 8, !tbaa !9
  %1046 = getelementptr inbounds double, ptr %1044, i64 %1045
  %1047 = load double, ptr %1046, align 8, !tbaa !32
  %1048 = load ptr, ptr %30, align 8, !tbaa !5
  %1049 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %1047, ptr noundef %1048)
  br i1 %1049, label %1059, label %1050

1050:                                             ; preds = %1039
  %1051 = load ptr, ptr %25, align 8, !tbaa !5
  %1052 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1051, i32 0, i32 4
  %1053 = load ptr, ptr %1052, align 8, !tbaa !31
  %1054 = load i64, ptr %31, align 8, !tbaa !9
  %1055 = getelementptr inbounds double, ptr %1053, i64 %1054
  %1056 = load double, ptr %1055, align 8, !tbaa !32
  %1057 = load ptr, ptr %30, align 8, !tbaa !5
  %1058 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isposinfEdPNS_8ae_stateE(double noundef %1056, ptr noundef %1057)
  br label %1059

1059:                                             ; preds = %1050, %1039
  %1060 = phi i1 [ true, %1039 ], [ %1058, %1050 ]
  %1061 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1060, ptr noundef @.str.359, ptr noundef %1061)
  %1062 = load ptr, ptr %24, align 8, !tbaa !5
  %1063 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1062, i32 0, i32 4
  %1064 = load ptr, ptr %1063, align 8, !tbaa !31
  %1065 = load i64, ptr %31, align 8, !tbaa !9
  %1066 = getelementptr inbounds double, ptr %1064, i64 %1065
  %1067 = load double, ptr %1066, align 8, !tbaa !32
  %1068 = load ptr, ptr %16, align 8, !tbaa !5
  %1069 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1068, i32 0, i32 1
  %1070 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1069, i32 0, i32 4
  %1071 = load ptr, ptr %1070, align 8, !tbaa !31
  %1072 = load i64, ptr %31, align 8, !tbaa !9
  %1073 = getelementptr inbounds double, ptr %1071, i64 %1072
  %1074 = load double, ptr %1073, align 8, !tbaa !32
  %1075 = fdiv double %1067, %1074
  %1076 = load ptr, ptr %16, align 8, !tbaa !5
  %1077 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1076, i32 0, i32 9
  %1078 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1077, i32 0, i32 3
  %1079 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1078, i32 0, i32 4
  %1080 = load ptr, ptr %1079, align 8, !tbaa !31
  %1081 = load i64, ptr %35, align 8, !tbaa !9
  %1082 = load i64, ptr %31, align 8, !tbaa !9
  %1083 = add nsw i64 %1081, %1082
  %1084 = getelementptr inbounds double, ptr %1080, i64 %1083
  store double %1075, ptr %1084, align 8, !tbaa !32
  %1085 = load ptr, ptr %25, 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 !31
  %1088 = load i64, ptr %31, align 8, !tbaa !9
  %1089 = getelementptr inbounds double, ptr %1087, i64 %1088
  %1090 = load double, ptr %1089, align 8, !tbaa !32
  %1091 = load ptr, ptr %16, align 8, !tbaa !5
  %1092 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1091, i32 0, i32 1
  %1093 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1092, i32 0, i32 4
  %1094 = load ptr, ptr %1093, align 8, !tbaa !31
  %1095 = load i64, ptr %31, align 8, !tbaa !9
  %1096 = getelementptr inbounds double, ptr %1094, i64 %1095
  %1097 = load double, ptr %1096, align 8, !tbaa !32
  %1098 = fdiv double %1090, %1097
  %1099 = load ptr, ptr %16, align 8, !tbaa !5
  %1100 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1099, i32 0, i32 9
  %1101 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1100, i32 0, i32 4
  %1102 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1101, i32 0, i32 4
  %1103 = load ptr, ptr %1102, align 8, !tbaa !31
  %1104 = load i64, ptr %35, align 8, !tbaa !9
  %1105 = load i64, ptr %31, align 8, !tbaa !9
  %1106 = add nsw i64 %1104, %1105
  %1107 = getelementptr inbounds double, ptr %1103, i64 %1106
  store double %1098, ptr %1107, align 8, !tbaa !32
  %1108 = load ptr, ptr %24, align 8, !tbaa !5
  %1109 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1108, i32 0, i32 4
  %1110 = load ptr, ptr %1109, align 8, !tbaa !31
  %1111 = load i64, ptr %31, align 8, !tbaa !9
  %1112 = getelementptr inbounds double, ptr %1110, i64 %1111
  %1113 = load double, ptr %1112, align 8, !tbaa !32
  %1114 = load ptr, ptr %30, align 8, !tbaa !5
  %1115 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %1113, ptr noundef %1114)
  br i1 %1115, label %1116, label %1201

1116:                                             ; preds = %1059
  %1117 = load ptr, ptr %25, align 8, !tbaa !5
  %1118 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1117, i32 0, i32 4
  %1119 = load ptr, ptr %1118, align 8, !tbaa !31
  %1120 = load i64, ptr %31, align 8, !tbaa !9
  %1121 = getelementptr inbounds double, ptr %1119, i64 %1120
  %1122 = load double, ptr %1121, align 8, !tbaa !32
  %1123 = load ptr, ptr %30, align 8, !tbaa !5
  %1124 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %1122, ptr noundef %1123)
  br i1 %1124, label %1125, label %1201

1125:                                             ; preds = %1116
  %1126 = load ptr, ptr %24, align 8, !tbaa !5
  %1127 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1126, i32 0, i32 4
  %1128 = load ptr, ptr %1127, align 8, !tbaa !31
  %1129 = load i64, ptr %31, align 8, !tbaa !9
  %1130 = getelementptr inbounds double, ptr %1128, i64 %1129
  %1131 = load double, ptr %1130, align 8, !tbaa !32
  %1132 = load ptr, ptr %25, align 8, !tbaa !5
  %1133 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1132, i32 0, i32 4
  %1134 = load ptr, ptr %1133, align 8, !tbaa !31
  %1135 = load i64, ptr %31, align 8, !tbaa !9
  %1136 = getelementptr inbounds double, ptr %1134, i64 %1135
  %1137 = load double, ptr %1136, align 8, !tbaa !32
  %1138 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1131, double noundef %1137)
  br i1 %1138, label %1139, label %1150

1139:                                             ; preds = %1125
  %1140 = load i64, ptr @_ZN11alglib_implL31reviseddualsimplex_ccinfeasibleE, align 8, !tbaa !9
  %1141 = load ptr, ptr %16, align 8, !tbaa !5
  %1142 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1141, i32 0, i32 9
  %1143 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1142, i32 0, i32 5
  %1144 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1143, i32 0, i32 4
  %1145 = load ptr, ptr %1144, align 8, !tbaa !31
  %1146 = load i64, ptr %35, align 8, !tbaa !9
  %1147 = load i64, ptr %31, align 8, !tbaa !9
  %1148 = add nsw i64 %1146, %1147
  %1149 = getelementptr inbounds i64, ptr %1145, i64 %1148
  store i64 %1140, ptr %1149, align 8, !tbaa !9
  br label %1150

1150:                                             ; preds = %1139, %1125
  %1151 = load ptr, ptr %24, align 8, !tbaa !5
  %1152 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1151, i32 0, i32 4
  %1153 = load ptr, ptr %1152, align 8, !tbaa !31
  %1154 = load i64, ptr %31, align 8, !tbaa !9
  %1155 = getelementptr inbounds double, ptr %1153, i64 %1154
  %1156 = load double, ptr %1155, align 8, !tbaa !32
  %1157 = load ptr, ptr %25, align 8, !tbaa !5
  %1158 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1157, i32 0, i32 4
  %1159 = load ptr, ptr %1158, align 8, !tbaa !31
  %1160 = load i64, ptr %31, align 8, !tbaa !9
  %1161 = getelementptr inbounds double, ptr %1159, i64 %1160
  %1162 = load double, ptr %1161, align 8, !tbaa !32
  %1163 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %1156, double noundef %1162)
  br i1 %1163, label %1164, label %1175

1164:                                             ; preds = %1150
  %1165 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_ccrangeE, align 8, !tbaa !9
  %1166 = load ptr, ptr %16, align 8, !tbaa !5
  %1167 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1166, i32 0, i32 9
  %1168 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1167, i32 0, i32 5
  %1169 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1168, i32 0, i32 4
  %1170 = load ptr, ptr %1169, align 8, !tbaa !31
  %1171 = load i64, ptr %35, align 8, !tbaa !9
  %1172 = load i64, ptr %31, align 8, !tbaa !9
  %1173 = add nsw i64 %1171, %1172
  %1174 = getelementptr inbounds i64, ptr %1170, i64 %1173
  store i64 %1165, ptr %1174, align 8, !tbaa !9
  br label %1175

1175:                                             ; preds = %1164, %1150
  %1176 = load ptr, ptr %24, align 8, !tbaa !5
  %1177 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1176, i32 0, i32 4
  %1178 = load ptr, ptr %1177, align 8, !tbaa !31
  %1179 = load i64, ptr %31, align 8, !tbaa !9
  %1180 = getelementptr inbounds double, ptr %1178, i64 %1179
  %1181 = load double, ptr %1180, align 8, !tbaa !32
  %1182 = load ptr, ptr %25, align 8, !tbaa !5
  %1183 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1182, i32 0, i32 4
  %1184 = load ptr, ptr %1183, align 8, !tbaa !31
  %1185 = load i64, ptr %31, align 8, !tbaa !9
  %1186 = getelementptr inbounds double, ptr %1184, i64 %1185
  %1187 = load double, ptr %1186, align 8, !tbaa !32
  %1188 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1181, double noundef %1187)
  br i1 %1188, label %1189, label %1200

1189:                                             ; preds = %1175
  %1190 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_ccfixedE, align 8, !tbaa !9
  %1191 = load ptr, ptr %16, align 8, !tbaa !5
  %1192 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1191, i32 0, i32 9
  %1193 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1192, i32 0, i32 5
  %1194 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1193, i32 0, i32 4
  %1195 = load ptr, ptr %1194, align 8, !tbaa !31
  %1196 = load i64, ptr %35, align 8, !tbaa !9
  %1197 = load i64, ptr %31, align 8, !tbaa !9
  %1198 = add nsw i64 %1196, %1197
  %1199 = getelementptr inbounds i64, ptr %1195, i64 %1198
  store i64 %1190, ptr %1199, align 8, !tbaa !9
  br label %1200

1200:                                             ; preds = %1189, %1175
  br label %1290

1201:                                             ; preds = %1116, %1059
  %1202 = load ptr, ptr %24, align 8, !tbaa !5
  %1203 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1202, i32 0, i32 4
  %1204 = load ptr, ptr %1203, align 8, !tbaa !31
  %1205 = load i64, ptr %31, align 8, !tbaa !9
  %1206 = getelementptr inbounds double, ptr %1204, i64 %1205
  %1207 = load double, ptr %1206, align 8, !tbaa !32
  %1208 = load ptr, ptr %30, align 8, !tbaa !5
  %1209 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %1207, ptr noundef %1208)
  br i1 %1209, label %1210, label %1230

1210:                                             ; preds = %1201
  %1211 = load ptr, ptr %25, align 8, !tbaa !5
  %1212 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1211, i32 0, i32 4
  %1213 = load ptr, ptr %1212, align 8, !tbaa !31
  %1214 = load i64, ptr %31, align 8, !tbaa !9
  %1215 = getelementptr inbounds double, ptr %1213, i64 %1214
  %1216 = load double, ptr %1215, align 8, !tbaa !32
  %1217 = load ptr, ptr %30, align 8, !tbaa !5
  %1218 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %1216, ptr noundef %1217)
  br i1 %1218, label %1230, label %1219

1219:                                             ; preds = %1210
  %1220 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_cclowerE, align 8, !tbaa !9
  %1221 = load ptr, ptr %16, align 8, !tbaa !5
  %1222 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1221, i32 0, i32 9
  %1223 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1222, i32 0, i32 5
  %1224 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1223, i32 0, i32 4
  %1225 = load ptr, ptr %1224, align 8, !tbaa !31
  %1226 = load i64, ptr %35, align 8, !tbaa !9
  %1227 = load i64, ptr %31, align 8, !tbaa !9
  %1228 = add nsw i64 %1226, %1227
  %1229 = getelementptr inbounds i64, ptr %1225, i64 %1228
  store i64 %1220, ptr %1229, align 8, !tbaa !9
  br label %1290

1230:                                             ; preds = %1210, %1201
  %1231 = load ptr, ptr %24, align 8, !tbaa !5
  %1232 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1231, i32 0, i32 4
  %1233 = load ptr, ptr %1232, align 8, !tbaa !31
  %1234 = load i64, ptr %31, align 8, !tbaa !9
  %1235 = getelementptr inbounds double, ptr %1233, i64 %1234
  %1236 = load double, ptr %1235, align 8, !tbaa !32
  %1237 = load ptr, ptr %30, align 8, !tbaa !5
  %1238 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %1236, ptr noundef %1237)
  br i1 %1238, label %1259, label %1239

1239:                                             ; preds = %1230
  %1240 = load ptr, ptr %25, align 8, !tbaa !5
  %1241 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1240, i32 0, i32 4
  %1242 = load ptr, ptr %1241, align 8, !tbaa !31
  %1243 = load i64, ptr %31, align 8, !tbaa !9
  %1244 = getelementptr inbounds double, ptr %1242, i64 %1243
  %1245 = load double, ptr %1244, align 8, !tbaa !32
  %1246 = load ptr, ptr %30, align 8, !tbaa !5
  %1247 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %1245, ptr noundef %1246)
  br i1 %1247, label %1248, label %1259

1248:                                             ; preds = %1239
  %1249 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_ccupperE, align 8, !tbaa !9
  %1250 = load ptr, ptr %16, align 8, !tbaa !5
  %1251 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1250, i32 0, i32 9
  %1252 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1251, i32 0, i32 5
  %1253 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1252, i32 0, i32 4
  %1254 = load ptr, ptr %1253, align 8, !tbaa !31
  %1255 = load i64, ptr %35, align 8, !tbaa !9
  %1256 = load i64, ptr %31, align 8, !tbaa !9
  %1257 = add nsw i64 %1255, %1256
  %1258 = getelementptr inbounds i64, ptr %1254, i64 %1257
  store i64 %1249, ptr %1258, align 8, !tbaa !9
  br label %1290

1259:                                             ; preds = %1239, %1230
  %1260 = load ptr, ptr %24, align 8, !tbaa !5
  %1261 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1260, i32 0, i32 4
  %1262 = load ptr, ptr %1261, align 8, !tbaa !31
  %1263 = load i64, ptr %31, align 8, !tbaa !9
  %1264 = getelementptr inbounds double, ptr %1262, i64 %1263
  %1265 = load double, ptr %1264, align 8, !tbaa !32
  %1266 = load ptr, ptr %30, align 8, !tbaa !5
  %1267 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isneginfEdPNS_8ae_stateE(double noundef %1265, ptr noundef %1266)
  br i1 %1267, label %1268, label %1277

1268:                                             ; preds = %1259
  %1269 = load ptr, ptr %25, align 8, !tbaa !5
  %1270 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1269, i32 0, i32 4
  %1271 = load ptr, ptr %1270, align 8, !tbaa !31
  %1272 = load i64, ptr %31, align 8, !tbaa !9
  %1273 = getelementptr inbounds double, ptr %1271, i64 %1272
  %1274 = load double, ptr %1273, align 8, !tbaa !32
  %1275 = load ptr, ptr %30, align 8, !tbaa !5
  %1276 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isposinfEdPNS_8ae_stateE(double noundef %1274, ptr noundef %1275)
  br label %1277

1277:                                             ; preds = %1268, %1259
  %1278 = phi i1 [ false, %1259 ], [ %1276, %1268 ]
  %1279 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1278, ptr noundef @.str.360, ptr noundef %1279)
  %1280 = load i64, ptr @_ZN11alglib_implL25reviseddualsimplex_ccfreeE, align 8, !tbaa !9
  %1281 = load ptr, ptr %16, align 8, !tbaa !5
  %1282 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1281, i32 0, i32 9
  %1283 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1282, i32 0, i32 5
  %1284 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1283, i32 0, i32 4
  %1285 = load ptr, ptr %1284, align 8, !tbaa !31
  %1286 = load i64, ptr %35, align 8, !tbaa !9
  %1287 = load i64, ptr %31, align 8, !tbaa !9
  %1288 = add nsw i64 %1286, %1287
  %1289 = getelementptr inbounds i64, ptr %1285, i64 %1288
  store i64 %1280, ptr %1289, align 8, !tbaa !9
  br label %1290

1290:                                             ; preds = %1277, %1248, %1219, %1200
  %1291 = load i64, ptr %31, align 8, !tbaa !9
  %1292 = add nsw i64 %1291, 1
  store i64 %1292, ptr %31, align 8, !tbaa !9
  br label %1016, !llvm.loop !54

1293:                                             ; preds = %1016
  store i8 0, ptr %40, align 1, !tbaa !37
  %1294 = load i64, ptr %28, align 8, !tbaa !9
  %1295 = icmp eq i64 %1294, 2
  br i1 %1295, label %1296, label %1324

1296:                                             ; preds = %1293
  %1297 = load ptr, ptr %27, align 8, !tbaa !5
  %1298 = getelementptr inbounds %"struct.alglib_impl::dualsimplexbasis", ptr %1297, i32 0, i32 0
  %1299 = load i64, ptr %1298, align 8, !tbaa !55
  %1300 = load ptr, ptr %16, align 8, !tbaa !5
  %1301 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1300, i32 0, i32 9
  %1302 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1301, i32 0, i32 0
  %1303 = load i64, ptr %1302, align 8, !tbaa !11
  %1304 = icmp eq i64 %1299, %1303
  %1305 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1304, ptr noundef @.str.361, ptr noundef %1305)
  %1306 = load ptr, ptr %27, align 8, !tbaa !5
  %1307 = getelementptr inbounds %"struct.alglib_impl::dualsimplexbasis", ptr %1306, i32 0, i32 1
  %1308 = load i64, ptr %1307, align 8, !tbaa !56
  %1309 = load ptr, ptr %16, align 8, !tbaa !5
  %1310 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1309, i32 0, i32 9
  %1311 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1310, i32 0, i32 1
  %1312 = load i64, ptr %1311, align 8, !tbaa !25
  %1313 = icmp eq i64 %1308, %1312
  %1314 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1313, ptr noundef @.str.361, ptr noundef %1314)
  %1315 = load ptr, ptr %16, align 8, !tbaa !5
  %1316 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1315, i32 0, i32 8
  %1317 = load ptr, ptr %27, align 8, !tbaa !5
  %1318 = load ptr, ptr %16, align 8, !tbaa !5
  %1319 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1318, i32 0, i32 7
  %1320 = load ptr, ptr %29, align 8, !tbaa !5
  %1321 = load ptr, ptr %30, align 8, !tbaa !5
  %1322 = call noundef zeroext i1 @_ZN11alglib_implL37reviseddualsimplex_basistryimportfromEPNS_16dualsimplexbasisES1_PNS_12sparsematrixEPNS_19dualsimplexsettingsEPNS_8ae_stateE(ptr noundef %1316, ptr noundef %1317, ptr noundef %1319, ptr noundef %1320, ptr noundef %1321)
  %1323 = zext i1 %1322 to i8
  store i8 %1323, ptr %40, align 1, !tbaa !37
  br label %1324

1324:                                             ; preds = %1296, %1293
  %1325 = load i64, ptr %28, align 8, !tbaa !9
  %1326 = icmp eq i64 %1325, 1
  br i1 %1326, label %1327, label %1397

1327:                                             ; preds = %1324
  %1328 = load ptr, ptr %16, align 8, !tbaa !5
  %1329 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1328, i32 0, i32 9
  %1330 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1329, i32 0, i32 1
  %1331 = load i64, ptr %1330, align 8, !tbaa !25
  %1332 = load i64, ptr %39, align 8, !tbaa !9
  %1333 = icmp sge i64 %1331, %1332
  br i1 %1333, label %1334, label %1397

1334:                                             ; preds = %1327
  %1335 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %1335, ptr %31, align 8, !tbaa !9
  br label %1336

1336:                                             ; preds = %1381, %1334
  %1337 = load i64, ptr %31, align 8, !tbaa !9
  %1338 = load ptr, ptr %16, align 8, !tbaa !5
  %1339 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1338, i32 0, i32 9
  %1340 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1339, i32 0, i32 1
  %1341 = load i64, ptr %1340, align 8, !tbaa !25
  %1342 = sub nsw i64 %1341, 1
  %1343 = icmp sle i64 %1337, %1342
  br i1 %1343, label %1344, label %1384

1344:                                             ; preds = %1336
  %1345 = load ptr, ptr %16, align 8, !tbaa !5
  %1346 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1345, i32 0, i32 9
  %1347 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1346, i32 0, i32 2
  %1348 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1347, i32 0, i32 4
  %1349 = load ptr, ptr %1348, align 8, !tbaa !31
  %1350 = load i64, ptr %35, align 8, !tbaa !9
  %1351 = load i64, ptr %31, align 8, !tbaa !9
  %1352 = add nsw i64 %1350, %1351
  %1353 = getelementptr inbounds double, ptr %1349, i64 %1352
  store double 0.000000e+00, ptr %1353, align 8, !tbaa !32
  %1354 = load ptr, ptr %16, align 8, !tbaa !5
  %1355 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1354, i32 0, i32 9
  %1356 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1355, i32 0, i32 13
  %1357 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1356, i32 0, i32 4
  %1358 = load ptr, ptr %1357, align 8, !tbaa !31
  %1359 = load i64, ptr %35, align 8, !tbaa !9
  %1360 = load i64, ptr %31, align 8, !tbaa !9
  %1361 = add nsw i64 %1359, %1360
  %1362 = getelementptr inbounds double, ptr %1358, i64 %1361
  store double 0.000000e+00, ptr %1362, align 8, !tbaa !32
  %1363 = load ptr, ptr %16, align 8, !tbaa !5
  %1364 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1363, i32 0, i32 9
  %1365 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1364, i32 0, i32 6
  %1366 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1365, i32 0, i32 4
  %1367 = load ptr, ptr %1366, align 8, !tbaa !31
  %1368 = load i64, ptr %35, align 8, !tbaa !9
  %1369 = load i64, ptr %31, align 8, !tbaa !9
  %1370 = add nsw i64 %1368, %1369
  %1371 = getelementptr inbounds double, ptr %1367, i64 %1370
  store double 0.000000e+00, ptr %1371, align 8, !tbaa !32
  %1372 = load ptr, ptr %16, align 8, !tbaa !5
  %1373 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1372, i32 0, i32 9
  %1374 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1373, i32 0, i32 7
  %1375 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1374, i32 0, i32 4
  %1376 = load ptr, ptr %1375, align 8, !tbaa !31
  %1377 = load i64, ptr %35, align 8, !tbaa !9
  %1378 = load i64, ptr %31, align 8, !tbaa !9
  %1379 = add nsw i64 %1377, %1378
  %1380 = getelementptr inbounds double, ptr %1376, i64 %1379
  store double 0.000000e+00, ptr %1380, align 8, !tbaa !32
  br label %1381

1381:                                             ; preds = %1344
  %1382 = load i64, ptr %31, align 8, !tbaa !9
  %1383 = add nsw i64 %1382, 1
  store i64 %1383, ptr %31, align 8, !tbaa !9
  br label %1336, !llvm.loop !57

1384:                                             ; preds = %1336
  %1385 = load ptr, ptr %16, align 8, !tbaa !5
  %1386 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1385, i32 0, i32 8
  %1387 = load ptr, ptr %16, align 8, !tbaa !5
  %1388 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1387, i32 0, i32 9
  %1389 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1388, i32 0, i32 1
  %1390 = load i64, ptr %1389, align 8, !tbaa !25
  %1391 = load ptr, ptr %16, align 8, !tbaa !5
  %1392 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1391, i32 0, i32 7
  %1393 = load ptr, ptr %29, align 8, !tbaa !5
  %1394 = load ptr, ptr %30, align 8, !tbaa !5
  %1395 = call noundef zeroext i1 @_ZN11alglib_implL33reviseddualsimplex_basistryresizeEPNS_16dualsimplexbasisElPNS_12sparsematrixEPNS_19dualsimplexsettingsEPNS_8ae_stateE(ptr noundef %1386, i64 noundef %1390, ptr noundef %1392, ptr noundef %1393, ptr noundef %1394)
  %1396 = zext i1 %1395 to i8
  store i8 %1396, ptr %40, align 1, !tbaa !37
  br label %1397

1397:                                             ; preds = %1384, %1327, %1324
  %1398 = load i8, ptr %40, align 1, !tbaa !37, !range !52, !noundef !53
  %1399 = trunc i8 %1398 to i1
  br i1 %1399, label %1464, label %1400

1400:                                             ; preds = %1397
  store i64 0, ptr %31, align 8, !tbaa !9
  br label %1401

1401:                                             ; preds = %1443, %1400
  %1402 = load i64, ptr %31, align 8, !tbaa !9
  %1403 = load i64, ptr %26, align 8, !tbaa !9
  %1404 = sub nsw i64 %1403, 1
  %1405 = icmp sle i64 %1402, %1404
  br i1 %1405, label %1406, label %1446

1406:                                             ; preds = %1401
  %1407 = load ptr, ptr %16, align 8, !tbaa !5
  %1408 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1407, i32 0, i32 9
  %1409 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1408, i32 0, i32 2
  %1410 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1409, i32 0, i32 4
  %1411 = load ptr, ptr %1410, align 8, !tbaa !31
  %1412 = load i64, ptr %35, align 8, !tbaa !9
  %1413 = load i64, ptr %31, align 8, !tbaa !9
  %1414 = add nsw i64 %1412, %1413
  %1415 = getelementptr inbounds double, ptr %1411, i64 %1414
  store double 0.000000e+00, ptr %1415, align 8, !tbaa !32
  %1416 = load ptr, ptr %16, align 8, !tbaa !5
  %1417 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1416, i32 0, i32 9
  %1418 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1417, i32 0, i32 13
  %1419 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1418, i32 0, i32 4
  %1420 = load ptr, ptr %1419, align 8, !tbaa !31
  %1421 = load i64, ptr %35, align 8, !tbaa !9
  %1422 = load i64, ptr %31, align 8, !tbaa !9
  %1423 = add nsw i64 %1421, %1422
  %1424 = getelementptr inbounds double, ptr %1420, i64 %1423
  store double 0.000000e+00, ptr %1424, align 8, !tbaa !32
  %1425 = load ptr, ptr %16, align 8, !tbaa !5
  %1426 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1425, i32 0, i32 9
  %1427 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1426, i32 0, i32 6
  %1428 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1427, i32 0, i32 4
  %1429 = load ptr, ptr %1428, align 8, !tbaa !31
  %1430 = load i64, ptr %35, align 8, !tbaa !9
  %1431 = load i64, ptr %31, align 8, !tbaa !9
  %1432 = add nsw i64 %1430, %1431
  %1433 = getelementptr inbounds double, ptr %1429, i64 %1432
  store double 0.000000e+00, ptr %1433, align 8, !tbaa !32
  %1434 = load ptr, ptr %16, align 8, !tbaa !5
  %1435 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1434, i32 0, i32 9
  %1436 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1435, i32 0, i32 7
  %1437 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1436, i32 0, i32 4
  %1438 = load ptr, ptr %1437, align 8, !tbaa !31
  %1439 = load i64, ptr %35, align 8, !tbaa !9
  %1440 = load i64, ptr %31, align 8, !tbaa !9
  %1441 = add nsw i64 %1439, %1440
  %1442 = getelementptr inbounds double, ptr %1438, i64 %1441
  store double 0.000000e+00, ptr %1442, align 8, !tbaa !32
  br label %1443

1443:                                             ; preds = %1406
  %1444 = load i64, ptr %31, align 8, !tbaa !9
  %1445 = add nsw i64 %1444, 1
  store i64 %1445, ptr %31, align 8, !tbaa !9
  br label %1401, !llvm.loop !58

1446:                                             ; preds = %1401
  %1447 = load ptr, ptr %16, align 8, !tbaa !5
  %1448 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1447, i32 0, i32 9
  %1449 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1448, i32 0, i32 0
  %1450 = load i64, ptr %1449, align 8, !tbaa !11
  %1451 = load ptr, ptr %16, align 8, !tbaa !5
  %1452 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1451, i32 0, i32 9
  %1453 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1452, i32 0, i32 1
  %1454 = load i64, ptr %1453, align 8, !tbaa !25
  %1455 = load ptr, ptr %16, align 8, !tbaa !5
  %1456 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1455, i32 0, i32 8
  %1457 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_implL28reviseddualsimplex_basisinitEllPNS_16dualsimplexbasisEPNS_8ae_stateE(i64 noundef %1450, i64 noundef %1454, ptr noundef %1456, ptr noundef %1457)
  %1458 = load ptr, ptr %16, align 8, !tbaa !5
  %1459 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1458, i32 0, i32 8
  %1460 = load ptr, ptr %16, align 8, !tbaa !5
  %1461 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1460, i32 0, i32 7
  %1462 = load ptr, ptr %29, align 8, !tbaa !5
  %1463 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_implL32reviseddualsimplex_basisfreshtrfEPNS_16dualsimplexbasisEPNS_12sparsematrixEPNS_19dualsimplexsettingsEPNS_8ae_stateE(ptr noundef %1459, ptr noundef %1461, ptr noundef %1462, ptr noundef %1463)
  br label %1464

1464:                                             ; preds = %1446, %1397
  %1465 = load ptr, ptr %16, align 8, !tbaa !5
  %1466 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1465, i32 0, i32 13
  %1467 = load ptr, ptr %16, align 8, !tbaa !5
  %1468 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1467, i32 0, i32 9
  %1469 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1468, i32 0, i32 1
  %1470 = load i64, ptr %1469, align 8, !tbaa !25
  %1471 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %1466, i64 noundef %1470, ptr noundef %1471)
  %1472 = load ptr, ptr %16, align 8, !tbaa !5
  %1473 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1472, i32 0, i32 14
  %1474 = load ptr, ptr %16, align 8, !tbaa !5
  %1475 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1474, i32 0, i32 9
  %1476 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1475, i32 0, i32 1
  %1477 = load i64, ptr %1476, align 8, !tbaa !25
  %1478 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %1473, i64 noundef %1477, ptr noundef %1478)
  %1479 = load ptr, ptr %16, align 8, !tbaa !5
  %1480 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1479, i32 0, i32 15
  %1481 = load ptr, ptr %16, align 8, !tbaa !5
  %1482 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1481, i32 0, i32 9
  %1483 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1482, i32 0, i32 0
  %1484 = load i64, ptr %1483, align 8, !tbaa !11
  %1485 = load ptr, ptr %16, align 8, !tbaa !5
  %1486 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %1485, i32 0, i32 9
  %1487 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %1486, i32 0, i32 1
  %1488 = load i64, ptr %1487, align 8, !tbaa !25
  %1489 = add nsw i64 %1484, %1488
  %1490 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN11alglib_impl13ivectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %1480, i64 noundef %1489, ptr noundef %1490)
  store i32 0, ptr %43, align 4
  br label %1491

1491:                                             ; preds = %1464, %572
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #4
  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 8, 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
  %1492 = load i32, ptr %43, align 4
  switch i32 %1492, label %1494 [
    i32 0, label %1493
    i32 1, label %1493
  ]

1493:                                             ; preds = %1491, %1491
  ret void

1494:                                             ; preds = %1491
  unreachable
}

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN11alglib_implL37reviseddualsimplex_basistryimportfromEPNS_16dualsimplexbasisES1_PNS_12sparsematrixEPNS_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_16dualsimplexbasisElPNS_12sparsematrixEPNS_19dualsimplexsettingsEPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN11alglib_implL32reviseddualsimplex_basisfreshtrfEPNS_16dualsimplexbasisEPNS_12sparsematrixEPNS_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 7280}
!12 = !{!"_ZTSN11alglib_impl16dualsimplexstateE", !13, i64 0, !13, i64 64, !13, i64 128, !13, i64 192, !10, i64 256, !10, i64 264, !16, i64 272, !16, i64 640, !17, i64 1008, !24, i64 7280, !24, i64 8072, !24, i64 8864, !13, i64 9656, !13, i64 9720, !13, i64 9784, !13, i64 9848, !19, i64 9912, !19, i64 9920, !19, i64 9928, !10, i64 9936, !10, i64 9944, !10, i64 9952, !10, i64 9960, !10, i64 9968, !13, i64 9976, !10, i64 10040, !13, i64 10048, !13, i64 10112, !13, i64 10176, !13, i64 10240, !13, i64 10304, !13, i64 10368, !13, i64 10432, !13, i64 10496, !13, i64 10560, !13, i64 10624, !13, i64 10688, !13, i64 10752, !13, i64 10816, !13, i64 10880}
!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, !13, i64 1880, !13, i64 1944, !13, i64 2008, !13, i64 2072, !13, i64 2136, !18, i64 2200, !13, i64 2280, !13, i64 2344, !16, i64 2408, !16, i64 2776, !20, i64 3144, !13, i64 5712, !13, i64 5776, !13, i64 5840, !16, i64 5904}
!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}
!25 = !{!12, !10, i64 7288}
!26 = !{!13, !10, i64 0}
!27 = !{!16, !10, i64 328}
!28 = !{!16, !10, i64 336}
!29 = !{!12, !10, i64 256}
!30 = !{!12, !10, i64 264}
!31 = !{!7, !7, i64 0}
!32 = !{!19, !19, i64 0}
!33 = distinct !{!33, !34}
!34 = !{!"llvm.loop.mustprogress"}
!35 = distinct !{!35, !34}
!36 = distinct !{!36, !34}
!37 = !{!14, !14, i64 0}
!38 = distinct !{!38, !34}
!39 = distinct !{!39, !34}
!40 = distinct !{!40, !34}
!41 = distinct !{!41, !34}
!42 = distinct !{!42, !34}
!43 = distinct !{!43, !34}
!44 = !{!12, !10, i64 640}
!45 = !{!12, !10, i64 704}
!46 = !{!12, !10, i64 768}
!47 = !{!12, !10, i64 832}
!48 = !{!12, !10, i64 896}
!49 = !{!12, !10, i64 992}
!50 = distinct !{!50, !34}
!51 = !{!12, !10, i64 968}
!52 = !{i8 0, i8 2}
!53 = !{}
!54 = distinct !{!54, !34}
!55 = !{!17, !10, i64 0}
!56 = !{!17, !10, i64 8}
!57 = distinct !{!57, !34}
!58 = distinct !{!58, !34}


; 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.341 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.342 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.343 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.344 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.345 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.346 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.347 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.348 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.349 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.350 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.351 = external hidden unnamed_addr constant [26 x i8], align 1
@_ZN11alglib_implL28reviseddualsimplex_ssinvalidE = external hidden local_unnamed_addr global i64, align 8
@.str.352 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.353 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.354 = 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.355 = external hidden unnamed_addr constant [38 x i8], align 1
@_ZN11alglib_implL25reviseddualsimplex_ccfreeE = external hidden local_unnamed_addr global i64, align 8
@.str.356 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.357 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.358 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.359 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.360 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.361 = 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

declare void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 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_impl8ae_fp_eqEdd(double noundef, double 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_impl14isfinitevectorEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 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_impl10ae_fp_lessEdd(double noundef, double 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_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

; 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_16dualsimplexstateEPNS_9ae_vectorES3_S3_S3_PNS_9ae_matrixEPNS_12sparsematrixElS3_S3_lPNS_16dualsimplexbasisElPNS_19dualsimplexsettingsEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3, ptr noundef %4, ptr nocapture noundef readnone %5, ptr noundef %6, i64 noundef %7, ptr nocapture noundef readonly %8, ptr nocapture noundef readonly %9, i64 noundef %10, ptr noundef %11, i64 noundef %12, ptr noundef %13, ptr noundef %14) local_unnamed_addr #2 {
  %16 = getelementptr inbounds i8, ptr %0, i64 7280
  %17 = load i64, ptr %16, align 8, !tbaa !5
  %18 = getelementptr inbounds i8, ptr %0, i64 7288
  %19 = load i64, ptr %18, align 8, !tbaa !23
  %20 = load i64, ptr %2, align 8, !tbaa !24
  %21 = icmp sge i64 %20, %17
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %21, ptr noundef nonnull @.str.341, ptr noundef %14)
  %22 = load i64, ptr %3, align 8, !tbaa !24
  %23 = icmp sge i64 %22, %17
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %23, ptr noundef nonnull @.str.342, ptr noundef %14)
  %24 = load i64, ptr %4, align 8, !tbaa !24
  %25 = icmp sge i64 %24, %17
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %25, ptr noundef nonnull @.str.343, ptr noundef %14)
  %26 = tail call noundef zeroext i1 @_ZN11alglib_impl14isfinitevectorEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %17, ptr noundef %14)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %26, ptr noundef nonnull @.str.344, ptr noundef %14)
  %27 = load i64, ptr %1, align 8, !tbaa !24
  %28 = icmp sge i64 %27, %17
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %28, ptr noundef nonnull @.str.345, ptr noundef %14)
  %29 = tail call noundef zeroext i1 @_ZN11alglib_impl14isfinitevectorEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %1, i64 noundef %17, ptr noundef %14)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %29, ptr noundef nonnull @.str.346, ptr noundef %14)
  %30 = icmp eq i64 %7, 0
  %31 = icmp eq i64 %7, 1
  %32 = icmp ult i64 %7, 2
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %32, ptr noundef nonnull @.str.347, ptr noundef %14)
  %spec.select = icmp ult i64 %12, 3
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %spec.select, ptr noundef nonnull @.str.348, ptr noundef %14)
  %33 = icmp sgt i64 %10, -1
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %33, ptr noundef nonnull @.str.349, ptr noundef %14)
  %34 = icmp sgt i64 %10, 0
  %or.cond3 = and i1 %31, %34
  br i1 %or.cond3, label %35, label %42

35:                                               ; preds = %15
  %36 = getelementptr inbounds i8, ptr %6, i64 328
  %37 = load i64, ptr %36, align 8, !tbaa !25
  %38 = icmp eq i64 %37, %10
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %38, ptr noundef nonnull @.str.350, ptr noundef %14)
  %39 = getelementptr inbounds i8, ptr %6, i64 336
  %40 = load i64, ptr %39, align 8, !tbaa !26
  %41 = icmp eq i64 %40, %17
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %41, ptr noundef nonnull @.str.351, ptr noundef %14)
  br label %42

42:                                               ; preds = %35, %15
  %43 = load i64, ptr @_ZN11alglib_implL28reviseddualsimplex_ssinvalidE, align 8, !tbaa !27
  tail call void @_ZN11alglib_implL33reviseddualsimplex_downgradestateEPNS_21dualsimplexsubproblemElPNS_8ae_stateE(ptr noundef nonnull %16, i64 noundef %43, ptr noundef %14)
  %44 = getelementptr inbounds i8, ptr %0, i64 7360
  %45 = add nsw i64 %17, %10
  tail call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %44, i64 noundef %45, ptr noundef %14)
  %46 = getelementptr inbounds i8, ptr %0, i64 7424
  tail call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %46, i64 noundef %45, ptr noundef %14)
  %47 = getelementptr inbounds i8, ptr %0, i64 7488
  tail call void @_ZN11alglib_impl13ivectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %47, i64 noundef %45, ptr noundef %14)
  %48 = getelementptr inbounds i8, ptr %0, i64 7296
  tail call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %48, i64 noundef %45, ptr noundef %14)
  %49 = getelementptr inbounds i8, ptr %0, i64 7944
  tail call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %49, i64 noundef %45, ptr noundef %14)
  %50 = getelementptr inbounds i8, ptr %0, i64 7552
  tail call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %50, i64 noundef %45, ptr noundef %14)
  %51 = getelementptr inbounds i8, ptr %0, i64 7616
  tail call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %51, i64 noundef %45, ptr noundef %14)
  %52 = getelementptr inbounds i8, ptr %0, i64 7688
  tail call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %52, i64 noundef %10, ptr noundef %14)
  %53 = getelementptr inbounds i8, ptr %0, i64 7752
  tail call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %53, i64 noundef %10, ptr noundef %14)
  %54 = getelementptr inbounds i8, ptr %0, i64 7816
  tail call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %54, i64 noundef %10, ptr noundef %14)
  %55 = getelementptr inbounds i8, ptr %0, i64 7880
  tail call void @_ZN11alglib_impl13ivectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %55, i64 noundef %10, ptr noundef %14)
  %56 = getelementptr inbounds i8, ptr %0, i64 256
  store i64 %17, ptr %56, align 8, !tbaa !28
  %57 = getelementptr inbounds i8, ptr %0, i64 264
  store i64 %10, ptr %57, align 8, !tbaa !29
  %.not.not540 = icmp sgt i64 %17, 0
  br i1 %.not.not540, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %42
  %58 = getelementptr inbounds i8, ptr %4, i64 56
  %59 = getelementptr inbounds i8, ptr %0, i64 56
  %60 = getelementptr inbounds i8, ptr %2, i64 56
  %61 = getelementptr inbounds i8, ptr %0, i64 184
  %62 = getelementptr inbounds i8, ptr %3, i64 56
  %63 = getelementptr inbounds i8, ptr %0, i64 248
  br label %68

.preheader539:                                    ; preds = %68
  br i1 %.not.not540, label %.lr.ph544, label %._crit_edge

.lr.ph544:                                        ; preds = %.preheader539
  %64 = getelementptr inbounds i8, ptr %4, i64 56
  %65 = getelementptr inbounds i8, ptr %1, i64 56
  %66 = getelementptr inbounds i8, ptr %0, i64 7352
  %67 = getelementptr inbounds i8, ptr %0, i64 8000
  br label %91

68:                                               ; preds = %.lr.ph, %68
  %.0541 = phi i64 [ 0, %.lr.ph ], [ %84, %68 ]
  %69 = load ptr, ptr %58, align 8, !tbaa !30
  %70 = getelementptr inbounds double, ptr %69, i64 %.0541
  %71 = load double, ptr %70, align 8, !tbaa !31
  %72 = load ptr, ptr %59, align 8, !tbaa !30
  %73 = getelementptr inbounds double, ptr %72, i64 %.0541
  store double %71, ptr %73, align 8, !tbaa !31
  %74 = load ptr, ptr %60, align 8, !tbaa !30
  %75 = getelementptr inbounds double, ptr %74, i64 %.0541
  %76 = load double, ptr %75, align 8, !tbaa !31
  %77 = load ptr, ptr %61, align 8, !tbaa !30
  %78 = getelementptr inbounds double, ptr %77, i64 %.0541
  store double %76, ptr %78, align 8, !tbaa !31
  %79 = load ptr, ptr %62, align 8, !tbaa !30
  %80 = getelementptr inbounds double, ptr %79, i64 %.0541
  %81 = load double, ptr %80, align 8, !tbaa !31
  %82 = load ptr, ptr %63, align 8, !tbaa !30
  %83 = getelementptr inbounds double, ptr %82, i64 %.0541
  store double %81, ptr %83, align 8, !tbaa !31
  %84 = add nuw nsw i64 %.0541, 1
  %exitcond.not = icmp eq i64 %84, %17
  br i1 %exitcond.not, label %.preheader539, label %68, !llvm.loop !32

.preheader538:                                    ; preds = %91
  br i1 %.not.not540, label %.lr.ph548, label %._crit_edge

.lr.ph548:                                        ; preds = %.preheader538
  %85 = getelementptr inbounds i8, ptr %2, i64 56
  %86 = getelementptr inbounds i8, ptr %3, i64 56
  %87 = getelementptr inbounds i8, ptr %4, i64 56
  %88 = getelementptr inbounds i8, ptr %0, i64 7416
  %89 = getelementptr inbounds i8, ptr %0, i64 7480
  %90 = getelementptr inbounds i8, ptr %0, i64 7544
  br label %115

91:                                               ; preds = %.lr.ph544, %91
  %.1543 = phi i64 [ 0, %.lr.ph544 ], [ %114, %91 ]
  %92 = load ptr, ptr %64, align 8, !tbaa !30
  %93 = getelementptr inbounds double, ptr %92, i64 %.1543
  %94 = load double, ptr %93, align 8, !tbaa !31
  %95 = fcmp ogt double %94, 0.000000e+00
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %95, ptr noundef nonnull @.str.352, ptr noundef %14)
  %96 = load ptr, ptr %65, align 8, !tbaa !30
  %97 = getelementptr inbounds double, ptr %96, i64 %.1543
  %98 = load double, ptr %97, align 8, !tbaa !31
  %99 = load ptr, ptr %64, align 8, !tbaa !30
  %100 = getelementptr inbounds double, ptr %99, i64 %.1543
  %101 = load double, ptr %100, align 8, !tbaa !31
  %102 = fmul double %98, %101
  %103 = load ptr, ptr %66, align 8, !tbaa !30
  %104 = getelementptr inbounds double, ptr %103, i64 %.1543
  store double %102, ptr %104, align 8, !tbaa !31
  %105 = load ptr, ptr %65, align 8, !tbaa !30
  %106 = getelementptr inbounds double, ptr %105, i64 %.1543
  %107 = load double, ptr %106, align 8, !tbaa !31
  %108 = load ptr, ptr %64, align 8, !tbaa !30
  %109 = getelementptr inbounds double, ptr %108, i64 %.1543
  %110 = load double, ptr %109, align 8, !tbaa !31
  %111 = fmul double %107, %110
  %112 = load ptr, ptr %67, align 8, !tbaa !30
  %113 = getelementptr inbounds double, ptr %112, i64 %.1543
  store double %111, ptr %113, align 8, !tbaa !31
  %114 = add nuw nsw i64 %.1543, 1
  %exitcond592.not = icmp eq i64 %114, %17
  br i1 %exitcond592.not, label %.preheader538, label %91, !llvm.loop !34

115:                                              ; preds = %.lr.ph548, %232
  %.2546 = phi i64 [ 0, %.lr.ph548 ], [ %233, %232 ]
  %116 = load ptr, ptr %85, align 8, !tbaa !30
  %117 = getelementptr inbounds double, ptr %116, i64 %.2546
  %118 = load double, ptr %117, align 8, !tbaa !31
  %119 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %118, ptr noundef %14)
  br i1 %119, label %125, label %120

120:                                              ; preds = %115
  %121 = load ptr, ptr %85, align 8, !tbaa !30
  %122 = getelementptr inbounds double, ptr %121, i64 %.2546
  %123 = load double, ptr %122, align 8, !tbaa !31
  %124 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isneginfEdPNS_8ae_stateE(double noundef %123, ptr noundef %14)
  br label %125

125:                                              ; preds = %120, %115
  %126 = phi i1 [ true, %115 ], [ %124, %120 ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %126, ptr noundef nonnull @.str.353, ptr noundef %14)
  %127 = load ptr, ptr %86, align 8, !tbaa !30
  %128 = getelementptr inbounds double, ptr %127, i64 %.2546
  %129 = load double, ptr %128, align 8, !tbaa !31
  %130 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %129, ptr noundef %14)
  br i1 %130, label %136, label %131

131:                                              ; preds = %125
  %132 = load ptr, ptr %86, align 8, !tbaa !30
  %133 = getelementptr inbounds double, ptr %132, i64 %.2546
  %134 = load double, ptr %133, align 8, !tbaa !31
  %135 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isposinfEdPNS_8ae_stateE(double noundef %134, ptr noundef %14)
  br label %136

136:                                              ; preds = %131, %125
  %137 = phi i1 [ true, %125 ], [ %135, %131 ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %137, ptr noundef nonnull @.str.354, ptr noundef %14)
  %138 = load ptr, ptr %85, align 8, !tbaa !30
  %139 = getelementptr inbounds double, ptr %138, i64 %.2546
  %140 = load double, ptr %139, align 8, !tbaa !31
  %141 = load ptr, ptr %87, align 8, !tbaa !30
  %142 = getelementptr inbounds double, ptr %141, i64 %.2546
  %143 = load double, ptr %142, align 8, !tbaa !31
  %144 = fdiv double %140, %143
  %145 = load ptr, ptr %88, align 8, !tbaa !30
  %146 = getelementptr inbounds double, ptr %145, i64 %.2546
  store double %144, ptr %146, align 8, !tbaa !31
  %147 = load ptr, ptr %86, align 8, !tbaa !30
  %148 = getelementptr inbounds double, ptr %147, i64 %.2546
  %149 = load double, ptr %148, align 8, !tbaa !31
  %150 = load ptr, ptr %87, align 8, !tbaa !30
  %151 = getelementptr inbounds double, ptr %150, i64 %.2546
  %152 = load double, ptr %151, align 8, !tbaa !31
  %153 = fdiv double %149, %152
  %154 = load ptr, ptr %89, align 8, !tbaa !30
  %155 = getelementptr inbounds double, ptr %154, i64 %.2546
  store double %153, ptr %155, align 8, !tbaa !31
  %156 = load ptr, ptr %85, align 8, !tbaa !30
  %157 = getelementptr inbounds double, ptr %156, i64 %.2546
  %158 = load double, ptr %157, align 8, !tbaa !31
  %159 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %158, ptr noundef %14)
  br i1 %159, label %160, label %197

160:                                              ; preds = %136
  %161 = load ptr, ptr %86, align 8, !tbaa !30
  %162 = getelementptr inbounds double, ptr %161, i64 %.2546
  %163 = load double, ptr %162, align 8, !tbaa !31
  %164 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %163, ptr noundef %14)
  br i1 %164, label %165, label %197

165:                                              ; preds = %160
  %166 = load ptr, ptr %85, align 8, !tbaa !30
  %167 = getelementptr inbounds double, ptr %166, i64 %.2546
  %168 = load double, ptr %167, align 8, !tbaa !31
  %169 = load ptr, ptr %86, align 8, !tbaa !30
  %170 = getelementptr inbounds double, ptr %169, i64 %.2546
  %171 = load double, ptr %170, align 8, !tbaa !31
  %172 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %168, double noundef %171)
  br i1 %172, label %173, label %177

173:                                              ; preds = %165
  %174 = load i64, ptr @_ZN11alglib_implL31reviseddualsimplex_ccinfeasibleE, align 8, !tbaa !27
  %175 = load ptr, ptr %90, align 8, !tbaa !30
  %176 = getelementptr inbounds i64, ptr %175, i64 %.2546
  store i64 %174, ptr %176, align 8, !tbaa !27
  br label %177

177:                                              ; preds = %173, %165
  %178 = load ptr, ptr %85, align 8, !tbaa !30
  %179 = getelementptr inbounds double, ptr %178, i64 %.2546
  %180 = load double, ptr %179, align 8, !tbaa !31
  %181 = load ptr, ptr %86, align 8, !tbaa !30
  %182 = getelementptr inbounds double, ptr %181, i64 %.2546
  %183 = load double, ptr %182, align 8, !tbaa !31
  %184 = tail call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %180, double noundef %183)
  br i1 %184, label %185, label %189

185:                                              ; preds = %177
  %186 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_ccrangeE, align 8, !tbaa !27
  %187 = load ptr, ptr %90, align 8, !tbaa !30
  %188 = getelementptr inbounds i64, ptr %187, i64 %.2546
  store i64 %186, ptr %188, align 8, !tbaa !27
  br label %189

189:                                              ; preds = %185, %177
  %190 = load ptr, ptr %85, align 8, !tbaa !30
  %191 = getelementptr inbounds double, ptr %190, i64 %.2546
  %192 = load double, ptr %191, align 8, !tbaa !31
  %193 = load ptr, ptr %86, align 8, !tbaa !30
  %194 = getelementptr inbounds double, ptr %193, i64 %.2546
  %195 = load double, ptr %194, align 8, !tbaa !31
  %196 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %192, double noundef %195)
  br i1 %196, label %.sink.split, label %232

197:                                              ; preds = %160, %136
  %198 = load ptr, ptr %85, align 8, !tbaa !30
  %199 = getelementptr inbounds double, ptr %198, i64 %.2546
  %200 = load double, ptr %199, align 8, !tbaa !31
  %201 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %200, ptr noundef %14)
  br i1 %201, label %202, label %207

202:                                              ; preds = %197
  %203 = load ptr, ptr %86, align 8, !tbaa !30
  %204 = getelementptr inbounds double, ptr %203, i64 %.2546
  %205 = load double, ptr %204, align 8, !tbaa !31
  %206 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %205, ptr noundef %14)
  br i1 %206, label %207, label %.sink.split

207:                                              ; preds = %202, %197
  %208 = load ptr, ptr %85, align 8, !tbaa !30
  %209 = getelementptr inbounds double, ptr %208, i64 %.2546
  %210 = load double, ptr %209, align 8, !tbaa !31
  %211 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %210, ptr noundef %14)
  br i1 %211, label %217, label %212

212:                                              ; preds = %207
  %213 = load ptr, ptr %86, align 8, !tbaa !30
  %214 = getelementptr inbounds double, ptr %213, i64 %.2546
  %215 = load double, ptr %214, align 8, !tbaa !31
  %216 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %215, ptr noundef %14)
  br i1 %216, label %.sink.split, label %217

217:                                              ; preds = %212, %207
  %218 = load ptr, ptr %85, align 8, !tbaa !30
  %219 = getelementptr inbounds double, ptr %218, i64 %.2546
  %220 = load double, ptr %219, align 8, !tbaa !31
  %221 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isneginfEdPNS_8ae_stateE(double noundef %220, ptr noundef %14)
  br i1 %221, label %222, label %227

222:                                              ; preds = %217
  %223 = load ptr, ptr %86, align 8, !tbaa !30
  %224 = getelementptr inbounds double, ptr %223, i64 %.2546
  %225 = load double, ptr %224, align 8, !tbaa !31
  %226 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isposinfEdPNS_8ae_stateE(double noundef %225, ptr noundef %14)
  br label %227

227:                                              ; preds = %222, %217
  %228 = phi i1 [ false, %217 ], [ %226, %222 ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %228, ptr noundef nonnull @.str.355, ptr noundef %14)
  br label %.sink.split

.sink.split:                                      ; preds = %212, %202, %189, %227
  %_ZN11alglib_implL26reviseddualsimplex_ccfixedE.sink = phi ptr [ @_ZN11alglib_implL25reviseddualsimplex_ccfreeE, %227 ], [ @_ZN11alglib_implL26reviseddualsimplex_ccfixedE, %189 ], [ @_ZN11alglib_implL26reviseddualsimplex_cclowerE, %202 ], [ @_ZN11alglib_implL26reviseddualsimplex_ccupperE, %212 ]
  %229 = load i64, ptr %_ZN11alglib_implL26reviseddualsimplex_ccfixedE.sink, align 8, !tbaa !27
  %230 = load ptr, ptr %90, align 8, !tbaa !30
  %231 = getelementptr inbounds i64, ptr %230, i64 %.2546
  store i64 %229, ptr %231, align 8, !tbaa !27
  br label %232

232:                                              ; preds = %.sink.split, %189
  %233 = add nuw nsw i64 %.2546, 1
  %exitcond593.not = icmp eq i64 %233, %17
  br i1 %exitcond593.not, label %._crit_edge, label %115, !llvm.loop !35

._crit_edge:                                      ; preds = %232, %42, %.preheader539, %.preheader538
  %234 = icmp eq i64 %10, 0
  br i1 %234, label %235, label %238

235:                                              ; preds = %._crit_edge
  store i64 0, ptr %18, align 8, !tbaa !23
  %236 = load i64, ptr %16, align 8, !tbaa !5
  %237 = getelementptr inbounds i8, ptr %0, i64 1008
  tail call void @_ZN11alglib_implL28reviseddualsimplex_basisinitEllPNS_16dualsimplexbasisEPNS_8ae_stateE(i64 noundef %236, i64 noundef 0, ptr noundef nonnull %237, ptr noundef %14)
  br label %596

238:                                              ; preds = %._crit_edge
  store i64 %10, ptr %18, align 8, !tbaa !23
  br i1 %30, label %.thread, label %239

.thread:                                          ; preds = %238
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext false, ptr noundef nonnull @.str.356, ptr noundef %14)
  br label %410

239:                                              ; preds = %238
  br i1 %31, label %240, label %410

240:                                              ; preds = %239
  %241 = getelementptr inbounds i8, ptr %0, i64 640
  %242 = getelementptr inbounds i8, ptr %6, i64 184
  %243 = load ptr, ptr %242, align 8, !tbaa !30
  %244 = getelementptr inbounds i64, ptr %243, i64 %10
  %245 = load i64, ptr %244, align 8, !tbaa !27
  %246 = add nsw i64 %245, %10
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %241, i64 noundef %246, ptr noundef %14)
  %247 = getelementptr inbounds i8, ptr %0, i64 704
  %248 = load ptr, ptr %242, align 8, !tbaa !30
  %249 = getelementptr inbounds i64, ptr %248, i64 %10
  %250 = load i64, ptr %249, align 8, !tbaa !27
  %251 = add nsw i64 %250, %10
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %247, i64 noundef %251, ptr noundef %14)
  %252 = getelementptr inbounds i8, ptr %0, i64 768
  %253 = add nsw i64 %45, 1
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %252, i64 noundef %253, ptr noundef %14)
  %254 = getelementptr inbounds i8, ptr %0, i64 832
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %254, i64 noundef %45, ptr noundef %14)
  %255 = getelementptr inbounds i8, ptr %0, i64 896
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %255, i64 noundef %45, ptr noundef %14)
  tail call void @_ZN11alglib_impl25sparsecopytransposecrsbufEPNS_12sparsematrixES1_PNS_8ae_stateE(ptr noundef %6, ptr noundef nonnull %241, ptr noundef %14)
  %256 = getelementptr inbounds i8, ptr %0, i64 64
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %256, i64 noundef %10, ptr noundef %14)
  br i1 %34, label %.lr.ph552, label %.preheader537

.lr.ph552:                                        ; preds = %240
  %257 = getelementptr inbounds i8, ptr %0, i64 120
  %258 = add nsw i64 %10, -1
  %xtraiter = and i64 %10, 3
  %259 = icmp ult i64 %258, 3
  br i1 %259, label %.preheader537.loopexit.unr-lcssa, label %.lr.ph552.new

.lr.ph552.new:                                    ; preds = %.lr.ph552
  %unroll_iter = and i64 %10, 9223372036854775804
  br label %268

.preheader537.loopexit.unr-lcssa:                 ; preds = %268, %.lr.ph552
  %.3550.unr = phi i64 [ 0, %.lr.ph552 ], [ %280, %268 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.preheader537, label %.epil.preheader

.epil.preheader:                                  ; preds = %.preheader537.loopexit.unr-lcssa, %.epil.preheader
  %.3550.epil = phi i64 [ %262, %.epil.preheader ], [ %.3550.unr, %.preheader537.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader ], [ 0, %.preheader537.loopexit.unr-lcssa ]
  %260 = load ptr, ptr %257, align 8, !tbaa !30
  %261 = getelementptr inbounds double, ptr %260, i64 %.3550.epil
  store double 0.000000e+00, ptr %261, align 8, !tbaa !31
  %262 = add nuw nsw i64 %.3550.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %.preheader537, label %.epil.preheader, !llvm.loop !36

.preheader537:                                    ; preds = %.preheader537.loopexit.unr-lcssa, %.epil.preheader, %240
  br i1 %.not.not540, label %.lr.ph559, label %._crit_edge560

.lr.ph559:                                        ; preds = %.preheader537
  %263 = getelementptr inbounds i8, ptr %0, i64 824
  %264 = getelementptr inbounds i8, ptr %4, i64 56
  %265 = getelementptr inbounds i8, ptr %0, i64 696
  %266 = getelementptr inbounds i8, ptr %0, i64 760
  %267 = getelementptr inbounds i8, ptr %0, i64 120
  br label %281

268:                                              ; preds = %268, %.lr.ph552.new
  %.3550 = phi i64 [ 0, %.lr.ph552.new ], [ %280, %268 ]
  %niter = phi i64 [ 0, %.lr.ph552.new ], [ %niter.next.3, %268 ]
  %269 = load ptr, ptr %257, align 8, !tbaa !30
  %270 = getelementptr inbounds double, ptr %269, i64 %.3550
  store double 0.000000e+00, ptr %270, align 8, !tbaa !31
  %271 = or disjoint i64 %.3550, 1
  %272 = load ptr, ptr %257, align 8, !tbaa !30
  %273 = getelementptr inbounds double, ptr %272, i64 %271
  store double 0.000000e+00, ptr %273, align 8, !tbaa !31
  %274 = or disjoint i64 %.3550, 2
  %275 = load ptr, ptr %257, align 8, !tbaa !30
  %276 = getelementptr inbounds double, ptr %275, i64 %274
  store double 0.000000e+00, ptr %276, align 8, !tbaa !31
  %277 = or disjoint i64 %.3550, 3
  %278 = load ptr, ptr %257, align 8, !tbaa !30
  %279 = getelementptr inbounds double, ptr %278, i64 %277
  store double 0.000000e+00, ptr %279, align 8, !tbaa !31
  %280 = add nuw nsw i64 %.3550, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %.preheader537.loopexit.unr-lcssa, label %268, !llvm.loop !38

.loopexit536:                                     ; preds = %.lr.ph556, %281
  %exitcond596.not = icmp eq i64 %285, %17
  br i1 %exitcond596.not, label %._crit_edge560, label %281, !llvm.loop !39

281:                                              ; preds = %.lr.ph559, %.loopexit536
  %.4558 = phi i64 [ 0, %.lr.ph559 ], [ %285, %.loopexit536 ]
  %282 = load ptr, ptr %263, align 8, !tbaa !30
  %283 = getelementptr inbounds i64, ptr %282, i64 %.4558
  %284 = load i64, ptr %283, align 8, !tbaa !27
  %285 = add nuw nsw i64 %.4558, 1
  %286 = getelementptr inbounds i64, ptr %282, i64 %285
  %287 = load i64, ptr %286, align 8, !tbaa !27
  %288 = load ptr, ptr %264, align 8, !tbaa !30
  %289 = getelementptr inbounds double, ptr %288, i64 %.4558
  %290 = load double, ptr %289, align 8, !tbaa !31
  %.not531.not553 = icmp slt i64 %284, %287
  br i1 %.not531.not553, label %.lr.ph556, label %.loopexit536

.lr.ph556:                                        ; preds = %281, %.lr.ph556
  %.0508554 = phi i64 [ %302, %.lr.ph556 ], [ %284, %281 ]
  %291 = load ptr, ptr %265, align 8, !tbaa !30
  %292 = getelementptr inbounds double, ptr %291, i64 %.0508554
  %293 = load double, ptr %292, align 8, !tbaa !31
  %294 = fmul double %290, %293
  %295 = load ptr, ptr %266, align 8, !tbaa !30
  %296 = getelementptr inbounds i64, ptr %295, i64 %.0508554
  %297 = load i64, ptr %296, align 8, !tbaa !27
  store double %294, ptr %292, align 8, !tbaa !31
  %298 = load ptr, ptr %267, align 8, !tbaa !30
  %299 = getelementptr inbounds double, ptr %298, i64 %297
  %300 = load double, ptr %299, align 8, !tbaa !31
  %301 = tail call double @llvm.fmuladd.f64(double %294, double %294, double %300)
  store double %301, ptr %299, align 8, !tbaa !31
  %302 = add nsw i64 %.0508554, 1
  %exitcond595.not = icmp eq i64 %302, %287
  br i1 %exitcond595.not, label %.loopexit536, label %.lr.ph556, !llvm.loop !40

._crit_edge560:                                   ; preds = %.loopexit536, %.preheader537
  %303 = getelementptr inbounds i8, ptr %0, i64 10304
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %303, i64 noundef %10, ptr noundef %14)
  br i1 %34, label %.lr.ph564, label %.preheader535

.lr.ph564:                                        ; preds = %._crit_edge560
  %304 = getelementptr inbounds i8, ptr %0, i64 120
  %305 = getelementptr inbounds i8, ptr %0, i64 10360
  br label %310

.preheader535:                                    ; preds = %310, %._crit_edge560
  br i1 %.not.not540, label %.lr.ph571, label %._crit_edge572

.lr.ph571:                                        ; preds = %.preheader535
  %306 = getelementptr inbounds i8, ptr %0, i64 824
  %307 = getelementptr inbounds i8, ptr %0, i64 696
  %308 = getelementptr inbounds i8, ptr %0, i64 10360
  %309 = getelementptr inbounds i8, ptr %0, i64 760
  br label %325

310:                                              ; preds = %.lr.ph564, %310
  %.5562 = phi i64 [ 0, %.lr.ph564 ], [ %324, %310 ]
  %311 = load ptr, ptr %304, align 8, !tbaa !30
  %312 = getelementptr inbounds double, ptr %311, i64 %.5562
  %313 = load double, ptr %312, align 8, !tbaa !31
  %314 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %313, ptr noundef %14)
  %315 = tail call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %314, double noundef 1.000000e+00, ptr noundef %14)
  %316 = load ptr, ptr %304, align 8, !tbaa !30
  %317 = getelementptr inbounds double, ptr %316, i64 %.5562
  store double %315, ptr %317, align 8, !tbaa !31
  %318 = load ptr, ptr %304, align 8, !tbaa !30
  %319 = getelementptr inbounds double, ptr %318, i64 %.5562
  %320 = load double, ptr %319, align 8, !tbaa !31
  %321 = fdiv double 1.000000e+00, %320
  %322 = load ptr, ptr %305, align 8, !tbaa !30
  %323 = getelementptr inbounds double, ptr %322, i64 %.5562
  store double %321, ptr %323, align 8, !tbaa !31
  %324 = add nuw nsw i64 %.5562, 1
  %exitcond597.not = icmp eq i64 %324, %10
  br i1 %exitcond597.not, label %.preheader535, label %310, !llvm.loop !41

.loopexit:                                        ; preds = %.lr.ph568.prol.loopexit, %.lr.ph568, %325
  %exitcond599.not = icmp eq i64 %329, %17
  br i1 %exitcond599.not, label %._crit_edge572, label %325, !llvm.loop !42

325:                                              ; preds = %.lr.ph571, %.loopexit
  %.6570 = phi i64 [ 0, %.lr.ph571 ], [ %329, %.loopexit ]
  %326 = load ptr, ptr %306, align 8, !tbaa !30
  %327 = getelementptr inbounds i64, ptr %326, i64 %.6570
  %328 = load i64, ptr %327, align 8, !tbaa !27
  %329 = add nuw nsw i64 %.6570, 1
  %330 = getelementptr inbounds i64, ptr %326, i64 %329
  %331 = load i64, ptr %330, align 8, !tbaa !27
  %.not530.not565 = icmp slt i64 %328, %331
  br i1 %.not530.not565, label %.lr.ph568.preheader, label %.loopexit

.lr.ph568.preheader:                              ; preds = %325
  %332 = sub i64 %331, %328
  %.neg = add i64 %328, 1
  %xtraiter610 = and i64 %332, 1
  %lcmp.mod611.not = icmp eq i64 %xtraiter610, 0
  br i1 %lcmp.mod611.not, label %.lr.ph568.prol.loopexit, label %.lr.ph568.prol

.lr.ph568.prol:                                   ; preds = %.lr.ph568.preheader
  %333 = load ptr, ptr %307, align 8, !tbaa !30
  %334 = getelementptr inbounds double, ptr %333, i64 %328
  %335 = load double, ptr %334, align 8, !tbaa !31
  %336 = load ptr, ptr %308, align 8, !tbaa !30
  %337 = load ptr, ptr %309, align 8, !tbaa !30
  %338 = getelementptr inbounds i64, ptr %337, i64 %328
  %339 = load i64, ptr %338, align 8, !tbaa !27
  %340 = getelementptr inbounds double, ptr %336, i64 %339
  %341 = load double, ptr %340, align 8, !tbaa !31
  %342 = fmul double %335, %341
  store double %342, ptr %334, align 8, !tbaa !31
  %343 = add nsw i64 %328, 1
  br label %.lr.ph568.prol.loopexit

.lr.ph568.prol.loopexit:                          ; preds = %.lr.ph568.prol, %.lr.ph568.preheader
  %.1509566.unr = phi i64 [ %328, %.lr.ph568.preheader ], [ %343, %.lr.ph568.prol ]
  %344 = icmp eq i64 %331, %.neg
  br i1 %344, label %.loopexit, label %.lr.ph568

.lr.ph568:                                        ; preds = %.lr.ph568.prol.loopexit, %.lr.ph568
  %.1509566 = phi i64 [ %366, %.lr.ph568 ], [ %.1509566.unr, %.lr.ph568.prol.loopexit ]
  %345 = load ptr, ptr %307, align 8, !tbaa !30
  %346 = getelementptr inbounds double, ptr %345, i64 %.1509566
  %347 = load double, ptr %346, align 8, !tbaa !31
  %348 = load ptr, ptr %308, align 8, !tbaa !30
  %349 = load ptr, ptr %309, align 8, !tbaa !30
  %350 = getelementptr inbounds i64, ptr %349, i64 %.1509566
  %351 = load i64, ptr %350, align 8, !tbaa !27
  %352 = getelementptr inbounds double, ptr %348, i64 %351
  %353 = load double, ptr %352, align 8, !tbaa !31
  %354 = fmul double %347, %353
  store double %354, ptr %346, align 8, !tbaa !31
  %355 = add nsw i64 %.1509566, 1
  %356 = load ptr, ptr %307, align 8, !tbaa !30
  %357 = getelementptr inbounds double, ptr %356, i64 %355
  %358 = load double, ptr %357, align 8, !tbaa !31
  %359 = load ptr, ptr %308, align 8, !tbaa !30
  %360 = load ptr, ptr %309, align 8, !tbaa !30
  %361 = getelementptr inbounds i64, ptr %360, i64 %355
  %362 = load i64, ptr %361, align 8, !tbaa !27
  %363 = getelementptr inbounds double, ptr %359, i64 %362
  %364 = load double, ptr %363, align 8, !tbaa !31
  %365 = fmul double %358, %364
  store double %365, ptr %357, align 8, !tbaa !31
  %366 = add nsw i64 %.1509566, 2
  %exitcond598.not.1 = icmp eq i64 %366, %331
  br i1 %exitcond598.not.1, label %.loopexit, label %.lr.ph568, !llvm.loop !43

._crit_edge572:                                   ; preds = %.loopexit, %.preheader535
  %367 = load i64, ptr %241, align 8, !tbaa !44
  %368 = load ptr, ptr %242, align 8, !tbaa !30
  %369 = getelementptr inbounds i64, ptr %368, i64 %10
  %370 = load i64, ptr %369, align 8, !tbaa !27
  %371 = add nsw i64 %370, %10
  %372 = icmp sge i64 %367, %371
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %372, ptr noundef nonnull @.str.355, ptr noundef %14)
  %373 = load i64, ptr %247, align 8, !tbaa !45
  %374 = load ptr, ptr %242, align 8, !tbaa !30
  %375 = getelementptr inbounds i64, ptr %374, i64 %10
  %376 = load i64, ptr %375, align 8, !tbaa !27
  %377 = add nsw i64 %376, %10
  %378 = icmp sge i64 %373, %377
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %378, ptr noundef nonnull @.str.355, ptr noundef %14)
  %379 = load i64, ptr %252, align 8, !tbaa !46
  %380 = icmp sgt i64 %379, %45
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %380, ptr noundef nonnull @.str.355, ptr noundef %14)
  %381 = load i64, ptr %254, align 8, !tbaa !47
  %382 = icmp sge i64 %381, %45
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %382, ptr noundef nonnull @.str.355, ptr noundef %14)
  %383 = load i64, ptr %255, align 8, !tbaa !48
  %384 = icmp sge i64 %383, %45
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %384, ptr noundef nonnull @.str.355, ptr noundef %14)
  %385 = getelementptr inbounds i8, ptr %0, i64 824
  %386 = load ptr, ptr %385, align 8, !tbaa !30
  %387 = getelementptr inbounds i64, ptr %386, i64 %17
  %388 = load i64, ptr %387, align 8, !tbaa !27
  br i1 %34, label %.lr.ph576, label %._crit_edge577

.lr.ph576:                                        ; preds = %._crit_edge572
  %389 = getelementptr inbounds i8, ptr %0, i64 696
  %390 = getelementptr inbounds i8, ptr %0, i64 760
  %391 = getelementptr inbounds i8, ptr %0, i64 992
  br label %392

392:                                              ; preds = %.lr.ph576, %392
  %.7574 = phi i64 [ 0, %.lr.ph576 ], [ %406, %392 ]
  %393 = load ptr, ptr %389, align 8, !tbaa !30
  %394 = add nsw i64 %.7574, %388
  %395 = getelementptr inbounds double, ptr %393, i64 %394
  store double -1.000000e+00, ptr %395, align 8, !tbaa !31
  %396 = load ptr, ptr %390, align 8, !tbaa !30
  %397 = getelementptr inbounds i64, ptr %396, i64 %394
  store i64 %.7574, ptr %397, align 8, !tbaa !27
  %398 = load ptr, ptr %385, align 8, !tbaa !30
  %399 = getelementptr i64, ptr %398, i64 %17
  %400 = getelementptr i64, ptr %399, i64 %.7574
  %401 = load i64, ptr %400, align 8, !tbaa !27
  %402 = add nsw i64 %401, 1
  %403 = getelementptr i8, ptr %400, i64 8
  store i64 %402, ptr %403, align 8, !tbaa !27
  %404 = load i64, ptr %391, align 8, !tbaa !49
  %405 = add nsw i64 %404, 1
  store i64 %405, ptr %391, align 8, !tbaa !49
  %406 = add nuw nsw i64 %.7574, 1
  %exitcond600.not = icmp eq i64 %406, %10
  br i1 %exitcond600.not, label %._crit_edge577, label %392, !llvm.loop !50

._crit_edge577:                                   ; preds = %392, %._crit_edge572
  %407 = getelementptr inbounds i8, ptr %0, i64 968
  %408 = load i64, ptr %407, align 8, !tbaa !51
  %409 = add nsw i64 %408, %10
  store i64 %409, ptr %407, align 8, !tbaa !51
  tail call void @_ZN11alglib_impl15sparseinitduidxEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef nonnull %241, ptr noundef %14)
  br label %410

410:                                              ; preds = %.thread, %._crit_edge577, %239
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %31, ptr noundef nonnull @.str.357, ptr noundef %14)
  br i1 %34, label %.lr.ph582, label %._crit_edge583

.lr.ph582:                                        ; preds = %410
  %411 = getelementptr inbounds i8, ptr %8, i64 56
  %412 = getelementptr inbounds i8, ptr %9, i64 56
  %413 = getelementptr inbounds i8, ptr %0, i64 120
  %414 = getelementptr inbounds i8, ptr %0, i64 7416
  %415 = getelementptr inbounds i8, ptr %0, i64 7480
  %416 = getelementptr inbounds i8, ptr %0, i64 7544
  br label %417

417:                                              ; preds = %.lr.ph582, %535
  %.8579 = phi i64 [ 0, %.lr.ph582 ], [ %536, %535 ]
  %418 = load ptr, ptr %411, align 8, !tbaa !30
  %419 = getelementptr inbounds double, ptr %418, i64 %.8579
  %420 = load double, ptr %419, align 8, !tbaa !31
  %421 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %420, ptr noundef %14)
  br i1 %421, label %427, label %422

422:                                              ; preds = %417
  %423 = load ptr, ptr %411, align 8, !tbaa !30
  %424 = getelementptr inbounds double, ptr %423, i64 %.8579
  %425 = load double, ptr %424, align 8, !tbaa !31
  %426 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isneginfEdPNS_8ae_stateE(double noundef %425, ptr noundef %14)
  br label %427

427:                                              ; preds = %422, %417
  %428 = phi i1 [ true, %417 ], [ %426, %422 ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %428, ptr noundef nonnull @.str.358, ptr noundef %14)
  %429 = load ptr, ptr %412, align 8, !tbaa !30
  %430 = getelementptr inbounds double, ptr %429, i64 %.8579
  %431 = load double, ptr %430, align 8, !tbaa !31
  %432 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %431, ptr noundef %14)
  br i1 %432, label %438, label %433

433:                                              ; preds = %427
  %434 = load ptr, ptr %412, align 8, !tbaa !30
  %435 = getelementptr inbounds double, ptr %434, i64 %.8579
  %436 = load double, ptr %435, align 8, !tbaa !31
  %437 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isposinfEdPNS_8ae_stateE(double noundef %436, ptr noundef %14)
  br label %438

438:                                              ; preds = %433, %427
  %439 = phi i1 [ true, %427 ], [ %437, %433 ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %439, ptr noundef nonnull @.str.359, ptr noundef %14)
  %440 = load ptr, ptr %411, align 8, !tbaa !30
  %441 = getelementptr inbounds double, ptr %440, i64 %.8579
  %442 = load double, ptr %441, align 8, !tbaa !31
  %443 = load ptr, ptr %413, align 8, !tbaa !30
  %444 = getelementptr inbounds double, ptr %443, i64 %.8579
  %445 = load double, ptr %444, align 8, !tbaa !31
  %446 = fdiv double %442, %445
  %447 = load ptr, ptr %414, align 8, !tbaa !30
  %448 = add nsw i64 %.8579, %17
  %449 = getelementptr inbounds double, ptr %447, i64 %448
  store double %446, ptr %449, align 8, !tbaa !31
  %450 = load ptr, ptr %412, align 8, !tbaa !30
  %451 = getelementptr inbounds double, ptr %450, i64 %.8579
  %452 = load double, ptr %451, align 8, !tbaa !31
  %453 = load ptr, ptr %413, align 8, !tbaa !30
  %454 = getelementptr inbounds double, ptr %453, i64 %.8579
  %455 = load double, ptr %454, align 8, !tbaa !31
  %456 = fdiv double %452, %455
  %457 = load ptr, ptr %415, align 8, !tbaa !30
  %458 = getelementptr inbounds double, ptr %457, i64 %448
  store double %456, ptr %458, align 8, !tbaa !31
  %459 = load ptr, ptr %411, align 8, !tbaa !30
  %460 = getelementptr inbounds double, ptr %459, i64 %.8579
  %461 = load double, ptr %460, align 8, !tbaa !31
  %462 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %461, ptr noundef %14)
  br i1 %462, label %463, label %500

463:                                              ; preds = %438
  %464 = load ptr, ptr %412, align 8, !tbaa !30
  %465 = getelementptr inbounds double, ptr %464, i64 %.8579
  %466 = load double, ptr %465, align 8, !tbaa !31
  %467 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %466, ptr noundef %14)
  br i1 %467, label %468, label %500

468:                                              ; preds = %463
  %469 = load ptr, ptr %411, align 8, !tbaa !30
  %470 = getelementptr inbounds double, ptr %469, i64 %.8579
  %471 = load double, ptr %470, align 8, !tbaa !31
  %472 = load ptr, ptr %412, align 8, !tbaa !30
  %473 = getelementptr inbounds double, ptr %472, i64 %.8579
  %474 = load double, ptr %473, align 8, !tbaa !31
  %475 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %471, double noundef %474)
  br i1 %475, label %476, label %480

476:                                              ; preds = %468
  %477 = load i64, ptr @_ZN11alglib_implL31reviseddualsimplex_ccinfeasibleE, align 8, !tbaa !27
  %478 = load ptr, ptr %416, align 8, !tbaa !30
  %479 = getelementptr inbounds i64, ptr %478, i64 %448
  store i64 %477, ptr %479, align 8, !tbaa !27
  br label %480

480:                                              ; preds = %476, %468
  %481 = load ptr, ptr %411, align 8, !tbaa !30
  %482 = getelementptr inbounds double, ptr %481, i64 %.8579
  %483 = load double, ptr %482, align 8, !tbaa !31
  %484 = load ptr, ptr %412, align 8, !tbaa !30
  %485 = getelementptr inbounds double, ptr %484, i64 %.8579
  %486 = load double, ptr %485, align 8, !tbaa !31
  %487 = tail call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %483, double noundef %486)
  br i1 %487, label %488, label %492

488:                                              ; preds = %480
  %489 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_ccrangeE, align 8, !tbaa !27
  %490 = load ptr, ptr %416, align 8, !tbaa !30
  %491 = getelementptr inbounds i64, ptr %490, i64 %448
  store i64 %489, ptr %491, align 8, !tbaa !27
  br label %492

492:                                              ; preds = %488, %480
  %493 = load ptr, ptr %411, align 8, !tbaa !30
  %494 = getelementptr inbounds double, ptr %493, i64 %.8579
  %495 = load double, ptr %494, align 8, !tbaa !31
  %496 = load ptr, ptr %412, align 8, !tbaa !30
  %497 = getelementptr inbounds double, ptr %496, i64 %.8579
  %498 = load double, ptr %497, align 8, !tbaa !31
  %499 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %495, double noundef %498)
  br i1 %499, label %.sink.split606, label %535

500:                                              ; preds = %463, %438
  %501 = load ptr, ptr %411, align 8, !tbaa !30
  %502 = getelementptr inbounds double, ptr %501, i64 %.8579
  %503 = load double, ptr %502, align 8, !tbaa !31
  %504 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %503, ptr noundef %14)
  br i1 %504, label %505, label %510

505:                                              ; preds = %500
  %506 = load ptr, ptr %412, align 8, !tbaa !30
  %507 = getelementptr inbounds double, ptr %506, i64 %.8579
  %508 = load double, ptr %507, align 8, !tbaa !31
  %509 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %508, ptr noundef %14)
  br i1 %509, label %510, label %.sink.split606

510:                                              ; preds = %505, %500
  %511 = load ptr, ptr %411, align 8, !tbaa !30
  %512 = getelementptr inbounds double, ptr %511, i64 %.8579
  %513 = load double, ptr %512, align 8, !tbaa !31
  %514 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %513, ptr noundef %14)
  br i1 %514, label %520, label %515

515:                                              ; preds = %510
  %516 = load ptr, ptr %412, align 8, !tbaa !30
  %517 = getelementptr inbounds double, ptr %516, i64 %.8579
  %518 = load double, ptr %517, align 8, !tbaa !31
  %519 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %518, ptr noundef %14)
  br i1 %519, label %.sink.split606, label %520

520:                                              ; preds = %515, %510
  %521 = load ptr, ptr %411, align 8, !tbaa !30
  %522 = getelementptr inbounds double, ptr %521, i64 %.8579
  %523 = load double, ptr %522, align 8, !tbaa !31
  %524 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isneginfEdPNS_8ae_stateE(double noundef %523, ptr noundef %14)
  br i1 %524, label %525, label %530

525:                                              ; preds = %520
  %526 = load ptr, ptr %412, align 8, !tbaa !30
  %527 = getelementptr inbounds double, ptr %526, i64 %.8579
  %528 = load double, ptr %527, align 8, !tbaa !31
  %529 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isposinfEdPNS_8ae_stateE(double noundef %528, ptr noundef %14)
  br label %530

530:                                              ; preds = %525, %520
  %531 = phi i1 [ false, %520 ], [ %529, %525 ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %531, ptr noundef nonnull @.str.360, ptr noundef %14)
  br label %.sink.split606

.sink.split606:                                   ; preds = %515, %505, %492, %530
  %_ZN11alglib_implL26reviseddualsimplex_ccfixedE.sink609 = phi ptr [ @_ZN11alglib_implL25reviseddualsimplex_ccfreeE, %530 ], [ @_ZN11alglib_implL26reviseddualsimplex_ccfixedE, %492 ], [ @_ZN11alglib_implL26reviseddualsimplex_cclowerE, %505 ], [ @_ZN11alglib_implL26reviseddualsimplex_ccupperE, %515 ]
  %532 = load i64, ptr %_ZN11alglib_implL26reviseddualsimplex_ccfixedE.sink609, align 8, !tbaa !27
  %533 = load ptr, ptr %416, align 8, !tbaa !30
  %534 = getelementptr inbounds i64, ptr %533, i64 %448
  store i64 %532, ptr %534, align 8, !tbaa !27
  br label %535

535:                                              ; preds = %.sink.split606, %492
  %536 = add nuw nsw i64 %.8579, 1
  %exitcond601.not = icmp eq i64 %536, %10
  br i1 %exitcond601.not, label %._crit_edge583, label %417, !llvm.loop !52

._crit_edge583:                                   ; preds = %535, %410
  switch i64 %12, label %.preheader [
    i64 2, label %557
    i64 1, label %537
  ]

537:                                              ; preds = %._crit_edge583
  %538 = load i64, ptr %18, align 8, !tbaa !23
  %.not = icmp slt i64 %538, %19
  br i1 %.not, label %.preheader, label %.preheader534

.preheader534:                                    ; preds = %537
  %.not528.not584 = icmp slt i64 %19, %538
  br i1 %.not528.not584, label %.lr.ph586, label %._crit_edge587

.lr.ph586:                                        ; preds = %.preheader534
  %539 = getelementptr inbounds i8, ptr %0, i64 7352
  %540 = getelementptr inbounds i8, ptr %0, i64 8000
  %541 = getelementptr inbounds i8, ptr %0, i64 7608
  %542 = getelementptr inbounds i8, ptr %0, i64 7672
  br label %543

543:                                              ; preds = %.lr.ph586, %543
  %.9585 = phi i64 [ %19, %.lr.ph586 ], [ %553, %543 ]
  %544 = load ptr, ptr %539, align 8, !tbaa !30
  %545 = add nsw i64 %.9585, %17
  %546 = getelementptr inbounds double, ptr %544, i64 %545
  store double 0.000000e+00, ptr %546, align 8, !tbaa !31
  %547 = load ptr, ptr %540, align 8, !tbaa !30
  %548 = getelementptr inbounds double, ptr %547, i64 %545
  store double 0.000000e+00, ptr %548, align 8, !tbaa !31
  %549 = load ptr, ptr %541, align 8, !tbaa !30
  %550 = getelementptr inbounds double, ptr %549, i64 %545
  store double 0.000000e+00, ptr %550, align 8, !tbaa !31
  %551 = load ptr, ptr %542, align 8, !tbaa !30
  %552 = getelementptr inbounds double, ptr %551, i64 %545
  store double 0.000000e+00, ptr %552, align 8, !tbaa !31
  %553 = add nsw i64 %.9585, 1
  %exitcond602.not = icmp eq i64 %553, %538
  br i1 %exitcond602.not, label %._crit_edge587, label %543, !llvm.loop !53

._crit_edge587:                                   ; preds = %543, %.preheader534
  %554 = getelementptr inbounds i8, ptr %0, i64 1008
  %555 = getelementptr inbounds i8, ptr %0, i64 640
  %556 = tail call noundef zeroext i1 @_ZN11alglib_implL33reviseddualsimplex_basistryresizeEPNS_16dualsimplexbasisElPNS_12sparsematrixEPNS_19dualsimplexsettingsEPNS_8ae_stateE(ptr noundef nonnull %554, i64 noundef %538, ptr noundef nonnull %555, ptr noundef %13, ptr noundef %14)
  br i1 %556, label %587, label %.preheader

557:                                              ; preds = %._crit_edge583
  %558 = load i64, ptr %11, align 8, !tbaa !54
  %559 = load i64, ptr %16, align 8, !tbaa !5
  %560 = icmp eq i64 %558, %559
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %560, ptr noundef nonnull @.str.361, ptr noundef %14)
  %561 = getelementptr inbounds i8, ptr %11, i64 8
  %562 = load i64, ptr %561, align 8, !tbaa !55
  %563 = load i64, ptr %18, align 8, !tbaa !23
  %564 = icmp eq i64 %562, %563
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %564, ptr noundef nonnull @.str.361, ptr noundef %14)
  %565 = getelementptr inbounds i8, ptr %0, i64 1008
  %566 = getelementptr inbounds i8, ptr %0, i64 640
  %567 = tail call noundef zeroext i1 @_ZN11alglib_implL37reviseddualsimplex_basistryimportfromEPNS_16dualsimplexbasisES1_PNS_12sparsematrixEPNS_19dualsimplexsettingsEPNS_8ae_stateE(ptr noundef nonnull %565, ptr noundef nonnull %11, ptr noundef nonnull %566, ptr noundef %13, ptr noundef %14)
  br i1 %567, label %587, label %.preheader

.preheader:                                       ; preds = %._crit_edge587, %537, %._crit_edge583, %557
  br i1 %34, label %.lr.ph590, label %._crit_edge591

.lr.ph590:                                        ; preds = %.preheader
  %568 = getelementptr inbounds i8, ptr %0, i64 7352
  %569 = getelementptr inbounds i8, ptr %0, i64 8000
  %570 = getelementptr inbounds i8, ptr %0, i64 7608
  %571 = getelementptr inbounds i8, ptr %0, i64 7672
  br label %572

572:                                              ; preds = %.lr.ph590, %572
  %.10589 = phi i64 [ 0, %.lr.ph590 ], [ %582, %572 ]
  %573 = load ptr, ptr %568, align 8, !tbaa !30
  %574 = add nsw i64 %.10589, %17
  %575 = getelementptr inbounds double, ptr %573, i64 %574
  store double 0.000000e+00, ptr %575, align 8, !tbaa !31
  %576 = load ptr, ptr %569, align 8, !tbaa !30
  %577 = getelementptr inbounds double, ptr %576, i64 %574
  store double 0.000000e+00, ptr %577, align 8, !tbaa !31
  %578 = load ptr, ptr %570, align 8, !tbaa !30
  %579 = getelementptr inbounds double, ptr %578, i64 %574
  store double 0.000000e+00, ptr %579, align 8, !tbaa !31
  %580 = load ptr, ptr %571, align 8, !tbaa !30
  %581 = getelementptr inbounds double, ptr %580, i64 %574
  store double 0.000000e+00, ptr %581, align 8, !tbaa !31
  %582 = add nuw nsw i64 %.10589, 1
  %exitcond603.not = icmp eq i64 %582, %10
  br i1 %exitcond603.not, label %._crit_edge591, label %572, !llvm.loop !56

._crit_edge591:                                   ; preds = %572, %.preheader
  %583 = load i64, ptr %16, align 8, !tbaa !5
  %584 = load i64, ptr %18, align 8, !tbaa !23
  %585 = getelementptr inbounds i8, ptr %0, i64 1008
  tail call void @_ZN11alglib_implL28reviseddualsimplex_basisinitEllPNS_16dualsimplexbasisEPNS_8ae_stateE(i64 noundef %583, i64 noundef %584, ptr noundef nonnull %585, ptr noundef %14)
  %586 = getelementptr inbounds i8, ptr %0, i64 640
  tail call void @_ZN11alglib_implL32reviseddualsimplex_basisfreshtrfEPNS_16dualsimplexbasisEPNS_12sparsematrixEPNS_19dualsimplexsettingsEPNS_8ae_stateE(ptr noundef nonnull %585, ptr noundef nonnull %586, ptr noundef %13, ptr noundef %14)
  br label %587

587:                                              ; preds = %._crit_edge587, %._crit_edge591, %557
  %588 = getelementptr inbounds i8, ptr %0, i64 9720
  %589 = load i64, ptr %18, align 8, !tbaa !23
  tail call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %588, i64 noundef %589, ptr noundef %14)
  %590 = getelementptr inbounds i8, ptr %0, i64 9784
  %591 = load i64, ptr %18, align 8, !tbaa !23
  tail call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %590, i64 noundef %591, ptr noundef %14)
  %592 = getelementptr inbounds i8, ptr %0, i64 9848
  %593 = load i64, ptr %16, align 8, !tbaa !5
  %594 = load i64, ptr %18, align 8, !tbaa !23
  %595 = add nsw i64 %594, %593
  tail call void @_ZN11alglib_impl13ivectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %592, i64 noundef %595, ptr noundef %14)
  br label %596

596:                                              ; preds = %587, %235
  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_impl25sparsecopytransposecrsbufEPNS_12sparsematrixES1_PNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

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_16dualsimplexbasisES1_PNS_12sparsematrixEPNS_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_16dualsimplexbasisElPNS_12sparsematrixEPNS_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_16dualsimplexbasisEPNS_12sparsematrixEPNS_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 7280}
!6 = !{!"_ZTSN11alglib_impl16dualsimplexstateE", !7, i64 0, !7, i64 64, !7, i64 128, !7, i64 192, !8, i64 256, !8, i64 264, !14, i64 272, !14, i64 640, !15, i64 1008, !22, i64 7280, !22, i64 8072, !22, i64 8864, !7, i64 9656, !7, i64 9720, !7, i64 9784, !7, i64 9848, !17, i64 9912, !17, i64 9920, !17, i64 9928, !8, i64 9936, !8, i64 9944, !8, i64 9952, !8, i64 9960, !8, i64 9968, !7, i64 9976, !8, i64 10040, !7, i64 10048, !7, i64 10112, !7, i64 10176, !7, i64 10240, !7, i64 10304, !7, i64 10368, !7, i64 10432, !7, i64 10496, !7, i64 10560, !7, i64 10624, !7, i64 10688, !7, i64 10752, !7, i64 10816, !7, i64 10880}
!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, !7, i64 1880, !7, i64 1944, !7, i64 2008, !7, i64 2072, !7, i64 2136, !16, i64 2200, !7, i64 2280, !7, i64 2344, !14, i64 2408, !14, i64 2776, !18, i64 3144, !7, i64 5712, !7, i64 5776, !7, i64 5840, !14, i64 5904}
!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}
!23 = !{!6, !8, i64 7288}
!24 = !{!7, !8, i64 0}
!25 = !{!14, !8, i64 328}
!26 = !{!14, !8, i64 336}
!27 = !{!8, !8, i64 0}
!28 = !{!6, !8, i64 256}
!29 = !{!6, !8, i64 264}
!30 = !{!9, !9, i64 0}
!31 = !{!17, !17, i64 0}
!32 = distinct !{!32, !33}
!33 = !{!"llvm.loop.mustprogress"}
!34 = distinct !{!34, !33}
!35 = distinct !{!35, !33}
!36 = distinct !{!36, !37}
!37 = !{!"llvm.loop.unroll.disable"}
!38 = distinct !{!38, !33}
!39 = distinct !{!39, !33}
!40 = distinct !{!40, !33}
!41 = distinct !{!41, !33}
!42 = distinct !{!42, !33}
!43 = distinct !{!43, !33}
!44 = !{!6, !8, i64 640}
!45 = !{!6, !8, i64 704}
!46 = !{!6, !8, i64 768}
!47 = !{!6, !8, i64 832}
!48 = !{!6, !8, i64 896}
!49 = !{!6, !8, i64 992}
!50 = distinct !{!50, !33}
!51 = !{!6, !8, i64 968}
!52 = distinct !{!52, !33}
!53 = distinct !{!53, !33}
!54 = !{!15, !8, i64 0}
!55 = !{!15, !8, i64 8}
!56 = distinct !{!56, !33}


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