// File: sisong[P]ApkDiffPatch/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/digest_matcher.cpp
// Function: hdiff_private::TDigestMatcher::_search_cover(hpatch_TStreamInput const*, unsigned long long, hpatch_TOutputCovers*, unsigned char*, void*, void*)
void TDigestMatcher::_search_cover(const hpatch_TStreamInput* newData,hpatch_StreamPos_t newOffset,
                                   hpatch_TOutputCovers* out_covers,unsigned char* pmem,
                                   void* newDataLocker,void* dataLocker){
    TNewStreamCache newStream(newData,pmem,m_newCacheSize,m_backupCacheSize,
                              m_kMatchBlockSize,m_mtsets.newDataIsMTSafe?0:newDataLocker);
    TOldStreamCache oldStream(m_oldData,pmem+m_newCacheSize,m_oldMinCacheSize,
                              m_oldCacheSize,m_backupCacheSize,m_kMatchBlockSize,0);    
    if (m_isUseLargeSorted)
        __search_cover(m_sorted_larger,newOffset,newDataLocker,dataLocker);
    else
        __search_cover(m_sorted_limit,newOffset,newDataLocker,dataLocker);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x170, %rsp            # imm = 0x170
movq 0x10(%rbp), %rax
movq %rdi, -0x18(%rbp)
movq %rsi, -0x20(%rbp)
movq %rdx, -0x28(%rbp)
movq %rcx, -0x30(%rbp)
movq %r8, -0x38(%rbp)
movq %r9, -0x40(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x118(%rbp)
movq -0x20(%rbp), %rcx
movq %rcx, -0x110(%rbp)
movq -0x38(%rbp), %rcx
movq %rcx, -0x108(%rbp)
movq 0xa8(%rax), %rcx
movq %rcx, -0x100(%rbp)
movq 0xc0(%rax), %rcx
movq %rcx, -0xf8(%rbp)
movq 0xc8(%rax), %rcx
movq %rcx, -0xf0(%rbp)
testb $0x1, 0x88(%rax)
je 0x3f449
xorl %eax, %eax
movq %rax, -0x120(%rbp)
jmp 0x3f454
movq -0x40(%rbp), %rax
movq %rax, -0x120(%rbp)
movq -0xf0(%rbp), %r9
movq -0xf8(%rbp), %r8
movq -0x100(%rbp), %rcx
movq -0x108(%rbp), %rdx
movq -0x110(%rbp), %rsi
movq -0x120(%rbp), %rax
leaq -0x90(%rbp), %rdi
movq %rax, (%rsp)
callq 0x426e0
movq -0x118(%rbp), %rax
movq (%rax), %rsi
movq -0x38(%rbp), %rdx
addq 0xa8(%rax), %rdx
movq 0xb8(%rax), %rcx
movq 0xb0(%rax), %r8
movq 0xc0(%rax), %r9
movq 0xc8(%rax), %rax
leaq -0xe8(%rbp), %rdi
xorl %r10d, %r10d
movq %rax, (%rsp)
movq $0x0, 0x8(%rsp)
callq 0x42740
movq -0x118(%rbp), %rax
testb $0x1, 0x70(%rax)
je 0x3f5b2
movq -0x118(%rbp), %rdi
addq $0x10, %rdi
callq 0x42680
movq -0x118(%rbp), %rdi
movq %rax, -0x130(%rbp)
addq $0x58, %rdi
callq 0x42680
movq -0x118(%rbp), %rdi
movq %rax, -0x128(%rbp)
addq $0x58, %rdi
callq 0x42680
movq -0x118(%rbp), %rdi
movq %rax, -0x138(%rbp)
addq $0x58, %rdi
callq 0x424f0
movq -0x138(%rbp), %rdx
movq -0x130(%rbp), %rdi
movq -0x128(%rbp), %rsi
movq %rax, %rcx
movq -0x118(%rbp), %rax
shlq $0x3, %rcx
addq %rcx, %rdx
movq %rax, %r9
addq $0x28, %r9
movq -0x30(%rbp), %r14
movq -0x28(%rbp), %rbx
movq -0x40(%rbp), %r11
movq 0x10(%rbp), %r10
addq $0x78, %rax
leaq -0xe8(%rbp), %rcx
leaq -0x90(%rbp), %r8
movq %r14, (%rsp)
movq %rbx, 0x8(%rsp)
movq %r11, 0x10(%rsp)
movq %r10, 0x18(%rsp)
movq %rax, 0x20(%rsp)
callq 0x3f680
jmp 0x3f673
movq -0x118(%rbp), %rdi
addq $0x10, %rdi
callq 0x42680
movq -0x118(%rbp), %rdi
movq %rax, -0x148(%rbp)
addq $0x40, %rdi
callq 0x14b30
movq -0x118(%rbp), %rdi
movq %rax, -0x140(%rbp)
addq $0x40, %rdi
callq 0x14b30
movq -0x118(%rbp), %rdi
movq %rax, -0x150(%rbp)
addq $0x40, %rdi
callq 0xc360
movq -0x150(%rbp), %rdx
movq -0x148(%rbp), %rdi
movq -0x140(%rbp), %rsi
movq %rax, %rcx
movq -0x118(%rbp), %rax
shlq $0x2, %rcx
addq %rcx, %rdx
movq %rax, %r9
addq $0x28, %r9
movq -0x30(%rbp), %r14
movq -0x28(%rbp), %rbx
movq -0x40(%rbp), %r11
movq 0x10(%rbp), %r10
addq $0x78, %rax
leaq -0xe8(%rbp), %rcx
leaq -0x90(%rbp), %r8
movq %r14, (%rsp)
movq %rbx, 0x8(%rsp)
movq %r11, 0x10(%rsp)
movq %r10, 0x18(%rsp)
movq %rax, 0x20(%rsp)
callq 0x3fa60
addq $0x170, %rsp            # imm = 0x170
popq %rbx
popq %r14
popq %rbp
retq
nop