// File: sighingnow[P]compile-pascal/pl0_allocator.cpp
// Function: SimpleAllocator::load(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
string SimpleAllocator::load(std::string name, std::string target) {
    std::string now = this->exist(name);
    if (now != target) {
        this->remap(target, name);
        if (now.length() == 0) {
            if (env.find(name, true)) {
                out.emit("    mov " + target + ", dword " + this->addr(name));
            }
            else {
                // DO NOTHING, JUST MAINTAIN MAPPING.
            }
        }
        else {
            out.emit("    mov " + target + ", " + now);
            this->release(now, true);
        }
    }
    return target;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x220, %rsp            # imm = 0x220
movq %rcx, -0x200(%rbp)
movq %rdx, -0x1f8(%rbp)
movq %rsi, %rax
movq -0x1f8(%rbp), %rsi
movq %rdi, -0x1f0(%rbp)
movq %rdi, %rdx
movq %rdx, -0x1e8(%rbp)
movq %rdi, -0x8(%rbp)
movq %rax, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x1e0(%rbp)
leaq -0x60(%rbp), %rdi
movq %rdi, -0x1d8(%rbp)
callq 0x5150
movq -0x1e0(%rbp), %rsi
movq -0x1d8(%rbp), %rdx
leaq -0x40(%rbp), %rdi
callq 0xda8d0
jmp 0xd8d58
leaq -0x60(%rbp), %rdi
callq 0x5200
movq -0x200(%rbp), %rsi
leaq -0x40(%rbp), %rdi
callq 0x1a4a0
testb $0x1, %al
jne 0xd8d7a
jmp 0xd9145
movq -0x200(%rbp), %rsi
leaq -0x90(%rbp), %rdi
callq 0x5150
jmp 0xd8d8f
movq -0x1f8(%rbp), %rsi
leaq -0xb0(%rbp), %rdi
callq 0x5150
jmp 0xd8da4
movq -0x1e0(%rbp), %rdi
movq (%rdi), %rax
movq 0x8(%rax), %rax
leaq -0x90(%rbp), %rsi
leaq -0xb0(%rbp), %rdx
callq *%rax
jmp 0xd8dc4
leaq -0xb0(%rbp), %rdi
callq 0x5200
leaq -0x90(%rbp), %rdi
callq 0x5200
leaq -0x40(%rbp), %rdi
callq 0x54e0
cmpq $0x0, %rax
jne 0xd9001
movq -0x1f8(%rbp), %rsi
movq -0x1e0(%rbp), %rax
movq 0x8(%rax), %rdi
movl $0x1, %edx
callq 0xdadb0
movb %al, -0x201(%rbp)
jmp 0xd8e13
movb -0x201(%rbp), %al
testb $0x1, %al
jne 0xd8e22
jmp 0xd8ffa
movq -0x200(%rbp), %rdx
movq -0x1e0(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x210(%rbp)
leaq 0x1861e(%rip), %rsi     # 0xf1460
leaq -0x110(%rbp), %rdi
callq 0x19ef0
jmp 0xd8e50
leaq 0x18612(%rip), %rdx     # 0xf1469
leaq -0xf0(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0x1a380
jmp 0xd8e6c
movq -0x1f8(%rbp), %rsi
leaq -0x150(%rbp), %rdi
callq 0x5150
jmp 0xd8e81
movq -0x1e0(%rbp), %rsi
movq (%rsi), %rax
movq 0x48(%rax), %rax
leaq -0x130(%rbp), %rdi
leaq -0x150(%rbp), %rdx
callq *%rax
jmp 0xd8ea1
leaq -0xd0(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
leaq -0x130(%rbp), %rdx
callq 0x1a3d0
jmp 0xd8ebd
movq -0x210(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0xdaf40
jmp 0xd8ed2
leaq -0xd0(%rbp), %rdi
callq 0x5200
leaq -0x130(%rbp), %rdi
callq 0x5200
leaq -0x150(%rbp), %rdi
callq 0x5200
leaq -0xf0(%rbp), %rdi
callq 0x5200
leaq -0x110(%rbp), %rdi
callq 0x5200
jmp 0xd8ffc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x5200
jmp 0xd917a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xd9171
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xd8f64
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x5200
leaq -0x90(%rbp), %rdi
callq 0x5200
jmp 0xd9171
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xd8fe9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xd8fdd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xd8fd1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xd8fc5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x5200
leaq -0x130(%rbp), %rdi
callq 0x5200
leaq -0x150(%rbp), %rdi
callq 0x5200
leaq -0xf0(%rbp), %rdi
callq 0x5200
leaq -0x110(%rbp), %rdi
callq 0x5200
jmp 0xd9171
jmp 0xd8ffc
jmp 0xd9143
movq -0x200(%rbp), %rdx
movq -0x1e0(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x218(%rbp)
leaq 0x1843f(%rip), %rsi     # 0xf1460
leaq -0x1b0(%rbp), %rdi
callq 0x19ef0
jmp 0xd902f
leaq 0x1848f(%rip), %rdx     # 0xf14c5
leaq -0x190(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x1a380
jmp 0xd904b
leaq -0x170(%rbp), %rdi
leaq -0x190(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1a4d0
jmp 0xd9064
movq -0x218(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0xdaf40
jmp 0xd9079
leaq -0x170(%rbp), %rdi
callq 0x5200
leaq -0x190(%rbp), %rdi
callq 0x5200
leaq -0x1b0(%rbp), %rdi
callq 0x5200
leaq -0x1d0(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x5150
jmp 0xd90af
movq -0x1e0(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
leaq -0x1d0(%rbp), %rsi
movl $0x1, %edx
callq *%rax
jmp 0xd90cd
leaq -0x1d0(%rbp), %rdi
callq 0x5200
jmp 0xd9143
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xd911b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xd910f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x5200
leaq -0x190(%rbp), %rdi
callq 0x5200
leaq -0x1b0(%rbp), %rdi
callq 0x5200
jmp 0xd9171
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0x5200
jmp 0xd9171
jmp 0xd9145
movq -0x200(%rbp), %rsi
movq -0x1f0(%rbp), %rdi
callq 0x51e0
leaq -0x40(%rbp), %rdi
callq 0x5200
movq -0x1e8(%rbp), %rax
addq $0x220, %rsp            # imm = 0x220
popq %rbp
retq
leaq -0x40(%rbp), %rdi
callq 0x5200
movq -0x68(%rbp), %rdi
callq 0x55b0
nopw %cs:(%rax,%rax)