// File: 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:
subq $0x1a8, %rsp            # imm = 0x1A8
movq %rdi, 0x198(%rsp)
movq %rsi, 0x190(%rsp)
movq 0x198(%rsp), %rax
movq %rax, 0x60(%rsp)
leaq 0x158(%rsp), %rdi
callq 0x86a30
leaq 0x140(%rsp), %rdi
movl $0x7, %esi
callq 0x1212e0
jmp 0x116f75
movq 0x60(%rsp), %rdi
callq 0x116f10
movq %rax, 0x58(%rsp)
jmp 0x116f86
movq 0x58(%rsp), %rdi
leaq 0x140(%rsp), %rsi
callq 0x121b00
jmp 0x116f9a
leaq 0x140(%rsp), %rdi
callq 0x121950
jmp 0x116fa9
jmp 0x116fab
movq 0x60(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0x117f80
movb %al, 0x57(%rsp)
jmp 0x116fc3
movb 0x57(%rsp), %al
testb $0x1, %al
jne 0x116fd0
jmp 0x11749b
movb $0x1, 0x133(%rsp)
xorl %eax, %eax
cmpl $0xc, 0x178(%rsp)
movb %al, 0x56(%rsp)
jne 0x116ff3
movb 0x133(%rsp), %al
movb %al, 0x56(%rsp)
movb 0x56(%rsp), %al
testb $0x1, %al
jne 0x116ffd
jmp 0x117065
movq 0x60(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0x117f80
movb %al, 0x55(%rsp)
jmp 0x117015
movb 0x55(%rsp), %al
andb $0x1, %al
movb %al, 0x133(%rsp)
jmp 0x116fd8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x138(%rsp)
movl %eax, 0x134(%rsp)
jmp 0x117576
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x138(%rsp)
movl %eax, 0x134(%rsp)
leaq 0x140(%rsp), %rdi
callq 0x121950
jmp 0x117060
jmp 0x117576
testb $0x1, 0x133(%rsp)
jne 0x117074
jmp 0x11749b
cmpl $0x2, 0x178(%rsp)
jne 0x1170b3
leaq 0x158(%rsp), %rdi
callq 0x86c90
movb %al, 0x54(%rsp)
jmp 0x117091
movb 0x54(%rsp), %al
testb $0x1, %al
jne 0x11709b
jmp 0x1170b3
movb $0x1, 0x1a7(%rsp)
movl $0x1, 0x12c(%rsp)
jmp 0x117558
cmpl $0x5, 0x178(%rsp)
je 0x1170c2
jmp 0x11749b
leaq 0x1dbaa(%rip), %rsi     # 0x134c73
leaq 0x158(%rsp), %rdi
callq 0x869f0
jmp 0x1170d8
movq 0x60(%rsp), %rdi
leaq 0x178(%rsp), %rsi
leaq 0x158(%rsp), %rdx
callq 0x118a30
movb %al, 0x53(%rsp)
jmp 0x1170f8
movb 0x53(%rsp), %al
testb $0x1, %al
jne 0x117134
jmp 0x117102
movq 0x60(%rsp), %rdi
movl $0x2, %esi
callq 0x118ea0
movb %al, 0x52(%rsp)
jmp 0x117117
movb 0x52(%rsp), %al
andb $0x1, %al
movb %al, 0x1a7(%rsp)
movl $0x1, 0x12c(%rsp)
jmp 0x117558
movq 0x60(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x117f80
movb %al, 0x51(%rsp)
jmp 0x11714c
movb 0x51(%rsp), %al
testb $0x1, %al
jne 0x117156
jmp 0x117164
cmpl $0xb, 0x110(%rsp)
je 0x11723c
leaq 0xef(%rsp), %rdi
movq %rdi, 0x48(%rsp)
callq 0x86da0
movq 0x48(%rsp), %rdx
leaq 0x1d567(%rip), %rsi     # 0x1346e9
leaq 0xf0(%rsp), %rdi
callq 0x86a00
jmp 0x117191
movq 0x60(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
leaq 0x110(%rsp), %rdx
movl $0x2, %ecx
callq 0x119050
movb %al, 0x47(%rsp)
jmp 0x1171b6
movb 0x47(%rsp), %al
andb $0x1, %al
movb %al, 0x1a7(%rsp)
leaq 0xf0(%rsp), %rdi
callq 0x86f68
jmp 0x1171d2
leaq 0xef(%rsp), %rdi
callq 0x867b0
movl $0x1, 0x12c(%rsp)
jmp 0x117558
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x138(%rsp)
movl %eax, 0x134(%rsp)
jmp 0x11722a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x138(%rsp)
movl %eax, 0x134(%rsp)
leaq 0xf0(%rsp), %rdi
callq 0x86f68
jmp 0x117228
jmp 0x11722a
leaq 0xef(%rsp), %rdi
callq 0x867b0
jmp 0x117576
movq 0x60(%rsp), %rdi
callq 0x116f10
movq %rax, 0x38(%rsp)
jmp 0x11724d
movq 0x38(%rsp), %rdi
leaq 0x158(%rsp), %rsi
callq 0x123ee0
movq %rax, 0x30(%rsp)
jmp 0x117266
movq 0x60(%rsp), %rdi
movq 0x30(%rsp), %rax
movq %rax, 0xe0(%rsp)
movq 0xe0(%rsp), %rax
movq %rax, 0xd8(%rsp)
leaq 0xd8(%rsp), %rsi
callq 0x11a640
jmp 0x117297
movq 0x60(%rsp), %rdi
callq 0x116a70
movb %al, 0x2f(%rsp)
jmp 0x1172a7
movq 0x60(%rsp), %rdi
movb 0x2f(%rsp), %al
andb $0x1, %al
movb %al, 0xd7(%rsp)
callq 0x11a630
jmp 0x1172c0
testb $0x1, 0xd7(%rsp)
jne 0x1172fc
movq 0x60(%rsp), %rdi
movl $0x2, %esi
callq 0x118ea0
movb %al, 0x2e(%rsp)
jmp 0x1172df
movb 0x2e(%rsp), %al
andb $0x1, %al
movb %al, 0x1a7(%rsp)
movl $0x1, 0x12c(%rsp)
jmp 0x117558
movq 0x60(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
callq 0x117f80
movb %al, 0x2d(%rsp)
jmp 0x117314
movb 0x2d(%rsp), %al
testb $0x1, %al
jne 0x11731e
jmp 0x117348
cmpl $0x2, 0xb8(%rsp)
je 0x117420
cmpl $0xa, 0xb8(%rsp)
je 0x117420
cmpl $0xc, 0xb8(%rsp)
je 0x117420
leaq 0x97(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0x86da0
movq 0x20(%rsp), %rdx
leaq 0x1d3a8(%rip), %rsi     # 0x13470e
leaq 0x98(%rsp), %rdi
callq 0x86a00
jmp 0x117375
movq 0x60(%rsp), %rdi
leaq 0x98(%rsp), %rsi
leaq 0xb8(%rsp), %rdx
movl $0x2, %ecx
callq 0x119050
movb %al, 0x1f(%rsp)
jmp 0x11739a
movb 0x1f(%rsp), %al
andb $0x1, %al
movb %al, 0x1a7(%rsp)
leaq 0x98(%rsp), %rdi
callq 0x86f68
jmp 0x1173b6
leaq 0x97(%rsp), %rdi
callq 0x867b0
movl $0x1, 0x12c(%rsp)
jmp 0x117558
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x138(%rsp)
movl %eax, 0x134(%rsp)
jmp 0x11740e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x138(%rsp)
movl %eax, 0x134(%rsp)
leaq 0x98(%rsp), %rdi
callq 0x86f68
jmp 0x11740c
jmp 0x11740e
leaq 0x97(%rsp), %rdi
callq 0x867b0
jmp 0x117576
movb $0x1, 0x96(%rsp)
xorl %eax, %eax
cmpl $0xc, 0xb8(%rsp)
movb %al, 0x1e(%rsp)
jne 0x117443
movb 0x96(%rsp), %al
movb %al, 0x1e(%rsp)
movb 0x1e(%rsp), %al
testb $0x1, %al
jne 0x11744d
jmp 0x117474
movq 0x60(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
callq 0x117f80
movb %al, 0x1d(%rsp)
jmp 0x117465
movb 0x1d(%rsp), %al
andb $0x1, %al
movb %al, 0x96(%rsp)
jmp 0x117428
cmpl $0x2, 0xb8(%rsp)
jne 0x117496
movb $0x1, 0x1a7(%rsp)
movl $0x1, 0x12c(%rsp)
jmp 0x117558
jmp 0x116fab
leaq 0x6f(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0x86da0
movq 0x10(%rsp), %rdx
leaq 0x1d281(%rip), %rsi     # 0x134737
leaq 0x70(%rsp), %rdi
callq 0x86a00
jmp 0x1174c2
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x178(%rsp), %rdx
movl $0x2, %ecx
callq 0x119050
movb %al, 0xf(%rsp)
jmp 0x1174e4
movb 0xf(%rsp), %al
andb $0x1, %al
movb %al, 0x1a7(%rsp)
leaq 0x70(%rsp), %rdi
callq 0x86f68
jmp 0x1174fd
leaq 0x6f(%rsp), %rdi
callq 0x867b0
movl $0x1, 0x12c(%rsp)
jmp 0x117558
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x138(%rsp)
movl %eax, 0x134(%rsp)
jmp 0x11754c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x138(%rsp)
movl %eax, 0x134(%rsp)
leaq 0x70(%rsp), %rdi
callq 0x86f68
jmp 0x11754a
jmp 0x11754c
leaq 0x6f(%rsp), %rdi
callq 0x867b0
jmp 0x117576
leaq 0x158(%rsp), %rdi
callq 0x86f68
movb 0x1a7(%rsp), %al
andb $0x1, %al
addq $0x1a8, %rsp            # imm = 0x1A8
retq
leaq 0x158(%rsp), %rdi
callq 0x86f68
jmp 0x117585
jmp 0x117587
movq 0x138(%rsp), %rdi
callq 0x86d80
movq %rax, %rdi
callq 0x91290
nopl (%rax)