// File: sisong[P]ApkDiffPatch/src/patch/Zipper.cpp
// Function: UnZipper_open_fvce(UnZipper*, unsigned int, int)
static bool _UnZipper_open_fvce(UnZipper* self,ZipFilePos_t fvceSize,int fileCount){
    assert(self->_cache_fvce==0);
    self->_fvce_size=fvceSize;
    size_t memSize=self->_fvce_size+1*fileCount+sizeof(ZipFilePos_t)*(fileCount+1)+sizeof(ZipFilePos_t)*fileCount*2;
    if (self->_isSaved_fileEntryOffsets) memSize+=sizeof(ZipFilePos_t)*fileCount;
    self->_cache_fvce=(TByte*)malloc(memSize);
    check(self->_cache_fvce!=0);
    self->_dataDescriptors=self->_cache_fvce+self->_fvce_size;
    size_t curBuf=_hpatch_align_upper((self->_dataDescriptors+1*fileCount),sizeof(ZipFilePos_t));
    self->_fileDataOffsets=(ZipFilePos_t*)curBuf; curBuf+=sizeof(ZipFilePos_t)*fileCount;
    self->_fileEntryOffsets=0;
    if (self->_isSaved_fileEntryOffsets){
        self->_fileEntryOffsets=(ZipFilePos_t*)curBuf; curBuf+=sizeof(ZipFilePos_t)*fileCount; }
    self->_fileHeaderOffsets=(ZipFilePos_t*)curBuf; curBuf+=sizeof(ZipFilePos_t)*fileCount;
    self->_fileCompressedSizes=(ZipFilePos_t*)curBuf;
    return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movq -0x8(%rbp), %rax
cmpq $0x0, 0xa0(%rax)
jne 0x7fb22
jmp 0x7fb41
leaq 0x33fa4(%rip), %rdi     # 0xb3acd
leaq 0x33e5a(%rip), %rsi     # 0xb398a
movl $0x1cf, %edx            # imm = 0x1CF
leaq 0x34a21(%rip), %rcx     # 0xb455d
callq 0x4270
movl -0xc(%rbp), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0xa8(%rax)
movq -0x8(%rbp), %rax
movl 0xa8(%rax), %eax
movl -0x10(%rbp), %ecx
shll $0x0, %ecx
addl %ecx, %eax
movl %eax, %eax
movl -0x10(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
shlq $0x2, %rcx
addq %rcx, %rax
movslq -0x10(%rbp), %rcx
shlq $0x2, %rcx
shlq %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rax
testb $0x1, 0x88(%rax)
je 0x7fba1
movslq -0x10(%rbp), %rax
shlq $0x2, %rax
addq -0x18(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x44d0
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0xa0(%rax)
movq -0x8(%rbp), %rax
cmpq $0x0, 0xa0(%rax)
jne 0x7fbe5
leaq 0x2d6a3(%rip), %rdi     # 0xad270
leaq 0x33db6(%rip), %rsi     # 0xb398a
movl $0x1d4, %edx            # imm = 0x1D4
leaq 0x3497d(%rip), %rcx     # 0xb455d
callq 0x4270
movq -0x8(%rbp), %rax
movq 0xa0(%rax), %rcx
movq -0x8(%rbp), %rax
movl 0xa8(%rax), %eax
addq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x68(%rax)
movq -0x8(%rbp), %rax
movq 0x68(%rax), %rax
movl -0x10(%rbp), %ecx
shll $0x0, %ecx
movslq %ecx, %rcx
addq %rcx, %rax
addq $0x3, %rax
andq $-0x4, %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x78(%rax)
movslq -0x10(%rbp), %rax
shlq $0x2, %rax
addq -0x20(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq $0x0, 0x80(%rax)
movq -0x8(%rbp), %rax
testb $0x1, 0x88(%rax)
je 0x7fc7c
movq -0x20(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x80(%rax)
movslq -0x10(%rbp), %rax
shlq $0x2, %rax
addq -0x20(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x58(%rax)
movslq -0x10(%rbp), %rax
shlq $0x2, %rax
addq -0x20(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x60(%rax)
movb $0x1, %al
andb $0x1, %al
addq $0x20, %rsp
popq %rbp
retq
nop