// File: /workspace/github_cpp_makefile_star2_O2/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
movq 0x50(%rdi), %rax
cmpq 0x30(%rdi), %rax
je 0x4420
movq 0x58(%rbx), %rcx
movq %rax, %rdx
cmpq %rcx, %rax
jne 0x43ec
movq 0x68(%rbx), %rdi
movl $0x200, %edx            # imm = 0x200
addq -0x8(%rdi), %rdx
movl -0x4(%rdx), %edx
cmpq $0x7, %rdx
ja 0x4680
leaq 0x20(%rbx), %r14
leaq 0x1d34(%rip), %rdi      # 0x6138
movslq (%rdi,%rdx,4), %rdx
addq %rdi, %rdx
jmpq *%rdx
cmpl $0x6, %esi
je 0x4526
cmpl $0x1, %esi
je 0x4457
jmp 0x4653
cmpl $0x2, %esi
je 0x45a7
testl %esi, %esi
jne 0x4626
movq %rbx, %rdi
xorl %esi, %esi
callq 0x484a
movq %rbx, %rdi
xorl %esi, %esi
jmp 0x45b8
cmpl $0x5, %esi
je 0x45c4
cmpl $0x1, %esi
jne 0x46d6
pushq $0x1
jmp 0x455b
cmpl $0x4, %esi
jne 0x46ac
cmpq %rcx, %rax
jne 0x4479
movq 0x68(%rbx), %rcx
movl $0x200, %eax            # imm = 0x200
addq -0x8(%rcx), %rax
movl $0x3, -0x4(%rax)
jmp 0x45f8
cmpq %rcx, %rax
jne 0x4497
movq 0x68(%rbx), %rcx
movl $0x200, %eax            # imm = 0x200
addq -0x8(%rcx), %rax
movl $0x4, -0x4(%rax)
cmpl $0xb, %esi
ja 0x44b5
movl %esi, %eax
leaq 0x1cdc(%rip), %rcx      # 0x6188
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
pushq $0x20
popq %rdi
callq 0x20b0
movq %rax, %r14
movq 0x98(%rbx), %rdx
movq 0xa0(%rbx), %rcx
leaq 0x1d6a(%rip), %rsi      # 0x623f
movq %rax, %rdi
callq 0x33ec
jmp 0x4728
cmpl $0x5, %esi
je 0x45df
cmpl $0x3, %esi
je 0x4559
pushq $0x20
popq %rdi
callq 0x20b0
movq %rax, %r14
movq 0x98(%rbx), %rdx
movq 0xa0(%rbx), %rcx
leaq 0x1de2(%rip), %rsi      # 0x62f2
movq %rax, %rdi
callq 0x33ec
jmp 0x4728
cmpl $0x6, %esi
jne 0x4653
pushq $0x4
popq %rsi
movq %rbx, %rdi
callq 0x484a
movq 0x50(%rbx), %rax
cmpq 0x58(%rbx), %rax
jne 0x4548
movq 0x68(%rbx), %rcx
movl $0x200, %eax            # imm = 0x200
addq -0x8(%rcx), %rax
movl $0x2, -0x4(%rax)
jmp 0x45f8
cmpl $0x3, %esi
jne 0x4573
pushq $0x3
popq %rsi
movq %rbx, %rdi
callq 0x484a
movq %r14, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x4af6
cmpq %rcx, %rax
jne 0x4585
movq 0x68(%rbx), %rcx
movl $0x200, %eax            # imm = 0x200
addq -0x8(%rcx), %rax
movl $0x7, -0x4(%rax)
cmpl $0xb, %esi
ja 0x4700
movl %esi, %eax
leaq 0x1bba(%rip), %rcx      # 0x6158
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
pushq $0x2
popq %rsi
movq %rbx, %rdi
callq 0x484a
pushq $0x5
popq %rsi
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x4876
cmpq %rcx, %rax
jne 0x45d6
movq 0x68(%rbx), %rcx
movl $0x200, %eax            # imm = 0x200
addq -0x8(%rcx), %rax
movl $0x1, -0x4(%rax)
jmp 0x45f8
cmpq %rcx, %rax
jne 0x45f1
movq 0x68(%rbx), %rcx
movl $0x200, %eax            # imm = 0x200
addq -0x8(%rcx), %rax
movl $0x6, -0x4(%rax)
addq $0x8, %rsp
popq %rbx
popq %r14
retq
pushq $0x7
jmp 0x4616
pushq $0x5
jmp 0x4616
pushq $0x6
jmp 0x4616
pushq $0xa
jmp 0x4616
pushq $0x8
jmp 0x4616
pushq $0x9
popq %rsi
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x484a
pushq $0x20
popq %rdi
callq 0x20b0
movq %rax, %r14
movq 0x98(%rbx), %rdx
movq 0xa0(%rbx), %rcx
leaq 0x1c4d(%rip), %rsi      # 0x6293
movq %rax, %rdi
callq 0x33ec
jmp 0x4728
pushq $0x20
popq %rdi
callq 0x20b0
movq %rax, %r14
movq 0x98(%rbx), %rdx
movq 0xa0(%rbx), %rcx
leaq 0x1c34(%rip), %rsi      # 0x62a7
movq %rax, %rdi
callq 0x33ec
jmp 0x4728
pushq $0x8
popq %rdi
callq 0x20b0
movq 0x4921(%rip), %rcx      # 0x8fb0
addq $0x10, %rcx
movq %rcx, (%rax)
movq 0x4923(%rip), %rsi      # 0x8fc0
movq 0x4904(%rip), %rdx      # 0x8fa8
movq %rax, %rdi
callq 0x2200
pushq $0x20
popq %rdi
callq 0x20b0
movq %rax, %r14
movq 0x98(%rbx), %rdx
movq 0xa0(%rbx), %rcx
leaq 0x1bef(%rip), %rsi      # 0x62bb
movq %rax, %rdi
callq 0x33ec
jmp 0x4728
pushq $0x20
popq %rdi
callq 0x20b0
movq %rax, %r14
movq 0x98(%rbx), %rdx
movq 0xa0(%rbx), %rcx
leaq 0x1bd2(%rip), %rsi      # 0x62c8
movq %rax, %rdi
callq 0x33ec
jmp 0x4728
pushq $0x20
popq %rdi
callq 0x20b0
movq %rax, %r14
movq 0x98(%rbx), %rdx
movq 0xa0(%rbx), %rcx
leaq 0x1bbc(%rip), %rsi      # 0x62dc
movq %rax, %rdi
callq 0x33ec
leaq 0x4609(%rip), %rsi      # 0x8d38
movq 0x48a2(%rip), %rdx      # 0x8fd8
movq %r14, %rdi
callq 0x2200
jmp 0x474a
jmp 0x474a
jmp 0x474a
jmp 0x474a
jmp 0x474a
jmp 0x474a
movq %rax, %rbx
movq %r14, %rdi
callq 0x20f0
movq %rbx, %rdi
callq 0x2210
nop