// File: s0sasaki[P]ExecutableBlockchain/vm.cpp
// Function: VM::displayOp(int const&) const
void VM::displayOp(const int32_t &idx) const{
    switch(idx) {
        case OP_RET    : std::cout << "OP_RET  " << std::endl; break;
        case OP_CALL   : std::cout << "OP_CALL " << std::endl; break;
        case OP_JMP    : std::cout << "OP_JMP  " << std::endl; break;
        case OP_JZ     : std::cout << "OP_JZ   " << std::endl; break;
        case OP_EQ     : std::cout << "OP_EQ   " << std::endl; break;
        case OP_GE     : std::cout << "OP_GE   " << std::endl; break;
        case OP_LE     : std::cout << "OP_LE   " << std::endl; break;
        case OP_GNE    : std::cout << "OP_GNE  " << std::endl; break;
        case OP_LNE    : std::cout << "OP_LNE  " << std::endl; break;
        case OP_PUSH   : std::cout << "OP_PUSH " << std::endl; break;
        case OP_POP    : std::cout << "OP_POP  " << std::endl; break;
        case OP_DUP    : std::cout << "OP_DUP  " << std::endl; break;
        case OP_OVER   : std::cout << "OP_OVER " << std::endl; break;
        case OP_SWAP   : std::cout << "OP_SWAP " << std::endl; break;
        case OP_DROP   : std::cout << "OP_DROP " << std::endl; break;
        case OP_ADD    : std::cout << "OP_ADD  " << std::endl; break;
        case OP_SUB    : std::cout << "OP_SUB  " << std::endl; break;
        case OP_MUL    : std::cout << "OP_MUL  " << std::endl; break;
        case OP_DIV    : std::cout << "OP_DIV  " << std::endl; break;
        case OP_NOP    : std::cout << "OP_NOP  " << std::endl; break;
        case OP_DOT    : std::cout << "OP_DOT  " << std::endl; break;
        case OP_HALT   : std::cout << "OP_HALT " << std::endl; break;
        case OP_LOAD   : std::cout << "OP_LOAD " << std::endl; break;
        case OP_STORE  : std::cout << "OP_STORE" << std::endl; break;
        default        : std::cout << "UNKNOWN " << std::endl; break;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movl (%rax), %eax
movq %rax, -0x18(%rbp)
subq $0x17, %rax
ja 0xb2d7
movq -0x18(%rbp), %rax
leaq 0x1399(%rip), %rcx      # 0xc2c8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x7091(%rip), %rdi      # 0x11fd0
leaq 0x13e2(%rip), %rsi      # 0xc328
callq 0x2210
movq %rax, %rdi
movq 0x706b(%rip), %rsi      # 0x11fc0
callq 0x2250
jmp 0xb2f9
movq 0x706a(%rip), %rdi      # 0x11fd0
leaq 0x13c4(%rip), %rsi      # 0xc331
callq 0x2210
movq %rax, %rdi
movq 0x7044(%rip), %rsi      # 0x11fc0
callq 0x2250
jmp 0xb2f9
movq 0x7043(%rip), %rdi      # 0x11fd0
leaq 0x13a6(%rip), %rsi      # 0xc33a
callq 0x2210
movq %rax, %rdi
movq 0x701d(%rip), %rsi      # 0x11fc0
callq 0x2250
jmp 0xb2f9
movq 0x701c(%rip), %rdi      # 0x11fd0
leaq 0x1388(%rip), %rsi      # 0xc343
callq 0x2210
movq %rax, %rdi
movq 0x6ff6(%rip), %rsi      # 0x11fc0
callq 0x2250
jmp 0xb2f9
movq 0x6ff5(%rip), %rdi      # 0x11fd0
leaq 0x136a(%rip), %rsi      # 0xc34c
callq 0x2210
movq %rax, %rdi
movq 0x6fcf(%rip), %rsi      # 0x11fc0
callq 0x2250
jmp 0xb2f9
movq 0x6fce(%rip), %rdi      # 0x11fd0
leaq 0x134c(%rip), %rsi      # 0xc355
callq 0x2210
movq %rax, %rdi
movq 0x6fa8(%rip), %rsi      # 0x11fc0
callq 0x2250
jmp 0xb2f9
movq 0x6fa7(%rip), %rdi      # 0x11fd0
leaq 0x132e(%rip), %rsi      # 0xc35e
callq 0x2210
movq %rax, %rdi
movq 0x6f81(%rip), %rsi      # 0x11fc0
callq 0x2250
jmp 0xb2f9
movq 0x6f80(%rip), %rdi      # 0x11fd0
leaq 0x1310(%rip), %rsi      # 0xc367
callq 0x2210
movq %rax, %rdi
movq 0x6f5a(%rip), %rsi      # 0x11fc0
callq 0x2250
jmp 0xb2f9
movq 0x6f59(%rip), %rdi      # 0x11fd0
leaq 0x12f2(%rip), %rsi      # 0xc370
callq 0x2210
movq %rax, %rdi
movq 0x6f33(%rip), %rsi      # 0x11fc0
callq 0x2250
jmp 0xb2f9
movq 0x6f32(%rip), %rdi      # 0x11fd0
leaq 0x12d4(%rip), %rsi      # 0xc379
callq 0x2210
movq %rax, %rdi
movq 0x6f0c(%rip), %rsi      # 0x11fc0
callq 0x2250
jmp 0xb2f9
movq 0x6f0b(%rip), %rdi      # 0x11fd0
leaq 0x12b6(%rip), %rsi      # 0xc382
callq 0x2210
movq %rax, %rdi
movq 0x6ee5(%rip), %rsi      # 0x11fc0
callq 0x2250
jmp 0xb2f9
movq 0x6ee4(%rip), %rdi      # 0x11fd0
leaq 0x1298(%rip), %rsi      # 0xc38b
callq 0x2210
movq %rax, %rdi
movq 0x6ebe(%rip), %rsi      # 0x11fc0
callq 0x2250
jmp 0xb2f9
movq 0x6ebd(%rip), %rdi      # 0x11fd0
leaq 0x127a(%rip), %rsi      # 0xc394
callq 0x2210
movq %rax, %rdi
movq 0x6e97(%rip), %rsi      # 0x11fc0
callq 0x2250
jmp 0xb2f9
movq 0x6e96(%rip), %rdi      # 0x11fd0
leaq 0x125c(%rip), %rsi      # 0xc39d
callq 0x2210
movq %rax, %rdi
movq 0x6e70(%rip), %rsi      # 0x11fc0
callq 0x2250
jmp 0xb2f9
movq 0x6e6f(%rip), %rdi      # 0x11fd0
leaq 0x123e(%rip), %rsi      # 0xc3a6
callq 0x2210
movq %rax, %rdi
movq 0x6e49(%rip), %rsi      # 0x11fc0
callq 0x2250
jmp 0xb2f9
movq 0x6e48(%rip), %rdi      # 0x11fd0
leaq 0x1220(%rip), %rsi      # 0xc3af
callq 0x2210
movq %rax, %rdi
movq 0x6e22(%rip), %rsi      # 0x11fc0
callq 0x2250
jmp 0xb2f9
movq 0x6e21(%rip), %rdi      # 0x11fd0
leaq 0x1202(%rip), %rsi      # 0xc3b8
callq 0x2210
movq %rax, %rdi
movq 0x6dfb(%rip), %rsi      # 0x11fc0
callq 0x2250
jmp 0xb2f9
movq 0x6dfa(%rip), %rdi      # 0x11fd0
leaq 0x11e4(%rip), %rsi      # 0xc3c1
callq 0x2210
movq %rax, %rdi
movq 0x6dd4(%rip), %rsi      # 0x11fc0
callq 0x2250
jmp 0xb2f9
movq 0x6dd3(%rip), %rdi      # 0x11fd0
leaq 0x11c6(%rip), %rsi      # 0xc3ca
callq 0x2210
movq %rax, %rdi
movq 0x6dad(%rip), %rsi      # 0x11fc0
callq 0x2250
jmp 0xb2f9
movq 0x6dac(%rip), %rdi      # 0x11fd0
leaq 0x11a8(%rip), %rsi      # 0xc3d3
callq 0x2210
movq %rax, %rdi
movq 0x6d86(%rip), %rsi      # 0x11fc0
callq 0x2250
jmp 0xb2f9
movq 0x6d85(%rip), %rdi      # 0x11fd0
leaq 0x118a(%rip), %rsi      # 0xc3dc
callq 0x2210
movq %rax, %rdi
movq 0x6d5f(%rip), %rsi      # 0x11fc0
callq 0x2250
jmp 0xb2f9
movq 0x6d5e(%rip), %rdi      # 0x11fd0
leaq 0x116c(%rip), %rsi      # 0xc3e5
callq 0x2210
movq %rax, %rdi
movq 0x6d38(%rip), %rsi      # 0x11fc0
callq 0x2250
jmp 0xb2f9
movq 0x6d3a(%rip), %rdi      # 0x11fd0
leaq 0x1151(%rip), %rsi      # 0xc3ee
callq 0x2210
movq %rax, %rdi
movq 0x6d14(%rip), %rsi      # 0x11fc0
callq 0x2250
jmp 0xb2f9
movq 0x6d16(%rip), %rdi      # 0x11fd0
leaq 0x1136(%rip), %rsi      # 0xc3f7
callq 0x2210
movq %rax, %rdi
movq 0x6cf0(%rip), %rsi      # 0x11fc0
callq 0x2250
jmp 0xb2f9
movq 0x6cf2(%rip), %rdi      # 0x11fd0
leaq 0x111b(%rip), %rsi      # 0xc400
callq 0x2210
movq %rax, %rdi
movq 0x6ccc(%rip), %rsi      # 0x11fc0
callq 0x2250
addq $0x20, %rsp
popq %rbp
retq
nop