// File: oknenavin[P]cxon/test/../src/cxon/lang/common/cio/char.hxx
// Function: char32_t cxon::cio::chr::imp::esc_to_utf32_<cxon::JSON<cxon::cio::key::quoted_traits<cxon::cxcf::format_traits>>, char const*>(char const*&, char const*)
inline char32_t esc_to_utf32_(II& i, II e) {
                switch (peek(i, e)) {
                    case '"' :  return ++i, U'"';
                    case '\\':  return ++i, U'\\';
                    case '/' :  return ++i, U'/';
                    case 'b' :  return ++i, U'\b';
                    case 'f' :  return ++i, U'\f';
                    case 'n' :  return ++i, U'\n';
                    case 'r' :  return ++i, U'\r';
                    case 't' :  return ++i, U'\t';
                    case 'u' :  return u_to_<X>::dec(i, e);
                    case ' ' :
                        CXON_IF_CONSTEXPR (is_quoted_key_context<X>::value)
                                return ++i, U' ';
                        else    return bad_utf32;
                    case ':' :
                        CXON_IF_CONSTEXPR (is_quoted_key_context<X>::value && X::map::div == ':')
                                return ++i, U':';
                        else    return bad_utf32;
                    case '=' :
                        CXON_IF_CONSTEXPR (is_quoted_key_context<X>::value && X::map::div == '=')
                                return ++i, U'=';
                        else    return bad_utf32;
                    case '\'':
                        CXON_IF_CONSTEXPR (X::string::del == '\'')
                                return ++i, U'\'';
                        else    return bad_utf32;
                    default  :  return bad_utf32;
                }
            }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x12250
movsbl %al, %eax
addl $-0x20, %eax
movl %eax, %ecx
movq %rcx, -0x20(%rbp)
subl $0x55, %eax
ja 0x153f5
movq -0x20(%rbp), %rax
leaq 0xabde0(%rip), %rcx     # 0xc10b0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x10(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movl $0x22, -0x4(%rbp)
jmp 0x153fc
movq -0x10(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movl $0x5c, -0x4(%rbp)
jmp 0x153fc
movq -0x10(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movl $0x2f, -0x4(%rbp)
jmp 0x153fc
movq -0x10(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movl $0x8, -0x4(%rbp)
jmp 0x153fc
movq -0x10(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movl $0xc, -0x4(%rbp)
jmp 0x153fc
movq -0x10(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movl $0xa, -0x4(%rbp)
jmp 0x153fc
movq -0x10(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movl $0xd, -0x4(%rbp)
jmp 0x153fc
movq -0x10(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movl $0x9, -0x4(%rbp)
jmp 0x153fc
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x15410
movl %eax, -0x4(%rbp)
jmp 0x153fc
movq -0x10(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movl $0x20, -0x4(%rbp)
jmp 0x153fc
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x153fc
movq -0x10(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movl $0x3d, -0x4(%rbp)
jmp 0x153fc
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x153fc
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop