// File: sisong[P]ApkDiffPatch/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/stream_serialize.cpp
// Function: hdiff_private::TDiffStream::stream_read(hdiff_private::TPlaceholder const&, unsigned char*)
void TDiffStream::stream_read(const TPlaceholder& pos,hpatch_byte* out_data){
    assert(pos.pos<=pos.pos_end);
    assert(pos.size()==(size_t)pos.size());
    check(pos.pos_end<=writePos);
    checki(out_diff->read_writed!=0,"TDiffStream::stream_read() out_diff can't read error!");
    checki(out_diff->read_writed(out_diff,pos.pos,out_data,out_data+(size_t)pos.size()),
            "TDiffStream::stream_read() out_diff read error!");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
cmpq 0x8(%rcx), %rax
ja 0x4f892
jmp 0x4f8b1
leaq 0x6191a(%rip), %rdi     # 0xb11b3
leaq 0x6109b(%rip), %rsi     # 0xb093b
movl $0x2e8, %edx            # imm = 0x2E8
leaq 0x6191c(%rip), %rcx     # 0xb11c8
callq 0x4270
movq -0x10(%rbp), %rdi
callq 0x50990
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rdi
callq 0x50990
movq %rax, %rcx
movq -0x38(%rbp), %rax
cmpq %rcx, %rax
jne 0x4f8d5
jmp 0x4f8f4
leaq 0x6193e(%rip), %rdi     # 0xb121a
leaq 0x61058(%rip), %rsi     # 0xb093b
movl $0x2e9, %edx            # imm = 0x2E9
leaq 0x618d9(%rip), %rcx     # 0xb11c8
callq 0x4270
movq -0x30(%rbp), %rcx
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
cmpq 0x8(%rcx), %rax
jbe 0x4f959
movl $0x10, %edi
callq 0x41e0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x40(%rbp)
leaq 0x61918(%rip), %rsi     # 0xb1239
callq 0x4140
jmp 0x4f928
movq -0x40(%rbp), %rdi
movq 0x966bd(%rip), %rsi     # 0xe5ff0
movq 0x96686(%rip), %rdx     # 0xe5fc0
callq 0x4630
movq -0x40(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x42e0
jmp 0x4fa6e
movq -0x30(%rbp), %rax
movq (%rax), %rax
cmpq $0x0, 0x10(%rax)
jne 0x4f9ba
movl $0x10, %edi
callq 0x41e0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x48(%rbp)
leaq 0x618da(%rip), %rsi     # 0xb125c
callq 0x4140
jmp 0x4f989
movq -0x48(%rbp), %rdi
movq 0x9665c(%rip), %rsi     # 0xe5ff0
movq 0x96625(%rip), %rdx     # 0xe5fc0
callq 0x4630
movq -0x48(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x42e0
jmp 0x4fa6e
movq -0x30(%rbp), %rax
movq (%rax), %rcx
movq 0x10(%rcx), %rcx
movq %rcx, -0x50(%rbp)
movq (%rax), %rax
movq %rax, -0x68(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x10(%rbp), %rdi
callq 0x50990
movq -0x70(%rbp), %rcx
movq -0x68(%rbp), %rdi
movq -0x60(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq %rax, %r8
movq -0x50(%rbp), %rax
addq %r8, %rcx
callq *%rax
cmpl $0x0, %eax
jne 0x4fa65
movl $0x10, %edi
callq 0x41e0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x78(%rbp)
leaq 0x61862(%rip), %rsi     # 0xb1292
callq 0x4140
jmp 0x4fa37
movq -0x78(%rbp), %rdi
movq 0x965ae(%rip), %rsi     # 0xe5ff0
movq 0x96577(%rip), %rdx     # 0xe5fc0
callq 0x4630
movq -0x78(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x42e0
jmp 0x4fa6e
addq $0x80, %rsp
popq %rbp
retq
movq -0x20(%rbp), %rdi
callq 0x4680
nopw (%rax,%rax)