// File: /workspace/github_cpp_makefile_star2_O1/cqbqdd11519[P]DockerClient/rapidjson/include/rapidjson/reader.h
// Function: void rapidjson::GenericReader<rapidjson::UTF8<char>, rapidjson::UTF8<char>, rapidjson::CrtAllocator>::ParseStringToStream<0u, rapidjson::UTF8<char>, rapidjson::UTF8<char>, rapidjson::GenericStringStream<rapidjson::UTF8<char>>, rapidjson::GenericReader<rapidjson::UTF8<char>, rapidjson::UTF8<char>, rapidjson::CrtAllocator>::StackStream<char>>(rapidjson::GenericStringStream<rapidjson::UTF8<char>>&, rapidjson::GenericReader<rapidjson::UTF8<char>, rapidjson::UTF8<char>, rapidjson::CrtAllocator>::StackStream<char>&)
RAPIDJSON_FORCEINLINE void ParseStringToStream(InputStream& is, OutputStream& os) {
//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN
#define Z16 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
        static const char escape[256] = {
            Z16, Z16, 0, 0,'\"', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,'/',
            Z16, Z16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,'\\', 0, 0, 0,
            0, 0,'\b', 0, 0, 0,'\f', 0, 0, 0, 0, 0, 0, 0,'\n', 0,
            0, 0,'\r', 0,'\t', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
            Z16, Z16, Z16, Z16, Z16, Z16, Z16, Z16
        };
#undef Z16
//!@endcond

        for (;;) {
            // Scan and copy string before "\\\"" or < 0x20. This is an optional optimzation.
            if (!(parseFlags & kParseValidateEncodingFlag))
                ScanCopyUnescapedString(is, os);

            Ch c = is.Peek();
            if (RAPIDJSON_UNLIKELY(c == '\\')) {    // Escape
                size_t escapeOffset = is.Tell();    // For invalid escaping, report the initial '\\' as error offset
                is.Take();
                Ch e = is.Peek();
                if ((sizeof(Ch) == 1 || unsigned(e) < 256) && RAPIDJSON_LIKELY(escape[static_cast<unsigned char>(e)])) {
                    is.Take();
                    os.Put(static_cast<typename TEncoding::Ch>(escape[static_cast<unsigned char>(e)]));
                }
                else if (RAPIDJSON_LIKELY(e == 'u')) {    // Unicode
                    is.Take();
                    unsigned codepoint = ParseHex4(is, escapeOffset);
                    RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;
                    if (RAPIDJSON_UNLIKELY(codepoint >= 0xD800 && codepoint <= 0xDBFF)) {
                        // Handle UTF-16 surrogate pair
                        if (RAPIDJSON_UNLIKELY(!Consume(is, '\\') || !Consume(is, 'u')))
                            RAPIDJSON_PARSE_ERROR(kParseErrorStringUnicodeSurrogateInvalid, escapeOffset);
                        unsigned codepoint2 = ParseHex4(is, escapeOffset);
                        RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;
                        if (RAPIDJSON_UNLIKELY(codepoint2 < 0xDC00 || codepoint2 > 0xDFFF))
                            RAPIDJSON_PARSE_ERROR(kParseErrorStringUnicodeSurrogateInvalid, escapeOffset);
                        codepoint = (((codepoint - 0xD800) << 10) | (codepoint2 - 0xDC00)) + 0x10000;
                    }
                    TEncoding::Encode(os, codepoint);
                }
                else
                    RAPIDJSON_PARSE_ERROR(kParseErrorStringEscapeInvalid, escapeOffset);
            }
            else if (RAPIDJSON_UNLIKELY(c == '"')) {    // Closing double quote
                is.Take();
                os.Put('\0');   // null-terminate the string
                return;
            }
            else if (RAPIDJSON_UNLIKELY(static_cast<unsigned>(c) < 0x20)) { // RFC 4627: unescaped = %x20-21 / %x23-5B / %x5D-10FFFF
                if (c == '\0')
                    RAPIDJSON_PARSE_ERROR(kParseErrorStringMissQuotationMark, is.Tell());
                else
                    RAPIDJSON_PARSE_ERROR(kParseErrorStringInvalidEncoding, is.Tell());
            }
            else {
                size_t offset = is.Tell();
                if (RAPIDJSON_UNLIKELY((parseFlags & kParseValidateEncodingFlag ?
                    !Transcoder<SEncoding, TEncoding>::Validate(is, os) :
                    !Transcoder<SEncoding, TEncoding>::Transcode(is, os))))
                    RAPIDJSON_PARSE_ERROR(kParseErrorStringInvalidEncoding, offset);
            }
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdx, %r15
movq %rsi, %rbx
movq %rdi, %r14
movq (%rbx), %rcx
movzbl (%rcx), %eax
cmpl $0x5c, %eax
je 0xe7e9
cmpl $0x22, %eax
je 0xe8c8
cmpb $0x1f, %al
jbe 0xe8d8
leaq 0x1(%rcx), %rax
movq %rax, (%rbx)
movb (%rcx), %r12b
movq (%r15), %rdi
movl $0x1, %esi
callq 0x7420
movb %r12b, (%rax)
incl 0x8(%r15)
jmp 0xe7ad
movq %rcx, %r13
subq 0x8(%rbx), %r13
leaq 0x1(%rcx), %rax
movq %rax, (%rbx)
movzbl 0x1(%rcx), %eax
movq 0x97c6(%rip), %rdx      # 0x17fc8
movb (%rdx,%rax), %r12b
testb %r12b, %r12b
je 0xe814
addq $0x2, %rcx
movq %rcx, (%rbx)
jmp 0xe7d3
cmpb $0x75, %al
jne 0xe8f5
addq $0x2, %rcx
movq %rcx, (%rbx)
movq %r14, %rdi
movq %rbx, %rsi
movq %r13, %rdx
callq 0x7410
cmpl $0x0, 0x30(%r14)
jne 0xe8e6
movl %eax, %r12d
andl $0xfffffc00, %eax       # imm = 0xFFFFFC00
cmpl $0xd800, %eax           # imm = 0xD800
je 0xe85b
movq %r15, %rdi
movl %r12d, %esi
callq 0x7310
jmp 0xe7ad
movq (%rbx), %rax
cmpb $0x5c, (%rax)
jne 0xe902
leaq 0x1(%rax), %rcx
movq %rcx, (%rbx)
cmpb $0x75, 0x1(%rax)
jne 0xe902
addq $0x2, %rax
movq %rax, (%rbx)
movq %r14, %rdi
movq %rbx, %rsi
movq %r13, %rdx
callq 0x7410
cmpl $0x0, 0x30(%r14)
jne 0xe8c4
leal -0xe000(%rax), %ecx
cmpl $0xfffffbff, %ecx       # imm = 0xFFFFFBFF
jbe 0xe8b8
shll $0xa, %r12d
addl %eax, %r12d
addl $0xfca02400, %r12d      # imm = 0xFCA02400
movb $0x1, %al
testb %al, %al
jne 0xe84b
jmp 0xe8e6
movl $0x9, 0x30(%r14)
movq %r13, 0x38(%r14)
xorl %eax, %eax
jmp 0xe8b2
movq %rcx, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x7cb8
jmp 0xe8e6
movzbl %al, %edi
movq %r14, %rsi
movq %rbx, %rdx
callq 0x7c48
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %r14, %rdi
movq %r13, %rsi
callq 0x7c13
jmp 0xe8e6
movl $0x9, 0x30(%r14)
movq %r13, 0x38(%r14)
jmp 0xe8e6