// File: Davidc2525[P]Leaf/tree.cpp
// Function: to_reg_[abi:cxx11](int, int)
string *_to_reg_(int r, int offset)
{

    //return new string("R"+to_string(r));

    switch (r + offset)
    {
    case 1:
    {
        return new string("rax");
    }
    case 2:
    {
        return new string("rbx");
    }
    case 3:
    {
        return new string("rcx");
    }
    case 4:
    {
        return new string("rdx");
    }
    case 5:
    {
        return new string("rdi");
    }
    case 6:
    {
        return new string("rsi");
    }
    case 7:
    {
        return new string("r8");
    }
    case 8:
    {
        return new string("r9");
    }
    case 9:
    {
        return new string("r10");
    }
    case 10:
    {
        return new string("r11");
    }
    case 11:
    {
        return new string("r12");
    }
    case 12:
    {
        return new string("r13");
    }
    case 13:
    {
        return new string("r14");
    }
    case 14:
    {
        return new string("r15");
    }
    case 15:
    { //parametros
        return new string("rdi");
    }
    case 16:
    {
        return new string("rsi");
    }
    case 17:
    {
        return new string("rdx");
    }
    case 18:
    {
        return new string("rcx");
    }
    case 19:
    {
        return new string("r8");
    }
    case 20:
    {
        return new string("r9");
    }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x240, %rsp            # imm = 0x240
movl %edi, -0xc(%rbp)
movl %esi, -0x10(%rbp)
movl -0xc(%rbp), %edx
movl -0x10(%rbp), %eax
movl %eax, %ecx
movl %edx, %eax
leal -0x1(%rax,%rcx), %eax
movl %eax, %ecx
movq %rcx, -0x58(%rbp)
subl $0x13, %eax
ja 0x1dffb
movq -0x58(%rbp), %rax
leaq 0x1886b(%rip), %rcx     # 0x35ca4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0x20, %edi
callq 0x62e0
movq %rax, -0x68(%rbp)
movq %rax, -0x70(%rbp)
movb $0x1, -0x25(%rbp)
leaq -0x11(%rbp), %rdi
movq %rdi, -0x60(%rbp)
callq 0x6500
movq -0x68(%rbp), %rdi
movq -0x60(%rbp), %rdx
leaq 0x18890(%rip), %rsi     # 0x35d04
callq 0xada0
jmp 0x1d47b
movq -0x70(%rbp), %rax
movb $0x0, -0x25(%rbp)
movq %rax, -0x8(%rbp)
leaq -0x11(%rbp), %rdi
callq 0x6340
jmp 0x1dffd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x11(%rbp), %rdi
callq 0x6340
testb $0x1, -0x25(%rbp)
jne 0x1d4b2
jmp 0x1d4c0
movq -0x70(%rbp), %rdi
movl $0x20, %esi
callq 0x62f0
jmp 0x1e00a
movl $0x20, %edi
callq 0x62e0
movq %rax, -0x80(%rbp)
movq %rax, -0x88(%rbp)
movb $0x1, -0x27(%rbp)
leaq -0x26(%rbp), %rdi
movq %rdi, -0x78(%rbp)
callq 0x6500
movq -0x80(%rbp), %rdi
movq -0x78(%rbp), %rdx
leaq 0x1880e(%rip), %rsi     # 0x35d08
callq 0xada0
jmp 0x1d501
movq -0x88(%rbp), %rax
movb $0x0, -0x27(%rbp)
movq %rax, -0x8(%rbp)
leaq -0x26(%rbp), %rdi
callq 0x6340
jmp 0x1dffd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x26(%rbp), %rdi
callq 0x6340
testb $0x1, -0x27(%rbp)
jne 0x1d53b
jmp 0x1d54c
movq -0x88(%rbp), %rdi
movl $0x20, %esi
callq 0x62f0
jmp 0x1e00a
movl $0x20, %edi
callq 0x62e0
movq %rax, -0x98(%rbp)
movq %rax, -0xa0(%rbp)
movb $0x1, -0x29(%rbp)
leaq -0x28(%rbp), %rdi
movq %rdi, -0x90(%rbp)
callq 0x6500
movq -0x98(%rbp), %rdi
movq -0x90(%rbp), %rdx
leaq 0x1877a(%rip), %rsi     # 0x35d0c
callq 0xada0
jmp 0x1d599
movq -0xa0(%rbp), %rax
movb $0x0, -0x29(%rbp)
movq %rax, -0x8(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x6340
jmp 0x1dffd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x6340
testb $0x1, -0x29(%rbp)
jne 0x1d5d3
jmp 0x1d5e4
movq -0xa0(%rbp), %rdi
movl $0x20, %esi
callq 0x62f0
jmp 0x1e00a
movl $0x20, %edi
callq 0x62e0
movq %rax, -0xb0(%rbp)
movq %rax, -0xb8(%rbp)
movb $0x1, -0x2b(%rbp)
leaq -0x2a(%rbp), %rdi
movq %rdi, -0xa8(%rbp)
callq 0x6500
movq -0xb0(%rbp), %rdi
movq -0xa8(%rbp), %rdx
leaq 0x186e6(%rip), %rsi     # 0x35d10
callq 0xada0
jmp 0x1d631
movq -0xb8(%rbp), %rax
movb $0x0, -0x2b(%rbp)
movq %rax, -0x8(%rbp)
leaq -0x2a(%rbp), %rdi
callq 0x6340
jmp 0x1dffd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x2a(%rbp), %rdi
callq 0x6340
testb $0x1, -0x2b(%rbp)
jne 0x1d66b
jmp 0x1d67c
movq -0xb8(%rbp), %rdi
movl $0x20, %esi
callq 0x62f0
jmp 0x1e00a
movl $0x20, %edi
callq 0x62e0
movq %rax, -0xc8(%rbp)
movq %rax, -0xd0(%rbp)
movb $0x1, -0x2d(%rbp)
leaq -0x2c(%rbp), %rdi
movq %rdi, -0xc0(%rbp)
callq 0x6500
movq -0xc8(%rbp), %rdi
movq -0xc0(%rbp), %rdx
leaq 0x18652(%rip), %rsi     # 0x35d14
callq 0xada0
jmp 0x1d6c9
movq -0xd0(%rbp), %rax
movb $0x0, -0x2d(%rbp)
movq %rax, -0x8(%rbp)
leaq -0x2c(%rbp), %rdi
callq 0x6340
jmp 0x1dffd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x2c(%rbp), %rdi
callq 0x6340
testb $0x1, -0x2d(%rbp)
jne 0x1d703
jmp 0x1d714
movq -0xd0(%rbp), %rdi
movl $0x20, %esi
callq 0x62f0
jmp 0x1e00a
movl $0x20, %edi
callq 0x62e0
movq %rax, -0xe0(%rbp)
movq %rax, -0xe8(%rbp)
movb $0x1, -0x2f(%rbp)
leaq -0x2e(%rbp), %rdi
movq %rdi, -0xd8(%rbp)
callq 0x6500
movq -0xe0(%rbp), %rdi
movq -0xd8(%rbp), %rdx
leaq 0x185be(%rip), %rsi     # 0x35d18
callq 0xada0
jmp 0x1d761
movq -0xe8(%rbp), %rax
movb $0x0, -0x2f(%rbp)
movq %rax, -0x8(%rbp)
leaq -0x2e(%rbp), %rdi
callq 0x6340
jmp 0x1dffd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x2e(%rbp), %rdi
callq 0x6340
testb $0x1, -0x2f(%rbp)
jne 0x1d79b
jmp 0x1d7ac
movq -0xe8(%rbp), %rdi
movl $0x20, %esi
callq 0x62f0
jmp 0x1e00a
movl $0x20, %edi
callq 0x62e0
movq %rax, -0xf8(%rbp)
movq %rax, -0x100(%rbp)
movb $0x1, -0x31(%rbp)
leaq -0x30(%rbp), %rdi
movq %rdi, -0xf0(%rbp)
callq 0x6500
movq -0xf8(%rbp), %rdi
movq -0xf0(%rbp), %rdx
leaq 0x1852a(%rip), %rsi     # 0x35d1c
callq 0xada0
jmp 0x1d7f9
movq -0x100(%rbp), %rax
movb $0x0, -0x31(%rbp)
movq %rax, -0x8(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x6340
jmp 0x1dffd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x6340
testb $0x1, -0x31(%rbp)
jne 0x1d833
jmp 0x1d844
movq -0x100(%rbp), %rdi
movl $0x20, %esi
callq 0x62f0
jmp 0x1e00a
movl $0x20, %edi
callq 0x62e0
movq %rax, -0x110(%rbp)
movq %rax, -0x118(%rbp)
movb $0x1, -0x33(%rbp)
leaq -0x32(%rbp), %rdi
movq %rdi, -0x108(%rbp)
callq 0x6500
movq -0x110(%rbp), %rdi
movq -0x108(%rbp), %rdx
leaq 0x18495(%rip), %rsi     # 0x35d1f
callq 0xada0
jmp 0x1d891
movq -0x118(%rbp), %rax
movb $0x0, -0x33(%rbp)
movq %rax, -0x8(%rbp)
leaq -0x32(%rbp), %rdi
callq 0x6340
jmp 0x1dffd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x32(%rbp), %rdi
callq 0x6340
testb $0x1, -0x33(%rbp)
jne 0x1d8cb
jmp 0x1d8dc
movq -0x118(%rbp), %rdi
movl $0x20, %esi
callq 0x62f0
jmp 0x1e00a
movl $0x20, %edi
callq 0x62e0
movq %rax, -0x128(%rbp)
movq %rax, -0x130(%rbp)
movb $0x1, -0x35(%rbp)
leaq -0x34(%rbp), %rdi
movq %rdi, -0x120(%rbp)
callq 0x6500
movq -0x128(%rbp), %rdi
movq -0x120(%rbp), %rdx
leaq 0x18400(%rip), %rsi     # 0x35d22
callq 0xada0
jmp 0x1d929
movq -0x130(%rbp), %rax
movb $0x0, -0x35(%rbp)
movq %rax, -0x8(%rbp)
leaq -0x34(%rbp), %rdi
callq 0x6340
jmp 0x1dffd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x34(%rbp), %rdi
callq 0x6340
testb $0x1, -0x35(%rbp)
jne 0x1d963
jmp 0x1d974
movq -0x130(%rbp), %rdi
movl $0x20, %esi
callq 0x62f0
jmp 0x1e00a
movl $0x20, %edi
callq 0x62e0
movq %rax, -0x140(%rbp)
movq %rax, -0x148(%rbp)
movb $0x1, -0x37(%rbp)
leaq -0x36(%rbp), %rdi
movq %rdi, -0x138(%rbp)
callq 0x6500
movq -0x140(%rbp), %rdi
movq -0x138(%rbp), %rdx
leaq 0x1836c(%rip), %rsi     # 0x35d26
callq 0xada0
jmp 0x1d9c1
movq -0x148(%rbp), %rax
movb $0x0, -0x37(%rbp)
movq %rax, -0x8(%rbp)
leaq -0x36(%rbp), %rdi
callq 0x6340
jmp 0x1dffd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x36(%rbp), %rdi
callq 0x6340
testb $0x1, -0x37(%rbp)
jne 0x1d9fb
jmp 0x1da0c
movq -0x148(%rbp), %rdi
movl $0x20, %esi
callq 0x62f0
jmp 0x1e00a
movl $0x20, %edi
callq 0x62e0
movq %rax, -0x158(%rbp)
movq %rax, -0x160(%rbp)
movb $0x1, -0x39(%rbp)
leaq -0x38(%rbp), %rdi
movq %rdi, -0x150(%rbp)
callq 0x6500
movq -0x158(%rbp), %rdi
movq -0x150(%rbp), %rdx
leaq 0x182d8(%rip), %rsi     # 0x35d2a
callq 0xada0
jmp 0x1da59
movq -0x160(%rbp), %rax
movb $0x0, -0x39(%rbp)
movq %rax, -0x8(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x6340
jmp 0x1dffd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x6340
testb $0x1, -0x39(%rbp)
jne 0x1da93
jmp 0x1daa4
movq -0x160(%rbp), %rdi
movl $0x20, %esi
callq 0x62f0
jmp 0x1e00a
movl $0x20, %edi
callq 0x62e0
movq %rax, -0x170(%rbp)
movq %rax, -0x178(%rbp)
movb $0x1, -0x3b(%rbp)
leaq -0x3a(%rbp), %rdi
movq %rdi, -0x168(%rbp)
callq 0x6500
movq -0x170(%rbp), %rdi
movq -0x168(%rbp), %rdx
leaq 0x18244(%rip), %rsi     # 0x35d2e
callq 0xada0
jmp 0x1daf1
movq -0x178(%rbp), %rax
movb $0x0, -0x3b(%rbp)
movq %rax, -0x8(%rbp)
leaq -0x3a(%rbp), %rdi
callq 0x6340
jmp 0x1dffd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x3a(%rbp), %rdi
callq 0x6340
testb $0x1, -0x3b(%rbp)
jne 0x1db2b
jmp 0x1db3c
movq -0x178(%rbp), %rdi
movl $0x20, %esi
callq 0x62f0
jmp 0x1e00a
movl $0x20, %edi
callq 0x62e0
movq %rax, -0x188(%rbp)
movq %rax, -0x190(%rbp)
movb $0x1, -0x3d(%rbp)
leaq -0x3c(%rbp), %rdi
movq %rdi, -0x180(%rbp)
callq 0x6500
movq -0x188(%rbp), %rdi
movq -0x180(%rbp), %rdx
leaq 0x181b0(%rip), %rsi     # 0x35d32
callq 0xada0
jmp 0x1db89
movq -0x190(%rbp), %rax
movb $0x0, -0x3d(%rbp)
movq %rax, -0x8(%rbp)
leaq -0x3c(%rbp), %rdi
callq 0x6340
jmp 0x1dffd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x3c(%rbp), %rdi
callq 0x6340
testb $0x1, -0x3d(%rbp)
jne 0x1dbc3
jmp 0x1dbd4
movq -0x190(%rbp), %rdi
movl $0x20, %esi
callq 0x62f0
jmp 0x1e00a
movl $0x20, %edi
callq 0x62e0
movq %rax, -0x1a0(%rbp)
movq %rax, -0x1a8(%rbp)
movb $0x1, -0x3f(%rbp)
leaq -0x3e(%rbp), %rdi
movq %rdi, -0x198(%rbp)
callq 0x6500
movq -0x1a0(%rbp), %rdi
movq -0x198(%rbp), %rdx
leaq 0x1811c(%rip), %rsi     # 0x35d36
callq 0xada0
jmp 0x1dc21
movq -0x1a8(%rbp), %rax
movb $0x0, -0x3f(%rbp)
movq %rax, -0x8(%rbp)
leaq -0x3e(%rbp), %rdi
callq 0x6340
jmp 0x1dffd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x3e(%rbp), %rdi
callq 0x6340
testb $0x1, -0x3f(%rbp)
jne 0x1dc5b
jmp 0x1dc6c
movq -0x1a8(%rbp), %rdi
movl $0x20, %esi
callq 0x62f0
jmp 0x1e00a
movl $0x20, %edi
callq 0x62e0
movq %rax, -0x1b8(%rbp)
movq %rax, -0x1c0(%rbp)
movb $0x1, -0x41(%rbp)
leaq -0x40(%rbp), %rdi
movq %rdi, -0x1b0(%rbp)
callq 0x6500
movq -0x1b8(%rbp), %rdi
movq -0x1b0(%rbp), %rdx
leaq 0x18062(%rip), %rsi     # 0x35d14
callq 0xada0
jmp 0x1dcb9
movq -0x1c0(%rbp), %rax
movb $0x0, -0x41(%rbp)
movq %rax, -0x8(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x6340
jmp 0x1dffd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x6340
testb $0x1, -0x41(%rbp)
jne 0x1dcf3
jmp 0x1dd04
movq -0x1c0(%rbp), %rdi
movl $0x20, %esi
callq 0x62f0
jmp 0x1e00a
movl $0x20, %edi
callq 0x62e0
movq %rax, -0x1d0(%rbp)
movq %rax, -0x1d8(%rbp)
movb $0x1, -0x43(%rbp)
leaq -0x42(%rbp), %rdi
movq %rdi, -0x1c8(%rbp)
callq 0x6500
movq -0x1d0(%rbp), %rdi
movq -0x1c8(%rbp), %rdx
leaq 0x17fce(%rip), %rsi     # 0x35d18
callq 0xada0
jmp 0x1dd51
movq -0x1d8(%rbp), %rax
movb $0x0, -0x43(%rbp)
movq %rax, -0x8(%rbp)
leaq -0x42(%rbp), %rdi
callq 0x6340
jmp 0x1dffd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x42(%rbp), %rdi
callq 0x6340
testb $0x1, -0x43(%rbp)
jne 0x1dd8b
jmp 0x1dd9c
movq -0x1d8(%rbp), %rdi
movl $0x20, %esi
callq 0x62f0
jmp 0x1e00a
movl $0x20, %edi
callq 0x62e0
movq %rax, -0x1e8(%rbp)
movq %rax, -0x1f0(%rbp)
movb $0x1, -0x45(%rbp)
leaq -0x44(%rbp), %rdi
movq %rdi, -0x1e0(%rbp)
callq 0x6500
movq -0x1e8(%rbp), %rdi
movq -0x1e0(%rbp), %rdx
leaq 0x17f2e(%rip), %rsi     # 0x35d10
callq 0xada0
jmp 0x1dde9
movq -0x1f0(%rbp), %rax
movb $0x0, -0x45(%rbp)
movq %rax, -0x8(%rbp)
leaq -0x44(%rbp), %rdi
callq 0x6340
jmp 0x1dffd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x44(%rbp), %rdi
callq 0x6340
testb $0x1, -0x45(%rbp)
jne 0x1de23
jmp 0x1de34
movq -0x1f0(%rbp), %rdi
movl $0x20, %esi
callq 0x62f0
jmp 0x1e00a
movl $0x20, %edi
callq 0x62e0
movq %rax, -0x200(%rbp)
movq %rax, -0x208(%rbp)
movb $0x1, -0x47(%rbp)
leaq -0x46(%rbp), %rdi
movq %rdi, -0x1f8(%rbp)
callq 0x6500
movq -0x200(%rbp), %rdi
movq -0x1f8(%rbp), %rdx
leaq 0x17e92(%rip), %rsi     # 0x35d0c
callq 0xada0
jmp 0x1de81
movq -0x208(%rbp), %rax
movb $0x0, -0x47(%rbp)
movq %rax, -0x8(%rbp)
leaq -0x46(%rbp), %rdi
callq 0x6340
jmp 0x1dffd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x46(%rbp), %rdi
callq 0x6340
testb $0x1, -0x47(%rbp)
jne 0x1debb
jmp 0x1decc
movq -0x208(%rbp), %rdi
movl $0x20, %esi
callq 0x62f0
jmp 0x1e00a
movl $0x20, %edi
callq 0x62e0
movq %rax, -0x218(%rbp)
movq %rax, -0x220(%rbp)
movb $0x1, -0x49(%rbp)
leaq -0x48(%rbp), %rdi
movq %rdi, -0x210(%rbp)
callq 0x6500
movq -0x218(%rbp), %rdi
movq -0x210(%rbp), %rdx
leaq 0x17e0a(%rip), %rsi     # 0x35d1c
callq 0xada0
jmp 0x1df19
movq -0x220(%rbp), %rax
movb $0x0, -0x49(%rbp)
movq %rax, -0x8(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x6340
jmp 0x1dffd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x6340
testb $0x1, -0x49(%rbp)
jne 0x1df53
jmp 0x1df64
movq -0x220(%rbp), %rdi
movl $0x20, %esi
callq 0x62f0
jmp 0x1e00a
movl $0x20, %edi
callq 0x62e0
movq %rax, -0x230(%rbp)
movq %rax, -0x238(%rbp)
movb $0x1, -0x4b(%rbp)
leaq -0x4a(%rbp), %rdi
movq %rdi, -0x228(%rbp)
callq 0x6500
movq -0x230(%rbp), %rdi
movq -0x228(%rbp), %rdx
leaq 0x17d75(%rip), %rsi     # 0x35d1f
callq 0xada0
jmp 0x1dfb1
movq -0x238(%rbp), %rax
movb $0x0, -0x4b(%rbp)
movq %rax, -0x8(%rbp)
leaq -0x4a(%rbp), %rdi
callq 0x6340
jmp 0x1dffd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x4a(%rbp), %rdi
callq 0x6340
testb $0x1, -0x4b(%rbp)
jne 0x1dfe8
jmp 0x1dff9
movq -0x238(%rbp), %rdi
movl $0x20, %esi
callq 0x62f0
jmp 0x1e00a
ud2
movq -0x8(%rbp), %rax
addq $0x240, %rsp            # imm = 0x240
popq %rbp
retq
movq -0x20(%rbp), %rdi
callq 0x64f0
nopw %cs:(%rax,%rax)