// File: /workspace/github_cpp_makefile_star2_O1/oknenavin[P]cxon/test/../src/cxon/lang/common/cio/char.hxx
// Function: std::enable_if<!is_random_access_iterator<std::istreambuf_iterator<char, std::char_traits<char>>>::value, char32_t>::type cxon::cio::chr::imp::u_to_<cxon::JSON<cxon::cio::str::raw_traits<cxon::json::format_traits>>>::dec<std::istreambuf_iterator<char, std::char_traits<char>>>(std::istreambuf_iterator<char, std::char_traits<char>>&, std::istreambuf_iterator<char, std::char_traits<char>>)
static auto dec(II& i, II e) -> enable_if_t<!is_random_access_iterator<II>::value, char32_t> {
#                       define CXON_NEXT_HEX() if (++i == e || !is<X>::digit16(*i)) return bad_utf32
                            char32_t c;
                                CXON_NEXT_HEX(); c = hex_to_dec_[(unsigned char)*i];
                                CXON_NEXT_HEX(); c = hex_to_dec_[(unsigned char)*i] | (c << 4);
                                CXON_NEXT_HEX(); c = hex_to_dec_[(unsigned char)*i] | (c << 4);
                                CXON_NEXT_HEX(); c = hex_to_dec_[(unsigned char)*i] | (c << 4);
                            return ++i, c;
#                       undef CXON_NEXT_HEX
                    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
movq %rsi, (%rsp)
movl %edx, 0x8(%rsp)
movq (%rdi), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0xedc7
incq %rax
movq %rax, 0x10(%rdi)
movl $0xffffffff, 0x8(%rbx)  # imm = 0xFFFFFFFF
movq %rbx, %rdi
callq 0x9bbc
movl %eax, %ebp
movl 0x8(%rsp), %eax
movq (%rsp), %rdi
testq %rdi, %rdi
setne %cl
cmpl $-0x1, %eax
sete %dl
andb %cl, %dl
cmpb $0x1, %dl
jne 0xebab
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0xedd2
movzbl (%rax), %eax
cmpl $-0x1, %eax
jne 0xebab
movq $0x0, (%rsp)
cmpl $-0x1, %ebp
sete %cl
cmpl $-0x1, %eax
setne %al
xorb %cl, %al
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
jne 0xedb6
movq %rbx, %rdi
callq 0x9bbc
movzbl %al, %eax
leaq 0x3956a(%rip), %r12     # 0x48140
testb $0x40, (%rax,%r12)
je 0xedb6
movq %rbx, %rdi
callq 0x9bbc
movzbl %al, %eax
leaq 0x3928d(%rip), %r15     # 0x47e80
movl (%r15,%rax,4), %r13d
movq (%rbx), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0xeddd
incq %rax
movq %rax, 0x10(%rdi)
movl $0xffffffff, 0x8(%rbx)  # imm = 0xFFFFFFFF
movq %rbx, %rdi
callq 0x9bbc
movl %eax, %r14d
movl 0x8(%rsp), %eax
movq (%rsp), %rdi
testq %rdi, %rdi
setne %cl
cmpl $-0x1, %eax
sete %dl
andb %cl, %dl
cmpb $0x1, %dl
jne 0xec5a
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0xede8
movzbl (%rax), %eax
cmpl $-0x1, %eax
jne 0xec5a
movq $0x0, (%rsp)
cmpl $-0x1, %r14d
sete %cl
cmpl $-0x1, %eax
setne %al
xorb %cl, %al
jne 0xedb6
movq %rbx, %rdi
callq 0x9bbc
movzbl %al, %eax
testb $0x40, (%rax,%r12)
je 0xedb6
movq %rbx, %rdi
callq 0x9bbc
movzbl %al, %eax
movl (%r15,%rax,4), %ecx
movq (%rbx), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
movl %ecx, 0x14(%rsp)
jae 0xedf3
incq %rax
movq %rax, 0x10(%rdi)
movl $0xffffffff, 0x8(%rbx)  # imm = 0xFFFFFFFF
movq %rbx, %rdi
callq 0x9bbc
movl %eax, %r14d
movl 0x8(%rsp), %eax
movq (%rsp), %rdi
testq %rdi, %rdi
setne %cl
cmpl $-0x1, %eax
sete %dl
andb %cl, %dl
cmpb $0x1, %dl
jne 0xecfb
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0xedfe
movzbl (%rax), %eax
cmpl $-0x1, %eax
jne 0xecfb
movq $0x0, (%rsp)
cmpl $-0x1, %r14d
sete %cl
cmpl $-0x1, %eax
setne %al
xorb %cl, %al
jne 0xedb6
movq %rbx, %rdi
callq 0x9bbc
movzbl %al, %eax
testb $0x40, (%rax,%r12)
je 0xedb6
movq %rbx, %rdi
callq 0x9bbc
movzbl %al, %eax
shll $0x8, %r13d
movl 0x14(%rsp), %r14d
shll $0x4, %r14d
orl %r13d, %r14d
orl (%r15,%rax,4), %r14d
movq (%rbx), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0xee09
incq %rax
movq %rax, 0x10(%rdi)
movl $0xffffffff, 0x8(%rbx)  # imm = 0xFFFFFFFF
movq %rsp, %rsi
movq %rbx, %rdi
callq 0xee1c
testb %al, %al
jne 0xedb6
movq %rbx, %rdi
callq 0x9bbc
movzbl %al, %eax
testb $0x40, (%rax,%r12)
je 0xedb6
movq %rbx, %rdi
callq 0x9bbc
movzbl %al, %eax
shll $0x4, %r14d
movl %r14d, %ebp
orl (%r15,%rax,4), %ebp
movq (%rbx), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0xee14
incq %rax
movq %rax, 0x10(%rdi)
movl $0xffffffff, 0x8(%rbx)  # imm = 0xFFFFFFFF
movl %ebp, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq (%rdi), %rax
callq *0x50(%rax)
jmp 0xeb61
movq (%rdi), %rax
callq *0x48(%rax)
jmp 0xeb9e
movq (%rdi), %rax
callq *0x50(%rax)
jmp 0xec0f
movq (%rdi), %rax
callq *0x48(%rax)
jmp 0xec4d
movq (%rdi), %rax
callq *0x50(%rax)
jmp 0xecb0
movq (%rdi), %rax
callq *0x48(%rax)
jmp 0xecee
movq (%rdi), %rax
callq *0x50(%rax)
jmp 0xed5d
movq (%rdi), %rax
callq *0x50(%rax)
jmp 0xedaf