// File: /workspace/github_cpp_makefile_star2_O3/zeeev[P]DASVC/bamtools/src/third_party/jsoncpp/json_reader.cpp
// Function: Json::Reader::readToken(Json::Reader::Token&)
bool 
Reader::readToken( Token &token )
{
   skipSpaces();
   token.start_ = current_;
   Char c = getNextChar();
   bool ok = true;
   switch ( c )
   {
   case '{':
      token.type_ = tokenObjectBegin;
      break;
   case '}':
      token.type_ = tokenObjectEnd;
      break;
   case '[':
      token.type_ = tokenArrayBegin;
      break;
   case ']':
      token.type_ = tokenArrayEnd;
      break;
   case '"':
      token.type_ = tokenString;
      ok = readString();
      break;
   case '/':
      token.type_ = tokenComment;
      ok = readComment();
      break;
   case '0':
   case '1':
   case '2':
   case '3':
   case '4':
   case '5':
   case '6':
   case '7':
   case '8':
   case '9':
   case '-':
      token.type_ = tokenNumber;
      readNumber();
      break;
   case 't':
      token.type_ = tokenTrue;
      ok = match( "rue", 3 );
      break;
   case 'f':
      token.type_ = tokenFalse;
      ok = match( "alse", 4 );
      break;
   case 'n':
      token.type_ = tokenNull;
      ok = match( "ull", 3 );
      break;
   case ',':
      token.type_ = tokenArraySeparator;
      break;
   case ':':
      token.type_ = tokenMemberSeparator;
      break;
   case 0:
      token.type_ = tokenEndOfStream;
      break;
   default:
      ok = false;
      break;
   }
   if ( !ok )
      token.type_ = tokenError;
   token.end_ = current_;
   return true;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
movq 0xc8(%rdi), %rcx
movq 0xd0(%rdi), %rax
cmpq %rcx, %rax
je 0x67b41
movabsq $0x100002600, %rdx      # imm = 0x100002600
movzbl (%rax), %esi
cmpq $0x20, %rsi
ja 0x67b41
btq %rsi, %rdx
jae 0x67b41
incq %rax
movq %rax, 0xd0(%r14)
cmpq %rcx, %rax
jne 0x67b23
movq %rax, 0x8(%rbx)
cmpq %rcx, %rax
je 0x67ca3
leaq 0x1(%rax), %rdx
movq %rdx, 0xd0(%r14)
movzbl (%rax), %esi
cmpl $0x5a, %esi
jg 0x67bcc
leal -0x22(%rsi), %eax
cmpl $0x18, %eax
ja 0x67c9f
leaq 0xe63c(%rip), %rsi      # 0x761b0
movslq (%rsi,%rax,4), %rax
addq %rsi, %rax
jmpq *%rax
movl $0x6, (%rbx)
cmpq %rcx, %rdx
je 0x67d19
movabsq $0x40000000400000d, %rax # imm = 0x40000000400000D
movzbl (%rdx), %esi
leal -0x30(%rsi), %edi
cmpb $0xa, %dil
jb 0x67bb8
addl $-0x2b, %esi
cmpl $0x3a, %esi
ja 0x67d19
btq %rsi, %rax
jae 0x67d19
incq %rdx
movq %rdx, 0xd0(%r14)
cmpq %rcx, %rdx
jne 0x67b96
jmp 0x67d19
cmpl $0x6d, %esi
jle 0x67c2d
cmpl $0x7a, %esi
jg 0x67c89
cmpl $0x6e, %esi
je 0x67cdf
cmpl $0x74, %esi
jne 0x67d13
movl $0x7, (%rbx)
subq %rdx, %rcx
cmpq $0x3, %rcx
jl 0x67d13
movl $0x3, %edx
leaq 0xa0b7(%rip), %rcx      # 0x71cc2
movl $0x3, %esi
subq $0x1, %rsi
jb 0x67d46
movb (%rax,%rdx), %dil
cmpb -0x1(%rdx,%rcx), %dil
movq %rsi, %rdx
je 0x67c10
jmp 0x67d13
cmpl $0x5b, %esi
je 0x67d36
cmpl $0x5d, %esi
je 0x67d3e
cmpl $0x66, %esi
jne 0x67d13
movl $0x8, (%rbx)
subq %rdx, %rcx
cmpq $0x4, %rcx
jl 0x67d13
movl $0x4, %edx
leaq 0xa682(%rip), %rcx      # 0x722e9
movl $0x4, %esi
subq $0x1, %rsi
jb 0x67d4c
movb (%rax,%rdx), %dil
cmpb -0x1(%rdx,%rcx), %dil
movq %rsi, %rdx
je 0x67c6c
jmp 0x67d13
cmpl $0x7d, %esi
je 0x67d2e
cmpl $0x7b, %esi
jne 0x67d13
movl $0x1, (%rbx)
jmp 0x67d19
testl %esi, %esi
jne 0x67d13
movl $0x0, (%rbx)
jmp 0x67d19
movl $0xc, (%rbx)
movq %r14, %rdi
callq 0x67e9c
jmp 0x67cc9
movl $0x5, (%rbx)
movq %r14, %rdi
callq 0x67e4a
testb %al, %al
je 0x67d13
jmp 0x67d19
movl $0xa, (%rbx)
jmp 0x67d19
movl $0xb, (%rbx)
jmp 0x67d19
movl $0x9, (%rbx)
subq %rdx, %rcx
cmpq $0x3, %rcx
jl 0x67d13
movl $0x3, %edx
leaq 0xeb34(%rip), %rcx      # 0x7682e
movl $0x3, %esi
subq $0x1, %rsi
jb 0x67d46
movb (%rax,%rdx), %dil
cmpb -0x1(%rdx,%rcx), %dil
movq %rsi, %rdx
je 0x67cff
movl $0xd, (%rbx)
movq 0xd0(%r14), %rax
movq %rax, 0x10(%rbx)
movb $0x1, %al
addq $0x8, %rsp
popq %rbx
popq %r14
retq
movl $0x2, (%rbx)
jmp 0x67d19
movl $0x3, (%rbx)
jmp 0x67d19
movl $0x4, (%rbx)
jmp 0x67d19
addq $0x4, %rax
jmp 0x67d50
addq $0x5, %rax
movq %rax, 0xd0(%r14)
jmp 0x67d19
nop