// File: /workspace/github_cpp_makefile_star2_O3/lemire[P]runningmaxmin/runningmaxmin.cpp
// Function: timingsline(std::vector<double, std::allocator<double>>, unsigned int, bool)
void timingsline(std::vector<floattype> data, uint width = 30,
                 bool doslow = false) {
    std::cout << " width = " << width << std::endl;
    clock_t start, finish;
    start = clock();
    if (doslow)
        for (uint i = 0; i < 30; ++i)
            slowmaxmin A(data, width);
    finish = clock();
    std::cout << "slow = "
              << static_cast<double>(finish - start) / CLOCKS_PER_SEC
              << std::endl;
    start = clock();
    for (uint i = 0; i < 30; ++i)
        vanHerkGilWermanmaxmin B(data, width);
    finish = clock();
    std::cout << "vanHerk = "
              << static_cast<double>(finish - start) / CLOCKS_PER_SEC
              << std::endl;
    start = clock();
    for (uint i = 0; i < 30; ++i)
        lemiremaxmin C(data, width);
    finish = clock();
    std::cout << "lemire = "
              << static_cast<double>(finish - start) / CLOCKS_PER_SEC
              << std::endl;
    std::cout << "------------" << std::endl;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movl %edx, %ebp
movl %esi, %ebx
movq %rdi, %r14
movq 0x9ccb(%rip), %r15      # 0xcfc8
leaq 0x5df4(%rip), %rsi      # 0x90f8
movl $0x9, %edx
movq %r15, %rdi
callq 0x2150
movl %ebx, %esi
movq %r15, %rdi
callq 0x20e0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2130
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20f0
callq 0x20d0
movq %rax, %r15
testl %ebp, %ebp
je 0x339a
movl $0x1e, %ebp
leaq 0x10(%rsp), %r12
leaq 0x97f6(%rip), %r13      # 0xcb58
addq $0x10, %r13
movq %r12, %rdi
movq %r14, %rsi
movl %ebx, %edx
callq 0x3fba
movq %r13, 0x10(%rsp)
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x3387
callq 0x2120
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x3396
callq 0x2120
decl %ebp
jne 0x3366
callq 0x20d0
movq %rax, %r12
movq 0x9c1f(%rip), %r13      # 0xcfc8
leaq 0x5f3a(%rip), %rsi      # 0x92ea
movl $0x7, %edx
movq %r13, %rdi
callq 0x2150
subq %r15, %r12
vcvtsi2sd %r12, %xmm0, %xmm0
vdivsd 0x5c4b(%rip), %xmm0, %xmm0 # 0x9018
movq %r13, %rdi
callq 0x21d0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2130
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20f0
movl $0x1e, %ebp
callq 0x20d0
movq %rax, %r12
leaq 0x10(%rsp), %r15
leaq 0x9798(%rip), %r13      # 0xcbb0
addq $0x10, %r13
movq %r15, %rdi
movq %r14, %rsi
movl %ebx, %edx
callq 0x4100
movq %r13, 0x10(%rsp)
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x343d
callq 0x2120
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x344c
callq 0x2120
decl %ebp
jne 0x341c
callq 0x20d0
movq %rax, %r13
movq 0x9b69(%rip), %r15      # 0xcfc8
leaq 0x5c9c(%rip), %rsi      # 0x9102
movl $0xa, %edx
movq %r15, %rdi
callq 0x2150
subq %r12, %r13
vcvtsi2sd %r13, %xmm1, %xmm0
vdivsd 0x5b95(%rip), %xmm0, %xmm0 # 0x9018
movq %r15, %rdi
callq 0x21d0
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x2130
movsbl %al, %esi
movq %r12, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20f0
movl $0x1e, %ebp
callq 0x20d0
movq %rax, 0x8(%rsp)
leaq 0x10(%rsp), %r13
leaq 0x9728(%rip), %r12      # 0xcbf8
addq $0x10, %r12
movq %r13, %rdi
movq %r14, %rsi
movl %ebx, %edx
callq 0x4504
movq %r12, 0x10(%rsp)
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x34f5
callq 0x2120
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x3504
callq 0x2120
decl %ebp
jne 0x34d4
callq 0x20d0
movq %rax, %rbx
leaq 0x5bf6(%rip), %rsi      # 0x910d
movl $0x9, %edx
movq %r15, %rdi
callq 0x2150
subq 0x8(%rsp), %rbx
vcvtsi2sd %rbx, %xmm1, %xmm0
vdivsd 0x5ae2(%rip), %xmm0, %xmm0 # 0x9018
movq %r15, %rdi
callq 0x21d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2130
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20f0
leaq 0x5ba8(%rip), %rsi      # 0x9117
movl $0xc, %edx
movq %r15, %rdi
callq 0x2150
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2130
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20f0
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq