; LLVM IR from Dimandragon/non-parametric-dsp :: alglib-cpp/tests/test_c.ll (Z12testminlbfgsbPN11alglib_impl8ae_stateE)

; 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::ae_frame" = type { %"struct.alglib_impl::ae_dyn_block" }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%"struct.alglib_impl::ae_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon }
%union.anon = type { ptr }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = type { ptr }
%"struct.alglib_impl::minlbfgsstate" = type { i64, i64, double, double, double, i64, i8, double, %"struct.alglib_impl::ae_vector", double, i64, i64, i64, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, double, %"struct.alglib_impl::ae_vector", double, double, %"struct.alglib_impl::ae_vector", i64, double, %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", i64, %"struct.alglib_impl::precbuflbfgs", %"struct.alglib_impl::precbuflowrank", double, double, double, double, double, double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i8, %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_vector", i8, i8, i8, i64, %"struct.alglib_impl::ae_vector", double, i64, i64, i64, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"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_matrix", %"struct.alglib_impl::sparsematrix", double, %"struct.alglib_impl::rcommstate", i64, i64, i64, %"struct.alglib_impl::linminstate", i64, %"struct.alglib_impl::smoothnessmonitor", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::precbuflbfgs" = type { %"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::precbuflowrank" = type { i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::sparsematrix" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64, i64, i64, i64 }
%"struct.alglib_impl::rcommstate" = type { i32, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::linminstate" = type { i8, i8, i64, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double }
%"struct.alglib_impl::smoothnessmonitor" = type { i64, i64, i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64, double, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::rcommstate", i8, i8, i64, i64, double, double, i8, %"struct.alglib_impl::optguardreport", double, double, %"struct.alglib_impl::optguardnonc0report", %"struct.alglib_impl::optguardnonc0report", double, double, %"struct.alglib_impl::optguardnonc1test0report", %"struct.alglib_impl::optguardnonc1test0report", double, double, %"struct.alglib_impl::optguardnonc1test1report", %"struct.alglib_impl::optguardnonc1test1report", i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::rcommstate", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::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::optguardreport" = type { i8, i8, i64, double, i8, i8, i8, i64, double, i8, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix" }
%"struct.alglib_impl::optguardnonc0report" = type { i8, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64, i64, i64 }
%"struct.alglib_impl::optguardnonc1test0report" = type { i8, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64, i64, i64 }
%"struct.alglib_impl::optguardnonc1test1report" = type { i8, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64, i64, i64 }
%"struct.alglib_impl::minlbfgsreport" = type { i64, i64, i64 }
%"struct.alglib_impl::hqrndstate" = type { i64, i64, i64 }

@.str.2 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.528 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.536 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.537 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.538 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.539 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.540 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.541 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.542 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.543 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.544 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.545 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.546 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.547 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.548 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.549 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.550 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.551 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.552 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.553 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.554 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.555 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.556 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.557 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.558 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.559 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.560 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.561 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.562 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.563 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.564 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.565 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.566 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.567 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.568 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.569 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.570 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.571 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.572 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.573 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.574 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.575 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.576 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.577 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.578 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.579 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.580 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.581 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.582 = external hidden unnamed_addr constant [43 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

declare i32 @printf(ptr noundef, ...) #1

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

; 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_impl7ae_fabsEdPNS_8ae_stateE(double noundef, ptr noundef) #1

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

declare noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef) #1

declare noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef, i64 noundef) #1

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

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef) #1

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) #1

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z12testminlbfgsbPN11alglib_impl8ae_stateE(i1 noundef zeroext %0, ptr noundef %1) #4 {
  %3 = alloca i8, align 1
  %4 = alloca ptr, align 8
  %5 = alloca %"struct.alglib_impl::ae_frame", align 8
  %6 = alloca i8, align 1
  %7 = alloca i8, align 1
  %8 = alloca i8, align 1
  %9 = alloca i8, align 1
  %10 = alloca i8, align 1
  %11 = alloca i8, align 1
  %12 = alloca i8, align 1
  %13 = alloca i8, align 1
  %14 = alloca i8, align 1
  %15 = alloca i8, align 1
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca %"struct.alglib_impl::ae_vector", align 8
  %19 = alloca %"struct.alglib_impl::ae_vector", align 8
  %20 = alloca %"struct.alglib_impl::ae_vector", align 8
  %21 = alloca %"struct.alglib_impl::ae_vector", align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %29 = alloca %"struct.alglib_impl::ae_vector", align 8
  %30 = alloca i64, align 8
  %31 = alloca %"struct.alglib_impl::minlbfgsstate", align 8
  %32 = alloca %"struct.alglib_impl::minlbfgsreport", align 8
  %33 = alloca double, align 8
  %34 = alloca i64, align 8
  %35 = alloca i8, align 1
  %36 = alloca i8, align 1
  %37 = alloca %"struct.alglib_impl::hqrndstate", align 8
  %38 = alloca i8, align 1
  %39 = zext i1 %0 to i8
  store i8 %39, ptr %3, align 1, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %5) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %6) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %19) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.start.p0(i64 80, ptr %28) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.start.p0(i64 10024, ptr %31) #5
  call void @llvm.lifetime.start.p0(i64 24, ptr %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #5
  call void @llvm.lifetime.start.p0(i64 24, ptr %37) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #5
  %40 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %40, ptr noundef %5)
  call void @llvm.memset.p0.i64(ptr align 8 %18, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %19, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %21, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %28, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %29, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %31, i8 0, i64 10024, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %32, i8 0, i64 24, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %37, i8 0, i64 24, i1 false)
  %41 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %18, i64 noundef 0, i64 noundef 3, ptr noundef %41, i1 noundef zeroext true)
  %42 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %19, i64 noundef 0, i64 noundef 3, ptr noundef %42, i1 noundef zeroext true)
  %43 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %20, i64 noundef 0, i64 noundef 3, ptr noundef %43, i1 noundef zeroext true)
  %44 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %21, i64 noundef 0, i64 noundef 3, ptr noundef %44, i1 noundef zeroext true)
  %45 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %28, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %45, i1 noundef zeroext true)
  %46 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %29, i64 noundef 0, i64 noundef 3, ptr noundef %46, i1 noundef zeroext true)
  %47 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl19_minlbfgsstate_initEPvPNS_8ae_stateEb(ptr noundef %31, ptr noundef %47, i1 noundef zeroext true)
  %48 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20_minlbfgsreport_initEPvPNS_8ae_stateEb(ptr noundef %32, ptr noundef %48, i1 noundef zeroext true)
  %49 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl16_hqrndstate_initEPvPNS_8ae_stateEb(ptr noundef %37, ptr noundef %49, i1 noundef zeroext true)
  %50 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14hqrndrandomizeEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %37, ptr noundef %50)
  store i8 0, ptr %6, align 1, !tbaa !5
  store i8 0, ptr %7, align 1, !tbaa !5
  store i8 0, ptr %14, align 1, !tbaa !5
  store i8 0, ptr %8, align 1, !tbaa !5
  store i8 0, ptr %13, align 1, !tbaa !5
  store i8 0, ptr %9, align 1, !tbaa !5
  store i8 0, ptr %10, align 1, !tbaa !5
  store i8 0, ptr %11, align 1, !tbaa !5
  store i8 0, ptr %12, align 1, !tbaa !5
  %51 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL36testminlbfgsunit_testpreconditioningPbPN11alglib_impl8ae_stateE(ptr noundef %14, ptr noundef %51)
  %52 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL26testminlbfgsunit_testotherPbPN11alglib_impl8ae_stateE(ptr noundef %12, ptr noundef %52)
  store double 0x3EB0C6F7A0B5ED8D, ptr %33, align 8, !tbaa !11
  store i64 0, ptr %34, align 8, !tbaa !13
  br label %53

53:                                               ; preds = %227, %2
  %54 = load i64, ptr %34, align 8, !tbaa !13
  %55 = icmp sle i64 %54, 1
  br i1 %55, label %56, label %230

56:                                               ; preds = %53
  %57 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %18, i64 noundef 3, ptr noundef %57)
  store i64 3, ptr %16, align 8, !tbaa !13
  store i64 2, ptr %17, align 8, !tbaa !13
  %58 = load ptr, ptr %4, align 8, !tbaa !9
  %59 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %58)
  %60 = call double @llvm.fmuladd.f64(double 1.000000e+02, double %59, double -5.000000e+01)
  %61 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %62 = load ptr, ptr %61, align 8, !tbaa !15
  %63 = getelementptr inbounds double, ptr %62, i64 0
  store double %60, ptr %63, align 8, !tbaa !11
  %64 = load ptr, ptr %4, align 8, !tbaa !9
  %65 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %64)
  %66 = call double @llvm.fmuladd.f64(double 1.000000e+02, double %65, double -5.000000e+01)
  %67 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %68 = load ptr, ptr %67, align 8, !tbaa !15
  %69 = getelementptr inbounds double, ptr %68, i64 1
  store double %66, ptr %69, align 8, !tbaa !11
  %70 = load ptr, ptr %4, align 8, !tbaa !9
  %71 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %70)
  %72 = call double @llvm.fmuladd.f64(double 1.000000e+02, double %71, double -5.000000e+01)
  %73 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %74 = load ptr, ptr %73, align 8, !tbaa !15
  %75 = getelementptr inbounds double, ptr %74, i64 2
  store double %72, ptr %75, align 8, !tbaa !11
  %76 = load i64, ptr %34, align 8, !tbaa !13
  %77 = icmp eq i64 %76, 0
  br i1 %77, label %78, label %82

78:                                               ; preds = %56
  %79 = load i64, ptr %16, align 8, !tbaa !13
  %80 = load i64, ptr %17, align 8, !tbaa !13
  %81 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14minlbfgscreateEllPKNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %79, i64 noundef %80, ptr noundef %18, ptr noundef %31, ptr noundef %81)
  br label %82

82:                                               ; preds = %78, %56
  %83 = load i64, ptr %34, align 8, !tbaa !13
  %84 = icmp eq i64 %83, 1
  br i1 %84, label %85, label %90

85:                                               ; preds = %82
  %86 = load i64, ptr %16, align 8, !tbaa !13
  %87 = load i64, ptr %17, align 8, !tbaa !13
  %88 = load double, ptr %33, align 8, !tbaa !11
  %89 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgscreatefEllPKNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %86, i64 noundef %87, ptr noundef %18, double noundef %88, ptr noundef %31, ptr noundef %89)
  br label %90

90:                                               ; preds = %85, %82
  %91 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef %31, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %91)
  br label %92

92:                                               ; preds = %189, %90
  %93 = load ptr, ptr %4, align 8, !tbaa !9
  %94 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %31, ptr noundef %93)
  br i1 %94, label %95, label %190

95:                                               ; preds = %92
  %96 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 50
  %97 = load i8, ptr %96, align 8, !tbaa !16, !range !32, !noundef !33
  %98 = trunc i8 %97 to i1
  br i1 %98, label %103, label %99

99:                                               ; preds = %95
  %100 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 51
  %101 = load i8, ptr %100, align 1, !tbaa !34, !range !32, !noundef !33
  %102 = trunc i8 %101 to i1
  br i1 %102, label %103, label %135

103:                                              ; preds = %99, %95
  %104 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 47
  %105 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %104, i32 0, i32 4
  %106 = load ptr, ptr %105, align 8, !tbaa !15
  %107 = getelementptr inbounds double, ptr %106, i64 0
  %108 = load double, ptr %107, align 8, !tbaa !11
  %109 = fsub double %108, 2.000000e+00
  %110 = load ptr, ptr %4, align 8, !tbaa !9
  %111 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %109, ptr noundef %110)
  %112 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 47
  %113 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %112, i32 0, i32 4
  %114 = load ptr, ptr %113, align 8, !tbaa !15
  %115 = getelementptr inbounds double, ptr %114, i64 1
  %116 = load double, ptr %115, align 8, !tbaa !11
  %117 = load ptr, ptr %4, align 8, !tbaa !9
  %118 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %116, ptr noundef %117)
  %119 = fadd double %111, %118
  %120 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 47
  %121 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %122 = load ptr, ptr %121, align 8, !tbaa !15
  %123 = getelementptr inbounds double, ptr %122, i64 2
  %124 = load double, ptr %123, align 8, !tbaa !11
  %125 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 47
  %126 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %125, i32 0, i32 4
  %127 = load ptr, ptr %126, align 8, !tbaa !15
  %128 = getelementptr inbounds double, ptr %127, i64 0
  %129 = load double, ptr %128, align 8, !tbaa !11
  %130 = fsub double %124, %129
  %131 = load ptr, ptr %4, align 8, !tbaa !9
  %132 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %130, ptr noundef %131)
  %133 = fadd double %119, %132
  %134 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 48
  store double %133, ptr %134, align 8, !tbaa !35
  br label %135

135:                                              ; preds = %103, %99
  %136 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 51
  %137 = load i8, ptr %136, align 1, !tbaa !34, !range !32, !noundef !33
  %138 = trunc i8 %137 to i1
  br i1 %138, label %139, label %189

139:                                              ; preds = %135
  %140 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 47
  %141 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %140, i32 0, i32 4
  %142 = load ptr, ptr %141, align 8, !tbaa !15
  %143 = getelementptr inbounds double, ptr %142, i64 0
  %144 = load double, ptr %143, align 8, !tbaa !11
  %145 = fsub double %144, 2.000000e+00
  %146 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 47
  %147 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %146, i32 0, i32 4
  %148 = load ptr, ptr %147, align 8, !tbaa !15
  %149 = getelementptr inbounds double, ptr %148, i64 0
  %150 = load double, ptr %149, align 8, !tbaa !11
  %151 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 47
  %152 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %151, i32 0, i32 4
  %153 = load ptr, ptr %152, align 8, !tbaa !15
  %154 = getelementptr inbounds double, ptr %153, i64 2
  %155 = load double, ptr %154, align 8, !tbaa !11
  %156 = fsub double %150, %155
  %157 = fmul double 2.000000e+00, %156
  %158 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %145, double %157)
  %159 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 49
  %160 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %159, i32 0, i32 4
  %161 = load ptr, ptr %160, align 8, !tbaa !15
  %162 = getelementptr inbounds double, ptr %161, i64 0
  store double %158, ptr %162, align 8, !tbaa !11
  %163 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 47
  %164 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %163, i32 0, i32 4
  %165 = load ptr, ptr %164, align 8, !tbaa !15
  %166 = getelementptr inbounds double, ptr %165, i64 1
  %167 = load double, ptr %166, align 8, !tbaa !11
  %168 = fmul double 2.000000e+00, %167
  %169 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 49
  %170 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %169, i32 0, i32 4
  %171 = load ptr, ptr %170, align 8, !tbaa !15
  %172 = getelementptr inbounds double, ptr %171, i64 1
  store double %168, ptr %172, align 8, !tbaa !11
  %173 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 47
  %174 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %173, i32 0, i32 4
  %175 = load ptr, ptr %174, align 8, !tbaa !15
  %176 = getelementptr inbounds double, ptr %175, i64 2
  %177 = load double, ptr %176, align 8, !tbaa !11
  %178 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 47
  %179 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %178, i32 0, i32 4
  %180 = load ptr, ptr %179, align 8, !tbaa !15
  %181 = getelementptr inbounds double, ptr %180, i64 0
  %182 = load double, ptr %181, align 8, !tbaa !11
  %183 = fsub double %177, %182
  %184 = fmul double 2.000000e+00, %183
  %185 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 49
  %186 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %185, i32 0, i32 4
  %187 = load ptr, ptr %186, align 8, !tbaa !15
  %188 = getelementptr inbounds double, ptr %187, i64 2
  store double %184, ptr %188, align 8, !tbaa !11
  br label %189

189:                                              ; preds = %139, %135
  br label %92, !llvm.loop !36

190:                                              ; preds = %92
  %191 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgsresultsEPKNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef %31, ptr noundef %18, ptr noundef %32, ptr noundef %191)
  %192 = load i8, ptr %7, align 1, !tbaa !5, !range !32, !noundef !33
  %193 = trunc i8 %192 to i1
  br i1 %193, label %224, label %194

194:                                              ; preds = %190
  %195 = getelementptr inbounds %"struct.alglib_impl::minlbfgsreport", ptr %32, i32 0, i32 2
  %196 = load i64, ptr %195, align 8, !tbaa !38
  %197 = icmp sle i64 %196, 0
  br i1 %197, label %224, label %198

198:                                              ; preds = %194
  %199 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %200 = load ptr, ptr %199, align 8, !tbaa !15
  %201 = getelementptr inbounds double, ptr %200, i64 0
  %202 = load double, ptr %201, align 8, !tbaa !11
  %203 = fsub double %202, 2.000000e+00
  %204 = load ptr, ptr %4, align 8, !tbaa !9
  %205 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %203, ptr noundef %204)
  %206 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %205, double noundef 1.000000e-03)
  br i1 %206, label %224, label %207

207:                                              ; preds = %198
  %208 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %209 = load ptr, ptr %208, align 8, !tbaa !15
  %210 = getelementptr inbounds double, ptr %209, i64 1
  %211 = load double, ptr %210, align 8, !tbaa !11
  %212 = load ptr, ptr %4, align 8, !tbaa !9
  %213 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %211, ptr noundef %212)
  %214 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %213, double noundef 1.000000e-03)
  br i1 %214, label %224, label %215

215:                                              ; preds = %207
  %216 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %217 = load ptr, ptr %216, align 8, !tbaa !15
  %218 = getelementptr inbounds double, ptr %217, i64 2
  %219 = load double, ptr %218, align 8, !tbaa !11
  %220 = fsub double %219, 2.000000e+00
  %221 = load ptr, ptr %4, align 8, !tbaa !9
  %222 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %220, ptr noundef %221)
  %223 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %222, double noundef 1.000000e-03)
  br label %224

224:                                              ; preds = %215, %207, %198, %194, %190
  %225 = phi i1 [ true, %207 ], [ true, %198 ], [ true, %194 ], [ true, %190 ], [ %223, %215 ]
  %226 = zext i1 %225 to i8
  store i8 %226, ptr %7, align 1, !tbaa !5
  br label %227

227:                                              ; preds = %224
  %228 = load i64, ptr %34, align 8, !tbaa !13
  %229 = add nsw i64 %228, 1
  store i64 %229, ptr %34, align 8, !tbaa !13
  br label %53, !llvm.loop !40

230:                                              ; preds = %53
  store double 0x3EB0C6F7A0B5ED8D, ptr %33, align 8, !tbaa !11
  store i64 0, ptr %34, align 8, !tbaa !13
  br label %231

231:                                              ; preds = %362, %230
  %232 = load i64, ptr %34, align 8, !tbaa !13
  %233 = icmp sle i64 %232, 1
  br i1 %233, label %234, label %365

234:                                              ; preds = %231
  %235 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %18, i64 noundef 1, ptr noundef %235)
  store i64 1, ptr %16, align 8, !tbaa !13
  store i64 1, ptr %17, align 8, !tbaa !13
  store double -1.000000e+02, ptr %25, align 8, !tbaa !11
  br label %236

236:                                              ; preds = %356, %234
  %237 = load double, ptr %25, align 8, !tbaa !11
  %238 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %237, double noundef 1.000000e-01)
  br i1 %238, label %239, label %361

239:                                              ; preds = %236
  %240 = load double, ptr %25, align 8, !tbaa !11
  %241 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %242 = load ptr, ptr %241, align 8, !tbaa !15
  %243 = getelementptr inbounds double, ptr %242, i64 0
  store double %240, ptr %243, align 8, !tbaa !11
  %244 = load i64, ptr %34, align 8, !tbaa !13
  %245 = icmp eq i64 %244, 0
  br i1 %245, label %246, label %250

246:                                              ; preds = %239
  %247 = load i64, ptr %16, align 8, !tbaa !13
  %248 = load i64, ptr %17, align 8, !tbaa !13
  %249 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14minlbfgscreateEllPKNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %247, i64 noundef %248, ptr noundef %18, ptr noundef %31, ptr noundef %249)
  br label %250

250:                                              ; preds = %246, %239
  %251 = load i64, ptr %34, align 8, !tbaa !13
  %252 = icmp eq i64 %251, 1
  br i1 %252, label %253, label %258

253:                                              ; preds = %250
  %254 = load i64, ptr %16, align 8, !tbaa !13
  %255 = load i64, ptr %17, align 8, !tbaa !13
  %256 = load double, ptr %33, align 8, !tbaa !11
  %257 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgscreatefEllPKNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %254, i64 noundef %255, ptr noundef %18, double noundef %256, ptr noundef %31, ptr noundef %257)
  br label %258

258:                                              ; preds = %253, %250
  %259 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef %31, double noundef 1.000000e-09, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %259)
  br label %260

260:                                              ; preds = %339, %258
  %261 = load ptr, ptr %4, align 8, !tbaa !9
  %262 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %31, ptr noundef %261)
  br i1 %262, label %263, label %340

263:                                              ; preds = %260
  %264 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 50
  %265 = load i8, ptr %264, align 8, !tbaa !16, !range !32, !noundef !33
  %266 = trunc i8 %265 to i1
  br i1 %266, label %271, label %267

267:                                              ; preds = %263
  %268 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 51
  %269 = load i8, ptr %268, align 1, !tbaa !34, !range !32, !noundef !33
  %270 = trunc i8 %269 to i1
  br i1 %270, label %271, label %289

271:                                              ; preds = %267, %263
  %272 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 47
  %273 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %272, i32 0, i32 4
  %274 = load ptr, ptr %273, align 8, !tbaa !15
  %275 = getelementptr inbounds double, ptr %274, i64 0
  %276 = load double, ptr %275, align 8, !tbaa !11
  %277 = load ptr, ptr %4, align 8, !tbaa !9
  %278 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %276, ptr noundef %277)
  %279 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 47
  %280 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %279, i32 0, i32 4
  %281 = load ptr, ptr %280, align 8, !tbaa !15
  %282 = getelementptr inbounds double, ptr %281, i64 0
  %283 = load double, ptr %282, align 8, !tbaa !11
  %284 = load ptr, ptr %4, align 8, !tbaa !9
  %285 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %283, ptr noundef %284)
  %286 = fadd double 1.000000e+00, %285
  %287 = fdiv double %278, %286
  %288 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 48
  store double %287, ptr %288, align 8, !tbaa !35
  br label %289

289:                                              ; preds = %271, %267
  %290 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 51
  %291 = load i8, ptr %290, align 1, !tbaa !34, !range !32, !noundef !33
  %292 = trunc i8 %291 to i1
  br i1 %292, label %293, label %339

293:                                              ; preds = %289
  %294 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 47
  %295 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %294, i32 0, i32 4
  %296 = load ptr, ptr %295, align 8, !tbaa !15
  %297 = getelementptr inbounds double, ptr %296, i64 0
  %298 = load double, ptr %297, align 8, !tbaa !11
  %299 = fmul double 2.000000e+00, %298
  %300 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 47
  %301 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %300, i32 0, i32 4
  %302 = load ptr, ptr %301, align 8, !tbaa !15
  %303 = getelementptr inbounds double, ptr %302, i64 0
  %304 = load double, ptr %303, align 8, !tbaa !11
  %305 = load ptr, ptr %4, align 8, !tbaa !9
  %306 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %304, ptr noundef %305)
  %307 = fadd double 1.000000e+00, %306
  %308 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 47
  %309 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %308, i32 0, i32 4
  %310 = load ptr, ptr %309, align 8, !tbaa !15
  %311 = getelementptr inbounds double, ptr %310, i64 0
  %312 = load double, ptr %311, align 8, !tbaa !11
  %313 = load ptr, ptr %4, align 8, !tbaa !9
  %314 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %312, ptr noundef %313)
  %315 = fmul double %314, 2.000000e+00
  %316 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 47
  %317 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %316, i32 0, i32 4
  %318 = load ptr, ptr %317, align 8, !tbaa !15
  %319 = getelementptr inbounds double, ptr %318, i64 0
  %320 = load double, ptr %319, align 8, !tbaa !11
  %321 = fmul double %315, %320
  %322 = fneg double %321
  %323 = call double @llvm.fmuladd.f64(double %299, double %307, double %322)
  %324 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 47
  %325 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %324, i32 0, i32 4
  %326 = load ptr, ptr %325, align 8, !tbaa !15
  %327 = getelementptr inbounds double, ptr %326, i64 0
  %328 = load double, ptr %327, align 8, !tbaa !11
  %329 = load ptr, ptr %4, align 8, !tbaa !9
  %330 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %328, ptr noundef %329)
  %331 = fadd double 1.000000e+00, %330
  %332 = load ptr, ptr %4, align 8, !tbaa !9
  %333 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %331, ptr noundef %332)
  %334 = fdiv double %323, %333
  %335 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 49
  %336 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %335, i32 0, i32 4
  %337 = load ptr, ptr %336, align 8, !tbaa !15
  %338 = getelementptr inbounds double, ptr %337, i64 0
  store double %334, ptr %338, align 8, !tbaa !11
  br label %339

339:                                              ; preds = %293, %289
  br label %260, !llvm.loop !41

340:                                              ; preds = %260
  %341 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgsresultsEPKNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef %31, ptr noundef %18, ptr noundef %32, ptr noundef %341)
  %342 = load i8, ptr %8, align 1, !tbaa !5, !range !32, !noundef !33
  %343 = trunc i8 %342 to i1
  br i1 %343, label %356, label %344

344:                                              ; preds = %340
  %345 = getelementptr inbounds %"struct.alglib_impl::minlbfgsreport", ptr %32, i32 0, i32 2
  %346 = load i64, ptr %345, align 8, !tbaa !38
  %347 = icmp sle i64 %346, 0
  br i1 %347, label %356, label %348

348:                                              ; preds = %344
  %349 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %350 = load ptr, ptr %349, align 8, !tbaa !15
  %351 = getelementptr inbounds double, ptr %350, i64 0
  %352 = load double, ptr %351, align 8, !tbaa !11
  %353 = load ptr, ptr %4, align 8, !tbaa !9
  %354 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %352, ptr noundef %353)
  %355 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %354, double noundef 1.000000e-03)
  br label %356

356:                                              ; preds = %348, %344, %340
  %357 = phi i1 [ true, %344 ], [ true, %340 ], [ %355, %348 ]
  %358 = zext i1 %357 to i8
  store i8 %358, ptr %8, align 1, !tbaa !5
  %359 = load double, ptr %25, align 8, !tbaa !11
  %360 = fadd double %359, 1.000000e-01
  store double %360, ptr %25, align 8, !tbaa !11
  br label %236, !llvm.loop !42

361:                                              ; preds = %236
  br label %362

362:                                              ; preds = %361
  %363 = load i64, ptr %34, align 8, !tbaa !13
  %364 = add nsw i64 %363, 1
  store i64 %364, ptr %34, align 8, !tbaa !13
  br label %231, !llvm.loop !43

365:                                              ; preds = %231
  store double 0x3EB0C6F7A0B5ED8D, ptr %33, align 8, !tbaa !11
  store i64 0, ptr %34, align 8, !tbaa !13
  br label %366

366:                                              ; preds = %549, %365
  %367 = load i64, ptr %34, align 8, !tbaa !13
  %368 = icmp sle i64 %367, 1
  br i1 %368, label %369, label %552

369:                                              ; preds = %366
  %370 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %18, i64 noundef 3, ptr noundef %370)
  store i64 3, ptr %16, align 8, !tbaa !13
  store i64 2, ptr %17, align 8, !tbaa !13
  %371 = load ptr, ptr %4, align 8, !tbaa !9
  %372 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %371)
  %373 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %372, double 1.000000e+01)
  %374 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %375 = load ptr, ptr %374, align 8, !tbaa !15
  %376 = getelementptr inbounds double, ptr %375, i64 0
  store double %373, ptr %376, align 8, !tbaa !11
  %377 = load ptr, ptr %4, align 8, !tbaa !9
  %378 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %377)
  %379 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %378, double 1.000000e+01)
  %380 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %381 = load ptr, ptr %380, align 8, !tbaa !15
  %382 = getelementptr inbounds double, ptr %381, i64 1
  store double %379, ptr %382, align 8, !tbaa !11
  %383 = load ptr, ptr %4, align 8, !tbaa !9
  %384 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %383)
  %385 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %384, double 1.000000e+01)
  %386 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %387 = load ptr, ptr %386, align 8, !tbaa !15
  %388 = getelementptr inbounds double, ptr %387, i64 2
  store double %385, ptr %388, align 8, !tbaa !11
  %389 = load i64, ptr %34, align 8, !tbaa !13
  %390 = icmp eq i64 %389, 0
  br i1 %390, label %391, label %395

391:                                              ; preds = %369
  %392 = load i64, ptr %16, align 8, !tbaa !13
  %393 = load i64, ptr %17, align 8, !tbaa !13
  %394 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14minlbfgscreateEllPKNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %392, i64 noundef %393, ptr noundef %18, ptr noundef %31, ptr noundef %394)
  br label %395

395:                                              ; preds = %391, %369
  %396 = load i64, ptr %34, align 8, !tbaa !13
  %397 = icmp eq i64 %396, 1
  br i1 %397, label %398, label %403

398:                                              ; preds = %395
  %399 = load i64, ptr %16, align 8, !tbaa !13
  %400 = load i64, ptr %17, align 8, !tbaa !13
  %401 = load double, ptr %33, align 8, !tbaa !11
  %402 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgscreatefEllPKNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %399, i64 noundef %400, ptr noundef %18, double noundef %401, ptr noundef %31, ptr noundef %402)
  br label %403

403:                                              ; preds = %398, %395
  %404 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl17minlbfgssetstpmaxEPNS_13minlbfgsstateEdPNS_8ae_stateE(ptr noundef %31, double noundef 1.000000e-01, ptr noundef %404)
  %405 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef %31, double noundef 0x3E7AD7F29ABCAF48, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %405)
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %406

406:                                              ; preds = %415, %403
  %407 = load i64, ptr %22, align 8, !tbaa !13
  %408 = icmp sle i64 %407, 10
  br i1 %408, label %409, label %418

409:                                              ; preds = %406
  %410 = load ptr, ptr %4, align 8, !tbaa !9
  %411 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %31, ptr noundef %410)
  br i1 %411, label %413, label %412

412:                                              ; preds = %409
  br label %418

413:                                              ; preds = %409
  %414 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL26testminlbfgsunit_testfunc2PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef %31, ptr noundef %414)
  br label %415

415:                                              ; preds = %413
  %416 = load i64, ptr %22, align 8, !tbaa !13
  %417 = add nsw i64 %416, 1
  store i64 %417, ptr %22, align 8, !tbaa !13
  br label %406, !llvm.loop !44

418:                                              ; preds = %412, %406
  %419 = load ptr, ptr %4, align 8, !tbaa !9
  %420 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %419)
  %421 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %420, double 1.000000e+01)
  %422 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %423 = load ptr, ptr %422, align 8, !tbaa !15
  %424 = getelementptr inbounds double, ptr %423, i64 0
  store double %421, ptr %424, align 8, !tbaa !11
  %425 = load ptr, ptr %4, align 8, !tbaa !9
  %426 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %425)
  %427 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %426, double 1.000000e+01)
  %428 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %429 = load ptr, ptr %428, align 8, !tbaa !15
  %430 = getelementptr inbounds double, ptr %429, i64 1
  store double %427, ptr %430, align 8, !tbaa !11
  %431 = load ptr, ptr %4, align 8, !tbaa !9
  %432 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %431)
  %433 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %432, double 1.000000e+01)
  %434 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %435 = load ptr, ptr %434, align 8, !tbaa !15
  %436 = getelementptr inbounds double, ptr %435, i64 2
  store double %433, ptr %436, align 8, !tbaa !11
  %437 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl19minlbfgsrestartfromEPNS_13minlbfgsstateEPKNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %31, ptr noundef %18, ptr noundef %437)
  br label %438

438:                                              ; preds = %441, %418
  %439 = load ptr, ptr %4, align 8, !tbaa !9
  %440 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %31, ptr noundef %439)
  br i1 %440, label %441, label %443

441:                                              ; preds = %438
  %442 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL26testminlbfgsunit_testfunc2PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef %31, ptr noundef %442)
  br label %438, !llvm.loop !45

443:                                              ; preds = %438
  %444 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgsresultsEPKNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef %31, ptr noundef %18, ptr noundef %32, ptr noundef %444)
  %445 = load i8, ptr %13, align 1, !tbaa !5, !range !32, !noundef !33
  %446 = trunc i8 %445 to i1
  br i1 %446, label %481, label %447

447:                                              ; preds = %443
  %448 = getelementptr inbounds %"struct.alglib_impl::minlbfgsreport", ptr %32, i32 0, i32 2
  %449 = load i64, ptr %448, align 8, !tbaa !38
  %450 = icmp sle i64 %449, 0
  br i1 %450, label %481, label %451

451:                                              ; preds = %447
  %452 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %453 = load ptr, ptr %452, align 8, !tbaa !15
  %454 = getelementptr inbounds double, ptr %453, i64 0
  %455 = load double, ptr %454, align 8, !tbaa !11
  %456 = load ptr, ptr %4, align 8, !tbaa !9
  %457 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 2.000000e+00, ptr noundef %456)
  %458 = fsub double %455, %457
  %459 = load ptr, ptr %4, align 8, !tbaa !9
  %460 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %458, ptr noundef %459)
  %461 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %460, double noundef 1.000000e-02)
  br i1 %461, label %481, label %462

462:                                              ; preds = %451
  %463 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %464 = load ptr, ptr %463, align 8, !tbaa !15
  %465 = getelementptr inbounds double, ptr %464, i64 1
  %466 = load double, ptr %465, align 8, !tbaa !11
  %467 = load ptr, ptr %4, align 8, !tbaa !9
  %468 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %466, ptr noundef %467)
  %469 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %468, double noundef 1.000000e-02)
  br i1 %469, label %481, label %470

470:                                              ; preds = %462
  %471 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %472 = load ptr, ptr %471, align 8, !tbaa !15
  %473 = getelementptr inbounds double, ptr %472, i64 2
  %474 = load double, ptr %473, align 8, !tbaa !11
  %475 = load ptr, ptr %4, align 8, !tbaa !9
  %476 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 2.000000e+00, ptr noundef %475)
  %477 = fsub double %474, %476
  %478 = load ptr, ptr %4, align 8, !tbaa !9
  %479 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %477, ptr noundef %478)
  %480 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %479, double noundef 1.000000e-02)
  br label %481

481:                                              ; preds = %470, %462, %451, %447, %443
  %482 = phi i1 [ true, %462 ], [ true, %451 ], [ true, %447 ], [ true, %443 ], [ %480, %470 ]
  %483 = zext i1 %482 to i8
  store i8 %483, ptr %13, align 1, !tbaa !5
  %484 = load ptr, ptr %4, align 8, !tbaa !9
  %485 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %484)
  %486 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %485, double 1.000000e+01)
  %487 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %488 = load ptr, ptr %487, align 8, !tbaa !15
  %489 = getelementptr inbounds double, ptr %488, i64 0
  store double %486, ptr %489, align 8, !tbaa !11
  %490 = load ptr, ptr %4, align 8, !tbaa !9
  %491 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %490)
  %492 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %491, double 1.000000e+01)
  %493 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %494 = load ptr, ptr %493, align 8, !tbaa !15
  %495 = getelementptr inbounds double, ptr %494, i64 1
  store double %492, ptr %495, align 8, !tbaa !11
  %496 = load ptr, ptr %4, align 8, !tbaa !9
  %497 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %496)
  %498 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %497, double 1.000000e+01)
  %499 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %500 = load ptr, ptr %499, align 8, !tbaa !15
  %501 = getelementptr inbounds double, ptr %500, i64 2
  store double %498, ptr %501, align 8, !tbaa !11
  %502 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl19minlbfgsrestartfromEPNS_13minlbfgsstateEPKNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %31, ptr noundef %18, ptr noundef %502)
  br label %503

503:                                              ; preds = %506, %481
  %504 = load ptr, ptr %4, align 8, !tbaa !9
  %505 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %31, ptr noundef %504)
  br i1 %505, label %506, label %508

506:                                              ; preds = %503
  %507 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL26testminlbfgsunit_testfunc2PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef %31, ptr noundef %507)
  br label %503, !llvm.loop !46

508:                                              ; preds = %503
  %509 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgsresultsEPKNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef %31, ptr noundef %18, ptr noundef %32, ptr noundef %509)
  %510 = load i8, ptr %13, align 1, !tbaa !5, !range !32, !noundef !33
  %511 = trunc i8 %510 to i1
  br i1 %511, label %546, label %512

512:                                              ; preds = %508
  %513 = getelementptr inbounds %"struct.alglib_impl::minlbfgsreport", ptr %32, i32 0, i32 2
  %514 = load i64, ptr %513, align 8, !tbaa !38
  %515 = icmp sle i64 %514, 0
  br i1 %515, label %546, label %516

516:                                              ; preds = %512
  %517 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %518 = load ptr, ptr %517, align 8, !tbaa !15
  %519 = getelementptr inbounds double, ptr %518, i64 0
  %520 = load double, ptr %519, align 8, !tbaa !11
  %521 = load ptr, ptr %4, align 8, !tbaa !9
  %522 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 2.000000e+00, ptr noundef %521)
  %523 = fsub double %520, %522
  %524 = load ptr, ptr %4, align 8, !tbaa !9
  %525 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %523, ptr noundef %524)
  %526 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %525, double noundef 1.000000e-02)
  br i1 %526, label %546, label %527

527:                                              ; preds = %516
  %528 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %529 = load ptr, ptr %528, align 8, !tbaa !15
  %530 = getelementptr inbounds double, ptr %529, i64 1
  %531 = load double, ptr %530, align 8, !tbaa !11
  %532 = load ptr, ptr %4, align 8, !tbaa !9
  %533 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %531, ptr noundef %532)
  %534 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %533, double noundef 1.000000e-02)
  br i1 %534, label %546, label %535

535:                                              ; preds = %527
  %536 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %537 = load ptr, ptr %536, align 8, !tbaa !15
  %538 = getelementptr inbounds double, ptr %537, i64 2
  %539 = load double, ptr %538, align 8, !tbaa !11
  %540 = load ptr, ptr %4, align 8, !tbaa !9
  %541 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 2.000000e+00, ptr noundef %540)
  %542 = fsub double %539, %541
  %543 = load ptr, ptr %4, align 8, !tbaa !9
  %544 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %542, ptr noundef %543)
  %545 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %544, double noundef 1.000000e-02)
  br label %546

546:                                              ; preds = %535, %527, %516, %512, %508
  %547 = phi i1 [ true, %527 ], [ true, %516 ], [ true, %512 ], [ true, %508 ], [ %545, %535 ]
  %548 = zext i1 %547 to i8
  store i8 %548, ptr %13, align 1, !tbaa !5
  br label %549

549:                                              ; preds = %546
  %550 = load i64, ptr %34, align 8, !tbaa !13
  %551 = add nsw i64 %550, 1
  store i64 %551, ptr %34, align 8, !tbaa !13
  br label %366, !llvm.loop !47

552:                                              ; preds = %366
  store double 0x3EB0C6F7A0B5ED8D, ptr %33, align 8, !tbaa !11
  store i64 1, ptr %16, align 8, !tbaa !13
  br label %553

553:                                              ; preds = %893, %552
  %554 = load i64, ptr %16, align 8, !tbaa !13
  %555 = icmp sle i64 %554, 10
  br i1 %555, label %556, label %896

556:                                              ; preds = %553
  %557 = load i64, ptr %16, align 8, !tbaa !13
  %558 = sub nsw i64 %557, 1
  %559 = add nsw i64 %558, 1
  %560 = load i64, ptr %16, align 8, !tbaa !13
  %561 = sub nsw i64 %560, 1
  %562 = add nsw i64 %561, 1
  %563 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %28, i64 noundef %559, i64 noundef %562, ptr noundef %563)
  %564 = load i64, ptr %16, align 8, !tbaa !13
  %565 = sub nsw i64 %564, 1
  %566 = add nsw i64 %565, 1
  %567 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %18, i64 noundef %566, ptr noundef %567)
  %568 = load i64, ptr %16, align 8, !tbaa !13
  %569 = sub nsw i64 %568, 1
  %570 = add nsw i64 %569, 1
  %571 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %19, i64 noundef %570, ptr noundef %571)
  %572 = load i64, ptr %16, align 8, !tbaa !13
  %573 = sub nsw i64 %572, 1
  %574 = add nsw i64 %573, 1
  %575 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %20, i64 noundef %574, ptr noundef %575)
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %576

576:                                              ; preds = %589, %556
  %577 = load i64, ptr %22, align 8, !tbaa !13
  %578 = load i64, ptr %16, align 8, !tbaa !13
  %579 = sub nsw i64 %578, 1
  %580 = icmp sle i64 %577, %579
  br i1 %580, label %581, label %592

581:                                              ; preds = %576
  %582 = load ptr, ptr %4, align 8, !tbaa !9
  %583 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %582)
  %584 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %583, double -1.000000e+00)
  %585 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %19, i32 0, i32 4
  %586 = load ptr, ptr %585, align 8, !tbaa !15
  %587 = load i64, ptr %22, align 8, !tbaa !13
  %588 = getelementptr inbounds double, ptr %586, i64 %587
  store double %584, ptr %588, align 8, !tbaa !11
  br label %589

589:                                              ; preds = %581
  %590 = load i64, ptr %22, align 8, !tbaa !13
  %591 = add nsw i64 %590, 1
  store i64 %591, ptr %22, align 8, !tbaa !13
  br label %576, !llvm.loop !48

592:                                              ; preds = %576
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %593

593:                                              ; preds = %647, %592
  %594 = load i64, ptr %22, align 8, !tbaa !13
  %595 = load i64, ptr %16, align 8, !tbaa !13
  %596 = sub nsw i64 %595, 1
  %597 = icmp sle i64 %594, %596
  br i1 %597, label %598, label %650

598:                                              ; preds = %593
  store i64 0, ptr %23, align 8, !tbaa !13
  br label %599

599:                                              ; preds = %615, %598
  %600 = load i64, ptr %23, align 8, !tbaa !13
  %601 = load i64, ptr %16, align 8, !tbaa !13
  %602 = sub nsw i64 %601, 1
  %603 = icmp sle i64 %600, %602
  br i1 %603, label %604, label %618

604:                                              ; preds = %599
  %605 = load ptr, ptr %4, align 8, !tbaa !9
  %606 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %605)
  %607 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %606, double -1.000000e+00)
  %608 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %28, i32 0, i32 6
  %609 = load ptr, ptr %608, align 8, !tbaa !15
  %610 = load i64, ptr %22, align 8, !tbaa !13
  %611 = getelementptr inbounds ptr, ptr %609, i64 %610
  %612 = load ptr, ptr %611, align 8, !tbaa !9
  %613 = load i64, ptr %23, align 8, !tbaa !13
  %614 = getelementptr inbounds double, ptr %612, i64 %613
  store double %607, ptr %614, align 8, !tbaa !11
  br label %615

615:                                              ; preds = %604
  %616 = load i64, ptr %23, align 8, !tbaa !13
  %617 = add nsw i64 %616, 1
  store i64 %617, ptr %23, align 8, !tbaa !13
  br label %599, !llvm.loop !49

618:                                              ; preds = %599
  %619 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %28, i32 0, i32 6
  %620 = load ptr, ptr %619, align 8, !tbaa !15
  %621 = load i64, ptr %22, align 8, !tbaa !13
  %622 = getelementptr inbounds ptr, ptr %620, i64 %621
  %623 = load ptr, ptr %622, align 8, !tbaa !9
  %624 = load i64, ptr %22, align 8, !tbaa !13
  %625 = getelementptr inbounds double, ptr %623, i64 %624
  %626 = load double, ptr %625, align 8, !tbaa !11
  %627 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %28, i32 0, i32 6
  %628 = load ptr, ptr %627, align 8, !tbaa !15
  %629 = load i64, ptr %22, align 8, !tbaa !13
  %630 = getelementptr inbounds ptr, ptr %628, i64 %629
  %631 = load ptr, ptr %630, align 8, !tbaa !9
  %632 = load i64, ptr %22, align 8, !tbaa !13
  %633 = getelementptr inbounds double, ptr %631, i64 %632
  %634 = load double, ptr %633, align 8, !tbaa !11
  %635 = load ptr, ptr %4, align 8, !tbaa !9
  %636 = call noundef i64 @_ZN11alglib_impl7ae_signEdPNS_8ae_stateE(double noundef %634, ptr noundef %635)
  %637 = mul nsw i64 3, %636
  %638 = sitofp i64 %637 to double
  %639 = fadd double %626, %638
  %640 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %28, i32 0, i32 6
  %641 = load ptr, ptr %640, align 8, !tbaa !15
  %642 = load i64, ptr %22, align 8, !tbaa !13
  %643 = getelementptr inbounds ptr, ptr %641, i64 %642
  %644 = load ptr, ptr %643, align 8, !tbaa !9
  %645 = load i64, ptr %22, align 8, !tbaa !13
  %646 = getelementptr inbounds double, ptr %644, i64 %645
  store double %639, ptr %646, align 8, !tbaa !11
  br label %647

647:                                              ; preds = %618
  %648 = load i64, ptr %22, align 8, !tbaa !13
  %649 = add nsw i64 %648, 1
  store i64 %649, ptr %22, align 8, !tbaa !13
  br label %593, !llvm.loop !50

650:                                              ; preds = %593
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %651

651:                                              ; preds = %675, %650
  %652 = load i64, ptr %22, align 8, !tbaa !13
  %653 = load i64, ptr %16, align 8, !tbaa !13
  %654 = sub nsw i64 %653, 1
  %655 = icmp sle i64 %652, %654
  br i1 %655, label %656, label %678

656:                                              ; preds = %651
  %657 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %28, i32 0, i32 6
  %658 = load ptr, ptr %657, align 8, !tbaa !15
  %659 = load i64, ptr %22, align 8, !tbaa !13
  %660 = getelementptr inbounds ptr, ptr %658, i64 %659
  %661 = load ptr, ptr %660, align 8, !tbaa !9
  %662 = getelementptr inbounds double, ptr %661, i64 0
  %663 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %19, i32 0, i32 4
  %664 = load ptr, ptr %663, align 8, !tbaa !15
  %665 = getelementptr inbounds double, ptr %664, i64 0
  %666 = load i64, ptr %16, align 8, !tbaa !13
  %667 = sub nsw i64 %666, 1
  %668 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %667)
  %669 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %662, i64 noundef 1, ptr noundef %665, i64 noundef 1, i64 noundef %668)
  store double %669, ptr %25, align 8, !tbaa !11
  %670 = load double, ptr %25, align 8, !tbaa !11
  %671 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %20, i32 0, i32 4
  %672 = load ptr, ptr %671, align 8, !tbaa !15
  %673 = load i64, ptr %22, align 8, !tbaa !13
  %674 = getelementptr inbounds double, ptr %672, i64 %673
  store double %670, ptr %674, align 8, !tbaa !11
  br label %675

675:                                              ; preds = %656
  %676 = load i64, ptr %22, align 8, !tbaa !13
  %677 = add nsw i64 %676, 1
  store i64 %677, ptr %22, align 8, !tbaa !13
  br label %651, !llvm.loop !51

678:                                              ; preds = %651
  store i64 1, ptr %17, align 8, !tbaa !13
  br label %679

679:                                              ; preds = %889, %678
  %680 = load i64, ptr %17, align 8, !tbaa !13
  %681 = load i64, ptr %16, align 8, !tbaa !13
  %682 = icmp sle i64 %680, %681
  br i1 %682, label %683, label %892

683:                                              ; preds = %679
  store i64 0, ptr %34, align 8, !tbaa !13
  br label %684

684:                                              ; preds = %885, %683
  %685 = load i64, ptr %34, align 8, !tbaa !13
  %686 = icmp sle i64 %685, 1
  br i1 %686, label %687, label %888

687:                                              ; preds = %684
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %688

688:                                              ; preds = %701, %687
  %689 = load i64, ptr %22, align 8, !tbaa !13
  %690 = load i64, ptr %16, align 8, !tbaa !13
  %691 = sub nsw i64 %690, 1
  %692 = icmp sle i64 %689, %691
  br i1 %692, label %693, label %704

693:                                              ; preds = %688
  %694 = load ptr, ptr %4, align 8, !tbaa !9
  %695 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %694)
  %696 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %695, double -1.000000e+00)
  %697 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %698 = load ptr, ptr %697, align 8, !tbaa !15
  %699 = load i64, ptr %22, align 8, !tbaa !13
  %700 = getelementptr inbounds double, ptr %698, i64 %699
  store double %696, ptr %700, align 8, !tbaa !11
  br label %701

701:                                              ; preds = %693
  %702 = load i64, ptr %22, align 8, !tbaa !13
  %703 = add nsw i64 %702, 1
  store i64 %703, ptr %22, align 8, !tbaa !13
  br label %688, !llvm.loop !52

704:                                              ; preds = %688
  %705 = load i64, ptr %34, align 8, !tbaa !13
  %706 = icmp eq i64 %705, 0
  br i1 %706, label %707, label %711

707:                                              ; preds = %704
  %708 = load i64, ptr %16, align 8, !tbaa !13
  %709 = load i64, ptr %17, align 8, !tbaa !13
  %710 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14minlbfgscreateEllPKNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %708, i64 noundef %709, ptr noundef %18, ptr noundef %31, ptr noundef %710)
  br label %711

711:                                              ; preds = %707, %704
  %712 = load i64, ptr %34, align 8, !tbaa !13
  %713 = icmp eq i64 %712, 1
  br i1 %713, label %714, label %719

714:                                              ; preds = %711
  %715 = load i64, ptr %16, align 8, !tbaa !13
  %716 = load i64, ptr %17, align 8, !tbaa !13
  %717 = load double, ptr %33, align 8, !tbaa !11
  %718 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgscreatefEllPKNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %715, i64 noundef %716, ptr noundef %18, double noundef %717, ptr noundef %31, ptr noundef %718)
  br label %719

719:                                              ; preds = %714, %711
  %720 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef %31, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %720)
  br label %721

721:                                              ; preds = %843, %719
  %722 = load ptr, ptr %4, align 8, !tbaa !9
  %723 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %31, ptr noundef %722)
  br i1 %723, label %724, label %844

724:                                              ; preds = %721
  %725 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 50
  %726 = load i8, ptr %725, align 8, !tbaa !16, !range !32, !noundef !33
  %727 = trunc i8 %726 to i1
  br i1 %727, label %732, label %728

728:                                              ; preds = %724
  %729 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 51
  %730 = load i8, ptr %729, align 1, !tbaa !34, !range !32, !noundef !33
  %731 = trunc i8 %730 to i1
  br i1 %731, label %732, label %734

732:                                              ; preds = %728, %724
  %733 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 48
  store double 0.000000e+00, ptr %733, align 8, !tbaa !35
  br label %734

734:                                              ; preds = %732, %728
  %735 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 51
  %736 = load i8, ptr %735, align 1, !tbaa !34, !range !32, !noundef !33
  %737 = trunc i8 %736 to i1
  br i1 %737, label %738, label %754

738:                                              ; preds = %734
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %739

739:                                              ; preds = %750, %738
  %740 = load i64, ptr %22, align 8, !tbaa !13
  %741 = load i64, ptr %16, align 8, !tbaa !13
  %742 = sub nsw i64 %741, 1
  %743 = icmp sle i64 %740, %742
  br i1 %743, label %744, label %753

744:                                              ; preds = %739
  %745 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 49
  %746 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %745, i32 0, i32 4
  %747 = load ptr, ptr %746, align 8, !tbaa !15
  %748 = load i64, ptr %22, align 8, !tbaa !13
  %749 = getelementptr inbounds double, ptr %747, i64 %748
  store double 0.000000e+00, ptr %749, align 8, !tbaa !11
  br label %750

750:                                              ; preds = %744
  %751 = load i64, ptr %22, align 8, !tbaa !13
  %752 = add nsw i64 %751, 1
  store i64 %752, ptr %22, align 8, !tbaa !13
  br label %739, !llvm.loop !53

753:                                              ; preds = %739
  br label %754

754:                                              ; preds = %753, %734
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %755

755:                                              ; preds = %840, %754
  %756 = load i64, ptr %22, align 8, !tbaa !13
  %757 = load i64, ptr %16, align 8, !tbaa !13
  %758 = sub nsw i64 %757, 1
  %759 = icmp sle i64 %756, %758
  br i1 %759, label %760, label %843

760:                                              ; preds = %755
  %761 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %28, i32 0, i32 6
  %762 = load ptr, ptr %761, align 8, !tbaa !15
  %763 = load i64, ptr %22, align 8, !tbaa !13
  %764 = getelementptr inbounds ptr, ptr %762, i64 %763
  %765 = load ptr, ptr %764, align 8, !tbaa !9
  %766 = getelementptr inbounds double, ptr %765, i64 0
  %767 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 47
  %768 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %767, i32 0, i32 4
  %769 = load ptr, ptr %768, align 8, !tbaa !15
  %770 = getelementptr inbounds double, ptr %769, i64 0
  %771 = load i64, ptr %16, align 8, !tbaa !13
  %772 = sub nsw i64 %771, 1
  %773 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %772)
  %774 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %766, i64 noundef 1, ptr noundef %770, i64 noundef 1, i64 noundef %773)
  store double %774, ptr %25, align 8, !tbaa !11
  %775 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 50
  %776 = load i8, ptr %775, align 8, !tbaa !16, !range !32, !noundef !33
  %777 = trunc i8 %776 to i1
  br i1 %777, label %782, label %778

778:                                              ; preds = %760
  %779 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 51
  %780 = load i8, ptr %779, align 1, !tbaa !34, !range !32, !noundef !33
  %781 = trunc i8 %780 to i1
  br i1 %781, label %782, label %796

782:                                              ; preds = %778, %760
  %783 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 48
  %784 = load double, ptr %783, align 8, !tbaa !35
  %785 = load double, ptr %25, align 8, !tbaa !11
  %786 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %20, i32 0, i32 4
  %787 = load ptr, ptr %786, align 8, !tbaa !15
  %788 = load i64, ptr %22, align 8, !tbaa !13
  %789 = getelementptr inbounds double, ptr %787, i64 %788
  %790 = load double, ptr %789, align 8, !tbaa !11
  %791 = fsub double %785, %790
  %792 = load ptr, ptr %4, align 8, !tbaa !9
  %793 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %791, ptr noundef %792)
  %794 = fadd double %784, %793
  %795 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 48
  store double %794, ptr %795, align 8, !tbaa !35
  br label %796

796:                                              ; preds = %782, %778
  %797 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 51
  %798 = load i8, ptr %797, align 1, !tbaa !34, !range !32, !noundef !33
  %799 = trunc i8 %798 to i1
  br i1 %799, label %800, label %839

800:                                              ; preds = %796
  store i64 0, ptr %23, align 8, !tbaa !13
  br label %801

801:                                              ; preds = %835, %800
  %802 = load i64, ptr %23, align 8, !tbaa !13
  %803 = load i64, ptr %16, align 8, !tbaa !13
  %804 = sub nsw i64 %803, 1
  %805 = icmp sle i64 %802, %804
  br i1 %805, label %806, label %838

806:                                              ; preds = %801
  %807 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 49
  %808 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %807, i32 0, i32 4
  %809 = load ptr, ptr %808, align 8, !tbaa !15
  %810 = load i64, ptr %23, align 8, !tbaa !13
  %811 = getelementptr inbounds double, ptr %809, i64 %810
  %812 = load double, ptr %811, align 8, !tbaa !11
  %813 = load double, ptr %25, align 8, !tbaa !11
  %814 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %20, i32 0, i32 4
  %815 = load ptr, ptr %814, align 8, !tbaa !15
  %816 = load i64, ptr %22, align 8, !tbaa !13
  %817 = getelementptr inbounds double, ptr %815, i64 %816
  %818 = load double, ptr %817, align 8, !tbaa !11
  %819 = fsub double %813, %818
  %820 = fmul double 2.000000e+00, %819
  %821 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %28, i32 0, i32 6
  %822 = load ptr, ptr %821, align 8, !tbaa !15
  %823 = load i64, ptr %22, align 8, !tbaa !13
  %824 = getelementptr inbounds ptr, ptr %822, i64 %823
  %825 = load ptr, ptr %824, align 8, !tbaa !9
  %826 = load i64, ptr %23, align 8, !tbaa !13
  %827 = getelementptr inbounds double, ptr %825, i64 %826
  %828 = load double, ptr %827, align 8, !tbaa !11
  %829 = call double @llvm.fmuladd.f64(double %820, double %828, double %812)
  %830 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 49
  %831 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %830, i32 0, i32 4
  %832 = load ptr, ptr %831, align 8, !tbaa !15
  %833 = load i64, ptr %23, align 8, !tbaa !13
  %834 = getelementptr inbounds double, ptr %832, i64 %833
  store double %829, ptr %834, align 8, !tbaa !11
  br label %835

835:                                              ; preds = %806
  %836 = load i64, ptr %23, align 8, !tbaa !13
  %837 = add nsw i64 %836, 1
  store i64 %837, ptr %23, align 8, !tbaa !13
  br label %801, !llvm.loop !54

838:                                              ; preds = %801
  br label %839

839:                                              ; preds = %838, %796
  br label %840

840:                                              ; preds = %839
  %841 = load i64, ptr %22, align 8, !tbaa !13
  %842 = add nsw i64 %841, 1
  store i64 %842, ptr %22, align 8, !tbaa !13
  br label %755, !llvm.loop !55

843:                                              ; preds = %755
  br label %721, !llvm.loop !56

844:                                              ; preds = %721
  %845 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgsresultsEPKNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef %31, ptr noundef %18, ptr noundef %32, ptr noundef %845)
  %846 = load i8, ptr %9, align 1, !tbaa !5, !range !32, !noundef !33
  %847 = trunc i8 %846 to i1
  br i1 %847, label %852, label %848

848:                                              ; preds = %844
  %849 = getelementptr inbounds %"struct.alglib_impl::minlbfgsreport", ptr %32, i32 0, i32 2
  %850 = load i64, ptr %849, align 8, !tbaa !38
  %851 = icmp sle i64 %850, 0
  br label %852

852:                                              ; preds = %848, %844
  %853 = phi i1 [ true, %844 ], [ %851, %848 ]
  %854 = zext i1 %853 to i8
  store i8 %854, ptr %9, align 1, !tbaa !5
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %855

855:                                              ; preds = %881, %852
  %856 = load i64, ptr %22, align 8, !tbaa !13
  %857 = load i64, ptr %16, align 8, !tbaa !13
  %858 = sub nsw i64 %857, 1
  %859 = icmp sle i64 %856, %858
  br i1 %859, label %860, label %884

860:                                              ; preds = %855
  %861 = load i8, ptr %9, align 1, !tbaa !5, !range !32, !noundef !33
  %862 = trunc i8 %861 to i1
  br i1 %862, label %878, label %863

863:                                              ; preds = %860
  %864 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %865 = load ptr, ptr %864, align 8, !tbaa !15
  %866 = load i64, ptr %22, align 8, !tbaa !13
  %867 = getelementptr inbounds double, ptr %865, i64 %866
  %868 = load double, ptr %867, align 8, !tbaa !11
  %869 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %19, i32 0, i32 4
  %870 = load ptr, ptr %869, align 8, !tbaa !15
  %871 = load i64, ptr %22, align 8, !tbaa !13
  %872 = getelementptr inbounds double, ptr %870, i64 %871
  %873 = load double, ptr %872, align 8, !tbaa !11
  %874 = fsub double %868, %873
  %875 = load ptr, ptr %4, align 8, !tbaa !9
  %876 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %874, ptr noundef %875)
  %877 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %876, double noundef 1.000000e-03)
  br label %878

878:                                              ; preds = %863, %860
  %879 = phi i1 [ true, %860 ], [ %877, %863 ]
  %880 = zext i1 %879 to i8
  store i8 %880, ptr %9, align 1, !tbaa !5
  br label %881

881:                                              ; preds = %878
  %882 = load i64, ptr %22, align 8, !tbaa !13
  %883 = add nsw i64 %882, 1
  store i64 %883, ptr %22, align 8, !tbaa !13
  br label %855, !llvm.loop !57

884:                                              ; preds = %855
  br label %885

885:                                              ; preds = %884
  %886 = load i64, ptr %34, align 8, !tbaa !13
  %887 = add nsw i64 %886, 1
  store i64 %887, ptr %34, align 8, !tbaa !13
  br label %684, !llvm.loop !58

888:                                              ; preds = %684
  br label %889

889:                                              ; preds = %888
  %890 = load i64, ptr %17, align 8, !tbaa !13
  %891 = add nsw i64 %890, 1
  store i64 %891, ptr %17, align 8, !tbaa !13
  br label %679, !llvm.loop !59

892:                                              ; preds = %679
  br label %893

893:                                              ; preds = %892
  %894 = load i64, ptr %16, align 8, !tbaa !13
  %895 = add nsw i64 %894, 1
  store i64 %895, ptr %16, align 8, !tbaa !13
  br label %553, !llvm.loop !60

896:                                              ; preds = %553
  store double 0x3EB0C6F7A0B5ED8D, ptr %33, align 8, !tbaa !11
  store i64 1, ptr %16, align 8, !tbaa !13
  br label %897

897:                                              ; preds = %1524, %896
  %898 = load i64, ptr %16, align 8, !tbaa !13
  %899 = icmp sle i64 %898, 10
  br i1 %899, label %900, label %1527

900:                                              ; preds = %897
  %901 = load i64, ptr %16, align 8, !tbaa !13
  %902 = load i64, ptr %16, align 8, !tbaa !13
  %903 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %28, i64 noundef %901, i64 noundef %902, ptr noundef %903)
  %904 = load i64, ptr %16, align 8, !tbaa !13
  %905 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %18, i64 noundef %904, ptr noundef %905)
  %906 = load i64, ptr %16, align 8, !tbaa !13
  %907 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %19, i64 noundef %906, ptr noundef %907)
  %908 = load i64, ptr %16, align 8, !tbaa !13
  %909 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %20, i64 noundef %908, ptr noundef %909)
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %910

910:                                              ; preds = %923, %900
  %911 = load i64, ptr %22, align 8, !tbaa !13
  %912 = load i64, ptr %16, align 8, !tbaa !13
  %913 = sub nsw i64 %912, 1
  %914 = icmp sle i64 %911, %913
  br i1 %914, label %915, label %926

915:                                              ; preds = %910
  %916 = load ptr, ptr %4, align 8, !tbaa !9
  %917 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %37, ptr noundef %916)
  %918 = fsub double %917, 5.000000e-01
  %919 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %19, i32 0, i32 4
  %920 = load ptr, ptr %919, align 8, !tbaa !15
  %921 = load i64, ptr %22, align 8, !tbaa !13
  %922 = getelementptr inbounds double, ptr %920, i64 %921
  store double %918, ptr %922, align 8, !tbaa !11
  br label %923

923:                                              ; preds = %915
  %924 = load i64, ptr %22, align 8, !tbaa !13
  %925 = add nsw i64 %924, 1
  store i64 %925, ptr %22, align 8, !tbaa !13
  br label %910, !llvm.loop !61

926:                                              ; preds = %910
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %927

927:                                              ; preds = %981, %926
  %928 = load i64, ptr %22, align 8, !tbaa !13
  %929 = load i64, ptr %16, align 8, !tbaa !13
  %930 = sub nsw i64 %929, 1
  %931 = icmp sle i64 %928, %930
  br i1 %931, label %932, label %984

932:                                              ; preds = %927
  store i64 0, ptr %23, align 8, !tbaa !13
  br label %933

933:                                              ; preds = %949, %932
  %934 = load i64, ptr %23, align 8, !tbaa !13
  %935 = load i64, ptr %16, align 8, !tbaa !13
  %936 = sub nsw i64 %935, 1
  %937 = icmp sle i64 %934, %936
  br i1 %937, label %938, label %952

938:                                              ; preds = %933
  %939 = load ptr, ptr %4, align 8, !tbaa !9
  %940 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %37, ptr noundef %939)
  %941 = fsub double %940, 5.000000e-01
  %942 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %28, i32 0, i32 6
  %943 = load ptr, ptr %942, align 8, !tbaa !15
  %944 = load i64, ptr %22, align 8, !tbaa !13
  %945 = getelementptr inbounds ptr, ptr %943, i64 %944
  %946 = load ptr, ptr %945, align 8, !tbaa !9
  %947 = load i64, ptr %23, align 8, !tbaa !13
  %948 = getelementptr inbounds double, ptr %946, i64 %947
  store double %941, ptr %948, align 8, !tbaa !11
  br label %949

949:                                              ; preds = %938
  %950 = load i64, ptr %23, align 8, !tbaa !13
  %951 = add nsw i64 %950, 1
  store i64 %951, ptr %23, align 8, !tbaa !13
  br label %933, !llvm.loop !62

952:                                              ; preds = %933
  %953 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %28, i32 0, i32 6
  %954 = load ptr, ptr %953, align 8, !tbaa !15
  %955 = load i64, ptr %22, align 8, !tbaa !13
  %956 = getelementptr inbounds ptr, ptr %954, i64 %955
  %957 = load ptr, ptr %956, align 8, !tbaa !9
  %958 = load i64, ptr %22, align 8, !tbaa !13
  %959 = getelementptr inbounds double, ptr %957, i64 %958
  %960 = load double, ptr %959, align 8, !tbaa !11
  %961 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %28, i32 0, i32 6
  %962 = load ptr, ptr %961, align 8, !tbaa !15
  %963 = load i64, ptr %22, align 8, !tbaa !13
  %964 = getelementptr inbounds ptr, ptr %962, i64 %963
  %965 = load ptr, ptr %964, align 8, !tbaa !9
  %966 = load i64, ptr %22, align 8, !tbaa !13
  %967 = getelementptr inbounds double, ptr %965, i64 %966
  %968 = load double, ptr %967, align 8, !tbaa !11
  %969 = load ptr, ptr %4, align 8, !tbaa !9
  %970 = call noundef i64 @_ZN11alglib_impl7ae_signEdPNS_8ae_stateE(double noundef %968, ptr noundef %969)
  %971 = mul nsw i64 3, %970
  %972 = sitofp i64 %971 to double
  %973 = fadd double %960, %972
  %974 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %28, i32 0, i32 6
  %975 = load ptr, ptr %974, align 8, !tbaa !15
  %976 = load i64, ptr %22, align 8, !tbaa !13
  %977 = getelementptr inbounds ptr, ptr %975, i64 %976
  %978 = load ptr, ptr %977, align 8, !tbaa !9
  %979 = load i64, ptr %22, align 8, !tbaa !13
  %980 = getelementptr inbounds double, ptr %978, i64 %979
  store double %973, ptr %980, align 8, !tbaa !11
  br label %981

981:                                              ; preds = %952
  %982 = load i64, ptr %22, align 8, !tbaa !13
  %983 = add nsw i64 %982, 1
  store i64 %983, ptr %22, align 8, !tbaa !13
  br label %927, !llvm.loop !63

984:                                              ; preds = %927
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %985

985:                                              ; preds = %999, %984
  %986 = load i64, ptr %22, align 8, !tbaa !13
  %987 = load i64, ptr %16, align 8, !tbaa !13
  %988 = sub nsw i64 %987, 1
  %989 = icmp sle i64 %986, %988
  br i1 %989, label %990, label %1002

990:                                              ; preds = %985
  %991 = load i64, ptr %16, align 8, !tbaa !13
  %992 = load i64, ptr %22, align 8, !tbaa !13
  %993 = load ptr, ptr %4, align 8, !tbaa !9
  %994 = call noundef double @_ZN11alglib_impl6rdotvrElPKNS_9ae_vectorEPKNS_9ae_matrixElPNS_8ae_stateE(i64 noundef %991, ptr noundef %19, ptr noundef %28, i64 noundef %992, ptr noundef %993)
  %995 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %20, i32 0, i32 4
  %996 = load ptr, ptr %995, align 8, !tbaa !15
  %997 = load i64, ptr %22, align 8, !tbaa !13
  %998 = getelementptr inbounds double, ptr %996, i64 %997
  store double %994, ptr %998, align 8, !tbaa !11
  br label %999

999:                                              ; preds = %990
  %1000 = load i64, ptr %22, align 8, !tbaa !13
  %1001 = add nsw i64 %1000, 1
  store i64 %1001, ptr %22, align 8, !tbaa !13
  br label %985, !llvm.loop !64

1002:                                             ; preds = %985
  store i64 1, ptr %17, align 8, !tbaa !13
  br label %1003

1003:                                             ; preds = %1520, %1002
  %1004 = load i64, ptr %17, align 8, !tbaa !13
  %1005 = load i64, ptr %16, align 8, !tbaa !13
  %1006 = icmp sle i64 %1004, %1005
  br i1 %1006, label %1007, label %1523

1007:                                             ; preds = %1003
  store i64 0, ptr %34, align 8, !tbaa !13
  br label %1008

1008:                                             ; preds = %1516, %1007
  %1009 = load i64, ptr %34, align 8, !tbaa !13
  %1010 = icmp sle i64 %1009, 1
  br i1 %1010, label %1011, label %1519

1011:                                             ; preds = %1008
  %1012 = load ptr, ptr %4, align 8, !tbaa !9
  %1013 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %37, ptr noundef %1012)
  %1014 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1013, double noundef 0.000000e+00)
  %1015 = zext i1 %1014 to i8
  store i8 %1015, ptr %36, align 1, !tbaa !5
  store i8 0, ptr %35, align 1, !tbaa !5
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %1016

1016:                                             ; preds = %1029, %1011
  %1017 = load i64, ptr %22, align 8, !tbaa !13
  %1018 = load i64, ptr %16, align 8, !tbaa !13
  %1019 = sub nsw i64 %1018, 1
  %1020 = icmp sle i64 %1017, %1019
  br i1 %1020, label %1021, label %1032

1021:                                             ; preds = %1016
  %1022 = load ptr, ptr %4, align 8, !tbaa !9
  %1023 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %37, ptr noundef %1022)
  %1024 = fsub double %1023, 5.000000e-01
  %1025 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %1026 = load ptr, ptr %1025, align 8, !tbaa !15
  %1027 = load i64, ptr %22, align 8, !tbaa !13
  %1028 = getelementptr inbounds double, ptr %1026, i64 %1027
  store double %1024, ptr %1028, align 8, !tbaa !11
  br label %1029

1029:                                             ; preds = %1021
  %1030 = load i64, ptr %22, align 8, !tbaa !13
  %1031 = add nsw i64 %1030, 1
  store i64 %1031, ptr %22, align 8, !tbaa !13
  br label %1016, !llvm.loop !65

1032:                                             ; preds = %1016
  %1033 = load i64, ptr %34, align 8, !tbaa !13
  %1034 = icmp eq i64 %1033, 0
  br i1 %1034, label %1035, label %1039

1035:                                             ; preds = %1032
  %1036 = load i64, ptr %16, align 8, !tbaa !13
  %1037 = load i64, ptr %17, align 8, !tbaa !13
  %1038 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14minlbfgscreateEllPKNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %1036, i64 noundef %1037, ptr noundef %18, ptr noundef %31, ptr noundef %1038)
  br label %1039

1039:                                             ; preds = %1035, %1032
  %1040 = load i64, ptr %34, align 8, !tbaa !13
  %1041 = icmp eq i64 %1040, 1
  br i1 %1041, label %1042, label %1047

1042:                                             ; preds = %1039
  %1043 = load i64, ptr %16, align 8, !tbaa !13
  %1044 = load i64, ptr %17, align 8, !tbaa !13
  %1045 = load double, ptr %33, align 8, !tbaa !11
  %1046 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgscreatefEllPKNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %1043, i64 noundef %1044, ptr noundef %18, double noundef %1045, ptr noundef %31, ptr noundef %1046)
  br label %1047

1047:                                             ; preds = %1042, %1039
  %1048 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef %31, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %1048)
  %1049 = load i8, ptr %36, align 1, !tbaa !5, !range !32, !noundef !33
  %1050 = trunc i8 %1049 to i1
  %1051 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgssetxrepEPNS_13minlbfgsstateEbPNS_8ae_stateE(ptr noundef %31, i1 noundef zeroext %1050, ptr noundef %1051)
  %1052 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl21minlbfgssetprotocolv2EPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %31, ptr noundef %1052)
  br label %1053

1053:                                             ; preds = %1469, %1467, %1256, %1097, %1047
  %1054 = load ptr, ptr %4, align 8, !tbaa !9
  %1055 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %31, ptr noundef %1054)
  br i1 %1055, label %1056, label %1471

1056:                                             ; preds = %1053
  %1057 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 45
  %1058 = load i64, ptr %1057, align 8, !tbaa !66
  %1059 = icmp eq i64 %1058, 2
  %1060 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1059, ptr noundef @.str.536, ptr noundef %1060)
  %1061 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 53
  %1062 = load i64, ptr %1061, align 8, !tbaa !67
  %1063 = icmp eq i64 %1062, -1
  br i1 %1063, label %1064, label %1114

1064:                                             ; preds = %1056
  %1065 = load i8, ptr %36, align 1, !tbaa !5, !range !32, !noundef !33
  %1066 = trunc i8 %1065 to i1
  %1067 = xor i1 %1066, true
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1067, ptr noundef @.str.19, i32 noundef 44384, ptr noundef @.str.537)
  %1068 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 54
  %1069 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1068, i32 0, i32 0
  %1070 = load i64, ptr %1069, align 8, !tbaa !68
  %1071 = load i64, ptr %16, align 8, !tbaa !13
  %1072 = icmp slt i64 %1070, %1071
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1072, ptr noundef @.str.19, i32 noundef 44385, ptr noundef @.str.538)
  store double 0.000000e+00, ptr %25, align 8, !tbaa !11
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %1073

1073:                                             ; preds = %1094, %1064
  %1074 = load i64, ptr %22, align 8, !tbaa !13
  %1075 = load i64, ptr %16, align 8, !tbaa !13
  %1076 = sub nsw i64 %1075, 1
  %1077 = icmp sle i64 %1074, %1076
  br i1 %1077, label %1078, label %1097

1078:                                             ; preds = %1073
  %1079 = load double, ptr %25, align 8, !tbaa !11
  %1080 = load i64, ptr %16, align 8, !tbaa !13
  %1081 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 54
  %1082 = load i64, ptr %22, align 8, !tbaa !13
  %1083 = load ptr, ptr %4, align 8, !tbaa !9
  %1084 = call noundef double @_ZN11alglib_impl6rdotvrElPKNS_9ae_vectorEPKNS_9ae_matrixElPNS_8ae_stateE(i64 noundef %1080, ptr noundef %1081, ptr noundef %28, i64 noundef %1082, ptr noundef %1083)
  %1085 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %20, i32 0, i32 4
  %1086 = load ptr, ptr %1085, align 8, !tbaa !15
  %1087 = load i64, ptr %22, align 8, !tbaa !13
  %1088 = getelementptr inbounds double, ptr %1086, i64 %1087
  %1089 = load double, ptr %1088, align 8, !tbaa !11
  %1090 = fsub double %1084, %1089
  %1091 = load ptr, ptr %4, align 8, !tbaa !9
  %1092 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1090, ptr noundef %1091)
  %1093 = fadd double %1079, %1092
  store double %1093, ptr %25, align 8, !tbaa !11
  br label %1094

1094:                                             ; preds = %1078
  %1095 = load i64, ptr %22, align 8, !tbaa !13
  %1096 = add nsw i64 %1095, 1
  store i64 %1096, ptr %22, align 8, !tbaa !13
  br label %1073, !llvm.loop !69

1097:                                             ; preds = %1073
  %1098 = load double, ptr %25, align 8, !tbaa !11
  %1099 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 55
  %1100 = load double, ptr %1099, align 8, !tbaa !70
  %1101 = fsub double %1098, %1100
  %1102 = load ptr, ptr %4, align 8, !tbaa !9
  %1103 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1101, ptr noundef %1102)
  %1104 = load ptr, ptr %4, align 8, !tbaa !9
  %1105 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %1104)
  %1106 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 55
  %1107 = load double, ptr %1106, align 8, !tbaa !70
  %1108 = load double, ptr %25, align 8, !tbaa !11
  %1109 = load ptr, ptr %4, align 8, !tbaa !9
  %1110 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %1107, double noundef %1108, double noundef 1.000000e+00, ptr noundef %1109)
  %1111 = fmul double %1105, %1110
  %1112 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1103, double noundef %1111)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1112, ptr noundef @.str.19, i32 noundef 44391, ptr noundef @.str.539)
  store i8 1, ptr %35, align 1, !tbaa !5
  %1113 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 53
  store i64 0, ptr %1113, align 8, !tbaa !67
  br label %1053, !llvm.loop !71

1114:                                             ; preds = %1056
  %1115 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 53
  %1116 = load i64, ptr %1115, align 8, !tbaa !67
  %1117 = icmp eq i64 %1116, 2
  br i1 %1117, label %1118, label %1258

1118:                                             ; preds = %1114
  %1119 = load i64, ptr %34, align 8, !tbaa !13
  %1120 = icmp ne i64 %1119, 0
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1120, ptr noundef @.str.19, i32 noundef 44398, ptr noundef @.str.540)
  %1121 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 56
  %1122 = load i64, ptr %1121, align 8, !tbaa !72
  %1123 = icmp ne i64 %1122, 1
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1123, ptr noundef @.str.19, i32 noundef 44399, ptr noundef @.str.541)
  %1124 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 57
  %1125 = load i64, ptr %1124, align 8, !tbaa !73
  %1126 = icmp ne i64 %1125, 1
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1126, ptr noundef @.str.19, i32 noundef 44400, ptr noundef @.str.542)
  %1127 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 58
  %1128 = load i64, ptr %1127, align 8, !tbaa !74
  %1129 = load i64, ptr %16, align 8, !tbaa !13
  %1130 = icmp ne i64 %1128, %1129
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1130, ptr noundef @.str.19, i32 noundef 44401, ptr noundef @.str.543)
  %1131 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 59
  %1132 = load i64, ptr %1131, align 8, !tbaa !75
  %1133 = icmp ne i64 %1132, 0
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1133, ptr noundef @.str.19, i32 noundef 44402, ptr noundef @.str.544)
  %1134 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 61
  %1135 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1134, i32 0, i32 0
  %1136 = load i64, ptr %1135, align 8, !tbaa !76
  %1137 = load i64, ptr %16, align 8, !tbaa !13
  %1138 = icmp slt i64 %1136, %1137
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1138, ptr noundef @.str.19, i32 noundef 44403, ptr noundef @.str.545)
  %1139 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 62
  %1140 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1139, i32 0, i32 0
  %1141 = load i64, ptr %1140, align 8, !tbaa !77
  %1142 = icmp slt i64 %1141, 1
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1142, ptr noundef @.str.19, i32 noundef 44404, ptr noundef @.str.546)
  %1143 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 63
  %1144 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1143, i32 0, i32 0
  %1145 = load i64, ptr %1144, align 8, !tbaa !78
  %1146 = load i64, ptr %16, align 8, !tbaa !13
  %1147 = icmp slt i64 %1145, %1146
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1147, ptr noundef @.str.19, i32 noundef 44405, ptr noundef @.str.547)
  %1148 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 65
  %1149 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1148, i32 0, i32 0
  %1150 = load i64, ptr %1149, align 8, !tbaa !79
  %1151 = load i64, ptr %16, align 8, !tbaa !13
  %1152 = icmp slt i64 %1150, %1151
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1152, ptr noundef @.str.19, i32 noundef 44406, ptr noundef @.str.548)
  %1153 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 68
  %1154 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1153, i32 0, i32 0
  %1155 = load i64, ptr %1154, align 8, !tbaa !80
  %1156 = load i64, ptr %16, align 8, !tbaa !13
  %1157 = icmp slt i64 %1155, %1156
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1157, ptr noundef @.str.19, i32 noundef 44407, ptr noundef @.str.549)
  %1158 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 66
  %1159 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1158, i32 0, i32 0
  %1160 = load i64, ptr %1159, align 8, !tbaa !81
  %1161 = icmp slt i64 %1160, 0
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1161, ptr noundef @.str.19, i32 noundef 44408, ptr noundef @.str.550)
  %1162 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 67
  %1163 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1162, i32 0, i32 0
  %1164 = load i64, ptr %1163, align 8, !tbaa !82
  %1165 = icmp slt i64 %1164, 1
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1165, ptr noundef @.str.19, i32 noundef 44409, ptr noundef @.str.551)
  %1166 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 69
  %1167 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1166, i32 0, i32 0
  %1168 = load i64, ptr %1167, align 8, !tbaa !83
  %1169 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 57
  %1170 = load i64, ptr %1169, align 8, !tbaa !73
  %1171 = icmp slt i64 %1168, %1170
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1171, ptr noundef @.str.19, i32 noundef 44410, ptr noundef @.str.552)
  %1172 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 69
  %1173 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1172, i32 0, i32 1
  %1174 = load i64, ptr %1173, align 8, !tbaa !84
  %1175 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 58
  %1176 = load i64, ptr %1175, align 8, !tbaa !74
  %1177 = icmp slt i64 %1174, %1176
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1177, ptr noundef @.str.19, i32 noundef 44411, ptr noundef @.str.553)
  %1178 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 62
  %1179 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1178, i32 0, i32 4
  %1180 = load ptr, ptr %1179, align 8, !tbaa !15
  %1181 = getelementptr inbounds double, ptr %1180, i64 0
  store double 0.000000e+00, ptr %1181, align 8, !tbaa !11
  %1182 = load i64, ptr %16, align 8, !tbaa !13
  %1183 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 63
  %1184 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl5rsetvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1182, double noundef 0.000000e+00, ptr noundef %1183, ptr noundef %1184)
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %1185

1185:                                             ; preds = %1253, %1118
  %1186 = load i64, ptr %22, align 8, !tbaa !13
  %1187 = load i64, ptr %16, align 8, !tbaa !13
  %1188 = sub nsw i64 %1187, 1
  %1189 = icmp sle i64 %1186, %1188
  br i1 %1189, label %1190, label %1256

1190:                                             ; preds = %1185
  %1191 = load i64, ptr %16, align 8, !tbaa !13
  %1192 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 61
  %1193 = load i64, ptr %22, align 8, !tbaa !13
  %1194 = load ptr, ptr %4, align 8, !tbaa !9
  %1195 = call noundef double @_ZN11alglib_impl6rdotvrElPKNS_9ae_vectorEPKNS_9ae_matrixElPNS_8ae_stateE(i64 noundef %1191, ptr noundef %1192, ptr noundef %28, i64 noundef %1193, ptr noundef %1194)
  store double %1195, ptr %25, align 8, !tbaa !11
  %1196 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 62
  %1197 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1196, i32 0, i32 4
  %1198 = load ptr, ptr %1197, align 8, !tbaa !15
  %1199 = getelementptr inbounds double, ptr %1198, i64 0
  %1200 = load double, ptr %1199, align 8, !tbaa !11
  %1201 = load double, ptr %25, align 8, !tbaa !11
  %1202 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %20, i32 0, i32 4
  %1203 = load ptr, ptr %1202, align 8, !tbaa !15
  %1204 = load i64, ptr %22, align 8, !tbaa !13
  %1205 = getelementptr inbounds double, ptr %1203, i64 %1204
  %1206 = load double, ptr %1205, align 8, !tbaa !11
  %1207 = fsub double %1201, %1206
  %1208 = load ptr, ptr %4, align 8, !tbaa !9
  %1209 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1207, ptr noundef %1208)
  %1210 = fadd double %1200, %1209
  %1211 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 62
  %1212 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1211, i32 0, i32 4
  %1213 = load ptr, ptr %1212, align 8, !tbaa !15
  %1214 = getelementptr inbounds double, ptr %1213, i64 0
  store double %1210, ptr %1214, align 8, !tbaa !11
  store i64 0, ptr %23, align 8, !tbaa !13
  br label %1215

1215:                                             ; preds = %1249, %1190
  %1216 = load i64, ptr %23, align 8, !tbaa !13
  %1217 = load i64, ptr %16, align 8, !tbaa !13
  %1218 = sub nsw i64 %1217, 1
  %1219 = icmp sle i64 %1216, %1218
  br i1 %1219, label %1220, label %1252

1220:                                             ; preds = %1215
  %1221 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 63
  %1222 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1221, i32 0, i32 4
  %1223 = load ptr, ptr %1222, align 8, !tbaa !15
  %1224 = load i64, ptr %23, align 8, !tbaa !13
  %1225 = getelementptr inbounds double, ptr %1223, i64 %1224
  %1226 = load double, ptr %1225, align 8, !tbaa !11
  %1227 = load double, ptr %25, align 8, !tbaa !11
  %1228 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %20, i32 0, i32 4
  %1229 = load ptr, ptr %1228, align 8, !tbaa !15
  %1230 = load i64, ptr %22, align 8, !tbaa !13
  %1231 = getelementptr inbounds double, ptr %1229, i64 %1230
  %1232 = load double, ptr %1231, align 8, !tbaa !11
  %1233 = fsub double %1227, %1232
  %1234 = fmul double 2.000000e+00, %1233
  %1235 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %28, i32 0, i32 6
  %1236 = load ptr, ptr %1235, align 8, !tbaa !15
  %1237 = load i64, ptr %22, align 8, !tbaa !13
  %1238 = getelementptr inbounds ptr, ptr %1236, i64 %1237
  %1239 = load ptr, ptr %1238, align 8, !tbaa !9
  %1240 = load i64, ptr %23, align 8, !tbaa !13
  %1241 = getelementptr inbounds double, ptr %1239, i64 %1240
  %1242 = load double, ptr %1241, align 8, !tbaa !11
  %1243 = call double @llvm.fmuladd.f64(double %1234, double %1242, double %1226)
  %1244 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 63
  %1245 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1244, i32 0, i32 4
  %1246 = load ptr, ptr %1245, align 8, !tbaa !15
  %1247 = load i64, ptr %23, align 8, !tbaa !13
  %1248 = getelementptr inbounds double, ptr %1246, i64 %1247
  store double %1243, ptr %1248, align 8, !tbaa !11
  br label %1249

1249:                                             ; preds = %1220
  %1250 = load i64, ptr %23, align 8, !tbaa !13
  %1251 = add nsw i64 %1250, 1
  store i64 %1251, ptr %23, align 8, !tbaa !13
  br label %1215, !llvm.loop !85

1252:                                             ; preds = %1215
  br label %1253

1253:                                             ; preds = %1252
  %1254 = load i64, ptr %22, align 8, !tbaa !13
  %1255 = add nsw i64 %1254, 1
  store i64 %1255, ptr %22, align 8, !tbaa !13
  br label %1185, !llvm.loop !86

1256:                                             ; preds = %1185
  %1257 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 53
  store i64 0, ptr %1257, align 8, !tbaa !67
  br label %1053, !llvm.loop !71

1258:                                             ; preds = %1114
  %1259 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 53
  %1260 = load i64, ptr %1259, align 8, !tbaa !67
  %1261 = icmp eq i64 %1260, 3
  br i1 %1261, label %1262, label %1469

1262:                                             ; preds = %1258
  %1263 = load i64, ptr %34, align 8, !tbaa !13
  %1264 = icmp ne i64 %1263, 1
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1264, ptr noundef @.str.19, i32 noundef 44428, ptr noundef @.str.554)
  %1265 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 56
  %1266 = load i64, ptr %1265, align 8, !tbaa !72
  %1267 = icmp ne i64 %1266, 1
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1267, ptr noundef @.str.19, i32 noundef 44429, ptr noundef @.str.555)
  %1268 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 57
  %1269 = load i64, ptr %1268, align 8, !tbaa !73
  %1270 = icmp ne i64 %1269, 1
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1270, ptr noundef @.str.19, i32 noundef 44430, ptr noundef @.str.556)
  %1271 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 58
  %1272 = load i64, ptr %1271, align 8, !tbaa !74
  %1273 = load i64, ptr %16, align 8, !tbaa !13
  %1274 = icmp ne i64 %1272, %1273
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1274, ptr noundef @.str.19, i32 noundef 44431, ptr noundef @.str.557)
  %1275 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 59
  %1276 = load i64, ptr %1275, align 8, !tbaa !75
  %1277 = icmp ne i64 %1276, 0
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1277, ptr noundef @.str.19, i32 noundef 44432, ptr noundef @.str.558)
  %1278 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 60
  %1279 = load i64, ptr %1278, align 8, !tbaa !87
  %1280 = icmp slt i64 %1279, 2
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1280, ptr noundef @.str.19, i32 noundef 44433, ptr noundef @.str.559)
  %1281 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 61
  %1282 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1281, i32 0, i32 0
  %1283 = load i64, ptr %1282, align 8, !tbaa !76
  %1284 = load i64, ptr %16, align 8, !tbaa !13
  %1285 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 60
  %1286 = load i64, ptr %1285, align 8, !tbaa !87
  %1287 = mul nsw i64 %1286, 2
  %1288 = load i64, ptr %16, align 8, !tbaa !13
  %1289 = mul nsw i64 %1287, %1288
  %1290 = add nsw i64 %1284, %1289
  %1291 = icmp slt i64 %1283, %1290
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1291, ptr noundef @.str.19, i32 noundef 44434, ptr noundef @.str.560)
  %1292 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 62
  %1293 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1292, i32 0, i32 0
  %1294 = load i64, ptr %1293, align 8, !tbaa !77
  %1295 = icmp slt i64 %1294, 1
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1295, ptr noundef @.str.19, i32 noundef 44435, ptr noundef @.str.561)
  %1296 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 63
  %1297 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1296, i32 0, i32 0
  %1298 = load i64, ptr %1297, align 8, !tbaa !78
  %1299 = load i64, ptr %16, align 8, !tbaa !13
  %1300 = icmp slt i64 %1298, %1299
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1300, ptr noundef @.str.19, i32 noundef 44436, ptr noundef @.str.562)
  %1301 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 65
  %1302 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1301, i32 0, i32 0
  %1303 = load i64, ptr %1302, align 8, !tbaa !79
  %1304 = load i64, ptr %16, align 8, !tbaa !13
  %1305 = icmp slt i64 %1303, %1304
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1305, ptr noundef @.str.19, i32 noundef 44437, ptr noundef @.str.563)
  %1306 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 68
  %1307 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1306, i32 0, i32 0
  %1308 = load i64, ptr %1307, align 8, !tbaa !80
  %1309 = load i64, ptr %16, align 8, !tbaa !13
  %1310 = icmp slt i64 %1308, %1309
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1310, ptr noundef @.str.19, i32 noundef 44438, ptr noundef @.str.564)
  %1311 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 66
  %1312 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1311, i32 0, i32 0
  %1313 = load i64, ptr %1312, align 8, !tbaa !81
  %1314 = icmp slt i64 %1313, 0
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1314, ptr noundef @.str.19, i32 noundef 44439, ptr noundef @.str.565)
  %1315 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 67
  %1316 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1315, i32 0, i32 0
  %1317 = load i64, ptr %1316, align 8, !tbaa !82
  %1318 = icmp slt i64 %1317, 1
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1318, ptr noundef @.str.19, i32 noundef 44440, ptr noundef @.str.566)
  %1319 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 69
  %1320 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1319, i32 0, i32 0
  %1321 = load i64, ptr %1320, align 8, !tbaa !83
  %1322 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 57
  %1323 = load i64, ptr %1322, align 8, !tbaa !73
  %1324 = icmp slt i64 %1321, %1323
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1324, ptr noundef @.str.19, i32 noundef 44441, ptr noundef @.str.567)
  %1325 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 69
  %1326 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1325, i32 0, i32 1
  %1327 = load i64, ptr %1326, align 8, !tbaa !84
  %1328 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 58
  %1329 = load i64, ptr %1328, align 8, !tbaa !74
  %1330 = icmp slt i64 %1327, %1329
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1330, ptr noundef @.str.19, i32 noundef 44442, ptr noundef @.str.568)
  %1331 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 62
  %1332 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1331, i32 0, i32 4
  %1333 = load ptr, ptr %1332, align 8, !tbaa !15
  %1334 = getelementptr inbounds double, ptr %1333, i64 0
  store double 0.000000e+00, ptr %1334, align 8, !tbaa !11
  %1335 = load i64, ptr %16, align 8, !tbaa !13
  %1336 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 63
  %1337 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl5rsetvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1335, double noundef 0.000000e+00, ptr noundef %1336, ptr noundef %1337)
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %1338

1338:                                             ; preds = %1464, %1262
  %1339 = load i64, ptr %22, align 8, !tbaa !13
  %1340 = load i64, ptr %16, align 8, !tbaa !13
  %1341 = sub nsw i64 %1340, 1
  %1342 = icmp sle i64 %1339, %1341
  br i1 %1342, label %1343, label %1467

1343:                                             ; preds = %1338
  %1344 = load i64, ptr %16, align 8, !tbaa !13
  %1345 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 61
  %1346 = load i64, ptr %22, align 8, !tbaa !13
  %1347 = load ptr, ptr %4, align 8, !tbaa !9
  %1348 = call noundef double @_ZN11alglib_impl6rdotvrElPKNS_9ae_vectorEPKNS_9ae_matrixElPNS_8ae_stateE(i64 noundef %1344, ptr noundef %1345, ptr noundef %28, i64 noundef %1346, ptr noundef %1347)
  store double %1348, ptr %25, align 8, !tbaa !11
  %1349 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 62
  %1350 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1349, i32 0, i32 4
  %1351 = load ptr, ptr %1350, align 8, !tbaa !15
  %1352 = getelementptr inbounds double, ptr %1351, i64 0
  %1353 = load double, ptr %1352, align 8, !tbaa !11
  %1354 = load double, ptr %25, align 8, !tbaa !11
  %1355 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %20, i32 0, i32 4
  %1356 = load ptr, ptr %1355, align 8, !tbaa !15
  %1357 = load i64, ptr %22, align 8, !tbaa !13
  %1358 = getelementptr inbounds double, ptr %1356, i64 %1357
  %1359 = load double, ptr %1358, align 8, !tbaa !11
  %1360 = fsub double %1354, %1359
  %1361 = load ptr, ptr %4, align 8, !tbaa !9
  %1362 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1360, ptr noundef %1361)
  %1363 = fadd double %1353, %1362
  %1364 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 62
  %1365 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1364, i32 0, i32 4
  %1366 = load ptr, ptr %1365, align 8, !tbaa !15
  %1367 = getelementptr inbounds double, ptr %1366, i64 0
  store double %1363, ptr %1367, align 8, !tbaa !11
  store i64 0, ptr %23, align 8, !tbaa !13
  br label %1368

1368:                                             ; preds = %1460, %1343
  %1369 = load i64, ptr %23, align 8, !tbaa !13
  %1370 = load i64, ptr %16, align 8, !tbaa !13
  %1371 = sub nsw i64 %1370, 1
  %1372 = icmp sle i64 %1369, %1371
  br i1 %1372, label %1373, label %1463

1373:                                             ; preds = %1368
  store i64 0, ptr %24, align 8, !tbaa !13
  br label %1374

1374:                                             ; preds = %1456, %1373
  %1375 = load i64, ptr %24, align 8, !tbaa !13
  %1376 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 60
  %1377 = load i64, ptr %1376, align 8, !tbaa !87
  %1378 = sub nsw i64 %1377, 1
  %1379 = icmp sle i64 %1375, %1378
  br i1 %1379, label %1380, label %1459

1380:                                             ; preds = %1374
  %1381 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 61
  %1382 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1381, i32 0, i32 4
  %1383 = load ptr, ptr %1382, align 8, !tbaa !15
  %1384 = load i64, ptr %16, align 8, !tbaa !13
  %1385 = load i64, ptr %23, align 8, !tbaa !13
  %1386 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 60
  %1387 = load i64, ptr %1386, align 8, !tbaa !87
  %1388 = mul nsw i64 %1385, %1387
  %1389 = mul nsw i64 %1388, 2
  %1390 = add nsw i64 %1384, %1389
  %1391 = load i64, ptr %24, align 8, !tbaa !13
  %1392 = mul nsw i64 2, %1391
  %1393 = add nsw i64 %1390, %1392
  %1394 = add nsw i64 %1393, 0
  %1395 = getelementptr inbounds double, ptr %1383, i64 %1394
  %1396 = load double, ptr %1395, align 8, !tbaa !11
  %1397 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 61
  %1398 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1397, i32 0, i32 4
  %1399 = load ptr, ptr %1398, align 8, !tbaa !15
  %1400 = load i64, ptr %23, align 8, !tbaa !13
  %1401 = getelementptr inbounds double, ptr %1399, i64 %1400
  %1402 = load double, ptr %1401, align 8, !tbaa !11
  %1403 = fsub double %1396, %1402
  store double %1403, ptr %26, align 8, !tbaa !11
  %1404 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 61
  %1405 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1404, i32 0, i32 4
  %1406 = load ptr, ptr %1405, align 8, !tbaa !15
  %1407 = load i64, ptr %16, align 8, !tbaa !13
  %1408 = load i64, ptr %23, align 8, !tbaa !13
  %1409 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 60
  %1410 = load i64, ptr %1409, align 8, !tbaa !87
  %1411 = mul nsw i64 %1408, %1410
  %1412 = mul nsw i64 %1411, 2
  %1413 = add nsw i64 %1407, %1412
  %1414 = load i64, ptr %24, align 8, !tbaa !13
  %1415 = mul nsw i64 2, %1414
  %1416 = add nsw i64 %1413, %1415
  %1417 = add nsw i64 %1416, 1
  %1418 = getelementptr inbounds double, ptr %1406, i64 %1417
  %1419 = load double, ptr %1418, align 8, !tbaa !11
  store double %1419, ptr %27, align 8, !tbaa !11
  %1420 = load double, ptr %27, align 8, !tbaa !11
  %1421 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1420, double noundef 0.000000e+00)
  br i1 %1421, label %1422, label %1423

1422:                                             ; preds = %1380
  br label %1456

1423:                                             ; preds = %1380
  %1424 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 63
  %1425 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1424, i32 0, i32 4
  %1426 = load ptr, ptr %1425, align 8, !tbaa !15
  %1427 = load i64, ptr %23, align 8, !tbaa !13
  %1428 = getelementptr inbounds double, ptr %1426, i64 %1427
  %1429 = load double, ptr %1428, align 8, !tbaa !11
  %1430 = load double, ptr %25, align 8, !tbaa !11
  %1431 = load double, ptr %26, align 8, !tbaa !11
  %1432 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %28, i32 0, i32 6
  %1433 = load ptr, ptr %1432, align 8, !tbaa !15
  %1434 = load i64, ptr %22, align 8, !tbaa !13
  %1435 = getelementptr inbounds ptr, ptr %1433, i64 %1434
  %1436 = load ptr, ptr %1435, align 8, !tbaa !9
  %1437 = load i64, ptr %23, align 8, !tbaa !13
  %1438 = getelementptr inbounds double, ptr %1436, i64 %1437
  %1439 = load double, ptr %1438, align 8, !tbaa !11
  %1440 = call double @llvm.fmuladd.f64(double %1431, double %1439, double %1430)
  %1441 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %20, i32 0, i32 4
  %1442 = load ptr, ptr %1441, align 8, !tbaa !15
  %1443 = load i64, ptr %22, align 8, !tbaa !13
  %1444 = getelementptr inbounds double, ptr %1442, i64 %1443
  %1445 = load double, ptr %1444, align 8, !tbaa !11
  %1446 = fsub double %1440, %1445
  %1447 = load ptr, ptr %4, align 8, !tbaa !9
  %1448 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1446, ptr noundef %1447)
  %1449 = load double, ptr %27, align 8, !tbaa !11
  %1450 = call double @llvm.fmuladd.f64(double %1448, double %1449, double %1429)
  %1451 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 63
  %1452 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1451, i32 0, i32 4
  %1453 = load ptr, ptr %1452, align 8, !tbaa !15
  %1454 = load i64, ptr %23, align 8, !tbaa !13
  %1455 = getelementptr inbounds double, ptr %1453, i64 %1454
  store double %1450, ptr %1455, align 8, !tbaa !11
  br label %1456

1456:                                             ; preds = %1423, %1422
  %1457 = load i64, ptr %24, align 8, !tbaa !13
  %1458 = add nsw i64 %1457, 1
  store i64 %1458, ptr %24, align 8, !tbaa !13
  br label %1374, !llvm.loop !88

1459:                                             ; preds = %1374
  br label %1460

1460:                                             ; preds = %1459
  %1461 = load i64, ptr %23, align 8, !tbaa !13
  %1462 = add nsw i64 %1461, 1
  store i64 %1462, ptr %23, align 8, !tbaa !13
  br label %1368, !llvm.loop !89

1463:                                             ; preds = %1368
  br label %1464

1464:                                             ; preds = %1463
  %1465 = load i64, ptr %22, align 8, !tbaa !13
  %1466 = add nsw i64 %1465, 1
  store i64 %1466, ptr %22, align 8, !tbaa !13
  br label %1338, !llvm.loop !90

1467:                                             ; preds = %1338
  %1468 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 53
  store i64 0, ptr %1468, align 8, !tbaa !67
  br label %1053, !llvm.loop !71

1469:                                             ; preds = %1258
  %1470 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext false, ptr noundef @.str.569, ptr noundef %1470)
  br label %1053, !llvm.loop !71

1471:                                             ; preds = %1053
  %1472 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgsresultsEPKNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef %31, ptr noundef %18, ptr noundef %32, ptr noundef %1472)
  %1473 = getelementptr inbounds %"struct.alglib_impl::minlbfgsreport", ptr %32, i32 0, i32 2
  %1474 = load i64, ptr %1473, align 8, !tbaa !38
  %1475 = icmp sle i64 %1474, 0
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1475, ptr noundef @.str.19, i32 noundef 44469, ptr noundef @.str.570)
  %1476 = load i8, ptr %35, align 1, !tbaa !5, !range !32, !noundef !33
  %1477 = trunc i8 %1476 to i1
  br i1 %1477, label %1478, label %1482

1478:                                             ; preds = %1471
  %1479 = load i8, ptr %36, align 1, !tbaa !5, !range !32, !noundef !33
  %1480 = trunc i8 %1479 to i1
  %1481 = xor i1 %1480, true
  br label %1482

1482:                                             ; preds = %1478, %1471
  %1483 = phi i1 [ false, %1471 ], [ %1481, %1478 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1483, ptr noundef @.str.19, i32 noundef 44470, ptr noundef @.str.571)
  %1484 = load i8, ptr %36, align 1, !tbaa !5, !range !32, !noundef !33
  %1485 = trunc i8 %1484 to i1
  br i1 %1485, label %1486, label %1490

1486:                                             ; preds = %1482
  %1487 = load i8, ptr %35, align 1, !tbaa !5, !range !32, !noundef !33
  %1488 = trunc i8 %1487 to i1
  %1489 = xor i1 %1488, true
  br label %1490

1490:                                             ; preds = %1486, %1482
  %1491 = phi i1 [ false, %1482 ], [ %1489, %1486 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1491, ptr noundef @.str.19, i32 noundef 44471, ptr noundef @.str.572)
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %1492

1492:                                             ; preds = %1512, %1490
  %1493 = load i64, ptr %22, align 8, !tbaa !13
  %1494 = load i64, ptr %16, align 8, !tbaa !13
  %1495 = sub nsw i64 %1494, 1
  %1496 = icmp sle i64 %1493, %1495
  br i1 %1496, label %1497, label %1515

1497:                                             ; preds = %1492
  %1498 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %1499 = load ptr, ptr %1498, align 8, !tbaa !15
  %1500 = load i64, ptr %22, align 8, !tbaa !13
  %1501 = getelementptr inbounds double, ptr %1499, i64 %1500
  %1502 = load double, ptr %1501, align 8, !tbaa !11
  %1503 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %19, i32 0, i32 4
  %1504 = load ptr, ptr %1503, align 8, !tbaa !15
  %1505 = load i64, ptr %22, align 8, !tbaa !13
  %1506 = getelementptr inbounds double, ptr %1504, i64 %1505
  %1507 = load double, ptr %1506, align 8, !tbaa !11
  %1508 = fsub double %1502, %1507
  %1509 = load ptr, ptr %4, align 8, !tbaa !9
  %1510 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1508, ptr noundef %1509)
  %1511 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1510, double noundef 1.000000e-03)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1511, ptr noundef @.str.19, i32 noundef 44474, ptr noundef @.str.573)
  br label %1512

1512:                                             ; preds = %1497
  %1513 = load i64, ptr %22, align 8, !tbaa !13
  %1514 = add nsw i64 %1513, 1
  store i64 %1514, ptr %22, align 8, !tbaa !13
  br label %1492, !llvm.loop !91

1515:                                             ; preds = %1492
  br label %1516

1516:                                             ; preds = %1515
  %1517 = load i64, ptr %34, align 8, !tbaa !13
  %1518 = add nsw i64 %1517, 1
  store i64 %1518, ptr %34, align 8, !tbaa !13
  br label %1008, !llvm.loop !92

1519:                                             ; preds = %1008
  br label %1520

1520:                                             ; preds = %1519
  %1521 = load i64, ptr %17, align 8, !tbaa !13
  %1522 = add nsw i64 %1521, 1
  store i64 %1522, ptr %17, align 8, !tbaa !13
  br label %1003, !llvm.loop !93

1523:                                             ; preds = %1003
  br label %1524

1524:                                             ; preds = %1523
  %1525 = load i64, ptr %16, align 8, !tbaa !13
  %1526 = add nsw i64 %1525, 1
  store i64 %1526, ptr %16, align 8, !tbaa !13
  br label %897, !llvm.loop !94

1527:                                             ; preds = %897
  store double 0x3EB0C6F7A0B5ED8D, ptr %33, align 8, !tbaa !11
  store i64 0, ptr %34, align 8, !tbaa !13
  br label %1528

1528:                                             ; preds = %1725, %1527
  %1529 = load i64, ptr %34, align 8, !tbaa !13
  %1530 = icmp sle i64 %1529, 1
  br i1 %1530, label %1531, label %1728

1531:                                             ; preds = %1528
  %1532 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %18, i64 noundef 3, ptr noundef %1532)
  store i64 3, ptr %16, align 8, !tbaa !13
  store i64 2, ptr %17, align 8, !tbaa !13
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %1533

1533:                                             ; preds = %1544, %1531
  %1534 = load i64, ptr %22, align 8, !tbaa !13
  %1535 = icmp sle i64 %1534, 2
  br i1 %1535, label %1536, label %1547

1536:                                             ; preds = %1533
  %1537 = load ptr, ptr %4, align 8, !tbaa !9
  %1538 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1537)
  %1539 = call double @llvm.fmuladd.f64(double 6.000000e+00, double %1538, double -3.000000e+00)
  %1540 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %1541 = load ptr, ptr %1540, align 8, !tbaa !15
  %1542 = load i64, ptr %22, align 8, !tbaa !13
  %1543 = getelementptr inbounds double, ptr %1541, i64 %1542
  store double %1539, ptr %1543, align 8, !tbaa !11
  br label %1544

1544:                                             ; preds = %1536
  %1545 = load i64, ptr %22, align 8, !tbaa !13
  %1546 = add nsw i64 %1545, 1
  store i64 %1546, ptr %22, align 8, !tbaa !13
  br label %1533, !llvm.loop !95

1547:                                             ; preds = %1533
  %1548 = load i64, ptr %34, align 8, !tbaa !13
  %1549 = icmp eq i64 %1548, 0
  br i1 %1549, label %1550, label %1554

1550:                                             ; preds = %1547
  %1551 = load i64, ptr %16, align 8, !tbaa !13
  %1552 = load i64, ptr %17, align 8, !tbaa !13
  %1553 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14minlbfgscreateEllPKNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %1551, i64 noundef %1552, ptr noundef %18, ptr noundef %31, ptr noundef %1553)
  br label %1554

1554:                                             ; preds = %1550, %1547
  %1555 = load i64, ptr %34, align 8, !tbaa !13
  %1556 = icmp eq i64 %1555, 1
  br i1 %1556, label %1557, label %1562

1557:                                             ; preds = %1554
  %1558 = load i64, ptr %16, align 8, !tbaa !13
  %1559 = load i64, ptr %17, align 8, !tbaa !13
  %1560 = load double, ptr %33, align 8, !tbaa !11
  %1561 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgscreatefEllPKNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %1558, i64 noundef %1559, ptr noundef %18, double noundef %1560, ptr noundef %31, ptr noundef %1561)
  br label %1562

1562:                                             ; preds = %1557, %1554
  %1563 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef %31, double noundef 1.000000e-03, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %1563)
  br label %1564

1564:                                             ; preds = %1567, %1562
  %1565 = load ptr, ptr %4, align 8, !tbaa !9
  %1566 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %31, ptr noundef %1565)
  br i1 %1566, label %1567, label %1569

1567:                                             ; preds = %1564
  %1568 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL26testminlbfgsunit_testfunc3PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef %31, ptr noundef %1568)
  br label %1564, !llvm.loop !96

1569:                                             ; preds = %1564
  %1570 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgsresultsEPKNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef %31, ptr noundef %18, ptr noundef %32, ptr noundef %1570)
  %1571 = load i8, ptr %10, align 1, !tbaa !5, !range !32, !noundef !33
  %1572 = trunc i8 %1571 to i1
  br i1 %1572, label %1577, label %1573

1573:                                             ; preds = %1569
  %1574 = getelementptr inbounds %"struct.alglib_impl::minlbfgsreport", ptr %32, i32 0, i32 2
  %1575 = load i64, ptr %1574, align 8, !tbaa !38
  %1576 = icmp ne i64 %1575, 4
  br label %1577

1577:                                             ; preds = %1573, %1569
  %1578 = phi i1 [ true, %1569 ], [ %1576, %1573 ]
  %1579 = zext i1 %1578 to i8
  store i8 %1579, ptr %10, align 1, !tbaa !5
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %1580

1580:                                             ; preds = %1591, %1577
  %1581 = load i64, ptr %22, align 8, !tbaa !13
  %1582 = icmp sle i64 %1581, 2
  br i1 %1582, label %1583, label %1594

1583:                                             ; preds = %1580
  %1584 = load ptr, ptr %4, align 8, !tbaa !9
  %1585 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1584)
  %1586 = call double @llvm.fmuladd.f64(double 6.000000e+00, double %1585, double -3.000000e+00)
  %1587 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %1588 = load ptr, ptr %1587, align 8, !tbaa !15
  %1589 = load i64, ptr %22, align 8, !tbaa !13
  %1590 = getelementptr inbounds double, ptr %1588, i64 %1589
  store double %1586, ptr %1590, align 8, !tbaa !11
  br label %1591

1591:                                             ; preds = %1583
  %1592 = load i64, ptr %22, align 8, !tbaa !13
  %1593 = add nsw i64 %1592, 1
  store i64 %1593, ptr %22, align 8, !tbaa !13
  br label %1580, !llvm.loop !97

1594:                                             ; preds = %1580
  %1595 = load i64, ptr %34, align 8, !tbaa !13
  %1596 = icmp eq i64 %1595, 0
  br i1 %1596, label %1597, label %1601

1597:                                             ; preds = %1594
  %1598 = load i64, ptr %16, align 8, !tbaa !13
  %1599 = load i64, ptr %17, align 8, !tbaa !13
  %1600 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14minlbfgscreateEllPKNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %1598, i64 noundef %1599, ptr noundef %18, ptr noundef %31, ptr noundef %1600)
  br label %1601

1601:                                             ; preds = %1597, %1594
  %1602 = load i64, ptr %34, align 8, !tbaa !13
  %1603 = icmp eq i64 %1602, 1
  br i1 %1603, label %1604, label %1609

1604:                                             ; preds = %1601
  %1605 = load i64, ptr %16, align 8, !tbaa !13
  %1606 = load i64, ptr %17, align 8, !tbaa !13
  %1607 = load double, ptr %33, align 8, !tbaa !11
  %1608 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgscreatefEllPKNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %1605, i64 noundef %1606, ptr noundef %18, double noundef %1607, ptr noundef %31, ptr noundef %1608)
  br label %1609

1609:                                             ; preds = %1604, %1601
  %1610 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef %31, double noundef 0.000000e+00, double noundef 1.000000e-03, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %1610)
  br label %1611

1611:                                             ; preds = %1614, %1609
  %1612 = load ptr, ptr %4, align 8, !tbaa !9
  %1613 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %31, ptr noundef %1612)
  br i1 %1613, label %1614, label %1616

1614:                                             ; preds = %1611
  %1615 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL26testminlbfgsunit_testfunc3PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef %31, ptr noundef %1615)
  br label %1611, !llvm.loop !98

1616:                                             ; preds = %1611
  %1617 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgsresultsEPKNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef %31, ptr noundef %18, ptr noundef %32, ptr noundef %1617)
  %1618 = load i8, ptr %10, align 1, !tbaa !5, !range !32, !noundef !33
  %1619 = trunc i8 %1618 to i1
  br i1 %1619, label %1624, label %1620

1620:                                             ; preds = %1616
  %1621 = getelementptr inbounds %"struct.alglib_impl::minlbfgsreport", ptr %32, i32 0, i32 2
  %1622 = load i64, ptr %1621, align 8, !tbaa !38
  %1623 = icmp ne i64 %1622, 1
  br label %1624

1624:                                             ; preds = %1620, %1616
  %1625 = phi i1 [ true, %1616 ], [ %1623, %1620 ]
  %1626 = zext i1 %1625 to i8
  store i8 %1626, ptr %10, align 1, !tbaa !5
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %1627

1627:                                             ; preds = %1638, %1624
  %1628 = load i64, ptr %22, align 8, !tbaa !13
  %1629 = icmp sle i64 %1628, 2
  br i1 %1629, label %1630, label %1641

1630:                                             ; preds = %1627
  %1631 = load ptr, ptr %4, align 8, !tbaa !9
  %1632 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1631)
  %1633 = call double @llvm.fmuladd.f64(double 6.000000e+00, double %1632, double -3.000000e+00)
  %1634 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %1635 = load ptr, ptr %1634, align 8, !tbaa !15
  %1636 = load i64, ptr %22, align 8, !tbaa !13
  %1637 = getelementptr inbounds double, ptr %1635, i64 %1636
  store double %1633, ptr %1637, align 8, !tbaa !11
  br label %1638

1638:                                             ; preds = %1630
  %1639 = load i64, ptr %22, align 8, !tbaa !13
  %1640 = add nsw i64 %1639, 1
  store i64 %1640, ptr %22, align 8, !tbaa !13
  br label %1627, !llvm.loop !99

1641:                                             ; preds = %1627
  %1642 = load i64, ptr %34, align 8, !tbaa !13
  %1643 = icmp eq i64 %1642, 0
  br i1 %1643, label %1644, label %1648

1644:                                             ; preds = %1641
  %1645 = load i64, ptr %16, align 8, !tbaa !13
  %1646 = load i64, ptr %17, align 8, !tbaa !13
  %1647 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14minlbfgscreateEllPKNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %1645, i64 noundef %1646, ptr noundef %18, ptr noundef %31, ptr noundef %1647)
  br label %1648

1648:                                             ; preds = %1644, %1641
  %1649 = load i64, ptr %34, align 8, !tbaa !13
  %1650 = icmp eq i64 %1649, 1
  br i1 %1650, label %1651, label %1656

1651:                                             ; preds = %1648
  %1652 = load i64, ptr %16, align 8, !tbaa !13
  %1653 = load i64, ptr %17, align 8, !tbaa !13
  %1654 = load double, ptr %33, align 8, !tbaa !11
  %1655 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgscreatefEllPKNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %1652, i64 noundef %1653, ptr noundef %18, double noundef %1654, ptr noundef %31, ptr noundef %1655)
  br label %1656

1656:                                             ; preds = %1651, %1648
  %1657 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef %31, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 1.000000e-03, i64 noundef 0, ptr noundef %1657)
  br label %1658

1658:                                             ; preds = %1661, %1656
  %1659 = load ptr, ptr %4, align 8, !tbaa !9
  %1660 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %31, ptr noundef %1659)
  br i1 %1660, label %1661, label %1663

1661:                                             ; preds = %1658
  %1662 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL26testminlbfgsunit_testfunc3PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef %31, ptr noundef %1662)
  br label %1658, !llvm.loop !100

1663:                                             ; preds = %1658
  %1664 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgsresultsEPKNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef %31, ptr noundef %18, ptr noundef %32, ptr noundef %1664)
  %1665 = load i8, ptr %10, align 1, !tbaa !5, !range !32, !noundef !33
  %1666 = trunc i8 %1665 to i1
  br i1 %1666, label %1671, label %1667

1667:                                             ; preds = %1663
  %1668 = getelementptr inbounds %"struct.alglib_impl::minlbfgsreport", ptr %32, i32 0, i32 2
  %1669 = load i64, ptr %1668, align 8, !tbaa !38
  %1670 = icmp ne i64 %1669, 2
  br label %1671

1671:                                             ; preds = %1667, %1663
  %1672 = phi i1 [ true, %1663 ], [ %1670, %1667 ]
  %1673 = zext i1 %1672 to i8
  store i8 %1673, ptr %10, align 1, !tbaa !5
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %1674

1674:                                             ; preds = %1685, %1671
  %1675 = load i64, ptr %22, align 8, !tbaa !13
  %1676 = icmp sle i64 %1675, 2
  br i1 %1676, label %1677, label %1688

1677:                                             ; preds = %1674
  %1678 = load ptr, ptr %4, align 8, !tbaa !9
  %1679 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1678)
  %1680 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %1679, double -1.000000e+00)
  %1681 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %1682 = load ptr, ptr %1681, align 8, !tbaa !15
  %1683 = load i64, ptr %22, align 8, !tbaa !13
  %1684 = getelementptr inbounds double, ptr %1682, i64 %1683
  store double %1680, ptr %1684, align 8, !tbaa !11
  br label %1685

1685:                                             ; preds = %1677
  %1686 = load i64, ptr %22, align 8, !tbaa !13
  %1687 = add nsw i64 %1686, 1
  store i64 %1687, ptr %22, align 8, !tbaa !13
  br label %1674, !llvm.loop !101

1688:                                             ; preds = %1674
  %1689 = load i64, ptr %34, align 8, !tbaa !13
  %1690 = icmp eq i64 %1689, 0
  br i1 %1690, label %1691, label %1695

1691:                                             ; preds = %1688
  %1692 = load i64, ptr %16, align 8, !tbaa !13
  %1693 = load i64, ptr %17, align 8, !tbaa !13
  %1694 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14minlbfgscreateEllPKNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %1692, i64 noundef %1693, ptr noundef %18, ptr noundef %31, ptr noundef %1694)
  br label %1695

1695:                                             ; preds = %1691, %1688
  %1696 = load i64, ptr %34, align 8, !tbaa !13
  %1697 = icmp eq i64 %1696, 1
  br i1 %1697, label %1698, label %1703

1698:                                             ; preds = %1695
  %1699 = load i64, ptr %16, align 8, !tbaa !13
  %1700 = load i64, ptr %17, align 8, !tbaa !13
  %1701 = load double, ptr %33, align 8, !tbaa !11
  %1702 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgscreatefEllPKNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %1699, i64 noundef %1700, ptr noundef %18, double noundef %1701, ptr noundef %31, ptr noundef %1702)
  br label %1703

1703:                                             ; preds = %1698, %1695
  %1704 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef %31, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 10, ptr noundef %1704)
  br label %1705

1705:                                             ; preds = %1708, %1703
  %1706 = load ptr, ptr %4, align 8, !tbaa !9
  %1707 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %31, ptr noundef %1706)
  br i1 %1707, label %1708, label %1710

1708:                                             ; preds = %1705
  %1709 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL26testminlbfgsunit_testfunc3PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef %31, ptr noundef %1709)
  br label %1705, !llvm.loop !102

1710:                                             ; preds = %1705
  %1711 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgsresultsEPKNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef %31, ptr noundef %18, ptr noundef %32, ptr noundef %1711)
  %1712 = load i8, ptr %10, align 1, !tbaa !5, !range !32, !noundef !33
  %1713 = trunc i8 %1712 to i1
  br i1 %1713, label %1722, label %1714

1714:                                             ; preds = %1710
  %1715 = getelementptr inbounds %"struct.alglib_impl::minlbfgsreport", ptr %32, i32 0, i32 2
  %1716 = load i64, ptr %1715, align 8, !tbaa !38
  %1717 = icmp ne i64 %1716, 5
  br i1 %1717, label %1722, label %1718

1718:                                             ; preds = %1714
  %1719 = getelementptr inbounds %"struct.alglib_impl::minlbfgsreport", ptr %32, i32 0, i32 0
  %1720 = load i64, ptr %1719, align 8, !tbaa !103
  %1721 = icmp ne i64 %1720, 10
  br label %1722

1722:                                             ; preds = %1718, %1714, %1710
  %1723 = phi i1 [ true, %1714 ], [ true, %1710 ], [ %1721, %1718 ]
  %1724 = zext i1 %1723 to i8
  store i8 %1724, ptr %10, align 1, !tbaa !5
  br label %1725

1725:                                             ; preds = %1722
  %1726 = load i64, ptr %34, align 8, !tbaa !13
  %1727 = add nsw i64 %1726, 1
  store i64 %1727, ptr %34, align 8, !tbaa !13
  br label %1528, !llvm.loop !104

1728:                                             ; preds = %1528
  %1729 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %18, i64 noundef 3, ptr noundef %1729)
  store i64 3, ptr %16, align 8, !tbaa !13
  store i64 2, ptr %17, align 8, !tbaa !13
  store i64 10000, ptr %30, align 8, !tbaa !13
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %1730

1730:                                             ; preds = %1741, %1728
  %1731 = load i64, ptr %22, align 8, !tbaa !13
  %1732 = icmp sle i64 %1731, 2
  br i1 %1732, label %1733, label %1744

1733:                                             ; preds = %1730
  %1734 = load ptr, ptr %4, align 8, !tbaa !9
  %1735 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1734)
  %1736 = call double @llvm.fmuladd.f64(double 6.000000e+00, double %1735, double -3.000000e+00)
  %1737 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %1738 = load ptr, ptr %1737, align 8, !tbaa !15
  %1739 = load i64, ptr %22, align 8, !tbaa !13
  %1740 = getelementptr inbounds double, ptr %1738, i64 %1739
  store double %1736, ptr %1740, align 8, !tbaa !11
  br label %1741

1741:                                             ; preds = %1733
  %1742 = load i64, ptr %22, align 8, !tbaa !13
  %1743 = add nsw i64 %1742, 1
  store i64 %1743, ptr %22, align 8, !tbaa !13
  br label %1730, !llvm.loop !105

1744:                                             ; preds = %1730
  %1745 = load i64, ptr %16, align 8, !tbaa !13
  %1746 = load i64, ptr %17, align 8, !tbaa !13
  %1747 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14minlbfgscreateEllPKNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %1745, i64 noundef %1746, ptr noundef %18, ptr noundef %31, ptr noundef %1747)
  %1748 = load i64, ptr %30, align 8, !tbaa !13
  %1749 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef %31, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef %1748, ptr noundef %1749)
  br label %1750

1750:                                             ; preds = %1753, %1744
  %1751 = load ptr, ptr %4, align 8, !tbaa !9
  %1752 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %31, ptr noundef %1751)
  br i1 %1752, label %1753, label %1846

1753:                                             ; preds = %1750
  %1754 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 47
  %1755 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1754, i32 0, i32 4
  %1756 = load ptr, ptr %1755, align 8, !tbaa !15
  %1757 = getelementptr inbounds double, ptr %1756, i64 0
  %1758 = load double, ptr %1757, align 8, !tbaa !11
  %1759 = load ptr, ptr %4, align 8, !tbaa !9
  %1760 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %1758, ptr noundef %1759)
  %1761 = fsub double %1760, 2.000000e+00
  %1762 = load ptr, ptr %4, align 8, !tbaa !9
  %1763 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1761, ptr noundef %1762)
  %1764 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 47
  %1765 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1764, i32 0, i32 4
  %1766 = load ptr, ptr %1765, align 8, !tbaa !15
  %1767 = getelementptr inbounds double, ptr %1766, i64 1
  %1768 = load double, ptr %1767, align 8, !tbaa !11
  %1769 = load ptr, ptr %4, align 8, !tbaa !9
  %1770 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1768, ptr noundef %1769)
  %1771 = fadd double %1763, %1770
  %1772 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 47
  %1773 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1772, i32 0, i32 4
  %1774 = load ptr, ptr %1773, align 8, !tbaa !15
  %1775 = getelementptr inbounds double, ptr %1774, i64 2
  %1776 = load double, ptr %1775, align 8, !tbaa !11
  %1777 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 47
  %1778 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1777, i32 0, i32 4
  %1779 = load ptr, ptr %1778, align 8, !tbaa !15
  %1780 = getelementptr inbounds double, ptr %1779, i64 0
  %1781 = load double, ptr %1780, align 8, !tbaa !11
  %1782 = fsub double %1776, %1781
  %1783 = load ptr, ptr %4, align 8, !tbaa !9
  %1784 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1782, ptr noundef %1783)
  %1785 = fadd double %1771, %1784
  %1786 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 48
  store double %1785, ptr %1786, align 8, !tbaa !35
  %1787 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 47
  %1788 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1787, i32 0, i32 4
  %1789 = load ptr, ptr %1788, align 8, !tbaa !15
  %1790 = getelementptr inbounds double, ptr %1789, i64 0
  %1791 = load double, ptr %1790, align 8, !tbaa !11
  %1792 = load ptr, ptr %4, align 8, !tbaa !9
  %1793 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %1791, ptr noundef %1792)
  %1794 = fsub double %1793, 2.000000e+00
  %1795 = fmul double 2.000000e+00, %1794
  %1796 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 47
  %1797 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1796, i32 0, i32 4
  %1798 = load ptr, ptr %1797, align 8, !tbaa !15
  %1799 = getelementptr inbounds double, ptr %1798, i64 0
  %1800 = load double, ptr %1799, align 8, !tbaa !11
  %1801 = load ptr, ptr %4, align 8, !tbaa !9
  %1802 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %1800, ptr noundef %1801)
  %1803 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 47
  %1804 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1803, i32 0, i32 4
  %1805 = load ptr, ptr %1804, align 8, !tbaa !15
  %1806 = getelementptr inbounds double, ptr %1805, i64 0
  %1807 = load double, ptr %1806, align 8, !tbaa !11
  %1808 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 47
  %1809 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1808, i32 0, i32 4
  %1810 = load ptr, ptr %1809, align 8, !tbaa !15
  %1811 = getelementptr inbounds double, ptr %1810, i64 2
  %1812 = load double, ptr %1811, align 8, !tbaa !11
  %1813 = fsub double %1807, %1812
  %1814 = fmul double 2.000000e+00, %1813
  %1815 = call double @llvm.fmuladd.f64(double %1795, double %1802, double %1814)
  %1816 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 49
  %1817 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1816, i32 0, i32 4
  %1818 = load ptr, ptr %1817, align 8, !tbaa !15
  %1819 = getelementptr inbounds double, ptr %1818, i64 0
  store double %1815, ptr %1819, align 8, !tbaa !11
  %1820 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 47
  %1821 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1820, i32 0, i32 4
  %1822 = load ptr, ptr %1821, align 8, !tbaa !15
  %1823 = getelementptr inbounds double, ptr %1822, i64 1
  %1824 = load double, ptr %1823, align 8, !tbaa !11
  %1825 = fmul double 2.000000e+00, %1824
  %1826 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 49
  %1827 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1826, i32 0, i32 4
  %1828 = load ptr, ptr %1827, align 8, !tbaa !15
  %1829 = getelementptr inbounds double, ptr %1828, i64 1
  store double %1825, ptr %1829, align 8, !tbaa !11
  %1830 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 47
  %1831 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1830, i32 0, i32 4
  %1832 = load ptr, ptr %1831, align 8, !tbaa !15
  %1833 = getelementptr inbounds double, ptr %1832, i64 2
  %1834 = load double, ptr %1833, align 8, !tbaa !11
  %1835 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 47
  %1836 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1835, i32 0, i32 4
  %1837 = load ptr, ptr %1836, align 8, !tbaa !15
  %1838 = getelementptr inbounds double, ptr %1837, i64 0
  %1839 = load double, ptr %1838, align 8, !tbaa !11
  %1840 = fsub double %1834, %1839
  %1841 = fmul double 2.000000e+00, %1840
  %1842 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %31, i32 0, i32 49
  %1843 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1842, i32 0, i32 4
  %1844 = load ptr, ptr %1843, align 8, !tbaa !15
  %1845 = getelementptr inbounds double, ptr %1844, i64 2
  store double %1841, ptr %1845, align 8, !tbaa !11
  br label %1750, !llvm.loop !106

1846:                                             ; preds = %1750
  %1847 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgsresultsEPKNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef %31, ptr noundef %18, ptr noundef %32, ptr noundef %1847)
  %1848 = load i8, ptr %11, align 1, !tbaa !5, !range !32, !noundef !33
  %1849 = trunc i8 %1848 to i1
  br i1 %1849, label %1854, label %1850

1850:                                             ; preds = %1846
  %1851 = getelementptr inbounds %"struct.alglib_impl::minlbfgsreport", ptr %32, i32 0, i32 2
  %1852 = load i64, ptr %1851, align 8, !tbaa !38
  %1853 = icmp sle i64 %1852, 0
  br label %1854

1854:                                             ; preds = %1850, %1846
  %1855 = phi i1 [ true, %1846 ], [ %1853, %1850 ]
  %1856 = zext i1 %1855 to i8
  store i8 %1856, ptr %11, align 1, !tbaa !5
  store i8 0, ptr %15, align 1, !tbaa !5
  %1857 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL29testminlbfgsunit_testoptguardPbPN11alglib_impl8ae_stateE(ptr noundef %15, ptr noundef %1857)
  %1858 = load i8, ptr %7, align 1, !tbaa !5, !range !32, !noundef !33
  %1859 = trunc i8 %1858 to i1
  br i1 %1859, label %1884, label %1860

1860:                                             ; preds = %1854
  %1861 = load i8, ptr %8, align 1, !tbaa !5, !range !32, !noundef !33
  %1862 = trunc i8 %1861 to i1
  br i1 %1862, label %1884, label %1863

1863:                                             ; preds = %1860
  %1864 = load i8, ptr %9, align 1, !tbaa !5, !range !32, !noundef !33
  %1865 = trunc i8 %1864 to i1
  br i1 %1865, label %1884, label %1866

1866:                                             ; preds = %1863
  %1867 = load i8, ptr %10, align 1, !tbaa !5, !range !32, !noundef !33
  %1868 = trunc i8 %1867 to i1
  br i1 %1868, label %1884, label %1869

1869:                                             ; preds = %1866
  %1870 = load i8, ptr %11, align 1, !tbaa !5, !range !32, !noundef !33
  %1871 = trunc i8 %1870 to i1
  br i1 %1871, label %1884, label %1872

1872:                                             ; preds = %1869
  %1873 = load i8, ptr %12, align 1, !tbaa !5, !range !32, !noundef !33
  %1874 = trunc i8 %1873 to i1
  br i1 %1874, label %1884, label %1875

1875:                                             ; preds = %1872
  %1876 = load i8, ptr %13, align 1, !tbaa !5, !range !32, !noundef !33
  %1877 = trunc i8 %1876 to i1
  br i1 %1877, label %1884, label %1878

1878:                                             ; preds = %1875
  %1879 = load i8, ptr %14, align 1, !tbaa !5, !range !32, !noundef !33
  %1880 = trunc i8 %1879 to i1
  br i1 %1880, label %1884, label %1881

1881:                                             ; preds = %1878
  %1882 = load i8, ptr %15, align 1, !tbaa !5, !range !32, !noundef !33
  %1883 = trunc i8 %1882 to i1
  br label %1884

1884:                                             ; preds = %1881, %1878, %1875, %1872, %1869, %1866, %1863, %1860, %1854
  %1885 = phi i1 [ true, %1878 ], [ true, %1875 ], [ true, %1872 ], [ true, %1869 ], [ true, %1866 ], [ true, %1863 ], [ true, %1860 ], [ true, %1854 ], [ %1883, %1881 ]
  %1886 = zext i1 %1885 to i8
  store i8 %1886, ptr %6, align 1, !tbaa !5
  %1887 = load i8, ptr %3, align 1, !tbaa !5, !range !32, !noundef !33
  %1888 = trunc i8 %1887 to i1
  br i1 %1888, label %1971, label %1889

1889:                                             ; preds = %1884
  %1890 = call i32 (ptr, ...) @printf(ptr noundef @.str.574)
  %1891 = call i32 (ptr, ...) @printf(ptr noundef @.str.575)
  %1892 = load i8, ptr %7, align 1, !tbaa !5, !range !32, !noundef !33
  %1893 = trunc i8 %1892 to i1
  br i1 %1893, label %1894, label %1896

1894:                                             ; preds = %1889
  %1895 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1898

1896:                                             ; preds = %1889
  %1897 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1898

1898:                                             ; preds = %1896, %1894
  %1899 = call i32 (ptr, ...) @printf(ptr noundef @.str.576)
  %1900 = load i8, ptr %8, align 1, !tbaa !5, !range !32, !noundef !33
  %1901 = trunc i8 %1900 to i1
  br i1 %1901, label %1902, label %1904

1902:                                             ; preds = %1898
  %1903 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1906

1904:                                             ; preds = %1898
  %1905 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1906

1906:                                             ; preds = %1904, %1902
  %1907 = call i32 (ptr, ...) @printf(ptr noundef @.str.577)
  %1908 = load i8, ptr %9, align 1, !tbaa !5, !range !32, !noundef !33
  %1909 = trunc i8 %1908 to i1
  br i1 %1909, label %1910, label %1912

1910:                                             ; preds = %1906
  %1911 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1914

1912:                                             ; preds = %1906
  %1913 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1914

1914:                                             ; preds = %1912, %1910
  %1915 = call i32 (ptr, ...) @printf(ptr noundef @.str.578)
  %1916 = load i8, ptr %13, align 1, !tbaa !5, !range !32, !noundef !33
  %1917 = trunc i8 %1916 to i1
  br i1 %1917, label %1918, label %1920

1918:                                             ; preds = %1914
  %1919 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1922

1920:                                             ; preds = %1914
  %1921 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1922

1922:                                             ; preds = %1920, %1918
  %1923 = call i32 (ptr, ...) @printf(ptr noundef @.str.579)
  %1924 = load i8, ptr %14, align 1, !tbaa !5, !range !32, !noundef !33
  %1925 = trunc i8 %1924 to i1
  br i1 %1925, label %1926, label %1928

1926:                                             ; preds = %1922
  %1927 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1930

1928:                                             ; preds = %1922
  %1929 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1930

1930:                                             ; preds = %1928, %1926
  %1931 = call i32 (ptr, ...) @printf(ptr noundef @.str.580)
  %1932 = load i8, ptr %10, align 1, !tbaa !5, !range !32, !noundef !33
  %1933 = trunc i8 %1932 to i1
  br i1 %1933, label %1934, label %1936

1934:                                             ; preds = %1930
  %1935 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1938

1936:                                             ; preds = %1930
  %1937 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1938

1938:                                             ; preds = %1936, %1934
  %1939 = call i32 (ptr, ...) @printf(ptr noundef @.str.581)
  %1940 = load i8, ptr %11, align 1, !tbaa !5, !range !32, !noundef !33
  %1941 = trunc i8 %1940 to i1
  br i1 %1941, label %1942, label %1944

1942:                                             ; preds = %1938
  %1943 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1946

1944:                                             ; preds = %1938
  %1945 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1946

1946:                                             ; preds = %1944, %1942
  %1947 = call i32 (ptr, ...) @printf(ptr noundef @.str.528)
  %1948 = load i8, ptr %12, align 1, !tbaa !5, !range !32, !noundef !33
  %1949 = trunc i8 %1948 to i1
  br i1 %1949, label %1950, label %1952

1950:                                             ; preds = %1946
  %1951 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1954

1952:                                             ; preds = %1946
  %1953 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1954

1954:                                             ; preds = %1952, %1950
  %1955 = call i32 (ptr, ...) @printf(ptr noundef @.str.582)
  %1956 = load i8, ptr %15, align 1, !tbaa !5, !range !32, !noundef !33
  %1957 = trunc i8 %1956 to i1
  br i1 %1957, label %1958, label %1960

1958:                                             ; preds = %1954
  %1959 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1962

1960:                                             ; preds = %1954
  %1961 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1962

1962:                                             ; preds = %1960, %1958
  %1963 = load i8, ptr %6, align 1, !tbaa !5, !range !32, !noundef !33
  %1964 = trunc i8 %1963 to i1
  br i1 %1964, label %1965, label %1967

1965:                                             ; preds = %1962
  %1966 = call i32 (ptr, ...) @printf(ptr noundef @.str.15)
  br label %1969

1967:                                             ; preds = %1962
  %1968 = call i32 (ptr, ...) @printf(ptr noundef @.str.16)
  br label %1969

1969:                                             ; preds = %1967, %1965
  %1970 = call i32 (ptr, ...) @printf(ptr noundef @.str.17)
  br label %1971

1971:                                             ; preds = %1969, %1884
  %1972 = load i8, ptr %6, align 1, !tbaa !5, !range !32, !noundef !33
  %1973 = trunc i8 %1972 to i1
  %1974 = xor i1 %1973, true
  %1975 = zext i1 %1974 to i8
  store i8 %1975, ptr %38, align 1, !tbaa !5
  %1976 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1976)
  %1977 = load i8, ptr %38, align 1, !tbaa !5, !range !32, !noundef !33
  %1978 = trunc i8 %1977 to i1
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 10024, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #5
  ret i1 %1978
}

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef, ptr noundef) #1

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

declare void @_ZN11alglib_impl17minlbfgssetstpmaxEPNS_13minlbfgsstateEdPNS_8ae_stateE(ptr noundef, double noundef, ptr noundef) #1

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

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

declare noundef i64 @_ZN11alglib_impl7ae_signEdPNS_8ae_stateE(double noundef, ptr noundef) #1

declare noundef double @_ZN11alglib_impl6rdotvrElPKNS_9ae_vectorEPKNS_9ae_matrixElPNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef) #1

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

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

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

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

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

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 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { 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 #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 = !{!"bool", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"long", !7, i64 0}
!15 = !{!7, !7, i64 0}
!16 = !{!17, !6, i64 2368}
!17 = !{!"_ZTSN11alglib_impl13minlbfgsstateE", !14, i64 0, !14, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !14, i64 40, !6, i64 48, !12, i64 56, !18, i64 64, !12, i64 128, !14, i64 136, !14, i64 144, !14, i64 152, !14, i64 160, !14, i64 168, !18, i64 176, !20, i64 240, !20, i64 320, !18, i64 400, !18, i64 464, !18, i64 528, !12, i64 592, !12, i64 600, !18, i64 608, !12, i64 672, !12, i64 680, !18, i64 688, !14, i64 752, !12, i64 760, !20, i64 768, !18, i64 848, !18, i64 912, !18, i64 976, !20, i64 1040, !14, i64 1120, !21, i64 1128, !22, i64 1592, !12, i64 2040, !12, i64 2048, !12, i64 2056, !12, i64 2064, !12, i64 2072, !12, i64 2080, !18, i64 2088, !18, i64 2152, !14, i64 2216, !6, i64 2224, !18, i64 2232, !12, i64 2296, !18, i64 2304, !6, i64 2368, !6, i64 2369, !6, i64 2370, !14, i64 2376, !18, i64 2384, !12, i64 2448, !14, i64 2456, !14, i64 2464, !14, i64 2472, !14, i64 2480, !14, i64 2488, !18, i64 2496, !18, i64 2560, !18, i64 2624, !23, i64 2688, !18, i64 3056, !18, i64 3120, !18, i64 3184, !18, i64 3248, !20, i64 3312, !23, i64 3392, !12, i64 3760, !24, i64 3768, !14, i64 4032, !14, i64 4040, !14, i64 4048, !26, i64 4056, !14, i64 4248, !27, i64 4256, !18, i64 9960}
!18 = !{!"_ZTSN11alglib_impl9ae_vectorE", !14, i64 0, !14, i64 8, !6, i64 16, !19, i64 24, !7, i64 56}
!19 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24}
!20 = !{!"_ZTSN11alglib_impl9ae_matrixE", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24, !6, i64 32, !19, i64 40, !7, i64 72}
!21 = !{!"_ZTSN11alglib_impl12precbuflbfgsE", !18, i64 0, !18, i64 64, !18, i64 128, !20, i64 192, !18, i64 272, !18, i64 336, !18, i64 400}
!22 = !{!"_ZTSN11alglib_impl14precbuflowrankE", !14, i64 0, !14, i64 8, !18, i64 16, !20, i64 80, !18, i64 160, !20, i64 224, !20, i64 304, !18, i64 384}
!23 = !{!"_ZTSN11alglib_impl12sparsematrixE", !18, i64 0, !18, i64 64, !18, i64 128, !18, i64 192, !18, i64 256, !14, i64 320, !14, i64 328, !14, i64 336, !14, i64 344, !14, i64 352, !14, i64 360}
!24 = !{!"_ZTSN11alglib_impl10rcommstateE", !25, i64 0, !18, i64 8, !18, i64 72, !18, i64 136, !18, i64 200}
!25 = !{!"int", !7, i64 0}
!26 = !{!"_ZTSN11alglib_impl11linminstateE", !6, i64 0, !6, i64 1, !14, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !12, i64 48, !12, i64 56, !12, i64 64, !12, i64 72, !12, i64 80, !12, i64 88, !12, i64 96, !12, i64 104, !12, i64 112, !12, i64 120, !12, i64 128, !12, i64 136, !12, i64 144, !12, i64 152, !12, i64 160, !12, i64 168, !12, i64 176, !12, i64 184}
!27 = !{!"_ZTSN11alglib_impl17smoothnessmonitorE", !14, i64 0, !14, i64 8, !6, i64 16, !18, i64 24, !18, i64 88, !14, i64 152, !18, i64 160, !18, i64 224, !18, i64 288, !20, i64 352, !18, i64 432, !18, i64 496, !14, i64 560, !14, i64 568, !14, i64 576, !12, i64 584, !14, i64 592, !18, i64 600, !18, i64 664, !12, i64 728, !18, i64 736, !18, i64 800, !12, i64 864, !20, i64 872, !20, i64 952, !20, i64 1032, !18, i64 1112, !18, i64 1176, !24, i64 1240, !6, i64 1504, !6, i64 1505, !14, i64 1512, !14, i64 1520, !12, i64 1528, !12, i64 1536, !6, i64 1544, !28, i64 1552, !12, i64 1848, !12, i64 1856, !29, i64 1864, !29, i64 2184, !12, i64 2504, !12, i64 2512, !30, i64 2520, !30, i64 2840, !12, i64 3160, !12, i64 3168, !31, i64 3176, !31, i64 3504, !6, i64 3832, !18, i64 3840, !18, i64 3904, !20, i64 3968, !24, i64 4048, !18, i64 4312, !18, i64 4376, !18, i64 4440, !18, i64 4504, !18, i64 4568, !18, i64 4632, !18, i64 4696, !18, i64 4760, !20, i64 4824, !20, i64 4904, !18, i64 4984, !18, i64 5048, !18, i64 5112, !18, i64 5176, !18, i64 5240, !18, i64 5304, !18, i64 5368, !18, i64 5432, !18, i64 5496, !18, i64 5560, !20, i64 5624}
!28 = !{!"_ZTSN11alglib_impl14optguardreportE", !6, i64 0, !6, i64 1, !14, i64 8, !12, i64 16, !6, i64 24, !6, i64 25, !6, i64 26, !14, i64 32, !12, i64 40, !6, i64 48, !14, i64 56, !14, i64 64, !18, i64 72, !20, i64 136, !20, i64 216}
!29 = !{!"_ZTSN11alglib_impl19optguardnonc0reportE", !6, i64 0, !14, i64 8, !18, i64 16, !18, i64 80, !14, i64 144, !18, i64 152, !18, i64 216, !14, i64 280, !14, i64 288, !14, i64 296, !14, i64 304, !14, i64 312}
!30 = !{!"_ZTSN11alglib_impl24optguardnonc1test0reportE", !6, i64 0, !14, i64 8, !18, i64 16, !18, i64 80, !14, i64 144, !18, i64 152, !18, i64 216, !14, i64 280, !14, i64 288, !14, i64 296, !14, i64 304, !14, i64 312}
!31 = !{!"_ZTSN11alglib_impl24optguardnonc1test1reportE", !6, i64 0, !14, i64 8, !14, i64 16, !18, i64 24, !18, i64 88, !14, i64 152, !18, i64 160, !18, i64 224, !14, i64 288, !14, i64 296, !14, i64 304, !14, i64 312, !14, i64 320}
!32 = !{i8 0, i8 2}
!33 = !{}
!34 = !{!17, !6, i64 2369}
!35 = !{!17, !12, i64 2296}
!36 = distinct !{!36, !37}
!37 = !{!"llvm.loop.mustprogress"}
!38 = !{!39, !14, i64 16}
!39 = !{!"_ZTSN11alglib_impl14minlbfgsreportE", !14, i64 0, !14, i64 8, !14, i64 16}
!40 = distinct !{!40, !37}
!41 = distinct !{!41, !37}
!42 = distinct !{!42, !37}
!43 = distinct !{!43, !37}
!44 = distinct !{!44, !37}
!45 = distinct !{!45, !37}
!46 = distinct !{!46, !37}
!47 = distinct !{!47, !37}
!48 = distinct !{!48, !37}
!49 = distinct !{!49, !37}
!50 = distinct !{!50, !37}
!51 = distinct !{!51, !37}
!52 = distinct !{!52, !37}
!53 = distinct !{!53, !37}
!54 = distinct !{!54, !37}
!55 = distinct !{!55, !37}
!56 = distinct !{!56, !37}
!57 = distinct !{!57, !37}
!58 = distinct !{!58, !37}
!59 = distinct !{!59, !37}
!60 = distinct !{!60, !37}
!61 = distinct !{!61, !37}
!62 = distinct !{!62, !37}
!63 = distinct !{!63, !37}
!64 = distinct !{!64, !37}
!65 = distinct !{!65, !37}
!66 = !{!17, !14, i64 2216}
!67 = !{!17, !14, i64 2376}
!68 = !{!17, !14, i64 2384}
!69 = distinct !{!69, !37}
!70 = !{!17, !12, i64 2448}
!71 = distinct !{!71, !37}
!72 = !{!17, !14, i64 2456}
!73 = !{!17, !14, i64 2464}
!74 = !{!17, !14, i64 2472}
!75 = !{!17, !14, i64 2480}
!76 = !{!17, !14, i64 2496}
!77 = !{!17, !14, i64 2560}
!78 = !{!17, !14, i64 2624}
!79 = !{!17, !14, i64 3056}
!80 = !{!17, !14, i64 3248}
!81 = !{!17, !14, i64 3120}
!82 = !{!17, !14, i64 3184}
!83 = !{!17, !14, i64 3312}
!84 = !{!17, !14, i64 3320}
!85 = distinct !{!85, !37}
!86 = distinct !{!86, !37}
!87 = !{!17, !14, i64 2488}
!88 = distinct !{!88, !37}
!89 = distinct !{!89, !37}
!90 = distinct !{!90, !37}
!91 = distinct !{!91, !37}
!92 = distinct !{!92, !37}
!93 = distinct !{!93, !37}
!94 = distinct !{!94, !37}
!95 = distinct !{!95, !37}
!96 = distinct !{!96, !37}
!97 = distinct !{!97, !37}
!98 = distinct !{!98, !37}
!99 = distinct !{!99, !37}
!100 = distinct !{!100, !37}
!101 = distinct !{!101, !37}
!102 = distinct !{!102, !37}
!103 = !{!39, !14, i64 0}
!104 = distinct !{!104, !37}
!105 = distinct !{!105, !37}
!106 = distinct !{!106, !37}


; 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"

%"struct.alglib_impl::ae_frame" = type { %"struct.alglib_impl::ae_dyn_block" }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%"struct.alglib_impl::ae_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon }
%union.anon = type { ptr }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = type { ptr }
%"struct.alglib_impl::minlbfgsstate" = type { i64, i64, double, double, double, i64, i8, double, %"struct.alglib_impl::ae_vector", double, i64, i64, i64, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, double, %"struct.alglib_impl::ae_vector", double, double, %"struct.alglib_impl::ae_vector", i64, double, %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", i64, %"struct.alglib_impl::precbuflbfgs", %"struct.alglib_impl::precbuflowrank", double, double, double, double, double, double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i8, %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_vector", i8, i8, i8, i64, %"struct.alglib_impl::ae_vector", double, i64, i64, i64, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"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_matrix", %"struct.alglib_impl::sparsematrix", double, %"struct.alglib_impl::rcommstate", i64, i64, i64, %"struct.alglib_impl::linminstate", i64, %"struct.alglib_impl::smoothnessmonitor", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::precbuflbfgs" = type { %"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::precbuflowrank" = type { i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::sparsematrix" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64, i64, i64, i64 }
%"struct.alglib_impl::rcommstate" = type { i32, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::linminstate" = type { i8, i8, i64, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double }
%"struct.alglib_impl::smoothnessmonitor" = type { i64, i64, i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64, double, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::rcommstate", i8, i8, i64, i64, double, double, i8, %"struct.alglib_impl::optguardreport", double, double, %"struct.alglib_impl::optguardnonc0report", %"struct.alglib_impl::optguardnonc0report", double, double, %"struct.alglib_impl::optguardnonc1test0report", %"struct.alglib_impl::optguardnonc1test0report", double, double, %"struct.alglib_impl::optguardnonc1test1report", %"struct.alglib_impl::optguardnonc1test1report", i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::rcommstate", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::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::optguardreport" = type { i8, i8, i64, double, i8, i8, i8, i64, double, i8, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix" }
%"struct.alglib_impl::optguardnonc0report" = type { i8, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64, i64, i64 }
%"struct.alglib_impl::optguardnonc1test0report" = type { i8, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64, i64, i64 }
%"struct.alglib_impl::optguardnonc1test1report" = type { i8, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64, i64, i64 }
%"struct.alglib_impl::minlbfgsreport" = type { i64, i64, i64 }
%"struct.alglib_impl::hqrndstate" = type { i64, i64, i64 }

@.str.2 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.528 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.536 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.537 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.538 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.539 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.540 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.541 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.542 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.543 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.544 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.545 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.546 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.547 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.548 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.549 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.550 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.551 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.552 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.553 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.554 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.555 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.556 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.557 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.558 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.559 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.560 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.561 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.562 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.563 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.564 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.565 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.566 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.567 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.568 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.569 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.570 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.571 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.572 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.573 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.574 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.575 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.576 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.577 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.578 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.579 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.580 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.581 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.582 = external hidden unnamed_addr constant [43 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: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #1

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

; 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 #3

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

declare noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef, double noundef) local_unnamed_addr #3

declare noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef) local_unnamed_addr #3

declare noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef, i64 noundef) local_unnamed_addr #3

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

declare void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef, i64 noundef, i64 noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #3

declare void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #3

declare void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef, ptr noundef) local_unnamed_addr #3

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

declare void @_ZN11alglib_impl16_hqrndstate_initEPvPNS_8ae_stateEb(ptr noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #3

declare void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #3

declare noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl14hqrndrandomizeEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #3

declare noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef, double noundef) local_unnamed_addr #3

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

declare noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef, ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef, i1 noundef zeroext, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #3

declare noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #3

declare noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef, ptr noundef) local_unnamed_addr #3

declare noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef, ptr noundef) local_unnamed_addr #3

declare noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl5rsetvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef, double noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z12testminlbfgsbPN11alglib_impl8ae_stateE(i1 noundef zeroext %0, ptr noundef %1) local_unnamed_addr #5 {
  %3 = alloca %"struct.alglib_impl::ae_frame", align 8
  %4 = alloca i8, align 1
  %5 = alloca i8, align 1
  %6 = alloca i8, align 1
  %7 = alloca i8, align 1
  %8 = alloca %"struct.alglib_impl::ae_vector", align 8
  %9 = alloca %"struct.alglib_impl::ae_vector", align 8
  %10 = alloca %"struct.alglib_impl::ae_vector", align 8
  %11 = alloca %"struct.alglib_impl::ae_vector", align 8
  %12 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %13 = alloca %"struct.alglib_impl::ae_vector", align 8
  %14 = alloca %"struct.alglib_impl::minlbfgsstate", align 8
  %15 = alloca %"struct.alglib_impl::minlbfgsreport", align 8
  %16 = alloca %"struct.alglib_impl::hqrndstate", align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 10024, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #6
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %1, ptr noundef nonnull %3)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %8, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %9, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %10, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %11, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %12, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %13, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(10024) %14, i8 0, i64 10024, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %15, i8 0, i64 24, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %16, i8 0, i64 24, i1 false)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %8, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %9, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %10, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %11, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %12, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %13, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl19_minlbfgsstate_initEPvPNS_8ae_stateEb(ptr noundef nonnull %14, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl20_minlbfgsreport_initEPvPNS_8ae_stateEb(ptr noundef nonnull %15, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl16_hqrndstate_initEPvPNS_8ae_stateEb(ptr noundef nonnull %16, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14hqrndrandomizeEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  store i8 0, ptr %6, align 1, !tbaa !5
  store i8 0, ptr %4, align 1, !tbaa !5
  store i8 0, ptr %5, align 1, !tbaa !5
  call void @_ZL36testminlbfgsunit_testpreconditioningPbPN11alglib_impl8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  call void @_ZL26testminlbfgsunit_testotherPbPN11alglib_impl8ae_stateE(ptr noundef nonnull %5, ptr noundef %1)
  %17 = getelementptr inbounds i8, ptr %8, i64 56
  %18 = getelementptr inbounds i8, ptr %14, i64 2368
  %19 = getelementptr inbounds i8, ptr %14, i64 2369
  %20 = getelementptr inbounds i8, ptr %14, i64 2288
  %21 = getelementptr inbounds i8, ptr %14, i64 2296
  %22 = getelementptr inbounds i8, ptr %14, i64 2360
  %23 = getelementptr inbounds i8, ptr %15, i64 16
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef 3, ptr noundef %1)
  %24 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %25 = call double @llvm.fmuladd.f64(double %24, double 1.000000e+02, double -5.000000e+01)
  %26 = load ptr, ptr %17, align 8, !tbaa !9
  store double %25, ptr %26, align 8, !tbaa !10
  %27 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %28 = call double @llvm.fmuladd.f64(double %27, double 1.000000e+02, double -5.000000e+01)
  %29 = load ptr, ptr %17, align 8, !tbaa !9
  %30 = getelementptr inbounds i8, ptr %29, i64 8
  store double %28, ptr %30, align 8, !tbaa !10
  %31 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %32 = call double @llvm.fmuladd.f64(double %31, double 1.000000e+02, double -5.000000e+01)
  %33 = load ptr, ptr %17, align 8, !tbaa !9
  %34 = getelementptr inbounds i8, ptr %33, i64 16
  store double %32, ptr %34, align 8, !tbaa !10
  call void @_ZN11alglib_impl14minlbfgscreateEllPKNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef 3, i64 noundef 2, ptr noundef nonnull %8, ptr noundef nonnull %14, ptr noundef %1)
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef nonnull %14, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %1)
  %35 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %35, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %2, %85
  %36 = load i8, ptr %18, align 8, !tbaa !12, !range !30, !noundef !31
  %37 = trunc nuw i8 %36 to i1
  br i1 %37, label %41, label %38

38:                                               ; preds = %.lr.ph
  %39 = load i8, ptr %19, align 1, !tbaa !32, !range !30, !noundef !31
  %40 = trunc nuw i8 %39 to i1
  br i1 %40, label %41, label %58

41:                                               ; preds = %38, %.lr.ph
  %42 = load ptr, ptr %20, align 8, !tbaa !9
  %43 = load double, ptr %42, align 8, !tbaa !10
  %44 = fadd double %43, -2.000000e+00
  %45 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %44, ptr noundef %1)
  %46 = load ptr, ptr %20, align 8, !tbaa !9
  %47 = getelementptr inbounds i8, ptr %46, i64 8
  %48 = load double, ptr %47, align 8, !tbaa !10
  %49 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %48, ptr noundef %1)
  %50 = fadd double %45, %49
  %51 = load ptr, ptr %20, align 8, !tbaa !9
  %52 = getelementptr inbounds i8, ptr %51, i64 16
  %53 = load double, ptr %52, align 8, !tbaa !10
  %54 = load double, ptr %51, align 8, !tbaa !10
  %55 = fsub double %53, %54
  %56 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %55, ptr noundef %1)
  %57 = fadd double %50, %56
  store double %57, ptr %21, align 8, !tbaa !33
  %.pre = load i8, ptr %19, align 1, !tbaa !32, !range !30
  br label %58

58:                                               ; preds = %41, %38
  %59 = phi i8 [ %.pre, %41 ], [ %39, %38 ]
  %60 = trunc nuw i8 %59 to i1
  br i1 %60, label %61, label %85

61:                                               ; preds = %58
  %62 = load ptr, ptr %20, align 8, !tbaa !9
  %63 = load double, ptr %62, align 8, !tbaa !10
  %64 = fadd double %63, -2.000000e+00
  %65 = getelementptr inbounds i8, ptr %62, i64 16
  %66 = load double, ptr %65, align 8, !tbaa !10
  %67 = fsub double %63, %66
  %68 = fmul double %67, 2.000000e+00
  %69 = call double @llvm.fmuladd.f64(double %64, double 2.000000e+00, double %68)
  %70 = load ptr, ptr %22, align 8, !tbaa !9
  store double %69, ptr %70, align 8, !tbaa !10
  %71 = load ptr, ptr %20, align 8, !tbaa !9
  %72 = getelementptr inbounds i8, ptr %71, i64 8
  %73 = load double, ptr %72, align 8, !tbaa !10
  %74 = fmul double %73, 2.000000e+00
  %75 = load ptr, ptr %22, align 8, !tbaa !9
  %76 = getelementptr inbounds i8, ptr %75, i64 8
  store double %74, ptr %76, align 8, !tbaa !10
  %77 = load ptr, ptr %20, align 8, !tbaa !9
  %78 = getelementptr inbounds i8, ptr %77, i64 16
  %79 = load double, ptr %78, align 8, !tbaa !10
  %80 = load double, ptr %77, align 8, !tbaa !10
  %81 = fsub double %79, %80
  %82 = fmul double %81, 2.000000e+00
  %83 = load ptr, ptr %22, align 8, !tbaa !9
  %84 = getelementptr inbounds i8, ptr %83, i64 16
  store double %82, ptr %84, align 8, !tbaa !10
  br label %85

85:                                               ; preds = %61, %58
  %86 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %86, label %.lr.ph, label %._crit_edge, !llvm.loop !34

._crit_edge:                                      ; preds = %85, %2
  call void @_ZN11alglib_impl15minlbfgsresultsEPKNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef nonnull %8, ptr noundef nonnull %15, ptr noundef %1)
  %87 = load i64, ptr %23, align 8
  %88 = icmp slt i64 %87, 1
  br i1 %88, label %108, label %89

89:                                               ; preds = %._crit_edge
  %90 = load ptr, ptr %17, align 8, !tbaa !9
  %91 = load double, ptr %90, align 8, !tbaa !10
  %92 = fadd double %91, -2.000000e+00
  %93 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %92, ptr noundef %1)
  %94 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %93, double noundef 1.000000e-03)
  br i1 %94, label %108, label %95

95:                                               ; preds = %89
  %96 = load ptr, ptr %17, align 8, !tbaa !9
  %97 = getelementptr inbounds i8, ptr %96, i64 8
  %98 = load double, ptr %97, align 8, !tbaa !10
  %99 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %98, ptr noundef %1)
  %100 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %99, double noundef 1.000000e-03)
  br i1 %100, label %108, label %101

101:                                              ; preds = %95
  %102 = load ptr, ptr %17, align 8, !tbaa !9
  %103 = getelementptr inbounds i8, ptr %102, i64 16
  %104 = load double, ptr %103, align 8, !tbaa !10
  %105 = fadd double %104, -2.000000e+00
  %106 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %105, ptr noundef %1)
  %107 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %106, double noundef 1.000000e-03)
  br label %108

108:                                              ; preds = %101, %95, %89, %._crit_edge
  %109 = phi i1 [ true, %95 ], [ true, %89 ], [ true, %._crit_edge ], [ %107, %101 ]
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef 3, ptr noundef %1)
  %110 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %111 = call double @llvm.fmuladd.f64(double %110, double 1.000000e+02, double -5.000000e+01)
  %112 = load ptr, ptr %17, align 8, !tbaa !9
  store double %111, ptr %112, align 8, !tbaa !10
  %113 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %114 = call double @llvm.fmuladd.f64(double %113, double 1.000000e+02, double -5.000000e+01)
  %115 = load ptr, ptr %17, align 8, !tbaa !9
  %116 = getelementptr inbounds i8, ptr %115, i64 8
  store double %114, ptr %116, align 8, !tbaa !10
  %117 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %118 = call double @llvm.fmuladd.f64(double %117, double 1.000000e+02, double -5.000000e+01)
  %119 = load ptr, ptr %17, align 8, !tbaa !9
  %120 = getelementptr inbounds i8, ptr %119, i64 16
  store double %118, ptr %120, align 8, !tbaa !10
  call void @_ZN11alglib_impl15minlbfgscreatefEllPKNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef 3, i64 noundef 2, ptr noundef nonnull %8, double noundef 0x3EB0C6F7A0B5ED8D, ptr noundef nonnull %14, ptr noundef %1)
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef nonnull %14, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %1)
  %121 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %121, label %.lr.ph.1, label %._crit_edge.1

.lr.ph.1:                                         ; preds = %108, %171
  %122 = load i8, ptr %18, align 8, !tbaa !12, !range !30, !noundef !31
  %123 = trunc nuw i8 %122 to i1
  br i1 %123, label %127, label %124

124:                                              ; preds = %.lr.ph.1
  %125 = load i8, ptr %19, align 1, !tbaa !32, !range !30, !noundef !31
  %126 = trunc nuw i8 %125 to i1
  br i1 %126, label %127, label %144

127:                                              ; preds = %124, %.lr.ph.1
  %128 = load ptr, ptr %20, align 8, !tbaa !9
  %129 = load double, ptr %128, align 8, !tbaa !10
  %130 = fadd double %129, -2.000000e+00
  %131 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %130, ptr noundef %1)
  %132 = load ptr, ptr %20, align 8, !tbaa !9
  %133 = getelementptr inbounds i8, ptr %132, i64 8
  %134 = load double, ptr %133, align 8, !tbaa !10
  %135 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %134, ptr noundef %1)
  %136 = fadd double %131, %135
  %137 = load ptr, ptr %20, align 8, !tbaa !9
  %138 = getelementptr inbounds i8, ptr %137, i64 16
  %139 = load double, ptr %138, align 8, !tbaa !10
  %140 = load double, ptr %137, align 8, !tbaa !10
  %141 = fsub double %139, %140
  %142 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %141, ptr noundef %1)
  %143 = fadd double %136, %142
  store double %143, ptr %21, align 8, !tbaa !33
  %.pre688 = load i8, ptr %19, align 1, !tbaa !32, !range !30
  br label %144

144:                                              ; preds = %127, %124
  %145 = phi i8 [ %.pre688, %127 ], [ %125, %124 ]
  %146 = trunc nuw i8 %145 to i1
  br i1 %146, label %147, label %171

147:                                              ; preds = %144
  %148 = load ptr, ptr %20, align 8, !tbaa !9
  %149 = load double, ptr %148, align 8, !tbaa !10
  %150 = fadd double %149, -2.000000e+00
  %151 = getelementptr inbounds i8, ptr %148, i64 16
  %152 = load double, ptr %151, align 8, !tbaa !10
  %153 = fsub double %149, %152
  %154 = fmul double %153, 2.000000e+00
  %155 = call double @llvm.fmuladd.f64(double %150, double 2.000000e+00, double %154)
  %156 = load ptr, ptr %22, align 8, !tbaa !9
  store double %155, ptr %156, align 8, !tbaa !10
  %157 = load ptr, ptr %20, align 8, !tbaa !9
  %158 = getelementptr inbounds i8, ptr %157, i64 8
  %159 = load double, ptr %158, align 8, !tbaa !10
  %160 = fmul double %159, 2.000000e+00
  %161 = load ptr, ptr %22, align 8, !tbaa !9
  %162 = getelementptr inbounds i8, ptr %161, i64 8
  store double %160, ptr %162, align 8, !tbaa !10
  %163 = load ptr, ptr %20, align 8, !tbaa !9
  %164 = getelementptr inbounds i8, ptr %163, i64 16
  %165 = load double, ptr %164, align 8, !tbaa !10
  %166 = load double, ptr %163, align 8, !tbaa !10
  %167 = fsub double %165, %166
  %168 = fmul double %167, 2.000000e+00
  %169 = load ptr, ptr %22, align 8, !tbaa !9
  %170 = getelementptr inbounds i8, ptr %169, i64 16
  store double %168, ptr %170, align 8, !tbaa !10
  br label %171

171:                                              ; preds = %147, %144
  %172 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %172, label %.lr.ph.1, label %._crit_edge.1, !llvm.loop !34

._crit_edge.1:                                    ; preds = %171, %108
  call void @_ZN11alglib_impl15minlbfgsresultsEPKNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef nonnull %8, ptr noundef nonnull %15, ptr noundef %1)
  %173 = load i64, ptr %23, align 8
  %174 = icmp slt i64 %173, 1
  %or.cond.1 = select i1 %109, i1 true, i1 %174
  br i1 %or.cond.1, label %.preheader563, label %175

175:                                              ; preds = %._crit_edge.1
  %176 = load ptr, ptr %17, align 8, !tbaa !9
  %177 = load double, ptr %176, align 8, !tbaa !10
  %178 = fadd double %177, -2.000000e+00
  %179 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %178, ptr noundef %1)
  %180 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %179, double noundef 1.000000e-03)
  br i1 %180, label %.preheader563, label %181

181:                                              ; preds = %175
  %182 = load ptr, ptr %17, align 8, !tbaa !9
  %183 = getelementptr inbounds i8, ptr %182, i64 8
  %184 = load double, ptr %183, align 8, !tbaa !10
  %185 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %184, ptr noundef %1)
  %186 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %185, double noundef 1.000000e-03)
  br i1 %186, label %.preheader563, label %187

187:                                              ; preds = %181
  %188 = load ptr, ptr %17, align 8, !tbaa !9
  %189 = getelementptr inbounds i8, ptr %188, i64 16
  %190 = load double, ptr %189, align 8, !tbaa !10
  %191 = fadd double %190, -2.000000e+00
  %192 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %191, ptr noundef %1)
  %193 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %192, double noundef 1.000000e-03)
  br label %.preheader563

.preheader563:                                    ; preds = %187, %181, %175, %._crit_edge.1
  %194 = phi i1 [ true, %181 ], [ true, %175 ], [ true, %._crit_edge.1 ], [ %193, %187 ]
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef 1, ptr noundef %1)
  %195 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef -1.000000e+02, double noundef 1.000000e-01)
  br i1 %195, label %.lr.ph572, label %._crit_edge573

.lr.ph572:                                        ; preds = %.preheader563, %243
  %.1484570 = phi i1 [ %244, %243 ], [ false, %.preheader563 ]
  %.0486569 = phi double [ %245, %243 ], [ -1.000000e+02, %.preheader563 ]
  %196 = load ptr, ptr %17, align 8, !tbaa !9
  store double %.0486569, ptr %196, align 8, !tbaa !10
  call void @_ZN11alglib_impl14minlbfgscreateEllPKNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef 1, i64 noundef 1, ptr noundef nonnull %8, ptr noundef nonnull %14, ptr noundef %1)
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef nonnull %14, double noundef 1.000000e-09, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %1)
  %197 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %197, label %.lr.ph567, label %._crit_edge568

.lr.ph567:                                        ; preds = %.lr.ph572, %234
  %198 = load i8, ptr %18, align 8, !tbaa !12, !range !30, !noundef !31
  %199 = trunc nuw i8 %198 to i1
  br i1 %199, label %203, label %200

200:                                              ; preds = %.lr.ph567
  %201 = load i8, ptr %19, align 1, !tbaa !32, !range !30, !noundef !31
  %202 = trunc nuw i8 %201 to i1
  br i1 %202, label %203, label %212

203:                                              ; preds = %200, %.lr.ph567
  %204 = load ptr, ptr %20, align 8, !tbaa !9
  %205 = load double, ptr %204, align 8, !tbaa !10
  %206 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %205, ptr noundef %1)
  %207 = load ptr, ptr %20, align 8, !tbaa !9
  %208 = load double, ptr %207, align 8, !tbaa !10
  %209 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %208, ptr noundef %1)
  %210 = fadd double %209, 1.000000e+00
  %211 = fdiv double %206, %210
  store double %211, ptr %21, align 8, !tbaa !33
  %.pre689 = load i8, ptr %19, align 1, !tbaa !32, !range !30
  br label %212

212:                                              ; preds = %203, %200
  %213 = phi i8 [ %.pre689, %203 ], [ %201, %200 ]
  %214 = trunc nuw i8 %213 to i1
  br i1 %214, label %215, label %234

215:                                              ; preds = %212
  %216 = load ptr, ptr %20, align 8, !tbaa !9
  %217 = load double, ptr %216, align 8, !tbaa !10
  %218 = fmul double %217, 2.000000e+00
  %219 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %217, ptr noundef %1)
  %220 = fadd double %219, 1.000000e+00
  %221 = load ptr, ptr %20, align 8, !tbaa !9
  %222 = load double, ptr %221, align 8, !tbaa !10
  %223 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %222, ptr noundef %1)
  %224 = load ptr, ptr %20, align 8, !tbaa !9
  %225 = load double, ptr %224, align 8, !tbaa !10
  %226 = fmul double %223, -2.000000e+00
  %227 = fmul double %226, %225
  %228 = call double @llvm.fmuladd.f64(double %218, double %220, double %227)
  %229 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %225, ptr noundef %1)
  %230 = fadd double %229, 1.000000e+00
  %231 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %230, ptr noundef %1)
  %232 = fdiv double %228, %231
  %233 = load ptr, ptr %22, align 8, !tbaa !9
  store double %232, ptr %233, align 8, !tbaa !10
  br label %234

234:                                              ; preds = %215, %212
  %235 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %235, label %.lr.ph567, label %._crit_edge568, !llvm.loop !36

._crit_edge568:                                   ; preds = %234, %.lr.ph572
  call void @_ZN11alglib_impl15minlbfgsresultsEPKNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef nonnull %8, ptr noundef nonnull %15, ptr noundef %1)
  %236 = load i64, ptr %23, align 8
  %237 = icmp slt i64 %236, 1
  %or.cond5 = select i1 %.1484570, i1 true, i1 %237
  br i1 %or.cond5, label %243, label %238

238:                                              ; preds = %._crit_edge568
  %239 = load ptr, ptr %17, align 8, !tbaa !9
  %240 = load double, ptr %239, align 8, !tbaa !10
  %241 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %240, ptr noundef %1)
  %242 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %241, double noundef 1.000000e-03)
  br label %243

243:                                              ; preds = %238, %._crit_edge568
  %244 = phi i1 [ true, %._crit_edge568 ], [ %242, %238 ]
  %245 = fadd double %.0486569, 1.000000e-01
  %246 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %245, double noundef 1.000000e-01)
  br i1 %246, label %.lr.ph572, label %._crit_edge573.loopexit, !llvm.loop !37

._crit_edge573.loopexit:                          ; preds = %243
  %247 = zext i1 %244 to i8
  br label %._crit_edge573

._crit_edge573:                                   ; preds = %._crit_edge573.loopexit, %.preheader563
  %.1484.lcssa = phi i8 [ 0, %.preheader563 ], [ %247, %._crit_edge573.loopexit ]
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef 1, ptr noundef %1)
  %248 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef -1.000000e+02, double noundef 1.000000e-01)
  br i1 %248, label %.lr.ph572.1.preheader, label %._crit_edge573.1

.lr.ph572.1.preheader:                            ; preds = %._crit_edge573
  %249 = trunc nuw i8 %.1484.lcssa to i1
  br label %.lr.ph572.1

.lr.ph572.1:                                      ; preds = %.lr.ph572.1.preheader, %297
  %.1484570.1 = phi i1 [ %298, %297 ], [ %249, %.lr.ph572.1.preheader ]
  %.0486569.1 = phi double [ %299, %297 ], [ -1.000000e+02, %.lr.ph572.1.preheader ]
  %250 = load ptr, ptr %17, align 8, !tbaa !9
  store double %.0486569.1, ptr %250, align 8, !tbaa !10
  call void @_ZN11alglib_impl15minlbfgscreatefEllPKNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef 1, i64 noundef 1, ptr noundef nonnull %8, double noundef 0x3EB0C6F7A0B5ED8D, ptr noundef nonnull %14, ptr noundef %1)
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef nonnull %14, double noundef 1.000000e-09, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %1)
  %251 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %251, label %.lr.ph567.1, label %._crit_edge568.1

.lr.ph567.1:                                      ; preds = %.lr.ph572.1, %288
  %252 = load i8, ptr %18, align 8, !tbaa !12, !range !30, !noundef !31
  %253 = trunc nuw i8 %252 to i1
  br i1 %253, label %257, label %254

254:                                              ; preds = %.lr.ph567.1
  %255 = load i8, ptr %19, align 1, !tbaa !32, !range !30, !noundef !31
  %256 = trunc nuw i8 %255 to i1
  br i1 %256, label %257, label %266

257:                                              ; preds = %254, %.lr.ph567.1
  %258 = load ptr, ptr %20, align 8, !tbaa !9
  %259 = load double, ptr %258, align 8, !tbaa !10
  %260 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %259, ptr noundef %1)
  %261 = load ptr, ptr %20, align 8, !tbaa !9
  %262 = load double, ptr %261, align 8, !tbaa !10
  %263 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %262, ptr noundef %1)
  %264 = fadd double %263, 1.000000e+00
  %265 = fdiv double %260, %264
  store double %265, ptr %21, align 8, !tbaa !33
  %.pre690 = load i8, ptr %19, align 1, !tbaa !32, !range !30
  br label %266

266:                                              ; preds = %257, %254
  %267 = phi i8 [ %.pre690, %257 ], [ %255, %254 ]
  %268 = trunc nuw i8 %267 to i1
  br i1 %268, label %269, label %288

269:                                              ; preds = %266
  %270 = load ptr, ptr %20, align 8, !tbaa !9
  %271 = load double, ptr %270, align 8, !tbaa !10
  %272 = fmul double %271, 2.000000e+00
  %273 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %271, ptr noundef %1)
  %274 = fadd double %273, 1.000000e+00
  %275 = load ptr, ptr %20, align 8, !tbaa !9
  %276 = load double, ptr %275, align 8, !tbaa !10
  %277 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %276, ptr noundef %1)
  %278 = load ptr, ptr %20, align 8, !tbaa !9
  %279 = load double, ptr %278, align 8, !tbaa !10
  %280 = fmul double %277, -2.000000e+00
  %281 = fmul double %280, %279
  %282 = call double @llvm.fmuladd.f64(double %272, double %274, double %281)
  %283 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %279, ptr noundef %1)
  %284 = fadd double %283, 1.000000e+00
  %285 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %284, ptr noundef %1)
  %286 = fdiv double %282, %285
  %287 = load ptr, ptr %22, align 8, !tbaa !9
  store double %286, ptr %287, align 8, !tbaa !10
  br label %288

288:                                              ; preds = %269, %266
  %289 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %289, label %.lr.ph567.1, label %._crit_edge568.1, !llvm.loop !36

._crit_edge568.1:                                 ; preds = %288, %.lr.ph572.1
  call void @_ZN11alglib_impl15minlbfgsresultsEPKNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef nonnull %8, ptr noundef nonnull %15, ptr noundef %1)
  %290 = load i64, ptr %23, align 8
  %291 = icmp slt i64 %290, 1
  %or.cond5.1 = select i1 %.1484570.1, i1 true, i1 %291
  br i1 %or.cond5.1, label %297, label %292

292:                                              ; preds = %._crit_edge568.1
  %293 = load ptr, ptr %17, align 8, !tbaa !9
  %294 = load double, ptr %293, align 8, !tbaa !10
  %295 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %294, ptr noundef %1)
  %296 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %295, double noundef 1.000000e-03)
  br label %297

297:                                              ; preds = %292, %._crit_edge568.1
  %298 = phi i1 [ true, %._crit_edge568.1 ], [ %296, %292 ]
  %299 = fadd double %.0486569.1, 1.000000e-01
  %300 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %299, double noundef 1.000000e-01)
  br i1 %300, label %.lr.ph572.1, label %._crit_edge573.1.loopexit, !llvm.loop !37

._crit_edge573.1.loopexit:                        ; preds = %297
  %301 = zext i1 %298 to i8
  br label %._crit_edge573.1

._crit_edge573.1:                                 ; preds = %._crit_edge573.1.loopexit, %._crit_edge573
  %.1484.lcssa.1 = phi i8 [ %.1484.lcssa, %._crit_edge573 ], [ %301, %._crit_edge573.1.loopexit ]
  br label %305

.preheader561:                                    ; preds = %417
  %302 = getelementptr inbounds i8, ptr %9, i64 56
  %303 = getelementptr inbounds i8, ptr %12, i64 72
  %304 = getelementptr inbounds i8, ptr %10, i64 56
  br label %440

305:                                              ; preds = %._crit_edge573.1, %417
  %switch534 = phi i1 [ true, %._crit_edge573.1 ], [ false, %417 ]
  %.0504583 = phi i1 [ false, %._crit_edge573.1 ], [ %418, %417 ]
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef 3, ptr noundef %1)
  %306 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %307 = call double @llvm.fmuladd.f64(double %306, double 1.000000e+01, double 1.000000e+01)
  %308 = load ptr, ptr %17, align 8, !tbaa !9
  store double %307, ptr %308, align 8, !tbaa !10
  %309 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %310 = call double @llvm.fmuladd.f64(double %309, double 1.000000e+01, double 1.000000e+01)
  %311 = load ptr, ptr %17, align 8, !tbaa !9
  %312 = getelementptr inbounds i8, ptr %311, i64 8
  store double %310, ptr %312, align 8, !tbaa !10
  %313 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %314 = call double @llvm.fmuladd.f64(double %313, double 1.000000e+01, double 1.000000e+01)
  %315 = load ptr, ptr %17, align 8, !tbaa !9
  %316 = getelementptr inbounds i8, ptr %315, i64 16
  store double %314, ptr %316, align 8, !tbaa !10
  br i1 %switch534, label %317, label %318

317:                                              ; preds = %305
  call void @_ZN11alglib_impl14minlbfgscreateEllPKNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef 3, i64 noundef 2, ptr noundef nonnull %8, ptr noundef nonnull %14, ptr noundef %1)
  br label %319

318:                                              ; preds = %305
  call void @_ZN11alglib_impl15minlbfgscreatefEllPKNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef 3, i64 noundef 2, ptr noundef nonnull %8, double noundef 0x3EB0C6F7A0B5ED8D, ptr noundef nonnull %14, ptr noundef %1)
  br label %319

319:                                              ; preds = %317, %318
  call void @_ZN11alglib_impl17minlbfgssetstpmaxEPNS_13minlbfgsstateEdPNS_8ae_stateE(ptr noundef nonnull %14, double noundef 1.000000e-01, ptr noundef %1)
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef nonnull %14, double noundef 0x3E7AD7F29ABCAF48, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %1)
  %320 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %320, label %321, label %342

321:                                              ; preds = %319
  call void @_ZL26testminlbfgsunit_testfunc2PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  %322 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %322, label %323, label %342

323:                                              ; preds = %321
  call void @_ZL26testminlbfgsunit_testfunc2PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  %324 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %324, label %325, label %342

325:                                              ; preds = %323
  call void @_ZL26testminlbfgsunit_testfunc2PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  %326 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %326, label %327, label %342

327:                                              ; preds = %325
  call void @_ZL26testminlbfgsunit_testfunc2PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  %328 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %328, label %329, label %342

329:                                              ; preds = %327
  call void @_ZL26testminlbfgsunit_testfunc2PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  %330 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %330, label %331, label %342

331:                                              ; preds = %329
  call void @_ZL26testminlbfgsunit_testfunc2PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  %332 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %332, label %333, label %342

333:                                              ; preds = %331
  call void @_ZL26testminlbfgsunit_testfunc2PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  %334 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %334, label %335, label %342

335:                                              ; preds = %333
  call void @_ZL26testminlbfgsunit_testfunc2PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  %336 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %336, label %337, label %342

337:                                              ; preds = %335
  call void @_ZL26testminlbfgsunit_testfunc2PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  %338 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %338, label %339, label %342

339:                                              ; preds = %337
  call void @_ZL26testminlbfgsunit_testfunc2PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  %340 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %340, label %341, label %342

341:                                              ; preds = %339
  call void @_ZL26testminlbfgsunit_testfunc2PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br label %342

342:                                              ; preds = %341, %339, %337, %335, %333, %331, %329, %327, %325, %323, %321, %319
  %343 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %344 = call double @llvm.fmuladd.f64(double %343, double 1.000000e+01, double 1.000000e+01)
  %345 = load ptr, ptr %17, align 8, !tbaa !9
  store double %344, ptr %345, align 8, !tbaa !10
  %346 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %347 = call double @llvm.fmuladd.f64(double %346, double 1.000000e+01, double 1.000000e+01)
  %348 = load ptr, ptr %17, align 8, !tbaa !9
  %349 = getelementptr inbounds i8, ptr %348, i64 8
  store double %347, ptr %349, align 8, !tbaa !10
  %350 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %351 = call double @llvm.fmuladd.f64(double %350, double 1.000000e+01, double 1.000000e+01)
  %352 = load ptr, ptr %17, align 8, !tbaa !9
  %353 = getelementptr inbounds i8, ptr %352, i64 16
  store double %351, ptr %353, align 8, !tbaa !10
  call void @_ZN11alglib_impl19minlbfgsrestartfromEPNS_13minlbfgsstateEPKNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef nonnull %8, ptr noundef %1)
  %354 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %354, label %.lr.ph578, label %._crit_edge579

.lr.ph578:                                        ; preds = %342, %.lr.ph578
  call void @_ZL26testminlbfgsunit_testfunc2PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  %355 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %355, label %.lr.ph578, label %._crit_edge579, !llvm.loop !38

._crit_edge579:                                   ; preds = %.lr.ph578, %342
  call void @_ZN11alglib_impl15minlbfgsresultsEPKNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef nonnull %8, ptr noundef nonnull %15, ptr noundef %1)
  %356 = load i64, ptr %23, align 8
  %357 = icmp slt i64 %356, 1
  %or.cond8 = select i1 %.0504583, i1 true, i1 %357
  br i1 %or.cond8, label %379, label %358

358:                                              ; preds = %._crit_edge579
  %359 = load ptr, ptr %17, align 8, !tbaa !9
  %360 = load double, ptr %359, align 8, !tbaa !10
  %361 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 2.000000e+00, ptr noundef %1)
  %362 = fsub double %360, %361
  %363 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %362, ptr noundef %1)
  %364 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %363, double noundef 1.000000e-02)
  br i1 %364, label %379, label %365

365:                                              ; preds = %358
  %366 = load ptr, ptr %17, align 8, !tbaa !9
  %367 = getelementptr inbounds i8, ptr %366, i64 8
  %368 = load double, ptr %367, align 8, !tbaa !10
  %369 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %368, ptr noundef %1)
  %370 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %369, double noundef 1.000000e-02)
  br i1 %370, label %379, label %371

371:                                              ; preds = %365
  %372 = load ptr, ptr %17, align 8, !tbaa !9
  %373 = getelementptr inbounds i8, ptr %372, i64 16
  %374 = load double, ptr %373, align 8, !tbaa !10
  %375 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 2.000000e+00, ptr noundef %1)
  %376 = fsub double %374, %375
  %377 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %376, ptr noundef %1)
  %378 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %377, double noundef 1.000000e-02)
  br label %379

379:                                              ; preds = %371, %365, %358, %._crit_edge579
  %380 = phi i1 [ true, %365 ], [ true, %358 ], [ true, %._crit_edge579 ], [ %378, %371 ]
  %381 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %382 = call double @llvm.fmuladd.f64(double %381, double 1.000000e+01, double 1.000000e+01)
  %383 = load ptr, ptr %17, align 8, !tbaa !9
  store double %382, ptr %383, align 8, !tbaa !10
  %384 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %385 = call double @llvm.fmuladd.f64(double %384, double 1.000000e+01, double 1.000000e+01)
  %386 = load ptr, ptr %17, align 8, !tbaa !9
  %387 = getelementptr inbounds i8, ptr %386, i64 8
  store double %385, ptr %387, align 8, !tbaa !10
  %388 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %389 = call double @llvm.fmuladd.f64(double %388, double 1.000000e+01, double 1.000000e+01)
  %390 = load ptr, ptr %17, align 8, !tbaa !9
  %391 = getelementptr inbounds i8, ptr %390, i64 16
  store double %389, ptr %391, align 8, !tbaa !10
  call void @_ZN11alglib_impl19minlbfgsrestartfromEPNS_13minlbfgsstateEPKNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef nonnull %8, ptr noundef %1)
  %392 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %392, label %.lr.ph581, label %._crit_edge582

.lr.ph581:                                        ; preds = %379, %.lr.ph581
  call void @_ZL26testminlbfgsunit_testfunc2PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  %393 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %393, label %.lr.ph581, label %._crit_edge582, !llvm.loop !39

._crit_edge582:                                   ; preds = %.lr.ph581, %379
  call void @_ZN11alglib_impl15minlbfgsresultsEPKNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef nonnull %8, ptr noundef nonnull %15, ptr noundef %1)
  %394 = load i64, ptr %23, align 8
  %395 = icmp slt i64 %394, 1
  %or.cond11 = select i1 %380, i1 true, i1 %395
  br i1 %or.cond11, label %417, label %396

396:                                              ; preds = %._crit_edge582
  %397 = load ptr, ptr %17, align 8, !tbaa !9
  %398 = load double, ptr %397, align 8, !tbaa !10
  %399 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 2.000000e+00, ptr noundef %1)
  %400 = fsub double %398, %399
  %401 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %400, ptr noundef %1)
  %402 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %401, double noundef 1.000000e-02)
  br i1 %402, label %417, label %403

403:                                              ; preds = %396
  %404 = load ptr, ptr %17, align 8, !tbaa !9
  %405 = getelementptr inbounds i8, ptr %404, i64 8
  %406 = load double, ptr %405, align 8, !tbaa !10
  %407 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %406, ptr noundef %1)
  %408 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %407, double noundef 1.000000e-02)
  br i1 %408, label %417, label %409

409:                                              ; preds = %403
  %410 = load ptr, ptr %17, align 8, !tbaa !9
  %411 = getelementptr inbounds i8, ptr %410, i64 16
  %412 = load double, ptr %411, align 8, !tbaa !10
  %413 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 2.000000e+00, ptr noundef %1)
  %414 = fsub double %412, %413
  %415 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %414, ptr noundef %1)
  %416 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %415, double noundef 1.000000e-02)
  br label %417

417:                                              ; preds = %409, %403, %396, %._crit_edge582
  %418 = phi i1 [ true, %403 ], [ true, %396 ], [ true, %._crit_edge582 ], [ %416, %409 ]
  br i1 %switch534, label %305, label %.preheader561, !llvm.loop !40

.preheader550:                                    ; preds = %659
  %419 = getelementptr inbounds i8, ptr %14, i64 2216
  %420 = getelementptr inbounds i8, ptr %14, i64 2376
  %421 = getelementptr inbounds i8, ptr %14, i64 2456
  %422 = getelementptr inbounds i8, ptr %14, i64 2464
  %423 = getelementptr inbounds i8, ptr %14, i64 2472
  %424 = getelementptr inbounds i8, ptr %14, i64 2480
  %425 = getelementptr inbounds i8, ptr %14, i64 2488
  %426 = getelementptr inbounds i8, ptr %14, i64 2496
  %427 = getelementptr inbounds i8, ptr %14, i64 2560
  %428 = getelementptr inbounds i8, ptr %14, i64 2624
  %429 = getelementptr inbounds i8, ptr %14, i64 3056
  %430 = getelementptr inbounds i8, ptr %14, i64 3248
  %431 = getelementptr inbounds i8, ptr %14, i64 3120
  %432 = getelementptr inbounds i8, ptr %14, i64 3184
  %433 = getelementptr inbounds i8, ptr %14, i64 3312
  %434 = getelementptr inbounds i8, ptr %14, i64 3320
  %435 = getelementptr inbounds i8, ptr %14, i64 2616
  %436 = getelementptr inbounds i8, ptr %14, i64 2552
  %437 = getelementptr inbounds i8, ptr %14, i64 2680
  %438 = getelementptr inbounds i8, ptr %14, i64 2384
  %439 = getelementptr inbounds i8, ptr %14, i64 2448
  br label %661

440:                                              ; preds = %.preheader561, %659
  %indvar = phi i64 [ 0, %.preheader561 ], [ %indvar.next, %659 ]
  %indvars.iv = phi i64 [ 2, %.preheader561 ], [ %indvars.iv.next, %659 ]
  %.0502599 = phi i64 [ 1, %.preheader561 ], [ %660, %659 ]
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %.0502599, i64 noundef %.0502599, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.0502599, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.0502599, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %10, i64 noundef %.0502599, ptr noundef %1)
  br label %441

441:                                              ; preds = %440, %441
  %.1495585 = phi i64 [ 0, %440 ], [ %446, %441 ]
  %442 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %443 = call double @llvm.fmuladd.f64(double %442, double 2.000000e+00, double -1.000000e+00)
  %444 = load ptr, ptr %302, align 8, !tbaa !9
  %445 = getelementptr inbounds double, ptr %444, i64 %.1495585
  store double %443, ptr %445, align 8, !tbaa !10
  %446 = add nuw nsw i64 %.1495585, 1
  %exitcond.not = icmp eq i64 %446, %.0502599
  br i1 %exitcond.not, label %.preheader557, label %441, !llvm.loop !41

.preheader557:                                    ; preds = %441, %455
  %.2496587 = phi i64 [ %469, %455 ], [ 0, %441 ]
  br label %447

447:                                              ; preds = %.preheader557, %447
  %.0489586 = phi i64 [ 0, %.preheader557 ], [ %454, %447 ]
  %448 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %449 = call double @llvm.fmuladd.f64(double %448, double 2.000000e+00, double -1.000000e+00)
  %450 = load ptr, ptr %303, align 8, !tbaa !9
  %451 = getelementptr inbounds ptr, ptr %450, i64 %.2496587
  %452 = load ptr, ptr %451, align 8, !tbaa !42
  %453 = getelementptr inbounds double, ptr %452, i64 %.0489586
  store double %449, ptr %453, align 8, !tbaa !10
  %454 = add nuw nsw i64 %.0489586, 1
  %exitcond658.not = icmp eq i64 %454, %.0502599
  br i1 %exitcond658.not, label %455, label %447, !llvm.loop !43

455:                                              ; preds = %447
  %456 = load ptr, ptr %303, align 8, !tbaa !9
  %457 = getelementptr inbounds ptr, ptr %456, i64 %.2496587
  %458 = load ptr, ptr %457, align 8, !tbaa !42
  %459 = getelementptr inbounds double, ptr %458, i64 %.2496587
  %460 = load double, ptr %459, align 8, !tbaa !10
  %461 = call noundef i64 @_ZN11alglib_impl7ae_signEdPNS_8ae_stateE(double noundef %460, ptr noundef %1)
  %462 = mul nsw i64 %461, 3
  %463 = sitofp i64 %462 to double
  %464 = fadd double %460, %463
  %465 = load ptr, ptr %303, align 8, !tbaa !9
  %466 = getelementptr inbounds ptr, ptr %465, i64 %.2496587
  %467 = load ptr, ptr %466, align 8, !tbaa !42
  %468 = getelementptr inbounds double, ptr %467, i64 %.2496587
  store double %464, ptr %468, align 8, !tbaa !10
  %469 = add nuw nsw i64 %.2496587, 1
  %exitcond659.not = icmp eq i64 %469, %.0502599
  br i1 %exitcond659.not, label %.preheader559.preheader, label %.preheader557, !llvm.loop !44

.preheader559.preheader:                          ; preds = %455
  %470 = add nsw i64 %.0502599, -1
  br label %.preheader559

.preheader559:                                    ; preds = %.preheader559.preheader, %.preheader559
  %.3497588 = phi i64 [ %479, %.preheader559 ], [ 0, %.preheader559.preheader ]
  %471 = load ptr, ptr %303, align 8, !tbaa !9
  %472 = getelementptr inbounds ptr, ptr %471, i64 %.3497588
  %473 = load ptr, ptr %472, align 8, !tbaa !42
  %474 = load ptr, ptr %302, align 8, !tbaa !9
  %475 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %470)
  %476 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %473, i64 noundef 1, ptr noundef %474, i64 noundef 1, i64 noundef %475)
  %477 = load ptr, ptr %304, align 8, !tbaa !9
  %478 = getelementptr inbounds double, ptr %477, i64 %.3497588
  store double %476, ptr %478, align 8, !tbaa !10
  %479 = add nuw nsw i64 %.3497588, 1
  %exitcond660.not = icmp eq i64 %479, %.0502599
  br i1 %exitcond660.not, label %.preheader556.preheader, label %.preheader559, !llvm.loop !45

.preheader556.preheader:                          ; preds = %.preheader559
  %xtraiter = and i64 %.0502599, 3
  %480 = icmp ult i64 %indvar, 3
  %unroll_iter = and i64 %.0502599, 9223372036854775804
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  %xtraiter744 = and i64 %.0502599, 3
  %481 = icmp ult i64 %indvar, 3
  %unroll_iter747 = and i64 %.0502599, 9223372036854775804
  %lcmp.mod746.not = icmp eq i64 %xtraiter744, 0
  br label %.preheader556

.preheader556:                                    ; preds = %.preheader556.preheader, %657
  %.0500598 = phi i64 [ %658, %657 ], [ 1, %.preheader556.preheader ]
  br label %482

482:                                              ; preds = %.preheader556, %482
  %.4498589 = phi i64 [ 0, %.preheader556 ], [ %487, %482 ]
  %483 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %484 = call double @llvm.fmuladd.f64(double %483, double 2.000000e+00, double -1.000000e+00)
  %485 = load ptr, ptr %17, align 8, !tbaa !9
  %486 = getelementptr inbounds double, ptr %485, i64 %.4498589
  store double %484, ptr %486, align 8, !tbaa !10
  %487 = add nuw nsw i64 %.4498589, 1
  %exitcond661.not = icmp eq i64 %487, %.0502599
  br i1 %exitcond661.not, label %488, label %482, !llvm.loop !46

488:                                              ; preds = %482
  call void @_ZN11alglib_impl14minlbfgscreateEllPKNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %.0502599, i64 noundef %.0500598, ptr noundef nonnull %8, ptr noundef nonnull %14, ptr noundef %1)
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef nonnull %14, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %1)
  %489 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %489, label %.lr.ph594, label %._crit_edge595

.loopexit552:                                     ; preds = %.loopexit
  %490 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %490, label %.lr.ph594, label %._crit_edge595, !llvm.loop !47

.lr.ph594:                                        ; preds = %488, %.loopexit552
  %491 = load i8, ptr %18, align 8, !tbaa !12, !range !30, !noundef !31
  %492 = trunc nuw i8 %491 to i1
  %.pre691.pre = load i8, ptr %19, align 1, !tbaa !32, !range !30
  %.pre700 = trunc nuw i8 %.pre691.pre to i1
  br i1 %492, label %494, label %493

493:                                              ; preds = %.lr.ph594
  br i1 %.pre700, label %.thread704, label %.loopexit554.preheader

.thread704:                                       ; preds = %493
  store double 0.000000e+00, ptr %21, align 8, !tbaa !33
  br label %.preheader553.preheader

494:                                              ; preds = %.lr.ph594
  store double 0.000000e+00, ptr %21, align 8, !tbaa !33
  br i1 %.pre700, label %.preheader553.preheader, label %.loopexit554.preheader

.preheader553.preheader:                          ; preds = %.thread704, %494
  br i1 %480, label %.loopexit554.preheader.loopexit.unr-lcssa, label %.preheader553

.preheader553:                                    ; preds = %.preheader553.preheader, %.preheader553
  %.5499590 = phi i64 [ %506, %.preheader553 ], [ 0, %.preheader553.preheader ]
  %niter = phi i64 [ %niter.next.3, %.preheader553 ], [ 0, %.preheader553.preheader ]
  %495 = load ptr, ptr %22, align 8, !tbaa !9
  %496 = getelementptr inbounds double, ptr %495, i64 %.5499590
  store double 0.000000e+00, ptr %496, align 8, !tbaa !10
  %497 = or disjoint i64 %.5499590, 1
  %498 = load ptr, ptr %22, align 8, !tbaa !9
  %499 = getelementptr inbounds double, ptr %498, i64 %497
  store double 0.000000e+00, ptr %499, align 8, !tbaa !10
  %500 = or disjoint i64 %.5499590, 2
  %501 = load ptr, ptr %22, align 8, !tbaa !9
  %502 = getelementptr inbounds double, ptr %501, i64 %500
  store double 0.000000e+00, ptr %502, align 8, !tbaa !10
  %503 = or disjoint i64 %.5499590, 3
  %504 = load ptr, ptr %22, align 8, !tbaa !9
  %505 = getelementptr inbounds double, ptr %504, i64 %503
  store double 0.000000e+00, ptr %505, align 8, !tbaa !10
  %506 = add nuw nsw i64 %.5499590, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %.loopexit554.preheader.loopexit.unr-lcssa, label %.preheader553, !llvm.loop !48

.loopexit554.preheader.loopexit.unr-lcssa:        ; preds = %.preheader553, %.preheader553.preheader
  %.5499590.unr = phi i64 [ 0, %.preheader553.preheader ], [ %506, %.preheader553 ]
  br i1 %lcmp.mod.not, label %.loopexit554.preheader, label %.preheader553.epil

.preheader553.epil:                               ; preds = %.loopexit554.preheader.loopexit.unr-lcssa, %.preheader553.epil
  %.5499590.epil = phi i64 [ %509, %.preheader553.epil ], [ %.5499590.unr, %.loopexit554.preheader.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.preheader553.epil ], [ 0, %.loopexit554.preheader.loopexit.unr-lcssa ]
  %507 = load ptr, ptr %22, align 8, !tbaa !9
  %508 = getelementptr inbounds double, ptr %507, i64 %.5499590.epil
  store double 0.000000e+00, ptr %508, align 8, !tbaa !10
  %509 = add nuw nsw i64 %.5499590.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %.loopexit554.preheader, label %.preheader553.epil, !llvm.loop !49

.loopexit554.preheader:                           ; preds = %.loopexit554.preheader.loopexit.unr-lcssa, %.preheader553.epil, %493, %494
  br label %.loopexit554

.loopexit554:                                     ; preds = %.loopexit554.preheader, %.loopexit
  %.6592 = phi i64 [ %547, %.loopexit ], [ 0, %.loopexit554.preheader ]
  %510 = load ptr, ptr %303, align 8, !tbaa !9
  %511 = getelementptr inbounds ptr, ptr %510, i64 %.6592
  %512 = load ptr, ptr %511, align 8, !tbaa !42
  %513 = load ptr, ptr %20, align 8, !tbaa !9
  %514 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %470)
  %515 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %512, i64 noundef 1, ptr noundef %513, i64 noundef 1, i64 noundef %514)
  %516 = load i8, ptr %18, align 8, !tbaa !12, !range !30, !noundef !31
  %517 = trunc nuw i8 %516 to i1
  br i1 %517, label %521, label %518

518:                                              ; preds = %.loopexit554
  %519 = load i8, ptr %19, align 1, !tbaa !32, !range !30, !noundef !31
  %520 = trunc nuw i8 %519 to i1
  br i1 %520, label %521, label %529

521:                                              ; preds = %518, %.loopexit554
  %522 = load double, ptr %21, align 8, !tbaa !33
  %523 = load ptr, ptr %304, align 8, !tbaa !9
  %524 = getelementptr inbounds double, ptr %523, i64 %.6592
  %525 = load double, ptr %524, align 8, !tbaa !10
  %526 = fsub double %515, %525
  %527 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %526, ptr noundef %1)
  %528 = fadd double %522, %527
  store double %528, ptr %21, align 8, !tbaa !33
  %.pre692 = load i8, ptr %19, align 1, !tbaa !32, !range !30
  br label %529

529:                                              ; preds = %521, %518
  %530 = phi i8 [ %.pre692, %521 ], [ %519, %518 ]
  %531 = trunc nuw i8 %530 to i1
  br i1 %531, label %.preheader551, label %.loopexit

.preheader551:                                    ; preds = %529, %.preheader551
  %.1490591 = phi i64 [ %546, %.preheader551 ], [ 0, %529 ]
  %532 = load ptr, ptr %22, align 8, !tbaa !9
  %533 = getelementptr inbounds double, ptr %532, i64 %.1490591
  %534 = load double, ptr %533, align 8, !tbaa !10
  %535 = load ptr, ptr %304, align 8, !tbaa !9
  %536 = getelementptr inbounds double, ptr %535, i64 %.6592
  %537 = load double, ptr %536, align 8, !tbaa !10
  %538 = fsub double %515, %537
  %539 = fmul double %538, 2.000000e+00
  %540 = load ptr, ptr %303, align 8, !tbaa !9
  %541 = getelementptr inbounds ptr, ptr %540, i64 %.6592
  %542 = load ptr, ptr %541, align 8, !tbaa !42
  %543 = getelementptr inbounds double, ptr %542, i64 %.1490591
  %544 = load double, ptr %543, align 8, !tbaa !10
  %545 = call double @llvm.fmuladd.f64(double %539, double %544, double %534)
  store double %545, ptr %533, align 8, !tbaa !10
  %546 = add nuw nsw i64 %.1490591, 1
  %exitcond663.not = icmp eq i64 %546, %.0502599
  br i1 %exitcond663.not, label %.loopexit, label %.preheader551, !llvm.loop !51

.loopexit:                                        ; preds = %.preheader551, %529
  %547 = add nuw nsw i64 %.6592, 1
  %exitcond664.not = icmp eq i64 %547, %.0502599
  br i1 %exitcond664.not, label %.loopexit552, label %.loopexit554, !llvm.loop !52

._crit_edge595:                                   ; preds = %.loopexit552, %488
  call void @_ZN11alglib_impl15minlbfgsresultsEPKNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef nonnull %8, ptr noundef nonnull %15, ptr noundef %1)
  %548 = load i8, ptr %4, align 1, !tbaa !5, !range !30, !noundef !31
  %549 = trunc nuw i8 %548 to i1
  %550 = load i64, ptr %23, align 8
  %551 = icmp slt i64 %550, 1
  %552 = select i1 %549, i1 true, i1 %551
  %553 = zext i1 %552 to i8
  store i8 %553, ptr %4, align 1, !tbaa !5
  br label %554

554:                                              ; preds = %._crit_edge595, %566
  %555 = phi i1 [ %552, %._crit_edge595 ], [ %567, %566 ]
  %.7596 = phi i64 [ 0, %._crit_edge595 ], [ %569, %566 ]
  br i1 %555, label %566, label %556

556:                                              ; preds = %554
  %557 = load ptr, ptr %17, align 8, !tbaa !9
  %558 = getelementptr inbounds double, ptr %557, i64 %.7596
  %559 = load double, ptr %558, align 8, !tbaa !10
  %560 = load ptr, ptr %302, align 8, !tbaa !9
  %561 = getelementptr inbounds double, ptr %560, i64 %.7596
  %562 = load double, ptr %561, align 8, !tbaa !10
  %563 = fsub double %559, %562
  %564 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %563, ptr noundef %1)
  %565 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %564, double noundef 1.000000e-03)
  br label %566

566:                                              ; preds = %556, %554
  %567 = phi i1 [ true, %554 ], [ %565, %556 ]
  %568 = zext i1 %567 to i8
  store i8 %568, ptr %4, align 1, !tbaa !5
  %569 = add nuw nsw i64 %.7596, 1
  %exitcond665.not = icmp eq i64 %569, %.0502599
  br i1 %exitcond665.not, label %.preheader555.1, label %554, !llvm.loop !53

.preheader555.1:                                  ; preds = %566, %.preheader555.1
  %.4498589.1 = phi i64 [ %574, %.preheader555.1 ], [ 0, %566 ]
  %570 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %571 = call double @llvm.fmuladd.f64(double %570, double 2.000000e+00, double -1.000000e+00)
  %572 = load ptr, ptr %17, align 8, !tbaa !9
  %573 = getelementptr inbounds double, ptr %572, i64 %.4498589.1
  store double %571, ptr %573, align 8, !tbaa !10
  %574 = add nuw nsw i64 %.4498589.1, 1
  %exitcond661.1.not = icmp eq i64 %574, %.0502599
  br i1 %exitcond661.1.not, label %575, label %.preheader555.1, !llvm.loop !46

575:                                              ; preds = %.preheader555.1
  call void @_ZN11alglib_impl15minlbfgscreatefEllPKNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %.0502599, i64 noundef %.0500598, ptr noundef nonnull %8, double noundef 0x3EB0C6F7A0B5ED8D, ptr noundef nonnull %14, ptr noundef %1)
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef nonnull %14, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %1)
  %576 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %576, label %.lr.ph594.1, label %._crit_edge595.1

.lr.ph594.1:                                      ; preds = %575, %.loopexit552.1
  %577 = load i8, ptr %18, align 8, !tbaa !12, !range !30, !noundef !31
  %578 = trunc nuw i8 %577 to i1
  %.pre693.pre = load i8, ptr %19, align 1, !tbaa !32, !range !30
  %.pre701 = trunc nuw i8 %.pre693.pre to i1
  br i1 %578, label %580, label %579

579:                                              ; preds = %.lr.ph594.1
  br i1 %.pre701, label %.thread708, label %.loopexit554.1.preheader

.thread708:                                       ; preds = %579
  store double 0.000000e+00, ptr %21, align 8, !tbaa !33
  br label %.preheader553.1.preheader

580:                                              ; preds = %.lr.ph594.1
  store double 0.000000e+00, ptr %21, align 8, !tbaa !33
  br i1 %.pre701, label %.preheader553.1.preheader, label %.loopexit554.1.preheader

.preheader553.1.preheader:                        ; preds = %.thread708, %580
  br i1 %481, label %.loopexit554.1.preheader.loopexit.unr-lcssa, label %.preheader553.1

.preheader553.1:                                  ; preds = %.preheader553.1.preheader, %.preheader553.1
  %.5499590.1 = phi i64 [ %592, %.preheader553.1 ], [ 0, %.preheader553.1.preheader ]
  %niter748 = phi i64 [ %niter748.next.3, %.preheader553.1 ], [ 0, %.preheader553.1.preheader ]
  %581 = load ptr, ptr %22, align 8, !tbaa !9
  %582 = getelementptr inbounds double, ptr %581, i64 %.5499590.1
  store double 0.000000e+00, ptr %582, align 8, !tbaa !10
  %583 = or disjoint i64 %.5499590.1, 1
  %584 = load ptr, ptr %22, align 8, !tbaa !9
  %585 = getelementptr inbounds double, ptr %584, i64 %583
  store double 0.000000e+00, ptr %585, align 8, !tbaa !10
  %586 = or disjoint i64 %.5499590.1, 2
  %587 = load ptr, ptr %22, align 8, !tbaa !9
  %588 = getelementptr inbounds double, ptr %587, i64 %586
  store double 0.000000e+00, ptr %588, align 8, !tbaa !10
  %589 = or disjoint i64 %.5499590.1, 3
  %590 = load ptr, ptr %22, align 8, !tbaa !9
  %591 = getelementptr inbounds double, ptr %590, i64 %589
  store double 0.000000e+00, ptr %591, align 8, !tbaa !10
  %592 = add nuw nsw i64 %.5499590.1, 4
  %niter748.next.3 = add i64 %niter748, 4
  %niter748.ncmp.3 = icmp eq i64 %niter748.next.3, %unroll_iter747
  br i1 %niter748.ncmp.3, label %.loopexit554.1.preheader.loopexit.unr-lcssa, label %.preheader553.1, !llvm.loop !48

.loopexit554.1.preheader.loopexit.unr-lcssa:      ; preds = %.preheader553.1, %.preheader553.1.preheader
  %.5499590.1.unr = phi i64 [ 0, %.preheader553.1.preheader ], [ %592, %.preheader553.1 ]
  br i1 %lcmp.mod746.not, label %.loopexit554.1.preheader, label %.preheader553.1.epil

.preheader553.1.epil:                             ; preds = %.loopexit554.1.preheader.loopexit.unr-lcssa, %.preheader553.1.epil
  %.5499590.1.epil = phi i64 [ %595, %.preheader553.1.epil ], [ %.5499590.1.unr, %.loopexit554.1.preheader.loopexit.unr-lcssa ]
  %epil.iter745 = phi i64 [ %epil.iter745.next, %.preheader553.1.epil ], [ 0, %.loopexit554.1.preheader.loopexit.unr-lcssa ]
  %593 = load ptr, ptr %22, align 8, !tbaa !9
  %594 = getelementptr inbounds double, ptr %593, i64 %.5499590.1.epil
  store double 0.000000e+00, ptr %594, align 8, !tbaa !10
  %595 = add nuw nsw i64 %.5499590.1.epil, 1
  %epil.iter745.next = add i64 %epil.iter745, 1
  %epil.iter745.cmp.not = icmp eq i64 %epil.iter745.next, %xtraiter744
  br i1 %epil.iter745.cmp.not, label %.loopexit554.1.preheader, label %.preheader553.1.epil, !llvm.loop !54

.loopexit554.1.preheader:                         ; preds = %.loopexit554.1.preheader.loopexit.unr-lcssa, %.preheader553.1.epil, %579, %580
  br label %.loopexit554.1

.loopexit554.1:                                   ; preds = %.loopexit554.1.preheader, %.loopexit.1
  %.6592.1 = phi i64 [ %633, %.loopexit.1 ], [ 0, %.loopexit554.1.preheader ]
  %596 = load ptr, ptr %303, align 8, !tbaa !9
  %597 = getelementptr inbounds ptr, ptr %596, i64 %.6592.1
  %598 = load ptr, ptr %597, align 8, !tbaa !42
  %599 = load ptr, ptr %20, align 8, !tbaa !9
  %600 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %470)
  %601 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %598, i64 noundef 1, ptr noundef %599, i64 noundef 1, i64 noundef %600)
  %602 = load i8, ptr %18, align 8, !tbaa !12, !range !30, !noundef !31
  %603 = trunc nuw i8 %602 to i1
  br i1 %603, label %607, label %604

604:                                              ; preds = %.loopexit554.1
  %605 = load i8, ptr %19, align 1, !tbaa !32, !range !30, !noundef !31
  %606 = trunc nuw i8 %605 to i1
  br i1 %606, label %607, label %615

607:                                              ; preds = %604, %.loopexit554.1
  %608 = load double, ptr %21, align 8, !tbaa !33
  %609 = load ptr, ptr %304, align 8, !tbaa !9
  %610 = getelementptr inbounds double, ptr %609, i64 %.6592.1
  %611 = load double, ptr %610, align 8, !tbaa !10
  %612 = fsub double %601, %611
  %613 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %612, ptr noundef %1)
  %614 = fadd double %608, %613
  store double %614, ptr %21, align 8, !tbaa !33
  %.pre694 = load i8, ptr %19, align 1, !tbaa !32, !range !30
  br label %615

615:                                              ; preds = %607, %604
  %616 = phi i8 [ %.pre694, %607 ], [ %605, %604 ]
  %617 = trunc nuw i8 %616 to i1
  br i1 %617, label %.preheader551.1, label %.loopexit.1

.preheader551.1:                                  ; preds = %615, %.preheader551.1
  %.1490591.1 = phi i64 [ %632, %.preheader551.1 ], [ 0, %615 ]
  %618 = load ptr, ptr %22, align 8, !tbaa !9
  %619 = getelementptr inbounds double, ptr %618, i64 %.1490591.1
  %620 = load double, ptr %619, align 8, !tbaa !10
  %621 = load ptr, ptr %304, align 8, !tbaa !9
  %622 = getelementptr inbounds double, ptr %621, i64 %.6592.1
  %623 = load double, ptr %622, align 8, !tbaa !10
  %624 = fsub double %601, %623
  %625 = fmul double %624, 2.000000e+00
  %626 = load ptr, ptr %303, align 8, !tbaa !9
  %627 = getelementptr inbounds ptr, ptr %626, i64 %.6592.1
  %628 = load ptr, ptr %627, align 8, !tbaa !42
  %629 = getelementptr inbounds double, ptr %628, i64 %.1490591.1
  %630 = load double, ptr %629, align 8, !tbaa !10
  %631 = call double @llvm.fmuladd.f64(double %625, double %630, double %620)
  store double %631, ptr %619, align 8, !tbaa !10
  %632 = add nuw nsw i64 %.1490591.1, 1
  %exitcond663.1.not = icmp eq i64 %632, %.0502599
  br i1 %exitcond663.1.not, label %.loopexit.1, label %.preheader551.1, !llvm.loop !51

.loopexit.1:                                      ; preds = %.preheader551.1, %615
  %633 = add nuw nsw i64 %.6592.1, 1
  %exitcond664.1.not = icmp eq i64 %633, %.0502599
  br i1 %exitcond664.1.not, label %.loopexit552.1, label %.loopexit554.1, !llvm.loop !52

.loopexit552.1:                                   ; preds = %.loopexit.1
  %634 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %634, label %.lr.ph594.1, label %._crit_edge595.1, !llvm.loop !47

._crit_edge595.1:                                 ; preds = %.loopexit552.1, %575
  call void @_ZN11alglib_impl15minlbfgsresultsEPKNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef nonnull %8, ptr noundef nonnull %15, ptr noundef %1)
  %635 = load i8, ptr %4, align 1, !tbaa !5, !range !30, !noundef !31
  %636 = trunc nuw i8 %635 to i1
  %637 = load i64, ptr %23, align 8
  %638 = icmp slt i64 %637, 1
  %639 = select i1 %636, i1 true, i1 %638
  %640 = zext i1 %639 to i8
  store i8 %640, ptr %4, align 1, !tbaa !5
  br label %641

641:                                              ; preds = %653, %._crit_edge595.1
  %642 = phi i1 [ %639, %._crit_edge595.1 ], [ %654, %653 ]
  %.7596.1 = phi i64 [ 0, %._crit_edge595.1 ], [ %656, %653 ]
  br i1 %642, label %653, label %643

643:                                              ; preds = %641
  %644 = load ptr, ptr %17, align 8, !tbaa !9
  %645 = getelementptr inbounds double, ptr %644, i64 %.7596.1
  %646 = load double, ptr %645, align 8, !tbaa !10
  %647 = load ptr, ptr %302, align 8, !tbaa !9
  %648 = getelementptr inbounds double, ptr %647, i64 %.7596.1
  %649 = load double, ptr %648, align 8, !tbaa !10
  %650 = fsub double %646, %649
  %651 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %650, ptr noundef %1)
  %652 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %651, double noundef 1.000000e-03)
  br label %653

653:                                              ; preds = %643, %641
  %654 = phi i1 [ true, %641 ], [ %652, %643 ]
  %655 = zext i1 %654 to i8
  store i8 %655, ptr %4, align 1, !tbaa !5
  %656 = add nuw nsw i64 %.7596.1, 1
  %exitcond665.1.not = icmp eq i64 %656, %.0502599
  br i1 %exitcond665.1.not, label %657, label %641, !llvm.loop !53

657:                                              ; preds = %653
  %658 = add nuw nsw i64 %.0500598, 1
  %exitcond666.not = icmp eq i64 %658, %indvars.iv
  br i1 %exitcond666.not, label %659, label %.preheader556, !llvm.loop !55

659:                                              ; preds = %657
  %660 = add nuw nsw i64 %.0502599, 1
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond667.not = icmp eq i64 %indvars.iv.next, 12
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond667.not, label %.preheader550, label %440, !llvm.loop !56

661:                                              ; preds = %.preheader550, %907
  %indvars.iv679 = phi i64 [ 2, %.preheader550 ], [ %indvars.iv.next680, %907 ]
  %.1503627 = phi i64 [ 1, %.preheader550 ], [ %908, %907 ]
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %.1503627, i64 noundef %.1503627, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.1503627, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.1503627, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %10, i64 noundef %.1503627, ptr noundef %1)
  br label %662

662:                                              ; preds = %661, %662
  %.8600 = phi i64 [ 0, %661 ], [ %667, %662 ]
  %663 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  %664 = fadd double %663, -5.000000e-01
  %665 = load ptr, ptr %302, align 8, !tbaa !9
  %666 = getelementptr inbounds double, ptr %665, i64 %.8600
  store double %664, ptr %666, align 8, !tbaa !10
  %667 = add nuw nsw i64 %.8600, 1
  %exitcond668.not = icmp eq i64 %667, %.1503627
  br i1 %exitcond668.not, label %.preheader546, label %662, !llvm.loop !57

.preheader546:                                    ; preds = %662, %676
  %.9602 = phi i64 [ %690, %676 ], [ 0, %662 ]
  br label %668

668:                                              ; preds = %.preheader546, %668
  %.2491601 = phi i64 [ 0, %.preheader546 ], [ %675, %668 ]
  %669 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  %670 = fadd double %669, -5.000000e-01
  %671 = load ptr, ptr %303, align 8, !tbaa !9
  %672 = getelementptr inbounds ptr, ptr %671, i64 %.9602
  %673 = load ptr, ptr %672, align 8, !tbaa !42
  %674 = getelementptr inbounds double, ptr %673, i64 %.2491601
  store double %670, ptr %674, align 8, !tbaa !10
  %675 = add nuw nsw i64 %.2491601, 1
  %exitcond669.not = icmp eq i64 %675, %.1503627
  br i1 %exitcond669.not, label %676, label %668, !llvm.loop !58

676:                                              ; preds = %668
  %677 = load ptr, ptr %303, align 8, !tbaa !9
  %678 = getelementptr inbounds ptr, ptr %677, i64 %.9602
  %679 = load ptr, ptr %678, align 8, !tbaa !42
  %680 = getelementptr inbounds double, ptr %679, i64 %.9602
  %681 = load double, ptr %680, align 8, !tbaa !10
  %682 = call noundef i64 @_ZN11alglib_impl7ae_signEdPNS_8ae_stateE(double noundef %681, ptr noundef %1)
  %683 = mul nsw i64 %682, 3
  %684 = sitofp i64 %683 to double
  %685 = fadd double %681, %684
  %686 = load ptr, ptr %303, align 8, !tbaa !9
  %687 = getelementptr inbounds ptr, ptr %686, i64 %.9602
  %688 = load ptr, ptr %687, align 8, !tbaa !42
  %689 = getelementptr inbounds double, ptr %688, i64 %.9602
  store double %685, ptr %689, align 8, !tbaa !10
  %690 = add nuw nsw i64 %.9602, 1
  %exitcond670.not = icmp eq i64 %690, %.1503627
  br i1 %exitcond670.not, label %.preheader548, label %.preheader546, !llvm.loop !59

.preheader548:                                    ; preds = %676, %.preheader548
  %.10603 = phi i64 [ %694, %.preheader548 ], [ 0, %676 ]
  %691 = call noundef double @_ZN11alglib_impl6rdotvrElPKNS_9ae_vectorEPKNS_9ae_matrixElPNS_8ae_stateE(i64 noundef %.1503627, ptr noundef nonnull %9, ptr noundef nonnull %12, i64 noundef %.10603, ptr noundef %1)
  %692 = load ptr, ptr %304, align 8, !tbaa !9
  %693 = getelementptr inbounds double, ptr %692, i64 %.10603
  store double %691, ptr %693, align 8, !tbaa !10
  %694 = add nuw nsw i64 %.10603, 1
  %exitcond671.not = icmp eq i64 %694, %.1503627
  br i1 %exitcond671.not, label %.preheader545, label %.preheader548, !llvm.loop !60

.preheader545:                                    ; preds = %.preheader548, %905
  %.1501626 = phi i64 [ %906, %905 ], [ 1, %.preheader548 ]
  br label %695

695:                                              ; preds = %.preheader545, %904
  %696 = phi i1 [ true, %.preheader545 ], [ false, %904 ]
  %697 = phi i1 [ false, %.preheader545 ], [ true, %904 ]
  %698 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  %699 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %698, double noundef 0.000000e+00)
  br label %700

700:                                              ; preds = %695, %700
  %.11604 = phi i64 [ 0, %695 ], [ %705, %700 ]
  %701 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  %702 = fadd double %701, -5.000000e-01
  %703 = load ptr, ptr %17, align 8, !tbaa !9
  %704 = getelementptr inbounds double, ptr %703, i64 %.11604
  store double %702, ptr %704, align 8, !tbaa !10
  %705 = add nuw nsw i64 %.11604, 1
  %exitcond672.not = icmp eq i64 %705, %.1503627
  br i1 %exitcond672.not, label %706, label %700, !llvm.loop !61

706:                                              ; preds = %700
  br i1 %697, label %708, label %707

707:                                              ; preds = %706
  call void @_ZN11alglib_impl14minlbfgscreateEllPKNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %.1503627, i64 noundef %.1501626, ptr noundef nonnull %8, ptr noundef nonnull %14, ptr noundef %1)
  br label %709

708:                                              ; preds = %706
  call void @_ZN11alglib_impl15minlbfgscreatefEllPKNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %.1503627, i64 noundef %.1501626, ptr noundef nonnull %8, double noundef 0x3EB0C6F7A0B5ED8D, ptr noundef nonnull %14, ptr noundef %1)
  br label %709

709:                                              ; preds = %707, %708
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef nonnull %14, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_impl15minlbfgssetxrepEPNS_13minlbfgsstateEbPNS_8ae_stateE(ptr noundef nonnull %14, i1 noundef zeroext %699, ptr noundef %1)
  call void @_ZN11alglib_impl21minlbfgssetprotocolv2EPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  %710 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  %711 = xor i1 %699, true
  br i1 %710, label %.lr.ph615, label %.outer._crit_edge

.lr.ph615:                                        ; preds = %709, %.outer
  %.0481.ph621 = phi i1 [ true, %.outer ], [ false, %709 ]
  br label %712

712:                                              ; preds = %.lr.ph615, %.backedge
  %713 = load i64, ptr %419, align 8, !tbaa !62
  %714 = icmp eq i64 %713, 2
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %714, ptr noundef nonnull @.str.536, ptr noundef %1)
  %715 = load i64, ptr %420, align 8, !tbaa !63
  switch i64 %715, label %887 [
    i64 -1, label %716
    i64 2, label %737
    i64 3, label %798
  ]

716:                                              ; preds = %712
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %711, ptr noundef nonnull @.str.19, i32 noundef 44384, ptr noundef nonnull @.str.537)
  %717 = load i64, ptr %438, align 8, !tbaa !64
  %718 = icmp slt i64 %717, %.1503627
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %718, ptr noundef nonnull @.str.19, i32 noundef 44385, ptr noundef nonnull @.str.538)
  br label %719

719:                                              ; preds = %716, %719
  %.1487620 = phi double [ 0.000000e+00, %716 ], [ %726, %719 ]
  %.12619 = phi i64 [ 0, %716 ], [ %727, %719 ]
  %720 = call noundef double @_ZN11alglib_impl6rdotvrElPKNS_9ae_vectorEPKNS_9ae_matrixElPNS_8ae_stateE(i64 noundef %.1503627, ptr noundef nonnull %438, ptr noundef nonnull %12, i64 noundef %.12619, ptr noundef %1)
  %721 = load ptr, ptr %304, align 8, !tbaa !9
  %722 = getelementptr inbounds double, ptr %721, i64 %.12619
  %723 = load double, ptr %722, align 8, !tbaa !10
  %724 = fsub double %720, %723
  %725 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %724, ptr noundef %1)
  %726 = fadd double %.1487620, %725
  %727 = add nuw nsw i64 %.12619, 1
  %exitcond677.not = icmp eq i64 %727, %.1503627
  br i1 %exitcond677.not, label %.outer, label %719, !llvm.loop !65

.outer:                                           ; preds = %719
  %728 = load double, ptr %439, align 8, !tbaa !66
  %729 = fsub double %726, %728
  %730 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %729, ptr noundef %1)
  %731 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %1)
  %732 = load double, ptr %439, align 8, !tbaa !66
  %733 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %732, double noundef %726, double noundef 1.000000e+00, ptr noundef %1)
  %734 = fmul double %731, %733
  %735 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %730, double noundef %734)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %735, ptr noundef nonnull @.str.19, i32 noundef 44391, ptr noundef nonnull @.str.539)
  store i64 0, ptr %420, align 8, !tbaa !63
  %736 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %736, label %.lr.ph615, label %.outer._crit_edge, !llvm.loop !67

737:                                              ; preds = %712
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %697, ptr noundef nonnull @.str.19, i32 noundef 44398, ptr noundef nonnull @.str.540)
  %738 = load i64, ptr %421, align 8, !tbaa !68
  %739 = icmp ne i64 %738, 1
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %739, ptr noundef nonnull @.str.19, i32 noundef 44399, ptr noundef nonnull @.str.541)
  %740 = load i64, ptr %422, align 8, !tbaa !69
  %741 = icmp ne i64 %740, 1
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %741, ptr noundef nonnull @.str.19, i32 noundef 44400, ptr noundef nonnull @.str.542)
  %742 = load i64, ptr %423, align 8, !tbaa !70
  %743 = icmp ne i64 %742, %.1503627
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %743, ptr noundef nonnull @.str.19, i32 noundef 44401, ptr noundef nonnull @.str.543)
  %744 = load i64, ptr %424, align 8, !tbaa !71
  %745 = icmp ne i64 %744, 0
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %745, ptr noundef nonnull @.str.19, i32 noundef 44402, ptr noundef nonnull @.str.544)
  %746 = load i64, ptr %426, align 8, !tbaa !72
  %747 = icmp slt i64 %746, %.1503627
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %747, ptr noundef nonnull @.str.19, i32 noundef 44403, ptr noundef nonnull @.str.545)
  %748 = load i64, ptr %427, align 8, !tbaa !73
  %749 = icmp slt i64 %748, 1
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %749, ptr noundef nonnull @.str.19, i32 noundef 44404, ptr noundef nonnull @.str.546)
  %750 = load i64, ptr %428, align 8, !tbaa !74
  %751 = icmp slt i64 %750, %.1503627
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %751, ptr noundef nonnull @.str.19, i32 noundef 44405, ptr noundef nonnull @.str.547)
  %752 = load i64, ptr %429, align 8, !tbaa !75
  %753 = icmp slt i64 %752, %.1503627
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %753, ptr noundef nonnull @.str.19, i32 noundef 44406, ptr noundef nonnull @.str.548)
  %754 = load i64, ptr %430, align 8, !tbaa !76
  %755 = icmp slt i64 %754, %.1503627
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %755, ptr noundef nonnull @.str.19, i32 noundef 44407, ptr noundef nonnull @.str.549)
  %756 = load i64, ptr %431, align 8, !tbaa !77
  %757 = icmp slt i64 %756, 0
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %757, ptr noundef nonnull @.str.19, i32 noundef 44408, ptr noundef nonnull @.str.550)
  %758 = load i64, ptr %432, align 8, !tbaa !78
  %759 = icmp slt i64 %758, 1
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %759, ptr noundef nonnull @.str.19, i32 noundef 44409, ptr noundef nonnull @.str.551)
  %760 = load i64, ptr %433, align 8, !tbaa !79
  %761 = load i64, ptr %422, align 8, !tbaa !69
  %762 = icmp slt i64 %760, %761
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %762, ptr noundef nonnull @.str.19, i32 noundef 44410, ptr noundef nonnull @.str.552)
  %763 = load i64, ptr %434, align 8, !tbaa !80
  %764 = load i64, ptr %423, align 8, !tbaa !70
  %765 = icmp slt i64 %763, %764
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %765, ptr noundef nonnull @.str.19, i32 noundef 44411, ptr noundef nonnull @.str.553)
  %766 = load ptr, ptr %435, align 8, !tbaa !9
  store double 0.000000e+00, ptr %766, align 8, !tbaa !10
  call void @_ZN11alglib_impl5rsetvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %.1503627, double noundef 0.000000e+00, ptr noundef nonnull %428, ptr noundef %1)
  br label %767

767:                                              ; preds = %737, %794
  %.13614 = phi i64 [ 0, %737 ], [ %795, %794 ]
  %768 = call noundef double @_ZN11alglib_impl6rdotvrElPKNS_9ae_vectorEPKNS_9ae_matrixElPNS_8ae_stateE(i64 noundef %.1503627, ptr noundef nonnull %426, ptr noundef nonnull %12, i64 noundef %.13614, ptr noundef %1)
  %769 = load ptr, ptr %435, align 8, !tbaa !9
  %770 = load double, ptr %769, align 8, !tbaa !10
  %771 = load ptr, ptr %304, align 8, !tbaa !9
  %772 = getelementptr inbounds double, ptr %771, i64 %.13614
  %773 = load double, ptr %772, align 8, !tbaa !10
  %774 = fsub double %768, %773
  %775 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %774, ptr noundef %1)
  %776 = fadd double %770, %775
  %777 = load ptr, ptr %435, align 8, !tbaa !9
  store double %776, ptr %777, align 8, !tbaa !10
  br label %778

778:                                              ; preds = %767, %778
  %.3492613 = phi i64 [ 0, %767 ], [ %793, %778 ]
  %779 = load ptr, ptr %437, align 8, !tbaa !9
  %780 = getelementptr inbounds double, ptr %779, i64 %.3492613
  %781 = load double, ptr %780, align 8, !tbaa !10
  %782 = load ptr, ptr %304, align 8, !tbaa !9
  %783 = getelementptr inbounds double, ptr %782, i64 %.13614
  %784 = load double, ptr %783, align 8, !tbaa !10
  %785 = fsub double %768, %784
  %786 = fmul double %785, 2.000000e+00
  %787 = load ptr, ptr %303, align 8, !tbaa !9
  %788 = getelementptr inbounds ptr, ptr %787, i64 %.13614
  %789 = load ptr, ptr %788, align 8, !tbaa !42
  %790 = getelementptr inbounds double, ptr %789, i64 %.3492613
  %791 = load double, ptr %790, align 8, !tbaa !10
  %792 = call double @llvm.fmuladd.f64(double %786, double %791, double %781)
  store double %792, ptr %780, align 8, !tbaa !10
  %793 = add nuw nsw i64 %.3492613, 1
  %exitcond675.not = icmp eq i64 %793, %.1503627
  br i1 %exitcond675.not, label %794, label %778, !llvm.loop !81

794:                                              ; preds = %778
  %795 = add nuw nsw i64 %.13614, 1
  %exitcond676.not = icmp eq i64 %795, %.1503627
  br i1 %exitcond676.not, label %796, label %767, !llvm.loop !82

796:                                              ; preds = %794
  store i64 0, ptr %420, align 8, !tbaa !63
  br label %.backedge

.backedge:                                        ; preds = %796, %886, %887
  %797 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %797, label %712, label %.outer._crit_edge, !llvm.loop !67

798:                                              ; preds = %712
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %696, ptr noundef nonnull @.str.19, i32 noundef 44428, ptr noundef nonnull @.str.554)
  %799 = load i64, ptr %421, align 8, !tbaa !68
  %800 = icmp ne i64 %799, 1
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %800, ptr noundef nonnull @.str.19, i32 noundef 44429, ptr noundef nonnull @.str.555)
  %801 = load i64, ptr %422, align 8, !tbaa !69
  %802 = icmp ne i64 %801, 1
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %802, ptr noundef nonnull @.str.19, i32 noundef 44430, ptr noundef nonnull @.str.556)
  %803 = load i64, ptr %423, align 8, !tbaa !70
  %804 = icmp ne i64 %803, %.1503627
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %804, ptr noundef nonnull @.str.19, i32 noundef 44431, ptr noundef nonnull @.str.557)
  %805 = load i64, ptr %424, align 8, !tbaa !71
  %806 = icmp ne i64 %805, 0
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %806, ptr noundef nonnull @.str.19, i32 noundef 44432, ptr noundef nonnull @.str.558)
  %807 = load i64, ptr %425, align 8, !tbaa !83
  %808 = icmp slt i64 %807, 2
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %808, ptr noundef nonnull @.str.19, i32 noundef 44433, ptr noundef nonnull @.str.559)
  %809 = load i64, ptr %426, align 8, !tbaa !72
  %810 = load i64, ptr %425, align 8, !tbaa !83
  %811 = shl nsw i64 %810, 1
  %812 = or disjoint i64 %811, 1
  %813 = mul i64 %812, %.1503627
  %814 = icmp slt i64 %809, %813
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %814, ptr noundef nonnull @.str.19, i32 noundef 44434, ptr noundef nonnull @.str.560)
  %815 = load i64, ptr %427, align 8, !tbaa !73
  %816 = icmp slt i64 %815, 1
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %816, ptr noundef nonnull @.str.19, i32 noundef 44435, ptr noundef nonnull @.str.561)
  %817 = load i64, ptr %428, align 8, !tbaa !74
  %818 = icmp slt i64 %817, %.1503627
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %818, ptr noundef nonnull @.str.19, i32 noundef 44436, ptr noundef nonnull @.str.562)
  %819 = load i64, ptr %429, align 8, !tbaa !75
  %820 = icmp slt i64 %819, %.1503627
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %820, ptr noundef nonnull @.str.19, i32 noundef 44437, ptr noundef nonnull @.str.563)
  %821 = load i64, ptr %430, align 8, !tbaa !76
  %822 = icmp slt i64 %821, %.1503627
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %822, ptr noundef nonnull @.str.19, i32 noundef 44438, ptr noundef nonnull @.str.564)
  %823 = load i64, ptr %431, align 8, !tbaa !77
  %824 = icmp slt i64 %823, 0
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %824, ptr noundef nonnull @.str.19, i32 noundef 44439, ptr noundef nonnull @.str.565)
  %825 = load i64, ptr %432, align 8, !tbaa !78
  %826 = icmp slt i64 %825, 1
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %826, ptr noundef nonnull @.str.19, i32 noundef 44440, ptr noundef nonnull @.str.566)
  %827 = load i64, ptr %433, align 8, !tbaa !79
  %828 = load i64, ptr %422, align 8, !tbaa !69
  %829 = icmp slt i64 %827, %828
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %829, ptr noundef nonnull @.str.19, i32 noundef 44441, ptr noundef nonnull @.str.567)
  %830 = load i64, ptr %434, align 8, !tbaa !80
  %831 = load i64, ptr %423, align 8, !tbaa !70
  %832 = icmp slt i64 %830, %831
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %832, ptr noundef nonnull @.str.19, i32 noundef 44442, ptr noundef nonnull @.str.568)
  %833 = load ptr, ptr %435, align 8, !tbaa !9
  store double 0.000000e+00, ptr %833, align 8, !tbaa !10
  call void @_ZN11alglib_impl5rsetvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %.1503627, double noundef 0.000000e+00, ptr noundef nonnull %428, ptr noundef %1)
  br label %834

834:                                              ; preds = %798, %.split611.us
  %.14612 = phi i64 [ 0, %798 ], [ %885, %.split611.us ]
  %835 = call noundef double @_ZN11alglib_impl6rdotvrElPKNS_9ae_vectorEPKNS_9ae_matrixElPNS_8ae_stateE(i64 noundef %.1503627, ptr noundef nonnull %426, ptr noundef nonnull %12, i64 noundef %.14612, ptr noundef %1)
  %836 = load ptr, ptr %435, align 8, !tbaa !9
  %837 = load double, ptr %836, align 8, !tbaa !10
  %838 = load ptr, ptr %304, align 8, !tbaa !9
  %839 = getelementptr inbounds double, ptr %838, i64 %.14612
  %840 = load double, ptr %839, align 8, !tbaa !10
  %841 = fsub double %835, %840
  %842 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %841, ptr noundef %1)
  %843 = fadd double %837, %842
  %844 = load ptr, ptr %435, align 8, !tbaa !9
  store double %843, ptr %844, align 8, !tbaa !10
  %845 = load i64, ptr %425, align 8, !tbaa !83
  %846 = icmp sgt i64 %845, 0
  br i1 %846, label %.preheader544, label %.split611.us

.preheader544:                                    ; preds = %834, %._crit_edge608
  %847 = phi i64 [ %883, %._crit_edge608 ], [ %845, %834 ]
  %.4493609 = phi i64 [ %884, %._crit_edge608 ], [ 0, %834 ]
  %.not514.not605 = icmp sgt i64 %847, 0
  br i1 %.not514.not605, label %.lr.ph607, label %._crit_edge608

.lr.ph607:                                        ; preds = %.preheader544
  %848 = shl i64 %.4493609, 4
  br label %849

849:                                              ; preds = %.lr.ph607, %880
  %850 = phi i64 [ %847, %.lr.ph607 ], [ %882, %880 ]
  %.0488606 = phi i64 [ 0, %.lr.ph607 ], [ %881, %880 ]
  %851 = load ptr, ptr %436, align 8, !tbaa !9
  %852 = getelementptr double, ptr %851, i64 %.1503627
  %.idx = mul i64 %848, %850
  %853 = getelementptr i8, ptr %852, i64 %.idx
  %.idx535 = shl i64 %.0488606, 4
  %854 = getelementptr i8, ptr %853, i64 %.idx535
  %855 = load double, ptr %854, align 8, !tbaa !10
  %856 = getelementptr inbounds double, ptr %851, i64 %.4493609
  %857 = load double, ptr %856, align 8, !tbaa !10
  %858 = getelementptr i8, ptr %854, i64 8
  %859 = load double, ptr %858, align 8, !tbaa !10
  %860 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %859, double noundef 0.000000e+00)
  br i1 %860, label %880, label %861

861:                                              ; preds = %849
  %862 = fsub double %855, %857
  %863 = load ptr, ptr %437, align 8, !tbaa !9
  %864 = getelementptr inbounds double, ptr %863, i64 %.4493609
  %865 = load double, ptr %864, align 8, !tbaa !10
  %866 = load ptr, ptr %303, align 8, !tbaa !9
  %867 = getelementptr inbounds ptr, ptr %866, i64 %.14612
  %868 = load ptr, ptr %867, align 8, !tbaa !42
  %869 = getelementptr inbounds double, ptr %868, i64 %.4493609
  %870 = load double, ptr %869, align 8, !tbaa !10
  %871 = call double @llvm.fmuladd.f64(double %862, double %870, double %835)
  %872 = load ptr, ptr %304, align 8, !tbaa !9
  %873 = getelementptr inbounds double, ptr %872, i64 %.14612
  %874 = load double, ptr %873, align 8, !tbaa !10
  %875 = fsub double %871, %874
  %876 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %875, ptr noundef %1)
  %877 = call double @llvm.fmuladd.f64(double %876, double %859, double %865)
  %878 = load ptr, ptr %437, align 8, !tbaa !9
  %879 = getelementptr inbounds double, ptr %878, i64 %.4493609
  store double %877, ptr %879, align 8, !tbaa !10
  br label %880

880:                                              ; preds = %849, %861
  %881 = add nuw nsw i64 %.0488606, 1
  %882 = load i64, ptr %425, align 8, !tbaa !83
  %.not514.not = icmp slt i64 %881, %882
  br i1 %.not514.not, label %849, label %._crit_edge608, !llvm.loop !84

._crit_edge608:                                   ; preds = %880, %.preheader544
  %883 = phi i64 [ %847, %.preheader544 ], [ %882, %880 ]
  %884 = add nuw nsw i64 %.4493609, 1
  %exitcond673.not = icmp eq i64 %884, %.1503627
  br i1 %exitcond673.not, label %.split611.us, label %.preheader544, !llvm.loop !85

.split611.us:                                     ; preds = %._crit_edge608, %834
  %885 = add nuw nsw i64 %.14612, 1
  %exitcond674.not = icmp eq i64 %885, %.1503627
  br i1 %exitcond674.not, label %886, label %834, !llvm.loop !87

886:                                              ; preds = %.split611.us
  store i64 0, ptr %420, align 8, !tbaa !63
  br label %.backedge

887:                                              ; preds = %712
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext false, ptr noundef nonnull @.str.569, ptr noundef %1)
  br label %.backedge

.outer._crit_edge:                                ; preds = %.outer, %.backedge, %709
  %.0481.ph.lcssa = phi i1 [ false, %709 ], [ %.0481.ph621, %.backedge ], [ true, %.outer ]
  call void @_ZN11alglib_impl15minlbfgsresultsEPKNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef nonnull %8, ptr noundef nonnull %15, ptr noundef %1)
  %888 = load i64, ptr %23, align 8, !tbaa !88
  %889 = icmp slt i64 %888, 1
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %889, ptr noundef nonnull @.str.19, i32 noundef 44469, ptr noundef nonnull @.str.570)
  %890 = and i1 %.0481.ph.lcssa, %711
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %890, ptr noundef nonnull @.str.19, i32 noundef 44470, ptr noundef nonnull @.str.571)
  %891 = xor i1 %.0481.ph.lcssa, true
  %892 = and i1 %699, %891
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %892, ptr noundef nonnull @.str.19, i32 noundef 44471, ptr noundef nonnull @.str.572)
  br label %893

893:                                              ; preds = %.outer._crit_edge, %893
  %.15623 = phi i64 [ 0, %.outer._crit_edge ], [ %903, %893 ]
  %894 = load ptr, ptr %17, align 8, !tbaa !9
  %895 = getelementptr inbounds double, ptr %894, i64 %.15623
  %896 = load double, ptr %895, align 8, !tbaa !10
  %897 = load ptr, ptr %302, align 8, !tbaa !9
  %898 = getelementptr inbounds double, ptr %897, i64 %.15623
  %899 = load double, ptr %898, align 8, !tbaa !10
  %900 = fsub double %896, %899
  %901 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %900, ptr noundef %1)
  %902 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %901, double noundef 1.000000e-03)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %902, ptr noundef nonnull @.str.19, i32 noundef 44474, ptr noundef nonnull @.str.573)
  %903 = add nuw nsw i64 %.15623, 1
  %exitcond678.not = icmp eq i64 %903, %.1503627
  br i1 %exitcond678.not, label %904, label %893, !llvm.loop !90

904:                                              ; preds = %893
  br i1 %696, label %695, label %905, !llvm.loop !91

905:                                              ; preds = %904
  %906 = add nuw nsw i64 %.1501626, 1
  %exitcond681.not = icmp eq i64 %906, %indvars.iv679
  br i1 %exitcond681.not, label %907, label %.preheader545, !llvm.loop !92

907:                                              ; preds = %905
  %908 = add nuw nsw i64 %.1503627, 1
  %indvars.iv.next680 = add nuw nsw i64 %indvars.iv679, 1
  %exitcond682.not = icmp eq i64 %indvars.iv.next680, 12
  br i1 %exitcond682.not, label %.preheader, label %661, !llvm.loop !93

.preheader:                                       ; preds = %907, %983
  %.not = phi i1 [ false, %983 ], [ true, %907 ]
  %.0485644 = phi i1 [ %984, %983 ], [ false, %907 ]
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef 3, ptr noundef %1)
  %909 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %910 = call double @llvm.fmuladd.f64(double %909, double 6.000000e+00, double -3.000000e+00)
  %911 = load ptr, ptr %17, align 8, !tbaa !9
  store double %910, ptr %911, align 8, !tbaa !10
  %912 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %913 = call double @llvm.fmuladd.f64(double %912, double 6.000000e+00, double -3.000000e+00)
  %914 = load ptr, ptr %17, align 8, !tbaa !9
  %915 = getelementptr inbounds i8, ptr %914, i64 8
  store double %913, ptr %915, align 8, !tbaa !10
  %916 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %917 = call double @llvm.fmuladd.f64(double %916, double 6.000000e+00, double -3.000000e+00)
  %918 = load ptr, ptr %17, align 8, !tbaa !9
  %919 = getelementptr inbounds i8, ptr %918, i64 16
  store double %917, ptr %919, align 8, !tbaa !10
  br i1 %.not, label %.thread, label %920

.thread:                                          ; preds = %.preheader
  call void @_ZN11alglib_impl14minlbfgscreateEllPKNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef 3, i64 noundef 2, ptr noundef nonnull %8, ptr noundef nonnull %14, ptr noundef %1)
  br label %921

920:                                              ; preds = %.preheader
  call void @_ZN11alglib_impl15minlbfgscreatefEllPKNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef 3, i64 noundef 2, ptr noundef nonnull %8, double noundef 0x3EB0C6F7A0B5ED8D, ptr noundef nonnull %14, ptr noundef %1)
  br label %921

921:                                              ; preds = %.thread, %920
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef nonnull %14, double noundef 1.000000e-03, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %1)
  %922 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %922, label %.lr.ph630, label %._crit_edge631

.lr.ph630:                                        ; preds = %921, %.lr.ph630
  call void @_ZL26testminlbfgsunit_testfunc3PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  %923 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %923, label %.lr.ph630, label %._crit_edge631, !llvm.loop !94

._crit_edge631:                                   ; preds = %.lr.ph630, %921
  call void @_ZN11alglib_impl15minlbfgsresultsEPKNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef nonnull %8, ptr noundef nonnull %15, ptr noundef %1)
  %924 = load i64, ptr %23, align 8
  %925 = icmp ne i64 %924, 4
  %926 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %927 = call double @llvm.fmuladd.f64(double %926, double 6.000000e+00, double -3.000000e+00)
  %928 = load ptr, ptr %17, align 8, !tbaa !9
  store double %927, ptr %928, align 8, !tbaa !10
  %929 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %930 = call double @llvm.fmuladd.f64(double %929, double 6.000000e+00, double -3.000000e+00)
  %931 = load ptr, ptr %17, align 8, !tbaa !9
  %932 = getelementptr inbounds i8, ptr %931, i64 8
  store double %930, ptr %932, align 8, !tbaa !10
  %933 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %934 = call double @llvm.fmuladd.f64(double %933, double 6.000000e+00, double -3.000000e+00)
  %935 = load ptr, ptr %17, align 8, !tbaa !9
  %936 = getelementptr inbounds i8, ptr %935, i64 16
  store double %934, ptr %936, align 8, !tbaa !10
  %937 = select i1 %.0485644, i1 true, i1 %925
  br i1 %.not, label %.thread710, label %938

.thread710:                                       ; preds = %._crit_edge631
  call void @_ZN11alglib_impl14minlbfgscreateEllPKNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef 3, i64 noundef 2, ptr noundef nonnull %8, ptr noundef nonnull %14, ptr noundef %1)
  br label %939

938:                                              ; preds = %._crit_edge631
  call void @_ZN11alglib_impl15minlbfgscreatefEllPKNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef 3, i64 noundef 2, ptr noundef nonnull %8, double noundef 0x3EB0C6F7A0B5ED8D, ptr noundef nonnull %14, ptr noundef %1)
  br label %939

939:                                              ; preds = %.thread710, %938
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef nonnull %14, double noundef 0.000000e+00, double noundef 1.000000e-03, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %1)
  %940 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %940, label %.lr.ph634, label %._crit_edge635

.lr.ph634:                                        ; preds = %939, %.lr.ph634
  call void @_ZL26testminlbfgsunit_testfunc3PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  %941 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %941, label %.lr.ph634, label %._crit_edge635, !llvm.loop !95

._crit_edge635:                                   ; preds = %.lr.ph634, %939
  call void @_ZN11alglib_impl15minlbfgsresultsEPKNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef nonnull %8, ptr noundef nonnull %15, ptr noundef %1)
  %942 = load i64, ptr %23, align 8
  %943 = icmp ne i64 %942, 1
  %944 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %945 = call double @llvm.fmuladd.f64(double %944, double 6.000000e+00, double -3.000000e+00)
  %946 = load ptr, ptr %17, align 8, !tbaa !9
  store double %945, ptr %946, align 8, !tbaa !10
  %947 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %948 = call double @llvm.fmuladd.f64(double %947, double 6.000000e+00, double -3.000000e+00)
  %949 = load ptr, ptr %17, align 8, !tbaa !9
  %950 = getelementptr inbounds i8, ptr %949, i64 8
  store double %948, ptr %950, align 8, !tbaa !10
  %951 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %952 = call double @llvm.fmuladd.f64(double %951, double 6.000000e+00, double -3.000000e+00)
  %953 = load ptr, ptr %17, align 8, !tbaa !9
  %954 = getelementptr inbounds i8, ptr %953, i64 16
  store double %952, ptr %954, align 8, !tbaa !10
  %955 = select i1 %937, i1 true, i1 %943
  br i1 %.not, label %.thread711, label %956

.thread711:                                       ; preds = %._crit_edge635
  call void @_ZN11alglib_impl14minlbfgscreateEllPKNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef 3, i64 noundef 2, ptr noundef nonnull %8, ptr noundef nonnull %14, ptr noundef %1)
  br label %957

956:                                              ; preds = %._crit_edge635
  call void @_ZN11alglib_impl15minlbfgscreatefEllPKNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef 3, i64 noundef 2, ptr noundef nonnull %8, double noundef 0x3EB0C6F7A0B5ED8D, ptr noundef nonnull %14, ptr noundef %1)
  br label %957

957:                                              ; preds = %.thread711, %956
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef nonnull %14, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 1.000000e-03, i64 noundef 0, ptr noundef %1)
  %958 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %958, label %.lr.ph638, label %._crit_edge639

.lr.ph638:                                        ; preds = %957, %.lr.ph638
  call void @_ZL26testminlbfgsunit_testfunc3PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  %959 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %959, label %.lr.ph638, label %._crit_edge639, !llvm.loop !96

._crit_edge639:                                   ; preds = %.lr.ph638, %957
  call void @_ZN11alglib_impl15minlbfgsresultsEPKNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef nonnull %8, ptr noundef nonnull %15, ptr noundef %1)
  %960 = load i64, ptr %23, align 8
  %961 = icmp ne i64 %960, 2
  %962 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %963 = call double @llvm.fmuladd.f64(double %962, double 2.000000e+00, double -1.000000e+00)
  %964 = load ptr, ptr %17, align 8, !tbaa !9
  store double %963, ptr %964, align 8, !tbaa !10
  %965 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %966 = call double @llvm.fmuladd.f64(double %965, double 2.000000e+00, double -1.000000e+00)
  %967 = load ptr, ptr %17, align 8, !tbaa !9
  %968 = getelementptr inbounds i8, ptr %967, i64 8
  store double %966, ptr %968, align 8, !tbaa !10
  %969 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %970 = call double @llvm.fmuladd.f64(double %969, double 2.000000e+00, double -1.000000e+00)
  %971 = load ptr, ptr %17, align 8, !tbaa !9
  %972 = getelementptr inbounds i8, ptr %971, i64 16
  store double %970, ptr %972, align 8, !tbaa !10
  %973 = select i1 %955, i1 true, i1 %961
  br i1 %.not, label %.thread712, label %974

.thread712:                                       ; preds = %._crit_edge639
  call void @_ZN11alglib_impl14minlbfgscreateEllPKNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef 3, i64 noundef 2, ptr noundef nonnull %8, ptr noundef nonnull %14, ptr noundef %1)
  br label %975

974:                                              ; preds = %._crit_edge639
  call void @_ZN11alglib_impl15minlbfgscreatefEllPKNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef 3, i64 noundef 2, ptr noundef nonnull %8, double noundef 0x3EB0C6F7A0B5ED8D, ptr noundef nonnull %14, ptr noundef %1)
  br label %975

975:                                              ; preds = %.thread712, %974
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef nonnull %14, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 10, ptr noundef %1)
  %976 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %976, label %.lr.ph642, label %._crit_edge643

.lr.ph642:                                        ; preds = %975, %.lr.ph642
  call void @_ZL26testminlbfgsunit_testfunc3PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  %977 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %977, label %.lr.ph642, label %._crit_edge643, !llvm.loop !97

._crit_edge643:                                   ; preds = %.lr.ph642, %975
  call void @_ZN11alglib_impl15minlbfgsresultsEPKNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef nonnull %8, ptr noundef nonnull %15, ptr noundef %1)
  %978 = load i64, ptr %23, align 8
  %979 = icmp ne i64 %978, 5
  %or.cond14 = select i1 %973, i1 true, i1 %979
  br i1 %or.cond14, label %983, label %980

980:                                              ; preds = %._crit_edge643
  %981 = load i64, ptr %15, align 8, !tbaa !98
  %982 = icmp ne i64 %981, 10
  br label %983

983:                                              ; preds = %980, %._crit_edge643
  %984 = phi i1 [ true, %._crit_edge643 ], [ %982, %980 ]
  br i1 %.not, label %.preheader, label %985, !llvm.loop !99

985:                                              ; preds = %983
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef 3, ptr noundef %1)
  %986 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %987 = call double @llvm.fmuladd.f64(double %986, double 6.000000e+00, double -3.000000e+00)
  %988 = load ptr, ptr %17, align 8, !tbaa !9
  store double %987, ptr %988, align 8, !tbaa !10
  %989 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %990 = call double @llvm.fmuladd.f64(double %989, double 6.000000e+00, double -3.000000e+00)
  %991 = load ptr, ptr %17, align 8, !tbaa !9
  %992 = getelementptr inbounds i8, ptr %991, i64 8
  store double %990, ptr %992, align 8, !tbaa !10
  %993 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %994 = call double @llvm.fmuladd.f64(double %993, double 6.000000e+00, double -3.000000e+00)
  %995 = load ptr, ptr %17, align 8, !tbaa !9
  %996 = getelementptr inbounds i8, ptr %995, i64 16
  store double %994, ptr %996, align 8, !tbaa !10
  call void @_ZN11alglib_impl14minlbfgscreateEllPKNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef 3, i64 noundef 2, ptr noundef nonnull %8, ptr noundef nonnull %14, ptr noundef %1)
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef nonnull %14, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 10000, ptr noundef %1)
  %997 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %997, label %.lr.ph648, label %._crit_edge649

.lr.ph648:                                        ; preds = %985, %.lr.ph648
  %998 = load ptr, ptr %20, align 8, !tbaa !9
  %999 = load double, ptr %998, align 8, !tbaa !10
  %1000 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %999, ptr noundef %1)
  %1001 = fadd double %1000, -2.000000e+00
  %1002 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1001, ptr noundef %1)
  %1003 = load ptr, ptr %20, align 8, !tbaa !9
  %1004 = getelementptr inbounds i8, ptr %1003, i64 8
  %1005 = load double, ptr %1004, align 8, !tbaa !10
  %1006 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1005, ptr noundef %1)
  %1007 = fadd double %1002, %1006
  %1008 = load ptr, ptr %20, align 8, !tbaa !9
  %1009 = getelementptr inbounds i8, ptr %1008, i64 16
  %1010 = load double, ptr %1009, align 8, !tbaa !10
  %1011 = load double, ptr %1008, align 8, !tbaa !10
  %1012 = fsub double %1010, %1011
  %1013 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1012, ptr noundef %1)
  %1014 = fadd double %1007, %1013
  store double %1014, ptr %21, align 8, !tbaa !33
  %1015 = load ptr, ptr %20, align 8, !tbaa !9
  %1016 = load double, ptr %1015, align 8, !tbaa !10
  %1017 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %1016, ptr noundef %1)
  %1018 = fadd double %1017, -2.000000e+00
  %1019 = fmul double %1018, 2.000000e+00
  %1020 = load ptr, ptr %20, align 8, !tbaa !9
  %1021 = load double, ptr %1020, align 8, !tbaa !10
  %1022 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %1021, ptr noundef %1)
  %1023 = load ptr, ptr %20, align 8, !tbaa !9
  %1024 = load double, ptr %1023, align 8, !tbaa !10
  %1025 = getelementptr inbounds i8, ptr %1023, i64 16
  %1026 = load double, ptr %1025, align 8, !tbaa !10
  %1027 = fsub double %1024, %1026
  %1028 = fmul double %1027, 2.000000e+00
  %1029 = call double @llvm.fmuladd.f64(double %1019, double %1022, double %1028)
  %1030 = load ptr, ptr %22, align 8, !tbaa !9
  store double %1029, ptr %1030, align 8, !tbaa !10
  %1031 = load ptr, ptr %20, align 8, !tbaa !9
  %1032 = getelementptr inbounds i8, ptr %1031, i64 8
  %1033 = load double, ptr %1032, align 8, !tbaa !10
  %1034 = fmul double %1033, 2.000000e+00
  %1035 = load ptr, ptr %22, align 8, !tbaa !9
  %1036 = getelementptr inbounds i8, ptr %1035, i64 8
  store double %1034, ptr %1036, align 8, !tbaa !10
  %1037 = load ptr, ptr %20, align 8, !tbaa !9
  %1038 = getelementptr inbounds i8, ptr %1037, i64 16
  %1039 = load double, ptr %1038, align 8, !tbaa !10
  %1040 = load double, ptr %1037, align 8, !tbaa !10
  %1041 = fsub double %1039, %1040
  %1042 = fmul double %1041, 2.000000e+00
  %1043 = load ptr, ptr %22, align 8, !tbaa !9
  %1044 = getelementptr inbounds i8, ptr %1043, i64 16
  store double %1042, ptr %1044, align 8, !tbaa !10
  %1045 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %1045, label %.lr.ph648, label %._crit_edge649, !llvm.loop !100

._crit_edge649:                                   ; preds = %.lr.ph648, %985
  call void @_ZN11alglib_impl15minlbfgsresultsEPKNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef nonnull %8, ptr noundef nonnull %15, ptr noundef %1)
  %1046 = load i64, ptr %23, align 8
  %1047 = icmp slt i64 %1046, 1
  store i8 0, ptr %7, align 1, !tbaa !5
  call void @_ZL29testminlbfgsunit_testoptguardPbPN11alglib_impl8ae_stateE(ptr noundef nonnull %7, ptr noundef %1)
  br i1 %194, label %1061, label %1048

1048:                                             ; preds = %._crit_edge649
  %1049 = trunc nuw i8 %.1484.lcssa.1 to i1
  br i1 %1049, label %1061, label %1050

1050:                                             ; preds = %1048
  %1051 = load i8, ptr %4, align 1, !tbaa !5, !range !30, !noundef !31
  %1052 = trunc nuw i8 %1051 to i1
  %brmerge = select i1 %1052, i1 true, i1 %984
  %brmerge529 = select i1 %brmerge, i1 true, i1 %1047
  %1053 = load i8, ptr %5, align 1, !range !30
  %1054 = trunc nuw i8 %1053 to i1
  %brmerge530 = or i1 %418, %1054
  %or.cond532 = select i1 %brmerge529, i1 true, i1 %brmerge530
  br i1 %or.cond532, label %1061, label %1055

1055:                                             ; preds = %1050
  %1056 = load i8, ptr %6, align 1, !tbaa !5, !range !30, !noundef !31
  %1057 = trunc nuw i8 %1056 to i1
  br i1 %1057, label %1061, label %1058

1058:                                             ; preds = %1055
  %1059 = load i8, ptr %7, align 1, !tbaa !5, !range !30, !noundef !31
  %1060 = trunc nuw i8 %1059 to i1
  br label %1061

1061:                                             ; preds = %1050, %1058, %1055, %1048, %._crit_edge649
  %1062 = phi i1 [ true, %1055 ], [ true, %1050 ], [ true, %1048 ], [ true, %._crit_edge649 ], [ %1060, %1058 ]
  br i1 %0, label %1094, label %1063

1063:                                             ; preds = %1061
  %1064 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.574)
  %1065 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.575)
  %.str.2..str.3 = select i1 %194, ptr @.str.2, ptr @.str.3
  %1066 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.2..str.3)
  %1067 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.576)
  %1068 = trunc nuw i8 %.1484.lcssa.1 to i1
  %.str.3.sink720 = select i1 %1068, ptr @.str.2, ptr @.str.3
  %1069 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink720)
  %1070 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.577)
  %1071 = load i8, ptr %4, align 1, !tbaa !5, !range !30, !noundef !31
  %1072 = trunc nuw i8 %1071 to i1
  %.str.3.sink721 = select i1 %1072, ptr @.str.2, ptr @.str.3
  %1073 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink721)
  %1074 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.578)
  %.str.3.sink722 = select i1 %418, ptr @.str.2, ptr @.str.3
  %1075 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink722)
  %1076 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.579)
  %1077 = load i8, ptr %6, align 1, !tbaa !5, !range !30, !noundef !31
  %1078 = trunc nuw i8 %1077 to i1
  %.str.3.sink723 = select i1 %1078, ptr @.str.2, ptr @.str.3
  %1079 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink723)
  %1080 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.580)
  %.str.3.sink724 = select i1 %984, ptr @.str.2, ptr @.str.3
  %1081 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink724)
  %1082 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.581)
  %.str.3.sink725 = select i1 %1047, ptr @.str.2, ptr @.str.3
  %1083 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink725)
  %1084 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.528)
  %1085 = load i8, ptr %5, align 1, !tbaa !5, !range !30, !noundef !31
  %1086 = trunc nuw i8 %1085 to i1
  %.str.3.sink726 = select i1 %1086, ptr @.str.2, ptr @.str.3
  %1087 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink726)
  %1088 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.582)
  %1089 = load i8, ptr %7, align 1, !tbaa !5, !range !30, !noundef !31
  %1090 = trunc nuw i8 %1089 to i1
  %.str.3.sink727 = select i1 %1090, ptr @.str.2, ptr @.str.3
  %1091 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink727)
  %.str.16.sink = select i1 %1062, ptr @.str.15, ptr @.str.16
  %1092 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.16.sink)
  %1093 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.17)
  br label %1094

1094:                                             ; preds = %1063, %1061
  %1095 = xor i1 %1062, true
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 10024, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #6
  ret i1 %1095
}

declare void @_ZN11alglib_impl19_minlbfgsstate_initEPvPNS_8ae_stateEb(ptr noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #3

declare void @_ZN11alglib_impl20_minlbfgsreport_initEPvPNS_8ae_stateEb(ptr noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #3

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

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

declare void @_ZN11alglib_impl14minlbfgscreateEllPKNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl15minlbfgscreatefEllPKNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef, i64 noundef, ptr noundef, double noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef, double noundef, double noundef, double noundef, i64 noundef, ptr noundef) local_unnamed_addr #3

declare noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl15minlbfgsresultsEPKNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl17minlbfgssetstpmaxEPNS_13minlbfgsstateEdPNS_8ae_stateE(ptr noundef, double noundef, ptr noundef) local_unnamed_addr #3

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

declare void @_ZN11alglib_impl19minlbfgsrestartfromEPNS_13minlbfgsstateEPKNS_9ae_vectorEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare noundef i64 @_ZN11alglib_impl7ae_signEdPNS_8ae_stateE(double noundef, ptr noundef) local_unnamed_addr #3

declare noundef double @_ZN11alglib_impl6rdotvrElPKNS_9ae_vectorEPKNS_9ae_matrixElPNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl15minlbfgssetxrepEPNS_13minlbfgsstateEbPNS_8ae_stateE(ptr noundef, i1 noundef zeroext, ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl21minlbfgssetprotocolv2EPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #3

declare noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef, double noundef, double noundef, ptr noundef) local_unnamed_addr #3

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nofree nounwind "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 = { "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 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #5 = { 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 #6 = { 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 = !{!"bool", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"double", !7, i64 0}
!12 = !{!13, !6, i64 2368}
!13 = !{!"_ZTSN11alglib_impl13minlbfgsstateE", !14, i64 0, !14, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !14, i64 40, !6, i64 48, !11, i64 56, !15, i64 64, !11, i64 128, !14, i64 136, !14, i64 144, !14, i64 152, !14, i64 160, !14, i64 168, !15, i64 176, !18, i64 240, !18, i64 320, !15, i64 400, !15, i64 464, !15, i64 528, !11, i64 592, !11, i64 600, !15, i64 608, !11, i64 672, !11, i64 680, !15, i64 688, !14, i64 752, !11, i64 760, !18, i64 768, !15, i64 848, !15, i64 912, !15, i64 976, !18, i64 1040, !14, i64 1120, !19, i64 1128, !20, i64 1592, !11, i64 2040, !11, i64 2048, !11, i64 2056, !11, i64 2064, !11, i64 2072, !11, i64 2080, !15, i64 2088, !15, i64 2152, !14, i64 2216, !6, i64 2224, !15, i64 2232, !11, i64 2296, !15, i64 2304, !6, i64 2368, !6, i64 2369, !6, i64 2370, !14, i64 2376, !15, i64 2384, !11, i64 2448, !14, i64 2456, !14, i64 2464, !14, i64 2472, !14, i64 2480, !14, i64 2488, !15, i64 2496, !15, i64 2560, !15, i64 2624, !21, i64 2688, !15, i64 3056, !15, i64 3120, !15, i64 3184, !15, i64 3248, !18, i64 3312, !21, i64 3392, !11, i64 3760, !22, i64 3768, !14, i64 4032, !14, i64 4040, !14, i64 4048, !24, i64 4056, !14, i64 4248, !25, i64 4256, !15, i64 9960}
!14 = !{!"long", !7, i64 0}
!15 = !{!"_ZTSN11alglib_impl9ae_vectorE", !14, i64 0, !14, i64 8, !6, i64 16, !16, i64 24, !7, i64 56}
!16 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !17, i64 0, !17, i64 8, !17, i64 16, !17, i64 24}
!17 = !{!"any pointer", !7, i64 0}
!18 = !{!"_ZTSN11alglib_impl9ae_matrixE", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24, !6, i64 32, !16, i64 40, !7, i64 72}
!19 = !{!"_ZTSN11alglib_impl12precbuflbfgsE", !15, i64 0, !15, i64 64, !15, i64 128, !18, i64 192, !15, i64 272, !15, i64 336, !15, i64 400}
!20 = !{!"_ZTSN11alglib_impl14precbuflowrankE", !14, i64 0, !14, i64 8, !15, i64 16, !18, i64 80, !15, i64 160, !18, i64 224, !18, i64 304, !15, i64 384}
!21 = !{!"_ZTSN11alglib_impl12sparsematrixE", !15, i64 0, !15, i64 64, !15, i64 128, !15, i64 192, !15, i64 256, !14, i64 320, !14, i64 328, !14, i64 336, !14, i64 344, !14, i64 352, !14, i64 360}
!22 = !{!"_ZTSN11alglib_impl10rcommstateE", !23, i64 0, !15, i64 8, !15, i64 72, !15, i64 136, !15, i64 200}
!23 = !{!"int", !7, i64 0}
!24 = !{!"_ZTSN11alglib_impl11linminstateE", !6, i64 0, !6, i64 1, !14, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !11, i64 56, !11, i64 64, !11, i64 72, !11, i64 80, !11, i64 88, !11, i64 96, !11, i64 104, !11, i64 112, !11, i64 120, !11, i64 128, !11, i64 136, !11, i64 144, !11, i64 152, !11, i64 160, !11, i64 168, !11, i64 176, !11, i64 184}
!25 = !{!"_ZTSN11alglib_impl17smoothnessmonitorE", !14, i64 0, !14, i64 8, !6, i64 16, !15, i64 24, !15, i64 88, !14, i64 152, !15, i64 160, !15, i64 224, !15, i64 288, !18, i64 352, !15, i64 432, !15, i64 496, !14, i64 560, !14, i64 568, !14, i64 576, !11, i64 584, !14, i64 592, !15, i64 600, !15, i64 664, !11, i64 728, !15, i64 736, !15, i64 800, !11, i64 864, !18, i64 872, !18, i64 952, !18, i64 1032, !15, i64 1112, !15, i64 1176, !22, i64 1240, !6, i64 1504, !6, i64 1505, !14, i64 1512, !14, i64 1520, !11, i64 1528, !11, i64 1536, !6, i64 1544, !26, i64 1552, !11, i64 1848, !11, i64 1856, !27, i64 1864, !27, i64 2184, !11, i64 2504, !11, i64 2512, !28, i64 2520, !28, i64 2840, !11, i64 3160, !11, i64 3168, !29, i64 3176, !29, i64 3504, !6, i64 3832, !15, i64 3840, !15, i64 3904, !18, i64 3968, !22, i64 4048, !15, i64 4312, !15, i64 4376, !15, i64 4440, !15, i64 4504, !15, i64 4568, !15, i64 4632, !15, i64 4696, !15, i64 4760, !18, i64 4824, !18, i64 4904, !15, i64 4984, !15, i64 5048, !15, i64 5112, !15, i64 5176, !15, i64 5240, !15, i64 5304, !15, i64 5368, !15, i64 5432, !15, i64 5496, !15, i64 5560, !18, i64 5624}
!26 = !{!"_ZTSN11alglib_impl14optguardreportE", !6, i64 0, !6, i64 1, !14, i64 8, !11, i64 16, !6, i64 24, !6, i64 25, !6, i64 26, !14, i64 32, !11, i64 40, !6, i64 48, !14, i64 56, !14, i64 64, !15, i64 72, !18, i64 136, !18, i64 216}
!27 = !{!"_ZTSN11alglib_impl19optguardnonc0reportE", !6, i64 0, !14, i64 8, !15, i64 16, !15, i64 80, !14, i64 144, !15, i64 152, !15, i64 216, !14, i64 280, !14, i64 288, !14, i64 296, !14, i64 304, !14, i64 312}
!28 = !{!"_ZTSN11alglib_impl24optguardnonc1test0reportE", !6, i64 0, !14, i64 8, !15, i64 16, !15, i64 80, !14, i64 144, !15, i64 152, !15, i64 216, !14, i64 280, !14, i64 288, !14, i64 296, !14, i64 304, !14, i64 312}
!29 = !{!"_ZTSN11alglib_impl24optguardnonc1test1reportE", !6, i64 0, !14, i64 8, !14, i64 16, !15, i64 24, !15, i64 88, !14, i64 152, !15, i64 160, !15, i64 224, !14, i64 288, !14, i64 296, !14, i64 304, !14, i64 312, !14, i64 320}
!30 = !{i8 0, i8 2}
!31 = !{}
!32 = !{!13, !6, i64 2369}
!33 = !{!13, !11, i64 2296}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = distinct !{!36, !35}
!37 = distinct !{!37, !35}
!38 = distinct !{!38, !35}
!39 = distinct !{!39, !35}
!40 = distinct !{!40, !35}
!41 = distinct !{!41, !35}
!42 = !{!17, !17, i64 0}
!43 = distinct !{!43, !35}
!44 = distinct !{!44, !35}
!45 = distinct !{!45, !35}
!46 = distinct !{!46, !35}
!47 = distinct !{!47, !35}
!48 = distinct !{!48, !35}
!49 = distinct !{!49, !50}
!50 = !{!"llvm.loop.unroll.disable"}
!51 = distinct !{!51, !35}
!52 = distinct !{!52, !35}
!53 = distinct !{!53, !35}
!54 = distinct !{!54, !50}
!55 = distinct !{!55, !35}
!56 = distinct !{!56, !35}
!57 = distinct !{!57, !35}
!58 = distinct !{!58, !35}
!59 = distinct !{!59, !35}
!60 = distinct !{!60, !35}
!61 = distinct !{!61, !35}
!62 = !{!13, !14, i64 2216}
!63 = !{!13, !14, i64 2376}
!64 = !{!13, !14, i64 2384}
!65 = distinct !{!65, !35}
!66 = !{!13, !11, i64 2448}
!67 = distinct !{!67, !35}
!68 = !{!13, !14, i64 2456}
!69 = !{!13, !14, i64 2464}
!70 = !{!13, !14, i64 2472}
!71 = !{!13, !14, i64 2480}
!72 = !{!13, !14, i64 2496}
!73 = !{!13, !14, i64 2560}
!74 = !{!13, !14, i64 2624}
!75 = !{!13, !14, i64 3056}
!76 = !{!13, !14, i64 3248}
!77 = !{!13, !14, i64 3120}
!78 = !{!13, !14, i64 3184}
!79 = !{!13, !14, i64 3312}
!80 = !{!13, !14, i64 3320}
!81 = distinct !{!81, !35}
!82 = distinct !{!82, !35}
!83 = !{!13, !14, i64 2488}
!84 = distinct !{!84, !35}
!85 = distinct !{!85, !35, !86}
!86 = !{!"llvm.loop.unswitch.partial.disable"}
!87 = distinct !{!87, !35}
!88 = !{!89, !14, i64 16}
!89 = !{!"_ZTSN11alglib_impl14minlbfgsreportE", !14, i64 0, !14, i64 8, !14, i64 16}
!90 = distinct !{!90, !35}
!91 = distinct !{!91, !35}
!92 = distinct !{!92, !35}
!93 = distinct !{!93, !35}
!94 = distinct !{!94, !35}
!95 = distinct !{!95, !35}
!96 = distinct !{!96, !35}
!97 = distinct !{!97, !35}
!98 = !{!89, !14, i64 0}
!99 = distinct !{!99, !35}
!100 = distinct !{!100, !35}


; Effective O3 passes: ADCEPass,AggressiveInstCombinePass,ConstraintEliminationPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SCCPPass,SROAPass,SimpleLoopUnswitchPass,SimplifyCFGPass