// File: /workspace/github_cpp_makefile_star2_O3/zeeev[P]DASVC/bamtools/src/third_party/jsoncpp/json_reader.cpp
// Function: Json::Reader::readObject(Json::Reader::Token&)
bool 
Reader::readObject( Token &tokenStart )
{
   Token tokenName;
   std::string name;
   currentValue() = Value( objectValue );
   while ( readToken( tokenName ) )
   {
      bool initialTokenOk = true;
      while ( tokenName.type_ == tokenComment  &&  initialTokenOk )
         initialTokenOk = readToken( tokenName );
      if  ( !initialTokenOk )
         break;
      if ( tokenName.type_ == tokenObjectEnd  &&  name.empty() )  // empty object
         return true;
      if ( tokenName.type_ != tokenString )
         break;
      
      name = "";
      if ( !decodeString( tokenName, name ) )
         return recoverFromError( tokenObjectEnd );

      Token colon;
      if ( !readToken( colon ) ||  colon.type_ != tokenMemberSeparator )
      {
         return addErrorAndRecover( "Missing ':' after object member name", 
                                    colon, 
                                    tokenObjectEnd );
      }
      Value &value = currentValue()[ name ];
      nodes_.push( &value );
      bool ok = readValue();
      nodes_.pop();
      if ( !ok ) // error already set
         return recoverFromError( tokenObjectEnd );

      Token comma;
      if ( !readToken( comma )
            ||  ( comma.type_ != tokenObjectEnd  &&  
                  comma.type_ != tokenArraySeparator &&
		  comma.type_ != tokenComment ) )
      {
         return addErrorAndRecover( "Missing ',' or '}' in object declaration", 
                                    comma, 
                                    tokenObjectEnd );
      }
      bool finalizeTokenOk = true;
      while ( comma.type_ == tokenComment &&
              finalizeTokenOk )
         finalizeTokenOk = readToken( comma );
      if ( comma.type_ == tokenObjectEnd )
         return true;
   }
   return addErrorAndRecover( "Missing '}' or object member name", 
                              tokenName, 
                              tokenObjectEnd );
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movq %rdi, %rbx
leaq 0x30(%rsp), %r13
movq %r13, -0x10(%r13)
movq $0x0, -0x8(%r13)
movb $0x0, (%r13)
movq %rsp, %rdi
movl $0x7, %esi
callq 0x6b93e
movq 0x30(%rbx), %rax
cmpq 0x38(%rbx), %rax
jne 0x672ee
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
leaq 0x70(%rsp), %r14
leaq 0x20(%rsp), %r12
leaq 0x40(%rsp), %rbp
movq %rbx, %rdi
movq %r14, %rsi
callq 0x67afc
movl 0x70(%rsp), %eax
cmpl $0xc, %eax
jne 0x67332
movq %rbx, %rdi
movq %r14, %rsi
callq 0x67afc
jmp 0x6731c
cmpl $0x2, %eax
je 0x6743e
cmpl $0x5, %eax
jne 0x67446
movq 0x28(%rsp), %rdx
movq %r12, %rdi
xorl %esi, %esi
leaq 0xf4c2(%rip), %rcx      # 0x76817
xorl %r8d, %r8d
callq 0x278f0
movq %rbx, %rdi
movq %r14, %rsi
movq %r12, %rdx
callq 0x68186
testb %al, %al
je 0x674bb
movq %rbx, %rdi
leaq 0x58(%rsp), %rsi
callq 0x67afc
cmpl $0xb, 0x58(%rsp)
jne 0x674ca
movq 0x30(%rbx), %rax
cmpq 0x38(%rbx), %rax
jne 0x673a5
movq 0x48(%rbx), %rax
movq -0x8(%rax), %rax
movl $0x200, %ecx            # imm = 0x200
addq %rcx, %rax
movq -0x8(%rax), %rdi
movq %r12, %rsi
callq 0x6cdc0
movq %rax, (%rsp)
movq 0x30(%rbx), %rcx
movq 0x40(%rbx), %rdx
addq $-0x8, %rdx
cmpq %rdx, %rcx
je 0x673d0
movq %rax, (%rcx)
addq $0x8, 0x30(%rbx)
jmp 0x673db
movq %rbx, %rdi
movq %rsp, %rsi
callq 0x69736
movq %rbx, %rdi
callq 0x66f92
movl %eax, %r15d
movq %rbx, %rdi
callq 0x696ee
testb %r15b, %r15b
je 0x6750d
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x67afc
movl 0x40(%rsp), %eax
cmpl $0xc, %eax
ja 0x6751f
movl $0x1404, %ecx           # imm = 0x1404
btl %eax, %ecx
jae 0x6751f
movl 0x40(%rsp), %eax
cmpl $0xc, %eax
jne 0x67433
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x67afc
jmp 0x6741d
cmpl $0x2, %eax
jne 0x67311
jmp 0x67496
cmpq $0x0, 0x28(%rsp)
je 0x67496
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xee9d(%rip), %rsi      # 0x762f3
leaq 0xeeb7(%rip), %rdx      # 0x76314
movq %rsp, %rdi
callq 0x2f1a0
movq %rsp, %rsi
leaq 0x70(%rsp), %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x671fe
movq %rbx, %rdi
movl $0x2, %esi
callq 0x684d4
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x67492
callq 0x27560
xorl %ebx, %ebx
jmp 0x67498
movb $0x1, %bl
movq 0x20(%rsp), %rdi
cmpq %r13, %rdi
je 0x674a7
callq 0x27560
movl %ebx, %eax
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rbx, %rdi
movl $0x2, %esi
callq 0x684d4
jmp 0x67492
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xedcb(%rip), %rsi      # 0x762a5
leaq 0xede8(%rip), %rdx      # 0x762c9
movq %rsp, %rdi
callq 0x2f1a0
movq %rsp, %rsi
leaq 0x58(%rsp), %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x671fe
movq %rbx, %rdi
movl $0x2, %esi
callq 0x684d4
jmp 0x67484
movq %rbx, %rdi
movl $0x2, %esi
callq 0x684d4
jmp 0x67492
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xed9b(%rip), %rsi      # 0x762ca
leaq 0xedbc(%rip), %rdx      # 0x762f2
movq %rsp, %rdi
callq 0x2f1a0
movq %rsp, %rsi
leaq 0x40(%rsp), %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x671fe
movq %rbx, %rdi
movl $0x2, %esi
callq 0x684d4
jmp 0x67484
jmp 0x675aa
jmp 0x67593
jmp 0x675aa
jmp 0x675aa
jmp 0x675aa
jmp 0x67593
jmp 0x675aa
jmp 0x675aa
jmp 0x675aa
jmp 0x675aa
jmp 0x675aa
jmp 0x675aa
jmp 0x675aa
movq %rax, %rbx
movq %rsp, %rdi
callq 0x6bce2
jmp 0x675ad
movq %rax, %rdi
callq 0x2e1cd
jmp 0x675aa
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x675ad
callq 0x27560
jmp 0x675ad
jmp 0x675aa
jmp 0x675aa
movq %rax, %rbx
movq 0x20(%rsp), %rdi
cmpq %r13, %rdi
je 0x675bc
callq 0x27560
movq %rbx, %rdi
callq 0x27b10