// File: canzarlab[P]Trajan/src/EditDist.cpp
// Function: GenTables(newick_node*, int, std::vector<std::vector<int, std::allocator<int>>, std::allocator<std::vector<int, std::allocator<int>>>>&, std::vector<std::vector<int, std::allocator<int>>, std::allocator<std::vector<int, std::allocator<int>>>>&, std::vector<std::vector<int, std::allocator<int>>, std::allocator<std::vector<int, std::allocator<int>>>>&)
void GenTables(newick_node* root, int n, vvi& L, vvi& T, vvi& D)
{
    map<newick_node*, int> S, R;
    CalcSubtreeSizes(root, S);
    for (int i = n; i >= 0; --i)
        for (int j = 0; j <= n; ++j)
            if (newick_node* node = (i + j && i + j <= n ? GetLastRemoved(root, R, i, j) : nullptr))
                L[i][j] = stoi(node->taxon), T[i][j] = S[node], D[i][j] = R[node];
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xe0, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
leaq -0x58(%rbp), %rdi
movq %rdi, -0xb0(%rbp)
callq 0xfe690
leaq -0x88(%rbp), %rdi
callq 0xfe690
movq -0xb0(%rbp), %rsi
movq -0x8(%rbp), %rdi
callq 0xfb410
jmp 0xfbc2c
movl -0xc(%rbp), %eax
movl %eax, -0x98(%rbp)
cmpl $0x0, -0x98(%rbp)
jl 0xfbe19
movl $0x0, -0x9c(%rbp)
movl -0x9c(%rbp), %eax
cmpl -0xc(%rbp), %eax
jg 0xfbe03
movl -0x98(%rbp), %eax
addl -0x9c(%rbp), %eax
cmpl $0x0, %eax
je 0xfbcb2
movl -0x98(%rbp), %eax
addl -0x9c(%rbp), %eax
cmpl -0xc(%rbp), %eax
jg 0xfbcb2
movq -0x8(%rbp), %rdi
movl -0x98(%rbp), %edx
movl -0x9c(%rbp), %ecx
leaq -0x88(%rbp), %rsi
callq 0xfba10
movq %rax, -0xb8(%rbp)
jmp 0xfbca2
movq -0xb8(%rbp), %rax
movq %rax, -0xc0(%rbp)
jmp 0xfbcbd
xorl %eax, %eax
movq %rax, -0xc0(%rbp)
jmp 0xfbcbd
movq -0xc0(%rbp), %rax
movq %rax, -0xa8(%rbp)
cmpq $0x0, -0xa8(%rbp)
je 0xfbded
movq -0xa8(%rbp), %rdi
addq $0x8, %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0xa, %edx
callq 0xe970
movl %eax, -0xc4(%rbp)
jmp 0xfbcfa
movq -0x18(%rbp), %rdi
movslq -0x98(%rbp), %rsi
callq 0x993b0
movq %rax, %rdi
movslq -0x9c(%rbp), %rsi
callq 0x145d0
movl -0xc4(%rbp), %ecx
movl %ecx, (%rax)
leaq -0x58(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0xfe460
movq %rax, -0xd0(%rbp)
jmp 0xfbd3a
movq -0xd0(%rbp), %rax
movl (%rax), %eax
movl %eax, -0xdc(%rbp)
movq -0x20(%rbp), %rdi
movslq -0x98(%rbp), %rsi
callq 0x993b0
movq %rax, %rdi
movslq -0x9c(%rbp), %rsi
callq 0x145d0
movl -0xdc(%rbp), %ecx
movl %ecx, (%rax)
leaq -0x88(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0xfe460
movq %rax, -0xd8(%rbp)
jmp 0xfbd8c
movq -0xd8(%rbp), %rax
movl (%rax), %eax
movl %eax, -0xe0(%rbp)
movq -0x28(%rbp), %rdi
movslq -0x98(%rbp), %rsi
callq 0x993b0
movq %rax, %rdi
movslq -0x9c(%rbp), %rsi
callq 0x145d0
movl -0xe0(%rbp), %ecx
movl %ecx, (%rax)
jmp 0xfbded
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x88(%rbp), %rdi
callq 0xfe6b0
leaq -0x58(%rbp), %rdi
callq 0xfe6b0
jmp 0xfbe37
jmp 0xfbdef
movl -0x9c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x9c(%rbp)
jmp 0xfbc4c
jmp 0xfbe05
movl -0x98(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x98(%rbp)
jmp 0xfbc35
leaq -0x88(%rbp), %rdi
callq 0xfe6b0
leaq -0x58(%rbp), %rdi
callq 0xfe6b0
addq $0xe0, %rsp
popq %rbp
retq
movq -0x90(%rbp), %rdi
callq 0xa7c0
nopw %cs:(%rax,%rax)