// File: /workspace/github_cpp_makefile_star2_O2/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
movq (%r14), %r12
movzbl (%r12), %eax
cmpl $0x5c, %eax
je 0xf8e9
cmpl $0x22, %eax
je 0xf9c1
cmpb $0x1f, %al
jbe 0xf9df
movq 0x8(%r14), %r13
movq %r14, %rdi
movq %r15, %rsi
callq 0x92e0
testb %al, %al
jne 0xf8b3
jmp 0xf9f0
movq %r12, %r13
subq 0x8(%r14), %r13
leaq 0x1(%r12), %rax
movq %rax, (%r14)
movzbl 0x1(%r12), %ecx
movq 0x96c3(%rip), %rax      # 0x18fc8
movb (%rax,%rcx), %al
testb %al, %al
je 0xf920
addq $0x2, %r12
movq %r12, (%r14)
movsbl %al, %esi
movq %r15, %rdi
callq 0x9a80
jmp 0xf8b3
cmpb $0x75, %cl
jne 0xfa81
addq $0x2, %r12
movq %r12, (%r14)
movq %rbx, %rdi
movq %r14, %rsi
movq %r13, %rdx
callq 0x95c0
cmpl $0x0, 0x30(%rbx)
jne 0xfa04
movl %eax, %r12d
andl $0xfffffc00, %eax       # imm = 0xFFFFFC00
cmpl $0xd800, %eax           # imm = 0xD800
je 0xf967
movq %r15, %rdi
movl %r12d, %esi
callq 0x9410
jmp 0xf8b3
movq (%r14), %rax
cmpb $0x5c, (%rax)
jne 0xfa97
leaq 0x1(%rax), %rcx
movq %rcx, (%r14)
cmpb $0x75, 0x1(%rax)
jne 0xfa97
addq $0x2, %rax
movq %rax, (%r14)
movq %rbx, %rdi
movq %r14, %rsi
movq %r13, %rdx
callq 0x95c0
cmpl $0x0, 0x30(%rbx)
jne 0xfa04
leal -0xe000(%rax), %ecx
cmpl $0xfffffbff, %ecx       # imm = 0xFFFFFBFF
jbe 0xfa97
shll $0xa, %r12d
addl %eax, %r12d
addl $0xfca02400, %r12d      # imm = 0xFCA02400
jmp 0xf957
incq %r12
movq %r12, (%r14)
movq %r15, %rdi
xorl %esi, %esi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x9a80
movl 0x30(%rbx), %ecx
testb %al, %al
je 0xfa13
testl %ecx, %ecx
jne 0xfa43
subq 0x8(%r14), %r12
jmp 0xf9f9
cmpl $0x0, 0x30(%rbx)
jne 0xfa24
subq %r13, %r12
movl $0xc, 0x30(%rbx)
movq %r12, 0x38(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
testl %ecx, %ecx
jne 0xfa62
subq 0x8(%r14), %r12
movl $0xb, 0x30(%rbx)
jmp 0xfa00
leaq 0x2d6a(%rip), %rdi      # 0x12795
leaq 0x2d74(%rip), %rsi      # 0x127a6
leaq 0x341c(%rip), %rcx      # 0x12e55
movl $0x41c, %edx            # imm = 0x41C
callq 0x9380
leaq 0x2d4b(%rip), %rdi      # 0x12795
leaq 0x2d55(%rip), %rsi      # 0x127a6
leaq 0x33fd(%rip), %rcx      # 0x12e55
movl $0x415, %edx            # imm = 0x415
callq 0x9380
leaq 0x2d2c(%rip), %rdi      # 0x12795
leaq 0x2d36(%rip), %rsi      # 0x127a6
leaq 0x33de(%rip), %rcx      # 0x12e55
movl $0x413, %edx            # imm = 0x413
callq 0x9380
cmpl $0x0, 0x30(%rbx)
jne 0xfaa0
movl $0xa, 0x30(%rbx)
movq %r13, 0x38(%rbx)
jmp 0xfa04
movl $0x9, 0x30(%rbx)
jmp 0xfa8e
leaq 0x2cee(%rip), %rdi      # 0x12795
leaq 0x2cf8(%rip), %rsi      # 0x127a6
leaq 0x33a0(%rip), %rcx      # 0x12e55
movl $0x40a, %edx            # imm = 0x40A
callq 0x9380
nop