// File: /workspace/github_cpp_makefile_star2_O3/zeeev[P]DASVC/bamtools/src/third_party/jsoncpp/json_reader.cpp
// Function: Json::Reader::readValue()
bool
Reader::readValue()
{
   Token token;
   skipCommentTokens( token );
   bool successful = true;

   if ( collectComments_  &&  !commentsBefore_.empty() )
   {
      currentValue().setComment( commentsBefore_, commentBefore );
      commentsBefore_ = "";
   }


   switch ( token.type_ )
   {
   case tokenObjectBegin:
      successful = readObject( token );
      break;
   case tokenArrayBegin:
      successful = readArray( token );
      break;
   case tokenNumber:
      successful = decodeNumber( token );
      break;
   case tokenString:
      successful = decodeString( token );
      break;
   case tokenTrue:
      currentValue() = true;
      break;
   case tokenFalse:
      currentValue() = false;
      break;
   case tokenNull:
      currentValue() = Value();
      break;
   default:
      return addError( "Syntax error: value, object or array expected.", token );
   }

   if ( collectComments_ )
   {
      lastValueEnd_ = current_;
      lastValue_ = &currentValue();
   }

   return successful;
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x38, %rsp
movq %rdi, %rbx
leaq 0x20(%rsp), %rsi
callq 0x671c0
cmpb $0x1, 0x10a(%rbx)
jne 0x67000
cmpq $0x0, 0xf0(%rbx)
je 0x67000
leaq 0xe8(%rbx), %r14
movq 0x30(%rbx), %rax
cmpq 0x38(%rbx), %rax
jne 0x66fd7
movq 0x48(%rbx), %rcx
movl $0x200, %eax            # imm = 0x200
addq -0x8(%rcx), %rax
movq -0x8(%rax), %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0x6d19e
movq 0xf0(%rbx), %rdx
leaq 0xf824(%rip), %rcx      # 0x76817
movq %r14, %rdi
xorl %esi, %esi
xorl %r8d, %r8d
callq 0x278f0
movl 0x20(%rsp), %eax
decl %eax
cmpl $0x8, %eax
ja 0x67028
leaq 0xf17a(%rip), %rcx      # 0x7618c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rbx, %rdi
callq 0x672a0
jmp 0x670f5
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xf23e(%rip), %rsi      # 0x76276
leaq 0xf265(%rip), %rdx      # 0x762a4
movq %rsp, %rdi
callq 0x2f1a0
movq %rsp, %rsi
leaq 0x20(%rsp), %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x671fe
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x67067
callq 0x27560
xorl %eax, %eax
jmp 0x6716a
movq %rsp, %rdi
xorl %esi, %esi
callq 0x6bb64
movq 0x30(%rbx), %rax
cmpq 0x38(%rbx), %rax
jne 0x6708f
movq 0x48(%rbx), %rcx
movl $0x200, %eax            # imm = 0x200
addq -0x8(%rcx), %rax
movq -0x8(%rax), %rdi
movq %rsp, %rsi
callq 0x6bdc0
jmp 0x67127
movq %rbx, %rdi
callq 0x675c4
jmp 0x670f5
movq %rsp, %rdi
xorl %esi, %esi
callq 0x6b93e
movq 0x30(%rbx), %rax
cmpq 0x38(%rbx), %rax
jne 0x670cb
movq 0x48(%rbx), %rcx
movl $0x200, %eax            # imm = 0x200
addq -0x8(%rcx), %rax
movq -0x8(%rax), %rdi
movq %rsp, %rsi
callq 0x6bdc0
jmp 0x67127
leaq 0x20(%rsp), %rsi
movq %rbx, %rdi
callq 0x67a3e
jmp 0x670f5
leaq 0x20(%rsp), %rsi
movq %rbx, %rdi
callq 0x67730
jmp 0x67131
movq %rsp, %rdi
movl $0x1, %esi
callq 0x6bb64
movq 0x30(%rbx), %rax
cmpq 0x38(%rbx), %rax
jne 0x6711b
movq 0x48(%rbx), %rcx
movl $0x200, %eax            # imm = 0x200
addq -0x8(%rcx), %rax
movq -0x8(%rax), %rdi
movq %rsp, %rsi
callq 0x6bdc0
movq %rsp, %rdi
callq 0x6bce2
movb $0x1, %al
cmpb $0x1, 0x10a(%rbx)
jne 0x6716a
movq 0x30(%rbx), %rcx
movq 0xd0(%rbx), %rdx
movq %rdx, 0xd8(%rbx)
cmpq 0x38(%rbx), %rcx
jne 0x6715f
movq 0x48(%rbx), %rdx
movl $0x200, %ecx            # imm = 0x200
addq -0x8(%rdx), %rcx
movq -0x8(%rcx), %rcx
movq %rcx, 0xe0(%rbx)
addq $0x38, %rsp
popq %rbx
popq %r14
retq
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x671af
callq 0x27560
jmp 0x671af
movq %rax, %rbx
movq %rsp, %rdi
callq 0x6bce2
jmp 0x671af
movq %rax, %rbx
movq %rsp, %rdi
callq 0x6bce2
jmp 0x671af
movq %rax, %rbx
movq %rsp, %rdi
callq 0x6bce2
jmp 0x671af
movq %rax, %rbx
movq %rbx, %rdi
callq 0x27b10
movq %rax, %rdi
callq 0x2e1cd
nop