// File: oknenavin[P]cxon/test/../src/cxon/lang/common/cio/numeric.hxx
// Function: std::enable_if<std::is_integral<int>::value, int>::type cxon::cio::num::imp::number_consume_<cxon::test::input_iterator_traits<cxon::json::format_traits>, int, cxon::test::force_input_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>, bool (*)(char)>(char*, char const*, cxon::test::force_input_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>&, cxon::test::force_input_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>, bool (*)(char))
inline auto number_consume_(char* f, const char* l, II& i, II e, C is_digit)
                -> enable_if_t<std::is_integral<T>::value, int>
            {
                CXON_ASSERT(f && f < l, "unexpected");
                char c = peek(i, e);
                    if (is_sign_<T>(c))     CXON_READ()
                    if (c == '0') {         CXON_NEXT()
                                            goto trap_end; }
                       if (!is_digit(c))    return 0;
                    while ( is_digit(c))    CXON_NEXT()
                trap_end:
                    return f != l ? (*f = '\0', 1) : -1;
            }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rcx, -0x68(%rbp)
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq %r8, -0x30(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x2868b5
movq -0x10(%rbp), %rax
cmpq -0x18(%rbp), %rax
setb %al
movq -0x20(%rbp), %rsi
leaq -0x40(%rbp), %rdi
callq 0x21a220
movq -0x68(%rbp), %rsi
leaq -0x48(%rbp), %rdi
callq 0x21a220
leaq -0x40(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x21ab50
movb %al, -0x31(%rbp)
movsbl -0x31(%rbp), %edi
callq 0x286a70
testb $0x1, %al
jne 0x2868ee
jmp 0x286928
movq -0x68(%rbp), %rsi
movb -0x31(%rbp), %cl
movq -0x10(%rbp), %rax
movb %cl, (%rax)
movq -0x20(%rbp), %rax
movq %rax, -0x70(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x21a220
movq -0x70(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x21bcf0
movb %al, -0x31(%rbp)
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
movsbl -0x31(%rbp), %eax
cmpl $0x30, %eax
jne 0x286983
movq -0x10(%rbp), %rax
cmpq -0x18(%rbp), %rax
jne 0x286947
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x286a34
movq -0x68(%rbp), %rsi
movb -0x31(%rbp), %cl
movq -0x10(%rbp), %rax
movb %cl, (%rax)
movq -0x20(%rbp), %rax
movq %rax, -0x78(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x21a220
movq -0x78(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x21bcf0
movb %al, -0x31(%rbp)
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
jmp 0x286a00
movq -0x30(%rbp), %rax
movsbl -0x31(%rbp), %edi
callq *%rax
testb $0x1, %al
jne 0x28699d
movl $0x0, -0x4(%rbp)
jmp 0x286a34
jmp 0x28699f
movq -0x30(%rbp), %rax
movsbl -0x31(%rbp), %edi
callq *%rax
testb $0x1, %al
jne 0x2869af
jmp 0x2869fe
movq -0x10(%rbp), %rax
cmpq -0x18(%rbp), %rax
jne 0x2869c2
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x286a34
movq -0x68(%rbp), %rsi
movb -0x31(%rbp), %cl
movq -0x10(%rbp), %rax
movb %cl, (%rax)
movq -0x20(%rbp), %rax
movq %rax, -0x80(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x21a220
movq -0x80(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x21bcf0
movb %al, -0x31(%rbp)
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
jmp 0x28699f
jmp 0x286a00
movq -0x10(%rbp), %rax
cmpq -0x18(%rbp), %rax
je 0x286a1e
movq -0x10(%rbp), %rax
movb $0x0, (%rax)
movl $0x1, %eax
movl %eax, -0x84(%rbp)
jmp 0x286a2b
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl %eax, -0x84(%rbp)
jmp 0x286a2b
movl -0x84(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x90, %rsp
popq %rbp
retq