// File: lemire[P]runningmaxmin/./runningmaxmin.h
// Function: lemiremaxminwrap::lemiremaxminwrap(std::vector<double, std::allocator<double>>&, unsigned int)
lemiremaxminwrap(std::vector<floattype> & array, uint width)
        : maxvalues(array.size() - width + 1),
          minvalues(array.size() - width + 1) {
        lemiremaxmintruestreaming lts(width);
        for (uint i = 0; i < width - 1; ++i) {
            lts.update(array[i]);
        }
        for (uint i = width - 1; i < array.size(); ++i) {
            lts.update(array[i]);
            maxvalues[i - width + 1] = lts.max();
            minvalues[i - width + 1] = lts.min();
        }
    }

// Assembly:
subq $0xb8, %rsp
movq %rdi, 0xb0(%rsp)
movq %rsi, 0xa8(%rsp)
movl %edx, 0xa4(%rsp)
movq 0xb0(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0x77c0
movq 0x30(%rsp), %rax
leaq 0xf914(%rip), %rcx      # 0x13c00
addq $0x10, %rcx
movq %rcx, (%rax)
addq $0x8, %rax
movq %rax, 0x38(%rsp)
movq 0xa8(%rsp), %rdi
callq 0x3410
movl 0xa4(%rsp), %ecx
subq %rcx, %rax
incq %rax
movq %rax, 0x40(%rsp)
leaq 0xa3(%rsp), %rdi
movq %rdi, 0x48(%rsp)
callq 0x74c0
movq 0x38(%rsp), %rdi
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
callq 0x74d0
jmp 0x4343
leaq 0xa3(%rsp), %rdi
callq 0x7550
movq 0x30(%rsp), %rax
addq $0x20, %rax
movq %rax, 0x18(%rsp)
movq 0xa8(%rsp), %rdi
callq 0x3410
movl 0xa4(%rsp), %ecx
subq %rcx, %rax
incq %rax
movq %rax, 0x20(%rsp)
leaq 0x93(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0x74c0
movq 0x18(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x74d0
jmp 0x43a5
leaq 0x93(%rsp), %rdi
callq 0x7550
movl 0xa4(%rsp), %esi
leaq 0x58(%rsp), %rdi
callq 0x8f30
jmp 0x43c5
movl $0x0, 0x54(%rsp)
movl 0x54(%rsp), %eax
movl 0xa4(%rsp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jae 0x449d
movq 0xa8(%rsp), %rdi
movl 0x54(%rsp), %eax
movl %eax, %esi
callq 0x3430
vmovsd (%rax), %xmm0
leaq 0x58(%rsp), %rdi
callq 0x8fa0
jmp 0x4406
jmp 0x4408
movl 0x54(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x54(%rsp)
jmp 0x43cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x98(%rsp)
movl %eax, 0x94(%rsp)
leaq 0xa3(%rsp), %rdi
callq 0x7550
jmp 0x45a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x98(%rsp)
movl %eax, 0x94(%rsp)
leaq 0x93(%rsp), %rdi
callq 0x7550
jmp 0x4596
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x98(%rsp)
movl %eax, 0x94(%rsp)
jmp 0x458c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x98(%rsp)
movl %eax, 0x94(%rsp)
leaq 0x58(%rsp), %rdi
callq 0x91a0
jmp 0x458c
movl 0xa4(%rsp), %eax
subl $0x1, %eax
movl %eax, 0x50(%rsp)
movl 0x50(%rsp), %eax
movq %rax, 0x10(%rsp)
movq 0xa8(%rsp), %rdi
callq 0x3410
movq %rax, %rcx
movq 0x10(%rsp), %rax
cmpq %rcx, %rax
jae 0x457a
movq 0xa8(%rsp), %rdi
movl 0x50(%rsp), %eax
movl %eax, %esi
callq 0x3430
vmovsd (%rax), %xmm0
leaq 0x58(%rsp), %rdi
callq 0x8fa0
jmp 0x44f5
leaq 0x58(%rsp), %rdi
callq 0x9170
vmovsd %xmm0, 0x8(%rsp)
jmp 0x4507
movq 0x30(%rsp), %rdi
addq $0x8, %rdi
movl 0x50(%rsp), %eax
movl 0xa4(%rsp), %ecx
subl %ecx, %eax
incl %eax
movl %eax, %esi
callq 0x3430
vmovsd 0x8(%rsp), %xmm0
vmovsd %xmm0, (%rax)
leaq 0x58(%rsp), %rdi
callq 0x9180
vmovsd %xmm0, (%rsp)
jmp 0x4541
movq 0x30(%rsp), %rdi
addq $0x20, %rdi
movl 0x50(%rsp), %eax
subl 0xa4(%rsp), %eax
addl $0x1, %eax
movl %eax, %eax
movl %eax, %esi
callq 0x3430
vmovsd (%rsp), %xmm0
vmovsd %xmm0, (%rax)
movl 0x50(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x50(%rsp)
jmp 0x44ab
leaq 0x58(%rsp), %rdi
callq 0x91a0
addq $0xb8, %rsp
retq
movq 0x18(%rsp), %rdi
callq 0x7660
movq 0x38(%rsp), %rdi
callq 0x7660
movq 0x30(%rsp), %rdi
callq 0x7830
movq 0x98(%rsp), %rdi
callq 0x2160
nopw (%rax,%rax)