// File: /workspace/github_cpp_makefile_star2_O2/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 $0x4f8, %rsp            # imm = 0x4F8
movq %rdi, %rbx
callq 0x3290
leaq 0x30(%rbx), %rax
movq %rax, 0x20(%rbx)
andq $0x0, 0x28(%rbx)
movb $0x0, 0x30(%rbx)
leaq 0x48(%rbx), %rax
andl $0x0, 0x48(%rbx)
andq $0x0, 0x50(%rbx)
movq %rax, 0x58(%rbx)
movq %rax, 0x60(%rbx)
andl $0x0, 0x98(%rbx)
leaq 0x40(%rbx), %r14
andq $0x0, 0xa0(%rbx)
leaq 0x98(%rbx), %rax
xorps %xmm0, %xmm0
movups %xmm0, 0x68(%rbx)
movups %xmm0, 0x78(%rbx)
andq $0x0, 0x88(%rbx)
movq %rax, 0xa8(%rbx)
movq %rax, 0xb0(%rbx)
andq $0x0, 0xb8(%rbx)
leaq 0xc8(%rbx), %rax
andl $0x0, 0xc8(%rbx)
andq $0x0, 0xd0(%rbx)
movq %rax, 0xd8(%rbx)
movq %rax, 0xe0(%rbx)
andq $0x0, 0xe8(%rbx)
leaq 0xf8(%rbx), %rax
andl $0x0, 0xf8(%rbx)
andq $0x0, 0x100(%rbx)
movq %rax, 0x108(%rbx)
movq %rax, 0x110(%rbx)
andq $0x0, 0x118(%rbx)
leaq -0x108(%rbp), %rdx
andq $0x0, (%rdx)
leaq 0x8643(%rip), %rsi      # 0xc018
leaq -0x518(%rbp), %r15
movq %r15, %rdi
callq 0x44ce
leaq -0x4f0(%rbp), %r12
leaq -0x100(%rbp), %rdx
movq $0x1, (%rdx)
leaq 0x861d(%rip), %rsi      # 0xc01d
movq %r12, %rdi
callq 0x44f8
leaq -0x4c8(%rbp), %r12
leaq -0xf8(%rbp), %rdx
movq $0x2, (%rdx)
leaq 0x85fd(%rip), %rsi      # 0xc021
movq %r12, %rdi
callq 0x44ce
leaq -0x4a0(%rbp), %r12
movabsq $0x100000003, %rax      # imm = 0x100000003
leaq -0xf0(%rbp), %rdx
movq %rax, (%rdx)
leaq 0x85d8(%rip), %rsi      # 0xc026
movq %r12, %rdi
callq 0x44ce
leaq -0x478(%rbp), %r12
leaq -0xe8(%rbp), %rdx
movq $0x4, (%rdx)
leaq 0x85b9(%rip), %rsi      # 0xc02b
movq %r12, %rdi
callq 0x44f8
leaq -0x450(%rbp), %r12
leaq -0xe0(%rbp), %rdx
movq $0x5, (%rdx)
leaq 0x8599(%rip), %rsi      # 0xc02f
movq %r12, %rdi
callq 0x44f8
leaq -0x428(%rbp), %r12
leaq -0xd8(%rbp), %rdx
movq $0x6, (%rdx)
leaq 0x8579(%rip), %rsi      # 0xc033
movq %r12, %rdi
callq 0x44f8
leaq -0x400(%rbp), %r12
leaq -0xd0(%rbp), %rdx
movq $0x7, (%rdx)
leaq 0x8559(%rip), %rsi      # 0xc037
movq %r12, %rdi
callq 0x44f8
leaq -0x3d8(%rbp), %r12
leaq -0xc8(%rbp), %rdx
movq $0x8, (%rdx)
leaq 0x8539(%rip), %rsi      # 0xc03b
movq %r12, %rdi
callq 0x4522
leaq -0x3b0(%rbp), %r12
leaq -0xc0(%rbp), %rdx
movq $0x9, (%rdx)
leaq 0x8518(%rip), %rsi      # 0xc03e
movq %r12, %rdi
callq 0x4522
leaq -0x388(%rbp), %r12
leaq -0xb8(%rbp), %rdx
movq $0x8, (%rdx)
leaq 0x84f7(%rip), %rsi      # 0xc041
movq %r12, %rdi
callq 0x44f8
leaq -0x360(%rbp), %r12
leaq -0xb0(%rbp), %rdx
movq $0x9, (%rdx)
leaq 0x84d7(%rip), %rsi      # 0xc045
movq %r12, %rdi
callq 0x44f8
leaq -0x338(%rbp), %r12
leaq -0xa8(%rbp), %rdx
movq $0x8, (%rdx)
leaq 0x84b7(%rip), %rsi      # 0xc049
movq %r12, %rdi
callq 0x44f8
leaq -0x310(%rbp), %r12
leaq -0xa0(%rbp), %rdx
movq $0x9, (%rdx)
leaq 0x8497(%rip), %rsi      # 0xc04d
movq %r12, %rdi
callq 0x4522
leaq -0x2e8(%rbp), %r12
leaq -0x98(%rbp), %rdx
movq $0xe, (%rdx)
leaq 0x8476(%rip), %rsi      # 0xc050
movq %r12, %rdi
callq 0x44f8
leaq -0x2c0(%rbp), %r12
leaq -0x90(%rbp), %rdx
movq $0xf, (%rdx)
leaq 0x8456(%rip), %rsi      # 0xc054
movq %r12, %rdi
callq 0x44f8
leaq -0x298(%rbp), %r12
movabsq $0x100000010, %rax      # imm = 0x100000010
leaq -0x88(%rbp), %rdx
movq %rax, (%rdx)
leaq 0x8430(%rip), %rsi      # 0xc058
movq %r12, %rdi
callq 0x44ce
leaq -0x270(%rbp), %r12
movabsq $0x100000011, %rax      # imm = 0x100000011
leaq -0x80(%rbp), %rdx
movq %rax, (%rdx)
leaq 0x840e(%rip), %rsi      # 0xc05d
movq %r12, %rdi
callq 0x4522
leaq -0x248(%rbp), %r12
movabsq $0x100000012, %rax      # imm = 0x100000012
leaq -0x78(%rbp), %rdx
movq %rax, (%rdx)
leaq 0x83ea(%rip), %rsi      # 0xc060
movq %r12, %rdi
callq 0x44f8
leaq -0x220(%rbp), %r12
movabsq $0x100000014, %rax      # imm = 0x100000014
leaq -0x70(%rbp), %rdx
movq %rax, (%rdx)
leaq 0x83c7(%rip), %rsi      # 0xc064
movq %r12, %rdi
callq 0x44f8
leaq -0x1f8(%rbp), %r12
movabsq $0x100000015, %rax      # imm = 0x100000015
leaq -0x68(%rbp), %rdx
movq %rax, (%rdx)
leaq 0x83a4(%rip), %rsi      # 0xc068
movq %r12, %rdi
callq 0x44ce
leaq -0x1d0(%rbp), %r12
movabsq $0x100000016, %rax      # imm = 0x100000016
leaq -0x60(%rbp), %rdx
movq %rax, (%rdx)
leaq 0x8382(%rip), %rsi      # 0xc06d
movq %r12, %rdi
callq 0x44ce
leaq -0x1a8(%rbp), %r12
movabsq $0x100000017, %rax      # imm = 0x100000017
leaq -0x58(%rbp), %rdx
movq %rax, (%rdx)
leaq 0x8360(%rip), %rsi      # 0xc072
movq %r12, %rdi
callq 0x44ce
leaq -0x180(%rbp), %r12
movabsq $0x100000018, %rax      # imm = 0x100000018
leaq -0x50(%rbp), %rdx
movq %rax, (%rdx)
leaq 0x833e(%rip), %rsi      # 0xc077
movq %r12, %rdi
callq 0x44ce
leaq -0x158(%rbp), %r12
leaq -0x48(%rbp), %rdx
movq $0x19, (%rdx)
leaq 0x8322(%rip), %rsi      # 0xc07c
movq %r12, %rdi
callq 0x44f8
leaq -0x130(%rbp), %r12
leaq -0x40(%rbp), %rdx
movq $0x1a, (%rdx)
leaq 0x8305(%rip), %rsi      # 0xc080
movq %r12, %rdi
callq 0x44ce
leaq -0x108(%rbp), %rdx
leaq -0x518(%rbp), %rsi
movq %r14, %rdi
callq 0x4578
movl $0x3e8, %ebx            # imm = 0x3E8
leaq (%rbx,%rbp), %rdi
addq $-0x518, %rdi           # imm = 0xFAE8
callq 0x33a8
addq $-0x28, %rbx
cmpq $-0x28, %rbx
jne 0x3d9e
addq $0x4f8, %rsp            # imm = 0x4F8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, -0x30(%rbp)
movl $0x3e8, %r13d           # imm = 0x3E8
leaq -0x518(,%r13), %rdi
addq %rbp, %rdi
callq 0x33a8
addq $-0x28, %r13
cmpq $-0x28, %r13
jne 0x3dd4
movb $0x1, %al
jmp 0x3e28
jmp 0x3e22
jmp 0x3e22
jmp 0x3e22
jmp 0x3e22
jmp 0x3e22
jmp 0x3e22
jmp 0x3e22
jmp 0x3e22
jmp 0x3e22
jmp 0x3e22
jmp 0x3e22
jmp 0x3e22
jmp 0x3e22
jmp 0x3e22
jmp 0x3e22
jmp 0x3e22
jmp 0x3e22
jmp 0x3e22
jmp 0x3e22
jmp 0x3e22
jmp 0x3e22
jmp 0x3e22
jmp 0x3e22
jmp 0x3e22
movq %rax, -0x30(%rbp)
xorl %eax, %eax
cmpq %r12, %r15
sete %cl
testb %al, %al
jne 0x3e47
testb %cl, %cl
jne 0x3e47
addq $-0x28, %r12
movq %r12, %rdi
callq 0x33a8
cmpq %r15, %r12
jne 0x3e36
leaq 0x20(%rbx), %rax
movq %rax, -0x38(%rbp)
leaq 0x70(%rbx), %r12
leaq 0xf0(%rbx), %rdi
leaq 0xc0(%rbx), %r13
leaq 0x90(%rbx), %r15
callq 0x4a9e
movq %r13, %rdi
callq 0x4a9e
movq %r15, %rdi
callq 0x4a9e
movq %r12, %rdi
callq 0x454c
movq %r14, %rdi
callq 0x4bd6
movq -0x38(%rbp), %rdi
callq 0x33a8
movq %rbx, %rdi
callq 0x33a8
movq -0x30(%rbp), %rdi
callq 0x3350
movq %rax, -0x30(%rbp)
jmp 0x3e47
nop