// File: /workspace/github_cpp_makefile_star2_O1/oknenavin[P]cxon/test/../src/cxon/lang/common/cio/class.hxx
// Function: std::enable_if<!is_bare_class<test::kind::test>::value, bool>::type cxon::cio::cls::imp::read_fields_<cxon::JSON<cxon::cio::key::simple_traits<cxon::json::format_traits>>, test::kind::test, cxon::cio::cls::field<cxon::cio::val::sink<void>>, cxon::cio::cls::field<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> test::kind::test::*>, cxon::cio::cls::field<bool test::kind::test::*>, cxon::cio::cls::field<cxon::json::basic_node<cxon::json::node_traits<std::allocator<char>>> test::kind::test::*>, cxon::cio::cls::field<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> test::kind::test::*>, std::istreambuf_iterator<char, std::char_traits<char>>, cxon::context<cxon::JSON<cxon::json::format_traits>>>(test::kind::test&, std::tuple<cxon::cio::cls::field<cxon::cio::val::sink<void>>, cxon::cio::cls::field<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> test::kind::test::*>, cxon::cio::cls::field<bool test::kind::test::*>, cxon::cio::cls::field<cxon::json::basic_node<cxon::json::node_traits<std::allocator<char>>> test::kind::test::*>, cxon::cio::cls::field<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> test::kind::test::*>> const&, std::istreambuf_iterator<char, std::char_traits<char>>&, std::istreambuf_iterator<char, std::char_traits<char>>, cxon::context<cxon::JSON<cxon::json::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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xb8, %rsp
movq %r9, %r14
movl %r8d, %ebp
movq %rcx, %r12
movq %rdx, %rbx
movq %rsi, 0x30(%rsp)
movq %rdi, 0x28(%rsp)
movl $0x7b, %edi
movq %rdx, %rsi
movq %rcx, %rdx
movl %r8d, %ecx
movq %r9, %r8
callq 0xdce5
testb %al, %al
je 0xdca0
xorps %xmm0, %xmm0
leaq 0x50(%rsp), %rax
movaps %xmm0, (%rax)
movl $0x0, 0x10(%rax)
cmpl $-0x1, %ebp
sete %al
testq %r12, %r12
setne %cl
andb %al, %cl
movb %cl, 0x1f(%rsp)
leaq 0x3a6fb(%rip), %r15     # 0x48140
movl %eax, 0x18(%rsp)
movq %r14, 0x38(%rsp)
movq %r12, 0x20(%rsp)
cmpl $-0x1, %ebp
sete %r14b
movq %rbx, %rdi
callq 0x9bbc
movl %eax, %r13d
testq %r12, %r12
setne %al
andb %r14b, %al
cmpb $0x1, %al
jne 0xda8f
movq 0x10(%r12), %rax
cmpq 0x18(%r12), %rax
jae 0xdc5d
movzbl (%rax), %eax
cmpl $-0x1, %eax
jne 0xda91
xorl %r12d, %r12d
jmp 0xda91
movl %ebp, %eax
cmpl $-0x1, %r13d
sete %cl
cmpl $-0x1, %eax
sete %al
cmpb %al, %cl
je 0xdad8
movq %rbx, %rdi
callq 0x9bbc
movzbl %al, %eax
testb $0x8, (%rax,%r15)
je 0xdad8
movq (%rbx), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0xdc52
incq %rax
movq %rax, 0x10(%rdi)
movl $0xffffffff, 0x8(%rbx)  # imm = 0xFFFFFFFF
jmp 0xda53
movq (%rbx), %r13
movl 0x8(%rbx), %r14d
testq %r13, %r13
setne %al
cmpl $-0x1, %r14d
sete %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0xdb14
movq 0x10(%r13), %rax
cmpq 0x18(%r13), %rax
jae 0xdc6c
movzbl (%rax), %r12d
cmpl $-0x1, %r12d
movl $0x0, %eax
cmoveq %rax, %r13
jmp 0xdb17
movl %r14d, %r12d
movl %ebp, %eax
cmpb $0x0, 0x1f(%rsp)
je 0xdb36
movq 0x20(%rsp), %rcx
movq 0x10(%rcx), %rax
cmpq 0x18(%rcx), %rax
jae 0xdc7e
movzbl (%rax), %eax
cmpl $-0x1, %r12d
sete %cl
cmpl $-0x1, %eax
sete %al
cmpb %al, %cl
je 0xdb77
cmpl $-0x1, %r14d
sete %al
testq %r13, %r13
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0xdb6d
movq 0x10(%r13), %rax
cmpq 0x18(%r13), %rax
jae 0xdc8e
movzbl (%rax), %r14d
cmpb $0x7d, %r14b
je 0xdca4
leaq 0x70(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
movq %rbx, %rdx
movq 0x20(%rsp), %r12
movq %r12, %rcx
movl %ebp, %r8d
movq 0x38(%rsp), %r14
movq %r14, %r9
callq 0xdf7d
testb %al, %al
je 0xdc3e
movl $0x3a, %edi
movq %rbx, %rsi
movq %r12, %rdx
movl %ebp, %ecx
movq %r14, %r8
callq 0xdce5
testb %al, %al
je 0xdc3e
movq %r12, 0x40(%rsp)
movl %ebp, 0x48(%rsp)
movups 0x40(%rsp), %xmm0
movups %xmm0, (%rsp)
movq 0x28(%rsp), %rdi
leaq 0x70(%rsp), %rsi
movq 0x30(%rsp), %rdx
leaq 0x50(%rsp), %rcx
movq %rbx, %r8
movq %r14, %r9
callq 0xfc46
testb %al, %al
je 0xdc28
movq %rbx, %rdi
movq %r12, %rsi
movl %ebp, %edx
movq %r14, %rcx
callq 0xde45
movb $0x1, %cl
testb %al, %al
jne 0xdc48
movl $0x7d, %edi
movq %rbx, %rsi
movq %r12, %rdx
movl %ebp, %ecx
movq %r14, %r8
callq 0xdce5
movl %eax, 0x18(%rsp)
xorl %ecx, %ecx
jmp 0xdc48
cmpl $0x0, (%r14)
jne 0xdc3e
callq 0xcf7a
movl $0x1, (%r14)
movq %rax, 0x8(%r14)
xorl %ecx, %ecx
movl $0x0, 0x18(%rsp)
testb %cl, %cl
jne 0xda53
jmp 0xdcc5
movq (%rdi), %rax
callq *0x50(%rax)
jmp 0xdacc
movq (%r12), %rax
movq %r12, %rdi
callq *0x48(%rax)
jmp 0xda85
movq (%r13), %rax
movq %r13, %rdi
callq *0x48(%rax)
movl %eax, %r12d
jmp 0xdb05
movq 0x20(%rsp), %rdi
movq (%rdi), %rax
callq *0x48(%rax)
jmp 0xdb36
movq (%r13), %rax
movq %r13, %rdi
callq *0x48(%rax)
movl %eax, %r14d
jmp 0xdb6d
xorl %eax, %eax
jmp 0xdcc9
movq (%rbx), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0xdcdd
incq %rax
movq %rax, 0x10(%rdi)
movl $0xffffffff, 0x8(%rbx)  # imm = 0xFFFFFFFF
movb $0x1, %al
movl %eax, 0x18(%rsp)
movl 0x18(%rsp), %eax
andb $0x1, %al
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq (%rdi), %rax
callq *0x50(%rax)
jmp 0xdcb8