// File: 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:
subq $0x468, %rsp            # imm = 0x468
movq %rdi, 0x458(%rsp)
movl %esi, 0x454(%rsp)
movq %rdx, 0x448(%rsp)
callq 0x2821f0
movq %rax, 0x428(%rsp)
movq $0x0, 0x420(%rsp)
leaq 0x430(%rsp), %rdi
movq %rdi, 0x58(%rsp)
movl $0x3, %esi
leaq 0x420(%rsp), %rdx
callq 0x3af2d0
movq 0x58(%rsp), %rdx
movq 0x458(%rsp), %rsi
leaq 0x408(%rsp), %rdi
callq 0x4ef050
movq 0x458(%rsp), %rdi
callq 0x373690
jmp 0x4ee0af
movq 0x458(%rsp), %rdi
movl $0x28, 0x3f8(%rsp)
leaq 0x3f8(%rsp), %rsi
movl $0x1, %edx
callq 0x37d640
movb %al, 0x57(%rsp)
jmp 0x4ee0da
movb 0x57(%rsp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4ee0e9
jmp 0x4ee2d9
movq 0x458(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0x373e90
movq %rax, 0x48(%rsp)
jmp 0x4ee102
movq 0x448(%rsp), %rdx
leaq 0xbad86(%rip), %rsi     # 0x5a8e97
leaq 0x310(%rsp), %rdi
callq 0x3784f0
jmp 0x4ee120
leaq 0xbb98a(%rip), %rdx     # 0x5a9ab1
leaq 0x330(%rsp), %rdi
leaq 0x310(%rsp), %rsi
callq 0x29dc30
jmp 0x4ee13e
leaq 0x2d0(%rsp), %rdi
movl $0x7160, %esi           # imm = 0x7160
callq 0x371f20
jmp 0x4ee152
leaq 0xb8dba(%rip), %rsi     # 0x5a6f13
leaq 0x2f0(%rsp), %rdi
leaq 0x2d0(%rsp), %rdx
callq 0x29dd70
jmp 0x4ee170
movq 0x48(%rsp), %rdx
leaq 0x350(%rsp), %rdi
movl $0x1, %esi
leaq 0x330(%rsp), %rcx
leaq 0x2f0(%rsp), %r8
callq 0x3741e0
jmp 0x4ee199
movq 0x40(%rsp), %rdi
leaq 0x350(%rsp), %rsi
callq 0x371e40
jmp 0x4ee1ad
leaq 0x350(%rsp), %rdi
callq 0x371330
leaq 0x2f0(%rsp), %rdi
callq 0x11b838
leaq 0x2d0(%rsp), %rdi
callq 0x11b838
leaq 0x330(%rsp), %rdi
callq 0x11b838
leaq 0x310(%rsp), %rdi
callq 0x11b838
callq 0x2821f0
movq %rax, 0x460(%rsp)
movl $0x1, 0x2cc(%rsp)
jmp 0x4ee7fb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x400(%rsp)
movl %eax, 0x3fc(%rsp)
jmp 0x4ee818
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x400(%rsp)
movl %eax, 0x3fc(%rsp)
jmp 0x4ee2c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x400(%rsp)
movl %eax, 0x3fc(%rsp)
jmp 0x4ee2ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x400(%rsp)
movl %eax, 0x3fc(%rsp)
jmp 0x4ee2ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x400(%rsp)
movl %eax, 0x3fc(%rsp)
jmp 0x4ee2a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x400(%rsp)
movl %eax, 0x3fc(%rsp)
leaq 0x350(%rsp), %rdi
callq 0x371330
leaq 0x2f0(%rsp), %rdi
callq 0x11b838
leaq 0x2d0(%rsp), %rdi
callq 0x11b838
leaq 0x330(%rsp), %rdi
callq 0x11b838
leaq 0x310(%rsp), %rdi
callq 0x11b838
jmp 0x4ee818
movq $0x0, 0x2c0(%rsp)
cmpq $0x3, 0x2c0(%rsp)
jae 0x4ee58f
movq 0x458(%rsp), %rdi
xorl %esi, %esi
callq 0x379940
movq %rax, 0x38(%rsp)
jmp 0x4ee30a
movq 0x38(%rsp), %rcx
movq 0x2c0(%rsp), %rax
movq %rcx, 0x430(%rsp,%rax,8)
movq 0x2c0(%rsp), %rcx
xorl %eax, %eax
cmpq 0x430(%rsp,%rcx,8), %rax
jne 0x4ee350
callq 0x2821f0
movq %rax, 0x460(%rsp)
movl $0x1, 0x2cc(%rsp)
jmp 0x4ee7fb
cmpq $0x2, 0x2c0(%rsp)
jae 0x4ee572
movq 0x458(%rsp), %rdi
movl $0x2c, 0x2bc(%rsp)
leaq 0x2bc(%rsp), %rsi
movl $0x1, %edx
callq 0x37d640
movb %al, 0x37(%rsp)
jmp 0x4ee38a
movb 0x37(%rsp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4ee399
jmp 0x4ee570
movq 0x458(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0x373e90
movq %rax, 0x28(%rsp)
jmp 0x4ee3b2
movq 0x448(%rsp), %rdx
leaq 0xbab03(%rip), %rsi     # 0x5a8ec4
leaq 0x1d0(%rsp), %rdi
callq 0x3784f0
jmp 0x4ee3d0
leaq 0xbb6da(%rip), %rdx     # 0x5a9ab1
leaq 0x1f0(%rsp), %rdi
leaq 0x1d0(%rsp), %rsi
callq 0x29dc30
jmp 0x4ee3ee
leaq 0x190(%rsp), %rdi
movl $0x7175, %esi           # imm = 0x7175
callq 0x371f20
jmp 0x4ee402
leaq 0xb8b0a(%rip), %rsi     # 0x5a6f13
leaq 0x1b0(%rsp), %rdi
leaq 0x190(%rsp), %rdx
callq 0x29dd70
jmp 0x4ee420
movq 0x28(%rsp), %rdx
leaq 0x210(%rsp), %rdi
movl $0x1, %esi
leaq 0x1f0(%rsp), %rcx
leaq 0x1b0(%rsp), %r8
callq 0x3741e0
jmp 0x4ee449
movq 0x20(%rsp), %rdi
leaq 0x210(%rsp), %rsi
callq 0x371e40
jmp 0x4ee45d
leaq 0x210(%rsp), %rdi
callq 0x371330
leaq 0x1b0(%rsp), %rdi
callq 0x11b838
leaq 0x190(%rsp), %rdi
callq 0x11b838
leaq 0x1f0(%rsp), %rdi
callq 0x11b838
leaq 0x1d0(%rsp), %rdi
callq 0x11b838
callq 0x2821f0
movq %rax, 0x460(%rsp)
movl $0x1, 0x2cc(%rsp)
jmp 0x4ee7fb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x400(%rsp)
movl %eax, 0x3fc(%rsp)
jmp 0x4ee55e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x400(%rsp)
movl %eax, 0x3fc(%rsp)
jmp 0x4ee551
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x400(%rsp)
movl %eax, 0x3fc(%rsp)
jmp 0x4ee544
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x400(%rsp)
movl %eax, 0x3fc(%rsp)
jmp 0x4ee537
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x400(%rsp)
movl %eax, 0x3fc(%rsp)
leaq 0x210(%rsp), %rdi
callq 0x371330
leaq 0x1b0(%rsp), %rdi
callq 0x11b838
leaq 0x190(%rsp), %rdi
callq 0x11b838
leaq 0x1f0(%rsp), %rdi
callq 0x11b838
leaq 0x1d0(%rsp), %rdi
callq 0x11b838
jmp 0x4ee818
jmp 0x4ee572
jmp 0x4ee574
jmp 0x4ee576
movq 0x2c0(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x2c0(%rsp)
jmp 0x4ee2e5
movq 0x458(%rsp), %rdi
movl $0x29, 0x18c(%rsp)
leaq 0x18c(%rsp), %rsi
movl $0x1, %edx
callq 0x37d640
movb %al, 0x1f(%rsp)
jmp 0x4ee5ba
movb 0x1f(%rsp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4ee5c9
jmp 0x4ee794
movq 0x458(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0x373e90
movq %rax, 0x10(%rsp)
jmp 0x4ee5e2
movq 0x448(%rsp), %rdx
leaq 0xba915(%rip), %rsi     # 0x5a8f06
leaq 0xa0(%rsp), %rdi
callq 0x3784f0
jmp 0x4ee600
leaq 0xbb4aa(%rip), %rdx     # 0x5a9ab1
leaq 0xc0(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
callq 0x29dc30
jmp 0x4ee61e
leaq 0x60(%rsp), %rdi
movl $0x7182, %esi           # imm = 0x7182
callq 0x371f20
jmp 0x4ee62f
leaq 0xb88dd(%rip), %rsi     # 0x5a6f13
leaq 0x80(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x29dd70
jmp 0x4ee64a
movq 0x10(%rsp), %rdx
leaq 0xe0(%rsp), %rdi
movl $0x1, %esi
leaq 0xc0(%rsp), %rcx
leaq 0x80(%rsp), %r8
callq 0x3741e0
jmp 0x4ee673
movq 0x8(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
callq 0x371e40
jmp 0x4ee687
leaq 0xe0(%rsp), %rdi
callq 0x371330
leaq 0x80(%rsp), %rdi
callq 0x11b838
leaq 0x60(%rsp), %rdi
callq 0x11b838
leaq 0xc0(%rsp), %rdi
callq 0x11b838
leaq 0xa0(%rsp), %rdi
callq 0x11b838
callq 0x2821f0
movq %rax, 0x460(%rsp)
movl $0x1, 0x2cc(%rsp)
jmp 0x4ee7fb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x400(%rsp)
movl %eax, 0x3fc(%rsp)
jmp 0x4ee782
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x400(%rsp)
movl %eax, 0x3fc(%rsp)
jmp 0x4ee775
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x400(%rsp)
movl %eax, 0x3fc(%rsp)
jmp 0x4ee76b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x400(%rsp)
movl %eax, 0x3fc(%rsp)
jmp 0x4ee75e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x400(%rsp)
movl %eax, 0x3fc(%rsp)
leaq 0xe0(%rsp), %rdi
callq 0x371330
leaq 0x80(%rsp), %rdi
callq 0x11b838
leaq 0x60(%rsp), %rdi
callq 0x11b838
leaq 0xc0(%rsp), %rdi
callq 0x11b838
leaq 0xa0(%rsp), %rdi
callq 0x11b838
jmp 0x4ee818
movq 0x458(%rsp), %rdi
addq $0x220, %rdi            # imm = 0x220
leaq 0x454(%rsp), %rsi
leaq 0x430(%rsp), %rdx
callq 0x4ef080
movq %rax, (%rsp)
jmp 0x4ee7be
movq (%rsp), %rax
movq %rax, 0x428(%rsp)
xorl %eax, %eax
cmpq 0x428(%rsp), %rax
sete %al
andb $0x1, %al
movb %al, 0x408(%rsp)
movq 0x428(%rsp), %rax
movq %rax, 0x460(%rsp)
movl $0x1, 0x2cc(%rsp)
leaq 0x408(%rsp), %rdi
callq 0x4ef7c0
movq 0x460(%rsp), %rax
addq $0x468, %rsp            # imm = 0x468
retq
leaq 0x408(%rsp), %rdi
callq 0x4ef7c0
movq 0x400(%rsp), %rdi
callq 0x11b4e0
nopw %cs:(%rax,%rax)
nopl (%rax)