// File: /workspace/github_cpp_makefile_star2_O2/ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::parser<double>::parse_igeneric_function_params(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, std::vector<exprtk::details::expression_node<double>*, std::allocator<exprtk::details::expression_node<double>*>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, exprtk::igeneric_function<double>*, exprtk::parser<double>::type_checker const&)
inline bool parse_igeneric_function_params(std::string& param_type_list,
                                                 std::vector<expression_node_ptr>& arg_list,
                                                 const std::string& function_name,
                                                 igeneric_function<T>* function,
                                                 const type_checker& tc)
      {
         if (token_is(token_t::e_lbracket))
         {
            if (token_is(token_t::e_rbracket))
            {
               if (
                    !function->allow_zero_parameters() &&
                    !tc       .allow_zero_parameters()
                  )
               {
                  set_error(make_error(
                     parser_error::e_syntax,
                     current_token(),
                     "ERR141 - Zero parameter call to generic function: "
                     + function_name + " not allowed",
                     exprtk_error_location));

                  return false;
               }
            }
            else
            {
               for ( ; ; )
               {
                  expression_node_ptr arg = parse_expression();

                  if (0 == arg)
                     return false;

                  if (is_ivector_node(arg))
                     param_type_list += 'V';
                  else if (is_generally_string_node(arg))
                     param_type_list += 'S';
                  else // Everything else is a scalar returning expression
                     param_type_list += 'T';

                  arg_list.push_back(arg);

                  if (token_is(token_t::e_rbracket))
                     break;
                  else if (!token_is(token_t::e_comma))
                  {
                     set_error(make_error(
                        parser_error::e_syntax,
                        current_token(),
                        "ERR142 - Expected ',' for call to string function: " + function_name,
                        exprtk_error_location));

                     return false;
                  }
               }
            }

            return true;
         }
         else
            return false;
      }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x138, %rsp            # imm = 0x138
movq %r9, %r14
movq %r8, %r13
movq %rcx, %rbp
movq %rdx, %r15
movq %rsi, %r12
movq %rdi, %rbx
leaq 0x90(%rsp), %rsi
movl $0x28, (%rsi)
pushq $0x1
popq %rdx
callq 0x1fae6e
testb %al, %al
je 0x2b7cd6
movq %rbp, 0x8(%rsp)
leaq 0x90(%rsp), %rsi
movl $0x29, (%rsi)
pushq $0x1
popq %rdx
movq %rbx, %rdi
callq 0x1fae6e
testb %al, %al
je 0x2b7b8f
movb $0x1, %bpl
cmpb $0x0, 0x8(%r13)
jne 0x2b7cd8
movq %r14, %rdi
callq 0x2b596a
testb %al, %al
jne 0x2b7cd8
leaq 0x26093(%rip), %rsi     # 0x2ddb6d
leaq 0x70(%rsp), %r14
movq %r14, %rdi
movq 0x8(%rsp), %rdx
callq 0x1f8aab
leaq 0x24141(%rip), %rdx     # 0x2dbc34
leaq 0x30(%rsp), %rdi
movq %r14, %rsi
callq 0x1b42c3
leaq 0x50(%rsp), %rdi
movl $0x70a5, %esi           # imm = 0x70A5
callq 0x1f7a3c
leaq 0x220e5(%rip), %rsi     # 0x2d9bfb
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x1b4349
leaq 0x70(%rbx), %rdx
leaq 0x90(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x30(%rsp), %rcx
leaq 0x10(%rsp), %r8
callq 0x1f7341
addq $0x308, %rbx            # imm = 0x308
leaq 0x90(%rsp), %rsi
movq %rbx, %rdi
callq 0x1f76ce
leaq 0x90(%rsp), %rdi
callq 0x1f5c4c
leaq 0x10(%rsp), %rdi
callq 0x118648
leaq 0x50(%rsp), %rdi
callq 0x118648
leaq 0x30(%rsp), %rdi
callq 0x118648
leaq 0x70(%rsp), %rdi
jmp 0x2b7cd1
leaq 0x50(%rsp), %r13
leaq 0x90(%rsp), %rbp
pushq $0x1
popq %r14
movq %rbx, %rdi
xorl %esi, %esi
callq 0x1f9016
movq %rax, 0x50(%rsp)
testq %rax, %rax
je 0x2b7cd6
movq (%rax), %rcx
movq %rax, %rdi
callq *0x28(%rcx)
addl $-0x7c, %eax
cmpl $0x19, %eax
jae 0x2b7bd5
movb $0x56, %cl
movl $0x1f17801, %edx        # imm = 0x1F17801
btl %eax, %edx
jb 0x2b7be3
movq 0x50(%rsp), %rdi
callq 0x20b691
movb $0x54, %cl
subb %al, %cl
movzbl %cl, %esi
movq %r12, %rdi
callq 0x1185f0
movq %r15, %rdi
movq %r13, %rsi
callq 0x1fadc0
movl $0x29, 0x90(%rsp)
movq %rbx, %rdi
movq %rbp, %rsi
movl %r14d, %edx
callq 0x1fae6e
testb %al, %al
jne 0x2b7cec
movl $0x2c, 0x90(%rsp)
movq %rbx, %rdi
movq %rbp, %rsi
movl %r14d, %edx
callq 0x1fae6e
testb %al, %al
jne 0x2b7ba0
leaq 0x25f5e(%rip), %rsi     # 0x2ddba0
leaq 0x30(%rsp), %rdi
movq 0x8(%rsp), %rdx
callq 0x1f8aab
leaq 0x10(%rsp), %rdi
movl $0x70c4, %esi           # imm = 0x70C4
callq 0x1f7a3c
leaq 0x21f94(%rip), %rsi     # 0x2d9bfb
leaq 0x70(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x1b4349
leaq 0x70(%rbx), %rdx
leaq 0x90(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x30(%rsp), %rcx
leaq 0x70(%rsp), %r8
callq 0x1f7341
addq $0x308, %rbx            # imm = 0x308
leaq 0x90(%rsp), %rsi
movq %rbx, %rdi
callq 0x1f76ce
leaq 0x90(%rsp), %rdi
callq 0x1f5c4c
leaq 0x70(%rsp), %rdi
callq 0x118648
leaq 0x10(%rsp), %rdi
callq 0x118648
leaq 0x30(%rsp), %rdi
callq 0x118648
xorl %ebp, %ebp
movl %ebp, %eax
addq $0x138, %rsp            # imm = 0x138
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movb $0x1, %bpl
jmp 0x2b7cd8
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x1f5c4c
jmp 0x2b7d06
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x118648
jmp 0x2b7d15
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x118648
jmp 0x2b7d24
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x118648
jmp 0x2b7d33
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
jmp 0x2b7d72
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x1f5c4c
jmp 0x2b7d4f
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x118648
jmp 0x2b7d5e
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x118648
jmp 0x2b7d6d
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x118648
movq %rbx, %rdi
callq 0x118360
nop