// File: 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:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x589e0
movb %al, -0x19(%rbp)
movsbl -0x19(%rbp), %eax
cmpl $0x22, %eax
jne 0x260352
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x15ff50
movb %al, -0x19(%rbp)
movsbl -0x19(%rbp), %edi
callq 0x27f930
testb $0x1, %al
jne 0x26025f
jmp 0x26026f
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x15ff50
movb %al, -0x19(%rbp)
movsbl -0x19(%rbp), %eax
cmpl $0x69, %eax
jne 0x2602bc
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x15ff50
movsbl %al, %eax
cmpl $0x6e, %eax
je 0x260299
movl $0x0, -0x4(%rbp)
jmp 0x2604e9
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x15ff50
movsbl %al, %eax
cmpl $0x66, %eax
je 0x2602ba
movl $0x0, -0x4(%rbp)
jmp 0x2604e9
jmp 0x260317
movsbl -0x19(%rbp), %eax
cmpl $0x6e, %eax
jne 0x260309
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x15ff50
movsbl %al, %eax
cmpl $0x61, %eax
je 0x2602e6
movl $0x0, -0x4(%rbp)
jmp 0x2604e9
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x15ff50
movsbl %al, %eax
cmpl $0x6e, %eax
je 0x260307
movl $0x0, -0x4(%rbp)
jmp 0x2604e9
jmp 0x260315
movl $0x0, -0x4(%rbp)
jmp 0x2604e9
jmp 0x260317
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x15ff50
movsbl %al, %eax
cmpl $0x22, %eax
je 0x260338
movl $0x0, -0x4(%rbp)
jmp 0x2604e9
movq -0x10(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movl $0x1, -0x4(%rbp)
jmp 0x2604e9
movsbl -0x19(%rbp), %edi
callq 0x27f930
testb $0x1, %al
jne 0x260361
jmp 0x260371
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x15ff50
movb %al, -0x19(%rbp)
movsbl -0x19(%rbp), %eax
cmpl $0x30, %eax
jne 0x26037c
jmp 0x2603df
movsbl -0x19(%rbp), %edi
callq 0x2607e0
testb $0x1, %al
jne 0x260395
movl $0x0, -0x4(%rbp)
jmp 0x2604e9
jmp 0x260397
movsbl -0x19(%rbp), %edi
callq 0x2607e0
testb $0x1, %al
jne 0x2603a6
jmp 0x2603b8
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x15ff50
movb %al, -0x19(%rbp)
jmp 0x260397
movsbl -0x19(%rbp), %eax
cmpl $0x2e, %eax
jne 0x2603c3
jmp 0x260413
movsbl -0x19(%rbp), %eax
cmpl $0x65, %eax
je 0x2603d5
movsbl -0x19(%rbp), %eax
cmpl $0x45, %eax
jne 0x2603da
jmp 0x260475
jmp 0x2604e2
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x15ff50
movb %al, -0x19(%rbp)
movsbl -0x19(%rbp), %eax
cmpl $0x2e, %eax
jne 0x2603fa
jmp 0x260413
movsbl -0x19(%rbp), %eax
cmpl $0x65, %eax
je 0x26040c
movsbl -0x19(%rbp), %eax
cmpl $0x45, %eax
jne 0x26040e
jmp 0x260475
jmp 0x2604e2
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x15ff50
movb %al, -0x19(%rbp)
movsbl -0x19(%rbp), %edi
callq 0x2607e0
testb $0x1, %al
jne 0x26043c
movl $0x0, -0x4(%rbp)
jmp 0x2604e9
jmp 0x26043e
movsbl -0x19(%rbp), %edi
callq 0x2607e0
testb $0x1, %al
jne 0x26044d
jmp 0x26045f
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x15ff50
movb %al, -0x19(%rbp)
jmp 0x26043e
movsbl -0x19(%rbp), %eax
cmpl $0x65, %eax
je 0x260471
movsbl -0x19(%rbp), %eax
cmpl $0x45, %eax
jne 0x260473
jmp 0x260475
jmp 0x2604e2
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x15ff50
movb %al, -0x19(%rbp)
movsbl -0x19(%rbp), %eax
cmpl $0x2d, %eax
je 0x260497
movsbl -0x19(%rbp), %eax
cmpl $0x2b, %eax
jne 0x2604a7
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x15ff50
movb %al, -0x19(%rbp)
movsbl -0x19(%rbp), %edi
callq 0x2607e0
testb $0x1, %al
jne 0x2604bd
movl $0x0, -0x4(%rbp)
jmp 0x2604e9
jmp 0x2604bf
movsbl -0x19(%rbp), %edi
callq 0x2607e0
testb $0x1, %al
jne 0x2604ce
jmp 0x2604e0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x15ff50
movb %al, -0x19(%rbp)
jmp 0x2604bf
jmp 0x2604e2
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)