// File: /workspace/github_cpp_makefile_star2_O2/oknenavin[P]cxon/test/../src/cxon/lib/node.json.hxx
// Function: bool cxon::imp::read_number_value_<cxon::JSON<test::kind::unquoted_keys_traits>, cxon::json::basic_node<cxon::json::node_traits<std::allocator<char>>>, char const*, cxon::context<cxon::JSON<test::kind::unquoted_keys_traits>, cxon::napa::imp::var<cxon::node::recursion_guard, unsigned int>, cxon::napa::imp::cst<cxon::node::json::extract_nans, bool, true>>>(cxon::json::basic_node<cxon::json::node_traits<std::allocator<char>>>&, cxon::json::basic_node<cxon::json::node_traits<std::allocator<char>>>::real&, char const*&, char const*, cxon::context<cxon::JSON<test::kind::unquoted_keys_traits>, cxon::napa::imp::var<cxon::node::recursion_guard, unsigned int>, cxon::napa::imp::cst<cxon::node::json::extract_nans, bool, true>>&)
inline bool read_number_value_(N& n, typename N::real& v, II& i, II e, Cx& cx) {
                    using ittp = typename std::iterator_traits<II>::value_type;
                    using sint = typename N::sint;
                    using uint = typename N::uint;
                    buffer_<json::num_len_max::constant<napa_type<Cx>>(64), II> bf(i);
                    uint u = 0;
                    int r = 0;
                    auto c = cio::peek(i, e);

                    bool const s = c == '-';
                    if (s) {
                        CXON_STORE('-');
                        c = cio::next(i, e);
                    }

                    if (c == '0') {
                        CXON_STORE('0');
                        ++i;
                    }
                    else if (c >= '1' && c <='9') {
                        if (s)
                            for ( ; c >= '0' && c <= '9'; c = cio::next(i, e)) {
                                if (u >= plm_<sint, ittp>::max)
                                    if (u != plm_<sint, ittp>::max || c > plm_<sint, ittp>::fst) {
                                        r = 1; break;
                                    }
                                u = u * 10 + static_cast<unsigned>(c - '0');
                                CXON_STORE(c);
                            }
                        else
                            for ( ; c >= '0' && c <= '9'; c = cio::next(i, e)) {
                                if (u >= plm_<uint, ittp>::max)
                                    if (u != plm_<uint, ittp>::max || c > plm_<uint, ittp>::fst) {
                                        r = 1; break;
                                    }
                                u = u * 10 + static_cast<unsigned>(c - '0');
                                CXON_STORE(c);
                            }
                    }
                    else if (c == 'I' || c == 'N') {
                        return read_value<X>(v, i, e, cx) && (!s || (v = -v, true));
                    }
                    else
                        return cx/X::read_error::floating_point_invalid;

                    if (r) {
                        for ( ; c >= '0' && c <= '9'; c = cio::next(i, e)) {
                            CXON_STORE(c);
                        }
                    }

                    c = cio::peek(i, e);

                    if (c == '.') {
                        CXON_STORE('.');
                        r = 1; c = cio::next(i, e);
                        for ( ; c >= '0' && c <= '9'; c = cio::next(i, e)) {
                            CXON_STORE(c);
                        }
                    }

                    if (c == 'e' || c == 'E') {
                        CXON_STORE('e');
                        r = 1, c = cio::next(i, e);
                        if (c == '-' || c == '+') {
                            CXON_STORE(c);
                            c = cio::next(i, e);
                        }
                        for ( ; c >= '0' && c <= '9'; c = cio::next(i, e)) {
                            CXON_STORE(c);
                        }
                    }

                    if (r) {
                        CXON_STORE('\0');
                        return read_number_value_<X>(v, bf.beg(), bf.end(), cx);
                    }
                    s ? n.template imbue<sint>() = -sint(1) - (u - 1) :
                        n.template imbue<uint>() = u
                    ;

                    return true;
                }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rsi, %rbx
movq (%rdx), %rsi
cmpq %rcx, %rsi
je 0x107c2
movb (%rsi), %r10b
movq %rsi, %r9
movl %r10d, %eax
cmpb $0x2d, %r10b
jne 0x106fd
leaq 0x1(%rsi), %r9
movq %r9, (%rdx)
cmpq %rcx, %r9
je 0x107c2
movb (%r9), %al
cmpb $0x30, %al
jne 0x10712
incq %r9
movq %r9, (%rdx)
xorl %r11d, %r11d
xorl %r14d, %r14d
jmp 0x1084b
leal -0x31(%rax), %r11d
cmpb $0x8, %r11b
ja 0x1077c
cmpb $0x2d, %r10b
jne 0x107d5
movabsq $0xccccccccccccccb, %r11 # imm = 0xCCCCCCCCCCCCCCB
incq %r9
xorl %r14d, %r14d
leaq 0x1(%r11), %r15
leal -0x30(%rax), %ebp
cmpb $0x9, %bpl
ja 0x1081f
cmpq %r11, %r14
jbe 0x1075d
cmpq %r15, %r14
jne 0x10827
cmpb $0x38, %al
ja 0x10827
movq %r9, (%rdx)
cmpq %rcx, %r9
je 0x1076a
movb (%r9), %al
jmp 0x1076c
movb $-0x1, %al
imulq $0xa, %r14, %r12
movzbl %bpl, %r14d
addq %r12, %r14
incq %r9
jmp 0x1073a
cmpb $0x4e, %al
je 0x10788
movzbl %al, %eax
cmpl $0x49, %eax
jne 0x107c2
cmpb $0x2d, %r10b
setne %bpl
movq %rbx, %rdi
movq %rdx, %rsi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x10932
movl %eax, %ecx
xorb $0x1, %cl
orb %bpl, %cl
jne 0x108f3
movsd (%rbx), %xmm0
xorps 0x2a8a6(%rip), %xmm0    # 0x3b060
movlps %xmm0, (%rbx)
jmp 0x108f1
pushq $0x4
popq %rsi
movq %r8, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0xfb7a
movabsq $0x1999999999999998, %r11 # imm = 0x1999999999999998
incq %r9
xorl %r14d, %r14d
leaq 0x1(%r11), %r15
leal -0x30(%rax), %ebp
cmpb $0x9, %bpl
ja 0x1081f
cmpq %r11, %r14
jbe 0x10800
cmpq %r15, %r14
jne 0x10827
cmpb $0x35, %al
ja 0x10827
movq %r9, (%rdx)
cmpq %rcx, %r9
je 0x1080d
movb (%r9), %al
jmp 0x1080f
movb $-0x1, %al
imulq $0xa, %r14, %r12
movzbl %bpl, %r14d
addq %r12, %r14
incq %r9
jmp 0x107e9
decq %r9
xorl %r11d, %r11d
jmp 0x1084b
decq %r9
pushq $0x1
popq %r11
incq %r9
addb $-0x30, %al
cmpb $0x9, %al
ja 0x10848
movq %r9, (%rdx)
cmpq %rcx, %r9
je 0x10844
movb (%r9), %al
jmp 0x1082e
movb $-0x1, %al
jmp 0x1082e
decq %r9
cmpq %rcx, %r9
je 0x108bb
movb (%r9), %al
cmpb $0x2e, %al
jne 0x10885
incq %r9
movq %r9, (%rdx)
cmpq %rcx, %r9
jne 0x10866
movb $-0x1, %al
jmp 0x10869
movb (%r9), %al
pushq $0x1
popq %r11
leal -0x30(%rax), %ebp
cmpb $0x9, %bpl
ja 0x10885
incq %r9
movq %r9, (%rdx)
movb $-0x1, %al
cmpq %rcx, %r9
je 0x1086d
jmp 0x10866
andb $-0x21, %al
cmpb $0x45, %al
jne 0x108bb
leaq 0x1(%r9), %rax
movq %rax, (%rdx)
movb $-0x1, %dil
cmpq %rcx, %rax
je 0x108ff
movzbl (%rax), %edi
cmpl $0x2d, %edi
je 0x108a7
cmpl $0x2b, %edi
jne 0x108ff
addq $0x2, %r9
movq %r9, (%rdx)
movq %r9, %rax
movb $-0x1, %dil
cmpq %rcx, %r9
jne 0x108fc
jmp 0x108ff
movq %r9, %rax
testl %r11d, %r11d
je 0x108d9
movq %rbx, %rdi
movq %rax, %rdx
movq %r8, %rcx
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x10920
cmpb $0x2d, %r10b
jne 0x108e9
negq %r14
callq 0xf04a
jmp 0x108ee
callq 0xf06c
movq %r14, (%rax)
movb $0x1, %al
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movb (%rax), %dil
addb $-0x30, %dil
cmpb $0xa, %dil
setb %dil
testb $0x1, %dil
je 0x108c3
incq %rax
movq %rax, (%rdx)
xorl %edi, %edi
cmpq %rcx, %rax
je 0x1090b
jmp 0x108fc