// File: /workspace/github_cpp_makefile_star2_O2/ArashPartow[P]exprtk/./exprtk.hpp
// Function: unsigned long exprtk::parser<double>::parse_base_function_call<4ul>(exprtk::details::expression_node<double>* (&) [4ul], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
inline std::size_t parse_base_function_call(expression_node_ptr (&param_list)[MaxNumberofParameters], const std::string& function_name = "")
      {
         std::fill_n(param_list, MaxNumberofParameters, reinterpret_cast<expression_node_ptr>(0));

         scoped_delete<expression_node_t,MaxNumberofParameters> sd((*this),param_list);

         next_token();

         if (!token_is(token_t::e_lbracket))
         {
            set_error(make_error(
               parser_error::e_syntax,
               current_token(),
               "ERR029 - Expected a '(' at start of function call to '" + function_name  +
               "', instead got: '" + current_token().value + "'",
               exprtk_error_location));

            return 0;
         }

         if (token_is(token_t::e_rbracket, e_hold))
         {
            set_error(make_error(
               parser_error::e_syntax,
               current_token(),
               "ERR030 - Expected at least one input parameter for function call '" + function_name + "'",
               exprtk_error_location));

            return 0;
         }

         std::size_t param_index = 0;

         for (; param_index < MaxNumberofParameters; ++param_index)
         {
            param_list[param_index] = parse_expression();

            if (0 == param_list[param_index])
               return 0;
            else if (token_is(token_t::e_rbracket))
            {
               sd.delete_ptr = false;
               break;
            }
            else if (token_is(token_t::e_comma))
               continue;
            else
            {
               set_error(make_error(
                  parser_error::e_syntax,
                  current_token(),
                  "ERR031 - Expected a ',' between function input parameters, instead got: '" + current_token().value + "'",
                  exprtk_error_location));

               return 0;
            }
         }

         if (sd.delete_ptr)
         {
            set_error(make_error(
               parser_error::e_syntax,
               current_token(),
               "ERR032 - Invalid number of input parameters passed to function '" + function_name  + "'",
               exprtk_error_location));

            return 0;
         }

         return (param_index + 1);
      }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x188, %rsp            # imm = 0x188
movq %rdx, %r14
movq %rsi, %r15
movq %rdi, %rbx
xorl %eax, %eax
cmpq $0x20, %rax
je 0x20d73f
andq $0x0, (%r15,%rax)
addq $0x8, %rax
jmp 0x20d72e
movb $0x1, 0x88(%rsp)
movq %rbx, 0x90(%rsp)
movq %r15, 0x98(%rsp)
movq %rbx, %rdi
callq 0x1f6d68
leaq 0xe0(%rsp), %rsi
movl $0x28, (%rsi)
pushq $0x1
popq %rdx
movq %rbx, %rdi
callq 0x1fae6e
testb %al, %al
je 0x20d859
leaq 0xe0(%rsp), %rsi
movl $0x29, (%rsi)
movq %rbx, %rdi
xorl %edx, %edx
callq 0x1fae6e
testb %al, %al
je 0x20d986
leaq 0xcce4c(%rip), %rsi     # 0x2da5f3
leaq 0x48(%rsp), %rdi
movq %r14, %rdx
callq 0x1f8aab
leaq 0xcefb7(%rip), %rdx     # 0x2dc772
leaq 0x68(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x1b42c3
leaq 0x8(%rsp), %rdi
movl $0x6588, %esi           # imm = 0x6588
callq 0x1f7a3c
leaq 0xcc41b(%rip), %rsi     # 0x2d9bfb
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x1b4349
leaq 0x70(%rbx), %rdx
leaq 0xe0(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x68(%rsp), %rcx
leaq 0x28(%rsp), %r8
callq 0x1f7341
addq $0x308, %rbx            # imm = 0x308
leaq 0xe0(%rsp), %rsi
movq %rbx, %rdi
callq 0x1f76ce
leaq 0xe0(%rsp), %rdi
callq 0x1f5c4c
leaq 0x28(%rsp), %rdi
callq 0x118648
leaq 0x8(%rsp), %rdi
callq 0x118648
leaq 0x68(%rsp), %rdi
callq 0x118648
leaq 0x48(%rsp), %rdi
jmp 0x20d95c
leaq 0xccd4a(%rip), %rsi     # 0x2da5aa
leaq 0x8(%rsp), %rdi
movq %r14, %rdx
callq 0x1f8aab
leaq 0xccd6d(%rip), %rdx     # 0x2da5e1
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x1b42c3
leaq 0x78(%rbx), %rdx
leaq 0x48(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x1f8a54
leaq 0xceed5(%rip), %rdx     # 0x2dc772
leaq 0x68(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x1b42c3
leaq 0xa0(%rsp), %rdi
movl $0x657d, %esi           # imm = 0x657D
callq 0x1f7a3c
leaq 0xcc336(%rip), %rsi     # 0x2d9bfb
leaq 0xc0(%rsp), %rdi
leaq 0xa0(%rsp), %rdx
callq 0x1b4349
leaq 0x70(%rbx), %rdx
leaq 0xe0(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x68(%rsp), %rcx
leaq 0xc0(%rsp), %r8
callq 0x1f7341
addq $0x308, %rbx            # imm = 0x308
leaq 0xe0(%rsp), %rsi
movq %rbx, %rdi
callq 0x1f76ce
leaq 0xe0(%rsp), %rdi
callq 0x1f5c4c
leaq 0xc0(%rsp), %rdi
callq 0x118648
leaq 0xa0(%rsp), %rdi
callq 0x118648
leaq 0x68(%rsp), %rdi
callq 0x118648
leaq 0x48(%rsp), %rdi
callq 0x118648
leaq 0x28(%rsp), %rdi
callq 0x118648
leaq 0x8(%rsp), %rdi
callq 0x118648
xorl %r12d, %r12d
leaq 0x88(%rsp), %rdi
callq 0x20e8ca
movq %r12, %rax
addq $0x188, %rsp            # imm = 0x188
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
pushq $0x1
popq %r12
leaq 0xe0(%rsp), %r13
pushq $0x1
popq %rbp
cmpq $0x5, %r12
je 0x20d9f4
movq %rbx, %rdi
xorl %esi, %esi
callq 0x1f9016
movq %rax, -0x8(%r15,%r12,8)
testq %rax, %rax
je 0x20d961
movl $0x29, 0xe0(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movl %ebp, %edx
callq 0x1fae6e
testb %al, %al
jne 0x20da8b
movl $0x2c, 0xe0(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movl %ebp, %edx
callq 0x1fae6e
testb %al, %al
je 0x20da98
incq %r12
jmp 0x20d995
testb $0x1, 0x88(%rsp)
je 0x20db22
leaq 0xccc77(%rip), %rsi     # 0x2da680
leaq 0x48(%rsp), %rdi
movq %r14, %rdx
callq 0x1f8aab
leaq 0xced55(%rip), %rdx     # 0x2dc772
leaq 0x68(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x1b42c3
leaq 0x8(%rsp), %rdi
movl $0x65ae, %esi           # imm = 0x65AE
callq 0x1f7a3c
leaq 0xcc1b9(%rip), %rsi     # 0x2d9bfb
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x1b4349
leaq 0x70(%rbx), %rdx
leaq 0xe0(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x68(%rsp), %rcx
leaq 0x28(%rsp), %r8
callq 0x1f7341
addq $0x308, %rbx            # imm = 0x308
leaq 0xe0(%rsp), %rsi
movq %rbx, %rdi
callq 0x1f76ce
jmp 0x20d824
movb $0x0, 0x88(%rsp)
jmp 0x20d964
leaq 0x78(%rbx), %rdx
leaq 0xccb93(%rip), %rsi     # 0x2da636
leaq 0x48(%rsp), %rdi
callq 0x1f8aab
leaq 0xcecbe(%rip), %rdx     # 0x2dc772
leaq 0x68(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x1b42c3
leaq 0x8(%rsp), %rdi
movl $0x65a2, %esi           # imm = 0x65A2
callq 0x1f7a3c
leaq 0xcc122(%rip), %rsi     # 0x2d9bfb
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x1b4349
leaq 0x70(%rbx), %rdx
leaq 0xe0(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x68(%rsp), %rcx
leaq 0x28(%rsp), %r8
callq 0x1f7341
addq $0x308, %rbx            # imm = 0x308
leaq 0xe0(%rsp), %rsi
movq %rbx, %rdi
callq 0x1f76ce
jmp 0x20d824
pushq $0x5
popq %r12
jmp 0x20d964
jmp 0x20db49
jmp 0x20db5b
jmp 0x20db6a
jmp 0x20db79
jmp 0x20db88
jmp 0x20dc12
jmp 0x20db49
jmp 0x20db5b
jmp 0x20db6a
jmp 0x20db79
jmp 0x20db88
jmp 0x20dc12
movq %rax, %rbx
leaq 0xe0(%rsp), %rdi
callq 0x1f5c4c
jmp 0x20db5e
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x118648
jmp 0x20db6d
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x118648
jmp 0x20db7c
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x118648
jmp 0x20db8b
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
jmp 0x20dbf5
jmp 0x20dc12
movq %rax, %rbx
leaq 0xe0(%rsp), %rdi
callq 0x1f5c4c
jmp 0x20dba9
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
callq 0x118648
jmp 0x20dbbb
movq %rax, %rbx
leaq 0xa0(%rsp), %rdi
callq 0x118648
jmp 0x20dbcd
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x118648
jmp 0x20dbdc
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x118648
leaq 0x28(%rsp), %rdi
callq 0x118648
leaq 0x8(%rsp), %rdi
callq 0x118648
jmp 0x20dc15
movq %rax, %rbx
jmp 0x20dbe6
movq %rax, %rbx
jmp 0x20dbf0
jmp 0x20dc12
jmp 0x20dc12
jmp 0x20dc12
jmp 0x20dc12
jmp 0x20dc12
jmp 0x20dc12
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
callq 0x20e8ca
movq %rbx, %rdi
callq 0x118360