// File: DoubleString[P]RtConverter/src/Json/json_reader.cpp
// Function: Json::OurReader::readObject(Json::OurReader::Token&)
bool OurReader::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 = numberName.asString();
    } else {
      break;
    }

    Token colon;
    if (!readToken(colon) || colon.type_ != tokenMemberSeparator) {
      return addErrorAndRecover("Missing ':' after object member name", colon,
                                tokenObjectEnd);
    }
    if (name.length() >= (1U << 30))
      throwRuntimeError("keylength >= 2^30");
    if (features_.rejectDupKeys_ && currentValue().isMember(name)) {
      JSONCPP_STRING msg = "Duplicate key: '" + name + "'";
      return addErrorAndRecover(msg, tokenName, 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 $0x280, %rsp            # imm = 0x280
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x208(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x9a50
leaq -0x78(%rbp), %rdi
movl $0x7, %esi
callq 0x1e5c0
jmp 0xf6b7
movq -0x208(%rbp), %rdi
callq 0xf660
movq %rax, -0x210(%rbp)
jmp 0xf6cc
movq -0x210(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x1f1e0
jmp 0xf6de
movq -0x208(%rbp), %rdi
callq 0xf660
movq %rax, -0x218(%rbp)
jmp 0xf6f3
movq -0x218(%rbp), %rdi
movq -0x208(%rbp), %rax
movq -0x18(%rbp), %rcx
movq 0x8(%rcx), %rsi
movq 0xc0(%rax), %rax
subq %rax, %rsi
callq 0x245c0
jmp 0xf71a
jmp 0xf71c
movq -0x208(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x10580
movb %al, -0x219(%rbp)
jmp 0xf734
movb -0x219(%rbp), %al
testb $0x1, %al
jne 0xf743
jmp 0xfe67
movb $0x1, -0x85(%rbp)
xorl %eax, %eax
cmpl $0xf, -0x30(%rbp)
movb %al, -0x21a(%rbp)
jne 0xf764
movb -0x85(%rbp), %al
movb %al, -0x21a(%rbp)
movb -0x21a(%rbp), %al
testb $0x1, %al
jne 0xf770
jmp 0xf7c0
movq -0x208(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x10580
movb %al, -0x21b(%rbp)
jmp 0xf788
movb -0x21b(%rbp), %al
andb $0x1, %al
movb %al, -0x85(%rbp)
jmp 0xf74a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xff4c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xff43
testb $0x1, -0x85(%rbp)
jne 0xf7ce
jmp 0xfe67
cmpl $0x2, -0x30(%rbp)
jne 0xf7f6
leaq -0x50(%rbp), %rdi
callq 0x9c50
testb $0x1, %al
jne 0xf7e3
jmp 0xf7f6
movb $0x1, -0x1(%rbp)
movl $0x1, -0x8c(%rbp)
jmp 0xff23
leaq -0x50(%rbp), %rdi
callq 0x99d0
cmpl $0x5, -0x30(%rbp)
jne 0xf865
movq -0x208(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0x11140
movb %al, -0x21c(%rbp)
jmp 0xf821
movb -0x21c(%rbp), %al
testb $0x1, %al
jne 0xf860
jmp 0xf82d
movq -0x208(%rbp), %rdi
movl $0x2, %esi
callq 0x114d0
movb %al, -0x21d(%rbp)
jmp 0xf846
movb -0x21d(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movl $0x1, -0x8c(%rbp)
jmp 0xff23
jmp 0xf96e
cmpl $0x6, -0x30(%rbp)
jne 0xf967
movq -0x208(%rbp), %rax
testb $0x1, 0x10b(%rax)
je 0xf967
leaq -0xb8(%rbp), %rdi
xorl %esi, %esi
callq 0x1e5c0
jmp 0xf893
movq -0x208(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0xb8(%rbp), %rdx
callq 0x11550
movb %al, -0x21e(%rbp)
jmp 0xf8b2
movb -0x21e(%rbp), %al
testb $0x1, %al
jne 0xf90e
jmp 0xf8be
movq -0x208(%rbp), %rdi
movl $0x2, %esi
callq 0x114d0
movb %al, -0x21f(%rbp)
jmp 0xf8d7
movb -0x21f(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movl $0x1, -0x8c(%rbp)
jmp 0xf949
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x1f050
jmp 0xff43
leaq -0xd8(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x1fd10
jmp 0xf923
leaq -0x50(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x9920
leaq -0xd8(%rbp), %rdi
callq 0x9480
movl $0x0, -0x8c(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x1f050
movl -0x8c(%rbp), %eax
testl %eax, %eax
jne 0xff23
jmp 0xf965
jmp 0xf96c
jmp 0xfe67
jmp 0xf96e
movq -0x208(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x10580
movb %al, -0x220(%rbp)
jmp 0xf989
movb -0x220(%rbp), %al
testb $0x1, %al
jne 0xf995
jmp 0xf9a2
cmpl $0xe, -0xf0(%rbp)
je 0xfa67
leaq -0x111(%rbp), %rdi
movq %rdi, -0x228(%rbp)
callq 0x9d30
movq -0x228(%rbp), %rdx
leaq 0xabe81(%rip), %rsi     # 0xbb844
leaq -0x110(%rbp), %rdi
callq 0x9a30
jmp 0xf9d1
movq -0x208(%rbp), %rdi
leaq -0x110(%rbp), %rsi
leaq -0xf0(%rbp), %rdx
movl $0x2, %ecx
callq 0x11800
movb %al, -0x229(%rbp)
jmp 0xf9f8
movb -0x229(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0x110(%rbp), %rdi
callq 0x9480
leaq -0x111(%rbp), %rdi
callq 0x97e0
movl $0x1, -0x8c(%rbp)
jmp 0xff23
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfa56
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x110(%rbp), %rdi
callq 0x9480
leaq -0x111(%rbp), %rdi
callq 0x97e0
jmp 0xff43
leaq -0x50(%rbp), %rdi
callq 0x9b00
cmpq $0x40000000, %rax       # imm = 0x40000000
jb 0xfaf2
leaq -0x139(%rbp), %rdi
movq %rdi, -0x238(%rbp)
callq 0x9d30
movq -0x238(%rbp), %rdx
leaq 0xac03f(%rip), %rsi     # 0xbbad8
leaq -0x138(%rbp), %rdi
callq 0x9a30
jmp 0xfaa7
leaq -0x138(%rbp), %rdi
callq 0x1db90
jmp 0xfab5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfae1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x138(%rbp), %rdi
callq 0x9480
leaq -0x139(%rbp), %rdi
callq 0x97e0
jmp 0xff43
movq -0x208(%rbp), %rax
testb $0x1, 0x10e(%rax)
je 0xfc0d
movq -0x208(%rbp), %rdi
callq 0xf660
movq %rax, -0x240(%rbp)
jmp 0xfb1b
movq -0x240(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x23da0
movb %al, -0x241(%rbp)
jmp 0xfb33
movb -0x241(%rbp), %al
testb $0x1, %al
jne 0xfb42
jmp 0xfc0d
leaq 0xabfa1(%rip), %rsi     # 0xbbaea
leaq -0x180(%rbp), %rdi
leaq -0x50(%rbp), %rdx
callq 0x148a0
jmp 0xfb5b
leaq 0xabf97(%rip), %rdx     # 0xbbaf9
leaq -0x160(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x145e0
jmp 0xfb77
leaq -0x180(%rbp), %rdi
callq 0x9480
movq -0x208(%rbp), %rdi
leaq -0x160(%rbp), %rsi
leaq -0x30(%rbp), %rdx
movl $0x2, %ecx
callq 0x11800
movb %al, -0x242(%rbp)
jmp 0xfba7
movb -0x242(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movl $0x1, -0x8c(%rbp)
leaq -0x160(%rbp), %rdi
callq 0x9480
jmp 0xff23
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x9480
jmp 0xff43
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x160(%rbp), %rdi
callq 0x9480
jmp 0xff43
movq -0x208(%rbp), %rdi
callq 0xf660
movq %rax, -0x250(%rbp)
jmp 0xfc22
movq -0x250(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x232c0
movq %rax, -0x258(%rbp)
jmp 0xfc3b
movq -0x208(%rbp), %rdi
movq -0x258(%rbp), %rax
movq %rax, -0x188(%rbp)
movq -0x188(%rbp), %rax
movq %rax, -0x190(%rbp)
leaq -0x190(%rbp), %rsi
callq 0x14520
jmp 0xfc6c
movq -0x208(%rbp), %rdi
callq 0xebf0
movb %al, -0x259(%rbp)
jmp 0xfc80
movq -0x208(%rbp), %rdi
movb -0x259(%rbp), %al
andb $0x1, %al
movb %al, -0x191(%rbp)
callq 0x14500
jmp 0xfc9c
testb $0x1, -0x191(%rbp)
jne 0xfcd8
movq -0x208(%rbp), %rdi
movl $0x2, %esi
callq 0x114d0
movb %al, -0x25a(%rbp)
jmp 0xfcbe
movb -0x25a(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movl $0x1, -0x8c(%rbp)
jmp 0xff23
movq -0x208(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x10580
movb %al, -0x25b(%rbp)
jmp 0xfcf3
movb -0x25b(%rbp), %al
testb $0x1, %al
jne 0xfcff
jmp 0xfd26
cmpl $0x2, -0x1b0(%rbp)
je 0xfdeb
cmpl $0xd, -0x1b0(%rbp)
je 0xfdeb
cmpl $0xf, -0x1b0(%rbp)
je 0xfdeb
leaq -0x1d1(%rbp), %rdi
movq %rdi, -0x268(%rbp)
callq 0x9d30
movq -0x268(%rbp), %rdx
leaq 0xabb22(%rip), %rsi     # 0xbb869
leaq -0x1d0(%rbp), %rdi
callq 0x9a30
jmp 0xfd55
movq -0x208(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
leaq -0x1b0(%rbp), %rdx
movl $0x2, %ecx
callq 0x11800
movb %al, -0x269(%rbp)
jmp 0xfd7c
movb -0x269(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0x9480
leaq -0x1d1(%rbp), %rdi
callq 0x97e0
movl $0x1, -0x8c(%rbp)
jmp 0xff23
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfdda
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0x9480
leaq -0x1d1(%rbp), %rdi
callq 0x97e0
jmp 0xff43
movb $0x1, -0x1d2(%rbp)
xorl %eax, %eax
cmpl $0xf, -0x1b0(%rbp)
movb %al, -0x26a(%rbp)
jne 0xfe0f
movb -0x1d2(%rbp), %al
movb %al, -0x26a(%rbp)
movb -0x26a(%rbp), %al
testb $0x1, %al
jne 0xfe1b
jmp 0xfe46
movq -0x208(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x10580
movb %al, -0x26b(%rbp)
jmp 0xfe36
movb -0x26b(%rbp), %al
andb $0x1, %al
movb %al, -0x1d2(%rbp)
jmp 0xfdf2
cmpl $0x2, -0x1b0(%rbp)
jne 0xfe62
movb $0x1, -0x1(%rbp)
movl $0x1, -0x8c(%rbp)
jmp 0xff23
jmp 0xf71c
leaq -0x1f9(%rbp), %rdi
movq %rdi, -0x278(%rbp)
callq 0x9d30
movq -0x278(%rbp), %rdx
leaq 0xaba0a(%rip), %rsi     # 0xbb892
leaq -0x1f8(%rbp), %rdi
callq 0x9a30
jmp 0xfe96
movq -0x208(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
leaq -0x30(%rbp), %rdx
movl $0x2, %ecx
callq 0x11800
movb %al, -0x279(%rbp)
jmp 0xfeba
movb -0x279(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x9480
leaq -0x1f9(%rbp), %rdi
callq 0x97e0
movl $0x1, -0x8c(%rbp)
jmp 0xff23
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xff15
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x9480
leaq -0x1f9(%rbp), %rdi
callq 0x97e0
jmp 0xff43
leaq -0x78(%rbp), %rdi
callq 0x1f050
leaq -0x50(%rbp), %rdi
callq 0x9480
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x280, %rsp            # imm = 0x280
popq %rbp
retq
leaq -0x78(%rbp), %rdi
callq 0x1f050
leaq -0x50(%rbp), %rdi
callq 0x9480
movq -0x80(%rbp), %rdi
callq 0x9d20
nop