// File: /workspace/github_cpp_makefile_star2_O1/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), %rax
movq 0xd0(%rdi), %rcx
cmpq %rax, %rcx
je 0x6819f
movabsq $0x100002600, %rdx      # imm = 0x100002600
movzbl (%rcx), %esi
cmpq $0x20, %rsi
ja 0x6819f
btq %rsi, %rdx
jae 0x6819f
incq %rcx
movq %rcx, 0xd0(%r14)
cmpq %rax, %rcx
jne 0x68181
movq 0xd0(%r14), %rcx
movq %rcx, 0x8(%rbx)
cmpq %rax, %rcx
je 0x681be
leaq 0x1(%rcx), %rdx
movq %rdx, 0xd0(%r14)
movb (%rcx), %cl
jmp 0x681c0
xorl %ecx, %ecx
movzbl %cl, %ecx
cmpl $0x5a, %ecx
jg 0x6823a
leal -0x22(%rcx), %edx
cmpl $0x18, %edx
ja 0x6831b
leaq 0xefd5(%rip), %rcx      # 0x771b0
movslq (%rcx,%rdx,4), %rdx
addq %rcx, %rdx
jmpq *%rdx
movl $0x6, (%rbx)
movq 0xd0(%r14), %rcx
cmpq %rax, %rcx
je 0x6839a
movabsq $0x40000000400000d, %rdx # imm = 0x40000000400000D
movzbl (%rcx), %esi
leal -0x30(%rsi), %edi
cmpb $0xa, %dil
jb 0x68226
addl $-0x2b, %esi
cmpl $0x3a, %esi
ja 0x6839a
btq %rsi, %rdx
jae 0x6839a
incq %rcx
movq %rcx, 0xd0(%r14)
cmpq %rax, %rcx
jne 0x68204
jmp 0x6839a
cmpl $0x6d, %ecx
jle 0x682a0
cmpl $0x7a, %ecx
jg 0x68301
cmpl $0x6e, %ecx
je 0x6835b
cmpl $0x74, %ecx
jne 0x68394
movl $0x7, (%rbx)
movq 0xd0(%r14), %rcx
subq %rcx, %rax
cmpq $0x3, %rax
jl 0x68394
movl $0x2, %edx
leaq 0xaa42(%rip), %rax      # 0x72cc2
cmpq $-0x1, %rdx
je 0x683c7
movb (%rcx,%rdx), %sil
leaq -0x1(%rdx), %rdi
cmpb (%rdx,%rax), %sil
movq %rdi, %rdx
je 0x68280
jmp 0x68394
cmpl $0x5b, %ecx
je 0x683b7
cmpl $0x5d, %ecx
je 0x683bf
cmpl $0x66, %ecx
jne 0x68394
movl $0x8, (%rbx)
movq 0xd0(%r14), %rcx
subq %rcx, %rax
cmpq $0x4, %rax
jl 0x68394
movl $0x3, %edx
leaq 0xb008(%rip), %rax      # 0x732e9
cmpq $-0x1, %rdx
je 0x683cd
movb (%rcx,%rdx), %sil
leaq -0x1(%rdx), %rdi
cmpb (%rdx,%rax), %sil
movq %rdi, %rdx
je 0x682e1
jmp 0x68394
cmpl $0x7d, %ecx
je 0x683af
cmpl $0x7b, %ecx
jne 0x68394
movl $0x1, (%rbx)
jmp 0x6839a
testl %ecx, %ecx
jne 0x68394
movl $0x0, (%rbx)
jmp 0x6839a
movl $0xc, (%rbx)
movq %r14, %rdi
callq 0x6851c
jmp 0x68345
movl $0x5, (%rbx)
movq %r14, %rdi
callq 0x684ca
testb %al, %al
je 0x68394
jmp 0x6839a
movl $0xa, (%rbx)
jmp 0x6839a
movl $0xb, (%rbx)
jmp 0x6839a
movl $0x9, (%rbx)
movq 0xd0(%r14), %rcx
subq %rcx, %rax
cmpq $0x3, %rax
jl 0x68394
movl $0x2, %edx
leaq 0xf4b5(%rip), %rax      # 0x77832
cmpq $-0x1, %rdx
je 0x683c7
movb (%rcx,%rdx), %sil
leaq -0x1(%rdx), %rdi
cmpb (%rdx,%rax), %sil
movq %rdi, %rdx
je 0x6837d
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 0x6839a
movl $0x3, (%rbx)
jmp 0x6839a
movl $0x4, (%rbx)
jmp 0x6839a
addq $0x3, %rcx
jmp 0x683d1
addq $0x4, %rcx
movq %rcx, 0xd0(%r14)
jmp 0x6839a