// File: /workspace/github_cpp_makefile_star2_O1/tomfunkhouser[P]gaps/pkgs/RNBasics/json.cpp
// Function: Json::OurReader::readToken(Json::OurReader::Token&)
bool OurReader::readToken(Token& token) {
  skipSpaces();
  token.start_ = current_;
  Char c = getNextChar();
  bool ok = true;
  switch (c) {
  case '{':
    token.type_ = tokenObjectBegin;
    break;
  case '}':
    token.type_ = tokenObjectEnd;
    break;
  case '[':
    token.type_ = tokenArrayBegin;
    break;
  case ']':
    token.type_ = tokenArrayEnd;
    break;
  case '"':
    token.type_ = tokenString;
    ok = readString();
    break;
  case '\'':
    if (features_.allowSingleQuotes_) {
    token.type_ = tokenString;
    ok = readStringSingleQuote();
    break;
    } // else continue
  case '/':
    token.type_ = tokenComment;
    ok = readComment();
    break;
  case '0':
  case '1':
  case '2':
  case '3':
  case '4':
  case '5':
  case '6':
  case '7':
  case '8':
  case '9':
    token.type_ = tokenNumber;
    readNumber(false);
    break;
  case '-':
    if (readNumber(true)) {
      token.type_ = tokenNumber;
    } else {
      token.type_ = tokenNegInf;
      ok = features_.allowSpecialFloats_ && match("nfinity", 7);
    }
    break;
  case 't':
    token.type_ = tokenTrue;
    ok = match("rue", 3);
    break;
  case 'f':
    token.type_ = tokenFalse;
    ok = match("alse", 4);
    break;
  case 'n':
    token.type_ = tokenNull;
    ok = match("ull", 3);
    break;
  case 'N':
    if (features_.allowSpecialFloats_) {
      token.type_ = tokenNaN;
      ok = match("aN", 2);
    } else {
      ok = false;
    }
    break;
  case 'I':
    if (features_.allowSpecialFloats_) {
      token.type_ = tokenPosInf;
      ok = match("nfinity", 7);
    } else {
      ok = false;
    }
    break;
  case ',':
    token.type_ = tokenArraySeparator;
    break;
  case ':':
    token.type_ = tokenMemberSeparator;
    break;
  case 0:
    token.type_ = tokenEndOfStream;
    break;
  default:
    ok = false;
    break;
  }
  if (!ok)
    token.type_ = tokenError;
  token.end_ = current_;
  return true;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
movq 0xc8(%rdi), %rax
movq 0xd0(%rdi), %rcx
cmpq %rax, %rcx
je 0x7dce5
movabsq $0x100002600, %rdx      # imm = 0x100002600
movzbl (%rcx), %esi
cmpq $0x20, %rsi
ja 0x7dce5
btq %rsi, %rdx
jae 0x7dce5
incq %rcx
movq %rcx, 0xd0(%r14)
cmpq %rax, %rcx
jne 0x7dcc7
movq 0xd0(%r14), %rcx
movq %rcx, 0x8(%rbx)
cmpq %rax, %rcx
je 0x7dd04
leaq 0x1(%rcx), %rdx
movq %rdx, 0xd0(%r14)
movb (%rcx), %cl
jmp 0x7dd06
xorl %ecx, %ecx
movzbl %cl, %ecx
cmpl $0x5a, %ecx
jg 0x7dd3f
leal -0x22(%rcx), %edx
cmpl $0x2c, %edx
ja 0x7de23
leaq 0x42f37(%rip), %rcx     # 0xc0c58
movslq (%rcx,%rdx,4), %rdx
addq %rcx, %rdx
jmpq *%rdx
movl $0x6, (%rbx)
movq %r14, %rdi
xorl %esi, %esi
callq 0x7e23c
jmp 0x7e002
cmpl $0x6d, %ecx
jle 0x7dda5
cmpl $0x7a, %ecx
jg 0x7de06
cmpl $0x6e, %ecx
je 0x7df55
cmpl $0x74, %ecx
jne 0x7dffc
movl $0x7, (%rbx)
movq 0xd0(%r14), %rcx
subq %rcx, %rax
cmpq $0x3, %rax
jl 0x7dffc
movl $0x2, %edx
leaq 0x437ae(%rip), %rax     # 0xc1533
cmpq $-0x1, %rdx
je 0x7dfac
movb (%rcx,%rdx), %sil
leaq -0x1(%rdx), %rdi
cmpb (%rdx,%rax), %sil
movq %rdi, %rdx
je 0x7dd85
jmp 0x7dffc
cmpl $0x5b, %ecx
je 0x7dfa4
cmpl $0x5d, %ecx
je 0x7df9c
cmpl $0x66, %ecx
jne 0x7dffc
movl $0x8, (%rbx)
movq 0xd0(%r14), %rcx
subq %rcx, %rax
cmpq $0x4, %rax
jl 0x7dffc
movl $0x3, %edx
leaq 0x43752(%rip), %rax     # 0xc1538
cmpq $-0x1, %rdx
je 0x7e017
movb (%rcx,%rdx), %sil
leaq -0x1(%rdx), %rdi
cmpb (%rdx,%rax), %sil
movq %rdi, %rdx
je 0x7dde6
jmp 0x7dffc
cmpl $0x7d, %ecx
je 0x7df94
cmpl $0x7b, %ecx
jne 0x7dffc
movl $0x1, (%rbx)
jmp 0x7e002
testl %ecx, %ecx
jne 0x7dffc
movl $0x0, (%rbx)
jmp 0x7e002
cmpb $0x1, 0x113(%r14)
jne 0x7dffc
movl $0xb, (%rbx)
movq 0xd0(%r14), %rcx
subq %rcx, %rax
cmpq $0x7, %rax
jl 0x7dffc
movl $0x6, %edx
leaq 0x43baa(%rip), %rax     # 0xc1a14
cmpq $-0x1, %rdx
je 0x7e01d
movb (%rcx,%rdx), %sil
leaq -0x1(%rdx), %rdi
cmpb (%rdx,%rax), %sil
movq %rdi, %rdx
je 0x7de6a
jmp 0x7dffc
movl $0xe, (%rbx)
jmp 0x7e002
cmpb $0x1, 0x113(%r14)
jne 0x7dffc
movl $0xa, (%rbx)
movq 0xd0(%r14), %rcx
subq %rcx, %rax
cmpq $0x2, %rax
jl 0x7dffc
movl $0x1, %edx
leaq 0x43b41(%rip), %rax     # 0xc1a0a
cmpq $-0x1, %rdx
je 0x7e023
movb (%rcx,%rdx), %sil
leaq -0x1(%rdx), %rdi
cmpb (%rdx,%rax), %sil
movq %rdi, %rdx
je 0x7dec9
jmp 0x7dffc
cmpb $0x1, 0x110(%r14)
jne 0x7df03
movl $0x5, (%rbx)
movq %r14, %rdi
callq 0x7e0ee
jmp 0x7df21
movl $0xf, (%rbx)
movq %r14, %rdi
callq 0x7e140
jmp 0x7df21
movl $0x5, (%rbx)
movq %r14, %rdi
callq 0x7e09c
testb %al, %al
je 0x7dffc
jmp 0x7e002
movl $0xd, (%rbx)
jmp 0x7e002
movq %r14, %rdi
movl $0x1, %esi
callq 0x7e23c
testb %al, %al
je 0x7dfb2
movl $0x6, (%rbx)
jmp 0x7e002
movl $0x9, (%rbx)
movq 0xd0(%r14), %rcx
subq %rcx, %rax
cmpq $0x3, %rax
jl 0x7dffc
movl $0x2, %edx
leaq 0x43a93(%rip), %rax     # 0xc1a0e
cmpq $-0x1, %rdx
je 0x7dfac
movb (%rcx,%rdx), %sil
leaq -0x1(%rdx), %rdi
cmpb (%rdx,%rax), %sil
movq %rdi, %rdx
je 0x7df7b
jmp 0x7dffc
movl $0x2, (%rbx)
jmp 0x7e002
movl $0x4, (%rbx)
jmp 0x7e002
movl $0x3, (%rbx)
jmp 0x7e002
addq $0x3, %rcx
jmp 0x7e027
movl $0xc, (%rbx)
cmpb $0x1, 0x113(%r14)
jne 0x7dffc
movq 0xc8(%r14), %rcx
movq 0xd0(%r14), %rax
subq %rax, %rcx
cmpq $0x7, %rcx
jl 0x7dffc
movl $0x6, %edx
leaq 0x43a2f(%rip), %rcx     # 0xc1a14
cmpq $-0x1, %rdx
je 0x7e030
movb (%rax,%rdx), %sil
leaq -0x1(%rdx), %rdi
cmpb (%rdx,%rcx), %sil
movq %rdi, %rdx
je 0x7dfe5
movl $0x10, (%rbx)
movq 0xd0(%r14), %rax
movq %rax, 0x10(%rbx)
movb $0x1, %al
addq $0x8, %rsp
popq %rbx
popq %r14
retq
addq $0x4, %rcx
jmp 0x7e027
addq $0x7, %rcx
jmp 0x7e027
addq $0x2, %rcx
movq %rcx, 0xd0(%r14)
jmp 0x7e002
addq $0x7, %rax
movq %rax, 0xd0(%r14)
jmp 0x7e002
nop