// File: /workspace/github_cpp_makefile_star2_O2/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 $0x98, %rsp
movq %rdi, %rbx
leaq 0x70(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x10(%rsp), %rdi
pushq $0x7
popq %rsi
callq 0x6c604
movq 0x30(%rbx), %rax
cmpq 0x38(%rbx), %rax
jne 0x685ff
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
leaq 0x80(%rsp), %r14
leaq 0x60(%rsp), %r12
leaq 0x10(%rsp), %rbp
leaq 0x30(%rsp), %r15
movq %rbx, %rdi
movq %r14, %rsi
callq 0x68ce8
movl 0x80(%rsp), %eax
cmpl $0xc, %eax
jne 0x68652
movq %rbx, %rdi
movq %r14, %rsi
callq 0x68ce8
jmp 0x68639
cmpl $0x2, %eax
je 0x6873a
cmpl $0x5, %eax
jne 0x68742
movq %r12, %rdi
leaq 0xe189(%rip), %rsi      # 0x767f7
callq 0x35c40
movq %rbx, %rdi
movq %r14, %rsi
movq %r12, %rdx
callq 0x6920e
testb %al, %al
je 0x6879e
movq %rbx, %rdi
leaq 0x48(%rsp), %rsi
callq 0x68ce8
cmpl $0xb, 0x48(%rsp)
jne 0x687ab
movq 0x30(%rbx), %rax
cmpq 0x38(%rbx), %rax
jne 0x686bb
movq 0x48(%rbx), %rax
movq -0x8(%rax), %rax
movl $0x200, %ecx            # imm = 0x200
addq %rcx, %rax
movq -0x8(%rax), %rdi
movq %r12, %rsi
callq 0x6d6dc
movq %rax, 0x10(%rsp)
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x6a618
movq %rbx, %rdi
callq 0x682ba
movl %eax, %r13d
movq %rbx, %rdi
callq 0x6a5c8
testb %r13b, %r13b
je 0x687e2
movq %rbx, %rdi
movq %r15, %rsi
callq 0x68ce8
movl 0x30(%rsp), %eax
cmpl $0xc, %eax
ja 0x687ef
movl $0x1404, %ecx           # imm = 0x1404
btl %eax, %ecx
jae 0x687ef
movl 0x30(%rsp), %eax
cmpl $0xc, %eax
jne 0x6872f
movq %rbx, %rdi
movq %r15, %rsi
callq 0x68ce8
jmp 0x68719
cmpl $0x2, %eax
jne 0x6862e
jmp 0x6877e
cmpq $0x0, 0x68(%rsp)
je 0x6877e
leaq 0xdb5a(%rip), %rsi      # 0x762a3
leaq 0x10(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x35280
leaq 0x10(%rsp), %rsi
leaq 0x80(%rsp), %rdx
pushq $0x2
popq %rcx
movq %rbx, %rdi
callq 0x695e6
leaq 0x10(%rsp), %rdi
callq 0x35730
xorl %ebx, %ebx
jmp 0x68780
movb $0x1, %bl
leaq 0x60(%rsp), %rdi
callq 0x35730
movl %ebx, %eax
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
pushq $0x2
popq %rsi
movq %rbx, %rdi
callq 0x69540
jmp 0x6877a
leaq 0xdaa3(%rip), %rsi      # 0x76255
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x35280
leaq 0x10(%rsp), %rsi
leaq 0x48(%rsp), %rdx
pushq $0x2
popq %rcx
movq %rbx, %rdi
callq 0x695e6
leaq 0x10(%rsp), %rdi
callq 0x35730
jmp 0x6877a
pushq $0x2
popq %rsi
movq %rbx, %rdi
callq 0x69540
jmp 0x6877a
leaq 0xda84(%rip), %rsi      # 0x7627a
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x35280
leaq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rdx
pushq $0x2
popq %rcx
movq %rbx, %rdi
callq 0x695e6
leaq 0x10(%rsp), %rdi
callq 0x35730
jmp 0x6877a
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x35730
jmp 0x68884
jmp 0x68881
jmp 0x68881
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x35730
jmp 0x68884
jmp 0x68881
jmp 0x68881
jmp 0x68881
jmp 0x68881
jmp 0x68881
jmp 0x68881
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x35730
jmp 0x68884
jmp 0x68881
jmp 0x68881
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x6c88a
jmp 0x68884
jmp 0x68881
jmp 0x68881
jmp 0x68881
jmp 0x68881
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x35730
movq %rbx, %rdi
callq 0x35b50
movq %rax, %rdi
callq 0x3a198