// File: /workspace/github_cpp_makefile_star2_O2/chuckwolber[P]Cube/order/cli.cpp
// Function: doAlgReduce(unsigned long long, bool (Algorithm::*)())
void doAlgReduce(unsigned long long int algs, bool (Algorithm::*algEval)()) {
    auto start = std::chrono::steady_clock::now();
    Algorithms a(numThreads, algs, algEval);
    AlgorithmList* al = a.getReduction();
    auto end = std::chrono::steady_clock::now();
    auto elapsed = std::chrono::duration<double, std::milli>(end - start).count();
    std::cout << std::setw(COLUMN_WIDTH) << std::left << std::setprecision(5) << std::fixed << elapsed
         << std::setw(COLUMN_WIDTH) << std::left << algs
         << std::setw(COLUMN_WIDTH) << std::left << al->size()
         << std::setw(COLUMN_WIDTH) << std::left << (algs - al->size())
         << std::setw(COLUMN_WIDTH) << std::left << std::setprecision(10) << std::fixed << ((double)elapsed / (long double)algs)
         << std::endl;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movq %rdx, %r14
movq %rsi, %r12
movq %rdi, %rbx
callq 0x4390
movq %rax, %r15
movl 0xa4e9(%rip), %esi      # 0x12658
leaq 0x30(%rsp), %r13
movq %r13, %rdi
movq %rbx, %rdx
movq %r12, %rcx
movq %r14, %r8
callq 0x88ae
movq %r13, %rdi
callq 0x88da
movq %rax, %r14
callq 0x4390
subq %r15, %rax
cvtsi2sd %rax, %xmm0
divsd 0x3133(%rip), %xmm0     # 0xb2d8
movq 0x9e04(%rip), %rdi      # 0x11fb0
movq (%rdi), %rax
movq -0x18(%rax), %rcx
movq $0x14, 0x10(%rdi,%rcx)
movq -0x18(%rax), %rcx
movl $0xffffff4f, %ebp       # imm = 0xFFFFFF4F
movl 0x18(%rdi,%rcx), %edx
andl %ebp, %edx
orl $0x20, %edx
movl %edx, 0x18(%rdi,%rcx)
movq -0x18(%rax), %rcx
movq $0x5, 0x8(%rdi,%rcx)
movq -0x18(%rax), %rax
movl $0xfffffefb, %ecx       # imm = 0xFFFFFEFB
andl 0x18(%rdi,%rax), %ecx
orl $0x4, %ecx
movl %ecx, 0x18(%rdi,%rax)
movsd %xmm0, 0x18(%rsp)
callq 0x4420
movq (%rax), %rcx
movq -0x18(%rcx), %rdx
movq $0x14, 0x10(%rax,%rdx)
movq -0x18(%rcx), %rcx
andl 0x18(%rax,%rcx), %ebp
orl $0x20, %ebp
movl %ebp, 0x18(%rax,%rcx)
movq %rax, %rdi
movq %rbx, %rsi
callq 0x41c0
movq (%rax), %rcx
movq -0x18(%rcx), %rdx
movq $0x14, 0x10(%rax,%rdx)
movq -0x18(%rcx), %rcx
movl $0xffffff4f, %ebp       # imm = 0xFFFFFF4F
movl 0x18(%rax,%rcx), %edx
andl %ebp, %edx
orl $0x20, %edx
movl %edx, 0x18(%rax,%rcx)
movq 0x8(%r14), %rsi
subq (%r14), %rsi
sarq $0x3, %rsi
movq %rax, %rdi
callq 0x41d0
movq (%rax), %rcx
movq -0x18(%rcx), %rdx
movq $0x14, 0x10(%rax,%rdx)
movq -0x18(%rcx), %rcx
andl 0x18(%rax,%rcx), %ebp
orl $0x20, %ebp
movl %ebp, 0x18(%rax,%rcx)
movq 0x8(%r14), %rcx
subq (%r14), %rcx
sarq $0x3, %rcx
movq %rbx, %rsi
subq %rcx, %rsi
movq %rax, %rdi
callq 0x41c0
movq (%rax), %rcx
movq -0x18(%rcx), %rdx
movq $0x14, 0x10(%rax,%rdx)
movq -0x18(%rcx), %rdx
movl $0xffffff4f, %esi       # imm = 0xFFFFFF4F
andl 0x18(%rax,%rdx), %esi
orl $0x20, %esi
movl %esi, 0x18(%rax,%rdx)
movq -0x18(%rcx), %rdx
movq $0xa, 0x8(%rax,%rdx)
movq -0x18(%rcx), %rcx
movl $0xfffffefb, %edx       # imm = 0xFFFFFEFB
andl 0x18(%rax,%rcx), %edx
orl $0x4, %edx
movl %edx, 0x18(%rax,%rcx)
movsd 0x18(%rsp), %xmm0
movsd %xmm0, 0x20(%rsp)
movq %rbx, 0x28(%rsp)
xorl %ecx, %ecx
testq %rbx, %rbx
sets %cl
fildll 0x28(%rsp)
leaq 0x2fe6(%rip), %rdx      # 0xb2e8
fadds (%rdx,%rcx,4)
fdivrl 0x20(%rsp)
fstpt (%rsp)
movq %rax, %rdi
callq 0x4150
movq %rax, %rdi
callq 0x4120
leaq 0x30(%rsp), %rdi
callq 0x890e
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x8337
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x890e
movq %rbx, %rdi
callq 0x4490