// File: /workspace/github_cpp_makefile_star2_O2/ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::parser<double>::parse_vararg_function()
inline expression_node_ptr parse_vararg_function()
      {
         std::vector<expression_node_ptr> arg_list;

         details::operator_type opt_type = details::e_default;
         const std::string symbol = current_token().value;

         if (details::imatch(symbol,"~"))
         {
            next_token();
            return check_block_statement_closure(parse_multi_sequence());
         }
         else if (details::imatch(symbol,"[*]"))
         {
            return check_block_statement_closure(parse_multi_switch_statement());
         }
         else if (details::imatch(symbol, "avg" )) opt_type = details::e_avg ;
         else if (details::imatch(symbol, "mand")) opt_type = details::e_mand;
         else if (details::imatch(symbol, "max" )) opt_type = details::e_max ;
         else if (details::imatch(symbol, "min" )) opt_type = details::e_min ;
         else if (details::imatch(symbol, "mor" )) opt_type = details::e_mor ;
         else if (details::imatch(symbol, "mul" )) opt_type = details::e_prod;
         else if (details::imatch(symbol, "sum" )) opt_type = details::e_sum ;
         else
         {
            set_error(make_error(
               parser_error::e_syntax,
               current_token(),
               "ERR104 - Unsupported built-in vararg function: " + symbol,
               exprtk_error_location));

            return error_node();
         }

         scoped_vec_delete<expression_node_t> svd((*this), arg_list);

         lodge_symbol(symbol, e_st_function);

         next_token();

         if (!token_is(token_t::e_lbracket))
         {
            set_error(make_error(
               parser_error::e_syntax,
               current_token(),
               "ERR105 - Expected '(' for call to vararg function: " + symbol,
               exprtk_error_location));

            return error_node();
         }

         if (token_is(token_t::e_rbracket))
         {
            set_error(make_error(
               parser_error::e_syntax,
               current_token(),
               "ERR106 - vararg function: " + symbol +
               " requires at least one input parameter",
               exprtk_error_location));

            return error_node();
         }

         for ( ; ; )
         {
            expression_node_ptr arg = parse_expression();

            if (0 == arg)
               return error_node();
            else
               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(),
                  "ERR107 - Expected ',' for call to vararg function: " + symbol,
                  exprtk_error_location));

               return error_node();
            }
         }

         const expression_node_ptr result = expression_generator_.vararg_function(opt_type,arg_list);

         svd.delete_ptr = (0 == result);
         return result;
      }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x188, %rsp            # imm = 0x188
movq %rdi, %rbx
xorps %xmm0, %xmm0
movaps %xmm0, 0x90(%rsp)
andq $0x0, 0xa0(%rsp)
andl $0x0, 0xc(%rsp)
leaq 0x78(%rdi), %rsi
leaq 0x30(%rsp), %rdi
callq 0x1182f0
leaq 0xdc2da(%rip), %rsi     # 0x2da1c0
leaq 0xa8(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x127016
leaq 0x30(%rsp), %rdi
leaq 0xa8(%rsp), %r14
movq %r14, %rsi
callq 0x1fbcc5
movl %eax, %ebp
movq %r14, %rdi
callq 0x118648
testb %bpl, %bpl
je 0x1fdf6f
movq %rbx, %rdi
callq 0x1f6d68
leaq 0xea9de(%rip), %rsi     # 0x2e8909
leaq 0xa8(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x127016
leaq 0xa8(%rsp), %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0x206ecc
movq %rbx, %rdi
movq %rax, %rsi
callq 0x1ff068
movq %rax, %rbx
leaq 0xa8(%rsp), %rdi
callq 0x118648
jmp 0x1fe3b7
leaq 0xea5d1(%rip), %rsi     # 0x2e8547
leaq 0xa8(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x127016
leaq 0x30(%rsp), %rdi
leaq 0xa8(%rsp), %r14
movq %r14, %rsi
callq 0x1fbcc5
movl %eax, %ebp
movq %r14, %rdi
callq 0x118648
testb %bpl, %bpl
je 0x1fdfc7
movq %rbx, %rdi
callq 0x2074dc
movq %rbx, %rdi
movq %rax, %rsi
callq 0x1ff068
movq %rax, %rbx
jmp 0x1fe3b7
leaq 0xd52cc(%rip), %rsi     # 0x2d329a
leaq 0xa8(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x127016
leaq 0x70(%rbx), %r14
leaq 0x30(%rsp), %rdi
leaq 0xa8(%rsp), %r15
movq %r15, %rsi
callq 0x1fbcc5
movl %eax, %ebp
movq %r15, %rdi
callq 0x118648
testb %bpl, %bpl
je 0x1fe015
movl $0xb, 0xc(%rsp)
jmp 0x1fe1cd
leaq 0xd52f6(%rip), %rsi     # 0x2d3312
leaq 0xa8(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x127016
leaq 0x30(%rsp), %rdi
leaq 0xa8(%rsp), %r15
movq %r15, %rsi
callq 0x1fbcc5
movl %eax, %ebp
movq %r15, %rdi
callq 0x118648
testb %bpl, %bpl
je 0x1fe05f
movl $0x1c, 0xc(%rsp)
jmp 0x1fe1cd
leaq 0xd52b1(%rip), %rsi     # 0x2d3317
leaq 0xa8(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x127016
leaq 0x30(%rsp), %rdi
leaq 0xa8(%rsp), %r15
movq %r15, %rsi
callq 0x1fbcc5
movl %eax, %ebp
movq %r15, %rdi
callq 0x118648
testb %bpl, %bpl
je 0x1fe0a9
movl $0xa, 0xc(%rsp)
jmp 0x1fe1cd
leaq 0xd526b(%rip), %rsi     # 0x2d331b
leaq 0xa8(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x127016
leaq 0x30(%rsp), %rdi
leaq 0xa8(%rsp), %r15
movq %r15, %rsi
callq 0x1fbcc5
movl %eax, %ebp
movq %r15, %rdi
callq 0x118648
testb %bpl, %bpl
je 0x1fe0f3
movl $0x9, 0xc(%rsp)
jmp 0x1fe1cd
leaq 0xd5229(%rip), %rsi     # 0x2d3323
leaq 0xa8(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x127016
leaq 0x30(%rsp), %rdi
leaq 0xa8(%rsp), %r15
movq %r15, %rsi
callq 0x1fbcc5
movl %eax, %ebp
movq %r15, %rdi
callq 0x118648
testb %bpl, %bpl
je 0x1fe13d
movl $0x1d, 0xc(%rsp)
jmp 0x1fe1cd
leaq 0xd51e3(%rip), %rsi     # 0x2d3327
leaq 0xa8(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x127016
leaq 0x30(%rsp), %rdi
leaq 0xa8(%rsp), %r15
movq %r15, %rsi
callq 0x1fbcc5
movl %eax, %ebp
movq %r15, %rdi
callq 0x118648
testb %bpl, %bpl
je 0x1fe184
movl $0xd, 0xc(%rsp)
jmp 0x1fe1cd
leaq 0xf9207(%rip), %rsi     # 0x2f7392
leaq 0xa8(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x127016
leaq 0x30(%rsp), %rdi
leaq 0xa8(%rsp), %r15
movq %r15, %rsi
callq 0x1fbcc5
movl %eax, %ebp
movq %r15, %rdi
callq 0x118648
testb %bpl, %bpl
je 0x1fe4ff
movl $0xc, 0xc(%rsp)
movb $0x1, 0x150(%rsp)
movq %rbx, 0x158(%rsp)
leaq 0x90(%rsp), %rax
movq %rax, 0x160(%rsp)
leaq 0x2b0(%rbx), %rdi
leaq 0x30(%rsp), %rsi
pushq $0x5
popq %rdx
callq 0x2089d0
movq %rbx, %rdi
callq 0x1f6d68
leaq 0xa8(%rsp), %rsi
movl $0x28, (%rsi)
pushq $0x1
popq %rdx
movq %rbx, %rdi
callq 0x1fae6e
testb %al, %al
je 0x1fe30e
leaq 0xa8(%rsp), %rsi
movl $0x29, (%rsi)
pushq $0x1
popq %rdx
movq %rbx, %rdi
callq 0x1fae6e
testb %al, %al
je 0x1fe3e3
leaq 0xdbfd4(%rip), %rsi     # 0x2da226
leaq 0x70(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x1f8aab
leaq 0xdbfd9(%rip), %rdx     # 0x2da241
leaq 0x10(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0x1b42c3
leaq 0x168(%rsp), %rdi
movl $0x6b66, %esi           # imm = 0x6B66
callq 0x1f7a3c
leaq 0xdb96b(%rip), %rsi     # 0x2d9bfb
leaq 0x50(%rsp), %rdi
leaq 0x168(%rsp), %rdx
callq 0x1b4349
leaq 0xa8(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x10(%rsp), %rcx
leaq 0x50(%rsp), %r8
movq %r14, %rdx
callq 0x1f7341
addq $0x308, %rbx            # imm = 0x308
leaq 0xa8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1f76ce
leaq 0xa8(%rsp), %rdi
callq 0x1f5c4c
leaq 0x50(%rsp), %rdi
callq 0x118648
leaq 0x168(%rsp), %rdi
callq 0x118648
leaq 0x10(%rsp), %rdi
callq 0x118648
leaq 0x70(%rsp), %rdi
jmp 0x1fe3a3
leaq 0xdbedd(%rip), %rsi     # 0x2da1f2
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x1f8aab
leaq 0x50(%rsp), %rdi
movl $0x6b5a, %esi           # imm = 0x6B5A
callq 0x1f7a3c
leaq 0xdb8c1(%rip), %rsi     # 0x2d9bfb
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x1b4349
leaq 0xa8(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x10(%rsp), %rcx
leaq 0x70(%rsp), %r8
movq %r14, %rdx
callq 0x1f7341
addq $0x308, %rbx            # imm = 0x308
leaq 0xa8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1f76ce
leaq 0xa8(%rsp), %rdi
callq 0x1f5c4c
leaq 0x70(%rsp), %rdi
callq 0x118648
leaq 0x50(%rsp), %rdi
callq 0x118648
leaq 0x10(%rsp), %rdi
callq 0x118648
xorl %ebx, %ebx
leaq 0x150(%rsp), %rdi
callq 0x1fb1b8
leaq 0x30(%rsp), %rdi
callq 0x118648
leaq 0x90(%rsp), %rdi
callq 0x29e264
movq %rbx, %rax
addq $0x188, %rsp            # imm = 0x188
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x90(%rsp), %r15
leaq 0x168(%rsp), %r12
leaq 0xa8(%rsp), %r13
pushq $0x1
popq %rbp
movq %rbx, %rdi
xorl %esi, %esi
callq 0x1f9016
movq %rax, 0x168(%rsp)
testq %rax, %rax
je 0x1fe3a8
movq %r15, %rdi
movq %r12, %rsi
callq 0x1fadc0
movl $0x29, 0xa8(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movl %ebp, %edx
callq 0x1fae6e
testb %al, %al
jne 0x1fe4d0
movl $0x2c, 0xa8(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movl %ebp, %edx
callq 0x1fae6e
testb %al, %al
jne 0x1fe3fe
leaq 0xdbe05(%rip), %rsi     # 0x2da268
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x1f8aab
leaq 0x50(%rsp), %rdi
movl $0x6b7c, %esi           # imm = 0x6B7C
callq 0x1f7a3c
leaq 0xdb773(%rip), %rsi     # 0x2d9bfb
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x1b4349
leaq 0xa8(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x10(%rsp), %rcx
leaq 0x70(%rsp), %r8
movq %r14, %rdx
callq 0x1f7341
addq $0x308, %rbx            # imm = 0x308
leaq 0xa8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1f76ce
jmp 0x1fe37d
addq $0x220, %rbx            # imm = 0x220
leaq 0xc(%rsp), %rsi
leaq 0x90(%rsp), %rdx
movq %rbx, %rdi
callq 0x207bee
movq %rax, %rbx
testq %rax, %rax
sete 0x150(%rsp)
jmp 0x1fe3aa
leaq 0xdbcbc(%rip), %rsi     # 0x2da1c2
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x1f8aab
leaq 0x50(%rsp), %rdi
movl $0x6b49, %esi           # imm = 0x6B49
callq 0x1f7a3c
leaq 0xdb6d0(%rip), %rsi     # 0x2d9bfb
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x1b4349
leaq 0xa8(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x10(%rsp), %rcx
leaq 0x70(%rsp), %r8
movq %r14, %rdx
callq 0x1f7341
addq $0x308, %rbx            # imm = 0x308
leaq 0xa8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1f76ce
leaq 0xa8(%rsp), %rdi
callq 0x1f5c4c
leaq 0x70(%rsp), %rdi
callq 0x118648
leaq 0x50(%rsp), %rdi
callq 0x118648
leaq 0x10(%rsp), %rdi
callq 0x118648
xorl %ebx, %ebx
jmp 0x1fe3b7
movq %rax, %rbx
leaq 0xa8(%rsp), %rdi
callq 0x1f5c4c
jmp 0x1fe5b5
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x118648
jmp 0x1fe5c4
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x118648
jmp 0x1fe5d3
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
jmp 0x1fe6bc
jmp 0x1fe6c5
jmp 0x1fe6c5
jmp 0x1fe6c5
jmp 0x1fe6c5
jmp 0x1fe65e
jmp 0x1fe670
jmp 0x1fe67f
jmp 0x1fe68e
jmp 0x1fe6cf
jmp 0x1fe6cf
jmp 0x1fe6c5
movq %rax, %rbx
leaq 0xa8(%rsp), %rdi
callq 0x1f5c4c
jmp 0x1fe623
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x118648
jmp 0x1fe632
movq %rax, %rbx
leaq 0x168(%rsp), %rdi
callq 0x118648
jmp 0x1fe644
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x118648
jmp 0x1fe653
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
jmp 0x1fe696
jmp 0x1fe6cf
jmp 0x1fe6c5
movq %rax, %rbx
leaq 0xa8(%rsp), %rdi
callq 0x1f5c4c
jmp 0x1fe673
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x118648
jmp 0x1fe682
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x118648
jmp 0x1fe691
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x118648
jmp 0x1fe6d2
jmp 0x1fe6cf
jmp 0x1fe6cf
jmp 0x1fe6c5
jmp 0x1fe6cf
jmp 0x1fe6c5
jmp 0x1fe6cf
jmp 0x1fe6c5
jmp 0x1fe6c5
jmp 0x1fe6cf
jmp 0x1fe6cf
movq %rax, %rbx
leaq 0xa8(%rsp), %rdi
callq 0x118648
jmp 0x1fe6df
jmp 0x1fe6c5
movq %rax, %rbx
jmp 0x1fe6df
movq %rax, %rbx
jmp 0x1fe6e9
movq %rax, %rbx
leaq 0x150(%rsp), %rdi
callq 0x1fb1b8
leaq 0x30(%rsp), %rdi
callq 0x118648
leaq 0x90(%rsp), %rdi
callq 0x29e264
movq %rbx, %rdi
callq 0x118360