; 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::vipmstate" = type { i8, i8, i64, i64, double, double, double, 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::ae_matrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::ae_vector", i64, 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", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, %"struct.alglib_impl::vipmvars", %"struct.alglib_impl::vipmvars", %"struct.alglib_impl::vipmvars", %"struct.alglib_impl::vipmvars", %"struct.alglib_impl::vipmvars", %"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, i8, i8, i64, i8, i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::vipmreducedsparsesystem", %"struct.alglib_impl::vipmrighthandside", %"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::vipmvars", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::sparsematrix" }
%"struct.alglib_impl::vipmreducedsparsesystem" = type { %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, %"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::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::vipmrighthandside" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::vipmvars" = 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::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"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 }
%"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 }

@.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
@_ZN11alglib_implL30vipmsolver_primalstagnationlenE = external hidden global i64, align 8
@_ZN11alglib_implL28vipmsolver_dualstagnationlenE = external hidden global i64, align 8
@.str.611 = external hidden unnamed_addr constant [70 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
@_ZN11alglib_implL20vipmsolver_maxipmitsE = external hidden global i64, align 8
@_ZN11alglib_implL23vipmsolver_phase0lengthE = external hidden global i64, align 8
@.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.618 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.619 = external hidden unnamed_addr constant [74 x i8], align 1
@_ZN11alglib_implL26vipmsolver_steplengthdecayE = external hidden global double, align 8
@.str.620 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.621 = external hidden unnamed_addr constant [69 x i8], align 1
@_ZN11alglib_implL35vipmsolver_minitersbeforesafeguardsE = external hidden global double, align 8
@_ZN11alglib_implL24vipmsolver_badsteplengthE = external hidden global double, align 8
@.str.622 = external hidden unnamed_addr constant [56 x i8], align 1
@_ZN11alglib_implL39vipmsolver_minitersbeforedroppingboundsE = external hidden global i64, align 8
@_ZN11alglib_implL23vipmsolver_bigconstrmagE = external hidden global double, align 8
@_ZN11alglib_implL24vipmsolver_bigconstrxtolE = external hidden global double, align 8
@.str.623 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.624 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.625 = external hidden unnamed_addr constant [115 x i8], align 1
@_ZN11alglib_implL41vipmsolver_minitersbeforeeworststagnationE = external hidden global i64, align 8
@.str.626 = external hidden unnamed_addr constant [98 x i8], align 1
@_ZN11alglib_implL26vipmsolver_stagnationdeltaE = external hidden global double, align 8
@_ZN11alglib_implL28vipmsolver_primalinfeasible1E = external hidden global double, align 8
@_ZN11alglib_implL35vipmsolver_minitersbeforestagnationE = external hidden global i64, align 8
@.str.627 = external hidden unnamed_addr constant [79 x i8], align 1
@_ZN11alglib_implL26vipmsolver_dualinfeasible1E = external hidden global double, align 8
@.str.628 = external hidden unnamed_addr constant [77 x i8], align 1
@_ZN11alglib_implL35vipmsolver_itersfortoostringentcondE = external hidden global i64, align 8
@.str.629 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.630 = external hidden unnamed_addr constant [29 x i8], align 1
@_ZN11alglib_implL15vipmsolver_bigyE = external hidden global double, align 8
@_ZN11alglib_implL18vipmsolver_ygrowthE = external hidden global double, align 8
@_ZN11alglib_implL35vipmsolver_minitersbeforeinfeasibleE = external hidden global i64, align 8
@.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

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

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

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

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

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

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

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

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

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

declare 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 noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef, double noundef, ptr noundef) #1

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

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

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

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

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

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

declare noundef 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) #3

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl12vipmoptimizeEPNS_9vipmstateEbPNS_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) #3 {
  %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 double, align 8
  %25 = alloca double, align 8
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, 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 i64, 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 double, align 8
  %45 = alloca double, align 8
  %46 = alloca double, align 8
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca double, align 8
  %50 = alloca double, align 8
  %51 = alloca double, align 8
  %52 = alloca double, align 8
  %53 = alloca double, align 8
  %54 = alloca double, align 8
  %55 = alloca i64, align 8
  %56 = alloca double, align 8
  %57 = alloca double, align 8
  %58 = alloca double, align 8
  %59 = alloca double, align 8
  %60 = alloca i8, align 1
  store ptr %0, ptr %8, align 8, !tbaa !5
  %61 = zext i1 %1 to i8
  store i8 %61, 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) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #4
  %62 = load ptr, ptr %13, align 8, !tbaa !5
  store i64 0, ptr %62, align 8, !tbaa !11
  %63 = load ptr, ptr %8, align 8, !tbaa !5
  %64 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %63, i32 0, i32 2
  %65 = load i64, ptr %64, align 8, !tbaa !13
  store i64 %65, ptr %15, align 8, !tbaa !11
  %66 = load ptr, ptr %8, align 8, !tbaa !5
  %67 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %66, i32 0, i32 34
  %68 = load i64, ptr %67, align 8, !tbaa !33
  %69 = load ptr, ptr %8, align 8, !tbaa !5
  %70 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %69, i32 0, i32 35
  %71 = load i64, ptr %70, align 8, !tbaa !34
  %72 = add nsw i64 %68, %71
  store i64 %72, ptr %16, align 8, !tbaa !11
  %73 = call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef @.str.609)
  %74 = load ptr, ptr %8, align 8, !tbaa !5
  %75 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %74, i32 0, i32 52
  %76 = zext i1 %73 to i8
  store i8 %76, ptr %75, align 8, !tbaa !35
  %77 = load ptr, ptr %8, align 8, !tbaa !5
  %78 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %77, i32 0, i32 52
  %79 = load i8, ptr %78, align 8, !tbaa !35, !range !36, !noundef !37
  %80 = trunc i8 %79 to i1
  br i1 %80, label %81, label %83

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

83:                                               ; preds = %81, %7
  %84 = phi i1 [ false, %7 ], [ %82, %81 ]
  %85 = load ptr, ptr %8, align 8, !tbaa !5
  %86 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %85, i32 0, i32 53
  %87 = zext i1 %84 to i8
  store i8 %87, ptr %86, align 1, !tbaa !38
  %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 %16, 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_implL30vipmsolver_primalstagnationlenE, align 8, !tbaa !11
  %98 = load i64, ptr @_ZN11alglib_implL28vipmsolver_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.611, ptr noundef %100)
  %101 = load ptr, ptr %8, align 8, !tbaa !5
  %102 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %101, i32 0, i32 52
  %103 = load i8, ptr %102, align 8, !tbaa !35, !range !36, !noundef !37
  %104 = trunc i8 %103 to i1
  br i1 %104, label %105, label %106

105:                                              ; preds = %83
  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 %106

106:                                              ; preds = %105, %83
  %107 = load ptr, ptr %14, align 8, !tbaa !5
  %108 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef 5.000000e-16, double noundef 7.500000e-01, ptr noundef %107)
  store double %108, ptr %35, align 8, !tbaa !39
  store double 0.000000e+00, ptr %36, align 8, !tbaa !39
  %109 = load ptr, ptr %14, align 8, !tbaa !5
  %110 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %109)
  store double %110, ptr %29, align 8, !tbaa !39
  store double 0x3CF6849B86A12B9C, ptr %30, align 8, !tbaa !39
  %111 = load double, ptr %29, align 8, !tbaa !39
  store double %111, ptr %28, align 8, !tbaa !39
  %112 = load i64, ptr %15, align 8, !tbaa !11
  %113 = sitofp i64 %112 to double
  %114 = load ptr, ptr %14, align 8, !tbaa !5
  %115 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %113, ptr noundef %114)
  %116 = fadd double 1.000000e+02, %115
  %117 = fmul double %116, 5.000000e-16
  store double %117, ptr %33, align 8, !tbaa !39
  store double 0x3CF6849B86A12B9C, ptr %31, align 8, !tbaa !39
  %118 = load ptr, ptr %14, align 8, !tbaa !5
  %119 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %118)
  store double %119, ptr %32, align 8, !tbaa !39
  %120 = load ptr, ptr %14, align 8, !tbaa !5
  %121 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %120)
  %122 = load ptr, ptr %14, align 8, !tbaa !5
  %123 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %121, ptr noundef %122)
  store double %123, ptr %34, align 8, !tbaa !39
  %124 = load ptr, ptr %8, align 8, !tbaa !5
  %125 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %124, i32 0, i32 50
  store i64 0, ptr %125, align 8, !tbaa !40
  %126 = load ptr, ptr %8, align 8, !tbaa !5
  %127 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %126, i32 0, i32 51
  store i64 0, ptr %127, align 8, !tbaa !41
  %128 = load i64, ptr %15, align 8, !tbaa !11
  %129 = sitofp i64 %128 to double
  %130 = load ptr, ptr %14, align 8, !tbaa !5
  %131 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %129, ptr noundef %130)
  %132 = fadd double 1.000000e+02, %131
  %133 = fmul double %132, 5.000000e-16
  store double %133, ptr %50, align 8, !tbaa !39
  %134 = load double, ptr %50, align 8, !tbaa !39
  %135 = fmul double 1.000000e-02, %134
  store double %135, ptr %49, align 8, !tbaa !39
  %136 = load ptr, ptr %8, align 8, !tbaa !5
  %137 = load double, ptr %35, align 8, !tbaa !39
  %138 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL22vipmsolver_vipmpowerupEPNS_9vipmstateEdPNS_8ae_stateE(ptr noundef %136, double noundef %137, ptr noundef %138)
  %139 = load ptr, ptr %8, align 8, !tbaa !5
  %140 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %139, i32 0, i32 37
  %141 = load ptr, ptr %8, align 8, !tbaa !5
  %142 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %141, i32 0, i32 36
  %143 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL23vipmsolver_varsinitfromEPNS_8vipmvarsEPKS0_PNS_8ae_stateE(ptr noundef %140, ptr noundef %142, ptr noundef %143)
  %144 = load ptr, ptr %8, align 8, !tbaa !5
  %145 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %144, i32 0, i32 88
  %146 = load i64, ptr %15, align 8, !tbaa !11
  %147 = load i64, ptr %16, align 8, !tbaa !11
  %148 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL25vipmsolver_varsinitbyzeroEPNS_8vipmvarsEllPNS_8ae_stateE(ptr noundef %145, i64 noundef %146, i64 noundef %147, ptr noundef %148)
  %149 = load ptr, ptr %8, align 8, !tbaa !5
  %150 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %149, i32 0, i32 39
  %151 = load i64, ptr %15, align 8, !tbaa !11
  %152 = load i64, ptr %16, align 8, !tbaa !11
  %153 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL25vipmsolver_varsinitbyzeroEPNS_8vipmvarsEllPNS_8ae_stateE(ptr noundef %150, i64 noundef %151, i64 noundef %152, ptr noundef %153)
  %154 = load ptr, ptr %8, align 8, !tbaa !5
  %155 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %154, i32 0, i32 40
  %156 = load i64, ptr %15, align 8, !tbaa !11
  %157 = load i64, ptr %16, align 8, !tbaa !11
  %158 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL25vipmsolver_varsinitbyzeroEPNS_8vipmvarsEllPNS_8ae_stateE(ptr noundef %155, i64 noundef %156, i64 noundef %157, ptr noundef %158)
  store i64 -1, ptr %55, align 8, !tbaa !11
  store double 1.000000e+300, ptr %56, align 8, !tbaa !39
  store double 1.000000e+300, ptr %57, align 8, !tbaa !39
  store double 1.000000e+300, ptr %58, align 8, !tbaa !39
  store double 1.000000e+300, ptr %59, align 8, !tbaa !39
  %159 = load ptr, ptr %8, align 8, !tbaa !5
  %160 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL24vipmsolver_traceprogressEPNS_9vipmstateEdddddPNS_8ae_stateE(ptr noundef %159, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, ptr noundef %160)
  store double 0.000000e+00, ptr %51, align 8, !tbaa !39
  %161 = load double, ptr %51, align 8, !tbaa !39
  %162 = load i64, ptr %16, align 8, !tbaa !11
  %163 = load ptr, ptr %8, align 8, !tbaa !5
  %164 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %163, i32 0, i32 36
  %165 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %164, i32 0, i32 7
  %166 = load ptr, ptr %14, align 8, !tbaa !5
  %167 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %162, ptr noundef %165, ptr noundef %166)
  %168 = load ptr, ptr %14, align 8, !tbaa !5
  %169 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %161, double noundef %167, ptr noundef %168)
  store double %169, ptr %51, align 8, !tbaa !39
  %170 = load double, ptr %51, align 8, !tbaa !39
  %171 = load i64, ptr %16, align 8, !tbaa !11
  %172 = load ptr, ptr %8, align 8, !tbaa !5
  %173 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %172, i32 0, i32 36
  %174 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %173, i32 0, i32 9
  %175 = load ptr, ptr %14, align 8, !tbaa !5
  %176 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %171, ptr noundef %174, ptr noundef %175)
  %177 = load ptr, ptr %14, align 8, !tbaa !5
  %178 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %170, double noundef %176, ptr noundef %177)
  store double %178, ptr %51, align 8, !tbaa !39
  %179 = load double, ptr %51, align 8, !tbaa !39
  %180 = load i64, ptr %16, align 8, !tbaa !11
  %181 = load ptr, ptr %8, align 8, !tbaa !5
  %182 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %181, i32 0, i32 36
  %183 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %182, i32 0, i32 11
  %184 = load ptr, ptr %14, align 8, !tbaa !5
  %185 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %180, ptr noundef %183, ptr noundef %184)
  %186 = load ptr, ptr %14, align 8, !tbaa !5
  %187 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %179, double noundef %185, ptr noundef %186)
  store double %187, ptr %51, align 8, !tbaa !39
  %188 = load double, ptr %51, align 8, !tbaa !39
  %189 = load i64, ptr %15, align 8, !tbaa !11
  %190 = load ptr, ptr %8, align 8, !tbaa !5
  %191 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %190, i32 0, i32 36
  %192 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %191, i32 0, i32 8
  %193 = load ptr, ptr %14, align 8, !tbaa !5
  %194 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %189, ptr noundef %192, ptr noundef %193)
  %195 = load ptr, ptr %14, align 8, !tbaa !5
  %196 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %188, double noundef %194, ptr noundef %195)
  store double %196, ptr %51, align 8, !tbaa !39
  %197 = load double, ptr %51, align 8, !tbaa !39
  %198 = load i64, ptr %15, align 8, !tbaa !11
  %199 = load ptr, ptr %8, align 8, !tbaa !5
  %200 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %199, i32 0, i32 36
  %201 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %200, i32 0, i32 10
  %202 = load ptr, ptr %14, align 8, !tbaa !5
  %203 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %198, ptr noundef %201, ptr noundef %202)
  %204 = load ptr, ptr %14, align 8, !tbaa !5
  %205 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %197, double noundef %203, ptr noundef %204)
  store double %205, ptr %51, align 8, !tbaa !39
  store i8 1, ptr %60, align 1, !tbaa !9
  store i64 0, ptr %26, align 8, !tbaa !11
  store i64 0, ptr %27, align 8, !tbaa !11
  %206 = load ptr, ptr %13, align 8, !tbaa !5
  store i64 7, ptr %206, align 8, !tbaa !11
  store double 1.000000e+300, ptr %39, align 8, !tbaa !39
  store double 1.000000e+300, ptr %40, align 8, !tbaa !39
  store i64 0, ptr %18, align 8, !tbaa !11
  br label %207

207:                                              ; preds = %1068, %106
  %208 = load i64, ptr %18, align 8, !tbaa !11
  %209 = load i64, ptr @_ZN11alglib_implL20vipmsolver_maxipmitsE, align 8, !tbaa !11
  %210 = sub nsw i64 %209, 1
  %211 = icmp sle i64 %208, %210
  br i1 %211, label %212, label %1071

212:                                              ; preds = %207
  %213 = load i64, ptr %18, align 8, !tbaa !11
  %214 = load i64, ptr @_ZN11alglib_implL23vipmsolver_phase0lengthE, align 8, !tbaa !11
  %215 = icmp slt i64 %213, %214
  %216 = load double, ptr %29, align 8, !tbaa !39
  %217 = load double, ptr %30, align 8, !tbaa !39
  %218 = load ptr, ptr %14, align 8, !tbaa !5
  %219 = call noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext %215, double noundef %216, double noundef %217, ptr noundef %218)
  store double %219, ptr %28, align 8, !tbaa !39
  %220 = load ptr, ptr %8, align 8, !tbaa !5
  %221 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %220, i32 0, i32 52
  %222 = load i8, ptr %221, align 8, !tbaa !35, !range !36, !noundef !37
  %223 = trunc i8 %222 to i1
  br i1 %223, label %224, label %227

224:                                              ; preds = %212
  %225 = load i64, ptr %18, align 8, !tbaa !11
  %226 = trunc i64 %225 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.614, i32 noundef %226)
  br label %227

227:                                              ; preds = %224, %212
  %228 = load double, ptr %31, align 8, !tbaa !39
  %229 = load double, ptr %34, align 8, !tbaa !39
  %230 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %228, double noundef %229)
  br i1 %230, label %231, label %239

231:                                              ; preds = %227
  %232 = load ptr, ptr %8, align 8, !tbaa !5
  %233 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %232, i32 0, i32 52
  %234 = load i8, ptr %233, align 8, !tbaa !35, !range !36, !noundef !37
  %235 = trunc i8 %234 to i1
  br i1 %235, label %236, label %237

236:                                              ; preds = %231
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.615)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.616)
  br label %237

237:                                              ; preds = %236, %231
  %238 = load ptr, ptr %13, align 8, !tbaa !5
  store i64 7, ptr %238, align 8, !tbaa !11
  br label %1071

239:                                              ; preds = %227
  %240 = load ptr, ptr %8, align 8, !tbaa !5
  %241 = load ptr, ptr %8, align 8, !tbaa !5
  %242 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %241, i32 0, i32 36
  %243 = load double, ptr %28, align 8, !tbaa !39
  %244 = load double, ptr %33, align 8, !tbaa !39
  %245 = load double, ptr %31, align 8, !tbaa !39
  %246 = load double, ptr %36, align 8, !tbaa !39
  %247 = load ptr, ptr %14, align 8, !tbaa !5
  %248 = call noundef zeroext i1 @_ZN11alglib_implL44vipmsolver_vipmprecomputenewtonfactorizationEPNS_9vipmstateEPKNS_8vipmvarsEddddPNS_8ae_stateE(ptr noundef %240, ptr noundef %242, double noundef %243, double noundef %244, double noundef %245, double noundef %246, ptr noundef %247)
  br i1 %248, label %259, label %249

249:                                              ; preds = %239
  %250 = load double, ptr %31, align 8, !tbaa !39
  %251 = fmul double 1.000000e+01, %250
  store double %251, ptr %31, align 8, !tbaa !39
  %252 = load ptr, ptr %8, align 8, !tbaa !5
  %253 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %252, i32 0, i32 52
  %254 = load i8, ptr %253, align 8, !tbaa !35, !range !36, !noundef !37
  %255 = trunc i8 %254 to i1
  br i1 %255, label %256, label %258

256:                                              ; preds = %249
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.617)
  %257 = load double, ptr %31, align 8, !tbaa !39
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.618, double noundef %257)
  br label %258

258:                                              ; preds = %256, %249
  br label %1068

259:                                              ; preds = %239
  %260 = load ptr, ptr %8, align 8, !tbaa !5
  %261 = load ptr, ptr %8, align 8, !tbaa !5
  %262 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %261, i32 0, i32 36
  %263 = load ptr, ptr %14, align 8, !tbaa !5
  %264 = call noundef double @_ZN11alglib_implL24vipmsolver_varscomputemuEPKNS_9vipmstateEPKNS_8vipmvarsEPNS_8ae_stateE(ptr noundef %260, ptr noundef %262, ptr noundef %263)
  store double %264, ptr %19, align 8, !tbaa !39
  %265 = load ptr, ptr %8, align 8, !tbaa !5
  %266 = load ptr, ptr %8, align 8, !tbaa !5
  %267 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %266, i32 0, i32 36
  %268 = load ptr, ptr %8, align 8, !tbaa !5
  %269 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %268, i32 0, i32 88
  %270 = load ptr, ptr %8, align 8, !tbaa !5
  %271 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %270, i32 0, i32 39
  %272 = load double, ptr %28, align 8, !tbaa !39
  %273 = load double, ptr %31, align 8, !tbaa !39
  %274 = load double, ptr %32, align 8, !tbaa !39
  %275 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %273, double noundef %274)
  %276 = load ptr, ptr %14, align 8, !tbaa !5
  %277 = call noundef zeroext i1 @_ZN11alglib_implL35vipmsolver_vipmcomputestepdirectionEPNS_9vipmstateEPKNS_8vipmvarsEdS4_PS2_dbPNS_8ae_stateE(ptr noundef %265, ptr noundef %267, double noundef 0.000000e+00, ptr noundef %269, ptr noundef %271, double noundef %272, i1 noundef zeroext %275, ptr noundef %276)
  br i1 %277, label %288, label %278

278:                                              ; preds = %259
  %279 = load double, ptr %31, align 8, !tbaa !39
  %280 = fmul double 1.000000e+01, %279
  store double %280, ptr %31, align 8, !tbaa !39
  %281 = load ptr, ptr %8, align 8, !tbaa !5
  %282 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %281, i32 0, i32 52
  %283 = load i8, ptr %282, align 8, !tbaa !35, !range !36, !noundef !37
  %284 = trunc i8 %283 to i1
  br i1 %284, label %285, label %287

285:                                              ; preds = %278
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.619)
  %286 = load double, ptr %31, align 8, !tbaa !39
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.618, double noundef %286)
  br label %287

287:                                              ; preds = %285, %278
  br label %1068

288:                                              ; preds = %259
  %289 = load ptr, ptr %8, align 8, !tbaa !5
  %290 = load ptr, ptr %8, align 8, !tbaa !5
  %291 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %290, i32 0, i32 36
  %292 = load ptr, ptr %8, align 8, !tbaa !5
  %293 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %292, i32 0, i32 39
  %294 = load double, ptr @_ZN11alglib_implL26vipmsolver_steplengthdecayE, align 8, !tbaa !39
  %295 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL32vipmsolver_vipmcomputesteplengthEPKNS_9vipmstateEPKNS_8vipmvarsES5_dbPdS6_PNS_8ae_stateE(ptr noundef %289, ptr noundef %291, ptr noundef %293, double noundef %294, i1 noundef zeroext false, ptr noundef %22, ptr noundef %23, ptr noundef %295)
  %296 = load ptr, ptr %8, align 8, !tbaa !5
  %297 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %296, i32 0, i32 38
  %298 = load ptr, ptr %8, align 8, !tbaa !5
  %299 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %298, i32 0, i32 36
  %300 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL23vipmsolver_varsinitfromEPNS_8vipmvarsEPKS0_PNS_8ae_stateE(ptr noundef %297, ptr noundef %299, ptr noundef %300)
  %301 = load ptr, ptr %8, align 8, !tbaa !5
  %302 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %301, i32 0, i32 38
  %303 = load ptr, ptr %8, align 8, !tbaa !5
  %304 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %303, i32 0, i32 39
  %305 = load double, ptr %22, align 8, !tbaa !39
  %306 = load double, ptr %23, align 8, !tbaa !39
  %307 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL22vipmsolver_varsaddstepEPNS_8vipmvarsEPKS0_ddPNS_8ae_stateE(ptr noundef %302, ptr noundef %304, double noundef %305, double noundef %306, ptr noundef %307)
  %308 = load ptr, ptr %8, align 8, !tbaa !5
  %309 = load ptr, ptr %8, align 8, !tbaa !5
  %310 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %309, i32 0, i32 38
  %311 = load ptr, ptr %14, align 8, !tbaa !5
  %312 = call noundef double @_ZN11alglib_implL24vipmsolver_varscomputemuEPKNS_9vipmstateEPKNS_8vipmvarsEPNS_8ae_stateE(ptr noundef %308, ptr noundef %310, ptr noundef %311)
  store double %312, ptr %20, align 8, !tbaa !39
  %313 = load double, ptr %20, align 8, !tbaa !39
  %314 = load double, ptr %49, align 8, !tbaa !39
  %315 = fadd double %313, %314
  %316 = load double, ptr %19, align 8, !tbaa !39
  %317 = load double, ptr %49, align 8, !tbaa !39
  %318 = fadd double %316, %317
  %319 = fdiv double %315, %318
  %320 = load ptr, ptr %14, align 8, !tbaa !5
  %321 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef %319, double noundef 3.000000e+00, ptr noundef %320)
  %322 = load ptr, ptr %14, align 8, !tbaa !5
  %323 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %321, double noundef 1.000000e+00, ptr noundef %322)
  store double %323, ptr %21, align 8, !tbaa !39
  %324 = load double, ptr %21, align 8, !tbaa !39
  %325 = load ptr, ptr %14, align 8, !tbaa !5
  %326 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %324, ptr noundef %325)
  br i1 %326, label %327, label %330

327:                                              ; preds = %288
  %328 = load double, ptr %21, align 8, !tbaa !39
  %329 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %328, double noundef 1.000000e+00)
  br label %330

330:                                              ; preds = %327, %288
  %331 = phi i1 [ false, %288 ], [ %329, %327 ]
  %332 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %331, ptr noundef @.str.620, ptr noundef %332)
  %333 = load ptr, ptr %8, align 8, !tbaa !5
  %334 = load ptr, ptr %8, align 8, !tbaa !5
  %335 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %334, i32 0, i32 36
  %336 = load double, ptr %21, align 8, !tbaa !39
  %337 = load double, ptr %19, align 8, !tbaa !39
  %338 = load double, ptr %49, align 8, !tbaa !39
  %339 = call double @llvm.fmuladd.f64(double %336, double %337, double %338)
  %340 = load ptr, ptr %8, align 8, !tbaa !5
  %341 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %340, i32 0, i32 39
  %342 = load ptr, ptr %8, align 8, !tbaa !5
  %343 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %342, i32 0, i32 40
  %344 = load double, ptr %28, align 8, !tbaa !39
  %345 = load double, ptr %31, align 8, !tbaa !39
  %346 = load double, ptr %32, align 8, !tbaa !39
  %347 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %345, double noundef %346)
  %348 = load ptr, ptr %14, align 8, !tbaa !5
  %349 = call noundef zeroext i1 @_ZN11alglib_implL35vipmsolver_vipmcomputestepdirectionEPNS_9vipmstateEPKNS_8vipmvarsEdS4_PS2_dbPNS_8ae_stateE(ptr noundef %333, ptr noundef %335, double noundef %339, ptr noundef %341, ptr noundef %343, double noundef %344, i1 noundef zeroext %347, ptr noundef %348)
  br i1 %349, label %360, label %350

350:                                              ; preds = %330
  %351 = load double, ptr %31, align 8, !tbaa !39
  %352 = fmul double 1.000000e+01, %351
  store double %352, ptr %31, align 8, !tbaa !39
  %353 = load ptr, ptr %8, align 8, !tbaa !5
  %354 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %353, i32 0, i32 52
  %355 = load i8, ptr %354, align 8, !tbaa !35, !range !36, !noundef !37
  %356 = trunc i8 %355 to i1
  br i1 %356, label %357, label %359

357:                                              ; preds = %350
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.621)
  %358 = load double, ptr %31, align 8, !tbaa !39
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.618, double noundef %358)
  br label %359

359:                                              ; preds = %357, %350
  br label %1068

360:                                              ; preds = %330
  %361 = load ptr, ptr %8, align 8, !tbaa !5
  %362 = load ptr, ptr %8, align 8, !tbaa !5
  %363 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %362, i32 0, i32 36
  %364 = load ptr, ptr %8, align 8, !tbaa !5
  %365 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %364, i32 0, i32 40
  %366 = load double, ptr @_ZN11alglib_implL26vipmsolver_steplengthdecayE, align 8, !tbaa !39
  %367 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL32vipmsolver_vipmcomputesteplengthEPKNS_9vipmstateEPKNS_8vipmvarsES5_dbPdS6_PNS_8ae_stateE(ptr noundef %361, ptr noundef %363, ptr noundef %365, double noundef %366, i1 noundef zeroext false, ptr noundef %24, ptr noundef %25, ptr noundef %367)
  %368 = load i64, ptr %18, align 8, !tbaa !11
  %369 = sitofp i64 %368 to double
  %370 = load double, ptr @_ZN11alglib_implL35vipmsolver_minitersbeforesafeguardsE, align 8, !tbaa !39
  %371 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %369, double noundef %370)
  br i1 %371, label %372, label %390

372:                                              ; preds = %360
  %373 = load double, ptr %24, align 8, !tbaa !39
  %374 = load double, ptr @_ZN11alglib_implL24vipmsolver_badsteplengthE, align 8, !tbaa !39
  %375 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %373, double noundef %374)
  br i1 %375, label %380, label %376

376:                                              ; preds = %372
  %377 = load double, ptr %25, align 8, !tbaa !39
  %378 = load double, ptr @_ZN11alglib_implL24vipmsolver_badsteplengthE, align 8, !tbaa !39
  %379 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %377, double noundef %378)
  br i1 %379, label %380, label %390

380:                                              ; preds = %376, %372
  %381 = load double, ptr %31, align 8, !tbaa !39
  %382 = fmul double 1.000000e+01, %381
  store double %382, ptr %31, align 8, !tbaa !39
  %383 = load ptr, ptr %8, align 8, !tbaa !5
  %384 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %383, i32 0, i32 52
  %385 = load i8, ptr %384, align 8, !tbaa !35, !range !36, !noundef !37
  %386 = trunc i8 %385 to i1
  br i1 %386, label %387, label %389

387:                                              ; preds = %380
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.622)
  %388 = load double, ptr %31, align 8, !tbaa !39
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.618, double noundef %388)
  br label %389

389:                                              ; preds = %387, %380
  br label %1068

390:                                              ; preds = %376, %360
  %391 = load ptr, ptr %8, align 8, !tbaa !5
  %392 = load ptr, ptr %8, align 8, !tbaa !5
  %393 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %392, i32 0, i32 36
  %394 = load ptr, ptr %8, align 8, !tbaa !5
  %395 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %394, i32 0, i32 40
  %396 = load double, ptr %24, align 8, !tbaa !39
  %397 = load double, ptr %25, align 8, !tbaa !39
  %398 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL29vipmsolver_runintegritychecksEPKNS_9vipmstateEPKNS_8vipmvarsES5_ddPNS_8ae_stateE(ptr noundef %391, ptr noundef %393, ptr noundef %395, double noundef %396, double noundef %397, ptr noundef %398)
  %399 = load ptr, ptr %8, align 8, !tbaa !5
  %400 = load double, ptr %24, align 8, !tbaa !39
  %401 = load double, ptr %25, align 8, !tbaa !39
  %402 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL26vipmsolver_vipmperformstepEPNS_9vipmstateEddPNS_8ae_stateE(ptr noundef %399, double noundef %400, double noundef %401, ptr noundef %402)
  %403 = load ptr, ptr %8, align 8, !tbaa !5
  %404 = load double, ptr %19, align 8, !tbaa !39
  %405 = load double, ptr %20, align 8, !tbaa !39
  %406 = load double, ptr %21, align 8, !tbaa !39
  %407 = load double, ptr %24, align 8, !tbaa !39
  %408 = load double, ptr %25, align 8, !tbaa !39
  %409 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL24vipmsolver_traceprogressEPNS_9vipmstateEdddddPNS_8ae_stateE(ptr noundef %403, double noundef %404, double noundef %405, double noundef %406, double noundef %407, double noundef %408, ptr noundef %409)
  %410 = load i8, ptr %9, align 1, !tbaa !9, !range !36, !noundef !37
  %411 = trunc i8 %410 to i1
  br i1 %411, label %412, label %817

412:                                              ; preds = %390
  %413 = load i64, ptr %18, align 8, !tbaa !11
  %414 = load i64, ptr @_ZN11alglib_implL39vipmsolver_minitersbeforedroppingboundsE, align 8, !tbaa !11
  %415 = icmp sge i64 %413, %414
  br i1 %415, label %416, label %817

416:                                              ; preds = %412
  %417 = load double, ptr @_ZN11alglib_implL23vipmsolver_bigconstrmagE, align 8, !tbaa !39
  %418 = fmul double 1.000000e+01, %417
  %419 = load double, ptr @_ZN11alglib_implL24vipmsolver_bigconstrxtolE, align 8, !tbaa !39
  %420 = fdiv double 1.000000e+00, %419
  %421 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %418, double noundef %420)
  %422 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %421, ptr noundef @.str.623, ptr noundef %422)
  store i64 0, ptr %37, align 8, !tbaa !11
  store double 1.000000e+00, ptr %53, align 8, !tbaa !39
  %423 = load double, ptr %53, align 8, !tbaa !39
  %424 = load i64, ptr %15, align 8, !tbaa !11
  %425 = load ptr, ptr %8, align 8, !tbaa !5
  %426 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %425, i32 0, i32 36
  %427 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %426, i32 0, i32 2
  %428 = load ptr, ptr %14, align 8, !tbaa !5
  %429 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %424, ptr noundef %427, ptr noundef %428)
  %430 = load ptr, ptr %14, align 8, !tbaa !5
  %431 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %423, double noundef %429, ptr noundef %430)
  store double %431, ptr %53, align 8, !tbaa !39
  %432 = load double, ptr %53, align 8, !tbaa !39
  %433 = load i64, ptr %15, align 8, !tbaa !11
  %434 = load ptr, ptr %8, align 8, !tbaa !5
  %435 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %434, i32 0, i32 36
  %436 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %435, i32 0, i32 3
  %437 = load ptr, ptr %14, align 8, !tbaa !5
  %438 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %433, ptr noundef %436, ptr noundef %437)
  %439 = load ptr, ptr %14, align 8, !tbaa !5
  %440 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %432, double noundef %438, ptr noundef %439)
  store double %440, ptr %53, align 8, !tbaa !39
  %441 = load double, ptr %53, align 8, !tbaa !39
  %442 = load i64, ptr %15, align 8, !tbaa !11
  %443 = load ptr, ptr %8, align 8, !tbaa !5
  %444 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %443, i32 0, i32 36
  %445 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %444, i32 0, i32 5
  %446 = load ptr, ptr %14, align 8, !tbaa !5
  %447 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %442, ptr noundef %445, ptr noundef %446)
  %448 = load ptr, ptr %14, align 8, !tbaa !5
  %449 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %441, double noundef %447, ptr noundef %448)
  store double %449, ptr %53, align 8, !tbaa !39
  %450 = load double, ptr %53, align 8, !tbaa !39
  %451 = load i64, ptr %16, align 8, !tbaa !11
  %452 = load ptr, ptr %8, align 8, !tbaa !5
  %453 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %452, i32 0, i32 36
  %454 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %453, i32 0, i32 4
  %455 = load ptr, ptr %14, align 8, !tbaa !5
  %456 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %451, ptr noundef %454, ptr noundef %455)
  %457 = load ptr, ptr %14, align 8, !tbaa !5
  %458 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %450, double noundef %456, ptr noundef %457)
  store double %458, ptr %53, align 8, !tbaa !39
  %459 = load double, ptr %53, align 8, !tbaa !39
  %460 = load i64, ptr %16, align 8, !tbaa !11
  %461 = load ptr, ptr %8, align 8, !tbaa !5
  %462 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %461, i32 0, i32 36
  %463 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %462, i32 0, i32 6
  %464 = load ptr, ptr %14, align 8, !tbaa !5
  %465 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %460, ptr noundef %463, ptr noundef %464)
  %466 = load ptr, ptr %14, align 8, !tbaa !5
  %467 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %459, double noundef %465, ptr noundef %466)
  store double %467, ptr %53, align 8, !tbaa !39
  store double 1.000000e+00, ptr %54, align 8, !tbaa !39
  %468 = load double, ptr %54, align 8, !tbaa !39
  %469 = load double, ptr %24, align 8, !tbaa !39
  %470 = load i64, ptr %15, align 8, !tbaa !11
  %471 = load ptr, ptr %8, align 8, !tbaa !5
  %472 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %471, i32 0, i32 40
  %473 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %472, i32 0, i32 2
  %474 = load ptr, ptr %14, align 8, !tbaa !5
  %475 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %470, ptr noundef %473, ptr noundef %474)
  %476 = fmul double %469, %475
  %477 = load ptr, ptr %14, align 8, !tbaa !5
  %478 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %468, double noundef %476, ptr noundef %477)
  store double %478, ptr %54, align 8, !tbaa !39
  %479 = load double, ptr %54, align 8, !tbaa !39
  %480 = load double, ptr %24, align 8, !tbaa !39
  %481 = load i64, ptr %15, align 8, !tbaa !11
  %482 = load ptr, ptr %8, align 8, !tbaa !5
  %483 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %482, i32 0, i32 40
  %484 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %483, i32 0, i32 3
  %485 = load ptr, ptr %14, align 8, !tbaa !5
  %486 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %481, ptr noundef %484, ptr noundef %485)
  %487 = fmul double %480, %486
  %488 = load ptr, ptr %14, align 8, !tbaa !5
  %489 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %479, double noundef %487, ptr noundef %488)
  store double %489, ptr %54, align 8, !tbaa !39
  %490 = load double, ptr %54, align 8, !tbaa !39
  %491 = load double, ptr %24, align 8, !tbaa !39
  %492 = load i64, ptr %15, align 8, !tbaa !11
  %493 = load ptr, ptr %8, align 8, !tbaa !5
  %494 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %493, i32 0, i32 40
  %495 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %494, i32 0, i32 5
  %496 = load ptr, ptr %14, align 8, !tbaa !5
  %497 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %492, ptr noundef %495, ptr noundef %496)
  %498 = fmul double %491, %497
  %499 = load ptr, ptr %14, align 8, !tbaa !5
  %500 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %490, double noundef %498, ptr noundef %499)
  store double %500, ptr %54, align 8, !tbaa !39
  %501 = load double, ptr %54, align 8, !tbaa !39
  %502 = load double, ptr %24, align 8, !tbaa !39
  %503 = load i64, ptr %16, align 8, !tbaa !11
  %504 = load ptr, ptr %8, align 8, !tbaa !5
  %505 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %504, i32 0, i32 40
  %506 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %505, i32 0, i32 4
  %507 = load ptr, ptr %14, align 8, !tbaa !5
  %508 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %503, ptr noundef %506, ptr noundef %507)
  %509 = fmul double %502, %508
  %510 = load ptr, ptr %14, align 8, !tbaa !5
  %511 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %501, double noundef %509, ptr noundef %510)
  store double %511, ptr %54, align 8, !tbaa !39
  %512 = load double, ptr %54, align 8, !tbaa !39
  %513 = load double, ptr %24, align 8, !tbaa !39
  %514 = load i64, ptr %16, align 8, !tbaa !11
  %515 = load ptr, ptr %8, align 8, !tbaa !5
  %516 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %515, i32 0, i32 40
  %517 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %516, i32 0, i32 6
  %518 = load ptr, ptr %14, align 8, !tbaa !5
  %519 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %514, ptr noundef %517, ptr noundef %518)
  %520 = fmul double %513, %519
  %521 = load ptr, ptr %14, align 8, !tbaa !5
  %522 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %512, double noundef %520, ptr noundef %521)
  store double %522, ptr %54, align 8, !tbaa !39
  %523 = load double, ptr %54, align 8, !tbaa !39
  %524 = load double, ptr %53, align 8, !tbaa !39
  %525 = load double, ptr @_ZN11alglib_implL24vipmsolver_bigconstrxtolE, align 8, !tbaa !39
  %526 = fmul double %524, %525
  %527 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %523, double noundef %526)
  br i1 %527, label %528, label %816

528:                                              ; preds = %416
  store double 1.000000e+00, ptr %38, align 8, !tbaa !39
  %529 = load double, ptr %38, align 8, !tbaa !39
  %530 = load i64, ptr %15, align 8, !tbaa !11
  %531 = load ptr, ptr %8, align 8, !tbaa !5
  %532 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %531, i32 0, i32 36
  %533 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %532, i32 0, i32 2
  %534 = load ptr, ptr %14, align 8, !tbaa !5
  %535 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %530, ptr noundef %533, ptr noundef %534)
  %536 = load ptr, ptr %14, align 8, !tbaa !5
  %537 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %529, double noundef %535, ptr noundef %536)
  store double %537, ptr %38, align 8, !tbaa !39
  store i64 0, ptr %17, align 8, !tbaa !11
  br label %538

538:                                              ; preds = %664, %528
  %539 = load i64, ptr %17, align 8, !tbaa !11
  %540 = load i64, ptr %15, align 8, !tbaa !11
  %541 = sub nsw i64 %540, 1
  %542 = icmp sle i64 %539, %541
  br i1 %542, label %543, label %667

543:                                              ; preds = %538
  %544 = load ptr, ptr %8, align 8, !tbaa !5
  %545 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %544, i32 0, i32 22
  %546 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %545, i32 0, i32 4
  %547 = load ptr, ptr %546, align 8, !tbaa !42
  %548 = load i64, ptr %17, align 8, !tbaa !11
  %549 = getelementptr inbounds i8, ptr %547, i64 %548
  %550 = load i8, ptr %549, align 1, !tbaa !9, !range !36, !noundef !37
  %551 = trunc i8 %550 to i1
  br i1 %551, label %552, label %603

552:                                              ; preds = %543
  %553 = load ptr, ptr %8, align 8, !tbaa !5
  %554 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %553, i32 0, i32 42
  %555 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %554, i32 0, i32 4
  %556 = load ptr, ptr %555, align 8, !tbaa !42
  %557 = load i64, ptr %17, align 8, !tbaa !11
  %558 = getelementptr inbounds i8, ptr %556, i64 %557
  %559 = load i8, ptr %558, align 1, !tbaa !9, !range !36, !noundef !37
  %560 = trunc i8 %559 to i1
  br i1 %560, label %561, label %603

561:                                              ; preds = %552
  %562 = load ptr, ptr %8, align 8, !tbaa !5
  %563 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %562, i32 0, i32 18
  %564 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %563, i32 0, i32 4
  %565 = load ptr, ptr %564, align 8, !tbaa !42
  %566 = load i64, ptr %17, align 8, !tbaa !11
  %567 = getelementptr inbounds double, ptr %565, i64 %566
  %568 = load double, ptr %567, align 8, !tbaa !39
  %569 = load ptr, ptr %14, align 8, !tbaa !5
  %570 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %568, ptr noundef %569)
  %571 = load double, ptr @_ZN11alglib_implL23vipmsolver_bigconstrmagE, align 8, !tbaa !39
  %572 = load double, ptr %38, align 8, !tbaa !39
  %573 = fmul double %571, %572
  %574 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %570, double noundef %573)
  br i1 %574, label %575, label %603

575:                                              ; preds = %561
  %576 = load ptr, ptr %8, align 8, !tbaa !5
  %577 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %576, i32 0, i32 42
  %578 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %577, i32 0, i32 4
  %579 = load ptr, ptr %578, align 8, !tbaa !42
  %580 = load i64, ptr %17, align 8, !tbaa !11
  %581 = getelementptr inbounds i8, ptr %579, i64 %580
  store i8 0, ptr %581, align 1, !tbaa !9
  %582 = load ptr, ptr %8, align 8, !tbaa !5
  %583 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %582, i32 0, i32 36
  %584 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %583, i32 0, i32 3
  %585 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %584, i32 0, i32 4
  %586 = load ptr, ptr %585, align 8, !tbaa !42
  %587 = load i64, ptr %17, align 8, !tbaa !11
  %588 = getelementptr inbounds double, ptr %586, i64 %587
  store double 0.000000e+00, ptr %588, align 8, !tbaa !39
  %589 = load ptr, ptr %8, align 8, !tbaa !5
  %590 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %589, i32 0, i32 36
  %591 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %590, i32 0, i32 8
  %592 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %591, i32 0, i32 4
  %593 = load ptr, ptr %592, align 8, !tbaa !42
  %594 = load i64, ptr %17, align 8, !tbaa !11
  %595 = getelementptr inbounds double, ptr %593, i64 %594
  store double 0.000000e+00, ptr %595, align 8, !tbaa !39
  %596 = load ptr, ptr %8, align 8, !tbaa !5
  %597 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %596, i32 0, i32 46
  %598 = load i64, ptr %597, align 8, !tbaa !43
  %599 = sub nsw i64 %598, 1
  %600 = load ptr, ptr %8, align 8, !tbaa !5
  %601 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %600, i32 0, i32 46
  store i64 %599, ptr %601, align 8, !tbaa !43
  %602 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %37, ptr noundef %602)
  br label %603

603:                                              ; preds = %575, %561, %552, %543
  %604 = load ptr, ptr %8, align 8, !tbaa !5
  %605 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %604, i32 0, i32 23
  %606 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %605, i32 0, i32 4
  %607 = load ptr, ptr %606, align 8, !tbaa !42
  %608 = load i64, ptr %17, align 8, !tbaa !11
  %609 = getelementptr inbounds i8, ptr %607, i64 %608
  %610 = load i8, ptr %609, align 1, !tbaa !9, !range !36, !noundef !37
  %611 = trunc i8 %610 to i1
  br i1 %611, label %612, label %663

612:                                              ; preds = %603
  %613 = load ptr, ptr %8, align 8, !tbaa !5
  %614 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %613, i32 0, i32 43
  %615 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %614, i32 0, i32 4
  %616 = load ptr, ptr %615, align 8, !tbaa !42
  %617 = load i64, ptr %17, align 8, !tbaa !11
  %618 = getelementptr inbounds i8, ptr %616, i64 %617
  %619 = load i8, ptr %618, align 1, !tbaa !9, !range !36, !noundef !37
  %620 = trunc i8 %619 to i1
  br i1 %620, label %621, label %663

621:                                              ; preds = %612
  %622 = load ptr, ptr %8, align 8, !tbaa !5
  %623 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %622, i32 0, i32 19
  %624 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %623, i32 0, i32 4
  %625 = load ptr, ptr %624, align 8, !tbaa !42
  %626 = load i64, ptr %17, align 8, !tbaa !11
  %627 = getelementptr inbounds double, ptr %625, i64 %626
  %628 = load double, ptr %627, align 8, !tbaa !39
  %629 = load ptr, ptr %14, align 8, !tbaa !5
  %630 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %628, ptr noundef %629)
  %631 = load double, ptr @_ZN11alglib_implL23vipmsolver_bigconstrmagE, align 8, !tbaa !39
  %632 = load double, ptr %38, align 8, !tbaa !39
  %633 = fmul double %631, %632
  %634 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %630, double noundef %633)
  br i1 %634, label %635, label %663

635:                                              ; preds = %621
  %636 = load ptr, ptr %8, align 8, !tbaa !5
  %637 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %636, i32 0, i32 43
  %638 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %637, i32 0, i32 4
  %639 = load ptr, ptr %638, align 8, !tbaa !42
  %640 = load i64, ptr %17, align 8, !tbaa !11
  %641 = getelementptr inbounds i8, ptr %639, i64 %640
  store i8 0, ptr %641, align 1, !tbaa !9
  %642 = load ptr, ptr %8, align 8, !tbaa !5
  %643 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %642, i32 0, i32 36
  %644 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %643, i32 0, i32 5
  %645 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %644, i32 0, i32 4
  %646 = load ptr, ptr %645, align 8, !tbaa !42
  %647 = load i64, ptr %17, align 8, !tbaa !11
  %648 = getelementptr inbounds double, ptr %646, i64 %647
  store double 0.000000e+00, ptr %648, align 8, !tbaa !39
  %649 = load ptr, ptr %8, align 8, !tbaa !5
  %650 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %649, i32 0, i32 36
  %651 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %650, i32 0, i32 10
  %652 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %651, i32 0, i32 4
  %653 = load ptr, ptr %652, align 8, !tbaa !42
  %654 = load i64, ptr %17, align 8, !tbaa !11
  %655 = getelementptr inbounds double, ptr %653, i64 %654
  store double 0.000000e+00, ptr %655, align 8, !tbaa !39
  %656 = load ptr, ptr %8, align 8, !tbaa !5
  %657 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %656, i32 0, i32 47
  %658 = load i64, ptr %657, align 8, !tbaa !44
  %659 = sub nsw i64 %658, 1
  %660 = load ptr, ptr %8, align 8, !tbaa !5
  %661 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %660, i32 0, i32 47
  store i64 %659, ptr %661, align 8, !tbaa !44
  %662 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %37, ptr noundef %662)
  br label %663

663:                                              ; preds = %635, %621, %612, %603
  br label %664

664:                                              ; preds = %663
  %665 = load i64, ptr %17, align 8, !tbaa !11
  %666 = add nsw i64 %665, 1
  store i64 %666, ptr %17, align 8, !tbaa !11
  br label %538, !llvm.loop !45

667:                                              ; preds = %538
  %668 = load ptr, ptr %8, align 8, !tbaa !5
  %669 = load ptr, ptr %8, align 8, !tbaa !5
  %670 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %669, i32 0, i32 36
  %671 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %670, i32 0, i32 2
  %672 = load ptr, ptr %8, align 8, !tbaa !5
  %673 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %672, i32 0, i32 86
  %674 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL23vipmsolver_multiplygeaxEPKNS_9vipmstateEdPKNS_9ae_vectorEldPS3_lPNS_8ae_stateE(ptr noundef %668, double noundef 1.000000e+00, ptr noundef %671, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %673, i64 noundef 0, ptr noundef %674)
  store double 1.000000e+00, ptr %38, align 8, !tbaa !39
  %675 = load double, ptr %38, align 8, !tbaa !39
  %676 = load i64, ptr %15, align 8, !tbaa !11
  %677 = load ptr, ptr %8, align 8, !tbaa !5
  %678 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %677, i32 0, i32 36
  %679 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %678, i32 0, i32 2
  %680 = load ptr, ptr %14, align 8, !tbaa !5
  %681 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %676, ptr noundef %679, ptr noundef %680)
  %682 = load ptr, ptr %14, align 8, !tbaa !5
  %683 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %675, double noundef %681, ptr noundef %682)
  store double %683, ptr %38, align 8, !tbaa !39
  %684 = load double, ptr %38, align 8, !tbaa !39
  %685 = load i64, ptr %16, align 8, !tbaa !11
  %686 = load ptr, ptr %8, align 8, !tbaa !5
  %687 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %686, i32 0, i32 86
  %688 = load ptr, ptr %14, align 8, !tbaa !5
  %689 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %685, ptr noundef %687, ptr noundef %688)
  %690 = load ptr, ptr %14, align 8, !tbaa !5
  %691 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %684, double noundef %689, ptr noundef %690)
  store double %691, ptr %38, align 8, !tbaa !39
  store i64 0, ptr %17, align 8, !tbaa !11
  br label %692

692:                                              ; preds = %800, %667
  %693 = load i64, ptr %17, align 8, !tbaa !11
  %694 = load i64, ptr %16, align 8, !tbaa !11
  %695 = sub nsw i64 %694, 1
  %696 = icmp sle i64 %693, %695
  br i1 %696, label %697, label %803

697:                                              ; preds = %692
  %698 = load ptr, ptr %8, align 8, !tbaa !5
  %699 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %698, i32 0, i32 33
  %700 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %699, i32 0, i32 4
  %701 = load ptr, ptr %700, align 8, !tbaa !42
  %702 = load i64, ptr %17, align 8, !tbaa !11
  %703 = getelementptr inbounds i8, ptr %701, i64 %702
  %704 = load i8, ptr %703, align 1, !tbaa !9, !range !36, !noundef !37
  %705 = trunc i8 %704 to i1
  br i1 %705, label %706, label %799

706:                                              ; preds = %697
  %707 = load ptr, ptr %8, align 8, !tbaa !5
  %708 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %707, i32 0, i32 45
  %709 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %708, i32 0, i32 4
  %710 = load ptr, ptr %709, align 8, !tbaa !42
  %711 = load i64, ptr %17, align 8, !tbaa !11
  %712 = getelementptr inbounds i8, ptr %710, i64 %711
  %713 = load i8, ptr %712, align 1, !tbaa !9, !range !36, !noundef !37
  %714 = trunc i8 %713 to i1
  br i1 %714, label %715, label %799

715:                                              ; preds = %706
  %716 = load ptr, ptr %8, align 8, !tbaa !5
  %717 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %716, i32 0, i32 31
  %718 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %717, i32 0, i32 4
  %719 = load ptr, ptr %718, align 8, !tbaa !42
  %720 = load i64, ptr %17, align 8, !tbaa !11
  %721 = getelementptr inbounds double, ptr %719, i64 %720
  %722 = load double, ptr %721, align 8, !tbaa !39
  %723 = load ptr, ptr %8, align 8, !tbaa !5
  %724 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %723, i32 0, i32 32
  %725 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %724, i32 0, i32 4
  %726 = load ptr, ptr %725, align 8, !tbaa !42
  %727 = load i64, ptr %17, align 8, !tbaa !11
  %728 = getelementptr inbounds double, ptr %726, i64 %727
  %729 = load double, ptr %728, align 8, !tbaa !39
  %730 = fadd double %722, %729
  %731 = load ptr, ptr %14, align 8, !tbaa !5
  %732 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %730, ptr noundef %731)
  %733 = load double, ptr @_ZN11alglib_implL23vipmsolver_bigconstrmagE, align 8, !tbaa !39
  %734 = load double, ptr %38, align 8, !tbaa !39
  %735 = fmul double %733, %734
  %736 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %732, double noundef %735)
  br i1 %736, label %737, label %799

737:                                              ; preds = %715
  %738 = load ptr, ptr %8, align 8, !tbaa !5
  %739 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %738, i32 0, i32 31
  %740 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %739, i32 0, i32 4
  %741 = load ptr, ptr %740, align 8, !tbaa !42
  %742 = load i64, ptr %17, align 8, !tbaa !11
  %743 = getelementptr inbounds double, ptr %741, i64 %742
  %744 = load double, ptr %743, align 8, !tbaa !39
  %745 = load ptr, ptr %14, align 8, !tbaa !5
  %746 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %744, ptr noundef %745)
  %747 = load double, ptr @_ZN11alglib_implL23vipmsolver_bigconstrmagE, align 8, !tbaa !39
  %748 = load double, ptr %38, align 8, !tbaa !39
  %749 = fmul double %747, %748
  %750 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %746, double noundef %749)
  br i1 %750, label %751, label %799

751:                                              ; preds = %737
  %752 = load ptr, ptr %8, align 8, !tbaa !5
  %753 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %752, i32 0, i32 44
  %754 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %753, i32 0, i32 4
  %755 = load ptr, ptr %754, align 8, !tbaa !42
  %756 = load i64, ptr %17, align 8, !tbaa !11
  %757 = getelementptr inbounds i8, ptr %755, i64 %756
  %758 = load i8, ptr %757, align 1, !tbaa !9, !range !36, !noundef !37
  %759 = trunc i8 %758 to i1
  br i1 %759, label %760, label %769

760:                                              ; preds = %751
  %761 = load ptr, ptr %8, align 8, !tbaa !5
  %762 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %761, i32 0, i32 45
  %763 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %762, i32 0, i32 4
  %764 = load ptr, ptr %763, align 8, !tbaa !42
  %765 = load i64, ptr %17, align 8, !tbaa !11
  %766 = getelementptr inbounds i8, ptr %764, i64 %765
  %767 = load i8, ptr %766, align 1, !tbaa !9, !range !36, !noundef !37
  %768 = trunc i8 %767 to i1
  br label %769

769:                                              ; preds = %760, %751
  %770 = phi i1 [ false, %751 ], [ %768, %760 ]
  %771 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %770, ptr noundef @.str.624, ptr noundef %771)
  %772 = load ptr, ptr %8, align 8, !tbaa !5
  %773 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %772, i32 0, i32 45
  %774 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %773, i32 0, i32 4
  %775 = load ptr, ptr %774, align 8, !tbaa !42
  %776 = load i64, ptr %17, align 8, !tbaa !11
  %777 = getelementptr inbounds i8, ptr %775, i64 %776
  store i8 0, ptr %777, align 1, !tbaa !9
  %778 = load ptr, ptr %8, align 8, !tbaa !5
  %779 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %778, i32 0, i32 36
  %780 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %779, i32 0, i32 6
  %781 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %780, i32 0, i32 4
  %782 = load ptr, ptr %781, align 8, !tbaa !42
  %783 = load i64, ptr %17, align 8, !tbaa !11
  %784 = getelementptr inbounds double, ptr %782, i64 %783
  store double 0.000000e+00, ptr %784, align 8, !tbaa !39
  %785 = load ptr, ptr %8, align 8, !tbaa !5
  %786 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %785, i32 0, i32 36
  %787 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %786, i32 0, i32 11
  %788 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %787, i32 0, i32 4
  %789 = load ptr, ptr %788, align 8, !tbaa !42
  %790 = load i64, ptr %17, align 8, !tbaa !11
  %791 = getelementptr inbounds double, ptr %789, i64 %790
  store double 0.000000e+00, ptr %791, align 8, !tbaa !39
  %792 = load ptr, ptr %8, align 8, !tbaa !5
  %793 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %792, i32 0, i32 49
  %794 = load i64, ptr %793, align 8, !tbaa !47
  %795 = sub nsw i64 %794, 1
  %796 = load ptr, ptr %8, align 8, !tbaa !5
  %797 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %796, i32 0, i32 49
  store i64 %795, ptr %797, align 8, !tbaa !47
  %798 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %37, ptr noundef %798)
  br label %799

799:                                              ; preds = %769, %737, %715, %706, %697
  br label %800

800:                                              ; preds = %799
  %801 = load i64, ptr %17, align 8, !tbaa !11
  %802 = add nsw i64 %801, 1
  store i64 %802, ptr %17, align 8, !tbaa !11
  br label %692, !llvm.loop !48

803:                                              ; preds = %692
  %804 = load i64, ptr %37, align 8, !tbaa !11
  %805 = icmp sgt i64 %804, 0
  br i1 %805, label %806, label %815

806:                                              ; preds = %803
  %807 = load ptr, ptr %8, align 8, !tbaa !5
  %808 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %807, i32 0, i32 52
  %809 = load i8, ptr %808, align 8, !tbaa !35, !range !36, !noundef !37
  %810 = trunc i8 %809 to i1
  br i1 %810, label %811, label %814

811:                                              ; preds = %806
  %812 = load i64, ptr %37, align 8, !tbaa !11
  %813 = trunc i64 %812 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.625, i32 noundef %813)
  br label %814

814:                                              ; preds = %811, %806
  br label %815

815:                                              ; preds = %814, %803
  br label %816

816:                                              ; preds = %815, %416
  br label %817

817:                                              ; preds = %816, %412, %390
  %818 = load double, ptr %39, align 8, !tbaa !39
  store double %818, ptr %43, align 8, !tbaa !39
  %819 = load double, ptr %40, align 8, !tbaa !39
  store double %819, ptr %44, align 8, !tbaa !39
  %820 = load ptr, ptr %8, align 8, !tbaa !5
  %821 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL24vipmsolver_computeerrorsEPNS_9vipmstateEPdS2_S2_S2_S2_PNS_8ae_stateE(ptr noundef %820, ptr noundef %39, ptr noundef %40, ptr noundef %41, ptr noundef %42, ptr noundef %45, ptr noundef %821)
  %822 = load ptr, ptr %8, align 8, !tbaa !5
  %823 = load ptr, ptr %8, align 8, !tbaa !5
  %824 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %823, i32 0, i32 36
  %825 = load ptr, ptr %14, align 8, !tbaa !5
  %826 = call noundef double @_ZN11alglib_implL24vipmsolver_varscomputemuEPKNS_9vipmstateEPKNS_8vipmvarsEPNS_8ae_stateE(ptr noundef %822, ptr noundef %824, ptr noundef %825)
  store double %826, ptr %19, align 8, !tbaa !39
  %827 = load double, ptr %45, align 8, !tbaa !39
  store double %827, ptr %48, align 8, !tbaa !39
  %828 = load double, ptr %41, align 8, !tbaa !39
  store double %828, ptr %46, align 8, !tbaa !39
  %829 = load double, ptr %42, align 8, !tbaa !39
  store double %829, ptr %47, align 8, !tbaa !39
  %830 = load double, ptr %48, align 8, !tbaa !39
  %831 = load double, ptr %46, align 8, !tbaa !39
  %832 = load double, ptr %47, align 8, !tbaa !39
  %833 = load ptr, ptr %14, align 8, !tbaa !5
  %834 = call noundef double @_ZN11alglib_impl5rmax3EdddPNS_8ae_stateE(double noundef %830, double noundef %831, double noundef %832, ptr noundef %833)
  %835 = load double, ptr %56, align 8, !tbaa !39
  %836 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %834, double noundef %835)
  br i1 %836, label %837, label %852

837:                                              ; preds = %817
  %838 = load ptr, ptr %8, align 8, !tbaa !5
  %839 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %838, i32 0, i32 37
  %840 = load ptr, ptr %8, align 8, !tbaa !5
  %841 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %840, i32 0, i32 36
  %842 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL23vipmsolver_varsinitfromEPNS_8vipmvarsEPKS0_PNS_8ae_stateE(ptr noundef %839, ptr noundef %841, ptr noundef %842)
  %843 = load i64, ptr %18, align 8, !tbaa !11
  store i64 %843, ptr %55, align 8, !tbaa !11
  %844 = load double, ptr %48, align 8, !tbaa !39
  %845 = load double, ptr %46, align 8, !tbaa !39
  %846 = load double, ptr %47, align 8, !tbaa !39
  %847 = load ptr, ptr %14, align 8, !tbaa !5
  %848 = call noundef double @_ZN11alglib_impl5rmax3EdddPNS_8ae_stateE(double noundef %844, double noundef %845, double noundef %846, ptr noundef %847)
  store double %848, ptr %56, align 8, !tbaa !39
  %849 = load double, ptr %48, align 8, !tbaa !39
  store double %849, ptr %57, align 8, !tbaa !39
  %850 = load double, ptr %46, align 8, !tbaa !39
  store double %850, ptr %58, align 8, !tbaa !39
  %851 = load double, ptr %47, align 8, !tbaa !39
  store double %851, ptr %59, align 8, !tbaa !39
  br label %852

852:                                              ; preds = %837, %817
  %853 = load i64, ptr %55, align 8, !tbaa !11
  %854 = icmp sgt i64 %853, 0
  br i1 %854, label %855, label %870

855:                                              ; preds = %852
  %856 = load i64, ptr %18, align 8, !tbaa !11
  %857 = load i64, ptr %55, align 8, !tbaa !11
  %858 = load i64, ptr @_ZN11alglib_implL41vipmsolver_minitersbeforeeworststagnationE, align 8, !tbaa !11
  %859 = add nsw i64 %857, %858
  %860 = icmp sgt i64 %856, %859
  br i1 %860, label %861, label %870

861:                                              ; preds = %855
  %862 = load ptr, ptr %8, align 8, !tbaa !5
  %863 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %862, i32 0, i32 52
  %864 = load i8, ptr %863, align 8, !tbaa !35, !range !36, !noundef !37
  %865 = trunc i8 %864 to i1
  br i1 %865, label %866, label %869

866:                                              ; preds = %861
  %867 = load i64, ptr @_ZN11alglib_implL41vipmsolver_minitersbeforeeworststagnationE, align 8, !tbaa !11
  %868 = trunc i64 %867 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.626, i32 noundef %868)
  br label %869

869:                                              ; preds = %866, %861
  br label %1071

870:                                              ; preds = %855, %852
  %871 = load double, ptr %48, align 8, !tbaa !39
  %872 = load ptr, ptr %8, align 8, !tbaa !5
  %873 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %872, i32 0, i32 6
  %874 = load double, ptr %873, align 8, !tbaa !49
  %875 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %871, double noundef %874)
  br i1 %875, label %876, label %905

876:                                              ; preds = %870
  %877 = load double, ptr %39, align 8, !tbaa !39
  %878 = load double, ptr @_ZN11alglib_implL26vipmsolver_stagnationdeltaE, align 8, !tbaa !39
  %879 = load double, ptr %43, align 8, !tbaa !39
  %880 = fmul double %878, %879
  %881 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %877, double noundef %880)
  br i1 %881, label %882, label %905

882:                                              ; preds = %876
  %883 = load double, ptr %41, align 8, !tbaa !39
  %884 = load double, ptr @_ZN11alglib_implL28vipmsolver_primalinfeasible1E, align 8, !tbaa !39
  %885 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %883, double noundef %884)
  br i1 %885, label %886, label %905

886:                                              ; preds = %882
  %887 = load i64, ptr %18, align 8, !tbaa !11
  %888 = load i64, ptr @_ZN11alglib_implL35vipmsolver_minitersbeforestagnationE, align 8, !tbaa !11
  %889 = icmp sge i64 %887, %888
  br i1 %889, label %890, label %905

890:                                              ; preds = %886
  %891 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %26, ptr noundef %891)
  %892 = load i64, ptr %26, align 8, !tbaa !11
  %893 = load i64, ptr @_ZN11alglib_implL30vipmsolver_primalstagnationlenE, align 8, !tbaa !11
  %894 = icmp sge i64 %892, %893
  br i1 %894, label %895, label %904

895:                                              ; preds = %890
  %896 = load ptr, ptr %8, align 8, !tbaa !5
  %897 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %896, i32 0, i32 52
  %898 = load i8, ptr %897, align 8, !tbaa !35, !range !36, !noundef !37
  %899 = trunc i8 %898 to i1
  br i1 %899, label %900, label %903

900:                                              ; preds = %895
  %901 = load i64, ptr @_ZN11alglib_implL30vipmsolver_primalstagnationlenE, align 8, !tbaa !11
  %902 = trunc i64 %901 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.627, i32 noundef %902)
  br label %903

903:                                              ; preds = %900, %895
  br label %1071

904:                                              ; preds = %890
  br label %906

905:                                              ; preds = %886, %882, %876, %870
  store i64 0, ptr %26, align 8, !tbaa !11
  br label %906

906:                                              ; preds = %905, %904
  %907 = load double, ptr %48, align 8, !tbaa !39
  %908 = load ptr, ptr %8, align 8, !tbaa !5
  %909 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %908, i32 0, i32 6
  %910 = load double, ptr %909, align 8, !tbaa !49
  %911 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %907, double noundef %910)
  br i1 %911, label %912, label %941

912:                                              ; preds = %906
  %913 = load double, ptr %40, align 8, !tbaa !39
  %914 = load double, ptr @_ZN11alglib_implL26vipmsolver_stagnationdeltaE, align 8, !tbaa !39
  %915 = load double, ptr %44, align 8, !tbaa !39
  %916 = fmul double %914, %915
  %917 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %913, double noundef %916)
  br i1 %917, label %918, label %941

918:                                              ; preds = %912
  %919 = load double, ptr %42, align 8, !tbaa !39
  %920 = load double, ptr @_ZN11alglib_implL26vipmsolver_dualinfeasible1E, align 8, !tbaa !39
  %921 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %919, double noundef %920)
  br i1 %921, label %922, label %941

922:                                              ; preds = %918
  %923 = load i64, ptr %18, align 8, !tbaa !11
  %924 = load i64, ptr @_ZN11alglib_implL35vipmsolver_minitersbeforestagnationE, align 8, !tbaa !11
  %925 = icmp sge i64 %923, %924
  br i1 %925, label %926, label %941

926:                                              ; preds = %922
  %927 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %27, ptr noundef %927)
  %928 = load i64, ptr %27, align 8, !tbaa !11
  %929 = load i64, ptr @_ZN11alglib_implL28vipmsolver_dualstagnationlenE, align 8, !tbaa !11
  %930 = icmp sge i64 %928, %929
  br i1 %930, label %931, label %940

931:                                              ; preds = %926
  %932 = load ptr, ptr %8, align 8, !tbaa !5
  %933 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %932, i32 0, i32 52
  %934 = load i8, ptr %933, align 8, !tbaa !35, !range !36, !noundef !37
  %935 = trunc i8 %934 to i1
  br i1 %935, label %936, label %939

936:                                              ; preds = %931
  %937 = load i64, ptr @_ZN11alglib_implL28vipmsolver_dualstagnationlenE, align 8, !tbaa !11
  %938 = trunc i64 %937 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.628, i32 noundef %938)
  br label %939

939:                                              ; preds = %936, %931
  br label %1071

940:                                              ; preds = %926
  br label %942

941:                                              ; preds = %922, %918, %912, %906
  store i64 0, ptr %27, align 8, !tbaa !11
  br label %942

942:                                              ; preds = %941, %940
  %943 = load double, ptr %19, align 8, !tbaa !39
  %944 = load double, ptr %50, align 8, !tbaa !39
  %945 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %943, double noundef %944)
  br i1 %945, label %946, label %958

946:                                              ; preds = %942
  %947 = load i64, ptr %18, align 8, !tbaa !11
  %948 = load i64, ptr @_ZN11alglib_implL35vipmsolver_itersfortoostringentcondE, align 8, !tbaa !11
  %949 = icmp sge i64 %947, %948
  br i1 %949, label %950, label %958

950:                                              ; preds = %946
  %951 = load ptr, ptr %8, align 8, !tbaa !5
  %952 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %951, i32 0, i32 52
  %953 = load i8, ptr %952, align 8, !tbaa !35, !range !36, !noundef !37
  %954 = trunc i8 %953 to i1
  br i1 %954, label %955, label %956

955:                                              ; preds = %950
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.629)
  br label %956

956:                                              ; preds = %955, %950
  %957 = load ptr, ptr %13, align 8, !tbaa !5
  store i64 7, ptr %957, align 8, !tbaa !11
  br label %1071

958:                                              ; preds = %946, %942
  %959 = load double, ptr %48, align 8, !tbaa !39
  %960 = load ptr, ptr %8, align 8, !tbaa !5
  %961 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %960, i32 0, i32 6
  %962 = load double, ptr %961, align 8, !tbaa !49
  %963 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %959, double noundef %962)
  br i1 %963, label %964, label %984

964:                                              ; preds = %958
  %965 = load double, ptr %46, align 8, !tbaa !39
  %966 = load ptr, ptr %8, align 8, !tbaa !5
  %967 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %966, i32 0, i32 4
  %968 = load double, ptr %967, align 8, !tbaa !50
  %969 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %965, double noundef %968)
  br i1 %969, label %970, label %984

970:                                              ; preds = %964
  %971 = load double, ptr %47, align 8, !tbaa !39
  %972 = load ptr, ptr %8, align 8, !tbaa !5
  %973 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %972, i32 0, i32 5
  %974 = load double, ptr %973, align 8, !tbaa !51
  %975 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %971, double noundef %974)
  br i1 %975, label %976, label %984

976:                                              ; preds = %970
  %977 = load ptr, ptr %8, align 8, !tbaa !5
  %978 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %977, i32 0, i32 52
  %979 = load i8, ptr %978, align 8, !tbaa !35, !range !36, !noundef !37
  %980 = trunc i8 %979 to i1
  br i1 %980, label %981, label %982

981:                                              ; preds = %976
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.630)
  br label %982

982:                                              ; preds = %981, %976
  %983 = load ptr, ptr %13, align 8, !tbaa !5
  store i64 1, ptr %983, align 8, !tbaa !11
  store i8 0, ptr %60, align 1, !tbaa !9
  br label %1071

984:                                              ; preds = %970, %964, %958
  %985 = load double, ptr @_ZN11alglib_implL15vipmsolver_bigyE, align 8, !tbaa !39
  store double %985, ptr %52, align 8, !tbaa !39
  %986 = load double, ptr %52, align 8, !tbaa !39
  %987 = load double, ptr @_ZN11alglib_implL18vipmsolver_ygrowthE, align 8, !tbaa !39
  %988 = load double, ptr %51, align 8, !tbaa !39
  %989 = fmul double %987, %988
  %990 = load ptr, ptr %14, align 8, !tbaa !5
  %991 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %986, double noundef %989, ptr noundef %990)
  store double %991, ptr %52, align 8, !tbaa !39
  %992 = load double, ptr %52, align 8, !tbaa !39
  %993 = load double, ptr @_ZN11alglib_implL18vipmsolver_ygrowthE, align 8, !tbaa !39
  %994 = load i64, ptr %15, align 8, !tbaa !11
  %995 = load ptr, ptr %8, align 8, !tbaa !5
  %996 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %995, i32 0, i32 36
  %997 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %996, i32 0, i32 2
  %998 = load ptr, ptr %14, align 8, !tbaa !5
  %999 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %994, ptr noundef %997, ptr noundef %998)
  %1000 = fmul double %993, %999
  %1001 = load ptr, ptr %14, align 8, !tbaa !5
  %1002 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %992, double noundef %1000, ptr noundef %1001)
  store double %1002, ptr %52, align 8, !tbaa !39
  %1003 = load double, ptr %52, align 8, !tbaa !39
  %1004 = load double, ptr @_ZN11alglib_implL18vipmsolver_ygrowthE, align 8, !tbaa !39
  %1005 = load i64, ptr %15, align 8, !tbaa !11
  %1006 = load ptr, ptr %8, align 8, !tbaa !5
  %1007 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1006, i32 0, i32 36
  %1008 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %1007, i32 0, i32 3
  %1009 = load ptr, ptr %14, align 8, !tbaa !5
  %1010 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1005, ptr noundef %1008, ptr noundef %1009)
  %1011 = fmul double %1004, %1010
  %1012 = load ptr, ptr %14, align 8, !tbaa !5
  %1013 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1003, double noundef %1011, ptr noundef %1012)
  store double %1013, ptr %52, align 8, !tbaa !39
  %1014 = load double, ptr %52, align 8, !tbaa !39
  %1015 = load double, ptr @_ZN11alglib_implL18vipmsolver_ygrowthE, align 8, !tbaa !39
  %1016 = load i64, ptr %15, align 8, !tbaa !11
  %1017 = load ptr, ptr %8, align 8, !tbaa !5
  %1018 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1017, i32 0, i32 36
  %1019 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %1018, i32 0, i32 5
  %1020 = load ptr, ptr %14, align 8, !tbaa !5
  %1021 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1016, ptr noundef %1019, ptr noundef %1020)
  %1022 = fmul double %1015, %1021
  %1023 = load ptr, ptr %14, align 8, !tbaa !5
  %1024 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1014, double noundef %1022, ptr noundef %1023)
  store double %1024, ptr %52, align 8, !tbaa !39
  %1025 = load double, ptr %52, align 8, !tbaa !39
  %1026 = load double, ptr @_ZN11alglib_implL18vipmsolver_ygrowthE, align 8, !tbaa !39
  %1027 = load i64, ptr %16, align 8, !tbaa !11
  %1028 = load ptr, ptr %8, align 8, !tbaa !5
  %1029 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1028, i32 0, i32 36
  %1030 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %1029, i32 0, i32 4
  %1031 = load ptr, ptr %14, align 8, !tbaa !5
  %1032 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1027, ptr noundef %1030, ptr noundef %1031)
  %1033 = fmul double %1026, %1032
  %1034 = load ptr, ptr %14, align 8, !tbaa !5
  %1035 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1025, double noundef %1033, ptr noundef %1034)
  store double %1035, ptr %52, align 8, !tbaa !39
  %1036 = load double, ptr %52, align 8, !tbaa !39
  %1037 = load double, ptr @_ZN11alglib_implL18vipmsolver_ygrowthE, align 8, !tbaa !39
  %1038 = load i64, ptr %16, align 8, !tbaa !11
  %1039 = load ptr, ptr %8, align 8, !tbaa !5
  %1040 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1039, i32 0, i32 36
  %1041 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %1040, i32 0, i32 6
  %1042 = load ptr, ptr %14, align 8, !tbaa !5
  %1043 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1038, ptr noundef %1041, ptr noundef %1042)
  %1044 = fmul double %1037, %1043
  %1045 = load ptr, ptr %14, align 8, !tbaa !5
  %1046 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1036, double noundef %1044, ptr noundef %1045)
  store double %1046, ptr %52, align 8, !tbaa !39
  %1047 = load i64, ptr %16, align 8, !tbaa !11
  %1048 = load ptr, ptr %8, align 8, !tbaa !5
  %1049 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1048, i32 0, i32 36
  %1050 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %1049, i32 0, i32 7
  %1051 = load ptr, ptr %14, align 8, !tbaa !5
  %1052 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1047, ptr noundef %1050, ptr noundef %1051)
  %1053 = load double, ptr %52, align 8, !tbaa !39
  %1054 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %1052, double noundef %1053)
  br i1 %1054, label %1055, label %1067

1055:                                             ; preds = %984
  %1056 = load i64, ptr %18, align 8, !tbaa !11
  %1057 = load i64, ptr @_ZN11alglib_implL35vipmsolver_minitersbeforeinfeasibleE, align 8, !tbaa !11
  %1058 = icmp sge i64 %1056, %1057
  br i1 %1058, label %1059, label %1067

1059:                                             ; preds = %1055
  %1060 = load ptr, ptr %8, align 8, !tbaa !5
  %1061 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1060, i32 0, i32 52
  %1062 = load i8, ptr %1061, align 8, !tbaa !35, !range !36, !noundef !37
  %1063 = trunc i8 %1062 to i1
  br i1 %1063, label %1064, label %1066

1064:                                             ; preds = %1059
  %1065 = load double, ptr %52, align 8, !tbaa !39
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.631, double noundef %1065)
  br label %1066

1066:                                             ; preds = %1064, %1059
  br label %1071

1067:                                             ; preds = %1055, %984
  br label %1068

1068:                                             ; preds = %1067, %389, %359, %287, %258
  %1069 = load i64, ptr %18, align 8, !tbaa !11
  %1070 = add nsw i64 %1069, 1
  store i64 %1070, ptr %18, align 8, !tbaa !11
  br label %207, !llvm.loop !52

1071:                                             ; preds = %1066, %982, %956, %939, %903, %869, %237, %207
  %1072 = load i8, ptr %60, align 1, !tbaa !9, !range !36, !noundef !37
  %1073 = trunc i8 %1072 to i1
  br i1 %1073, label %1074, label %1207

1074:                                             ; preds = %1071
  %1075 = load ptr, ptr %8, align 8, !tbaa !5
  %1076 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1075, i32 0, i32 52
  %1077 = load i8, ptr %1076, align 8, !tbaa !35, !range !36, !noundef !37
  %1078 = trunc i8 %1077 to i1
  br i1 %1078, label %1079, label %1082

1079:                                             ; preds = %1074
  %1080 = load i64, ptr %55, align 8, !tbaa !11
  %1081 = trunc i64 %1080 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.632, i32 noundef %1081)
  br label %1082

1082:                                             ; preds = %1079, %1074
  %1083 = load ptr, ptr %8, align 8, !tbaa !5
  %1084 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1083, i32 0, i32 36
  %1085 = load ptr, ptr %8, align 8, !tbaa !5
  %1086 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1085, i32 0, i32 37
  %1087 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL23vipmsolver_varsinitfromEPNS_8vipmvarsEPKS0_PNS_8ae_stateE(ptr noundef %1084, ptr noundef %1086, ptr noundef %1087)
  %1088 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl9touchrealEPdPNS_8ae_stateE(ptr noundef %58, ptr noundef %1088)
  %1089 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl9touchrealEPdPNS_8ae_stateE(ptr noundef %59, ptr noundef %1089)
  %1090 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl9touchrealEPdPNS_8ae_stateE(ptr noundef %57, ptr noundef %1090)
  %1091 = load double, ptr @_ZN11alglib_implL15vipmsolver_bigyE, align 8, !tbaa !39
  store double %1091, ptr %52, align 8, !tbaa !39
  %1092 = load double, ptr %52, align 8, !tbaa !39
  %1093 = load double, ptr @_ZN11alglib_implL18vipmsolver_ygrowthE, align 8, !tbaa !39
  %1094 = load double, ptr %51, align 8, !tbaa !39
  %1095 = fmul double %1093, %1094
  %1096 = load ptr, ptr %14, align 8, !tbaa !5
  %1097 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1092, double noundef %1095, ptr noundef %1096)
  store double %1097, ptr %52, align 8, !tbaa !39
  %1098 = load double, ptr %52, align 8, !tbaa !39
  %1099 = load double, ptr @_ZN11alglib_implL18vipmsolver_ygrowthE, align 8, !tbaa !39
  %1100 = load i64, ptr %15, align 8, !tbaa !11
  %1101 = load ptr, ptr %8, align 8, !tbaa !5
  %1102 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1101, i32 0, i32 36
  %1103 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %1102, i32 0, i32 2
  %1104 = load ptr, ptr %14, align 8, !tbaa !5
  %1105 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1100, ptr noundef %1103, ptr noundef %1104)
  %1106 = fmul double %1099, %1105
  %1107 = load ptr, ptr %14, align 8, !tbaa !5
  %1108 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1098, double noundef %1106, ptr noundef %1107)
  store double %1108, ptr %52, align 8, !tbaa !39
  %1109 = load double, ptr %52, align 8, !tbaa !39
  %1110 = load double, ptr @_ZN11alglib_implL18vipmsolver_ygrowthE, align 8, !tbaa !39
  %1111 = load i64, ptr %15, align 8, !tbaa !11
  %1112 = load ptr, ptr %8, align 8, !tbaa !5
  %1113 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1112, i32 0, i32 36
  %1114 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %1113, i32 0, i32 3
  %1115 = load ptr, ptr %14, align 8, !tbaa !5
  %1116 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1111, ptr noundef %1114, ptr noundef %1115)
  %1117 = fmul double %1110, %1116
  %1118 = load ptr, ptr %14, align 8, !tbaa !5
  %1119 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1109, double noundef %1117, ptr noundef %1118)
  store double %1119, ptr %52, align 8, !tbaa !39
  %1120 = load double, ptr %52, align 8, !tbaa !39
  %1121 = load double, ptr @_ZN11alglib_implL18vipmsolver_ygrowthE, align 8, !tbaa !39
  %1122 = load i64, ptr %15, align 8, !tbaa !11
  %1123 = load ptr, ptr %8, align 8, !tbaa !5
  %1124 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1123, i32 0, i32 36
  %1125 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %1124, i32 0, i32 5
  %1126 = load ptr, ptr %14, align 8, !tbaa !5
  %1127 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1122, ptr noundef %1125, ptr noundef %1126)
  %1128 = fmul double %1121, %1127
  %1129 = load ptr, ptr %14, align 8, !tbaa !5
  %1130 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1120, double noundef %1128, ptr noundef %1129)
  store double %1130, ptr %52, align 8, !tbaa !39
  %1131 = load double, ptr %52, align 8, !tbaa !39
  %1132 = load double, ptr @_ZN11alglib_implL18vipmsolver_ygrowthE, align 8, !tbaa !39
  %1133 = load i64, ptr %16, align 8, !tbaa !11
  %1134 = load ptr, ptr %8, align 8, !tbaa !5
  %1135 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1134, i32 0, i32 36
  %1136 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %1135, i32 0, i32 4
  %1137 = load ptr, ptr %14, align 8, !tbaa !5
  %1138 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1133, ptr noundef %1136, ptr noundef %1137)
  %1139 = fmul double %1132, %1138
  %1140 = load ptr, ptr %14, align 8, !tbaa !5
  %1141 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1131, double noundef %1139, ptr noundef %1140)
  store double %1141, ptr %52, align 8, !tbaa !39
  %1142 = load double, ptr %52, align 8, !tbaa !39
  %1143 = load double, ptr @_ZN11alglib_implL18vipmsolver_ygrowthE, align 8, !tbaa !39
  %1144 = load i64, ptr %16, align 8, !tbaa !11
  %1145 = load ptr, ptr %8, align 8, !tbaa !5
  %1146 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1145, i32 0, i32 36
  %1147 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %1146, i32 0, i32 6
  %1148 = load ptr, ptr %14, align 8, !tbaa !5
  %1149 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1144, ptr noundef %1147, ptr noundef %1148)
  %1150 = fmul double %1143, %1149
  %1151 = load ptr, ptr %14, align 8, !tbaa !5
  %1152 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1142, double noundef %1150, ptr noundef %1151)
  store double %1152, ptr %52, align 8, !tbaa !39
  %1153 = load ptr, ptr %13, align 8, !tbaa !5
  %1154 = load i64, ptr %1153, align 8, !tbaa !11
  %1155 = icmp sgt i64 %1154, 0
  br i1 %1155, label %1156, label %1174

1156:                                             ; preds = %1082
  %1157 = load i64, ptr %16, align 8, !tbaa !11
  %1158 = load ptr, ptr %8, align 8, !tbaa !5
  %1159 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1158, i32 0, i32 36
  %1160 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %1159, i32 0, i32 7
  %1161 = load ptr, ptr %14, align 8, !tbaa !5
  %1162 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1157, ptr noundef %1160, ptr noundef %1161)
  %1163 = load double, ptr %52, align 8, !tbaa !39
  %1164 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %1162, double noundef %1163)
  br i1 %1164, label %1165, label %1174

1165:                                             ; preds = %1156
  %1166 = load ptr, ptr %13, align 8, !tbaa !5
  store i64 -2, ptr %1166, align 8, !tbaa !11
  %1167 = load ptr, ptr %8, align 8, !tbaa !5
  %1168 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1167, i32 0, i32 52
  %1169 = load i8, ptr %1168, align 8, !tbaa !35, !range !36, !noundef !37
  %1170 = trunc i8 %1169 to i1
  br i1 %1170, label %1171, label %1173

1171:                                             ; preds = %1165
  %1172 = load double, ptr %52, align 8, !tbaa !39
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.633, double noundef %1172)
  br label %1173

1173:                                             ; preds = %1171, %1165
  br label %1174

1174:                                             ; preds = %1173, %1156, %1082
  %1175 = load ptr, ptr %13, align 8, !tbaa !5
  %1176 = load i64, ptr %1175, align 8, !tbaa !11
  %1177 = icmp sgt i64 %1176, 0
  br i1 %1177, label %1178, label %1190

1178:                                             ; preds = %1174
  %1179 = load double, ptr %58, align 8, !tbaa !39
  %1180 = load double, ptr @_ZN11alglib_implL28vipmsolver_primalinfeasible1E, align 8, !tbaa !39
  %1181 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %1179, double noundef %1180)
  br i1 %1181, label %1182, label %1190

1182:                                             ; preds = %1178
  %1183 = load ptr, ptr %13, align 8, !tbaa !5
  store i64 -2, ptr %1183, align 8, !tbaa !11
  %1184 = load ptr, ptr %8, align 8, !tbaa !5
  %1185 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1184, i32 0, i32 52
  %1186 = load i8, ptr %1185, align 8, !tbaa !35, !range !36, !noundef !37
  %1187 = trunc i8 %1186 to i1
  br i1 %1187, label %1188, label %1189

1188:                                             ; preds = %1182
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.634)
  br label %1189

1189:                                             ; preds = %1188, %1182
  br label %1190

1190:                                             ; preds = %1189, %1178, %1174
  %1191 = load ptr, ptr %13, align 8, !tbaa !5
  %1192 = load i64, ptr %1191, align 8, !tbaa !11
  %1193 = icmp sgt i64 %1192, 0
  br i1 %1193, label %1194, label %1206

1194:                                             ; preds = %1190
  %1195 = load double, ptr %59, align 8, !tbaa !39
  %1196 = load double, ptr @_ZN11alglib_implL26vipmsolver_dualinfeasible1E, align 8, !tbaa !39
  %1197 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %1195, double noundef %1196)
  br i1 %1197, label %1198, label %1206

1198:                                             ; preds = %1194
  %1199 = load ptr, ptr %13, align 8, !tbaa !5
  store i64 -2, ptr %1199, align 8, !tbaa !11
  %1200 = load ptr, ptr %8, align 8, !tbaa !5
  %1201 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1200, i32 0, i32 52
  %1202 = load i8, ptr %1201, align 8, !tbaa !35, !range !36, !noundef !37
  %1203 = trunc i8 %1202 to i1
  br i1 %1203, label %1204, label %1205

1204:                                             ; preds = %1198
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.635)
  br label %1205

1205:                                             ; preds = %1204, %1198
  br label %1206

1206:                                             ; preds = %1205, %1194, %1190
  br label %1207

1207:                                             ; preds = %1206, %1071
  %1208 = load ptr, ptr %8, align 8, !tbaa !5
  %1209 = load ptr, ptr %8, align 8, !tbaa !5
  %1210 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1209, i32 0, i32 36
  %1211 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %1210, i32 0, i32 2
  %1212 = load ptr, ptr %8, align 8, !tbaa !5
  %1213 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1212, i32 0, i32 91
  %1214 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL21vipmsolver_multiplyhxEPKNS_9vipmstateEPKNS_9ae_vectorEPS3_PNS_8ae_stateE(ptr noundef %1208, ptr noundef %1211, ptr noundef %1213, ptr noundef %1214)
  %1215 = load i64, ptr %15, align 8, !tbaa !11
  %1216 = load ptr, ptr %8, align 8, !tbaa !5
  %1217 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1216, i32 0, i32 12
  %1218 = load ptr, ptr %8, align 8, !tbaa !5
  %1219 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1218, i32 0, i32 91
  %1220 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl5raddvEldPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %1215, double noundef 1.000000e+00, ptr noundef %1217, ptr noundef %1219, ptr noundef %1220)
  %1221 = load ptr, ptr %8, align 8, !tbaa !5
  %1222 = load ptr, ptr %8, align 8, !tbaa !5
  %1223 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1222, i32 0, i32 36
  %1224 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %1223, i32 0, i32 7
  %1225 = load ptr, ptr %8, align 8, !tbaa !5
  %1226 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1225, i32 0, i32 91
  %1227 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL24vipmsolver_multiplygeatxEPKNS_9vipmstateEdPKNS_9ae_vectorEldPS3_lPNS_8ae_stateE(ptr noundef %1221, double noundef -1.000000e+00, ptr noundef %1224, i64 noundef 0, double noundef 1.000000e+00, ptr noundef %1226, i64 noundef 0, ptr noundef %1227)
  store i64 0, ptr %17, align 8, !tbaa !11
  br label %1228

1228:                                             ; preds = %1349, %1207
  %1229 = load i64, ptr %17, align 8, !tbaa !11
  %1230 = load i64, ptr %15, align 8, !tbaa !11
  %1231 = sub nsw i64 %1230, 1
  %1232 = icmp sle i64 %1229, %1231
  br i1 %1232, label %1233, label %1352

1233:                                             ; preds = %1228
  %1234 = load ptr, ptr %8, align 8, !tbaa !5
  %1235 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1234, i32 0, i32 41
  %1236 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1235, i32 0, i32 4
  %1237 = load ptr, ptr %1236, align 8, !tbaa !42
  %1238 = load i64, ptr %17, align 8, !tbaa !11
  %1239 = getelementptr inbounds i8, ptr %1237, i64 %1238
  %1240 = load i8, ptr %1239, align 1, !tbaa !9, !range !36, !noundef !37
  %1241 = trunc i8 %1240 to i1
  br i1 %1241, label %1242, label %1269

1242:                                             ; preds = %1233
  %1243 = load ptr, ptr %8, align 8, !tbaa !5
  %1244 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1243, i32 0, i32 36
  %1245 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %1244, i32 0, i32 2
  %1246 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1245, i32 0, i32 4
  %1247 = load ptr, ptr %1246, align 8, !tbaa !42
  %1248 = load i64, ptr %17, align 8, !tbaa !11
  %1249 = getelementptr inbounds double, ptr %1247, i64 %1248
  %1250 = load double, ptr %1249, align 8, !tbaa !39
  %1251 = load ptr, ptr %10, align 8, !tbaa !5
  %1252 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1251, i32 0, i32 4
  %1253 = load ptr, ptr %1252, align 8, !tbaa !42
  %1254 = load i64, ptr %17, align 8, !tbaa !11
  %1255 = getelementptr inbounds double, ptr %1253, i64 %1254
  store double %1250, ptr %1255, align 8, !tbaa !39
  %1256 = load ptr, ptr %8, align 8, !tbaa !5
  %1257 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1256, i32 0, i32 91
  %1258 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1257, i32 0, i32 4
  %1259 = load ptr, ptr %1258, align 8, !tbaa !42
  %1260 = load i64, ptr %17, align 8, !tbaa !11
  %1261 = getelementptr inbounds double, ptr %1259, i64 %1260
  %1262 = load double, ptr %1261, align 8, !tbaa !39
  %1263 = fneg double %1262
  %1264 = load ptr, ptr %11, align 8, !tbaa !5
  %1265 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1264, i32 0, i32 4
  %1266 = load ptr, ptr %1265, align 8, !tbaa !42
  %1267 = load i64, ptr %17, align 8, !tbaa !11
  %1268 = getelementptr inbounds double, ptr %1266, i64 %1267
  store double %1263, ptr %1268, align 8, !tbaa !39
  br label %1348

1269:                                             ; preds = %1233
  %1270 = load ptr, ptr %8, align 8, !tbaa !5
  %1271 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1270, i32 0, i32 36
  %1272 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %1271, i32 0, i32 2
  %1273 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1272, i32 0, i32 4
  %1274 = load ptr, ptr %1273, align 8, !tbaa !42
  %1275 = load i64, ptr %17, align 8, !tbaa !11
  %1276 = getelementptr inbounds double, ptr %1274, i64 %1275
  %1277 = load double, ptr %1276, align 8, !tbaa !39
  %1278 = load ptr, ptr %10, align 8, !tbaa !5
  %1279 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1278, i32 0, i32 4
  %1280 = load ptr, ptr %1279, align 8, !tbaa !42
  %1281 = load i64, ptr %17, align 8, !tbaa !11
  %1282 = getelementptr inbounds double, ptr %1280, i64 %1281
  store double %1277, ptr %1282, align 8, !tbaa !39
  %1283 = load ptr, ptr %11, align 8, !tbaa !5
  %1284 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1283, i32 0, i32 4
  %1285 = load ptr, ptr %1284, align 8, !tbaa !42
  %1286 = load i64, ptr %17, align 8, !tbaa !11
  %1287 = getelementptr inbounds double, ptr %1285, i64 %1286
  store double 0.000000e+00, ptr %1287, align 8, !tbaa !39
  %1288 = load ptr, ptr %8, align 8, !tbaa !5
  %1289 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1288, i32 0, i32 42
  %1290 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1289, i32 0, i32 4
  %1291 = load ptr, ptr %1290, align 8, !tbaa !42
  %1292 = load i64, ptr %17, align 8, !tbaa !11
  %1293 = getelementptr inbounds i8, ptr %1291, i64 %1292
  %1294 = load i8, ptr %1293, align 1, !tbaa !9, !range !36, !noundef !37
  %1295 = trunc i8 %1294 to i1
  br i1 %1295, label %1296, label %1317

1296:                                             ; preds = %1269
  %1297 = load ptr, ptr %11, align 8, !tbaa !5
  %1298 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1297, i32 0, i32 4
  %1299 = load ptr, ptr %1298, align 8, !tbaa !42
  %1300 = load i64, ptr %17, align 8, !tbaa !11
  %1301 = getelementptr inbounds double, ptr %1299, i64 %1300
  %1302 = load double, ptr %1301, align 8, !tbaa !39
  %1303 = load ptr, ptr %8, align 8, !tbaa !5
  %1304 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1303, i32 0, i32 36
  %1305 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %1304, i32 0, i32 8
  %1306 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1305, i32 0, i32 4
  %1307 = load ptr, ptr %1306, align 8, !tbaa !42
  %1308 = load i64, ptr %17, align 8, !tbaa !11
  %1309 = getelementptr inbounds double, ptr %1307, i64 %1308
  %1310 = load double, ptr %1309, align 8, !tbaa !39
  %1311 = fsub double %1302, %1310
  %1312 = load ptr, ptr %11, align 8, !tbaa !5
  %1313 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1312, i32 0, i32 4
  %1314 = load ptr, ptr %1313, align 8, !tbaa !42
  %1315 = load i64, ptr %17, align 8, !tbaa !11
  %1316 = getelementptr inbounds double, ptr %1314, i64 %1315
  store double %1311, ptr %1316, align 8, !tbaa !39
  br label %1317

1317:                                             ; preds = %1296, %1269
  %1318 = load ptr, ptr %8, align 8, !tbaa !5
  %1319 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1318, i32 0, i32 43
  %1320 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1319, i32 0, i32 4
  %1321 = load ptr, ptr %1320, align 8, !tbaa !42
  %1322 = load i64, ptr %17, align 8, !tbaa !11
  %1323 = getelementptr inbounds i8, ptr %1321, i64 %1322
  %1324 = load i8, ptr %1323, align 1, !tbaa !9, !range !36, !noundef !37
  %1325 = trunc i8 %1324 to i1
  br i1 %1325, label %1326, label %1347

1326:                                             ; preds = %1317
  %1327 = load ptr, ptr %11, align 8, !tbaa !5
  %1328 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1327, i32 0, i32 4
  %1329 = load ptr, ptr %1328, align 8, !tbaa !42
  %1330 = load i64, ptr %17, align 8, !tbaa !11
  %1331 = getelementptr inbounds double, ptr %1329, i64 %1330
  %1332 = load double, ptr %1331, align 8, !tbaa !39
  %1333 = load ptr, ptr %8, align 8, !tbaa !5
  %1334 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1333, i32 0, i32 36
  %1335 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %1334, i32 0, i32 10
  %1336 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1335, i32 0, i32 4
  %1337 = load ptr, ptr %1336, align 8, !tbaa !42
  %1338 = load i64, ptr %17, align 8, !tbaa !11
  %1339 = getelementptr inbounds double, ptr %1337, i64 %1338
  %1340 = load double, ptr %1339, align 8, !tbaa !39
  %1341 = fadd double %1332, %1340
  %1342 = load ptr, ptr %11, align 8, !tbaa !5
  %1343 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1342, i32 0, i32 4
  %1344 = load ptr, ptr %1343, align 8, !tbaa !42
  %1345 = load i64, ptr %17, align 8, !tbaa !11
  %1346 = getelementptr inbounds double, ptr %1344, i64 %1345
  store double %1341, ptr %1346, align 8, !tbaa !39
  br label %1347

1347:                                             ; preds = %1326, %1317
  br label %1348

1348:                                             ; preds = %1347, %1242
  br label %1349

1349:                                             ; preds = %1348
  %1350 = load i64, ptr %17, align 8, !tbaa !11
  %1351 = add nsw i64 %1350, 1
  store i64 %1351, ptr %17, align 8, !tbaa !11
  br label %1228, !llvm.loop !53

1352:                                             ; preds = %1228
  store i64 0, ptr %17, align 8, !tbaa !11
  br label %1353

1353:                                             ; preds = %1373, %1352
  %1354 = load i64, ptr %17, align 8, !tbaa !11
  %1355 = load i64, ptr %16, align 8, !tbaa !11
  %1356 = sub nsw i64 %1355, 1
  %1357 = icmp sle i64 %1354, %1356
  br i1 %1357, label %1358, label %1376

1358:                                             ; preds = %1353
  %1359 = load ptr, ptr %8, align 8, !tbaa !5
  %1360 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1359, i32 0, i32 36
  %1361 = getelementptr inbounds %"struct.alglib_impl::vipmvars", ptr %1360, i32 0, i32 7
  %1362 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1361, i32 0, i32 4
  %1363 = load ptr, ptr %1362, align 8, !tbaa !42
  %1364 = load i64, ptr %17, align 8, !tbaa !11
  %1365 = getelementptr inbounds double, ptr %1363, i64 %1364
  %1366 = load double, ptr %1365, align 8, !tbaa !39
  %1367 = fneg double %1366
  %1368 = load ptr, ptr %12, align 8, !tbaa !5
  %1369 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1368, i32 0, i32 4
  %1370 = load ptr, ptr %1369, align 8, !tbaa !42
  %1371 = load i64, ptr %17, align 8, !tbaa !11
  %1372 = getelementptr inbounds double, ptr %1370, i64 %1371
  store double %1367, ptr %1372, align 8, !tbaa !39
  br label %1373

1373:                                             ; preds = %1358
  %1374 = load i64, ptr %17, align 8, !tbaa !11
  %1375 = add nsw i64 %1374, 1
  store i64 %1375, ptr %17, align 8, !tbaa !11
  br label %1353, !llvm.loop !54

1376:                                             ; preds = %1353
  %1377 = load ptr, ptr %8, align 8, !tbaa !5
  %1378 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1377, i32 0, i32 8
  %1379 = load ptr, ptr %8, align 8, !tbaa !5
  %1380 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1379, i32 0, i32 10
  %1381 = load ptr, ptr %8, align 8, !tbaa !5
  %1382 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1381, i32 0, i32 20
  %1383 = load ptr, ptr %8, align 8, !tbaa !5
  %1384 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1383, i32 0, i32 21
  %1385 = load ptr, ptr %8, align 8, !tbaa !5
  %1386 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1385, i32 0, i32 18
  %1387 = load ptr, ptr %8, align 8, !tbaa !5
  %1388 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1387, i32 0, i32 19
  %1389 = load ptr, ptr %8, align 8, !tbaa !5
  %1390 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1389, i32 0, i32 22
  %1391 = load ptr, ptr %8, align 8, !tbaa !5
  %1392 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1391, i32 0, i32 23
  %1393 = load ptr, ptr %10, align 8, !tbaa !5
  %1394 = load i64, ptr %15, align 8, !tbaa !11
  %1395 = 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 %1378, ptr noundef %1380, ptr noundef %1382, ptr noundef %1384, ptr noundef %1386, ptr noundef %1388, ptr noundef %1390, ptr noundef %1392, ptr noundef %1393, i64 noundef %1394, ptr noundef %1395)
  store i64 0, ptr %17, align 8, !tbaa !11
  br label %1396

1396:                                             ; preds = %1425, %1376
  %1397 = load i64, ptr %17, align 8, !tbaa !11
  %1398 = load i64, ptr %15, align 8, !tbaa !11
  %1399 = sub nsw i64 %1398, 1
  %1400 = icmp sle i64 %1397, %1399
  br i1 %1400, label %1401, label %1428

1401:                                             ; preds = %1396
  %1402 = load ptr, ptr %11, align 8, !tbaa !5
  %1403 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1402, i32 0, i32 4
  %1404 = load ptr, ptr %1403, align 8, !tbaa !42
  %1405 = load i64, ptr %17, align 8, !tbaa !11
  %1406 = getelementptr inbounds double, ptr %1404, i64 %1405
  %1407 = load double, ptr %1406, align 8, !tbaa !39
  %1408 = load ptr, ptr %8, align 8, !tbaa !5
  %1409 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1408, i32 0, i32 11
  %1410 = load double, ptr %1409, align 8, !tbaa !55
  %1411 = fmul double %1407, %1410
  %1412 = load ptr, ptr %8, align 8, !tbaa !5
  %1413 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1412, i32 0, i32 8
  %1414 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1413, i32 0, i32 4
  %1415 = load ptr, ptr %1414, align 8, !tbaa !42
  %1416 = load i64, ptr %17, align 8, !tbaa !11
  %1417 = getelementptr inbounds double, ptr %1415, i64 %1416
  %1418 = load double, ptr %1417, align 8, !tbaa !39
  %1419 = fdiv double %1411, %1418
  %1420 = load ptr, ptr %11, align 8, !tbaa !5
  %1421 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1420, i32 0, i32 4
  %1422 = load ptr, ptr %1421, align 8, !tbaa !42
  %1423 = load i64, ptr %17, align 8, !tbaa !11
  %1424 = getelementptr inbounds double, ptr %1422, i64 %1423
  store double %1419, ptr %1424, align 8, !tbaa !39
  br label %1425

1425:                                             ; preds = %1401
  %1426 = load i64, ptr %17, align 8, !tbaa !11
  %1427 = add nsw i64 %1426, 1
  store i64 %1427, ptr %17, align 8, !tbaa !11
  br label %1396, !llvm.loop !56

1428:                                             ; preds = %1396
  store i64 0, ptr %17, align 8, !tbaa !11
  br label %1429

1429:                                             ; preds = %1460, %1428
  %1430 = load i64, ptr %17, align 8, !tbaa !11
  %1431 = load i64, ptr %16, align 8, !tbaa !11
  %1432 = sub nsw i64 %1431, 1
  %1433 = icmp sle i64 %1430, %1432
  br i1 %1433, label %1434, label %1463

1434:                                             ; preds = %1429
  %1435 = load ptr, ptr %12, align 8, !tbaa !5
  %1436 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1435, i32 0, i32 4
  %1437 = load ptr, ptr %1436, align 8, !tbaa !42
  %1438 = load i64, ptr %17, align 8, !tbaa !11
  %1439 = getelementptr inbounds double, ptr %1437, i64 %1438
  %1440 = load double, ptr %1439, align 8, !tbaa !39
  %1441 = load ptr, ptr %8, align 8, !tbaa !5
  %1442 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1441, i32 0, i32 11
  %1443 = load double, ptr %1442, align 8, !tbaa !55
  %1444 = fmul double %1440, %1443
  %1445 = load ptr, ptr %8, align 8, !tbaa !5
  %1446 = getelementptr inbounds %"struct.alglib_impl::vipmstate", ptr %1445, i32 0, i32 29
  %1447 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1446, i32 0, i32 4
  %1448 = load ptr, ptr %1447, align 8, !tbaa !42
  %1449 = load i64, ptr %17, align 8, !tbaa !11
  %1450 = getelementptr inbounds double, ptr %1448, i64 %1449
  %1451 = load double, ptr %1450, align 8, !tbaa !39
  %1452 = load ptr, ptr %14, align 8, !tbaa !5
  %1453 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %1451, double noundef 1.000000e+00, ptr noundef %1452)
  %1454 = fdiv double %1444, %1453
  %1455 = load ptr, ptr %12, align 8, !tbaa !5
  %1456 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1455, i32 0, i32 4
  %1457 = load ptr, ptr %1456, align 8, !tbaa !42
  %1458 = load i64, ptr %17, align 8, !tbaa !11
  %1459 = getelementptr inbounds double, ptr %1457, i64 %1458
  store double %1454, ptr %1459, align 8, !tbaa !39
  br label %1460

1460:                                             ; preds = %1434
  %1461 = load i64, ptr %17, align 8, !tbaa !11
  %1462 = add nsw i64 %1461, 1
  store i64 %1462, ptr %17, align 8, !tbaa !11
  br label %1429, !llvm.loop !57

1463:                                             ; preds = %1429
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  ret void
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !12, i64 8}
!14 = !{!"_ZTSN11alglib_impl9vipmstateE", !10, i64 0, !10, i64 1, !12, i64 8, !12, i64 16, !15, i64 24, !15, i64 32, !15, i64 40, !10, i64 48, !16, i64 56, !16, i64 120, !16, i64 184, !15, i64 248, !16, i64 256, !18, i64 320, !19, i64 400, !16, i64 768, !12, i64 832, !10, i64 840, !16, i64 848, !16, i64 912, !16, i64 976, !16, i64 1040, !16, i64 1104, !16, i64 1168, !18, i64 1232, !18, i64 1312, !19, i64 1392, !19, i64 1760, !19, i64 2128, !16, i64 2496, !16, i64 2560, !16, i64 2624, !16, i64 2688, !16, i64 2752, !12, i64 2816, !12, i64 2824, !20, i64 2832, !20, i64 3488, !20, i64 4144, !20, i64 4800, !20, i64 5456, !16, i64 6112, !16, i64 6176, !16, i64 6240, !16, i64 6304, !16, i64 6368, !12, i64 6432, !12, i64 6440, !12, i64 6448, !12, i64 6456, !12, i64 6464, !12, i64 6472, !10, i64 6480, !10, i64 6481, !12, i64 6488, !10, i64 6496, !10, i64 6497, !16, i64 6504, !16, i64 6568, !16, i64 6632, !16, i64 6696, !16, i64 6760, !16, i64 6824, !16, i64 6888, !16, i64 6952, !16, i64 7016, !16, i64 7080, !16, i64 7144, !16, i64 7208, !16, i64 7272, !16, i64 7336, !16, i64 7400, !18, i64 7464, !16, i64 7544, !16, i64 7608, !16, i64 7672, !16, i64 7736, !16, i64 7800, !21, i64 7864, !32, i64 23944, !16, i64 24584, !16, i64 24648, !16, i64 24712, !16, i64 24776, !16, i64 24840, !16, i64 24904, !16, i64 24968, !16, i64 25032, !20, i64 25096, !16, i64 25752, !16, i64 25816, !16, i64 25880, !16, i64 25944, !16, i64 26008, !18, i64 26072, !16, i64 26152, !16, i64 26216, !19, i64 26280}
!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_impl9ae_matrixE", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !10, i64 32, !17, i64 40, !7, i64 72}
!19 = !{!"_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}
!20 = !{!"_ZTSN11alglib_impl8vipmvarsE", !12, i64 0, !12, i64 8, !16, i64 16, !16, i64 80, !16, i64 144, !16, i64 208, !16, i64 272, !16, i64 336, !16, i64 400, !16, i64 464, !16, i64 528, !16, i64 592}
!21 = !{!"_ZTSN11alglib_impl23vipmreducedsparsesystemE", !19, i64 0, !16, i64 368, !16, i64 432, !16, i64 496, !16, i64 560, !12, i64 624, !22, i64 632, !16, i64 15696, !16, i64 15760, !16, i64 15824, !16, i64 15888, !16, i64 15952, !16, i64 16016}
!22 = !{!"_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, !23, i64 1000, !16, i64 1512, !16, i64 1576, !16, i64 1640, !16, i64 1704, !16, i64 1768, !16, i64 1832, !24, i64 1896, !24, i64 2040, !24, i64 2184, !24, i64 2328, !24, i64 2472, !24, i64 2616, !16, i64 2760, !16, i64 2824, !16, i64 2888, !16, i64 2952, !16, i64 3016, !26, i64 3080, !31, i64 7464, !16, i64 13816, !16, i64 13880, !16, i64 13944, !16, i64 14008, !16, i64 14072, !16, i64 14136, !19, i64 14200, !19, i64 14568, !16, i64 14936, !16, i64 15000}
!23 = !{!"_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}
!24 = !{!"_ZTSN11alglib_impl9ae_nxpoolE", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !17, i64 32, !25, i64 64, !17, i64 112}
!25 = !{!"_ZTSN11alglib_impl7ae_lockE", !6, i64 0, !17, i64 8, !10, i64 40}
!26 = !{!"_ZTSN11alglib_impl9amdbufferE", !12, i64 0, !10, i64 8, !10, i64 9, !16, i64 16, !16, i64 80, !16, i64 144, !27, i64 208, !27, i64 568, !27, i64 928, !28, i64 1288, !29, i64 1496, !30, i64 1968, !16, i64 2120, !16, i64 2184, !16, i64 2248, !30, i64 2312, !30, i64 2464, !30, i64 2616, !30, i64 2768, !30, i64 2920, !30, i64 3072, !16, i64 3224, !12, i64 3288, !30, i64 3296, !30, i64 3448, !27, i64 3600, !30, i64 3960, !16, i64 4112, !16, i64 4176, !16, i64 4240, !18, i64 4304}
!27 = !{!"_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}
!28 = !{!"_ZTSN11alglib_impl11amdllmatrixE", !12, i64 0, !16, i64 8, !16, i64 72, !16, i64 136, !12, i64 200}
!29 = !{!"_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}
!30 = !{!"_ZTSN11alglib_impl5nisetE", !12, i64 0, !12, i64 8, !16, i64 16, !16, i64 80, !12, i64 144}
!31 = !{!"_ZTSN11alglib_impl18priorityamdbuffersE", !16, i64 0, !16, i64 64, !26, i64 128, !19, i64 4512, !19, i64 4880, !19, i64 5248, !19, i64 5616, !19, i64 5984}
!32 = !{!"_ZTSN11alglib_impl17vipmrighthandsideE", !16, i64 0, !16, i64 64, !16, i64 128, !16, i64 192, !16, i64 256, !16, i64 320, !16, i64 384, !16, i64 448, !16, i64 512, !16, i64 576}
!33 = !{!14, !12, i64 2816}
!34 = !{!14, !12, i64 2824}
!35 = !{!14, !10, i64 6480}
!36 = !{i8 0, i8 2}
!37 = !{}
!38 = !{!14, !10, i64 6481}
!39 = !{!15, !15, i64 0}
!40 = !{!14, !12, i64 6464}
!41 = !{!14, !12, i64 6472}
!42 = !{!7, !7, i64 0}
!43 = !{!14, !12, i64 6432}
!44 = !{!14, !12, i64 6440}
!45 = distinct !{!45, !46}
!46 = !{!"llvm.loop.mustprogress"}
!47 = !{!14, !12, i64 6456}
!48 = distinct !{!48, !46}
!49 = !{!14, !15, i64 40}
!50 = !{!14, !15, i64 24}
!51 = !{!14, !15, i64 32}
!52 = distinct !{!52, !46}
!53 = distinct !{!53, !46}
!54 = distinct !{!54, !46}
!55 = !{!14, !15, i64 248}
!56 = distinct !{!56, !46}
!57 = distinct !{!57, !46}


; 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
@_ZN11alglib_implL30vipmsolver_primalstagnationlenE = external hidden local_unnamed_addr global i64, align 8
@_ZN11alglib_implL28vipmsolver_dualstagnationlenE = external hidden local_unnamed_addr global i64, align 8
@.str.611 = external hidden unnamed_addr constant [70 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
@_ZN11alglib_implL20vipmsolver_maxipmitsE = external hidden local_unnamed_addr global i64, align 8
@_ZN11alglib_implL23vipmsolver_phase0lengthE = external hidden local_unnamed_addr global i64, align 8
@.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.618 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.619 = external hidden unnamed_addr constant [74 x i8], align 1
@_ZN11alglib_implL26vipmsolver_steplengthdecayE = external hidden local_unnamed_addr global double, align 8
@.str.620 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.621 = external hidden unnamed_addr constant [69 x i8], align 1
@_ZN11alglib_implL35vipmsolver_minitersbeforesafeguardsE = external hidden local_unnamed_addr global double, align 8
@_ZN11alglib_implL24vipmsolver_badsteplengthE = external hidden local_unnamed_addr global double, align 8
@.str.622 = external hidden unnamed_addr constant [56 x i8], align 1
@_ZN11alglib_implL39vipmsolver_minitersbeforedroppingboundsE = external hidden local_unnamed_addr global i64, align 8
@_ZN11alglib_implL23vipmsolver_bigconstrmagE = external hidden local_unnamed_addr global double, align 8
@_ZN11alglib_implL24vipmsolver_bigconstrxtolE = external hidden local_unnamed_addr global double, align 8
@.str.623 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.624 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.625 = external hidden unnamed_addr constant [115 x i8], align 1
@_ZN11alglib_implL41vipmsolver_minitersbeforeeworststagnationE = external hidden local_unnamed_addr global i64, align 8
@.str.626 = external hidden unnamed_addr constant [98 x i8], align 1
@_ZN11alglib_implL26vipmsolver_stagnationdeltaE = external hidden local_unnamed_addr global double, align 8
@_ZN11alglib_implL28vipmsolver_primalinfeasible1E = external hidden local_unnamed_addr global double, align 8
@_ZN11alglib_implL35vipmsolver_minitersbeforestagnationE = external hidden local_unnamed_addr global i64, align 8
@.str.627 = external hidden unnamed_addr constant [79 x i8], align 1
@_ZN11alglib_implL26vipmsolver_dualinfeasible1E = external hidden local_unnamed_addr global double, align 8
@.str.628 = external hidden unnamed_addr constant [77 x i8], align 1
@_ZN11alglib_implL35vipmsolver_itersfortoostringentcondE = external hidden local_unnamed_addr global i64, align 8
@.str.629 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.630 = external hidden unnamed_addr constant [29 x i8], align 1
@_ZN11alglib_implL15vipmsolver_bigyE = external hidden local_unnamed_addr global double, align 8
@_ZN11alglib_implL18vipmsolver_ygrowthE = external hidden local_unnamed_addr global double, align 8
@_ZN11alglib_implL35vipmsolver_minitersbeforeinfeasibleE = external hidden local_unnamed_addr global i64, align 8
@.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

; 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

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext, double noundef, double 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 #3

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl12vipmoptimizeEPNS_9vipmstateEbPNS_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 #3 {
  %8 = alloca double, align 8
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca i64, 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
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #5
  store i64 0, ptr %5, align 8, !tbaa !5
  %23 = getelementptr inbounds i8, ptr %0, i64 8
  %24 = load i64, ptr %23, align 8, !tbaa !9
  %25 = getelementptr inbounds i8, ptr %0, i64 2816
  %26 = load i64, ptr %25, align 8, !tbaa !31
  %27 = getelementptr inbounds i8, ptr %0, i64 2824
  %28 = load i64, ptr %27, align 8, !tbaa !32
  %29 = add i64 %28, %26
  %30 = tail call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef nonnull @.str.609)
  %31 = getelementptr inbounds i8, ptr %0, i64 6480
  %32 = zext i1 %30 to i8
  store i8 %32, ptr %31, align 8, !tbaa !33
  br i1 %30, label %33, label %35

33:                                               ; preds = %7
  %34 = tail call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef nonnull @.str.610)
  br label %35

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

44:                                               ; preds = %35
  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 %45

45:                                               ; preds = %44, %35
  %46 = tail call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef 5.000000e-16, double noundef 7.500000e-01, ptr noundef %6)
  %47 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %6)
  %48 = sitofp i64 %24 to double
  %49 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %48, ptr noundef %6)
  %50 = fadd double %49, 1.000000e+02
  %51 = fmul double %50, 5.000000e-16
  %52 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %6)
  %53 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %6)
  %54 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %53, ptr noundef %6)
  %55 = getelementptr inbounds i8, ptr %0, i64 6464
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %55, i8 0, i64 16, i1 false)
  %56 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %48, ptr noundef %6)
  %57 = fadd double %56, 1.000000e+02
  %58 = fmul double %57, 5.000000e-16
  %59 = fmul double %58, 1.000000e-02
  tail call void @_ZN11alglib_implL22vipmsolver_vipmpowerupEPNS_9vipmstateEdPNS_8ae_stateE(ptr noundef nonnull %0, double noundef %46, ptr noundef %6)
  %60 = getelementptr inbounds i8, ptr %0, i64 3488
  %61 = getelementptr inbounds i8, ptr %0, i64 2832
  tail call void @_ZN11alglib_implL23vipmsolver_varsinitfromEPNS_8vipmvarsEPKS0_PNS_8ae_stateE(ptr noundef nonnull %60, ptr noundef nonnull %61, ptr noundef %6)
  %62 = getelementptr inbounds i8, ptr %0, i64 25096
  tail call void @_ZN11alglib_implL25vipmsolver_varsinitbyzeroEPNS_8vipmvarsEllPNS_8ae_stateE(ptr noundef nonnull %62, i64 noundef %24, i64 noundef %29, ptr noundef %6)
  %63 = getelementptr inbounds i8, ptr %0, i64 4800
  tail call void @_ZN11alglib_implL25vipmsolver_varsinitbyzeroEPNS_8vipmvarsEllPNS_8ae_stateE(ptr noundef nonnull %63, i64 noundef %24, i64 noundef %29, ptr noundef %6)
  %64 = getelementptr inbounds i8, ptr %0, i64 5456
  tail call void @_ZN11alglib_implL25vipmsolver_varsinitbyzeroEPNS_8vipmvarsEllPNS_8ae_stateE(ptr noundef nonnull %64, i64 noundef %24, i64 noundef %29, ptr noundef %6)
  store double 1.000000e+300, ptr %20, align 8, !tbaa !37
  store double 1.000000e+300, ptr %21, align 8, !tbaa !37
  store double 1.000000e+300, ptr %22, align 8, !tbaa !37
  tail call void @_ZN11alglib_implL24vipmsolver_traceprogressEPNS_9vipmstateEdddddPNS_8ae_stateE(ptr noundef nonnull %0, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, ptr noundef %6)
  %65 = getelementptr inbounds i8, ptr %0, i64 3168
  %66 = tail call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %29, ptr noundef nonnull %65, ptr noundef %6)
  %67 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef 0.000000e+00, double noundef %66, ptr noundef %6)
  %68 = getelementptr inbounds i8, ptr %0, i64 3296
  %69 = tail call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %29, ptr noundef nonnull %68, ptr noundef %6)
  %70 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %67, double noundef %69, ptr noundef %6)
  %71 = getelementptr inbounds i8, ptr %0, i64 3424
  %72 = tail call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %29, ptr noundef nonnull %71, ptr noundef %6)
  %73 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %70, double noundef %72, ptr noundef %6)
  %74 = getelementptr inbounds i8, ptr %0, i64 3232
  %75 = tail call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %24, ptr noundef nonnull %74, ptr noundef %6)
  %76 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %73, double noundef %75, ptr noundef %6)
  %77 = getelementptr inbounds i8, ptr %0, i64 3360
  %78 = tail call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %24, ptr noundef nonnull %77, ptr noundef %6)
  %79 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %76, double noundef %78, ptr noundef %6)
  store i64 0, ptr %12, align 8, !tbaa !5
  store i64 0, ptr %13, align 8, !tbaa !5
  store i64 7, ptr %5, align 8, !tbaa !5
  store double 1.000000e+300, ptr %15, align 8, !tbaa !37
  store double 1.000000e+300, ptr %16, align 8, !tbaa !37
  %80 = load i64, ptr @_ZN11alglib_implL20vipmsolver_maxipmitsE, align 8, !tbaa !5
  %.not.not604 = icmp sgt i64 %80, 0
  br i1 %.not.not604, label %.lr.ph611, label %.loopexit

.lr.ph611:                                        ; preds = %45
  %81 = getelementptr inbounds i8, ptr %0, i64 4144
  %82 = getelementptr inbounds i8, ptr %0, i64 2848
  %83 = getelementptr inbounds i8, ptr %0, i64 2912
  %84 = getelementptr inbounds i8, ptr %0, i64 3040
  %85 = getelementptr inbounds i8, ptr %0, i64 2976
  %86 = getelementptr inbounds i8, ptr %0, i64 3104
  %87 = getelementptr inbounds i8, ptr %0, i64 5472
  %88 = getelementptr inbounds i8, ptr %0, i64 5536
  %89 = getelementptr inbounds i8, ptr %0, i64 5664
  %90 = getelementptr inbounds i8, ptr %0, i64 5600
  %91 = getelementptr inbounds i8, ptr %0, i64 5728
  %.not549.not597 = icmp sgt i64 %24, 0
  %92 = getelementptr inbounds i8, ptr %0, i64 1160
  %93 = getelementptr inbounds i8, ptr %0, i64 6232
  %94 = getelementptr inbounds i8, ptr %0, i64 904
  %95 = getelementptr inbounds i8, ptr %0, i64 2968
  %96 = getelementptr inbounds i8, ptr %0, i64 3288
  %97 = getelementptr inbounds i8, ptr %0, i64 6432
  %98 = getelementptr inbounds i8, ptr %0, i64 1224
  %99 = getelementptr inbounds i8, ptr %0, i64 6296
  %100 = getelementptr inbounds i8, ptr %0, i64 968
  %101 = getelementptr inbounds i8, ptr %0, i64 3096
  %102 = getelementptr inbounds i8, ptr %0, i64 3416
  %103 = getelementptr inbounds i8, ptr %0, i64 6440
  %104 = getelementptr inbounds i8, ptr %0, i64 24968
  %.not550.not599 = icmp sgt i64 %29, 0
  %105 = getelementptr inbounds i8, ptr %0, i64 2808
  %106 = getelementptr inbounds i8, ptr %0, i64 6424
  %107 = getelementptr inbounds i8, ptr %0, i64 2680
  %108 = getelementptr inbounds i8, ptr %0, i64 2744
  %109 = getelementptr inbounds i8, ptr %0, i64 6360
  %110 = getelementptr inbounds i8, ptr %0, i64 3160
  %111 = getelementptr inbounds i8, ptr %0, i64 3480
  %112 = getelementptr inbounds i8, ptr %0, i64 6456
  %113 = getelementptr inbounds i8, ptr %0, i64 40
  %114 = getelementptr inbounds i8, ptr %0, i64 24
  %115 = getelementptr inbounds i8, ptr %0, i64 32
  br label %116

116:                                              ; preds = %.lr.ph611, %470
  %.0533609 = phi double [ 1.000000e+300, %.lr.ph611 ], [ %.2, %470 ]
  %.0534608 = phi i64 [ -1, %.lr.ph611 ], [ %.2536, %470 ]
  %.0541606 = phi i64 [ 0, %.lr.ph611 ], [ %471, %470 ]
  %.0542605 = phi double [ 0x3CF6849B86A12B9C, %.lr.ph611 ], [ %.1543, %470 ]
  %117 = load i64, ptr @_ZN11alglib_implL23vipmsolver_phase0lengthE, align 8, !tbaa !5
  %118 = icmp slt i64 %.0541606, %117
  %119 = call noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext %118, double noundef %47, double noundef 0x3CF6849B86A12B9C, ptr noundef %6)
  %120 = load i8, ptr %31, align 8, !tbaa !33, !range !35, !noundef !36
  %121 = trunc nuw i8 %120 to i1
  br i1 %121, label %122, label %124

122:                                              ; preds = %116
  %123 = trunc i64 %.0541606 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.614, i32 noundef %123)
  br label %124

124:                                              ; preds = %122, %116
  %125 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %.0542605, double noundef %54)
  br i1 %125, label %126, label %131

126:                                              ; preds = %124
  %127 = load i8, ptr %31, align 8, !tbaa !33, !range !35, !noundef !36
  %128 = trunc nuw i8 %127 to i1
  br i1 %128, label %129, label %130

129:                                              ; preds = %126
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.615)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.616)
  br label %130

130:                                              ; preds = %129, %126
  store i64 7, ptr %5, align 8, !tbaa !5
  br label %.loopexit

131:                                              ; preds = %124
  %132 = call noundef zeroext i1 @_ZN11alglib_implL44vipmsolver_vipmprecomputenewtonfactorizationEPNS_9vipmstateEPKNS_8vipmvarsEddddPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %61, double noundef %119, double noundef %51, double noundef %.0542605, double noundef 0.000000e+00, ptr noundef %6)
  br i1 %132, label %137, label %133

133:                                              ; preds = %131
  %134 = fmul double %.0542605, 1.000000e+01
  %135 = load i8, ptr %31, align 8, !tbaa !33, !range !35, !noundef !36
  %136 = trunc nuw i8 %135 to i1
  br i1 %136, label %.sink.split, label %470

137:                                              ; preds = %131
  %138 = call noundef double @_ZN11alglib_implL24vipmsolver_varscomputemuEPKNS_9vipmstateEPKNS_8vipmvarsEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %61, ptr noundef %6)
  %139 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %.0542605, double noundef %52)
  %140 = call noundef zeroext i1 @_ZN11alglib_implL35vipmsolver_vipmcomputestepdirectionEPNS_9vipmstateEPKNS_8vipmvarsEdS4_PS2_dbPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %61, double noundef 0.000000e+00, ptr noundef nonnull %62, ptr noundef nonnull %63, double noundef %119, i1 noundef zeroext %139, ptr noundef %6)
  br i1 %140, label %145, label %141

141:                                              ; preds = %137
  %142 = fmul double %.0542605, 1.000000e+01
  %143 = load i8, ptr %31, align 8, !tbaa !33, !range !35, !noundef !36
  %144 = trunc nuw i8 %143 to i1
  br i1 %144, label %.sink.split, label %470

145:                                              ; preds = %137
  %146 = load double, ptr @_ZN11alglib_implL26vipmsolver_steplengthdecayE, align 8, !tbaa !37
  call void @_ZN11alglib_implL32vipmsolver_vipmcomputesteplengthEPKNS_9vipmstateEPKNS_8vipmvarsES5_dbPdS6_PNS_8ae_stateE(ptr noundef %0, ptr noundef nonnull %61, ptr noundef nonnull %63, double noundef %146, i1 noundef zeroext false, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef %6)
  call void @_ZN11alglib_implL23vipmsolver_varsinitfromEPNS_8vipmvarsEPKS0_PNS_8ae_stateE(ptr noundef nonnull %81, ptr noundef nonnull %61, ptr noundef %6)
  %147 = load double, ptr %8, align 8, !tbaa !37
  %148 = load double, ptr %9, align 8, !tbaa !37
  call void @_ZN11alglib_implL22vipmsolver_varsaddstepEPNS_8vipmvarsEPKS0_ddPNS_8ae_stateE(ptr noundef nonnull %81, ptr noundef nonnull %63, double noundef %147, double noundef %148, ptr noundef %6)
  %149 = call noundef double @_ZN11alglib_implL24vipmsolver_varscomputemuEPKNS_9vipmstateEPKNS_8vipmvarsEPNS_8ae_stateE(ptr noundef %0, ptr noundef nonnull %81, ptr noundef %6)
  %150 = fadd double %59, %149
  %151 = fadd double %59, %138
  %152 = fdiv double %150, %151
  %153 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef %152, double noundef 3.000000e+00, ptr noundef %6)
  %154 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %153, double noundef 1.000000e+00, ptr noundef %6)
  %155 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %154, ptr noundef %6)
  br i1 %155, label %156, label %158

156:                                              ; preds = %145
  %157 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %154, double noundef 1.000000e+00)
  br label %158

158:                                              ; preds = %156, %145
  %159 = phi i1 [ false, %145 ], [ %157, %156 ]
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %159, ptr noundef nonnull @.str.620, ptr noundef %6)
  %160 = call double @llvm.fmuladd.f64(double %154, double %138, double %59)
  %161 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %.0542605, double noundef %52)
  %162 = call noundef zeroext i1 @_ZN11alglib_implL35vipmsolver_vipmcomputestepdirectionEPNS_9vipmstateEPKNS_8vipmvarsEdS4_PS2_dbPNS_8ae_stateE(ptr noundef %0, ptr noundef nonnull %61, double noundef %160, ptr noundef nonnull %63, ptr noundef nonnull %64, double noundef %119, i1 noundef zeroext %161, ptr noundef %6)
  br i1 %162, label %167, label %163

163:                                              ; preds = %158
  %164 = fmul double %.0542605, 1.000000e+01
  %165 = load i8, ptr %31, align 8, !tbaa !33, !range !35, !noundef !36
  %166 = trunc nuw i8 %165 to i1
  br i1 %166, label %.sink.split, label %470

167:                                              ; preds = %158
  %168 = load double, ptr @_ZN11alglib_implL26vipmsolver_steplengthdecayE, align 8, !tbaa !37
  call void @_ZN11alglib_implL32vipmsolver_vipmcomputesteplengthEPKNS_9vipmstateEPKNS_8vipmvarsES5_dbPdS6_PNS_8ae_stateE(ptr noundef %0, ptr noundef nonnull %61, ptr noundef nonnull %64, double noundef %168, i1 noundef zeroext false, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef %6)
  %169 = uitofp nneg i64 %.0541606 to double
  %170 = load double, ptr @_ZN11alglib_implL35vipmsolver_minitersbeforesafeguardsE, align 8, !tbaa !37
  %171 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %169, double noundef %170)
  br i1 %171, label %172, label %184

172:                                              ; preds = %167
  %173 = load double, ptr %10, align 8, !tbaa !37
  %174 = load double, ptr @_ZN11alglib_implL24vipmsolver_badsteplengthE, align 8, !tbaa !37
  %175 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %173, double noundef %174)
  br i1 %175, label %180, label %176

176:                                              ; preds = %172
  %177 = load double, ptr %11, align 8, !tbaa !37
  %178 = load double, ptr @_ZN11alglib_implL24vipmsolver_badsteplengthE, align 8, !tbaa !37
  %179 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %177, double noundef %178)
  br i1 %179, label %180, label %184

180:                                              ; preds = %176, %172
  %181 = fmul double %.0542605, 1.000000e+01
  %182 = load i8, ptr %31, align 8, !tbaa !33, !range !35, !noundef !36
  %183 = trunc nuw i8 %182 to i1
  br i1 %183, label %.sink.split, label %470

184:                                              ; preds = %176, %167
  %185 = load double, ptr %10, align 8, !tbaa !37
  %186 = load double, ptr %11, align 8, !tbaa !37
  call void @_ZN11alglib_implL29vipmsolver_runintegritychecksEPKNS_9vipmstateEPKNS_8vipmvarsES5_ddPNS_8ae_stateE(ptr noundef %0, ptr noundef nonnull %61, ptr noundef nonnull %64, double noundef %185, double noundef %186, ptr noundef %6)
  %187 = load double, ptr %10, align 8, !tbaa !37
  %188 = load double, ptr %11, align 8, !tbaa !37
  call void @_ZN11alglib_implL26vipmsolver_vipmperformstepEPNS_9vipmstateEddPNS_8ae_stateE(ptr noundef %0, double noundef %187, double noundef %188, ptr noundef %6)
  %189 = load double, ptr %10, align 8, !tbaa !37
  %190 = load double, ptr %11, align 8, !tbaa !37
  call void @_ZN11alglib_implL24vipmsolver_traceprogressEPNS_9vipmstateEdddddPNS_8ae_stateE(ptr noundef %0, double noundef %138, double noundef %149, double noundef %154, double noundef %189, double noundef %190, ptr noundef %6)
  %191 = load i64, ptr @_ZN11alglib_implL39vipmsolver_minitersbeforedroppingboundsE, align 8
  %.not = icmp sge i64 %.0541606, %191
  %or.cond.not = select i1 %1, i1 %.not, i1 false
  br i1 %or.cond.not, label %192, label %351

192:                                              ; preds = %184
  %193 = load double, ptr @_ZN11alglib_implL23vipmsolver_bigconstrmagE, align 8, !tbaa !37
  %194 = fmul double %193, 1.000000e+01
  %195 = load double, ptr @_ZN11alglib_implL24vipmsolver_bigconstrxtolE, align 8, !tbaa !37
  %196 = fdiv double 1.000000e+00, %195
  %197 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %194, double noundef %196)
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %197, ptr noundef nonnull @.str.623, ptr noundef %6)
  store i64 0, ptr %14, align 8, !tbaa !5
  %198 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %24, ptr noundef nonnull %82, ptr noundef %6)
  %199 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef 1.000000e+00, double noundef %198, ptr noundef %6)
  %200 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %24, ptr noundef nonnull %83, ptr noundef %6)
  %201 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %199, double noundef %200, ptr noundef %6)
  %202 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %24, ptr noundef nonnull %84, ptr noundef %6)
  %203 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %201, double noundef %202, ptr noundef %6)
  %204 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %29, ptr noundef nonnull %85, ptr noundef %6)
  %205 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %203, double noundef %204, ptr noundef %6)
  %206 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %29, ptr noundef nonnull %86, ptr noundef %6)
  %207 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %205, double noundef %206, ptr noundef %6)
  %208 = load double, ptr %10, align 8, !tbaa !37
  %209 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %24, ptr noundef nonnull %87, ptr noundef %6)
  %210 = fmul double %208, %209
  %211 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef 1.000000e+00, double noundef %210, ptr noundef %6)
  %212 = load double, ptr %10, align 8, !tbaa !37
  %213 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %24, ptr noundef nonnull %88, ptr noundef %6)
  %214 = fmul double %212, %213
  %215 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %211, double noundef %214, ptr noundef %6)
  %216 = load double, ptr %10, align 8, !tbaa !37
  %217 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %24, ptr noundef nonnull %89, ptr noundef %6)
  %218 = fmul double %216, %217
  %219 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %215, double noundef %218, ptr noundef %6)
  %220 = load double, ptr %10, align 8, !tbaa !37
  %221 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %29, ptr noundef nonnull %90, ptr noundef %6)
  %222 = fmul double %220, %221
  %223 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %219, double noundef %222, ptr noundef %6)
  %224 = load double, ptr %10, align 8, !tbaa !37
  %225 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %29, ptr noundef nonnull %91, ptr noundef %6)
  %226 = fmul double %224, %225
  %227 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %223, double noundef %226, ptr noundef %6)
  %228 = load double, ptr @_ZN11alglib_implL24vipmsolver_bigconstrxtolE, align 8, !tbaa !37
  %229 = fmul double %207, %228
  %230 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %227, double noundef %229)
  br i1 %230, label %231, label %351

231:                                              ; preds = %192
  %232 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %24, ptr noundef nonnull %82, ptr noundef %6)
  %233 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef 1.000000e+00, double noundef %232, ptr noundef %6)
  br i1 %.not549.not597, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %231, %287
  %.0537598 = phi i64 [ %288, %287 ], [ 0, %231 ]
  %234 = load ptr, ptr %92, align 8, !tbaa !38
  %235 = getelementptr inbounds i8, ptr %234, i64 %.0537598
  %236 = load i8, ptr %235, align 1, !tbaa !39, !range !35, !noundef !36
  %237 = trunc nuw i8 %236 to i1
  br i1 %237, label %238, label %260

238:                                              ; preds = %.lr.ph
  %239 = load ptr, ptr %93, align 8, !tbaa !38
  %240 = getelementptr inbounds i8, ptr %239, i64 %.0537598
  %241 = load i8, ptr %240, align 1, !tbaa !39, !range !35, !noundef !36
  %242 = trunc nuw i8 %241 to i1
  br i1 %242, label %243, label %260

243:                                              ; preds = %238
  %244 = load ptr, ptr %94, align 8, !tbaa !38
  %245 = getelementptr inbounds double, ptr %244, i64 %.0537598
  %246 = load double, ptr %245, align 8, !tbaa !37
  %247 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %246, ptr noundef %6)
  %248 = load double, ptr @_ZN11alglib_implL23vipmsolver_bigconstrmagE, align 8, !tbaa !37
  %249 = fmul double %233, %248
  %250 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %247, double noundef %249)
  br i1 %250, label %251, label %260

251:                                              ; preds = %243
  %252 = load ptr, ptr %93, align 8, !tbaa !38
  %253 = getelementptr inbounds i8, ptr %252, i64 %.0537598
  store i8 0, ptr %253, align 1, !tbaa !39
  %254 = load ptr, ptr %95, align 8, !tbaa !38
  %255 = getelementptr inbounds double, ptr %254, i64 %.0537598
  store double 0.000000e+00, ptr %255, align 8, !tbaa !37
  %256 = load ptr, ptr %96, align 8, !tbaa !38
  %257 = getelementptr inbounds double, ptr %256, i64 %.0537598
  store double 0.000000e+00, ptr %257, align 8, !tbaa !37
  %258 = load i64, ptr %97, align 8, !tbaa !40
  %259 = add nsw i64 %258, -1
  store i64 %259, ptr %97, align 8, !tbaa !40
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %6)
  br label %260

260:                                              ; preds = %251, %243, %238, %.lr.ph
  %261 = load ptr, ptr %98, align 8, !tbaa !38
  %262 = getelementptr inbounds i8, ptr %261, i64 %.0537598
  %263 = load i8, ptr %262, align 1, !tbaa !39, !range !35, !noundef !36
  %264 = trunc nuw i8 %263 to i1
  br i1 %264, label %265, label %287

265:                                              ; preds = %260
  %266 = load ptr, ptr %99, align 8, !tbaa !38
  %267 = getelementptr inbounds i8, ptr %266, i64 %.0537598
  %268 = load i8, ptr %267, align 1, !tbaa !39, !range !35, !noundef !36
  %269 = trunc nuw i8 %268 to i1
  br i1 %269, label %270, label %287

270:                                              ; preds = %265
  %271 = load ptr, ptr %100, align 8, !tbaa !38
  %272 = getelementptr inbounds double, ptr %271, i64 %.0537598
  %273 = load double, ptr %272, align 8, !tbaa !37
  %274 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %273, ptr noundef %6)
  %275 = load double, ptr @_ZN11alglib_implL23vipmsolver_bigconstrmagE, align 8, !tbaa !37
  %276 = fmul double %233, %275
  %277 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %274, double noundef %276)
  br i1 %277, label %278, label %287

278:                                              ; preds = %270
  %279 = load ptr, ptr %99, align 8, !tbaa !38
  %280 = getelementptr inbounds i8, ptr %279, i64 %.0537598
  store i8 0, ptr %280, align 1, !tbaa !39
  %281 = load ptr, ptr %101, align 8, !tbaa !38
  %282 = getelementptr inbounds double, ptr %281, i64 %.0537598
  store double 0.000000e+00, ptr %282, align 8, !tbaa !37
  %283 = load ptr, ptr %102, align 8, !tbaa !38
  %284 = getelementptr inbounds double, ptr %283, i64 %.0537598
  store double 0.000000e+00, ptr %284, align 8, !tbaa !37
  %285 = load i64, ptr %103, align 8, !tbaa !41
  %286 = add nsw i64 %285, -1
  store i64 %286, ptr %103, align 8, !tbaa !41
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %6)
  br label %287

287:                                              ; preds = %260, %265, %270, %278
  %288 = add nuw nsw i64 %.0537598, 1
  %exitcond.not = icmp eq i64 %288, %24
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !42

._crit_edge:                                      ; preds = %287, %231
  call void @_ZN11alglib_implL23vipmsolver_multiplygeaxEPKNS_9vipmstateEdPKNS_9ae_vectorEldPS3_lPNS_8ae_stateE(ptr noundef %0, double noundef 1.000000e+00, ptr noundef nonnull %82, i64 noundef 0, double noundef 0.000000e+00, ptr noundef nonnull %104, i64 noundef 0, ptr noundef %6)
  %289 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %24, ptr noundef nonnull %82, ptr noundef %6)
  %290 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef 1.000000e+00, double noundef %289, ptr noundef %6)
  %291 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %29, ptr noundef nonnull %104, ptr noundef %6)
  %292 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %290, double noundef %291, ptr noundef %6)
  br i1 %.not550.not599, label %.lr.ph602, label %._crit_edge603

.lr.ph602:                                        ; preds = %._crit_edge, %342
  %.1538600 = phi i64 [ %343, %342 ], [ 0, %._crit_edge ]
  %293 = load ptr, ptr %105, align 8, !tbaa !38
  %294 = getelementptr inbounds i8, ptr %293, i64 %.1538600
  %295 = load i8, ptr %294, align 1, !tbaa !39, !range !35, !noundef !36
  %296 = trunc nuw i8 %295 to i1
  br i1 %296, label %297, label %342

297:                                              ; preds = %.lr.ph602
  %298 = load ptr, ptr %106, align 8, !tbaa !38
  %299 = getelementptr inbounds i8, ptr %298, i64 %.1538600
  %300 = load i8, ptr %299, align 1, !tbaa !39, !range !35, !noundef !36
  %301 = trunc nuw i8 %300 to i1
  br i1 %301, label %302, label %342

302:                                              ; preds = %297
  %303 = load ptr, ptr %107, align 8, !tbaa !38
  %304 = getelementptr inbounds double, ptr %303, i64 %.1538600
  %305 = load double, ptr %304, align 8, !tbaa !37
  %306 = load ptr, ptr %108, align 8, !tbaa !38
  %307 = getelementptr inbounds double, ptr %306, i64 %.1538600
  %308 = load double, ptr %307, align 8, !tbaa !37
  %309 = fadd double %305, %308
  %310 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %309, ptr noundef %6)
  %311 = load double, ptr @_ZN11alglib_implL23vipmsolver_bigconstrmagE, align 8, !tbaa !37
  %312 = fmul double %292, %311
  %313 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %310, double noundef %312)
  br i1 %313, label %314, label %342

314:                                              ; preds = %302
  %315 = load ptr, ptr %107, align 8, !tbaa !38
  %316 = getelementptr inbounds double, ptr %315, i64 %.1538600
  %317 = load double, ptr %316, align 8, !tbaa !37
  %318 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %317, ptr noundef %6)
  %319 = load double, ptr @_ZN11alglib_implL23vipmsolver_bigconstrmagE, align 8, !tbaa !37
  %320 = fmul double %292, %319
  %321 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %318, double noundef %320)
  br i1 %321, label %322, label %342

322:                                              ; preds = %314
  %323 = load ptr, ptr %109, align 8, !tbaa !38
  %324 = getelementptr inbounds i8, ptr %323, i64 %.1538600
  %325 = load i8, ptr %324, align 1, !tbaa !39, !range !35, !noundef !36
  %326 = trunc nuw i8 %325 to i1
  br i1 %326, label %327, label %332

327:                                              ; preds = %322
  %328 = load ptr, ptr %106, align 8, !tbaa !38
  %329 = getelementptr inbounds i8, ptr %328, i64 %.1538600
  %330 = load i8, ptr %329, align 1, !tbaa !39, !range !35, !noundef !36
  %331 = trunc nuw i8 %330 to i1
  br label %332

332:                                              ; preds = %327, %322
  %333 = phi i1 [ false, %322 ], [ %331, %327 ]
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %333, ptr noundef nonnull @.str.624, ptr noundef %6)
  %334 = load ptr, ptr %106, align 8, !tbaa !38
  %335 = getelementptr inbounds i8, ptr %334, i64 %.1538600
  store i8 0, ptr %335, align 1, !tbaa !39
  %336 = load ptr, ptr %110, align 8, !tbaa !38
  %337 = getelementptr inbounds double, ptr %336, i64 %.1538600
  store double 0.000000e+00, ptr %337, align 8, !tbaa !37
  %338 = load ptr, ptr %111, align 8, !tbaa !38
  %339 = getelementptr inbounds double, ptr %338, i64 %.1538600
  store double 0.000000e+00, ptr %339, align 8, !tbaa !37
  %340 = load i64, ptr %112, align 8, !tbaa !44
  %341 = add nsw i64 %340, -1
  store i64 %341, ptr %112, align 8, !tbaa !44
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %6)
  br label %342

342:                                              ; preds = %.lr.ph602, %297, %302, %314, %332
  %343 = add nuw nsw i64 %.1538600, 1
  %exitcond642.not = icmp eq i64 %343, %29
  br i1 %exitcond642.not, label %._crit_edge603, label %.lr.ph602, !llvm.loop !45

._crit_edge603:                                   ; preds = %342, %._crit_edge
  %344 = load i64, ptr %14, align 8, !tbaa !5
  %345 = icmp sgt i64 %344, 0
  br i1 %345, label %346, label %351

346:                                              ; preds = %._crit_edge603
  %347 = load i8, ptr %31, align 8, !tbaa !33, !range !35, !noundef !36
  %348 = trunc nuw i8 %347 to i1
  br i1 %348, label %349, label %351

349:                                              ; preds = %346
  %350 = trunc i64 %344 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.625, i32 noundef %350)
  br label %351

351:                                              ; preds = %192, %346, %349, %._crit_edge603, %184
  %352 = load double, ptr %15, align 8, !tbaa !37
  %353 = load double, ptr %16, align 8, !tbaa !37
  call void @_ZN11alglib_implL24vipmsolver_computeerrorsEPNS_9vipmstateEPdS2_S2_S2_S2_PNS_8ae_stateE(ptr noundef %0, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef %6)
  %354 = call noundef double @_ZN11alglib_implL24vipmsolver_varscomputemuEPKNS_9vipmstateEPKNS_8vipmvarsEPNS_8ae_stateE(ptr noundef %0, ptr noundef nonnull %61, ptr noundef %6)
  %355 = load double, ptr %19, align 8, !tbaa !37
  %356 = load double, ptr %17, align 8, !tbaa !37
  %357 = load double, ptr %18, align 8, !tbaa !37
  %358 = call noundef double @_ZN11alglib_impl5rmax3EdddPNS_8ae_stateE(double noundef %355, double noundef %356, double noundef %357, ptr noundef %6)
  %359 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %358, double noundef %.0533609)
  br i1 %359, label %360, label %362

360:                                              ; preds = %351
  call void @_ZN11alglib_implL23vipmsolver_varsinitfromEPNS_8vipmvarsEPKS0_PNS_8ae_stateE(ptr noundef nonnull %60, ptr noundef nonnull %61, ptr noundef %6)
  %361 = call noundef double @_ZN11alglib_impl5rmax3EdddPNS_8ae_stateE(double noundef %355, double noundef %356, double noundef %357, ptr noundef %6)
  store double %355, ptr %20, align 8, !tbaa !37
  store double %356, ptr %21, align 8, !tbaa !37
  store double %357, ptr %22, align 8, !tbaa !37
  br label %362

362:                                              ; preds = %360, %351
  %.1535 = phi i64 [ %.0541606, %360 ], [ %.0534608, %351 ]
  %.1 = phi double [ %361, %360 ], [ %.0533609, %351 ]
  %363 = icmp sgt i64 %.1535, 0
  br i1 %363, label %364, label %373

364:                                              ; preds = %362
  %365 = load i64, ptr @_ZN11alglib_implL41vipmsolver_minitersbeforeeworststagnationE, align 8, !tbaa !5
  %366 = add nsw i64 %365, %.1535
  %367 = icmp sgt i64 %.0541606, %366
  br i1 %367, label %368, label %373

368:                                              ; preds = %364
  %369 = load i8, ptr %31, align 8, !tbaa !33, !range !35, !noundef !36
  %370 = trunc nuw i8 %369 to i1
  br i1 %370, label %371, label %.loopexit

371:                                              ; preds = %368
  %372 = trunc i64 %365 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.626, i32 noundef %372)
  br label %.loopexit

373:                                              ; preds = %364, %362
  %374 = load double, ptr %113, align 8, !tbaa !46
  %375 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %355, double noundef %374)
  br i1 %375, label %376, label %394

376:                                              ; preds = %373
  %377 = load double, ptr %15, align 8, !tbaa !37
  %378 = load double, ptr @_ZN11alglib_implL26vipmsolver_stagnationdeltaE, align 8, !tbaa !37
  %379 = fmul double %352, %378
  %380 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %377, double noundef %379)
  br i1 %380, label %381, label %394

381:                                              ; preds = %376
  %382 = load double, ptr %17, align 8, !tbaa !37
  %383 = load double, ptr @_ZN11alglib_implL28vipmsolver_primalinfeasible1E, align 8, !tbaa !37
  %384 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %382, double noundef %383)
  %385 = load i64, ptr @_ZN11alglib_implL35vipmsolver_minitersbeforestagnationE, align 8
  %.not551 = icmp sge i64 %.0541606, %385
  %or.cond563.not = select i1 %384, i1 %.not551, i1 false
  br i1 %or.cond563.not, label %386, label %394

386:                                              ; preds = %381
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %12, ptr noundef %6)
  %387 = load i64, ptr %12, align 8, !tbaa !5
  %388 = load i64, ptr @_ZN11alglib_implL30vipmsolver_primalstagnationlenE, align 8, !tbaa !5
  %.not552 = icmp slt i64 %387, %388
  br i1 %.not552, label %395, label %389

389:                                              ; preds = %386
  %390 = load i8, ptr %31, align 8, !tbaa !33, !range !35, !noundef !36
  %391 = trunc nuw i8 %390 to i1
  br i1 %391, label %392, label %.loopexit

392:                                              ; preds = %389
  %393 = trunc i64 %388 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.627, i32 noundef %393)
  br label %.loopexit

394:                                              ; preds = %381, %376, %373
  store i64 0, ptr %12, align 8, !tbaa !5
  br label %395

395:                                              ; preds = %386, %394
  %396 = load double, ptr %113, align 8, !tbaa !46
  %397 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %355, double noundef %396)
  br i1 %397, label %398, label %416

398:                                              ; preds = %395
  %399 = load double, ptr %16, align 8, !tbaa !37
  %400 = load double, ptr @_ZN11alglib_implL26vipmsolver_stagnationdeltaE, align 8, !tbaa !37
  %401 = fmul double %353, %400
  %402 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %399, double noundef %401)
  br i1 %402, label %403, label %416

403:                                              ; preds = %398
  %404 = load double, ptr %18, align 8, !tbaa !37
  %405 = load double, ptr @_ZN11alglib_implL26vipmsolver_dualinfeasible1E, align 8, !tbaa !37
  %406 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %404, double noundef %405)
  %407 = load i64, ptr @_ZN11alglib_implL35vipmsolver_minitersbeforestagnationE, align 8
  %.not553 = icmp sge i64 %.0541606, %407
  %or.cond565.not = select i1 %406, i1 %.not553, i1 false
  br i1 %or.cond565.not, label %408, label %416

408:                                              ; preds = %403
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %6)
  %409 = load i64, ptr %13, align 8, !tbaa !5
  %410 = load i64, ptr @_ZN11alglib_implL28vipmsolver_dualstagnationlenE, align 8, !tbaa !5
  %.not554 = icmp slt i64 %409, %410
  br i1 %.not554, label %417, label %411

411:                                              ; preds = %408
  %412 = load i8, ptr %31, align 8, !tbaa !33, !range !35, !noundef !36
  %413 = trunc nuw i8 %412 to i1
  br i1 %413, label %414, label %.loopexit

414:                                              ; preds = %411
  %415 = trunc i64 %410 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.628, i32 noundef %415)
  br label %.loopexit

416:                                              ; preds = %403, %398, %395
  store i64 0, ptr %13, align 8, !tbaa !5
  br label %417

417:                                              ; preds = %408, %416
  %418 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %354, double noundef %58)
  %419 = load i64, ptr @_ZN11alglib_implL35vipmsolver_itersfortoostringentcondE, align 8
  %.not555 = icmp sge i64 %.0541606, %419
  %or.cond567.not = select i1 %418, i1 %.not555, i1 false
  br i1 %or.cond567.not, label %420, label %425

420:                                              ; preds = %417
  %421 = load i8, ptr %31, align 8, !tbaa !33, !range !35, !noundef !36
  %422 = trunc nuw i8 %421 to i1
  br i1 %422, label %423, label %424

423:                                              ; preds = %420
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.629)
  br label %424

424:                                              ; preds = %423, %420
  store i64 7, ptr %5, align 8, !tbaa !5
  br label %.loopexit

425:                                              ; preds = %417
  %426 = load double, ptr %113, align 8, !tbaa !46
  %427 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %355, double noundef %426)
  br i1 %427, label %428, label %438

428:                                              ; preds = %425
  %429 = load double, ptr %114, align 8, !tbaa !47
  %430 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %356, double noundef %429)
  br i1 %430, label %431, label %438

431:                                              ; preds = %428
  %432 = load double, ptr %115, align 8, !tbaa !48
  %433 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %357, double noundef %432)
  br i1 %433, label %434, label %438

434:                                              ; preds = %431
  %435 = load i8, ptr %31, align 8, !tbaa !33, !range !35, !noundef !36
  %436 = trunc nuw i8 %435 to i1
  br i1 %436, label %437, label %473

437:                                              ; preds = %434
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.630)
  br label %473

438:                                              ; preds = %431, %428, %425
  %439 = load double, ptr @_ZN11alglib_implL15vipmsolver_bigyE, align 8, !tbaa !37
  %440 = load double, ptr @_ZN11alglib_implL18vipmsolver_ygrowthE, align 8, !tbaa !37
  %441 = fmul double %79, %440
  %442 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %439, double noundef %441, ptr noundef %6)
  %443 = load double, ptr @_ZN11alglib_implL18vipmsolver_ygrowthE, align 8, !tbaa !37
  %444 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %24, ptr noundef nonnull %82, ptr noundef %6)
  %445 = fmul double %443, %444
  %446 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %442, double noundef %445, ptr noundef %6)
  %447 = load double, ptr @_ZN11alglib_implL18vipmsolver_ygrowthE, align 8, !tbaa !37
  %448 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %24, ptr noundef nonnull %83, ptr noundef %6)
  %449 = fmul double %447, %448
  %450 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %446, double noundef %449, ptr noundef %6)
  %451 = load double, ptr @_ZN11alglib_implL18vipmsolver_ygrowthE, align 8, !tbaa !37
  %452 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %24, ptr noundef nonnull %84, ptr noundef %6)
  %453 = fmul double %451, %452
  %454 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %450, double noundef %453, ptr noundef %6)
  %455 = load double, ptr @_ZN11alglib_implL18vipmsolver_ygrowthE, align 8, !tbaa !37
  %456 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %29, ptr noundef nonnull %85, ptr noundef %6)
  %457 = fmul double %455, %456
  %458 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %454, double noundef %457, ptr noundef %6)
  %459 = load double, ptr @_ZN11alglib_implL18vipmsolver_ygrowthE, align 8, !tbaa !37
  %460 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %29, ptr noundef nonnull %86, ptr noundef %6)
  %461 = fmul double %459, %460
  %462 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %458, double noundef %461, ptr noundef %6)
  %463 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %29, ptr noundef nonnull %65, ptr noundef %6)
  %464 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %463, double noundef %462)
  %465 = load i64, ptr @_ZN11alglib_implL35vipmsolver_minitersbeforeinfeasibleE, align 8
  %.not556 = icmp sge i64 %.0541606, %465
  %or.cond569.not = select i1 %464, i1 %.not556, i1 false
  br i1 %or.cond569.not, label %466, label %470

466:                                              ; preds = %438
  %467 = load i8, ptr %31, align 8, !tbaa !33, !range !35, !noundef !36
  %468 = trunc nuw i8 %467 to i1
  br i1 %468, label %469, label %.loopexit

469:                                              ; preds = %466
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.631, double noundef %462)
  br label %.loopexit

.sink.split:                                      ; preds = %180, %163, %141, %133
  %.str.622.sink = phi ptr [ @.str.617, %133 ], [ @.str.619, %141 ], [ @.str.621, %163 ], [ @.str.622, %180 ]
  %.sink = phi double [ %134, %133 ], [ %142, %141 ], [ %164, %163 ], [ %181, %180 ]
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull %.str.622.sink)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.618, double noundef %.sink)
  br label %470

470:                                              ; preds = %.sink.split, %438, %180, %163, %141, %133
  %.1543 = phi double [ %181, %180 ], [ %.0542605, %438 ], [ %164, %163 ], [ %142, %141 ], [ %134, %133 ], [ %.sink, %.sink.split ]
  %.2536 = phi i64 [ %.0534608, %180 ], [ %.1535, %438 ], [ %.0534608, %163 ], [ %.0534608, %141 ], [ %.0534608, %133 ], [ %.0534608, %.sink.split ]
  %.2 = phi double [ %.0533609, %180 ], [ %.1, %438 ], [ %.0533609, %163 ], [ %.0533609, %141 ], [ %.0533609, %133 ], [ %.0533609, %.sink.split ]
  %471 = add nuw nsw i64 %.0541606, 1
  %472 = load i64, ptr @_ZN11alglib_implL20vipmsolver_maxipmitsE, align 8, !tbaa !5
  %.not.not = icmp slt i64 %471, %472
  br i1 %.not.not, label %116, label %.loopexit, !llvm.loop !49

473:                                              ; preds = %434, %437
  store i64 1, ptr %5, align 8, !tbaa !5
  br label %.thread578

.loopexit:                                        ; preds = %470, %45, %130, %371, %368, %392, %389, %414, %411, %424, %469, %466
  %.3.ph = phi i64 [ %.1535, %466 ], [ %.1535, %469 ], [ %.1535, %424 ], [ %.1535, %411 ], [ %.1535, %414 ], [ %.1535, %389 ], [ %.1535, %392 ], [ %.1535, %368 ], [ %.1535, %371 ], [ %.0534608, %130 ], [ -1, %45 ], [ %.2536, %470 ]
  %474 = load i8, ptr %31, align 8, !tbaa !33, !range !35, !noundef !36
  %475 = trunc nuw i8 %474 to i1
  br i1 %475, label %476, label %478

476:                                              ; preds = %.loopexit
  %477 = trunc i64 %.3.ph to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.632, i32 noundef %477)
  br label %478

478:                                              ; preds = %476, %.loopexit
  call void @_ZN11alglib_implL23vipmsolver_varsinitfromEPNS_8vipmvarsEPKS0_PNS_8ae_stateE(ptr noundef nonnull %61, ptr noundef nonnull %60, ptr noundef %6)
  call void @_ZN11alglib_impl9touchrealEPdPNS_8ae_stateE(ptr noundef nonnull %21, ptr noundef %6)
  call void @_ZN11alglib_impl9touchrealEPdPNS_8ae_stateE(ptr noundef nonnull %22, ptr noundef %6)
  call void @_ZN11alglib_impl9touchrealEPdPNS_8ae_stateE(ptr noundef nonnull %20, ptr noundef %6)
  %479 = load double, ptr @_ZN11alglib_implL15vipmsolver_bigyE, align 8, !tbaa !37
  %480 = load double, ptr @_ZN11alglib_implL18vipmsolver_ygrowthE, align 8, !tbaa !37
  %481 = fmul double %79, %480
  %482 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %479, double noundef %481, ptr noundef %6)
  %483 = load double, ptr @_ZN11alglib_implL18vipmsolver_ygrowthE, align 8, !tbaa !37
  %484 = getelementptr inbounds i8, ptr %0, i64 2848
  %485 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %24, ptr noundef nonnull %484, ptr noundef %6)
  %486 = fmul double %483, %485
  %487 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %482, double noundef %486, ptr noundef %6)
  %488 = load double, ptr @_ZN11alglib_implL18vipmsolver_ygrowthE, align 8, !tbaa !37
  %489 = getelementptr inbounds i8, ptr %0, i64 2912
  %490 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %24, ptr noundef nonnull %489, ptr noundef %6)
  %491 = fmul double %488, %490
  %492 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %487, double noundef %491, ptr noundef %6)
  %493 = load double, ptr @_ZN11alglib_implL18vipmsolver_ygrowthE, align 8, !tbaa !37
  %494 = getelementptr inbounds i8, ptr %0, i64 3040
  %495 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %24, ptr noundef nonnull %494, ptr noundef %6)
  %496 = fmul double %493, %495
  %497 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %492, double noundef %496, ptr noundef %6)
  %498 = load double, ptr @_ZN11alglib_implL18vipmsolver_ygrowthE, align 8, !tbaa !37
  %499 = getelementptr inbounds i8, ptr %0, i64 2976
  %500 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %29, ptr noundef nonnull %499, ptr noundef %6)
  %501 = fmul double %498, %500
  %502 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %497, double noundef %501, ptr noundef %6)
  %503 = load double, ptr @_ZN11alglib_implL18vipmsolver_ygrowthE, align 8, !tbaa !37
  %504 = getelementptr inbounds i8, ptr %0, i64 3104
  %505 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %29, ptr noundef nonnull %504, ptr noundef %6)
  %506 = fmul double %503, %505
  %507 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %502, double noundef %506, ptr noundef %6)
  %508 = load i64, ptr %5, align 8, !tbaa !5
  %509 = icmp sgt i64 %508, 0
  br i1 %509, label %510, label %.thread578

510:                                              ; preds = %478
  %511 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %29, ptr noundef nonnull %65, ptr noundef %6)
  %512 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %511, double noundef %507)
  br i1 %512, label %513, label %517

513:                                              ; preds = %510
  store i64 -2, ptr %5, align 8, !tbaa !5
  %514 = load i8, ptr %31, align 8, !tbaa !33, !range !35, !noundef !36
  %515 = trunc nuw i8 %514 to i1
  br i1 %515, label %516, label %.thread578

516:                                              ; preds = %513
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.633, double noundef %507)
  br label %517

517:                                              ; preds = %516, %510
  %.pr = load i64, ptr %5, align 8, !tbaa !5
  %518 = icmp sgt i64 %.pr, 0
  br i1 %518, label %519, label %.thread578

519:                                              ; preds = %517
  %520 = load double, ptr %21, align 8, !tbaa !37
  %521 = load double, ptr @_ZN11alglib_implL28vipmsolver_primalinfeasible1E, align 8, !tbaa !37
  %522 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %520, double noundef %521)
  br i1 %522, label %523, label %.thread574

523:                                              ; preds = %519
  store i64 -2, ptr %5, align 8, !tbaa !5
  %524 = load i8, ptr %31, align 8, !tbaa !33, !range !35, !noundef !36
  %525 = trunc nuw i8 %524 to i1
  br i1 %525, label %526, label %.thread578

526:                                              ; preds = %523
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.634)
  br label %.thread574

.thread574:                                       ; preds = %526, %519
  %.pr576.pr = load i64, ptr %5, align 8, !tbaa !5
  %527 = icmp sgt i64 %.pr576.pr, 0
  br i1 %527, label %528, label %.thread578

528:                                              ; preds = %.thread574
  %529 = load double, ptr %22, align 8, !tbaa !37
  %530 = load double, ptr @_ZN11alglib_implL26vipmsolver_dualinfeasible1E, align 8, !tbaa !37
  %531 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %529, double noundef %530)
  br i1 %531, label %532, label %.thread578

532:                                              ; preds = %528
  store i64 -2, ptr %5, align 8, !tbaa !5
  %533 = load i8, ptr %31, align 8, !tbaa !33, !range !35, !noundef !36
  %534 = trunc nuw i8 %533 to i1
  br i1 %534, label %535, label %.thread578

535:                                              ; preds = %532
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.635)
  br label %.thread578

.thread578:                                       ; preds = %513, %478, %517, %523, %473, %.thread574, %528, %535, %532
  %536 = getelementptr inbounds i8, ptr %0, i64 2848
  %537 = getelementptr inbounds i8, ptr %0, i64 25880
  call void @_ZN11alglib_implL21vipmsolver_multiplyhxEPKNS_9vipmstateEPKNS_9ae_vectorEPS3_PNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %536, ptr noundef nonnull %537, ptr noundef %6)
  %538 = getelementptr inbounds i8, ptr %0, i64 256
  call void @_ZN11alglib_impl5raddvEldPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %24, double noundef 1.000000e+00, ptr noundef nonnull %538, ptr noundef nonnull %537, ptr noundef %6)
  call void @_ZN11alglib_implL24vipmsolver_multiplygeatxEPKNS_9vipmstateEdPKNS_9ae_vectorEldPS3_lPNS_8ae_stateE(ptr noundef nonnull %0, double noundef -1.000000e+00, ptr noundef nonnull %65, i64 noundef 0, double noundef 1.000000e+00, ptr noundef nonnull %537, i64 noundef 0, ptr noundef %6)
  %.not557.not612 = icmp sgt i64 %24, 0
  br i1 %.not557.not612, label %.lr.ph614, label %.preheader581

.lr.ph614:                                        ; preds = %.thread578
  %539 = getelementptr inbounds i8, ptr %0, i64 6168
  %540 = getelementptr inbounds i8, ptr %0, i64 2904
  %541 = getelementptr inbounds i8, ptr %2, i64 56
  %542 = getelementptr inbounds i8, ptr %3, i64 56
  %543 = getelementptr inbounds i8, ptr %0, i64 6232
  %544 = getelementptr inbounds i8, ptr %0, i64 3288
  %545 = getelementptr inbounds i8, ptr %0, i64 6296
  %546 = getelementptr inbounds i8, ptr %0, i64 3416
  %547 = getelementptr inbounds i8, ptr %0, i64 25936
  br label %552

.preheader581:                                    ; preds = %597, %.thread578
  %.not558.not615 = icmp sgt i64 %29, 0
  br i1 %.not558.not615, label %.lr.ph617, label %._crit_edge618

.lr.ph617:                                        ; preds = %.preheader581
  %548 = getelementptr inbounds i8, ptr %0, i64 3224
  %549 = getelementptr inbounds i8, ptr %4, i64 56
  %550 = add i64 %28, %26
  %xtraiter = and i64 %29, 1
  %551 = icmp eq i64 %550, 1
  br i1 %551, label %._crit_edge618.loopexit.unr-lcssa, label %.lr.ph617.new

.lr.ph617.new:                                    ; preds = %.lr.ph617
  %unroll_iter = and i64 %29, 9223372036854775806
  br label %599

552:                                              ; preds = %.lr.ph614, %597
  %.2539613 = phi i64 [ 0, %.lr.ph614 ], [ %598, %597 ]
  %553 = load ptr, ptr %539, align 8, !tbaa !38
  %554 = getelementptr inbounds i8, ptr %553, i64 %.2539613
  %555 = load i8, ptr %554, align 1, !tbaa !39, !range !35, !noundef !36
  %556 = trunc nuw i8 %555 to i1
  %557 = load ptr, ptr %540, align 8, !tbaa !38
  %558 = getelementptr inbounds double, ptr %557, i64 %.2539613
  %559 = load double, ptr %558, align 8, !tbaa !37
  %560 = load ptr, ptr %541, align 8, !tbaa !38
  %561 = getelementptr inbounds double, ptr %560, i64 %.2539613
  store double %559, ptr %561, align 8, !tbaa !37
  br i1 %556, label %562, label %569

562:                                              ; preds = %552
  %563 = load ptr, ptr %547, align 8, !tbaa !38
  %564 = getelementptr inbounds double, ptr %563, i64 %.2539613
  %565 = load double, ptr %564, align 8, !tbaa !37
  %566 = fneg double %565
  %567 = load ptr, ptr %542, align 8, !tbaa !38
  %568 = getelementptr inbounds double, ptr %567, i64 %.2539613
  store double %566, ptr %568, align 8, !tbaa !37
  br label %597

569:                                              ; preds = %552
  %570 = load ptr, ptr %542, align 8, !tbaa !38
  %571 = getelementptr inbounds double, ptr %570, i64 %.2539613
  store double 0.000000e+00, ptr %571, align 8, !tbaa !37
  %572 = load ptr, ptr %543, align 8, !tbaa !38
  %573 = getelementptr inbounds i8, ptr %572, i64 %.2539613
  %574 = load i8, ptr %573, align 1, !tbaa !39, !range !35, !noundef !36
  %575 = trunc nuw i8 %574 to i1
  br i1 %575, label %576, label %584

576:                                              ; preds = %569
  %577 = load ptr, ptr %542, align 8, !tbaa !38
  %578 = getelementptr inbounds double, ptr %577, i64 %.2539613
  %579 = load double, ptr %578, align 8, !tbaa !37
  %580 = load ptr, ptr %544, align 8, !tbaa !38
  %581 = getelementptr inbounds double, ptr %580, i64 %.2539613
  %582 = load double, ptr %581, align 8, !tbaa !37
  %583 = fsub double %579, %582
  store double %583, ptr %578, align 8, !tbaa !37
  br label %584

584:                                              ; preds = %576, %569
  %585 = load ptr, ptr %545, align 8, !tbaa !38
  %586 = getelementptr inbounds i8, ptr %585, i64 %.2539613
  %587 = load i8, ptr %586, align 1, !tbaa !39, !range !35, !noundef !36
  %588 = trunc nuw i8 %587 to i1
  br i1 %588, label %589, label %597

589:                                              ; preds = %584
  %590 = load ptr, ptr %542, align 8, !tbaa !38
  %591 = getelementptr inbounds double, ptr %590, i64 %.2539613
  %592 = load double, ptr %591, align 8, !tbaa !37
  %593 = load ptr, ptr %546, align 8, !tbaa !38
  %594 = getelementptr inbounds double, ptr %593, i64 %.2539613
  %595 = load double, ptr %594, align 8, !tbaa !37
  %596 = fadd double %592, %595
  store double %596, ptr %591, align 8, !tbaa !37
  br label %597

597:                                              ; preds = %562, %589, %584
  %598 = add nuw nsw i64 %.2539613, 1
  %exitcond643.not = icmp eq i64 %598, %24
  br i1 %exitcond643.not, label %.preheader581, label %552, !llvm.loop !50

599:                                              ; preds = %599, %.lr.ph617.new
  %.3540616 = phi i64 [ 0, %.lr.ph617.new ], [ %613, %599 ]
  %niter = phi i64 [ 0, %.lr.ph617.new ], [ %niter.next.1, %599 ]
  %600 = load ptr, ptr %548, align 8, !tbaa !38
  %601 = getelementptr inbounds double, ptr %600, i64 %.3540616
  %602 = load double, ptr %601, align 8, !tbaa !37
  %603 = fneg double %602
  %604 = load ptr, ptr %549, align 8, !tbaa !38
  %605 = getelementptr inbounds double, ptr %604, i64 %.3540616
  store double %603, ptr %605, align 8, !tbaa !37
  %606 = or disjoint i64 %.3540616, 1
  %607 = load ptr, ptr %548, align 8, !tbaa !38
  %608 = getelementptr inbounds double, ptr %607, i64 %606
  %609 = load double, ptr %608, align 8, !tbaa !37
  %610 = fneg double %609
  %611 = load ptr, ptr %549, align 8, !tbaa !38
  %612 = getelementptr inbounds double, ptr %611, i64 %606
  store double %610, ptr %612, align 8, !tbaa !37
  %613 = add nuw nsw i64 %.3540616, 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_edge618.loopexit.unr-lcssa, label %599, !llvm.loop !51

._crit_edge618.loopexit.unr-lcssa:                ; preds = %599, %.lr.ph617
  %.3540616.unr = phi i64 [ 0, %.lr.ph617 ], [ %613, %599 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge618, label %._crit_edge618.loopexit.epilog-lcssa

._crit_edge618.loopexit.epilog-lcssa:             ; preds = %._crit_edge618.loopexit.unr-lcssa
  %614 = load ptr, ptr %548, align 8, !tbaa !38
  %615 = getelementptr inbounds double, ptr %614, i64 %.3540616.unr
  %616 = load double, ptr %615, align 8, !tbaa !37
  %617 = fneg double %616
  %618 = load ptr, ptr %549, align 8, !tbaa !38
  %619 = getelementptr inbounds double, ptr %618, i64 %.3540616.unr
  store double %617, ptr %619, align 8, !tbaa !37
  br label %._crit_edge618

._crit_edge618:                                   ; preds = %._crit_edge618.loopexit.epilog-lcssa, %._crit_edge618.loopexit.unr-lcssa, %.preheader581
  %620 = getelementptr inbounds i8, ptr %0, i64 56
  %621 = getelementptr inbounds i8, ptr %0, i64 184
  %622 = getelementptr inbounds i8, ptr %0, i64 976
  %623 = getelementptr inbounds i8, ptr %0, i64 1040
  %624 = getelementptr inbounds i8, ptr %0, i64 848
  %625 = getelementptr inbounds i8, ptr %0, i64 912
  %626 = getelementptr inbounds i8, ptr %0, i64 1104
  %627 = getelementptr inbounds i8, ptr %0, i64 1168
  call void @_ZN11alglib_impl21unscaleunshiftpointbcEPKNS_9ae_vectorES2_S2_S2_S2_S2_S2_S2_PS0_lPNS_8ae_stateE(ptr noundef nonnull %620, ptr noundef nonnull %621, ptr noundef nonnull %622, ptr noundef nonnull %623, ptr noundef nonnull %624, ptr noundef nonnull %625, ptr noundef nonnull %626, ptr noundef nonnull %627, ptr noundef %2, i64 noundef %24, ptr noundef %6)
  br i1 %.not557.not612, label %.lr.ph622, label %.preheader

.lr.ph622:                                        ; preds = %._crit_edge618
  %628 = getelementptr inbounds i8, ptr %3, i64 56
  %629 = getelementptr inbounds i8, ptr %0, i64 248
  %630 = getelementptr inbounds i8, ptr %0, i64 112
  %xtraiter693 = and i64 %24, 1
  %631 = icmp eq i64 %24, 1
  br i1 %631, label %.preheader.loopexit.unr-lcssa, label %.lr.ph622.new

.lr.ph622.new:                                    ; preds = %.lr.ph622
  %unroll_iter695 = and i64 %24, 9223372036854775806
  br label %644

.preheader.loopexit.unr-lcssa:                    ; preds = %644, %.lr.ph622
  %.4620.unr = phi i64 [ 0, %.lr.ph622 ], [ %664, %644 ]
  %lcmp.mod694.not = icmp eq i64 %xtraiter693, 0
  br i1 %lcmp.mod694.not, label %.preheader, label %.preheader.loopexit.epilog-lcssa

.preheader.loopexit.epilog-lcssa:                 ; preds = %.preheader.loopexit.unr-lcssa
  %632 = load ptr, ptr %628, align 8, !tbaa !38
  %633 = getelementptr inbounds double, ptr %632, i64 %.4620.unr
  %634 = load double, ptr %633, align 8, !tbaa !37
  %635 = load double, ptr %629, align 8, !tbaa !52
  %636 = fmul double %634, %635
  %637 = load ptr, ptr %630, align 8, !tbaa !38
  %638 = getelementptr inbounds double, ptr %637, i64 %.4620.unr
  %639 = load double, ptr %638, align 8, !tbaa !37
  %640 = fdiv double %636, %639
  store double %640, ptr %633, align 8, !tbaa !37
  br label %.preheader

.preheader:                                       ; preds = %.preheader.loopexit.epilog-lcssa, %.preheader.loopexit.unr-lcssa, %._crit_edge618
  br i1 %.not558.not615, label %.lr.ph625, label %._crit_edge626

.lr.ph625:                                        ; preds = %.preheader
  %641 = getelementptr inbounds i8, ptr %4, i64 56
  %642 = getelementptr inbounds i8, ptr %0, i64 248
  %643 = getelementptr inbounds i8, ptr %0, i64 2552
  br label %665

644:                                              ; preds = %644, %.lr.ph622.new
  %.4620 = phi i64 [ 0, %.lr.ph622.new ], [ %664, %644 ]
  %niter696 = phi i64 [ 0, %.lr.ph622.new ], [ %niter696.next.1, %644 ]
  %645 = load ptr, ptr %628, align 8, !tbaa !38
  %646 = getelementptr inbounds double, ptr %645, i64 %.4620
  %647 = load double, ptr %646, align 8, !tbaa !37
  %648 = load double, ptr %629, align 8, !tbaa !52
  %649 = fmul double %647, %648
  %650 = load ptr, ptr %630, align 8, !tbaa !38
  %651 = getelementptr inbounds double, ptr %650, i64 %.4620
  %652 = load double, ptr %651, align 8, !tbaa !37
  %653 = fdiv double %649, %652
  store double %653, ptr %646, align 8, !tbaa !37
  %654 = or disjoint i64 %.4620, 1
  %655 = load ptr, ptr %628, align 8, !tbaa !38
  %656 = getelementptr inbounds double, ptr %655, i64 %654
  %657 = load double, ptr %656, align 8, !tbaa !37
  %658 = load double, ptr %629, align 8, !tbaa !52
  %659 = fmul double %657, %658
  %660 = load ptr, ptr %630, align 8, !tbaa !38
  %661 = getelementptr inbounds double, ptr %660, i64 %654
  %662 = load double, ptr %661, align 8, !tbaa !37
  %663 = fdiv double %659, %662
  store double %663, ptr %656, align 8, !tbaa !37
  %664 = add nuw nsw i64 %.4620, 2
  %niter696.next.1 = add i64 %niter696, 2
  %niter696.ncmp.1 = icmp eq i64 %niter696.next.1, %unroll_iter695
  br i1 %niter696.ncmp.1, label %.preheader.loopexit.unr-lcssa, label %644, !llvm.loop !53

665:                                              ; preds = %.lr.ph625, %665
  %.5624 = phi i64 [ 0, %.lr.ph625 ], [ %678, %665 ]
  %666 = load ptr, ptr %641, align 8, !tbaa !38
  %667 = getelementptr inbounds double, ptr %666, i64 %.5624
  %668 = load double, ptr %667, align 8, !tbaa !37
  %669 = load double, ptr %642, align 8, !tbaa !52
  %670 = fmul double %668, %669
  %671 = load ptr, ptr %643, align 8, !tbaa !38
  %672 = getelementptr inbounds double, ptr %671, i64 %.5624
  %673 = load double, ptr %672, align 8, !tbaa !37
  %674 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %673, double noundef 1.000000e+00, ptr noundef %6)
  %675 = fdiv double %670, %674
  %676 = load ptr, ptr %641, align 8, !tbaa !38
  %677 = getelementptr inbounds double, ptr %676, i64 %.5624
  store double %675, ptr %677, align 8, !tbaa !37
  %678 = add nuw nsw i64 %.5624, 1
  %exitcond646.not = icmp eq i64 %678, %29
  br i1 %exitcond646.not, label %._crit_edge626, label %665, !llvm.loop !54

._crit_edge626:                                   ; preds = %665, %.preheader
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #5
  ret void
}

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN11alglib_implL32vipmsolver_vipmcomputesteplengthEPKNS_9vipmstateEPKNS_8vipmvarsES5_dbPdS6_PNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, double noundef, i1 noundef zeroext, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 8}
!10 = !{!"_ZTSN11alglib_impl9vipmstateE", !11, i64 0, !11, i64 1, !6, i64 8, !6, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !11, i64 48, !13, i64 56, !13, i64 120, !13, i64 184, !12, i64 248, !13, i64 256, !16, i64 320, !17, i64 400, !13, i64 768, !6, i64 832, !11, i64 840, !13, i64 848, !13, i64 912, !13, i64 976, !13, i64 1040, !13, i64 1104, !13, i64 1168, !16, i64 1232, !16, i64 1312, !17, i64 1392, !17, i64 1760, !17, i64 2128, !13, i64 2496, !13, i64 2560, !13, i64 2624, !13, i64 2688, !13, i64 2752, !6, i64 2816, !6, i64 2824, !18, i64 2832, !18, i64 3488, !18, i64 4144, !18, i64 4800, !18, i64 5456, !13, i64 6112, !13, i64 6176, !13, i64 6240, !13, i64 6304, !13, i64 6368, !6, i64 6432, !6, i64 6440, !6, i64 6448, !6, i64 6456, !6, i64 6464, !6, i64 6472, !11, i64 6480, !11, i64 6481, !6, i64 6488, !11, i64 6496, !11, i64 6497, !13, i64 6504, !13, i64 6568, !13, i64 6632, !13, i64 6696, !13, i64 6760, !13, i64 6824, !13, i64 6888, !13, i64 6952, !13, i64 7016, !13, i64 7080, !13, i64 7144, !13, i64 7208, !13, i64 7272, !13, i64 7336, !13, i64 7400, !16, i64 7464, !13, i64 7544, !13, i64 7608, !13, i64 7672, !13, i64 7736, !13, i64 7800, !19, i64 7864, !30, i64 23944, !13, i64 24584, !13, i64 24648, !13, i64 24712, !13, i64 24776, !13, i64 24840, !13, i64 24904, !13, i64 24968, !13, i64 25032, !18, i64 25096, !13, i64 25752, !13, i64 25816, !13, i64 25880, !13, i64 25944, !13, i64 26008, !16, i64 26072, !13, i64 26152, !13, i64 26216, !17, i64 26280}
!11 = !{!"bool", !7, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!"_ZTSN11alglib_impl9ae_vectorE", !6, i64 0, !6, i64 8, !11, 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_impl9ae_matrixE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !11, i64 32, !14, i64 40, !7, i64 72}
!17 = !{!"_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}
!18 = !{!"_ZTSN11alglib_impl8vipmvarsE", !6, i64 0, !6, i64 8, !13, i64 16, !13, i64 80, !13, i64 144, !13, i64 208, !13, i64 272, !13, i64 336, !13, i64 400, !13, i64 464, !13, i64 528, !13, i64 592}
!19 = !{!"_ZTSN11alglib_impl23vipmreducedsparsesystemE", !17, i64 0, !13, i64 368, !13, i64 432, !13, i64 496, !13, i64 560, !6, i64 624, !20, i64 632, !13, i64 15696, !13, i64 15760, !13, i64 15824, !13, i64 15888, !13, i64 15952, !13, i64 16016}
!20 = !{!"_ZTSN11alglib_impl14spcholanalysisE", !6, i64 0, !6, i64 8, !6, i64 16, !11, i64 24, !6, i64 32, !12, i64 40, !12, i64 48, !12, i64 56, !12, i64 64, !13, i64 72, !11, i64 136, !11, i64 137, !11, i64 138, !11, i64 139, !11, 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, !11, i64 600, !13, i64 608, !13, i64 672, !13, i64 736, !13, i64 800, !13, i64 864, !13, i64 928, !11, i64 992, !11, i64 993, !21, i64 1000, !13, i64 1512, !13, i64 1576, !13, i64 1640, !13, i64 1704, !13, i64 1768, !13, i64 1832, !22, i64 1896, !22, i64 2040, !22, i64 2184, !22, i64 2328, !22, i64 2472, !22, i64 2616, !13, i64 2760, !13, i64 2824, !13, i64 2888, !13, i64 2952, !13, i64 3016, !24, i64 3080, !29, i64 7464, !13, i64 13816, !13, i64 13880, !13, i64 13944, !13, i64 14008, !13, i64 14072, !13, i64 14136, !17, i64 14200, !17, i64 14568, !13, i64 14936, !13, i64 15000}
!21 = !{!"_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}
!22 = !{!"_ZTSN11alglib_impl9ae_nxpoolE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !14, i64 32, !23, i64 64, !14, i64 112}
!23 = !{!"_ZTSN11alglib_impl7ae_lockE", !15, i64 0, !14, i64 8, !11, i64 40}
!24 = !{!"_ZTSN11alglib_impl9amdbufferE", !6, i64 0, !11, i64 8, !11, i64 9, !13, i64 16, !13, i64 80, !13, i64 144, !25, i64 208, !25, i64 568, !25, i64 928, !26, i64 1288, !27, i64 1496, !28, i64 1968, !13, i64 2120, !13, i64 2184, !13, i64 2248, !28, i64 2312, !28, i64 2464, !28, i64 2616, !28, i64 2768, !28, i64 2920, !28, i64 3072, !13, i64 3224, !6, i64 3288, !28, i64 3296, !28, i64 3448, !25, i64 3600, !28, i64 3960, !13, i64 4112, !13, i64 4176, !13, i64 4240, !16, i64 4304}
!25 = !{!"_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}
!26 = !{!"_ZTSN11alglib_impl11amdllmatrixE", !6, i64 0, !13, i64 8, !13, i64 72, !13, i64 136, !6, i64 200}
!27 = !{!"_ZTSN11alglib_impl12amdvertexsetE", !6, i64 0, !11, 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}
!28 = !{!"_ZTSN11alglib_impl5nisetE", !6, i64 0, !6, i64 8, !13, i64 16, !13, i64 80, !6, i64 144}
!29 = !{!"_ZTSN11alglib_impl18priorityamdbuffersE", !13, i64 0, !13, i64 64, !24, i64 128, !17, i64 4512, !17, i64 4880, !17, i64 5248, !17, i64 5616, !17, i64 5984}
!30 = !{!"_ZTSN11alglib_impl17vipmrighthandsideE", !13, i64 0, !13, i64 64, !13, i64 128, !13, i64 192, !13, i64 256, !13, i64 320, !13, i64 384, !13, i64 448, !13, i64 512, !13, i64 576}
!31 = !{!10, !6, i64 2816}
!32 = !{!10, !6, i64 2824}
!33 = !{!10, !11, i64 6480}
!34 = !{!10, !11, i64 6481}
!35 = !{i8 0, i8 2}
!36 = !{}
!37 = !{!12, !12, i64 0}
!38 = !{!7, !7, i64 0}
!39 = !{!11, !11, i64 0}
!40 = !{!10, !6, i64 6432}
!41 = !{!10, !6, i64 6440}
!42 = distinct !{!42, !43}
!43 = !{!"llvm.loop.mustprogress"}
!44 = !{!10, !6, i64 6456}
!45 = distinct !{!45, !43}
!46 = !{!10, !12, i64 40}
!47 = !{!10, !12, i64 24}
!48 = !{!10, !12, i64 32}
!49 = distinct !{!49, !43}
!50 = distinct !{!50, !43}
!51 = distinct !{!51, !43}
!52 = !{!10, !12, i64 248}
!53 = distinct !{!53, !43}
!54 = distinct !{!54, !43}


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