// File: /workspace/github_cpp_makefile_star2_O3/oknenavin[P]cxon/test/../src/cxon/lib/node.json.hxx
// Function: bool cxon::imp::read_number_value_<cxon::JSON<cxon::json::format_traits>, cxon::json::basic_node<cxon::json::node_traits<std::allocator<char>>>, std::istreambuf_iterator<char, std::char_traits<char>>, cxon::context<cxon::JSON<cxon::json::format_traits>>>(cxon::json::basic_node<cxon::json::node_traits<std::allocator<char>>>&, cxon::json::basic_node<cxon::json::node_traits<std::allocator<char>>>::real&, std::istreambuf_iterator<char, std::char_traits<char>>&, std::istreambuf_iterator<char, std::char_traits<char>>, cxon::context<cxon::JSON<cxon::json::format_traits>>&)
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 %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movq %r9, %rbx
movl %r8d, %r9d
movq %rcx, %r15
movq %rdx, %r12
movq %rsi, 0x78(%rsp)
movq %rdi, 0x70(%rsp)
leaq 0x60(%rsp), %rax
leaq 0x20(%rsp), %rcx
movq %rcx, 0x40(%rcx)
movq %rax, 0x48(%rcx)
movq (%rdx), %r13
movl 0x8(%rdx), %r14d
testq %r13, %r13
setne %al
cmpl $-0x1, %r14d
sete %cl
andb %al, %cl
cmpb $0x1, %cl
movl %r8d, 0x4(%rsp)
jne 0x14223
movq 0x10(%r13), %rax
cmpq 0x18(%r13), %rax
jae 0x1466d
movzbl (%rax), %eax
jmp 0x14226
movl %r14d, %eax
testq %r15, %r15
setne %cl
cmpl $-0x1, %r9d
sete %bpl
andb %cl, %bpl
cmpb $0x1, %bpl
jne 0x14256
movq 0x10(%r15), %rcx
cmpq 0x18(%r15), %rcx
jae 0x1468a
cmpl $-0x1, %eax
jne 0x146b6
jmp 0x1426b
cmpl $-0x1, %r9d
sete %cl
cmpl $-0x1, %eax
sete %al
cmpb %al, %cl
je 0x146b6
cmpl $-0x1, %r14d
sete %al
testq %r13, %r13
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x14291
movq 0x10(%r13), %rax
cmpq 0x18(%r13), %rax
jae 0x146d9
movzbl (%rax), %r14d
movl %r14d, %eax
cmpb $0x2d, %r14b
jne 0x142c5
movq 0x60(%rsp), %rax
cmpq 0x68(%rsp), %rax
je 0x14656
movb $0x2d, (%rax)
incq 0x60(%rsp)
movq %r12, %rdi
movq %r15, %rsi
movl %r9d, %edx
callq 0x1060c
movl 0x4(%rsp), %r9d
cmpb $0x30, %al
jne 0x14343
movq 0x60(%rsp), %rax
cmpq 0x68(%rsp), %rax
je 0x14656
movb $0x30, (%rax)
incq 0x60(%rsp)
movq (%r12), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
movq %rbx, 0x8(%rsp)
jae 0x146f0
incq %rax
movq %rax, 0x10(%rdi)
movl $0xffffffff, 0x8(%r12)  # imm = 0xFFFFFFFF
xorl %ebx, %ebx
xorl %edx, %edx
movq (%r12), %rdi
movl 0x8(%r12), %r13d
testq %rdi, %rdi
setne %al
cmpl $-0x1, %r13d
sete %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x14427
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0x14700
movzbl (%rax), %ecx
jmp 0x1442a
leal -0x31(%rax), %ecx
cmpb $0x8, %cl
ja 0x143d5
movq %rbx, 0x8(%rsp)
leal -0x30(%rax), %ecx
cmpb $0x2d, %r14b
jne 0x14504
movabsq $0xccccccccccccccb, %rdx # imm = 0xCCCCCCCCCCCCCCB
xorl %ebx, %ebx
leaq 0x1(%rdx), %r13
movabsq $0xccccccccccccccb, %rdx # imm = 0xCCCCCCCCCCCCCCB
cmpq %rdx, %rbx
jbe 0x14391
cmpb $0x38, %al
ja 0x14598
cmpq %r13, %rbx
jne 0x14598
movq 0x60(%rsp), %rdx
cmpq 0x68(%rsp), %rdx
je 0x147ac
movb %al, (%rdx)
incq 0x60(%rsp)
leaq (%rbx,%rbx,4), %rax
movzbl %cl, %ecx
leaq (%rcx,%rax,2), %rbx
movq %r12, %rdi
movq %r15, %rsi
movl %r9d, %edx
callq 0x1060c
movl 0x4(%rsp), %r9d
movl %eax, %ecx
addb $-0x30, %cl
cmpb $0xa, %cl
jb 0x14371
jmp 0x1430a
cmpb $0x4e, %al
je 0x143e5
movzbl %al, %eax
cmpl $0x49, %eax
jne 0x146b6
cmpb $0x2d, %r14b
movq %rbx, %r8
setne %bl
movq 0x78(%rsp), %r14
movq %r14, %rdi
movq %r12, %rsi
movq %r15, %rdx
movl %r9d, %ecx
callq 0x1482a
movl %eax, %ecx
xorb $0x1, %cl
orb %bl, %cl
jne 0x146c7
movsd (%r14), %xmm0
xorps 0x2fc62(%rip), %xmm0    # 0x44080
movlps %xmm0, (%r14)
jmp 0x1480b
movl %r13d, %ecx
testb %bpl, %bpl
je 0x14448
movq 0x10(%r15), %rax
cmpq 0x18(%r15), %rax
jae 0x14732
cmpl $-0x1, %ecx
jne 0x14768
jmp 0x1445d
cmpl $-0x1, %ecx
sete %al
cmpl $-0x1, %r9d
sete %cl
cmpb %al, %cl
je 0x14768
cmpl $-0x1, %r13d
sete %al
testq %rdi, %rdi
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x14483
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0x14812
movzbl (%rax), %r13d
cmpb $0x2e, %r13b
jne 0x145ae
movq 0x60(%rsp), %rax
cmpq 0x68(%rsp), %rax
je 0x147ac
movb $0x2e, (%rax)
incq 0x60(%rsp)
movq %r12, %rdi
movq %r15, %rsi
movl %r9d, %edx
callq 0x1060c
movl %eax, %r13d
addb $-0x30, %al
movl $0x1, %edx
cmpb $0x9, %al
ja 0x145a9
movq 0x60(%rsp), %rax
cmpq 0x68(%rsp), %rax
movl 0x4(%rsp), %edx
je 0x147ac
movb %r13b, (%rax)
incq 0x60(%rsp)
movq %r12, %rdi
movq %r15, %rsi
callq 0x1060c
movl %eax, %r13d
addb $-0x30, %al
cmpb $0xa, %al
jb 0x144c5
movl 0x4(%rsp), %r9d
movl $0x1, %edx
jmp 0x145ae
movabsq $0x1999999999999998, %rdx # imm = 0x1999999999999998
xorl %ebx, %ebx
leaq 0x1(%rdx), %r13
movabsq $0x1999999999999998, %rdx # imm = 0x1999999999999998
cmpq %rdx, %rbx
jbe 0x1452c
cmpb $0x35, %al
ja 0x14598
cmpq %r13, %rbx
jne 0x14598
movq 0x60(%rsp), %rdx
cmpq 0x68(%rsp), %rdx
je 0x147ac
movb %al, (%rdx)
incq 0x60(%rsp)
leaq (%rbx,%rbx,4), %rax
movzbl %cl, %ecx
leaq (%rcx,%rax,2), %rbx
movq %r12, %rdi
movq %r15, %rsi
movl %r9d, %edx
callq 0x1060c
movl 0x4(%rsp), %r9d
movl %eax, %ecx
addb $-0x30, %cl
cmpb $0xa, %cl
jb 0x14514
jmp 0x1430a
movb %al, (%rcx)
incq 0x60(%rsp)
movq %r12, %rdi
movq %r15, %rsi
movl %r9d, %edx
callq 0x1060c
movl 0x4(%rsp), %r9d
movl %eax, %ecx
addb $-0x30, %cl
cmpb $0xa, %cl
jae 0x14663
movq 0x60(%rsp), %rcx
cmpq 0x68(%rsp), %rcx
jne 0x14570
jmp 0x147ac
movl 0x4(%rsp), %r9d
andb $-0x21, %r13b
cmpb $0x45, %r13b
jne 0x14768
movq 0x60(%rsp), %rax
cmpq 0x68(%rsp), %rax
je 0x147ac
movb $0x65, (%rax)
incq 0x60(%rsp)
movq %r12, %rdi
movq %r15, %rsi
movl %r9d, %edx
callq 0x1060c
cmpb $0x2d, %al
movq 0x8(%rsp), %rbx
je 0x145f3
movzbl %al, %ecx
cmpl $0x2b, %ecx
jne 0x14615
movq 0x60(%rsp), %rcx
cmpq 0x68(%rsp), %rcx
je 0x14656
movb %al, (%rcx)
incq 0x60(%rsp)
movq %r12, %rdi
movq %r15, %rsi
movl 0x4(%rsp), %edx
callq 0x1060c
leal -0x30(%rax), %ecx
cmpb $0x9, %cl
ja 0x1476c
movq 0x60(%rsp), %rcx
cmpq 0x68(%rsp), %rcx
je 0x147ac
movb %al, (%rcx)
incq 0x60(%rsp)
movq %r12, %rdi
movq %r15, %rsi
movl 0x4(%rsp), %edx
callq 0x1060c
movl %eax, %ecx
addb $-0x30, %cl
cmpb $0xa, %cl
jb 0x14621
jmp 0x1476c
callq 0xdf1e
movl $0x8, (%rbx)
jmp 0x146c1
movl $0x1, %edx
jmp 0x1430c
movq (%r13), %rax
movq %r13, %rdi
callq *0x48(%rax)
movl 0x4(%rsp), %r9d
xorl %ecx, %ecx
cmpl $-0x1, %eax
cmoveq %rcx, %r13
jmp 0x14226
cmpl $-0x1, %eax
movq %rbx, 0x8(%rsp)
sete %bl
movq (%r15), %rax
movq %r15, %rdi
callq *0x48(%rax)
movl 0x4(%rsp), %r9d
cmpl $-0x1, %eax
sete %al
xorb %bl, %al
movq 0x8(%rsp), %rbx
jne 0x1426b
callq 0xdf1e
movl $0x4, (%rbx)
movq %rax, 0x8(%rbx)
xorl %eax, %eax
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq (%r13), %rax
movq %r13, %rdi
callq *0x48(%rax)
movl 0x4(%rsp), %r9d
movl %eax, %r14d
jmp 0x14291
movq (%rdi), %rax
callq *0x50(%rax)
movl 0x4(%rsp), %r9d
jmp 0x142ff
movq (%rdi), %rax
movq %rdi, 0x18(%rsp)
movq 0x18(%rsp), %rdi
movl %edx, 0x14(%rsp)
callq *0x48(%rax)
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %edx
movl 0x4(%rsp), %r9d
movl %eax, %ecx
xorl %eax, %eax
cmpl $-0x1, %ecx
cmoveq %rax, %rdi
jmp 0x1442a
movq (%r15), %rax
movq %rdi, 0x18(%rsp)
movq %r15, %rdi
movl %edx, %ebp
movl %ecx, 0x14(%rsp)
callq *0x48(%rax)
movl 0x14(%rsp), %ecx
movq 0x18(%rsp), %rdi
movl %ebp, %edx
movl 0x4(%rsp), %r9d
cmpl $-0x1, %eax
jne 0x1443d
cmpl $-0x1, %ecx
jne 0x1445d
testl %edx, %edx
je 0x147c5
movq 0x60(%rsp), %rax
cmpq 0x68(%rsp), %rax
je 0x147ac
movb $0x0, (%rax)
movq 0x60(%rsp), %rdx
incq %rdx
movq %rdx, 0x60(%rsp)
leaq 0x80(%rsp), %rsi
leaq 0x20(%rsp), %rax
movq %rax, (%rsi)
movq 0x78(%rsp), %rdi
movq 0x8(%rsp), %rcx
callq 0x14f46
jmp 0x146c7
callq 0xdf1e
movq 0x8(%rsp), %rcx
movl $0x8, (%rcx)
movq %rax, 0x8(%rcx)
jmp 0x146c5
cmpb $0x2d, %r14b
jne 0x147ec
negq %rbx
movq 0x70(%rsp), %r14
cmpl $0x4, 0x20(%r14)
je 0x14808
movq %r14, %rdi
callq 0x13dae
movl $0x4, 0x20(%r14)
jmp 0x14808
movq 0x70(%rsp), %r14
cmpl $0x5, 0x20(%r14)
je 0x14808
movq %r14, %rdi
callq 0x13dae
movl $0x5, 0x20(%r14)
movq %rbx, (%r14)
movb $0x1, %al
jmp 0x146c7
movq (%rdi), %rax
movl %edx, %ebp
callq *0x48(%rax)
movl %ebp, %edx
movl 0x4(%rsp), %r9d
movl %eax, %r13d
jmp 0x14483
nop