// File: c2-d2[P]disty/src/main.cpp
// Function: void compute_pileup<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>, std::vector<std::vector<int, std::allocator<int>>, std::allocator<std::vector<int, std::allocator<int>>>>>(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>> const&, std::vector<std::vector<int, std::allocator<int>>, std::allocator<std::vector<int, std::allocator<int>>>>&)
void compute_pileup(const T &seqs, U &pileup) {
    assert(seqs[0].size()==pileup.size());
    assert(pileup[0].size()==128);
    auto len=seqs[0].size();
    for(int i=0; i<static_cast<int>(len); i++){
        for(int c=0; c<128; c++){
            pileup[i][c]=0;
        }
    }

    for (const auto &seq: seqs){
        for(int i=0; i<static_cast<int>(len); i++){
            unsigned char c=seq[i];
            ++pileup[i][c];
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x7b20
movq %rax, %rdi
callq 0x2140
movq %rax, -0x50(%rbp)
movq -0x10(%rbp), %rdi
callq 0x7b40
movq %rax, %rcx
movq -0x50(%rbp), %rax
cmpq %rcx, %rax
jne 0x47a0
jmp 0x47bf
leaq 0x40bc(%rip), %rdi      # 0x8863
leaq 0x3e20(%rip), %rsi      # 0x85ce
movl $0x11b, %edx            # imm = 0x11B
leaq 0x40c7(%rip), %rcx      # 0x8881
callq 0x2110
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x53b0
movq %rax, %rdi
callq 0x7610
cmpq $0x80, %rax
jne 0x47de
jmp 0x47fd
leaq 0x410e(%rip), %rdi      # 0x88f3
leaq 0x3de2(%rip), %rsi      # 0x85ce
movl $0x11c, %edx            # imm = 0x11C
leaq 0x4089(%rip), %rcx      # 0x8881
callq 0x2110
movq -0x8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x7b20
movq %rax, %rdi
callq 0x2140
movq %rax, -0x18(%rbp)
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpl %ecx, %eax
jge 0x486f
movl $0x0, -0x20(%rbp)
cmpl $0x80, -0x20(%rbp)
jge 0x4862
movq -0x10(%rbp), %rdi
movslq -0x1c(%rbp), %rsi
callq 0x53b0
movq %rax, %rdi
movslq -0x20(%rbp), %rsi
callq 0x53d0
movl $0x0, (%rax)
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x482f
jmp 0x4864
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x481d
movq -0x8(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
callq 0x7b70
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rdi
callq 0x7ba0
movq %rax, -0x38(%rbp)
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x7bd0
testb $0x1, %al
jne 0x48a4
jmp 0x490f
leaq -0x30(%rbp), %rdi
callq 0x7c10
movq %rax, -0x40(%rbp)
movl $0x0, -0x44(%rbp)
movl -0x44(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpl %ecx, %eax
jge 0x4902
movq -0x40(%rbp), %rdi
movslq -0x44(%rbp), %rsi
callq 0x2250
movb (%rax), %al
movb %al, -0x45(%rbp)
movq -0x10(%rbp), %rdi
movslq -0x44(%rbp), %rsi
callq 0x53b0
movq %rax, %rdi
movzbl -0x45(%rbp), %eax
movl %eax, %esi
callq 0x53d0
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x48b8
jmp 0x4904
leaq -0x30(%rbp), %rdi
callq 0x7c30
jmp 0x4891
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop