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

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x290, %rsp            # imm = 0x290
movq %rdx, -0x258(%rbp)
movq %rdi, -0x270(%rbp)
movq %rdi, %rax
movq %rax, -0x268(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x260(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x5490
leaq -0x58(%rbp), %rdi
callq 0x5490
movq -0x258(%rbp), %rsi
leaq -0x98(%rbp), %rdi
callq 0x5150
jmp 0xd91f1
movq -0x260(%rbp), %rsi
leaq -0x78(%rbp), %rdi
leaq -0x98(%rbp), %rdx
callq 0xda8d0
jmp 0xd920a
leaq -0x38(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x5420
movq %rax, %rdi
callq 0x54e0
movq %rax, -0x278(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x5200
leaq -0x98(%rbp), %rdi
callq 0x5200
movq -0x278(%rbp), %rax
cmpq $0x0, %rax
je 0xd92a1
movq -0x270(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x51e0
movl $0x1, -0xa8(%rbp)
jmp 0xd9666
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0xd9688
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x5200
jmp 0xd9688
leaq -0xf0(%rbp), %rdi
callq 0xda9d0
jmp 0xd92af
movq -0x258(%rbp), %rsi
movq -0x260(%rbp), %rax
movq 0x8(%rax), %rdi
movl $0x1, %edx
leaq -0xf0(%rbp), %rcx
callq 0xdaf80
movb %al, -0x279(%rbp)
jmp 0xd92da
movb -0x279(%rbp), %al
testb $0x1, %al
jne 0xd92e9
jmp 0xd95ad
testb $0x1, -0xb0(%rbp)
je 0xd9396
movq -0x258(%rbp), %rsi
leaq -0x130(%rbp), %rdi
callq 0x5150
jmp 0xd930b
movq -0x260(%rbp), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x110(%rbp), %rdi
leaq -0x130(%rbp), %rdx
movl $0x1, %ecx
callq *%rax
jmp 0xd932f
leaq -0x58(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0x5420
leaq -0x110(%rbp), %rdi
callq 0x5200
leaq -0x130(%rbp), %rdi
callq 0x5200
jmp 0xd941c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0xd9658
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x5200
jmp 0xd9658
movq -0x258(%rbp), %rsi
leaq -0x170(%rbp), %rdi
callq 0x5150
jmp 0xd93ab
movq -0x260(%rbp), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x150(%rbp), %rdi
leaq -0x170(%rbp), %rdx
movl $0x1, %ecx
callq *%rax
jmp 0xd93cf
leaq -0x58(%rbp), %rdi
leaq -0x150(%rbp), %rsi
callq 0x5420
leaq -0x150(%rbp), %rdi
callq 0x5200
leaq -0x170(%rbp), %rdi
callq 0x5200
jmp 0xd941c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x5200
jmp 0xd9658
movq -0x260(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x288(%rbp)
leaq 0x1802b(%rip), %rsi     # 0xf1460
leaq -0x1d0(%rbp), %rdi
leaq -0x58(%rbp), %rdx
callq 0x19ef0
jmp 0xd9447
leaq 0x1801b(%rip), %rdx     # 0xf1469
leaq -0x1b0(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
callq 0x1a380
jmp 0xd9463
movq -0x258(%rbp), %rsi
leaq -0x210(%rbp), %rdi
callq 0x5150
jmp 0xd9478
movq -0x260(%rbp), %rsi
movq (%rsi), %rax
movq 0x48(%rax), %rax
leaq -0x1f0(%rbp), %rdi
leaq -0x210(%rbp), %rdx
callq *%rax
jmp 0xd9498
leaq -0x190(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
leaq -0x1f0(%rbp), %rdx
callq 0x1a3d0
jmp 0xd94b4
movq -0x288(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0xdaf40
jmp 0xd94c9
leaq -0x190(%rbp), %rdi
callq 0x5200
leaq -0x1f0(%rbp), %rdi
callq 0x5200
leaq -0x210(%rbp), %rdi
callq 0x5200
leaq -0x1b0(%rbp), %rdi
callq 0x5200
leaq -0x1d0(%rbp), %rdi
callq 0x5200
jmp 0xd9630
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0xd959c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0xd9590
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0xd9584
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0xd9578
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x190(%rbp), %rdi
callq 0x5200
leaq -0x1f0(%rbp), %rdi
callq 0x5200
leaq -0x210(%rbp), %rdi
callq 0x5200
leaq -0x1b0(%rbp), %rdi
callq 0x5200
leaq -0x1d0(%rbp), %rdi
callq 0x5200
jmp 0xd9658
movq -0x258(%rbp), %rsi
leaq -0x250(%rbp), %rdi
callq 0x5150
jmp 0xd95c2
movq -0x260(%rbp), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x230(%rbp), %rdi
leaq -0x250(%rbp), %rdx
movl $0x1, %ecx
callq *%rax
jmp 0xd95e6
leaq -0x58(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0x5420
leaq -0x230(%rbp), %rdi
callq 0x5200
leaq -0x250(%rbp), %rdi
callq 0x5200
jmp 0xd9630
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x250(%rbp), %rdi
callq 0x5200
jmp 0xd9658
movq -0x270(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x51e0
movl $0x1, -0xa8(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0xdac70
jmp 0xd9666
leaq -0xf0(%rbp), %rdi
callq 0xdac70
jmp 0xd9688
leaq -0x58(%rbp), %rdi
callq 0x5200
leaq -0x38(%rbp), %rdi
callq 0x5200
movq -0x268(%rbp), %rax
addq $0x290, %rsp            # imm = 0x290
popq %rbp
retq
leaq -0x58(%rbp), %rdi
callq 0x5200
leaq -0x38(%rbp), %rdi
callq 0x5200
movq -0xa0(%rbp), %rdi
callq 0x55b0
nopw %cs:(%rax,%rax)