// File: /workspace/github_cpp_makefile_star2_O2/syusui-s[P]old_rpn_language/./element.h
// Function: calc_elements(Element**, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
Element* calc_elements(Element** elementarray, std::string op){
	Element* rtn;
	if(op=="+") rtn = op_plus(elementarray[0],elementarray[1]);
	else if(op=="-") rtn = op_minus(elementarray[0],elementarray[1]);
	else if(op=="*") rtn = op_multiply(elementarray[0],elementarray[1]);
	else if(op=="/") rtn = op_divide(elementarray[0],elementarray[1]);
	else if(op=="mod") rtn = op_modulo(elementarray[0],elementarray[1]);
	else if(op=="abs") rtn = fn_absolute(elementarray[0]);
	else if(op=="pm") rtn = fn_pm(elementarray[0]);
	else if(op=="1/x" || op=="inv") rtn = fn_inverse(elementarray[0]);
	else if(op=="pow") rtn = fn_pow(elementarray[0],elementarray[1]);
	else if(op=="^2") rtn = fn_square(elementarray[0]);
	else if(op=="^3") rtn = fn_cube(elementarray[0]);
	else if(op=="sqrt") rtn = fn_sqrt(elementarray[0]);
	else if(op=="cbrt") rtn = fn_cbrt(elementarray[0]);
	else if(op=="print") rtn = fn_print(elementarray[0]);
	else throw((std::string)"この演算子、もしくは関数はまだ定義されていません。");

	return rtn;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x1b40(%rip), %rsi      # 0x60f7
movq %r14, %rdi
callq 0x4f1a
testb %al, %al
je 0x45d6
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x34bc
leaq 0x1b1c(%rip), %rsi      # 0x60f9
movq %r14, %rdi
callq 0x4f1a
testb %al, %al
je 0x45fc
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x36ed
leaq 0x1af8(%rip), %rsi      # 0x60fb
movq %r14, %rdi
callq 0x4f1a
testb %al, %al
je 0x4622
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x3922
leaq 0x1ad4(%rip), %rsi      # 0x60fd
movq %r14, %rdi
callq 0x4f1a
testb %al, %al
je 0x4648
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x3b58
leaq 0x1ab0(%rip), %rsi      # 0x60ff
movq %r14, %rdi
callq 0x4f1a
testb %al, %al
je 0x466e
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x3c29
leaq 0x1a8e(%rip), %rsi      # 0x6103
movq %r14, %rdi
callq 0x4f1a
testb %al, %al
je 0x4690
movq (%rbx), %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x3e71
leaq 0x1a70(%rip), %rsi      # 0x6107
movq %r14, %rdi
callq 0x4f1a
testb %al, %al
je 0x46b2
movq (%rbx), %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x3fdb
leaq 0x1a51(%rip), %rsi      # 0x610a
movq %r14, %rdi
callq 0x4f1a
testb %al, %al
jne 0x46d8
leaq 0x1a42(%rip), %rsi      # 0x610e
movq %r14, %rdi
callq 0x4f1a
testb %al, %al
je 0x46e7
movq (%rbx), %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x4133
leaq 0x1a24(%rip), %rsi      # 0x6112
movq %r14, %rdi
callq 0x4f1a
testb %al, %al
je 0x470d
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x41c8
leaq 0x1a02(%rip), %rsi      # 0x6116
movq %r14, %rdi
callq 0x4f1a
testb %al, %al
je 0x472f
movq (%rbx), %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x429d
leaq 0x19e3(%rip), %rsi      # 0x6119
movq %r14, %rdi
callq 0x4f1a
testb %al, %al
je 0x4751
movq (%rbx), %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x432e
leaq 0x19c4(%rip), %rsi      # 0x611c
movq %r14, %rdi
callq 0x4f1a
testb %al, %al
je 0x4773
movq (%rbx), %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x43c8
leaq 0x19a7(%rip), %rsi      # 0x6121
movq %r14, %rdi
callq 0x4f1a
testb %al, %al
je 0x4795
movq (%rbx), %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x446c
leaq 0x19ac(%rip), %rsi      # 0x6148
movq %r14, %rdi
callq 0x4f1a
testb %al, %al
je 0x47b7
movq (%rbx), %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x44e6
pushq $0x20
popq %rdi
callq 0x20f0
movq %rax, %rbx
leaq 0x1a27(%rip), %rsi      # 0x61f0
leaq 0x7(%rsp), %rdx
movq %rax, %rdi
callq 0x4eb6
leaq 0x45b3(%rip), %rsi      # 0x8d90
movq 0x47d4(%rip), %rdx      # 0x8fb8
movq %rbx, %rdi
callq 0x22c0
movq %rax, %r14
movq %rbx, %rdi
callq 0x2130
movq %r14, %rdi
callq 0x22e0