// File: ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::lexer::generator::scan_special_function()
inline void scan_special_function()
         {
            details::char_cptr initial_itr = s_itr_;
            token_t t;

            // $fdd(x,x,x) = at least 11 chars
            if (std::distance(s_itr_,s_end_) < 11)
            {
               t.set_error(
                  token::e_err_sfunc,
                  initial_itr, std::min(initial_itr + 11, s_end_),
                  base_itr_);
               token_list_.push_back(t);

               return;
            }

            if (
                 !(('$' == *s_itr_)                       &&
                   (details::imatch  ('f',*(s_itr_ + 1))) &&
                   (details::is_digit(*(s_itr_ + 2)))     &&
                   (details::is_digit(*(s_itr_ + 3))))
               )
            {
               t.set_error(
                  token::e_err_sfunc,
                  initial_itr, std::min(initial_itr + 4, s_end_),
                  base_itr_);
               token_list_.push_back(t);

               return;
            }

            s_itr_ += 4; // $fdd = 4chars

            t.set_symbol(initial_itr, s_itr_, base_itr_);
            token_list_.push_back(t);

            return;
         }

// Assembly:
subq $0xa8, %rsp
movq %rdi, 0xa0(%rsp)
movq 0xa0(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x60(%rax), %rax
movq %rax, 0x98(%rsp)
leaq 0x68(%rsp), %rdi
callq 0x251250
movq 0x30(%rsp), %rax
movq 0x60(%rax), %rdi
movq 0x68(%rax), %rsi
callq 0x22cb80
movq %rax, 0x38(%rsp)
jmp 0x376deb
movq 0x38(%rsp), %rax
cmpq $0xb, %rax
jge 0x376e8c
movq 0x30(%rsp), %rsi
movq 0x98(%rsp), %rax
movq %rax, 0x20(%rsp)
addq $0xb, %rax
movq %rax, 0x50(%rsp)
addq $0x68, %rsi
leaq 0x50(%rsp), %rdi
callq 0x377830
movq %rax, 0x28(%rsp)
jmp 0x376e2a
movq 0x20(%rsp), %rdx
movq 0x30(%rsp), %rax
movq 0x28(%rsp), %rcx
movq (%rcx), %rcx
movq 0x58(%rax), %r8
leaq 0x68(%rsp), %rdi
movl $0x5, %esi
callq 0x377580
jmp 0x376e51
movq 0x30(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x254cc0
jmp 0x376e62
movl $0x1, 0x4c(%rsp)
jmp 0x376fae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x60(%rsp)
movl %eax, 0x5c(%rsp)
leaq 0x68(%rsp), %rdi
callq 0x2512e0
jmp 0x376fc0
movq 0x30(%rsp), %rax
movq 0x60(%rax), %rax
movsbl (%rax), %ecx
movl $0x24, %eax
cmpl %ecx, %eax
jne 0x376ef6
movq 0x30(%rsp), %rax
movq 0x60(%rax), %rax
movsbl 0x1(%rax), %esi
movl $0x66, %edi
callq 0x377870
movb %al, 0x1f(%rsp)
jmp 0x376ebe
movb 0x1f(%rsp), %al
testb $0x1, %al
jne 0x376ec8
jmp 0x376ef6
movq 0x30(%rsp), %rax
movq 0x60(%rax), %rax
movsbl 0x2(%rax), %edi
callq 0x2343b0
testb $0x1, %al
jne 0x376ee0
jmp 0x376ef6
movq 0x30(%rsp), %rax
movq 0x60(%rax), %rax
movsbl 0x3(%rax), %edi
callq 0x2343b0
testb $0x1, %al
jne 0x376f68
movq 0x30(%rsp), %rsi
movq 0x98(%rsp), %rax
movq %rax, 0x8(%rsp)
addq $0x4, %rax
movq %rax, 0x40(%rsp)
addq $0x68, %rsi
leaq 0x40(%rsp), %rdi
callq 0x377830
movq %rax, 0x10(%rsp)
jmp 0x376f26
movq 0x8(%rsp), %rdx
movq 0x30(%rsp), %rax
movq 0x10(%rsp), %rcx
movq (%rcx), %rcx
movq 0x58(%rax), %r8
leaq 0x68(%rsp), %rdi
movl $0x5, %esi
callq 0x377580
jmp 0x376f4d
movq 0x30(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x254cc0
jmp 0x376f5e
movl $0x1, 0x4c(%rsp)
jmp 0x376fae
movq 0x30(%rsp), %rax
movq 0x60(%rax), %rcx
addq $0x4, %rcx
movq %rcx, 0x60(%rax)
movq 0x98(%rsp), %rsi
movq 0x58(%rax), %rcx
movq 0x60(%rax), %rdx
leaq 0x68(%rsp), %rdi
callq 0x377510
jmp 0x376f95
movq 0x30(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x254cc0
jmp 0x376fa6
movl $0x1, 0x4c(%rsp)
leaq 0x68(%rsp), %rdi
callq 0x2512e0
addq $0xa8, %rsp
retq
movq 0x60(%rsp), %rdi
callq 0x11b4e0
nopw (%rax,%rax)