// File: /workspace/github_cpp_makefile_star2_O3/oknenavin[P]cxon/test/../src/cxon/lang/common/cio/char.hxx
// Function: char32_t cxon::cio::chr::esc_to_utf32<cxon::JSON<cxon::cio::str::raw_traits<cxon::json::format_traits>>, std::istreambuf_iterator<char, std::char_traits<char>>, cxon::context<cxon::JSON<cxon::json::format_traits>>>(std::istreambuf_iterator<char, std::char_traits<char>>&, std::istreambuf_iterator<char, std::char_traits<char>>, cxon::context<cxon::JSON<cxon::json::format_traits>>&)
inline char32_t esc_to_utf32(II& i, II e, Cx& cx) {
            char32_t const c32 = imp::esc_to_utf32_<X>(i, e);
                if (c32 == bad_utf32) return cx/X::read_error::escape_invalid, bad_utf32;
            if (c32 < 0xD800 || c32 > 0xDBFF) return c32;
            // surrogate
                if (peek(i, e) != '\\') return cx/X::read_error::surrogate_invalid, bad_utf32;
            char32_t const s32 = (++i, imp::esc_to_utf32_<X>(i, e));
                if (s32 < 0xDC00 || s32 > 0xDFFF)
                    return (s32 == bad_utf32 ? cx/X::read_error::escape_invalid : cx/X::read_error::surrogate_invalid), bad_utf32;
            return char32_t(0x10000 + (((c32 - 0xD800) << 10) | (s32 - 0xDC00)));
        }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rcx, %rbx
movl %edx, %ebp
movq %rsi, %r15
movq %rdi, %r12
callq 0xf7fb
cmpl $-0x1, %eax
je 0xf68f
movl %eax, %r14d
leal -0xdc00(%r14), %eax
cmpl $0xfffffc00, %eax       # imm = 0xFFFFFC00
jb 0xf7cd
movq (%r12), %r13
movl 0x8(%r12), %esi
testq %r13, %r13
setne %al
cmpl $-0x1, %esi
sete %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0xf69f
movq 0x10(%r13), %rax
cmpq 0x18(%r13), %rax
jae 0xf76f
movzbl (%rax), %eax
jmp 0xf6a1
callq 0xdf1e
movl $0x6, (%rbx)
jmp 0xf7c3
movl %esi, %eax
testq %r15, %r15
setne %cl
cmpl $-0x1, %ebp
sete %dl
andb %cl, %dl
cmpb $0x1, %dl
jne 0xf6cd
movq 0x10(%r15), %rcx
cmpq 0x18(%r15), %rcx
jae 0xf78f
cmpl $-0x1, %eax
jne 0xf7b8
jmp 0xf6e1
cmpl $-0x1, %ebp
sete %cl
cmpl $-0x1, %eax
sete %al
cmpb %al, %cl
je 0xf7b8
cmpl $-0x1, %esi
sete %al
testq %r13, %r13
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0xf705
movq 0x10(%r13), %rax
cmpq 0x18(%r13), %rax
jae 0xf7df
movzbl (%rax), %esi
cmpb $0x5c, %sil
jne 0xf7b8
movq (%r12), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0xf7f0
incq %rax
movq %rax, 0x10(%rdi)
movl $0xffffffff, 0x8(%r12)  # imm = 0xFFFFFFFF
movq %r12, %rdi
movq %r15, %rsi
movl %ebp, %edx
callq 0xf7fb
movl %eax, %r15d
leal -0xe000(%r15), %eax
cmpl $0xfffffbff, %eax       # imm = 0xFFFFFBFF
ja 0xf75f
callq 0xdf1e
cmpl $-0x1, %r15d
jne 0xf7bd
jmp 0xf694
shll $0xa, %r14d
addl %r15d, %r14d
addl $0xfca02400, %r14d      # imm = 0xFCA02400
jmp 0xf7cd
movq (%r13), %rax
movq %r13, %rdi
movl %esi, 0x4(%rsp)
callq *0x48(%rax)
movl 0x4(%rsp), %esi
xorl %ecx, %ecx
cmpl $-0x1, %eax
cmoveq %rcx, %r13
jmp 0xf6a1
cmpl $-0x1, %eax
sete 0x3(%rsp)
movq (%r15), %rax
movq %r15, %rdi
movl %esi, 0x4(%rsp)
callq *0x48(%rax)
movl 0x4(%rsp), %esi
cmpl $-0x1, %eax
sete %al
xorb 0x3(%rsp), %al
jne 0xf6e1
callq 0xdf1e
movl $0x7, (%rbx)
movq %rax, 0x8(%rbx)
movl $0xffffffff, %r14d      # imm = 0xFFFFFFFF
movl %r14d, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq (%r13), %rax
movq %r13, %rdi
callq *0x48(%rax)
movl %eax, %esi
jmp 0xf705
movq (%rdi), %rax
callq *0x50(%rax)
jmp 0xf728