// 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_<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
movq %rsp, %rbp
subq $0x160, %rsp            # imm = 0x160
movq %rcx, -0x18(%rbp)
movl %r8d, -0x10(%rbp)
movq %rdi, -0x20(%rbp)
movq %rsi, -0x28(%rbp)
movq %rdx, -0x30(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0x29d51
movq -0x20(%rbp), %rax
cmpq -0x28(%rbp), %rax
setb %al
movq -0x30(%rbp), %rax
movq (%rax), %rcx
movq %rcx, -0x48(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x48(%rbp), %rdi
movl -0x40(%rbp), %esi
movq -0x58(%rbp), %rdx
movl -0x50(%rbp), %ecx
callq 0x1cee0
movb %al, -0x31(%rbp)
movsbl -0x31(%rbp), %eax
cmpl $0x22, %eax
jne 0x2a0df
movb -0x31(%rbp), %cl
movq -0x20(%rbp), %rax
movb %cl, (%rax)
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x68(%rbp), %rsi
movl -0x60(%rbp), %edx
callq 0x1ed40
movb %al, -0x31(%rbp)
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
movsbl -0x31(%rbp), %edi
callq 0x2a7e0
testb $0x1, %al
jne 0x29dde
jmp 0x29e2c
movq -0x20(%rbp), %rax
cmpq -0x28(%rbp), %rax
jne 0x29df4
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x2a4e9
movb -0x31(%rbp), %cl
movq -0x20(%rbp), %rax
movb %cl, (%rax)
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x78(%rbp), %rsi
movl -0x70(%rbp), %edx
callq 0x1ed40
movb %al, -0x31(%rbp)
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
movsbl -0x31(%rbp), %eax
cmpl $0x69, %eax
jne 0x29f16
movq -0x20(%rbp), %rax
cmpq -0x28(%rbp), %rax
jne 0x29e4f
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x2a4e9
movb -0x31(%rbp), %cl
movq -0x20(%rbp), %rax
movb %cl, (%rax)
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x88(%rbp), %rsi
movl -0x80(%rbp), %edx
callq 0x1ed40
movb %al, -0x31(%rbp)
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
movsbl -0x31(%rbp), %eax
cmpl $0x6e, %eax
je 0x29ea2
movl $0x0, -0x4(%rbp)
jmp 0x2a4e9
movq -0x20(%rbp), %rax
cmpq -0x28(%rbp), %rax
jne 0x29eb8
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x2a4e9
movb -0x31(%rbp), %cl
movq -0x20(%rbp), %rax
movb %cl, (%rax)
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rax
movq %rax, -0x98(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x98(%rbp), %rsi
movl -0x90(%rbp), %edx
callq 0x1ed40
movb %al, -0x31(%rbp)
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
movsbl -0x31(%rbp), %eax
cmpl $0x66, %eax
je 0x29f11
movl $0x0, -0x4(%rbp)
jmp 0x2a4e9
jmp 0x2a011
movsbl -0x31(%rbp), %eax
cmpl $0x6e, %eax
jne 0x2a003
movq -0x20(%rbp), %rax
cmpq -0x28(%rbp), %rax
jne 0x29f39
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x2a4e9
movb -0x31(%rbp), %cl
movq -0x20(%rbp), %rax
movb %cl, (%rax)
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0xa8(%rbp), %rsi
movl -0xa0(%rbp), %edx
callq 0x1ed40
movb %al, -0x31(%rbp)
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
movsbl -0x31(%rbp), %eax
cmpl $0x61, %eax
je 0x29f92
movl $0x0, -0x4(%rbp)
jmp 0x2a4e9
movq -0x20(%rbp), %rax
cmpq -0x28(%rbp), %rax
jne 0x29fa8
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x2a4e9
movb -0x31(%rbp), %cl
movq -0x20(%rbp), %rax
movb %cl, (%rax)
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0xb8(%rbp), %rsi
movl -0xb0(%rbp), %edx
callq 0x1ed40
movb %al, -0x31(%rbp)
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
movsbl -0x31(%rbp), %eax
cmpl $0x6e, %eax
je 0x2a001
movl $0x0, -0x4(%rbp)
jmp 0x2a4e9
jmp 0x2a00f
movl $0x0, -0x4(%rbp)
jmp 0x2a4e9
jmp 0x2a011
movq -0x20(%rbp), %rax
cmpq -0x28(%rbp), %rax
jne 0x2a027
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x2a4e9
movb -0x31(%rbp), %cl
movq -0x20(%rbp), %rax
movb %cl, (%rax)
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rax
movq %rax, -0xc8(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq -0xc8(%rbp), %rsi
movl -0xc0(%rbp), %edx
callq 0x1ed40
movb %al, -0x31(%rbp)
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
movsbl -0x31(%rbp), %eax
cmpl $0x22, %eax
je 0x2a080
movl $0x0, -0x4(%rbp)
jmp 0x2a4e9
movq -0x20(%rbp), %rax
cmpq -0x28(%rbp), %rax
jne 0x2a096
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x2a4e9
movb -0x31(%rbp), %cl
movq -0x20(%rbp), %rax
movb %cl, (%rax)
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rax
movq %rax, -0xd8(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xd0(%rbp)
movq -0xd8(%rbp), %rsi
movl -0xd0(%rbp), %edx
callq 0x1ed40
movb %al, -0x31(%rbp)
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x2a4b5
movsbl -0x31(%rbp), %edi
callq 0x2a7e0
testb $0x1, %al
jne 0x2a0ee
jmp 0x2a132
movb -0x31(%rbp), %cl
movq -0x20(%rbp), %rax
movb %cl, (%rax)
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rax
movq %rax, -0xe8(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xe0(%rbp)
movq -0xe8(%rbp), %rsi
movl -0xe0(%rbp), %edx
callq 0x1ed40
movb %al, -0x31(%rbp)
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
movsbl -0x31(%rbp), %eax
cmpl $0x30, %eax
jne 0x2a140
jmp 0x2a1f0
movsbl -0x31(%rbp), %edi
callq 0x2a800
testb $0x1, %al
jne 0x2a159
movl $0x0, -0x4(%rbp)
jmp 0x2a4e9
jmp 0x2a15b
movsbl -0x31(%rbp), %edi
callq 0x2a800
testb $0x1, %al
jne 0x2a16a
jmp 0x2a1c6
movq -0x20(%rbp), %rax
cmpq -0x28(%rbp), %rax
jne 0x2a180
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x2a4e9
movb -0x31(%rbp), %cl
movq -0x20(%rbp), %rax
movb %cl, (%rax)
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rax
movq %rax, -0xf8(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xf0(%rbp)
movq -0xf8(%rbp), %rsi
movl -0xf0(%rbp), %edx
callq 0x1ed40
movb %al, -0x31(%rbp)
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x2a15b
movsbl -0x31(%rbp), %eax
cmpl $0x2e, %eax
jne 0x2a1d4
jmp 0x2a271
movsbl -0x31(%rbp), %eax
cmpl $0x65, %eax
je 0x2a1e6
movsbl -0x31(%rbp), %eax
cmpl $0x45, %eax
jne 0x2a1eb
jmp 0x2a36a
jmp 0x2a4b5
movq -0x20(%rbp), %rax
cmpq -0x28(%rbp), %rax
jne 0x2a206
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x2a4e9
movb -0x31(%rbp), %cl
movq -0x20(%rbp), %rax
movb %cl, (%rax)
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rax
movq %rax, -0x108(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x100(%rbp)
movq -0x108(%rbp), %rsi
movl -0x100(%rbp), %edx
callq 0x1ed40
movb %al, -0x31(%rbp)
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
movsbl -0x31(%rbp), %eax
cmpl $0x2e, %eax
jne 0x2a255
jmp 0x2a271
movsbl -0x31(%rbp), %eax
cmpl $0x65, %eax
je 0x2a267
movsbl -0x31(%rbp), %eax
cmpl $0x45, %eax
jne 0x2a26c
jmp 0x2a36a
jmp 0x2a4b5
movq -0x20(%rbp), %rax
cmpq -0x28(%rbp), %rax
jne 0x2a287
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x2a4e9
movb -0x31(%rbp), %cl
movq -0x20(%rbp), %rax
movb %cl, (%rax)
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rax
movq %rax, -0x118(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x110(%rbp)
movq -0x118(%rbp), %rsi
movl -0x110(%rbp), %edx
callq 0x1ed40
movb %al, -0x31(%rbp)
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
movsbl -0x31(%rbp), %edi
callq 0x2a800
testb $0x1, %al
jne 0x2a2e4
movl $0x0, -0x4(%rbp)
jmp 0x2a4e9
jmp 0x2a2e6
movsbl -0x31(%rbp), %edi
callq 0x2a800
testb $0x1, %al
jne 0x2a2f5
jmp 0x2a351
movq -0x20(%rbp), %rax
cmpq -0x28(%rbp), %rax
jne 0x2a30b
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x2a4e9
movb -0x31(%rbp), %cl
movq -0x20(%rbp), %rax
movb %cl, (%rax)
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rax
movq %rax, -0x128(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x120(%rbp)
movq -0x128(%rbp), %rsi
movl -0x120(%rbp), %edx
callq 0x1ed40
movb %al, -0x31(%rbp)
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x2a2e6
movsbl -0x31(%rbp), %eax
cmpl $0x65, %eax
je 0x2a363
movsbl -0x31(%rbp), %eax
cmpl $0x45, %eax
jne 0x2a365
jmp 0x2a36a
jmp 0x2a4b5
movq -0x20(%rbp), %rax
cmpq -0x28(%rbp), %rax
jne 0x2a380
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x2a4e9
movb -0x31(%rbp), %cl
movq -0x20(%rbp), %rax
movb %cl, (%rax)
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rax
movq %rax, -0x138(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x130(%rbp)
movq -0x138(%rbp), %rsi
movl -0x130(%rbp), %edx
callq 0x1ed40
movb %al, -0x31(%rbp)
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
movsbl -0x31(%rbp), %eax
cmpl $0x2d, %eax
je 0x2a3d6
movsbl -0x31(%rbp), %eax
cmpl $0x2b, %eax
jne 0x2a430
movq -0x20(%rbp), %rax
cmpq -0x28(%rbp), %rax
jne 0x2a3ec
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x2a4e9
movb -0x31(%rbp), %cl
movq -0x20(%rbp), %rax
movb %cl, (%rax)
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rax
movq %rax, -0x148(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x140(%rbp)
movq -0x148(%rbp), %rsi
movl -0x140(%rbp), %edx
callq 0x1ed40
movb %al, -0x31(%rbp)
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
movsbl -0x31(%rbp), %edi
callq 0x2a800
testb $0x1, %al
jne 0x2a449
movl $0x0, -0x4(%rbp)
jmp 0x2a4e9
jmp 0x2a44b
movsbl -0x31(%rbp), %edi
callq 0x2a800
testb $0x1, %al
jne 0x2a45a
jmp 0x2a4b3
movq -0x20(%rbp), %rax
cmpq -0x28(%rbp), %rax
jne 0x2a46d
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x2a4e9
movb -0x31(%rbp), %cl
movq -0x20(%rbp), %rax
movb %cl, (%rax)
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rax
movq %rax, -0x158(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x150(%rbp)
movq -0x158(%rbp), %rsi
movl -0x150(%rbp), %edx
callq 0x1ed40
movb %al, -0x31(%rbp)
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x2a44b
jmp 0x2a4b5
movq -0x20(%rbp), %rax
cmpq -0x28(%rbp), %rax
je 0x2a4d3
movq -0x20(%rbp), %rax
movb $0x0, (%rax)
movl $0x1, %eax
movl %eax, -0x15c(%rbp)
jmp 0x2a4e0
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl %eax, -0x15c(%rbp)
jmp 0x2a4e0
movl -0x15c(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x160, %rsp            # imm = 0x160
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop