// File: 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
movq %rsp, %rbp
subq $0x30, %rsp
movq %rsi, -0x18(%rbp)
movl %edx, -0x10(%rbp)
movq %rdi, -0x20(%rbp)
movq -0x20(%rbp), %rdi
callq 0x115f0
movq %rax, %rdi
leaq -0x18(%rbp), %rsi
callq 0x1e020
testb $0x1, %al
jne 0x1dec1
movq -0x20(%rbp), %rdi
callq 0x115c0
movsbl %al, %edi
callq 0x1e050
testb $0x1, %al
jne 0x1decd
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x1e00b
movq -0x20(%rbp), %rdi
callq 0x115c0
movzbl %al, %eax
movl %eax, %ecx
leaq 0xa515e(%rip), %rax     # 0xc3040
movl (%rax,%rcx,4), %eax
movl %eax, -0x24(%rbp)
movq -0x20(%rbp), %rdi
callq 0x115f0
movq %rax, %rdi
leaq -0x18(%rbp), %rsi
callq 0x1e020
testb $0x1, %al
jne 0x1df16
movq -0x20(%rbp), %rdi
callq 0x115c0
movsbl %al, %edi
callq 0x1e050
testb $0x1, %al
jne 0x1df22
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x1e00b
movq -0x20(%rbp), %rdi
callq 0x115c0
movzbl %al, %eax
movl %eax, %ecx
leaq 0xa5109(%rip), %rax     # 0xc3040
movl (%rax,%rcx,4), %eax
movl -0x24(%rbp), %ecx
shll $0x4, %ecx
orl %ecx, %eax
movl %eax, -0x24(%rbp)
movq -0x20(%rbp), %rdi
callq 0x115f0
movq %rax, %rdi
leaq -0x18(%rbp), %rsi
callq 0x1e020
testb $0x1, %al
jne 0x1df73
movq -0x20(%rbp), %rdi
callq 0x115c0
movsbl %al, %edi
callq 0x1e050
testb $0x1, %al
jne 0x1df7f
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x1e00b
movq -0x20(%rbp), %rdi
callq 0x115c0
movzbl %al, %eax
movl %eax, %ecx
leaq 0xa50ac(%rip), %rax     # 0xc3040
movl (%rax,%rcx,4), %eax
movl -0x24(%rbp), %ecx
shll $0x4, %ecx
orl %ecx, %eax
movl %eax, -0x24(%rbp)
movq -0x20(%rbp), %rdi
callq 0x115f0
movq %rax, %rdi
leaq -0x18(%rbp), %rsi
callq 0x1e020
testb $0x1, %al
jne 0x1dfd0
movq -0x20(%rbp), %rdi
callq 0x115c0
movsbl %al, %edi
callq 0x1e050
testb $0x1, %al
jne 0x1dfd9
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x1e00b
movq -0x20(%rbp), %rdi
callq 0x115c0
movzbl %al, %eax
movl %eax, %ecx
leaq 0xa5052(%rip), %rax     # 0xc3040
movl (%rax,%rcx,4), %eax
movl -0x24(%rbp), %ecx
shll $0x4, %ecx
orl %ecx, %eax
movl %eax, -0x24(%rbp)
movq -0x20(%rbp), %rdi
callq 0x115f0
movl -0x24(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop