// File: /workspace/github_cpp_makefile_star2_O1/rksdna[P]json/./json.hpp
// Function: json::basic_reader<char, std::char_traits<char>, std::allocator<char>>::token(json::basic_reader<char, std::char_traits<char>, std::allocator<char>>::token)
inline void token(token input)
    {
        if (m_token_state.empty())
        {
            if (input == object_begin_token)
                return call(json::item::object_begin), push(object_1_state);

            if (input == array_begin_token)
                return call(json::item::array_begin), push(array_1_state);

            throw json::exception("\"{\" or \"[\" expected", m_row, m_column);
        }

        switch (m_token_state.top())
        {
        case object_1_state:
            if (input == object_end_token)
                return call(json::item::object_end), pop();

        case object_2_state:
            if (input == string_token)
                return call(json::item::key), jump(object_3_state);

            throw json::exception("key or \"}\" expected", m_row, m_column);

        case object_3_state:
            if (input == colon_token)
                return jump(object_v_state);

            throw json::exception("\":\" expected", m_row, m_column);

        case object_v_state:
            jump(object_n_state);

            if (input == object_begin_token)
                return call(json::item::object_begin), push(object_1_state);

            if (input == array_begin_token)
                return call(json::item::array_begin), push(array_1_state);

            if (input == string_token)
                return call(json::item::string_value);

            if (input == integer_token)
                return call(json::item::integer_value);

            if (input == real_token)
                return call(json::item::real_value);

            if (input == null_token)
                return call(json::item::null_value);

            if (input == true_token)
                return call(json::item::true_value);

            if (input == false_token)
                return call(json::item::false_value);

            throw json::exception("value expected", m_row, m_column);

        case object_n_state:
            if (input == object_end_token)
                return call(json::item::object_end), pop();

            if (input == comma_token)
                return jump(object_2_state);

            throw json::exception("\"}\" or \",\" expected", m_row, m_column);

        case array_1_state:
            if (input == array_end_token)
                return call(json::item::array_end), pop();

        case array_v_state:
            jump(array_n_state);

            if (input == object_begin_token)
                return call(json::item::object_begin), push(object_1_state);

            if (input == array_begin_token)
                return call(json::item::array_begin), push(array_1_state);

            if (input == string_token)
                return call(json::item::string_value);

            if (input == integer_token)
                return call(json::item::integer_value);

            if (input == real_token)
                return call(json::item::real_value);

            if (input == null_token)
                return call(json::item::null_value);

            if (input == true_token)
                return call(json::item::true_value);

            if (input == false_token)
                return call(json::item::false_value);

            throw json::exception("value or \"]\" expected", m_row, m_column);

        case array_n_state:
            if (input == array_end_token)
                return call(json::item::array_end), pop();

            if (input == comma_token)
                return jump(array_v_state);

            throw json::exception("\"]\" or \",\" expected", m_row, m_column);
        }

        throw std::bad_exception();
    }

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x20(%rdi), %r14
movq 0x50(%rdi), %rax
cmpq 0x30(%rdi), %rax
je 0x4bae
cmpq 0x58(%rbx), %rax
jne 0x4b7e
movq 0x68(%rbx), %rcx
movl $0x200, %eax            # imm = 0x200
addq -0x8(%rcx), %rax
movl -0x4(%rax), %eax
cmpq $0x7, %rax
ja 0x4fcd
leaq 0x15a6(%rip), %rcx      # 0x6138
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
cmpl $0x6, %esi
je 0x4d20
cmpl $0x1, %esi
je 0x4c27
jmp 0x4f9e
cmpl $0x2, %esi
je 0x4df2
testl %esi, %esi
jne 0x4f6f
leaq 0x78(%rbx), %rdx
movq 0x98(%rbx), %rcx
movq 0xa0(%rbx), %r8
movq %rbx, %rdi
xorl %esi, %esi
callq 0x50b2
movq $0x0, 0x80(%rbx)
movq 0x78(%rbx), %rax
movb $0x0, (%rax)
movl $0x0, 0x4(%rsp)
movq 0x50(%rbx), %rax
movq 0x60(%rbx), %rcx
addq $-0x4, %rcx
cmpq %rcx, %rax
je 0x4e4f
movl $0x0, (%rax)
jmp 0x4e42
cmpl $0x5, %esi
je 0x4e61
cmpl $0x1, %esi
jne 0x5027
leaq 0x78(%rbx), %rdx
movq 0x98(%rbx), %rcx
movq 0xa0(%rbx), %r8
movq %rbx, %rdi
movl $0x1, %esi
jmp 0x4d93
cmpl $0x4, %esi
jne 0x4ffb
movq 0x50(%rbx), %rax
cmpq 0x58(%rbx), %rax
jne 0x4c66
movq 0x68(%rbx), %rcx
movl $0x200, %eax            # imm = 0x200
addq -0x8(%rcx), %rax
movl $0x3, -0x4(%rax)
jmp 0x4f67
movq 0x50(%rbx), %rax
cmpq 0x58(%rbx), %rax
jne 0x4c89
movq 0x68(%rbx), %rcx
movl $0x200, %eax            # imm = 0x200
addq -0x8(%rcx), %rax
movl $0x4, -0x4(%rax)
cmpl $0xb, %esi
ja 0x4ca7
movl %esi, %eax
leaq 0x14ea(%rip), %rcx      # 0x6188
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0x20, %edi
callq 0x20c0
movq %rax, %r14
movq 0x98(%rbx), %rdx
movq 0xa0(%rbx), %rcx
leaq 0x1576(%rip), %rsi      # 0x623f
movq %rax, %rdi
callq 0x3b0e
jmp 0x507d
cmpl $0x5, %esi
je 0x4e84
cmpl $0x3, %esi
je 0x4d79
movl $0x20, %edi
callq 0x20c0
movq %rax, %r14
movq 0x98(%rbx), %rdx
movq 0xa0(%rbx), %rcx
leaq 0x1612(%rip), %rsi      # 0x631c
movq %rax, %rdi
callq 0x3b0e
jmp 0x507d
cmpl $0x6, %esi
jne 0x4f9e
leaq 0x78(%rbx), %rdx
movq 0x98(%rbx), %rcx
movq 0xa0(%rbx), %r8
movq %rbx, %rdi
movl $0x4, %esi
callq 0x50b2
movq $0x0, 0x80(%rbx)
movq 0x78(%rbx), %rax
movb $0x0, (%rax)
movq 0x50(%rbx), %rax
cmpq 0x58(%rbx), %rax
jne 0x4d68
movq 0x68(%rbx), %rcx
movl $0x200, %eax            # imm = 0x200
addq -0x8(%rcx), %rax
movl $0x2, -0x4(%rax)
jmp 0x4f67
cmpl $0x3, %esi
jne 0x4db9
leaq 0x78(%rbx), %rdx
movq 0x98(%rbx), %rcx
movq 0xa0(%rbx), %r8
movq %rbx, %rdi
movl $0x3, %esi
callq 0x50b2
movq $0x0, 0x80(%rbx)
movq 0x78(%rbx), %rax
movb $0x0, (%rax)
movq %r14, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x52fc
movq 0x50(%rbx), %rax
cmpq 0x58(%rbx), %rax
jne 0x4dd0
movq 0x68(%rbx), %rcx
movl $0x200, %eax            # imm = 0x200
addq -0x8(%rcx), %rax
movl $0x7, -0x4(%rax)
cmpl $0xb, %esi
ja 0x5053
movl %esi, %eax
leaq 0x136f(%rip), %rcx      # 0x6158
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x78(%rbx), %rdx
movq 0x98(%rbx), %rcx
movq 0xa0(%rbx), %r8
movq %rbx, %rdi
movl $0x2, %esi
callq 0x50b2
movq $0x0, 0x80(%rbx)
movq 0x78(%rbx), %rax
movb $0x0, (%rax)
movl $0x5, 0x4(%rsp)
movq 0x50(%rbx), %rax
movq 0x60(%rbx), %rcx
addq $-0x4, %rcx
cmpq %rcx, %rax
je 0x4e4f
movl $0x5, (%rax)
addq $0x4, %rax
movq %rax, 0x50(%rbx)
jmp 0x4f67
leaq 0x4(%rsp), %rsi
movq %r14, %rdi
callq 0x50e8
jmp 0x4f67
movq 0x50(%rbx), %rax
cmpq 0x58(%rbx), %rax
jne 0x4e78
movq 0x68(%rbx), %rcx
movl $0x200, %eax            # imm = 0x200
addq -0x8(%rcx), %rax
movl $0x1, -0x4(%rax)
jmp 0x4f67
movq 0x50(%rbx), %rax
cmpq 0x58(%rbx), %rax
jne 0x4e9b
movq 0x68(%rbx), %rcx
movl $0x200, %eax            # imm = 0x200
addq -0x8(%rcx), %rax
movl $0x6, -0x4(%rax)
jmp 0x4f67
leaq 0x78(%rbx), %rdx
movq 0x98(%rbx), %rcx
movq 0xa0(%rbx), %r8
movq %rbx, %rdi
movl $0x7, %esi
jmp 0x4f50
leaq 0x78(%rbx), %rdx
movq 0x98(%rbx), %rcx
movq 0xa0(%rbx), %r8
movq %rbx, %rdi
movl $0x5, %esi
jmp 0x4f50
leaq 0x78(%rbx), %rdx
movq 0x98(%rbx), %rcx
movq 0xa0(%rbx), %r8
movq %rbx, %rdi
movl $0x6, %esi
jmp 0x4f50
leaq 0x78(%rbx), %rdx
movq 0x98(%rbx), %rcx
movq 0xa0(%rbx), %r8
movq %rbx, %rdi
movl $0xa, %esi
jmp 0x4f50
leaq 0x78(%rbx), %rdx
movq 0x98(%rbx), %rcx
movq 0xa0(%rbx), %r8
movq %rbx, %rdi
movl $0x8, %esi
jmp 0x4f50
leaq 0x78(%rbx), %rdx
movq 0x98(%rbx), %rcx
movq 0xa0(%rbx), %r8
movq %rbx, %rdi
movl $0x9, %esi
callq 0x50b2
movq $0x0, 0x80(%rbx)
movq 0x78(%rbx), %rax
movb $0x0, (%rax)
addq $0x8, %rsp
popq %rbx
popq %r14
retq
movl $0x20, %edi
callq 0x20c0
movq %rax, %r14
movq 0x98(%rbx), %rdx
movq 0xa0(%rbx), %rcx
leaq 0x132c(%rip), %rsi      # 0x62bd
movq %rax, %rdi
callq 0x3b0e
jmp 0x507d
movl $0x20, %edi
callq 0x20c0
movq %rax, %r14
movq 0x98(%rbx), %rdx
movq 0xa0(%rbx), %rcx
leaq 0x1311(%rip), %rsi      # 0x62d1
movq %rax, %rdi
callq 0x3b0e
jmp 0x507d
movl $0x8, %edi
callq 0x20c0
movq 0x3fd2(%rip), %rcx      # 0x8fb0
addq $0x10, %rcx
movq %rcx, (%rax)
movq 0x3fd4(%rip), %rsi      # 0x8fc0
movq 0x3fb5(%rip), %rdx      # 0x8fa8
movq %rax, %rdi
callq 0x2210
movl $0x20, %edi
callq 0x20c0
movq %rax, %r14
movq 0x98(%rbx), %rdx
movq 0xa0(%rbx), %rcx
leaq 0x12c8(%rip), %rsi      # 0x62e5
movq %rax, %rdi
callq 0x3b0e
jmp 0x507d
movl $0x20, %edi
callq 0x20c0
movq %rax, %r14
movq 0x98(%rbx), %rdx
movq 0xa0(%rbx), %rcx
leaq 0x12a9(%rip), %rsi      # 0x62f2
movq %rax, %rdi
callq 0x3b0e
jmp 0x507d
movl $0x20, %edi
callq 0x20c0
movq %rax, %r14
movq 0x98(%rbx), %rdx
movq 0xa0(%rbx), %rcx
leaq 0x1291(%rip), %rsi      # 0x6306
movq %rax, %rdi
callq 0x3b0e
leaq 0x3cb4(%rip), %rsi      # 0x8d38
movq 0x3f4d(%rip), %rdx      # 0x8fd8
movq %r14, %rdi
callq 0x2210
jmp 0x509f
jmp 0x509f
jmp 0x509f
jmp 0x509f
jmp 0x509f
jmp 0x509f
movq %rax, %rbx
movq %r14, %rdi
callq 0x2110
movq %rbx, %rdi
callq 0x2220