// File: /workspace/github_c_makefile_star2_O3/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdi, %r14
movq (%rdi), %rbx
leaq -0x1(%rbx), %r12
xorl %ecx, %ecx
xorl %edx, %edx
movq %rdx, %r13
movq %rcx, %r15
movsbl (%rbx,%rcx), %edi
testl %edi, %edi
je 0xe4aa
cmpb $0xa, %dil
jne 0xe499
incl 0x8(%r14)
callq 0x3070
leaq -0x1(%r13), %rdx
leaq 0x1(%r15), %rcx
testl %eax, %eax
jne 0xe481
movq %rbx, %rbp
subq %r13, %rbp
movq %rbp, (%r14)
movzbl (%rbx,%r15), %ecx
cmpl $0x5a, %ecx
jg 0xe50a
leal -0x22(%rcx), %eax
cmpl $0x18, %eax
ja 0xe582
leaq 0x86bc(%rip), %rcx      # 0x16b8c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x20(%rsp), %rbx
movq $0x0, (%rbx)
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x3270
movq (%rbx), %rax
movq %rax, (%r14)
cmpq %rax, %rbp
je 0xe530
movq %xmm0, %rbx
movl $0x1, %eax
jmp 0xe790
cmpl $0x7a, %ecx
jg 0xe561
cmpl $0x5b, %ecx
je 0xe770
cmpl $0x5d, %ecx
jne 0xe593
subq %r13, %rbx
incq %rbx
movq %rbx, (%r14)
movl $0x7, %eax
jmp 0xe78e
movl 0x8(%r14), %ecx
addq $0x20, %r14
leaq 0x882f(%rip), %rdx      # 0x16d6e
leaq 0x86f3(%rip), %r8       # 0x16c39
xorl %ebx, %ebx
movl $0x400, %esi            # imm = 0x400
movq %r14, %rdi
xorl %eax, %eax
callq 0x3560
movl $0xb, %eax
jmp 0xe790
cmpl $0x7b, %ecx
je 0xe780
cmpl $0x7d, %ecx
jne 0xe593
subq %r13, %rbx
incq %rbx
movq %rbx, (%r14)
movl $0x6, %eax
jmp 0xe78e
testl %ecx, %ecx
jne 0xe593
movl $0xa, %eax
movq %rcx, %rbx
jmp 0xe790
subq %r13, %r12
movq $-0x1, %rbx
movsbl 0x1(%r12), %edi
incq %r12
callq 0x3350
incq %rbx
testl %eax, %eax
jne 0xe59d
cmpq $0x5, %rbx
je 0xe7a2
cmpq $0x4, %rbx
jne 0xe7be
leaq 0x8704(%rip), %rdi      # 0x16cd1
movl $0x4, %edx
movq %rbp, %rsi
callq 0x3170
testl %eax, %eax
je 0xe839
leaq 0x8723(%rip), %rdi      # 0x16d0c
movl $0x4, %edx
movq %rbp, %rsi
callq 0x3170
testl %eax, %eax
jne 0xe7be
movq %r12, (%r14)
movl $0x9, %eax
jmp 0xe78e
subq %r13, %rbx
incq %rbx
movq %rbx, (%r14)
movl $0x3, %eax
jmp 0xe78e
subq %r13, %rbx
leaq 0x1(%rbx), %r12
leaq 0x20(%r14), %rdi
leaq 0x85c0(%rip), %rdx      # 0x16bf0
movzbl (%r12), %r13d
cmpl $0x5c, %r13d
je 0xe656
incq %r12
cmpl $0x22, %r13d
je 0xe7d9
testl %r13d, %r13d
jne 0xe754
jmp 0xe7e4
leaq 0x2(%r12), %rsi
movb 0x1(%r12), %r13b
movzbl %r13b, %eax
cmpl $0x61, %eax
jg 0xe68c
cmpl $0x22, %eax
je 0xe751
cmpl $0x2f, %eax
je 0xe751
movq %rsi, %r12
cmpl $0x5c, %eax
je 0xe754
jmp 0xe858
leal -0x6e(%rax), %ecx
cmpl $0x7, %ecx
ja 0xe6a5
movslq (%rdx,%rcx,4), %rax
addq %rdx, %rax
jmpq *%rax
movb $0xa, %r13b
jmp 0xe751
cmpl $0x62, %eax
je 0xe74e
cmpl $0x66, %eax
jne 0xe858
movb $0xc, %r13b
jmp 0xe751
movq %rdi, 0x8(%rsp)
movq %rbp, 0x10(%rsp)
addq $0x6, %r12
xorl %r15d, %r15d
xorl %r13d, %r13d
movq %rsi, 0x18(%rsp)
movsbl (%rsi,%r15), %ebp
testl %ebp, %ebp
je 0xe802
movl %ebp, %edi
callq 0x3090
testl %eax, %eax
je 0xe816
movl %ebp, %edi
callq 0x34a0
movl %r13d, %ecx
shll $0x4, %ecx
leal -0x61(%rax), %edx
leal -0x30(%rax), %esi
addl $-0x57, %eax
cmpl $0x6, %edx
cmovael %esi, %eax
movl %eax, %r13d
orl %ecx, %r13d
incq %r15
cmpl $0x4, %r15d
movq 0x18(%rsp), %rsi
jne 0xe6d8
cmpl $0x80, %r13d
jae 0xe86c
movq 0x10(%rsp), %rbp
movq 0x8(%rsp), %rdi
leaq 0x84ae(%rip), %rdx      # 0x16bf0
jmp 0xe754
movb $0x9, %r13b
jmp 0xe751
movb $0xd, %r13b
jmp 0xe751
movb $0x8, %r13b
movq %rsi, %r12
movb %r13b, (%rbp)
incq %rbp
jmp 0xe630
subq %r13, %rbx
incq %rbx
movq %rbx, (%r14)
movl $0x2, %eax
jmp 0xe78e
subq %r13, %rbx
incq %rbx
movq %rbx, (%r14)
movl $0x5, %eax
jmp 0xe78e
subq %r13, %rbx
incq %rbx
movq %rbx, (%r14)
movl $0x4, %eax
xorl %ebx, %ebx
movq %rbx, %rdx
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x852d(%rip), %rdi      # 0x16cd6
movl $0x5, %edx
movq %rbp, %rsi
callq 0x3170
testl %eax, %eax
je 0xe84b
movl 0x8(%r14), %ecx
addq $0x20, %r14
leaq 0x85a1(%rip), %rdx      # 0x16d6e
leaq 0x8508(%rip), %r8       # 0x16cdc
jmp 0xe546
movb $0x0, (%rbp)
movq %r12, (%r14)
xorl %eax, %eax
jmp 0xe790
movl 0x8(%r14), %ecx
leaq 0x857f(%rip), %rdx      # 0x16d6e
leaq 0x844e(%rip), %r8       # 0x16c44
xorl %ebx, %ebx
movl $0x400, %esi            # imm = 0x400
jmp 0xe550
movl 0x8(%r14), %ecx
leaq 0x8561(%rip), %rdx      # 0x16d6e
leaq 0x844a(%rip), %r8       # 0x16c5e
jmp 0xe828
movl 0x8(%r14), %ecx
leaq 0x854d(%rip), %rdx      # 0x16d6e
leaq 0x8450(%rip), %r8       # 0x16c78
xorl %ebx, %ebx
movl $0x400, %esi            # imm = 0x400
movq 0x8(%rsp), %rdi
jmp 0xe550
movq %r12, (%r14)
movl $0x1, %ebx
movl $0x8, %eax
jmp 0xe790
movq %r12, (%r14)
movl $0x8, %eax
jmp 0xe78e
movl 0x8(%r14), %ecx
leaq 0x850b(%rip), %rdx      # 0x16d6e
leaq 0x844f(%rip), %r8       # 0x16cb9
jmp 0xe7f6
movl 0x8(%r14), %ecx
leaq 0x84f7(%rip), %rdx      # 0x16d6e
leaq 0x841b(%rip), %r8       # 0x16c99
jmp 0xe828