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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"struct.alglib_impl::dualsimplexstate" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::dualsimplexbasis", %"struct.alglib_impl::dualsimplexsubproblem", %"struct.alglib_impl::dualsimplexsubproblem", %"struct.alglib_impl::dualsimplexsubproblem", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, double, i64, double, i64, double, i64, i8, i8, i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::apbuffers", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::dssvector", %"struct.alglib_impl::dssvector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::sparsematrix" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64, i64, i64, i64 }
%"struct.alglib_impl::dualsimplexbasis" = type { i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i8, i64, %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i8, double, i64, i64, double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sluv2buffer", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::sparsematrix" }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.1 }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%union.anon.1 = type { ptr }
%"struct.alglib_impl::sluv2buffer" = type { i64, %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sluv2list1matrix", %"struct.alglib_impl::sluv2list1matrix", %"struct.alglib_impl::sluv2sparsetrail", %"struct.alglib_impl::sluv2densetrail", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::sluv2list1matrix" = type { i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64 }
%"struct.alglib_impl::sluv2sparsetrail" = type { i64, i64, %"struct.alglib_impl::ae_vector", i64, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::sluv2densetrail" = type { i64, i64, %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::dualsimplexsubproblem" = type { i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::apbuffers" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix" }
%"struct.alglib_impl::dssvector" = type { i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::ae_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = type { ptr }

@.str.208 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.212 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.612 = external hidden unnamed_addr constant [3 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
@_ZN11alglib_implL25reviseddualsimplex_ccfreeE = external hidden global i64, align 8
@.str.876 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.877 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.878 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.879 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.880 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.881 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.882 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.883 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.884 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.885 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.886 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.887 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.888 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.889 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.890 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.891 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.892 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.893 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.894 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.895 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.896 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.897 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.898 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.899 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.900 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.901 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.902 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.903 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.904 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.905 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.906 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.907 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.908 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.909 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.910 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.911 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.912 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.913 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.914 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.915 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.916 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.917 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.918 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.919 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.920 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.921 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.922 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.923 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.924 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.925 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.926 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.927 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.928 = external hidden unnamed_addr constant [23 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 noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef, double noundef, ptr noundef) #1

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

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

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

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

declare void @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef, ...) #1

declare noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef) #1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl11dssoptimizeEPNS_16dualsimplexstateEPKNS_19dualsimplexsettingsEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1, ptr noundef %2) #2 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i64, align 8
  %8 = alloca i64, align 8
  %9 = alloca double, align 8
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca i64, align 8
  %15 = alloca i64, align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #4
  %16 = load ptr, ptr %4, align 8, !tbaa !5
  %17 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %16, i32 0, i32 8
  %18 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %17, i32 0, i32 0
  %19 = load i64, ptr %18, align 8, !tbaa !9
  %20 = load ptr, ptr %4, align 8, !tbaa !5
  %21 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %20, i32 0, i32 8
  %22 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %21, i32 0, i32 1
  %23 = load i64, ptr %22, align 8, !tbaa !26
  %24 = add nsw i64 %19, %23
  store i64 %24, ptr %8, align 8, !tbaa !27
  store i64 0, ptr %15, align 8, !tbaa !27
  %25 = call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef @.str.876)
  %26 = load ptr, ptr %4, align 8, !tbaa !5
  %27 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %26, i32 0, i32 35
  %28 = zext i1 %25 to i8
  store i8 %28, ptr %27, align 8, !tbaa !28
  %29 = load ptr, ptr %4, align 8, !tbaa !5
  %30 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %29, i32 0, i32 35
  %31 = load i8, ptr %30, align 8, !tbaa !28, !range !29, !noundef !30
  %32 = trunc i8 %31 to i1
  br i1 %32, label %33, label %35

33:                                               ; preds = %3
  %34 = call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef @.str.877)
  br label %35

35:                                               ; preds = %33, %3
  %36 = phi i1 [ false, %3 ], [ %34, %33 ]
  %37 = load ptr, ptr %4, align 8, !tbaa !5
  %38 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %37, i32 0, i32 36
  %39 = zext i1 %36 to i8
  store i8 %39, ptr %38, align 1, !tbaa !31
  %40 = call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef @.str.878)
  %41 = load ptr, ptr %4, align 8, !tbaa !5
  %42 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %41, i32 0, i32 37
  %43 = zext i1 %40 to i8
  store i8 %43, ptr %42, align 2, !tbaa !32
  %44 = load ptr, ptr %4, align 8, !tbaa !5
  %45 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %44, i32 0, i32 16
  store i64 0, ptr %45, align 8, !tbaa !33
  %46 = load ptr, ptr %4, align 8, !tbaa !5
  %47 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %46, i32 0, i32 17
  store i64 0, ptr %47, align 8, !tbaa !34
  %48 = load ptr, ptr %4, align 8, !tbaa !5
  %49 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %48, i32 0, i32 18
  store i64 0, ptr %49, align 8, !tbaa !35
  %50 = load ptr, ptr %4, align 8, !tbaa !5
  %51 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %50, i32 0, i32 19
  store i64 0, ptr %51, align 8, !tbaa !36
  %52 = load ptr, ptr %4, align 8, !tbaa !5
  %53 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %52, i32 0, i32 15
  store i64 1, ptr %53, align 8, !tbaa !37
  %54 = load ptr, ptr %4, align 8, !tbaa !5
  %55 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %54, i32 0, i32 20
  store i64 0, ptr %55, align 8, !tbaa !38
  %56 = load ptr, ptr %4, align 8, !tbaa !5
  %57 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %56, i32 0, i32 21
  store i64 0, ptr %57, align 8, !tbaa !39
  %58 = load ptr, ptr %4, align 8, !tbaa !5
  %59 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %58, i32 0, i32 22
  store i64 0, ptr %59, align 8, !tbaa !40
  %60 = load ptr, ptr %4, align 8, !tbaa !5
  %61 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %60, i32 0, i32 23
  store i64 0, ptr %61, align 8, !tbaa !41
  %62 = load ptr, ptr %4, align 8, !tbaa !5
  %63 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %62, i32 0, i32 24
  store i64 0, ptr %63, align 8, !tbaa !42
  %64 = load ptr, ptr %4, align 8, !tbaa !5
  %65 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %64, i32 0, i32 25
  store i64 0, ptr %65, align 8, !tbaa !43
  %66 = load ptr, ptr %4, align 8, !tbaa !5
  %67 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %66, i32 0, i32 26
  store i64 0, ptr %67, align 8, !tbaa !44
  %68 = load ptr, ptr %4, align 8, !tbaa !5
  %69 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %68, i32 0, i32 27
  store i64 0, ptr %69, align 8, !tbaa !45
  %70 = load ptr, ptr %4, align 8, !tbaa !5
  %71 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %70, i32 0, i32 28
  store i64 0, ptr %71, align 8, !tbaa !46
  %72 = load ptr, ptr %4, align 8, !tbaa !5
  %73 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %72, i32 0, i32 29
  store double 0.000000e+00, ptr %73, align 8, !tbaa !47
  %74 = load ptr, ptr %4, align 8, !tbaa !5
  %75 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %74, i32 0, i32 30
  store i64 0, ptr %75, align 8, !tbaa !48
  %76 = load ptr, ptr %4, align 8, !tbaa !5
  %77 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %76, i32 0, i32 31
  store double 0.000000e+00, ptr %77, align 8, !tbaa !49
  %78 = load ptr, ptr %4, align 8, !tbaa !5
  %79 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %78, i32 0, i32 32
  store i64 0, ptr %79, align 8, !tbaa !50
  %80 = load ptr, ptr %4, align 8, !tbaa !5
  %81 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %80, i32 0, i32 33
  store double 0.000000e+00, ptr %81, align 8, !tbaa !51
  %82 = load ptr, ptr %4, align 8, !tbaa !5
  %83 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %82, i32 0, i32 34
  store i64 0, ptr %83, align 8, !tbaa !52
  %84 = load ptr, ptr %4, align 8, !tbaa !5
  %85 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %84, i32 0, i32 7
  %86 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_implL34reviseddualsimplex_basisclearstatsEPNS_16dualsimplexbasisEPNS_8ae_stateE(ptr noundef %85, ptr noundef %86)
  %87 = load ptr, ptr %4, align 8, !tbaa !5
  %88 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %87, i32 0, i32 37
  %89 = load i8, ptr %88, align 2, !tbaa !32, !range !29, !noundef !30
  %90 = trunc i8 %89 to i1
  br i1 %90, label %91, label %93

91:                                               ; preds = %35
  %92 = call noundef i64 @_ZN11alglib_impl12ae_tickcountEv()
  store i64 %92, ptr %15, align 8, !tbaa !27
  br label %93

93:                                               ; preds = %91, %35
  %94 = load ptr, ptr %4, align 8, !tbaa !5
  %95 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %94, i32 0, i32 35
  %96 = load i8, ptr %95, align 8, !tbaa !28, !range !29, !noundef !30
  %97 = trunc i8 %96 to i1
  br i1 %97, label %103, label %98

98:                                               ; preds = %93
  %99 = load ptr, ptr %4, align 8, !tbaa !5
  %100 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %99, i32 0, i32 37
  %101 = load i8, ptr %100, align 2, !tbaa !32, !range !29, !noundef !30
  %102 = trunc i8 %101 to i1
  br i1 %102, label %103, label %114

103:                                              ; preds = %98, %93
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.612)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.212)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.879)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.212)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.880)
  %104 = load ptr, ptr %4, align 8, !tbaa !5
  %105 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %104, i32 0, i32 8
  %106 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %105, i32 0, i32 0
  %107 = load i64, ptr %106, align 8, !tbaa !9
  %108 = trunc i64 %107 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.881, i32 noundef %108)
  %109 = load ptr, ptr %4, align 8, !tbaa !5
  %110 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %109, i32 0, i32 8
  %111 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %110, i32 0, i32 1
  %112 = load i64, ptr %111, align 8, !tbaa !26
  %113 = trunc i64 %112 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.882, i32 noundef %113)
  br label %114

114:                                              ; preds = %103, %98
  %115 = load ptr, ptr %4, align 8, !tbaa !5
  %116 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %115, i32 0, i32 35
  %117 = load i8, ptr %116, align 8, !tbaa !28, !range !29, !noundef !30
  %118 = trunc i8 %117 to i1
  br i1 %118, label %119, label %490

119:                                              ; preds = %114
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.883)
  %120 = load ptr, ptr %4, align 8, !tbaa !5
  %121 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %120, i32 0, i32 36
  %122 = load i8, ptr %121, align 1, !tbaa !31, !range !29, !noundef !30
  %123 = trunc i8 %122 to i1
  br i1 %123, label %124, label %125

124:                                              ; preds = %119
  br label %125

125:                                              ; preds = %124, %119
  store i64 0, ptr %10, align 8, !tbaa !27
  store i64 0, ptr %11, align 8, !tbaa !27
  store i64 0, ptr %12, align 8, !tbaa !27
  store i64 0, ptr %13, align 8, !tbaa !27
  store i64 0, ptr %14, align 8, !tbaa !27
  store i64 0, ptr %7, align 8, !tbaa !27
  br label %126

126:                                              ; preds = %211, %125
  %127 = load i64, ptr %7, align 8, !tbaa !27
  %128 = load ptr, ptr %4, align 8, !tbaa !5
  %129 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %128, i32 0, i32 8
  %130 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %129, i32 0, i32 0
  %131 = load i64, ptr %130, align 8, !tbaa !9
  %132 = sub nsw i64 %131, 1
  %133 = icmp sle i64 %127, %132
  br i1 %133, label %134, label %214

134:                                              ; preds = %126
  %135 = load ptr, ptr %4, align 8, !tbaa !5
  %136 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %135, i32 0, i32 8
  %137 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %136, i32 0, i32 5
  %138 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %137, i32 0, i32 4
  %139 = load ptr, ptr %138, align 8, !tbaa !53
  %140 = load i64, ptr %7, align 8, !tbaa !27
  %141 = getelementptr inbounds i64, ptr %139, i64 %140
  %142 = load i64, ptr %141, align 8, !tbaa !27
  %143 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_cclowerE, align 8, !tbaa !27
  %144 = icmp eq i64 %142, %143
  br i1 %144, label %156, label %145

145:                                              ; preds = %134
  %146 = load ptr, ptr %4, align 8, !tbaa !5
  %147 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %146, i32 0, i32 8
  %148 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %147, i32 0, i32 5
  %149 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %148, i32 0, i32 4
  %150 = load ptr, ptr %149, align 8, !tbaa !53
  %151 = load i64, ptr %7, align 8, !tbaa !27
  %152 = getelementptr inbounds i64, ptr %150, i64 %151
  %153 = load i64, ptr %152, align 8, !tbaa !27
  %154 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_ccupperE, align 8, !tbaa !27
  %155 = icmp eq i64 %153, %154
  br i1 %155, label %156, label %158

156:                                              ; preds = %145, %134
  %157 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %10, ptr noundef %157)
  br label %158

158:                                              ; preds = %156, %145
  %159 = load ptr, ptr %4, align 8, !tbaa !5
  %160 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %159, i32 0, i32 8
  %161 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %160, i32 0, i32 5
  %162 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %161, i32 0, i32 4
  %163 = load ptr, ptr %162, align 8, !tbaa !53
  %164 = load i64, ptr %7, align 8, !tbaa !27
  %165 = getelementptr inbounds i64, ptr %163, i64 %164
  %166 = load i64, ptr %165, align 8, !tbaa !27
  %167 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_ccrangeE, align 8, !tbaa !27
  %168 = icmp eq i64 %166, %167
  br i1 %168, label %169, label %171

169:                                              ; preds = %158
  %170 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %11, ptr noundef %170)
  br label %171

171:                                              ; preds = %169, %158
  %172 = load ptr, ptr %4, align 8, !tbaa !5
  %173 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %172, i32 0, i32 8
  %174 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %173, i32 0, i32 5
  %175 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %174, i32 0, i32 4
  %176 = load ptr, ptr %175, align 8, !tbaa !53
  %177 = load i64, ptr %7, align 8, !tbaa !27
  %178 = getelementptr inbounds i64, ptr %176, i64 %177
  %179 = load i64, ptr %178, align 8, !tbaa !27
  %180 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_ccfixedE, align 8, !tbaa !27
  %181 = icmp eq i64 %179, %180
  br i1 %181, label %182, label %184

182:                                              ; preds = %171
  %183 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %12, ptr noundef %183)
  br label %184

184:                                              ; preds = %182, %171
  %185 = load ptr, ptr %4, align 8, !tbaa !5
  %186 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %185, i32 0, i32 8
  %187 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %186, i32 0, i32 5
  %188 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %187, i32 0, i32 4
  %189 = load ptr, ptr %188, align 8, !tbaa !53
  %190 = load i64, ptr %7, align 8, !tbaa !27
  %191 = getelementptr inbounds i64, ptr %189, i64 %190
  %192 = load i64, ptr %191, align 8, !tbaa !27
  %193 = load i64, ptr @_ZN11alglib_implL25reviseddualsimplex_ccfreeE, align 8, !tbaa !27
  %194 = icmp eq i64 %192, %193
  br i1 %194, label %195, label %197

195:                                              ; preds = %184
  %196 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %13, ptr noundef %196)
  br label %197

197:                                              ; preds = %195, %184
  %198 = load ptr, ptr %4, align 8, !tbaa !5
  %199 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %198, i32 0, i32 8
  %200 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %199, i32 0, i32 5
  %201 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %200, i32 0, i32 4
  %202 = load ptr, ptr %201, align 8, !tbaa !53
  %203 = load i64, ptr %7, align 8, !tbaa !27
  %204 = getelementptr inbounds i64, ptr %202, i64 %203
  %205 = load i64, ptr %204, align 8, !tbaa !27
  %206 = load i64, ptr @_ZN11alglib_implL31reviseddualsimplex_ccinfeasibleE, align 8, !tbaa !27
  %207 = icmp eq i64 %205, %206
  br i1 %207, label %208, label %210

208:                                              ; preds = %197
  %209 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %14, ptr noundef %209)
  br label %210

210:                                              ; preds = %208, %197
  br label %211

211:                                              ; preds = %210
  %212 = load i64, ptr %7, align 8, !tbaa !27
  %213 = add nsw i64 %212, 1
  store i64 %213, ptr %7, align 8, !tbaa !27
  br label %126, !llvm.loop !54

214:                                              ; preds = %126
  %215 = load i64, ptr %10, align 8, !tbaa !27
  %216 = trunc i64 %215 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.884, i32 noundef %216)
  %217 = load i64, ptr %11, align 8, !tbaa !27
  %218 = trunc i64 %217 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.885, i32 noundef %218)
  %219 = load i64, ptr %12, align 8, !tbaa !27
  %220 = trunc i64 %219 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.886, i32 noundef %220)
  %221 = load i64, ptr %13, align 8, !tbaa !27
  %222 = trunc i64 %221 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.887, i32 noundef %222)
  %223 = load i64, ptr %14, align 8, !tbaa !27
  %224 = trunc i64 %223 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.888, i32 noundef %224)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.889)
  %225 = load ptr, ptr %4, align 8, !tbaa !5
  %226 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %225, i32 0, i32 36
  %227 = load i8, ptr %226, align 1, !tbaa !31, !range !29, !noundef !30
  %228 = trunc i8 %227 to i1
  br i1 %228, label %229, label %230

229:                                              ; preds = %214
  br label %230

230:                                              ; preds = %229, %214
  store i64 0, ptr %10, align 8, !tbaa !27
  store i64 0, ptr %11, align 8, !tbaa !27
  store i64 0, ptr %12, align 8, !tbaa !27
  store i64 0, ptr %13, align 8, !tbaa !27
  store i64 0, ptr %14, align 8, !tbaa !27
  %231 = load ptr, ptr %4, align 8, !tbaa !5
  %232 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %231, i32 0, i32 8
  %233 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %232, i32 0, i32 0
  %234 = load i64, ptr %233, align 8, !tbaa !9
  %235 = sub nsw i64 %234, 1
  store i64 %235, ptr %7, align 8, !tbaa !27
  br label %236

236:                                              ; preds = %318, %230
  %237 = load i64, ptr %7, align 8, !tbaa !27
  %238 = load i64, ptr %8, align 8, !tbaa !27
  %239 = sub nsw i64 %238, 1
  %240 = icmp sle i64 %237, %239
  br i1 %240, label %241, label %321

241:                                              ; preds = %236
  %242 = load ptr, ptr %4, align 8, !tbaa !5
  %243 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %242, i32 0, i32 8
  %244 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %243, i32 0, i32 5
  %245 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %244, i32 0, i32 4
  %246 = load ptr, ptr %245, align 8, !tbaa !53
  %247 = load i64, ptr %7, align 8, !tbaa !27
  %248 = getelementptr inbounds i64, ptr %246, i64 %247
  %249 = load i64, ptr %248, align 8, !tbaa !27
  %250 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_cclowerE, align 8, !tbaa !27
  %251 = icmp eq i64 %249, %250
  br i1 %251, label %263, label %252

252:                                              ; preds = %241
  %253 = load ptr, ptr %4, align 8, !tbaa !5
  %254 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %253, i32 0, i32 8
  %255 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %254, i32 0, i32 5
  %256 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %255, i32 0, i32 4
  %257 = load ptr, ptr %256, align 8, !tbaa !53
  %258 = load i64, ptr %7, align 8, !tbaa !27
  %259 = getelementptr inbounds i64, ptr %257, i64 %258
  %260 = load i64, ptr %259, align 8, !tbaa !27
  %261 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_ccupperE, align 8, !tbaa !27
  %262 = icmp eq i64 %260, %261
  br i1 %262, label %263, label %265

263:                                              ; preds = %252, %241
  %264 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %10, ptr noundef %264)
  br label %265

265:                                              ; preds = %263, %252
  %266 = load ptr, ptr %4, align 8, !tbaa !5
  %267 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %266, i32 0, i32 8
  %268 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %267, i32 0, i32 5
  %269 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %268, i32 0, i32 4
  %270 = load ptr, ptr %269, align 8, !tbaa !53
  %271 = load i64, ptr %7, align 8, !tbaa !27
  %272 = getelementptr inbounds i64, ptr %270, i64 %271
  %273 = load i64, ptr %272, align 8, !tbaa !27
  %274 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_ccrangeE, align 8, !tbaa !27
  %275 = icmp eq i64 %273, %274
  br i1 %275, label %276, label %278

276:                                              ; preds = %265
  %277 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %11, ptr noundef %277)
  br label %278

278:                                              ; preds = %276, %265
  %279 = load ptr, ptr %4, align 8, !tbaa !5
  %280 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %279, i32 0, i32 8
  %281 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %280, i32 0, i32 5
  %282 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %281, i32 0, i32 4
  %283 = load ptr, ptr %282, align 8, !tbaa !53
  %284 = load i64, ptr %7, align 8, !tbaa !27
  %285 = getelementptr inbounds i64, ptr %283, i64 %284
  %286 = load i64, ptr %285, align 8, !tbaa !27
  %287 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_ccfixedE, align 8, !tbaa !27
  %288 = icmp eq i64 %286, %287
  br i1 %288, label %289, label %291

289:                                              ; preds = %278
  %290 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %12, ptr noundef %290)
  br label %291

291:                                              ; preds = %289, %278
  %292 = load ptr, ptr %4, align 8, !tbaa !5
  %293 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %292, i32 0, i32 8
  %294 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %293, i32 0, i32 5
  %295 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %294, i32 0, i32 4
  %296 = load ptr, ptr %295, align 8, !tbaa !53
  %297 = load i64, ptr %7, align 8, !tbaa !27
  %298 = getelementptr inbounds i64, ptr %296, i64 %297
  %299 = load i64, ptr %298, align 8, !tbaa !27
  %300 = load i64, ptr @_ZN11alglib_implL25reviseddualsimplex_ccfreeE, align 8, !tbaa !27
  %301 = icmp eq i64 %299, %300
  br i1 %301, label %302, label %304

302:                                              ; preds = %291
  %303 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %13, ptr noundef %303)
  br label %304

304:                                              ; preds = %302, %291
  %305 = load ptr, ptr %4, align 8, !tbaa !5
  %306 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %305, i32 0, i32 8
  %307 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %306, i32 0, i32 5
  %308 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %307, i32 0, i32 4
  %309 = load ptr, ptr %308, align 8, !tbaa !53
  %310 = load i64, ptr %7, align 8, !tbaa !27
  %311 = getelementptr inbounds i64, ptr %309, i64 %310
  %312 = load i64, ptr %311, align 8, !tbaa !27
  %313 = load i64, ptr @_ZN11alglib_implL31reviseddualsimplex_ccinfeasibleE, align 8, !tbaa !27
  %314 = icmp eq i64 %312, %313
  br i1 %314, label %315, label %317

315:                                              ; preds = %304
  %316 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %14, ptr noundef %316)
  br label %317

317:                                              ; preds = %315, %304
  br label %318

318:                                              ; preds = %317
  %319 = load i64, ptr %7, align 8, !tbaa !27
  %320 = add nsw i64 %319, 1
  store i64 %320, ptr %7, align 8, !tbaa !27
  br label %236, !llvm.loop !56

321:                                              ; preds = %236
  %322 = load i64, ptr %10, align 8, !tbaa !27
  %323 = trunc i64 %322 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.890, i32 noundef %323)
  %324 = load i64, ptr %11, align 8, !tbaa !27
  %325 = trunc i64 %324 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.891, i32 noundef %325)
  %326 = load i64, ptr %12, align 8, !tbaa !27
  %327 = trunc i64 %326 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.892, i32 noundef %327)
  %328 = load i64, ptr %13, align 8, !tbaa !27
  %329 = trunc i64 %328 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.893, i32 noundef %329)
  %330 = load i64, ptr %14, align 8, !tbaa !27
  %331 = trunc i64 %330 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.894, i32 noundef %331)
  store double 0.000000e+00, ptr %9, align 8, !tbaa !57
  store i64 0, ptr %7, align 8, !tbaa !27
  br label %332

332:                                              ; preds = %366, %321
  %333 = load i64, ptr %7, align 8, !tbaa !27
  %334 = load ptr, ptr %4, align 8, !tbaa !5
  %335 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %334, i32 0, i32 8
  %336 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %335, i32 0, i32 0
  %337 = load i64, ptr %336, align 8, !tbaa !9
  %338 = sub nsw i64 %337, 1
  %339 = icmp sle i64 %333, %338
  br i1 %339, label %340, label %369

340:                                              ; preds = %332
  %341 = load ptr, ptr %4, align 8, !tbaa !5
  %342 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %341, i32 0, i32 8
  %343 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %342, i32 0, i32 3
  %344 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %343, i32 0, i32 4
  %345 = load ptr, ptr %344, align 8, !tbaa !53
  %346 = load i64, ptr %7, align 8, !tbaa !27
  %347 = getelementptr inbounds double, ptr %345, i64 %346
  %348 = load double, ptr %347, align 8, !tbaa !57
  %349 = load ptr, ptr %6, align 8, !tbaa !5
  %350 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %348, ptr noundef %349)
  br i1 %350, label %351, label %365

351:                                              ; preds = %340
  %352 = load double, ptr %9, align 8, !tbaa !57
  %353 = load ptr, ptr %4, align 8, !tbaa !5
  %354 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %353, i32 0, i32 8
  %355 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %354, i32 0, i32 3
  %356 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %355, i32 0, i32 4
  %357 = load ptr, ptr %356, align 8, !tbaa !53
  %358 = load i64, ptr %7, align 8, !tbaa !27
  %359 = getelementptr inbounds double, ptr %357, i64 %358
  %360 = load double, ptr %359, align 8, !tbaa !57
  %361 = load ptr, ptr %6, align 8, !tbaa !5
  %362 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %360, ptr noundef %361)
  %363 = load ptr, ptr %6, align 8, !tbaa !5
  %364 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %352, double noundef %362, ptr noundef %363)
  store double %364, ptr %9, align 8, !tbaa !57
  br label %365

365:                                              ; preds = %351, %340
  br label %366

366:                                              ; preds = %365
  %367 = load i64, ptr %7, align 8, !tbaa !27
  %368 = add nsw i64 %367, 1
  store i64 %368, ptr %7, align 8, !tbaa !27
  br label %332, !llvm.loop !58

369:                                              ; preds = %332
  %370 = load double, ptr %9, align 8, !tbaa !57
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.895, double noundef %370)
  store double 0.000000e+00, ptr %9, align 8, !tbaa !57
  store i64 0, ptr %7, align 8, !tbaa !27
  br label %371

371:                                              ; preds = %405, %369
  %372 = load i64, ptr %7, align 8, !tbaa !27
  %373 = load ptr, ptr %4, align 8, !tbaa !5
  %374 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %373, i32 0, i32 8
  %375 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %374, i32 0, i32 0
  %376 = load i64, ptr %375, align 8, !tbaa !9
  %377 = sub nsw i64 %376, 1
  %378 = icmp sle i64 %372, %377
  br i1 %378, label %379, label %408

379:                                              ; preds = %371
  %380 = load ptr, ptr %4, align 8, !tbaa !5
  %381 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %380, i32 0, i32 8
  %382 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %381, i32 0, i32 4
  %383 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %382, i32 0, i32 4
  %384 = load ptr, ptr %383, align 8, !tbaa !53
  %385 = load i64, ptr %7, align 8, !tbaa !27
  %386 = getelementptr inbounds double, ptr %384, i64 %385
  %387 = load double, ptr %386, align 8, !tbaa !57
  %388 = load ptr, ptr %6, align 8, !tbaa !5
  %389 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %387, ptr noundef %388)
  br i1 %389, label %390, label %404

390:                                              ; preds = %379
  %391 = load double, ptr %9, align 8, !tbaa !57
  %392 = load ptr, ptr %4, align 8, !tbaa !5
  %393 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %392, i32 0, i32 8
  %394 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %393, i32 0, i32 4
  %395 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %394, i32 0, i32 4
  %396 = load ptr, ptr %395, align 8, !tbaa !53
  %397 = load i64, ptr %7, align 8, !tbaa !27
  %398 = getelementptr inbounds double, ptr %396, i64 %397
  %399 = load double, ptr %398, align 8, !tbaa !57
  %400 = load ptr, ptr %6, align 8, !tbaa !5
  %401 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %399, ptr noundef %400)
  %402 = load ptr, ptr %6, align 8, !tbaa !5
  %403 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %391, double noundef %401, ptr noundef %402)
  store double %403, ptr %9, align 8, !tbaa !57
  br label %404

404:                                              ; preds = %390, %379
  br label %405

405:                                              ; preds = %404
  %406 = load i64, ptr %7, align 8, !tbaa !27
  %407 = add nsw i64 %406, 1
  store i64 %407, ptr %7, align 8, !tbaa !27
  br label %371, !llvm.loop !59

408:                                              ; preds = %371
  %409 = load double, ptr %9, align 8, !tbaa !57
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.896, double noundef %409)
  store double 0.000000e+00, ptr %9, align 8, !tbaa !57
  %410 = load ptr, ptr %4, align 8, !tbaa !5
  %411 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %410, i32 0, i32 8
  %412 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %411, i32 0, i32 0
  %413 = load i64, ptr %412, align 8, !tbaa !9
  store i64 %413, ptr %7, align 8, !tbaa !27
  br label %414

414:                                              ; preds = %445, %408
  %415 = load i64, ptr %7, align 8, !tbaa !27
  %416 = load i64, ptr %8, align 8, !tbaa !27
  %417 = sub nsw i64 %416, 1
  %418 = icmp sle i64 %415, %417
  br i1 %418, label %419, label %448

419:                                              ; preds = %414
  %420 = load ptr, ptr %4, align 8, !tbaa !5
  %421 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %420, i32 0, i32 8
  %422 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %421, i32 0, i32 3
  %423 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %422, i32 0, i32 4
  %424 = load ptr, ptr %423, align 8, !tbaa !53
  %425 = load i64, ptr %7, align 8, !tbaa !27
  %426 = getelementptr inbounds double, ptr %424, i64 %425
  %427 = load double, ptr %426, align 8, !tbaa !57
  %428 = load ptr, ptr %6, align 8, !tbaa !5
  %429 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %427, ptr noundef %428)
  br i1 %429, label %430, label %444

430:                                              ; preds = %419
  %431 = load double, ptr %9, align 8, !tbaa !57
  %432 = load ptr, ptr %4, align 8, !tbaa !5
  %433 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %432, i32 0, i32 8
  %434 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %433, i32 0, i32 3
  %435 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %434, i32 0, i32 4
  %436 = load ptr, ptr %435, align 8, !tbaa !53
  %437 = load i64, ptr %7, align 8, !tbaa !27
  %438 = getelementptr inbounds double, ptr %436, i64 %437
  %439 = load double, ptr %438, align 8, !tbaa !57
  %440 = load ptr, ptr %6, align 8, !tbaa !5
  %441 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %439, ptr noundef %440)
  %442 = load ptr, ptr %6, align 8, !tbaa !5
  %443 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %431, double noundef %441, ptr noundef %442)
  store double %443, ptr %9, align 8, !tbaa !57
  br label %444

444:                                              ; preds = %430, %419
  br label %445

445:                                              ; preds = %444
  %446 = load i64, ptr %7, align 8, !tbaa !27
  %447 = add nsw i64 %446, 1
  store i64 %447, ptr %7, align 8, !tbaa !27
  br label %414, !llvm.loop !60

448:                                              ; preds = %414
  %449 = load double, ptr %9, align 8, !tbaa !57
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.897, double noundef %449)
  store double 0.000000e+00, ptr %9, align 8, !tbaa !57
  %450 = load ptr, ptr %4, align 8, !tbaa !5
  %451 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %450, i32 0, i32 8
  %452 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %451, i32 0, i32 0
  %453 = load i64, ptr %452, align 8, !tbaa !9
  store i64 %453, ptr %7, align 8, !tbaa !27
  br label %454

454:                                              ; preds = %485, %448
  %455 = load i64, ptr %7, align 8, !tbaa !27
  %456 = load i64, ptr %8, align 8, !tbaa !27
  %457 = sub nsw i64 %456, 1
  %458 = icmp sle i64 %455, %457
  br i1 %458, label %459, label %488

459:                                              ; preds = %454
  %460 = load ptr, ptr %4, align 8, !tbaa !5
  %461 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %460, i32 0, i32 8
  %462 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %461, i32 0, i32 4
  %463 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %462, i32 0, i32 4
  %464 = load ptr, ptr %463, align 8, !tbaa !53
  %465 = load i64, ptr %7, align 8, !tbaa !27
  %466 = getelementptr inbounds double, ptr %464, i64 %465
  %467 = load double, ptr %466, align 8, !tbaa !57
  %468 = load ptr, ptr %6, align 8, !tbaa !5
  %469 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %467, ptr noundef %468)
  br i1 %469, label %470, label %484

470:                                              ; preds = %459
  %471 = load double, ptr %9, align 8, !tbaa !57
  %472 = load ptr, ptr %4, align 8, !tbaa !5
  %473 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %472, i32 0, i32 8
  %474 = getelementptr inbounds %"struct.alglib_impl::dualsimplexsubproblem", ptr %473, i32 0, i32 4
  %475 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %474, i32 0, i32 4
  %476 = load ptr, ptr %475, align 8, !tbaa !53
  %477 = load i64, ptr %7, align 8, !tbaa !27
  %478 = getelementptr inbounds double, ptr %476, i64 %477
  %479 = load double, ptr %478, align 8, !tbaa !57
  %480 = load ptr, ptr %6, align 8, !tbaa !5
  %481 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %479, ptr noundef %480)
  %482 = load ptr, ptr %6, align 8, !tbaa !5
  %483 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %471, double noundef %481, ptr noundef %482)
  store double %483, ptr %9, align 8, !tbaa !57
  br label %484

484:                                              ; preds = %470, %459
  br label %485

485:                                              ; preds = %484
  %486 = load i64, ptr %7, align 8, !tbaa !27
  %487 = add nsw i64 %486, 1
  store i64 %487, ptr %7, align 8, !tbaa !27
  br label %454, !llvm.loop !61

488:                                              ; preds = %454
  %489 = load double, ptr %9, align 8, !tbaa !57
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.898, double noundef %489)
  br label %490

490:                                              ; preds = %488, %114
  %491 = load ptr, ptr %4, align 8, !tbaa !5
  %492 = load ptr, ptr %5, align 8, !tbaa !5
  %493 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_implL33reviseddualsimplex_dssoptimizewrkEPNS_16dualsimplexstateEPKNS_19dualsimplexsettingsEPNS_8ae_stateE(ptr noundef %491, ptr noundef %492, ptr noundef %493)
  %494 = load ptr, ptr %4, align 8, !tbaa !5
  %495 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %494, i32 0, i32 35
  %496 = load i8, ptr %495, align 8, !tbaa !28, !range !29, !noundef !30
  %497 = trunc i8 %496 to i1
  br i1 %497, label %498, label %607

498:                                              ; preds = %490
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.208)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.899)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.900)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.899)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.901)
  %499 = load ptr, ptr %4, align 8, !tbaa !5
  %500 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %499, i32 0, i32 17
  %501 = load i64, ptr %500, align 8, !tbaa !34
  %502 = trunc i64 %501 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.902, i32 noundef %502)
  %503 = load ptr, ptr %4, align 8, !tbaa !5
  %504 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %503, i32 0, i32 18
  %505 = load i64, ptr %504, align 8, !tbaa !35
  %506 = trunc i64 %505 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.903, i32 noundef %506)
  %507 = load ptr, ptr %4, align 8, !tbaa !5
  %508 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %507, i32 0, i32 19
  %509 = load i64, ptr %508, align 8, !tbaa !36
  %510 = trunc i64 %509 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.904, i32 noundef %510)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.905)
  %511 = load ptr, ptr %4, align 8, !tbaa !5
  %512 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %511, i32 0, i32 7
  %513 = getelementptr inbounds %"struct.alglib_impl::dualsimplexbasis", ptr %512, i32 0, i32 21
  %514 = load i64, ptr %513, align 8, !tbaa !62
  %515 = trunc i64 %514 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.906, i32 noundef %515)
  %516 = load ptr, ptr %4, align 8, !tbaa !5
  %517 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %516, i32 0, i32 7
  %518 = getelementptr inbounds %"struct.alglib_impl::dualsimplexbasis", ptr %517, i32 0, i32 22
  %519 = load i64, ptr %518, align 8, !tbaa !63
  %520 = trunc i64 %519 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.907, i32 noundef %520)
  %521 = load ptr, ptr %4, align 8, !tbaa !5
  %522 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %521, i32 0, i32 7
  %523 = getelementptr inbounds %"struct.alglib_impl::dualsimplexbasis", ptr %522, i32 0, i32 21
  %524 = load i64, ptr %523, align 8, !tbaa !62
  %525 = load ptr, ptr %4, align 8, !tbaa !5
  %526 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %525, i32 0, i32 7
  %527 = getelementptr inbounds %"struct.alglib_impl::dualsimplexbasis", ptr %526, i32 0, i32 22
  %528 = load i64, ptr %527, align 8, !tbaa !63
  %529 = add nsw i64 %524, %528
  %530 = sitofp i64 %529 to double
  %531 = load ptr, ptr %4, align 8, !tbaa !5
  %532 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %531, i32 0, i32 7
  %533 = getelementptr inbounds %"struct.alglib_impl::dualsimplexbasis", ptr %532, i32 0, i32 21
  %534 = load i64, ptr %533, align 8, !tbaa !62
  %535 = sitofp i64 %534 to double
  %536 = load ptr, ptr %6, align 8, !tbaa !5
  %537 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %535, double noundef 1.000000e+00, ptr noundef %536)
  %538 = fdiv double %530, %537
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.908, double noundef %538)
  %539 = load ptr, ptr %4, align 8, !tbaa !5
  %540 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %539, i32 0, i32 7
  %541 = getelementptr inbounds %"struct.alglib_impl::dualsimplexbasis", ptr %540, i32 0, i32 23
  %542 = load double, ptr %541, align 8, !tbaa !64
  %543 = load ptr, ptr %4, align 8, !tbaa !5
  %544 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %543, i32 0, i32 4
  %545 = load i64, ptr %544, align 8, !tbaa !65
  %546 = sitofp i64 %545 to double
  %547 = load ptr, ptr %6, align 8, !tbaa !5
  %548 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %546, double noundef 1.000000e+00, ptr noundef %547)
  %549 = load ptr, ptr %4, align 8, !tbaa !5
  %550 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %549, i32 0, i32 7
  %551 = getelementptr inbounds %"struct.alglib_impl::dualsimplexbasis", ptr %550, i32 0, i32 21
  %552 = load i64, ptr %551, align 8, !tbaa !62
  %553 = load ptr, ptr %4, align 8, !tbaa !5
  %554 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %553, i32 0, i32 7
  %555 = getelementptr inbounds %"struct.alglib_impl::dualsimplexbasis", ptr %554, i32 0, i32 22
  %556 = load i64, ptr %555, align 8, !tbaa !63
  %557 = add nsw i64 %552, %556
  %558 = sitofp i64 %557 to double
  %559 = load ptr, ptr %6, align 8, !tbaa !5
  %560 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %558, double noundef 1.000000e+00, ptr noundef %559)
  %561 = fmul double %548, %560
  %562 = fdiv double %542, %561
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.909, double noundef %562)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.910)
  %563 = load ptr, ptr %4, align 8, !tbaa !5
  %564 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %563, i32 0, i32 36
  %565 = load i8, ptr %564, align 1, !tbaa !31, !range !29, !noundef !30
  %566 = trunc i8 %565 to i1
  br i1 %566, label %567, label %605

567:                                              ; preds = %498
  %568 = load ptr, ptr %4, align 8, !tbaa !5
  %569 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %568, i32 0, i32 31
  %570 = load double, ptr %569, align 8, !tbaa !49
  %571 = load ptr, ptr %4, align 8, !tbaa !5
  %572 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %571, i32 0, i32 32
  %573 = load i64, ptr %572, align 8, !tbaa !50
  %574 = sitofp i64 %573 to double
  %575 = load ptr, ptr %6, align 8, !tbaa !5
  %576 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %574, double noundef 1.000000e+00, ptr noundef %575)
  %577 = fdiv double %570, %576
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.911, double noundef %577)
  %578 = load ptr, ptr %4, align 8, !tbaa !5
  %579 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %578, i32 0, i32 29
  %580 = load double, ptr %579, align 8, !tbaa !47
  %581 = load ptr, ptr %4, align 8, !tbaa !5
  %582 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %581, i32 0, i32 30
  %583 = load i64, ptr %582, align 8, !tbaa !48
  %584 = sitofp i64 %583 to double
  %585 = load ptr, ptr %6, align 8, !tbaa !5
  %586 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %584, double noundef 1.000000e+00, ptr noundef %585)
  %587 = fdiv double %580, %586
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.912, double noundef %587)
  %588 = load ptr, ptr %4, align 8, !tbaa !5
  %589 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %588, i32 0, i32 7
  %590 = getelementptr inbounds %"struct.alglib_impl::dualsimplexbasis", ptr %589, i32 0, i32 5
  %591 = load i64, ptr %590, align 8, !tbaa !66
  %592 = icmp eq i64 %591, 3
  br i1 %592, label %593, label %604

593:                                              ; preds = %567
  %594 = load ptr, ptr %4, align 8, !tbaa !5
  %595 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %594, i32 0, i32 33
  %596 = load double, ptr %595, align 8, !tbaa !51
  %597 = load ptr, ptr %4, align 8, !tbaa !5
  %598 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %597, i32 0, i32 34
  %599 = load i64, ptr %598, align 8, !tbaa !52
  %600 = sitofp i64 %599 to double
  %601 = load ptr, ptr %6, align 8, !tbaa !5
  %602 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %600, double noundef 1.000000e+00, ptr noundef %601)
  %603 = fdiv double %596, %602
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.913, double noundef %603)
  br label %604

604:                                              ; preds = %593, %567
  br label %606

605:                                              ; preds = %498
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.914)
  br label %606

606:                                              ; preds = %605, %604
  br label %607

607:                                              ; preds = %606, %490
  %608 = load ptr, ptr %4, align 8, !tbaa !5
  %609 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %608, i32 0, i32 37
  %610 = load i8, ptr %609, align 2, !tbaa !32, !range !29, !noundef !30
  %611 = trunc i8 %610 to i1
  br i1 %611, label %612, label %654

612:                                              ; preds = %607
  %613 = call noundef i64 @_ZN11alglib_impl12ae_tickcountEv()
  %614 = load i64, ptr %15, align 8, !tbaa !27
  %615 = sub nsw i64 %613, %614
  store i64 %615, ptr %15, align 8, !tbaa !27
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.208)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.899)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.915)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.899)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.916)
  %616 = load i64, ptr %15, align 8, !tbaa !27
  %617 = trunc i64 %616 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.917, i32 noundef %617)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.918)
  %618 = load ptr, ptr %4, align 8, !tbaa !5
  %619 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %618, i32 0, i32 20
  %620 = load i64, ptr %619, align 8, !tbaa !38
  %621 = trunc i64 %620 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.919, i32 noundef %621)
  %622 = load ptr, ptr %4, align 8, !tbaa !5
  %623 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %622, i32 0, i32 21
  %624 = load i64, ptr %623, align 8, !tbaa !39
  %625 = trunc i64 %624 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.920, i32 noundef %625)
  %626 = load ptr, ptr %4, align 8, !tbaa !5
  %627 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %626, i32 0, i32 22
  %628 = load i64, ptr %627, align 8, !tbaa !40
  %629 = trunc i64 %628 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.921, i32 noundef %629)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.922)
  %630 = load ptr, ptr %4, align 8, !tbaa !5
  %631 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %630, i32 0, i32 23
  %632 = load i64, ptr %631, align 8, !tbaa !41
  %633 = trunc i64 %632 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.923, i32 noundef %633)
  %634 = load ptr, ptr %4, align 8, !tbaa !5
  %635 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %634, i32 0, i32 24
  %636 = load i64, ptr %635, align 8, !tbaa !42
  %637 = trunc i64 %636 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.924, i32 noundef %637)
  %638 = load ptr, ptr %4, align 8, !tbaa !5
  %639 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %638, i32 0, i32 25
  %640 = load i64, ptr %639, align 8, !tbaa !43
  %641 = trunc i64 %640 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.925, i32 noundef %641)
  %642 = load ptr, ptr %4, align 8, !tbaa !5
  %643 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %642, i32 0, i32 26
  %644 = load i64, ptr %643, align 8, !tbaa !44
  %645 = trunc i64 %644 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.926, i32 noundef %645)
  %646 = load ptr, ptr %4, align 8, !tbaa !5
  %647 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %646, i32 0, i32 27
  %648 = load i64, ptr %647, align 8, !tbaa !45
  %649 = trunc i64 %648 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.927, i32 noundef %649)
  %650 = load ptr, ptr %4, align 8, !tbaa !5
  %651 = getelementptr inbounds %"struct.alglib_impl::dualsimplexstate", ptr %650, i32 0, i32 28
  %652 = load i64, ptr %651, align 8, !tbaa !46
  %653 = trunc i64 %652 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.928, i32 noundef %653)
  br label %654

654:                                              ; preds = %612, %607
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #4
  ret void
}

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

declare noundef i64 @_ZN11alglib_impl12ae_tickcountEv() #1

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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, !12, i64 7240}
!10 = !{!"_ZTSN11alglib_impl16dualsimplexstateE", !11, i64 0, !11, i64 64, !11, i64 128, !12, i64 192, !12, i64 200, !15, i64 208, !15, i64 576, !16, i64 944, !23, i64 7240, !23, i64 8096, !23, i64 8952, !11, i64 9808, !11, i64 9872, !11, i64 9936, !11, i64 10000, !12, i64 10064, !12, i64 10072, !12, i64 10080, !12, i64 10088, !12, i64 10096, !12, i64 10104, !12, i64 10112, !12, i64 10120, !12, i64 10128, !12, i64 10136, !12, i64 10144, !12, i64 10152, !12, i64 10160, !12, i64 10168, !18, i64 10176, !12, i64 10184, !18, i64 10192, !12, i64 10200, !18, i64 10208, !12, i64 10216, !13, i64 10224, !13, i64 10225, !13, i64 10226, !11, i64 10232, !11, i64 10296, !11, i64 10360, !11, i64 10424, !11, i64 10488, !11, i64 10552, !12, i64 10616, !11, i64 10624, !11, i64 10688, !11, i64 10752, !11, i64 10816, !24, i64 10880, !11, i64 11616, !11, i64 11680, !11, i64 11744, !25, i64 11808, !25, i64 12016, !11, i64 12224, !11, i64 12288, !11, i64 12352, !11, i64 12416, !11, i64 12480}
!11 = !{!"_ZTSN11alglib_impl9ae_vectorE", !12, i64 0, !12, i64 8, !13, i64 16, !14, i64 24, !7, i64 56}
!12 = !{!"long", !7, i64 0}
!13 = !{!"bool", !7, i64 0}
!14 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!15 = !{!"_ZTSN11alglib_impl12sparsematrixE", !11, i64 0, !11, i64 64, !11, i64 128, !11, i64 192, !11, i64 256, !12, i64 320, !12, i64 328, !12, i64 336, !12, i64 344, !12, i64 352, !12, i64 360}
!16 = !{!"_ZTSN11alglib_impl16dualsimplexbasisE", !12, i64 0, !12, i64 8, !11, i64 16, !11, i64 80, !11, i64 144, !12, i64 208, !13, i64 216, !12, i64 224, !17, i64 232, !15, i64 312, !15, i64 680, !15, i64 1048, !11, i64 1416, !11, i64 1480, !11, i64 1544, !11, i64 1608, !11, i64 1672, !11, i64 1736, !11, i64 1800, !13, i64 1864, !18, i64 1872, !12, i64 1880, !12, i64 1888, !18, i64 1896, !11, i64 1904, !11, i64 1968, !11, i64 2032, !11, i64 2096, !11, i64 2160, !17, i64 2224, !11, i64 2304, !11, i64 2368, !15, i64 2432, !15, i64 2800, !19, i64 3168, !11, i64 5736, !11, i64 5800, !11, i64 5864, !15, i64 5928}
!17 = !{!"_ZTSN11alglib_impl9ae_matrixE", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !13, i64 32, !14, i64 40, !7, i64 72}
!18 = !{!"double", !7, i64 0}
!19 = !{!"_ZTSN11alglib_impl11sluv2bufferE", !12, i64 0, !15, i64 8, !15, i64 376, !20, i64 744, !20, i64 968, !21, i64 1192, !22, i64 1816, !11, i64 1976, !17, i64 2040, !11, i64 2120, !11, i64 2184, !11, i64 2248, !11, i64 2312, !11, i64 2376, !11, i64 2440, !11, i64 2504}
!20 = !{!"_ZTSN11alglib_impl16sluv2list1matrixE", !12, i64 0, !12, i64 8, !11, i64 16, !11, i64 80, !11, i64 144, !12, i64 208, !12, i64 216}
!21 = !{!"_ZTSN11alglib_impl16sluv2sparsetrailE", !12, i64 0, !12, i64 8, !11, i64 16, !12, i64 80, !12, i64 88, !12, i64 96, !11, i64 104, !11, i64 168, !11, i64 232, !11, i64 296, !11, i64 360, !11, i64 424, !11, i64 488, !12, i64 552, !11, i64 560}
!22 = !{!"_ZTSN11alglib_impl15sluv2densetrailE", !12, i64 0, !12, i64 8, !17, i64 16, !11, i64 96}
!23 = !{!"_ZTSN11alglib_impl21dualsimplexsubproblemE", !12, i64 0, !12, i64 8, !11, i64 16, !11, i64 80, !11, i64 144, !11, i64 208, !11, i64 272, !11, i64 336, !12, i64 400, !11, i64 408, !11, i64 472, !11, i64 536, !11, i64 600, !11, i64 664, !11, i64 728, !11, i64 792}
!24 = !{!"_ZTSN11alglib_impl9apbuffersE", !11, i64 0, !11, i64 64, !11, i64 128, !11, i64 192, !11, i64 256, !11, i64 320, !11, i64 384, !11, i64 448, !11, i64 512, !17, i64 576, !17, i64 656}
!25 = !{!"_ZTSN11alglib_impl9dssvectorE", !12, i64 0, !12, i64 8, !11, i64 16, !11, i64 80, !11, i64 144}
!26 = !{!10, !12, i64 7248}
!27 = !{!12, !12, i64 0}
!28 = !{!10, !13, i64 10224}
!29 = !{i8 0, i8 2}
!30 = !{}
!31 = !{!10, !13, i64 10225}
!32 = !{!10, !13, i64 10226}
!33 = !{!10, !12, i64 10072}
!34 = !{!10, !12, i64 10080}
!35 = !{!10, !12, i64 10088}
!36 = !{!10, !12, i64 10096}
!37 = !{!10, !12, i64 10064}
!38 = !{!10, !12, i64 10104}
!39 = !{!10, !12, i64 10112}
!40 = !{!10, !12, i64 10120}
!41 = !{!10, !12, i64 10128}
!42 = !{!10, !12, i64 10136}
!43 = !{!10, !12, i64 10144}
!44 = !{!10, !12, i64 10152}
!45 = !{!10, !12, i64 10160}
!46 = !{!10, !12, i64 10168}
!47 = !{!10, !18, i64 10176}
!48 = !{!10, !12, i64 10184}
!49 = !{!10, !18, i64 10192}
!50 = !{!10, !12, i64 10200}
!51 = !{!10, !18, i64 10208}
!52 = !{!10, !12, i64 10216}
!53 = !{!7, !7, i64 0}
!54 = distinct !{!54, !55}
!55 = !{!"llvm.loop.mustprogress"}
!56 = distinct !{!56, !55}
!57 = !{!18, !18, i64 0}
!58 = distinct !{!58, !55}
!59 = distinct !{!59, !55}
!60 = distinct !{!60, !55}
!61 = distinct !{!61, !55}
!62 = !{!10, !12, i64 2824}
!63 = !{!10, !12, i64 2832}
!64 = !{!10, !18, i64 2840}
!65 = !{!10, !12, i64 200}
!66 = !{!10, !12, i64 1152}


; 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.208 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.212 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.612 = external hidden unnamed_addr constant [3 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
@_ZN11alglib_implL25reviseddualsimplex_ccfreeE = external hidden local_unnamed_addr global i64, align 8
@.str.876 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.877 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.878 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.879 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.880 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.881 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.882 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.883 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.884 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.885 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.886 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.887 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.888 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.889 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.890 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.891 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.892 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.893 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.894 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.895 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.896 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.897 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.898 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.899 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.900 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.901 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.902 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.903 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.904 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.905 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.906 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.907 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.908 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.909 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.910 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.911 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.912 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.913 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.914 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.915 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.916 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.917 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.918 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.919 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.920 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.921 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.922 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.923 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.924 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.925 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.926 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.927 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.928 = external hidden unnamed_addr constant [23 x i8], align 1

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

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

declare noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef, double noundef, ptr noundef) local_unnamed_addr #1

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

declare noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef, double noundef, ptr noundef) local_unnamed_addr #1

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

declare void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #1

declare void @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef, ...) local_unnamed_addr #1

declare noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl11dssoptimizeEPNS_16dualsimplexstateEPKNS_19dualsimplexsettingsEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1, ptr noundef %2) local_unnamed_addr #2 {
  %4 = alloca i64, align 8
  %5 = alloca i64, align 8
  %6 = alloca i64, align 8
  %7 = alloca i64, align 8
  %8 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #5
  %9 = getelementptr inbounds i8, ptr %0, i64 7240
  %10 = load i64, ptr %9, align 8, !tbaa !5
  %11 = getelementptr inbounds i8, ptr %0, i64 7248
  %12 = load i64, ptr %11, align 8, !tbaa !25
  %13 = add i64 %12, %10
  %14 = tail call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef nonnull @.str.876)
  %15 = getelementptr inbounds i8, ptr %0, i64 10224
  %16 = zext i1 %14 to i8
  store i8 %16, ptr %15, align 8, !tbaa !26
  br i1 %14, label %17, label %19

17:                                               ; preds = %3
  %18 = tail call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef nonnull @.str.877)
  br label %19

19:                                               ; preds = %17, %3
  %20 = phi i1 [ false, %3 ], [ %18, %17 ]
  %21 = getelementptr inbounds i8, ptr %0, i64 10225
  %22 = zext i1 %20 to i8
  store i8 %22, ptr %21, align 1, !tbaa !27
  %23 = tail call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef nonnull @.str.878)
  %24 = getelementptr inbounds i8, ptr %0, i64 10226
  %25 = zext i1 %23 to i8
  store i8 %25, ptr %24, align 2, !tbaa !28
  %26 = getelementptr inbounds i8, ptr %0, i64 10072
  %27 = getelementptr inbounds i8, ptr %0, i64 10080
  %28 = getelementptr inbounds i8, ptr %0, i64 10088
  %29 = getelementptr inbounds i8, ptr %0, i64 10096
  %30 = getelementptr inbounds i8, ptr %0, i64 10064
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %26, i8 0, i64 32, i1 false)
  store i64 1, ptr %30, align 8, !tbaa !29
  %31 = getelementptr inbounds i8, ptr %0, i64 10104
  %32 = getelementptr inbounds i8, ptr %0, i64 10112
  %33 = getelementptr inbounds i8, ptr %0, i64 10120
  %34 = getelementptr inbounds i8, ptr %0, i64 10128
  %35 = getelementptr inbounds i8, ptr %0, i64 10136
  %36 = getelementptr inbounds i8, ptr %0, i64 10144
  %37 = getelementptr inbounds i8, ptr %0, i64 10152
  %38 = getelementptr inbounds i8, ptr %0, i64 10160
  %39 = getelementptr inbounds i8, ptr %0, i64 10168
  %40 = getelementptr inbounds i8, ptr %0, i64 10176
  %41 = getelementptr inbounds i8, ptr %0, i64 10184
  %42 = getelementptr inbounds i8, ptr %0, i64 10192
  %43 = getelementptr inbounds i8, ptr %0, i64 10200
  %44 = getelementptr inbounds i8, ptr %0, i64 10208
  %45 = getelementptr inbounds i8, ptr %0, i64 10216
  %46 = getelementptr inbounds i8, ptr %0, i64 944
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(120) %31, i8 0, i64 120, i1 false)
  tail call void @_ZN11alglib_implL34reviseddualsimplex_basisclearstatsEPNS_16dualsimplexbasisEPNS_8ae_stateE(ptr noundef nonnull %46, ptr noundef %2)
  %47 = load i8, ptr %24, align 2, !tbaa !28, !range !30, !noundef !31
  %48 = trunc nuw i8 %47 to i1
  br i1 %48, label %49, label %51

49:                                               ; preds = %19
  %50 = tail call noundef i64 @_ZN11alglib_impl12ae_tickcountEv()
  br label %51

51:                                               ; preds = %49, %19
  %.0 = phi i64 [ %50, %49 ], [ 0, %19 ]
  %52 = load i8, ptr %15, align 8, !tbaa !26, !range !30, !noundef !31
  %53 = trunc nuw i8 %52 to i1
  br i1 %53, label %57, label %54

54:                                               ; preds = %51
  %55 = load i8, ptr %24, align 2, !tbaa !28, !range !30, !noundef !31
  %56 = trunc nuw i8 %55 to i1
  br i1 %56, label %57, label %62

57:                                               ; preds = %54, %51
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.612)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.212)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.879)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.212)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.880)
  %58 = load i64, ptr %9, align 8, !tbaa !5
  %59 = trunc i64 %58 to i32
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.881, i32 noundef %59)
  %60 = load i64, ptr %11, align 8, !tbaa !25
  %61 = trunc i64 %60 to i32
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.882, i32 noundef %61)
  %.pre = load i8, ptr %15, align 8, !tbaa !26, !range !30
  br label %62

62:                                               ; preds = %57, %54
  %63 = phi i8 [ %.pre, %57 ], [ %52, %54 ]
  %64 = trunc nuw i8 %63 to i1
  br i1 %64, label %65, label %216

65:                                               ; preds = %62
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.883)
  store i64 0, ptr %4, align 8, !tbaa !32
  store i64 0, ptr %5, align 8, !tbaa !32
  store i64 0, ptr %6, align 8, !tbaa !32
  store i64 0, ptr %7, align 8, !tbaa !32
  store i64 0, ptr %8, align 8, !tbaa !32
  %66 = load i64, ptr %9, align 8, !tbaa !5
  %.not.not186 = icmp sgt i64 %66, 0
  br i1 %.not.not186, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %65
  %67 = getelementptr inbounds i8, ptr %0, i64 7504
  br label %68

68:                                               ; preds = %.lr.ph, %97
  %.0169187 = phi i64 [ 0, %.lr.ph ], [ %98, %97 ]
  %69 = load ptr, ptr %67, align 8, !tbaa !33
  %70 = getelementptr inbounds i64, ptr %69, i64 %.0169187
  %71 = load i64, ptr %70, align 8, !tbaa !32
  %72 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_cclowerE, align 8, !tbaa !32
  %73 = icmp eq i64 %71, %72
  %74 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_ccupperE, align 8
  %75 = icmp eq i64 %71, %74
  %or.cond = select i1 %73, i1 true, i1 %75
  br i1 %or.cond, label %76, label %77

76:                                               ; preds = %68
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %4, ptr noundef %2)
  %.pre220 = load ptr, ptr %67, align 8, !tbaa !33
  %.phi.trans.insert = getelementptr inbounds i64, ptr %.pre220, i64 %.0169187
  %.pre221 = load i64, ptr %.phi.trans.insert, align 8, !tbaa !32
  br label %77

77:                                               ; preds = %68, %76
  %78 = phi i64 [ %71, %68 ], [ %.pre221, %76 ]
  %79 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_ccrangeE, align 8, !tbaa !32
  %80 = icmp eq i64 %78, %79
  br i1 %80, label %81, label %82

81:                                               ; preds = %77
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %5, ptr noundef %2)
  %.pre222 = load ptr, ptr %67, align 8, !tbaa !33
  %.phi.trans.insert223 = getelementptr inbounds i64, ptr %.pre222, i64 %.0169187
  %.pre224 = load i64, ptr %.phi.trans.insert223, align 8, !tbaa !32
  br label %82

82:                                               ; preds = %81, %77
  %83 = phi i64 [ %.pre224, %81 ], [ %78, %77 ]
  %84 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_ccfixedE, align 8, !tbaa !32
  %85 = icmp eq i64 %83, %84
  br i1 %85, label %86, label %87

86:                                               ; preds = %82
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef %2)
  %.pre225 = load ptr, ptr %67, align 8, !tbaa !33
  %.phi.trans.insert226 = getelementptr inbounds i64, ptr %.pre225, i64 %.0169187
  %.pre227 = load i64, ptr %.phi.trans.insert226, align 8, !tbaa !32
  br label %87

87:                                               ; preds = %86, %82
  %88 = phi i64 [ %.pre227, %86 ], [ %83, %82 ]
  %89 = load i64, ptr @_ZN11alglib_implL25reviseddualsimplex_ccfreeE, align 8, !tbaa !32
  %90 = icmp eq i64 %88, %89
  br i1 %90, label %91, label %92

91:                                               ; preds = %87
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %7, ptr noundef %2)
  %.pre228 = load ptr, ptr %67, align 8, !tbaa !33
  %.phi.trans.insert229 = getelementptr inbounds i64, ptr %.pre228, i64 %.0169187
  %.pre230 = load i64, ptr %.phi.trans.insert229, align 8, !tbaa !32
  br label %92

92:                                               ; preds = %91, %87
  %93 = phi i64 [ %.pre230, %91 ], [ %88, %87 ]
  %94 = load i64, ptr @_ZN11alglib_implL31reviseddualsimplex_ccinfeasibleE, align 8, !tbaa !32
  %95 = icmp eq i64 %93, %94
  br i1 %95, label %96, label %97

96:                                               ; preds = %92
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %8, ptr noundef %2)
  br label %97

97:                                               ; preds = %92, %96
  %98 = add nuw nsw i64 %.0169187, 1
  %99 = load i64, ptr %9, align 8, !tbaa !5
  %.not.not = icmp slt i64 %98, %99
  br i1 %.not.not, label %68, label %._crit_edge.loopexit, !llvm.loop !34

._crit_edge.loopexit:                             ; preds = %97
  %.pre231 = load i64, ptr %4, align 8, !tbaa !32
  %100 = trunc i64 %.pre231 to i32
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %65
  %101 = phi i32 [ %100, %._crit_edge.loopexit ], [ 0, %65 ]
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.884, i32 noundef %101)
  %102 = load i64, ptr %5, align 8, !tbaa !32
  %103 = trunc i64 %102 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.885, i32 noundef %103)
  %104 = load i64, ptr %6, align 8, !tbaa !32
  %105 = trunc i64 %104 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.886, i32 noundef %105)
  %106 = load i64, ptr %7, align 8, !tbaa !32
  %107 = trunc i64 %106 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.887, i32 noundef %107)
  %108 = load i64, ptr %8, align 8, !tbaa !32
  %109 = trunc i64 %108 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.888, i32 noundef %109)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.889)
  store i64 0, ptr %4, align 8, !tbaa !32
  store i64 0, ptr %5, align 8, !tbaa !32
  store i64 0, ptr %6, align 8, !tbaa !32
  store i64 0, ptr %7, align 8, !tbaa !32
  store i64 0, ptr %8, align 8, !tbaa !32
  %110 = load i64, ptr %9, align 8, !tbaa !5
  %.not.not178188.not = icmp sgt i64 %110, %13
  br i1 %.not.not178188.not, label %._crit_edge192, label %.lr.ph191

.lr.ph191:                                        ; preds = %._crit_edge
  %111 = add nsw i64 %110, -1
  %112 = getelementptr inbounds i8, ptr %0, i64 7504
  br label %113

113:                                              ; preds = %.lr.ph191, %142
  %.1170189 = phi i64 [ %111, %.lr.ph191 ], [ %143, %142 ]
  %114 = load ptr, ptr %112, align 8, !tbaa !33
  %115 = getelementptr inbounds i64, ptr %114, i64 %.1170189
  %116 = load i64, ptr %115, align 8, !tbaa !32
  %117 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_cclowerE, align 8, !tbaa !32
  %118 = icmp eq i64 %116, %117
  %119 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_ccupperE, align 8
  %120 = icmp eq i64 %116, %119
  %or.cond185 = select i1 %118, i1 true, i1 %120
  br i1 %or.cond185, label %121, label %122

121:                                              ; preds = %113
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %4, ptr noundef %2)
  %.pre232 = load ptr, ptr %112, align 8, !tbaa !33
  %.phi.trans.insert233 = getelementptr inbounds i64, ptr %.pre232, i64 %.1170189
  %.pre234 = load i64, ptr %.phi.trans.insert233, align 8, !tbaa !32
  br label %122

122:                                              ; preds = %113, %121
  %123 = phi i64 [ %116, %113 ], [ %.pre234, %121 ]
  %124 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_ccrangeE, align 8, !tbaa !32
  %125 = icmp eq i64 %123, %124
  br i1 %125, label %126, label %127

126:                                              ; preds = %122
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %5, ptr noundef %2)
  %.pre235 = load ptr, ptr %112, align 8, !tbaa !33
  %.phi.trans.insert236 = getelementptr inbounds i64, ptr %.pre235, i64 %.1170189
  %.pre237 = load i64, ptr %.phi.trans.insert236, align 8, !tbaa !32
  br label %127

127:                                              ; preds = %126, %122
  %128 = phi i64 [ %.pre237, %126 ], [ %123, %122 ]
  %129 = load i64, ptr @_ZN11alglib_implL26reviseddualsimplex_ccfixedE, align 8, !tbaa !32
  %130 = icmp eq i64 %128, %129
  br i1 %130, label %131, label %132

131:                                              ; preds = %127
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef %2)
  %.pre238 = load ptr, ptr %112, align 8, !tbaa !33
  %.phi.trans.insert239 = getelementptr inbounds i64, ptr %.pre238, i64 %.1170189
  %.pre240 = load i64, ptr %.phi.trans.insert239, align 8, !tbaa !32
  br label %132

132:                                              ; preds = %131, %127
  %133 = phi i64 [ %.pre240, %131 ], [ %128, %127 ]
  %134 = load i64, ptr @_ZN11alglib_implL25reviseddualsimplex_ccfreeE, align 8, !tbaa !32
  %135 = icmp eq i64 %133, %134
  br i1 %135, label %136, label %137

136:                                              ; preds = %132
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %7, ptr noundef %2)
  %.pre241 = load ptr, ptr %112, align 8, !tbaa !33
  %.phi.trans.insert242 = getelementptr inbounds i64, ptr %.pre241, i64 %.1170189
  %.pre243 = load i64, ptr %.phi.trans.insert242, align 8, !tbaa !32
  br label %137

137:                                              ; preds = %136, %132
  %138 = phi i64 [ %.pre243, %136 ], [ %133, %132 ]
  %139 = load i64, ptr @_ZN11alglib_implL31reviseddualsimplex_ccinfeasibleE, align 8, !tbaa !32
  %140 = icmp eq i64 %138, %139
  br i1 %140, label %141, label %142

141:                                              ; preds = %137
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %8, ptr noundef %2)
  br label %142

142:                                              ; preds = %137, %141
  %143 = add i64 %.1170189, 1
  %exitcond.not = icmp eq i64 %143, %13
  br i1 %exitcond.not, label %._crit_edge192.loopexit, label %113, !llvm.loop !36

._crit_edge192.loopexit:                          ; preds = %142
  %.pre244 = load i64, ptr %4, align 8, !tbaa !32
  %144 = trunc i64 %.pre244 to i32
  br label %._crit_edge192

._crit_edge192:                                   ; preds = %._crit_edge192.loopexit, %._crit_edge
  %145 = phi i32 [ %144, %._crit_edge192.loopexit ], [ 0, %._crit_edge ]
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.890, i32 noundef %145)
  %146 = load i64, ptr %5, align 8, !tbaa !32
  %147 = trunc i64 %146 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.891, i32 noundef %147)
  %148 = load i64, ptr %6, align 8, !tbaa !32
  %149 = trunc i64 %148 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.892, i32 noundef %149)
  %150 = load i64, ptr %7, align 8, !tbaa !32
  %151 = trunc i64 %150 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.893, i32 noundef %151)
  %152 = load i64, ptr %8, align 8, !tbaa !32
  %153 = trunc i64 %152 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.894, i32 noundef %153)
  %154 = load i64, ptr %9, align 8, !tbaa !5
  %.not.not179193 = icmp sgt i64 %154, 0
  br i1 %.not.not179193, label %.lr.ph197, label %._crit_edge198

.lr.ph197:                                        ; preds = %._crit_edge192
  %155 = getelementptr inbounds i8, ptr %0, i64 7376
  br label %156

156:                                              ; preds = %.lr.ph197, %167
  %.0168195 = phi double [ 0.000000e+00, %.lr.ph197 ], [ %.1, %167 ]
  %.2171194 = phi i64 [ 0, %.lr.ph197 ], [ %168, %167 ]
  %157 = load ptr, ptr %155, align 8, !tbaa !33
  %158 = getelementptr inbounds double, ptr %157, i64 %.2171194
  %159 = load double, ptr %158, align 8, !tbaa !37
  %160 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %159, ptr noundef %2)
  br i1 %160, label %161, label %167

161:                                              ; preds = %156
  %162 = load ptr, ptr %155, align 8, !tbaa !33
  %163 = getelementptr inbounds double, ptr %162, i64 %.2171194
  %164 = load double, ptr %163, align 8, !tbaa !37
  %165 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %164, ptr noundef %2)
  %166 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.0168195, double noundef %165, ptr noundef %2)
  br label %167

167:                                              ; preds = %156, %161
  %.1 = phi double [ %166, %161 ], [ %.0168195, %156 ]
  %168 = add nuw nsw i64 %.2171194, 1
  %169 = load i64, ptr %9, align 8, !tbaa !5
  %.not.not179 = icmp slt i64 %168, %169
  br i1 %.not.not179, label %156, label %._crit_edge198, !llvm.loop !38

._crit_edge198:                                   ; preds = %167, %._crit_edge192
  %.0168.lcssa = phi double [ 0.000000e+00, %._crit_edge192 ], [ %.1, %167 ]
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.895, double noundef %.0168.lcssa)
  %170 = load i64, ptr %9, align 8, !tbaa !5
  %.not.not180199 = icmp sgt i64 %170, 0
  br i1 %.not.not180199, label %.lr.ph203, label %._crit_edge204

.lr.ph203:                                        ; preds = %._crit_edge198
  %171 = getelementptr inbounds i8, ptr %0, i64 7440
  br label %172

172:                                              ; preds = %.lr.ph203, %183
  %.2201 = phi double [ 0.000000e+00, %.lr.ph203 ], [ %.3, %183 ]
  %.3172200 = phi i64 [ 0, %.lr.ph203 ], [ %184, %183 ]
  %173 = load ptr, ptr %171, align 8, !tbaa !33
  %174 = getelementptr inbounds double, ptr %173, i64 %.3172200
  %175 = load double, ptr %174, align 8, !tbaa !37
  %176 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %175, ptr noundef %2)
  br i1 %176, label %177, label %183

177:                                              ; preds = %172
  %178 = load ptr, ptr %171, align 8, !tbaa !33
  %179 = getelementptr inbounds double, ptr %178, i64 %.3172200
  %180 = load double, ptr %179, align 8, !tbaa !37
  %181 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %180, ptr noundef %2)
  %182 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.2201, double noundef %181, ptr noundef %2)
  br label %183

183:                                              ; preds = %172, %177
  %.3 = phi double [ %182, %177 ], [ %.2201, %172 ]
  %184 = add nuw nsw i64 %.3172200, 1
  %185 = load i64, ptr %9, align 8, !tbaa !5
  %.not.not180 = icmp slt i64 %184, %185
  br i1 %.not.not180, label %172, label %._crit_edge204, !llvm.loop !39

._crit_edge204:                                   ; preds = %183, %._crit_edge198
  %.2.lcssa = phi double [ 0.000000e+00, %._crit_edge198 ], [ %.3, %183 ]
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.896, double noundef %.2.lcssa)
  %186 = load i64, ptr %9, align 8, !tbaa !5
  %.not.not181206 = icmp slt i64 %186, %13
  br i1 %.not.not181206, label %.lr.ph210, label %._crit_edge211

.lr.ph210:                                        ; preds = %._crit_edge204
  %187 = getelementptr inbounds i8, ptr %0, i64 7376
  br label %188

188:                                              ; preds = %.lr.ph210, %199
  %.4208 = phi double [ 0.000000e+00, %.lr.ph210 ], [ %.5, %199 ]
  %.4173207 = phi i64 [ %186, %.lr.ph210 ], [ %200, %199 ]
  %189 = load ptr, ptr %187, align 8, !tbaa !33
  %190 = getelementptr inbounds double, ptr %189, i64 %.4173207
  %191 = load double, ptr %190, align 8, !tbaa !37
  %192 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %191, ptr noundef %2)
  br i1 %192, label %193, label %199

193:                                              ; preds = %188
  %194 = load ptr, ptr %187, align 8, !tbaa !33
  %195 = getelementptr inbounds double, ptr %194, i64 %.4173207
  %196 = load double, ptr %195, align 8, !tbaa !37
  %197 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %196, ptr noundef %2)
  %198 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.4208, double noundef %197, ptr noundef %2)
  br label %199

199:                                              ; preds = %188, %193
  %.5 = phi double [ %198, %193 ], [ %.4208, %188 ]
  %200 = add nsw i64 %.4173207, 1
  %.not.not181 = icmp slt i64 %200, %13
  br i1 %.not.not181, label %188, label %._crit_edge211, !llvm.loop !40

._crit_edge211:                                   ; preds = %199, %._crit_edge204
  %.4.lcssa = phi double [ 0.000000e+00, %._crit_edge204 ], [ %.5, %199 ]
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.897, double noundef %.4.lcssa)
  %201 = load i64, ptr %9, align 8, !tbaa !5
  %.not.not182213 = icmp slt i64 %201, %13
  br i1 %.not.not182213, label %.lr.ph217, label %._crit_edge218

.lr.ph217:                                        ; preds = %._crit_edge211
  %202 = getelementptr inbounds i8, ptr %0, i64 7440
  br label %203

203:                                              ; preds = %.lr.ph217, %214
  %.6215 = phi double [ 0.000000e+00, %.lr.ph217 ], [ %.7, %214 ]
  %.5174214 = phi i64 [ %201, %.lr.ph217 ], [ %215, %214 ]
  %204 = load ptr, ptr %202, align 8, !tbaa !33
  %205 = getelementptr inbounds double, ptr %204, i64 %.5174214
  %206 = load double, ptr %205, align 8, !tbaa !37
  %207 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %206, ptr noundef %2)
  br i1 %207, label %208, label %214

208:                                              ; preds = %203
  %209 = load ptr, ptr %202, align 8, !tbaa !33
  %210 = getelementptr inbounds double, ptr %209, i64 %.5174214
  %211 = load double, ptr %210, align 8, !tbaa !37
  %212 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %211, ptr noundef %2)
  %213 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.6215, double noundef %212, ptr noundef %2)
  br label %214

214:                                              ; preds = %203, %208
  %.7 = phi double [ %213, %208 ], [ %.6215, %203 ]
  %215 = add nsw i64 %.5174214, 1
  %.not.not182 = icmp slt i64 %215, %13
  br i1 %.not.not182, label %203, label %._crit_edge218, !llvm.loop !41

._crit_edge218:                                   ; preds = %214, %._crit_edge211
  %.6.lcssa = phi double [ 0.000000e+00, %._crit_edge211 ], [ %.7, %214 ]
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.898, double noundef %.6.lcssa)
  br label %216

216:                                              ; preds = %._crit_edge218, %62
  call void @_ZN11alglib_implL33reviseddualsimplex_dssoptimizewrkEPNS_16dualsimplexstateEPKNS_19dualsimplexsettingsEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %2)
  %217 = load i8, ptr %15, align 8, !tbaa !26, !range !30, !noundef !31
  %218 = trunc nuw i8 %217 to i1
  br i1 %218, label %219, label %275

219:                                              ; preds = %216
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.208)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.899)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.900)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.899)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.901)
  %220 = load i64, ptr %27, align 8, !tbaa !42
  %221 = trunc i64 %220 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.902, i32 noundef %221)
  %222 = load i64, ptr %28, align 8, !tbaa !43
  %223 = trunc i64 %222 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.903, i32 noundef %223)
  %224 = load i64, ptr %29, align 8, !tbaa !44
  %225 = trunc i64 %224 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.904, i32 noundef %225)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.905)
  %226 = getelementptr inbounds i8, ptr %0, i64 2824
  %227 = load i64, ptr %226, align 8, !tbaa !45
  %228 = trunc i64 %227 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.906, i32 noundef %228)
  %229 = getelementptr inbounds i8, ptr %0, i64 2832
  %230 = load i64, ptr %229, align 8, !tbaa !46
  %231 = trunc i64 %230 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.907, i32 noundef %231)
  %232 = load i64, ptr %226, align 8, !tbaa !45
  %233 = load i64, ptr %229, align 8, !tbaa !46
  %234 = add nsw i64 %233, %232
  %235 = sitofp i64 %234 to double
  %236 = sitofp i64 %232 to double
  %237 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %236, double noundef 1.000000e+00, ptr noundef %2)
  %238 = fdiv double %235, %237
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.908, double noundef %238)
  %239 = getelementptr inbounds i8, ptr %0, i64 2840
  %240 = load double, ptr %239, align 8, !tbaa !47
  %241 = getelementptr inbounds i8, ptr %0, i64 200
  %242 = load i64, ptr %241, align 8, !tbaa !48
  %243 = sitofp i64 %242 to double
  %244 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %243, double noundef 1.000000e+00, ptr noundef %2)
  %245 = load i64, ptr %226, align 8, !tbaa !45
  %246 = load i64, ptr %229, align 8, !tbaa !46
  %247 = add nsw i64 %246, %245
  %248 = sitofp i64 %247 to double
  %249 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %248, double noundef 1.000000e+00, ptr noundef %2)
  %250 = fmul double %244, %249
  %251 = fdiv double %240, %250
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.909, double noundef %251)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.910)
  %252 = load i8, ptr %21, align 1, !tbaa !27, !range !30, !noundef !31
  %253 = trunc nuw i8 %252 to i1
  br i1 %253, label %254, label %274

254:                                              ; preds = %219
  %255 = load double, ptr %42, align 8, !tbaa !49
  %256 = load i64, ptr %43, align 8, !tbaa !50
  %257 = sitofp i64 %256 to double
  %258 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %257, double noundef 1.000000e+00, ptr noundef %2)
  %259 = fdiv double %255, %258
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.911, double noundef %259)
  %260 = load double, ptr %40, align 8, !tbaa !51
  %261 = load i64, ptr %41, align 8, !tbaa !52
  %262 = sitofp i64 %261 to double
  %263 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %262, double noundef 1.000000e+00, ptr noundef %2)
  %264 = fdiv double %260, %263
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.912, double noundef %264)
  %265 = getelementptr inbounds i8, ptr %0, i64 1152
  %266 = load i64, ptr %265, align 8, !tbaa !53
  %267 = icmp eq i64 %266, 3
  br i1 %267, label %268, label %275

268:                                              ; preds = %254
  %269 = load double, ptr %44, align 8, !tbaa !54
  %270 = load i64, ptr %45, align 8, !tbaa !55
  %271 = sitofp i64 %270 to double
  %272 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %271, double noundef 1.000000e+00, ptr noundef %2)
  %273 = fdiv double %269, %272
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.913, double noundef %273)
  br label %275

274:                                              ; preds = %219
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.914)
  br label %275

275:                                              ; preds = %274, %268, %254, %216
  %276 = load i8, ptr %24, align 2, !tbaa !28, !range !30, !noundef !31
  %277 = trunc nuw i8 %276 to i1
  br i1 %277, label %278, label %300

278:                                              ; preds = %275
  %279 = call noundef i64 @_ZN11alglib_impl12ae_tickcountEv()
  %280 = sub nsw i64 %279, %.0
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.208)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.899)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.915)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.899)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.916)
  %281 = trunc i64 %280 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.917, i32 noundef %281)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.918)
  %282 = load i64, ptr %31, align 8, !tbaa !56
  %283 = trunc i64 %282 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.919, i32 noundef %283)
  %284 = load i64, ptr %32, align 8, !tbaa !57
  %285 = trunc i64 %284 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.920, i32 noundef %285)
  %286 = load i64, ptr %33, align 8, !tbaa !58
  %287 = trunc i64 %286 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.921, i32 noundef %287)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.922)
  %288 = load i64, ptr %34, align 8, !tbaa !59
  %289 = trunc i64 %288 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.923, i32 noundef %289)
  %290 = load i64, ptr %35, align 8, !tbaa !60
  %291 = trunc i64 %290 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.924, i32 noundef %291)
  %292 = load i64, ptr %36, align 8, !tbaa !61
  %293 = trunc i64 %292 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.925, i32 noundef %293)
  %294 = load i64, ptr %37, align 8, !tbaa !62
  %295 = trunc i64 %294 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.926, i32 noundef %295)
  %296 = load i64, ptr %38, align 8, !tbaa !63
  %297 = trunc i64 %296 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.927, i32 noundef %297)
  %298 = load i64, ptr %39, align 8, !tbaa !64
  %299 = trunc i64 %298 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.928, i32 noundef %299)
  br label %300

300:                                              ; preds = %278, %275
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #5
  ret void
}

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

declare noundef i64 @_ZN11alglib_impl12ae_tickcountEv() local_unnamed_addr #1

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

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

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

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

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


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