// File: 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::cbor::basic_node<cxon::cbor::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::cbor::basic_node<cxon::cbor::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(cbor::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 cbor::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(map),    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(text), i, e, cx);
#                           undef CXON_IMBUE
                        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %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 0x165970
testb $0x1, %al
jne 0x16f259
movb $0x0, -0x1(%rbp)
jmp 0x16f3ea
movq -0x18(%rbp), %rax
movq (%rax), %rdi
movq -0x20(%rbp), %rsi
callq 0x1a9a0
movsbl %al, %eax
movl %eax, -0x54(%rbp)
subl $0x5b, %eax
je 0x16f328
jmp 0x16f27a
movl -0x54(%rbp), %eax
subl $0x7b, %eax
jne 0x16f3c8
jmp 0x16f288
movq -0x28(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x1659c0
leaq -0x30(%rbp), %rdi
callq 0x165a10
testb $0x1, %al
jne 0x16f2be
movq -0x28(%rbp), %rdi
movl $0x2, %esi
callq 0x165a60
andb $0x1, %al
movb %al, -0x1(%rbp)
movl $0x1, -0x34(%rbp)
jmp 0x16f31a
movq -0x10(%rbp), %rdi
movq %rdi, -0x68(%rbp)
callq 0x14eae0
movq %rax, -0x60(%rbp)
jmp 0x16f2d1
movq -0x60(%rbp), %rsi
movq -0x68(%rbp), %rdi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
callq 0x16f410
movb %al, -0x69(%rbp)
jmp 0x16f2ef
movb -0x69(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movl $0x1, -0x34(%rbp)
jmp 0x16f31a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x165ae0
jmp 0x16f3f8
leaq -0x30(%rbp), %rdi
callq 0x165ae0
jmp 0x16f3ea
movq -0x28(%rbp), %rsi
leaq -0x50(%rbp), %rdi
callq 0x1659c0
leaq -0x50(%rbp), %rdi
callq 0x165a10
testb $0x1, %al
jne 0x16f35e
movq -0x28(%rbp), %rdi
movl $0x2, %esi
callq 0x165a60
andb $0x1, %al
movb %al, -0x1(%rbp)
movl $0x1, -0x34(%rbp)
jmp 0x16f3bd
movq -0x10(%rbp), %rdi
movq %rdi, -0x80(%rbp)
callq 0x14eb70
movq %rax, -0x78(%rbp)
jmp 0x16f371
movq -0x78(%rbp), %rsi
movq -0x80(%rbp), %rdi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
callq 0x16f450
movb %al, -0x81(%rbp)
jmp 0x16f392
movb -0x81(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movl $0x1, -0x34(%rbp)
jmp 0x16f3bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x165ae0
jmp 0x16f3f8
leaq -0x50(%rbp), %rdi
callq 0x165ae0
jmp 0x16f3ea
movq -0x10(%rbp), %rdi
callq 0x14ec00
movq %rax, %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
callq 0x1666b0
andb $0x1, %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x90, %rsp
popq %rbp
retq
movq -0x40(%rbp), %rdi
callq 0xf410
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)