// File: /workspace/github_cpp_makefile_star2_O2/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
andl $0x0, 0x8(%rdi)
andq $0x0, 0x10(%rdi)
leaq 0x8(%rdi), %rax
movq %rax, 0x18(%rdi)
movq %rax, 0x20(%rdi)
andq $0x0, 0x28(%rdi)
leaq 0x30(%rdi), %r14
leaq 0x38(%rdi), %rax
andl $0x0, 0x38(%rdi)
andq $0x0, 0x40(%rdi)
movq %rax, 0x48(%rdi)
movq %rax, 0x50(%rdi)
andq $0x0, 0x58(%rdi)
leaq -0x28(%rbp), %rdx
andl $0x0, (%rdx)
leaq 0x2145(%rip), %rsi      # 0x1b149
callq 0x19f58
leaq -0x28(%rbp), %rdx
movl $0x1, (%rdx)
leaq 0x33c9(%rip), %rsi      # 0x1c3e3
movq %rbx, %rdi
callq 0x1a094
leaq -0x28(%rbp), %rdx
movl $0x2, (%rdx)
leaq 0x33aa(%rip), %rsi      # 0x1c3dd
movq %rbx, %rdi
callq 0x1a094
leaq -0x28(%rbp), %rdx
movl $0x3, (%rdx)
leaq 0x338b(%rip), %rsi      # 0x1c3d7
movq %rbx, %rdi
callq 0x1a094
leaq -0x28(%rbp), %rdx
movl $0x4, (%rdx)
leaq 0x336b(%rip), %rsi      # 0x1c3d0
movq %rbx, %rdi
callq 0x1a1d0
leaq -0x1176(%rip), %rax     # 0x17efe
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
andq $0x0, 0x8(%rdx)
leaq 0x34e8(%rip), %rsi      # 0x1c56f
movq %r14, %rdi
callq 0x1a30c
leaq -0x10ce(%rip), %rax     # 0x17fc8
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
andq $0x0, 0x8(%rdx)
leaq 0x34ca(%rip), %rsi      # 0x1c573
movq %r14, %rdi
callq 0x1a44a
leaq -0x109a(%rip), %rax     # 0x1801e
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
andq $0x0, 0x8(%rdx)
leaq 0x34ad(%rip), %rsi      # 0x1c578
movq %r14, %rdi
callq 0x1a30c
leaq -0xfec(%rip), %rax      # 0x180ee
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
andq $0x0, 0x8(%rdx)
leaq 0x348f(%rip), %rsi      # 0x1c57c
movq %r14, %rdi
callq 0x1a30c
leaq -0xf3e(%rip), %rax      # 0x181be
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
andq $0x0, 0x8(%rdx)
leaq 0x3471(%rip), %rsi      # 0x1c580
movq %r14, %rdi
callq 0x1a30c
leaq -0xe90(%rip), %rax      # 0x1828e
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
andq $0x0, 0x8(%rdx)
leaq 0x3453(%rip), %rsi      # 0x1c584
movq %r14, %rdi
callq 0x1a30c
leaq -0xde2(%rip), %rax      # 0x1835e
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
andq $0x0, 0x8(%rdx)
leaq 0x3435(%rip), %rsi      # 0x1c588
movq %r14, %rdi
callq 0x1a30c
leaq -0xd34(%rip), %rax      # 0x1842e
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
andq $0x0, 0x8(%rdx)
leaq 0x23d2(%rip), %rsi      # 0x1b547
movq %r14, %rdi
callq 0x1a588
leaq -0xc32(%rip), %rax      # 0x18552
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
andq $0x0, 0x8(%rdx)
leaq 0x2244(%rip), %rsi      # 0x1b3db
movq %r14, %rdi
callq 0x1a44a
leaq -0x492(%rip), %rax      # 0x18d14
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
andq $0x0, 0x8(%rdx)
leaq 0x33d3(%rip), %rsi      # 0x1c58c
movq %r14, %rdi
callq 0x1a44a
leaq -0x684(%rip), %rax      # 0x18b44
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
andq $0x0, 0x8(%rdx)
leaq 0x33b6(%rip), %rsi      # 0x1c591
movq %r14, %rdi
callq 0x1a44a
leaq -0xc8e(%rip), %rax      # 0x1855c
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
andq $0x0, 0x8(%rdx)
leaq 0x3399(%rip), %rsi      # 0x1c596
movq %r14, %rdi
callq 0x1a30c
leaq -0xba8(%rip), %rax      # 0x18664
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
andq $0x0, 0x8(%rdx)
leaq 0x337b(%rip), %rsi      # 0x1c59a
movq %r14, %rdi
callq 0x1a30c
leaq -0xac2(%rip), %rax      # 0x1876c
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
andq $0x0, 0x8(%rdx)
leaq 0x335d(%rip), %rsi      # 0x1c59e
movq %r14, %rdi
callq 0x1a588
leaq -0x9a0(%rip), %rax      # 0x188b0
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
andq $0x0, 0x8(%rdx)
leaq 0x3341(%rip), %rsi      # 0x1c5a4
movq %r14, %rdi
callq 0x1a44a
leaq -0x8fe(%rip), %rax      # 0x18974
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
andq $0x0, 0x8(%rdx)
leaq 0x3324(%rip), %rsi      # 0x1c5a9
movq %r14, %rdi
callq 0x1a6c6
xorps %xmm0, %xmm0
movups %xmm0, 0x60(%rbx)
addq $0x18, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x192c7
jmp 0x192c7
jmp 0x192c7
jmp 0x192c7
jmp 0x192c7
jmp 0x192c7
jmp 0x192c7
jmp 0x192c7
jmp 0x192c7
jmp 0x192c7
jmp 0x192c7
jmp 0x192c7
jmp 0x192c7
jmp 0x192c7
jmp 0x192c7
jmp 0x192c7
jmp 0x192c7
jmp 0x192c7
jmp 0x192c7
jmp 0x192c7
movq %rax, %r15
movq %r14, %rdi
callq 0x1942c
movq %rbx, %rdi
callq 0x194a4
movq %r15, %rdi
callq 0x6550