// File: ArashPartow[P]exprtk/./exprtk.hpp
// Function: bool exprtk::details::parse_hex<__gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>(__gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>&, __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, char&)
inline bool parse_hex(Iterator& itr, Iterator end,
                            char_t& result)
      {
         if (
              (end ==  (itr    ))               ||
              (end ==  (itr + 1))               ||
              (end ==  (itr + 2))               ||
              (end ==  (itr + 3))               ||
              ('0' != *(itr    ))               ||
              ('X' != std::toupper(*(itr + 1))) ||
              (!is_hex_digit(*(itr + 2)))       ||
              (!is_hex_digit(*(itr + 3)))
            )
         {
            return false;
         }

         result = static_cast<char_t>(
                     hex_to_bin(static_cast<uchar_t>(*(itr + 2))) << 4 |
                     hex_to_bin(static_cast<uchar_t>(*(itr + 3)))) ;

         return true;
      }

// Assembly:
subq $0x68, %rsp
movq %rsi, 0x58(%rsp)
movq %rdi, 0x50(%rsp)
movq %rdx, 0x48(%rsp)
movq 0x50(%rsp), %rsi
leaq 0x58(%rsp), %rdi
callq 0x374bb0
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, 0x7(%rsp)
jne 0x378257
movq 0x50(%rsp), %rdi
movl $0x1, %esi
callq 0x378340
movq %rax, 0x40(%rsp)
leaq 0x58(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x374bb0
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, 0x7(%rsp)
jne 0x378257
movq 0x50(%rsp), %rdi
movl $0x2, %esi
callq 0x378340
movq %rax, 0x38(%rsp)
leaq 0x58(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x374bb0
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, 0x7(%rsp)
jne 0x378257
movq 0x50(%rsp), %rdi
movl $0x3, %esi
callq 0x378340
movq %rax, 0x30(%rsp)
leaq 0x58(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x374bb0
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, 0x7(%rsp)
jne 0x378257
movq 0x50(%rsp), %rdi
callq 0x374cf0
movsbl (%rax), %edx
movb $0x1, %al
movl $0x30, %ecx
cmpl %edx, %ecx
movb %al, 0x7(%rsp)
jne 0x378257
movq 0x50(%rsp), %rdi
movl $0x1, %esi
callq 0x378340
movq %rax, 0x28(%rsp)
leaq 0x28(%rsp), %rdi
callq 0x374cf0
movsbl (%rax), %edi
callq 0x11b1b0
movl %eax, %edx
movb $0x1, %al
movl $0x58, %ecx
cmpl %edx, %ecx
movb %al, 0x7(%rsp)
jne 0x378257
movq 0x50(%rsp), %rdi
movl $0x2, %esi
callq 0x378340
movq %rax, 0x20(%rsp)
leaq 0x20(%rsp), %rdi
callq 0x374cf0
movzbl (%rax), %edi
callq 0x3778f0
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, 0x7(%rsp)
jne 0x37822b
jmp 0x378257
movq 0x50(%rsp), %rdi
movl $0x3, %esi
callq 0x378340
movq %rax, 0x18(%rsp)
leaq 0x18(%rsp), %rdi
callq 0x374cf0
movzbl (%rax), %edi
callq 0x3778f0
xorb $-0x1, %al
movb %al, 0x7(%rsp)
movb 0x7(%rsp), %al
testb $0x1, %al
jne 0x378261
jmp 0x378268
movb $0x0, 0x67(%rsp)
jmp 0x3782d5
movq 0x50(%rsp), %rdi
movl $0x2, %esi
callq 0x378340
movq %rax, 0x10(%rsp)
leaq 0x10(%rsp), %rdi
callq 0x374cf0
movzbl (%rax), %edi
callq 0x378380
movzbl %al, %eax
shll $0x4, %eax
movl %eax, (%rsp)
movq 0x50(%rsp), %rdi
movl $0x3, %esi
callq 0x378340
movq %rax, 0x8(%rsp)
leaq 0x8(%rsp), %rdi
callq 0x374cf0
movzbl (%rax), %edi
callq 0x378380
movb %al, %cl
movl (%rsp), %eax
movzbl %cl, %ecx
orl %ecx, %eax
movb %al, %cl
movq 0x48(%rsp), %rax
movb %cl, (%rax)
movb $0x1, 0x67(%rsp)
movb 0x67(%rsp), %al
andb $0x1, %al
addq $0x68, %rsp
retq