// File: /workspace/github_cpp_makefile_star2_O1/oknenavin[P]cxon/test/../src/cxon/lang/common/cio/char.hxx
// Function: char32_t cxon::cio::chr::esc_to_utf32<cxon::JSON<cxon::cio::key::quoted_traits<cxon::cxcf::format_traits>>, char const*, cxon::context<cxon::JSON<cxon::cxcf::format_traits>>>(char const*&, char const*, cxon::context<cxon::JSON<cxon::cxcf::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 %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rdx, %rbx
movq %rsi, %r12
movq %rdi, %r15
movq (%rdi), %rax
cmpq %rsi, %rax
je 0xaaa8
movb (%rax), %cl
jmp 0xaaaa
movb $-0x1, %cl
movzbl %cl, %ecx
movl $0xffffffff, %r14d      # imm = 0xFFFFFFFF
cmpl $0x61, %ecx
jg 0xaae9
cmpl $0x2e, %ecx
jle 0xab12
cmpl $0x2f, %ecx
je 0xab62
cmpl $0x3d, %ecx
je 0xab54
cmpl $0x5c, %ecx
jne 0xaba8
incq %rax
movq %rax, (%r15)
movl $0x5c, %r14d
jmp 0xaba8
leal -0x6e(%rcx), %edx
cmpl $0x7, %edx
ja 0xab2e
leaq 0x3c654(%rip), %rcx     # 0x4714c
movslq (%rcx,%rdx,4), %rdx
addq %rcx, %rdx
jmpq *%rdx
incq %rax
movq %rax, (%r15)
movl $0xa, %r14d
jmp 0xaba8
cmpl $0x20, %ecx
je 0xab46
cmpl $0x22, %ecx
jne 0xaba8
incq %rax
movq %rax, (%r15)
movl $0x22, %r14d
jmp 0xaba8
cmpl $0x62, %ecx
je 0xab9c
cmpl $0x66, %ecx
jne 0xaba8
incq %rax
movq %rax, (%r15)
movl $0xc, %r14d
jmp 0xaba8
incq %rax
movq %rax, (%r15)
movl $0x20, %r14d
jmp 0xaba8
incq %rax
movq %rax, (%r15)
movl $0x3d, %r14d
jmp 0xaba8
incq %rax
movq %rax, (%r15)
movl $0x2f, %r14d
jmp 0xaba8
movq %r15, %rdi
movq %r12, %rsi
callq 0xad4a
movl %eax, %r14d
jmp 0xaba8
incq %rax
movq %rax, (%r15)
movl $0xd, %r14d
jmp 0xaba8
incq %rax
movq %rax, (%r15)
movl $0x9, %r14d
jmp 0xaba8
incq %rax
movq %rax, (%r15)
movl $0x8, %r14d
cmpl $-0x1, %r14d
je 0xabd9
leal -0xdc00(%r14), %eax
cmpl $0xfffffc00, %eax       # imm = 0xFFFFFC00
jb 0xabfb
movq (%r15), %rax
cmpq %r12, %rax
je 0xabe6
cmpb $0x5c, (%rax)
jne 0xabe6
leaq 0x1(%rax), %rcx
movq %rcx, (%r15)
cmpq %r12, %rcx
je 0xac08
movb (%rcx), %cl
jmp 0xac0a
callq 0xcf7a
movl $0x6, (%rbx)
jmp 0xabf1
callq 0xcf7a
movl $0x7, (%rbx)
movq %rax, 0x8(%rbx)
movl $0xffffffff, %r14d      # imm = 0xFFFFFFFF
movl %r14d, %eax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
movb $-0x1, %cl
movzbl %cl, %ecx
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
cmpl $0x61, %ecx
jg 0xac4a
cmpl $0x2e, %ecx
jle 0xac74
cmpl $0x2f, %ecx
je 0xaccb
cmpl $0x3d, %ecx
je 0xacbc
cmpl $0x5c, %ecx
jne 0xad15
addq $0x2, %rax
movq %rax, (%r15)
movl $0x5c, %r13d
jmp 0xad15
leal -0x6e(%rcx), %edx
cmpl $0x7, %edx
ja 0xac94
leaq 0x3c513(%rip), %rcx     # 0x4716c
movslq (%rcx,%rdx,4), %rdx
addq %rcx, %rdx
jmpq *%rdx
addq $0x2, %rax
movq %rax, (%r15)
movl $0xa, %r13d
jmp 0xad15
cmpl $0x20, %ecx
je 0xacad
cmpl $0x22, %ecx
jne 0xad15
addq $0x2, %rax
movq %rax, (%r15)
movl $0x22, %r13d
jmp 0xad15
cmpl $0x62, %ecx
je 0xad08
cmpl $0x66, %ecx
jne 0xad15
addq $0x2, %rax
movq %rax, (%r15)
movl $0xc, %r13d
jmp 0xad15
addq $0x2, %rax
movq %rax, (%r15)
movl $0x20, %r13d
jmp 0xad15
addq $0x2, %rax
movq %rax, (%r15)
movl $0x3d, %r13d
jmp 0xad15
addq $0x2, %rax
movq %rax, (%r15)
movl $0x2f, %r13d
jmp 0xad15
movq %r15, %rdi
movq %r12, %rsi
callq 0xad4a
movl %eax, %r13d
jmp 0xad15
addq $0x2, %rax
movq %rax, (%r15)
movl $0xd, %r13d
jmp 0xad15
addq $0x2, %rax
movq %rax, (%r15)
movl $0x9, %r13d
jmp 0xad15
addq $0x2, %rax
movq %rax, (%r15)
movl $0x8, %r13d
leal -0xe000(%r13), %eax
cmpl $0xfffffbff, %eax       # imm = 0xFFFFFBFF
ja 0xad37
callq 0xcf7a
cmpl $-0x1, %r13d
jne 0xabeb
jmp 0xabde
shll $0xa, %r14d
addl %r13d, %r14d
addl $0xfca02400, %r14d      # imm = 0xFCA02400
jmp 0xabfb