// File: /workspace/github_cpp_makefile_star2_O2/ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::details::cleanup_escapes(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&)
inline bool cleanup_escapes(std::string& s)
      {
         typedef std::string::iterator str_itr_t;

         str_itr_t itr1 = s.begin();
         str_itr_t itr2 = s.begin();
         str_itr_t end  = s.end  ();

         std::size_t removal_count  = 0;

         while (end != itr1)
         {
            if ('\\' == (*itr1))
            {
               if (end == ++itr1)
               {
                  return false;
               }
               else if (parse_hex(itr1, end, *itr2))
               {
                  itr1 += 4;
                  itr2 += 1;
                  removal_count += 4;
               }
               else if ('a' == (*itr1)) { (*itr2++) = '\a'; ++itr1; ++removal_count; }
               else if ('b' == (*itr1)) { (*itr2++) = '\b'; ++itr1; ++removal_count; }
               else if ('f' == (*itr1)) { (*itr2++) = '\f'; ++itr1; ++removal_count; }
               else if ('n' == (*itr1)) { (*itr2++) = '\n'; ++itr1; ++removal_count; }
               else if ('r' == (*itr1)) { (*itr2++) = '\r'; ++itr1; ++removal_count; }
               else if ('t' == (*itr1)) { (*itr2++) = '\t'; ++itr1; ++removal_count; }
               else if ('v' == (*itr1)) { (*itr2++) = '\v'; ++itr1; ++removal_count; }
               else if ('0' == (*itr1)) { (*itr2++) = '\0'; ++itr1; ++removal_count; }
               else
               {
                  (*itr2++) = (*itr1++);
                  ++removal_count;
               }

               continue;
            }
            else
               (*itr2++) = (*itr1++);
         }

         if ((removal_count > s.size()) || (0 == removal_count))
            return false;

         s.resize(s.size() - removal_count);

         return true;
      }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq (%rdi), %r14
movq %rsp, %r15
movq %r14, (%r15)
movq 0x8(%rdi), %r12
addq %r14, %r12
xorl %r13d, %r13d
leaq 0xd7078(%rip), %rbp     # 0x2cf8fc
movq (%rsp), %rax
cmpq %rax, %r12
je 0x1f8944
leaq 0x1(%rax), %rcx
cmpb $0x5c, (%rax)
movq %rcx, (%rsp)
je 0x1f88a8
movb (%rax), %al
movb %al, (%r14)
incq %r14
jmp 0x1f8884
cmpq %rcx, %r12
je 0x1f8960
movq %r15, %rdi
movq %r12, %rsi
movq %r14, %rdx
callq 0x1f899a
movq (%rsp), %rcx
testb %al, %al
je 0x1f88d5
addq $0x4, %rcx
movq %rcx, (%rsp)
addq $0x4, %r13
jmp 0x1f88a3
movzbl (%rcx), %eax
incq %r13
leal -0x6e(%rax), %edx
cmpl $0x8, %edx
jbe 0x1f88fd
cmpl $0x30, %eax
je 0x1f892b
cmpl $0x66, %eax
je 0x1f8937
cmpl $0x62, %eax
je 0x1f8931
cmpl $0x61, %eax
jne 0x1f890d
movb $0x7, (%r14)
jmp 0x1f893b
movslq (%rbp,%rdx,4), %rax
addq %rbp, %rax
jmpq *%rax
movb $0xa, (%r14)
jmp 0x1f893b
leaq 0x1(%rcx), %rax
movq %rax, (%rsp)
movb (%rcx), %al
jmp 0x1f88a0
movb $0xb, (%r14)
jmp 0x1f893b
movb $0x9, (%r14)
jmp 0x1f893b
movb $0xd, (%r14)
jmp 0x1f893b
movb $0x0, (%r14)
jmp 0x1f893b
movb $0x8, (%r14)
jmp 0x1f893b
movb $0xc, (%r14)
incq (%rsp)
jmp 0x1f88a3
movq 0x8(%rbx), %rsi
leaq -0x1(%r13), %rax
cmpq %rsi, %rax
jae 0x1f8960
subq %r13, %rsi
movq %rbx, %rdi
callq 0x118210
movb $0x1, %al
jmp 0x1f8962
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop