// File: /workspace/github_cpp_makefile_star2_O2/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 $0x48, %rsp
movq %rdi, %rbx
leaq 0x30(%rsp), %rsi
callq 0x684de
cmpb $0x1, 0x10a(%rbx)
jne 0x6831c
cmpq $0x0, 0xf0(%rbx)
je 0x6831c
leaq 0xe8(%rbx), %r14
movq 0x30(%rbx), %rax
cmpq 0x38(%rbx), %rax
jne 0x682ff
movq 0x48(%rbx), %rcx
movl $0x200, %eax            # imm = 0x200
addq -0x8(%rcx), %rax
movq -0x8(%rax), %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0x6da02
leaq 0xe4e3(%rip), %rsi      # 0x767f7
movq %r14, %rdi
callq 0x35c40
movl 0x30(%rsp), %eax
decl %eax
cmpl $0x8, %eax
ja 0x68344
leaq 0xde0e(%rip), %rcx      # 0x7613c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rbx, %rdi
callq 0x685b6
jmp 0x6840e
leaq 0xdedb(%rip), %rsi      # 0x76226
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x35280
leaq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x6851c
leaq 0x10(%rsp), %rdi
callq 0x35730
xorl %eax, %eax
jmp 0x68487
leaq 0x10(%rsp), %rdi
xorl %esi, %esi
callq 0x6c752
movq 0x30(%rbx), %rax
cmpq 0x38(%rbx), %rax
jne 0x683a2
movq 0x48(%rbx), %rcx
movl $0x200, %eax            # imm = 0x200
addq -0x8(%rcx), %rax
movq -0x8(%rax), %rdi
leaq 0x10(%rsp), %rsi
callq 0x6c95e
jmp 0x68442
movq %rbx, %rdi
callq 0x6889e
jmp 0x6840e
leaq 0x10(%rsp), %rdi
xorl %esi, %esi
callq 0x6c604
movq 0x30(%rbx), %rax
cmpq 0x38(%rbx), %rax
jne 0x683e2
movq 0x48(%rbx), %rcx
movl $0x200, %eax            # imm = 0x200
addq -0x8(%rcx), %rax
movq -0x8(%rax), %rdi
leaq 0x10(%rsp), %rsi
callq 0x6c95e
jmp 0x68442
leaq 0x30(%rsp), %rsi
movq %rbx, %rdi
callq 0x68c44
jmp 0x6840e
leaq 0x30(%rsp), %rsi
movq %rbx, %rdi
callq 0x689b8
jmp 0x6844e
leaq 0x10(%rsp), %rdi
pushq $0x1
popq %rsi
callq 0x6c752
movq 0x30(%rbx), %rax
cmpq 0x38(%rbx), %rax
jne 0x68434
movq 0x48(%rbx), %rcx
movl $0x200, %eax            # imm = 0x200
addq -0x8(%rcx), %rax
movq -0x8(%rax), %rdi
leaq 0x10(%rsp), %rsi
callq 0x6c95e
leaq 0x10(%rsp), %rdi
callq 0x6c88a
movb $0x1, %al
cmpb $0x1, 0x10a(%rbx)
jne 0x68487
movq 0x30(%rbx), %rcx
movq 0xd0(%rbx), %rdx
movq %rdx, 0xd8(%rbx)
cmpq 0x38(%rbx), %rcx
jne 0x6847c
movq 0x48(%rbx), %rdx
movl $0x200, %ecx            # imm = 0x200
addq -0x8(%rdx), %rcx
movq -0x8(%rcx), %rcx
movq %rcx, 0xe0(%rbx)
addq $0x48, %rsp
popq %rbx
popq %r14
retq
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x35730
jmp 0x684ce
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x6c88a
jmp 0x684ce
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x6c88a
jmp 0x684ce
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x6c88a
jmp 0x684ce
movq %rax, %rbx
movq %rbx, %rdi
callq 0x35b50
movq %rax, %rdi
callq 0x3a198