// File: /workspace/github_cpp_makefile_star2_O2/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:
pushq %rbx
testq %rsi, %rsi
je 0x22b3d4
movq %rsi, %rbx
movq (%rsi), %rax
movq %rsi, %rdi
callq *0x28(%rax)
movl %eax, %ecx
xorl %eax, %eax
leal -0x7c(%rcx), %edx
cmpl $0x9, %edx
ja 0x22b3d8
leaq 0xa5b8b(%rip), %rcx     # 0x2d0f4c
movslq (%rcx,%rdx,4), %rdx
addq %rcx, %rdx
jmpq *%rdx
movq 0x28(%rbx), %rdi
popq %rbx
jmp 0x22b516
xorl %eax, %eax
popq %rbx
retq
cmpl $0x14, %ecx
je 0x22b3ed
cmpl $0x12, %ecx
je 0x22b3ed
cmpl $0x11, %ecx
jne 0x22b3d6
movq 0x28(%rbx), %rax
jmp 0x22b3d6
movq 0x30(%rbx), %rax
movq (%rax), %rax
jmp 0x22b3d6
movq %rbx, %rdi
popq %rbx
jmp 0x22b70e
movq %rbx, %rdi
popq %rbx
jmp 0x22b85c
movq %rbx, %rdi
popq %rbx
jmp 0x22b66a
movq %rbx, %rdi
popq %rbx
jmp 0x22b53a
movq %rbx, %rdi
popq %rbx
jmp 0x22b4f8
movq 0x40(%rbx), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movq 0x28(%rbx), %rax
shlq $0x3, %rax
addq 0x38(%rbx), %rax
jmp 0x22b3d6
movq %rbx, %rdi
popq %rbx
jmp 0x22b5aa
movq %rbx, %rdi
popq %rbx
jmp 0x22b76a
nop