// File: DoubleString[P]RtConverter/src/Json/json_reader.cpp
// Function: Json::Reader::readObject(Json::Reader::Token&)
bool Reader::readObject(Token& token) {
  Token tokenName;
  JSONCPP_STRING name;
  Value init(objectValue);
  currentValue().swapPayload(init);
  currentValue().setOffsetStart(token.start_ - begin_);
  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;
    name.clear();
    if (tokenName.type_ == tokenString) {
      if (!decodeString(tokenName, name))
        return recoverFromError(tokenObjectEnd);
    } else if (tokenName.type_ == tokenNumber && features_.allowNumericKeys_) {
      Value numberName;
      if (!decodeNumber(tokenName, numberName))
        return recoverFromError(tokenObjectEnd);
      name = JSONCPP_STRING(numberName.asCString());
    } else {
      break;
    }

    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
movq %rsp, %rbp
subq $0x220, %rsp            # imm = 0x220
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x1a8(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x9a50
leaq -0x78(%rbp), %rdi
movl $0x7, %esi
callq 0x1e5c0
jmp 0xb257
movq -0x1a8(%rbp), %rdi
callq 0xb200
movq %rax, -0x1b0(%rbp)
jmp 0xb26c
movq -0x1b0(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x1f1e0
jmp 0xb27e
movq -0x1a8(%rbp), %rdi
callq 0xb200
movq %rax, -0x1b8(%rbp)
jmp 0xb293
movq -0x1b8(%rbp), %rdi
movq -0x1a8(%rbp), %rax
movq -0x18(%rbp), %rcx
movq 0x8(%rcx), %rsi
movq 0xc0(%rax), %rax
subq %rax, %rsi
callq 0x245c0
jmp 0xb2ba
jmp 0xb2bc
movq -0x1a8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0xbfe0
movb %al, -0x1b9(%rbp)
jmp 0xb2d4
movb -0x1b9(%rbp), %al
testb $0x1, %al
jne 0xb2e3
jmp 0xb8bf
movb $0x1, -0x85(%rbp)
xorl %eax, %eax
cmpl $0xc, -0x30(%rbp)
movb %al, -0x1ba(%rbp)
jne 0xb304
movb -0x85(%rbp), %al
movb %al, -0x1ba(%rbp)
movb -0x1ba(%rbp), %al
testb $0x1, %al
jne 0xb310
jmp 0xb360
movq -0x1a8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0xbfe0
movb %al, -0x1bb(%rbp)
jmp 0xb328
movb -0x1bb(%rbp), %al
andb $0x1, %al
movb %al, -0x85(%rbp)
jmp 0xb2ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xb9a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xb99b
testb $0x1, -0x85(%rbp)
jne 0xb36e
jmp 0xb8bf
cmpl $0x2, -0x30(%rbp)
jne 0xb396
leaq -0x50(%rbp), %rdi
callq 0x9c50
testb $0x1, %al
jne 0xb383
jmp 0xb396
movb $0x1, -0x1(%rbp)
movl $0x1, -0x8c(%rbp)
jmp 0xb97b
leaq -0x50(%rbp), %rdi
callq 0x99d0
cmpl $0x5, -0x30(%rbp)
jne 0xb405
movq -0x1a8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0xc9c0
movb %al, -0x1bc(%rbp)
jmp 0xb3c1
movb -0x1bc(%rbp), %al
testb $0x1, %al
jne 0xb400
jmp 0xb3cd
movq -0x1a8(%rbp), %rdi
movl $0x2, %esi
callq 0xcd50
movb %al, -0x1bd(%rbp)
jmp 0xb3e6
movb -0x1bd(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movl $0x1, -0x8c(%rbp)
jmp 0xb97b
jmp 0xb56c
cmpl $0x6, -0x30(%rbp)
jne 0xb565
movq -0x1a8(%rbp), %rax
testb $0x1, 0x10b(%rax)
je 0xb565
leaq -0xb8(%rbp), %rdi
xorl %esi, %esi
callq 0x1e5c0
jmp 0xb433
movq -0x1a8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0xb8(%rbp), %rdx
callq 0xcdd0
movb %al, -0x1be(%rbp)
jmp 0xb452
movb -0x1be(%rbp), %al
testb $0x1, %al
jne 0xb4a5
jmp 0xb45e
movq -0x1a8(%rbp), %rdi
movl $0x2, %esi
callq 0xcd50
movb %al, -0x1bf(%rbp)
jmp 0xb477
movb -0x1bf(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movl $0x1, -0x8c(%rbp)
jmp 0xb51b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xb554
leaq -0xb8(%rbp), %rdi
callq 0x1fb40
movq %rax, -0x1c8(%rbp)
jmp 0xb4ba
leaq -0xd9(%rbp), %rdi
movq %rdi, -0x1d0(%rbp)
callq 0x9d30
movq -0x1c8(%rbp), %rsi
movq -0x1d0(%rbp), %rdx
leaq -0xd8(%rbp), %rdi
callq 0x9a30
jmp 0xb4e9
leaq -0x50(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x9920
leaq -0xd8(%rbp), %rdi
callq 0x9480
leaq -0xd9(%rbp), %rdi
callq 0x97e0
movl $0x0, -0x8c(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x1f050
movl -0x8c(%rbp), %eax
testl %eax, %eax
jne 0xb97b
jmp 0xb537
jmp 0xb56a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0xd9(%rbp), %rdi
callq 0x97e0
leaq -0xb8(%rbp), %rdi
callq 0x1f050
jmp 0xb99b
jmp 0xb8bf
jmp 0xb56c
movq -0x1a8(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0xbfe0
movb %al, -0x1d1(%rbp)
jmp 0xb587
movb -0x1d1(%rbp), %al
testb $0x1, %al
jne 0xb593
jmp 0xb5a0
cmpl $0xb, -0xf8(%rbp)
je 0xb665
leaq -0x119(%rbp), %rdi
movq %rdi, -0x1e0(%rbp)
callq 0x9d30
movq -0x1e0(%rbp), %rdx
leaq 0xb0283(%rip), %rsi     # 0xbb844
leaq -0x118(%rbp), %rdi
callq 0x9a30
jmp 0xb5cf
movq -0x1a8(%rbp), %rdi
leaq -0x118(%rbp), %rsi
leaq -0xf8(%rbp), %rdx
movl $0x2, %ecx
callq 0xd100
movb %al, -0x1e1(%rbp)
jmp 0xb5f6
movb -0x1e1(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x9480
leaq -0x119(%rbp), %rdi
callq 0x97e0
movl $0x1, -0x8c(%rbp)
jmp 0xb97b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xb654
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x9480
leaq -0x119(%rbp), %rdi
callq 0x97e0
jmp 0xb99b
movq -0x1a8(%rbp), %rdi
callq 0xb200
movq %rax, -0x1f0(%rbp)
jmp 0xb67a
movq -0x1f0(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x232c0
movq %rax, -0x1f8(%rbp)
jmp 0xb693
movq -0x1a8(%rbp), %rdi
movq -0x1f8(%rbp), %rax
movq %rax, -0x128(%rbp)
movq -0x128(%rbp), %rax
movq %rax, -0x130(%rbp)
leaq -0x130(%rbp), %rsi
callq 0x14520
jmp 0xb6c4
movq -0x1a8(%rbp), %rdi
callq 0xaa30
movb %al, -0x1f9(%rbp)
jmp 0xb6d8
movq -0x1a8(%rbp), %rdi
movb -0x1f9(%rbp), %al
andb $0x1, %al
movb %al, -0x131(%rbp)
callq 0x14500
jmp 0xb6f4
testb $0x1, -0x131(%rbp)
jne 0xb730
movq -0x1a8(%rbp), %rdi
movl $0x2, %esi
callq 0xcd50
movb %al, -0x1fa(%rbp)
jmp 0xb716
movb -0x1fa(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movl $0x1, -0x8c(%rbp)
jmp 0xb97b
movq -0x1a8(%rbp), %rdi
leaq -0x150(%rbp), %rsi
callq 0xbfe0
movb %al, -0x1fb(%rbp)
jmp 0xb74b
movb -0x1fb(%rbp), %al
testb $0x1, %al
jne 0xb757
jmp 0xb77e
cmpl $0x2, -0x150(%rbp)
je 0xb843
cmpl $0xa, -0x150(%rbp)
je 0xb843
cmpl $0xc, -0x150(%rbp)
je 0xb843
leaq -0x171(%rbp), %rdi
movq %rdi, -0x208(%rbp)
callq 0x9d30
movq -0x208(%rbp), %rdx
leaq 0xb00ca(%rip), %rsi     # 0xbb869
leaq -0x170(%rbp), %rdi
callq 0x9a30
jmp 0xb7ad
movq -0x1a8(%rbp), %rdi
leaq -0x170(%rbp), %rsi
leaq -0x150(%rbp), %rdx
movl $0x2, %ecx
callq 0xd100
movb %al, -0x209(%rbp)
jmp 0xb7d4
movb -0x209(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x9480
leaq -0x171(%rbp), %rdi
callq 0x97e0
movl $0x1, -0x8c(%rbp)
jmp 0xb97b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xb832
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x9480
leaq -0x171(%rbp), %rdi
callq 0x97e0
jmp 0xb99b
movb $0x1, -0x172(%rbp)
xorl %eax, %eax
cmpl $0xc, -0x150(%rbp)
movb %al, -0x20a(%rbp)
jne 0xb867
movb -0x172(%rbp), %al
movb %al, -0x20a(%rbp)
movb -0x20a(%rbp), %al
testb $0x1, %al
jne 0xb873
jmp 0xb89e
movq -0x1a8(%rbp), %rdi
leaq -0x150(%rbp), %rsi
callq 0xbfe0
movb %al, -0x20b(%rbp)
jmp 0xb88e
movb -0x20b(%rbp), %al
andb $0x1, %al
movb %al, -0x172(%rbp)
jmp 0xb84a
cmpl $0x2, -0x150(%rbp)
jne 0xb8ba
movb $0x1, -0x1(%rbp)
movl $0x1, -0x8c(%rbp)
jmp 0xb97b
jmp 0xb2bc
leaq -0x199(%rbp), %rdi
movq %rdi, -0x218(%rbp)
callq 0x9d30
movq -0x218(%rbp), %rdx
leaq 0xaffb2(%rip), %rsi     # 0xbb892
leaq -0x198(%rbp), %rdi
callq 0x9a30
jmp 0xb8ee
movq -0x1a8(%rbp), %rdi
leaq -0x198(%rbp), %rsi
leaq -0x30(%rbp), %rdx
movl $0x2, %ecx
callq 0xd100
movb %al, -0x219(%rbp)
jmp 0xb912
movb -0x219(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x9480
leaq -0x199(%rbp), %rdi
callq 0x97e0
movl $0x1, -0x8c(%rbp)
jmp 0xb97b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xb96d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x9480
leaq -0x199(%rbp), %rdi
callq 0x97e0
jmp 0xb99b
leaq -0x78(%rbp), %rdi
callq 0x1f050
leaq -0x50(%rbp), %rdi
callq 0x9480
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x220, %rsp            # imm = 0x220
popq %rbp
retq
leaq -0x78(%rbp), %rdi
callq 0x1f050
leaq -0x50(%rbp), %rdi
callq 0x9480
movq -0x80(%rbp), %rdi
callq 0x9d20
nopw %cs:(%rax,%rax)