// File: /workspace/github_cpp_makefile_star2_O1/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 0x1b90(%rip), %rsi      # 0x21149
callq 0x20242
leaq -0x28(%rbp), %rdx
movl $0x1, (%rdx)
leaq 0x2e14(%rip), %rsi      # 0x223e3
movq %rbx, %rdi
callq 0x2036e
leaq -0x28(%rbp), %rdx
movl $0x2, (%rdx)
leaq 0x2df5(%rip), %rsi      # 0x223dd
movq %rbx, %rdi
callq 0x2036e
leaq -0x28(%rbp), %rdx
movl $0x3, (%rdx)
leaq 0x2dd6(%rip), %rsi      # 0x223d7
movq %rbx, %rdi
callq 0x2036e
leaq -0x28(%rbp), %rdx
movl $0x4, (%rdx)
leaq 0x2db6(%rip), %rsi      # 0x223d0
movq %rbx, %rdi
callq 0x2049a
leaq -0x1a5b(%rip), %rax     # 0x1dbce
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x2f30(%rip), %rsi      # 0x2256f
movq %r14, %rdi
callq 0x205c6
leaq -0x1962(%rip), %rax     # 0x1dcec
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x2f0f(%rip), %rsi      # 0x22573
movq %r14, %rdi
callq 0x206f4
leaq -0x1907(%rip), %rax     # 0x1dd6c
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x2eef(%rip), %rsi      # 0x22578
movq %r14, %rdi
callq 0x205c6
leaq -0x181c(%rip), %rax     # 0x1de7c
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x2ece(%rip), %rsi      # 0x2257c
movq %r14, %rdi
callq 0x205c6
leaq -0x1731(%rip), %rax     # 0x1df8c
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x2ead(%rip), %rsi      # 0x22580
movq %r14, %rdi
callq 0x205c6
leaq -0x1646(%rip), %rax     # 0x1e09c
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x2e8c(%rip), %rsi      # 0x22584
movq %r14, %rdi
callq 0x205c6
leaq -0x155b(%rip), %rax     # 0x1e1ac
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x2e6b(%rip), %rsi      # 0x22588
movq %r14, %rdi
callq 0x205c6
leaq -0x1470(%rip), %rax     # 0x1e2bc
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x1e05(%rip), %rsi      # 0x21547
movq %r14, %rdi
callq 0x20822
leaq -0x128b(%rip), %rax     # 0x1e4c6
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x1c74(%rip), %rsi      # 0x213db
movq %r14, %rdi
callq 0x206f4
leaq -0x628(%rip), %rax      # 0x1f14e
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x2e00(%rip), %rsi      # 0x2258c
movq %r14, %rdi
callq 0x206f4
leaq -0x939(%rip), %rax      # 0x1ee62
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x2de0(%rip), %rsi      # 0x22591
movq %r14, %rdi
callq 0x206f4
leaq -0x12f0(%rip), %rax     # 0x1e4d0
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x2dc0(%rip), %rsi      # 0x22596
movq %r14, %rdi
callq 0x205c6
leaq -0x11ab(%rip), %rax     # 0x1e63a
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x2d9f(%rip), %rsi      # 0x2259a
movq %r14, %rdi
callq 0x205c6
leaq -0x1066(%rip), %rax     # 0x1e7a4
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x2d7e(%rip), %rsi      # 0x2259e
movq %r14, %rdi
callq 0x20822
leaq -0xe5d(%rip), %rax      # 0x1e9d2
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x2d5f(%rip), %rsi      # 0x225a4
movq %r14, %rdi
callq 0x206f4
leaq -0xcde(%rip), %rax      # 0x1eb76
leaq -0x28(%rbp), %rdx
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
leaq 0x2d3f(%rip), %rsi      # 0x225a9
movq %r14, %rdi
callq 0x20950
xorps %xmm0, %xmm0
movups %xmm0, 0x60(%rbx)
addq $0x18, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x1f8ac
jmp 0x1f8ac
jmp 0x1f8ac
jmp 0x1f8ac
jmp 0x1f8ac
jmp 0x1f8ac
jmp 0x1f8ac
jmp 0x1f8ac
jmp 0x1f8ac
jmp 0x1f8ac
jmp 0x1f8ac
jmp 0x1f8ac
jmp 0x1f8ac
jmp 0x1f8ac
jmp 0x1f8ac
jmp 0x1f8ac
jmp 0x1f8ac
jmp 0x1f8ac
jmp 0x1f8ac
jmp 0x1f8ac
movq %rax, %r15
movq %r14, %rdi
callq 0x1fa5e
movq %rbx, %rdi
callq 0x1faf2
movq %r15, %rdi
callq 0x6560
nop