// File: /workspace/github_cpp_makefile_star2_O2/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 %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x10, %rsp
movq %rcx, %rbx
movq %rdx, %r14
movq %rsi, %r15
movq %rdi, %r12
leaq 0x2a428(%rip), %r13     # 0x3b28c
movq (%r15), %rax
cmpq %r14, %rax
je 0x10ff0
movzbl (%rax), %eax
movl %eax, %ecx
shrl $0x5, %ecx
movslq (%r13,%rcx,4), %rcx
addq %r13, %rcx
jmpq *%rcx
movq %r15, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0x110d3
testb %al, %al
jne 0x10e64
xorl %ebx, %ebx
jmp 0x10f76
movq %r12, %rdi
callq 0xd852
movq %rax, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
jmp 0x122d8
movq %r12, %rdi
callq 0xf04a
movq %rax, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
jmp 0x114e8
movq %r12, %rdi
callq 0xf06c
movq %rax, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
jmp 0x11138
leaq 0x14(%rbx), %r13
movl 0x14(%rbx), %eax
incl %eax
movl %eax, 0x14(%rbx)
cmpl $0x40, %eax
jae 0x10f65
movq %r12, %rdi
callq 0xd808
movq %rax, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x12809
jmp 0x10f70
leaq 0x14(%rbx), %r13
movl 0x14(%rbx), %eax
incl %eax
movl %eax, 0x14(%rbx)
cmpl $0x40, %eax
jae 0x10f65
movq %r12, %rdi
callq 0xd82c
movq %rax, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x116d2
jmp 0x10f70
pushq $0x2
popq %rsi
movq %rbx, %rdi
callq 0x110c2
movl %eax, %ebx
decl (%r13)
movl %ebx, %eax
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
movq %r12, %rdi
callq 0xd82c
movq %rax, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
jmp 0x116d2
addl $0xffffff0c, %eax       # imm = 0xFFFFFF0C
cmpl $0xb, %eax
ja 0x1107e
leaq 0x2a2eb(%rip), %rcx     # 0x3b2ac
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %r12, %rdi
callq 0xd880
movq %rax, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
jmp 0x12b1a
pushq $0x1
popq %rsi
movq %rbx, %rdi
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
jmp 0x110c2
movq %r12, %rdi
callq 0xd8a2
movq %rax, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
jmp 0x12a94
leaq 0xf(%rsp), %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x12af4
movl %eax, %ebx
testb %al, %al
je 0x10f76
movq %r12, %rdi
callq 0xd8c4
jmp 0x10f76
movq %r12, %rdi
callq 0xd8c4
movq %rax, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
jmp 0x12aca
leaq 0xe(%rsp), %rdi
movb $0x0, (%rdi)
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x12db6
movl %eax, %ebx
testb %al, %al
je 0x10f76
movzbl 0xe(%rsp), %r14d
movq %r12, %rdi
callq 0xf06c
movq %r14, (%rax)
jmp 0x10f76
jmp 0x110b6
decl (%r13)
movq %rax, %rdi
callq 0x4450