// File: oknenavin[P]cxon/test/../src/cxon/lang/common/cio/variant.hxx
// Function: bool cxon::cio::var::variant_read<cxon::JSON<cxon::json::format_traits>, boost::variant2::variant<int, boost::container::basic_string<char, std::char_traits<char>, void>>, char const*, cxon::context<cxon::JSON<cxon::json::format_traits>>>(boost::variant2::variant<int, boost::container::basic_string<char, std::char_traits<char>, void>>&, char const*&, char const*, cxon::context<cxon::JSON<cxon::json::format_traits>>&)
inline bool variant_read(V& v, II& i, II e, Cx& cx) {
            if (!consume<X>(i, e, cx))
                return false;
            switch (peek(i, e)) {
                case X::map::beg:
                    return imp::variant_read_<X, is_map>(v, i, e, cx);
                case X::list::beg:
                    return imp::variant_read_<X, is_list>(v, i, e, cx);
                case X::string::del:
                    return imp::variant_read_<X, is_string>(v, i, e, cx);
                case '-': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'I': case 'N':
                    return imp::variant_read_<X, is_number>(v, i, e, cx);
                case *X::id::pos: case *X::id::neg:
                    return imp::variant_read_<X, is_bool>(v, i, e, cx);
                case *X::id::nil:
                    return imp::variant_read_<X, is_null>(v, i, e, cx);
            }
            return cx/json::read_error::unexpected;
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x3ca80
testb $0x1, %al
jne 0x146156
movb $0x0, -0x1(%rbp)
jmp 0x146250
movq -0x18(%rbp), %rax
movq (%rax), %rdi
movq -0x20(%rbp), %rsi
callq 0x589e0
movsbl %al, %eax
addl $-0x22, %eax
movl %eax, %ecx
movq %rcx, -0x30(%rbp)
subl $0x59, %eax
ja 0x14623d
movq -0x30(%rbp), %rax
leaq 0x3d8452(%rip), %rcx    # 0x51e5d8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
callq 0x146260
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x146250
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
callq 0x1462a0
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x146250
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
callq 0x1462e0
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x146250
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
callq 0x146320
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x146250
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
callq 0x146360
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x146250
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
callq 0x1463a0
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x146250
movq -0x28(%rbp), %rdi
movl $0x1, %esi
callq 0x3cb90
andb $0x1, %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax,%rax)