// File: /workspace/github_cpp_makefile_star2_O3/prippa[P]Abstract-VM/source/CommandsExecutor.class.cpp
// Function: CommandsExecutor::CommandsExecutor()
CommandsExecutor::CommandsExecutor(void)
{
	type_.emplace(TP_INT8, Int8);
	type_.emplace(TP_INT16, Int16);
	type_.emplace(TP_INT32, Int32);
	type_.emplace(TP_FLOAT, Float);
	type_.emplace(TP_DOUBLE, Double);

	cmd_.emplace(CM_POP, &CommandsExecutor::ce_pop);
	cmd_.emplace(CM_DUMP, &CommandsExecutor::ce_dump);
	cmd_.emplace(CM_ADD, &CommandsExecutor::ce_add);
	cmd_.emplace(CM_SUB, &CommandsExecutor::ce_sub);
	cmd_.emplace(CM_MUL, &CommandsExecutor::ce_mul);
	cmd_.emplace(CM_DIV, &CommandsExecutor::ce_div);
	cmd_.emplace(CM_MOD, &CommandsExecutor::ce_mod);
	cmd_.emplace(CM_PRINT, &CommandsExecutor::ce_print);
	cmd_.emplace(CM_EXIT, &CommandsExecutor::ce_exit);

	// Bonus
	cmd_.emplace(CM_MORE, &CommandsExecutor::ce_more);
	cmd_.emplace(CM_LESS, &CommandsExecutor::ce_less);
	cmd_.emplace(CM_MAX, &CommandsExecutor::ce_max);
	cmd_.emplace(CM_MIN, &CommandsExecutor::ce_min);
	cmd_.emplace(CM_DEBUG, &CommandsExecutor::ce_debug);


	cmd_.emplace(CM_PUSH, &CommandsExecutor::ce_push);
	cmd_.emplace(CM_ASSERT, &CommandsExecutor::ce_assert);

	left_ = nullptr;
	right_ = nullptr;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
leaq 0x8(%rdi), %rax
xorl %ecx, %ecx
movl %ecx, 0x8(%rdi)
movq %rcx, 0x10(%rdi)
movq %rax, 0x18(%rdi)
movq %rax, 0x20(%rdi)
movq %rcx, 0x28(%rdi)
leaq 0x30(%rdi), %r14
leaq 0x38(%rdi), %rax
movl %ecx, 0x38(%rdi)
movq %rcx, 0x40(%rdi)
movq %rax, 0x48(%rdi)
movq %rax, 0x50(%rdi)
movq %rcx, 0x58(%rdi)
leaq -0x28(%rbp), %rdx
movl %ecx, (%rdx)
leaq 0x1be6(%rip), %rsi      # 0x21149
callq 0x201d8
leaq -0x28(%rbp), %rdx
movl $0x1, (%rdx)
leaq 0x2e6a(%rip), %rsi      # 0x223e3
movq %rbx, %rdi
callq 0x20304
leaq -0x28(%rbp), %rdx
movl $0x2, (%rdx)
leaq 0x2e4b(%rip), %rsi      # 0x223dd
movq %rbx, %rdi
callq 0x20304
leaq -0x28(%rbp), %rdx
movl $0x3, (%rdx)
leaq 0x2e2c(%rip), %rsi      # 0x223d7
movq %rbx, %rdi
callq 0x20304
leaq -0x28(%rbp), %rdx
movl $0x4, (%rdx)
leaq 0x2e0c(%rip), %rsi      # 0x223d0
movq %rbx, %rdi
callq 0x20430
leaq -0x19bd(%rip), %rax     # 0x1dc16
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x2f86(%rip), %rsi      # 0x2256f
movq %r14, %rdi
callq 0x2055c
leaq -0x18d0(%rip), %rax     # 0x1dd28
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x2f65(%rip), %rsi      # 0x22573
movq %r14, %rdi
callq 0x2068a
leaq -0x1875(%rip), %rax     # 0x1dda8
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x2f45(%rip), %rsi      # 0x22578
movq %r14, %rdi
callq 0x2055c
leaq -0x178a(%rip), %rax     # 0x1deb8
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x2f24(%rip), %rsi      # 0x2257c
movq %r14, %rdi
callq 0x2055c
leaq -0x169f(%rip), %rax     # 0x1dfc8
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x2f03(%rip), %rsi      # 0x22580
movq %r14, %rdi
callq 0x2055c
leaq -0x15b4(%rip), %rax     # 0x1e0d8
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x2ee2(%rip), %rsi      # 0x22584
movq %r14, %rdi
callq 0x2055c
leaq -0x14c9(%rip), %rax     # 0x1e1e8
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x2ec1(%rip), %rsi      # 0x22588
movq %r14, %rdi
callq 0x2055c
leaq -0x13de(%rip), %rax     # 0x1e2f8
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x1e5b(%rip), %rsi      # 0x21547
movq %r14, %rdi
callq 0x207b8
leaq -0x1205(%rip), %rax     # 0x1e4f6
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x1cca(%rip), %rsi      # 0x213db
movq %r14, %rdi
callq 0x2068a
leaq -0x602(%rip), %rax      # 0x1f11e
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x2e56(%rip), %rsi      # 0x2258c
movq %r14, %rdi
callq 0x2068a
leaq -0x8f5(%rip), %rax      # 0x1ee50
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x2e36(%rip), %rsi      # 0x22591
movq %r14, %rdi
callq 0x2068a
leaq -0x126a(%rip), %rax     # 0x1e500
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x2e16(%rip), %rsi      # 0x22596
movq %r14, %rdi
callq 0x2055c
leaq -0x112d(%rip), %rax     # 0x1e662
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x2df5(%rip), %rsi      # 0x2259a
movq %r14, %rdi
callq 0x2055c
leaq -0xff0(%rip), %rax      # 0x1e7c4
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x2dd4(%rip), %rsi      # 0x2259e
movq %r14, %rdi
callq 0x207b8
leaq -0xde7(%rip), %rax      # 0x1e9f2
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x2db5(%rip), %rsi      # 0x225a4
movq %r14, %rdi
callq 0x2068a
leaq -0xc7c(%rip), %rax      # 0x1eb82
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x2d95(%rip), %rsi      # 0x225a9
movq %r14, %rdi
callq 0x208e6
xorps %xmm0, %xmm0
movups %xmm0, 0x60(%rbx)
addq $0x18, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x1f856
jmp 0x1f856
jmp 0x1f856
jmp 0x1f856
jmp 0x1f856
jmp 0x1f856
jmp 0x1f856
jmp 0x1f856
jmp 0x1f856
jmp 0x1f856
jmp 0x1f856
jmp 0x1f856
jmp 0x1f856
jmp 0x1f856
jmp 0x1f856
jmp 0x1f856
jmp 0x1f856
jmp 0x1f856
jmp 0x1f856
jmp 0x1f856
movq %rax, %r15
movq %r14, %rdi
callq 0x1fa08
movq %rbx, %rdi
callq 0x1fa9c
movq %r15, %rdi
callq 0x6560
nop