// File: /workspace/github_cpp_makefile_star2_O2/oknenavin[P]cxon/test/../src/cxon/lib/node.json.hxx
// Function: std::enable_if<cxon::JSON<cxon::test::unquoted_quoted_keys_traits<cxon::test::allow_comments_traits<cxon::json::format_traits>>>::quote_unquoted_keys, bool>::type cxon::cio::key::read<cxon::JSON<cxon::test::unquoted_quoted_keys_traits<cxon::test::allow_comments_traits<cxon::json::format_traits>>>, cxon::json::basic_node<cxon::json::node_traits<std::allocator<char>>>>::key<char const*, cxon::context<cxon::JSON<cxon::test::unquoted_quoted_keys_traits<cxon::test::allow_comments_traits<cxon::json::format_traits>>>, cxon::napa::imp::var<cxon::node::recursion_guard, unsigned int>>, cxon::JSON<cxon::test::unquoted_quoted_keys_traits<cxon::test::allow_comments_traits<cxon::json::format_traits>>>>(cxon::json::basic_node<cxon::json::node_traits<std::allocator<char>>>&, char const*&, char const*, cxon::context<cxon::JSON<cxon::test::unquoted_quoted_keys_traits<cxon::test::allow_comments_traits<cxon::json::format_traits>>>, cxon::napa::imp::var<cxon::node::recursion_guard, unsigned int>>&)
static auto key(json::basic_node<Tr>& t, II& i, II e, Cx& cx)
                        -> enable_if_t< Y::quote_unquoted_keys, bool>
                    {
#                       define CXON_IMBUE(T) t.template imbue<typename json::basic_node<Tr>::T>()
                            CXON_IF_CONSTEXPR (Y::unquote_quoted_keys) {
                                if (!cio::consume<Y>(i, e, cx))
                                    return false;
                                switch (cio::peek(i, e)) {
                                    case '{': { CXON_NODE_RG(); return read_key_(t, CXON_IMBUE(object), i, e, cx); }
                                    case '[': { CXON_NODE_RG(); return read_key_(t, CXON_IMBUE(array),  i, e, cx); }
                                }
                            }
                            return cio::key::read_key<Y>(CXON_IMBUE(string), i, e, cx);
#                       undef CXON_IMBUE
                    }

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rcx, %rbx
movq %rdx, %r14
movq %rsi, %r15
movq %rdi, %r12
movq %rsi, %rdi
movq %rdx, %rsi
movq %rcx, %rdx
callq 0x778d3
testb %al, %al
je 0x77ce0
movq (%r15), %rax
cmpq %r14, %rax
je 0x77ce4
movzbl (%rax), %eax
cmpl $0x5b, %eax
je 0x77d06
cmpl $0x7b, %eax
jne 0x77ce4
leaq 0x14(%rbx), %r13
movl 0x14(%rbx), %eax
incl %eax
movl %eax, 0x14(%rbx)
cmpl $0x40, %eax
jae 0x77d32
movq %r12, %rdi
callq 0x5a772
movq %rax, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x779d6
jmp 0x77d3d
xorl %eax, %eax
jmp 0x77d41
movq %r12, %rdi
callq 0x5aa16
movq %rax, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
jmp 0x77ef5
leaq 0x14(%rbx), %r13
movl 0x14(%rbx), %eax
incl %eax
movl %eax, 0x14(%rbx)
cmpl $0x40, %eax
jae 0x77d32
movq %r12, %rdi
callq 0x6ae60
movq %rax, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x77d59
jmp 0x77d3d
pushq $0x2
popq %rsi
movq %rbx, %rdi
callq 0x778f0
decl (%r13)
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
jmp 0x77d4d
decl (%r13)
movq %rax, %rdi
callq 0xe470