// File: 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 %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x28(%rbp)
addq $0x20, %rdi
callq 0x8b90
testb $0x1, %al
jne 0x82e9
jmp 0x8396
cmpl $0x0, -0xc(%rbp)
jne 0x830a
movq -0x28(%rbp), %rdi
xorl %esi, %esi
callq 0x8bb0
movq -0x28(%rbp), %rdi
xorl %esi, %esi
callq 0x8c00
jmp 0x8925
cmpl $0x2, -0xc(%rbp)
jne 0x8331
movq -0x28(%rbp), %rdi
movl $0x2, %esi
callq 0x8bb0
movq -0x28(%rbp), %rdi
movl $0x5, %esi
callq 0x8c00
jmp 0x8925
movl $0x20, %edi
callq 0x20d0
movq %rax, %rdi
movq -0x28(%rbp), %rax
movq %rdi, %rcx
movq %rcx, -0x30(%rbp)
movq 0x98(%rax), %rdx
movq 0xa0(%rax), %rcx
leaq 0x2e35(%rip), %rsi      # 0xb193
callq 0x5550
jmp 0x8365
movq -0x30(%rbp), %rdi
leaq 0x79c0(%rip), %rsi      # 0xfd30
leaq -0x2dc7(%rip), %rdx     # 0x55b0
callq 0x22a0
movq -0x30(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x2130
jmp 0x892b
movq -0x28(%rbp), %rdi
addq $0x20, %rdi
callq 0x8c30
movl (%rax), %eax
movq %rax, -0x38(%rbp)
subq $0x7, %rax
ja 0x88f8
movq -0x38(%rbp), %rax
leaq 0x2cda(%rip), %rcx      # 0xb098
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
cmpl $0x1, -0xc(%rbp)
jne 0x83e9
movq -0x28(%rbp), %rdi
movl $0x1, %esi
callq 0x8bb0
movq -0x28(%rbp), %rdi
callq 0x8c50
jmp 0x8925
jmp 0x83eb
cmpl $0x6, -0xc(%rbp)
jne 0x8412
movq -0x28(%rbp), %rdi
movl $0x4, %esi
callq 0x8bb0
movq -0x28(%rbp), %rdi
movl $0x2, %esi
callq 0x8c70
jmp 0x8925
movl $0x20, %edi
callq 0x20d0
movq %rax, %rdi
movq -0x28(%rbp), %rax
movq %rdi, %rcx
movq %rcx, -0x40(%rbp)
movq 0x98(%rax), %rdx
movq 0xa0(%rax), %rcx
leaq 0x2d68(%rip), %rsi      # 0xb1a7
callq 0x5550
jmp 0x8446
movq -0x40(%rbp), %rdi
leaq 0x78df(%rip), %rsi      # 0xfd30
leaq -0x2ea8(%rip), %rdx     # 0x55b0
callq 0x22a0
movq -0x40(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x2130
jmp 0x892b
cmpl $0x4, -0xc(%rbp)
jne 0x8490
movq -0x28(%rbp), %rdi
movl $0x3, %esi
callq 0x8c70
jmp 0x8925
movl $0x20, %edi
callq 0x20d0
movq %rax, %rdi
movq -0x28(%rbp), %rax
movq %rdi, %rcx
movq %rcx, -0x48(%rbp)
movq 0x98(%rax), %rdx
movq 0xa0(%rax), %rcx
leaq 0x2cfe(%rip), %rsi      # 0xb1bb
callq 0x5550
jmp 0x84c4
movq -0x48(%rbp), %rdi
leaq 0x7861(%rip), %rsi      # 0xfd30
leaq -0x2f26(%rip), %rdx     # 0x55b0
callq 0x22a0
movq -0x48(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x2130
jmp 0x892b
movq -0x28(%rbp), %rdi
movl $0x4, %esi
callq 0x8c70
cmpl $0x0, -0xc(%rbp)
jne 0x8524
movq -0x28(%rbp), %rdi
xorl %esi, %esi
callq 0x8bb0
movq -0x28(%rbp), %rdi
xorl %esi, %esi
callq 0x8c00
jmp 0x8925
cmpl $0x2, -0xc(%rbp)
jne 0x854b
movq -0x28(%rbp), %rdi
movl $0x2, %esi
callq 0x8bb0
movq -0x28(%rbp), %rdi
movl $0x5, %esi
callq 0x8c00
jmp 0x8925
cmpl $0x6, -0xc(%rbp)
jne 0x8564
movq -0x28(%rbp), %rdi
movl $0x5, %esi
callq 0x8bb0
jmp 0x8925
cmpl $0x7, -0xc(%rbp)
jne 0x857d
movq -0x28(%rbp), %rdi
movl $0x6, %esi
callq 0x8bb0
jmp 0x8925
cmpl $0x8, -0xc(%rbp)
jne 0x8596
movq -0x28(%rbp), %rdi
movl $0x7, %esi
callq 0x8bb0
jmp 0x8925
cmpl $0x9, -0xc(%rbp)
jne 0x85af
movq -0x28(%rbp), %rdi
movl $0x8, %esi
callq 0x8bb0
jmp 0x8925
cmpl $0xa, -0xc(%rbp)
jne 0x85c8
movq -0x28(%rbp), %rdi
movl $0x9, %esi
callq 0x8bb0
jmp 0x8925
cmpl $0xb, -0xc(%rbp)
jne 0x85e1
movq -0x28(%rbp), %rdi
movl $0xa, %esi
callq 0x8bb0
jmp 0x8925
movl $0x20, %edi
callq 0x20d0
movq %rax, %rdi
movq -0x28(%rbp), %rax
movq %rdi, %rcx
movq %rcx, -0x50(%rbp)
movq 0x98(%rax), %rdx
movq 0xa0(%rax), %rcx
leaq 0x2b31(%rip), %rsi      # 0xb13f
callq 0x5550
jmp 0x8615
movq -0x50(%rbp), %rdi
leaq 0x7710(%rip), %rsi      # 0xfd30
leaq -0x3077(%rip), %rdx     # 0x55b0
callq 0x22a0
movq -0x50(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x2130
jmp 0x892b
cmpl $0x1, -0xc(%rbp)
jne 0x8668
movq -0x28(%rbp), %rdi
movl $0x1, %esi
callq 0x8bb0
movq -0x28(%rbp), %rdi
callq 0x8c50
jmp 0x8925
cmpl $0x5, -0xc(%rbp)
jne 0x8681
movq -0x28(%rbp), %rdi
movl $0x1, %esi
callq 0x8c70
jmp 0x8925
movl $0x20, %edi
callq 0x20d0
movq %rax, %rdi
movq -0x28(%rbp), %rax
movq %rdi, %rcx
movq %rcx, -0x58(%rbp)
movq 0x98(%rax), %rdx
movq 0xa0(%rax), %rcx
leaq 0x2b1a(%rip), %rsi      # 0xb1c8
callq 0x5550
jmp 0x86b5
movq -0x58(%rbp), %rdi
leaq 0x7670(%rip), %rsi      # 0xfd30
leaq -0x3117(%rip), %rdx     # 0x55b0
callq 0x22a0
movq -0x58(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x2130
jmp 0x892b
cmpl $0x3, -0xc(%rbp)
jne 0x8708
movq -0x28(%rbp), %rdi
movl $0x3, %esi
callq 0x8bb0
movq -0x28(%rbp), %rdi
callq 0x8c50
jmp 0x8925
jmp 0x870a
movq -0x28(%rbp), %rdi
movl $0x7, %esi
callq 0x8c70
cmpl $0x0, -0xc(%rbp)
jne 0x8739
movq -0x28(%rbp), %rdi
xorl %esi, %esi
callq 0x8bb0
movq -0x28(%rbp), %rdi
xorl %esi, %esi
callq 0x8c00
jmp 0x8925
cmpl $0x2, -0xc(%rbp)
jne 0x8760
movq -0x28(%rbp), %rdi
movl $0x2, %esi
callq 0x8bb0
movq -0x28(%rbp), %rdi
movl $0x5, %esi
callq 0x8c00
jmp 0x8925
cmpl $0x6, -0xc(%rbp)
jne 0x8779
movq -0x28(%rbp), %rdi
movl $0x5, %esi
callq 0x8bb0
jmp 0x8925
cmpl $0x7, -0xc(%rbp)
jne 0x8792
movq -0x28(%rbp), %rdi
movl $0x6, %esi
callq 0x8bb0
jmp 0x8925
cmpl $0x8, -0xc(%rbp)
jne 0x87ab
movq -0x28(%rbp), %rdi
movl $0x7, %esi
callq 0x8bb0
jmp 0x8925
cmpl $0x9, -0xc(%rbp)
jne 0x87c4
movq -0x28(%rbp), %rdi
movl $0x8, %esi
callq 0x8bb0
jmp 0x8925
cmpl $0xa, -0xc(%rbp)
jne 0x87dd
movq -0x28(%rbp), %rdi
movl $0x9, %esi
callq 0x8bb0
jmp 0x8925
cmpl $0xb, -0xc(%rbp)
jne 0x87f6
movq -0x28(%rbp), %rdi
movl $0xa, %esi
callq 0x8bb0
jmp 0x8925
movl $0x20, %edi
callq 0x20d0
movq %rax, %rdi
movq -0x28(%rbp), %rax
movq %rdi, %rcx
movq %rcx, -0x60(%rbp)
movq 0x98(%rax), %rdx
movq 0xa0(%rax), %rcx
leaq 0x29b9(%rip), %rsi      # 0xb1dc
callq 0x5550
jmp 0x882a
movq -0x60(%rbp), %rdi
leaq 0x74fb(%rip), %rsi      # 0xfd30
leaq -0x328c(%rip), %rdx     # 0x55b0
callq 0x22a0
movq -0x60(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x2130
jmp 0x892b
cmpl $0x3, -0xc(%rbp)
jne 0x887d
movq -0x28(%rbp), %rdi
movl $0x3, %esi
callq 0x8bb0
movq -0x28(%rbp), %rdi
callq 0x8c50
jmp 0x8925
cmpl $0x5, -0xc(%rbp)
jne 0x8896
movq -0x28(%rbp), %rdi
movl $0x6, %esi
callq 0x8c70
jmp 0x8925
movl $0x20, %edi
callq 0x20d0
movq %rax, %rdi
movq -0x28(%rbp), %rax
movq %rdi, %rcx
movq %rcx, -0x68(%rbp)
movq 0x98(%rax), %rdx
movq 0xa0(%rax), %rcx
leaq 0x292f(%rip), %rsi      # 0xb1f2
callq 0x5550
jmp 0x88ca
movq -0x68(%rbp), %rdi
leaq 0x745b(%rip), %rsi      # 0xfd30
leaq -0x332c(%rip), %rdx     # 0x55b0
callq 0x22a0
movq -0x68(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x2130
jmp 0x892b
movl $0x8, %edi
callq 0x20d0
movq %rax, %rdi
movq %rdi, -0x70(%rbp)
callq 0x5780
movq -0x70(%rbp), %rdi
movq 0x76a7(%rip), %rsi      # 0xffc0
movq 0x7680(%rip), %rdx      # 0xffa0
callq 0x22a0
addq $0x70, %rsp
popq %rbp
retq
movq -0x18(%rbp), %rdi
callq 0x22b0
nopw %cs:(%rax,%rax)
nop