// File: /workspace/github_cpp_makefile_star2_O2/ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::parser<double>::parse_function_invocation(exprtk::ifunction<double>*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
inline expression_node_ptr parse_function_invocation(ifunction<T>* function, const std::string& function_name)
      {
         expression_node_ptr func_node = reinterpret_cast<expression_node_ptr>(0);

         switch (function->param_count)
         {
            case  0 : func_node = parse_function_call_0  (function,function_name); break;
            case  1 : func_node = parse_function_call< 1>(function,function_name); break;
            case  2 : func_node = parse_function_call< 2>(function,function_name); break;
            case  3 : func_node = parse_function_call< 3>(function,function_name); break;
            case  4 : func_node = parse_function_call< 4>(function,function_name); break;
            case  5 : func_node = parse_function_call< 5>(function,function_name); break;
            case  6 : func_node = parse_function_call< 6>(function,function_name); break;
            case  7 : func_node = parse_function_call< 7>(function,function_name); break;
            case  8 : func_node = parse_function_call< 8>(function,function_name); break;
            case  9 : func_node = parse_function_call< 9>(function,function_name); break;
            case 10 : func_node = parse_function_call<10>(function,function_name); break;
            case 11 : func_node = parse_function_call<11>(function,function_name); break;
            case 12 : func_node = parse_function_call<12>(function,function_name); break;
            case 13 : func_node = parse_function_call<13>(function,function_name); break;
            case 14 : func_node = parse_function_call<14>(function,function_name); break;
            case 15 : func_node = parse_function_call<15>(function,function_name); break;
            case 16 : func_node = parse_function_call<16>(function,function_name); break;
            case 17 : func_node = parse_function_call<17>(function,function_name); break;
            case 18 : func_node = parse_function_call<18>(function,function_name); break;
            case 19 : func_node = parse_function_call<19>(function,function_name); break;
            case 20 : func_node = parse_function_call<20>(function,function_name); break;
            default : {
                         set_error(make_error(
                           parser_error::e_syntax,
                           current_token(),
                           "ERR021 - Invalid number of parameters for function: '" + function_name + "'",
                           exprtk_error_location));

                         return error_node();
                      }
         }

         if (func_node)
            return func_node;
         else
         {
            set_error(make_error(
               parser_error::e_syntax,
               current_token(),
               "ERR022 - Failed to generate call to function: '" + function_name + "'",
               exprtk_error_location));

            return error_node();
         }
      }

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x130, %rsp            # imm = 0x130
movq %rdx, %r14
movq %rdi, %rbx
movq 0x20(%rsi), %rax
cmpq $0x14, %rax
ja 0x2a44f2
leaq 0x2eceb(%rip), %rcx     # 0x2d30e4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rbx, %rdi
movq %r14, %rdx
callq 0x2a6a8e
jmp 0x2a45c8
movq %rbx, %rdi
movq %r14, %rdx
callq 0x2abb2c
jmp 0x2a45c8
movq %rbx, %rdi
movq %r14, %rdx
callq 0x2ab08c
jmp 0x2a45c8
movq %rbx, %rdi
movq %r14, %rdx
callq 0x2aa09c
jmp 0x2a45c8
movq %rbx, %rdi
movq %r14, %rdx
callq 0x2a7b54
jmp 0x2a45c8
movq %rbx, %rdi
movq %r14, %rdx
callq 0x2aa5ec
jmp 0x2a45c8
movq %rbx, %rdi
movq %r14, %rdx
callq 0x2a95fc
jmp 0x2a45c8
movq %rbx, %rdi
movq %r14, %rdx
callq 0x2a709a
jmp 0x2a45c8
movq %rbx, %rdi
movq %r14, %rdx
callq 0x2ab5dc
jmp 0x2a45c8
movq %rbx, %rdi
movq %r14, %rdx
callq 0x2a75ec
jmp 0x2a45c8
movq %rbx, %rdi
movq %r14, %rdx
callq 0x2a8b5c
jmp 0x2a45c8
movq %rbx, %rdi
movq %r14, %rdx
callq 0x2a6c40
jmp 0x2a45c8
movq %rbx, %rdi
movq %r14, %rdx
callq 0x2ac07e
jmp 0x2a45c8
movq %rbx, %rdi
movq %r14, %rdx
callq 0x2ad074
jmp 0x2a45c8
movq %rbx, %rdi
movq %r14, %rdx
callq 0x2a80bc
jmp 0x2a45c8
leaq 0x38fc9(%rip), %rsi     # 0x2dd4c2
leaq 0x68(%rsp), %r15
movq %r15, %rdi
movq %r14, %rdx
callq 0x1f8aab
leaq 0x38262(%rip), %rdx     # 0x2dc772
leaq 0x48(%rsp), %rdi
movq %r15, %rsi
callq 0x1b42c3
leaq 0x8(%rsp), %rdi
movl $0x64e6, %esi           # imm = 0x64E6
callq 0x1f7a3c
leaq 0x356c8(%rip), %rsi     # 0x2d9bfb
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x1b4349
leaq 0x70(%rbx), %rdx
leaq 0x88(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x48(%rsp), %rcx
leaq 0x28(%rsp), %r8
callq 0x1f7341
addq $0x308, %rbx            # imm = 0x308
leaq 0x88(%rsp), %rsi
movq %rbx, %rdi
callq 0x1f76ce
jmp 0x2a4656
movq %rbx, %rdi
movq %r14, %rdx
callq 0x2aab3c
jmp 0x2a45c8
movq %rbx, %rdi
movq %r14, %rdx
callq 0x2a860c
jmp 0x2a45c8
movq %rbx, %rdi
movq %r14, %rdx
callq 0x2ac5d0
jmp 0x2a45c8
movq %rbx, %rdi
movq %r14, %rdx
callq 0x2a9b4c
jmp 0x2a45c8
movq %rbx, %rdi
movq %r14, %rdx
callq 0x2a90ac
jmp 0x2a45c8
movq %rbx, %rdi
movq %r14, %rdx
callq 0x2acb22
testq %rax, %rax
jne 0x2a468d
leaq 0x38f20(%rip), %rsi     # 0x2dd4f8
leaq 0x68(%rsp), %r15
movq %r15, %rdi
movq %r14, %rdx
callq 0x1f8aab
leaq 0x38183(%rip), %rdx     # 0x2dc772
leaq 0x48(%rsp), %rdi
movq %r15, %rsi
callq 0x1b42c3
leaq 0x8(%rsp), %rdi
movl $0x64f4, %esi           # imm = 0x64F4
callq 0x1f7a3c
leaq 0x355e9(%rip), %rsi     # 0x2d9bfb
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x1b4349
leaq 0x70(%rbx), %rdx
leaq 0x88(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x48(%rsp), %rcx
leaq 0x28(%rsp), %r8
callq 0x1f7341
addq $0x308, %rbx            # imm = 0x308
leaq 0x88(%rsp), %rsi
movq %rbx, %rdi
callq 0x1f76ce
leaq 0x88(%rsp), %rdi
callq 0x1f5c4c
leaq 0x28(%rsp), %rdi
callq 0x118648
leaq 0x8(%rsp), %rdi
callq 0x118648
leaq 0x48(%rsp), %rdi
callq 0x118648
leaq 0x68(%rsp), %rdi
callq 0x118648
xorl %eax, %eax
addq $0x130, %rsp            # imm = 0x130
popq %rbx
popq %r14
popq %r15
retq
jmp 0x2a46a4
jmp 0x2a46b6
jmp 0x2a46c5
jmp 0x2a46d4
jmp 0x2a46e3
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
callq 0x1f5c4c
jmp 0x2a46b9
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x118648
jmp 0x2a46c8
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x118648
jmp 0x2a46d7
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x118648
jmp 0x2a46e6
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x118648
movq %rbx, %rdi
callq 0x118360