// File: /workspace/github_cpp_makefile_star2_O1/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), %rax
cmpq %rsi, %rax
je 0xfd563
movb (%rax), %cl
jmp 0xfd565
movb $-0x1, %cl
cmpb $0x2d, %cl
je 0xfd582
movzbl %cl, %edx
cmpl $0x22, %edx
jne 0xfd5b5
leaq 0x1(%rax), %rcx
movq %rcx, (%rdi)
cmpq %rsi, %rcx
je 0xfd591
movb (%rcx), %cl
jmp 0xfd593
incq %rax
movq %rax, (%rdi)
cmpq %rsi, %rax
je 0xfd5b3
movb (%rax), %cl
jmp 0xfd5b5
movb $-0x1, %cl
cmpb $0x2d, %cl
jne 0xfd6b7
addq $0x2, %rax
movq %rax, (%rdi)
cmpq %rsi, %rax
je 0xfd6b5
movb (%rax), %cl
jmp 0xfd6b7
movb $-0x1, %cl
cmpb $0x30, %cl
jne 0xfd5cc
movq (%rdi), %rax
incq %rax
movq %rax, (%rdi)
cmpq %rsi, %rax
je 0xfd60d
movb (%rax), %cl
jmp 0xfd60f
movzbl %cl, %eax
leaq -0x30(%rax), %rdx
cmpq $0x9, %rdx
ja 0xfd783
addq $-0x30, %rax
cmpq $0x9, %rax
ja 0xfd60f
movq (%rdi), %rax
incq %rax
movq %rax, (%rdi)
cmpq %rsi, %rax
je 0xfd5f9
movb (%rax), %cl
jmp 0xfd5fb
movb $-0x1, %cl
movzbl %cl, %edx
addq $-0x30, %rdx
incq %rax
cmpq $0xa, %rdx
jb 0xfd5ed
jmp 0xfd60f
movb $-0x1, %cl
cmpb $0x2e, %cl
jne 0xfd667
movq (%rdi), %rax
incq %rax
movq %rax, (%rdi)
cmpq %rsi, %rax
je 0xfd626
movb (%rax), %cl
jmp 0xfd628
movb $-0x1, %cl
movzbl %cl, %eax
leaq -0x30(%rax), %rdx
cmpq $0x9, %rdx
ja 0xfd783
addq $-0x30, %rax
cmpq $0x9, %rax
ja 0xfd667
movq (%rdi), %rax
incq %rax
movq %rax, (%rdi)
cmpq %rsi, %rax
je 0xfd655
movb (%rax), %cl
jmp 0xfd657
movb $-0x1, %cl
movzbl %cl, %edx
addq $-0x30, %rdx
incq %rax
cmpq $0xa, %rdx
jb 0xfd649
andb $-0x21, %cl
movl $0x1, %eax
cmpb $0x45, %cl
jne 0xfd782
movq (%rdi), %rax
leaq 0x1(%rax), %rcx
movq %rcx, (%rdi)
cmpq %rsi, %rcx
je 0xfd68b
movb (%rcx), %cl
jmp 0xfd68d
movb $-0x1, %cl
cmpb $0x2d, %cl
je 0xfd69e
movzbl %cl, %edx
cmpl $0x2b, %edx
jne 0xfd748
addq $0x2, %rax
movq %rax, (%rdi)
cmpq %rsi, %rax
je 0xfd746
movb (%rax), %cl
jmp 0xfd748
movb $-0x1, %cl
xorl %eax, %eax
cmpb $0x6e, %cl
je 0xfd700
movzbl %cl, %ecx
cmpl $0x69, %ecx
jne 0xfd782
movq (%rdi), %rcx
leaq 0x1(%rcx), %rdx
movq %rdx, (%rdi)
cmpq %rsi, %rdx
je 0xfd782
cmpb $0x6e, (%rdx)
jne 0xfd782
addq $0x2, %rcx
movq %rcx, (%rdi)
cmpq %rsi, %rcx
je 0xfd782
cmpb $0x66, (%rcx)
je 0xfd725
jmp 0xfd782
movq (%rdi), %rcx
leaq 0x1(%rcx), %rdx
movq %rdx, (%rdi)
cmpq %rsi, %rdx
je 0xfd782
cmpb $0x61, (%rdx)
jne 0xfd782
addq $0x2, %rcx
movq %rcx, (%rdi)
cmpq %rsi, %rcx
je 0xfd782
cmpb $0x6e, (%rcx)
jne 0xfd782
movq (%rdi), %rcx
leaq 0x1(%rcx), %rdx
movq %rdx, (%rdi)
cmpq %rsi, %rdx
je 0xfd782
cmpb $0x22, (%rdx)
jne 0xfd782
addq $0x2, %rcx
movq %rcx, (%rdi)
movl $0x1, %eax
retq
movb $-0x1, %cl
movzbl %cl, %ecx
leaq -0x30(%rcx), %rax
cmpq $0x9, %rax
ja 0xfd783
addq $-0x30, %rcx
movl $0x1, %eax
cmpq $0x9, %rcx
ja 0xfd782
movq (%rdi), %rcx
incq %rcx
movq %rcx, (%rdi)
cmpq %rsi, %rcx
je 0xfd782
movzbl (%rcx), %edx
addq $-0x30, %rdx
incq %rcx
cmpq $0xa, %rdx
jb 0xfd76a
retq
xorl %eax, %eax
retq