// File: /workspace/github_cpp_makefile_star2_O3/oknenavin[P]cxon/test/../src/cxon/lang/common/cio/char.hxx
// Function: bool cxon::cio::chr::imp::encode_<cxon::JSON<cxon::cio::key::unquoted_traits<cxon::json::format_traits>>, char>::value<cxon::json::indenter<cxon::JSON<cxon::JSON<cxon::json::format_traits>>, std::ostreambuf_iterator<char, std::char_traits<char>>>, cxon::context<cxon::JSON<cxon::json::format_traits>, cxon::napa::imp::var<cxon::node::recursion_guard, unsigned int>>>(cxon::json::indenter<cxon::JSON<cxon::JSON<cxon::json::format_traits>>, std::ostreambuf_iterator<char, std::char_traits<char>>>&, char, cxon::context<cxon::JSON<cxon::json::format_traits>, cxon::napa::imp::var<cxon::node::recursion_guard, unsigned int>>&)
static bool value(O& o, char c, Cx& cx) {
                        static constexpr char const*const esc_[] = {
                            "\\u0000", "\\u0001", "\\u0002", "\\u0003", "\\u0004", "\\u0005", "\\u0006", "\\u0007",
                                "\\b",     "\\t",     "\\n", "\\u000b",     "\\f",     "\\r", "\\u000e", "\\u000f",
                            "\\u0010", "\\u0011", "\\u0012", "\\u0013", "\\u0014", "\\u0015", "\\u0016", "\\u0017",
                            "\\u0018", "\\u0019", "\\u001a", "\\u001b", "\\u001c", "\\u001d", "\\u001e", "\\u001f"
                        };
                        static constexpr unsigned len_[] = { 6, 6, 6, 6, 6, 6, 6, 6, 2, 2, 2, 6, 2, 2, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 };
                        static_assert(X::string::del == '"' || X::string::del == '\'', "expecting single or double quotes as a string delimiter");
                        static_assert(X::map::div == ':' || X::map::div == '=', "expecting colon or equal sign as a key/value divider");
                        switch (c) {
                            case  0: case  1: case  2: case  3: case  4: case  5: case  6: case  7:
                            case  8: case  9: case 10: case 11: case 12: case 13: case 14: case 15:
                            case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23:
                            case 24: case 25: case 26: case 27: case 28: case 29: case 30: case 31:
                                        return poke<X>(o, esc_[(unsigned char)c], len_[(unsigned char)c], cx);
                            case ' ' :
                                CXON_IF_CONSTEXPR (is_quoted_key_context<X>::value)
                                        return poke<X>(o, "\\ ", 2, cx);
                                else    return poke<X>(o, ' ', cx);
                            case '"':
                                CXON_IF_CONSTEXPR (is_unquoted_key_context<X>::value)
                                        return poke<X>(o, "\\u0022", 6, cx);
                                CXON_IF_CONSTEXPR (is_quoted_key_context<X>::value || X::string::del == '\'')
                                        return poke<X>(o, '"', cx);
                                else    return poke<X>(o, "\\\"", 2, cx);
                            case '\'':
                                CXON_IF_CONSTEXPR (is_unquoted_key_context<X>::value)
                                        return poke<X>(o, '\'', cx);
                                CXON_IF_CONSTEXPR (is_quoted_key_context<X>::value || X::string::del == '"')
                                        return poke<X>(o, '\'', cx);
                                else    return poke<X>(o, "\\'", 2, cx);
                            case ':' :
                                CXON_IF_CONSTEXPR (is_quoted_key_context<X>::value && X::map::div == ':')
                                        return poke<X>(o, "\\:", 2, cx);
                                else    return poke<X>(o, ':', cx);
                            case '=' :
                                CXON_IF_CONSTEXPR (is_quoted_key_context<X>::value && X::map::div == '=')
                                        return poke<X>(o, "\\=", 2, cx);
                                else    return poke<X>(o, '=', cx);
                            case '\\':  return poke<X>(o, "\\\\", 2, cx);
                            default  :  return poke<X>(o, c, cx);
                        }
                    }

// Assembly:
pushq %rbx
subq $0x10, %rsp
movq %rdx, %rbx
cmpl $0x20, %esi
jae 0x1ef60
leaq 0x39804(%rip), %rax     # 0x58720
movzbl %sil, %ecx
movq (%rax,%rcx,8), %rax
leaq 0x26405(%rip), %rdx     # 0x45330
movl (%rdx,%rcx,4), %ecx
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
movq %rsp, %rdx
movq %rcx, (%rdx)
callq 0x1f274
movl %eax, %ecx
movb $0x1, %al
testb %cl, %cl
jne 0x1ef5a
callq 0x1e39a
movl $0x1, (%rbx)
movq %rax, 0x8(%rbx)
xorl %eax, %eax
addq $0x10, %rsp
popq %rbx
retq
cmpl $0x39, %esi
jg 0x1ef7b
cmpl $0x20, %esi
je 0x1efa5
cmpl $0x22, %esi
je 0x1efb9
cmpl $0x27, %esi
jne 0x1efb3
movl $0x27, %esi
jmp 0x1efdc
cmpl $0x3a, %esi
je 0x1efac
cmpl $0x3d, %esi
je 0x1efd7
cmpl $0x5c, %esi
jne 0x1efb3
leaq 0x25cb3(%rip), %rax     # 0x44c44
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
movq %rsp, %rdx
movq $0x2, (%rdx)
jmp 0x1ef3c
movl $0x20, %esi
jmp 0x1efdc
movl $0x3a, %esi
jmp 0x1efdc
movsbl %sil, %esi
jmp 0x1efdc
leaq 0x25c7d(%rip), %rax     # 0x44c3d
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
movq %rsp, %rdx
movq $0x6, (%rdx)
jmp 0x1ef3c
movl $0x3d, %esi
callq 0x1dfba
jmp 0x1ef41