// File: /workspace/github_c_makefile_star2_O0/deplinenoise[P]tundra/src/JsonParse.cpp
// Function: t2::JsonLexerFetchNext(t2::JsonLexerState*)
static JsonLexeme JsonLexerFetchNext(JsonLexerState* state)
{
  char* p = SkipWhitespace(state);
  char ch = *p;

  switch (ch)
  {
    case '-':
    case '0': case '1': case '2': case '3': case '4':
    case '5': case '6': case '7': case '8': case '9':
      return GetNumberLexeme(state);

    case '"':
      return GetStringLexeme(state);

    case '{':
      state->m_Cursor = p + 1;
      return s_BeginObjectLexeme;

    case '}':
      state->m_Cursor = p + 1;
      return s_EndObjectLexeme;
  
    case '[':
      state->m_Cursor = p + 1;
      return s_BeginArrayLexeme;

    case ']':
      state->m_Cursor = p + 1;
      return s_EndArrayLexeme;

    case ',':
      state->m_Cursor = p + 1;
      return s_ValueSeparatorLexeme;

    case ':':
      state->m_Cursor = p + 1;
      return s_NameSeparatorLexeme;

    case '\0':
      return s_EofLexeme;

    default:
      return GetLiteralLexeme(state);
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x17fb0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movb (%rax), %al
movb %al, -0x21(%rbp)
movsbl -0x21(%rbp), %eax
movl %eax, %ecx
movq %rcx, -0x30(%rbp)
subl $0x7d, %eax
ja 0x17f8e
movq -0x30(%rbp), %rax
leaq 0xcd50(%rip), %rcx      # 0x24ba0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x18(%rbp), %rdi
callq 0x18030
movl %eax, -0x10(%rbp)
movq %rdx, -0x8(%rbp)
jmp 0x17f9e
movq -0x18(%rbp), %rdi
callq 0x180c0
movl %eax, -0x10(%rbp)
movq %rdx, -0x8(%rbp)
jmp 0x17f9e
movq -0x20(%rbp), %rcx
addq $0x1, %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
movq 0xd067(%rip), %rax      # 0x24f00
movq %rax, -0x10(%rbp)
movq 0xd064(%rip), %rax      # 0x24f08
movq %rax, -0x8(%rbp)
jmp 0x17f9e
movq -0x20(%rbp), %rcx
addq $0x1, %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
movq 0xd04d(%rip), %rax      # 0x24f10
movq %rax, -0x10(%rbp)
movq 0xd04a(%rip), %rax      # 0x24f18
movq %rax, -0x8(%rbp)
jmp 0x17f9e
movq -0x20(%rbp), %rcx
addq $0x1, %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
movq 0xd033(%rip), %rax      # 0x24f20
movq %rax, -0x10(%rbp)
movq 0xd030(%rip), %rax      # 0x24f28
movq %rax, -0x8(%rbp)
jmp 0x17f9e
movq -0x20(%rbp), %rcx
addq $0x1, %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
movq 0xd019(%rip), %rax      # 0x24f30
movq %rax, -0x10(%rbp)
movq 0xd016(%rip), %rax      # 0x24f38
movq %rax, -0x8(%rbp)
jmp 0x17f9e
movq -0x20(%rbp), %rcx
addq $0x1, %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
movq 0xd002(%rip), %rax      # 0x24f40
movq %rax, -0x10(%rbp)
movq 0xcfff(%rip), %rax      # 0x24f48
movq %rax, -0x8(%rbp)
jmp 0x17f9e
movq -0x20(%rbp), %rcx
addq $0x1, %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
movq 0xcfeb(%rip), %rax      # 0x24f50
movq %rax, -0x10(%rbp)
movq 0xcfe8(%rip), %rax      # 0x24f58
movq %rax, -0x8(%rbp)
jmp 0x17f9e
movq 0xcfe3(%rip), %rax      # 0x24f60
movq %rax, -0x10(%rbp)
movq 0xcfe0(%rip), %rax      # 0x24f68
movq %rax, -0x8(%rbp)
jmp 0x17f9e
movq -0x18(%rbp), %rdi
callq 0x183c0
movl %eax, -0x10(%rbp)
movq %rdx, -0x8(%rbp)
movl -0x10(%rbp), %eax
movq -0x8(%rbp), %rdx
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax,%rax)