// File: ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::parser<double>::expression_generator<double>::base_ptr(exprtk::details::expression_node<double>*)
const void* base_ptr(expression_node_ptr node)
         {
            if (node)
            {
               switch (node->type())
               {
                  case details::expression_node<T>::e_variable:
                     return reinterpret_cast<const void*>(&static_cast<variable_node_t*>(node)->ref());

                  case details::expression_node<T>::e_vecelem:
                     return reinterpret_cast<const void*>(&static_cast<vector_elem_node_t*>(node)->ref());

                  case details::expression_node<T>::e_veccelem:
                     return reinterpret_cast<const void*>(&static_cast<vector_celem_node_t*>(node)->ref());

                  case details::expression_node<T>::e_vecelemrtc:
                     return reinterpret_cast<const void*>(&static_cast<vector_elem_rtc_node_t*>(node)->ref());

                  case details::expression_node<T>::e_veccelemrtc:
                     return reinterpret_cast<const void*>(&static_cast<vector_celem_rtc_node_t*>(node)->ref());

                  case details::expression_node<T>::e_rbvecelem:
                     return reinterpret_cast<const void*>(&static_cast<rebasevector_elem_node_t*>(node)->ref());

                  case details::expression_node<T>::e_rbvecelemrtc:
                     return reinterpret_cast<const void*>(&static_cast<rebasevector_elem_rtc_node_t*>(node)->ref());

                  case details::expression_node<T>::e_rbveccelem:
                     return reinterpret_cast<const void*>(&static_cast<rebasevector_celem_node_t*>(node)->ref());

                  case details::expression_node<T>::e_rbveccelemrtc:
                     return reinterpret_cast<const void*>(&static_cast<rebasevector_celem_rtc_node_t*>(node)->ref());

                  case details::expression_node<T>::e_vector:
                     return reinterpret_cast<const void*>(static_cast<vector_node_t*>(node)->vec_holder().data());

                  #ifndef exprtk_disable_string_capabilities
                  case details::expression_node<T>::e_stringvar:
                     return reinterpret_cast<const void*>((static_cast<stringvar_node_t*>(node)->base()));

                  case details::expression_node<T>::e_stringvarrng:
                     return reinterpret_cast<const void*>((static_cast<string_range_node_t*>(node)->base()));
                  #endif
                  default : return reinterpret_cast<const void*>(0);
               }
            }

            return reinterpret_cast<const void*>(0);
         }

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movq %rsi, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x3ea2e1
movq 0x10(%rsp), %rdi
movq (%rdi), %rax
movq 0x28(%rax), %rax
callq *%rax
addl $-0x11, %eax
movl %eax, %ecx
movq %rcx, 0x8(%rsp)
subl $0x74, %eax
ja 0x3ea2d6
movq 0x8(%rsp), %rax
leaq 0x1b32a1(%rip), %rcx    # 0x59d488
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x10(%rsp), %rdi
callq 0x235f80
movq %rax, 0x20(%rsp)
jmp 0x3ea2ea
movq 0x10(%rsp), %rdi
callq 0x3ea4c0
movq %rax, 0x20(%rsp)
jmp 0x3ea2ea
movq 0x10(%rsp), %rdi
callq 0x3ea4d0
movq %rax, 0x20(%rsp)
jmp 0x3ea2ea
movq 0x10(%rsp), %rdi
callq 0x3ea4e0
movq %rax, 0x20(%rsp)
jmp 0x3ea2ea
movq 0x10(%rsp), %rdi
callq 0x3ea4f0
movq %rax, 0x20(%rsp)
jmp 0x3ea2ea
movq 0x10(%rsp), %rdi
callq 0x3ea500
movq %rax, 0x20(%rsp)
jmp 0x3ea2ea
movq 0x10(%rsp), %rdi
callq 0x3ea510
movq %rax, 0x20(%rsp)
jmp 0x3ea2ea
movq 0x10(%rsp), %rdi
callq 0x3ea520
movq %rax, 0x20(%rsp)
jmp 0x3ea2ea
movq 0x10(%rsp), %rdi
callq 0x3ea560
movq %rax, 0x20(%rsp)
jmp 0x3ea2ea
movq 0x10(%rsp), %rdi
callq 0x3b7a10
movq %rax, %rdi
callq 0x3ea570
movq %rax, 0x20(%rsp)
jmp 0x3ea2ea
movq 0x10(%rsp), %rdi
callq 0x3ea590
movq %rax, 0x20(%rsp)
jmp 0x3ea2ea
movq 0x10(%rsp), %rdi
callq 0x3ea5b0
movq %rax, 0x20(%rsp)
jmp 0x3ea2ea
movq $0x0, 0x20(%rsp)
jmp 0x3ea2ea
movq $0x0, 0x20(%rsp)
movq 0x20(%rsp), %rax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
nop