// File: oknenavin[P]cxon/test/../src/cxon/lib/node.cbor.hxx
// Function: bool cxon::read<cxon::CBOR<cxon::cbor::format_traits>, cxon::json::basic_node<cxon::json::node_traits<std::allocator<char>>>, void>::value<char const*, cxon::context<cxon::CBOR<cxon::cbor::format_traits>, cxon::napa::imp::var<cxon::node::recursion_guard, unsigned int>>, cxon::CBOR<cxon::cbor::format_traits>>(cxon::json::basic_node<cxon::json::node_traits<std::allocator<char>>>&, char const*&, char const*, cxon::context<cxon::CBOR<cxon::cbor::format_traits>, cxon::napa::imp::var<cxon::node::recursion_guard, unsigned int>>&)
static bool value(json::basic_node<Tr>& t, II& i, II e, Cx& cx) {
                        bio::byte const b = bio::peek(i, e);
                        switch (b & X::mjr) {
#                           define CXON_IMBUE(T) t.template imbue<typename json::basic_node<Tr>::T>()
                                case X::pint            :                       return read_value<Y>(CXON_IMBUE(uint),          i, e, cx);
                                case X::nint            :                       return read_value<Y>(CXON_IMBUE(sint),          i, e, cx);
                                case X::bstr            :                       return read_value<Y>(CXON_IMBUE(array),         i, e, cx);
                                case X::tstr            :                       return read_value<Y>(CXON_IMBUE(string),        i, e, cx);
                                case X::arr             : { CXON_NODE_RG();     return read_value<Y>(CXON_IMBUE(array),         i, e, cx); }
                                case X::map             : { CXON_NODE_RG();     return read_value<Y>(CXON_IMBUE(object),        i, e, cx); }
                                case X::tag             :                       return cbor::tag::read<Y>(i, e, cx) && value(t, i, e, cx);
                                case X::svn:
                                    switch (b) {
                                        case X::neg: case X::pos
                                                        :                       return read_value<Y>(CXON_IMBUE(boolean),       i, e, cx);
                                        case X::nil     :                       return read_value<Y>(CXON_IMBUE(null),          i, e, cx);
                                        case X::und     : {
                                            cbor::undefined u;                  return read_value<Y>(u, i, e, cx) && (CXON_IMBUE(null), true);
                                        }
                                        case X::fp16: case X::fp32: case X::fp64
                                                        :                       return read_value<Y>(CXON_IMBUE(real),          i, e, cx);
                                        case X::brk     :                       return cx/node::error::invalid;
                                        default         : {
                                            typename cbor::node::simple s;      return read_value<Y>(s, i, e, cx) && (CXON_IMBUE(uint) = s, true);
                                        }
                                    }
#                           undef CXON_IMBUE
                        }
                        return false; // LCOV_EXCL_LINE
                    }

// 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 -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
movl $0xff, %edx
callq 0x309a0
movb %al, -0x29(%rbp)
movzbl -0x29(%rbp), %eax
andl $0xe0, %eax
movl %eax, -0x60(%rbp)
je 0x305fd
jmp 0x30590
movl -0x60(%rbp), %eax
subl $0x20, %eax
je 0x30624
jmp 0x3059e
movl -0x60(%rbp), %eax
subl $0x40, %eax
je 0x3064b
jmp 0x305ac
movl -0x60(%rbp), %eax
subl $0x60, %eax
je 0x30672
jmp 0x305ba
movl -0x60(%rbp), %eax
subl $0x80, %eax
je 0x30699
jmp 0x305ca
movl -0x60(%rbp), %eax
subl $0xa0, %eax
je 0x30731
jmp 0x305da
movl -0x60(%rbp), %eax
subl $0xc0, %eax
je 0x307c9
jmp 0x305ea
movl -0x60(%rbp), %eax
subl $0xe0, %eax
je 0x3080d
jmp 0x3097c
movq -0x10(%rbp), %rdi
callq 0x29a50
movq %rax, %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
callq 0x309e0
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x30980
movq -0x10(%rbp), %rdi
callq 0x29a00
movq %rax, %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
callq 0x30a20
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x30980
movq -0x10(%rbp), %rdi
callq 0x21e90
movq %rax, %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
callq 0x30a60
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x30980
movq -0x10(%rbp), %rdi
callq 0x21f30
movq %rax, %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
callq 0x30aa0
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x30980
movq -0x28(%rbp), %rsi
leaq -0x38(%rbp), %rdi
callq 0x30ae0
leaq -0x38(%rbp), %rdi
callq 0x30b30
testb $0x1, %al
jne 0x306cf
movq -0x28(%rbp), %rdi
movl $0x2, %esi
callq 0x30b80
andb $0x1, %al
movb %al, -0x1(%rbp)
movl $0x1, -0x3c(%rbp)
jmp 0x30723
movq -0x10(%rbp), %rdi
callq 0x21e90
movq %rax, -0x68(%rbp)
jmp 0x306de
movq -0x68(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
callq 0x30a60
movb %al, -0x69(%rbp)
jmp 0x306f8
movb -0x69(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movl $0x1, -0x3c(%rbp)
jmp 0x30723
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x30bc0
jmp 0x3098e
leaq -0x38(%rbp), %rdi
callq 0x30bc0
jmp 0x30980
movq -0x28(%rbp), %rsi
leaq -0x58(%rbp), %rdi
callq 0x30ae0
leaq -0x58(%rbp), %rdi
callq 0x30b30
testb $0x1, %al
jne 0x30767
movq -0x28(%rbp), %rdi
movl $0x2, %esi
callq 0x30b80
andb $0x1, %al
movb %al, -0x1(%rbp)
movl $0x1, -0x3c(%rbp)
jmp 0x307bb
movq -0x10(%rbp), %rdi
callq 0x21de0
movq %rax, -0x78(%rbp)
jmp 0x30776
movq -0x78(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
callq 0x30c00
movb %al, -0x79(%rbp)
jmp 0x30790
movb -0x79(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movl $0x1, -0x3c(%rbp)
jmp 0x307bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x30bc0
jmp 0x3098e
leaq -0x58(%rbp), %rdi
callq 0x30bc0
jmp 0x30980
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x30c40
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x7a(%rbp)
jne 0x307e8
jmp 0x30800
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
callq 0x30550
movb %al, -0x7a(%rbp)
movb -0x7a(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x30980
movzbl -0x29(%rbp), %eax
addl $0xffffff0c, %eax       # imm = 0xFFFFFF0C
movl %eax, %ecx
movq %rcx, -0x88(%rbp)
subl $0xb, %eax
ja 0x30910
movq -0x88(%rbp), %rax
leaq 0x9143e(%rip), %rcx     # 0xc1c74
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x10(%rbp), %rdi
callq 0x22080
movq %rax, %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
callq 0x30d60
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x30980
movq -0x10(%rbp), %rdi
callq 0x22120
movq %rax, %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
callq 0x30da0
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x30980
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq -0x59(%rbp), %rdi
callq 0x30de0
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x89(%rbp)
jne 0x308b3
jmp 0x308c4
movq -0x10(%rbp), %rdi
callq 0x22120
movb $0x1, %al
movb %al, -0x89(%rbp)
movb -0x89(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x30980
movq -0x10(%rbp), %rdi
callq 0x21fe0
movq %rax, %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
callq 0x30e20
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x30980
movq -0x28(%rbp), %rdi
movl $0x1, %esi
callq 0x30b80
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x30980
leaq -0x5a(%rbp), %rdi
xorl %esi, %esi
callq 0x30e60
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq -0x5a(%rbp), %rdi
callq 0x30e80
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x8a(%rbp)
jne 0x30941
jmp 0x3096f
leaq -0x5a(%rbp), %rdi
callq 0x30ec0
movzbl %al, %eax
movq %rax, -0x98(%rbp)
movq -0x10(%rbp), %rdi
callq 0x29a50
movq -0x98(%rbp), %rcx
movq %rcx, (%rax)
movb $0x1, %al
movb %al, -0x8a(%rbp)
movb -0x8a(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x30980
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0xa0, %rsp
popq %rbp
retq
movq -0x48(%rbp), %rdi
callq 0x5660
nopw (%rax,%rax)