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

            if (std::distance(s_itr_,s_end_) < 2)
            {
               t.set_error(token::e_err_string, s_itr_, s_end_, base_itr_);
               token_list_.push_back(t);

               return;
            }

            ++s_itr_;

            bool escaped_found = false;
            bool escaped = false;

            while (!is_end(s_itr_))
            {
               if (!details::is_valid_string_char(*s_itr_))
               {
                  t.set_error(token::e_err_string, initial_itr, s_itr_, base_itr_);
                  token_list_.push_back(t);

                  return;
               }
               else if (!escaped && ('\\' == *s_itr_))
               {
                  escaped_found = true;
                  escaped = true;
                  ++s_itr_;

                  continue;
               }
               else if (!escaped)
               {
                  if ('\'' == *s_itr_)
                     break;
               }
               else if (escaped)
               {
                  if (
                       !is_end(s_itr_) && ('0' == *(s_itr_)) &&
                       ((s_itr_ + 4) <= s_end_)
                     )
                  {
                     const bool x_separator = ('X' == std::toupper(*(s_itr_ + 1)));

                     const bool both_digits = details::is_hex_digit(*(s_itr_ + 2)) &&
                                              details::is_hex_digit(*(s_itr_ + 3)) ;

                     if (!(x_separator && both_digits))
                     {
                        t.set_error(token::e_err_string, initial_itr, s_itr_, base_itr_);
                        token_list_.push_back(t);

                        return;
                     }
                     else
                        s_itr_ += 3;
                  }

                  escaped = false;
               }

               ++s_itr_;
            }

            if (is_end(s_itr_))
            {
               t.set_error(token::e_err_string, initial_itr, s_itr_, base_itr_);
               token_list_.push_back(t);

               return;
            }

            if (!escaped_found)
               t.set_string(initial_itr, s_itr_, base_itr_);
            else
            {
               std::string parsed_string(initial_itr,s_itr_);

               if (!details::cleanup_escapes(parsed_string))
               {
                  t.set_error(token::e_err_string, initial_itr, s_itr_, base_itr_);
                  token_list_.push_back(t);

                  return;
               }

               t.set_string(
                  parsed_string,
                  static_cast<std::size_t>(std::distance(base_itr_,initial_itr)));
            }

            token_list_.push_back(t);
            ++s_itr_;

            return;
         }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x50, %rsp
movq %rdi, %rbx
movq 0x60(%rdi), %r14
movq %rsp, %rdi
callq 0x19e4ae
movq 0x60(%rbx), %r15
movq 0x68(%rbx), %rcx
movq %rcx, %rax
subq %r15, %rax
cmpq $0x2, %rax
jge 0x1f84a7
movq 0x58(%rbx), %r8
movq %rsp, %rdi
pushq $0x4
popq %rsi
movq %r15, %rdx
callq 0x1f86e4
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x19f258
jmp 0x1f85f6
incq %r14
xorl %r12d, %r12d
movl %r12d, %ebp
incq %r15
movq %r15, 0x60(%rbx)
cmpq %r15, 0x68(%rbx)
je 0x1f85d6
movsbl (%r15), %edi
callq 0x1f87d7
movq 0x60(%rbx), %r15
testb %al, %al
je 0x1f8569
testb $0x1, %bpl
je 0x1f854d
movq 0x68(%rbx), %rax
xorl %ebp, %ebp
cmpq %r15, %rax
je 0x1f84b0
cmpb $0x30, (%r15)
setne %cl
leaq 0x4(%r15), %rdx
cmpq %rax, %rdx
seta %al
xorl %ebp, %ebp
orb %cl, %al
jne 0x1f84b0
movsbl 0x1(%r15), %edi
callq 0x118130
movl %eax, %ebp
movzbl 0x2(%r15), %edi
callq 0x1f8806
testb %al, %al
je 0x1f860d
movq 0x60(%rbx), %rax
movzbl 0x3(%rax), %edi
callq 0x1f8806
cmpl $0x58, %ebp
jne 0x1f860d
testb %al, %al
je 0x1f860d
movq 0x60(%rbx), %r15
addq $0x3, %r15
movq %r15, 0x60(%rbx)
xorl %ebp, %ebp
jmp 0x1f84b0
movzbl (%r15), %eax
cmpl $0x27, %eax
je 0x1f8580
xorl %ebp, %ebp
cmpl $0x5c, %eax
jne 0x1f84b0
movb $0x1, %r12b
jmp 0x1f84ad
movq 0x58(%rbx), %r8
movq %rsp, %rdi
pushq $0x4
popq %rsi
movq %r14, %rdx
movq %r15, %rcx
callq 0x1f86e4
jmp 0x1f85eb
cmpq %r15, 0x68(%rbx)
je 0x1f85d6
testb $0x1, %r12b
je 0x1f8630
leaq 0x40(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x30(%rsp), %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x193e72
leaq 0x30(%rsp), %rdi
callq 0x1f885c
movl %eax, %ebp
testb %al, %al
je 0x1f8644
subq 0x58(%rbx), %r14
movq %rsp, %rdi
leaq 0x30(%rsp), %rsi
movq %r14, %rdx
callq 0x1f8972
jmp 0x1f8665
movq 0x58(%rbx), %r8
movq %rsp, %rdi
pushq $0x4
popq %rsi
movq %r14, %rdx
movq %r15, %rcx
callq 0x1f86e4
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x19f258
leaq 0x8(%rsp), %rdi
callq 0x118648
addq $0x50, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq 0x58(%rbx), %r8
movq 0x60(%rbx), %rcx
movq %rsp, %rdi
pushq $0x4
popq %rsi
movq %r14, %rdx
callq 0x1f86e4
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x19f258
jmp 0x1f85f6
movq 0x58(%rbx), %rcx
movq %rsp, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x1f882a
jmp 0x1f8674
movq 0x58(%rbx), %r8
movq 0x60(%rbx), %rcx
movq %rsp, %rdi
pushq $0x4
popq %rsi
movq %r14, %rdx
callq 0x1f86e4
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x19f258
leaq 0x30(%rsp), %rdi
callq 0x118648
testb %bpl, %bpl
je 0x1f85f6
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x19f258
incq 0x60(%rbx)
jmp 0x1f85f6
jmp 0x1f869d
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x118648
jmp 0x1f86a0
jmp 0x1f869d
jmp 0x1f869d
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x118648
movq %rbx, %rdi
callq 0x118360