// File: Davidc2525[P]Leaf/compiler/backend/x86_64/x86_64.cpp
// Function: CODE_GENERATOR::x86_64::DeclFuncNode::load(int)
void DeclFuncNode::load(int R)
{
    RegisterProvider *rp = RegisterManager::getInstance()->getProviderBy(64);

    loadOpt->effectivea->parts.push_back(new EffectivePart(rp->reserve_by_size(128)->id));
    loadOpt->effectivea->parts.push_back(new EffectivePart(rp->reserve_by_size(32)->id));
    loadOpt->effectivea->parts.push_back(new EffectivePart(8, Num, Mul));
    loadOpt->effectivea->parts.push_back(new EffectivePart(8, Num, Mul));

    cout << "funcion: " << *name << " '" << loadOpt->effectivea->toString() << "'" << endl;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x68(%rbp)
callq 0x21500
movq %rax, %rdi
movl $0x40, %esi
callq 0x21620
movq %rax, %rcx
movq -0x68(%rbp), %rax
movq %rcx, -0x18(%rbp)
movq 0x28(%rax), %rax
movq 0x8(%rax), %rax
addq $0x8, %rax
movq %rax, -0x60(%rbp)
movl $0xc, %edi
callq 0x62e0
movq %rax, -0x58(%rbp)
movq -0x18(%rbp), %rdi
movq (%rdi), %rax
movq 0x78(%rax), %rax
movl $0x80, %esi
callq *%rax
movq %rax, -0x50(%rbp)
jmp 0x2c3ad
movq -0x58(%rbp), %rdi
movq -0x50(%rbp), %rax
movl (%rax), %esi
callq 0x1e130
jmp 0x2c3be
movq -0x60(%rbp), %rdi
movq -0x58(%rbp), %rax
movq %rax, -0x20(%rbp)
leaq -0x20(%rbp), %rsi
callq 0x2cba0
movq -0x68(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x8(%rax), %rax
addq $0x8, %rax
movq %rax, -0x80(%rbp)
movl $0xc, %edi
callq 0x62e0
movq %rax, -0x78(%rbp)
movq -0x18(%rbp), %rdi
movq (%rdi), %rax
movq 0x78(%rax), %rax
movl $0x20, %esi
callq *%rax
movq %rax, -0x70(%rbp)
jmp 0x2c40d
movq -0x78(%rbp), %rdi
movq -0x70(%rbp), %rax
movl (%rax), %esi
callq 0x1e130
jmp 0x2c41e
movq -0x80(%rbp), %rdi
movq -0x78(%rbp), %rax
movq %rax, -0x38(%rbp)
leaq -0x38(%rbp), %rsi
callq 0x2cba0
movq -0x68(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x8(%rax), %rax
addq $0x8, %rax
movq %rax, -0x90(%rbp)
movl $0xc, %edi
callq 0x62e0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x88(%rbp)
movl $0x8, %esi
movl $0x1, %edx
movl $0x2, %ecx
callq 0x1e1e0
jmp 0x2c477
movq -0x90(%rbp), %rdi
movq -0x88(%rbp), %rax
movq %rax, -0x40(%rbp)
leaq -0x40(%rbp), %rsi
callq 0x2cba0
movq -0x68(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x8(%rax), %rax
addq $0x8, %rax
movq %rax, -0xa0(%rbp)
movl $0xc, %edi
callq 0x62e0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x98(%rbp)
movl $0x8, %esi
movl $0x1, %edx
movl $0x2, %ecx
callq 0x1e1e0
jmp 0x2c4d6
movq -0xa0(%rbp), %rdi
movq -0x98(%rbp), %rax
movq %rax, -0x48(%rbp)
leaq -0x48(%rbp), %rsi
callq 0x2cba0
movq 0x1dad8(%rip), %rdi     # 0x49fd0
leaq 0x9a96(%rip), %rsi      # 0x35f95
callq 0x62c0
movq %rax, %rdi
movq -0x68(%rbp), %rax
movq 0x50(%rax), %rsi
callq 0x6280
movq %rax, %rdi
leaq 0x9a81(%rip), %rsi      # 0x35f9f
callq 0x62c0
movq %rax, %rcx
movq -0x68(%rbp), %rax
movq %rcx, -0xa8(%rbp)
movq 0x28(%rax), %rax
movq 0x8(%rax), %rdi
callq 0x1e2c0
movq -0xa8(%rbp), %rdi
movq %rax, %rsi
callq 0x62c0
movq %rax, %rdi
leaq 0x9a49(%rip), %rsi      # 0x35fa0
callq 0x62c0
movq %rax, %rdi
movq 0x1da4a(%rip), %rsi     # 0x49fb0
callq 0x6320
addq $0xb0, %rsp
popq %rbp
retq
movq -0x58(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
movl $0xc, %esi
callq 0x62f0
jmp 0x2c5e8
movq -0x78(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
movl $0xc, %esi
callq 0x62f0
jmp 0x2c5e8
movq -0x88(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
movl $0xc, %esi
callq 0x62f0
jmp 0x2c5e8
movq -0x98(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
movl $0xc, %esi
callq 0x62f0
movq -0x28(%rbp), %rdi
callq 0x64f0
nopw %cs:(%rax,%rax)