// File: /workspace/github_cpp_makefile_star2_O1/KJTang[P]SimpleCompiler/./Assembler.h
// Function: Assembler::Assembler(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
Assembler(const std::string &code) : asmcode(code) {
        this->opList = {
            {"EXIT", {OP::EXIT, 0}}, 
            {"NOP", {OP::NOP, 0}}, 
            {"PRIT", {OP::PRIT, 0}}, 
            {"SCAN", {OP::SCAN, 1}}, 
            {"ADD", {OP::ADD, 0}}, 
            {"SUB", {OP::SUB, 0}}, 
            {"MUL", {OP::MUL, 0}}, 
            {"DIV", {OP::DIV, 0}}, 
            {"GT", {OP::GT, 0}}, 
            {"LT", {OP::LT, 0}}, 
            {"GTE", {OP::GT, 0}}, 
            {"LTE", {OP::LT, 0}}, 
            {"EQU", {OP::GT, 0}}, 
            {"NE", {OP::LT, 0}}, 
            {"DUP", {OP::DUP, 0}}, 
            {"POP", {OP::POP, 0}}, 
            {"PUSH", {OP::PUSH, 1}},
            {"JZ", {OP::JZ, 1}}, 
            {"JMP", {OP::JMP, 1}}, 
            {"INT", {OP::INT, 1}},
            {"LOAD", {OP::LOAD, 1}},
            {"SAVE", {OP::SAVE, 1}},
            {"CALL", {OP::CALL, 1}},
            {"FUNC", {OP::FUNC, 1}},
            {"RET", {OP::RET, 0}},
            {"ENDF", {OP::ENDF, 0}},
        };
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x448, %rsp            # imm = 0x448
movq %rdi, %rbx
leaq 0x10(%rdi), %rax
movq %rax, -0x58(%rbp)
movq %rax, (%rdi)
movq (%rsi), %rax
movq 0x8(%rsi), %rdx
addq %rax, %rdx
movq %rax, %rsi
callq 0x42ce
leaq 0x30(%rbx), %rax
movq %rax, -0x50(%rbp)
movq %rax, 0x20(%rbx)
xorl %eax, %eax
movq %rax, 0x28(%rbx)
movb $0x0, 0x30(%rbx)
leaq 0x40(%rbx), %r14
leaq 0x48(%rbx), %rcx
movl %eax, 0x48(%rbx)
movq %rax, 0x50(%rbx)
movq %rcx, 0x58(%rbx)
movq %rcx, 0x60(%rbx)
leaq 0x98(%rbx), %rcx
movl %eax, 0x98(%rbx)
movq %rax, 0xa0(%rbx)
xorps %xmm0, %xmm0
movups %xmm0, 0x68(%rbx)
movups %xmm0, 0x78(%rbx)
movq %rax, 0x88(%rbx)
movq %rcx, 0xa8(%rbx)
movq %rcx, 0xb0(%rbx)
movq %rax, 0xb8(%rbx)
leaq 0xc8(%rbx), %rcx
movl %eax, 0xc8(%rbx)
movq %rax, 0xd0(%rbx)
movq %rcx, 0xd8(%rbx)
movq %rcx, 0xe0(%rbx)
movq %rax, 0xe8(%rbx)
leaq 0xf8(%rbx), %rcx
movl %eax, 0xf8(%rbx)
movq %rax, 0x100(%rbx)
movq %rcx, 0x108(%rbx)
movq %rcx, 0x110(%rbx)
movq %rax, 0x118(%rbx)
leaq -0x458(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb526(%rip), %rsi      # 0xf042
leaq 0xb523(%rip), %rdx      # 0xf046
leaq -0x468(%rbp), %r12
movq %r12, %rdi
callq 0x47f6
leaq -0x440(%rbp), %r12
movq $0x0, -0x8(%r12)
leaq -0x430(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb4f3(%rip), %rsi      # 0xf047
leaq 0xb4ef(%rip), %rdx      # 0xf04a
movq %r12, %rdi
callq 0x47f6
leaq -0x418(%rbp), %r12
movq $0x1, -0x8(%r12)
leaq -0x408(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb4c6(%rip), %rsi      # 0xf04b
leaq 0xb4c3(%rip), %rdx      # 0xf04f
movq %r12, %rdi
callq 0x47f6
leaq -0x3f0(%rbp), %r12
movq $0x2, -0x8(%r12)
leaq -0x3e0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb49a(%rip), %rsi      # 0xf050
leaq 0xb497(%rip), %rdx      # 0xf054
movq %r12, %rdi
callq 0x47f6
movabsq $0x100000003, %r13      # imm = 0x100000003
leaq -0x3c8(%rbp), %r12
movq %r13, -0x8(%r12)
leaq -0x3b8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb468(%rip), %rsi      # 0xf055
leaq 0xb464(%rip), %rdx      # 0xf058
movq %r12, %rdi
callq 0x47f6
leaq -0x3a0(%rbp), %r12
movq $0x4, -0x8(%r12)
leaq -0x390(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb43b(%rip), %rsi      # 0xf059
leaq 0xb437(%rip), %rdx      # 0xf05c
movq %r12, %rdi
callq 0x47f6
leaq -0x378(%rbp), %r12
movq $0x5, -0x8(%r12)
leaq -0x368(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb40e(%rip), %rsi      # 0xf05d
leaq 0xb40a(%rip), %rdx      # 0xf060
movq %r12, %rdi
callq 0x47f6
leaq -0x350(%rbp), %r12
movq $0x6, -0x8(%r12)
leaq -0x340(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb3e1(%rip), %rsi      # 0xf061
leaq 0xb3dd(%rip), %rdx      # 0xf064
movq %r12, %rdi
callq 0x47f6
leaq -0x328(%rbp), %r12
movq $0x7, -0x8(%r12)
leaq -0x318(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb3b4(%rip), %rsi      # 0xf065
leaq 0xb3af(%rip), %rdx      # 0xf067
movq %r12, %rdi
callq 0x47f6
leaq -0x300(%rbp), %r12
movq $0x8, -0x8(%r12)
leaq -0x2f0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb386(%rip), %rsi      # 0xf068
leaq 0xb381(%rip), %rdx      # 0xf06a
movq %r12, %rdi
callq 0x47f6
leaq -0x2d8(%rbp), %r12
movq $0x9, -0x8(%r12)
leaq -0x2c8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb358(%rip), %rsi      # 0xf06b
leaq 0xb354(%rip), %rdx      # 0xf06e
movq %r12, %rdi
callq 0x47f6
leaq -0x2b0(%rbp), %r12
movq $0x8, -0x8(%r12)
leaq -0x2a0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb32b(%rip), %rsi      # 0xf06f
leaq 0xb327(%rip), %rdx      # 0xf072
movq %r12, %rdi
callq 0x47f6
leaq -0x288(%rbp), %r12
movq $0x9, -0x8(%r12)
leaq -0x278(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb2fe(%rip), %rsi      # 0xf073
leaq 0xb2fa(%rip), %rdx      # 0xf076
movq %r12, %rdi
callq 0x47f6
leaq -0x260(%rbp), %r12
movq $0x8, -0x8(%r12)
leaq -0x250(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb2d1(%rip), %rsi      # 0xf077
leaq 0xb2cc(%rip), %rdx      # 0xf079
movq %r12, %rdi
callq 0x47f6
leaq -0x238(%rbp), %r12
movq $0x9, -0x8(%r12)
leaq -0x228(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb2a3(%rip), %rsi      # 0xf07a
leaq 0xb29f(%rip), %rdx      # 0xf07d
movq %r12, %rdi
callq 0x47f6
leaq -0x210(%rbp), %r12
movq $0xe, -0x8(%r12)
leaq -0x200(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb276(%rip), %rsi      # 0xf07e
leaq 0xb272(%rip), %rdx      # 0xf081
movq %r12, %rdi
callq 0x47f6
leaq -0x1e8(%rbp), %r12
movq $0xf, -0x8(%r12)
leaq -0x1d8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb249(%rip), %rsi      # 0xf082
leaq 0xb246(%rip), %rdx      # 0xf086
movq %r12, %rdi
callq 0x47f6
leaq 0xd(%r13), %rax
leaq -0x1c0(%rbp), %r12
movq %rax, -0x8(%r12)
leaq -0x1b0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb21d(%rip), %rsi      # 0xf087
leaq 0xb218(%rip), %rdx      # 0xf089
movq %r12, %rdi
callq 0x47f6
leaq 0xe(%r13), %rax
leaq -0x198(%rbp), %r12
movq %rax, -0x8(%r12)
leaq -0x188(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb1ef(%rip), %rsi      # 0xf08a
leaq 0xb1eb(%rip), %rdx      # 0xf08d
movq %r12, %rdi
callq 0x47f6
leaq 0xf(%r13), %rax
leaq -0x170(%rbp), %r12
movq %rax, -0x8(%r12)
leaq -0x160(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb1c2(%rip), %rsi      # 0xf08e
leaq 0xb1be(%rip), %rdx      # 0xf091
movq %r12, %rdi
callq 0x47f6
leaq 0x11(%r13), %rax
leaq -0x148(%rbp), %r12
movq %rax, -0x8(%r12)
leaq -0x138(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb195(%rip), %rsi      # 0xf092
leaq 0xb192(%rip), %rdx      # 0xf096
movq %r12, %rdi
callq 0x47f6
leaq 0x12(%r13), %rax
leaq -0x120(%rbp), %r12
movq %rax, -0x8(%r12)
leaq -0x110(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb169(%rip), %rsi      # 0xf097
leaq 0xb166(%rip), %rdx      # 0xf09b
movq %r12, %rdi
callq 0x47f6
leaq 0x13(%r13), %rax
leaq -0xf8(%rbp), %r12
movq %rax, -0x8(%r12)
leaq -0xe8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb13d(%rip), %rsi      # 0xf09c
leaq 0xb13a(%rip), %rdx      # 0xf0a0
movq %r12, %rdi
callq 0x47f6
leaq 0x14(%r13), %rax
leaq -0xd0(%rbp), %r12
movq %rax, -0x8(%r12)
leaq -0xc0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb111(%rip), %rsi      # 0xf0a1
leaq 0xb10e(%rip), %rdx      # 0xf0a5
movq %r12, %rdi
callq 0x47f6
addq $0x15, %r13
leaq -0xa8(%rbp), %r12
movq %r13, -0x8(%r12)
leaq -0x98(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb0e5(%rip), %rsi      # 0xf0a6
leaq 0xb0e1(%rip), %rdx      # 0xf0a9
movq %r12, %rdi
callq 0x47f6
leaq -0x80(%rbp), %r12
movq $0x19, -0x8(%r12)
leaq -0x70(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0xb0be(%rip), %rsi      # 0xf0aa
leaq 0xb0bb(%rip), %rdx      # 0xf0ae
movq %r12, %rdi
callq 0x47f6
leaq -0x58(%rbp), %rdx
movq $0x1a, -0x8(%rdx)
leaq -0x468(%rbp), %rsi
movq %r14, %rdi
callq 0x4890
leaq -0x70(%rbp), %rbx
xorl %r14d, %r14d
movq -0x80(%rbp,%r14), %rdi
leaq (%rbx,%r14), %rax
cmpq %rdi, %rax
je 0x4030
callq 0x31c0
addq $-0x28, %r14
cmpq $-0x410, %r14           # imm = 0xFBF0
jne 0x401d
addq $0x448, %rsp            # imm = 0x448
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, -0x30(%rbp)
movq $-0x410, %r15           # imm = 0xFBF0
movq -0x10(%r13), %rdi
cmpq %rdi, %r13
je 0x4068
callq 0x31c0
addq $-0x28, %r13
addq $0x28, %r15
jne 0x405a
movb $0x1, %al
jmp 0x40ae
jmp 0x40a8
jmp 0x40a8
jmp 0x40a8
jmp 0x40a8
jmp 0x40a8
jmp 0x40a8
jmp 0x40a8
jmp 0x40a8
jmp 0x40a8
jmp 0x40a8
jmp 0x40a8
jmp 0x40a8
jmp 0x40a8
jmp 0x40a8
jmp 0x40a8
jmp 0x40a8
jmp 0x40a8
jmp 0x40a8
jmp 0x40a8
jmp 0x40a8
jmp 0x40a8
jmp 0x40a8
jmp 0x40a8
jmp 0x40a8
jmp 0x40a8
movq %rax, -0x30(%rbp)
xorl %eax, %eax
leaq 0x70(%rbx), %r13
leaq 0x90(%rbx), %rcx
movq %rcx, -0x48(%rbp)
leaq 0xc0(%rbx), %rcx
movq %rcx, -0x40(%rbp)
leaq 0xf0(%rbx), %rcx
movq %rcx, -0x38(%rbp)
leaq -0x468(%rbp), %rcx
cmpq %r12, %rcx
sete %cl
orb %al, %cl
jne 0x4108
leaq -0x468(%rbp), %r15
movq -0x28(%r12), %rdi
leaq -0x18(%r12), %rax
cmpq %rdi, %rax
je 0x40ff
callq 0x31c0
addq $-0x28, %r12
cmpq %r15, %r12
jne 0x40eb
movq -0x38(%rbp), %rdi
callq 0x4d58
movq -0x40(%rbp), %rdi
callq 0x4d58
movq -0x48(%rbp), %rdi
callq 0x4d58
movq %r13, %rdi
callq 0x47c2
movq %r14, %rdi
callq 0x4e4a
movq 0x20(%rbx), %rdi
cmpq -0x50(%rbp), %rdi
je 0x4142
callq 0x31c0
movq (%rbx), %rdi
cmpq -0x58(%rbp), %rdi
je 0x4150
callq 0x31c0
movq -0x30(%rbp), %rdi
callq 0x3330
nop