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

@.str.1 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.334 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.335 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.336 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.337 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.338 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.339 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.340 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.341 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.342 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.343 = 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 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) #2

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_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) #1

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

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) #1

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

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_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef) #1

declare noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef) #1

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

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

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

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

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

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

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

; 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 double, align 8
  %25 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %26 = alloca %"struct.alglib_impl::ae_vector", align 8
  %27 = alloca i64, align 8
  %28 = alloca %"struct.alglib_impl::minlbfgsstate", align 8
  %29 = alloca %"struct.alglib_impl::minlbfgsreport", align 8
  %30 = alloca double, align 8
  %31 = alloca i64, align 8
  %32 = alloca i8, align 1
  %33 = zext i1 %0 to i8
  store i8 %33, 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 80, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.start.p0(i64 6872, ptr %28) #5
  call void @llvm.lifetime.start.p0(i64 24, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #5
  %34 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %34, 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 %25, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %26, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %28, i8 0, i64 6872, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %29, i8 0, i64 24, i1 false)
  %35 = 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 %35, i1 noundef zeroext true)
  %36 = 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 %36, i1 noundef zeroext true)
  %37 = 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 %37, i1 noundef zeroext true)
  %38 = 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 %38, i1 noundef zeroext true)
  %39 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %25, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %39, i1 noundef zeroext true)
  %40 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %26, i64 noundef 0, i64 noundef 3, ptr noundef %40, i1 noundef zeroext true)
  %41 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl19_minlbfgsstate_initEPvPNS_8ae_stateEb(ptr noundef %28, ptr noundef %41, i1 noundef zeroext true)
  %42 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20_minlbfgsreport_initEPvPNS_8ae_stateEb(ptr noundef %29, ptr noundef %42, i1 noundef zeroext true)
  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
  %43 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL36testminlbfgsunit_testpreconditioningPbPN11alglib_impl8ae_stateE(ptr noundef %14, ptr noundef %43)
  %44 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL26testminlbfgsunit_testotherPbPN11alglib_impl8ae_stateE(ptr noundef %12, ptr noundef %44)
  store double 0x3EB0C6F7A0B5ED8D, ptr %30, align 8, !tbaa !11
  store i64 0, ptr %31, align 8, !tbaa !13
  br label %45

45:                                               ; preds = %219, %2
  %46 = load i64, ptr %31, align 8, !tbaa !13
  %47 = icmp sle i64 %46, 1
  br i1 %47, label %48, label %222

48:                                               ; preds = %45
  %49 = 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 %49)
  store i64 3, ptr %16, align 8, !tbaa !13
  store i64 2, ptr %17, align 8, !tbaa !13
  %50 = load ptr, ptr %4, align 8, !tbaa !9
  %51 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %50)
  %52 = call double @llvm.fmuladd.f64(double 1.000000e+02, double %51, double -5.000000e+01)
  %53 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %54 = load ptr, ptr %53, align 8, !tbaa !15
  %55 = getelementptr inbounds double, ptr %54, i64 0
  store double %52, ptr %55, align 8, !tbaa !11
  %56 = load ptr, ptr %4, align 8, !tbaa !9
  %57 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %56)
  %58 = call double @llvm.fmuladd.f64(double 1.000000e+02, double %57, double -5.000000e+01)
  %59 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %60 = load ptr, ptr %59, align 8, !tbaa !15
  %61 = getelementptr inbounds double, ptr %60, i64 1
  store double %58, ptr %61, align 8, !tbaa !11
  %62 = load ptr, ptr %4, align 8, !tbaa !9
  %63 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %62)
  %64 = call double @llvm.fmuladd.f64(double 1.000000e+02, double %63, double -5.000000e+01)
  %65 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %66 = load ptr, ptr %65, align 8, !tbaa !15
  %67 = getelementptr inbounds double, ptr %66, i64 2
  store double %64, ptr %67, align 8, !tbaa !11
  %68 = load i64, ptr %31, align 8, !tbaa !13
  %69 = icmp eq i64 %68, 0
  br i1 %69, label %70, label %74

70:                                               ; preds = %48
  %71 = load i64, ptr %16, align 8, !tbaa !13
  %72 = load i64, ptr %17, align 8, !tbaa !13
  %73 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14minlbfgscreateEllPNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %71, i64 noundef %72, ptr noundef %18, ptr noundef %28, ptr noundef %73)
  br label %74

74:                                               ; preds = %70, %48
  %75 = load i64, ptr %31, align 8, !tbaa !13
  %76 = icmp eq i64 %75, 1
  br i1 %76, label %77, label %82

77:                                               ; preds = %74
  %78 = load i64, ptr %16, align 8, !tbaa !13
  %79 = load i64, ptr %17, align 8, !tbaa !13
  %80 = load double, ptr %30, align 8, !tbaa !11
  %81 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgscreatefEllPNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %78, i64 noundef %79, ptr noundef %18, double noundef %80, ptr noundef %28, ptr noundef %81)
  br label %82

82:                                               ; preds = %77, %74
  %83 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef %28, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %83)
  br label %84

84:                                               ; preds = %181, %82
  %85 = load ptr, ptr %4, align 8, !tbaa !9
  %86 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %28, ptr noundef %85)
  br i1 %86, label %87, label %182

87:                                               ; preds = %84
  %88 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 46
  %89 = load i8, ptr %88, align 8, !tbaa !16, !range !30, !noundef !31
  %90 = trunc i8 %89 to i1
  br i1 %90, label %95, label %91

91:                                               ; preds = %87
  %92 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 47
  %93 = load i8, ptr %92, align 1, !tbaa !32, !range !30, !noundef !31
  %94 = trunc i8 %93 to i1
  br i1 %94, label %95, label %127

95:                                               ; preds = %91, %87
  %96 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 43
  %97 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %96, i32 0, i32 4
  %98 = load ptr, ptr %97, align 8, !tbaa !15
  %99 = getelementptr inbounds double, ptr %98, i64 0
  %100 = load double, ptr %99, align 8, !tbaa !11
  %101 = fsub double %100, 2.000000e+00
  %102 = load ptr, ptr %4, align 8, !tbaa !9
  %103 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %101, ptr noundef %102)
  %104 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 43
  %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 1
  %108 = load double, ptr %107, align 8, !tbaa !11
  %109 = load ptr, ptr %4, align 8, !tbaa !9
  %110 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %108, ptr noundef %109)
  %111 = fadd double %103, %110
  %112 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 43
  %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 2
  %116 = load double, ptr %115, align 8, !tbaa !11
  %117 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 43
  %118 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %117, i32 0, i32 4
  %119 = load ptr, ptr %118, align 8, !tbaa !15
  %120 = getelementptr inbounds double, ptr %119, i64 0
  %121 = load double, ptr %120, align 8, !tbaa !11
  %122 = fsub double %116, %121
  %123 = load ptr, ptr %4, align 8, !tbaa !9
  %124 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %122, ptr noundef %123)
  %125 = fadd double %111, %124
  %126 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 44
  store double %125, ptr %126, align 8, !tbaa !33
  br label %127

127:                                              ; preds = %95, %91
  %128 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 47
  %129 = load i8, ptr %128, align 1, !tbaa !32, !range !30, !noundef !31
  %130 = trunc i8 %129 to i1
  br i1 %130, label %131, label %181

131:                                              ; preds = %127
  %132 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 43
  %133 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %132, i32 0, i32 4
  %134 = load ptr, ptr %133, align 8, !tbaa !15
  %135 = getelementptr inbounds double, ptr %134, i64 0
  %136 = load double, ptr %135, align 8, !tbaa !11
  %137 = fsub double %136, 2.000000e+00
  %138 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 43
  %139 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %138, i32 0, i32 4
  %140 = load ptr, ptr %139, align 8, !tbaa !15
  %141 = getelementptr inbounds double, ptr %140, i64 0
  %142 = load double, ptr %141, align 8, !tbaa !11
  %143 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 43
  %144 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %143, i32 0, i32 4
  %145 = load ptr, ptr %144, align 8, !tbaa !15
  %146 = getelementptr inbounds double, ptr %145, i64 2
  %147 = load double, ptr %146, align 8, !tbaa !11
  %148 = fsub double %142, %147
  %149 = fmul double 2.000000e+00, %148
  %150 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %137, double %149)
  %151 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 45
  %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 0
  store double %150, ptr %154, align 8, !tbaa !11
  %155 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 43
  %156 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %155, i32 0, i32 4
  %157 = load ptr, ptr %156, align 8, !tbaa !15
  %158 = getelementptr inbounds double, ptr %157, i64 1
  %159 = load double, ptr %158, align 8, !tbaa !11
  %160 = fmul double 2.000000e+00, %159
  %161 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 45
  %162 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %161, i32 0, i32 4
  %163 = load ptr, ptr %162, align 8, !tbaa !15
  %164 = getelementptr inbounds double, ptr %163, i64 1
  store double %160, ptr %164, align 8, !tbaa !11
  %165 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 43
  %166 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %165, i32 0, i32 4
  %167 = load ptr, ptr %166, align 8, !tbaa !15
  %168 = getelementptr inbounds double, ptr %167, i64 2
  %169 = load double, ptr %168, align 8, !tbaa !11
  %170 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 43
  %171 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %170, i32 0, i32 4
  %172 = load ptr, ptr %171, align 8, !tbaa !15
  %173 = getelementptr inbounds double, ptr %172, i64 0
  %174 = load double, ptr %173, align 8, !tbaa !11
  %175 = fsub double %169, %174
  %176 = fmul double 2.000000e+00, %175
  %177 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 45
  %178 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %177, i32 0, i32 4
  %179 = load ptr, ptr %178, align 8, !tbaa !15
  %180 = getelementptr inbounds double, ptr %179, i64 2
  store double %176, ptr %180, align 8, !tbaa !11
  br label %181

181:                                              ; preds = %131, %127
  br label %84, !llvm.loop !34

182:                                              ; preds = %84
  %183 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgsresultsEPNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef %28, ptr noundef %18, ptr noundef %29, ptr noundef %183)
  %184 = load i8, ptr %7, align 1, !tbaa !5, !range !30, !noundef !31
  %185 = trunc i8 %184 to i1
  br i1 %185, label %216, label %186

186:                                              ; preds = %182
  %187 = getelementptr inbounds %"struct.alglib_impl::minlbfgsreport", ptr %29, i32 0, i32 2
  %188 = load i64, ptr %187, align 8, !tbaa !36
  %189 = icmp sle i64 %188, 0
  br i1 %189, label %216, label %190

190:                                              ; preds = %186
  %191 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %192 = load ptr, ptr %191, align 8, !tbaa !15
  %193 = getelementptr inbounds double, ptr %192, i64 0
  %194 = load double, ptr %193, align 8, !tbaa !11
  %195 = fsub double %194, 2.000000e+00
  %196 = load ptr, ptr %4, align 8, !tbaa !9
  %197 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %195, ptr noundef %196)
  %198 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %197, double noundef 1.000000e-03)
  br i1 %198, label %216, label %199

199:                                              ; preds = %190
  %200 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %201 = load ptr, ptr %200, align 8, !tbaa !15
  %202 = getelementptr inbounds double, ptr %201, i64 1
  %203 = load double, ptr %202, align 8, !tbaa !11
  %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 %216, label %207

207:                                              ; preds = %199
  %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 2
  %211 = load double, ptr %210, align 8, !tbaa !11
  %212 = fsub double %211, 2.000000e+00
  %213 = load ptr, ptr %4, align 8, !tbaa !9
  %214 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %212, ptr noundef %213)
  %215 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %214, double noundef 1.000000e-03)
  br label %216

216:                                              ; preds = %207, %199, %190, %186, %182
  %217 = phi i1 [ true, %199 ], [ true, %190 ], [ true, %186 ], [ true, %182 ], [ %215, %207 ]
  %218 = zext i1 %217 to i8
  store i8 %218, ptr %7, align 1, !tbaa !5
  br label %219

219:                                              ; preds = %216
  %220 = load i64, ptr %31, align 8, !tbaa !13
  %221 = add nsw i64 %220, 1
  store i64 %221, ptr %31, align 8, !tbaa !13
  br label %45, !llvm.loop !38

222:                                              ; preds = %45
  store double 0x3EB0C6F7A0B5ED8D, ptr %30, align 8, !tbaa !11
  store i64 0, ptr %31, align 8, !tbaa !13
  br label %223

223:                                              ; preds = %354, %222
  %224 = load i64, ptr %31, align 8, !tbaa !13
  %225 = icmp sle i64 %224, 1
  br i1 %225, label %226, label %357

226:                                              ; preds = %223
  %227 = 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 %227)
  store i64 1, ptr %16, align 8, !tbaa !13
  store i64 1, ptr %17, align 8, !tbaa !13
  store double -1.000000e+02, ptr %24, align 8, !tbaa !11
  br label %228

228:                                              ; preds = %348, %226
  %229 = load double, ptr %24, align 8, !tbaa !11
  %230 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %229, double noundef 1.000000e-01)
  br i1 %230, label %231, label %353

231:                                              ; preds = %228
  %232 = load double, ptr %24, align 8, !tbaa !11
  %233 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %234 = load ptr, ptr %233, align 8, !tbaa !15
  %235 = getelementptr inbounds double, ptr %234, i64 0
  store double %232, ptr %235, align 8, !tbaa !11
  %236 = load i64, ptr %31, align 8, !tbaa !13
  %237 = icmp eq i64 %236, 0
  br i1 %237, label %238, label %242

238:                                              ; preds = %231
  %239 = load i64, ptr %16, align 8, !tbaa !13
  %240 = load i64, ptr %17, align 8, !tbaa !13
  %241 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14minlbfgscreateEllPNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %239, i64 noundef %240, ptr noundef %18, ptr noundef %28, ptr noundef %241)
  br label %242

242:                                              ; preds = %238, %231
  %243 = load i64, ptr %31, align 8, !tbaa !13
  %244 = icmp eq i64 %243, 1
  br i1 %244, label %245, label %250

245:                                              ; preds = %242
  %246 = load i64, ptr %16, align 8, !tbaa !13
  %247 = load i64, ptr %17, align 8, !tbaa !13
  %248 = load double, ptr %30, align 8, !tbaa !11
  %249 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgscreatefEllPNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %246, i64 noundef %247, ptr noundef %18, double noundef %248, ptr noundef %28, ptr noundef %249)
  br label %250

250:                                              ; preds = %245, %242
  %251 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef %28, double noundef 1.000000e-09, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %251)
  br label %252

252:                                              ; preds = %331, %250
  %253 = load ptr, ptr %4, align 8, !tbaa !9
  %254 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %28, ptr noundef %253)
  br i1 %254, label %255, label %332

255:                                              ; preds = %252
  %256 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 46
  %257 = load i8, ptr %256, align 8, !tbaa !16, !range !30, !noundef !31
  %258 = trunc i8 %257 to i1
  br i1 %258, label %263, label %259

259:                                              ; preds = %255
  %260 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 47
  %261 = load i8, ptr %260, align 1, !tbaa !32, !range !30, !noundef !31
  %262 = trunc i8 %261 to i1
  br i1 %262, label %263, label %281

263:                                              ; preds = %259, %255
  %264 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 43
  %265 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %264, i32 0, i32 4
  %266 = load ptr, ptr %265, align 8, !tbaa !15
  %267 = getelementptr inbounds double, ptr %266, i64 0
  %268 = load double, ptr %267, align 8, !tbaa !11
  %269 = load ptr, ptr %4, align 8, !tbaa !9
  %270 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %268, ptr noundef %269)
  %271 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 43
  %272 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %271, i32 0, i32 4
  %273 = load ptr, ptr %272, align 8, !tbaa !15
  %274 = getelementptr inbounds double, ptr %273, i64 0
  %275 = load double, ptr %274, align 8, !tbaa !11
  %276 = load ptr, ptr %4, align 8, !tbaa !9
  %277 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %275, ptr noundef %276)
  %278 = fadd double 1.000000e+00, %277
  %279 = fdiv double %270, %278
  %280 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 44
  store double %279, ptr %280, align 8, !tbaa !33
  br label %281

281:                                              ; preds = %263, %259
  %282 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 47
  %283 = load i8, ptr %282, align 1, !tbaa !32, !range !30, !noundef !31
  %284 = trunc i8 %283 to i1
  br i1 %284, label %285, label %331

285:                                              ; preds = %281
  %286 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 43
  %287 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %286, i32 0, i32 4
  %288 = load ptr, ptr %287, align 8, !tbaa !15
  %289 = getelementptr inbounds double, ptr %288, i64 0
  %290 = load double, ptr %289, align 8, !tbaa !11
  %291 = fmul double 2.000000e+00, %290
  %292 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 43
  %293 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %292, i32 0, i32 4
  %294 = load ptr, ptr %293, align 8, !tbaa !15
  %295 = getelementptr inbounds double, ptr %294, i64 0
  %296 = load double, ptr %295, align 8, !tbaa !11
  %297 = load ptr, ptr %4, align 8, !tbaa !9
  %298 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %296, ptr noundef %297)
  %299 = fadd double 1.000000e+00, %298
  %300 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 43
  %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 = fmul double %306, 2.000000e+00
  %308 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 43
  %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 = fmul double %307, %312
  %314 = fneg double %313
  %315 = call double @llvm.fmuladd.f64(double %291, double %299, double %314)
  %316 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 43
  %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 = load ptr, ptr %4, align 8, !tbaa !9
  %322 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %320, ptr noundef %321)
  %323 = fadd double 1.000000e+00, %322
  %324 = load ptr, ptr %4, align 8, !tbaa !9
  %325 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %323, ptr noundef %324)
  %326 = fdiv double %315, %325
  %327 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 45
  %328 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %327, i32 0, i32 4
  %329 = load ptr, ptr %328, align 8, !tbaa !15
  %330 = getelementptr inbounds double, ptr %329, i64 0
  store double %326, ptr %330, align 8, !tbaa !11
  br label %331

331:                                              ; preds = %285, %281
  br label %252, !llvm.loop !39

332:                                              ; preds = %252
  %333 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgsresultsEPNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef %28, ptr noundef %18, ptr noundef %29, ptr noundef %333)
  %334 = load i8, ptr %8, align 1, !tbaa !5, !range !30, !noundef !31
  %335 = trunc i8 %334 to i1
  br i1 %335, label %348, label %336

336:                                              ; preds = %332
  %337 = getelementptr inbounds %"struct.alglib_impl::minlbfgsreport", ptr %29, i32 0, i32 2
  %338 = load i64, ptr %337, align 8, !tbaa !36
  %339 = icmp sle i64 %338, 0
  br i1 %339, label %348, label %340

340:                                              ; preds = %336
  %341 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %342 = load ptr, ptr %341, align 8, !tbaa !15
  %343 = getelementptr inbounds double, ptr %342, i64 0
  %344 = load double, ptr %343, align 8, !tbaa !11
  %345 = load ptr, ptr %4, align 8, !tbaa !9
  %346 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %344, ptr noundef %345)
  %347 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %346, double noundef 1.000000e-03)
  br label %348

348:                                              ; preds = %340, %336, %332
  %349 = phi i1 [ true, %336 ], [ true, %332 ], [ %347, %340 ]
  %350 = zext i1 %349 to i8
  store i8 %350, ptr %8, align 1, !tbaa !5
  %351 = load double, ptr %24, align 8, !tbaa !11
  %352 = fadd double %351, 1.000000e-01
  store double %352, ptr %24, align 8, !tbaa !11
  br label %228, !llvm.loop !40

353:                                              ; preds = %228
  br label %354

354:                                              ; preds = %353
  %355 = load i64, ptr %31, align 8, !tbaa !13
  %356 = add nsw i64 %355, 1
  store i64 %356, ptr %31, align 8, !tbaa !13
  br label %223, !llvm.loop !41

357:                                              ; preds = %223
  store double 0x3EB0C6F7A0B5ED8D, ptr %30, align 8, !tbaa !11
  store i64 0, ptr %31, align 8, !tbaa !13
  br label %358

358:                                              ; preds = %541, %357
  %359 = load i64, ptr %31, align 8, !tbaa !13
  %360 = icmp sle i64 %359, 1
  br i1 %360, label %361, label %544

361:                                              ; preds = %358
  %362 = 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 %362)
  store i64 3, ptr %16, align 8, !tbaa !13
  store i64 2, ptr %17, align 8, !tbaa !13
  %363 = load ptr, ptr %4, align 8, !tbaa !9
  %364 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %363)
  %365 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %364, double 1.000000e+01)
  %366 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %367 = load ptr, ptr %366, align 8, !tbaa !15
  %368 = getelementptr inbounds double, ptr %367, i64 0
  store double %365, ptr %368, align 8, !tbaa !11
  %369 = load ptr, ptr %4, align 8, !tbaa !9
  %370 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %369)
  %371 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %370, double 1.000000e+01)
  %372 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %373 = load ptr, ptr %372, align 8, !tbaa !15
  %374 = getelementptr inbounds double, ptr %373, i64 1
  store double %371, ptr %374, align 8, !tbaa !11
  %375 = load ptr, ptr %4, align 8, !tbaa !9
  %376 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %375)
  %377 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %376, double 1.000000e+01)
  %378 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %379 = load ptr, ptr %378, align 8, !tbaa !15
  %380 = getelementptr inbounds double, ptr %379, i64 2
  store double %377, ptr %380, align 8, !tbaa !11
  %381 = load i64, ptr %31, align 8, !tbaa !13
  %382 = icmp eq i64 %381, 0
  br i1 %382, label %383, label %387

383:                                              ; preds = %361
  %384 = load i64, ptr %16, align 8, !tbaa !13
  %385 = load i64, ptr %17, align 8, !tbaa !13
  %386 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14minlbfgscreateEllPNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %384, i64 noundef %385, ptr noundef %18, ptr noundef %28, ptr noundef %386)
  br label %387

387:                                              ; preds = %383, %361
  %388 = load i64, ptr %31, align 8, !tbaa !13
  %389 = icmp eq i64 %388, 1
  br i1 %389, label %390, label %395

390:                                              ; preds = %387
  %391 = load i64, ptr %16, align 8, !tbaa !13
  %392 = load i64, ptr %17, align 8, !tbaa !13
  %393 = load double, ptr %30, align 8, !tbaa !11
  %394 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgscreatefEllPNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %391, i64 noundef %392, ptr noundef %18, double noundef %393, ptr noundef %28, ptr noundef %394)
  br label %395

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

398:                                              ; preds = %407, %395
  %399 = load i64, ptr %22, align 8, !tbaa !13
  %400 = icmp sle i64 %399, 10
  br i1 %400, label %401, label %410

401:                                              ; preds = %398
  %402 = load ptr, ptr %4, align 8, !tbaa !9
  %403 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %28, ptr noundef %402)
  br i1 %403, label %405, label %404

404:                                              ; preds = %401
  br label %410

405:                                              ; preds = %401
  %406 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL26testminlbfgsunit_testfunc2PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef %28, ptr noundef %406)
  br label %407

407:                                              ; preds = %405
  %408 = load i64, ptr %22, align 8, !tbaa !13
  %409 = add nsw i64 %408, 1
  store i64 %409, ptr %22, align 8, !tbaa !13
  br label %398, !llvm.loop !42

410:                                              ; preds = %404, %398
  %411 = load ptr, ptr %4, align 8, !tbaa !9
  %412 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %411)
  %413 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %412, double 1.000000e+01)
  %414 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %415 = load ptr, ptr %414, align 8, !tbaa !15
  %416 = getelementptr inbounds double, ptr %415, i64 0
  store double %413, ptr %416, align 8, !tbaa !11
  %417 = load ptr, ptr %4, align 8, !tbaa !9
  %418 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %417)
  %419 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %418, double 1.000000e+01)
  %420 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %421 = load ptr, ptr %420, align 8, !tbaa !15
  %422 = getelementptr inbounds double, ptr %421, i64 1
  store double %419, ptr %422, align 8, !tbaa !11
  %423 = load ptr, ptr %4, align 8, !tbaa !9
  %424 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %423)
  %425 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %424, double 1.000000e+01)
  %426 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %427 = load ptr, ptr %426, align 8, !tbaa !15
  %428 = getelementptr inbounds double, ptr %427, i64 2
  store double %425, ptr %428, align 8, !tbaa !11
  %429 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl19minlbfgsrestartfromEPNS_13minlbfgsstateEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %28, ptr noundef %18, ptr noundef %429)
  br label %430

430:                                              ; preds = %433, %410
  %431 = load ptr, ptr %4, align 8, !tbaa !9
  %432 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %28, ptr noundef %431)
  br i1 %432, label %433, label %435

433:                                              ; preds = %430
  %434 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL26testminlbfgsunit_testfunc2PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef %28, ptr noundef %434)
  br label %430, !llvm.loop !43

435:                                              ; preds = %430
  %436 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgsresultsEPNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef %28, ptr noundef %18, ptr noundef %29, ptr noundef %436)
  %437 = load i8, ptr %13, align 1, !tbaa !5, !range !30, !noundef !31
  %438 = trunc i8 %437 to i1
  br i1 %438, label %473, label %439

439:                                              ; preds = %435
  %440 = getelementptr inbounds %"struct.alglib_impl::minlbfgsreport", ptr %29, i32 0, i32 2
  %441 = load i64, ptr %440, align 8, !tbaa !36
  %442 = icmp sle i64 %441, 0
  br i1 %442, label %473, label %443

443:                                              ; preds = %439
  %444 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %445 = load ptr, ptr %444, align 8, !tbaa !15
  %446 = getelementptr inbounds double, ptr %445, i64 0
  %447 = load double, ptr %446, align 8, !tbaa !11
  %448 = load ptr, ptr %4, align 8, !tbaa !9
  %449 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 2.000000e+00, ptr noundef %448)
  %450 = fsub double %447, %449
  %451 = load ptr, ptr %4, align 8, !tbaa !9
  %452 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %450, ptr noundef %451)
  %453 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %452, double noundef 1.000000e-02)
  br i1 %453, label %473, label %454

454:                                              ; preds = %443
  %455 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %456 = load ptr, ptr %455, align 8, !tbaa !15
  %457 = getelementptr inbounds double, ptr %456, i64 1
  %458 = load double, ptr %457, align 8, !tbaa !11
  %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 %473, label %462

462:                                              ; preds = %454
  %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 2
  %466 = load double, ptr %465, align 8, !tbaa !11
  %467 = load ptr, ptr %4, align 8, !tbaa !9
  %468 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 2.000000e+00, ptr noundef %467)
  %469 = fsub double %466, %468
  %470 = load ptr, ptr %4, align 8, !tbaa !9
  %471 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %469, ptr noundef %470)
  %472 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %471, double noundef 1.000000e-02)
  br label %473

473:                                              ; preds = %462, %454, %443, %439, %435
  %474 = phi i1 [ true, %454 ], [ true, %443 ], [ true, %439 ], [ true, %435 ], [ %472, %462 ]
  %475 = zext i1 %474 to i8
  store i8 %475, ptr %13, align 1, !tbaa !5
  %476 = load ptr, ptr %4, align 8, !tbaa !9
  %477 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %476)
  %478 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %477, double 1.000000e+01)
  %479 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %480 = load ptr, ptr %479, align 8, !tbaa !15
  %481 = getelementptr inbounds double, ptr %480, i64 0
  store double %478, ptr %481, align 8, !tbaa !11
  %482 = load ptr, ptr %4, align 8, !tbaa !9
  %483 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %482)
  %484 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %483, double 1.000000e+01)
  %485 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %486 = load ptr, ptr %485, align 8, !tbaa !15
  %487 = getelementptr inbounds double, ptr %486, i64 1
  store double %484, ptr %487, align 8, !tbaa !11
  %488 = load ptr, ptr %4, align 8, !tbaa !9
  %489 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %488)
  %490 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %489, double 1.000000e+01)
  %491 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %492 = load ptr, ptr %491, align 8, !tbaa !15
  %493 = getelementptr inbounds double, ptr %492, i64 2
  store double %490, ptr %493, align 8, !tbaa !11
  %494 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl19minlbfgsrestartfromEPNS_13minlbfgsstateEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %28, ptr noundef %18, ptr noundef %494)
  br label %495

495:                                              ; preds = %498, %473
  %496 = load ptr, ptr %4, align 8, !tbaa !9
  %497 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %28, ptr noundef %496)
  br i1 %497, label %498, label %500

498:                                              ; preds = %495
  %499 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL26testminlbfgsunit_testfunc2PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef %28, ptr noundef %499)
  br label %495, !llvm.loop !44

500:                                              ; preds = %495
  %501 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgsresultsEPNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef %28, ptr noundef %18, ptr noundef %29, ptr noundef %501)
  %502 = load i8, ptr %13, align 1, !tbaa !5, !range !30, !noundef !31
  %503 = trunc i8 %502 to i1
  br i1 %503, label %538, label %504

504:                                              ; preds = %500
  %505 = getelementptr inbounds %"struct.alglib_impl::minlbfgsreport", ptr %29, i32 0, i32 2
  %506 = load i64, ptr %505, align 8, !tbaa !36
  %507 = icmp sle i64 %506, 0
  br i1 %507, label %538, label %508

508:                                              ; preds = %504
  %509 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %510 = load ptr, ptr %509, align 8, !tbaa !15
  %511 = getelementptr inbounds double, ptr %510, i64 0
  %512 = load double, ptr %511, align 8, !tbaa !11
  %513 = load ptr, ptr %4, align 8, !tbaa !9
  %514 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 2.000000e+00, ptr noundef %513)
  %515 = fsub double %512, %514
  %516 = load ptr, ptr %4, align 8, !tbaa !9
  %517 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %515, ptr noundef %516)
  %518 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %517, double noundef 1.000000e-02)
  br i1 %518, label %538, label %519

519:                                              ; preds = %508
  %520 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %521 = load ptr, ptr %520, align 8, !tbaa !15
  %522 = getelementptr inbounds double, ptr %521, i64 1
  %523 = load double, ptr %522, align 8, !tbaa !11
  %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 %538, label %527

527:                                              ; preds = %519
  %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 2
  %531 = load double, ptr %530, align 8, !tbaa !11
  %532 = load ptr, ptr %4, align 8, !tbaa !9
  %533 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 2.000000e+00, ptr noundef %532)
  %534 = fsub double %531, %533
  %535 = load ptr, ptr %4, align 8, !tbaa !9
  %536 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %534, ptr noundef %535)
  %537 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %536, double noundef 1.000000e-02)
  br label %538

538:                                              ; preds = %527, %519, %508, %504, %500
  %539 = phi i1 [ true, %519 ], [ true, %508 ], [ true, %504 ], [ true, %500 ], [ %537, %527 ]
  %540 = zext i1 %539 to i8
  store i8 %540, ptr %13, align 1, !tbaa !5
  br label %541

541:                                              ; preds = %538
  %542 = load i64, ptr %31, align 8, !tbaa !13
  %543 = add nsw i64 %542, 1
  store i64 %543, ptr %31, align 8, !tbaa !13
  br label %358, !llvm.loop !45

544:                                              ; preds = %358
  store double 0x3EB0C6F7A0B5ED8D, ptr %30, align 8, !tbaa !11
  store i64 1, ptr %16, align 8, !tbaa !13
  br label %545

545:                                              ; preds = %885, %544
  %546 = load i64, ptr %16, align 8, !tbaa !13
  %547 = icmp sle i64 %546, 10
  br i1 %547, label %548, label %888

548:                                              ; preds = %545
  %549 = load i64, ptr %16, align 8, !tbaa !13
  %550 = sub nsw i64 %549, 1
  %551 = add nsw i64 %550, 1
  %552 = load i64, ptr %16, align 8, !tbaa !13
  %553 = sub nsw i64 %552, 1
  %554 = add nsw i64 %553, 1
  %555 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %25, i64 noundef %551, i64 noundef %554, ptr noundef %555)
  %556 = load i64, ptr %16, align 8, !tbaa !13
  %557 = sub nsw i64 %556, 1
  %558 = add nsw i64 %557, 1
  %559 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %18, i64 noundef %558, ptr noundef %559)
  %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_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %19, 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 %20, i64 noundef %566, ptr noundef %567)
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %568

568:                                              ; preds = %581, %548
  %569 = load i64, ptr %22, align 8, !tbaa !13
  %570 = load i64, ptr %16, align 8, !tbaa !13
  %571 = sub nsw i64 %570, 1
  %572 = icmp sle i64 %569, %571
  br i1 %572, label %573, label %584

573:                                              ; preds = %568
  %574 = load ptr, ptr %4, align 8, !tbaa !9
  %575 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %574)
  %576 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %575, double -1.000000e+00)
  %577 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %19, i32 0, i32 4
  %578 = load ptr, ptr %577, align 8, !tbaa !15
  %579 = load i64, ptr %22, align 8, !tbaa !13
  %580 = getelementptr inbounds double, ptr %578, i64 %579
  store double %576, ptr %580, align 8, !tbaa !11
  br label %581

581:                                              ; preds = %573
  %582 = load i64, ptr %22, align 8, !tbaa !13
  %583 = add nsw i64 %582, 1
  store i64 %583, ptr %22, align 8, !tbaa !13
  br label %568, !llvm.loop !46

584:                                              ; preds = %568
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %585

585:                                              ; preds = %639, %584
  %586 = load i64, ptr %22, align 8, !tbaa !13
  %587 = load i64, ptr %16, align 8, !tbaa !13
  %588 = sub nsw i64 %587, 1
  %589 = icmp sle i64 %586, %588
  br i1 %589, label %590, label %642

590:                                              ; preds = %585
  store i64 0, ptr %23, align 8, !tbaa !13
  br label %591

591:                                              ; preds = %607, %590
  %592 = load i64, ptr %23, align 8, !tbaa !13
  %593 = load i64, ptr %16, align 8, !tbaa !13
  %594 = sub nsw i64 %593, 1
  %595 = icmp sle i64 %592, %594
  br i1 %595, label %596, label %610

596:                                              ; preds = %591
  %597 = load ptr, ptr %4, align 8, !tbaa !9
  %598 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %597)
  %599 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %598, double -1.000000e+00)
  %600 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %25, i32 0, i32 6
  %601 = load ptr, ptr %600, align 8, !tbaa !15
  %602 = load i64, ptr %22, align 8, !tbaa !13
  %603 = getelementptr inbounds ptr, ptr %601, i64 %602
  %604 = load ptr, ptr %603, align 8, !tbaa !9
  %605 = load i64, ptr %23, align 8, !tbaa !13
  %606 = getelementptr inbounds double, ptr %604, i64 %605
  store double %599, ptr %606, align 8, !tbaa !11
  br label %607

607:                                              ; preds = %596
  %608 = load i64, ptr %23, align 8, !tbaa !13
  %609 = add nsw i64 %608, 1
  store i64 %609, ptr %23, align 8, !tbaa !13
  br label %591, !llvm.loop !47

610:                                              ; preds = %591
  %611 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %25, i32 0, i32 6
  %612 = load ptr, ptr %611, align 8, !tbaa !15
  %613 = load i64, ptr %22, align 8, !tbaa !13
  %614 = getelementptr inbounds ptr, ptr %612, i64 %613
  %615 = load ptr, ptr %614, align 8, !tbaa !9
  %616 = load i64, ptr %22, align 8, !tbaa !13
  %617 = getelementptr inbounds double, ptr %615, i64 %616
  %618 = load double, ptr %617, align 8, !tbaa !11
  %619 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %25, 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 = load ptr, ptr %4, align 8, !tbaa !9
  %628 = call noundef i64 @_ZN11alglib_impl7ae_signEdPNS_8ae_stateE(double noundef %626, ptr noundef %627)
  %629 = mul nsw i64 3, %628
  %630 = sitofp i64 %629 to double
  %631 = fadd double %618, %630
  %632 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %25, i32 0, i32 6
  %633 = load ptr, ptr %632, align 8, !tbaa !15
  %634 = load i64, ptr %22, align 8, !tbaa !13
  %635 = getelementptr inbounds ptr, ptr %633, i64 %634
  %636 = load ptr, ptr %635, align 8, !tbaa !9
  %637 = load i64, ptr %22, align 8, !tbaa !13
  %638 = getelementptr inbounds double, ptr %636, i64 %637
  store double %631, ptr %638, align 8, !tbaa !11
  br label %639

639:                                              ; preds = %610
  %640 = load i64, ptr %22, align 8, !tbaa !13
  %641 = add nsw i64 %640, 1
  store i64 %641, ptr %22, align 8, !tbaa !13
  br label %585, !llvm.loop !48

642:                                              ; preds = %585
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %643

643:                                              ; preds = %667, %642
  %644 = load i64, ptr %22, align 8, !tbaa !13
  %645 = load i64, ptr %16, align 8, !tbaa !13
  %646 = sub nsw i64 %645, 1
  %647 = icmp sle i64 %644, %646
  br i1 %647, label %648, label %670

648:                                              ; preds = %643
  %649 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %25, i32 0, i32 6
  %650 = load ptr, ptr %649, align 8, !tbaa !15
  %651 = load i64, ptr %22, align 8, !tbaa !13
  %652 = getelementptr inbounds ptr, ptr %650, i64 %651
  %653 = load ptr, ptr %652, align 8, !tbaa !9
  %654 = getelementptr inbounds double, ptr %653, i64 0
  %655 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %19, i32 0, i32 4
  %656 = load ptr, ptr %655, align 8, !tbaa !15
  %657 = getelementptr inbounds double, ptr %656, i64 0
  %658 = load i64, ptr %16, align 8, !tbaa !13
  %659 = sub nsw i64 %658, 1
  %660 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %659)
  %661 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %654, i64 noundef 1, ptr noundef %657, i64 noundef 1, i64 noundef %660)
  store double %661, ptr %24, align 8, !tbaa !11
  %662 = load double, ptr %24, align 8, !tbaa !11
  %663 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %20, i32 0, i32 4
  %664 = load ptr, ptr %663, align 8, !tbaa !15
  %665 = load i64, ptr %22, align 8, !tbaa !13
  %666 = getelementptr inbounds double, ptr %664, i64 %665
  store double %662, ptr %666, align 8, !tbaa !11
  br label %667

667:                                              ; preds = %648
  %668 = load i64, ptr %22, align 8, !tbaa !13
  %669 = add nsw i64 %668, 1
  store i64 %669, ptr %22, align 8, !tbaa !13
  br label %643, !llvm.loop !49

670:                                              ; preds = %643
  store i64 1, ptr %17, align 8, !tbaa !13
  br label %671

671:                                              ; preds = %881, %670
  %672 = load i64, ptr %17, align 8, !tbaa !13
  %673 = load i64, ptr %16, align 8, !tbaa !13
  %674 = icmp sle i64 %672, %673
  br i1 %674, label %675, label %884

675:                                              ; preds = %671
  store i64 0, ptr %31, align 8, !tbaa !13
  br label %676

676:                                              ; preds = %877, %675
  %677 = load i64, ptr %31, align 8, !tbaa !13
  %678 = icmp sle i64 %677, 1
  br i1 %678, label %679, label %880

679:                                              ; preds = %676
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %680

680:                                              ; preds = %693, %679
  %681 = load i64, ptr %22, align 8, !tbaa !13
  %682 = load i64, ptr %16, align 8, !tbaa !13
  %683 = sub nsw i64 %682, 1
  %684 = icmp sle i64 %681, %683
  br i1 %684, label %685, label %696

685:                                              ; preds = %680
  %686 = load ptr, ptr %4, align 8, !tbaa !9
  %687 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %686)
  %688 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %687, double -1.000000e+00)
  %689 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %690 = load ptr, ptr %689, align 8, !tbaa !15
  %691 = load i64, ptr %22, align 8, !tbaa !13
  %692 = getelementptr inbounds double, ptr %690, i64 %691
  store double %688, ptr %692, align 8, !tbaa !11
  br label %693

693:                                              ; preds = %685
  %694 = load i64, ptr %22, align 8, !tbaa !13
  %695 = add nsw i64 %694, 1
  store i64 %695, ptr %22, align 8, !tbaa !13
  br label %680, !llvm.loop !50

696:                                              ; preds = %680
  %697 = load i64, ptr %31, align 8, !tbaa !13
  %698 = icmp eq i64 %697, 0
  br i1 %698, label %699, label %703

699:                                              ; preds = %696
  %700 = load i64, ptr %16, align 8, !tbaa !13
  %701 = load i64, ptr %17, align 8, !tbaa !13
  %702 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14minlbfgscreateEllPNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %700, i64 noundef %701, ptr noundef %18, ptr noundef %28, ptr noundef %702)
  br label %703

703:                                              ; preds = %699, %696
  %704 = load i64, ptr %31, align 8, !tbaa !13
  %705 = icmp eq i64 %704, 1
  br i1 %705, label %706, label %711

706:                                              ; preds = %703
  %707 = load i64, ptr %16, align 8, !tbaa !13
  %708 = load i64, ptr %17, align 8, !tbaa !13
  %709 = load double, ptr %30, align 8, !tbaa !11
  %710 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgscreatefEllPNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %707, i64 noundef %708, ptr noundef %18, double noundef %709, ptr noundef %28, ptr noundef %710)
  br label %711

711:                                              ; preds = %706, %703
  %712 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef %28, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %712)
  br label %713

713:                                              ; preds = %835, %711
  %714 = load ptr, ptr %4, align 8, !tbaa !9
  %715 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %28, ptr noundef %714)
  br i1 %715, label %716, label %836

716:                                              ; preds = %713
  %717 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 46
  %718 = load i8, ptr %717, align 8, !tbaa !16, !range !30, !noundef !31
  %719 = trunc i8 %718 to i1
  br i1 %719, label %724, label %720

720:                                              ; preds = %716
  %721 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 47
  %722 = load i8, ptr %721, align 1, !tbaa !32, !range !30, !noundef !31
  %723 = trunc i8 %722 to i1
  br i1 %723, label %724, label %726

724:                                              ; preds = %720, %716
  %725 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 44
  store double 0.000000e+00, ptr %725, align 8, !tbaa !33
  br label %726

726:                                              ; preds = %724, %720
  %727 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 47
  %728 = load i8, ptr %727, align 1, !tbaa !32, !range !30, !noundef !31
  %729 = trunc i8 %728 to i1
  br i1 %729, label %730, label %746

730:                                              ; preds = %726
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %731

731:                                              ; preds = %742, %730
  %732 = load i64, ptr %22, align 8, !tbaa !13
  %733 = load i64, ptr %16, align 8, !tbaa !13
  %734 = sub nsw i64 %733, 1
  %735 = icmp sle i64 %732, %734
  br i1 %735, label %736, label %745

736:                                              ; preds = %731
  %737 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 45
  %738 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %737, i32 0, i32 4
  %739 = load ptr, ptr %738, align 8, !tbaa !15
  %740 = load i64, ptr %22, align 8, !tbaa !13
  %741 = getelementptr inbounds double, ptr %739, i64 %740
  store double 0.000000e+00, ptr %741, align 8, !tbaa !11
  br label %742

742:                                              ; preds = %736
  %743 = load i64, ptr %22, align 8, !tbaa !13
  %744 = add nsw i64 %743, 1
  store i64 %744, ptr %22, align 8, !tbaa !13
  br label %731, !llvm.loop !51

745:                                              ; preds = %731
  br label %746

746:                                              ; preds = %745, %726
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %747

747:                                              ; preds = %832, %746
  %748 = load i64, ptr %22, align 8, !tbaa !13
  %749 = load i64, ptr %16, align 8, !tbaa !13
  %750 = sub nsw i64 %749, 1
  %751 = icmp sle i64 %748, %750
  br i1 %751, label %752, label %835

752:                                              ; preds = %747
  %753 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %25, i32 0, i32 6
  %754 = load ptr, ptr %753, align 8, !tbaa !15
  %755 = load i64, ptr %22, align 8, !tbaa !13
  %756 = getelementptr inbounds ptr, ptr %754, i64 %755
  %757 = load ptr, ptr %756, align 8, !tbaa !9
  %758 = getelementptr inbounds double, ptr %757, i64 0
  %759 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 43
  %760 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %759, i32 0, i32 4
  %761 = load ptr, ptr %760, align 8, !tbaa !15
  %762 = getelementptr inbounds double, ptr %761, i64 0
  %763 = load i64, ptr %16, align 8, !tbaa !13
  %764 = sub nsw i64 %763, 1
  %765 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %764)
  %766 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %758, i64 noundef 1, ptr noundef %762, i64 noundef 1, i64 noundef %765)
  store double %766, ptr %24, align 8, !tbaa !11
  %767 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 46
  %768 = load i8, ptr %767, align 8, !tbaa !16, !range !30, !noundef !31
  %769 = trunc i8 %768 to i1
  br i1 %769, label %774, label %770

770:                                              ; preds = %752
  %771 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 47
  %772 = load i8, ptr %771, align 1, !tbaa !32, !range !30, !noundef !31
  %773 = trunc i8 %772 to i1
  br i1 %773, label %774, label %788

774:                                              ; preds = %770, %752
  %775 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 44
  %776 = load double, ptr %775, align 8, !tbaa !33
  %777 = load double, ptr %24, align 8, !tbaa !11
  %778 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %20, i32 0, i32 4
  %779 = load ptr, ptr %778, align 8, !tbaa !15
  %780 = load i64, ptr %22, align 8, !tbaa !13
  %781 = getelementptr inbounds double, ptr %779, i64 %780
  %782 = load double, ptr %781, align 8, !tbaa !11
  %783 = fsub double %777, %782
  %784 = load ptr, ptr %4, align 8, !tbaa !9
  %785 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %783, ptr noundef %784)
  %786 = fadd double %776, %785
  %787 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 44
  store double %786, ptr %787, align 8, !tbaa !33
  br label %788

788:                                              ; preds = %774, %770
  %789 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 47
  %790 = load i8, ptr %789, align 1, !tbaa !32, !range !30, !noundef !31
  %791 = trunc i8 %790 to i1
  br i1 %791, label %792, label %831

792:                                              ; preds = %788
  store i64 0, ptr %23, align 8, !tbaa !13
  br label %793

793:                                              ; preds = %827, %792
  %794 = load i64, ptr %23, align 8, !tbaa !13
  %795 = load i64, ptr %16, align 8, !tbaa !13
  %796 = sub nsw i64 %795, 1
  %797 = icmp sle i64 %794, %796
  br i1 %797, label %798, label %830

798:                                              ; preds = %793
  %799 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 45
  %800 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %799, i32 0, i32 4
  %801 = load ptr, ptr %800, align 8, !tbaa !15
  %802 = load i64, ptr %23, align 8, !tbaa !13
  %803 = getelementptr inbounds double, ptr %801, i64 %802
  %804 = load double, ptr %803, align 8, !tbaa !11
  %805 = load double, ptr %24, align 8, !tbaa !11
  %806 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %20, i32 0, i32 4
  %807 = load ptr, ptr %806, align 8, !tbaa !15
  %808 = load i64, ptr %22, align 8, !tbaa !13
  %809 = getelementptr inbounds double, ptr %807, i64 %808
  %810 = load double, ptr %809, align 8, !tbaa !11
  %811 = fsub double %805, %810
  %812 = fmul double 2.000000e+00, %811
  %813 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %25, i32 0, i32 6
  %814 = load ptr, ptr %813, align 8, !tbaa !15
  %815 = load i64, ptr %22, align 8, !tbaa !13
  %816 = getelementptr inbounds ptr, ptr %814, i64 %815
  %817 = load ptr, ptr %816, align 8, !tbaa !9
  %818 = load i64, ptr %23, align 8, !tbaa !13
  %819 = getelementptr inbounds double, ptr %817, i64 %818
  %820 = load double, ptr %819, align 8, !tbaa !11
  %821 = call double @llvm.fmuladd.f64(double %812, double %820, double %804)
  %822 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 45
  %823 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %822, i32 0, i32 4
  %824 = load ptr, ptr %823, align 8, !tbaa !15
  %825 = load i64, ptr %23, align 8, !tbaa !13
  %826 = getelementptr inbounds double, ptr %824, i64 %825
  store double %821, ptr %826, align 8, !tbaa !11
  br label %827

827:                                              ; preds = %798
  %828 = load i64, ptr %23, align 8, !tbaa !13
  %829 = add nsw i64 %828, 1
  store i64 %829, ptr %23, align 8, !tbaa !13
  br label %793, !llvm.loop !52

830:                                              ; preds = %793
  br label %831

831:                                              ; preds = %830, %788
  br label %832

832:                                              ; preds = %831
  %833 = load i64, ptr %22, align 8, !tbaa !13
  %834 = add nsw i64 %833, 1
  store i64 %834, ptr %22, align 8, !tbaa !13
  br label %747, !llvm.loop !53

835:                                              ; preds = %747
  br label %713, !llvm.loop !54

836:                                              ; preds = %713
  %837 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgsresultsEPNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef %28, ptr noundef %18, ptr noundef %29, ptr noundef %837)
  %838 = load i8, ptr %9, align 1, !tbaa !5, !range !30, !noundef !31
  %839 = trunc i8 %838 to i1
  br i1 %839, label %844, label %840

840:                                              ; preds = %836
  %841 = getelementptr inbounds %"struct.alglib_impl::minlbfgsreport", ptr %29, i32 0, i32 2
  %842 = load i64, ptr %841, align 8, !tbaa !36
  %843 = icmp sle i64 %842, 0
  br label %844

844:                                              ; preds = %840, %836
  %845 = phi i1 [ true, %836 ], [ %843, %840 ]
  %846 = zext i1 %845 to i8
  store i8 %846, ptr %9, align 1, !tbaa !5
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %847

847:                                              ; preds = %873, %844
  %848 = load i64, ptr %22, align 8, !tbaa !13
  %849 = load i64, ptr %16, align 8, !tbaa !13
  %850 = sub nsw i64 %849, 1
  %851 = icmp sle i64 %848, %850
  br i1 %851, label %852, label %876

852:                                              ; preds = %847
  %853 = load i8, ptr %9, align 1, !tbaa !5, !range !30, !noundef !31
  %854 = trunc i8 %853 to i1
  br i1 %854, label %870, label %855

855:                                              ; preds = %852
  %856 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %857 = load ptr, ptr %856, align 8, !tbaa !15
  %858 = load i64, ptr %22, align 8, !tbaa !13
  %859 = getelementptr inbounds double, ptr %857, i64 %858
  %860 = load double, ptr %859, align 8, !tbaa !11
  %861 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %19, i32 0, i32 4
  %862 = load ptr, ptr %861, align 8, !tbaa !15
  %863 = load i64, ptr %22, align 8, !tbaa !13
  %864 = getelementptr inbounds double, ptr %862, i64 %863
  %865 = load double, ptr %864, align 8, !tbaa !11
  %866 = fsub double %860, %865
  %867 = load ptr, ptr %4, align 8, !tbaa !9
  %868 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %866, ptr noundef %867)
  %869 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %868, double noundef 1.000000e-03)
  br label %870

870:                                              ; preds = %855, %852
  %871 = phi i1 [ true, %852 ], [ %869, %855 ]
  %872 = zext i1 %871 to i8
  store i8 %872, ptr %9, align 1, !tbaa !5
  br label %873

873:                                              ; preds = %870
  %874 = load i64, ptr %22, align 8, !tbaa !13
  %875 = add nsw i64 %874, 1
  store i64 %875, ptr %22, align 8, !tbaa !13
  br label %847, !llvm.loop !55

876:                                              ; preds = %847
  br label %877

877:                                              ; preds = %876
  %878 = load i64, ptr %31, align 8, !tbaa !13
  %879 = add nsw i64 %878, 1
  store i64 %879, ptr %31, align 8, !tbaa !13
  br label %676, !llvm.loop !56

880:                                              ; preds = %676
  br label %881

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

884:                                              ; preds = %671
  br label %885

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

888:                                              ; preds = %545
  store double 0x3EB0C6F7A0B5ED8D, ptr %30, align 8, !tbaa !11
  store i64 0, ptr %31, align 8, !tbaa !13
  br label %889

889:                                              ; preds = %1086, %888
  %890 = load i64, ptr %31, align 8, !tbaa !13
  %891 = icmp sle i64 %890, 1
  br i1 %891, label %892, label %1089

892:                                              ; preds = %889
  %893 = 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 %893)
  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 %894

894:                                              ; preds = %905, %892
  %895 = load i64, ptr %22, align 8, !tbaa !13
  %896 = icmp sle i64 %895, 2
  br i1 %896, label %897, label %908

897:                                              ; preds = %894
  %898 = load ptr, ptr %4, align 8, !tbaa !9
  %899 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %898)
  %900 = call double @llvm.fmuladd.f64(double 6.000000e+00, double %899, double -3.000000e+00)
  %901 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %902 = load ptr, ptr %901, align 8, !tbaa !15
  %903 = load i64, ptr %22, align 8, !tbaa !13
  %904 = getelementptr inbounds double, ptr %902, i64 %903
  store double %900, ptr %904, align 8, !tbaa !11
  br label %905

905:                                              ; preds = %897
  %906 = load i64, ptr %22, align 8, !tbaa !13
  %907 = add nsw i64 %906, 1
  store i64 %907, ptr %22, align 8, !tbaa !13
  br label %894, !llvm.loop !59

908:                                              ; preds = %894
  %909 = load i64, ptr %31, align 8, !tbaa !13
  %910 = icmp eq i64 %909, 0
  br i1 %910, label %911, label %915

911:                                              ; preds = %908
  %912 = load i64, ptr %16, align 8, !tbaa !13
  %913 = load i64, ptr %17, align 8, !tbaa !13
  %914 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14minlbfgscreateEllPNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %912, i64 noundef %913, ptr noundef %18, ptr noundef %28, ptr noundef %914)
  br label %915

915:                                              ; preds = %911, %908
  %916 = load i64, ptr %31, align 8, !tbaa !13
  %917 = icmp eq i64 %916, 1
  br i1 %917, label %918, label %923

918:                                              ; preds = %915
  %919 = load i64, ptr %16, align 8, !tbaa !13
  %920 = load i64, ptr %17, align 8, !tbaa !13
  %921 = load double, ptr %30, align 8, !tbaa !11
  %922 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgscreatefEllPNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %919, i64 noundef %920, ptr noundef %18, double noundef %921, ptr noundef %28, ptr noundef %922)
  br label %923

923:                                              ; preds = %918, %915
  %924 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef %28, double noundef 1.000000e-03, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %924)
  br label %925

925:                                              ; preds = %928, %923
  %926 = load ptr, ptr %4, align 8, !tbaa !9
  %927 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %28, ptr noundef %926)
  br i1 %927, label %928, label %930

928:                                              ; preds = %925
  %929 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL26testminlbfgsunit_testfunc3PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef %28, ptr noundef %929)
  br label %925, !llvm.loop !60

930:                                              ; preds = %925
  %931 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgsresultsEPNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef %28, ptr noundef %18, ptr noundef %29, ptr noundef %931)
  %932 = load i8, ptr %10, align 1, !tbaa !5, !range !30, !noundef !31
  %933 = trunc i8 %932 to i1
  br i1 %933, label %938, label %934

934:                                              ; preds = %930
  %935 = getelementptr inbounds %"struct.alglib_impl::minlbfgsreport", ptr %29, i32 0, i32 2
  %936 = load i64, ptr %935, align 8, !tbaa !36
  %937 = icmp ne i64 %936, 4
  br label %938

938:                                              ; preds = %934, %930
  %939 = phi i1 [ true, %930 ], [ %937, %934 ]
  %940 = zext i1 %939 to i8
  store i8 %940, ptr %10, align 1, !tbaa !5
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %941

941:                                              ; preds = %952, %938
  %942 = load i64, ptr %22, align 8, !tbaa !13
  %943 = icmp sle i64 %942, 2
  br i1 %943, label %944, label %955

944:                                              ; preds = %941
  %945 = load ptr, ptr %4, align 8, !tbaa !9
  %946 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %945)
  %947 = call double @llvm.fmuladd.f64(double 6.000000e+00, double %946, double -3.000000e+00)
  %948 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %949 = load ptr, ptr %948, align 8, !tbaa !15
  %950 = load i64, ptr %22, align 8, !tbaa !13
  %951 = getelementptr inbounds double, ptr %949, i64 %950
  store double %947, ptr %951, align 8, !tbaa !11
  br label %952

952:                                              ; preds = %944
  %953 = load i64, ptr %22, align 8, !tbaa !13
  %954 = add nsw i64 %953, 1
  store i64 %954, ptr %22, align 8, !tbaa !13
  br label %941, !llvm.loop !61

955:                                              ; preds = %941
  %956 = load i64, ptr %31, align 8, !tbaa !13
  %957 = icmp eq i64 %956, 0
  br i1 %957, label %958, label %962

958:                                              ; preds = %955
  %959 = load i64, ptr %16, align 8, !tbaa !13
  %960 = load i64, ptr %17, align 8, !tbaa !13
  %961 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14minlbfgscreateEllPNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %959, i64 noundef %960, ptr noundef %18, ptr noundef %28, ptr noundef %961)
  br label %962

962:                                              ; preds = %958, %955
  %963 = load i64, ptr %31, align 8, !tbaa !13
  %964 = icmp eq i64 %963, 1
  br i1 %964, label %965, label %970

965:                                              ; preds = %962
  %966 = load i64, ptr %16, align 8, !tbaa !13
  %967 = load i64, ptr %17, align 8, !tbaa !13
  %968 = load double, ptr %30, align 8, !tbaa !11
  %969 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgscreatefEllPNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %966, i64 noundef %967, ptr noundef %18, double noundef %968, ptr noundef %28, ptr noundef %969)
  br label %970

970:                                              ; preds = %965, %962
  %971 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef %28, double noundef 0.000000e+00, double noundef 1.000000e-03, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %971)
  br label %972

972:                                              ; preds = %975, %970
  %973 = load ptr, ptr %4, align 8, !tbaa !9
  %974 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %28, ptr noundef %973)
  br i1 %974, label %975, label %977

975:                                              ; preds = %972
  %976 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL26testminlbfgsunit_testfunc3PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef %28, ptr noundef %976)
  br label %972, !llvm.loop !62

977:                                              ; preds = %972
  %978 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgsresultsEPNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef %28, ptr noundef %18, ptr noundef %29, ptr noundef %978)
  %979 = load i8, ptr %10, align 1, !tbaa !5, !range !30, !noundef !31
  %980 = trunc i8 %979 to i1
  br i1 %980, label %985, label %981

981:                                              ; preds = %977
  %982 = getelementptr inbounds %"struct.alglib_impl::minlbfgsreport", ptr %29, i32 0, i32 2
  %983 = load i64, ptr %982, align 8, !tbaa !36
  %984 = icmp ne i64 %983, 1
  br label %985

985:                                              ; preds = %981, %977
  %986 = phi i1 [ true, %977 ], [ %984, %981 ]
  %987 = zext i1 %986 to i8
  store i8 %987, ptr %10, align 1, !tbaa !5
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %988

988:                                              ; preds = %999, %985
  %989 = load i64, ptr %22, align 8, !tbaa !13
  %990 = icmp sle i64 %989, 2
  br i1 %990, label %991, label %1002

991:                                              ; preds = %988
  %992 = load ptr, ptr %4, align 8, !tbaa !9
  %993 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %992)
  %994 = call double @llvm.fmuladd.f64(double 6.000000e+00, double %993, double -3.000000e+00)
  %995 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, 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 = %991
  %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 %988, !llvm.loop !63

1002:                                             ; preds = %988
  %1003 = load i64, ptr %31, align 8, !tbaa !13
  %1004 = icmp eq i64 %1003, 0
  br i1 %1004, label %1005, label %1009

1005:                                             ; preds = %1002
  %1006 = load i64, ptr %16, align 8, !tbaa !13
  %1007 = load i64, ptr %17, align 8, !tbaa !13
  %1008 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14minlbfgscreateEllPNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %1006, i64 noundef %1007, ptr noundef %18, ptr noundef %28, ptr noundef %1008)
  br label %1009

1009:                                             ; preds = %1005, %1002
  %1010 = load i64, ptr %31, align 8, !tbaa !13
  %1011 = icmp eq i64 %1010, 1
  br i1 %1011, label %1012, label %1017

1012:                                             ; preds = %1009
  %1013 = load i64, ptr %16, align 8, !tbaa !13
  %1014 = load i64, ptr %17, align 8, !tbaa !13
  %1015 = load double, ptr %30, align 8, !tbaa !11
  %1016 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgscreatefEllPNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %1013, i64 noundef %1014, ptr noundef %18, double noundef %1015, ptr noundef %28, ptr noundef %1016)
  br label %1017

1017:                                             ; preds = %1012, %1009
  %1018 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef %28, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 1.000000e-03, i64 noundef 0, ptr noundef %1018)
  br label %1019

1019:                                             ; preds = %1022, %1017
  %1020 = load ptr, ptr %4, align 8, !tbaa !9
  %1021 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %28, ptr noundef %1020)
  br i1 %1021, label %1022, label %1024

1022:                                             ; preds = %1019
  %1023 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL26testminlbfgsunit_testfunc3PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef %28, ptr noundef %1023)
  br label %1019, !llvm.loop !64

1024:                                             ; preds = %1019
  %1025 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgsresultsEPNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef %28, ptr noundef %18, ptr noundef %29, ptr noundef %1025)
  %1026 = load i8, ptr %10, align 1, !tbaa !5, !range !30, !noundef !31
  %1027 = trunc i8 %1026 to i1
  br i1 %1027, label %1032, label %1028

1028:                                             ; preds = %1024
  %1029 = getelementptr inbounds %"struct.alglib_impl::minlbfgsreport", ptr %29, i32 0, i32 2
  %1030 = load i64, ptr %1029, align 8, !tbaa !36
  %1031 = icmp ne i64 %1030, 2
  br label %1032

1032:                                             ; preds = %1028, %1024
  %1033 = phi i1 [ true, %1024 ], [ %1031, %1028 ]
  %1034 = zext i1 %1033 to i8
  store i8 %1034, ptr %10, align 1, !tbaa !5
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %1035

1035:                                             ; preds = %1046, %1032
  %1036 = load i64, ptr %22, align 8, !tbaa !13
  %1037 = icmp sle i64 %1036, 2
  br i1 %1037, label %1038, label %1049

1038:                                             ; preds = %1035
  %1039 = load ptr, ptr %4, align 8, !tbaa !9
  %1040 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1039)
  %1041 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %1040, double -1.000000e+00)
  %1042 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %1043 = load ptr, ptr %1042, align 8, !tbaa !15
  %1044 = load i64, ptr %22, align 8, !tbaa !13
  %1045 = getelementptr inbounds double, ptr %1043, i64 %1044
  store double %1041, ptr %1045, align 8, !tbaa !11
  br label %1046

1046:                                             ; preds = %1038
  %1047 = load i64, ptr %22, align 8, !tbaa !13
  %1048 = add nsw i64 %1047, 1
  store i64 %1048, ptr %22, align 8, !tbaa !13
  br label %1035, !llvm.loop !65

1049:                                             ; preds = %1035
  %1050 = load i64, ptr %31, align 8, !tbaa !13
  %1051 = icmp eq i64 %1050, 0
  br i1 %1051, label %1052, label %1056

1052:                                             ; preds = %1049
  %1053 = load i64, ptr %16, align 8, !tbaa !13
  %1054 = load i64, ptr %17, align 8, !tbaa !13
  %1055 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14minlbfgscreateEllPNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %1053, i64 noundef %1054, ptr noundef %18, ptr noundef %28, ptr noundef %1055)
  br label %1056

1056:                                             ; preds = %1052, %1049
  %1057 = load i64, ptr %31, align 8, !tbaa !13
  %1058 = icmp eq i64 %1057, 1
  br i1 %1058, label %1059, label %1064

1059:                                             ; preds = %1056
  %1060 = load i64, ptr %16, align 8, !tbaa !13
  %1061 = load i64, ptr %17, align 8, !tbaa !13
  %1062 = load double, ptr %30, align 8, !tbaa !11
  %1063 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgscreatefEllPNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %1060, i64 noundef %1061, ptr noundef %18, double noundef %1062, ptr noundef %28, ptr noundef %1063)
  br label %1064

1064:                                             ; preds = %1059, %1056
  %1065 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef %28, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 10, ptr noundef %1065)
  br label %1066

1066:                                             ; preds = %1069, %1064
  %1067 = load ptr, ptr %4, align 8, !tbaa !9
  %1068 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %28, ptr noundef %1067)
  br i1 %1068, label %1069, label %1071

1069:                                             ; preds = %1066
  %1070 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL26testminlbfgsunit_testfunc3PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef %28, ptr noundef %1070)
  br label %1066, !llvm.loop !66

1071:                                             ; preds = %1066
  %1072 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgsresultsEPNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef %28, ptr noundef %18, ptr noundef %29, ptr noundef %1072)
  %1073 = load i8, ptr %10, align 1, !tbaa !5, !range !30, !noundef !31
  %1074 = trunc i8 %1073 to i1
  br i1 %1074, label %1083, label %1075

1075:                                             ; preds = %1071
  %1076 = getelementptr inbounds %"struct.alglib_impl::minlbfgsreport", ptr %29, i32 0, i32 2
  %1077 = load i64, ptr %1076, align 8, !tbaa !36
  %1078 = icmp ne i64 %1077, 5
  br i1 %1078, label %1083, label %1079

1079:                                             ; preds = %1075
  %1080 = getelementptr inbounds %"struct.alglib_impl::minlbfgsreport", ptr %29, i32 0, i32 0
  %1081 = load i64, ptr %1080, align 8, !tbaa !67
  %1082 = icmp ne i64 %1081, 10
  br label %1083

1083:                                             ; preds = %1079, %1075, %1071
  %1084 = phi i1 [ true, %1075 ], [ true, %1071 ], [ %1082, %1079 ]
  %1085 = zext i1 %1084 to i8
  store i8 %1085, ptr %10, align 1, !tbaa !5
  br label %1086

1086:                                             ; preds = %1083
  %1087 = load i64, ptr %31, align 8, !tbaa !13
  %1088 = add nsw i64 %1087, 1
  store i64 %1088, ptr %31, align 8, !tbaa !13
  br label %889, !llvm.loop !68

1089:                                             ; preds = %889
  %1090 = 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 %1090)
  store i64 3, ptr %16, align 8, !tbaa !13
  store i64 2, ptr %17, align 8, !tbaa !13
  store i64 10000, ptr %27, align 8, !tbaa !13
  store i64 0, ptr %22, align 8, !tbaa !13
  br label %1091

1091:                                             ; preds = %1102, %1089
  %1092 = load i64, ptr %22, align 8, !tbaa !13
  %1093 = icmp sle i64 %1092, 2
  br i1 %1093, label %1094, label %1105

1094:                                             ; preds = %1091
  %1095 = load ptr, ptr %4, align 8, !tbaa !9
  %1096 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1095)
  %1097 = call double @llvm.fmuladd.f64(double 6.000000e+00, double %1096, double -3.000000e+00)
  %1098 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %1099 = load ptr, ptr %1098, align 8, !tbaa !15
  %1100 = load i64, ptr %22, align 8, !tbaa !13
  %1101 = getelementptr inbounds double, ptr %1099, i64 %1100
  store double %1097, ptr %1101, align 8, !tbaa !11
  br label %1102

1102:                                             ; preds = %1094
  %1103 = load i64, ptr %22, align 8, !tbaa !13
  %1104 = add nsw i64 %1103, 1
  store i64 %1104, ptr %22, align 8, !tbaa !13
  br label %1091, !llvm.loop !69

1105:                                             ; preds = %1091
  %1106 = load i64, ptr %16, align 8, !tbaa !13
  %1107 = load i64, ptr %17, align 8, !tbaa !13
  %1108 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14minlbfgscreateEllPNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %1106, i64 noundef %1107, ptr noundef %18, ptr noundef %28, ptr noundef %1108)
  %1109 = load i64, ptr %27, align 8, !tbaa !13
  %1110 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef %28, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef %1109, ptr noundef %1110)
  br label %1111

1111:                                             ; preds = %1114, %1105
  %1112 = load ptr, ptr %4, align 8, !tbaa !9
  %1113 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %28, ptr noundef %1112)
  br i1 %1113, label %1114, label %1207

1114:                                             ; preds = %1111
  %1115 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 43
  %1116 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1115, i32 0, i32 4
  %1117 = load ptr, ptr %1116, align 8, !tbaa !15
  %1118 = getelementptr inbounds double, ptr %1117, i64 0
  %1119 = load double, ptr %1118, align 8, !tbaa !11
  %1120 = load ptr, ptr %4, align 8, !tbaa !9
  %1121 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %1119, ptr noundef %1120)
  %1122 = fsub double %1121, 2.000000e+00
  %1123 = load ptr, ptr %4, align 8, !tbaa !9
  %1124 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1122, ptr noundef %1123)
  %1125 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 43
  %1126 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1125, i32 0, i32 4
  %1127 = load ptr, ptr %1126, align 8, !tbaa !15
  %1128 = getelementptr inbounds double, ptr %1127, i64 1
  %1129 = load double, ptr %1128, align 8, !tbaa !11
  %1130 = load ptr, ptr %4, align 8, !tbaa !9
  %1131 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1129, ptr noundef %1130)
  %1132 = fadd double %1124, %1131
  %1133 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 43
  %1134 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1133, i32 0, i32 4
  %1135 = load ptr, ptr %1134, align 8, !tbaa !15
  %1136 = getelementptr inbounds double, ptr %1135, i64 2
  %1137 = load double, ptr %1136, align 8, !tbaa !11
  %1138 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 43
  %1139 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1138, i32 0, i32 4
  %1140 = load ptr, ptr %1139, align 8, !tbaa !15
  %1141 = getelementptr inbounds double, ptr %1140, i64 0
  %1142 = load double, ptr %1141, align 8, !tbaa !11
  %1143 = fsub double %1137, %1142
  %1144 = load ptr, ptr %4, align 8, !tbaa !9
  %1145 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1143, ptr noundef %1144)
  %1146 = fadd double %1132, %1145
  %1147 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 44
  store double %1146, ptr %1147, align 8, !tbaa !33
  %1148 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 43
  %1149 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1148, i32 0, i32 4
  %1150 = load ptr, ptr %1149, align 8, !tbaa !15
  %1151 = getelementptr inbounds double, ptr %1150, i64 0
  %1152 = load double, ptr %1151, align 8, !tbaa !11
  %1153 = load ptr, ptr %4, align 8, !tbaa !9
  %1154 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %1152, ptr noundef %1153)
  %1155 = fsub double %1154, 2.000000e+00
  %1156 = fmul double 2.000000e+00, %1155
  %1157 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 43
  %1158 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1157, i32 0, i32 4
  %1159 = load ptr, ptr %1158, align 8, !tbaa !15
  %1160 = getelementptr inbounds double, ptr %1159, i64 0
  %1161 = load double, ptr %1160, align 8, !tbaa !11
  %1162 = load ptr, ptr %4, align 8, !tbaa !9
  %1163 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %1161, ptr noundef %1162)
  %1164 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 43
  %1165 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1164, i32 0, i32 4
  %1166 = load ptr, ptr %1165, align 8, !tbaa !15
  %1167 = getelementptr inbounds double, ptr %1166, i64 0
  %1168 = load double, ptr %1167, align 8, !tbaa !11
  %1169 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 43
  %1170 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1169, i32 0, i32 4
  %1171 = load ptr, ptr %1170, align 8, !tbaa !15
  %1172 = getelementptr inbounds double, ptr %1171, i64 2
  %1173 = load double, ptr %1172, align 8, !tbaa !11
  %1174 = fsub double %1168, %1173
  %1175 = fmul double 2.000000e+00, %1174
  %1176 = call double @llvm.fmuladd.f64(double %1156, double %1163, double %1175)
  %1177 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 45
  %1178 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1177, i32 0, i32 4
  %1179 = load ptr, ptr %1178, align 8, !tbaa !15
  %1180 = getelementptr inbounds double, ptr %1179, i64 0
  store double %1176, ptr %1180, align 8, !tbaa !11
  %1181 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 43
  %1182 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1181, i32 0, i32 4
  %1183 = load ptr, ptr %1182, align 8, !tbaa !15
  %1184 = getelementptr inbounds double, ptr %1183, i64 1
  %1185 = load double, ptr %1184, align 8, !tbaa !11
  %1186 = fmul double 2.000000e+00, %1185
  %1187 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 45
  %1188 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1187, i32 0, i32 4
  %1189 = load ptr, ptr %1188, align 8, !tbaa !15
  %1190 = getelementptr inbounds double, ptr %1189, i64 1
  store double %1186, ptr %1190, align 8, !tbaa !11
  %1191 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 43
  %1192 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1191, i32 0, i32 4
  %1193 = load ptr, ptr %1192, align 8, !tbaa !15
  %1194 = getelementptr inbounds double, ptr %1193, i64 2
  %1195 = load double, ptr %1194, align 8, !tbaa !11
  %1196 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 43
  %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 = fsub double %1195, %1200
  %1202 = fmul double 2.000000e+00, %1201
  %1203 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %28, i32 0, i32 45
  %1204 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1203, i32 0, i32 4
  %1205 = load ptr, ptr %1204, align 8, !tbaa !15
  %1206 = getelementptr inbounds double, ptr %1205, i64 2
  store double %1202, ptr %1206, align 8, !tbaa !11
  br label %1111, !llvm.loop !70

1207:                                             ; preds = %1111
  %1208 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15minlbfgsresultsEPNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef %28, ptr noundef %18, ptr noundef %29, ptr noundef %1208)
  %1209 = load i8, ptr %11, align 1, !tbaa !5, !range !30, !noundef !31
  %1210 = trunc i8 %1209 to i1
  br i1 %1210, label %1215, label %1211

1211:                                             ; preds = %1207
  %1212 = getelementptr inbounds %"struct.alglib_impl::minlbfgsreport", ptr %29, i32 0, i32 2
  %1213 = load i64, ptr %1212, align 8, !tbaa !36
  %1214 = icmp sle i64 %1213, 0
  br label %1215

1215:                                             ; preds = %1211, %1207
  %1216 = phi i1 [ true, %1207 ], [ %1214, %1211 ]
  %1217 = zext i1 %1216 to i8
  store i8 %1217, ptr %11, align 1, !tbaa !5
  store i8 0, ptr %15, align 1, !tbaa !5
  %1218 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL29testminlbfgsunit_testoptguardPbPN11alglib_impl8ae_stateE(ptr noundef %15, ptr noundef %1218)
  %1219 = load i8, ptr %7, align 1, !tbaa !5, !range !30, !noundef !31
  %1220 = trunc i8 %1219 to i1
  br i1 %1220, label %1245, label %1221

1221:                                             ; preds = %1215
  %1222 = load i8, ptr %8, align 1, !tbaa !5, !range !30, !noundef !31
  %1223 = trunc i8 %1222 to i1
  br i1 %1223, label %1245, label %1224

1224:                                             ; preds = %1221
  %1225 = load i8, ptr %9, align 1, !tbaa !5, !range !30, !noundef !31
  %1226 = trunc i8 %1225 to i1
  br i1 %1226, label %1245, label %1227

1227:                                             ; preds = %1224
  %1228 = load i8, ptr %10, align 1, !tbaa !5, !range !30, !noundef !31
  %1229 = trunc i8 %1228 to i1
  br i1 %1229, label %1245, label %1230

1230:                                             ; preds = %1227
  %1231 = load i8, ptr %11, align 1, !tbaa !5, !range !30, !noundef !31
  %1232 = trunc i8 %1231 to i1
  br i1 %1232, label %1245, label %1233

1233:                                             ; preds = %1230
  %1234 = load i8, ptr %12, align 1, !tbaa !5, !range !30, !noundef !31
  %1235 = trunc i8 %1234 to i1
  br i1 %1235, label %1245, label %1236

1236:                                             ; preds = %1233
  %1237 = load i8, ptr %13, align 1, !tbaa !5, !range !30, !noundef !31
  %1238 = trunc i8 %1237 to i1
  br i1 %1238, label %1245, label %1239

1239:                                             ; preds = %1236
  %1240 = load i8, ptr %14, align 1, !tbaa !5, !range !30, !noundef !31
  %1241 = trunc i8 %1240 to i1
  br i1 %1241, label %1245, label %1242

1242:                                             ; preds = %1239
  %1243 = load i8, ptr %15, align 1, !tbaa !5, !range !30, !noundef !31
  %1244 = trunc i8 %1243 to i1
  br label %1245

1245:                                             ; preds = %1242, %1239, %1236, %1233, %1230, %1227, %1224, %1221, %1215
  %1246 = phi i1 [ true, %1239 ], [ true, %1236 ], [ true, %1233 ], [ true, %1230 ], [ true, %1227 ], [ true, %1224 ], [ true, %1221 ], [ true, %1215 ], [ %1244, %1242 ]
  %1247 = zext i1 %1246 to i8
  store i8 %1247, ptr %6, align 1, !tbaa !5
  %1248 = load i8, ptr %3, align 1, !tbaa !5, !range !30, !noundef !31
  %1249 = trunc i8 %1248 to i1
  br i1 %1249, label %1332, label %1250

1250:                                             ; preds = %1245
  %1251 = call i32 (ptr, ...) @printf(ptr noundef @.str.334)
  %1252 = call i32 (ptr, ...) @printf(ptr noundef @.str.335)
  %1253 = load i8, ptr %7, align 1, !tbaa !5, !range !30, !noundef !31
  %1254 = trunc i8 %1253 to i1
  br i1 %1254, label %1255, label %1257

1255:                                             ; preds = %1250
  %1256 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1259

1257:                                             ; preds = %1250
  %1258 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1259

1259:                                             ; preds = %1257, %1255
  %1260 = call i32 (ptr, ...) @printf(ptr noundef @.str.336)
  %1261 = load i8, ptr %8, align 1, !tbaa !5, !range !30, !noundef !31
  %1262 = trunc i8 %1261 to i1
  br i1 %1262, label %1263, label %1265

1263:                                             ; preds = %1259
  %1264 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1267

1265:                                             ; preds = %1259
  %1266 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1267

1267:                                             ; preds = %1265, %1263
  %1268 = call i32 (ptr, ...) @printf(ptr noundef @.str.337)
  %1269 = load i8, ptr %9, align 1, !tbaa !5, !range !30, !noundef !31
  %1270 = trunc i8 %1269 to i1
  br i1 %1270, label %1271, label %1273

1271:                                             ; preds = %1267
  %1272 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1275

1273:                                             ; preds = %1267
  %1274 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1275

1275:                                             ; preds = %1273, %1271
  %1276 = call i32 (ptr, ...) @printf(ptr noundef @.str.338)
  %1277 = load i8, ptr %13, align 1, !tbaa !5, !range !30, !noundef !31
  %1278 = trunc i8 %1277 to i1
  br i1 %1278, label %1279, label %1281

1279:                                             ; preds = %1275
  %1280 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1283

1281:                                             ; preds = %1275
  %1282 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1283

1283:                                             ; preds = %1281, %1279
  %1284 = call i32 (ptr, ...) @printf(ptr noundef @.str.339)
  %1285 = load i8, ptr %14, align 1, !tbaa !5, !range !30, !noundef !31
  %1286 = trunc i8 %1285 to i1
  br i1 %1286, label %1287, label %1289

1287:                                             ; preds = %1283
  %1288 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1291

1289:                                             ; preds = %1283
  %1290 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1291

1291:                                             ; preds = %1289, %1287
  %1292 = call i32 (ptr, ...) @printf(ptr noundef @.str.340)
  %1293 = load i8, ptr %10, align 1, !tbaa !5, !range !30, !noundef !31
  %1294 = trunc i8 %1293 to i1
  br i1 %1294, label %1295, label %1297

1295:                                             ; preds = %1291
  %1296 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1299

1297:                                             ; preds = %1291
  %1298 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1299

1299:                                             ; preds = %1297, %1295
  %1300 = call i32 (ptr, ...) @printf(ptr noundef @.str.341)
  %1301 = load i8, ptr %11, align 1, !tbaa !5, !range !30, !noundef !31
  %1302 = trunc i8 %1301 to i1
  br i1 %1302, label %1303, label %1305

1303:                                             ; preds = %1299
  %1304 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1307

1305:                                             ; preds = %1299
  %1306 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1307

1307:                                             ; preds = %1305, %1303
  %1308 = call i32 (ptr, ...) @printf(ptr noundef @.str.342)
  %1309 = load i8, ptr %12, align 1, !tbaa !5, !range !30, !noundef !31
  %1310 = trunc i8 %1309 to i1
  br i1 %1310, label %1311, label %1313

1311:                                             ; preds = %1307
  %1312 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1315

1313:                                             ; preds = %1307
  %1314 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1315

1315:                                             ; preds = %1313, %1311
  %1316 = call i32 (ptr, ...) @printf(ptr noundef @.str.343)
  %1317 = load i8, ptr %15, align 1, !tbaa !5, !range !30, !noundef !31
  %1318 = trunc i8 %1317 to i1
  br i1 %1318, label %1319, label %1321

1319:                                             ; preds = %1315
  %1320 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1323

1321:                                             ; preds = %1315
  %1322 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1323

1323:                                             ; preds = %1321, %1319
  %1324 = load i8, ptr %6, align 1, !tbaa !5, !range !30, !noundef !31
  %1325 = trunc i8 %1324 to i1
  br i1 %1325, label %1326, label %1328

1326:                                             ; preds = %1323
  %1327 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %1330

1328:                                             ; preds = %1323
  %1329 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1330

1330:                                             ; preds = %1328, %1326
  %1331 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1332

1332:                                             ; preds = %1330, %1245
  %1333 = load i8, ptr %6, align 1, !tbaa !5, !range !30, !noundef !31
  %1334 = trunc i8 %1333 to i1
  %1335 = xor i1 %1334, true
  %1336 = zext i1 %1335 to i8
  store i8 %1336, ptr %32, align 1, !tbaa !5
  %1337 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1337)
  %1338 = load i8, ptr %32, align 1, !tbaa !5, !range !30, !noundef !31
  %1339 = trunc i8 %1338 to i1
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 6872, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 80, 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 %1339
}

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_impl14minlbfgscreateEllPNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) #1

declare void @_ZN11alglib_impl15minlbfgscreatefEllPNS_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_impl15minlbfgsresultsEPNS_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_13minlbfgsstateEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) #1

declare noundef i64 @_ZN11alglib_impl7ae_signEdPNS_8ae_stateE(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 nounwind willreturn memory(argmem: write) }
attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 2336}
!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, !18, i64 600, !12, i64 664, !12, i64 672, !18, i64 680, !14, i64 744, !12, i64 752, !20, i64 760, !18, i64 840, !18, i64 904, !18, i64 968, !20, i64 1032, !14, i64 1112, !21, i64 1120, !22, i64 1584, !12, i64 2032, !12, i64 2040, !12, i64 2048, !12, i64 2056, !12, i64 2064, !18, i64 2072, !18, i64 2136, !18, i64 2200, !12, i64 2264, !18, i64 2272, !6, i64 2336, !6, i64 2337, !6, i64 2338, !6, i64 2339, !12, i64 2344, !23, i64 2352, !14, i64 2616, !14, i64 2624, !14, i64 2632, !25, i64 2640, !14, i64 2832, !26, i64 2840, !18, i64 6808}
!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_impl10rcommstateE", !24, i64 0, !18, i64 8, !18, i64 72, !18, i64 136, !18, i64 200}
!24 = !{!"int", !7, i64 0}
!25 = !{!"_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}
!26 = !{!"_ZTSN11alglib_impl17smoothnessmonitorE", !14, i64 0, !14, i64 8, !6, i64 16, !18, i64 24, !14, i64 88, !18, i64 96, !18, i64 160, !18, i64 224, !20, i64 288, !18, i64 368, !18, i64 432, !14, i64 496, !6, i64 504, !6, i64 505, !12, i64 512, !12, i64 520, !6, i64 528, !27, i64 536, !12, i64 832, !12, i64 840, !28, i64 848, !28, i64 1152, !12, i64 1456, !12, i64 1464, !29, i64 1472, !29, i64 1784, !6, i64 2096, !18, i64 2104, !18, i64 2168, !20, i64 2232, !23, i64 2312, !18, i64 2576, !18, i64 2640, !18, i64 2704, !18, i64 2768, !18, i64 2832, !18, i64 2896, !18, i64 2960, !18, i64 3024, !20, i64 3088, !20, i64 3168, !18, i64 3248, !18, i64 3312, !18, i64 3376, !18, i64 3440, !18, i64 3504, !18, i64 3568, !18, i64 3632, !18, i64 3696, !18, i64 3760, !18, i64 3824, !20, i64 3888}
!27 = !{!"_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}
!28 = !{!"_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}
!29 = !{!"_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}
!30 = !{i8 0, i8 2}
!31 = !{}
!32 = !{!17, !6, i64 2337}
!33 = !{!17, !12, i64 2264}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = !{!37, !14, i64 16}
!37 = !{!"_ZTSN11alglib_impl14minlbfgsreportE", !14, i64 0, !14, i64 8, !14, i64 16}
!38 = distinct !{!38, !35}
!39 = distinct !{!39, !35}
!40 = distinct !{!40, !35}
!41 = distinct !{!41, !35}
!42 = distinct !{!42, !35}
!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, !35}
!50 = distinct !{!50, !35}
!51 = distinct !{!51, !35}
!52 = distinct !{!52, !35}
!53 = distinct !{!53, !35}
!54 = distinct !{!54, !35}
!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 = distinct !{!62, !35}
!63 = distinct !{!63, !35}
!64 = distinct !{!64, !35}
!65 = distinct !{!65, !35}
!66 = distinct !{!66, !35}
!67 = !{!37, !14, i64 0}
!68 = distinct !{!68, !35}
!69 = distinct !{!69, !35}
!70 = distinct !{!70, !35}


; 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, %"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, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_vector", i8, i8, i8, i8, 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::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", 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, i8, i8, double, double, i8, %"struct.alglib_impl::optguardreport", 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::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 }
%"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 }
%"struct.alglib_impl::minlbfgsreport" = type { i64, i64, i64 }

@.str.1 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.334 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.335 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.336 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.337 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.338 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.339 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.340 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.341 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.342 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.343 = 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

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

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

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

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

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #3

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) 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

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 #1

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

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

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

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

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

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

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

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

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

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

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

; 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 %"struct.alglib_impl::ae_vector", align 8
  %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_matrix", align 8
  %12 = alloca %"struct.alglib_impl::ae_vector", align 8
  %13 = alloca %"struct.alglib_impl::minlbfgsstate", align 8
  %14 = alloca %"struct.alglib_impl::minlbfgsreport", 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 64, 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 80, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 6872, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #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) %7, i8 0, i64 64, i1 false)
  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(80) %11, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %12, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(6872) %13, i8 0, i64 6872, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %14, i8 0, i64 24, i1 false)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %7, 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 %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_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %11, 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 %12, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl19_minlbfgsstate_initEPvPNS_8ae_stateEb(ptr noundef nonnull %13, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl20_minlbfgsreport_initEPvPNS_8ae_stateEb(ptr noundef nonnull %14, ptr noundef %1, i1 noundef zeroext true)
  store i8 0, ptr %5, align 1, !tbaa !5
  store i8 0, ptr %4, align 1, !tbaa !5
  call void @_ZL36testminlbfgsunit_testpreconditioningPbPN11alglib_impl8ae_stateE(ptr noundef nonnull %5, ptr noundef %1)
  call void @_ZL26testminlbfgsunit_testotherPbPN11alglib_impl8ae_stateE(ptr noundef nonnull %4, ptr noundef %1)
  %15 = getelementptr inbounds i8, ptr %7, i64 56
  %16 = getelementptr inbounds i8, ptr %13, i64 2336
  %17 = getelementptr inbounds i8, ptr %13, i64 2337
  %18 = getelementptr inbounds i8, ptr %13, i64 2256
  %19 = getelementptr inbounds i8, ptr %13, i64 2264
  %20 = getelementptr inbounds i8, ptr %13, i64 2328
  %21 = getelementptr inbounds i8, ptr %14, i64 16
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef 3, ptr noundef %1)
  %22 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %23 = call double @llvm.fmuladd.f64(double %22, double 1.000000e+02, double -5.000000e+01)
  %24 = load ptr, ptr %15, align 8, !tbaa !9
  store double %23, ptr %24, align 8, !tbaa !10
  %25 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %26 = call double @llvm.fmuladd.f64(double %25, double 1.000000e+02, double -5.000000e+01)
  %27 = load ptr, ptr %15, align 8, !tbaa !9
  %28 = getelementptr inbounds i8, ptr %27, i64 8
  store double %26, ptr %28, align 8, !tbaa !10
  %29 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %30 = call double @llvm.fmuladd.f64(double %29, double 1.000000e+02, double -5.000000e+01)
  %31 = load ptr, ptr %15, align 8, !tbaa !9
  %32 = getelementptr inbounds i8, ptr %31, i64 16
  store double %30, ptr %32, align 8, !tbaa !10
  call void @_ZN11alglib_impl14minlbfgscreateEllPNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef 3, i64 noundef 2, ptr noundef nonnull %7, ptr noundef nonnull %13, ptr noundef %1)
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef nonnull %13, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %1)
  %33 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %33, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %2, %83
  %34 = load i8, ptr %16, align 8, !tbaa !12, !range !28, !noundef !29
  %35 = trunc nuw i8 %34 to i1
  br i1 %35, label %39, label %36

36:                                               ; preds = %.lr.ph
  %37 = load i8, ptr %17, align 1, !tbaa !30, !range !28, !noundef !29
  %38 = trunc nuw i8 %37 to i1
  br i1 %38, label %39, label %56

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

56:                                               ; preds = %39, %36
  %57 = phi i8 [ %.pre, %39 ], [ %37, %36 ]
  %58 = trunc nuw i8 %57 to i1
  br i1 %58, label %59, label %83

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

83:                                               ; preds = %59, %56
  %84 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %84, label %.lr.ph, label %._crit_edge, !llvm.loop !32

._crit_edge:                                      ; preds = %83, %2
  call void @_ZN11alglib_impl15minlbfgsresultsEPNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef nonnull %7, ptr noundef nonnull %14, ptr noundef %1)
  %85 = load i64, ptr %21, align 8
  %86 = icmp slt i64 %85, 1
  br i1 %86, label %106, label %87

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

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

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

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

.lr.ph.1:                                         ; preds = %106, %169
  %120 = load i8, ptr %16, align 8, !tbaa !12, !range !28, !noundef !29
  %121 = trunc nuw i8 %120 to i1
  br i1 %121, label %125, label %122

122:                                              ; preds = %.lr.ph.1
  %123 = load i8, ptr %17, align 1, !tbaa !30, !range !28, !noundef !29
  %124 = trunc nuw i8 %123 to i1
  br i1 %124, label %125, label %142

125:                                              ; preds = %122, %.lr.ph.1
  %126 = load ptr, ptr %18, align 8, !tbaa !9
  %127 = load double, ptr %126, align 8, !tbaa !10
  %128 = fadd double %127, -2.000000e+00
  %129 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %128, ptr noundef %1)
  %130 = load ptr, ptr %18, align 8, !tbaa !9
  %131 = getelementptr inbounds i8, ptr %130, i64 8
  %132 = load double, ptr %131, align 8, !tbaa !10
  %133 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %132, ptr noundef %1)
  %134 = fadd double %129, %133
  %135 = load ptr, ptr %18, align 8, !tbaa !9
  %136 = getelementptr inbounds i8, ptr %135, i64 16
  %137 = load double, ptr %136, align 8, !tbaa !10
  %138 = load double, ptr %135, align 8, !tbaa !10
  %139 = fsub double %137, %138
  %140 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %139, ptr noundef %1)
  %141 = fadd double %134, %140
  store double %141, ptr %19, align 8, !tbaa !31
  %.pre459 = load i8, ptr %17, align 1, !tbaa !30, !range !28
  br label %142

142:                                              ; preds = %125, %122
  %143 = phi i8 [ %.pre459, %125 ], [ %123, %122 ]
  %144 = trunc nuw i8 %143 to i1
  br i1 %144, label %145, label %169

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

169:                                              ; preds = %145, %142
  %170 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %170, label %.lr.ph.1, label %._crit_edge.1, !llvm.loop !32

._crit_edge.1:                                    ; preds = %169, %106
  call void @_ZN11alglib_impl15minlbfgsresultsEPNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef nonnull %7, ptr noundef nonnull %14, ptr noundef %1)
  %171 = load i64, ptr %21, align 8
  %172 = icmp slt i64 %171, 1
  %or.cond.1 = select i1 %107, i1 true, i1 %172
  br i1 %or.cond.1, label %.preheader376, label %173

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

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

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

.preheader376:                                    ; preds = %185, %179, %173, %._crit_edge.1
  %192 = phi i1 [ true, %179 ], [ true, %173 ], [ true, %._crit_edge.1 ], [ %191, %185 ]
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef 1, ptr noundef %1)
  %193 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef -1.000000e+02, double noundef 1.000000e-01)
  br i1 %193, label %.lr.ph385, label %._crit_edge386

.lr.ph385:                                        ; preds = %.preheader376, %241
  %.0325383 = phi double [ %243, %241 ], [ -1.000000e+02, %.preheader376 ]
  %.1342382 = phi i1 [ %242, %241 ], [ false, %.preheader376 ]
  %194 = load ptr, ptr %15, align 8, !tbaa !9
  store double %.0325383, ptr %194, align 8, !tbaa !10
  call void @_ZN11alglib_impl14minlbfgscreateEllPNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef 1, i64 noundef 1, ptr noundef nonnull %7, ptr noundef nonnull %13, ptr noundef %1)
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef nonnull %13, double noundef 1.000000e-09, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %1)
  %195 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %195, label %.lr.ph380, label %._crit_edge381

.lr.ph380:                                        ; preds = %.lr.ph385, %232
  %196 = load i8, ptr %16, align 8, !tbaa !12, !range !28, !noundef !29
  %197 = trunc nuw i8 %196 to i1
  br i1 %197, label %201, label %198

198:                                              ; preds = %.lr.ph380
  %199 = load i8, ptr %17, align 1, !tbaa !30, !range !28, !noundef !29
  %200 = trunc nuw i8 %199 to i1
  br i1 %200, label %201, label %210

201:                                              ; preds = %198, %.lr.ph380
  %202 = load ptr, ptr %18, align 8, !tbaa !9
  %203 = load double, ptr %202, align 8, !tbaa !10
  %204 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %203, ptr noundef %1)
  %205 = load ptr, ptr %18, align 8, !tbaa !9
  %206 = load double, ptr %205, align 8, !tbaa !10
  %207 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %206, ptr noundef %1)
  %208 = fadd double %207, 1.000000e+00
  %209 = fdiv double %204, %208
  store double %209, ptr %19, align 8, !tbaa !31
  %.pre460 = load i8, ptr %17, align 1, !tbaa !30, !range !28
  br label %210

210:                                              ; preds = %201, %198
  %211 = phi i8 [ %.pre460, %201 ], [ %199, %198 ]
  %212 = trunc nuw i8 %211 to i1
  br i1 %212, label %213, label %232

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

232:                                              ; preds = %213, %210
  %233 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %233, label %.lr.ph380, label %._crit_edge381, !llvm.loop !34

._crit_edge381:                                   ; preds = %232, %.lr.ph385
  call void @_ZN11alglib_impl15minlbfgsresultsEPNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef nonnull %7, ptr noundef nonnull %14, ptr noundef %1)
  %234 = load i64, ptr %21, align 8
  %235 = icmp slt i64 %234, 1
  %or.cond5 = select i1 %.1342382, i1 true, i1 %235
  br i1 %or.cond5, label %241, label %236

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

241:                                              ; preds = %236, %._crit_edge381
  %242 = phi i1 [ true, %._crit_edge381 ], [ %240, %236 ]
  %243 = fadd double %.0325383, 1.000000e-01
  %244 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %243, double noundef 1.000000e-01)
  br i1 %244, label %.lr.ph385, label %._crit_edge386.loopexit, !llvm.loop !35

._crit_edge386.loopexit:                          ; preds = %241
  %245 = zext i1 %242 to i8
  br label %._crit_edge386

._crit_edge386:                                   ; preds = %._crit_edge386.loopexit, %.preheader376
  %.1342.lcssa = phi i8 [ 0, %.preheader376 ], [ %245, %._crit_edge386.loopexit ]
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef 1, ptr noundef %1)
  %246 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef -1.000000e+02, double noundef 1.000000e-01)
  br i1 %246, label %.lr.ph385.1.preheader, label %._crit_edge386.1

.lr.ph385.1.preheader:                            ; preds = %._crit_edge386
  %247 = trunc nuw i8 %.1342.lcssa to i1
  br label %.lr.ph385.1

.lr.ph385.1:                                      ; preds = %.lr.ph385.1.preheader, %295
  %.0325383.1 = phi double [ %297, %295 ], [ -1.000000e+02, %.lr.ph385.1.preheader ]
  %.1342382.1 = phi i1 [ %296, %295 ], [ %247, %.lr.ph385.1.preheader ]
  %248 = load ptr, ptr %15, align 8, !tbaa !9
  store double %.0325383.1, ptr %248, align 8, !tbaa !10
  call void @_ZN11alglib_impl15minlbfgscreatefEllPNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef 1, i64 noundef 1, ptr noundef nonnull %7, double noundef 0x3EB0C6F7A0B5ED8D, ptr noundef nonnull %13, ptr noundef %1)
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef nonnull %13, double noundef 1.000000e-09, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %1)
  %249 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %249, label %.lr.ph380.1, label %._crit_edge381.1

.lr.ph380.1:                                      ; preds = %.lr.ph385.1, %286
  %250 = load i8, ptr %16, align 8, !tbaa !12, !range !28, !noundef !29
  %251 = trunc nuw i8 %250 to i1
  br i1 %251, label %255, label %252

252:                                              ; preds = %.lr.ph380.1
  %253 = load i8, ptr %17, align 1, !tbaa !30, !range !28, !noundef !29
  %254 = trunc nuw i8 %253 to i1
  br i1 %254, label %255, label %264

255:                                              ; preds = %252, %.lr.ph380.1
  %256 = load ptr, ptr %18, align 8, !tbaa !9
  %257 = load double, ptr %256, align 8, !tbaa !10
  %258 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %257, ptr noundef %1)
  %259 = load ptr, ptr %18, align 8, !tbaa !9
  %260 = load double, ptr %259, align 8, !tbaa !10
  %261 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %260, ptr noundef %1)
  %262 = fadd double %261, 1.000000e+00
  %263 = fdiv double %258, %262
  store double %263, ptr %19, align 8, !tbaa !31
  %.pre461 = load i8, ptr %17, align 1, !tbaa !30, !range !28
  br label %264

264:                                              ; preds = %255, %252
  %265 = phi i8 [ %.pre461, %255 ], [ %253, %252 ]
  %266 = trunc nuw i8 %265 to i1
  br i1 %266, label %267, label %286

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

286:                                              ; preds = %267, %264
  %287 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %287, label %.lr.ph380.1, label %._crit_edge381.1, !llvm.loop !34

._crit_edge381.1:                                 ; preds = %286, %.lr.ph385.1
  call void @_ZN11alglib_impl15minlbfgsresultsEPNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef nonnull %7, ptr noundef nonnull %14, ptr noundef %1)
  %288 = load i64, ptr %21, align 8
  %289 = icmp slt i64 %288, 1
  %or.cond5.1 = select i1 %.1342382.1, i1 true, i1 %289
  br i1 %or.cond5.1, label %295, label %290

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

295:                                              ; preds = %290, %._crit_edge381.1
  %296 = phi i1 [ true, %._crit_edge381.1 ], [ %294, %290 ]
  %297 = fadd double %.0325383.1, 1.000000e-01
  %298 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %297, double noundef 1.000000e-01)
  br i1 %298, label %.lr.ph385.1, label %._crit_edge386.1.loopexit, !llvm.loop !35

._crit_edge386.1.loopexit:                        ; preds = %295
  %299 = zext i1 %296 to i8
  br label %._crit_edge386.1

._crit_edge386.1:                                 ; preds = %._crit_edge386.1.loopexit, %._crit_edge386
  %.1342.lcssa.1 = phi i8 [ %.1342.lcssa, %._crit_edge386 ], [ %299, %._crit_edge386.1.loopexit ]
  br label %303

.preheader374:                                    ; preds = %415
  %300 = getelementptr inbounds i8, ptr %8, i64 56
  %301 = getelementptr inbounds i8, ptr %11, i64 72
  %302 = getelementptr inbounds i8, ptr %9, i64 56
  br label %417

303:                                              ; preds = %._crit_edge386.1, %415
  %switch358 = phi i1 [ true, %._crit_edge386.1 ], [ false, %415 ]
  %.0335396 = phi i1 [ false, %._crit_edge386.1 ], [ %416, %415 ]
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef 3, ptr noundef %1)
  %304 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %305 = call double @llvm.fmuladd.f64(double %304, double 1.000000e+01, double 1.000000e+01)
  %306 = load ptr, ptr %15, align 8, !tbaa !9
  store double %305, ptr %306, align 8, !tbaa !10
  %307 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %308 = call double @llvm.fmuladd.f64(double %307, double 1.000000e+01, double 1.000000e+01)
  %309 = load ptr, ptr %15, align 8, !tbaa !9
  %310 = getelementptr inbounds i8, ptr %309, i64 8
  store double %308, ptr %310, align 8, !tbaa !10
  %311 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %312 = call double @llvm.fmuladd.f64(double %311, double 1.000000e+01, double 1.000000e+01)
  %313 = load ptr, ptr %15, align 8, !tbaa !9
  %314 = getelementptr inbounds i8, ptr %313, i64 16
  store double %312, ptr %314, align 8, !tbaa !10
  br i1 %switch358, label %315, label %316

315:                                              ; preds = %303
  call void @_ZN11alglib_impl14minlbfgscreateEllPNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef 3, i64 noundef 2, ptr noundef nonnull %7, ptr noundef nonnull %13, ptr noundef %1)
  br label %317

316:                                              ; preds = %303
  call void @_ZN11alglib_impl15minlbfgscreatefEllPNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef 3, i64 noundef 2, ptr noundef nonnull %7, double noundef 0x3EB0C6F7A0B5ED8D, ptr noundef nonnull %13, ptr noundef %1)
  br label %317

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

319:                                              ; preds = %317
  call void @_ZL26testminlbfgsunit_testfunc2PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  %320 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %320, label %321, label %340

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

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

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

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

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

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

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

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

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

339:                                              ; preds = %337
  call void @_ZL26testminlbfgsunit_testfunc2PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br label %340

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

.lr.ph391:                                        ; preds = %340, %.lr.ph391
  call void @_ZL26testminlbfgsunit_testfunc2PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  %353 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %353, label %.lr.ph391, label %._crit_edge392, !llvm.loop !36

._crit_edge392:                                   ; preds = %.lr.ph391, %340
  call void @_ZN11alglib_impl15minlbfgsresultsEPNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef nonnull %7, ptr noundef nonnull %14, ptr noundef %1)
  %354 = load i64, ptr %21, align 8
  %355 = icmp slt i64 %354, 1
  %or.cond8 = select i1 %.0335396, i1 true, i1 %355
  br i1 %or.cond8, label %377, label %356

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

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

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

377:                                              ; preds = %369, %363, %356, %._crit_edge392
  %378 = phi i1 [ true, %363 ], [ true, %356 ], [ true, %._crit_edge392 ], [ %376, %369 ]
  %379 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %380 = call double @llvm.fmuladd.f64(double %379, double 1.000000e+01, double 1.000000e+01)
  %381 = load ptr, ptr %15, align 8, !tbaa !9
  store double %380, ptr %381, align 8, !tbaa !10
  %382 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %383 = call double @llvm.fmuladd.f64(double %382, double 1.000000e+01, double 1.000000e+01)
  %384 = load ptr, ptr %15, align 8, !tbaa !9
  %385 = getelementptr inbounds i8, ptr %384, i64 8
  store double %383, ptr %385, align 8, !tbaa !10
  %386 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %387 = call double @llvm.fmuladd.f64(double %386, double 1.000000e+01, double 1.000000e+01)
  %388 = load ptr, ptr %15, align 8, !tbaa !9
  %389 = getelementptr inbounds i8, ptr %388, i64 16
  store double %387, ptr %389, align 8, !tbaa !10
  call void @_ZN11alglib_impl19minlbfgsrestartfromEPNS_13minlbfgsstateEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef nonnull %7, ptr noundef %1)
  %390 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %390, label %.lr.ph394, label %._crit_edge395

.lr.ph394:                                        ; preds = %377, %.lr.ph394
  call void @_ZL26testminlbfgsunit_testfunc2PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  %391 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %391, label %.lr.ph394, label %._crit_edge395, !llvm.loop !37

._crit_edge395:                                   ; preds = %.lr.ph394, %377
  call void @_ZN11alglib_impl15minlbfgsresultsEPNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef nonnull %7, ptr noundef nonnull %14, ptr noundef %1)
  %392 = load i64, ptr %21, align 8
  %393 = icmp slt i64 %392, 1
  %or.cond11 = select i1 %378, i1 true, i1 %393
  br i1 %or.cond11, label %415, label %394

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

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

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

415:                                              ; preds = %407, %401, %394, %._crit_edge395
  %416 = phi i1 [ true, %401 ], [ true, %394 ], [ true, %._crit_edge395 ], [ %414, %407 ]
  br i1 %switch358, label %303, label %.preheader374, !llvm.loop !38

417:                                              ; preds = %.preheader374, %626
  %indvar = phi i64 [ 0, %.preheader374 ], [ %indvar.next, %626 ]
  %indvars.iv = phi i64 [ 2, %.preheader374 ], [ %indvars.iv.next, %626 ]
  %.0334416 = phi i64 [ 1, %.preheader374 ], [ %627, %626 ]
  %.0337415 = phi i1 [ false, %.preheader374 ], [ %622, %626 ]
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %.0334416, i64 noundef %.0334416, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.0334416, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.0334416, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.0334416, ptr noundef %1)
  br label %418

418:                                              ; preds = %417, %418
  %.1329398 = phi i64 [ 0, %417 ], [ %423, %418 ]
  %419 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %420 = call double @llvm.fmuladd.f64(double %419, double 2.000000e+00, double -1.000000e+00)
  %421 = load ptr, ptr %300, align 8, !tbaa !9
  %422 = getelementptr inbounds double, ptr %421, i64 %.1329398
  store double %420, ptr %422, align 8, !tbaa !10
  %423 = add nuw nsw i64 %.1329398, 1
  %exitcond.not = icmp eq i64 %423, %.0334416
  br i1 %exitcond.not, label %.preheader370, label %418, !llvm.loop !39

.preheader370:                                    ; preds = %418, %432
  %.2330400 = phi i64 [ %446, %432 ], [ 0, %418 ]
  br label %424

424:                                              ; preds = %.preheader370, %424
  %.0326399 = phi i64 [ 0, %.preheader370 ], [ %431, %424 ]
  %425 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %426 = call double @llvm.fmuladd.f64(double %425, double 2.000000e+00, double -1.000000e+00)
  %427 = load ptr, ptr %301, align 8, !tbaa !9
  %428 = getelementptr inbounds ptr, ptr %427, i64 %.2330400
  %429 = load ptr, ptr %428, align 8, !tbaa !40
  %430 = getelementptr inbounds double, ptr %429, i64 %.0326399
  store double %426, ptr %430, align 8, !tbaa !10
  %431 = add nuw nsw i64 %.0326399, 1
  %exitcond444.not = icmp eq i64 %431, %.0334416
  br i1 %exitcond444.not, label %432, label %424, !llvm.loop !41

432:                                              ; preds = %424
  %433 = load ptr, ptr %301, align 8, !tbaa !9
  %434 = getelementptr inbounds ptr, ptr %433, i64 %.2330400
  %435 = load ptr, ptr %434, align 8, !tbaa !40
  %436 = getelementptr inbounds double, ptr %435, i64 %.2330400
  %437 = load double, ptr %436, align 8, !tbaa !10
  %438 = call noundef i64 @_ZN11alglib_impl7ae_signEdPNS_8ae_stateE(double noundef %437, ptr noundef %1)
  %439 = mul nsw i64 %438, 3
  %440 = sitofp i64 %439 to double
  %441 = fadd double %437, %440
  %442 = load ptr, ptr %301, align 8, !tbaa !9
  %443 = getelementptr inbounds ptr, ptr %442, i64 %.2330400
  %444 = load ptr, ptr %443, align 8, !tbaa !40
  %445 = getelementptr inbounds double, ptr %444, i64 %.2330400
  store double %441, ptr %445, align 8, !tbaa !10
  %446 = add nuw nsw i64 %.2330400, 1
  %exitcond445.not = icmp eq i64 %446, %.0334416
  br i1 %exitcond445.not, label %.preheader372.preheader, label %.preheader370, !llvm.loop !42

.preheader372.preheader:                          ; preds = %432
  %447 = add nsw i64 %.0334416, -1
  br label %.preheader372

.preheader372:                                    ; preds = %.preheader372.preheader, %.preheader372
  %.3331401 = phi i64 [ %456, %.preheader372 ], [ 0, %.preheader372.preheader ]
  %448 = load ptr, ptr %301, align 8, !tbaa !9
  %449 = getelementptr inbounds ptr, ptr %448, i64 %.3331401
  %450 = load ptr, ptr %449, align 8, !tbaa !40
  %451 = load ptr, ptr %300, align 8, !tbaa !9
  %452 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %447)
  %453 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %450, i64 noundef 1, ptr noundef %451, i64 noundef 1, i64 noundef %452)
  %454 = load ptr, ptr %302, align 8, !tbaa !9
  %455 = getelementptr inbounds double, ptr %454, i64 %.3331401
  store double %453, ptr %455, align 8, !tbaa !10
  %456 = add nuw nsw i64 %.3331401, 1
  %exitcond446.not = icmp eq i64 %456, %.0334416
  br i1 %exitcond446.not, label %.preheader369.preheader, label %.preheader372, !llvm.loop !43

.preheader369.preheader:                          ; preds = %.preheader372
  %xtraiter = and i64 %.0334416, 3
  %457 = icmp ult i64 %indvar, 3
  %unroll_iter = and i64 %.0334416, 9223372036854775804
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  %xtraiter507 = and i64 %.0334416, 3
  %458 = icmp ult i64 %indvar, 3
  %unroll_iter510 = and i64 %.0334416, 9223372036854775804
  %lcmp.mod509.not = icmp eq i64 %xtraiter507, 0
  br label %.preheader369

.preheader369:                                    ; preds = %.preheader369.preheader, %624
  %.0333414 = phi i64 [ %625, %624 ], [ 1, %.preheader369.preheader ]
  %.1338413 = phi i1 [ %622, %624 ], [ %.0337415, %.preheader369.preheader ]
  br label %459

459:                                              ; preds = %.preheader369, %459
  %.4332402 = phi i64 [ 0, %.preheader369 ], [ %464, %459 ]
  %460 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %461 = call double @llvm.fmuladd.f64(double %460, double 2.000000e+00, double -1.000000e+00)
  %462 = load ptr, ptr %15, align 8, !tbaa !9
  %463 = getelementptr inbounds double, ptr %462, i64 %.4332402
  store double %461, ptr %463, align 8, !tbaa !10
  %464 = add nuw nsw i64 %.4332402, 1
  %exitcond447.not = icmp eq i64 %464, %.0334416
  br i1 %exitcond447.not, label %465, label %459, !llvm.loop !44

465:                                              ; preds = %459
  call void @_ZN11alglib_impl14minlbfgscreateEllPNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %.0334416, i64 noundef %.0333414, ptr noundef nonnull %7, ptr noundef nonnull %13, ptr noundef %1)
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef nonnull %13, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %1)
  %466 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %466, label %.lr.ph407, label %._crit_edge408

.loopexit365:                                     ; preds = %.loopexit
  %467 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %467, label %.lr.ph407, label %._crit_edge408, !llvm.loop !45

.lr.ph407:                                        ; preds = %465, %.loopexit365
  %468 = load i8, ptr %16, align 8, !tbaa !12, !range !28, !noundef !29
  %469 = trunc nuw i8 %468 to i1
  %.pre462.pre = load i8, ptr %17, align 1, !tbaa !30, !range !28
  %.pre469 = trunc nuw i8 %.pre462.pre to i1
  br i1 %469, label %471, label %470

470:                                              ; preds = %.lr.ph407
  br i1 %.pre469, label %.thread473, label %.loopexit367.preheader

.thread473:                                       ; preds = %470
  store double 0.000000e+00, ptr %19, align 8, !tbaa !31
  br label %.preheader366.preheader

471:                                              ; preds = %.lr.ph407
  store double 0.000000e+00, ptr %19, align 8, !tbaa !31
  br i1 %.pre469, label %.preheader366.preheader, label %.loopexit367.preheader

.preheader366.preheader:                          ; preds = %.thread473, %471
  br i1 %457, label %.loopexit367.preheader.loopexit.unr-lcssa, label %.preheader366

.preheader366:                                    ; preds = %.preheader366.preheader, %.preheader366
  %.5403 = phi i64 [ %483, %.preheader366 ], [ 0, %.preheader366.preheader ]
  %niter = phi i64 [ %niter.next.3, %.preheader366 ], [ 0, %.preheader366.preheader ]
  %472 = load ptr, ptr %20, align 8, !tbaa !9
  %473 = getelementptr inbounds double, ptr %472, i64 %.5403
  store double 0.000000e+00, ptr %473, align 8, !tbaa !10
  %474 = or disjoint i64 %.5403, 1
  %475 = load ptr, ptr %20, align 8, !tbaa !9
  %476 = getelementptr inbounds double, ptr %475, i64 %474
  store double 0.000000e+00, ptr %476, align 8, !tbaa !10
  %477 = or disjoint i64 %.5403, 2
  %478 = load ptr, ptr %20, align 8, !tbaa !9
  %479 = getelementptr inbounds double, ptr %478, i64 %477
  store double 0.000000e+00, ptr %479, align 8, !tbaa !10
  %480 = or disjoint i64 %.5403, 3
  %481 = load ptr, ptr %20, align 8, !tbaa !9
  %482 = getelementptr inbounds double, ptr %481, i64 %480
  store double 0.000000e+00, ptr %482, align 8, !tbaa !10
  %483 = add nuw nsw i64 %.5403, 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 %.loopexit367.preheader.loopexit.unr-lcssa, label %.preheader366, !llvm.loop !46

.loopexit367.preheader.loopexit.unr-lcssa:        ; preds = %.preheader366, %.preheader366.preheader
  %.5403.unr = phi i64 [ 0, %.preheader366.preheader ], [ %483, %.preheader366 ]
  br i1 %lcmp.mod.not, label %.loopexit367.preheader, label %.preheader366.epil

.preheader366.epil:                               ; preds = %.loopexit367.preheader.loopexit.unr-lcssa, %.preheader366.epil
  %.5403.epil = phi i64 [ %486, %.preheader366.epil ], [ %.5403.unr, %.loopexit367.preheader.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.preheader366.epil ], [ 0, %.loopexit367.preheader.loopexit.unr-lcssa ]
  %484 = load ptr, ptr %20, align 8, !tbaa !9
  %485 = getelementptr inbounds double, ptr %484, i64 %.5403.epil
  store double 0.000000e+00, ptr %485, align 8, !tbaa !10
  %486 = add nuw nsw i64 %.5403.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 %.loopexit367.preheader, label %.preheader366.epil, !llvm.loop !47

.loopexit367.preheader:                           ; preds = %.loopexit367.preheader.loopexit.unr-lcssa, %.preheader366.epil, %470, %471
  br label %.loopexit367

.loopexit367:                                     ; preds = %.loopexit367.preheader, %.loopexit
  %.6405 = phi i64 [ %524, %.loopexit ], [ 0, %.loopexit367.preheader ]
  %487 = load ptr, ptr %301, align 8, !tbaa !9
  %488 = getelementptr inbounds ptr, ptr %487, i64 %.6405
  %489 = load ptr, ptr %488, align 8, !tbaa !40
  %490 = load ptr, ptr %18, align 8, !tbaa !9
  %491 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %447)
  %492 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %489, i64 noundef 1, ptr noundef %490, i64 noundef 1, i64 noundef %491)
  %493 = load i8, ptr %16, align 8, !tbaa !12, !range !28, !noundef !29
  %494 = trunc nuw i8 %493 to i1
  br i1 %494, label %498, label %495

495:                                              ; preds = %.loopexit367
  %496 = load i8, ptr %17, align 1, !tbaa !30, !range !28, !noundef !29
  %497 = trunc nuw i8 %496 to i1
  br i1 %497, label %498, label %506

498:                                              ; preds = %495, %.loopexit367
  %499 = load double, ptr %19, align 8, !tbaa !31
  %500 = load ptr, ptr %302, align 8, !tbaa !9
  %501 = getelementptr inbounds double, ptr %500, i64 %.6405
  %502 = load double, ptr %501, align 8, !tbaa !10
  %503 = fsub double %492, %502
  %504 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %503, ptr noundef %1)
  %505 = fadd double %499, %504
  store double %505, ptr %19, align 8, !tbaa !31
  %.pre463 = load i8, ptr %17, align 1, !tbaa !30, !range !28
  br label %506

506:                                              ; preds = %498, %495
  %507 = phi i8 [ %.pre463, %498 ], [ %496, %495 ]
  %508 = trunc nuw i8 %507 to i1
  br i1 %508, label %.preheader364, label %.loopexit

.preheader364:                                    ; preds = %506, %.preheader364
  %.1327404 = phi i64 [ %523, %.preheader364 ], [ 0, %506 ]
  %509 = load ptr, ptr %20, align 8, !tbaa !9
  %510 = getelementptr inbounds double, ptr %509, i64 %.1327404
  %511 = load double, ptr %510, align 8, !tbaa !10
  %512 = load ptr, ptr %302, align 8, !tbaa !9
  %513 = getelementptr inbounds double, ptr %512, i64 %.6405
  %514 = load double, ptr %513, align 8, !tbaa !10
  %515 = fsub double %492, %514
  %516 = fmul double %515, 2.000000e+00
  %517 = load ptr, ptr %301, align 8, !tbaa !9
  %518 = getelementptr inbounds ptr, ptr %517, i64 %.6405
  %519 = load ptr, ptr %518, align 8, !tbaa !40
  %520 = getelementptr inbounds double, ptr %519, i64 %.1327404
  %521 = load double, ptr %520, align 8, !tbaa !10
  %522 = call double @llvm.fmuladd.f64(double %516, double %521, double %511)
  store double %522, ptr %510, align 8, !tbaa !10
  %523 = add nuw nsw i64 %.1327404, 1
  %exitcond449.not = icmp eq i64 %523, %.0334416
  br i1 %exitcond449.not, label %.loopexit, label %.preheader364, !llvm.loop !49

.loopexit:                                        ; preds = %.preheader364, %506
  %524 = add nuw nsw i64 %.6405, 1
  %exitcond450.not = icmp eq i64 %524, %.0334416
  br i1 %exitcond450.not, label %.loopexit365, label %.loopexit367, !llvm.loop !50

._crit_edge408:                                   ; preds = %.loopexit365, %465
  call void @_ZN11alglib_impl15minlbfgsresultsEPNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef nonnull %7, ptr noundef nonnull %14, ptr noundef %1)
  %525 = load i64, ptr %21, align 8
  %526 = icmp slt i64 %525, 1
  %527 = select i1 %.1338413, i1 true, i1 %526
  br label %528

528:                                              ; preds = %._crit_edge408, %539
  %.7410 = phi i64 [ 0, %._crit_edge408 ], [ %541, %539 ]
  %.3340.in409 = phi i1 [ %527, %._crit_edge408 ], [ %540, %539 ]
  br i1 %.3340.in409, label %539, label %529

529:                                              ; preds = %528
  %530 = load ptr, ptr %15, align 8, !tbaa !9
  %531 = getelementptr inbounds double, ptr %530, i64 %.7410
  %532 = load double, ptr %531, align 8, !tbaa !10
  %533 = load ptr, ptr %300, align 8, !tbaa !9
  %534 = getelementptr inbounds double, ptr %533, i64 %.7410
  %535 = load double, ptr %534, align 8, !tbaa !10
  %536 = fsub double %532, %535
  %537 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %536, ptr noundef %1)
  %538 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %537, double noundef 1.000000e-03)
  br label %539

539:                                              ; preds = %529, %528
  %540 = phi i1 [ true, %528 ], [ %538, %529 ]
  %541 = add nuw nsw i64 %.7410, 1
  %exitcond451.not = icmp eq i64 %541, %.0334416
  br i1 %exitcond451.not, label %.preheader368.1, label %528, !llvm.loop !51

.preheader368.1:                                  ; preds = %539, %.preheader368.1
  %.4332402.1 = phi i64 [ %546, %.preheader368.1 ], [ 0, %539 ]
  %542 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %543 = call double @llvm.fmuladd.f64(double %542, double 2.000000e+00, double -1.000000e+00)
  %544 = load ptr, ptr %15, align 8, !tbaa !9
  %545 = getelementptr inbounds double, ptr %544, i64 %.4332402.1
  store double %543, ptr %545, align 8, !tbaa !10
  %546 = add nuw nsw i64 %.4332402.1, 1
  %exitcond447.1.not = icmp eq i64 %546, %.0334416
  br i1 %exitcond447.1.not, label %547, label %.preheader368.1, !llvm.loop !44

547:                                              ; preds = %.preheader368.1
  call void @_ZN11alglib_impl15minlbfgscreatefEllPNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef %.0334416, i64 noundef %.0333414, ptr noundef nonnull %7, double noundef 0x3EB0C6F7A0B5ED8D, ptr noundef nonnull %13, ptr noundef %1)
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef nonnull %13, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %1)
  %548 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %548, label %.lr.ph407.1, label %._crit_edge408.1

.lr.ph407.1:                                      ; preds = %547, %.loopexit365.1
  %549 = load i8, ptr %16, align 8, !tbaa !12, !range !28, !noundef !29
  %550 = trunc nuw i8 %549 to i1
  %.pre464.pre = load i8, ptr %17, align 1, !tbaa !30, !range !28
  %.pre470 = trunc nuw i8 %.pre464.pre to i1
  br i1 %550, label %552, label %551

551:                                              ; preds = %.lr.ph407.1
  br i1 %.pre470, label %.thread477, label %.loopexit367.1.preheader

.thread477:                                       ; preds = %551
  store double 0.000000e+00, ptr %19, align 8, !tbaa !31
  br label %.preheader366.1.preheader

552:                                              ; preds = %.lr.ph407.1
  store double 0.000000e+00, ptr %19, align 8, !tbaa !31
  br i1 %.pre470, label %.preheader366.1.preheader, label %.loopexit367.1.preheader

.preheader366.1.preheader:                        ; preds = %.thread477, %552
  br i1 %458, label %.loopexit367.1.preheader.loopexit.unr-lcssa, label %.preheader366.1

.preheader366.1:                                  ; preds = %.preheader366.1.preheader, %.preheader366.1
  %.5403.1 = phi i64 [ %564, %.preheader366.1 ], [ 0, %.preheader366.1.preheader ]
  %niter511 = phi i64 [ %niter511.next.3, %.preheader366.1 ], [ 0, %.preheader366.1.preheader ]
  %553 = load ptr, ptr %20, align 8, !tbaa !9
  %554 = getelementptr inbounds double, ptr %553, i64 %.5403.1
  store double 0.000000e+00, ptr %554, align 8, !tbaa !10
  %555 = or disjoint i64 %.5403.1, 1
  %556 = load ptr, ptr %20, align 8, !tbaa !9
  %557 = getelementptr inbounds double, ptr %556, i64 %555
  store double 0.000000e+00, ptr %557, align 8, !tbaa !10
  %558 = or disjoint i64 %.5403.1, 2
  %559 = load ptr, ptr %20, align 8, !tbaa !9
  %560 = getelementptr inbounds double, ptr %559, i64 %558
  store double 0.000000e+00, ptr %560, align 8, !tbaa !10
  %561 = or disjoint i64 %.5403.1, 3
  %562 = load ptr, ptr %20, align 8, !tbaa !9
  %563 = getelementptr inbounds double, ptr %562, i64 %561
  store double 0.000000e+00, ptr %563, align 8, !tbaa !10
  %564 = add nuw nsw i64 %.5403.1, 4
  %niter511.next.3 = add i64 %niter511, 4
  %niter511.ncmp.3 = icmp eq i64 %niter511.next.3, %unroll_iter510
  br i1 %niter511.ncmp.3, label %.loopexit367.1.preheader.loopexit.unr-lcssa, label %.preheader366.1, !llvm.loop !46

.loopexit367.1.preheader.loopexit.unr-lcssa:      ; preds = %.preheader366.1, %.preheader366.1.preheader
  %.5403.1.unr = phi i64 [ 0, %.preheader366.1.preheader ], [ %564, %.preheader366.1 ]
  br i1 %lcmp.mod509.not, label %.loopexit367.1.preheader, label %.preheader366.1.epil

.preheader366.1.epil:                             ; preds = %.loopexit367.1.preheader.loopexit.unr-lcssa, %.preheader366.1.epil
  %.5403.1.epil = phi i64 [ %567, %.preheader366.1.epil ], [ %.5403.1.unr, %.loopexit367.1.preheader.loopexit.unr-lcssa ]
  %epil.iter508 = phi i64 [ %epil.iter508.next, %.preheader366.1.epil ], [ 0, %.loopexit367.1.preheader.loopexit.unr-lcssa ]
  %565 = load ptr, ptr %20, align 8, !tbaa !9
  %566 = getelementptr inbounds double, ptr %565, i64 %.5403.1.epil
  store double 0.000000e+00, ptr %566, align 8, !tbaa !10
  %567 = add nuw nsw i64 %.5403.1.epil, 1
  %epil.iter508.next = add i64 %epil.iter508, 1
  %epil.iter508.cmp.not = icmp eq i64 %epil.iter508.next, %xtraiter507
  br i1 %epil.iter508.cmp.not, label %.loopexit367.1.preheader, label %.preheader366.1.epil, !llvm.loop !52

.loopexit367.1.preheader:                         ; preds = %.loopexit367.1.preheader.loopexit.unr-lcssa, %.preheader366.1.epil, %551, %552
  br label %.loopexit367.1

.loopexit367.1:                                   ; preds = %.loopexit367.1.preheader, %.loopexit.1
  %.6405.1 = phi i64 [ %605, %.loopexit.1 ], [ 0, %.loopexit367.1.preheader ]
  %568 = load ptr, ptr %301, align 8, !tbaa !9
  %569 = getelementptr inbounds ptr, ptr %568, i64 %.6405.1
  %570 = load ptr, ptr %569, align 8, !tbaa !40
  %571 = load ptr, ptr %18, align 8, !tbaa !9
  %572 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %447)
  %573 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %570, i64 noundef 1, ptr noundef %571, i64 noundef 1, i64 noundef %572)
  %574 = load i8, ptr %16, align 8, !tbaa !12, !range !28, !noundef !29
  %575 = trunc nuw i8 %574 to i1
  br i1 %575, label %579, label %576

576:                                              ; preds = %.loopexit367.1
  %577 = load i8, ptr %17, align 1, !tbaa !30, !range !28, !noundef !29
  %578 = trunc nuw i8 %577 to i1
  br i1 %578, label %579, label %587

579:                                              ; preds = %576, %.loopexit367.1
  %580 = load double, ptr %19, align 8, !tbaa !31
  %581 = load ptr, ptr %302, align 8, !tbaa !9
  %582 = getelementptr inbounds double, ptr %581, i64 %.6405.1
  %583 = load double, ptr %582, align 8, !tbaa !10
  %584 = fsub double %573, %583
  %585 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %584, ptr noundef %1)
  %586 = fadd double %580, %585
  store double %586, ptr %19, align 8, !tbaa !31
  %.pre465 = load i8, ptr %17, align 1, !tbaa !30, !range !28
  br label %587

587:                                              ; preds = %579, %576
  %588 = phi i8 [ %.pre465, %579 ], [ %577, %576 ]
  %589 = trunc nuw i8 %588 to i1
  br i1 %589, label %.preheader364.1, label %.loopexit.1

.preheader364.1:                                  ; preds = %587, %.preheader364.1
  %.1327404.1 = phi i64 [ %604, %.preheader364.1 ], [ 0, %587 ]
  %590 = load ptr, ptr %20, align 8, !tbaa !9
  %591 = getelementptr inbounds double, ptr %590, i64 %.1327404.1
  %592 = load double, ptr %591, align 8, !tbaa !10
  %593 = load ptr, ptr %302, align 8, !tbaa !9
  %594 = getelementptr inbounds double, ptr %593, i64 %.6405.1
  %595 = load double, ptr %594, align 8, !tbaa !10
  %596 = fsub double %573, %595
  %597 = fmul double %596, 2.000000e+00
  %598 = load ptr, ptr %301, align 8, !tbaa !9
  %599 = getelementptr inbounds ptr, ptr %598, i64 %.6405.1
  %600 = load ptr, ptr %599, align 8, !tbaa !40
  %601 = getelementptr inbounds double, ptr %600, i64 %.1327404.1
  %602 = load double, ptr %601, align 8, !tbaa !10
  %603 = call double @llvm.fmuladd.f64(double %597, double %602, double %592)
  store double %603, ptr %591, align 8, !tbaa !10
  %604 = add nuw nsw i64 %.1327404.1, 1
  %exitcond449.1.not = icmp eq i64 %604, %.0334416
  br i1 %exitcond449.1.not, label %.loopexit.1, label %.preheader364.1, !llvm.loop !49

.loopexit.1:                                      ; preds = %.preheader364.1, %587
  %605 = add nuw nsw i64 %.6405.1, 1
  %exitcond450.1.not = icmp eq i64 %605, %.0334416
  br i1 %exitcond450.1.not, label %.loopexit365.1, label %.loopexit367.1, !llvm.loop !50

.loopexit365.1:                                   ; preds = %.loopexit.1
  %606 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %606, label %.lr.ph407.1, label %._crit_edge408.1, !llvm.loop !45

._crit_edge408.1:                                 ; preds = %.loopexit365.1, %547
  call void @_ZN11alglib_impl15minlbfgsresultsEPNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef nonnull %7, ptr noundef nonnull %14, ptr noundef %1)
  %607 = load i64, ptr %21, align 8
  %608 = icmp slt i64 %607, 1
  %609 = select i1 %540, i1 true, i1 %608
  br label %610

610:                                              ; preds = %621, %._crit_edge408.1
  %.7410.1 = phi i64 [ 0, %._crit_edge408.1 ], [ %623, %621 ]
  %.3340.in409.1 = phi i1 [ %609, %._crit_edge408.1 ], [ %622, %621 ]
  br i1 %.3340.in409.1, label %621, label %611

611:                                              ; preds = %610
  %612 = load ptr, ptr %15, align 8, !tbaa !9
  %613 = getelementptr inbounds double, ptr %612, i64 %.7410.1
  %614 = load double, ptr %613, align 8, !tbaa !10
  %615 = load ptr, ptr %300, align 8, !tbaa !9
  %616 = getelementptr inbounds double, ptr %615, i64 %.7410.1
  %617 = load double, ptr %616, align 8, !tbaa !10
  %618 = fsub double %614, %617
  %619 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %618, ptr noundef %1)
  %620 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %619, double noundef 1.000000e-03)
  br label %621

621:                                              ; preds = %611, %610
  %622 = phi i1 [ true, %610 ], [ %620, %611 ]
  %623 = add nuw nsw i64 %.7410.1, 1
  %exitcond451.1.not = icmp eq i64 %623, %.0334416
  br i1 %exitcond451.1.not, label %624, label %610, !llvm.loop !51

624:                                              ; preds = %621
  %625 = add nuw nsw i64 %.0333414, 1
  %exitcond452.not = icmp eq i64 %625, %indvars.iv
  br i1 %exitcond452.not, label %626, label %.preheader369, !llvm.loop !53

626:                                              ; preds = %624
  %627 = add nuw nsw i64 %.0334416, 1
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond453.not = icmp eq i64 %indvars.iv.next, 12
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond453.not, label %.preheader, label %417, !llvm.loop !54

.preheader:                                       ; preds = %626, %702
  %.not = phi i1 [ false, %702 ], [ true, %626 ]
  %.0336433 = phi i1 [ %703, %702 ], [ false, %626 ]
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef 3, ptr noundef %1)
  %628 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %629 = call double @llvm.fmuladd.f64(double %628, double 6.000000e+00, double -3.000000e+00)
  %630 = load ptr, ptr %15, align 8, !tbaa !9
  store double %629, ptr %630, align 8, !tbaa !10
  %631 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %632 = call double @llvm.fmuladd.f64(double %631, double 6.000000e+00, double -3.000000e+00)
  %633 = load ptr, ptr %15, align 8, !tbaa !9
  %634 = getelementptr inbounds i8, ptr %633, i64 8
  store double %632, ptr %634, align 8, !tbaa !10
  %635 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %636 = call double @llvm.fmuladd.f64(double %635, double 6.000000e+00, double -3.000000e+00)
  %637 = load ptr, ptr %15, align 8, !tbaa !9
  %638 = getelementptr inbounds i8, ptr %637, i64 16
  store double %636, ptr %638, align 8, !tbaa !10
  br i1 %.not, label %.thread, label %639

.thread:                                          ; preds = %.preheader
  call void @_ZN11alglib_impl14minlbfgscreateEllPNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef 3, i64 noundef 2, ptr noundef nonnull %7, ptr noundef nonnull %13, ptr noundef %1)
  br label %640

639:                                              ; preds = %.preheader
  call void @_ZN11alglib_impl15minlbfgscreatefEllPNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef 3, i64 noundef 2, ptr noundef nonnull %7, double noundef 0x3EB0C6F7A0B5ED8D, ptr noundef nonnull %13, ptr noundef %1)
  br label %640

640:                                              ; preds = %.thread, %639
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef nonnull %13, double noundef 1.000000e-03, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %1)
  %641 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %641, label %.lr.ph419, label %._crit_edge420

.lr.ph419:                                        ; preds = %640, %.lr.ph419
  call void @_ZL26testminlbfgsunit_testfunc3PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  %642 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %642, label %.lr.ph419, label %._crit_edge420, !llvm.loop !55

._crit_edge420:                                   ; preds = %.lr.ph419, %640
  call void @_ZN11alglib_impl15minlbfgsresultsEPNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef nonnull %7, ptr noundef nonnull %14, ptr noundef %1)
  %643 = load i64, ptr %21, align 8
  %644 = icmp ne i64 %643, 4
  %645 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %646 = call double @llvm.fmuladd.f64(double %645, double 6.000000e+00, double -3.000000e+00)
  %647 = load ptr, ptr %15, align 8, !tbaa !9
  store double %646, ptr %647, align 8, !tbaa !10
  %648 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %649 = call double @llvm.fmuladd.f64(double %648, double 6.000000e+00, double -3.000000e+00)
  %650 = load ptr, ptr %15, align 8, !tbaa !9
  %651 = getelementptr inbounds i8, ptr %650, i64 8
  store double %649, ptr %651, align 8, !tbaa !10
  %652 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %653 = call double @llvm.fmuladd.f64(double %652, double 6.000000e+00, double -3.000000e+00)
  %654 = load ptr, ptr %15, align 8, !tbaa !9
  %655 = getelementptr inbounds i8, ptr %654, i64 16
  store double %653, ptr %655, align 8, !tbaa !10
  %656 = select i1 %.0336433, i1 true, i1 %644
  br i1 %.not, label %.thread479, label %657

.thread479:                                       ; preds = %._crit_edge420
  call void @_ZN11alglib_impl14minlbfgscreateEllPNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef 3, i64 noundef 2, ptr noundef nonnull %7, ptr noundef nonnull %13, ptr noundef %1)
  br label %658

657:                                              ; preds = %._crit_edge420
  call void @_ZN11alglib_impl15minlbfgscreatefEllPNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef 3, i64 noundef 2, ptr noundef nonnull %7, double noundef 0x3EB0C6F7A0B5ED8D, ptr noundef nonnull %13, ptr noundef %1)
  br label %658

658:                                              ; preds = %.thread479, %657
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef nonnull %13, double noundef 0.000000e+00, double noundef 1.000000e-03, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %1)
  %659 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %659, label %.lr.ph423, label %._crit_edge424

.lr.ph423:                                        ; preds = %658, %.lr.ph423
  call void @_ZL26testminlbfgsunit_testfunc3PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  %660 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %660, label %.lr.ph423, label %._crit_edge424, !llvm.loop !56

._crit_edge424:                                   ; preds = %.lr.ph423, %658
  call void @_ZN11alglib_impl15minlbfgsresultsEPNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef nonnull %7, ptr noundef nonnull %14, ptr noundef %1)
  %661 = load i64, ptr %21, align 8
  %662 = icmp ne i64 %661, 1
  %663 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %664 = call double @llvm.fmuladd.f64(double %663, double 6.000000e+00, double -3.000000e+00)
  %665 = load ptr, ptr %15, align 8, !tbaa !9
  store double %664, ptr %665, align 8, !tbaa !10
  %666 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %667 = call double @llvm.fmuladd.f64(double %666, double 6.000000e+00, double -3.000000e+00)
  %668 = load ptr, ptr %15, align 8, !tbaa !9
  %669 = getelementptr inbounds i8, ptr %668, i64 8
  store double %667, ptr %669, align 8, !tbaa !10
  %670 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %671 = call double @llvm.fmuladd.f64(double %670, double 6.000000e+00, double -3.000000e+00)
  %672 = load ptr, ptr %15, align 8, !tbaa !9
  %673 = getelementptr inbounds i8, ptr %672, i64 16
  store double %671, ptr %673, align 8, !tbaa !10
  %674 = select i1 %656, i1 true, i1 %662
  br i1 %.not, label %.thread480, label %675

.thread480:                                       ; preds = %._crit_edge424
  call void @_ZN11alglib_impl14minlbfgscreateEllPNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef 3, i64 noundef 2, ptr noundef nonnull %7, ptr noundef nonnull %13, ptr noundef %1)
  br label %676

675:                                              ; preds = %._crit_edge424
  call void @_ZN11alglib_impl15minlbfgscreatefEllPNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef 3, i64 noundef 2, ptr noundef nonnull %7, double noundef 0x3EB0C6F7A0B5ED8D, ptr noundef nonnull %13, ptr noundef %1)
  br label %676

676:                                              ; preds = %.thread480, %675
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef nonnull %13, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 1.000000e-03, i64 noundef 0, ptr noundef %1)
  %677 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %677, label %.lr.ph427, label %._crit_edge428

.lr.ph427:                                        ; preds = %676, %.lr.ph427
  call void @_ZL26testminlbfgsunit_testfunc3PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  %678 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %678, label %.lr.ph427, label %._crit_edge428, !llvm.loop !57

._crit_edge428:                                   ; preds = %.lr.ph427, %676
  call void @_ZN11alglib_impl15minlbfgsresultsEPNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef nonnull %7, ptr noundef nonnull %14, ptr noundef %1)
  %679 = load i64, ptr %21, align 8
  %680 = icmp ne i64 %679, 2
  %681 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %682 = call double @llvm.fmuladd.f64(double %681, double 2.000000e+00, double -1.000000e+00)
  %683 = load ptr, ptr %15, align 8, !tbaa !9
  store double %682, ptr %683, align 8, !tbaa !10
  %684 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %685 = call double @llvm.fmuladd.f64(double %684, double 2.000000e+00, double -1.000000e+00)
  %686 = load ptr, ptr %15, align 8, !tbaa !9
  %687 = getelementptr inbounds i8, ptr %686, i64 8
  store double %685, ptr %687, align 8, !tbaa !10
  %688 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %689 = call double @llvm.fmuladd.f64(double %688, double 2.000000e+00, double -1.000000e+00)
  %690 = load ptr, ptr %15, align 8, !tbaa !9
  %691 = getelementptr inbounds i8, ptr %690, i64 16
  store double %689, ptr %691, align 8, !tbaa !10
  %692 = select i1 %674, i1 true, i1 %680
  br i1 %.not, label %.thread481, label %693

.thread481:                                       ; preds = %._crit_edge428
  call void @_ZN11alglib_impl14minlbfgscreateEllPNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef 3, i64 noundef 2, ptr noundef nonnull %7, ptr noundef nonnull %13, ptr noundef %1)
  br label %694

693:                                              ; preds = %._crit_edge428
  call void @_ZN11alglib_impl15minlbfgscreatefEllPNS_9ae_vectorEdPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef 3, i64 noundef 2, ptr noundef nonnull %7, double noundef 0x3EB0C6F7A0B5ED8D, ptr noundef nonnull %13, ptr noundef %1)
  br label %694

694:                                              ; preds = %.thread481, %693
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef nonnull %13, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 10, ptr noundef %1)
  %695 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %695, label %.lr.ph431, label %._crit_edge432

.lr.ph431:                                        ; preds = %694, %.lr.ph431
  call void @_ZL26testminlbfgsunit_testfunc3PN11alglib_impl13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  %696 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %696, label %.lr.ph431, label %._crit_edge432, !llvm.loop !58

._crit_edge432:                                   ; preds = %.lr.ph431, %694
  call void @_ZN11alglib_impl15minlbfgsresultsEPNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef nonnull %7, ptr noundef nonnull %14, ptr noundef %1)
  %697 = load i64, ptr %21, align 8
  %698 = icmp ne i64 %697, 5
  %or.cond14 = select i1 %692, i1 true, i1 %698
  br i1 %or.cond14, label %702, label %699

699:                                              ; preds = %._crit_edge432
  %700 = load i64, ptr %14, align 8, !tbaa !59
  %701 = icmp ne i64 %700, 10
  br label %702

702:                                              ; preds = %699, %._crit_edge432
  %703 = phi i1 [ true, %._crit_edge432 ], [ %701, %699 ]
  br i1 %.not, label %.preheader, label %704, !llvm.loop !61

704:                                              ; preds = %702
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef 3, ptr noundef %1)
  %705 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %706 = call double @llvm.fmuladd.f64(double %705, double 6.000000e+00, double -3.000000e+00)
  %707 = load ptr, ptr %15, align 8, !tbaa !9
  store double %706, ptr %707, align 8, !tbaa !10
  %708 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %709 = call double @llvm.fmuladd.f64(double %708, double 6.000000e+00, double -3.000000e+00)
  %710 = load ptr, ptr %15, align 8, !tbaa !9
  %711 = getelementptr inbounds i8, ptr %710, i64 8
  store double %709, ptr %711, align 8, !tbaa !10
  %712 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %713 = call double @llvm.fmuladd.f64(double %712, double 6.000000e+00, double -3.000000e+00)
  %714 = load ptr, ptr %15, align 8, !tbaa !9
  %715 = getelementptr inbounds i8, ptr %714, i64 16
  store double %713, ptr %715, align 8, !tbaa !10
  call void @_ZN11alglib_impl14minlbfgscreateEllPNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef 3, i64 noundef 2, ptr noundef nonnull %7, ptr noundef nonnull %13, ptr noundef %1)
  call void @_ZN11alglib_impl15minlbfgssetcondEPNS_13minlbfgsstateEdddlPNS_8ae_stateE(ptr noundef nonnull %13, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 10000, ptr noundef %1)
  %716 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %716, label %.lr.ph437, label %._crit_edge438

.lr.ph437:                                        ; preds = %704, %.lr.ph437
  %717 = load ptr, ptr %18, align 8, !tbaa !9
  %718 = load double, ptr %717, align 8, !tbaa !10
  %719 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %718, ptr noundef %1)
  %720 = fadd double %719, -2.000000e+00
  %721 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %720, ptr noundef %1)
  %722 = load ptr, ptr %18, align 8, !tbaa !9
  %723 = getelementptr inbounds i8, ptr %722, i64 8
  %724 = load double, ptr %723, align 8, !tbaa !10
  %725 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %724, ptr noundef %1)
  %726 = fadd double %721, %725
  %727 = load ptr, ptr %18, align 8, !tbaa !9
  %728 = getelementptr inbounds i8, ptr %727, i64 16
  %729 = load double, ptr %728, align 8, !tbaa !10
  %730 = load double, ptr %727, align 8, !tbaa !10
  %731 = fsub double %729, %730
  %732 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %731, ptr noundef %1)
  %733 = fadd double %726, %732
  store double %733, ptr %19, align 8, !tbaa !31
  %734 = load ptr, ptr %18, align 8, !tbaa !9
  %735 = load double, ptr %734, align 8, !tbaa !10
  %736 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %735, ptr noundef %1)
  %737 = fadd double %736, -2.000000e+00
  %738 = fmul double %737, 2.000000e+00
  %739 = load ptr, ptr %18, align 8, !tbaa !9
  %740 = load double, ptr %739, align 8, !tbaa !10
  %741 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %740, ptr noundef %1)
  %742 = load ptr, ptr %18, align 8, !tbaa !9
  %743 = load double, ptr %742, align 8, !tbaa !10
  %744 = getelementptr inbounds i8, ptr %742, i64 16
  %745 = load double, ptr %744, align 8, !tbaa !10
  %746 = fsub double %743, %745
  %747 = fmul double %746, 2.000000e+00
  %748 = call double @llvm.fmuladd.f64(double %738, double %741, double %747)
  %749 = load ptr, ptr %20, align 8, !tbaa !9
  store double %748, ptr %749, align 8, !tbaa !10
  %750 = load ptr, ptr %18, align 8, !tbaa !9
  %751 = getelementptr inbounds i8, ptr %750, i64 8
  %752 = load double, ptr %751, align 8, !tbaa !10
  %753 = fmul double %752, 2.000000e+00
  %754 = load ptr, ptr %20, align 8, !tbaa !9
  %755 = getelementptr inbounds i8, ptr %754, i64 8
  store double %753, ptr %755, align 8, !tbaa !10
  %756 = load ptr, ptr %18, align 8, !tbaa !9
  %757 = getelementptr inbounds i8, ptr %756, i64 16
  %758 = load double, ptr %757, align 8, !tbaa !10
  %759 = load double, ptr %756, align 8, !tbaa !10
  %760 = fsub double %758, %759
  %761 = fmul double %760, 2.000000e+00
  %762 = load ptr, ptr %20, align 8, !tbaa !9
  %763 = getelementptr inbounds i8, ptr %762, i64 16
  store double %761, ptr %763, align 8, !tbaa !10
  %764 = call noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %764, label %.lr.ph437, label %._crit_edge438, !llvm.loop !62

._crit_edge438:                                   ; preds = %.lr.ph437, %704
  call void @_ZN11alglib_impl15minlbfgsresultsEPNS_13minlbfgsstateEPNS_9ae_vectorEPNS_14minlbfgsreportEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef nonnull %7, ptr noundef nonnull %14, ptr noundef %1)
  %765 = load i64, ptr %21, align 8
  %766 = icmp slt i64 %765, 1
  store i8 0, ptr %6, align 1, !tbaa !5
  call void @_ZL29testminlbfgsunit_testoptguardPbPN11alglib_impl8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  br i1 %192, label %779, label %767

767:                                              ; preds = %._crit_edge438
  %768 = trunc nuw i8 %.1342.lcssa.1 to i1
  %769 = or i1 %622, %768
  %770 = select i1 %769, i1 true, i1 %703
  %or.cond354 = select i1 %770, i1 true, i1 %766
  %771 = load i8, ptr %4, align 1, !range !28
  %772 = trunc nuw i8 %771 to i1
  %brmerge353 = or i1 %416, %772
  %or.cond356 = select i1 %or.cond354, i1 true, i1 %brmerge353
  br i1 %or.cond356, label %779, label %773

773:                                              ; preds = %767
  %774 = load i8, ptr %5, align 1, !tbaa !5, !range !28, !noundef !29
  %775 = trunc nuw i8 %774 to i1
  br i1 %775, label %779, label %776

776:                                              ; preds = %773
  %777 = load i8, ptr %6, align 1, !tbaa !5, !range !28, !noundef !29
  %778 = trunc nuw i8 %777 to i1
  br label %779

779:                                              ; preds = %776, %773, %767, %._crit_edge438
  %780 = phi i1 [ true, %773 ], [ true, %767 ], [ true, %._crit_edge438 ], [ %778, %776 ]
  br i1 %0, label %810, label %781

781:                                              ; preds = %779
  %782 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.334)
  %783 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.335)
  %.str.7..str.6 = select i1 %192, ptr @.str.7, ptr @.str.6
  %784 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.7..str.6)
  %785 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.336)
  %786 = trunc nuw i8 %.1342.lcssa.1 to i1
  %.str.6.sink487 = select i1 %786, ptr @.str.7, ptr @.str.6
  %787 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink487)
  %788 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.337)
  %.str.6.sink488 = select i1 %622, ptr @.str.7, ptr @.str.6
  %789 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink488)
  %790 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.338)
  %.str.6.sink489 = select i1 %416, ptr @.str.7, ptr @.str.6
  %791 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink489)
  %792 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.339)
  %793 = load i8, ptr %5, align 1, !tbaa !5, !range !28, !noundef !29
  %794 = trunc nuw i8 %793 to i1
  %.str.6.sink490 = select i1 %794, ptr @.str.7, ptr @.str.6
  %795 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink490)
  %796 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.340)
  %.str.6.sink491 = select i1 %703, ptr @.str.7, ptr @.str.6
  %797 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink491)
  %798 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.341)
  %.str.6.sink492 = select i1 %766, ptr @.str.7, ptr @.str.6
  %799 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink492)
  %800 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.342)
  %801 = load i8, ptr %4, align 1, !tbaa !5, !range !28, !noundef !29
  %802 = trunc nuw i8 %801 to i1
  %.str.6.sink493 = select i1 %802, ptr @.str.7, ptr @.str.6
  %803 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink493)
  %804 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.343)
  %805 = load i8, ptr %6, align 1, !tbaa !5, !range !28, !noundef !29
  %806 = trunc nuw i8 %805 to i1
  %.str.6.sink494 = select i1 %806, ptr @.str.7, ptr @.str.6
  %807 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink494)
  %.str.2.sink = select i1 %780, ptr @.str.1, ptr @.str.2
  %808 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.2.sink)
  %809 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3)
  br label %810

810:                                              ; preds = %781, %779
  %811 = xor i1 %780, true
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 6872, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 80, 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 64, 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 %811
}

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

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

; 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_impl14minlbfgscreateEllPNS_9ae_vectorEPNS_13minlbfgsstateEPNS_8ae_stateE(i64 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

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

; 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 = { "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 nounwind willreturn memory(argmem: write) }
attributes #3 = { 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 #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 2336}
!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, !15, i64 600, !11, i64 664, !11, i64 672, !15, i64 680, !14, i64 744, !11, i64 752, !18, i64 760, !15, i64 840, !15, i64 904, !15, i64 968, !18, i64 1032, !14, i64 1112, !19, i64 1120, !20, i64 1584, !11, i64 2032, !11, i64 2040, !11, i64 2048, !11, i64 2056, !11, i64 2064, !15, i64 2072, !15, i64 2136, !15, i64 2200, !11, i64 2264, !15, i64 2272, !6, i64 2336, !6, i64 2337, !6, i64 2338, !6, i64 2339, !11, i64 2344, !21, i64 2352, !14, i64 2616, !14, i64 2624, !14, i64 2632, !23, i64 2640, !14, i64 2832, !24, i64 2840, !15, i64 6808}
!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_impl10rcommstateE", !22, i64 0, !15, i64 8, !15, i64 72, !15, i64 136, !15, i64 200}
!22 = !{!"int", !7, i64 0}
!23 = !{!"_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}
!24 = !{!"_ZTSN11alglib_impl17smoothnessmonitorE", !14, i64 0, !14, i64 8, !6, i64 16, !15, i64 24, !14, i64 88, !15, i64 96, !15, i64 160, !15, i64 224, !18, i64 288, !15, i64 368, !15, i64 432, !14, i64 496, !6, i64 504, !6, i64 505, !11, i64 512, !11, i64 520, !6, i64 528, !25, i64 536, !11, i64 832, !11, i64 840, !26, i64 848, !26, i64 1152, !11, i64 1456, !11, i64 1464, !27, i64 1472, !27, i64 1784, !6, i64 2096, !15, i64 2104, !15, i64 2168, !18, i64 2232, !21, i64 2312, !15, i64 2576, !15, i64 2640, !15, i64 2704, !15, i64 2768, !15, i64 2832, !15, i64 2896, !15, i64 2960, !15, i64 3024, !18, i64 3088, !18, i64 3168, !15, i64 3248, !15, i64 3312, !15, i64 3376, !15, i64 3440, !15, i64 3504, !15, i64 3568, !15, i64 3632, !15, i64 3696, !15, i64 3760, !15, i64 3824, !18, i64 3888}
!25 = !{!"_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}
!26 = !{!"_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}
!27 = !{!"_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}
!28 = !{i8 0, i8 2}
!29 = !{}
!30 = !{!13, !6, i64 2337}
!31 = !{!13, !11, i64 2264}
!32 = distinct !{!32, !33}
!33 = !{!"llvm.loop.mustprogress"}
!34 = distinct !{!34, !33}
!35 = distinct !{!35, !33}
!36 = distinct !{!36, !33}
!37 = distinct !{!37, !33}
!38 = distinct !{!38, !33}
!39 = distinct !{!39, !33}
!40 = !{!17, !17, i64 0}
!41 = distinct !{!41, !33}
!42 = distinct !{!42, !33}
!43 = distinct !{!43, !33}
!44 = distinct !{!44, !33}
!45 = distinct !{!45, !33}
!46 = distinct !{!46, !33}
!47 = distinct !{!47, !48}
!48 = !{!"llvm.loop.unroll.disable"}
!49 = distinct !{!49, !33}
!50 = distinct !{!50, !33}
!51 = distinct !{!51, !33}
!52 = distinct !{!52, !48}
!53 = distinct !{!53, !33}
!54 = distinct !{!54, !33}
!55 = distinct !{!55, !33}
!56 = distinct !{!56, !33}
!57 = distinct !{!57, !33}
!58 = distinct !{!58, !33}
!59 = !{!60, !14, i64 0}
!60 = !{!"_ZTSN11alglib_impl14minlbfgsreportE", !14, i64 0, !14, i64 8, !14, i64 16}
!61 = distinct !{!61, !33}
!62 = distinct !{!62, !33}


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