// File: /workspace/github_cpp_makefile_star2_O3/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
movl %edx, %r14d
movq %rsi, %r15
movq %rdi, %rbx
movq %rsi, 0x8(%rsp)
movl %edx, 0x10(%rsp)
movq (%rdi), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0xfdcf
incq %rax
movq %rax, 0x10(%rdi)
movl $0xffffffff, 0x8(%rbx)  # imm = 0xFFFFFFFF
movq %rbx, %rdi
callq 0x9cb2
movl %eax, %r12d
testq %r15, %r15
setne %al
cmpl $-0x1, %r14d
sete %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0xfb95
movq 0x10(%r15), %rax
cmpq 0x18(%r15), %rax
jae 0xfdda
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
cmpl $-0x1, %r12d
jne 0xfdbe
jmp 0xfbb0
cmpl $-0x1, %r12d
sete %al
cmpl $-0x1, %r14d
setne %cl
xorb %al, %cl
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
jne 0xfdbe
movq %rbx, %rdi
callq 0x9cb2
movzbl %al, %eax
leaq 0x354be(%rip), %rcx     # 0x45080
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
testb $0x40, (%rax,%rcx)
je 0xfdbe
movq %rbx, %rdi
callq 0x9cb2
movzbl %al, %eax
leaq 0x351dd(%rip), %rcx     # 0x44dc0
movl (%rcx,%rax,4), %ecx
movq (%rbx), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
movl %ecx, 0x4(%rsp)
jae 0xfe03
incq %rax
movq %rax, 0x10(%rdi)
cmpl $-0x1, %r14d
sete %r13b
movl $0xffffffff, 0x8(%rbx)  # imm = 0xFFFFFFFF
movq %rbx, %rdi
callq 0x9cb2
movl %eax, %r12d
testq %r15, %r15
setne %al
andb %r13b, %al
cmpb $0x1, %al
jne 0xfc43
movq 0x10(%r15), %rax
cmpq 0x18(%r15), %rax
jae 0xfe0e
cmpl $-0x1, %r12d
jne 0xfdbe
jmp 0xfc59
cmpl $-0x1, %r12d
sete %al
cmpl $-0x1, %r14d
setne %cl
xorb %al, %cl
jne 0xfdbe
movq %rbx, %rdi
callq 0x9cb2
movzbl %al, %eax
leaq 0x35415(%rip), %rcx     # 0x45080
testb $0x40, (%rax,%rcx)
je 0xfdbe
movq %rbx, %rdi
callq 0x9cb2
movzbl %al, %eax
leaq 0x35139(%rip), %rcx     # 0x44dc0
movl (%rcx,%rax,4), %ecx
movq (%rbx), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
movl %ecx, (%rsp)
jae 0xfe3e
incq %rax
movq %rax, 0x10(%rdi)
cmpl $-0x1, %r14d
sete %r13b
movl $0xffffffff, 0x8(%rbx)  # imm = 0xFFFFFFFF
movq %rbx, %rdi
callq 0x9cb2
movl %eax, %r12d
testq %r15, %r15
setne %al
andb %r13b, %al
cmpb $0x1, %al
jne 0xfce6
movq 0x10(%r15), %rax
cmpq 0x18(%r15), %rax
jae 0xfe49
cmpl $-0x1, %r12d
jne 0xfdbe
jmp 0xfcfc
cmpl $-0x1, %r12d
sete %al
cmpl $-0x1, %r14d
setne %cl
xorb %al, %cl
jne 0xfdbe
movq %rbx, %rdi
callq 0x9cb2
movzbl %al, %eax
leaq 0x35372(%rip), %r14     # 0x45080
testb $0x40, (%rax,%r14)
je 0xfdbe
movq %rbx, %rdi
callq 0x9cb2
movzbl %al, %eax
movl 0x4(%rsp), %ecx
shll $0x8, %ecx
movl (%rsp), %r15d
shll $0x4, %r15d
orl %ecx, %r15d
leaq 0x35083(%rip), %rcx     # 0x44dc0
orl (%rcx,%rax,4), %r15d
movq (%rbx), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0xfe73
incq %rax
movq %rax, 0x10(%rdi)
movl $0xffffffff, 0x8(%rbx)  # imm = 0xFFFFFFFF
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0xfe89
testb %al, %al
jne 0xfdbe
movq %rbx, %rdi
callq 0x9cb2
movzbl %al, %eax
testb $0x40, (%rax,%r14)
je 0xfdbe
movq %rbx, %rdi
callq 0x9cb2
movzbl %al, %eax
shll $0x4, %r15d
movl %r15d, %ebp
leaq 0x35024(%rip), %rcx     # 0x44dc0
orl (%rcx,%rax,4), %ebp
movq (%rbx), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0xfe7e
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 0xfb50
movq (%r15), %rax
movq %r15, %rdi
callq *0x48(%rax)
cmpl $-0x1, %eax
jne 0xfb84
movq $0x0, 0x8(%rsp)
cmpl $-0x1, %r12d
je 0xfe37
xorl %r15d, %r15d
jmp 0xfbb0
movq (%rdi), %rax
callq *0x50(%rax)
jmp 0xfc02
movq (%r15), %rax
movq %r15, %rdi
callq *0x48(%rax)
cmpl $-0x1, %eax
jne 0xfc37
movq $0x0, 0x8(%rsp)
cmpl $-0x1, %r12d
je 0xfdbe
xorl %r15d, %r15d
jmp 0xfc59
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
jmp 0xfdbe
movq (%rdi), %rax
callq *0x50(%rax)
jmp 0xfca5
movq (%r15), %rax
movq %r15, %rdi
callq *0x48(%rax)
cmpl $-0x1, %eax
jne 0xfcda
movq $0x0, 0x8(%rsp)
cmpl $-0x1, %r12d
jne 0xfcfc
jmp 0xfdbe
movq (%rdi), %rax
callq *0x50(%rax)
jmp 0xfd59
movq (%rdi), %rax
callq *0x50(%rax)
jmp 0xfdb7