// 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>::ParseString<0u, rapidjson::GenericStringStream<rapidjson::UTF8<char>>, rapidjson::GenericDocument<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>, rapidjson::CrtAllocator>>(rapidjson::GenericStringStream<rapidjson::UTF8<char>>&, rapidjson::GenericDocument<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>, rapidjson::CrtAllocator>&, bool)
void ParseString(InputStream& is, Handler& handler, bool isKey = false) {
        internal::StreamLocalCopy<InputStream> copy(is);
        InputStream& s(copy.s);

        RAPIDJSON_ASSERT(s.Peek() == '\"');
        s.Take();  // Skip '\"'

        bool success = false;
        if (parseFlags & kParseInsituFlag) {
            typename InputStream::Ch *head = s.PutBegin();
            ParseStringToStream<parseFlags, SourceEncoding, SourceEncoding>(s, s);
            RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;
            size_t length = s.PutEnd(head) - 1;
            RAPIDJSON_ASSERT(length <= 0xFFFFFFFF);
            const typename TargetEncoding::Ch* const str = reinterpret_cast<typename TargetEncoding::Ch*>(head);
            success = (isKey ? handler.Key(str, SizeType(length), false) : handler.String(str, SizeType(length), false));
        }
        else {
            StackStream<typename TargetEncoding::Ch> stackStream(stack_);
            ParseStringToStream<parseFlags, SourceEncoding, TargetEncoding>(s, stackStream);
            RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;
            SizeType length = static_cast<SizeType>(stackStream.Length()) - 1;
            const typename TargetEncoding::Ch* const str = stackStream.Pop();
            success = (isKey ? handler.Key(str, length, true) : handler.String(str, length, true));
        }
        if (RAPIDJSON_UNLIKELY(!success))
            RAPIDJSON_PARSE_ERROR(kParseErrorTermination, s.Tell());
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x30, %rsp
movups (%rsi), %xmm0
movaps %xmm0, -0x40(%rbp)
movq %rsi, -0x30(%rbp)
movq -0x40(%rbp), %rax
cmpb $0x22, (%rax)
jne 0xd991
movq %rdx, %r14
movq %rdi, %rbx
incq %rax
leaq -0x40(%rbp), %rsi
movq %rax, (%rsi)
leaq -0x50(%rbp), %rdx
movq %rdi, (%rdx)
movl $0x0, 0x8(%rdx)
callq 0x72f0
movl 0x30(%rbx), %r12d
testl %r12d, %r12d
jne 0xd97b
leaq -0x50(%rbp), %rdi
movl 0x8(%rdi), %r15d
decl %r15d
callq 0x70c0
movq %r14, %rdi
movq %rax, %rsi
movl %r15d, %edx
movl $0x1, %ecx
callq 0x7450
testl %r12d, %r12d
jne 0xd963
testb %al, %al
je 0xd97f
movq -0x30(%rbp), %rax
movaps -0x40(%rbp), %xmm0
movups %xmm0, (%rax)
addq $0x30, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
xorl %eax, %eax
jmp 0xd95a
leaq 0x30(%rbx), %rdi
leaq -0x40(%rbp), %rsi
movq %rbx, %rdx
callq 0x7ae9
jmp 0xd963
leaq 0x4247(%rip), %rdi      # 0x11bdf
leaq 0x3d11(%rip), %rsi      # 0x116b0
leaq 0x424a(%rip), %rcx      # 0x11bf0
movl $0x3c2, %edx            # imm = 0x3C2
callq 0x72c0
jmp 0xd9b2
movq -0x30(%rbp), %rcx
movaps -0x40(%rbp), %xmm0
movups %xmm0, (%rcx)
movq %rax, %rdi
callq 0x77e0
nop