// File: /workspace/github_cpp_makefile_star2_O1/ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::parser<double>::parse_base_operation()
inline expression_node_ptr parse_base_operation()
      {
         typedef std::pair<base_ops_map_t::iterator,base_ops_map_t::iterator> map_range_t;

         const std::string operation_name   = current_token().value;
         const token_t     diagnostic_token = current_token();

         map_range_t itr_range = base_ops_map_.equal_range(operation_name);

         if (0 == std::distance(itr_range.first,itr_range.second))
         {
            set_error(make_error(
               parser_error::e_syntax,
               diagnostic_token,
               "ERR033 - No entry found for base operation: " + operation_name,
               exprtk_error_location));

            return error_node();
         }

         static const std::size_t MaxNumberofParameters = 4;
         expression_node_ptr param_list[MaxNumberofParameters] = {0};

         const std::size_t parameter_count = parse_base_function_call(param_list, operation_name);

         if ((parameter_count > 0) && (parameter_count <= MaxNumberofParameters))
         {
            for (base_ops_map_t::iterator itr = itr_range.first; itr != itr_range.second; ++itr)
            {
               const details::base_operation_t& operation = itr->second;

               if (operation.num_params == parameter_count)
               {
                  switch (parameter_count)
                  {
                     #define base_opr_case(N)                                         \
                     case N : {                                                       \
                                 expression_node_ptr pl##N[N] = {0};                  \
                                 std::copy(param_list, param_list + N, pl##N);        \
                                 lodge_symbol(operation_name, e_st_function);         \
                                 return expression_generator_(operation.type, pl##N); \
                              }                                                       \

                     base_opr_case(1)
                     base_opr_case(2)
                     base_opr_case(3)
                     base_opr_case(4)
                     #undef base_opr_case
                  }
               }
            }
         }

         for (std::size_t i = 0; i < MaxNumberofParameters; ++i)
         {
            free_node(node_allocator_, param_list[i]);
         }

         set_error(make_error(
            parser_error::e_syntax,
            diagnostic_token,
            "ERR034 - Invalid number of input parameters for call to function: '" + operation_name + "'",
            exprtk_error_location));

         return error_node();
      }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1c8, %rsp            # imm = 0x1C8
movq %rdi, %r13
leaq 0x40(%rsp), %rax
movq %rax, -0x10(%rax)
movq 0x78(%rdi), %rsi
movq 0x80(%rdi), %rdx
addq %rsi, %rdx
leaq 0x30(%rsp), %rdi
callq 0x1eda34
movl 0x70(%r13), %eax
leaq 0x178(%rsp), %rbp
movl %eax, -0x8(%rbp)
leaq 0x188(%rsp), %rax
movq %rax, -0x10(%rax)
movq 0x78(%r13), %rsi
movq 0x80(%r13), %rdx
addq %rsi, %rdx
movq %rbp, %rdi
callq 0x1eda34
movq 0x98(%r13), %rax
movq %rax, 0x198(%rsp)
leaq 0x3f0(%r13), %rdi
leaq 0x30(%rsp), %rsi
callq 0x29d4e2
movq %rax, %r12
movq %rdx, %r15
cmpq %rdx, %rax
je 0x279bb0
xorps %xmm0, %xmm0
leaq 0x80(%rsp), %rsi
movaps %xmm0, 0x10(%rsi)
movaps %xmm0, (%rsi)
leaq 0x30(%rsp), %rdx
movq %r13, 0x28(%rsp)
movq %r13, %rdi
callq 0x29a346
movq %rax, %r13
leaq -0x1(%rax), %rcx
movq %rcx, 0x1c0(%rsp)
cmpq $0x4, %rcx
jae 0x279e74
cmpq %r15, %r12
sete %r14b
je 0x279e6a
movq 0x28(%rsp), %rax
leaq 0x2c0(%rax), %rcx
movq %rcx, 0x50(%rsp)
addq $0x220, %rax            # imm = 0x220
movq %rax, 0x58(%rsp)
movl 0x44(%r12), %ebx
cmpq %rbx, %r13
jne 0x279b8a
leaq 0x40(%r12), %rbp
movq 0x1c0(%rsp), %rax
leaq 0x139c97(%rip), %rcx    # 0x3b3594
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x80(%rsp), %rax
movq %rax, (%rsp)
movq 0x28(%rsp), %rax
cmpb $0x1, 0x2b9(%rax)
jne 0x27998c
leaq 0xb8(%rsp), %rax
movq %rax, 0xa8(%rsp)
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
addq %rsi, %rdx
leaq 0xa8(%rsp), %rdi
callq 0x1eda34
movl $0x5, 0xc8(%rsp)
movq 0x50(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x294bc0
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0x27998c
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq 0x58(%rsp), %rdi
movq %rbp, %rsi
movq %rsp, %rdx
callq 0x29b38c
jmp 0x279b87
movq 0x90(%rsp), %rax
movq %rax, 0x10(%rsp)
movaps 0x80(%rsp), %xmm0
movaps %xmm0, (%rsp)
movq 0x28(%rsp), %rax
cmpb $0x1, 0x2b9(%rax)
jne 0x279a34
leaq 0xb8(%rsp), %rax
movq %rax, 0xa8(%rsp)
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
addq %rsi, %rdx
leaq 0xa8(%rsp), %rdi
callq 0x1eda34
movl $0x5, 0xc8(%rsp)
movq 0x50(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x294bc0
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0x279a34
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq 0x58(%rsp), %rdi
movq %rbp, %rsi
movq %rsp, %rdx
callq 0x29c9a0
jmp 0x279b87
movaps 0x80(%rsp), %xmm0
movaps 0x90(%rsp), %xmm1
movaps %xmm1, 0x10(%rsp)
movaps %xmm0, (%rsp)
movq 0x28(%rsp), %rax
cmpb $0x1, 0x2b9(%rax)
jne 0x279adc
leaq 0xb8(%rsp), %rax
movq %rax, 0xa8(%rsp)
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
addq %rsi, %rdx
leaq 0xa8(%rsp), %rdi
callq 0x1eda34
movl $0x5, 0xc8(%rsp)
movq 0x50(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x294bc0
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0x279adc
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq 0x58(%rsp), %rdi
movq %rbp, %rsi
movq %rsp, %rdx
callq 0x33a02a
jmp 0x279b87
movaps 0x80(%rsp), %xmm0
movaps %xmm0, (%rsp)
movq 0x28(%rsp), %rax
cmpb $0x1, 0x2b9(%rax)
jne 0x279b77
leaq 0xb8(%rsp), %rax
movq %rax, 0xa8(%rsp)
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
addq %rsi, %rdx
leaq 0xa8(%rsp), %rdi
callq 0x1eda34
movl $0x5, 0xc8(%rsp)
movq 0x50(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x294bc0
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0x279b77
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq 0x58(%rsp), %rdi
movq %rbp, %rsi
movq %rsp, %rdx
callq 0x29b4d6
movq %rax, %rbp
cmpq %rbx, %r13
je 0x279e6a
movq %r12, %rdi
callq 0x120500
movq %rax, %r12
cmpq %r15, %rax
sete %r14b
jne 0x2798db
jmp 0x279e6a
leaq 0x14424e(%rip), %rsi    # 0x3bde05
leaq 0x80(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x26c8c1
leaq 0x70(%rsp), %r15
movq %r15, -0x10(%r15)
movq $0x0, -0x8(%r15)
movb $0x0, (%r15)
movl $0x65c5, %ebx           # imm = 0x65C5
leaq 0x60(%rsp), %r14
movslq %ebx, %rax
imulq $0x66666667, %rax, %r12 # imm = 0x66666667
movq %r12, %rcx
shrq $0x3f, %rcx
sarq $0x22, %r12
addl %ecx, %r12d
leal (%r12,%r12), %ecx
leal (%rcx,%rcx,4), %ecx
subl %ecx, %eax
addb $0x30, %al
movsbl %al, %esi
movq %r14, %rdi
callq 0x1205d0
addl $0x9, %ebx
cmpl $0x13, %ebx
movl %r12d, %ebx
jae 0x279be8
movq 0x60(%rsp), %rax
movq 0x68(%rsp), %rcx
testq %rcx, %rcx
setne %dl
addq %rax, %rcx
decq %rcx
cmpq %rax, %rcx
seta %sil
andb %dl, %sil
cmpb $0x1, %sil
jne 0x279c65
incq %rax
movb -0x1(%rax), %dl
movb (%rcx), %sil
movb %sil, -0x1(%rax)
movb %dl, (%rcx)
decq %rcx
leaq 0x1(%rax), %rdx
cmpq %rcx, %rax
movq %rdx, %rax
jb 0x279c4a
leaq 0x143887(%rip), %rcx    # 0x3bd4f3
leaq 0x60(%rsp), %rdi
movl $0xb, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x120110
movq %r15, %r14
leaq 0x10(%rsp), %rdi
movq %rdi, -0x10(%rdi)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
movq %rbp, %rsi
movq %r13, %r15
cmpq %rcx, %rdx
je 0x279caf
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x279cb5
movups (%rcx), %xmm0
movups %xmm0, (%rdi)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
xorl %ecx, %ecx
movq %rcx, 0x8(%rax)
movb %cl, 0x10(%rax)
leaq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq %rcx, -0x8(%rbx)
movb %cl, (%rbx)
movq $-0x1, 0x10(%rbx)
leaq 0xf0(%rsp), %r12
movq %r12, -0x10(%r12)
movq %rcx, -0x8(%r12)
movb %cl, (%r12)
leaq 0x110(%rsp), %r13
movq %r13, -0x10(%r13)
movq %rcx, -0x8(%r13)
movb %cl, (%r13)
leaq 0x130(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq %rcx, -0x8(%rbp)
movb %cl, (%rbp)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rbp)
movl $0x1, -0x58(%rbp)
movl 0x170(%rsp), %eax
movl %eax, -0x68(%r13)
callq 0x1205a0
leaq 0xe0(%rsp), %rdi
movq 0x198(%rsp), %rax
movq %rax, -0x10(%rdi)
leaq 0x80(%rsp), %rsi
callq 0x1205a0
leaq 0x100(%rsp), %rdi
movq %rsp, %rsi
callq 0x1205a0
addq $0x308, %r15            # imm = 0x308
leaq 0xa8(%rsp), %rsi
movq %r15, %rdi
callq 0x26b154
movq 0x120(%rsp), %rdi
cmpq %rbp, %rdi
je 0x279dac
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq 0x100(%rsp), %rdi
cmpq %r13, %rdi
je 0x279dc9
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq 0xe0(%rsp), %rdi
cmpq %r12, %rdi
leaq 0x40(%rsp), %r12
leaq 0x188(%rsp), %r13
je 0x279df3
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq 0xb0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x279e10
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x279e2b
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq 0x60(%rsp), %rdi
cmpq %r14, %rdi
je 0x279e42
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x1200c0
leaq 0x90(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x279e63
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x1200c0
xorl %ebp, %ebp
jmp 0x27a1f9
testb $0x1, %r14b
je 0x27a1ec
xorl %ebx, %ebx
movq 0x80(%rsp,%rbx), %rdi
testq %rdi, %rdi
je 0x279eb4
movq (%rdi), %rax
callq *0x28(%rax)
cmpl $0x11, %eax
je 0x279eb4
leaq (%rsp,%rbx), %r14
addq $0x80, %r14
movq (%r14), %rdi
testq %rdi, %rdi
je 0x279eac
movq (%rdi), %rax
callq *0x28(%rax)
cmpl $0x12, %eax
je 0x279eb4
movq %r14, %rdi
callq 0x1f1690
addq $0x8, %rbx
cmpq $0x20, %rbx
jne 0x279e76
leaq 0x143f6d(%rip), %rsi    # 0x3bde32
leaq 0x60(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x26c8c1
leaq 0x146163(%rip), %rsi    # 0x3c003e
leaq 0x60(%rsp), %rdi
callq 0x120340
leaq 0x10(%rsp), %rsi
movq %rsi, -0x10(%rsi)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x279f0b
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x279f11
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
xorl %ecx, %ecx
movq %rcx, 0x8(%rax)
movb %cl, 0x10(%rax)
leaq 0x160(%rsp), %r12
movq %r12, -0x10(%r12)
movq %rcx, -0x8(%r12)
movb %cl, (%r12)
movl $0x65f4, %ebx           # imm = 0x65F4
leaq 0x150(%rsp), %r14
movslq %ebx, %rax
imulq $0x66666667, %rax, %r15 # imm = 0x66666667
movq %r15, %rcx
shrq $0x3f, %rcx
sarq $0x22, %r15
addl %ecx, %r15d
leal (%r15,%r15), %ecx
leal (%rcx,%rcx,4), %ecx
subl %ecx, %eax
addb $0x30, %al
movsbl %al, %esi
movq %r14, %rdi
callq 0x1205d0
addl $0x9, %ebx
cmpl $0x13, %ebx
movl %r15d, %ebx
jae 0x279f49
movq 0x150(%rsp), %rax
movq 0x158(%rsp), %rcx
testq %rcx, %rcx
setne %dl
addq %rax, %rcx
decq %rcx
cmpq %rax, %rcx
seta %sil
andb %dl, %sil
cmpb $0x1, %sil
jne 0x279fcc
incq %rax
movb -0x1(%rax), %dl
movb (%rcx), %sil
movb %sil, -0x1(%rax)
movb %dl, (%rcx)
decq %rcx
leaq 0x1(%rax), %rdx
cmpq %rcx, %rax
movq %rdx, %rax
jb 0x279fb1
leaq 0x143520(%rip), %rcx    # 0x3bd4f3
leaq 0x150(%rsp), %rdi
movl $0xb, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x120110
leaq 0x1b0(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x27a01a
movq %rdx, 0x1a0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x1b0(%rsp)
jmp 0x27a021
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0x1a8(%rsp)
movq %rcx, (%rax)
xorl %ecx, %ecx
movq %rcx, 0x8(%rax)
movb %cl, 0x10(%rax)
leaq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq %rcx, -0x8(%rbx)
movb %cl, (%rbx)
movq $-0x1, 0x10(%rbx)
leaq 0xf0(%rsp), %r13
movq %r13, -0x10(%r13)
movq %rcx, -0x8(%r13)
movb %cl, (%r13)
leaq 0x110(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq %rcx, -0x8(%rbp)
movb %cl, (%rbp)
leaq 0x130(%rsp), %r15
movq %r15, -0x10(%r15)
movq %rcx, -0x8(%r15)
movb %cl, (%r15)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%r15)
movl $0x1, -0x58(%r15)
movl 0x170(%rsp), %eax
movl %eax, -0x68(%rbp)
leaq 0x178(%rsp), %rsi
callq 0x1205a0
leaq 0xe0(%rsp), %rdi
movq 0x198(%rsp), %rax
movq %rax, -0x10(%rdi)
movq %rsp, %rsi
callq 0x1205a0
leaq 0x100(%rsp), %rdi
leaq 0x1a0(%rsp), %rsi
callq 0x1205a0
movq 0x28(%rsp), %rdi
addq $0x308, %rdi            # imm = 0x308
leaq 0xa8(%rsp), %rsi
callq 0x26b154
movq 0x120(%rsp), %rdi
cmpq %r15, %rdi
je 0x27a123
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq 0x100(%rsp), %rdi
cmpq %rbp, %rdi
je 0x27a140
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq 0xe0(%rsp), %rdi
cmpq %r13, %rdi
je 0x27a15d
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq 0xb0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x27a17a
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq 0x1a0(%rsp), %rdi
cmpq %r14, %rdi
je 0x27a197
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq 0x150(%rsp), %rdi
cmpq %r12, %rdi
je 0x27a1b4
movq 0x160(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x27a1cf
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x1200c0
leaq 0x70(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x27a1ea
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x1200c0
xorl %ebp, %ebp
leaq 0x40(%rsp), %r12
leaq 0x188(%rsp), %r13
movq 0x178(%rsp), %rdi
cmpq %r13, %rdi
je 0x27a216
movq 0x188(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq 0x30(%rsp), %rdi
cmpq %r12, %rdi
je 0x27a22d
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq %rbp, %rax
addq $0x1c8, %rsp            # imm = 0x1C8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x27a248
jmp 0x27a248
jmp 0x27a248
movq %rax, %rbx
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0x27a3b0
movq 0xb8(%rsp), %rsi
jmp 0x27a3a3
jmp 0x27a2ba
movq %r15, %r14
movq %rax, %rbx
jmp 0x27a2e5
jmp 0x27a3ad
jmp 0x27a2f1
jmp 0x27a355
movq %rax, %rbx
jmp 0x27a390
jmp 0x27a3ad
jmp 0x27a3ad
jmp 0x27a3ad
jmp 0x27a3ad
jmp 0x27a3ad
jmp 0x27a3ad
jmp 0x27a3ad
movq %rax, %rbx
jmp 0x27a3d5
movq %rax, %rbx
leaq 0xa8(%rsp), %rdi
callq 0x266b98
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x27a2e5
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq 0x60(%rsp), %rdi
cmpq %r14, %rdi
jne 0x27a32d
jmp 0x27a33a
movq %rax, %rbx
leaq 0xa8(%rsp), %rdi
callq 0x266b98
movq 0x1a0(%rsp), %rdi
cmpq %r14, %rdi
je 0x27a358
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x1200c0
jmp 0x27a358
movq %rax, %rbx
movq 0x60(%rsp), %rdi
cmpq %r15, %rdi
je 0x27a33a
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x1200c0
leaq 0x90(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x27a3b0
movq 0x90(%rsp), %rsi
jmp 0x27a3a3
movq %rax, %rbx
movq 0x150(%rsp), %rdi
cmpq %r12, %rdi
je 0x27a375
movq 0x160(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x27a390
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x1200c0
leaq 0x70(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x27a3b0
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x1200c0
jmp 0x27a3b0
movq %rax, %rbx
movq 0x178(%rsp), %rdi
leaq 0x188(%rsp), %rax
cmpq %rax, %rdi
je 0x27a3d5
movq 0x188(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x27a3f1
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq %rbx, %rdi
callq 0x120330
nop