// File: /workspace/github_cpp_makefile_star2_O3/Konano[P]UselessDatabase/./json.hpp
// Function: nlohmann::detail::lexer<nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer>>::scan()
token_type scan()
    {
        // initially, skip the BOM
        if (position.chars_read_total == 0 and not skip_bom())
        {
            error_message = "invalid BOM; must be 0xEF 0xBB 0xBF if given";
            return token_type::parse_error;
        }

        // read next character and ignore whitespace
        do
        {
            get();
        }
        while (current == ' ' or current == '\t' or current == '\n' or current == '\r');

        switch (current)
        {
            // structural characters
            case '[':
                return token_type::begin_array;
            case ']':
                return token_type::end_array;
            case '{':
                return token_type::begin_object;
            case '}':
                return token_type::end_object;
            case ':':
                return token_type::name_separator;
            case ',':
                return token_type::value_separator;

            // literals
            case 't':
                return scan_literal("true", 4, token_type::literal_true);
            case 'f':
                return scan_literal("false", 5, token_type::literal_false);
            case 'n':
                return scan_literal("null", 4, token_type::literal_null);

            // string
            case '\"':
                return scan_string();

            // number
            case '-':
            case '0':
            case '1':
            case '2':
            case '3':
            case '4':
            case '5':
            case '6':
            case '7':
            case '8':
            case '9':
                return scan_number();

            // end of input (the null byte is needed when parsing from
            // string literals)
            case '\0':
            case std::char_traits<char>::eof():
                return token_type::end_of_input;

            // error
            default:
                error_message = "invalid literal";
                return token_type::parse_error;
        }
    }

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
cmpq $0x0, 0x18(%rdi)
jne 0xf2a2
movq %rbx, %rdi
callq 0xf3e4
testb %al, %al
je 0xf331
leaq 0x2cf1f(%rip), %r14     # 0x3c1c8
movq %rbx, %rdi
callq 0x57f0
movl 0x10(%rbx), %eax
cmpl $0x1f, %eax
jle 0xf2cf
cmpl $0x5a, %eax
jg 0xf300
addl $-0x20, %eax
cmpl $0x1a, %eax
ja 0xf2e8
movslq (%r14,%rax,4), %rax
addq %r14, %rax
jmpq *%rax
leal -0x9(%rax), %ecx
cmpl $0x2, %ecx
jb 0xf2a9
leal 0x1(%rax), %ecx
cmpl $0x2, %ecx
jb 0xf384
cmpl $0xd, %eax
je 0xf2a9
leaq 0x2e365(%rip), %rax     # 0x3d654
jmp 0xf338
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0xf90c
cmpl $0x6d, %eax
jle 0xf346
cmpl $0x7a, %eax
jg 0xf36f
cmpl $0x6e, %eax
je 0xf3a8
cmpl $0x74, %eax
jne 0xf2e8
leaq 0x2d5f9(%rip), %rsi     # 0x3c918
movl $0x4, %edx
movq %rbx, %rdi
movl $0x1, %ecx
jmp 0xf3bc
leaq 0x2e2ef(%rip), %rax     # 0x3d627
movq %rax, 0x68(%rbx)
movl $0xe, %eax
jmp 0xf3db
cmpl $0x5b, %eax
je 0xf3d6
cmpl $0x5d, %eax
je 0xf3cf
cmpl $0x66, %eax
jne 0xf2e8
leaq 0x2d5bd(%rip), %rsi     # 0x3c91d
movl $0x5, %edx
movq %rbx, %rdi
movl $0x2, %ecx
jmp 0xf3bc
cmpl $0x7b, %eax
je 0xf3c8
cmpl $0x7d, %eax
jne 0xf2e8
movl $0xb, %eax
jmp 0xf3db
movl $0xf, %eax
jmp 0xf3db
movl $0xc, %eax
jmp 0xf3db
movl $0xd, %eax
jmp 0xf3db
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0xf4a4
leaq 0x2d580(%rip), %rsi     # 0x3c92f
movl $0x4, %edx
movq %rbx, %rdi
movl $0x3, %ecx
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0xf426
movl $0x9, %eax
jmp 0xf3db
movl $0xa, %eax
jmp 0xf3db
movl $0x8, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
nop