// File: lemire[P]runningmaxmin/./runningmaxmin.h
// Function: slowmaxmin::slowmaxmin(std::vector<double, std::allocator<double>>&, int)
slowmaxmin(std::vector<floattype> & array, int width)
        : maxvalues(array.size() - width + 1),
          minvalues(array.size() - width + 1) {
        floattype maxvalue, minvalue;
        for (uint s = 0; s < array.size() - width + 1; ++s) {
            maxvalue = array[s];
            minvalue = array[s];
            // could be done with iterators
            for (uint k = s + 1; k < s + width; ++k) {
                if (maxvalue < array[k])
                    maxvalue = array[k];
                if (minvalue > array[k])
                    minvalue = array[k];
            }
            maxvalues[s] = maxvalue;
            minvalues[s] = minvalue;
        }
    }

// Assembly:
subq $0xa8, %rsp
movq %rdi, 0xa0(%rsp)
movq %rsi, 0x98(%rsp)
movl %edx, 0x94(%rsp)
movq 0xa0(%rsp), %rdi
movq %rdi, 0x48(%rsp)
callq 0x77c0
movq 0x48(%rsp), %rax
leaq 0x10604(%rip), %rcx     # 0x13b30
addq $0x10, %rcx
movq %rcx, (%rax)
addq $0x8, %rax
movq %rax, 0x50(%rsp)
movq 0x98(%rsp), %rdi
callq 0x3410
movslq 0x94(%rsp), %rcx
subq %rcx, %rax
incq %rax
movq %rax, 0x58(%rsp)
leaq 0x93(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0x74c0
movq 0x50(%rsp), %rdi
movq 0x58(%rsp), %rsi
movq 0x60(%rsp), %rdx
callq 0x74d0
jmp 0x3584
leaq 0x93(%rsp), %rdi
callq 0x7550
movq 0x48(%rsp), %rax
addq $0x20, %rax
movq %rax, 0x30(%rsp)
movq 0x98(%rsp), %rdi
callq 0x3410
movslq 0x94(%rsp), %rcx
subq %rcx, %rax
incq %rax
movq %rax, 0x38(%rsp)
leaq 0x83(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0x74c0
movq 0x30(%rsp), %rdi
movq 0x38(%rsp), %rsi
movq 0x40(%rsp), %rdx
callq 0x74d0
jmp 0x35e7
leaq 0x83(%rsp), %rdi
callq 0x7550
movl $0x0, 0x6c(%rsp)
movl 0x6c(%rsp), %eax
movq %rax, 0x28(%rsp)
movq 0x98(%rsp), %rdi
callq 0x3410
movq %rax, %rcx
movq 0x28(%rsp), %rax
movslq 0x94(%rsp), %rdx
subq %rdx, %rcx
addq $0x1, %rcx
cmpq %rcx, %rax
jae 0x37f0
movq 0x98(%rsp), %rdi
movl 0x6c(%rsp), %eax
movl %eax, %esi
callq 0x3430
vmovsd (%rax), %xmm0
vmovsd %xmm0, 0x78(%rsp)
movq 0x98(%rsp), %rdi
movl 0x6c(%rsp), %eax
movl %eax, %esi
callq 0x3430
vmovsd (%rax), %xmm0
vmovsd %xmm0, 0x70(%rsp)
movl 0x6c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x68(%rsp)
movl 0x68(%rsp), %eax
movl 0x6c(%rsp), %ecx
addl 0x94(%rsp), %ecx
cmpl %ecx, %eax
jae 0x378c
vmovsd 0x78(%rsp), %xmm0
vmovsd %xmm0, 0x20(%rsp)
movq 0x98(%rsp), %rdi
movl 0x68(%rsp), %eax
movl %eax, %esi
callq 0x3430
vmovsd 0x20(%rsp), %xmm1
vmovsd (%rax), %xmm0
vucomisd %xmm1, %xmm0
jbe 0x3732
movq 0x98(%rsp), %rdi
movl 0x68(%rsp), %eax
movl %eax, %esi
callq 0x3430
vmovsd (%rax), %xmm0
vmovsd %xmm0, 0x78(%rsp)
jmp 0x3732
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
leaq 0x93(%rsp), %rdi
callq 0x7550
jmp 0x37f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
leaq 0x83(%rsp), %rdi
callq 0x7550
movq 0x50(%rsp), %rdi
callq 0x7660
jmp 0x37f8
vmovsd 0x70(%rsp), %xmm0
vmovsd %xmm0, 0x18(%rsp)
movq 0x98(%rsp), %rdi
movl 0x68(%rsp), %eax
movl %eax, %esi
callq 0x3430
vmovsd 0x18(%rsp), %xmm0
vucomisd (%rax), %xmm0
jbe 0x377a
movq 0x98(%rsp), %rdi
movl 0x68(%rsp), %eax
movl %eax, %esi
callq 0x3430
vmovsd (%rax), %xmm0
vmovsd %xmm0, 0x70(%rsp)
jmp 0x377c
movl 0x68(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x68(%rsp)
jmp 0x3677
movq 0x48(%rsp), %rdi
vmovsd 0x78(%rsp), %xmm0
vmovsd %xmm0, 0x8(%rsp)
addq $0x8, %rdi
movl 0x6c(%rsp), %eax
movl %eax, %esi
callq 0x3430
vmovsd 0x8(%rsp), %xmm0
movq 0x48(%rsp), %rdi
vmovsd %xmm0, (%rax)
vmovsd 0x70(%rsp), %xmm0
vmovsd %xmm0, 0x10(%rsp)
addq $0x20, %rdi
movl 0x6c(%rsp), %eax
movl %eax, %esi
callq 0x3430
vmovsd 0x10(%rsp), %xmm0
vmovsd %xmm0, (%rax)
movl 0x6c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x6c(%rsp)
jmp 0x35fc
addq $0xa8, %rsp
retq
movq 0x48(%rsp), %rdi
callq 0x7830
movq 0x88(%rsp), %rdi
callq 0x2160
nop