// File: /workspace/github_cpp_makefile_star2_O3/tomfunkhouser[P]gaps/pkgs/RNBasics/json.cpp
// Function: Json::Reader::readToken(Json::Reader::Token&)
bool Reader::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 '/':
    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':
  case '-':
    token.type_ = tokenNumber;
    readNumber();
    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 ',':
    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), %rcx
movq 0xd0(%rdi), %rax
cmpq %rcx, %rax
je 0x79405
movabsq $0x100002600, %rdx      # imm = 0x100002600
movzbl (%rax), %esi
cmpq $0x20, %rsi
ja 0x79405
btq %rsi, %rdx
jae 0x79405
incq %rax
movq %rax, 0xd0(%r14)
cmpq %rcx, %rax
jne 0x793e7
movq %rax, 0x8(%rbx)
cmpq %rcx, %rax
je 0x7952b
leaq 0x1(%rax), %rdx
movq %rdx, 0xd0(%r14)
movzbl (%rax), %esi
cmpl $0x5a, %esi
jg 0x79454
leal -0x22(%rsi), %eax
cmpl $0x18, %eax
ja 0x79527
leaq 0x45760(%rip), %rcx     # 0xbeb98
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0x6, (%rbx)
movq %r14, %rdi
callq 0x7978c
jmp 0x795a1
cmpl $0x6d, %esi
jle 0x794b5
cmpl $0x7a, %esi
jg 0x79511
cmpl $0x6e, %esi
je 0x79567
cmpl $0x74, %esi
jne 0x7959b
movl $0x7, (%rbx)
subq %rdx, %rcx
cmpq $0x3, %rcx
jl 0x7959b
movl $0x3, %edx
leaq 0x460b0(%rip), %rcx     # 0xbf543
movl $0x3, %esi
subq $0x1, %rsi
jb 0x795ce
movb (%rax,%rdx), %dil
cmpb -0x1(%rdx,%rcx), %dil
movq %rsi, %rdx
je 0x79498
jmp 0x7959b
cmpl $0x5b, %esi
je 0x795be
cmpl $0x5d, %esi
je 0x795c6
cmpl $0x66, %esi
jne 0x7959b
movl $0x8, (%rbx)
subq %rdx, %rcx
cmpq $0x4, %rcx
jl 0x7959b
movl $0x4, %edx
leaq 0x46059(%rip), %rcx     # 0xbf548
movl $0x4, %esi
subq $0x1, %rsi
jb 0x795d4
movb (%rax,%rdx), %dil
cmpb -0x1(%rdx,%rcx), %dil
movq %rsi, %rdx
je 0x794f4
jmp 0x7959b
cmpl $0x7d, %esi
je 0x795b6
cmpl $0x7b, %esi
jne 0x7959b
movl $0x1, (%rbx)
jmp 0x795a1
testl %esi, %esi
jne 0x7959b
movl $0x0, (%rbx)
jmp 0x795a1
movl $0xc, (%rbx)
movq %r14, %rdi
callq 0x79692
jmp 0x79551
movl $0x5, (%rbx)
movq %r14, %rdi
callq 0x79640
testb %al, %al
je 0x7959b
jmp 0x795a1
movl $0xa, (%rbx)
jmp 0x795a1
movl $0xb, (%rbx)
jmp 0x795a1
movl $0x9, (%rbx)
subq %rdx, %rcx
cmpq $0x3, %rcx
jl 0x7959b
movl $0x3, %edx
leaq 0x46499(%rip), %rcx     # 0xbfa1b
movl $0x3, %esi
subq $0x1, %rsi
jb 0x795ce
movb (%rax,%rdx), %dil
cmpb -0x1(%rdx,%rcx), %dil
movq %rsi, %rdx
je 0x79587
movl $0xd, (%rbx)
movq 0xd0(%r14), %rax
movq %rax, 0x10(%rbx)
movb $0x1, %al
addq $0x8, %rsp
popq %rbx
popq %r14
retq
movl $0x2, (%rbx)
jmp 0x795a1
movl $0x3, (%rbx)
jmp 0x795a1
movl $0x4, (%rbx)
jmp 0x795a1
addq $0x4, %rax
jmp 0x795d8
addq $0x5, %rax
movq %rax, 0xd0(%r14)
jmp 0x795a1
nop