// File: lemire[P]runningmaxmin/runningmaxmin.cpp
// Function: timings(unsigned int, unsigned int, unsigned int, bool)
void timings(uint width = 50, uint size = 10000, uint times = 500,
             bool doslow = true) {
    std::vector<double> timings;
    for (uint i = 0; i < times; ++i) {
        std::vector<floattype> data = getwhite(size);
        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:
subq $0x108, %rsp            # imm = 0x108
movb %cl, %al
movl %edi, 0x104(%rsp)
movl %esi, 0x100(%rsp)
movl %edx, 0xfc(%rsp)
andb $0x1, %al
movb %al, 0xfb(%rsp)
leaq 0xe0(%rsp), %rdi
callq 0x4ee0
movl $0x0, 0xdc(%rsp)
movl 0xdc(%rsp), %eax
cmpl 0xfc(%rsp), %eax
jae 0x3081
movl 0x100(%rsp), %esi
leaq 0xc0(%rsp), %rdi
callq 0x2380
jmp 0x2ff9
movl 0x104(%rsp), %edx
movzbl 0xfb(%rsp), %ecx
andl $0x1, %ecx
leaq 0xc0(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
callq 0x2720
jmp 0x3022
leaq 0xc0(%rsp), %rdi
callq 0x4e80
movl 0xdc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xdc(%rsp)
jmp 0x2fcf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xb8(%rsp)
movl %eax, 0xb4(%rsp)
jmp 0x338e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xb8(%rsp)
movl %eax, 0xb4(%rsp)
leaq 0xc0(%rsp), %rdi
callq 0x4e80
jmp 0x338e
movl $0xf, %edi
callq 0x9030
movl %eax, 0x88(%rsp)
jmp 0x3094
movl 0x88(%rsp), %eax
movl %eax, 0xb0(%rsp)
movl 0xb0(%rsp), %esi
movq 0x12f18(%rip), %rdi     # 0x15fc8
callq 0x2140
movq %rax, 0x80(%rsp)
jmp 0x30bf
movq 0x80(%rsp), %rdi
leaq 0xe014(%rip), %rsi      # 0x110e2
callq 0x2110
jmp 0x30d5
movl $0xf, %edi
callq 0x9030
movl %eax, 0x7c(%rsp)
jmp 0x30e5
movl 0x7c(%rsp), %eax
movl %eax, 0xac(%rsp)
movl 0xac(%rsp), %esi
movq 0x12eca(%rip), %rdi     # 0x15fc8
callq 0x2140
movq %rax, 0x70(%rsp)
jmp 0x310a
movq 0x70(%rsp), %rdi
leaq 0xdf6c(%rip), %rsi      # 0x11082
callq 0x2110
jmp 0x311d
movl $0xf, %edi
callq 0x9030
movl %eax, 0x6c(%rsp)
jmp 0x312d
movl 0x6c(%rsp), %eax
movl %eax, 0xa8(%rsp)
movl 0xa8(%rsp), %esi
movq 0x12e82(%rip), %rdi     # 0x15fc8
callq 0x2140
movq %rax, 0x60(%rsp)
jmp 0x3152
movq 0x60(%rsp), %rdi
leaq 0xdf39(%rip), %rsi      # 0x11097
callq 0x2110
jmp 0x3165
movl $0xf, %edi
callq 0x9030
movl %eax, 0x5c(%rsp)
jmp 0x3175
movl 0x5c(%rsp), %eax
movl %eax, 0xa4(%rsp)
movl 0xa4(%rsp), %esi
movq 0x12e3a(%rip), %rdi     # 0x15fc8
callq 0x2140
movq %rax, 0x50(%rsp)
jmp 0x319a
movq 0x50(%rsp), %rdi
leaq 0xdecf(%rip), %rsi      # 0x11075
callq 0x2110
jmp 0x31ad
movl $0xf, %edi
callq 0x9030
movl %eax, 0x4c(%rsp)
jmp 0x31bd
movl 0x4c(%rsp), %eax
movl %eax, 0xa0(%rsp)
movl 0xa0(%rsp), %esi
movq 0x12df2(%rip), %rdi     # 0x15fc8
callq 0x2140
movq %rax, 0x40(%rsp)
jmp 0x31e2
movq 0x40(%rsp), %rdi
leaq 0xde9c(%rip), %rsi      # 0x1108a
callq 0x2110
jmp 0x31f5
movl $0xf, %edi
callq 0x9030
movl %eax, 0x3c(%rsp)
jmp 0x3205
movl 0x3c(%rsp), %eax
movl %eax, 0x9c(%rsp)
movl 0x9c(%rsp), %esi
movq 0x12daa(%rip), %rdi     # 0x15fc8
callq 0x2140
movq %rax, 0x30(%rsp)
jmp 0x322a
movq 0x30(%rsp), %rdi
leaq 0xde5b(%rip), %rsi      # 0x11091
callq 0x2110
jmp 0x323d
movl $0xf, %edi
callq 0x9030
movl %eax, 0x2c(%rsp)
jmp 0x324d
movl 0x2c(%rsp), %eax
movl %eax, 0x98(%rsp)
movl 0x98(%rsp), %esi
movq 0x12d62(%rip), %rdi     # 0x15fc8
callq 0x2140
movq %rax, 0x20(%rsp)
jmp 0x3272
movq 0x20(%rsp), %rdi
leaq 0xde20(%rip), %rsi      # 0x1109e
callq 0x2110
jmp 0x3285
movl $0xf, %edi
callq 0x9030
movl %eax, 0x1c(%rsp)
jmp 0x3295
movl 0x1c(%rsp), %eax
movl %eax, 0x94(%rsp)
movl 0x94(%rsp), %esi
movq 0x12d1a(%rip), %rdi     # 0x15fc8
callq 0x2140
movq %rax, 0x10(%rsp)
jmp 0x32ba
movq 0x10(%rsp), %rdi
leaq 0xdde0(%rip), %rsi      # 0x110a6
callq 0x2110
jmp 0x32cd
movq 0x12cf4(%rip), %rdi     # 0x15fc8
movq 0x12cdd(%rip), %rsi     # 0x15fb8
callq 0x2130
jmp 0x32e2
movl $0x0, 0x90(%rsp)
cmpl $0x7, 0x90(%rsp)
jg 0x3364
movl $0xf, %edi
callq 0x9030
movl %eax, 0xc(%rsp)
jmp 0x3307
movl 0xc(%rsp), %eax
movl %eax, 0x8c(%rsp)
movl 0x8c(%rsp), %esi
movq 0x12ca8(%rip), %rdi     # 0x15fc8
callq 0x2140
movq %rax, (%rsp)
jmp 0x332b
movslq 0x90(%rsp), %rsi
leaq 0xe0(%rsp), %rdi
callq 0x4e60
movq (%rsp), %rdi
vmovsd (%rax), %xmm0
callq 0x2230
jmp 0x334f
jmp 0x3351
movl 0x90(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x90(%rsp)
jmp 0x32ed
movq 0x12c5d(%rip), %rdi     # 0x15fc8
movq 0x12c46(%rip), %rsi     # 0x15fb8
callq 0x2130
jmp 0x3379
leaq 0xe0(%rsp), %rdi
callq 0x4e80
addq $0x108, %rsp            # imm = 0x108
retq
leaq 0xe0(%rsp), %rdi
callq 0x4e80
movq 0xb8(%rsp), %rdi
callq 0x2210
nopl (%rax,%rax)