// File: /workspace/github_cpp_makefile_star2_O2/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 0xd6dac
movzbl (%rcx), %eax
cmpl $0x2d, %eax
je 0xd6c1a
cmpl $0x22, %eax
jne 0xd6c2b
leaq 0x1(%rcx), %rdx
movq %rdx, (%rdi)
cmpq %rsi, %rdx
je 0xd6dac
movb (%rdx), %al
cmpb $0x2d, %al
jne 0xd6bcf
addq $0x2, %rcx
movq %rcx, (%rdi)
cmpq %rsi, %rcx
je 0xd6dac
movb (%rcx), %al
movq %rcx, %rdx
cmpb $0x6e, %al
je 0xd6cd8
movzbl %al, %eax
cmpl $0x69, %eax
jne 0xd6dac
leaq 0x1(%rdx), %rax
movq %rax, (%rdi)
cmpq %rsi, %rax
je 0xd6dac
cmpb $0x6e, (%rax)
jne 0xd6dac
leaq 0x2(%rdx), %rax
movq %rax, (%rdi)
cmpq %rsi, %rax
je 0xd6dac
cmpb $0x66, (%rax)
je 0xd6d0a
jmp 0xd6dac
incq %rcx
movq %rcx, (%rdi)
cmpq %rsi, %rcx
je 0xd6dac
movb (%rcx), %al
cmpb $0x30, %al
jne 0xd6c51
incq %rcx
movq %rcx, (%rdi)
pushq $0x1
popq %rax
cmpq %rsi, %rcx
je 0xd6c50
movb (%rcx), %dl
cmpb $0x2e, %dl
je 0xd6c88
andb $-0x21, %dl
cmpb $0x45, %dl
je 0xd6d3a
retq
movzbl %al, %edx
addq $-0x30, %rdx
cmpq $0x9, %rdx
jbe 0xd6c71
jmp 0xd6dac
movq %rcx, (%rdi)
cmpq %rsi, %rcx
je 0xd6c6f
movb (%rcx), %al
jmp 0xd6c71
movb $-0x1, %al
incq %rcx
movzbl %al, %edx
addq $-0x30, %rdx
cmpq $0x9, %rdx
jbe 0xd6c63
decq %rcx
cmpb $0x2e, %al
jne 0xd6ccd
leaq 0x1(%rcx), %rax
movq %rax, (%rdi)
cmpq %rsi, %rax
je 0xd6dac
movzbl (%rax), %eax
leaq -0x30(%rax), %rdx
cmpq $0x9, %rdx
ja 0xd6dac
addq $0x2, %rcx
movzbl %al, %edx
addq $-0x30, %rdx
cmpq $0x9, %rdx
ja 0xd6d31
movq %rcx, (%rdi)
cmpq %rsi, %rcx
je 0xd6cc6
movb (%rcx), %al
jmp 0xd6cc8
movb $-0x1, %al
incq %rcx
jmp 0xd6cad
andb $-0x21, %al
cmpb $0x45, %al
je 0xd6d3a
jmp 0xd6daf
leaq 0x1(%rdx), %rax
movq %rax, (%rdi)
cmpq %rsi, %rax
je 0xd6dac
cmpb $0x61, (%rax)
jne 0xd6dac
leaq 0x2(%rdx), %rax
movq %rax, (%rdi)
cmpq %rsi, %rax
je 0xd6dac
cmpb $0x6e, (%rax)
jne 0xd6dac
leaq 0x3(%rdx), %rax
movq %rax, (%rdi)
cmpq %rsi, %rax
je 0xd6dac
cmpb $0x22, (%rax)
movl $0x0, %eax
jne 0xd6c50
addq $0x4, %rdx
movq %rdx, (%rdi)
jmp 0xd6daf
andb $-0x21, %al
cmpb $0x45, %al
jne 0xd6daf
decq %rcx
leaq 0x1(%rcx), %rdx
movq %rdx, (%rdi)
cmpq %rsi, %rdx
je 0xd6dac
movzbl (%rdx), %r8d
cmpl $0x2d, %r8d
je 0xd6d56
cmpl $0x2b, %r8d
jne 0xd6d68
addq $0x2, %rcx
movq %rcx, (%rdi)
cmpq %rsi, %rcx
je 0xd6dac
movb (%rcx), %r8b
movq %rcx, %rdx
movzbl %r8b, %ecx
addq $-0x30, %rcx
movl $0x0, %eax
cmpq $0x9, %rcx
ja 0xd6c50
incq %rdx
pushq $0x1
popq %rax
movzbl %r8b, %ecx
addq $-0x30, %rcx
cmpq $0x9, %rcx
ja 0xd6c50
movq %rdx, (%rdi)
cmpq %rsi, %rdx
je 0xd6da4
movb (%rdx), %r8b
jmp 0xd6da7
movb $-0x1, %r8b
incq %rdx
jmp 0xd6d85
xorl %eax, %eax
retq
pushq $0x1
popq %rax
retq