// File: /workspace/github_cpp_makefile_star2_O2/lemire[P]runningmaxmin/runningmaxmin.cpp
// Function: sinetimings(unsigned int, unsigned int, double, unsigned int, bool)
void sinetimings(uint width = 50, uint size = 10000, floattype period = 500.0,
                 uint times = 500, bool doslow = true) {
    std::vector<double> timings;
    for (uint i = 0; i < times; ++i) {
        std::vector<floattype> data(size);
        for (uint j = 0; j < size; ++j)
            data[j] = sin(2 * M_PI * j / period);
        compareallalgos(data, timings, width, doslow);
    }
    std::cout << std::setw(15) << "slow";
    std::cout << std::setw(15) << "vanHerk";
    std::cout << std::setw(15) << "lemire";
    std::cout << std::setw(15) << "gilkimmel";
    std::cout << std::setw(15) << "bitmap";
    std::cout << std::setw(15) << "simplelemire";
    std::cout << std::setw(15) << "lemirew";
    std::cout << std::setw(15) << "monowedge";
    std::cout << std::endl;
    for (int i = 0; i <= 7; ++i) {
        std::cout << std::setw(15) << timings[i];
    }
    std::cout << std::endl;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movl %edx, %ebx
vmovsd %xmm0, 0x8(%rsp)
movl %edi, 0x4(%rsp)
leaq 0x10(%rsp), %rax
andq $0x0, 0x10(%rax)
vxorpd %xmm0, %xmm0, %xmm0
vmovapd %xmm0, (%rax)
movl %esi, %r15d
xorl %r13d, %r13d
leaq 0x30(%rsp), %r12
movzbl %cl, %r14d
cmpl %ebx, %r13d
je 0x2d35
movq %r12, %rdi
movq %r15, %rsi
leaq 0x3(%rsp), %rdx
callq 0x36e6
xorl %ebp, %ebp
cmpq %rbp, %r15
je 0x2d14
movl %ebp, %eax
vcvtsi2sd %rax, %xmm1, %xmm0
vmulsd 0x4326(%rip), %xmm0, %xmm0 # 0x7020
vdivsd 0x8(%rsp), %xmm0, %xmm0
callq 0x2030
movq 0x30(%rsp), %rax
vmovsd %xmm0, (%rax,%rbp,8)
incq %rbp
jmp 0x2ce6
movq %r12, %rdi
leaq 0x10(%rsp), %rsi
movl 0x4(%rsp), %edx
movl %r14d, %ecx
callq 0x24b8
movq %r12, %rdi
callq 0x6b18
incl %r13d
jmp 0x2ccf
movq 0x828c(%rip), %rbx      # 0xafc8
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq $0xf, 0x10(%rbx,%rax)
leaq 0x4387(%rip), %rsi      # 0x70da
movq %rbx, %rdi
callq 0x2100
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq $0xf, 0x10(%rbx,%rax)
leaq 0x4308(%rip), %rsi      # 0x707a
movq %rbx, %rdi
callq 0x2100
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq $0xf, 0x10(%rbx,%rax)
leaq 0x42fe(%rip), %rsi      # 0x708f
movq %rbx, %rdi
callq 0x2100
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq $0xf, 0x10(%rbx,%rax)
leaq 0x42bd(%rip), %rsi      # 0x706d
movq %rbx, %rdi
callq 0x2100
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq $0xf, 0x10(%rbx,%rax)
leaq 0x42b3(%rip), %rsi      # 0x7082
movq %rbx, %rdi
callq 0x2100
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq $0xf, 0x10(%rbx,%rax)
leaq 0x429b(%rip), %rsi      # 0x7089
movq %rbx, %rdi
callq 0x2100
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq $0xf, 0x10(%rbx,%rax)
leaq 0x4289(%rip), %rsi      # 0x7096
movq %rbx, %rdi
callq 0x2100
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq $0xf, 0x10(%rbx,%rax)
leaq 0x4272(%rip), %rsi      # 0x709e
movq %rbx, %rdi
callq 0x2100
movq 0x818d(%rip), %rbx      # 0xafc8
movq %rbx, %rdi
callq 0x2080
xorl %r14d, %r14d
cmpq $0x8, %r14
je 0x2e74
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq $0xf, 0x10(%rbx,%rax)
movq 0x10(%rsp), %rax
vmovsd (%rax,%r14,8), %xmm0
movq %rbx, %rdi
callq 0x2190
incq %r14
jmp 0x2e46
movq 0x814d(%rip), %rdi      # 0xafc8
callq 0x2080
leaq 0x10(%rsp), %rdi
callq 0x6b18
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x2e9d
jmp 0x2e9d
movq %rax, %rbx
jmp 0x2eaf
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x6b18
leaq 0x10(%rsp), %rdi
callq 0x6b18
movq %rbx, %rdi
callq 0x21e0