// File: /workspace/github_cpp_makefile_star2_O3/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 0x4c6a
movq 0x58(%rbx), %rcx
movq %rax, %rdx
cmpq %rcx, %rax
jne 0x4c3a
movq 0x68(%rbx), %rdi
movl $0x200, %edx            # imm = 0x200
addq -0x8(%rdi), %rdx
movl -0x4(%rdx), %edx
cmpq $0x7, %rdx
ja 0x5070
leaq 0x14ea(%rip), %rdi      # 0x6138
movslq (%rdi,%rdx,4), %rdx
addq %rdi, %rdx
jmpq *%rdx
cmpl $0x6, %esi
je 0x4dd2
cmpl $0x1, %esi
je 0x4ce3
jmp 0x5041
cmpl $0x2, %esi
je 0x4e9f
testl %esi, %esi
jne 0x5012
leaq 0x78(%rbx), %rdx
movq 0x98(%rbx), %rcx
movq 0xa0(%rbx), %r8
movq %rbx, %rdi
xorl %esi, %esi
callq 0x5156
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 0x4efc
movl $0x0, (%rax)
jmp 0x4eef
cmpl $0x5, %esi
je 0x4f0e
cmpl $0x1, %esi
jne 0x50ca
leaq 0x78(%rbx), %rdx
movq 0x98(%rbx), %rcx
movq 0xa0(%rbx), %r8
movq %rbx, %rdi
movl $0x1, %esi
jmp 0x4e45
cmpl $0x4, %esi
jne 0x509e
cmpq %rcx, %rax
jne 0x4d1d
movq 0x68(%rbx), %rcx
movl $0x200, %eax            # imm = 0x200
addq -0x8(%rcx), %rax
movl $0x3, -0x4(%rax)
jmp 0x500a
cmpq %rcx, %rax
jne 0x4d3b
movq 0x68(%rbx), %rcx
movl $0x200, %eax            # imm = 0x200
addq -0x8(%rcx), %rax
movl $0x4, -0x4(%rax)
cmpl $0xb, %esi
ja 0x4d59
movl %esi, %eax
leaq 0x1438(%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 0x14c4(%rip), %rsi      # 0x623f
movq %rax, %rdi
callq 0x3bbe
jmp 0x5120
cmpl $0x5, %esi
je 0x4f2c
cmpl $0x3, %esi
je 0x4e2b
movl $0x20, %edi
callq 0x20c0
movq %rax, %r14
movq 0x98(%rbx), %rdx
movq 0xa0(%rbx), %rcx
leaq 0x1560(%rip), %rsi      # 0x631c
movq %rax, %rdi
callq 0x3bbe
jmp 0x5120
cmpl $0x6, %esi
jne 0x5041
leaq 0x78(%rbx), %rdx
movq 0x98(%rbx), %rcx
movq 0xa0(%rbx), %r8
movq %rbx, %rdi
movl $0x4, %esi
callq 0x5156
movq $0x0, 0x80(%rbx)
movq 0x78(%rbx), %rax
movb $0x0, (%rax)
movq 0x50(%rbx), %rax
cmpq 0x58(%rbx), %rax
jne 0x4e1a
movq 0x68(%rbx), %rcx
movl $0x200, %eax            # imm = 0x200
addq -0x8(%rcx), %rax
movl $0x2, -0x4(%rax)
jmp 0x500a
cmpl $0x3, %esi
jne 0x4e6b
leaq 0x78(%rbx), %rdx
movq 0x98(%rbx), %rcx
movq 0xa0(%rbx), %r8
movq %rbx, %rdi
movl $0x3, %esi
callq 0x5156
movq $0x0, 0x80(%rbx)
movq 0x78(%rbx), %rax
movb $0x0, (%rax)
movq %r14, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x53a0
cmpq %rcx, %rax
jne 0x4e7d
movq 0x68(%rbx), %rcx
movl $0x200, %eax            # imm = 0x200
addq -0x8(%rcx), %rax
movl $0x7, -0x4(%rax)
cmpl $0xb, %esi
ja 0x50f6
movl %esi, %eax
leaq 0x12c2(%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 0x5156
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 0x4efc
movl $0x5, (%rax)
addq $0x4, %rax
movq %rax, 0x50(%rbx)
jmp 0x500a
leaq 0x4(%rsp), %rsi
movq %r14, %rdi
callq 0x518c
jmp 0x500a
cmpq %rcx, %rax
jne 0x4f20
movq 0x68(%rbx), %rcx
movl $0x200, %eax            # imm = 0x200
addq -0x8(%rcx), %rax
movl $0x1, -0x4(%rax)
jmp 0x500a
cmpq %rcx, %rax
jne 0x4f3e
movq 0x68(%rbx), %rcx
movl $0x200, %eax            # imm = 0x200
addq -0x8(%rcx), %rax
movl $0x6, -0x4(%rax)
jmp 0x500a
leaq 0x78(%rbx), %rdx
movq 0x98(%rbx), %rcx
movq 0xa0(%rbx), %r8
movq %rbx, %rdi
movl $0x7, %esi
jmp 0x4ff3
leaq 0x78(%rbx), %rdx
movq 0x98(%rbx), %rcx
movq 0xa0(%rbx), %r8
movq %rbx, %rdi
movl $0x5, %esi
jmp 0x4ff3
leaq 0x78(%rbx), %rdx
movq 0x98(%rbx), %rcx
movq 0xa0(%rbx), %r8
movq %rbx, %rdi
movl $0x6, %esi
jmp 0x4ff3
leaq 0x78(%rbx), %rdx
movq 0x98(%rbx), %rcx
movq 0xa0(%rbx), %r8
movq %rbx, %rdi
movl $0xa, %esi
jmp 0x4ff3
leaq 0x78(%rbx), %rdx
movq 0x98(%rbx), %rcx
movq 0xa0(%rbx), %r8
movq %rbx, %rdi
movl $0x8, %esi
jmp 0x4ff3
leaq 0x78(%rbx), %rdx
movq 0x98(%rbx), %rcx
movq 0xa0(%rbx), %r8
movq %rbx, %rdi
movl $0x9, %esi
callq 0x5156
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 0x1289(%rip), %rsi      # 0x62bd
movq %rax, %rdi
callq 0x3bbe
jmp 0x5120
movl $0x20, %edi
callq 0x20c0
movq %rax, %r14
movq 0x98(%rbx), %rdx
movq 0xa0(%rbx), %rcx
leaq 0x126e(%rip), %rsi      # 0x62d1
movq %rax, %rdi
callq 0x3bbe
jmp 0x5120
movl $0x8, %edi
callq 0x20c0
movq 0x3f2f(%rip), %rcx      # 0x8fb0
addq $0x10, %rcx
movq %rcx, (%rax)
movq 0x3f31(%rip), %rsi      # 0x8fc0
movq 0x3f12(%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 0x1225(%rip), %rsi      # 0x62e5
movq %rax, %rdi
callq 0x3bbe
jmp 0x5120
movl $0x20, %edi
callq 0x20c0
movq %rax, %r14
movq 0x98(%rbx), %rdx
movq 0xa0(%rbx), %rcx
leaq 0x1206(%rip), %rsi      # 0x62f2
movq %rax, %rdi
callq 0x3bbe
jmp 0x5120
movl $0x20, %edi
callq 0x20c0
movq %rax, %r14
movq 0x98(%rbx), %rdx
movq 0xa0(%rbx), %rcx
leaq 0x11ee(%rip), %rsi      # 0x6306
movq %rax, %rdi
callq 0x3bbe
leaq 0x3c11(%rip), %rsi      # 0x8d38
movq 0x3eaa(%rip), %rdx      # 0x8fd8
movq %r14, %rdi
callq 0x2210
jmp 0x5142
jmp 0x5142
jmp 0x5142
jmp 0x5142
jmp 0x5142
jmp 0x5142
movq %rax, %rbx
movq %r14, %rdi
callq 0x2110
movq %rbx, %rdi
callq 0x2220
nop