// File: /workspace/github_cpp_makefile_star2_O1/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 %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rsi, %rbx
movq %rdi, %r12
movzwl 0xe(%rdi), %eax
movl %eax, %ecx
andl $0x7, %ecx
leaq 0x526d(%rip), %rdx      # 0x10040
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
movq %rsi, -0x30(%rbp)
jmpq *%rcx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x7280
movq %rbx, %rdi
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x78c0
movq %rbx, %rdi
callq 0x7520
testb %al, %al
je 0xb056
cmpw $0x4, 0xe(%r12)
jne 0xb07c
leaq -0x31(%rbp), %r15
movq %r12, %rdi
movq -0x30(%rbp), %rsi
movq %r15, %rdx
callq 0x78e0
movb (%r15), %al
andb $0x1, %al
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rbx, %rdi
movl $0x2, %esi
callq 0x7280
movq %rbx, %rdi
movl $0x1, %esi
jmp 0xaf47
movq %rbx, %rdi
callq 0x76f0
testb %al, %al
je 0xb056
cmpw $0x3, 0xe(%r12)
jne 0xb0ba
movabsq $0xffffffffffff, %r15   # imm = 0xFFFFFFFFFFFF
andq 0x8(%r12), %r15
movq %r12, %rdi
callq 0x7610
cmpq %r15, %rax
sete %r14b
je 0xaf1a
addq $0x10, %r15
testb $0x4, -0x1(%r15)
je 0xb05d
movq %r12, %rbx
leaq -0x10(%r15), %r12
movq %r12, %rdi
callq 0x7090
movq %rax, %r13
movq %r12, %rdi
callq 0x7460
movzwl -0x2(%r15), %ecx
shrl $0xb, %ecx
andl $0x1, %ecx
movq -0x30(%rbp), %r12
movq %r12, %rdi
movq %r13, %rsi
movl %eax, %edx
callq 0x78b0
testb %al, %al
je 0xb049
movq %r15, %rdi
movq %r12, %rsi
callq 0x7840
testb %al, %al
je 0xb049
movq %rbx, %r12
movq %rbx, %rdi
callq 0x7610
leaq 0x20(%r15), %rcx
addq $0x10, %r15
cmpq %rax, %r15
sete %r14b
movq %rcx, %r15
jne 0xae9f
movl (%r12), %esi
movq -0x30(%rbp), %rdi
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x7260
movq %rbx, %rdi
movl $0x1, %esi
callq 0x7280
movq %rbx, %rdi
xorl %esi, %esi
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x73d0
movq %r12, %rdi
callq 0x7090
movq %rax, %r15
movq %r12, %rdi
callq 0x7460
movzwl 0xe(%r12), %ecx
shrl $0xb, %ecx
andl $0x1, %ecx
movq %rbx, %rdi
movq %r15, %rsi
movl %eax, %edx
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x78b0
btl $0x9, %eax
jb 0xafc5
testb $0x20, %al
jne 0xaffc
testb $0x40, %al
jne 0xb017
movq (%r12), %rsi
testb %al, %al
js 0xb032
movq -0x30(%rbp), %rdi
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x76b0
movsd (%r12), %xmm0
movsd %xmm0, -0x40(%rbp)
movq -0x30(%rbp), %rbx
movq %rbx, %rdi
movl $0x6, %esi
callq 0x7280
movq %rbx, %rdi
movsd -0x40(%rbp), %xmm0
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x7040
movl (%r12), %esi
movq -0x30(%rbp), %rdi
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x73f0
movl (%r12), %esi
movq -0x30(%rbp), %rdi
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x7850
movq -0x30(%rbp), %rdi
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x7860
testb $0x1, %r14b
movq %rbx, %r12
jne 0xaf1a
xorl %eax, %eax
jmp 0xae33
leaq 0x524d(%rip), %rdi      # 0x102b1
leaq 0x5259(%rip), %rsi      # 0x102c4
leaq 0x5279(%rip), %rcx      # 0x102eb
movl $0x774, %edx            # imm = 0x774
callq 0x72c0
leaq 0x5b06(%rip), %rdi      # 0x10b89
leaq 0x523a(%rip), %rsi      # 0x102c4
leaq 0x5b02(%rip), %rcx      # 0x10b93
movl $0x65b, %edx            # imm = 0x65B
callq 0x72c0
leaq 0x532f(%rip), %rdi      # 0x103d1
leaq 0x521b(%rip), %rsi      # 0x102c4
leaq 0x523b(%rip), %rcx      # 0x102eb
movl $0x788, %edx            # imm = 0x788
callq 0x72c0
leaq 0x5713(%rip), %rdi      # 0x107d4
leaq 0x51fc(%rip), %rsi      # 0x102c4
leaq 0x5710(%rip), %rcx      # 0x107df
movl $0x4a7, %edx            # imm = 0x4A7
callq 0x72c0
nop