// File: /workspace/github_cpp_makefile_star2_O3/oknenavin[P]cxon/test/../src/cxon/lang/common/cio/numeric.hxx
// Function: std::enable_if<std::is_floating_point<double>::value, int>::type cxon::cio::num::imp::number_consume_<cxon::json::format_traits, double, std::istreambuf_iterator<char, std::char_traits<char>>>(char*, char const*, std::istreambuf_iterator<char, std::char_traits<char>>&, std::istreambuf_iterator<char, std::char_traits<char>>)
inline auto number_consume_(char* f, const char* l, II& i, II e)
                -> enable_if_t<std::is_floating_point<T>::value, int>
            {   // as in RFC7159 (except nans)
                CXON_ASSERT(f && f < l, "unexpected");
                char c = peek(i, e);
#                   if defined(__GNUC__) && __GNUC__ == 14 && !defined(__clang__)
#                       pragma GCC diagnostic push
#                       pragma GCC diagnostic ignored "-Warray-bounds"
#                       pragma GCC diagnostic ignored "-Wstringop-overflow"
#                   endif
                        CXON_IF_CONSTEXPR(!X::allow_javascript_nans) {
                            if (c == '"') {
                                ;                               CXON_READ()
                                if (is_sign_<T>(c))             CXON_NEXT()
                                if (c == 'i') {
                                    CXON_NEXT() if (c != 'n')   return 0;
                                    CXON_NEXT() if (c != 'f')   return 0;
                                }
                                else if (c == 'n') {
                                    CXON_NEXT() if (c != 'a')   return 0;
                                    CXON_NEXT() if (c != 'n')   return 0;
                                }
                                else                            return 0;
                                CXON_NEXT() if (c != '"')       return 0;
                                CXON_NEXT()                     goto trap_end;
                            }
                        }
                        if (is_sign_<T>(c))                     CXON_READ()
                        CXON_IF_CONSTEXPR( X::allow_javascript_nans) {
                            if (c == 'I') {
                                CXON_NEXT() if (c != 'n')       return 0;
                                CXON_NEXT() if (c != 'f')       return 0;
                                CXON_NEXT() if (c != 'i')       return 0;
                                CXON_NEXT() if (c != 'n')       return 0;
                                CXON_NEXT() if (c != 'i')       return 0;
                                CXON_NEXT() if (c != 't')       return 0;
                                CXON_NEXT() if (c != 'y')       return 0;
                                CXON_NEXT()                     goto trap_end;
                            }
                            if (c == 'N') {
                                CXON_NEXT() if (c != 'a')       return 0;
                                CXON_NEXT() if (c != 'N')       return 0;
                                CXON_NEXT()                     goto trap_end;
                            }
                        }
#                   if defined(__GNUC__) && __GNUC__ == 14 && !defined(__clang__)
#                       pragma GCC diagnostic pop
#                   endif
                    if (c == '0')                           goto trap_zero;
                //trap_whole:
                       if (!chr::is<X>::digit10(c))         return 0;
                    while ( chr::is<X>::digit10(c))         CXON_NEXT()
                    if (c == '.')                           goto trap_fraction;
                    if (c == 'e' || c == 'E')               goto trap_exponent;
                    ;                                       goto trap_end;
                trap_zero:
                    ;                                       CXON_NEXT()
                    if (c == '.')                           goto trap_fraction;
                    if (c == 'e' || c == 'E')               goto trap_exponent;
                    ;                                       goto trap_end;
                trap_fraction:
                    ;                                       CXON_NEXT()
                       if (!chr::is<X>::digit10(c))         return 0;
                    while ( chr::is<X>::digit10(c))         CXON_NEXT()
                    if (c == 'e' || c == 'E')               goto trap_exponent;
                    ;                                       goto trap_end;
                trap_exponent:
                    ;                                       CXON_NEXT()
                    if (c == '-' || c == '+')               CXON_NEXT()
                       if (!chr::is<X>::digit10(c))         return 0;
                    while ( chr::is<X>::digit10(c))         CXON_NEXT()
                    ;                                       goto trap_end;
                trap_end:
                    return f != l ? (*f = '\0', 1) : -1;
            }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rcx, %r9
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, %r12
movq (%rdx), %r13
movl 0x8(%rdx), %ebx
testq %r13, %r13
setne %al
cmpl $-0x1, %ebx
sete %cl
andb %al, %cl
cmpb $0x1, %cl
movl %r8d, 0xc(%rsp)
movq %r9, 0x10(%rsp)
jne 0x14ae5
movq 0x10(%r13), %rax
cmpq 0x18(%r13), %rax
jae 0x14ecd
movzbl (%rax), %ebp
jmp 0x14ae7
movl %ebx, %ebp
testq %r9, %r9
setne %al
cmpl $-0x1, %r8d
sete %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x14b14
movq 0x10(%r9), %rax
cmpq 0x18(%r9), %rax
jae 0x14ef1
cmpl $-0x1, %ebp
jne 0x14f16
jmp 0x14b29
cmpl $-0x1, %r8d
sete %al
cmpl $-0x1, %ebp
sete %cl
cmpb %cl, %al
je 0x14f16
cmpl $-0x1, %ebx
sete %al
testq %r13, %r13
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x14b4d
movq 0x10(%r13), %rax
cmpq 0x18(%r13), %rax
jae 0x14f2b
movzbl (%rax), %ebx
cmpb $0x2d, %bl
je 0x14c14
movzbl %bl, %eax
cmpl $0x22, %eax
jne 0x14c36
movb $0x22, (%r12)
movq %r15, %rdi
movq %r9, %rsi
movl %r8d, %edx
callq 0x1060c
leaq 0x1(%r12), %rbx
cmpb $0x2d, %al
jne 0x14ba5
cmpq %r14, %rbx
je 0x14ec5
movb $0x2d, 0x1(%r12)
movq %r15, %rdi
movq 0x10(%rsp), %rsi
movl 0xc(%rsp), %edx
callq 0x1060c
addq $0x2, %r12
movq %r12, %rbx
cmpb $0x6e, %al
je 0x14d46
movzbl %al, %eax
cmpl $0x69, %eax
movl 0xc(%rsp), %edx
movq 0x10(%rsp), %rsi
jne 0x14f16
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
cmpq %r14, %rbx
je 0x14f19
movb $0x69, (%rbx)
movq %r15, %rdi
callq 0x1060c
cmpb $0x6e, %al
jne 0x14f16
leaq 0x1(%rbx), %rax
cmpq %r14, %rax
je 0x14f19
movb $0x6e, (%rax)
movq %r15, %rdi
movq 0x10(%rsp), %rsi
movl 0xc(%rsp), %edx
callq 0x1060c
movb $0x66, %cl
cmpb $0x66, %al
je 0x14d9c
jmp 0x14f16
movb $0x2d, (%r12)
movq %r15, %rdi
movq %r9, %rsi
movl %r8d, %edx
callq 0x1060c
movq 0x10(%rsp), %r9
movl 0xc(%rsp), %r8d
movl %eax, %ebx
incq %r12
cmpb $0x30, %bl
jne 0x14c6e
cmpq %r14, %r12
je 0x14ec5
movb $0x30, (%r12)
movq %r15, %rdi
movq %r9, %rsi
movl %r8d, %edx
callq 0x1060c
incq %r12
cmpb $0x2e, %al
jne 0x14d29
movl 0xc(%rsp), %r8d
movq 0x10(%rsp), %r9
jmp 0x14cbf
movzbl %bl, %eax
addq $-0x30, %rax
cmpq $0x9, %rax
ja 0x14f16
cmpq %r14, %r12
je 0x14ec5
movb %bl, (%r12)
movq %r15, %rdi
movq %r9, %rsi
movl %r8d, %edx
callq 0x1060c
movq 0x10(%rsp), %r9
movl 0xc(%rsp), %r8d
movl %eax, %ebx
incq %r12
movzbl %al, %eax
addq $-0x30, %rax
cmpq $0xa, %rax
jb 0x14c7f
cmpb $0x2e, %bl
jne 0x14e05
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
cmpq %r14, %r12
je 0x14f19
movb $0x2e, (%r12)
movq %r15, %rdi
movq %r9, %rsi
movl %r8d, %edx
callq 0x1060c
movl %eax, %ebx
movzbl %al, %eax
addq $-0x30, %rax
cmpq $0x9, %rax
ja 0x14f16
incq %r12
cmpq %r14, %r12
movl 0xc(%rsp), %edx
movq 0x10(%rsp), %rsi
je 0x14f19
movb %bl, (%r12)
movq %r15, %rdi
callq 0x1060c
movl %eax, %ebx
incq %r12
movzbl %al, %eax
addq $-0x30, %rax
cmpq $0xa, %rax
jb 0x14cf7
jmp 0x14d2b
movl %eax, %ebx
movl %ebx, %eax
andb $-0x21, %al
cmpb $0x45, %al
movl 0xc(%rsp), %r8d
movq 0x10(%rsp), %r9
je 0x14e11
jmp 0x14eb3
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
cmpq %r14, %rbx
movl 0xc(%rsp), %edx
movq 0x10(%rsp), %rsi
je 0x14f19
movb $0x6e, (%rbx)
movq %r15, %rdi
callq 0x1060c
cmpb $0x61, %al
jne 0x14f16
leaq 0x1(%rbx), %rax
cmpq %r14, %rax
je 0x14f19
movb $0x61, (%rax)
movq %r15, %rdi
movq 0x10(%rsp), %rsi
movl 0xc(%rsp), %edx
callq 0x1060c
movb $0x6e, %cl
cmpb $0x6e, %al
jne 0x14f16
leaq 0x2(%rbx), %rax
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
cmpq %r14, %rax
je 0x14f19
movb %cl, 0x2(%rbx)
movq %r15, %rdi
movq 0x10(%rsp), %rsi
movl 0xc(%rsp), %edx
callq 0x1060c
movl $0x0, %r13d
cmpb $0x22, %al
jne 0x14f19
leaq 0x3(%rbx), %rax
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
cmpq %r14, %rax
je 0x14f19
movb $0x22, 0x3(%rbx)
movq %r15, %rdi
movq 0x10(%rsp), %rsi
movl 0xc(%rsp), %edx
callq 0x1060c
addq $0x4, %rbx
movq %rbx, %r12
jmp 0x14eb3
movl %ebx, %eax
andb $-0x21, %al
cmpb $0x45, %al
jne 0x14eb3
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
cmpq %r14, %r12
je 0x14f19
movb %bl, (%r12)
movq %r15, %rdi
movq %r9, %rsi
movl %r8d, %edx
callq 0x1060c
leaq 0x1(%r12), %rcx
cmpb $0x2d, %al
je 0x14e43
movzbl %al, %edx
cmpl $0x2b, %edx
jne 0x14e68
cmpq %r14, %rcx
je 0x14f19
movb %al, 0x1(%r12)
movq %r15, %rdi
movq 0x10(%rsp), %rsi
movl 0xc(%rsp), %edx
callq 0x1060c
addq $0x2, %r12
jmp 0x14e6b
movq %rcx, %r12
movzbl %al, %ecx
addq $-0x30, %rcx
cmpq $0x9, %rcx
ja 0x14f16
movl 0xc(%rsp), %edx
movq 0x10(%rsp), %rsi
cmpq %r14, %r12
je 0x14f19
movb %al, (%r12)
movq %r15, %rdi
callq 0x1060c
movq 0x10(%rsp), %rsi
movl 0xc(%rsp), %edx
incq %r12
movzbl %al, %ecx
addq $-0x30, %rcx
cmpq $0xa, %rcx
jb 0x14e85
cmpq %r14, %r12
je 0x14ec5
movb $0x0, (%r12)
movl $0x1, %r13d
jmp 0x14f19
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
jmp 0x14f19
movq (%r13), %rax
movq %r13, %rdi
callq *0x48(%rax)
movq 0x10(%rsp), %r9
movl 0xc(%rsp), %r8d
movl %eax, %ebp
xorl %eax, %eax
cmpl $-0x1, %ebp
cmoveq %rax, %r13
jmp 0x14ae7
movq (%r9), %rax
movq %r9, %rdi
callq *0x48(%rax)
movq 0x10(%rsp), %r9
movl 0xc(%rsp), %r8d
cmpl $-0x1, %eax
jne 0x14b09
cmpl $-0x1, %ebp
jne 0x14b29
xorl %r13d, %r13d
movl %r13d, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq (%r13), %rax
movq %r13, %rdi
callq *0x48(%rax)
movq 0x10(%rsp), %r9
movl 0xc(%rsp), %r8d
movl %eax, %ebx
jmp 0x14b4d