// File: /workspace/github_cpp_makefile_star2_O2/canzarlab[P]Trajan/src/EditDist.cpp
// Function: EditDist(Graph&, Graph&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&)
void EditDist(Graph& g1, Graph& g2, string & fileName, string & outSolution, std::map<string, string> & t1Label2Node, std::map<string, string> & t2Label2Node, string & outScore)
{
    vn n1, n2;
    int k1 = GetNumTrees(g1.GetRoot(), n1), k2 = GetNumTrees(g2.GetRoot(), n2);
    Tree& t1 = (Tree&)(k1 >= k2 ? g1 : g2), &t2 = (Tree&)(k1 >= k2 ? g2 : g1);
    bool swp = false;
    if (k2 > k1)
    {
        cout << "Swap two tree\n";
        swap(n1, n2), swp = true;
        std::map<string, string> temp;
        temp = t1Label2Node;
        t1Label2Node = t2Label2Node;
        t2Label2Node = temp;
    }

    // read data.
    CSVReader reader(fileName);
    vector<vector<double>> cost_matrix = reader.getDoubleData();
    vector<vector<int>> scale_cost_matrix;
    const double scale = 1000.0;
    scale_cost_matrix.resize(swp ? cost_matrix[0].size() : cost_matrix.size());
    for (int i = 0; i < (int) cost_matrix.size(); ++i)
        for (int j = 0; j < (int) cost_matrix[0].size(); ++j)
            scale_cost_matrix[swp ? j : i].push_back((int) (scale*cost_matrix[i][j]));

    vvvi P;
    vvi S;
    GenPerms(n2, 0, S, P);
    vvvvi BP;
    vvi BL1, BL2;
    vvi BT1, BT2, BD1, BD2;
    int mm = numeric_limits<int>::max();
    for (int i = 0; i < P.size(); ++i)
    {
        newick_node* nroot = new newick_node(n2[0]->taxon);
        MakeTree(n2[0], nroot, 0, P[i]);
        int n = n1.size(), m = n2.size();
        vvi L1(n + 1, vi(n + 1)), L2(m + 1, vi(m + 1));
        vvi T1(n + 1, vi(n + 1, 1)), T2(m + 1, vi(m + 1, 1));
        vvi D1(n + 1, vi(n + 1, -1)), D2(m + 1, vi(m + 1, -1));
        GenTables(t1.GetRoot(), n, L1, T1, D1);
        GenTables(nroot, m, L2, T2, D2);
        vvvvi NP(n + 1, vvvi(n + 1, vvi(m + 1, vi(m + 1, -1))));
        int nm = OrderedEditDist(NP, L1, L2, T1, T2, D1, D2, n, m, scale_cost_matrix);
        if (nm < mm)
        {
            mm = nm, BP = move(NP);
            BL1 = move(L1), BL2 = move(L2);
            BT1 = move(T1), BT2 = move(T2);
            BD1 = move(D1), BD2 = move(D2);
        }
        DeallocTree(nroot);
    }
    ofstream myfile(outSolution);
    PrintMatching(BP, BL1, BL2, BT1, BT2, BD1, BD2, {0, 0, 0, 0}, swp, myfile, t1Label2Node, t2Label2Node);
    myfile.close();
    clog << "DIST: " << (double)mm/scale << endl;
    ofstream score(outScore);
    score << (double)mm/scale << endl;
    score.close();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x748, %rsp            # imm = 0x748
movq %r9, 0x40(%rsp)
movq %r8, 0x48(%rsp)
movq %rcx, 0x158(%rsp)
movq %rdx, %rbx
movq %rsi, %r14
xorpd %xmm0, %xmm0
leaq 0x80(%rsp), %rsi
movapd %xmm0, (%rsi)
andq $0x0, 0x10(%rsi)
movapd %xmm0, 0x20(%rsp)
andq $0x0, 0x30(%rsp)
movq %rdi, 0x50(%rsp)
movq 0x68(%rdi), %rdi
callq 0x4b764
movl %eax, 0x18(%rsp)
movq 0x68(%r14), %rdi
leaq 0x20(%rsp), %rsi
callq 0x4b764
movl %eax, %ebp
cmpl %eax, 0x18(%rsp)
movq 0x50(%rsp), %rax
cmovlq %r14, %rax
movq %rax, 0x50(%rsp)
jge 0x4c9fb
movq 0x4a654(%rip), %rdi     # 0x96fb0
leaq 0x24e86(%rip), %rsi     # 0x717e9
callq 0x9330
movq 0x90(%rsp), %rax
movapd 0x20(%rsp), %xmm0
movq 0x30(%rsp), %rcx
movq %rcx, 0x90(%rsp)
movaps 0x80(%rsp), %xmm1
movapd %xmm0, 0x80(%rsp)
movaps %xmm1, 0x20(%rsp)
movq %rax, 0x30(%rsp)
leaq 0x350(%rsp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq 0x348(%rsp), %rdi
movq 0x48(%rsp), %rsi
callq 0x4d876
movq 0x48(%rsp), %rdi
movq 0x40(%rsp), %rsi
callq 0x4d876
leaq 0x348(%rsp), %rsi
movq 0x40(%rsp), %rdi
callq 0x4d876
leaq 0x348(%rsp), %rdi
callq 0xbc84
leaq 0x2d0(%rsp), %rdi
movq %rbx, %rsi
callq 0x9470
leaq 0x1ff1e(%rip), %rsi     # 0x6c930
leaq 0x2b0(%rsp), %rdi
leaq 0x348(%rsp), %rdx
callq 0xb7a6
leaq 0x308(%rsp), %rdi
leaq 0x2d0(%rsp), %rsi
leaq 0x2b0(%rsp), %rdx
callq 0xb826
movl %ebp, 0x10(%rsp)
leaq 0x2b0(%rsp), %rdi
callq 0x9708
leaq 0x2d0(%rsp), %rdi
callq 0x9708
leaq 0xc0(%rsp), %rdi
leaq 0x308(%rsp), %rsi
xorl %edx, %edx
movl $0x2710, %ecx           # imm = 0x2710
callq 0x4eae6
andq $0x0, 0x100(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0xf0(%rsp)
pushq $0x18
popq %r15
movl 0x10(%rsp), %eax
cmpl %eax, 0x18(%rsp)
jge 0x4cab7
movq 0xc0(%rsp), %rax
movq 0x8(%rax), %rsi
subq (%rax), %rsi
sarq $0x3, %rsi
jmp 0x4cacf
movq 0xc8(%rsp), %rax
subq 0xc0(%rsp), %rax
cqto
idivq %r15
movq %rax, %rsi
leaq 0xf0(%rsp), %rdi
callq 0x2dbfc
movq 0xc0(%rsp), %rcx
xorl %r14d, %r14d
leaq 0x348(%rsp), %rbx
movq 0xc8(%rsp), %rax
subq %rcx, %rax
cqto
idivq %r15
cltq
cmpq %rax, %r14
jge 0x4cb7a
imulq $0x18, %r14, %r15
xorl %r12d, %r12d
movq 0x8(%rcx), %rax
subq (%rcx), %rax
shrq $0x3, %rax
cltq
cmpq %rax, %r12
jge 0x4cb6e
movl 0x10(%rsp), %eax
cmpl %eax, 0x18(%rsp)
movq %r14, %rax
cmovlq %r12, %rax
movl %eax, %eax
imulq $0x18, %rax, %rdi
addq 0xf0(%rsp), %rdi
movq (%rcx,%r15), %rax
movsd (%rax,%r12,8), %xmm0
mulsd 0x24c82(%rip), %xmm0    # 0x717d0
cvttsd2si %xmm0, %eax
movl %eax, 0x348(%rsp)
movq %rbx, %rsi
callq 0x2ec6a
incq %r12
movq 0xc0(%rsp), %rcx
jmp 0x4cb0d
incq %r14
pushq $0x18
popq %r15
jmp 0x4caef
xorpd %xmm0, %xmm0
leaq 0x140(%rsp), %rcx
movapd %xmm0, (%rcx)
andq $0x0, 0x10(%rcx)
leaq 0x290(%rsp), %rdx
movapd %xmm0, (%rdx)
andq $0x0, 0x10(%rdx)
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x4b7cc
leaq 0x230(%rsp), %rax
xorpd %xmm0, %xmm0
movapd %xmm0, (%rax)
andq $0x0, 0x10(%rax)
leaq 0x210(%rsp), %rax
movapd %xmm0, (%rax)
andq $0x0, 0x10(%rax)
leaq 0x1f0(%rsp), %rax
andq $0x0, 0x10(%rax)
leaq 0x1d0(%rsp), %rcx
andq $0x0, 0x10(%rcx)
movapd %xmm0, (%rax)
movapd %xmm0, (%rcx)
leaq 0x1b0(%rsp), %rax
movapd %xmm0, (%rax)
andq $0x0, 0x10(%rax)
leaq 0x190(%rsp), %rax
movapd %xmm0, (%rax)
andq $0x0, 0x10(%rax)
leaq 0x170(%rsp), %rax
andq $0x0, 0x10(%rax)
movapd %xmm0, (%rax)
movl $0x7fffffff, 0xc(%rsp)  # imm = 0x7FFFFFFF
xorl %ebx, %ebx
xorl %r14d, %r14d
movq 0x148(%rsp), %rax
subq 0x140(%rsp), %rax
cqto
idivq %r15
cmpq %r14, %rax
jbe 0x4d0db
leaq 0x128(%rsp), %r13
pushq $0x38
popq %rdi
callq 0x9340
movq %rax, %r15
movq 0x20(%rsp), %rax
movq (%rax), %rsi
addq $0x8, %rsi
xorpd %xmm0, %xmm0
movq %r15, %rdi
xorl %edx, %edx
callq 0x38f34
movq 0x20(%rsp), %rax
movq (%rax), %rdi
movq 0x140(%rsp), %rcx
addq %rbx, %rcx
movq %r15, %rsi
xorl %edx, %edx
callq 0x4b8bc
movq %r15, 0xa0(%rsp)
movq %rbx, 0x168(%rsp)
movq 0x88(%rsp), %rbx
subq 0x80(%rsp), %rbx
movq 0x28(%rsp), %r12
subq 0x20(%rsp), %r12
movq %rbx, 0x58(%rsp)
shlq $0x1d, %rbx
movabsq $0x100000000, %rax      # imm = 0x100000000
addq %rax, %rbx
sarq $0x20, %rbx
leaq 0x548(%rsp), %rbp
movq %rbp, %rdi
movq %rbx, %rsi
movq %r13, %rdx
callq 0xd4b4
movq %r14, 0x160(%rsp)
leaq 0x348(%rsp), %rdi
movq %rbx, %rsi
movq %rbp, %rdx
leaq 0x110(%rsp), %r15
movq %r15, %rcx
callq 0x4d65c
movq %rbp, %rdi
callq 0xd85a
movq %r12, %r14
shlq $0x1d, %r14
movabsq $0x100000000, %rax      # imm = 0x100000000
addq %rax, %r14
sarq $0x20, %r14
movq %r13, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0xd4b4
movq %rbp, %rdi
movq %r14, %rsi
movq %r13, %rdx
leaq 0xd8(%rsp), %rbp
movq %rbp, %rcx
callq 0x4d65c
movq %r13, %r15
movq %r13, %rdi
callq 0xd85a
movl $0x1, 0xd8(%rsp)
leaq 0x110(%rsp), %r13
movq %r13, %rdi
movq %rbx, %rsi
movq %rbp, %rdx
leaq 0x68(%rsp), %rcx
callq 0x332b8
movq %r15, %rdi
movq %rbx, %rsi
movq %r13, %rdx
leaq 0xa8(%rsp), %r15
movq %r15, %rcx
callq 0x4d65c
movq %r13, %rdi
callq 0xd85a
movl $0x1, 0x68(%rsp)
movq %rbp, %rdi
movq %r14, %rsi
leaq 0x68(%rsp), %rdx
movq %r15, %rcx
callq 0x332b8
movq %r13, %rdi
movq %r14, %rsi
movq %rbp, %rdx
leaq 0x248(%rsp), %r15
movq %r15, %rcx
callq 0x4d65c
movq %rbp, %rdi
callq 0xd85a
orl $-0x1, 0xa8(%rsp)
leaq 0x68(%rsp), %r13
movq %r13, %rdi
movq %rbx, %rsi
leaq 0xa8(%rsp), %rdx
movq %r15, %rcx
callq 0x332b8
movq %rbp, %rdi
movq %rbx, %rsi
movq %r13, %rdx
leaq 0x278(%rsp), %rbp
movq %rbp, %rcx
callq 0x4d65c
movq %r13, %rdi
callq 0xd85a
orl $-0x1, 0x248(%rsp)
leaq 0xa8(%rsp), %r15
movq %r15, %rdi
movq %r14, %rsi
leaq 0x248(%rsp), %rdx
movq %rbp, %rcx
callq 0x332b8
movq %r13, %rdi
movq %r14, %rsi
movq %r15, %rdx
leaq 0x260(%rsp), %rcx
callq 0x4d65c
movq 0x58(%rsp), %r13
shrq $0x3, %r13
movq %r15, %rdi
callq 0xd85a
movq 0x50(%rsp), %rax
movq 0x68(%rax), %rdi
movq %r13, 0x58(%rsp)
movl %r13d, %esi
leaq 0x348(%rsp), %rdx
leaq 0x128(%rsp), %rcx
leaq 0xd8(%rsp), %r8
callq 0x4be7a
shrq $0x3, %r12
movq 0xa0(%rsp), %rdi
movl %r12d, %esi
leaq 0x548(%rsp), %rdx
leaq 0x110(%rsp), %rcx
leaq 0x68(%rsp), %r8
callq 0x4be7a
orl $-0x1, 0x64(%rsp)
leaq 0x260(%rsp), %rbp
movq %rbp, %rdi
movq %r14, %rsi
leaq 0x64(%rsp), %rdx
leaq 0x17(%rsp), %rcx
callq 0x332b8
leaq 0x248(%rsp), %r15
leaq 0x278(%rsp), %r13
movq %r13, %rdi
movq %r14, %rsi
movq %rbp, %rdx
leaq 0x16(%rsp), %rcx
callq 0x4d65c
movq %r15, %rdi
movq %rbx, %rsi
movq %r13, %rdx
leaq 0x15(%rsp), %rcx
callq 0x4d6b2
leaq 0xa8(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movq %r15, %rdx
leaq 0x14(%rsp), %rcx
callq 0x4d708
movq %r15, %rdi
callq 0x4d75e
leaq 0x278(%rsp), %rdi
callq 0x2dd22
leaq 0x260(%rsp), %rdi
callq 0xd85a
movq %r14, %rdi
leaq 0x348(%rsp), %rsi
leaq 0x548(%rsp), %rdx
leaq 0x128(%rsp), %rcx
leaq 0x110(%rsp), %r8
leaq 0xd8(%rsp), %r9
leaq 0xf0(%rsp), %rax
pushq %rax
pushq %r12
pushq 0x68(%rsp)
leaq 0x80(%rsp), %rax
pushq %rax
callq 0x4bfed
addq $0x20, %rsp
movl %eax, %ebx
cmpl 0xc(%rsp), %eax
pushq $0x18
popq %r15
leaq 0x548(%rsp), %r14
leaq 0x110(%rsp), %r12
jge 0x4d064
leaq 0x230(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x4e7d4
leaq 0x210(%rsp), %rdi
leaq 0x348(%rsp), %rsi
callq 0x4e826
leaq 0x1f0(%rsp), %rdi
movq %r14, %rsi
callq 0x4e826
leaq 0x1d0(%rsp), %rdi
leaq 0x128(%rsp), %rsi
callq 0x4e826
leaq 0x1b0(%rsp), %rdi
movq %r12, %rsi
callq 0x4e826
leaq 0x190(%rsp), %rdi
leaq 0xd8(%rsp), %rsi
callq 0x4e826
leaq 0x170(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x4e826
movl %ebx, 0xc(%rsp)
movq 0xa0(%rsp), %rdi
callq 0x4c268
leaq 0xa8(%rsp), %rdi
callq 0x4d780
leaq 0x68(%rsp), %rdi
callq 0x2dd22
leaq 0xd8(%rsp), %rdi
callq 0x2dd22
movq %r12, %rdi
callq 0x2dd22
leaq 0x128(%rsp), %rdi
callq 0x2dd22
movq %r14, %rdi
callq 0x2dd22
leaq 0x348(%rsp), %rdi
callq 0x2dd22
movq 0x160(%rsp), %r14
incq %r14
movq 0x168(%rsp), %rbx
addq $0x18, %rbx
jmp 0x4cc34
leaq 0x348(%rsp), %rbx
pushq $0x10
popq %rdx
movq %rbx, %rdi
movq 0x158(%rsp), %rsi
callq 0x96e0
movl 0x10(%rsp), %ecx
xorl %eax, %eax
cmpl %ecx, 0x18(%rsp)
setl %al
xorpd %xmm0, %xmm0
leaq 0x2f0(%rsp), %r10
movapd %xmm0, (%r10)
leaq 0x230(%rsp), %rdi
leaq 0x210(%rsp), %rsi
leaq 0x1f0(%rsp), %rdx
leaq 0x1d0(%rsp), %rcx
leaq 0x1b0(%rsp), %r8
leaq 0x190(%rsp), %r9
pushq 0x40(%rsp)
pushq 0x50(%rsp)
pushq %rbx
pushq %rax
pushq %r10
leaq 0x198(%rsp), %rax
pushq %rax
callq 0x4c2a2
addq $0x30, %rsp
leaq 0x348(%rsp), %rdi
callq 0x94a0
movq 0x49dfa(%rip), %rdi     # 0x96f70
leaq 0x2467b(%rip), %rsi     # 0x717f8
callq 0x9330
cvtsi2sdl 0xc(%rsp), %xmm0
divsd 0x24640(%rip), %xmm0    # 0x717d0
movq %rax, %rdi
movsd %xmm0, 0x18(%rsp)
callq 0x9540
movq %rax, %rdi
callq 0x9170
leaq 0x548(%rsp), %rdi
pushq $0x10
popq %rdx
movq 0x780(%rsp), %rsi
callq 0x96e0
leaq 0x548(%rsp), %rdi
movsd 0x18(%rsp), %xmm0
callq 0x9540
movq %rax, %rdi
callq 0x9170
leaq 0x548(%rsp), %rdi
callq 0x94a0
leaq 0x548(%rsp), %rdi
callq 0x94f0
leaq 0x348(%rsp), %rdi
callq 0x94f0
leaq 0x170(%rsp), %rdi
callq 0x2dd22
leaq 0x190(%rsp), %rdi
callq 0x2dd22
leaq 0x1b0(%rsp), %rdi
callq 0x2dd22
leaq 0x1d0(%rsp), %rdi
callq 0x2dd22
leaq 0x1f0(%rsp), %rdi
callq 0x2dd22
leaq 0x210(%rsp), %rdi
callq 0x2dd22
leaq 0x230(%rsp), %rdi
callq 0x4d780
leaq 0x290(%rsp), %rdi
callq 0x2dd22
leaq 0x140(%rsp), %rdi
callq 0x4d75e
leaq 0xf0(%rsp), %rdi
callq 0x2dd22
leaq 0xc0(%rsp), %rdi
callq 0x2dd00
leaq 0x308(%rsp), %rdi
callq 0xb9e8
leaq 0x20(%rsp), %rdi
callq 0xbeac
leaq 0x80(%rsp), %rdi
callq 0xbeac
addq $0x748, %rsp            # imm = 0x748
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x4d310
jmp 0x4d33f
jmp 0x4d33f
jmp 0x4d512
movq %rax, %rbx
jmp 0x4d4f6
jmp 0x4d517
movq %rax, %rbx
jmp 0x4d534
movq %rax, %rbx
leaq 0x2b0(%rsp), %rdi
callq 0x9708
jmp 0x4d2fa
movq %rax, %rbx
leaq 0x2d0(%rsp), %rdi
callq 0x9708
jmp 0x4d541
jmp 0x4d310
jmp 0x4d310
movq %rax, %rbx
jmp 0x4d541
movq %rax, %rbx
leaq 0x348(%rsp), %rdi
callq 0xbc84
jmp 0x4d541
movq %rax, %rbx
leaq 0x548(%rsp), %rdi
callq 0x94f0
jmp 0x4d342
movq %rax, %rbx
leaq 0x348(%rsp), %rdi
callq 0x94f0
jmp 0x4d49b
movq %rax, %rbx
leaq 0xa8(%rsp), %rdi
callq 0x4d780
jmp 0x4d450
movq %rax, %rbx
leaq 0x248(%rsp), %rdi
callq 0x4d75e
jmp 0x4d37e
movq %rax, %rbx
leaq 0x278(%rsp), %rdi
callq 0x2dd22
jmp 0x4d390
movq %rax, %rbx
leaq 0x260(%rsp), %rdi
callq 0xd85a
jmp 0x4d450
jmp 0x4d44d
movq %rax, %rbx
jmp 0x4d45a
movq %rax, %rbx
leaq 0xd8(%rsp), %rdi
callq 0xd85a
jmp 0x4d474
movq %rax, %rbx
leaq 0xa8(%rsp), %rdi
callq 0xd85a
jmp 0x4d45a
movq %rax, %rbx
leaq 0x110(%rsp), %rdi
callq 0xd85a
jmp 0x4d481
movq %rax, %rbx
jmp 0x4d48e
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0xd85a
jmp 0x4d467
movq %rax, %rbx
jmp 0x4d467
movq %rax, %rbx
jmp 0x4d474
movq %rax, %rbx
leaq 0x548(%rsp), %rdi
callq 0xd85a
jmp 0x4d49b
movq %rax, %rbx
jmp 0x4d481
movq %rax, %rbx
leaq 0x128(%rsp), %rdi
callq 0xd85a
jmp 0x4d48e
movq %rax, %rbx
pushq $0x38
popq %rsi
movq %r15, %rdi
callq 0x9350
jmp 0x4d49b
jmp 0x4d512
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x2dd22
leaq 0xd8(%rsp), %rdi
callq 0x2dd22
leaq 0x110(%rsp), %rdi
callq 0x2dd22
leaq 0x128(%rsp), %rdi
callq 0x2dd22
leaq 0x548(%rsp), %rdi
callq 0x2dd22
leaq 0x348(%rsp), %rdi
callq 0x2dd22
leaq 0x170(%rsp), %rdi
callq 0x2dd22
leaq 0x190(%rsp), %rdi
callq 0x2dd22
leaq 0x1b0(%rsp), %rdi
callq 0x2dd22
leaq 0x1d0(%rsp), %rdi
callq 0x2dd22
leaq 0x1f0(%rsp), %rdi
callq 0x2dd22
leaq 0x210(%rsp), %rdi
callq 0x2dd22
leaq 0x230(%rsp), %rdi
callq 0x4d780
leaq 0x290(%rsp), %rdi
callq 0x2dd22
leaq 0x140(%rsp), %rdi
callq 0x4d75e
jmp 0x4d51a
movq %rax, %rbx
jmp 0x4d49b
movq %rax, %rbx
leaq 0xf0(%rsp), %rdi
callq 0x2dd22
leaq 0xc0(%rsp), %rdi
callq 0x2dd00
leaq 0x308(%rsp), %rdi
callq 0xb9e8
leaq 0x20(%rsp), %rdi
callq 0xbeac
leaq 0x80(%rsp), %rdi
callq 0xbeac
movq %rbx, %rdi
callq 0x9640