// File: 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
subq $0x730, %rsp            # imm = 0x730
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x5f8(%rbp)
movq %rdi, %rax
movq %rax, -0x628(%rbp)
movq -0x10(%rbp), %rsi
callq 0x3120
movq -0x5f8(%rbp), %rdi
addq $0x20, %rdi
movq %rdi, -0x620(%rbp)
callq 0x33a0
movq -0x5f8(%rbp), %rdi
addq $0x40, %rdi
movq %rdi, -0x618(%rbp)
callq 0x6c90
movq -0x5f8(%rbp), %rdi
addq $0x70, %rdi
movq %rdi, -0x610(%rbp)
callq 0x6cb0
movq -0x5f8(%rbp), %rdi
movl $0x0, 0x88(%rdi)
movl $0x0, 0x8c(%rdi)
addq $0x90, %rdi
movq %rdi, -0x608(%rbp)
callq 0x6cd0
movq -0x5f8(%rbp), %rdi
addq $0xc0, %rdi
movq %rdi, -0x600(%rbp)
callq 0x6cd0
movq -0x5f8(%rbp), %rdi
addq $0xf0, %rdi
movq %rdi, -0x5f0(%rbp)
callq 0x6cd0
leaq -0x430(%rbp), %rax
movq %rax, -0x438(%rbp)
movl $0x0, -0x444(%rbp)
movl $0x0, -0x448(%rbp)
leaq -0x440(%rbp), %rdi
leaq -0x444(%rbp), %rsi
leaq -0x448(%rbp), %rdx
callq 0x6cf0
jmp 0x3fe6
leaq 0x1702b(%rip), %rsi     # 0x1b018
leaq -0x430(%rbp), %rdi
leaq -0x440(%rbp), %rdx
callq 0x6d20
jmp 0x4002
leaq -0x408(%rbp), %rax
movq %rax, -0x630(%rbp)
movq %rax, -0x438(%rbp)
movl $0x1, -0x460(%rbp)
movl $0x0, -0x464(%rbp)
leaq -0x45c(%rbp), %rdi
leaq -0x460(%rbp), %rsi
leaq -0x464(%rbp), %rdx
callq 0x6cf0
jmp 0x4047
movq -0x630(%rbp), %rdi
leaq 0x16fc8(%rip), %rsi     # 0x1b01d
leaq -0x45c(%rbp), %rdx
callq 0x6da0
jmp 0x4063
leaq -0x3e0(%rbp), %rax
movq %rax, -0x638(%rbp)
movq %rax, -0x438(%rbp)
movl $0x2, -0x470(%rbp)
movl $0x0, -0x474(%rbp)
leaq -0x46c(%rbp), %rdi
leaq -0x470(%rbp), %rsi
leaq -0x474(%rbp), %rdx
callq 0x6cf0
jmp 0x40a8
movq -0x638(%rbp), %rdi
leaq 0x16f6b(%rip), %rsi     # 0x1b021
leaq -0x46c(%rbp), %rdx
callq 0x6d20
jmp 0x40c4
leaq -0x3b8(%rbp), %rax
movq %rax, -0x640(%rbp)
movq %rax, -0x438(%rbp)
movl $0x3, -0x480(%rbp)
movl $0x1, -0x484(%rbp)
leaq -0x47c(%rbp), %rdi
leaq -0x480(%rbp), %rsi
leaq -0x484(%rbp), %rdx
callq 0x6cf0
jmp 0x4109
movq -0x640(%rbp), %rdi
leaq 0x16f0f(%rip), %rsi     # 0x1b026
leaq -0x47c(%rbp), %rdx
callq 0x6d20
jmp 0x4125
leaq -0x390(%rbp), %rax
movq %rax, -0x648(%rbp)
movq %rax, -0x438(%rbp)
movl $0x4, -0x490(%rbp)
movl $0x0, -0x494(%rbp)
leaq -0x48c(%rbp), %rdi
leaq -0x490(%rbp), %rsi
leaq -0x494(%rbp), %rdx
callq 0x6cf0
jmp 0x416a
movq -0x648(%rbp), %rdi
leaq 0x16eb3(%rip), %rsi     # 0x1b02b
leaq -0x48c(%rbp), %rdx
callq 0x6da0
jmp 0x4186
leaq -0x368(%rbp), %rax
movq %rax, -0x650(%rbp)
movq %rax, -0x438(%rbp)
movl $0x5, -0x4a0(%rbp)
movl $0x0, -0x4a4(%rbp)
leaq -0x49c(%rbp), %rdi
leaq -0x4a0(%rbp), %rsi
leaq -0x4a4(%rbp), %rdx
callq 0x6cf0
jmp 0x41cb
movq -0x650(%rbp), %rdi
leaq 0x16e56(%rip), %rsi     # 0x1b02f
leaq -0x49c(%rbp), %rdx
callq 0x6da0
jmp 0x41e7
leaq -0x340(%rbp), %rax
movq %rax, -0x658(%rbp)
movq %rax, -0x438(%rbp)
movl $0x6, -0x4b0(%rbp)
movl $0x0, -0x4b4(%rbp)
leaq -0x4ac(%rbp), %rdi
leaq -0x4b0(%rbp), %rsi
leaq -0x4b4(%rbp), %rdx
callq 0x6cf0
jmp 0x422c
movq -0x658(%rbp), %rdi
leaq 0x16df9(%rip), %rsi     # 0x1b033
leaq -0x4ac(%rbp), %rdx
callq 0x6da0
jmp 0x4248
leaq -0x318(%rbp), %rax
movq %rax, -0x660(%rbp)
movq %rax, -0x438(%rbp)
movl $0x7, -0x4c0(%rbp)
movl $0x0, -0x4c4(%rbp)
leaq -0x4bc(%rbp), %rdi
leaq -0x4c0(%rbp), %rsi
leaq -0x4c4(%rbp), %rdx
callq 0x6cf0
jmp 0x428d
movq -0x660(%rbp), %rdi
leaq 0x16d9c(%rip), %rsi     # 0x1b037
leaq -0x4bc(%rbp), %rdx
callq 0x6da0
jmp 0x42a9
leaq -0x2f0(%rbp), %rax
movq %rax, -0x668(%rbp)
movq %rax, -0x438(%rbp)
movl $0x8, -0x4d0(%rbp)
movl $0x0, -0x4d4(%rbp)
leaq -0x4cc(%rbp), %rdi
leaq -0x4d0(%rbp), %rsi
leaq -0x4d4(%rbp), %rdx
callq 0x6cf0
jmp 0x42ee
movq -0x668(%rbp), %rdi
leaq 0x16d3f(%rip), %rsi     # 0x1b03b
leaq -0x4cc(%rbp), %rdx
callq 0x6e20
jmp 0x430a
leaq -0x2c8(%rbp), %rax
movq %rax, -0x670(%rbp)
movq %rax, -0x438(%rbp)
movl $0x9, -0x4e0(%rbp)
movl $0x0, -0x4e4(%rbp)
leaq -0x4dc(%rbp), %rdi
leaq -0x4e0(%rbp), %rsi
leaq -0x4e4(%rbp), %rdx
callq 0x6cf0
jmp 0x434f
movq -0x670(%rbp), %rdi
leaq 0x16ce1(%rip), %rsi     # 0x1b03e
leaq -0x4dc(%rbp), %rdx
callq 0x6e20
jmp 0x436b
leaq -0x2a0(%rbp), %rax
movq %rax, -0x678(%rbp)
movq %rax, -0x438(%rbp)
movl $0x8, -0x4f0(%rbp)
movl $0x0, -0x4f4(%rbp)
leaq -0x4ec(%rbp), %rdi
leaq -0x4f0(%rbp), %rsi
leaq -0x4f4(%rbp), %rdx
callq 0x6cf0
jmp 0x43b0
movq -0x678(%rbp), %rdi
leaq 0x16c83(%rip), %rsi     # 0x1b041
leaq -0x4ec(%rbp), %rdx
callq 0x6da0
jmp 0x43cc
leaq -0x278(%rbp), %rax
movq %rax, -0x680(%rbp)
movq %rax, -0x438(%rbp)
movl $0x9, -0x500(%rbp)
movl $0x0, -0x504(%rbp)
leaq -0x4fc(%rbp), %rdi
leaq -0x500(%rbp), %rsi
leaq -0x504(%rbp), %rdx
callq 0x6cf0
jmp 0x4411
movq -0x680(%rbp), %rdi
leaq 0x16c26(%rip), %rsi     # 0x1b045
leaq -0x4fc(%rbp), %rdx
callq 0x6da0
jmp 0x442d
leaq -0x250(%rbp), %rax
movq %rax, -0x688(%rbp)
movq %rax, -0x438(%rbp)
movl $0x8, -0x510(%rbp)
movl $0x0, -0x514(%rbp)
leaq -0x50c(%rbp), %rdi
leaq -0x510(%rbp), %rsi
leaq -0x514(%rbp), %rdx
callq 0x6cf0
jmp 0x4472
movq -0x688(%rbp), %rdi
leaq 0x16bc9(%rip), %rsi     # 0x1b049
leaq -0x50c(%rbp), %rdx
callq 0x6da0
jmp 0x448e
leaq -0x228(%rbp), %rax
movq %rax, -0x690(%rbp)
movq %rax, -0x438(%rbp)
movl $0x9, -0x520(%rbp)
movl $0x0, -0x524(%rbp)
leaq -0x51c(%rbp), %rdi
leaq -0x520(%rbp), %rsi
leaq -0x524(%rbp), %rdx
callq 0x6cf0
jmp 0x44d3
movq -0x690(%rbp), %rdi
leaq 0x16b6c(%rip), %rsi     # 0x1b04d
leaq -0x51c(%rbp), %rdx
callq 0x6e20
jmp 0x44ef
leaq -0x200(%rbp), %rax
movq %rax, -0x698(%rbp)
movq %rax, -0x438(%rbp)
movl $0xe, -0x530(%rbp)
movl $0x0, -0x534(%rbp)
leaq -0x52c(%rbp), %rdi
leaq -0x530(%rbp), %rsi
leaq -0x534(%rbp), %rdx
callq 0x6cf0
jmp 0x4534
movq -0x698(%rbp), %rdi
leaq 0x16b0e(%rip), %rsi     # 0x1b050
leaq -0x52c(%rbp), %rdx
callq 0x6da0
jmp 0x4550
leaq -0x1d8(%rbp), %rax
movq %rax, -0x6a0(%rbp)
movq %rax, -0x438(%rbp)
movl $0xf, -0x540(%rbp)
movl $0x0, -0x544(%rbp)
leaq -0x53c(%rbp), %rdi
leaq -0x540(%rbp), %rsi
leaq -0x544(%rbp), %rdx
callq 0x6cf0
jmp 0x4595
movq -0x6a0(%rbp), %rdi
leaq 0x16ab1(%rip), %rsi     # 0x1b054
leaq -0x53c(%rbp), %rdx
callq 0x6da0
jmp 0x45b1
leaq -0x1b0(%rbp), %rax
movq %rax, -0x6a8(%rbp)
movq %rax, -0x438(%rbp)
movl $0x10, -0x550(%rbp)
movl $0x1, -0x554(%rbp)
leaq -0x54c(%rbp), %rdi
leaq -0x550(%rbp), %rsi
leaq -0x554(%rbp), %rdx
callq 0x6cf0
jmp 0x45f6
movq -0x6a8(%rbp), %rdi
leaq 0x16a54(%rip), %rsi     # 0x1b058
leaq -0x54c(%rbp), %rdx
callq 0x6d20
jmp 0x4612
leaq -0x188(%rbp), %rax
movq %rax, -0x6b0(%rbp)
movq %rax, -0x438(%rbp)
movl $0x11, -0x560(%rbp)
movl $0x1, -0x564(%rbp)
leaq -0x55c(%rbp), %rdi
leaq -0x560(%rbp), %rsi
leaq -0x564(%rbp), %rdx
callq 0x6cf0
jmp 0x4657
movq -0x6b0(%rbp), %rdi
leaq 0x169f8(%rip), %rsi     # 0x1b05d
leaq -0x55c(%rbp), %rdx
callq 0x6e20
jmp 0x4673
leaq -0x160(%rbp), %rax
movq %rax, -0x6b8(%rbp)
movq %rax, -0x438(%rbp)
movl $0x12, -0x570(%rbp)
movl $0x1, -0x574(%rbp)
leaq -0x56c(%rbp), %rdi
leaq -0x570(%rbp), %rsi
leaq -0x574(%rbp), %rdx
callq 0x6cf0
jmp 0x46b8
movq -0x6b8(%rbp), %rdi
leaq 0x1699a(%rip), %rsi     # 0x1b060
leaq -0x56c(%rbp), %rdx
callq 0x6da0
jmp 0x46d4
leaq -0x138(%rbp), %rax
movq %rax, -0x6c0(%rbp)
movq %rax, -0x438(%rbp)
movl $0x14, -0x580(%rbp)
movl $0x1, -0x584(%rbp)
leaq -0x57c(%rbp), %rdi
leaq -0x580(%rbp), %rsi
leaq -0x584(%rbp), %rdx
callq 0x6cf0
jmp 0x4719
movq -0x6c0(%rbp), %rdi
leaq 0x1693d(%rip), %rsi     # 0x1b064
leaq -0x57c(%rbp), %rdx
callq 0x6da0
jmp 0x4735
leaq -0x110(%rbp), %rax
movq %rax, -0x6c8(%rbp)
movq %rax, -0x438(%rbp)
movl $0x15, -0x590(%rbp)
movl $0x1, -0x594(%rbp)
leaq -0x58c(%rbp), %rdi
leaq -0x590(%rbp), %rsi
leaq -0x594(%rbp), %rdx
callq 0x6cf0
jmp 0x477a
movq -0x6c8(%rbp), %rdi
leaq 0x168e0(%rip), %rsi     # 0x1b068
leaq -0x58c(%rbp), %rdx
callq 0x6d20
jmp 0x4796
leaq -0xe8(%rbp), %rax
movq %rax, -0x6d0(%rbp)
movq %rax, -0x438(%rbp)
movl $0x16, -0x5a0(%rbp)
movl $0x1, -0x5a4(%rbp)
leaq -0x59c(%rbp), %rdi
leaq -0x5a0(%rbp), %rsi
leaq -0x5a4(%rbp), %rdx
callq 0x6cf0
jmp 0x47db
movq -0x6d0(%rbp), %rdi
leaq 0x16884(%rip), %rsi     # 0x1b06d
leaq -0x59c(%rbp), %rdx
callq 0x6d20
jmp 0x47f7
leaq -0xc0(%rbp), %rax
movq %rax, -0x6d8(%rbp)
movq %rax, -0x438(%rbp)
movl $0x17, -0x5b0(%rbp)
movl $0x1, -0x5b4(%rbp)
leaq -0x5ac(%rbp), %rdi
leaq -0x5b0(%rbp), %rsi
leaq -0x5b4(%rbp), %rdx
callq 0x6cf0
jmp 0x483c
movq -0x6d8(%rbp), %rdi
leaq 0x16828(%rip), %rsi     # 0x1b072
leaq -0x5ac(%rbp), %rdx
callq 0x6d20
jmp 0x4858
leaq -0x98(%rbp), %rax
movq %rax, -0x6e0(%rbp)
movq %rax, -0x438(%rbp)
movl $0x18, -0x5c0(%rbp)
movl $0x1, -0x5c4(%rbp)
leaq -0x5bc(%rbp), %rdi
leaq -0x5c0(%rbp), %rsi
leaq -0x5c4(%rbp), %rdx
callq 0x6cf0
jmp 0x489d
movq -0x6e0(%rbp), %rdi
leaq 0x167cc(%rip), %rsi     # 0x1b077
leaq -0x5bc(%rbp), %rdx
callq 0x6d20
jmp 0x48b9
leaq -0x70(%rbp), %rax
movq %rax, -0x6e8(%rbp)
movq %rax, -0x438(%rbp)
movl $0x19, -0x5d0(%rbp)
movl $0x0, -0x5d4(%rbp)
leaq -0x5cc(%rbp), %rdi
leaq -0x5d0(%rbp), %rsi
leaq -0x5d4(%rbp), %rdx
callq 0x6cf0
jmp 0x48fb
movq -0x6e8(%rbp), %rdi
leaq 0x16773(%rip), %rsi     # 0x1b07c
leaq -0x5cc(%rbp), %rdx
callq 0x6da0
jmp 0x4917
leaq -0x48(%rbp), %rax
movq %rax, -0x6f0(%rbp)
movq %rax, -0x438(%rbp)
movl $0x1a, -0x5e0(%rbp)
movl $0x0, -0x5e4(%rbp)
leaq -0x5dc(%rbp), %rdi
leaq -0x5e0(%rbp), %rsi
leaq -0x5e4(%rbp), %rdx
callq 0x6cf0
jmp 0x4959
movq -0x6f0(%rbp), %rdi
leaq 0x16719(%rip), %rsi     # 0x1b080
leaq -0x5dc(%rbp), %rdx
callq 0x6d20
jmp 0x4975
movq -0x628(%rbp), %rdi
leaq -0x430(%rbp), %rax
movq %rax, -0x20(%rbp)
movq $0x1a, -0x18(%rbp)
addq $0x40, %rdi
movq -0x20(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x6ec0
jmp 0x49a2
leaq -0x430(%rbp), %rax
movq %rax, -0x700(%rbp)
addq $0x410, %rax            # imm = 0x410
movq %rax, -0x6f8(%rbp)
movq -0x6f8(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x708(%rbp)
callq 0x6ea0
movq -0x700(%rbp), %rcx
movq -0x708(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x6f8(%rbp)
jne 0x49bd
addq $0x730, %rsp            # imm = 0x730
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x450(%rbp)
movl %eax, -0x454(%rbp)
movq -0x438(%rbp), %rax
leaq -0x430(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x710(%rbp)
je 0x4a54
movq -0x710(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x718(%rbp)
callq 0x6ea0
movq -0x718(%rbp), %rax
leaq -0x430(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x710(%rbp)
jne 0x4a23
jmp 0x4ab6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x450(%rbp)
movl %eax, -0x454(%rbp)
leaq -0x430(%rbp), %rax
movq %rax, -0x728(%rbp)
addq $0x410, %rax            # imm = 0x410
movq %rax, -0x720(%rbp)
movq -0x720(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x730(%rbp)
callq 0x6ea0
movq -0x728(%rbp), %rcx
movq -0x730(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x720(%rbp)
jne 0x4a83
jmp 0x4ab6
movq -0x5f0(%rbp), %rdi
callq 0x6f10
movq -0x600(%rbp), %rdi
callq 0x6f10
movq -0x608(%rbp), %rdi
callq 0x6f10
movq -0x610(%rbp), %rdi
callq 0x6f30
movq -0x618(%rbp), %rdi
callq 0x6f90
movq -0x620(%rbp), %rdi
callq 0x34f8
movq -0x5f8(%rbp), %rdi
callq 0x34f8
movq -0x450(%rbp), %rdi
callq 0x3470
nopw %cs:(%rax,%rax)