// File: /workspace/github_cpp_makefile_star2_O2/oknenavin[P]cxon/test/../src/cxon/lang/common/cio/string.hxx
// Function: std::enable_if<!chr::is_char_8<char>::value || !is_forward_iterator<std::istreambuf_iterator<char, std::char_traits<char>>>::value, bool>::type cxon::cio::str::imp::string_read_tail_<cxon::JSON<cxon::cio::str::raw_traits<cxon::json::format_traits>>, cxon::cnt::range_container<char*>, std::istreambuf_iterator<char, std::char_traits<char>>, cxon::context<cxon::JSON<cxon::json::format_traits>>, char>(cxon::cnt::range_container<char*>&, 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 auto string_read_tail_(C& c, II& i, II e, Cx& cx)
                -> enable_if_t<!chr::is_char_8<T>::value || !is_forward_iterator<II>::value, bool>
            {
                constexpr bool HANDLE_ESCAPES = is_unquoted_key_context<X>::value || !X::assume_no_escapes;
                while (i != e) {
                    if (HANDLE_ESCAPES && *i == '\\') {
                        II const o = i; ++i;
                        CXON_IF_CONSTEXPR (is_unquoted_key_context<X>::value) {
                            if (i != e && *i == X::string::del)
                                return ++i, true;
                        }
                        char32_t c32 = chr::esc_to_utf32<X>(i, e, cx);
                            if (c32 == chr::bad_utf32) return rewind(i, o), false;
                        if (!char_append_(c, c32))
                            return rewind(i, o), cx/X::read_error::overflow;
                    }
                    else {
                        CXON_IF_CONSTEXPR (!is_unquoted_key_context<X>::value) {
                            if (delim_en_check<X>(*i))      return delim_en_read<X>(i, e);
                        }
                        CXON_IF_CONSTEXPR (X::validate_string_escapes) {
                            if (chr::is<X>::ctrl(*i))       return cx/X::read_error::unexpected;
                        }
                        if (!char_read_<X>(c, i, e, cx))    return false;
                    }
                }
                return cx/X::read_error::unexpected;
            }

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %r8, %rbx
movq %rsi, %r14
movq %rdi, %r15
leaq 0x8(%rsp), %r12
movq %rdx, (%r12)
movl %ecx, 0x8(%r12)
movq %r14, %rdi
movq %r12, %rsi
callq 0x8273
testb %al, %al
je 0xbdbf
movq %r14, %rdi
callq 0x82c4
movq %r14, %rdi
cmpb $0x5c, %al
jne 0xbd8b
callq 0x827e
movq 0x8(%rsp), %rsi
movl 0x10(%rsp), %edx
movq %r14, %rdi
movq %rbx, %rcx
callq 0xbe6f
cmpl $-0x1, %eax
je 0xbdbb
movq %r15, %rdi
movl %eax, %esi
callq 0xbf0b
testb %al, %al
jne 0xbd3f
jmp 0xbdd6
callq 0x82c4
cmpb $0x22, %al
je 0xbdc3
movq %r14, %rdi
callq 0x82c4
testb $-0x20, %al
je 0xbdbf
movq 0x8(%rsp), %rdx
movl 0x10(%rsp), %ecx
movq %r15, %rdi
movq %r14, %rsi
movq %rbx, %r8
callq 0xbf6e
testb %al, %al
jne 0xbd3f
xorl %eax, %eax
jmp 0xbde1
pushq $0x1
jmp 0xbdd8
movq 0x8(%rsp), %rsi
movl 0x10(%rsp), %edx
movq %r14, %rdi
callq 0xbf3c
jmp 0xbde1
pushq $0x8
popq %rsi
movq %rbx, %rdi
callq 0xb670
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq