// File: /workspace/github_cpp_makefile_star2_O2/cqbqdd11519[P]DockerClient/rapidjson/include/rapidjson/document.h
// Function: bool rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>>::Accept<rapidjson::Writer<rapidjson::GenericStringBuffer<rapidjson::UTF8<char>, rapidjson::CrtAllocator>, rapidjson::UTF8<char>, rapidjson::UTF8<char>, rapidjson::CrtAllocator, 0u>>(rapidjson::Writer<rapidjson::GenericStringBuffer<rapidjson::UTF8<char>, rapidjson::CrtAllocator>, rapidjson::UTF8<char>, rapidjson::UTF8<char>, rapidjson::CrtAllocator, 0u>&) const
bool Accept(Handler& handler) const {
        switch(GetType()) {
        case kNullType:     return handler.Null();
        case kFalseType:    return handler.Bool(false);
        case kTrueType:     return handler.Bool(true);

        case kObjectType:
            if (RAPIDJSON_UNLIKELY(!handler.StartObject()))
                return false;
            for (ConstMemberIterator m = MemberBegin(); m != MemberEnd(); ++m) {
                RAPIDJSON_ASSERT(m->name.IsString()); // User may change the type of name by MemberIterator.
                if (RAPIDJSON_UNLIKELY(!handler.Key(m->name.GetString(), m->name.GetStringLength(), (m->name.data_.f.flags & kCopyFlag) != 0)))
                    return false;
                if (RAPIDJSON_UNLIKELY(!m->value.Accept(handler)))
                    return false;
            }
            return handler.EndObject(data_.o.size);

        case kArrayType:
            if (RAPIDJSON_UNLIKELY(!handler.StartArray()))
                return false;
            for (const GenericValue* v = Begin(); v != End(); ++v)
                if (RAPIDJSON_UNLIKELY(!v->Accept(handler)))
                    return false;
            return handler.EndArray(data_.a.size);
    
        case kStringType:
            return handler.String(GetString(), GetStringLength(), (data_.f.flags & kCopyFlag) != 0);
    
        default:
            RAPIDJSON_ASSERT(GetType() == kNumberType);
            if (IsDouble())         return handler.Double(data_.n.d);
            else if (IsInt())       return handler.Int(data_.n.i.i);
            else if (IsUint())      return handler.Uint(data_.n.u.u);
            else if (IsInt64())     return handler.Int64(data_.n.i64);
            else                    return handler.Uint64(data_.n.u64);
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rsi, %rbx
movq %rdi, %r14
movzwl 0xe(%rdi), %eax
movl %eax, %ecx
andl $0x7, %ecx
leaq 0x50e3(%rip), %rdx      # 0x11000
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x9b40
movq %rbx, %rdi
callq 0x9760
testb %al, %al
je 0xbffb
movq %r14, %rdi
callq 0x9460
movq %rax, %r15
movq %r14, %rdi
callq 0x9640
cmpq %rax, %r15
je 0xc070
movq %r15, %rdi
movq %rbx, %rsi
callq 0x9c40
addq $0x10, %r15
testb %al, %al
jne 0xbf51
jmp 0xbffb
pushq $0x1
popq %rsi
movq %rbx, %rdi
jmp 0xc00b
movq %rbx, %rdi
callq 0x9a40
testb %al, %al
je 0xbffb
movq %r14, %rdi
callq 0x97d0
movq %rax, %r15
movq %r14, %rdi
callq 0x98c0
cmpq %rax, %r15
je 0xc083
testb $0x4, 0xf(%r15)
je 0xc0de
movq %r15, %rdi
callq 0x90d0
movq %rax, %r12
movq %r15, %rdi
callq 0x9610
movzwl 0xe(%r15), %ecx
shrl $0xb, %ecx
andl $0x1, %ecx
movq %rbx, %rdi
movq %r12, %rsi
movl %eax, %edx
callq 0x9d00
testb %al, %al
je 0xbffb
leaq 0x10(%r15), %rdi
movq %rbx, %rsi
callq 0x9c40
addq $0x20, %r15
testb %al, %al
jne 0xbf9c
xorl %eax, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rbx, %rdi
xorl %esi, %esi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x9220
movq %r14, %rdi
callq 0x90d0
movq %rax, %r15
movq %r14, %rdi
callq 0x9610
movzwl 0xe(%r14), %ecx
shrl $0xb, %ecx
andl $0x1, %ecx
movq %rbx, %rdi
movq %r15, %rsi
movl %eax, %edx
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x9d00
btl $0x9, %eax
jb 0xc096
testb $0x20, %al
jne 0xc0ab
testb $0x40, %al
jne 0xc0be
movq (%r14), %rsi
movq %rbx, %rdi
testb %al, %al
js 0xc0d1
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x99e0
movl (%r14), %esi
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x9780
movl (%r14), %esi
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x9310
movsd (%r14), %xmm0
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x9ab0
movl (%r14), %esi
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x95a0
movl (%r14), %esi
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x9c50
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x9c60
leaq 0x5192(%rip), %rdi      # 0x11277
leaq 0x519e(%rip), %rsi      # 0x1128a
leaq 0x51be(%rip), %rcx      # 0x112b1
movl $0x774, %edx            # imm = 0x774
callq 0x9380
leaq 0x5293(%rip), %rdi      # 0x11397
leaq 0x517f(%rip), %rsi      # 0x1128a
leaq 0x519f(%rip), %rcx      # 0x112b1
movl $0x788, %edx            # imm = 0x788
callq 0x9380