// 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_<(anonymous namespace)::strict_number_traits, double>(char const*&, char const*)
inline auto number_consume_(const char*& i, const char* e)
                -> enable_if_t<std::is_floating_point<T>::value, int>
            {   // as in RFC7159
                char c = peek(i, e);
                    CXON_IF_CONSTEXPR(!X::allow_javascript_nans) {
                        if (c == '"') {
                            ;                           c = next(i, e);
                            if (is_sign_<T>(c))         c = next(i, e);
                            if (c == 'i') {
                                if (next(i, e) != 'n')  return 0;
                                if (next(i, e) != 'f')  return 0;
                            }
                            else if (c == 'n') {
                                if (next(i, e) != 'a')  return 0;
                                if (next(i, e) != 'n')  return 0;
                            }
                            else                        return 0;
                            if (next(i, e) != '"')      return 0;
                            return ++i, 1;
                        }
                    }
                    if (is_sign_<T>(c))                 c = next(i, e);
                    CXON_IF_CONSTEXPR( X::allow_javascript_nans) {
                        if (c == 'I') {
                            if (next(i, e) != 'n')      return 0;
                            if (next(i, e) != 'f')      return 0;
                            if (next(i, e) != 'i')      return 0;
                            if (next(i, e) != 'n')      return 0;
                            if (next(i, e) != 'i')      return 0;
                            if (next(i, e) != 't')      return 0;
                            if (next(i, e) != 'y')      return 0;
                            return ++i, 1;
                        }
                        if (c == 'N') {
                            if (next(i, e) != 'a')      return 0;
                            if (next(i, e) != 'N')      return 0;
                            return ++i, 1;
                        }
                    }
                    if (c == '0')                       goto trap_zero;
                //trap_whole:
                       if (!chr::is<X>::digit10(c))     return 0;
                    while (chr::is<X>::digit10(c))      c = next(i, e);
                    if (c == '.')                       goto trap_fraction;
                    if (c == 'e' || c == 'E')           goto trap_exponent;
                    ;                                   goto trap_end;
                trap_zero:
                    ;                                   c = next(i, e);
                    if (c == '.')                       goto trap_fraction;
                    if (c == 'e' || c == 'E')           goto trap_exponent;
                    ;                                   goto trap_end;
                trap_fraction:
                    ;                                   c = next(i, e);
                       if (!chr::is<X>::digit10(c))     return 0;
                    while ( chr::is<X>::digit10(c))     c = next(i, e);
                    if (c == 'e' || c == 'E')           goto trap_exponent;
                    ;                                   goto trap_end;
                trap_exponent:
                    ;                                   c = next(i, e);
                    if (c == '-' || c == '+')           c = next(i, e);
                       if (!chr::is<X>::digit10(c))     return 0;
                    while ( chr::is<X>::digit10(c))     c = next(i, e);
                    ;                                   goto trap_end;
                trap_end:
                    return 1;
            }

// Assembly:
movq (%rdi), %rcx
cmpq %rsi, %rcx
je 0x10114f
movzbl (%rcx), %eax
cmpl $0x2d, %eax
je 0x100fc9
cmpl $0x22, %eax
jne 0x100fda
leaq 0x1(%rcx), %rdx
movq %rdx, (%rdi)
cmpq %rsi, %rdx
je 0x10114f
movb (%rdx), %al
cmpb $0x2d, %al
jne 0x100f7e
addq $0x2, %rcx
movq %rcx, (%rdi)
cmpq %rsi, %rcx
je 0x10114f
movb (%rcx), %al
movq %rcx, %rdx
cmpb $0x6e, %al
je 0x101106
movzbl %al, %eax
cmpl $0x69, %eax
jne 0x10114f
leaq 0x1(%rdx), %rax
movq %rax, (%rdi)
cmpq %rsi, %rax
je 0x10114f
cmpb $0x6e, (%rax)
jne 0x10114f
leaq 0x2(%rdx), %rax
movq %rax, (%rdi)
cmpq %rsi, %rax
je 0x10114f
cmpb $0x66, (%rax)
je 0x101128
jmp 0x10114f
incq %rcx
movq %rcx, (%rdi)
cmpq %rsi, %rcx
je 0x10114f
movb (%rcx), %al
cmpb $0x30, %al
jne 0x101007
leaq 0x1(%rcx), %rdx
movq %rdx, (%rdi)
movl $0x1, %eax
cmpq %rsi, %rdx
je 0x101006
movb (%rdx), %r8b
cmpb $0x2e, %r8b
je 0x101041
andb $-0x21, %r8b
cmpb $0x45, %r8b
je 0x101095
retq
movzbl %al, %eax
addq $-0x30, %rax
cmpq $0x9, %rax
ja 0x10114f
incq %rcx
movl $0x1, %eax
movq %rcx, (%rdi)
cmpq %rsi, %rcx
je 0x101006
movzbl (%rcx), %edx
leaq -0x30(%rdx), %r8
incq %rcx
cmpq $0xa, %r8
jb 0x101020
cmpb $0x2e, %dl
jne 0x101083
addq $-0x2, %rcx
leaq 0x2(%rcx), %rax
movq %rax, (%rdi)
cmpq %rsi, %rax
je 0x10114f
movzbl (%rax), %eax
addq $-0x30, %rax
cmpq $0x9, %rax
ja 0x10114f
addq $0x3, %rcx
movl $0x1, %eax
movq %rcx, (%rdi)
cmpq %rsi, %rcx
je 0x101006
movzbl (%rcx), %edx
leaq -0x30(%rdx), %r8
incq %rcx
cmpq $0xa, %r8
jb 0x10106b
andb $-0x21, %dl
cmpb $0x45, %dl
jne 0x101006
decq %rcx
movq %rcx, %rdx
leaq 0x1(%rdx), %rcx
movq %rcx, (%rdi)
cmpq %rsi, %rcx
je 0x10114f
movzbl (%rcx), %eax
cmpl $0x2d, %eax
je 0x1010b2
cmpl $0x2b, %eax
jne 0x1010c7
addq $0x2, %rdx
movq %rdx, (%rdi)
cmpq %rsi, %rdx
je 0x10114f
movb (%rdx), %al
movq %rdx, %rcx
movzbl %al, %edx
addq $-0x30, %rdx
movl $0x0, %eax
cmpq $0x9, %rdx
ja 0x101006
incq %rcx
movl $0x1, %eax
movq %rcx, (%rdi)
cmpq %rsi, %rcx
je 0x101006
movzbl (%rcx), %edx
addq $-0x30, %rdx
incq %rcx
cmpq $0xa, %rdx
jb 0x1010e5
jmp 0x101006
leaq 0x1(%rdx), %rax
movq %rax, (%rdi)
cmpq %rsi, %rax
je 0x10114f
cmpb $0x61, (%rax)
jne 0x10114f
leaq 0x2(%rdx), %rax
movq %rax, (%rdi)
cmpq %rsi, %rax
je 0x10114f
cmpb $0x6e, (%rax)
jne 0x10114f
leaq 0x3(%rdx), %rax
movq %rax, (%rdi)
cmpq %rsi, %rax
je 0x10114f
cmpb $0x22, (%rax)
movl $0x0, %eax
jne 0x101006
addq $0x4, %rdx
movq %rdx, (%rdi)
movl $0x1, %eax
retq
xorl %eax, %eax
retq