// File: /workspace/github_cpp_makefile_star2_O3/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, %r14
movq %rdi, %rbx
leaq 0x30(%rdi), %r13
movq (%r14), %rax
movzbl (%rax), %ecx
cmpl $0x5c, %ecx
je 0xe558
cmpl $0x22, %ecx
je 0xe647
cmpb $0x1f, %cl
jbe 0xe663
leaq 0x1(%rax), %rcx
movq %rcx, (%r14)
movb (%rax), %r12b
movq (%r15), %rdi
movl $0x1, %esi
callq 0x7410
movb %r12b, (%rax)
incl 0x8(%r15)
jmp 0xe51b
movq %r13, -0x30(%rbp)
movq %rax, %r13
subq 0x8(%r14), %r13
leaq 0x1(%rax), %rcx
movq %rcx, (%r14)
movzbl 0x1(%rax), %ecx
movq 0x7a53(%rip), %rdx      # 0x15fc8
movb (%rdx,%rcx), %r12b
testb %r12b, %r12b
je 0xe5a2
addq $0x2, %rax
movq %rax, (%r14)
movq (%r15), %rdi
movl $0x1, %esi
callq 0x7410
movb %r12b, (%rax)
incl 0x8(%r15)
movq -0x30(%rbp), %r13
jmp 0xe51b
cmpb $0x75, %cl
jne 0xe6dc
addq $0x2, %rax
movq %rax, (%r14)
movq %rbx, %rdi
movq %r14, %rsi
movq %r13, %rdx
callq 0x7400
cmpl $0x0, 0x30(%rbx)
jne 0xe68f
movl %eax, %r12d
andl $0xfffffc00, %eax       # imm = 0xFFFFFC00
cmpl $0xd800, %eax           # imm = 0xD800
je 0xe5ed
movq %r15, %rdi
movl %r12d, %esi
callq 0x7300
movq -0x30(%rbp), %r13
jmp 0xe51b
movq (%r14), %rax
cmpb $0x5c, (%rax)
jne 0xe6ed
leaq 0x1(%rax), %rcx
movq %rcx, (%r14)
cmpb $0x75, 0x1(%rax)
jne 0xe6ed
addq $0x2, %rax
movq %rax, (%r14)
movq %rbx, %rdi
movq %r14, %rsi
movq %r13, %rdx
callq 0x7400
cmpl $0x0, 0x30(%rbx)
jne 0xe68f
leal -0xe000(%rax), %ecx
cmpl $0xfffffbff, %ecx       # imm = 0xFFFFFBFF
jbe 0xe6ed
shll $0xa, %r12d
addl %eax, %r12d
addl $0xfca02400, %r12d      # imm = 0xFCA02400
jmp 0xe5d9
incq %rax
movq %rax, (%r14)
movq (%r15), %rdi
movl $0x1, %esi
callq 0x7410
movb $0x0, (%rax)
incl 0x8(%r15)
jmp 0xe68f
movl (%r13), %edx
testb %cl, %cl
je 0xe67c
testl %edx, %edx
jne 0xe69e
subq 0x8(%r14), %rax
movl $0xc, 0x30(%rbx)
jmp 0xe68b
testl %edx, %edx
jne 0xe6bd
subq 0x8(%r14), %rax
movl $0xb, 0x30(%rbx)
movq %rax, 0x38(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1ffa(%rip), %rdi      # 0x1069f
leaq 0x2004(%rip), %rsi      # 0x106b0
leaq 0x26ac(%rip), %rcx      # 0x10d5f
movl $0x415, %edx            # imm = 0x415
callq 0x72b0
leaq 0x1fdb(%rip), %rdi      # 0x1069f
leaq 0x1fe5(%rip), %rsi      # 0x106b0
leaq 0x268d(%rip), %rcx      # 0x10d5f
movl $0x413, %edx            # imm = 0x413
callq 0x72b0
movq -0x30(%rbp), %rdi
movq %rbx, %rsi
movq %r13, %rdx
callq 0x81dc
jmp 0xe68f
movl $0x9, 0x30(%rbx)
movq %r13, 0x38(%rbx)
jmp 0xe68f