// File: ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::parser_error::update_error(exprtk::parser_error::type&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
inline bool update_error(type& error, const std::string& expression)
      {
         if (
              expression.empty()                         ||
              (error.token.position > expression.size()) ||
              (std::numeric_limits<std::size_t>::max() == error.token.position)
            )
         {
            return false;
         }

         std::size_t error_line_start = 0;

         for (std::size_t i = error.token.position; i > 0; --i)
         {
            const details::char_t c = expression[i];

            if (('\n' == c) || ('\r' == c))
            {
               error_line_start = i + 1;
               break;
            }
         }

         std::size_t next_nl_position = std::min(expression.size(),
                                                 expression.find_first_of('\n',error.token.position + 1));

         error.column_no  = error.token.position - error_line_start;
         error.error_line = expression.substr(error_line_start,
                                              next_nl_position - error_line_start);

         error.line_no = 0;

         for (std::size_t i = 0; i < next_nl_position; ++i)
         {
            if ('\n' == expression[i])
               ++error.line_no;
         }

         return true;
      }

// Assembly:
subq $0x78, %rsp
movq %rdi, 0x68(%rsp)
movq %rsi, 0x60(%rsp)
movq 0x60(%rsp), %rdi
callq 0x11b260
testb $0x1, %al
jne 0x5960af
movq 0x68(%rsp), %rax
movq 0x28(%rax), %rax
movq %rax, (%rsp)
movq 0x60(%rsp), %rdi
callq 0x11b270
movq %rax, %rcx
movq (%rsp), %rax
cmpq %rcx, %rax
ja 0x5960af
callq 0x237af0
movq 0x68(%rsp), %rcx
cmpq 0x28(%rcx), %rax
jne 0x5960b9
movb $0x0, 0x77(%rsp)
jmp 0x596235
movq $0x0, 0x58(%rsp)
movq 0x68(%rsp), %rax
movq 0x28(%rax), %rax
movq %rax, 0x50(%rsp)
cmpq $0x0, 0x50(%rsp)
jbe 0x59612b
movq 0x60(%rsp), %rdi
movq 0x50(%rsp), %rsi
callq 0x11b770
movb (%rax), %al
movb %al, 0x4f(%rsp)
movsbl 0x4f(%rsp), %ecx
movl $0xa, %eax
cmpl %ecx, %eax
je 0x596109
movsbl 0x4f(%rsp), %ecx
movl $0xd, %eax
cmpl %ecx, %eax
jne 0x596119
movq 0x50(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x58(%rsp)
jmp 0x59612b
jmp 0x59611b
movq 0x50(%rsp), %rax
addq $-0x1, %rax
movq %rax, 0x50(%rsp)
jmp 0x5960d0
movq 0x60(%rsp), %rdi
callq 0x11b270
movq %rax, 0x38(%rsp)
movq 0x60(%rsp), %rdi
movq 0x68(%rsp), %rax
movq 0x28(%rax), %rdx
addq $0x1, %rdx
movl $0xa, %esi
callq 0x11b4a0
movq %rax, 0x30(%rsp)
leaq 0x38(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x234c90
movq (%rax), %rax
movq %rax, 0x40(%rsp)
movq 0x68(%rsp), %rax
movq 0x28(%rax), %rcx
subq 0x58(%rsp), %rcx
movq 0x68(%rsp), %rax
movq %rcx, 0xa0(%rax)
movq 0x60(%rsp), %rsi
movq 0x58(%rsp), %rdx
movq 0x40(%rsp), %rcx
subq 0x58(%rsp), %rcx
leaq 0x10(%rsp), %rdi
callq 0x11b710
movq 0x68(%rsp), %rdi
addq $0x78, %rdi
leaq 0x10(%rsp), %rsi
callq 0x11b430
leaq 0x10(%rsp), %rdi
callq 0x11b838
movq 0x68(%rsp), %rax
movq $0x0, 0x98(%rax)
movq $0x0, 0x8(%rsp)
movq 0x8(%rsp), %rax
cmpq 0x40(%rsp), %rax
jae 0x596230
movq 0x60(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0x11b770
movsbl (%rax), %ecx
movl $0xa, %eax
cmpl %ecx, %eax
jne 0x59621e
movq 0x68(%rsp), %rax
movq 0x98(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x98(%rax)
jmp 0x596220
movq 0x8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x8(%rsp)
jmp 0x5961e0
movb $0x1, 0x77(%rsp)
movb 0x77(%rsp), %al
andb $0x1, %al
addq $0x78, %rsp
retq