// 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::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 %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 0x166479
movb $0x0, -0x1(%rbp)
jmp 0x16660a
movq -0x18(%rbp), %rax
movq (%rax), %rdi
movq -0x20(%rbp), %rsi
callq 0x1a9a0
movsbl %al, %eax
movl %eax, -0x54(%rbp)
subl $0x5b, %eax
je 0x166548
jmp 0x16649a
movl -0x54(%rbp), %eax
subl $0x7b, %eax
jne 0x1665e8
jmp 0x1664a8
movq -0x28(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x1659c0
leaq -0x30(%rbp), %rdi
callq 0x165a10
testb $0x1, %al
jne 0x1664de
movq -0x28(%rbp), %rdi
movl $0x2, %esi
callq 0x165a60
andb $0x1, %al
movb %al, -0x1(%rbp)
movl $0x1, -0x34(%rbp)
jmp 0x16653a
movq -0x10(%rbp), %rdi
movq %rdi, -0x68(%rbp)
callq 0xf0850
movq %rax, -0x60(%rbp)
jmp 0x1664f1
movq -0x60(%rbp), %rsi
movq -0x68(%rbp), %rdi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
callq 0x166630
movb %al, -0x69(%rbp)
jmp 0x16650f
movb -0x69(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movl $0x1, -0x34(%rbp)
jmp 0x16653a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x165ae0
jmp 0x166618
leaq -0x30(%rbp), %rdi
callq 0x165ae0
jmp 0x16660a
movq -0x28(%rbp), %rsi
leaq -0x50(%rbp), %rdi
callq 0x1659c0
leaq -0x50(%rbp), %rdi
callq 0x165a10
testb $0x1, %al
jne 0x16657e
movq -0x28(%rbp), %rdi
movl $0x2, %esi
callq 0x165a60
andb $0x1, %al
movb %al, -0x1(%rbp)
movl $0x1, -0x34(%rbp)
jmp 0x1665dd
movq -0x10(%rbp), %rdi
movq %rdi, -0x80(%rbp)
callq 0x1325c0
movq %rax, -0x78(%rbp)
jmp 0x166591
movq -0x78(%rbp), %rsi
movq -0x80(%rbp), %rdi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
callq 0x166670
movb %al, -0x81(%rbp)
jmp 0x1665b2
movb -0x81(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movl $0x1, -0x34(%rbp)
jmp 0x1665dd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x165ae0
jmp 0x166618
leaq -0x50(%rbp), %rdi
callq 0x165ae0
jmp 0x16660a
movq -0x10(%rbp), %rdi
callq 0xf1aa0
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)