// File: /workspace/github_cpp_makefile_star2_O3/jsteemann[P]jshund/src/./Tokenizer.h
// Function: jshund::Tokenizer::getNext()
Token getNext () {
        if (_position >= _length) {
          return makeToken(TOKEN_EOF);
        }

        if (! skipWhitespace()) {
          makeToken(TOKEN_EOF);
        }
        
        const char c = _input[_position];

        if (c == '\'') {
          return handleString('\'');
        }
        else if (c == '"') {
          return handleString('"');
        }
        else if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c == '_' || c == '$')) {
          return handleId();
        }
        else if (c >= '0' && c <= '9') {
          return handleNumber();
        }
        else if (c == '.') {
          const char c2 = _input[_position + 1];
          if (c2 >= '0' && c2 <= '9') {
            return handleNumber();
          }
        }
        else if (c == '/') {
          const char c2 = _input[_position + 1];
          if (c2 == '*') {
            return handleCommentMulti();
          }
          else if (c2 == '/') {
            return handleCommentSingle();
          }
          if (_last == TOKEN_PARENS_OPEN || 
              _last == TOKEN_ASSIGN || 
              _last == TOKEN_COLON || 
              _last == TOKEN_COMMA ||
              _last == TOKEN_NOT) {
            return handleRegex();
          }
        }

        TokenMapType::const_iterator it;
        for (it = _tokenMap.begin(); it != _tokenMap.end(); ++it) {
          const size_t length = (*it).first.size();
          if (::memcmp(_input + _position, (*it).first.c_str(), length) == 0) {
            // found
            return makeToken((*it).second, (*it).first);
          }
        }

        return makeToken(TOKEN_UNKNOWN);
      }

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x30, %rsp
movq %rsi, %r14
movq %rdi, %rbx
movq 0x90(%rsi), %rax
cmpq 0x88(%rsi), %rax
jae 0x6e59
movq %r14, %rdi
callq 0x701a
testb %al, %al
jne 0x6e2f
movq %rsp, %r15
movq %r15, %rdi
movq %r14, %rsi
movl $0x72, %edx
callq 0x6f9c
movq 0x8(%r15), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x6e2f
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x2200
movq 0x80(%r14), %r15
movq 0x90(%r14), %rcx
movzbl (%r15,%rcx), %eax
cmpl $0x22, %eax
je 0x6e6b
cmpl $0x27, %eax
jne 0x6e7d
movq %rbx, %rdi
movq %r14, %rsi
movl $0x27, %edx
jmp 0x6e76
movq %rbx, %rdi
movq %r14, %rsi
movl $0x72, %edx
callq 0x6f9c
jmp 0x6e9f
movq %rbx, %rdi
movq %r14, %rsi
movl $0x22, %edx
callq 0x707a
jmp 0x6e9f
movl %eax, %edx
andb $-0x21, %dl
addb $-0x41, %dl
cmpb $0x1a, %dl
jb 0x6e94
cmpl $0x5f, %eax
je 0x6e94
cmpl $0x24, %eax
jne 0x6eb0
movq %rbx, %rdi
movq %r14, %rsi
callq 0x7146
movq %rbx, %rax
addq $0x30, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
leal -0x30(%rax), %edx
cmpb $0x9, %dl
ja 0x6ec5
movq %rbx, %rdi
movq %r14, %rsi
callq 0x72f8
jmp 0x6e9f
addq %rcx, %r15
cmpl $0x2f, %eax
je 0x6f1c
cmpl $0x2e, %eax
jne 0x6edc
movb 0x1(%r15), %al
addb $-0x3a, %al
cmpb $-0xa, %al
jae 0x6eb8
movq 0x18(%r14), %r12
leaq 0x8(%r14), %r13
cmpq %r13, %r12
je 0x6f0f
movq 0x20(%r12), %rsi
movq 0x28(%r12), %rdx
movq %r15, %rdi
callq 0x2210
testl %eax, %eax
je 0x6f3b
movq %r12, %rdi
callq 0x2260
movq %rax, %r12
cmpq %r13, %rax
jne 0x6ee9
movq %rbx, %rdi
movq %r14, %rsi
xorl %edx, %edx
jmp 0x6e64
movzbl 0x1(%r15), %eax
cmpl $0x2f, %eax
je 0x6f57
cmpl $0x2a, %eax
jne 0x6f67
movq %rbx, %rdi
movq %r14, %rsi
callq 0x73ce
jmp 0x6e9f
movl 0x40(%r12), %edx
addq $0x20, %r12
movq %rbx, %rdi
movq %r14, %rsi
movq %r12, %rcx
callq 0x7670
jmp 0x6e9f
movq %rbx, %rdi
movq %r14, %rsi
callq 0x74be
jmp 0x6e9f
movl 0x78(%r14), %eax
addl $-0x33, %eax
cmpl $0x31, %eax
ja 0x6edc
movabsq $0x2004000000089, %rcx  # imm = 0x2004000000089
btq %rax, %rcx
jae 0x6edc
movq %rbx, %rdi
movq %r14, %rsi
callq 0x7590
jmp 0x6e9f
nop