// File: oknenavin[P]cxon/test/../src/cxon/lang/common/cio/class.hxx
// Function: std::enable_if<!is_bare_class<test::fixture>::value, bool>::type cxon::cio::cls::imp::read_fields_<cxon::JSON<cxon::cio::key::simple_traits<cxon::cxcf::format_traits>>, test::fixture, cxon::cio::cls::field<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> test::fixture::*>, cxon::cio::cls::field<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>> test::fixture::*>, cxon::cio::cls::field<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, test::fix, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, test::fix>>> test::fixture::*>, char const*, cxon::context<cxon::JSON<cxon::cxcf::format_traits>>>(test::fixture&, std::tuple<cxon::cio::cls::field<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> test::fixture::*>, cxon::cio::cls::field<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>> test::fixture::*>, cxon::cio::cls::field<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, test::fix, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, test::fix>>> test::fixture::*>> const&, char const*&, char const*, cxon::context<cxon::JSON<cxon::cxcf::format_traits>>&)
inline auto read_fields_(T& t, const fields<Fs...>& fs, II& i, II e, Cx& cx)
                -> enable_if_t<!is_bare_class<T>::value, bool>
            {
                if (!consume<X>(X::map::beg, i, e, cx))
                    return false;
                int st[sizeof...(Fs)];
                    CXON_IF_CONSTEXPR (X::assume_unique_object_keys)
                        std::fill_n(st, sizeof...(Fs), 0);
                for (char id[ids_len_max::constant<napa_type<Cx>>(64)]; ; ) {
                    if (!consume<X>(i, e, cx))
                        return false;
                    if (peek(i, e) == X::map::end)
                        return ++i, true;
                    II const o = i;
                        if (!read_map_key<X>(id, i, e, cx))
                            return rewind(i, o), false;
                        if (!read_field_<X>(t, id, fs, st, i, e, cx))
                            return cx && (rewind(i, o), cx/X::read_error::unexpected);
                        if (cnt::consume_sep<X, typename X::map>(i, e, cx))
                            continue;
                    return consume<X>(X::map::end, i, e, cx);
                }
                return true;
            }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq %r8, -0x30(%rbp)
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
movq -0x30(%rbp), %rcx
movl $0x7b, %edi
callq 0x12410
testb $0x1, %al
jne 0x15ae2
movb $0x0, -0x1(%rbp)
jmp 0x15c33
leaq -0x3c(%rbp), %rdi
movl $0x0, -0x40(%rbp)
movl $0x3, %esi
leaq -0x40(%rbp), %rdx
callq 0x11f10
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
movq -0x30(%rbp), %rdx
callq 0x11ec0
testb $0x1, %al
jne 0x15b19
movb $0x0, -0x1(%rbp)
jmp 0x15c33
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movq -0x28(%rbp), %rsi
callq 0x12250
movsbl %al, %eax
cmpl $0x7d, %eax
jne 0x15b48
movq -0x20(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movb $0x1, -0x1(%rbp)
jmp 0x15c33
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x88(%rbp)
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
movq -0x30(%rbp), %rcx
leaq -0x80(%rbp), %rdi
callq 0x11f70
testb $0x1, %al
jne 0x15b88
movq -0x20(%rbp), %rdi
movq -0x88(%rbp), %rsi
callq 0x12050
movb $0x0, -0x1(%rbp)
jmp 0x15c33
movq -0x10(%rbp), %rdi
leaq -0x80(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %r8
movq -0x28(%rbp), %r9
movq -0x30(%rbp), %rax
leaq -0x3c(%rbp), %rcx
movq %rax, (%rsp)
callq 0x15c50
testb $0x1, %al
jne 0x15bfc
movq -0x30(%rbp), %rdi
callq 0x12030
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x89(%rbp)
jne 0x15bcb
jmp 0x15bef
movq -0x20(%rbp), %rdi
movq -0x88(%rbp), %rsi
callq 0x12050
movq -0x30(%rbp), %rdi
movl $0x1, %esi
callq 0x12080
movb %al, -0x89(%rbp)
movb -0x89(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x15c33
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
movq -0x30(%rbp), %rdx
callq 0x15cb0
testb $0x1, %al
jne 0x15c13
jmp 0x15c18
jmp 0x15afb
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
movq -0x30(%rbp), %rcx
movl $0x7d, %edi
callq 0x12410
andb $0x1, %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0xa0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)