; 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::ipm2state" = type { i64, i64, i64, double, double, double, i64, i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::ae_vector", i8, double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ipm2vars", %"struct.alglib_impl::ipm2vars", %"struct.alglib_impl::ipm2vars", %"struct.alglib_impl::ipm2vars", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ipm2righthandside", i64, i64, i8, i8, i8, %"struct.alglib_impl::stimer", %"struct.alglib_impl::stimer", %"struct.alglib_impl::stimer", %"struct.alglib_impl::stimer", %"struct.alglib_impl::stimer", %"struct.alglib_impl::ipm2reducedsystem", %"struct.alglib_impl::ipm2righthandside", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::ipm2vars" = type { i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::stimer" = type { i64, i64, i8 }
%"struct.alglib_impl::ipm2reducedsystem" = type { %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::spcholanalysis", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::spcholanalysis" = type { i64, i64, i64, i8, i64, double, double, double, double, %"struct.alglib_impl::ae_vector", i8, i8, i8, i8, i8, %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i8, i8, %"struct.alglib_impl::spcholadj", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_nxpool", %"struct.alglib_impl::ae_nxpool", %"struct.alglib_impl::ae_nxpool", %"struct.alglib_impl::ae_nxpool", %"struct.alglib_impl::ae_nxpool", %"struct.alglib_impl::ae_nxpool", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::amdbuffer", %"struct.alglib_impl::priorityamdbuffers", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::spcholadj" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::ae_nxpool" = type { i64, i64, i64, i64, %"struct.alglib_impl::ae_dyn_block", %"struct.alglib_impl::ae_lock", %"struct.alglib_impl::ae_dyn_block" }
%"struct.alglib_impl::ae_lock" = type { ptr, %"struct.alglib_impl::ae_dyn_block", i8 }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%"struct.alglib_impl::amdbuffer" = type { i64, i8, i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::amdknset", %"struct.alglib_impl::amdknset", %"struct.alglib_impl::amdknset", %"struct.alglib_impl::amdllmatrix", %"struct.alglib_impl::amdvertexset", %"struct.alglib_impl::niset", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::niset", %"struct.alglib_impl::niset", %"struct.alglib_impl::niset", %"struct.alglib_impl::niset", %"struct.alglib_impl::niset", %"struct.alglib_impl::niset", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::niset", %"struct.alglib_impl::niset", %"struct.alglib_impl::amdknset", %"struct.alglib_impl::niset", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix" }
%"struct.alglib_impl::amdllmatrix" = type { i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64 }
%"struct.alglib_impl::amdvertexset" = type { i64, i8, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::amdknset" = type { i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64 }
%"struct.alglib_impl::niset" = type { i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64 }
%"struct.alglib_impl::priorityamdbuffers" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::amdbuffer", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix" }
%"struct.alglib_impl::ipm2righthandside" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::sparsematrix" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64, i64, i64, i64 }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.1 }
%union.anon.1 = type { ptr }
%"struct.alglib_impl::ae_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = type { ptr }

@.str.212 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.609 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.610 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.612 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.613 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.614 = external hidden unnamed_addr constant [103 x i8], align 1
@.str.615 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.616 = external hidden unnamed_addr constant [100 x i8], align 1
@.str.617 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.626 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.627 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.628 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.629 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.630 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.631 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.632 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.633 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.634 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.635 = external hidden unnamed_addr constant [83 x i8], align 1
@.str.669 = external hidden unnamed_addr constant [11 x i8], align 1
@_ZN11alglib_implL30ipm2solver_primalstagnationlenE = external hidden global i64, align 8
@_ZN11alglib_implL28ipm2solver_dualstagnationlenE = external hidden global i64, align 8
@.str.670 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.671 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.672 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.673 = external hidden unnamed_addr constant [64 x i8], align 1
@_ZN11alglib_implL35ipm2solver_minitersbeforesafeguardsE = external hidden global double, align 8
@_ZN11alglib_implL24ipm2solver_badsteplengthE = external hidden global double, align 8
@.str.674 = external hidden unnamed_addr constant [90 x i8], align 1
@_ZN11alglib_implL41ipm2solver_minitersbeforeeworststagnationE = external hidden global i64, align 8
@_ZN11alglib_implL26ipm2solver_stagnationdeltaE = external hidden global double, align 8
@_ZN11alglib_implL28ipm2solver_primalinfeasible1E = external hidden global double, align 8
@_ZN11alglib_implL35ipm2solver_minitersbeforestagnationE = external hidden global i64, align 8
@_ZN11alglib_implL26ipm2solver_dualinfeasible1E = external hidden global double, align 8
@_ZN11alglib_implL35ipm2solver_itersfortoostringentcondE = external hidden global i64, align 8
@_ZN11alglib_implL15ipm2solver_bigyE = external hidden global double, align 8
@_ZN11alglib_implL18ipm2solver_ygrowthE = external hidden global double, align 8
@_ZN11alglib_implL35ipm2solver_minitersbeforeinfeasibleE = external hidden global i64, align 8
@.str.675 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.676 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.677 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.678 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.679 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.680 = external hidden unnamed_addr constant [36 x i8], align 1

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

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

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

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

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

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

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

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

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

declare noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef, ptr 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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl12ipm2optimizeEPNS_9ipm2stateEbPNS_9ae_vectorES3_S3_PlPNS_8ae_stateE(ptr noundef %0, i1 noundef zeroext %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6) #2 {
  %8 = alloca ptr, align 8
  %9 = alloca i8, align 1
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca i64, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  %41 = alloca double, align 8
  %42 = alloca double, align 8
  %43 = alloca double, align 8
  %44 = alloca i64, align 8
  %45 = alloca double, align 8
  %46 = alloca double, align 8
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca i8, align 1
  %50 = alloca double, align 8
  store ptr %0, ptr %8, align 8, !tbaa !5
  %51 = zext i1 %1 to i8
  store i8 %51, ptr %9, align 1, !tbaa !9
  store ptr %2, ptr %10, align 8, !tbaa !5
  store ptr %3, ptr %11, align 8, !tbaa !5
  store ptr %4, ptr %12, align 8, !tbaa !5
  store ptr %5, ptr %13, align 8, !tbaa !5
  store ptr %6, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #3
  %52 = load ptr, ptr %13, align 8, !tbaa !5
  store i64 0, ptr %52, align 8, !tbaa !11
  %53 = load ptr, ptr %8, align 8, !tbaa !5
  %54 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %53, i32 0, i32 0
  %55 = load i64, ptr %54, align 8, !tbaa !13
  store i64 %55, ptr %15, align 8, !tbaa !11
  %56 = load ptr, ptr %8, align 8, !tbaa !5
  %57 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %56, i32 0, i32 2
  %58 = load i64, ptr %57, align 8, !tbaa !34
  store i64 %58, ptr %16, align 8, !tbaa !11
  %59 = load ptr, ptr %8, align 8, !tbaa !5
  %60 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %59, i32 0, i32 34
  %61 = load i64, ptr %60, align 8, !tbaa !35
  store i64 %61, ptr %17, align 8, !tbaa !11
  %62 = call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef @.str.609)
  %63 = load ptr, ptr %8, align 8, !tbaa !5
  %64 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %63, i32 0, i32 51
  %65 = zext i1 %62 to i8
  store i8 %65, ptr %64, align 8, !tbaa !36
  %66 = load ptr, ptr %8, align 8, !tbaa !5
  %67 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %66, i32 0, i32 51
  %68 = load i8, ptr %67, align 8, !tbaa !36, !range !37, !noundef !38
  %69 = trunc i8 %68 to i1
  br i1 %69, label %72, label %70

70:                                               ; preds = %7
  %71 = call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef @.str.669)
  br label %72

72:                                               ; preds = %70, %7
  %73 = phi i1 [ true, %7 ], [ %71, %70 ]
  %74 = load ptr, ptr %8, align 8, !tbaa !5
  %75 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %74, i32 0, i32 52
  %76 = zext i1 %73 to i8
  store i8 %76, ptr %75, align 1, !tbaa !39
  %77 = load ptr, ptr %8, align 8, !tbaa !5
  %78 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %77, i32 0, i32 51
  %79 = load i8, ptr %78, align 8, !tbaa !36, !range !37, !noundef !38
  %80 = trunc i8 %79 to i1
  br i1 %80, label %81, label %83

81:                                               ; preds = %72
  %82 = call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef @.str.610)
  br label %83

83:                                               ; preds = %81, %72
  %84 = phi i1 [ false, %72 ], [ %82, %81 ]
  %85 = load ptr, ptr %8, align 8, !tbaa !5
  %86 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %85, i32 0, i32 53
  %87 = zext i1 %84 to i8
  store i8 %87, ptr %86, align 2, !tbaa !40
  %88 = load i64, ptr %15, align 8, !tbaa !11
  %89 = load ptr, ptr %10, align 8, !tbaa !5
  %90 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %88, double noundef 0.000000e+00, ptr noundef %89, ptr noundef %90)
  %91 = load i64, ptr %15, align 8, !tbaa !11
  %92 = load ptr, ptr %11, align 8, !tbaa !5
  %93 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %91, double noundef 0.000000e+00, ptr noundef %92, ptr noundef %93)
  %94 = load i64, ptr %17, align 8, !tbaa !11
  %95 = load ptr, ptr %12, align 8, !tbaa !5
  %96 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %94, double noundef 0.000000e+00, ptr noundef %95, ptr noundef %96)
  %97 = load i64, ptr @_ZN11alglib_implL30ipm2solver_primalstagnationlenE, align 8, !tbaa !11
  %98 = load i64, ptr @_ZN11alglib_implL28ipm2solver_dualstagnationlenE, align 8, !tbaa !11
  %99 = icmp slt i64 %97, %98
  %100 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %99, ptr noundef @.str.670, ptr noundef %100)
  %101 = load ptr, ptr %8, align 8, !tbaa !5
  %102 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %101, i32 0, i32 52
  %103 = load i8, ptr %102, align 1, !tbaa !39, !range !37, !noundef !38
  %104 = trunc i8 %103 to i1
  br i1 %104, label %105, label %124

105:                                              ; preds = %83
  %106 = load ptr, ptr %8, align 8, !tbaa !5
  %107 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %106, i32 0, i32 54
  %108 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl10stimerinitEPNS_6stimerEPNS_8ae_stateE(ptr noundef %107, ptr noundef %108)
  %109 = load ptr, ptr %8, align 8, !tbaa !5
  %110 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %109, i32 0, i32 55
  %111 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl10stimerinitEPNS_6stimerEPNS_8ae_stateE(ptr noundef %110, ptr noundef %111)
  %112 = load ptr, ptr %8, align 8, !tbaa !5
  %113 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %112, i32 0, i32 56
  %114 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl10stimerinitEPNS_6stimerEPNS_8ae_stateE(ptr noundef %113, ptr noundef %114)
  %115 = load ptr, ptr %8, align 8, !tbaa !5
  %116 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %115, i32 0, i32 57
  %117 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl10stimerinitEPNS_6stimerEPNS_8ae_stateE(ptr noundef %116, ptr noundef %117)
  %118 = load ptr, ptr %8, align 8, !tbaa !5
  %119 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %118, i32 0, i32 58
  %120 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl10stimerinitEPNS_6stimerEPNS_8ae_stateE(ptr noundef %119, ptr noundef %120)
  %121 = load ptr, ptr %8, align 8, !tbaa !5
  %122 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %121, i32 0, i32 54
  %123 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl11stimerstartEPNS_6stimerEPNS_8ae_stateE(ptr noundef %122, ptr noundef %123)
  br label %124

124:                                              ; preds = %105, %83
  %125 = load ptr, ptr %8, align 8, !tbaa !5
  %126 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %125, i32 0, i32 51
  %127 = load i8, ptr %126, align 8, !tbaa !36, !range !37, !noundef !38
  %128 = trunc i8 %127 to i1
  br i1 %128, label %134, label %129

129:                                              ; preds = %124
  %130 = load ptr, ptr %8, align 8, !tbaa !5
  %131 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %130, i32 0, i32 52
  %132 = load i8, ptr %131, align 1, !tbaa !39, !range !37, !noundef !38
  %133 = trunc i8 %132 to i1
  br i1 %133, label %134, label %135

134:                                              ; preds = %129, %124
  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.613)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.212)
  br label %135

135:                                              ; preds = %134, %129
  %136 = load ptr, ptr %14, align 8, !tbaa !5
  %137 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef 5.000000e-16, double noundef 7.500000e-01, ptr noundef %136)
  store double %137, ptr %19, align 8, !tbaa !41
  store double 5.000000e-16, ptr %22, align 8, !tbaa !41
  store double 5.000000e-16, ptr %23, align 8, !tbaa !41
  store double 0x3CF6849B86A12B9C, ptr %20, align 8, !tbaa !41
  %138 = load ptr, ptr %14, align 8, !tbaa !5
  %139 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %138)
  %140 = load ptr, ptr %14, align 8, !tbaa !5
  %141 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %139, ptr noundef %140)
  store double %141, ptr %21, align 8, !tbaa !41
  %142 = load ptr, ptr %8, align 8, !tbaa !5
  %143 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %142, i32 0, i32 49
  store i64 0, ptr %143, align 8, !tbaa !42
  %144 = load ptr, ptr %8, align 8, !tbaa !5
  %145 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %144, i32 0, i32 50
  store i64 0, ptr %145, align 8, !tbaa !43
  store double 5.000000e-14, ptr %50, align 8, !tbaa !41
  %146 = load ptr, ptr %8, align 8, !tbaa !5
  %147 = load double, ptr %19, align 8, !tbaa !41
  %148 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL22ipm2solver_ipm2powerupEPNS_9ipm2stateEdPNS_8ae_stateE(ptr noundef %146, double noundef %147, ptr noundef %148)
  %149 = load ptr, ptr %8, align 8, !tbaa !5
  %150 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %149, i32 0, i32 36
  %151 = load ptr, ptr %8, align 8, !tbaa !5
  %152 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %151, i32 0, i32 35
  %153 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL23ipm2solver_varsinitfromEPNS_8ipm2varsEPKS0_PNS_8ae_stateE(ptr noundef %150, ptr noundef %152, ptr noundef %153)
  %154 = load ptr, ptr %8, align 8, !tbaa !5
  %155 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %154, i32 0, i32 37
  %156 = load i64, ptr %16, align 8, !tbaa !11
  %157 = load i64, ptr %17, align 8, !tbaa !11
  %158 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL25ipm2solver_varsinitbyzeroEPNS_8ipm2varsEllPNS_8ae_stateE(ptr noundef %155, i64 noundef %156, i64 noundef %157, ptr noundef %158)
  %159 = load ptr, ptr %8, align 8, !tbaa !5
  %160 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %159, i32 0, i32 38
  %161 = load i64, ptr %16, align 8, !tbaa !11
  %162 = load i64, ptr %17, align 8, !tbaa !11
  %163 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL25ipm2solver_varsinitbyzeroEPNS_8ipm2varsEllPNS_8ae_stateE(ptr noundef %160, i64 noundef %161, i64 noundef %162, ptr noundef %163)
  store i64 -1, ptr %44, align 8, !tbaa !11
  store double 1.000000e+300, ptr %45, align 8, !tbaa !41
  store double 1.000000e+300, ptr %46, align 8, !tbaa !41
  store double 1.000000e+300, ptr %47, align 8, !tbaa !41
  store double 1.000000e+300, ptr %48, align 8, !tbaa !41
  %164 = load ptr, ptr %8, align 8, !tbaa !5
  %165 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL24ipm2solver_traceprogressEPNS_9ipm2stateEdddPNS_8ae_stateE(ptr noundef %164, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, ptr noundef %165)
  store double 0.000000e+00, ptr %42, align 8, !tbaa !41
  %166 = load double, ptr %42, align 8, !tbaa !41
  %167 = load i64, ptr %17, align 8, !tbaa !11
  %168 = load ptr, ptr %8, align 8, !tbaa !5
  %169 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %168, i32 0, i32 35
  %170 = getelementptr inbounds %"struct.alglib_impl::ipm2vars", ptr %169, i32 0, i32 5
  %171 = load ptr, ptr %14, align 8, !tbaa !5
  %172 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %167, ptr noundef %170, ptr noundef %171)
  %173 = load ptr, ptr %14, align 8, !tbaa !5
  %174 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %166, double noundef %172, ptr noundef %173)
  store double %174, ptr %42, align 8, !tbaa !41
  %175 = load double, ptr %42, align 8, !tbaa !41
  %176 = load i64, ptr %16, align 8, !tbaa !11
  %177 = load ptr, ptr %8, align 8, !tbaa !5
  %178 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %177, i32 0, i32 35
  %179 = getelementptr inbounds %"struct.alglib_impl::ipm2vars", ptr %178, i32 0, i32 6
  %180 = load ptr, ptr %14, align 8, !tbaa !5
  %181 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %176, ptr noundef %179, ptr noundef %180)
  %182 = load ptr, ptr %14, align 8, !tbaa !5
  %183 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %175, double noundef %181, ptr noundef %182)
  store double %183, ptr %42, align 8, !tbaa !41
  %184 = load double, ptr %42, align 8, !tbaa !41
  %185 = load i64, ptr %16, align 8, !tbaa !11
  %186 = load ptr, ptr %8, align 8, !tbaa !5
  %187 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %186, i32 0, i32 35
  %188 = getelementptr inbounds %"struct.alglib_impl::ipm2vars", ptr %187, i32 0, i32 7
  %189 = load ptr, ptr %14, align 8, !tbaa !5
  %190 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %185, ptr noundef %188, ptr noundef %189)
  %191 = load ptr, ptr %14, align 8, !tbaa !5
  %192 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %184, double noundef %190, ptr noundef %191)
  store double %192, ptr %42, align 8, !tbaa !41
  store i8 1, ptr %49, align 1, !tbaa !9
  store i64 0, ptr %30, align 8, !tbaa !11
  store i64 0, ptr %31, align 8, !tbaa !11
  %193 = load ptr, ptr %13, align 8, !tbaa !5
  store i64 7, ptr %193, align 8, !tbaa !11
  store double 1.000000e+300, ptr %32, align 8, !tbaa !41
  store double 1.000000e+300, ptr %33, align 8, !tbaa !41
  store double 0.000000e+00, ptr %28, align 8, !tbaa !41
  %194 = load ptr, ptr %8, align 8, !tbaa !5
  %195 = load ptr, ptr %8, align 8, !tbaa !5
  %196 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %195, i32 0, i32 35
  %197 = getelementptr inbounds %"struct.alglib_impl::ipm2vars", ptr %196, i32 0, i32 2
  %198 = load ptr, ptr %8, align 8, !tbaa !5
  %199 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %198, i32 0, i32 35
  %200 = getelementptr inbounds %"struct.alglib_impl::ipm2vars", ptr %199, i32 0, i32 5
  %201 = load ptr, ptr %8, align 8, !tbaa !5
  %202 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %201, i32 0, i32 45
  %203 = load ptr, ptr %8, align 8, !tbaa !5
  %204 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %203, i32 0, i32 46
  %205 = load ptr, ptr %8, align 8, !tbaa !5
  %206 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %205, i32 0, i32 47
  %207 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL23ipm2solver_ipm2multiplyEPKNS_9ipm2stateEPKNS_9ae_vectorES5_PS3_S6_S6_PNS_8ae_stateE(ptr noundef %194, ptr noundef %197, ptr noundef %200, ptr noundef %202, ptr noundef %204, ptr noundef %206, ptr noundef %207)
  %208 = load ptr, ptr %8, align 8, !tbaa !5
  %209 = load ptr, ptr %8, align 8, !tbaa !5
  %210 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %209, i32 0, i32 35
  %211 = load ptr, ptr %14, align 8, !tbaa !5
  %212 = call noundef double @_ZN11alglib_implL24ipm2solver_varscomputemuEPKNS_9ipm2stateEPKNS_8ipm2varsEPNS_8ae_stateE(ptr noundef %208, ptr noundef %210, ptr noundef %211)
  store double %212, ptr %25, align 8, !tbaa !41
  %213 = load ptr, ptr %8, align 8, !tbaa !5
  %214 = load ptr, ptr %8, align 8, !tbaa !5
  %215 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %214, i32 0, i32 35
  %216 = load ptr, ptr %8, align 8, !tbaa !5
  %217 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %216, i32 0, i32 45
  %218 = load ptr, ptr %8, align 8, !tbaa !5
  %219 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %218, i32 0, i32 46
  %220 = load ptr, ptr %8, align 8, !tbaa !5
  %221 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %220, i32 0, i32 47
  %222 = load ptr, ptr %8, align 8, !tbaa !5
  %223 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %222, i32 0, i32 48
  %224 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL29ipm2solver_rhscomputeprimdualEPKNS_9ipm2stateEPKNS_8ipm2varsEPKNS_9ae_vectorES8_S8_PNS_17ipm2righthandsideEPNS_8ae_stateE(ptr noundef %213, ptr noundef %215, ptr noundef %217, ptr noundef %219, ptr noundef %221, ptr noundef %223, ptr noundef %224)
  store i64 0, ptr %24, align 8, !tbaa !11
  br label %225

225:                                              ; preds = %661, %135
  %226 = load i64, ptr %24, align 8, !tbaa !11
  %227 = load ptr, ptr %8, align 8, !tbaa !5
  %228 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %227, i32 0, i32 6
  %229 = load i64, ptr %228, align 8, !tbaa !44
  %230 = sub nsw i64 %229, 1
  %231 = icmp sle i64 %226, %230
  br i1 %231, label %232, label %664

232:                                              ; preds = %225
  %233 = load ptr, ptr %8, align 8, !tbaa !5
  %234 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %233, i32 0, i32 51
  %235 = load i8, ptr %234, align 8, !tbaa !36, !range !37, !noundef !38
  %236 = trunc i8 %235 to i1
  br i1 %236, label %237, label %240

237:                                              ; preds = %232
  %238 = load i64, ptr %24, align 8, !tbaa !11
  %239 = trunc i64 %238 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.614, i32 noundef %239)
  br label %240

240:                                              ; preds = %237, %232
  %241 = load double, ptr %20, align 8, !tbaa !41
  %242 = load double, ptr %21, align 8, !tbaa !41
  %243 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %241, double noundef %242)
  br i1 %243, label %244, label %252

244:                                              ; preds = %240
  %245 = load ptr, ptr %8, align 8, !tbaa !5
  %246 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %245, i32 0, i32 51
  %247 = load i8, ptr %246, align 8, !tbaa !36, !range !37, !noundef !38
  %248 = trunc i8 %247 to i1
  br i1 %248, label %249, label %250

249:                                              ; preds = %244
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.615)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.616)
  br label %250

250:                                              ; preds = %249, %244
  %251 = load ptr, ptr %13, align 8, !tbaa !5
  store i64 7, ptr %251, align 8, !tbaa !11
  br label %664

252:                                              ; preds = %240
  %253 = load ptr, ptr %8, align 8, !tbaa !5
  %254 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %253, i32 0, i32 59
  %255 = load ptr, ptr %8, align 8, !tbaa !5
  %256 = load ptr, ptr %8, align 8, !tbaa !5
  %257 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %256, i32 0, i32 35
  %258 = load double, ptr %22, align 8, !tbaa !41
  %259 = load double, ptr %23, align 8, !tbaa !41
  %260 = load double, ptr %20, align 8, !tbaa !41
  %261 = load double, ptr %20, align 8, !tbaa !41
  %262 = load ptr, ptr %14, align 8, !tbaa !5
  %263 = call noundef zeroext i1 @_ZN11alglib_implL44ipm2solver_reducedsystemcomputefactorizationEPNS_17ipm2reducedsystemEPNS_9ipm2stateEPKNS_8ipm2varsEddddPNS_8ae_stateE(ptr noundef %254, ptr noundef %255, ptr noundef %257, double noundef %258, double noundef %259, double noundef %260, double noundef %261, ptr noundef %262)
  br i1 %263, label %274, label %264

264:                                              ; preds = %252
  %265 = load double, ptr %20, align 8, !tbaa !41
  %266 = fmul double 1.000000e+01, %265
  store double %266, ptr %20, align 8, !tbaa !41
  %267 = load ptr, ptr %8, align 8, !tbaa !5
  %268 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %267, i32 0, i32 51
  %269 = load i8, ptr %268, align 8, !tbaa !36, !range !37, !noundef !38
  %270 = trunc i8 %269 to i1
  br i1 %270, label %271, label %273

271:                                              ; preds = %264
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.617)
  %272 = load double, ptr %20, align 8, !tbaa !41
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.671, double noundef %272)
  br label %273

273:                                              ; preds = %271, %264
  br label %661

274:                                              ; preds = %252
  %275 = load ptr, ptr %8, align 8, !tbaa !5
  %276 = load ptr, ptr %8, align 8, !tbaa !5
  %277 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %276, i32 0, i32 35
  %278 = load ptr, ptr %8, align 8, !tbaa !5
  %279 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %278, i32 0, i32 48
  %280 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL37ipm2solver_rhsrecomputegammapredictorEPKNS_9ipm2stateEPKNS_8ipm2varsEdPNS_17ipm2righthandsideEPNS_8ae_stateE(ptr noundef %275, ptr noundef %277, double noundef 0.000000e+00, ptr noundef %279, ptr noundef %280)
  %281 = load ptr, ptr %8, align 8, !tbaa !5
  %282 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %281, i32 0, i32 59
  %283 = load ptr, ptr %8, align 8, !tbaa !5
  %284 = load ptr, ptr %8, align 8, !tbaa !5
  %285 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %284, i32 0, i32 35
  %286 = load ptr, ptr %8, align 8, !tbaa !5
  %287 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %286, i32 0, i32 48
  %288 = load ptr, ptr %8, align 8, !tbaa !5
  %289 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %288, i32 0, i32 37
  %290 = load ptr, ptr %14, align 8, !tbaa !5
  %291 = call noundef zeroext i1 @_ZN11alglib_implL29ipm2solver_reducedsystemsolveEPNS_17ipm2reducedsystemEPNS_9ipm2stateEPKNS_8ipm2varsEPKNS_17ipm2righthandsideEPS4_PNS_8ae_stateE(ptr noundef %282, ptr noundef %283, ptr noundef %285, ptr noundef %287, ptr noundef %289, ptr noundef %290)
  br i1 %291, label %302, label %292

292:                                              ; preds = %274
  %293 = load double, ptr %20, align 8, !tbaa !41
  %294 = fmul double 1.000000e+01, %293
  store double %294, ptr %20, align 8, !tbaa !41
  %295 = load ptr, ptr %8, align 8, !tbaa !5
  %296 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %295, i32 0, i32 51
  %297 = load i8, ptr %296, align 8, !tbaa !36, !range !37, !noundef !38
  %298 = trunc i8 %297 to i1
  br i1 %298, label %299, label %301

299:                                              ; preds = %292
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.672)
  %300 = load double, ptr %20, align 8, !tbaa !41
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.671, double noundef %300)
  br label %301

301:                                              ; preds = %299, %292
  br label %661

302:                                              ; preds = %274
  %303 = load ptr, ptr %8, align 8, !tbaa !5
  %304 = load ptr, ptr %8, align 8, !tbaa !5
  %305 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %304, i32 0, i32 35
  %306 = load ptr, ptr %8, align 8, !tbaa !5
  %307 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %306, i32 0, i32 37
  %308 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL32ipm2solver_ipm2computesteplengthEPKNS_9ipm2stateEPKNS_8ipm2varsES5_PdPNS_8ae_stateE(ptr noundef %303, ptr noundef %305, ptr noundef %307, ptr noundef %27, ptr noundef %308)
  %309 = load ptr, ptr %8, align 8, !tbaa !5
  %310 = load ptr, ptr %8, align 8, !tbaa !5
  %311 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %310, i32 0, i32 35
  %312 = load ptr, ptr %8, align 8, !tbaa !5
  %313 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %312, i32 0, i32 37
  %314 = load double, ptr %27, align 8, !tbaa !41
  %315 = load ptr, ptr %14, align 8, !tbaa !5
  %316 = call noundef double @_ZN11alglib_implL29ipm2solver_varscomputemutrialEPKNS_9ipm2stateEPKNS_8ipm2varsES5_dPNS_8ae_stateE(ptr noundef %309, ptr noundef %311, ptr noundef %313, double noundef %314, ptr noundef %315)
  store double %316, ptr %26, align 8, !tbaa !41
  %317 = load ptr, ptr %8, align 8, !tbaa !5
  %318 = load ptr, ptr %8, align 8, !tbaa !5
  %319 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %318, i32 0, i32 35
  %320 = load double, ptr %26, align 8, !tbaa !41
  %321 = load double, ptr %25, align 8, !tbaa !41
  %322 = fadd double %321, 5.000000e-16
  %323 = fdiv double %320, %322
  %324 = load ptr, ptr %14, align 8, !tbaa !5
  %325 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef %323, double noundef 3.000000e+00, ptr noundef %324)
  %326 = load double, ptr %25, align 8, !tbaa !41
  %327 = fmul double %325, %326
  %328 = load ptr, ptr %8, align 8, !tbaa !5
  %329 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %328, i32 0, i32 37
  %330 = load ptr, ptr %8, align 8, !tbaa !5
  %331 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %330, i32 0, i32 48
  %332 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL36ipm2solver_rhsrecomputegammamehrotraEPKNS_9ipm2stateEPKNS_8ipm2varsEdS5_PNS_17ipm2righthandsideEPNS_8ae_stateE(ptr noundef %317, ptr noundef %319, double noundef %327, ptr noundef %329, ptr noundef %331, ptr noundef %332)
  %333 = load ptr, ptr %8, align 8, !tbaa !5
  %334 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %333, i32 0, i32 59
  %335 = load ptr, ptr %8, align 8, !tbaa !5
  %336 = load ptr, ptr %8, align 8, !tbaa !5
  %337 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %336, i32 0, i32 35
  %338 = load ptr, ptr %8, align 8, !tbaa !5
  %339 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %338, i32 0, i32 48
  %340 = load ptr, ptr %8, align 8, !tbaa !5
  %341 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %340, i32 0, i32 38
  %342 = load ptr, ptr %14, align 8, !tbaa !5
  %343 = call noundef zeroext i1 @_ZN11alglib_implL29ipm2solver_reducedsystemsolveEPNS_17ipm2reducedsystemEPNS_9ipm2stateEPKNS_8ipm2varsEPKNS_17ipm2righthandsideEPS4_PNS_8ae_stateE(ptr noundef %334, ptr noundef %335, ptr noundef %337, ptr noundef %339, ptr noundef %341, ptr noundef %342)
  br i1 %343, label %354, label %344

344:                                              ; preds = %302
  %345 = load double, ptr %20, align 8, !tbaa !41
  %346 = fmul double 1.000000e+01, %345
  store double %346, ptr %20, align 8, !tbaa !41
  %347 = load ptr, ptr %8, align 8, !tbaa !5
  %348 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %347, i32 0, i32 51
  %349 = load i8, ptr %348, align 8, !tbaa !36, !range !37, !noundef !38
  %350 = trunc i8 %349 to i1
  br i1 %350, label %351, label %353

351:                                              ; preds = %344
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.673)
  %352 = load double, ptr %20, align 8, !tbaa !41
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.671, double noundef %352)
  br label %353

353:                                              ; preds = %351, %344
  br label %661

354:                                              ; preds = %302
  %355 = load ptr, ptr %8, align 8, !tbaa !5
  %356 = load ptr, ptr %8, align 8, !tbaa !5
  %357 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %356, i32 0, i32 35
  %358 = load ptr, ptr %8, align 8, !tbaa !5
  %359 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %358, i32 0, i32 38
  %360 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL32ipm2solver_ipm2computesteplengthEPKNS_9ipm2stateEPKNS_8ipm2varsES5_PdPNS_8ae_stateE(ptr noundef %355, ptr noundef %357, ptr noundef %359, ptr noundef %29, ptr noundef %360)
  %361 = load i64, ptr %24, align 8, !tbaa !11
  %362 = sitofp i64 %361 to double
  %363 = load double, ptr @_ZN11alglib_implL35ipm2solver_minitersbeforesafeguardsE, align 8, !tbaa !41
  %364 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %362, double noundef %363)
  br i1 %364, label %365, label %383

365:                                              ; preds = %354
  %366 = load double, ptr %29, align 8, !tbaa !41
  %367 = load double, ptr @_ZN11alglib_implL24ipm2solver_badsteplengthE, align 8, !tbaa !41
  %368 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %366, double noundef %367)
  br i1 %368, label %369, label %383

369:                                              ; preds = %365
  %370 = load double, ptr %28, align 8, !tbaa !41
  %371 = load double, ptr @_ZN11alglib_implL24ipm2solver_badsteplengthE, align 8, !tbaa !41
  %372 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %370, double noundef %371)
  br i1 %372, label %373, label %383

373:                                              ; preds = %369
  %374 = load double, ptr %20, align 8, !tbaa !41
  %375 = fmul double 1.000000e+01, %374
  store double %375, ptr %20, align 8, !tbaa !41
  %376 = load ptr, ptr %8, align 8, !tbaa !5
  %377 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %376, i32 0, i32 51
  %378 = load i8, ptr %377, align 8, !tbaa !36, !range !37, !noundef !38
  %379 = trunc i8 %378 to i1
  br i1 %379, label %380, label %382

380:                                              ; preds = %373
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.674)
  %381 = load double, ptr %20, align 8, !tbaa !41
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.671, double noundef %381)
  br label %382

382:                                              ; preds = %380, %373
  br label %661

383:                                              ; preds = %369, %365, %354
  %384 = load ptr, ptr %8, align 8, !tbaa !5
  %385 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %384, i32 0, i32 35
  %386 = load ptr, ptr %8, align 8, !tbaa !5
  %387 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %386, i32 0, i32 38
  %388 = load double, ptr %29, align 8, !tbaa !41
  %389 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL22ipm2solver_varsaddstepEPNS_8ipm2varsEPKS0_dPNS_8ae_stateE(ptr noundef %385, ptr noundef %387, double noundef %388, ptr noundef %389)
  %390 = load ptr, ptr %8, align 8, !tbaa !5
  %391 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %390, i32 0, i32 49
  %392 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %391, ptr noundef %392)
  %393 = load double, ptr %29, align 8, !tbaa !41
  store double %393, ptr %28, align 8, !tbaa !41
  %394 = load ptr, ptr %8, align 8, !tbaa !5
  %395 = load double, ptr %25, align 8, !tbaa !41
  %396 = load double, ptr %27, align 8, !tbaa !41
  %397 = load double, ptr %29, align 8, !tbaa !41
  %398 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL24ipm2solver_traceprogressEPNS_9ipm2stateEdddPNS_8ae_stateE(ptr noundef %394, double noundef %395, double noundef %396, double noundef %397, ptr noundef %398)
  %399 = load ptr, ptr %8, align 8, !tbaa !5
  %400 = load ptr, ptr %8, align 8, !tbaa !5
  %401 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %400, i32 0, i32 35
  %402 = getelementptr inbounds %"struct.alglib_impl::ipm2vars", ptr %401, i32 0, i32 2
  %403 = load ptr, ptr %8, align 8, !tbaa !5
  %404 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %403, i32 0, i32 35
  %405 = getelementptr inbounds %"struct.alglib_impl::ipm2vars", ptr %404, i32 0, i32 5
  %406 = load ptr, ptr %8, align 8, !tbaa !5
  %407 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %406, i32 0, i32 45
  %408 = load ptr, ptr %8, align 8, !tbaa !5
  %409 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %408, i32 0, i32 46
  %410 = load ptr, ptr %8, align 8, !tbaa !5
  %411 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %410, i32 0, i32 47
  %412 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL23ipm2solver_ipm2multiplyEPKNS_9ipm2stateEPKNS_9ae_vectorES5_PS3_S6_S6_PNS_8ae_stateE(ptr noundef %399, ptr noundef %402, ptr noundef %405, ptr noundef %407, ptr noundef %409, ptr noundef %411, ptr noundef %412)
  %413 = load ptr, ptr %8, align 8, !tbaa !5
  %414 = load ptr, ptr %8, align 8, !tbaa !5
  %415 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %414, i32 0, i32 35
  %416 = load ptr, ptr %8, align 8, !tbaa !5
  %417 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %416, i32 0, i32 45
  %418 = load ptr, ptr %8, align 8, !tbaa !5
  %419 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %418, i32 0, i32 46
  %420 = load ptr, ptr %8, align 8, !tbaa !5
  %421 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %420, i32 0, i32 47
  %422 = load ptr, ptr %8, align 8, !tbaa !5
  %423 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %422, i32 0, i32 48
  %424 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL29ipm2solver_rhscomputeprimdualEPKNS_9ipm2stateEPKNS_8ipm2varsEPKNS_9ae_vectorES8_S8_PNS_17ipm2righthandsideEPNS_8ae_stateE(ptr noundef %413, ptr noundef %415, ptr noundef %417, ptr noundef %419, ptr noundef %421, ptr noundef %423, ptr noundef %424)
  %425 = load ptr, ptr %8, align 8, !tbaa !5
  %426 = load ptr, ptr %8, align 8, !tbaa !5
  %427 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %426, i32 0, i32 35
  %428 = load ptr, ptr %14, align 8, !tbaa !5
  %429 = call noundef double @_ZN11alglib_implL24ipm2solver_varscomputemuEPKNS_9ipm2stateEPKNS_8ipm2varsEPNS_8ae_stateE(ptr noundef %425, ptr noundef %427, ptr noundef %428)
  store double %429, ptr %25, align 8, !tbaa !41
  %430 = load double, ptr %32, align 8, !tbaa !41
  store double %430, ptr %36, align 8, !tbaa !41
  %431 = load double, ptr %33, align 8, !tbaa !41
  store double %431, ptr %37, align 8, !tbaa !41
  %432 = load ptr, ptr %8, align 8, !tbaa !5
  %433 = load ptr, ptr %8, align 8, !tbaa !5
  %434 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %433, i32 0, i32 48
  %435 = load ptr, ptr %8, align 8, !tbaa !5
  %436 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %435, i32 0, i32 45
  %437 = load ptr, ptr %8, align 8, !tbaa !5
  %438 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %437, i32 0, i32 46
  %439 = load ptr, ptr %8, align 8, !tbaa !5
  %440 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %439, i32 0, i32 47
  %441 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL24ipm2solver_computeerrorsEPKNS_9ipm2stateEPKNS_17ipm2righthandsideEPKNS_9ae_vectorES8_S8_PdS9_S9_S9_S9_PNS_8ae_stateE(ptr noundef %432, ptr noundef %434, ptr noundef %436, ptr noundef %438, ptr noundef %440, ptr noundef %32, ptr noundef %33, ptr noundef %34, ptr noundef %35, ptr noundef %38, ptr noundef %441)
  %442 = load double, ptr %38, align 8, !tbaa !41
  store double %442, ptr %41, align 8, !tbaa !41
  %443 = load double, ptr %34, align 8, !tbaa !41
  store double %443, ptr %39, align 8, !tbaa !41
  %444 = load double, ptr %35, align 8, !tbaa !41
  store double %444, ptr %40, align 8, !tbaa !41
  %445 = load double, ptr %41, align 8, !tbaa !41
  %446 = load double, ptr %39, align 8, !tbaa !41
  %447 = load double, ptr %40, align 8, !tbaa !41
  %448 = load ptr, ptr %14, align 8, !tbaa !5
  %449 = call noundef double @_ZN11alglib_impl5rmax3EdddPNS_8ae_stateE(double noundef %445, double noundef %446, double noundef %447, ptr noundef %448)
  %450 = load double, ptr %45, align 8, !tbaa !41
  %451 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %449, double noundef %450)
  br i1 %451, label %452, label %467

452:                                              ; preds = %383
  %453 = load ptr, ptr %8, align 8, !tbaa !5
  %454 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %453, i32 0, i32 36
  %455 = load ptr, ptr %8, align 8, !tbaa !5
  %456 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %455, i32 0, i32 35
  %457 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL23ipm2solver_varsinitfromEPNS_8ipm2varsEPKS0_PNS_8ae_stateE(ptr noundef %454, ptr noundef %456, ptr noundef %457)
  %458 = load i64, ptr %24, align 8, !tbaa !11
  store i64 %458, ptr %44, align 8, !tbaa !11
  %459 = load double, ptr %41, align 8, !tbaa !41
  %460 = load double, ptr %39, align 8, !tbaa !41
  %461 = load double, ptr %40, align 8, !tbaa !41
  %462 = load ptr, ptr %14, align 8, !tbaa !5
  %463 = call noundef double @_ZN11alglib_impl5rmax3EdddPNS_8ae_stateE(double noundef %459, double noundef %460, double noundef %461, ptr noundef %462)
  store double %463, ptr %45, align 8, !tbaa !41
  %464 = load double, ptr %41, align 8, !tbaa !41
  store double %464, ptr %46, align 8, !tbaa !41
  %465 = load double, ptr %39, align 8, !tbaa !41
  store double %465, ptr %47, align 8, !tbaa !41
  %466 = load double, ptr %40, align 8, !tbaa !41
  store double %466, ptr %48, align 8, !tbaa !41
  br label %467

467:                                              ; preds = %452, %383
  %468 = load i64, ptr %44, align 8, !tbaa !11
  %469 = icmp sgt i64 %468, 0
  br i1 %469, label %470, label %485

470:                                              ; preds = %467
  %471 = load i64, ptr %24, align 8, !tbaa !11
  %472 = load i64, ptr %44, align 8, !tbaa !11
  %473 = load i64, ptr @_ZN11alglib_implL41ipm2solver_minitersbeforeeworststagnationE, align 8, !tbaa !11
  %474 = add nsw i64 %472, %473
  %475 = icmp sgt i64 %471, %474
  br i1 %475, label %476, label %485

476:                                              ; preds = %470
  %477 = load ptr, ptr %8, align 8, !tbaa !5
  %478 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %477, i32 0, i32 51
  %479 = load i8, ptr %478, align 8, !tbaa !36, !range !37, !noundef !38
  %480 = trunc i8 %479 to i1
  br i1 %480, label %481, label %484

481:                                              ; preds = %476
  %482 = load i64, ptr @_ZN11alglib_implL41ipm2solver_minitersbeforeeworststagnationE, align 8, !tbaa !11
  %483 = trunc i64 %482 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.626, i32 noundef %483)
  br label %484

484:                                              ; preds = %481, %476
  br label %664

485:                                              ; preds = %470, %467
  %486 = load double, ptr %41, align 8, !tbaa !41
  %487 = load ptr, ptr %8, align 8, !tbaa !5
  %488 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %487, i32 0, i32 5
  %489 = load double, ptr %488, align 8, !tbaa !45
  %490 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %486, double noundef %489)
  br i1 %490, label %491, label %520

491:                                              ; preds = %485
  %492 = load double, ptr %32, align 8, !tbaa !41
  %493 = load double, ptr @_ZN11alglib_implL26ipm2solver_stagnationdeltaE, align 8, !tbaa !41
  %494 = load double, ptr %36, align 8, !tbaa !41
  %495 = fmul double %493, %494
  %496 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %492, double noundef %495)
  br i1 %496, label %497, label %520

497:                                              ; preds = %491
  %498 = load double, ptr %34, align 8, !tbaa !41
  %499 = load double, ptr @_ZN11alglib_implL28ipm2solver_primalinfeasible1E, align 8, !tbaa !41
  %500 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %498, double noundef %499)
  br i1 %500, label %501, label %520

501:                                              ; preds = %497
  %502 = load i64, ptr %24, align 8, !tbaa !11
  %503 = load i64, ptr @_ZN11alglib_implL35ipm2solver_minitersbeforestagnationE, align 8, !tbaa !11
  %504 = icmp sge i64 %502, %503
  br i1 %504, label %505, label %520

505:                                              ; preds = %501
  %506 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %30, ptr noundef %506)
  %507 = load i64, ptr %30, align 8, !tbaa !11
  %508 = load i64, ptr @_ZN11alglib_implL30ipm2solver_primalstagnationlenE, align 8, !tbaa !11
  %509 = icmp sge i64 %507, %508
  br i1 %509, label %510, label %519

510:                                              ; preds = %505
  %511 = load ptr, ptr %8, align 8, !tbaa !5
  %512 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %511, i32 0, i32 51
  %513 = load i8, ptr %512, align 8, !tbaa !36, !range !37, !noundef !38
  %514 = trunc i8 %513 to i1
  br i1 %514, label %515, label %518

515:                                              ; preds = %510
  %516 = load i64, ptr @_ZN11alglib_implL30ipm2solver_primalstagnationlenE, align 8, !tbaa !11
  %517 = trunc i64 %516 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.627, i32 noundef %517)
  br label %518

518:                                              ; preds = %515, %510
  br label %664

519:                                              ; preds = %505
  br label %521

520:                                              ; preds = %501, %497, %491, %485
  store i64 0, ptr %30, align 8, !tbaa !11
  br label %521

521:                                              ; preds = %520, %519
  %522 = load double, ptr %41, align 8, !tbaa !41
  %523 = load ptr, ptr %8, align 8, !tbaa !5
  %524 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %523, i32 0, i32 5
  %525 = load double, ptr %524, align 8, !tbaa !45
  %526 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %522, double noundef %525)
  br i1 %526, label %527, label %556

527:                                              ; preds = %521
  %528 = load double, ptr %33, align 8, !tbaa !41
  %529 = load double, ptr @_ZN11alglib_implL26ipm2solver_stagnationdeltaE, align 8, !tbaa !41
  %530 = load double, ptr %37, align 8, !tbaa !41
  %531 = fmul double %529, %530
  %532 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %528, double noundef %531)
  br i1 %532, label %533, label %556

533:                                              ; preds = %527
  %534 = load double, ptr %35, align 8, !tbaa !41
  %535 = load double, ptr @_ZN11alglib_implL26ipm2solver_dualinfeasible1E, align 8, !tbaa !41
  %536 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %534, double noundef %535)
  br i1 %536, label %537, label %556

537:                                              ; preds = %533
  %538 = load i64, ptr %24, align 8, !tbaa !11
  %539 = load i64, ptr @_ZN11alglib_implL35ipm2solver_minitersbeforestagnationE, align 8, !tbaa !11
  %540 = icmp sge i64 %538, %539
  br i1 %540, label %541, label %556

541:                                              ; preds = %537
  %542 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %31, ptr noundef %542)
  %543 = load i64, ptr %31, align 8, !tbaa !11
  %544 = load i64, ptr @_ZN11alglib_implL28ipm2solver_dualstagnationlenE, align 8, !tbaa !11
  %545 = icmp sge i64 %543, %544
  br i1 %545, label %546, label %555

546:                                              ; preds = %541
  %547 = load ptr, ptr %8, align 8, !tbaa !5
  %548 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %547, i32 0, i32 51
  %549 = load i8, ptr %548, align 8, !tbaa !36, !range !37, !noundef !38
  %550 = trunc i8 %549 to i1
  br i1 %550, label %551, label %554

551:                                              ; preds = %546
  %552 = load i64, ptr @_ZN11alglib_implL28ipm2solver_dualstagnationlenE, align 8, !tbaa !11
  %553 = trunc i64 %552 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.628, i32 noundef %553)
  br label %554

554:                                              ; preds = %551, %546
  br label %664

555:                                              ; preds = %541
  br label %557

556:                                              ; preds = %537, %533, %527, %521
  store i64 0, ptr %31, align 8, !tbaa !11
  br label %557

557:                                              ; preds = %556, %555
  %558 = load double, ptr %25, align 8, !tbaa !41
  %559 = load double, ptr %50, align 8, !tbaa !41
  %560 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %558, double noundef %559)
  br i1 %560, label %561, label %573

561:                                              ; preds = %557
  %562 = load i64, ptr %24, align 8, !tbaa !11
  %563 = load i64, ptr @_ZN11alglib_implL35ipm2solver_itersfortoostringentcondE, align 8, !tbaa !11
  %564 = icmp sge i64 %562, %563
  br i1 %564, label %565, label %573

565:                                              ; preds = %561
  %566 = load ptr, ptr %8, align 8, !tbaa !5
  %567 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %566, i32 0, i32 51
  %568 = load i8, ptr %567, align 8, !tbaa !36, !range !37, !noundef !38
  %569 = trunc i8 %568 to i1
  br i1 %569, label %570, label %571

570:                                              ; preds = %565
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.629)
  br label %571

571:                                              ; preds = %570, %565
  %572 = load ptr, ptr %13, align 8, !tbaa !5
  store i64 7, ptr %572, align 8, !tbaa !11
  br label %664

573:                                              ; preds = %561, %557
  %574 = load double, ptr %41, align 8, !tbaa !41
  %575 = load ptr, ptr %8, align 8, !tbaa !5
  %576 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %575, i32 0, i32 5
  %577 = load double, ptr %576, align 8, !tbaa !45
  %578 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %574, double noundef %577)
  br i1 %578, label %579, label %599

579:                                              ; preds = %573
  %580 = load double, ptr %39, align 8, !tbaa !41
  %581 = load ptr, ptr %8, align 8, !tbaa !5
  %582 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %581, i32 0, i32 3
  %583 = load double, ptr %582, align 8, !tbaa !46
  %584 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %580, double noundef %583)
  br i1 %584, label %585, label %599

585:                                              ; preds = %579
  %586 = load double, ptr %40, align 8, !tbaa !41
  %587 = load ptr, ptr %8, align 8, !tbaa !5
  %588 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %587, i32 0, i32 4
  %589 = load double, ptr %588, align 8, !tbaa !47
  %590 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %586, double noundef %589)
  br i1 %590, label %591, label %599

591:                                              ; preds = %585
  %592 = load ptr, ptr %8, align 8, !tbaa !5
  %593 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %592, i32 0, i32 51
  %594 = load i8, ptr %593, align 8, !tbaa !36, !range !37, !noundef !38
  %595 = trunc i8 %594 to i1
  br i1 %595, label %596, label %597

596:                                              ; preds = %591
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.630)
  br label %597

597:                                              ; preds = %596, %591
  %598 = load ptr, ptr %13, align 8, !tbaa !5
  store i64 1, ptr %598, align 8, !tbaa !11
  store i8 0, ptr %49, align 1, !tbaa !9
  br label %664

599:                                              ; preds = %585, %579, %573
  %600 = load double, ptr @_ZN11alglib_implL15ipm2solver_bigyE, align 8, !tbaa !41
  store double %600, ptr %43, align 8, !tbaa !41
  %601 = load double, ptr %43, align 8, !tbaa !41
  %602 = load double, ptr @_ZN11alglib_implL18ipm2solver_ygrowthE, align 8, !tbaa !41
  %603 = load double, ptr %42, align 8, !tbaa !41
  %604 = fmul double %602, %603
  %605 = load ptr, ptr %14, align 8, !tbaa !5
  %606 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %601, double noundef %604, ptr noundef %605)
  store double %606, ptr %43, align 8, !tbaa !41
  %607 = load double, ptr %43, align 8, !tbaa !41
  %608 = load double, ptr @_ZN11alglib_implL18ipm2solver_ygrowthE, align 8, !tbaa !41
  %609 = load i64, ptr %16, align 8, !tbaa !11
  %610 = load ptr, ptr %8, align 8, !tbaa !5
  %611 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %610, i32 0, i32 35
  %612 = getelementptr inbounds %"struct.alglib_impl::ipm2vars", ptr %611, i32 0, i32 2
  %613 = load ptr, ptr %14, align 8, !tbaa !5
  %614 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %609, ptr noundef %612, ptr noundef %613)
  %615 = fmul double %608, %614
  %616 = load ptr, ptr %14, align 8, !tbaa !5
  %617 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %607, double noundef %615, ptr noundef %616)
  store double %617, ptr %43, align 8, !tbaa !41
  %618 = load double, ptr %43, align 8, !tbaa !41
  %619 = load double, ptr @_ZN11alglib_implL18ipm2solver_ygrowthE, align 8, !tbaa !41
  %620 = load i64, ptr %16, align 8, !tbaa !11
  %621 = load ptr, ptr %8, align 8, !tbaa !5
  %622 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %621, i32 0, i32 35
  %623 = getelementptr inbounds %"struct.alglib_impl::ipm2vars", ptr %622, i32 0, i32 3
  %624 = load ptr, ptr %14, align 8, !tbaa !5
  %625 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %620, ptr noundef %623, ptr noundef %624)
  %626 = fmul double %619, %625
  %627 = load ptr, ptr %14, align 8, !tbaa !5
  %628 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %618, double noundef %626, ptr noundef %627)
  store double %628, ptr %43, align 8, !tbaa !41
  %629 = load double, ptr %43, align 8, !tbaa !41
  %630 = load double, ptr @_ZN11alglib_implL18ipm2solver_ygrowthE, align 8, !tbaa !41
  %631 = load i64, ptr %16, align 8, !tbaa !11
  %632 = load ptr, ptr %8, align 8, !tbaa !5
  %633 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %632, i32 0, i32 35
  %634 = getelementptr inbounds %"struct.alglib_impl::ipm2vars", ptr %633, i32 0, i32 4
  %635 = load ptr, ptr %14, align 8, !tbaa !5
  %636 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %631, ptr noundef %634, ptr noundef %635)
  %637 = fmul double %630, %636
  %638 = load ptr, ptr %14, align 8, !tbaa !5
  %639 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %629, double noundef %637, ptr noundef %638)
  store double %639, ptr %43, align 8, !tbaa !41
  %640 = load i64, ptr %17, align 8, !tbaa !11
  %641 = load ptr, ptr %8, align 8, !tbaa !5
  %642 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %641, i32 0, i32 35
  %643 = getelementptr inbounds %"struct.alglib_impl::ipm2vars", ptr %642, i32 0, i32 5
  %644 = load ptr, ptr %14, align 8, !tbaa !5
  %645 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %640, ptr noundef %643, ptr noundef %644)
  %646 = load double, ptr %43, align 8, !tbaa !41
  %647 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %645, double noundef %646)
  br i1 %647, label %648, label %660

648:                                              ; preds = %599
  %649 = load i64, ptr %24, align 8, !tbaa !11
  %650 = load i64, ptr @_ZN11alglib_implL35ipm2solver_minitersbeforeinfeasibleE, align 8, !tbaa !11
  %651 = icmp sge i64 %649, %650
  br i1 %651, label %652, label %660

652:                                              ; preds = %648
  %653 = load ptr, ptr %8, align 8, !tbaa !5
  %654 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %653, i32 0, i32 51
  %655 = load i8, ptr %654, align 8, !tbaa !36, !range !37, !noundef !38
  %656 = trunc i8 %655 to i1
  br i1 %656, label %657, label %659

657:                                              ; preds = %652
  %658 = load double, ptr %43, align 8, !tbaa !41
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.631, double noundef %658)
  br label %659

659:                                              ; preds = %657, %652
  br label %664

660:                                              ; preds = %648, %599
  br label %661

661:                                              ; preds = %660, %382, %353, %301, %273
  %662 = load i64, ptr %24, align 8, !tbaa !11
  %663 = add nsw i64 %662, 1
  store i64 %663, ptr %24, align 8, !tbaa !11
  br label %225, !llvm.loop !48

664:                                              ; preds = %659, %597, %571, %554, %518, %484, %250, %225
  %665 = load i8, ptr %49, align 1, !tbaa !9, !range !37, !noundef !38
  %666 = trunc i8 %665 to i1
  br i1 %666, label %667, label %778

667:                                              ; preds = %664
  %668 = load ptr, ptr %8, align 8, !tbaa !5
  %669 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %668, i32 0, i32 51
  %670 = load i8, ptr %669, align 8, !tbaa !36, !range !37, !noundef !38
  %671 = trunc i8 %670 to i1
  br i1 %671, label %672, label %675

672:                                              ; preds = %667
  %673 = load i64, ptr %44, align 8, !tbaa !11
  %674 = trunc i64 %673 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.632, i32 noundef %674)
  br label %675

675:                                              ; preds = %672, %667
  %676 = load ptr, ptr %8, align 8, !tbaa !5
  %677 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %676, i32 0, i32 35
  %678 = load ptr, ptr %8, align 8, !tbaa !5
  %679 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %678, i32 0, i32 36
  %680 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL23ipm2solver_varsinitfromEPNS_8ipm2varsEPKS0_PNS_8ae_stateE(ptr noundef %677, ptr noundef %679, ptr noundef %680)
  %681 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl9touchrealEPdPNS_8ae_stateE(ptr noundef %47, ptr noundef %681)
  %682 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl9touchrealEPdPNS_8ae_stateE(ptr noundef %48, ptr noundef %682)
  %683 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl9touchrealEPdPNS_8ae_stateE(ptr noundef %46, ptr noundef %683)
  %684 = load double, ptr @_ZN11alglib_implL15ipm2solver_bigyE, align 8, !tbaa !41
  store double %684, ptr %43, align 8, !tbaa !41
  %685 = load double, ptr %43, align 8, !tbaa !41
  %686 = load double, ptr @_ZN11alglib_implL18ipm2solver_ygrowthE, align 8, !tbaa !41
  %687 = load double, ptr %42, align 8, !tbaa !41
  %688 = fmul double %686, %687
  %689 = load ptr, ptr %14, align 8, !tbaa !5
  %690 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %685, double noundef %688, ptr noundef %689)
  store double %690, ptr %43, align 8, !tbaa !41
  %691 = load double, ptr %43, align 8, !tbaa !41
  %692 = load double, ptr @_ZN11alglib_implL18ipm2solver_ygrowthE, align 8, !tbaa !41
  %693 = load i64, ptr %16, align 8, !tbaa !11
  %694 = load ptr, ptr %8, align 8, !tbaa !5
  %695 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %694, i32 0, i32 35
  %696 = getelementptr inbounds %"struct.alglib_impl::ipm2vars", ptr %695, i32 0, i32 2
  %697 = load ptr, ptr %14, align 8, !tbaa !5
  %698 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %693, ptr noundef %696, ptr noundef %697)
  %699 = fmul double %692, %698
  %700 = load ptr, ptr %14, align 8, !tbaa !5
  %701 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %691, double noundef %699, ptr noundef %700)
  store double %701, ptr %43, align 8, !tbaa !41
  %702 = load double, ptr %43, align 8, !tbaa !41
  %703 = load double, ptr @_ZN11alglib_implL18ipm2solver_ygrowthE, align 8, !tbaa !41
  %704 = load i64, ptr %16, align 8, !tbaa !11
  %705 = load ptr, ptr %8, align 8, !tbaa !5
  %706 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %705, i32 0, i32 35
  %707 = getelementptr inbounds %"struct.alglib_impl::ipm2vars", ptr %706, i32 0, i32 3
  %708 = load ptr, ptr %14, align 8, !tbaa !5
  %709 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %704, ptr noundef %707, ptr noundef %708)
  %710 = fmul double %703, %709
  %711 = load ptr, ptr %14, align 8, !tbaa !5
  %712 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %702, double noundef %710, ptr noundef %711)
  store double %712, ptr %43, align 8, !tbaa !41
  %713 = load double, ptr %43, align 8, !tbaa !41
  %714 = load double, ptr @_ZN11alglib_implL18ipm2solver_ygrowthE, align 8, !tbaa !41
  %715 = load i64, ptr %16, align 8, !tbaa !11
  %716 = load ptr, ptr %8, align 8, !tbaa !5
  %717 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %716, i32 0, i32 35
  %718 = getelementptr inbounds %"struct.alglib_impl::ipm2vars", ptr %717, i32 0, i32 4
  %719 = load ptr, ptr %14, align 8, !tbaa !5
  %720 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %715, ptr noundef %718, ptr noundef %719)
  %721 = fmul double %714, %720
  %722 = load ptr, ptr %14, align 8, !tbaa !5
  %723 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %713, double noundef %721, ptr noundef %722)
  store double %723, ptr %43, align 8, !tbaa !41
  %724 = load ptr, ptr %13, align 8, !tbaa !5
  %725 = load i64, ptr %724, align 8, !tbaa !11
  %726 = icmp sgt i64 %725, 0
  br i1 %726, label %727, label %745

727:                                              ; preds = %675
  %728 = load i64, ptr %17, align 8, !tbaa !11
  %729 = load ptr, ptr %8, align 8, !tbaa !5
  %730 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %729, i32 0, i32 35
  %731 = getelementptr inbounds %"struct.alglib_impl::ipm2vars", ptr %730, i32 0, i32 5
  %732 = load ptr, ptr %14, align 8, !tbaa !5
  %733 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %728, ptr noundef %731, ptr noundef %732)
  %734 = load double, ptr %43, align 8, !tbaa !41
  %735 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %733, double noundef %734)
  br i1 %735, label %736, label %745

736:                                              ; preds = %727
  %737 = load ptr, ptr %13, align 8, !tbaa !5
  store i64 -2, ptr %737, align 8, !tbaa !11
  %738 = load ptr, ptr %8, align 8, !tbaa !5
  %739 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %738, i32 0, i32 51
  %740 = load i8, ptr %739, align 8, !tbaa !36, !range !37, !noundef !38
  %741 = trunc i8 %740 to i1
  br i1 %741, label %742, label %744

742:                                              ; preds = %736
  %743 = load double, ptr %43, align 8, !tbaa !41
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.633, double noundef %743)
  br label %744

744:                                              ; preds = %742, %736
  br label %745

745:                                              ; preds = %744, %727, %675
  %746 = load ptr, ptr %13, align 8, !tbaa !5
  %747 = load i64, ptr %746, align 8, !tbaa !11
  %748 = icmp sgt i64 %747, 0
  br i1 %748, label %749, label %761

749:                                              ; preds = %745
  %750 = load double, ptr %47, align 8, !tbaa !41
  %751 = load double, ptr @_ZN11alglib_implL28ipm2solver_primalinfeasible1E, align 8, !tbaa !41
  %752 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %750, double noundef %751)
  br i1 %752, label %753, label %761

753:                                              ; preds = %749
  %754 = load ptr, ptr %13, align 8, !tbaa !5
  store i64 -2, ptr %754, align 8, !tbaa !11
  %755 = load ptr, ptr %8, align 8, !tbaa !5
  %756 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %755, i32 0, i32 51
  %757 = load i8, ptr %756, align 8, !tbaa !36, !range !37, !noundef !38
  %758 = trunc i8 %757 to i1
  br i1 %758, label %759, label %760

759:                                              ; preds = %753
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.634)
  br label %760

760:                                              ; preds = %759, %753
  br label %761

761:                                              ; preds = %760, %749, %745
  %762 = load ptr, ptr %13, align 8, !tbaa !5
  %763 = load i64, ptr %762, align 8, !tbaa !11
  %764 = icmp sgt i64 %763, 0
  br i1 %764, label %765, label %777

765:                                              ; preds = %761
  %766 = load double, ptr %48, align 8, !tbaa !41
  %767 = load double, ptr @_ZN11alglib_implL26ipm2solver_dualinfeasible1E, align 8, !tbaa !41
  %768 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %766, double noundef %767)
  br i1 %768, label %769, label %777

769:                                              ; preds = %765
  %770 = load ptr, ptr %13, align 8, !tbaa !5
  store i64 -2, ptr %770, align 8, !tbaa !11
  %771 = load ptr, ptr %8, align 8, !tbaa !5
  %772 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %771, i32 0, i32 51
  %773 = load i8, ptr %772, align 8, !tbaa !36, !range !37, !noundef !38
  %774 = trunc i8 %773 to i1
  br i1 %774, label %775, label %776

775:                                              ; preds = %769
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.635)
  br label %776

776:                                              ; preds = %775, %769
  br label %777

777:                                              ; preds = %776, %765, %761
  br label %778

778:                                              ; preds = %777, %664
  store i64 0, ptr %18, align 8, !tbaa !11
  br label %779

779:                                              ; preds = %863, %778
  %780 = load i64, ptr %18, align 8, !tbaa !11
  %781 = load i64, ptr %15, align 8, !tbaa !11
  %782 = sub nsw i64 %781, 1
  %783 = icmp sle i64 %780, %782
  br i1 %783, label %784, label %866

784:                                              ; preds = %779
  %785 = load ptr, ptr %8, align 8, !tbaa !5
  %786 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %785, i32 0, i32 35
  %787 = getelementptr inbounds %"struct.alglib_impl::ipm2vars", ptr %786, i32 0, i32 2
  %788 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %787, i32 0, i32 4
  %789 = load ptr, ptr %788, align 8, !tbaa !50
  %790 = load i64, ptr %18, align 8, !tbaa !11
  %791 = getelementptr inbounds double, ptr %789, i64 %790
  %792 = load double, ptr %791, align 8, !tbaa !41
  %793 = load ptr, ptr %10, align 8, !tbaa !5
  %794 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %793, i32 0, i32 4
  %795 = load ptr, ptr %794, align 8, !tbaa !50
  %796 = load i64, ptr %18, align 8, !tbaa !11
  %797 = getelementptr inbounds double, ptr %795, i64 %796
  store double %792, ptr %797, align 8, !tbaa !41
  %798 = load ptr, ptr %11, align 8, !tbaa !5
  %799 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %798, i32 0, i32 4
  %800 = load ptr, ptr %799, align 8, !tbaa !50
  %801 = load i64, ptr %18, align 8, !tbaa !11
  %802 = getelementptr inbounds double, ptr %800, i64 %801
  store double 0.000000e+00, ptr %802, align 8, !tbaa !41
  %803 = load ptr, ptr %8, align 8, !tbaa !5
  %804 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %803, i32 0, i32 39
  %805 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %804, i32 0, i32 4
  %806 = load ptr, ptr %805, align 8, !tbaa !50
  %807 = load i64, ptr %18, align 8, !tbaa !11
  %808 = getelementptr inbounds i8, ptr %806, i64 %807
  %809 = load i8, ptr %808, align 1, !tbaa !9, !range !37, !noundef !38
  %810 = trunc i8 %809 to i1
  br i1 %810, label %811, label %832

811:                                              ; preds = %784
  %812 = load ptr, ptr %11, align 8, !tbaa !5
  %813 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %812, i32 0, i32 4
  %814 = load ptr, ptr %813, align 8, !tbaa !50
  %815 = load i64, ptr %18, align 8, !tbaa !11
  %816 = getelementptr inbounds double, ptr %814, i64 %815
  %817 = load double, ptr %816, align 8, !tbaa !41
  %818 = load ptr, ptr %8, align 8, !tbaa !5
  %819 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %818, i32 0, i32 35
  %820 = getelementptr inbounds %"struct.alglib_impl::ipm2vars", ptr %819, i32 0, i32 6
  %821 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %820, i32 0, i32 4
  %822 = load ptr, ptr %821, align 8, !tbaa !50
  %823 = load i64, ptr %18, align 8, !tbaa !11
  %824 = getelementptr inbounds double, ptr %822, i64 %823
  %825 = load double, ptr %824, align 8, !tbaa !41
  %826 = fsub double %817, %825
  %827 = load ptr, ptr %11, align 8, !tbaa !5
  %828 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %827, i32 0, i32 4
  %829 = load ptr, ptr %828, align 8, !tbaa !50
  %830 = load i64, ptr %18, align 8, !tbaa !11
  %831 = getelementptr inbounds double, ptr %829, i64 %830
  store double %826, ptr %831, align 8, !tbaa !41
  br label %832

832:                                              ; preds = %811, %784
  %833 = load ptr, ptr %8, align 8, !tbaa !5
  %834 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %833, i32 0, i32 40
  %835 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %834, i32 0, i32 4
  %836 = load ptr, ptr %835, align 8, !tbaa !50
  %837 = load i64, ptr %18, align 8, !tbaa !11
  %838 = getelementptr inbounds i8, ptr %836, i64 %837
  %839 = load i8, ptr %838, align 1, !tbaa !9, !range !37, !noundef !38
  %840 = trunc i8 %839 to i1
  br i1 %840, label %841, label %862

841:                                              ; preds = %832
  %842 = load ptr, ptr %11, align 8, !tbaa !5
  %843 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %842, i32 0, i32 4
  %844 = load ptr, ptr %843, align 8, !tbaa !50
  %845 = load i64, ptr %18, align 8, !tbaa !11
  %846 = getelementptr inbounds double, ptr %844, i64 %845
  %847 = load double, ptr %846, align 8, !tbaa !41
  %848 = load ptr, ptr %8, align 8, !tbaa !5
  %849 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %848, i32 0, i32 35
  %850 = getelementptr inbounds %"struct.alglib_impl::ipm2vars", ptr %849, i32 0, i32 7
  %851 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %850, i32 0, i32 4
  %852 = load ptr, ptr %851, align 8, !tbaa !50
  %853 = load i64, ptr %18, align 8, !tbaa !11
  %854 = getelementptr inbounds double, ptr %852, i64 %853
  %855 = load double, ptr %854, align 8, !tbaa !41
  %856 = fadd double %847, %855
  %857 = load ptr, ptr %11, align 8, !tbaa !5
  %858 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %857, i32 0, i32 4
  %859 = load ptr, ptr %858, align 8, !tbaa !50
  %860 = load i64, ptr %18, align 8, !tbaa !11
  %861 = getelementptr inbounds double, ptr %859, i64 %860
  store double %856, ptr %861, align 8, !tbaa !41
  br label %862

862:                                              ; preds = %841, %832
  br label %863

863:                                              ; preds = %862
  %864 = load i64, ptr %18, align 8, !tbaa !11
  %865 = add nsw i64 %864, 1
  store i64 %865, ptr %18, align 8, !tbaa !11
  br label %779, !llvm.loop !51

866:                                              ; preds = %779
  store i64 0, ptr %18, align 8, !tbaa !11
  br label %867

867:                                              ; preds = %887, %866
  %868 = load i64, ptr %18, align 8, !tbaa !11
  %869 = load i64, ptr %17, align 8, !tbaa !11
  %870 = sub nsw i64 %869, 1
  %871 = icmp sle i64 %868, %870
  br i1 %871, label %872, label %890

872:                                              ; preds = %867
  %873 = load ptr, ptr %8, align 8, !tbaa !5
  %874 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %873, i32 0, i32 35
  %875 = getelementptr inbounds %"struct.alglib_impl::ipm2vars", ptr %874, i32 0, i32 5
  %876 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %875, i32 0, i32 4
  %877 = load ptr, ptr %876, align 8, !tbaa !50
  %878 = load i64, ptr %18, align 8, !tbaa !11
  %879 = getelementptr inbounds double, ptr %877, i64 %878
  %880 = load double, ptr %879, align 8, !tbaa !41
  %881 = fneg double %880
  %882 = load ptr, ptr %12, align 8, !tbaa !5
  %883 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %882, i32 0, i32 4
  %884 = load ptr, ptr %883, align 8, !tbaa !50
  %885 = load i64, ptr %18, align 8, !tbaa !11
  %886 = getelementptr inbounds double, ptr %884, i64 %885
  store double %881, ptr %886, align 8, !tbaa !41
  br label %887

887:                                              ; preds = %872
  %888 = load i64, ptr %18, align 8, !tbaa !11
  %889 = add nsw i64 %888, 1
  store i64 %889, ptr %18, align 8, !tbaa !11
  br label %867, !llvm.loop !52

890:                                              ; preds = %867
  %891 = load ptr, ptr %8, align 8, !tbaa !5
  %892 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %891, i32 0, i32 8
  %893 = load ptr, ptr %8, align 8, !tbaa !5
  %894 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %893, i32 0, i32 10
  %895 = load ptr, ptr %8, align 8, !tbaa !5
  %896 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %895, i32 0, i32 24
  %897 = load ptr, ptr %8, align 8, !tbaa !5
  %898 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %897, i32 0, i32 25
  %899 = load ptr, ptr %8, align 8, !tbaa !5
  %900 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %899, i32 0, i32 26
  %901 = load ptr, ptr %8, align 8, !tbaa !5
  %902 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %901, i32 0, i32 27
  %903 = load ptr, ptr %8, align 8, !tbaa !5
  %904 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %903, i32 0, i32 30
  %905 = load ptr, ptr %8, align 8, !tbaa !5
  %906 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %905, i32 0, i32 31
  %907 = load ptr, ptr %10, align 8, !tbaa !5
  %908 = load i64, ptr %15, align 8, !tbaa !11
  %909 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl21unscaleunshiftpointbcEPKNS_9ae_vectorES2_S2_S2_S2_S2_S2_S2_PS0_lPNS_8ae_stateE(ptr noundef %892, ptr noundef %894, ptr noundef %896, ptr noundef %898, ptr noundef %900, ptr noundef %902, ptr noundef %904, ptr noundef %906, ptr noundef %907, i64 noundef %908, ptr noundef %909)
  store i64 0, ptr %18, align 8, !tbaa !11
  br label %910

910:                                              ; preds = %939, %890
  %911 = load i64, ptr %18, align 8, !tbaa !11
  %912 = load i64, ptr %15, align 8, !tbaa !11
  %913 = sub nsw i64 %912, 1
  %914 = icmp sle i64 %911, %913
  br i1 %914, label %915, label %942

915:                                              ; preds = %910
  %916 = load ptr, ptr %11, align 8, !tbaa !5
  %917 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %916, i32 0, i32 4
  %918 = load ptr, ptr %917, align 8, !tbaa !50
  %919 = load i64, ptr %18, align 8, !tbaa !11
  %920 = getelementptr inbounds double, ptr %918, i64 %919
  %921 = load double, ptr %920, align 8, !tbaa !41
  %922 = load ptr, ptr %8, align 8, !tbaa !5
  %923 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %922, i32 0, i32 11
  %924 = load double, ptr %923, align 8, !tbaa !53
  %925 = fmul double %921, %924
  %926 = load ptr, ptr %8, align 8, !tbaa !5
  %927 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %926, i32 0, i32 8
  %928 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %927, i32 0, i32 4
  %929 = load ptr, ptr %928, align 8, !tbaa !50
  %930 = load i64, ptr %18, align 8, !tbaa !11
  %931 = getelementptr inbounds double, ptr %929, i64 %930
  %932 = load double, ptr %931, align 8, !tbaa !41
  %933 = fdiv double %925, %932
  %934 = load ptr, ptr %11, align 8, !tbaa !5
  %935 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %934, i32 0, i32 4
  %936 = load ptr, ptr %935, align 8, !tbaa !50
  %937 = load i64, ptr %18, align 8, !tbaa !11
  %938 = getelementptr inbounds double, ptr %936, i64 %937
  store double %933, ptr %938, align 8, !tbaa !41
  br label %939

939:                                              ; preds = %915
  %940 = load i64, ptr %18, align 8, !tbaa !11
  %941 = add nsw i64 %940, 1
  store i64 %941, ptr %18, align 8, !tbaa !11
  br label %910, !llvm.loop !54

942:                                              ; preds = %910
  store i64 0, ptr %18, align 8, !tbaa !11
  br label %943

943:                                              ; preds = %972, %942
  %944 = load i64, ptr %18, align 8, !tbaa !11
  %945 = load i64, ptr %17, align 8, !tbaa !11
  %946 = sub nsw i64 %945, 1
  %947 = icmp sle i64 %944, %946
  br i1 %947, label %948, label %975

948:                                              ; preds = %943
  %949 = load ptr, ptr %12, align 8, !tbaa !5
  %950 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %949, i32 0, i32 4
  %951 = load ptr, ptr %950, align 8, !tbaa !50
  %952 = load i64, ptr %18, align 8, !tbaa !11
  %953 = getelementptr inbounds double, ptr %951, i64 %952
  %954 = load double, ptr %953, align 8, !tbaa !41
  %955 = load ptr, ptr %8, align 8, !tbaa !5
  %956 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %955, i32 0, i32 11
  %957 = load double, ptr %956, align 8, !tbaa !53
  %958 = fmul double %954, %957
  %959 = load ptr, ptr %8, align 8, !tbaa !5
  %960 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %959, i32 0, i32 33
  %961 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %960, i32 0, i32 4
  %962 = load ptr, ptr %961, align 8, !tbaa !50
  %963 = load i64, ptr %18, align 8, !tbaa !11
  %964 = getelementptr inbounds double, ptr %962, i64 %963
  %965 = load double, ptr %964, align 8, !tbaa !41
  %966 = fdiv double %958, %965
  %967 = load ptr, ptr %12, align 8, !tbaa !5
  %968 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %967, i32 0, i32 4
  %969 = load ptr, ptr %968, align 8, !tbaa !50
  %970 = load i64, ptr %18, align 8, !tbaa !11
  %971 = getelementptr inbounds double, ptr %969, i64 %970
  store double %966, ptr %971, align 8, !tbaa !41
  br label %972

972:                                              ; preds = %948
  %973 = load i64, ptr %18, align 8, !tbaa !11
  %974 = add nsw i64 %973, 1
  store i64 %974, ptr %18, align 8, !tbaa !11
  br label %943, !llvm.loop !55

975:                                              ; preds = %943
  %976 = load ptr, ptr %8, align 8, !tbaa !5
  %977 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %976, i32 0, i32 52
  %978 = load i8, ptr %977, align 1, !tbaa !39, !range !37, !noundef !38
  %979 = trunc i8 %978 to i1
  br i1 %979, label %980, label %1009

980:                                              ; preds = %975
  %981 = load ptr, ptr %8, align 8, !tbaa !5
  %982 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %981, i32 0, i32 54
  %983 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl10stimerstopEPNS_6stimerEPNS_8ae_stateE(ptr noundef %982, ptr noundef %983)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.675)
  %984 = load ptr, ptr %8, align 8, !tbaa !5
  %985 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %984, i32 0, i32 54
  %986 = load ptr, ptr %14, align 8, !tbaa !5
  %987 = call noundef double @_ZN11alglib_impl11stimergetmsEPNS_6stimerEPNS_8ae_stateE(ptr noundef %985, ptr noundef %986)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.676, double noundef %987)
  %988 = load ptr, ptr %8, align 8, !tbaa !5
  %989 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %988, i32 0, i32 55
  %990 = load ptr, ptr %14, align 8, !tbaa !5
  %991 = call noundef double @_ZN11alglib_impl11stimergetmsEPNS_6stimerEPNS_8ae_stateE(ptr noundef %989, ptr noundef %990)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.677, double noundef %991)
  %992 = load ptr, ptr %8, align 8, !tbaa !5
  %993 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %992, i32 0, i32 56
  %994 = load ptr, ptr %14, align 8, !tbaa !5
  %995 = call noundef double @_ZN11alglib_impl11stimergetmsEPNS_6stimerEPNS_8ae_stateE(ptr noundef %993, ptr noundef %994)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.678, double noundef %995)
  %996 = load ptr, ptr %8, align 8, !tbaa !5
  %997 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %996, i32 0, i32 57
  %998 = load ptr, ptr %14, align 8, !tbaa !5
  %999 = call noundef double @_ZN11alglib_impl11stimergetmsEPNS_6stimerEPNS_8ae_stateE(ptr noundef %997, ptr noundef %998)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.679, double noundef %999)
  %1000 = load ptr, ptr %8, align 8, !tbaa !5
  %1001 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1000, i32 0, i32 58
  %1002 = load ptr, ptr %14, align 8, !tbaa !5
  %1003 = call noundef double @_ZN11alglib_impl11stimergetmsEPNS_6stimerEPNS_8ae_stateE(ptr noundef %1001, ptr noundef %1002)
  %1004 = load ptr, ptr %8, align 8, !tbaa !5
  %1005 = getelementptr inbounds %"struct.alglib_impl::ipm2state", ptr %1004, i32 0, i32 57
  %1006 = load ptr, ptr %14, align 8, !tbaa !5
  %1007 = call noundef double @_ZN11alglib_impl11stimergetmsEPNS_6stimerEPNS_8ae_stateE(ptr noundef %1005, ptr noundef %1006)
  %1008 = fsub double %1003, %1007
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.680, double noundef %1008)
  br label %1009

1009:                                             ; preds = %980, %975
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #3
  ret void
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


; 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.212 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.609 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.610 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.612 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.613 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.614 = external hidden unnamed_addr constant [103 x i8], align 1
@.str.615 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.616 = external hidden unnamed_addr constant [100 x i8], align 1
@.str.617 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.626 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.627 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.628 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.629 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.630 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.631 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.632 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.633 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.634 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.635 = external hidden unnamed_addr constant [83 x i8], align 1
@.str.669 = external hidden unnamed_addr constant [11 x i8], align 1
@_ZN11alglib_implL30ipm2solver_primalstagnationlenE = external hidden local_unnamed_addr global i64, align 8
@_ZN11alglib_implL28ipm2solver_dualstagnationlenE = external hidden local_unnamed_addr global i64, align 8
@.str.670 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.671 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.672 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.673 = external hidden unnamed_addr constant [64 x i8], align 1
@_ZN11alglib_implL35ipm2solver_minitersbeforesafeguardsE = external hidden local_unnamed_addr global double, align 8
@_ZN11alglib_implL24ipm2solver_badsteplengthE = external hidden local_unnamed_addr global double, align 8
@.str.674 = external hidden unnamed_addr constant [90 x i8], align 1
@_ZN11alglib_implL41ipm2solver_minitersbeforeeworststagnationE = external hidden local_unnamed_addr global i64, align 8
@_ZN11alglib_implL26ipm2solver_stagnationdeltaE = external hidden local_unnamed_addr global double, align 8
@_ZN11alglib_implL28ipm2solver_primalinfeasible1E = external hidden local_unnamed_addr global double, align 8
@_ZN11alglib_implL35ipm2solver_minitersbeforestagnationE = external hidden local_unnamed_addr global i64, align 8
@_ZN11alglib_implL26ipm2solver_dualinfeasible1E = external hidden local_unnamed_addr global double, align 8
@_ZN11alglib_implL35ipm2solver_itersfortoostringentcondE = external hidden local_unnamed_addr global i64, align 8
@_ZN11alglib_implL15ipm2solver_bigyE = external hidden local_unnamed_addr global double, align 8
@_ZN11alglib_implL18ipm2solver_ygrowthE = external hidden local_unnamed_addr global double, align 8
@_ZN11alglib_implL35ipm2solver_minitersbeforeinfeasibleE = external hidden local_unnamed_addr global i64, align 8
@.str.675 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.676 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.677 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.678 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.679 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.680 = external hidden unnamed_addr constant [36 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 void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext, ptr noundef, ptr noundef) local_unnamed_addr #1

declare noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_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_impl13ae_fp_greaterEdd(double noundef, double noundef) local_unnamed_addr #1

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

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

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

declare noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef, ptr 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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl12ipm2optimizeEPNS_9ipm2stateEbPNS_9ae_vectorES3_S3_PlPNS_8ae_stateE(ptr noundef %0, i1 noundef zeroext %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr nocapture noundef %5, ptr noundef %6) local_unnamed_addr #2 {
  %8 = alloca double, align 8
  %9 = alloca double, align 8
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #4
  store i64 0, ptr %5, align 8, !tbaa !5
  %20 = load i64, ptr %0, align 8, !tbaa !9
  %21 = getelementptr inbounds i8, ptr %0, i64 16
  %22 = load i64, ptr %21, align 8, !tbaa !32
  %23 = getelementptr inbounds i8, ptr %0, i64 2168
  %24 = load i64, ptr %23, align 8, !tbaa !33
  %25 = tail call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef nonnull @.str.609)
  %26 = getelementptr inbounds i8, ptr %0, i64 4640
  %27 = zext i1 %25 to i8
  store i8 %27, ptr %26, align 8, !tbaa !34
  br i1 %25, label %.thread, label %29

.thread:                                          ; preds = %7
  %28 = getelementptr inbounds i8, ptr %0, i64 4641
  store i8 1, ptr %28, align 1, !tbaa !35
  br label %34

29:                                               ; preds = %7
  %30 = tail call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef nonnull @.str.669)
  %.pre = load i8, ptr %26, align 8, !tbaa !34, !range !36
  %31 = getelementptr inbounds i8, ptr %0, i64 4641
  %32 = zext i1 %30 to i8
  store i8 %32, ptr %31, align 1, !tbaa !35
  %33 = trunc nuw i8 %.pre to i1
  br i1 %33, label %34, label %37

34:                                               ; preds = %.thread, %29
  %35 = phi ptr [ %28, %.thread ], [ %31, %29 ]
  %36 = tail call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef nonnull @.str.610)
  br label %37

37:                                               ; preds = %34, %29
  %38 = phi ptr [ %31, %29 ], [ %35, %34 ]
  %39 = phi i1 [ false, %29 ], [ %36, %34 ]
  %40 = getelementptr inbounds i8, ptr %0, i64 4642
  %41 = zext i1 %39 to i8
  store i8 %41, ptr %40, align 2, !tbaa !37
  tail call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %20, double noundef 0.000000e+00, ptr noundef %2, ptr noundef %6)
  tail call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %20, double noundef 0.000000e+00, ptr noundef %3, ptr noundef %6)
  tail call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %24, double noundef 0.000000e+00, ptr noundef %4, ptr noundef %6)
  %42 = load i64, ptr @_ZN11alglib_implL30ipm2solver_primalstagnationlenE, align 8, !tbaa !5
  %43 = load i64, ptr @_ZN11alglib_implL28ipm2solver_dualstagnationlenE, align 8, !tbaa !5
  %44 = icmp slt i64 %42, %43
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %44, ptr noundef nonnull @.str.670, ptr noundef %6)
  %45 = load i8, ptr %38, align 1, !tbaa !35, !range !36, !noundef !38
  %46 = trunc nuw i8 %45 to i1
  br i1 %46, label %47, label %53

47:                                               ; preds = %37
  %48 = getelementptr inbounds i8, ptr %0, i64 4648
  tail call void @_ZN11alglib_impl10stimerinitEPNS_6stimerEPNS_8ae_stateE(ptr noundef nonnull %48, ptr noundef %6)
  %49 = getelementptr inbounds i8, ptr %0, i64 4672
  tail call void @_ZN11alglib_impl10stimerinitEPNS_6stimerEPNS_8ae_stateE(ptr noundef nonnull %49, ptr noundef %6)
  %50 = getelementptr inbounds i8, ptr %0, i64 4696
  tail call void @_ZN11alglib_impl10stimerinitEPNS_6stimerEPNS_8ae_stateE(ptr noundef nonnull %50, ptr noundef %6)
  %51 = getelementptr inbounds i8, ptr %0, i64 4720
  tail call void @_ZN11alglib_impl10stimerinitEPNS_6stimerEPNS_8ae_stateE(ptr noundef nonnull %51, ptr noundef %6)
  %52 = getelementptr inbounds i8, ptr %0, i64 4744
  tail call void @_ZN11alglib_impl10stimerinitEPNS_6stimerEPNS_8ae_stateE(ptr noundef nonnull %52, ptr noundef %6)
  tail call void @_ZN11alglib_impl11stimerstartEPNS_6stimerEPNS_8ae_stateE(ptr noundef nonnull %48, ptr noundef %6)
  br label %53

53:                                               ; preds = %47, %37
  %54 = load i8, ptr %26, align 8, !tbaa !34, !range !36, !noundef !38
  %55 = trunc nuw i8 %54 to i1
  br i1 %55, label %59, label %56

56:                                               ; preds = %53
  %57 = load i8, ptr %38, align 1, !tbaa !35, !range !36, !noundef !38
  %58 = trunc nuw i8 %57 to i1
  br i1 %58, label %59, label %60

59:                                               ; preds = %56, %53
  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.613)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.212)
  br label %60

60:                                               ; preds = %59, %56
  %61 = tail call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef 5.000000e-16, double noundef 7.500000e-01, ptr noundef %6)
  %62 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %6)
  %63 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %62, ptr noundef %6)
  %64 = getelementptr inbounds i8, ptr %0, i64 4624
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %64, i8 0, i64 16, i1 false)
  tail call void @_ZN11alglib_implL22ipm2solver_ipm2powerupEPNS_9ipm2stateEdPNS_8ae_stateE(ptr noundef nonnull %0, double noundef %61, ptr noundef %6)
  %65 = getelementptr inbounds i8, ptr %0, i64 2576
  %66 = getelementptr inbounds i8, ptr %0, i64 2176
  tail call void @_ZN11alglib_implL23ipm2solver_varsinitfromEPNS_8ipm2varsEPKS0_PNS_8ae_stateE(ptr noundef nonnull %65, ptr noundef nonnull %66, ptr noundef %6)
  %67 = getelementptr inbounds i8, ptr %0, i64 2976
  tail call void @_ZN11alglib_implL25ipm2solver_varsinitbyzeroEPNS_8ipm2varsEllPNS_8ae_stateE(ptr noundef nonnull %67, i64 noundef %22, i64 noundef %24, ptr noundef %6)
  %68 = getelementptr inbounds i8, ptr %0, i64 3376
  tail call void @_ZN11alglib_implL25ipm2solver_varsinitbyzeroEPNS_8ipm2varsEllPNS_8ae_stateE(ptr noundef nonnull %68, i64 noundef %22, i64 noundef %24, ptr noundef %6)
  store double 1.000000e+300, ptr %17, align 8, !tbaa !39
  store double 1.000000e+300, ptr %18, align 8, !tbaa !39
  store double 1.000000e+300, ptr %19, align 8, !tbaa !39
  tail call void @_ZN11alglib_implL24ipm2solver_traceprogressEPNS_9ipm2stateEdddPNS_8ae_stateE(ptr noundef nonnull %0, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, ptr noundef %6)
  %69 = getelementptr inbounds i8, ptr %0, i64 2384
  %70 = tail call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %24, ptr noundef nonnull %69, ptr noundef %6)
  %71 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef 0.000000e+00, double noundef %70, ptr noundef %6)
  %72 = getelementptr inbounds i8, ptr %0, i64 2448
  %73 = tail call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %22, ptr noundef nonnull %72, ptr noundef %6)
  %74 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %71, double noundef %73, ptr noundef %6)
  %75 = getelementptr inbounds i8, ptr %0, i64 2512
  %76 = tail call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %22, ptr noundef nonnull %75, ptr noundef %6)
  %77 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %74, double noundef %76, ptr noundef %6)
  store i64 0, ptr %10, align 8, !tbaa !5
  store i64 0, ptr %11, align 8, !tbaa !5
  store i64 7, ptr %5, align 8, !tbaa !5
  store double 1.000000e+300, ptr %12, align 8, !tbaa !39
  store double 1.000000e+300, ptr %13, align 8, !tbaa !39
  %78 = getelementptr inbounds i8, ptr %0, i64 2192
  %79 = getelementptr inbounds i8, ptr %0, i64 4048
  %80 = getelementptr inbounds i8, ptr %0, i64 4112
  %81 = getelementptr inbounds i8, ptr %0, i64 4176
  tail call void @_ZN11alglib_implL23ipm2solver_ipm2multiplyEPKNS_9ipm2stateEPKNS_9ae_vectorES5_PS3_S6_S6_PNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %78, ptr noundef nonnull %69, ptr noundef nonnull %79, ptr noundef nonnull %80, ptr noundef nonnull %81, ptr noundef %6)
  %82 = tail call noundef double @_ZN11alglib_implL24ipm2solver_varscomputemuEPKNS_9ipm2stateEPKNS_8ipm2varsEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %66, ptr noundef %6)
  %83 = getelementptr inbounds i8, ptr %0, i64 4240
  tail call void @_ZN11alglib_implL29ipm2solver_rhscomputeprimdualEPKNS_9ipm2stateEPKNS_8ipm2varsEPKNS_9ae_vectorES8_S8_PNS_17ipm2righthandsideEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %66, ptr noundef nonnull %79, ptr noundef nonnull %80, ptr noundef nonnull %81, ptr noundef nonnull %83, ptr noundef %6)
  %84 = getelementptr inbounds i8, ptr %0, i64 48
  %85 = load i64, ptr %84, align 8, !tbaa !40
  %.not.not437 = icmp sgt i64 %85, 0
  br i1 %.not.not437, label %.lr.ph, label %.loopexit

.lr.ph:                                           ; preds = %60
  %86 = getelementptr inbounds i8, ptr %0, i64 4768
  %87 = getelementptr inbounds i8, ptr %0, i64 40
  %88 = getelementptr inbounds i8, ptr %0, i64 24
  %89 = getelementptr inbounds i8, ptr %0, i64 32
  %90 = getelementptr inbounds i8, ptr %0, i64 2256
  %91 = getelementptr inbounds i8, ptr %0, i64 2320
  br label %92

92:                                               ; preds = %.lr.ph, %257
  %.0376443 = phi double [ 1.000000e+300, %.lr.ph ], [ %.2378, %257 ]
  %.0379442 = phi i64 [ -1, %.lr.ph ], [ %.2381, %257 ]
  %.0383441 = phi double [ 0x3CF6849B86A12B9C, %.lr.ph ], [ %.1384, %257 ]
  %.0385440 = phi i64 [ 0, %.lr.ph ], [ %258, %257 ]
  %.0386439 = phi double [ %82, %.lr.ph ], [ %.1387, %257 ]
  %.0388438 = phi double [ 0.000000e+00, %.lr.ph ], [ %.1389, %257 ]
  %93 = load i8, ptr %26, align 8, !tbaa !34, !range !36, !noundef !38
  %94 = trunc nuw i8 %93 to i1
  br i1 %94, label %95, label %97

95:                                               ; preds = %92
  %96 = trunc i64 %.0385440 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.614, i32 noundef %96)
  br label %97

97:                                               ; preds = %95, %92
  %98 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %.0383441, double noundef %63)
  br i1 %98, label %99, label %104

99:                                               ; preds = %97
  %100 = load i8, ptr %26, align 8, !tbaa !34, !range !36, !noundef !38
  %101 = trunc nuw i8 %100 to i1
  br i1 %101, label %102, label %103

102:                                              ; preds = %99
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.615)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.616)
  br label %103

103:                                              ; preds = %102, %99
  store i64 7, ptr %5, align 8, !tbaa !5
  br label %.loopexit

104:                                              ; preds = %97
  %105 = call noundef zeroext i1 @_ZN11alglib_implL44ipm2solver_reducedsystemcomputefactorizationEPNS_17ipm2reducedsystemEPNS_9ipm2stateEPKNS_8ipm2varsEddddPNS_8ae_stateE(ptr noundef nonnull %86, ptr noundef nonnull %0, ptr noundef nonnull %66, double noundef 5.000000e-16, double noundef 5.000000e-16, double noundef %.0383441, double noundef %.0383441, ptr noundef %6)
  br i1 %105, label %110, label %106

106:                                              ; preds = %104
  %107 = fmul double %.0383441, 1.000000e+01
  %108 = load i8, ptr %26, align 8, !tbaa !34, !range !36, !noundef !38
  %109 = trunc nuw i8 %108 to i1
  br i1 %109, label %.sink.split, label %257

110:                                              ; preds = %104
  call void @_ZN11alglib_implL37ipm2solver_rhsrecomputegammapredictorEPKNS_9ipm2stateEPKNS_8ipm2varsEdPNS_17ipm2righthandsideEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %66, double noundef 0.000000e+00, ptr noundef nonnull %83, ptr noundef %6)
  %111 = call noundef zeroext i1 @_ZN11alglib_implL29ipm2solver_reducedsystemsolveEPNS_17ipm2reducedsystemEPNS_9ipm2stateEPKNS_8ipm2varsEPKNS_17ipm2righthandsideEPS4_PNS_8ae_stateE(ptr noundef nonnull %86, ptr noundef nonnull %0, ptr noundef nonnull %66, ptr noundef nonnull %83, ptr noundef nonnull %67, ptr noundef %6)
  br i1 %111, label %116, label %112

112:                                              ; preds = %110
  %113 = fmul double %.0383441, 1.000000e+01
  %114 = load i8, ptr %26, align 8, !tbaa !34, !range !36, !noundef !38
  %115 = trunc nuw i8 %114 to i1
  br i1 %115, label %.sink.split, label %257

116:                                              ; preds = %110
  call void @_ZN11alglib_implL32ipm2solver_ipm2computesteplengthEPKNS_9ipm2stateEPKNS_8ipm2varsES5_PdPNS_8ae_stateE(ptr noundef %0, ptr noundef nonnull %66, ptr noundef nonnull %67, ptr noundef nonnull %8, ptr noundef %6)
  %117 = load double, ptr %8, align 8, !tbaa !39
  %118 = call noundef double @_ZN11alglib_implL29ipm2solver_varscomputemutrialEPKNS_9ipm2stateEPKNS_8ipm2varsES5_dPNS_8ae_stateE(ptr noundef %0, ptr noundef nonnull %66, ptr noundef nonnull %67, double noundef %117, ptr noundef %6)
  %119 = fadd double %.0386439, 5.000000e-16
  %120 = fdiv double %118, %119
  %121 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef %120, double noundef 3.000000e+00, ptr noundef %6)
  %122 = fmul double %.0386439, %121
  call void @_ZN11alglib_implL36ipm2solver_rhsrecomputegammamehrotraEPKNS_9ipm2stateEPKNS_8ipm2varsEdS5_PNS_17ipm2righthandsideEPNS_8ae_stateE(ptr noundef %0, ptr noundef nonnull %66, double noundef %122, ptr noundef nonnull %67, ptr noundef nonnull %83, ptr noundef %6)
  %123 = call noundef zeroext i1 @_ZN11alglib_implL29ipm2solver_reducedsystemsolveEPNS_17ipm2reducedsystemEPNS_9ipm2stateEPKNS_8ipm2varsEPKNS_17ipm2righthandsideEPS4_PNS_8ae_stateE(ptr noundef nonnull %86, ptr noundef %0, ptr noundef nonnull %66, ptr noundef nonnull %83, ptr noundef nonnull %68, ptr noundef %6)
  br i1 %123, label %128, label %124

124:                                              ; preds = %116
  %125 = fmul double %.0383441, 1.000000e+01
  %126 = load i8, ptr %26, align 8, !tbaa !34, !range !36, !noundef !38
  %127 = trunc nuw i8 %126 to i1
  br i1 %127, label %.sink.split, label %257

128:                                              ; preds = %116
  call void @_ZN11alglib_implL32ipm2solver_ipm2computesteplengthEPKNS_9ipm2stateEPKNS_8ipm2varsES5_PdPNS_8ae_stateE(ptr noundef %0, ptr noundef nonnull %66, ptr noundef nonnull %68, ptr noundef nonnull %9, ptr noundef %6)
  %129 = uitofp nneg i64 %.0385440 to double
  %130 = load double, ptr @_ZN11alglib_implL35ipm2solver_minitersbeforesafeguardsE, align 8, !tbaa !39
  %131 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %129, double noundef %130)
  br i1 %131, label %132, label %143

132:                                              ; preds = %128
  %133 = load double, ptr %9, align 8, !tbaa !39
  %134 = load double, ptr @_ZN11alglib_implL24ipm2solver_badsteplengthE, align 8, !tbaa !39
  %135 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %133, double noundef %134)
  br i1 %135, label %136, label %143

136:                                              ; preds = %132
  %137 = load double, ptr @_ZN11alglib_implL24ipm2solver_badsteplengthE, align 8, !tbaa !39
  %138 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %.0388438, double noundef %137)
  br i1 %138, label %139, label %143

139:                                              ; preds = %136
  %140 = fmul double %.0383441, 1.000000e+01
  %141 = load i8, ptr %26, align 8, !tbaa !34, !range !36, !noundef !38
  %142 = trunc nuw i8 %141 to i1
  br i1 %142, label %.sink.split, label %257

143:                                              ; preds = %136, %132, %128
  %144 = load double, ptr %9, align 8, !tbaa !39
  call void @_ZN11alglib_implL22ipm2solver_varsaddstepEPNS_8ipm2varsEPKS0_dPNS_8ae_stateE(ptr noundef nonnull %66, ptr noundef nonnull %68, double noundef %144, ptr noundef %6)
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %64, ptr noundef %6)
  %145 = load double, ptr %9, align 8, !tbaa !39
  %146 = load double, ptr %8, align 8, !tbaa !39
  call void @_ZN11alglib_implL24ipm2solver_traceprogressEPNS_9ipm2stateEdddPNS_8ae_stateE(ptr noundef %0, double noundef %.0386439, double noundef %146, double noundef %145, ptr noundef %6)
  call void @_ZN11alglib_implL23ipm2solver_ipm2multiplyEPKNS_9ipm2stateEPKNS_9ae_vectorES5_PS3_S6_S6_PNS_8ae_stateE(ptr noundef %0, ptr noundef nonnull %78, ptr noundef nonnull %69, ptr noundef nonnull %79, ptr noundef nonnull %80, ptr noundef nonnull %81, ptr noundef %6)
  call void @_ZN11alglib_implL29ipm2solver_rhscomputeprimdualEPKNS_9ipm2stateEPKNS_8ipm2varsEPKNS_9ae_vectorES8_S8_PNS_17ipm2righthandsideEPNS_8ae_stateE(ptr noundef %0, ptr noundef nonnull %66, ptr noundef nonnull %79, ptr noundef nonnull %80, ptr noundef nonnull %81, ptr noundef nonnull %83, ptr noundef %6)
  %147 = call noundef double @_ZN11alglib_implL24ipm2solver_varscomputemuEPKNS_9ipm2stateEPKNS_8ipm2varsEPNS_8ae_stateE(ptr noundef %0, ptr noundef nonnull %66, ptr noundef %6)
  %148 = load double, ptr %12, align 8, !tbaa !39
  %149 = load double, ptr %13, align 8, !tbaa !39
  call void @_ZN11alglib_implL24ipm2solver_computeerrorsEPKNS_9ipm2stateEPKNS_17ipm2righthandsideEPKNS_9ae_vectorES8_S8_PdS9_S9_S9_S9_PNS_8ae_stateE(ptr noundef %0, ptr noundef nonnull %83, ptr noundef nonnull %79, ptr noundef nonnull %80, ptr noundef nonnull %81, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef %6)
  %150 = load double, ptr %16, align 8, !tbaa !39
  %151 = load double, ptr %14, align 8, !tbaa !39
  %152 = load double, ptr %15, align 8, !tbaa !39
  %153 = call noundef double @_ZN11alglib_impl5rmax3EdddPNS_8ae_stateE(double noundef %150, double noundef %151, double noundef %152, ptr noundef %6)
  %154 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %153, double noundef %.0376443)
  br i1 %154, label %155, label %157

155:                                              ; preds = %143
  call void @_ZN11alglib_implL23ipm2solver_varsinitfromEPNS_8ipm2varsEPKS0_PNS_8ae_stateE(ptr noundef nonnull %65, ptr noundef nonnull %66, ptr noundef %6)
  %156 = call noundef double @_ZN11alglib_impl5rmax3EdddPNS_8ae_stateE(double noundef %150, double noundef %151, double noundef %152, ptr noundef %6)
  store double %150, ptr %17, align 8, !tbaa !39
  store double %151, ptr %18, align 8, !tbaa !39
  store double %152, ptr %19, align 8, !tbaa !39
  br label %157

157:                                              ; preds = %155, %143
  %.1380 = phi i64 [ %.0385440, %155 ], [ %.0379442, %143 ]
  %.1377 = phi double [ %156, %155 ], [ %.0376443, %143 ]
  %158 = icmp sgt i64 %.1380, 0
  br i1 %158, label %159, label %168

159:                                              ; preds = %157
  %160 = load i64, ptr @_ZN11alglib_implL41ipm2solver_minitersbeforeeworststagnationE, align 8, !tbaa !5
  %161 = add nsw i64 %160, %.1380
  %162 = icmp sgt i64 %.0385440, %161
  br i1 %162, label %163, label %168

163:                                              ; preds = %159
  %164 = load i8, ptr %26, align 8, !tbaa !34, !range !36, !noundef !38
  %165 = trunc nuw i8 %164 to i1
  br i1 %165, label %166, label %.loopexit

166:                                              ; preds = %163
  %167 = trunc i64 %160 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.626, i32 noundef %167)
  br label %.loopexit

168:                                              ; preds = %159, %157
  %169 = load double, ptr %87, align 8, !tbaa !41
  %170 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %150, double noundef %169)
  br i1 %170, label %171, label %189

171:                                              ; preds = %168
  %172 = load double, ptr %12, align 8, !tbaa !39
  %173 = load double, ptr @_ZN11alglib_implL26ipm2solver_stagnationdeltaE, align 8, !tbaa !39
  %174 = fmul double %148, %173
  %175 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %172, double noundef %174)
  br i1 %175, label %176, label %189

176:                                              ; preds = %171
  %177 = load double, ptr %14, align 8, !tbaa !39
  %178 = load double, ptr @_ZN11alglib_implL28ipm2solver_primalinfeasible1E, align 8, !tbaa !39
  %179 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %177, double noundef %178)
  %180 = load i64, ptr @_ZN11alglib_implL35ipm2solver_minitersbeforestagnationE, align 8
  %.not = icmp sge i64 %.0385440, %180
  %or.cond.not = select i1 %179, i1 %.not, i1 false
  br i1 %or.cond.not, label %181, label %189

181:                                              ; preds = %176
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %10, ptr noundef %6)
  %182 = load i64, ptr %10, align 8, !tbaa !5
  %183 = load i64, ptr @_ZN11alglib_implL30ipm2solver_primalstagnationlenE, align 8, !tbaa !5
  %.not394 = icmp slt i64 %182, %183
  br i1 %.not394, label %190, label %184

184:                                              ; preds = %181
  %185 = load i8, ptr %26, align 8, !tbaa !34, !range !36, !noundef !38
  %186 = trunc nuw i8 %185 to i1
  br i1 %186, label %187, label %.loopexit

187:                                              ; preds = %184
  %188 = trunc i64 %183 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.627, i32 noundef %188)
  br label %.loopexit

189:                                              ; preds = %176, %171, %168
  store i64 0, ptr %10, align 8, !tbaa !5
  br label %190

190:                                              ; preds = %181, %189
  %191 = load double, ptr %87, align 8, !tbaa !41
  %192 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %150, double noundef %191)
  br i1 %192, label %193, label %211

193:                                              ; preds = %190
  %194 = load double, ptr %13, align 8, !tbaa !39
  %195 = load double, ptr @_ZN11alglib_implL26ipm2solver_stagnationdeltaE, align 8, !tbaa !39
  %196 = fmul double %149, %195
  %197 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %194, double noundef %196)
  br i1 %197, label %198, label %211

198:                                              ; preds = %193
  %199 = load double, ptr %15, align 8, !tbaa !39
  %200 = load double, ptr @_ZN11alglib_implL26ipm2solver_dualinfeasible1E, align 8, !tbaa !39
  %201 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %199, double noundef %200)
  %202 = load i64, ptr @_ZN11alglib_implL35ipm2solver_minitersbeforestagnationE, align 8
  %.not395 = icmp sge i64 %.0385440, %202
  %or.cond405.not = select i1 %201, i1 %.not395, i1 false
  br i1 %or.cond405.not, label %203, label %211

203:                                              ; preds = %198
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %11, ptr noundef %6)
  %204 = load i64, ptr %11, align 8, !tbaa !5
  %205 = load i64, ptr @_ZN11alglib_implL28ipm2solver_dualstagnationlenE, align 8, !tbaa !5
  %.not396 = icmp slt i64 %204, %205
  br i1 %.not396, label %212, label %206

206:                                              ; preds = %203
  %207 = load i8, ptr %26, align 8, !tbaa !34, !range !36, !noundef !38
  %208 = trunc nuw i8 %207 to i1
  br i1 %208, label %209, label %.loopexit

209:                                              ; preds = %206
  %210 = trunc i64 %205 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.628, i32 noundef %210)
  br label %.loopexit

211:                                              ; preds = %198, %193, %190
  store i64 0, ptr %11, align 8, !tbaa !5
  br label %212

212:                                              ; preds = %203, %211
  %213 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %147, double noundef 5.000000e-14)
  %214 = load i64, ptr @_ZN11alglib_implL35ipm2solver_itersfortoostringentcondE, align 8
  %.not397 = icmp sge i64 %.0385440, %214
  %or.cond407.not = select i1 %213, i1 %.not397, i1 false
  br i1 %or.cond407.not, label %215, label %220

215:                                              ; preds = %212
  %216 = load i8, ptr %26, align 8, !tbaa !34, !range !36, !noundef !38
  %217 = trunc nuw i8 %216 to i1
  br i1 %217, label %218, label %219

218:                                              ; preds = %215
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.629)
  br label %219

219:                                              ; preds = %218, %215
  store i64 7, ptr %5, align 8, !tbaa !5
  br label %.loopexit

220:                                              ; preds = %212
  %221 = load double, ptr %87, align 8, !tbaa !41
  %222 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %150, double noundef %221)
  br i1 %222, label %223, label %233

223:                                              ; preds = %220
  %224 = load double, ptr %88, align 8, !tbaa !42
  %225 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %151, double noundef %224)
  br i1 %225, label %226, label %233

226:                                              ; preds = %223
  %227 = load double, ptr %89, align 8, !tbaa !43
  %228 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %152, double noundef %227)
  br i1 %228, label %229, label %233

229:                                              ; preds = %226
  %230 = load i8, ptr %26, align 8, !tbaa !34, !range !36, !noundef !38
  %231 = trunc nuw i8 %230 to i1
  br i1 %231, label %232, label %260

232:                                              ; preds = %229
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.630)
  br label %260

233:                                              ; preds = %226, %223, %220
  %234 = load double, ptr @_ZN11alglib_implL15ipm2solver_bigyE, align 8, !tbaa !39
  %235 = load double, ptr @_ZN11alglib_implL18ipm2solver_ygrowthE, align 8, !tbaa !39
  %236 = fmul double %77, %235
  %237 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %234, double noundef %236, ptr noundef %6)
  %238 = load double, ptr @_ZN11alglib_implL18ipm2solver_ygrowthE, align 8, !tbaa !39
  %239 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %22, ptr noundef nonnull %78, ptr noundef %6)
  %240 = fmul double %238, %239
  %241 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %237, double noundef %240, ptr noundef %6)
  %242 = load double, ptr @_ZN11alglib_implL18ipm2solver_ygrowthE, align 8, !tbaa !39
  %243 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %22, ptr noundef nonnull %90, ptr noundef %6)
  %244 = fmul double %242, %243
  %245 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %241, double noundef %244, ptr noundef %6)
  %246 = load double, ptr @_ZN11alglib_implL18ipm2solver_ygrowthE, align 8, !tbaa !39
  %247 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %22, ptr noundef nonnull %91, ptr noundef %6)
  %248 = fmul double %246, %247
  %249 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %245, double noundef %248, ptr noundef %6)
  %250 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %24, ptr noundef nonnull %69, ptr noundef %6)
  %251 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %250, double noundef %249)
  %252 = load i64, ptr @_ZN11alglib_implL35ipm2solver_minitersbeforeinfeasibleE, align 8
  %.not398 = icmp sge i64 %.0385440, %252
  %or.cond409.not = select i1 %251, i1 %.not398, i1 false
  br i1 %or.cond409.not, label %253, label %257

253:                                              ; preds = %233
  %254 = load i8, ptr %26, align 8, !tbaa !34, !range !36, !noundef !38
  %255 = trunc nuw i8 %254 to i1
  br i1 %255, label %256, label %.loopexit

256:                                              ; preds = %253
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.631, double noundef %249)
  br label %.loopexit

.sink.split:                                      ; preds = %139, %124, %112, %106
  %.str.674.sink = phi ptr [ @.str.617, %106 ], [ @.str.672, %112 ], [ @.str.673, %124 ], [ @.str.674, %139 ]
  %.sink = phi double [ %107, %106 ], [ %113, %112 ], [ %125, %124 ], [ %140, %139 ]
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull %.str.674.sink)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.671, double noundef %.sink)
  br label %257

257:                                              ; preds = %.sink.split, %233, %139, %124, %112, %106
  %.1389 = phi double [ %.0388438, %139 ], [ %145, %233 ], [ %.0388438, %124 ], [ %.0388438, %112 ], [ %.0388438, %106 ], [ %.0388438, %.sink.split ]
  %.1387 = phi double [ %.0386439, %139 ], [ %147, %233 ], [ %.0386439, %124 ], [ %.0386439, %112 ], [ %.0386439, %106 ], [ %.0386439, %.sink.split ]
  %.1384 = phi double [ %140, %139 ], [ %.0383441, %233 ], [ %125, %124 ], [ %113, %112 ], [ %107, %106 ], [ %.sink, %.sink.split ]
  %.2381 = phi i64 [ %.0379442, %139 ], [ %.1380, %233 ], [ %.0379442, %124 ], [ %.0379442, %112 ], [ %.0379442, %106 ], [ %.0379442, %.sink.split ]
  %.2378 = phi double [ %.0376443, %139 ], [ %.1377, %233 ], [ %.0376443, %124 ], [ %.0376443, %112 ], [ %.0376443, %106 ], [ %.0376443, %.sink.split ]
  %258 = add nuw nsw i64 %.0385440, 1
  %259 = load i64, ptr %84, align 8, !tbaa !40
  %.not.not = icmp slt i64 %258, %259
  br i1 %.not.not, label %92, label %.loopexit, !llvm.loop !44

260:                                              ; preds = %229, %232
  store i64 1, ptr %5, align 8, !tbaa !5
  br label %.thread418

.loopexit:                                        ; preds = %257, %60, %103, %166, %163, %187, %184, %209, %206, %219, %256, %253
  %.3382.ph = phi i64 [ %.1380, %253 ], [ %.1380, %256 ], [ %.1380, %219 ], [ %.1380, %206 ], [ %.1380, %209 ], [ %.1380, %184 ], [ %.1380, %187 ], [ %.1380, %163 ], [ %.1380, %166 ], [ %.0379442, %103 ], [ -1, %60 ], [ %.2381, %257 ]
  %261 = load i8, ptr %26, align 8, !tbaa !34, !range !36, !noundef !38
  %262 = trunc nuw i8 %261 to i1
  br i1 %262, label %263, label %265

263:                                              ; preds = %.loopexit
  %264 = trunc i64 %.3382.ph to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.632, i32 noundef %264)
  br label %265

265:                                              ; preds = %263, %.loopexit
  call void @_ZN11alglib_implL23ipm2solver_varsinitfromEPNS_8ipm2varsEPKS0_PNS_8ae_stateE(ptr noundef nonnull %66, ptr noundef nonnull %65, ptr noundef %6)
  call void @_ZN11alglib_impl9touchrealEPdPNS_8ae_stateE(ptr noundef nonnull %18, ptr noundef %6)
  call void @_ZN11alglib_impl9touchrealEPdPNS_8ae_stateE(ptr noundef nonnull %19, ptr noundef %6)
  call void @_ZN11alglib_impl9touchrealEPdPNS_8ae_stateE(ptr noundef nonnull %17, ptr noundef %6)
  %266 = load double, ptr @_ZN11alglib_implL15ipm2solver_bigyE, align 8, !tbaa !39
  %267 = load double, ptr @_ZN11alglib_implL18ipm2solver_ygrowthE, align 8, !tbaa !39
  %268 = fmul double %77, %267
  %269 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %266, double noundef %268, ptr noundef %6)
  %270 = load double, ptr @_ZN11alglib_implL18ipm2solver_ygrowthE, align 8, !tbaa !39
  %271 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %22, ptr noundef nonnull %78, ptr noundef %6)
  %272 = fmul double %270, %271
  %273 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %269, double noundef %272, ptr noundef %6)
  %274 = load double, ptr @_ZN11alglib_implL18ipm2solver_ygrowthE, align 8, !tbaa !39
  %275 = getelementptr inbounds i8, ptr %0, i64 2256
  %276 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %22, ptr noundef nonnull %275, ptr noundef %6)
  %277 = fmul double %274, %276
  %278 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %273, double noundef %277, ptr noundef %6)
  %279 = load double, ptr @_ZN11alglib_implL18ipm2solver_ygrowthE, align 8, !tbaa !39
  %280 = getelementptr inbounds i8, ptr %0, i64 2320
  %281 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %22, ptr noundef nonnull %280, ptr noundef %6)
  %282 = fmul double %279, %281
  %283 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %278, double noundef %282, ptr noundef %6)
  %284 = load i64, ptr %5, align 8, !tbaa !5
  %285 = icmp sgt i64 %284, 0
  br i1 %285, label %286, label %.thread418

286:                                              ; preds = %265
  %287 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %24, ptr noundef nonnull %69, ptr noundef %6)
  %288 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %287, double noundef %283)
  br i1 %288, label %289, label %293

289:                                              ; preds = %286
  store i64 -2, ptr %5, align 8, !tbaa !5
  %290 = load i8, ptr %26, align 8, !tbaa !34, !range !36, !noundef !38
  %291 = trunc nuw i8 %290 to i1
  br i1 %291, label %292, label %.thread418

292:                                              ; preds = %289
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.633, double noundef %283)
  br label %293

293:                                              ; preds = %292, %286
  %.pr = load i64, ptr %5, align 8, !tbaa !5
  %294 = icmp sgt i64 %.pr, 0
  br i1 %294, label %295, label %.thread418

295:                                              ; preds = %293
  %296 = load double, ptr %18, align 8, !tbaa !39
  %297 = load double, ptr @_ZN11alglib_implL28ipm2solver_primalinfeasible1E, align 8, !tbaa !39
  %298 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %296, double noundef %297)
  br i1 %298, label %299, label %.thread414

299:                                              ; preds = %295
  store i64 -2, ptr %5, align 8, !tbaa !5
  %300 = load i8, ptr %26, align 8, !tbaa !34, !range !36, !noundef !38
  %301 = trunc nuw i8 %300 to i1
  br i1 %301, label %302, label %.thread418

302:                                              ; preds = %299
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.634)
  br label %.thread414

.thread414:                                       ; preds = %302, %295
  %.pr416.pr = load i64, ptr %5, align 8, !tbaa !5
  %303 = icmp sgt i64 %.pr416.pr, 0
  br i1 %303, label %304, label %.thread418

304:                                              ; preds = %.thread414
  %305 = load double, ptr %19, align 8, !tbaa !39
  %306 = load double, ptr @_ZN11alglib_implL26ipm2solver_dualinfeasible1E, align 8, !tbaa !39
  %307 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %305, double noundef %306)
  br i1 %307, label %308, label %.thread418

308:                                              ; preds = %304
  store i64 -2, ptr %5, align 8, !tbaa !5
  %309 = load i8, ptr %26, align 8, !tbaa !34, !range !36, !noundef !38
  %310 = trunc nuw i8 %309 to i1
  br i1 %310, label %311, label %.thread418

311:                                              ; preds = %308
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.635)
  br label %.thread418

.thread418:                                       ; preds = %289, %265, %293, %299, %260, %.thread414, %304, %311, %308
  %.not399.not444 = icmp sgt i64 %20, 0
  br i1 %.not399.not444, label %.lr.ph446, label %.preheader421

.lr.ph446:                                        ; preds = %.thread418
  %312 = getelementptr inbounds i8, ptr %0, i64 2248
  %313 = getelementptr inbounds i8, ptr %2, i64 56
  %314 = getelementptr inbounds i8, ptr %3, i64 56
  %315 = getelementptr inbounds i8, ptr %0, i64 3832
  %316 = getelementptr inbounds i8, ptr %0, i64 2504
  %317 = getelementptr inbounds i8, ptr %0, i64 3896
  %318 = getelementptr inbounds i8, ptr %0, i64 2568
  br label %322

.preheader421:                                    ; preds = %355, %.thread418
  %.not400.not447 = icmp sgt i64 %24, 0
  br i1 %.not400.not447, label %.lr.ph449, label %._crit_edge

.lr.ph449:                                        ; preds = %.preheader421
  %319 = getelementptr inbounds i8, ptr %0, i64 2440
  %320 = getelementptr inbounds i8, ptr %4, i64 56
  %xtraiter = and i64 %24, 1
  %321 = icmp eq i64 %24, 1
  br i1 %321, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph449.new

.lr.ph449.new:                                    ; preds = %.lr.ph449
  %unroll_iter = and i64 %24, 9223372036854775806
  br label %357

322:                                              ; preds = %.lr.ph446, %355
  %.0445 = phi i64 [ 0, %.lr.ph446 ], [ %356, %355 ]
  %323 = load ptr, ptr %312, align 8, !tbaa !46
  %324 = getelementptr inbounds double, ptr %323, i64 %.0445
  %325 = load double, ptr %324, align 8, !tbaa !39
  %326 = load ptr, ptr %313, align 8, !tbaa !46
  %327 = getelementptr inbounds double, ptr %326, i64 %.0445
  store double %325, ptr %327, align 8, !tbaa !39
  %328 = load ptr, ptr %314, align 8, !tbaa !46
  %329 = getelementptr inbounds double, ptr %328, i64 %.0445
  store double 0.000000e+00, ptr %329, align 8, !tbaa !39
  %330 = load ptr, ptr %315, align 8, !tbaa !46
  %331 = getelementptr inbounds i8, ptr %330, i64 %.0445
  %332 = load i8, ptr %331, align 1, !tbaa !47, !range !36, !noundef !38
  %333 = trunc nuw i8 %332 to i1
  br i1 %333, label %334, label %342

334:                                              ; preds = %322
  %335 = load ptr, ptr %314, align 8, !tbaa !46
  %336 = getelementptr inbounds double, ptr %335, i64 %.0445
  %337 = load double, ptr %336, align 8, !tbaa !39
  %338 = load ptr, ptr %316, align 8, !tbaa !46
  %339 = getelementptr inbounds double, ptr %338, i64 %.0445
  %340 = load double, ptr %339, align 8, !tbaa !39
  %341 = fsub double %337, %340
  store double %341, ptr %336, align 8, !tbaa !39
  br label %342

342:                                              ; preds = %334, %322
  %343 = load ptr, ptr %317, align 8, !tbaa !46
  %344 = getelementptr inbounds i8, ptr %343, i64 %.0445
  %345 = load i8, ptr %344, align 1, !tbaa !47, !range !36, !noundef !38
  %346 = trunc nuw i8 %345 to i1
  br i1 %346, label %347, label %355

347:                                              ; preds = %342
  %348 = load ptr, ptr %314, align 8, !tbaa !46
  %349 = getelementptr inbounds double, ptr %348, i64 %.0445
  %350 = load double, ptr %349, align 8, !tbaa !39
  %351 = load ptr, ptr %318, align 8, !tbaa !46
  %352 = getelementptr inbounds double, ptr %351, i64 %.0445
  %353 = load double, ptr %352, align 8, !tbaa !39
  %354 = fadd double %350, %353
  store double %354, ptr %349, align 8, !tbaa !39
  br label %355

355:                                              ; preds = %342, %347
  %356 = add nuw nsw i64 %.0445, 1
  %exitcond.not = icmp eq i64 %356, %20
  br i1 %exitcond.not, label %.preheader421, label %322, !llvm.loop !48

357:                                              ; preds = %357, %.lr.ph449.new
  %.1448 = phi i64 [ 0, %.lr.ph449.new ], [ %371, %357 ]
  %niter = phi i64 [ 0, %.lr.ph449.new ], [ %niter.next.1, %357 ]
  %358 = load ptr, ptr %319, align 8, !tbaa !46
  %359 = getelementptr inbounds double, ptr %358, i64 %.1448
  %360 = load double, ptr %359, align 8, !tbaa !39
  %361 = fneg double %360
  %362 = load ptr, ptr %320, align 8, !tbaa !46
  %363 = getelementptr inbounds double, ptr %362, i64 %.1448
  store double %361, ptr %363, align 8, !tbaa !39
  %364 = or disjoint i64 %.1448, 1
  %365 = load ptr, ptr %319, align 8, !tbaa !46
  %366 = getelementptr inbounds double, ptr %365, i64 %364
  %367 = load double, ptr %366, align 8, !tbaa !39
  %368 = fneg double %367
  %369 = load ptr, ptr %320, align 8, !tbaa !46
  %370 = getelementptr inbounds double, ptr %369, i64 %364
  store double %368, ptr %370, align 8, !tbaa !39
  %371 = add nuw nsw i64 %.1448, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.loopexit.unr-lcssa, label %357, !llvm.loop !49

._crit_edge.loopexit.unr-lcssa:                   ; preds = %357, %.lr.ph449
  %.1448.unr = phi i64 [ 0, %.lr.ph449 ], [ %371, %357 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %._crit_edge.loopexit.epilog-lcssa

._crit_edge.loopexit.epilog-lcssa:                ; preds = %._crit_edge.loopexit.unr-lcssa
  %372 = load ptr, ptr %319, align 8, !tbaa !46
  %373 = getelementptr inbounds double, ptr %372, i64 %.1448.unr
  %374 = load double, ptr %373, align 8, !tbaa !39
  %375 = fneg double %374
  %376 = load ptr, ptr %320, align 8, !tbaa !46
  %377 = getelementptr inbounds double, ptr %376, i64 %.1448.unr
  store double %375, ptr %377, align 8, !tbaa !39
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit.epilog-lcssa, %._crit_edge.loopexit.unr-lcssa, %.preheader421
  %378 = getelementptr inbounds i8, ptr %0, i64 64
  %379 = getelementptr inbounds i8, ptr %0, i64 192
  %380 = getelementptr inbounds i8, ptr %0, i64 1224
  %381 = getelementptr inbounds i8, ptr %0, i64 1288
  %382 = getelementptr inbounds i8, ptr %0, i64 1352
  %383 = getelementptr inbounds i8, ptr %0, i64 1416
  %384 = getelementptr inbounds i8, ptr %0, i64 1608
  %385 = getelementptr inbounds i8, ptr %0, i64 1672
  call void @_ZN11alglib_impl21unscaleunshiftpointbcEPKNS_9ae_vectorES2_S2_S2_S2_S2_S2_S2_PS0_lPNS_8ae_stateE(ptr noundef nonnull %378, ptr noundef nonnull %379, ptr noundef nonnull %380, ptr noundef nonnull %381, ptr noundef nonnull %382, ptr noundef nonnull %383, ptr noundef nonnull %384, ptr noundef nonnull %385, ptr noundef %2, i64 noundef %20, ptr noundef %6)
  br i1 %.not399.not444, label %.lr.ph453, label %.preheader

.lr.ph453:                                        ; preds = %._crit_edge
  %386 = getelementptr inbounds i8, ptr %3, i64 56
  %387 = getelementptr inbounds i8, ptr %0, i64 256
  %388 = getelementptr inbounds i8, ptr %0, i64 120
  %xtraiter522 = and i64 %20, 1
  %389 = icmp eq i64 %20, 1
  br i1 %389, label %.preheader.loopexit.unr-lcssa, label %.lr.ph453.new

.lr.ph453.new:                                    ; preds = %.lr.ph453
  %unroll_iter524 = and i64 %20, 9223372036854775806
  br label %403

.preheader.loopexit.unr-lcssa:                    ; preds = %403, %.lr.ph453
  %.2451.unr = phi i64 [ 0, %.lr.ph453 ], [ %423, %403 ]
  %lcmp.mod523.not = icmp eq i64 %xtraiter522, 0
  br i1 %lcmp.mod523.not, label %.preheader, label %.preheader.loopexit.epilog-lcssa

.preheader.loopexit.epilog-lcssa:                 ; preds = %.preheader.loopexit.unr-lcssa
  %390 = load ptr, ptr %386, align 8, !tbaa !46
  %391 = getelementptr inbounds double, ptr %390, i64 %.2451.unr
  %392 = load double, ptr %391, align 8, !tbaa !39
  %393 = load double, ptr %387, align 8, !tbaa !50
  %394 = fmul double %392, %393
  %395 = load ptr, ptr %388, align 8, !tbaa !46
  %396 = getelementptr inbounds double, ptr %395, i64 %.2451.unr
  %397 = load double, ptr %396, align 8, !tbaa !39
  %398 = fdiv double %394, %397
  store double %398, ptr %391, align 8, !tbaa !39
  br label %.preheader

.preheader:                                       ; preds = %.preheader.loopexit.epilog-lcssa, %.preheader.loopexit.unr-lcssa, %._crit_edge
  br i1 %.not400.not447, label %.lr.ph456, label %._crit_edge457

.lr.ph456:                                        ; preds = %.preheader
  %399 = getelementptr inbounds i8, ptr %4, i64 56
  %400 = getelementptr inbounds i8, ptr %0, i64 256
  %401 = getelementptr inbounds i8, ptr %0, i64 2160
  %xtraiter527 = and i64 %24, 1
  %402 = icmp eq i64 %24, 1
  br i1 %402, label %._crit_edge457.loopexit.unr-lcssa, label %.lr.ph456.new

.lr.ph456.new:                                    ; preds = %.lr.ph456
  %unroll_iter529 = and i64 %24, 9223372036854775806
  br label %424

403:                                              ; preds = %403, %.lr.ph453.new
  %.2451 = phi i64 [ 0, %.lr.ph453.new ], [ %423, %403 ]
  %niter525 = phi i64 [ 0, %.lr.ph453.new ], [ %niter525.next.1, %403 ]
  %404 = load ptr, ptr %386, align 8, !tbaa !46
  %405 = getelementptr inbounds double, ptr %404, i64 %.2451
  %406 = load double, ptr %405, align 8, !tbaa !39
  %407 = load double, ptr %387, align 8, !tbaa !50
  %408 = fmul double %406, %407
  %409 = load ptr, ptr %388, align 8, !tbaa !46
  %410 = getelementptr inbounds double, ptr %409, i64 %.2451
  %411 = load double, ptr %410, align 8, !tbaa !39
  %412 = fdiv double %408, %411
  store double %412, ptr %405, align 8, !tbaa !39
  %413 = or disjoint i64 %.2451, 1
  %414 = load ptr, ptr %386, align 8, !tbaa !46
  %415 = getelementptr inbounds double, ptr %414, i64 %413
  %416 = load double, ptr %415, align 8, !tbaa !39
  %417 = load double, ptr %387, align 8, !tbaa !50
  %418 = fmul double %416, %417
  %419 = load ptr, ptr %388, align 8, !tbaa !46
  %420 = getelementptr inbounds double, ptr %419, i64 %413
  %421 = load double, ptr %420, align 8, !tbaa !39
  %422 = fdiv double %418, %421
  store double %422, ptr %415, align 8, !tbaa !39
  %423 = add nuw nsw i64 %.2451, 2
  %niter525.next.1 = add i64 %niter525, 2
  %niter525.ncmp.1 = icmp eq i64 %niter525.next.1, %unroll_iter524
  br i1 %niter525.ncmp.1, label %.preheader.loopexit.unr-lcssa, label %403, !llvm.loop !51

424:                                              ; preds = %424, %.lr.ph456.new
  %.3455 = phi i64 [ 0, %.lr.ph456.new ], [ %444, %424 ]
  %niter530 = phi i64 [ 0, %.lr.ph456.new ], [ %niter530.next.1, %424 ]
  %425 = load ptr, ptr %399, align 8, !tbaa !46
  %426 = getelementptr inbounds double, ptr %425, i64 %.3455
  %427 = load double, ptr %426, align 8, !tbaa !39
  %428 = load double, ptr %400, align 8, !tbaa !50
  %429 = fmul double %427, %428
  %430 = load ptr, ptr %401, align 8, !tbaa !46
  %431 = getelementptr inbounds double, ptr %430, i64 %.3455
  %432 = load double, ptr %431, align 8, !tbaa !39
  %433 = fdiv double %429, %432
  store double %433, ptr %426, align 8, !tbaa !39
  %434 = or disjoint i64 %.3455, 1
  %435 = load ptr, ptr %399, align 8, !tbaa !46
  %436 = getelementptr inbounds double, ptr %435, i64 %434
  %437 = load double, ptr %436, align 8, !tbaa !39
  %438 = load double, ptr %400, align 8, !tbaa !50
  %439 = fmul double %437, %438
  %440 = load ptr, ptr %401, align 8, !tbaa !46
  %441 = getelementptr inbounds double, ptr %440, i64 %434
  %442 = load double, ptr %441, align 8, !tbaa !39
  %443 = fdiv double %439, %442
  store double %443, ptr %436, align 8, !tbaa !39
  %444 = add nuw nsw i64 %.3455, 2
  %niter530.next.1 = add i64 %niter530, 2
  %niter530.ncmp.1 = icmp eq i64 %niter530.next.1, %unroll_iter529
  br i1 %niter530.ncmp.1, label %._crit_edge457.loopexit.unr-lcssa, label %424, !llvm.loop !52

._crit_edge457.loopexit.unr-lcssa:                ; preds = %424, %.lr.ph456
  %.3455.unr = phi i64 [ 0, %.lr.ph456 ], [ %444, %424 ]
  %lcmp.mod528.not = icmp eq i64 %xtraiter527, 0
  br i1 %lcmp.mod528.not, label %._crit_edge457, label %._crit_edge457.loopexit.epilog-lcssa

._crit_edge457.loopexit.epilog-lcssa:             ; preds = %._crit_edge457.loopexit.unr-lcssa
  %445 = load ptr, ptr %399, align 8, !tbaa !46
  %446 = getelementptr inbounds double, ptr %445, i64 %.3455.unr
  %447 = load double, ptr %446, align 8, !tbaa !39
  %448 = load double, ptr %400, align 8, !tbaa !50
  %449 = fmul double %447, %448
  %450 = load ptr, ptr %401, align 8, !tbaa !46
  %451 = getelementptr inbounds double, ptr %450, i64 %.3455.unr
  %452 = load double, ptr %451, align 8, !tbaa !39
  %453 = fdiv double %449, %452
  store double %453, ptr %446, align 8, !tbaa !39
  br label %._crit_edge457

._crit_edge457:                                   ; preds = %._crit_edge457.loopexit.epilog-lcssa, %._crit_edge457.loopexit.unr-lcssa, %.preheader
  %454 = load i8, ptr %38, align 1, !tbaa !35, !range !36, !noundef !38
  %455 = trunc nuw i8 %454 to i1
  br i1 %455, label %456, label %469

456:                                              ; preds = %._crit_edge457
  %457 = getelementptr inbounds i8, ptr %0, i64 4648
  call void @_ZN11alglib_impl10stimerstopEPNS_6stimerEPNS_8ae_stateE(ptr noundef nonnull %457, ptr noundef %6)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.675)
  %458 = call noundef double @_ZN11alglib_impl11stimergetmsEPNS_6stimerEPNS_8ae_stateE(ptr noundef nonnull %457, ptr noundef %6)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.676, double noundef %458)
  %459 = getelementptr inbounds i8, ptr %0, i64 4672
  %460 = call noundef double @_ZN11alglib_impl11stimergetmsEPNS_6stimerEPNS_8ae_stateE(ptr noundef nonnull %459, ptr noundef %6)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.677, double noundef %460)
  %461 = getelementptr inbounds i8, ptr %0, i64 4696
  %462 = call noundef double @_ZN11alglib_impl11stimergetmsEPNS_6stimerEPNS_8ae_stateE(ptr noundef nonnull %461, ptr noundef %6)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.678, double noundef %462)
  %463 = getelementptr inbounds i8, ptr %0, i64 4720
  %464 = call noundef double @_ZN11alglib_impl11stimergetmsEPNS_6stimerEPNS_8ae_stateE(ptr noundef nonnull %463, ptr noundef %6)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.679, double noundef %464)
  %465 = getelementptr inbounds i8, ptr %0, i64 4744
  %466 = call noundef double @_ZN11alglib_impl11stimergetmsEPNS_6stimerEPNS_8ae_stateE(ptr noundef nonnull %465, ptr noundef %6)
  %467 = call noundef double @_ZN11alglib_impl11stimergetmsEPNS_6stimerEPNS_8ae_stateE(ptr noundef nonnull %463, ptr noundef %6)
  %468 = fsub double %466, %467
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.680, double noundef %468)
  br label %469

469:                                              ; preds = %456, %._crit_edge457
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #4
  ret void
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 = { nocallback nofree nounwind willreturn memory(argmem: write) }
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 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 0}
!10 = !{!"_ZTSN11alglib_impl9ipm2stateE", !6, i64 0, !6, i64 8, !6, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !6, i64 48, !12, i64 56, !13, i64 64, !13, i64 128, !13, i64 192, !11, i64 256, !13, i64 264, !16, i64 328, !13, i64 696, !12, i64 760, !11, i64 768, !13, i64 776, !13, i64 840, !13, i64 904, !13, i64 968, !13, i64 1032, !13, i64 1096, !13, i64 1160, !13, i64 1224, !13, i64 1288, !13, i64 1352, !13, i64 1416, !13, i64 1480, !13, i64 1544, !13, i64 1608, !13, i64 1672, !16, i64 1736, !13, i64 2104, !6, i64 2168, !17, i64 2176, !17, i64 2576, !17, i64 2976, !17, i64 3376, !13, i64 3776, !13, i64 3840, !13, i64 3904, !13, i64 3968, !6, i64 4032, !6, i64 4040, !13, i64 4048, !13, i64 4112, !13, i64 4176, !18, i64 4240, !6, i64 4624, !6, i64 4632, !12, i64 4640, !12, i64 4641, !12, i64 4642, !19, i64 4648, !19, i64 4672, !19, i64 4696, !19, i64 4720, !19, i64 4744, !20, i64 4768, !18, i64 21736, !13, i64 22120, !13, i64 22184, !13, i64 22248, !13, i64 22312, !13, i64 22376, !30, i64 22440, !16, i64 22520, !13, i64 22888, !13, i64 22952, !16, i64 23016, !16, i64 23384, !30, i64 23752, !13, i64 23832}
!11 = !{!"double", !7, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{!"_ZTSN11alglib_impl9ae_vectorE", !6, i64 0, !6, i64 8, !12, i64 16, !14, i64 24, !7, i64 56}
!14 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !15, i64 0, !15, i64 8, !15, i64 16, !15, i64 24}
!15 = !{!"any pointer", !7, i64 0}
!16 = !{!"_ZTSN11alglib_impl12sparsematrixE", !13, i64 0, !13, i64 64, !13, i64 128, !13, i64 192, !13, i64 256, !6, i64 320, !6, i64 328, !6, i64 336, !6, i64 344, !6, i64 352, !6, i64 360}
!17 = !{!"_ZTSN11alglib_impl8ipm2varsE", !6, i64 0, !6, i64 8, !13, i64 16, !13, i64 80, !13, i64 144, !13, i64 208, !13, i64 272, !13, i64 336}
!18 = !{!"_ZTSN11alglib_impl17ipm2righthandsideE", !13, i64 0, !13, i64 64, !13, i64 128, !13, i64 192, !13, i64 256, !13, i64 320}
!19 = !{!"_ZTSN11alglib_impl6stimerE", !6, i64 0, !6, i64 8, !12, i64 16}
!20 = !{!"_ZTSN11alglib_impl17ipm2reducedsystemE", !16, i64 0, !13, i64 368, !21, i64 432, !13, i64 15496, !13, i64 15560, !13, i64 15624, !13, i64 15688, !13, i64 15752, !13, i64 15816, !13, i64 15880, !13, i64 15944, !13, i64 16008, !13, i64 16072, !13, i64 16136, !13, i64 16200, !13, i64 16264, !13, i64 16328, !13, i64 16392, !13, i64 16456, !13, i64 16520, !13, i64 16584, !13, i64 16648, !13, i64 16712, !13, i64 16776, !13, i64 16840, !13, i64 16904}
!21 = !{!"_ZTSN11alglib_impl14spcholanalysisE", !6, i64 0, !6, i64 8, !6, i64 16, !12, i64 24, !6, i64 32, !11, i64 40, !11, i64 48, !11, i64 56, !11, i64 64, !13, i64 72, !12, i64 136, !12, i64 137, !12, i64 138, !12, i64 139, !12, i64 140, !13, i64 144, !6, i64 208, !13, i64 216, !13, i64 280, !13, i64 344, !13, i64 408, !13, i64 472, !13, i64 536, !12, i64 600, !13, i64 608, !13, i64 672, !13, i64 736, !13, i64 800, !13, i64 864, !13, i64 928, !12, i64 992, !12, i64 993, !22, i64 1000, !13, i64 1512, !13, i64 1576, !13, i64 1640, !13, i64 1704, !13, i64 1768, !13, i64 1832, !23, i64 1896, !23, i64 2040, !23, i64 2184, !23, i64 2328, !23, i64 2472, !23, i64 2616, !13, i64 2760, !13, i64 2824, !13, i64 2888, !13, i64 2952, !13, i64 3016, !25, i64 3080, !31, i64 7464, !13, i64 13816, !13, i64 13880, !13, i64 13944, !13, i64 14008, !13, i64 14072, !13, i64 14136, !16, i64 14200, !16, i64 14568, !13, i64 14936, !13, i64 15000}
!22 = !{!"_ZTSN11alglib_impl9spcholadjE", !13, i64 0, !13, i64 64, !13, i64 128, !13, i64 192, !13, i64 256, !13, i64 320, !13, i64 384, !13, i64 448}
!23 = !{!"_ZTSN11alglib_impl9ae_nxpoolE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !14, i64 32, !24, i64 64, !14, i64 112}
!24 = !{!"_ZTSN11alglib_impl7ae_lockE", !15, i64 0, !14, i64 8, !12, i64 40}
!25 = !{!"_ZTSN11alglib_impl9amdbufferE", !6, i64 0, !12, i64 8, !12, i64 9, !13, i64 16, !13, i64 80, !13, i64 144, !26, i64 208, !26, i64 568, !26, i64 928, !27, i64 1288, !28, i64 1496, !29, i64 1968, !13, i64 2120, !13, i64 2184, !13, i64 2248, !29, i64 2312, !29, i64 2464, !29, i64 2616, !29, i64 2768, !29, i64 2920, !29, i64 3072, !13, i64 3224, !6, i64 3288, !29, i64 3296, !29, i64 3448, !26, i64 3600, !29, i64 3960, !13, i64 4112, !13, i64 4176, !13, i64 4240, !30, i64 4304}
!26 = !{!"_ZTSN11alglib_impl8amdknsetE", !6, i64 0, !6, i64 8, !13, i64 16, !13, i64 80, !13, i64 144, !13, i64 208, !13, i64 272, !6, i64 336, !6, i64 344, !6, i64 352}
!27 = !{!"_ZTSN11alglib_impl11amdllmatrixE", !6, i64 0, !13, i64 8, !13, i64 72, !13, i64 136, !6, i64 200}
!28 = !{!"_ZTSN11alglib_impl12amdvertexsetE", !6, i64 0, !12, i64 8, !6, i64 16, !13, i64 24, !13, i64 88, !13, i64 152, !13, i64 216, !13, i64 280, !13, i64 344, !13, i64 408}
!29 = !{!"_ZTSN11alglib_impl5nisetE", !6, i64 0, !6, i64 8, !13, i64 16, !13, i64 80, !6, i64 144}
!30 = !{!"_ZTSN11alglib_impl9ae_matrixE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !12, i64 32, !14, i64 40, !7, i64 72}
!31 = !{!"_ZTSN11alglib_impl18priorityamdbuffersE", !13, i64 0, !13, i64 64, !25, i64 128, !16, i64 4512, !16, i64 4880, !16, i64 5248, !16, i64 5616, !16, i64 5984}
!32 = !{!10, !6, i64 16}
!33 = !{!10, !6, i64 2168}
!34 = !{!10, !12, i64 4640}
!35 = !{!10, !12, i64 4641}
!36 = !{i8 0, i8 2}
!37 = !{!10, !12, i64 4642}
!38 = !{}
!39 = !{!11, !11, i64 0}
!40 = !{!10, !6, i64 48}
!41 = !{!10, !11, i64 40}
!42 = !{!10, !11, i64 24}
!43 = !{!10, !11, i64 32}
!44 = distinct !{!44, !45}
!45 = !{!"llvm.loop.mustprogress"}
!46 = !{!7, !7, i64 0}
!47 = !{!12, !12, i64 0}
!48 = distinct !{!48, !45}
!49 = distinct !{!49, !45}
!50 = !{!10, !11, i64 256}
!51 = distinct !{!51, !45}
!52 = distinct !{!52, !45}


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