// File: /workspace/github_cpp_makefile_star2_O3/oknenavin[P]cxon/test/../src/cxon/lang/common/cio/numeric.hxx
// Function: std::enable_if<std::is_integral<int>::value, bool>::type cxon::cio::num::imp::number_read__<cxon::json::format_traits, int, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, cxon::context<cxon::JSON<cxon::json::format_traits>>>(int&, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>&, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, cxon::context<cxon::JSON<cxon::json::format_traits>>&)
inline auto number_read__(T& t, II& i, II e, Cx& cx)
                -> enable_if_t<std::is_integral<T>::value, bool>
            {
                constexpr auto base = integer_base::constant<napa_type<Cx>>(10);
                II const o = i;
                    char s[num_len_max::constant<napa_type<Cx>>(32)];
                    switch (number_consume_<X, T>(std::begin(s), std::end(s), i, e, is_digit<X, base>::fun)) {
                        case -1: return rewind(i, o), cx/X::read_error::overflow;
                        case  0: return rewind(i, o), cx/X::read_error::integral_invalid;
                        default: {
                            auto const r = charconv::from_chars(std::begin(s), std::end(s), t, base); CXON_ASSERT(r.ec == std::errc(), "unexpected");
                            return true;
                        }
                    }
            }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x38, %rsp
movq %rcx, %r14
movq (%rsi), %rax
cmpq %rdx, %rax
je 0x11dac5
movq %rdi, %rbx
movb (%rax), %r8b
cmpb $0x2d, %r8b
jne 0x11d9ec
movb $0x2d, 0x10(%rsp)
leaq 0x1(%rax), %rdi
movq %rdi, (%rsi)
cmpq %rdx, %rdi
je 0x11dac5
movb (%rdi), %r8b
movl $0x1, %ecx
jmp 0x11d9f1
xorl %ecx, %ecx
movq %rax, %rdi
cmpb $0x30, %r8b
jne 0x11da76
movb $0x30, 0x10(%rsp,%rcx)
incq %rdi
movq %rdi, (%rsi)
incq %rcx
movb $0x0, 0x10(%rsp,%rcx)
movb $0x1, %bpl
cmpb $0x2b, 0x10(%rsp)
je 0x11dada
callq 0xe040
movq %rax, %r14
movl $0x0, (%rax)
leaq 0x10(%rsp), %r15
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
movl $0xa, %edx
callq 0xe340
movq $-0x80000000, %rcx      # imm = 0x80000000
cmpq $-0x80000000, %rax      # imm = 0x80000000
jl 0x11da5b
movl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
movl $0x80000000, %edx       # imm = 0x80000000
cmpq %rdx, %rax
jl 0x11da65
movl $0x22, (%r14)
movq %rcx, %rax
cmpq %r15, 0x8(%rsp)
je 0x11dada
cmpl $0x22, (%r14)
je 0x11dada
movl %eax, (%rbx)
jmp 0x11dada
movzbl %r8b, %r9d
addq $-0x30, %r9
cmpq $0x9, %r9
ja 0x11dac5
incq %rdi
leaq (%rsp,%rcx), %r10
addq $0x10, %r10
xorl %r9d, %r9d
leaq (%rcx,%r9), %r11
cmpq $0x20, %r11
je 0x11daf7
movb %r8b, (%r10,%r9)
leaq (%rdi,%r9), %r8
movq %r8, (%rsi)
cmpq %rdx, %r8
je 0x11dae7
movzbl (%r8), %r8d
movq %r8, %r11
addq $-0x30, %r11
incq %r9
cmpq $0xa, %r11
jb 0x11da92
addq %r9, %rcx
jmp 0x11daed
movq %rax, (%rsi)
callq 0x4a9e4
movl $0x3, (%r14)
movq %rax, 0x8(%r14)
xorl %ebp, %ebp
movl %ebp, %eax
addq $0x38, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
addq %r9, %rcx
incq %rcx
cmpq $0x20, %rcx
jne 0x11da05
movq %rax, (%rsi)
callq 0x4a9e4
movl $0x8, (%r14)
jmp 0x11dad4