// File: rpetit3[P]fastq-scan/fastq-scan.cpp
// Function: Stats::qual_stats()
void qual_stats(void) {
            sort(per_read_qual.begin(), per_read_qual.end());
            qual_min = per_read_qual.front() - phred;
            qual_mean = (qual_sum / read_total) - phred;
            qual_std = get_std(per_read_qual, qual_mean);
            qual_max = per_read_qual.back() - phred;
            qual_25th = get_percentile(per_read_qual, per_read_qual.size(), 0.25) - phred;
            qual_median = get_percentile(per_read_qual, per_read_qual.size(), 0.50) - phred;
            qual_75th = get_percentile(per_read_qual, per_read_qual.size(), 0.75) - phred;
        }

// Assembly:
subq $0xf8, %rsp
movq %rdi, 0xf0(%rsp)
movq 0xf0(%rsp), %rdi
movq %rdi, 0x58(%rsp)
addq $0x70, %rdi
movq %rdi, 0x50(%rsp)
callq 0x7c90
movq 0x50(%rsp), %rdi
movq %rax, 0xe8(%rsp)
callq 0x7b00
movq %rax, 0xe0(%rsp)
movq 0xe8(%rsp), %rdi
movq 0xe0(%rsp), %rsi
callq 0x9e10
movq 0x50(%rsp), %rdi
callq 0x9e50
movq 0x50(%rsp), %rsi
movq %rax, %rcx
movq 0x58(%rsp), %rax
movsd (%rcx), %xmm0
cvtsi2sdl 0xb8(%rax), %xmm1
subsd %xmm1, %xmm0
cvttsd2si %xmm0, %rcx
movl %ecx, 0xbc(%rax)
movsd 0xc8(%rax), %xmm0
movq 0x38(%rax), %xmm1
movaps 0x9b31(%rip), %xmm2     # 0xd060
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x9b35(%rip), %xmm2     # 0xd070
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
cvtsi2sdl 0xb8(%rax), %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, 0xd0(%rax)
leaq 0xc8(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0x9f60
movq 0x58(%rsp), %rdi
movq 0x60(%rsp), %rsi
movsd 0xd0(%rdi), %xmm0
callq 0x9e80
movsd %xmm0, 0x68(%rsp)
jmp 0x3593
movq 0x58(%rsp), %rax
movsd 0x68(%rsp), %xmm0
movsd %xmm0, 0xf0(%rax)
leaq 0xc8(%rsp), %rdi
callq 0xa060
movq 0x58(%rsp), %rdi
addq $0x70, %rdi
movq %rdi, 0x38(%rsp)
callq 0xa0c0
movq 0x38(%rsp), %rsi
movq %rax, %rcx
movq 0x58(%rsp), %rax
movsd (%rcx), %xmm0
cvtsi2sdl 0xb8(%rax), %xmm1
subsd %xmm1, %xmm0
cvttsd2si %xmm0, %rcx
movl %ecx, 0xc0(%rax)
leaq 0xa0(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0x9f60
movq 0x38(%rsp), %rdi
callq 0x7dd0
movq 0x58(%rsp), %rdi
movq 0x40(%rsp), %rsi
movq %rax, %rdx
movss 0x99e9(%rip), %xmm0     # 0xd008
callq 0xa100
movsd %xmm0, 0x48(%rsp)
jmp 0x362c
movq 0x58(%rsp), %rax
movsd 0x48(%rsp), %xmm0
cvtsi2sdl 0xb8(%rax), %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, 0xe0(%rax)
leaq 0xa0(%rsp), %rdi
callq 0xa060
movq 0x58(%rsp), %rsi
addq $0x70, %rsi
movq %rsi, 0x20(%rsp)
leaq 0x88(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0x9f60
movq 0x20(%rsp), %rdi
callq 0x7dd0
movq 0x58(%rsp), %rdi
movq 0x28(%rsp), %rsi
movq %rax, %rdx
movss 0x9975(%rip), %xmm0     # 0xd00c
callq 0xa100
movsd %xmm0, 0x30(%rsp)
jmp 0x36a4
movq 0x58(%rsp), %rax
movsd 0x30(%rsp), %xmm0
cvtsi2sdl 0xb8(%rax), %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, 0xd8(%rax)
leaq 0x88(%rsp), %rdi
callq 0xa060
movq 0x58(%rsp), %rsi
addq $0x70, %rsi
movq %rsi, 0x8(%rsp)
leaq 0x70(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0x9f60
movq 0x8(%rsp), %rdi
callq 0x7dd0
movq 0x58(%rsp), %rdi
movq 0x10(%rsp), %rsi
movq %rax, %rdx
movss 0x9904(%rip), %xmm0     # 0xd010
callq 0xa100
movsd %xmm0, 0x18(%rsp)
jmp 0x3719
movq 0x58(%rsp), %rax
movsd 0x18(%rsp), %xmm0
cvtsi2sdl 0xb8(%rax), %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, 0xe8(%rax)
leaq 0x70(%rsp), %rdi
callq 0xa060
addq $0xf8, %rsp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc0(%rsp)
movl %eax, 0xbc(%rsp)
leaq 0xc8(%rsp), %rdi
callq 0xa060
jmp 0x37d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc0(%rsp)
movl %eax, 0xbc(%rsp)
leaq 0xa0(%rsp), %rdi
callq 0xa060
jmp 0x37d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc0(%rsp)
movl %eax, 0xbc(%rsp)
leaq 0x88(%rsp), %rdi
callq 0xa060
jmp 0x37d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc0(%rsp)
movl %eax, 0xbc(%rsp)
leaq 0x70(%rsp), %rdi
callq 0xa060
movq 0xc0(%rsp), %rdi
callq 0x22e0
nop