// File: RegulusImpact[P]sadboy/include/jsoncpp.cpp
// Function: Json::Reader::readValue()
bool Reader::readValue() {
  // readValue() may call itself only if it calls readObject() or ReadArray().
  // These methods execute nodes_.push() just before and nodes_.pop)() just after calling readValue(). 
  // parse() executes one nodes_.push(), so > instead of >=.
  if (nodes_.size() > stackLimit_g) throwRuntimeError("Exceeded stackLimit in readValue().");

  Token token;
  skipCommentTokens(token);
  bool successful = true;

  if (collectComments_ && !commentsBefore_.empty()) {
    currentValue().setComment(commentsBefore_, commentBefore);
    commentsBefore_.clear();
  }

  switch (token.type_) {
  case tokenObjectBegin:
    successful = readObject(token);
    currentValue().setOffsetLimit(current_ - begin_);
    break;
  case tokenArrayBegin:
    successful = readArray(token);
    currentValue().setOffsetLimit(current_ - begin_);
    break;
  case tokenNumber:
    successful = decodeNumber(token);
    break;
  case tokenString:
    successful = decodeString(token);
    break;
  case tokenTrue:
    {
    Value v(true);
    currentValue().swapPayload(v);
    currentValue().setOffsetStart(token.start_ - begin_);
    currentValue().setOffsetLimit(token.end_ - begin_);
    }
    break;
  case tokenFalse:
    {
    Value v(false);
    currentValue().swapPayload(v);
    currentValue().setOffsetStart(token.start_ - begin_);
    currentValue().setOffsetLimit(token.end_ - begin_);
    }
    break;
  case tokenNull:
    {
    Value v;
    currentValue().swapPayload(v);
    currentValue().setOffsetStart(token.start_ - begin_);
    currentValue().setOffsetLimit(token.end_ - begin_);
    }
    break;
  case tokenArraySeparator:
  case tokenObjectEnd:
  case tokenArrayEnd:
    if (features_.allowDroppedNullPlaceholders_) {
      // "Un-read" the current token and mark the current value as a null
      // token.
      current_--;
      Value v;
      currentValue().swapPayload(v);
      currentValue().setOffsetStart(current_ - begin_ - 1);
      currentValue().setOffsetLimit(current_ - begin_);
      break;
    } // Else, fall through...
  default:
    currentValue().setOffsetStart(token.start_ - begin_);
    currentValue().setOffsetLimit(token.end_ - begin_);
    return addError("Syntax error: value, object or array expected.", token);
  }

  if (collectComments_) {
    lastValueEnd_ = current_;
    lastValue_ = &currentValue();
  }

  return successful;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1c0, %rsp            # imm = 0x1C0
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x138(%rbp)
callq 0x1e4c0
cmpq $0x3e8, %rax            # imm = 0x3E8
jbe 0x62ec
leaq -0x31(%rbp), %rdi
movq %rdi, -0x140(%rbp)
callq 0x5790
movq -0x140(%rbp), %rdx
leaq 0x31a09(%rip), %rsi     # 0x37cae
leaq -0x30(%rbp), %rdi
callq 0x5650
jmp 0x62b0
leaq -0x30(%rbp), %rdi
callq 0x6ae0
jmp 0x62bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x62de
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x52c0
leaq -0x31(%rbp), %rdi
callq 0x54f0
jmp 0x692c
movq -0x138(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x6940
movq -0x138(%rbp), %rax
movb $0x1, -0x61(%rbp)
testb $0x1, 0x10c(%rax)
je 0x635e
movq -0x138(%rbp), %rdi
addq $0xe8, %rdi
callq 0x5740
testb $0x1, %al
jne 0x635e
movq -0x138(%rbp), %rdi
callq 0x6b40
movq -0x138(%rbp), %rsi
movq %rax, %rdi
addq $0xe8, %rsi
xorl %edx, %edx
callq 0x6990
movq -0x138(%rbp), %rdi
addq $0xe8, %rdi
callq 0x5610
movl -0x60(%rbp), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x148(%rbp)
subl $0x9, %eax
ja 0x67de
movq -0x148(%rbp), %rax
leaq 0x30c8d(%rip), %rcx     # 0x37010
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x138(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x6b60
movq -0x138(%rbp), %rdi
andb $0x1, %al
movb %al, -0x61(%rbp)
callq 0x6b40
movq %rax, %rdi
movq -0x138(%rbp), %rax
movq 0xd0(%rax), %rsi
movq 0xc0(%rax), %rax
subq %rax, %rsi
callq 0x7300
jmp 0x68db
movq -0x138(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x7320
movq -0x138(%rbp), %rdi
andb $0x1, %al
movb %al, -0x61(%rbp)
callq 0x6b40
movq %rax, %rdi
movq -0x138(%rbp), %rax
movq 0xd0(%rax), %rsi
movq 0xc0(%rax), %rax
subq %rax, %rsi
callq 0x7300
jmp 0x68db
movq -0x138(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x76a0
andb $0x1, %al
movb %al, -0x61(%rbp)
jmp 0x68db
movq -0x138(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x77c0
andb $0x1, %al
movb %al, -0x61(%rbp)
jmp 0x68db
leaq -0x90(%rbp), %rdi
movl $0x1, %esi
callq 0x12610
movq -0x138(%rbp), %rdi
callq 0x6b40
movq %rax, -0x150(%rbp)
jmp 0x6472
movq -0x150(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x7940
jmp 0x6487
movq -0x138(%rbp), %rdi
callq 0x6b40
movq %rax, -0x158(%rbp)
jmp 0x649c
movq -0x158(%rbp), %rdi
movq -0x138(%rbp), %rax
movq -0x58(%rbp), %rsi
movq 0xc0(%rax), %rax
subq %rax, %rsi
callq 0x7a30
jmp 0x64bf
movq -0x138(%rbp), %rdi
callq 0x6b40
movq %rax, -0x160(%rbp)
jmp 0x64d4
movq -0x160(%rbp), %rdi
movq -0x138(%rbp), %rax
movq -0x50(%rbp), %rsi
movq 0xc0(%rax), %rax
subq %rax, %rsi
callq 0x7300
jmp 0x64f7
leaq -0x90(%rbp), %rdi
callq 0x12a50
jmp 0x68db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x12a50
jmp 0x692c
leaq -0xb8(%rbp), %rdi
xorl %esi, %esi
callq 0x12610
movq -0x138(%rbp), %rdi
callq 0x6b40
movq %rax, -0x168(%rbp)
jmp 0x6548
movq -0x168(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x7940
jmp 0x655d
movq -0x138(%rbp), %rdi
callq 0x6b40
movq %rax, -0x170(%rbp)
jmp 0x6572
movq -0x170(%rbp), %rdi
movq -0x138(%rbp), %rax
movq -0x58(%rbp), %rsi
movq 0xc0(%rax), %rax
subq %rax, %rsi
callq 0x7a30
jmp 0x6595
movq -0x138(%rbp), %rdi
callq 0x6b40
movq %rax, -0x178(%rbp)
jmp 0x65aa
movq -0x178(%rbp), %rdi
movq -0x138(%rbp), %rax
movq -0x50(%rbp), %rsi
movq 0xc0(%rax), %rax
subq %rax, %rsi
callq 0x7300
jmp 0x65cd
leaq -0xb8(%rbp), %rdi
callq 0x12a50
jmp 0x68db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x12a50
jmp 0x692c
leaq -0xe0(%rbp), %rdi
xorl %esi, %esi
callq 0x11fc0
movq -0x138(%rbp), %rdi
callq 0x6b40
movq %rax, -0x180(%rbp)
jmp 0x661e
movq -0x180(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x7940
jmp 0x6633
movq -0x138(%rbp), %rdi
callq 0x6b40
movq %rax, -0x188(%rbp)
jmp 0x6648
movq -0x188(%rbp), %rdi
movq -0x138(%rbp), %rax
movq -0x58(%rbp), %rsi
movq 0xc0(%rax), %rax
subq %rax, %rsi
callq 0x7a30
jmp 0x666b
movq -0x138(%rbp), %rdi
callq 0x6b40
movq %rax, -0x190(%rbp)
jmp 0x6680
movq -0x190(%rbp), %rdi
movq -0x138(%rbp), %rax
movq -0x50(%rbp), %rsi
movq 0xc0(%rax), %rax
subq %rax, %rsi
callq 0x7300
jmp 0x66a3
leaq -0xe0(%rbp), %rdi
callq 0x12a50
jmp 0x68db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x12a50
jmp 0x692c
movq -0x138(%rbp), %rax
testb $0x1, 0x10a(%rax)
je 0x67dc
movq -0x138(%rbp), %rax
movq 0xd0(%rax), %rcx
decq %rcx
movq %rcx, 0xd0(%rax)
leaq -0x108(%rbp), %rdi
xorl %esi, %esi
callq 0x11fc0
movq -0x138(%rbp), %rdi
callq 0x6b40
movq %rax, -0x198(%rbp)
jmp 0x6720
movq -0x198(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0x7940
jmp 0x6735
movq -0x138(%rbp), %rdi
callq 0x6b40
movq %rax, -0x1a0(%rbp)
jmp 0x674a
movq -0x1a0(%rbp), %rdi
movq -0x138(%rbp), %rax
movq 0xc0(%rax), %rsi
movq 0xd0(%rax), %rax
notq %rsi
addq %rax, %rsi
callq 0x7a30
jmp 0x6773
movq -0x138(%rbp), %rdi
callq 0x6b40
movq %rax, -0x1a8(%rbp)
jmp 0x6788
movq -0x1a8(%rbp), %rdi
movq -0x138(%rbp), %rcx
movq 0xc0(%rcx), %rax
movq 0xd0(%rcx), %rsi
subq %rax, %rsi
callq 0x7300
jmp 0x67ae
leaq -0x108(%rbp), %rdi
callq 0x12a50
jmp 0x68db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x12a50
jmp 0x692c
jmp 0x67de
movq -0x138(%rbp), %rdi
callq 0x6b40
movq %rax, %rdi
movq -0x138(%rbp), %rax
movq -0x58(%rbp), %rsi
movq 0xc0(%rax), %rax
subq %rax, %rsi
callq 0x7a30
movq -0x138(%rbp), %rdi
callq 0x6b40
movq %rax, %rdi
movq -0x138(%rbp), %rax
movq -0x50(%rbp), %rsi
movq 0xc0(%rax), %rax
subq %rax, %rsi
callq 0x7300
leaq -0x129(%rbp), %rdi
movq %rdi, -0x1b0(%rbp)
callq 0x5790
movq -0x1b0(%rbp), %rdx
leaq 0x31481(%rip), %rsi     # 0x37cd2
leaq -0x128(%rbp), %rdi
callq 0x5650
jmp 0x685f
movq -0x138(%rbp), %rdi
xorl %eax, %eax
movl %eax, %ecx
leaq -0x128(%rbp), %rsi
leaq -0x60(%rbp), %rdx
callq 0x6a40
movb %al, -0x1b1(%rbp)
jmp 0x6882
movb -0x1b1(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0x128(%rbp), %rdi
callq 0x52c0
leaq -0x129(%rbp), %rdi
callq 0x54f0
jmp 0x691e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x68cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x128(%rbp), %rdi
callq 0x52c0
leaq -0x129(%rbp), %rdi
callq 0x54f0
jmp 0x692c
movq -0x138(%rbp), %rax
testb $0x1, 0x10c(%rax)
je 0x6916
movq -0x138(%rbp), %rdi
movq 0xd0(%rdi), %rax
movq %rax, 0xd8(%rdi)
callq 0x6b40
movq %rax, %rcx
movq -0x138(%rbp), %rax
movq %rcx, 0xe0(%rax)
movb -0x61(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x1c0, %rsp            # imm = 0x1C0
popq %rbp
retq
movq -0x40(%rbp), %rdi
callq 0x5780
nopw %cs:(%rax,%rax)