// File: /workspace/github_cpp_makefile_star2_O2/sisong[P]ApkDiffPatch/HDiffPatch/libHDiffPatch/HPatch/patch.c
// Function: getSingleCompressedDiffInfo
hpatch_BOOL getSingleCompressedDiffInfo(hpatch_singleCompressedDiffInfo* out_diffInfo,
                                        const hpatch_TStreamInput* singleCompressedDiff,
                                        hpatch_StreamPos_t         diffInfo_pos){
    TStreamCacheClip  _diffHeadClip;
    TStreamCacheClip* diffHeadClip=&_diffHeadClip;
    TByte             temp_cache[hpatch_kStreamCacheSize];
    _TStreamCacheClip_init(&_diffHeadClip,singleCompressedDiff,diffInfo_pos,singleCompressedDiff->streamSize,
                           temp_cache,hpatch_kStreamCacheSize);
    {//type
        const char* kVersionType="HDIFFSF20";
        char* tempType=out_diffInfo->compressType;
        if (!_TStreamCacheClip_readType_end(diffHeadClip,'&',tempType)) return _hpatch_FALSE;
        if (0!=strcmp(tempType,kVersionType)) return _hpatch_FALSE;
    }
    {//read compressType
        if (!_TStreamCacheClip_readType_end(diffHeadClip,'\0',
                                            out_diffInfo->compressType)) return _hpatch_FALSE;
    }
    _clip_unpackUIntTo(&out_diffInfo->newDataSize,diffHeadClip);
    _clip_unpackUIntTo(&out_diffInfo->oldDataSize,diffHeadClip);
    _clip_unpackUIntTo(&out_diffInfo->coverCount,diffHeadClip);
    _clip_unpackUIntTo(&out_diffInfo->stepMemSize,diffHeadClip);
    _clip_unpackUIntTo(&out_diffInfo->uncompressedSize,diffHeadClip);
    _clip_unpackUIntTo(&out_diffInfo->compressedSize,diffHeadClip);
    out_diffInfo->diffDataPos=_TStreamCacheClip_readPosOfSrcStream(diffHeadClip)-diffInfo_pos;
    if (out_diffInfo->compressedSize>out_diffInfo->uncompressedSize)
        return _hpatch_FALSE;
    if (out_diffInfo->stepMemSize>(out_diffInfo->newDataSize>=_kStepMemSizeSafeLimit?out_diffInfo->newDataSize:_kStepMemSizeSafeLimit))
        return _hpatch_FALSE;
    if (out_diffInfo->stepMemSize>out_diffInfo->uncompressedSize)
        return _hpatch_FALSE;
    return hpatch_TRUE;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x1030, %rsp           # imm = 0x1030
movq %rdx, %r14
movq %rdi, %rbx
movq 0x8(%rsi), %rcx
movq %rsp, %r12
leaq 0x30(%rsp), %r8
movl $0x1000, %r9d           # imm = 0x1000
movq %r12, %rdi
callq 0x3b1fb
leaq 0x38(%rbx), %r15
pushq $0x26
popq %rsi
movq %r12, %rdi
movq %r15, %rdx
callq 0x3adeb
xorl %ebp, %ebp
testl %eax, %eax
je 0x3d530
leaq 0x13fd6(%rip), %rsi     # 0x514fa
movq %r15, %rdi
callq 0x4450
testl %eax, %eax
je 0x3d542
movl %ebp, %eax
addq $0x1030, %rsp           # imm = 0x1030
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rsp, %rdi
xorl %ebp, %ebp
xorl %esi, %esi
movq %r15, %rdx
callq 0x3adeb
testl %eax, %eax
je 0x3d530
movq %rsp, %rdi
xorl %ebp, %ebp
movq %rbx, %rsi
xorl %edx, %edx
callq 0x3af7d
testl %eax, %eax
je 0x3d530
leaq 0x8(%rbx), %rsi
movq %rsp, %rdi
xorl %ebp, %ebp
xorl %edx, %edx
callq 0x3af7d
testl %eax, %eax
je 0x3d530
leaq 0x28(%rbx), %rsi
movq %rsp, %rdi
xorl %ebp, %ebp
xorl %edx, %edx
callq 0x3af7d
testl %eax, %eax
je 0x3d530
leaq 0x30(%rbx), %rsi
movq %rsp, %rdi
xorl %ebp, %ebp
xorl %edx, %edx
callq 0x3af7d
testl %eax, %eax
je 0x3d530
leaq 0x10(%rbx), %rsi
movq %rsp, %rdi
xorl %ebp, %ebp
xorl %edx, %edx
callq 0x3af7d
testl %eax, %eax
je 0x3d530
leaq 0x18(%rbx), %rsi
movq %rsp, %rdi
xorl %ebp, %ebp
xorl %edx, %edx
callq 0x3af7d
testl %eax, %eax
je 0x3d530
addq 0x28(%rsp), %r14
movq (%rsp), %rax
subq %r14, %rax
addq 0x20(%rsp), %rax
movq %rax, 0x20(%rbx)
movq 0x10(%rbx), %rax
cmpq %rax, 0x18(%rbx)
ja 0x3d530
movq (%rbx), %rdx
movq 0x30(%rbx), %rcx
cmpq $0x1000001, %rdx        # imm = 0x1000001
movl $0x1000000, %esi        # imm = 0x1000000
cmovaeq %rdx, %rsi
cmpq %rsi, %rcx
ja 0x3d530
xorl %ebp, %ebp
cmpq %rax, %rcx
setbe %bpl
jmp 0x3d530