// File: ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::lexer::generator::skip_comments()
inline void skip_comments()
         {
            #ifndef exprtk_disable_comments
            // The following comment styles are supported:
            // 1. // .... \n
            // 2. #  .... \n
            // 3. /* .... */
            struct test
            {
               static inline bool comment_start(const char_t c0, const char_t c1, int& mode, int& incr)
               {
                  mode = 0;
                  if      ('#' == c0)    { mode = 1; incr = 1; }
                  else if ('/' == c0)
                  {
                     if      ('/' == c1) { mode = 1; incr = 2; }
                     else if ('*' == c1) { mode = 2; incr = 2; }
                  }
                  return (0 != mode);
               }

               static inline bool comment_end(const char_t c0, const char_t c1, int& mode)
               {
                  if (
                       ((1 == mode) && ('\n' == c0)) ||
                       ((2 == mode) && ( '*' == c0) && ('/' == c1))
                     )
                  {
                     mode = 0;
                     return true;
                  }
                  else
                     return false;
               }
            };

            int mode      = 0;
            int increment = 0;

            if (is_end(s_itr_))
               return;
            else if (!test::comment_start(*s_itr_, *(s_itr_ + 1), mode, increment))
               return;

            details::char_cptr cmt_start = s_itr_;

            s_itr_ += increment;

            while (!is_end(s_itr_))
            {
               if ((1 == mode) && test::comment_end(*s_itr_, 0, mode))
               {
                  ++s_itr_;
                  return;
               }

               if ((2 == mode))
               {
                  if (!is_end((s_itr_ + 1)) && test::comment_end(*s_itr_, *(s_itr_ + 1), mode))
                  {
                     s_itr_ += 2;
                     return;
                  }
               }

               ++s_itr_;
            }

            if (2 == mode)
            {
               token_t t;
               t.set_error(token::e_error, cmt_start, cmt_start + mode, base_itr_);
               token_list_.push_back(t);
            }
            #endif
         }

// Assembly:
subq $0x68, %rsp
movq %rdi, 0x60(%rsp)
movq 0x60(%rsp), %rdi
movq %rdi, 0x8(%rsp)
movl $0x0, 0x5c(%rsp)
movl $0x0, 0x58(%rsp)
movq 0x60(%rdi), %rsi
callq 0x375a40
testb $0x1, %al
jne 0x376022
jmp 0x376027
jmp 0x3761bf
movq 0x8(%rsp), %rax
movq 0x60(%rax), %rcx
movb (%rcx), %sil
movq 0x60(%rax), %rax
leaq 0x5c(%rsp), %rdx
leaq 0x58(%rsp), %rcx
movsbl %sil, %edi
movsbl 0x1(%rax), %esi
callq 0x377640
testb $0x1, %al
jne 0x376057
jmp 0x3761bf
jmp 0x376059
movq 0x8(%rsp), %rax
movq 0x60(%rax), %rcx
movq %rcx, 0x50(%rsp)
movl 0x58(%rsp), %edx
movq 0x60(%rax), %rcx
movslq %edx, %rdx
addq %rdx, %rcx
movq %rcx, 0x60(%rax)
movq 0x8(%rsp), %rdi
movq 0x60(%rdi), %rsi
callq 0x375a40
xorb $-0x1, %al
testb $0x1, %al
jne 0x376092
jmp 0x376146
movl $0x1, %eax
cmpl 0x5c(%rsp), %eax
jne 0x3760d1
movq 0x8(%rsp), %rax
movq 0x60(%rax), %rax
xorl %esi, %esi
leaq 0x5c(%rsp), %rdx
movsbl (%rax), %edi
callq 0x377700
testb $0x1, %al
jne 0x3760bb
jmp 0x3760d1
movq 0x8(%rsp), %rax
movq 0x60(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x60(%rax)
jmp 0x3761bf
movl $0x2, %eax
cmpl 0x5c(%rsp), %eax
jne 0x376130
movq 0x8(%rsp), %rdi
movq 0x60(%rdi), %rsi
addq $0x1, %rsi
callq 0x375a40
testb $0x1, %al
jne 0x37612e
movq 0x8(%rsp), %rax
movq 0x60(%rax), %rcx
movb (%rcx), %cl
movq 0x60(%rax), %rax
leaq 0x5c(%rsp), %rdx
movsbl %cl, %edi
movsbl 0x1(%rax), %esi
callq 0x377700
testb $0x1, %al
jne 0x376118
jmp 0x37612e
movq 0x8(%rsp), %rax
movq 0x60(%rax), %rcx
addq $0x2, %rcx
movq %rcx, 0x60(%rax)
jmp 0x3761bf
jmp 0x376130
movq 0x8(%rsp), %rax
movq 0x60(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x60(%rax)
jmp 0x376079
movl $0x2, %eax
cmpl 0x5c(%rsp), %eax
jne 0x3761bf
leaq 0x20(%rsp), %rdi
movq %rdi, (%rsp)
callq 0x251250
movq 0x8(%rsp), %rax
movq (%rsp), %rdi
movq 0x50(%rsp), %rdx
movslq 0x5c(%rsp), %rsi
movq %rdx, %rcx
addq %rsi, %rcx
movq 0x58(%rax), %r8
movl $0x1, %esi
callq 0x377580
jmp 0x376188
movq 0x8(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x254cc0
jmp 0x376199
leaq 0x20(%rsp), %rdi
callq 0x2512e0
jmp 0x3761bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x18(%rsp)
movl %eax, 0x14(%rsp)
leaq 0x20(%rsp), %rdi
callq 0x2512e0
jmp 0x3761c4
addq $0x68, %rsp
retq
movq 0x18(%rsp), %rdi
callq 0x11b4e0
nop