// File: ArashPartow[P]exprtk/./exprtk.hpp
// Function: bool exprtk::details::string_to_type_converter_impl_ref<char const*, int>(char const*&, char const*, int&)
inline bool string_to_type_converter_impl_ref(Iterator& itr, const Iterator end, T& result)
      {
         if (itr == end)
            return false;

         const bool negative = ('-' == (*itr));

         if (negative || ('+' == (*itr)))
         {
            if (end == ++itr)
               return false;
         }

         static const uchar_t zero = static_cast<uchar_t>('0');

         while ((end != itr) && (zero == (*itr))) ++itr;

         bool return_result = true;
         unsigned int digit = 0;
         const std::size_t length = static_cast<std::size_t>(std::distance(itr,end));

         if (length <= 4)
         {
            switch (length)
            {
               #ifdef exprtk_use_lut

               #define exprtk_process_digit                          \
               if ((digit = details::digit_table[(int)*itr++]) < 10) \
                  result = result * 10 + (digit);                    \
               else                                                  \
               {                                                     \
                  return_result = false;                             \
                  break;                                             \
               }                                                     \
               exprtk_fallthrough                                    \

               #else

               #define exprtk_process_digit        \
               if ((digit = (*itr++ - zero)) < 10) \
                  result = result * T(10) + digit; \
               else                                \
               {                                   \
                  return_result = false;           \
                  break;                           \
               }                                   \
               exprtk_fallthrough                  \

               #endif

               case 4 : exprtk_process_digit
               case 3 : exprtk_process_digit
               case 2 : exprtk_process_digit
               case 1 : if ((digit = (*itr - zero))>= 10)
                        {
                           digit = 0;
                           return_result = false;
                        }

               #undef exprtk_process_digit
            }
         }

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x38(%rsp)
movq %rsi, 0x30(%rsp)
movq %rdx, 0x28(%rsp)
movq 0x38(%rsp), %rax
movq (%rax), %rax
cmpq 0x30(%rsp), %rax
jne 0x25ae6c
movb $0x0, 0x47(%rsp)
jmp 0x25b0c2
movq 0x38(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %ecx
movl $0x2d, %eax
cmpl %ecx, %eax
sete %al
andb $0x1, %al
movb %al, 0x27(%rsp)
testb $0x1, 0x27(%rsp)
jne 0x25aea2
movq 0x38(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %ecx
movl $0x2b, %eax
cmpl %ecx, %eax
jne 0x25aec7
movq 0x30(%rsp), %rax
movq 0x38(%rsp), %rdx
movq (%rdx), %rcx
addq $0x1, %rcx
movq %rcx, (%rdx)
cmpq %rcx, %rax
jne 0x25aec5
movb $0x0, 0x47(%rsp)
jmp 0x25b0c2
jmp 0x25aec7
jmp 0x25aec9
movq 0x30(%rsp), %rcx
movq 0x38(%rsp), %rdx
xorl %eax, %eax
cmpq (%rdx), %rcx
movb %al, 0x17(%rsp)
je 0x25aef7
movq 0x38(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %ecx
movl $0x30, %eax
cmpl %ecx, %eax
sete %al
movb %al, 0x17(%rsp)
movb 0x17(%rsp), %al
testb $0x1, %al
jne 0x25af01
jmp 0x25af12
movq 0x38(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
jmp 0x25aec9
movb $0x1, 0x26(%rsp)
movl $0x0, 0x20(%rsp)
movq 0x38(%rsp), %rax
movq (%rax), %rdi
movq 0x30(%rsp), %rsi
callq 0x22cb80
movq %rax, 0x18(%rsp)
cmpq $0x4, 0x18(%rsp)
ja 0x25b056
movq 0x18(%rsp), %rax
decq %rax
movq %rax, 0x8(%rsp)
subq $0x3, %rax
ja 0x25b054
movq 0x8(%rsp), %rax
leaq 0x3402b3(%rip), %rcx    # 0x59b218
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x38(%rsp), %rcx
movq (%rcx), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, (%rcx)
movsbl (%rax), %eax
subl $0x30, %eax
movl %eax, 0x20(%rsp)
cmpl $0xa, %eax
jae 0x25afa4
movq 0x28(%rsp), %rax
imull $0xa, (%rax), %ecx
addl 0x20(%rsp), %ecx
movq 0x28(%rsp), %rax
movl %ecx, (%rax)
jmp 0x25afae
movb $0x0, 0x26(%rsp)
jmp 0x25b054
jmp 0x25afb0
movq 0x38(%rsp), %rcx
movq (%rcx), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, (%rcx)
movsbl (%rax), %eax
subl $0x30, %eax
movl %eax, 0x20(%rsp)
cmpl $0xa, %eax
jae 0x25afe6
movq 0x28(%rsp), %rax
imull $0xa, (%rax), %ecx
addl 0x20(%rsp), %ecx
movq 0x28(%rsp), %rax
movl %ecx, (%rax)
jmp 0x25afed
movb $0x0, 0x26(%rsp)
jmp 0x25b054
jmp 0x25afef
movq 0x38(%rsp), %rcx
movq (%rcx), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, (%rcx)
movsbl (%rax), %eax
subl $0x30, %eax
movl %eax, 0x20(%rsp)
cmpl $0xa, %eax
jae 0x25b025
movq 0x28(%rsp), %rax
imull $0xa, (%rax), %ecx
addl 0x20(%rsp), %ecx
movq 0x28(%rsp), %rax
movl %ecx, (%rax)
jmp 0x25b02c
movb $0x0, 0x26(%rsp)
jmp 0x25b054
jmp 0x25b02e
movq 0x38(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
subl $0x30, %eax
movl %eax, 0x20(%rsp)
cmpl $0xa, %eax
jb 0x25b052
movl $0x0, 0x20(%rsp)
movb $0x0, 0x26(%rsp)
jmp 0x25b054
jmp 0x25b05b
movb $0x0, 0x26(%rsp)
cmpq $0x0, 0x18(%rsp)
je 0x25b08c
testb $0x1, 0x26(%rsp)
je 0x25b08c
movq 0x28(%rsp), %rax
imull $0xa, (%rax), %ecx
addl 0x20(%rsp), %ecx
movq 0x28(%rsp), %rax
movl %ecx, (%rax)
movq 0x38(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
testb $0x1, 0x27(%rsp)
je 0x25b0a2
movq 0x28(%rsp), %rcx
xorl %eax, %eax
subl (%rcx), %eax
movl %eax, 0x4(%rsp)
jmp 0x25b0ad
movq 0x28(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x4(%rsp)
movl 0x4(%rsp), %ecx
movq 0x28(%rsp), %rax
movl %ecx, (%rax)
movb 0x26(%rsp), %al
andb $0x1, %al
movb %al, 0x47(%rsp)
movb 0x47(%rsp), %al
andb $0x1, %al
addq $0x48, %rsp
retq
nopl (%rax)