// File: /workspace/github_cpp_makefile_star2_O2/ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::parser<double>::parse_special_function_impl<double, 3ul>::process(exprtk::parser<double>&, exprtk::details::operator_type, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
static inline expression_node_ptr process(parser<Type>& p, const details::operator_type opt_type, const std::string& sf_name)
         {
            expression_node_ptr branch[NumberOfParameters];
            expression_node_ptr result = error_node();

            std::fill_n(branch, NumberOfParameters, reinterpret_cast<expression_node_ptr>(0));

            scoped_delete<expression_node_t,NumberOfParameters> sd(p,branch);

            p.next_token();

            if (!p.token_is(token_t::e_lbracket))
            {
               p.set_error(make_error(
                  parser_error::e_syntax,
                  p.current_token(),
                  "ERR146 - Expected '(' for special function '" + sf_name + "'",
                  exprtk_error_location));

               return error_node();
            }

            for (std::size_t i = 0; i < NumberOfParameters; ++i)
            {
               branch[i] = p.parse_expression();

               if (0 == branch[i])
               {
                  return p.error_node();
               }
               else if (i < (NumberOfParameters - 1))
               {
                  if (!p.token_is(token_t::e_comma))
                  {
                     p.set_error(make_error(
                        parser_error::e_syntax,
                        p.current_token(),
                        "ERR147 - Expected ',' before next parameter of special function '" + sf_name + "'",
                        exprtk_error_location));

                     return p.error_node();
                  }
               }
            }

            if (!p.token_is(token_t::e_rbracket))
            {
               p.set_error(make_error(
                  parser_error::e_syntax,
                  p.current_token(),
                  "ERR148 - Invalid number of parameters for special function '" + sf_name + "'",
                  exprtk_error_location));

               return p.error_node();
            }
            else
               result = p.expression_generator_.special_function(opt_type,branch);

            sd.delete_ptr = (0 == result);

            return result;
         }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x168, %rsp            # imm = 0x168
movq %rdx, %r14
movq %rdi, %rbx
movl %esi, 0x4(%rsp)
xorl %eax, %eax
cmpq $0x18, %rax
je 0x28eef6
andq $0x0, 0xa0(%rsp,%rax)
addq $0x8, %rax
jmp 0x28eee1
movb $0x1, 0x88(%rsp)
movq %rbx, 0x90(%rsp)
leaq 0xa0(%rsp), %rax
movq %rax, 0x98(%rsp)
movq %rbx, %rdi
callq 0x1f6d68
leaq 0xc0(%rsp), %rsi
movl $0x28, (%rsi)
pushq $0x1
popq %rdx
movq %rbx, %rdi
callq 0x1fae6e
testb %al, %al
je 0x28ef9c
xorl %r15d, %r15d
leaq 0xc0(%rsp), %r12
pushq $0x1
popq %rbp
xorl %r13d, %r13d
cmpq $0x3, %r13
je 0x28f07a
movq %rbx, %rdi
xorl %esi, %esi
callq 0x1f9016
movq %rax, 0xa0(%rsp,%r13,8)
testq %rax, %rax
je 0x28f058
cmpq $0x2, %r13
je 0x28ef97
movl $0x2c, 0xc0(%rsp)
movq %rbx, %rdi
movq %r12, %rsi
movl %ebp, %edx
callq 0x1fae6e
testb %al, %al
je 0x28f14c
incq %r13
jmp 0x28ef4c
leaq 0x4cbb5(%rip), %rsi     # 0x2dbb58
leaq 0x48(%rsp), %rdi
movq %r14, %rdx
callq 0x1f8aab
leaq 0x4d7bb(%rip), %rdx     # 0x2dc772
leaq 0x68(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x1b42c3
leaq 0x8(%rsp), %rdi
movl $0x7160, %esi           # imm = 0x7160
callq 0x1f7a3c
leaq 0x4ac1f(%rip), %rsi     # 0x2d9bfb
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x1b4349
leaq 0x70(%rbx), %rdx
leaq 0xc0(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x68(%rsp), %rcx
leaq 0x28(%rsp), %r8
callq 0x1f7341
addq $0x308, %rbx            # imm = 0x308
leaq 0xc0(%rsp), %rsi
movq %rbx, %rdi
callq 0x1f76ce
leaq 0xc0(%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
callq 0x118648
xorl %r15d, %r15d
leaq 0x88(%rsp), %rdi
callq 0x28fa38
movq %r15, %rax
addq $0x168, %rsp            # imm = 0x168
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xc0(%rsp), %rsi
movl $0x29, (%rsi)
pushq $0x1
popq %rdx
movq %rbx, %rdi
callq 0x1fae6e
testb %al, %al
je 0x28f0c3
addq $0x220, %rbx            # imm = 0x220
leaq 0x4(%rsp), %rsi
leaq 0xa0(%rsp), %rdx
movq %rbx, %rdi
callq 0x28f5f8
movq %rax, %r15
testq %rax, %rax
sete 0x88(%rsp)
jmp 0x28f058
leaq 0x4cafd(%rip), %rsi     # 0x2dbbc7
leaq 0x48(%rsp), %rdi
movq %r14, %rdx
callq 0x1f8aab
leaq 0x4d694(%rip), %rdx     # 0x2dc772
leaq 0x68(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x1b42c3
leaq 0x8(%rsp), %rdi
movl $0x7182, %esi           # imm = 0x7182
callq 0x1f7a3c
leaq 0x4aaf8(%rip), %rsi     # 0x2d9bfb
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x1b4349
leaq 0x70(%rbx), %rdx
leaq 0xc0(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x68(%rsp), %rcx
leaq 0x28(%rsp), %r8
callq 0x1f7341
addq $0x308, %rbx            # imm = 0x308
leaq 0xc0(%rsp), %rsi
movq %rbx, %rdi
callq 0x1f76ce
jmp 0x28f020
leaq 0x4ca32(%rip), %rsi     # 0x2dbb85
leaq 0x48(%rsp), %rdi
movq %r14, %rdx
callq 0x1f8aab
leaq 0x4d60b(%rip), %rdx     # 0x2dc772
leaq 0x68(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x1b42c3
leaq 0x8(%rsp), %rdi
movl $0x7175, %esi           # imm = 0x7175
callq 0x1f7a3c
leaq 0x4aa6f(%rip), %rsi     # 0x2d9bfb
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x1b4349
leaq 0x70(%rbx), %rdx
leaq 0xc0(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x68(%rsp), %rcx
leaq 0x28(%rsp), %r8
callq 0x1f7341
addq $0x308, %rbx            # imm = 0x308
leaq 0xc0(%rsp), %rsi
movq %rbx, %rdi
callq 0x1f76ce
jmp 0x28f020
jmp 0x28f1ef
jmp 0x28f201
jmp 0x28f210
jmp 0x28f21f
jmp 0x28f22e
jmp 0x28f245
jmp 0x28f1ef
jmp 0x28f201
jmp 0x28f210
jmp 0x28f21f
jmp 0x28f22e
jmp 0x28f245
jmp 0x28f245
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
callq 0x1f5c4c
jmp 0x28f204
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x118648
jmp 0x28f213
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x118648
jmp 0x28f222
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x118648
jmp 0x28f231
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x118648
jmp 0x28f248
jmp 0x28f245
jmp 0x28f245
jmp 0x28f245
jmp 0x28f245
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
callq 0x28fa38
movq %rbx, %rdi
callq 0x118360
nop