// File: /workspace/github_cpp_makefile_star2_O3/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 $0x428, %rsp            # imm = 0x428
movq %rdi, %rbx
leaq 0x10(%rdi), %rax
movq %rax, -0x40(%rbp)
movq %rax, (%rdi)
movq (%rsi), %rax
movq 0x8(%rsi), %rdx
addq %rax, %rdx
movq %rax, %rsi
callq 0x42b0
leaq 0x30(%rbx), %rax
movq %rax, -0x38(%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 -0x440(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb51c(%rip), %rsi      # 0xf042
leaq 0xb519(%rip), %rdx      # 0xf046
leaq -0x450(%rbp), %r15
movq %r15, %rdi
callq 0x47d0
leaq -0x428(%rbp), %r12
movq $0x0, -0x8(%r12)
leaq -0x418(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb4e9(%rip), %rsi      # 0xf047
leaq 0xb4e5(%rip), %rdx      # 0xf04a
movq %r12, %rdi
callq 0x47d0
leaq -0x400(%rbp), %r12
movq $0x1, -0x8(%r12)
leaq -0x3f0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb4bc(%rip), %rsi      # 0xf04b
leaq 0xb4b9(%rip), %rdx      # 0xf04f
movq %r12, %rdi
callq 0x47d0
leaq -0x3d8(%rbp), %r12
movq $0x2, -0x8(%r12)
leaq -0x3c8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb490(%rip), %rsi      # 0xf050
leaq 0xb48d(%rip), %rdx      # 0xf054
movq %r12, %rdi
callq 0x47d0
movabsq $0x100000003, %r13      # imm = 0x100000003
leaq -0x3b0(%rbp), %r12
movq %r13, -0x8(%r12)
leaq -0x3a0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb45e(%rip), %rsi      # 0xf055
leaq 0xb45a(%rip), %rdx      # 0xf058
movq %r12, %rdi
callq 0x47d0
leaq -0x388(%rbp), %r12
movq $0x4, -0x8(%r12)
leaq -0x378(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb431(%rip), %rsi      # 0xf059
leaq 0xb42d(%rip), %rdx      # 0xf05c
movq %r12, %rdi
callq 0x47d0
leaq -0x360(%rbp), %r12
movq $0x5, -0x8(%r12)
leaq -0x350(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb404(%rip), %rsi      # 0xf05d
leaq 0xb400(%rip), %rdx      # 0xf060
movq %r12, %rdi
callq 0x47d0
leaq -0x338(%rbp), %r12
movq $0x6, -0x8(%r12)
leaq -0x328(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb3d7(%rip), %rsi      # 0xf061
leaq 0xb3d3(%rip), %rdx      # 0xf064
movq %r12, %rdi
callq 0x47d0
leaq -0x310(%rbp), %r12
movq $0x7, -0x8(%r12)
leaq -0x300(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb3aa(%rip), %rsi      # 0xf065
leaq 0xb3a5(%rip), %rdx      # 0xf067
movq %r12, %rdi
callq 0x47d0
leaq -0x2e8(%rbp), %r12
movq $0x8, -0x8(%r12)
leaq -0x2d8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb37c(%rip), %rsi      # 0xf068
leaq 0xb377(%rip), %rdx      # 0xf06a
movq %r12, %rdi
callq 0x47d0
leaq -0x2c0(%rbp), %r12
movq $0x9, -0x8(%r12)
leaq -0x2b0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb34e(%rip), %rsi      # 0xf06b
leaq 0xb34a(%rip), %rdx      # 0xf06e
movq %r12, %rdi
callq 0x47d0
leaq -0x298(%rbp), %r12
movq $0x8, -0x8(%r12)
leaq -0x288(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb321(%rip), %rsi      # 0xf06f
leaq 0xb31d(%rip), %rdx      # 0xf072
movq %r12, %rdi
callq 0x47d0
leaq -0x270(%rbp), %r12
movq $0x9, -0x8(%r12)
leaq -0x260(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb2f4(%rip), %rsi      # 0xf073
leaq 0xb2f0(%rip), %rdx      # 0xf076
movq %r12, %rdi
callq 0x47d0
leaq -0x248(%rbp), %r12
movq $0x8, -0x8(%r12)
leaq -0x238(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb2c7(%rip), %rsi      # 0xf077
leaq 0xb2c2(%rip), %rdx      # 0xf079
movq %r12, %rdi
callq 0x47d0
leaq -0x220(%rbp), %r12
movq $0x9, -0x8(%r12)
leaq -0x210(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb299(%rip), %rsi      # 0xf07a
leaq 0xb295(%rip), %rdx      # 0xf07d
movq %r12, %rdi
callq 0x47d0
leaq -0x1f8(%rbp), %r12
movq $0xe, -0x8(%r12)
leaq -0x1e8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb26c(%rip), %rsi      # 0xf07e
leaq 0xb268(%rip), %rdx      # 0xf081
movq %r12, %rdi
callq 0x47d0
leaq -0x1d0(%rbp), %r12
movq $0xf, -0x8(%r12)
leaq -0x1c0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb23f(%rip), %rsi      # 0xf082
leaq 0xb23c(%rip), %rdx      # 0xf086
movq %r12, %rdi
callq 0x47d0
leaq 0xd(%r13), %rax
leaq -0x1a8(%rbp), %r12
movq %rax, -0x8(%r12)
leaq -0x198(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb213(%rip), %rsi      # 0xf087
leaq 0xb20e(%rip), %rdx      # 0xf089
movq %r12, %rdi
callq 0x47d0
leaq 0xe(%r13), %rax
leaq -0x180(%rbp), %r12
movq %rax, -0x8(%r12)
leaq -0x170(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb1e5(%rip), %rsi      # 0xf08a
leaq 0xb1e1(%rip), %rdx      # 0xf08d
movq %r12, %rdi
callq 0x47d0
leaq 0xf(%r13), %rax
leaq -0x158(%rbp), %r12
movq %rax, -0x8(%r12)
leaq -0x148(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb1b8(%rip), %rsi      # 0xf08e
leaq 0xb1b4(%rip), %rdx      # 0xf091
movq %r12, %rdi
callq 0x47d0
leaq 0x11(%r13), %rax
leaq -0x130(%rbp), %r12
movq %rax, -0x8(%r12)
leaq -0x120(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb18b(%rip), %rsi      # 0xf092
leaq 0xb188(%rip), %rdx      # 0xf096
movq %r12, %rdi
callq 0x47d0
leaq 0x12(%r13), %rax
leaq -0x108(%rbp), %r12
movq %rax, -0x8(%r12)
leaq -0xf8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb15f(%rip), %rsi      # 0xf097
leaq 0xb15c(%rip), %rdx      # 0xf09b
movq %r12, %rdi
callq 0x47d0
leaq 0x13(%r13), %rax
leaq -0xe0(%rbp), %r12
movq %rax, -0x8(%r12)
leaq -0xd0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb133(%rip), %rsi      # 0xf09c
leaq 0xb130(%rip), %rdx      # 0xf0a0
movq %r12, %rdi
callq 0x47d0
leaq 0x14(%r13), %rax
leaq -0xb8(%rbp), %r12
movq %rax, -0x8(%r12)
leaq -0xa8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb107(%rip), %rsi      # 0xf0a1
leaq 0xb104(%rip), %rdx      # 0xf0a5
movq %r12, %rdi
callq 0x47d0
addq $0x15, %r13
leaq -0x90(%rbp), %r12
movq %r13, -0x8(%r12)
leaq -0x80(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb0de(%rip), %rsi      # 0xf0a6
leaq 0xb0da(%rip), %rdx      # 0xf0a9
movq %r12, %rdi
callq 0x47d0
leaq -0x68(%rbp), %r12
movq $0x19, -0x8(%r12)
leaq -0x58(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0xb0b7(%rip), %rsi      # 0xf0aa
leaq 0xb0b4(%rip), %rdx      # 0xf0ae
movq %r12, %rdi
callq 0x47d0
leaq -0x40(%rbp), %rdx
movq $0x1a, -0x8(%rdx)
leaq -0x450(%rbp), %rsi
movq %r14, %rdi
callq 0x486e
leaq -0x58(%rbp), %rbx
xorl %r14d, %r14d
movq -0x68(%rbp,%r14), %rdi
leaq (%rbx,%r14), %rax
cmpq %rdi, %rax
je 0x4037
callq 0x31c0
addq $-0x28, %r14
cmpq $-0x410, %r14           # imm = 0xFBF0
jne 0x4024
addq $0x428, %rsp            # imm = 0x428
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 0x406f
callq 0x31c0
addq $-0x28, %r13
addq $0x28, %r15
jne 0x4061
jmp 0x40cc
jmp 0x40ab
jmp 0x40ab
jmp 0x40ab
jmp 0x40ab
jmp 0x40ab
jmp 0x40ab
jmp 0x40ab
jmp 0x40ab
jmp 0x40ab
jmp 0x40ab
jmp 0x40ab
jmp 0x40ab
jmp 0x40ab
jmp 0x40ab
jmp 0x40ab
jmp 0x40ab
jmp 0x40ab
jmp 0x40ab
jmp 0x40ab
jmp 0x40ab
jmp 0x40ab
jmp 0x40ab
jmp 0x40ab
jmp 0x40ab
movq %rax, -0x30(%rbp)
movq -0x28(%r12), %rdi
leaq -0x18(%r12), %rax
cmpq %rdi, %rax
je 0x40c3
callq 0x31c0
addq $-0x28, %r12
cmpq %r15, %r12
jne 0x40af
leaq 0x70(%rbx), %r13
leaq 0x90(%rbx), %r12
leaq 0xc0(%rbx), %r15
leaq 0xf0(%rbx), %rdi
callq 0x4d28
movq %r15, %rdi
callq 0x4d28
movq %r12, %rdi
callq 0x4d28
movq %r13, %rdi
callq 0x479c
movq %r14, %rdi
callq 0x4e24
movq 0x20(%rbx), %rdi
cmpq -0x38(%rbp), %rdi
je 0x4119
callq 0x31c0
movq (%rbx), %rdi
cmpq -0x40(%rbp), %rdi
je 0x4127
callq 0x31c0
movq -0x30(%rbp), %rdi
callq 0x3330
movq %rax, -0x30(%rbp)
jmp 0x40cc