// File: /workspace/github_cpp_makefile_star2_O2/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:
movq (%rdi), %r8
cmpq %rsi, %r8
je 0x1a0e99
movzbl (%r8), %ecx
cmpl $0x2d, %ecx
je 0x1a0e72
cmpl $0x2b, %ecx
jne 0x1a0e7d
incq %r8
movq %r8, (%rdi)
cmpq %rsi, %r8
je 0x1a0e99
movq %rsi, %r9
subq %r8, %r9
cmpq %rsi, %r8
je 0x1a0e9c
cmpb $0x30, (%r8)
jne 0x1a0e9c
incq %r8
movq %r8, (%rdi)
decq %r9
jmp 0x1a0e83
xorl %eax, %eax
retq
cmpq $0x4, %r9
ja 0x1a0f42
movb $0x1, %al
decq %r9
cmpq $0x3, %r9
ja 0x1a0f44
leaq 0x12d4f4(%rip), %rsi    # 0x2ce3b0
movslq (%rsi,%r9,4), %r9
addq %rsi, %r9
jmpq *%r9
movq %r8, %rsi
jmp 0x1a0eea
leaq 0x1(%r8), %rsi
movq %rsi, (%rdi)
movsbl (%r8), %r8d
addl $-0x30, %r8d
cmpl $0x9, %r8d
ja 0x1a0f42
imull $0xa, (%rdx), %r9d
addl %r8d, %r9d
movl %r9d, (%rdx)
leaq 0x1(%rsi), %r8
movq %r8, (%rdi)
movsbl (%rsi), %esi
addl $-0x30, %esi
cmpl $0x9, %esi
ja 0x1a0f42
imull $0xa, (%rdx), %r9d
addl %esi, %r9d
movl %r9d, (%rdx)
movq %r8, %rsi
incq %r8
movq %r8, (%rdi)
movsbl (%rsi), %esi
addl $-0x30, %esi
cmpl $0x9, %esi
ja 0x1a0f42
imull $0xa, (%rdx), %r9d
addl %esi, %r9d
movl %r9d, (%rdx)
movsbl (%r8), %esi
addl $-0x30, %esi
cmpl $0x9, %esi
ja 0x1a0f42
imull $0xa, (%rdx), %r9d
addl %esi, %r9d
movl %r9d, (%rdx)
incq %r8
movq %r8, (%rdi)
jmp 0x1a0f44
xorl %eax, %eax
movl (%rdx), %esi
movl %esi, %edi
negl %edi
cmpb $0x2d, %cl
cmovnel %esi, %edi
movl %edi, (%rdx)
retq
nop