// File: /workspace/github_cpp_makefile_star2_O1/sisong[P]ApkDiffPatch/src/patch/ZipDiffData.cpp
// Function: ZipDiffData_openRead
bool ZipDiffData_openRead(ZipDiffData* self,const hpatch_TStreamInput* diffData,
                          hpatch_TDecompress* decompressPlugin){
    size_t  headDataSize=0;
    size_t  headDataCompressedSize=0;
    size_t  headDataPos=0;
    size_t  hdiffzSize=0;
    {
        size_t  headInoPos=0;
        check(_openZipDiffData(diffData,decompressPlugin,&headInoPos));
        //read head info
        TByte buf[hpatch_kMaxPackedUIntBytes*(16+3)];
        int readLen=sizeof(buf);
        if (headInoPos+readLen>diffData->streamSize)
            readLen=(int)(diffData->streamSize-headInoPos);
        check(diffData->read(diffData,headInoPos,buf,buf+readLen));
        //unpack head info
        const TByte* curBuf=buf;
        #define kSoSmallPageAlignSize (1024*4)
        self->normalizeSoPageAlign=kSoSmallPageAlignSize/4;
        while ((curBuf<buf+readLen)&&(kPackedEmptyPrefix==(*curBuf))){//test have normalizeSoPageAlign tag? starting with v1.8.0
            self->normalizeSoPageAlign*=4;
            ++curBuf;
        }// else old version diffData, not saved normalizeSoPageAlign tag
        if (self->normalizeSoPageAlign==kSoSmallPageAlignSize) self->normalizeSoPageAlign=0;
        self->pageAlignCompatible=(self->normalizeSoPageAlign==(kSoSmallPageAlignSize/4));
        if (self->pageAlignCompatible) self->normalizeSoPageAlign=kSoSmallPageAlignSize;
        checkUnpackSize(&curBuf,buf+readLen,&self->PatchModel,size_t);
        check(self->PatchModel<=1);//now must 0 or 1
        checkUnpackSize(&curBuf,buf+readLen,&self->newZipFileCount,size_t);
        checkUnpackSize(&curBuf,buf+readLen,&self->newZipIsDataNormalized,size_t);
        checkUnpackSize(&curBuf,buf+readLen,&self->newZipAlignSize,size_t);
        checkUnpackSize(&curBuf,buf+readLen,&self->newCompressLevel,size_t);
        checkUnpackSize(&curBuf,buf+readLen,&self->newCompressMemLevel,size_t);
        checkUnpackSize(&curBuf,buf+readLen,&self->newOtherCompressLevel,size_t);
        checkUnpackSize(&curBuf,buf+readLen,&self->newOtherCompressMemLevel,size_t);
        checkUnpackSize(&curBuf,buf+readLen,&self->newZipCESize,size_t);
        checkUnpackSize(&curBuf,buf+readLen,&self->samePairCount,size_t);
        checkUnpackSize(&curBuf,buf+readLen,&self->newRefOtherCompressedCount,size_t);
        checkUnpackSize(&curBuf,buf+readLen,&self->newRefCompressedSizeCount,size_t);
        checkUnpackSize(&curBuf,buf+readLen,&self->oldZipIsDataNormalized,size_t);
        checkUnpackSize(&curBuf,buf+readLen,&self->oldIsFileDataOffsetMatch,size_t);
        checkUnpackSize(&curBuf,buf+readLen,&self->oldZipCESize,size_t);
        checkUnpackSize(&curBuf,buf+readLen,&self->oldRefCount,size_t);
        checkUnpackSize(&curBuf,buf+readLen,&self->oldCrc,uint32_t);
        checkUnpackSize(&curBuf,buf+readLen,&headDataSize,size_t);
        checkUnpackSize(&curBuf,buf+readLen,&headDataCompressedSize,size_t);
        checkUnpackSize(&curBuf,buf+readLen,&hdiffzSize,size_t);
        headDataPos=(curBuf-buf)+headInoPos;
        
        check(headDataCompressedSize <= diffData->streamSize-headDataPos);
        check(hdiffzSize <= diffData->streamSize-headDataPos-headDataCompressedSize);
    }
    {//head data
        //  memBuf used as:
        //  [     compressed headData   ]     [ uncompressed headData(packed list) ]
        //  [           unpacked_list        ]
        size_t memLeft=(self->samePairCount*2+self->newRefOtherCompressedCount
                        +self->newRefCompressedSizeCount+self->oldRefCount)*sizeof(uint32_t);
        if (headDataCompressedSize>memLeft) memLeft=_hpatch_align_upper(headDataCompressedSize,sizeof(uint32_t));
        assert(self->_buf==0);
        self->_buf=(TByte*)malloc(memLeft+headDataSize);
        check(self->_buf!=0);
        
        check(diffData->read(diffData,headDataPos,self->_buf,self->_buf+headDataCompressedSize));
        if (headDataSize>0){
            check(hpatch_deccompress_mem(decompressPlugin,self->_buf,self->_buf+headDataCompressedSize,
                                         self->_buf+memLeft,self->_buf+memLeft+headDataSize));
        }
        
        self->samePairList=(uint32_t*)self->_buf;
        self->newRefOtherCompressedList=self->samePairList+self->samePairCount*2;
        self->newRefCompressedSizeList=self->newRefOtherCompressedList+self->newRefOtherCompressedCount;
        self->oldRefList=self->newRefCompressedSizeList+self->newRefCompressedSizeCount;
        const TByte* curBuf=self->_buf+memLeft;
        const TByte* const bufEnd=self->_buf+memLeft+headDataSize;
        
        uint32_t backPairNew=~(uint32_t)0;
        hpatch_StreamPos_t backPairOld=~(hpatch_StreamPos_t)0;
        for (size_t i=0; i<self->samePairCount; ++i) {
            uint32_t curPairNew=0;
            checkUnpackSize(&curBuf,bufEnd,&curPairNew,uint32_t);
            backPairNew+=1+curPairNew;
            self->samePairList[i*2+0]=backPairNew;
            
            check(curBuf<bufEnd);
            TByte sign=(*curBuf)>>(8-1);
            hpatch_StreamPos_t incPairOld=0;
            check(hpatch_unpackUIntWithTag(&curBuf,bufEnd,&incPairOld,1));
            if (!sign)
                backPairOld+=1+incPairOld;
            else
                backPairOld=backPairOld+1-incPairOld;
            check(backPairOld==(uint32_t)backPairOld);
            self->samePairList[i*2+1]=(uint32_t)backPairOld;
        }
        _unpackIncList(self->newRefOtherCompressedList,self->newRefOtherCompressedCount);
        for (size_t i=0; i<self->newRefCompressedSizeCount; ++i) {
            checkUnpackSize(&curBuf,bufEnd,&self->newRefCompressedSizeList[i],uint32_t);
        }
        _unpackIncList(self->oldRefList,self->oldRefCount);
        check(curBuf==bufEnd);
    }
    {//HDiffZ stream
        size_t hdiffzPos=headDataPos+headDataCompressedSize;
        TStreamInputClip_init(&self->_hdiffzData,diffData,hdiffzPos,hdiffzPos+hdiffzSize);
        self->hdiffzData=&self->_hdiffzData.base;
    }
    {//ExtraEdit stream
        //read size+tag
        check(diffData->streamSize>=4+kExtraEditLen);
        unsigned char buf4s[4+kExtraEditLen];
        check(diffData->read(diffData,diffData->streamSize-4-kExtraEditLen,buf4s,buf4s+4+kExtraEditLen));
        check(0==memcmp(kExtraEdit,buf4s+4,kExtraEditLen));//check tag
        uint32_t extraEditSize=readUInt32(buf4s);

        check(4+kExtraEditLen+self->_hdiffzData.clipBeginPos+hdiffzSize+extraEditSize<=diffData->streamSize);
        hpatch_StreamPos_t extraEditPos=diffData->streamSize-extraEditSize-4-kExtraEditLen;
        TStreamInputClip_init(&self->_extraEdit,diffData,extraEditPos,extraEditPos+extraEditSize);
        self->extraEdit=&self->_extraEdit.base;
    }
    return true;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x118, %rsp            # imm = 0x118
movq %rdx, %r15
movq %rsi, %r12
movq %rdi, %rbx
leaq 0x10(%rsp), %rdx
movq $0x0, (%rdx)
movq %rsi, %rdi
movq %r15, %rsi
callq 0x3e62e
testb %al, %al
je 0x3f124
movq 0x10(%rsp), %rsi
movl $0xd1, %eax
leaq (%rsi,%rax), %rcx
movq 0x8(%r12), %rdx
movl %edx, %edi
subl %esi, %edi
cmpq %rdx, %rcx
movslq %edi, %r14
cmovbeq %rax, %r14
movq %r12, %rdi
leaq (%rsp,%r14), %r13
addq $0x40, %r13
leaq 0x40(%rsp), %r12
movq %r12, %rdx
movq %r13, %rcx
movq %rdi, 0x28(%rsp)
callq *0x10(%rdi)
testl %eax, %eax
je 0x3f14f
movq %r12, 0x8(%rsp)
movq $0x400, 0xa8(%rbx) # imm = 0x400
testq %r14, %r14
jle 0x3e867
xorl %eax, %eax
movq %r12, %rcx
cmpb (%rcx), %al
jno 0x3e867
shlq $0x2, 0xa8(%rbx)
incq %rcx
movq %rcx, 0x8(%rsp)
cmpq %r13, %rcx
jb 0x3e84e
cmpq $0x1000, 0xa8(%rbx) # imm = 0x1000
jne 0x3e87f
movq $0x0, 0xa8(%rbx)
cmpq $0x400, 0xa8(%rbx) # imm = 0x400
sete 0xb0(%rbx)
jne 0x3e89e
movq $0x1000, 0xa8(%rbx) # imm = 0x1000
movq %rsp, %rdx
movq $0x0, (%rdx)
leaq 0x8(%rsp), %rdi
movq %r13, %rsi
xorl %ecx, %ecx
callq 0x438c6
testl %eax, %eax
je 0x3f17a
movq (%rsp), %rax
movq %rax, (%rbx)
cmpq $0x2, %rax
jae 0x3f1a5
movq %rsp, %rdx
movq $0x0, (%rdx)
leaq 0x8(%rsp), %rdi
movq %r13, %rsi
xorl %ecx, %ecx
callq 0x438c6
testl %eax, %eax
je 0x3f1d0
movq %rsp, %rdx
movq (%rdx), %rax
movq %rax, 0x8(%rbx)
movq $0x0, (%rdx)
leaq 0x8(%rsp), %rdi
movq %r13, %rsi
xorl %ecx, %ecx
callq 0x438c6
testl %eax, %eax
je 0x3f1fb
movq %rsp, %rdx
movq (%rdx), %rax
movq %rax, 0x10(%rbx)
movq $0x0, (%rdx)
leaq 0x8(%rsp), %rdi
movq %r13, %rsi
xorl %ecx, %ecx
callq 0x438c6
testl %eax, %eax
je 0x3f226
movq %rsp, %rdx
movq (%rdx), %rax
movq %rax, 0x18(%rbx)
movq $0x0, (%rdx)
leaq 0x8(%rsp), %rdi
movq %r13, %rsi
xorl %ecx, %ecx
callq 0x438c6
testl %eax, %eax
je 0x3f251
movq %rsp, %rdx
movq (%rdx), %rax
movq %rax, 0x20(%rbx)
movq $0x0, (%rdx)
leaq 0x8(%rsp), %rdi
movq %r13, %rsi
xorl %ecx, %ecx
callq 0x438c6
testl %eax, %eax
je 0x3f27c
movq %rsp, %rdx
movq (%rdx), %rax
movq %rax, 0x28(%rbx)
movq $0x0, (%rdx)
leaq 0x8(%rsp), %rdi
movq %r13, %rsi
xorl %ecx, %ecx
callq 0x438c6
testl %eax, %eax
je 0x3f2a7
movq %rsp, %rdx
movq (%rdx), %rax
movq %rax, 0x30(%rbx)
movq $0x0, (%rdx)
leaq 0x8(%rsp), %rdi
movq %r13, %rsi
xorl %ecx, %ecx
callq 0x438c6
testl %eax, %eax
je 0x3f2d2
movq %rsp, %rdx
movq (%rdx), %rax
movq %rax, 0x38(%rbx)
movq $0x0, (%rdx)
leaq 0x8(%rsp), %rdi
movq %r13, %rsi
xorl %ecx, %ecx
callq 0x438c6
testl %eax, %eax
je 0x3f2fd
movq %rsp, %rdx
movq (%rdx), %rax
movq %rax, 0x40(%rbx)
movq $0x0, (%rdx)
leaq 0x8(%rsp), %rdi
movq %r13, %rsi
xorl %ecx, %ecx
callq 0x438c6
testl %eax, %eax
je 0x3f328
movq %rsp, %rdx
movq (%rdx), %rax
movq %rax, 0x50(%rbx)
movq $0x0, (%rdx)
leaq 0x8(%rsp), %rdi
movq %r13, %rsi
xorl %ecx, %ecx
callq 0x438c6
testl %eax, %eax
je 0x3f353
movq %rsp, %rdx
movq (%rdx), %rax
movq %rax, 0x60(%rbx)
movq $0x0, (%rdx)
leaq 0x8(%rsp), %rdi
movq %r13, %rsi
xorl %ecx, %ecx
callq 0x438c6
testl %eax, %eax
je 0x3f37e
movq %rsp, %rdx
movq (%rdx), %rax
movq %rax, 0x70(%rbx)
movq $0x0, (%rdx)
leaq 0x8(%rsp), %rdi
movq %r13, %rsi
xorl %ecx, %ecx
callq 0x438c6
testl %eax, %eax
je 0x3f3a9
movq %rsp, %rdx
movq (%rdx), %rax
movq %rax, 0x78(%rbx)
movq $0x0, (%rdx)
leaq 0x8(%rsp), %rdi
movq %r13, %rsi
xorl %ecx, %ecx
callq 0x438c6
testl %eax, %eax
je 0x3f3d4
movq %rsp, %rdx
movq (%rdx), %rax
movq %rax, 0x80(%rbx)
movq $0x0, (%rdx)
leaq 0x8(%rsp), %rdi
movq %r13, %rsi
xorl %ecx, %ecx
callq 0x438c6
testl %eax, %eax
je 0x3f3ff
movq %rsp, %rdx
movq (%rdx), %rax
movq %rax, 0x88(%rbx)
movq $0x0, (%rdx)
leaq 0x8(%rsp), %rdi
movq %r13, %rsi
xorl %ecx, %ecx
callq 0x438c6
testl %eax, %eax
je 0x3f42a
movq %rsp, %rdx
movq (%rdx), %rax
movq %rax, 0x98(%rbx)
movq $0x0, (%rdx)
leaq 0x8(%rsp), %rdi
movq %r13, %rsi
xorl %ecx, %ecx
callq 0x438c6
testl %eax, %eax
je 0x3f455
movq (%rsp), %rax
movq %rax, %rcx
shrq $0x20, %rcx
jne 0x3f45e
movq %r15, 0x30(%rsp)
movl %eax, 0xa0(%rbx)
movq %rsp, %rdx
movq $0x0, (%rdx)
leaq 0x8(%rsp), %rdi
movq %r13, %rsi
xorl %ecx, %ecx
callq 0x438c6
testl %eax, %eax
je 0x3f489
movq %rsp, %rdx
movq (%rdx), %rbp
movq $0x0, (%rdx)
leaq 0x8(%rsp), %rdi
movq %r13, %rsi
xorl %ecx, %ecx
callq 0x438c6
testl %eax, %eax
je 0x3f4b4
movq %rsp, %rdx
movq (%rdx), %r15
movq $0x0, (%rdx)
leaq 0x8(%rsp), %rdi
movq %r13, %rsi
xorl %ecx, %ecx
callq 0x438c6
testl %eax, %eax
je 0x3f4df
movq 0x8(%rsp), %rcx
subq %r12, %rcx
addq 0x10(%rsp), %rcx
movq 0x28(%rsp), %r14
movq 0x8(%r14), %rax
movq %rcx, 0x20(%rsp)
subq %rcx, %rax
subq %r15, %rax
jb 0x3f50a
movq (%rsp), %r13
cmpq %rax, %r13
ja 0x3f535
movq 0x50(%rbx), %rax
addq %rax, %rax
addq 0x60(%rbx), %rax
addq 0x70(%rbx), %rax
addq 0x98(%rbx), %rax
shlq $0x2, %rax
leaq 0x3(%r15), %r12
andq $-0x4, %r12
movq %r15, 0x18(%rsp)
cmpq %rax, %r15
cmovbeq %rax, %r12
cmpq $0x0, 0xc8(%rbx)
jne 0x3f560
leaq (%r12,%rbp), %rdi
callq 0x4400
movq %rax, 0xc8(%rbx)
testq %rax, %rax
je 0x3f57f
movq %rax, %rcx
addq 0x18(%rsp), %rcx
movq %r14, %rdi
movq 0x20(%rsp), %rsi
movq %rax, %rdx
callq *0x10(%r14)
testl %eax, %eax
je 0x3f5aa
movq %r13, 0x38(%rsp)
testq %rbp, %rbp
je 0x3ecb3
movq 0xc8(%rbx), %rsi
movq 0x18(%rsp), %rax
leaq (%rsi,%rax), %rdx
leaq (%rsi,%r12), %rcx
leaq (%rcx,%rbp), %r8
movq 0x30(%rsp), %rdi
callq 0x439d7
testl %eax, %eax
je 0x3f6ac
movq 0xc8(%rbx), %rax
movq %rax, 0x48(%rbx)
movq 0x50(%rbx), %rcx
movq 0x60(%rbx), %rdx
leaq (%rax,%rcx,8), %rcx
movq %rcx, 0x58(%rbx)
leaq (%rcx,%rdx,4), %rcx
movq %rcx, 0x68(%rbx)
movq 0x70(%rbx), %rdx
leaq (%rcx,%rdx,4), %rcx
movq %rcx, 0x90(%rbx)
addq %rax, %r12
movq %r12, 0x40(%rsp)
addq %rbp, %r12
cmpq $0x0, 0x50(%rbx)
je 0x3edc6
movl $0xffffffff, %r14d      # imm = 0xFFFFFFFF
movq $-0x1, %r13
xorl %r15d, %r15d
movq $0x0, 0x10(%rsp)
leaq 0x40(%rsp), %rdi
movq %r12, %rsi
leaq 0x10(%rsp), %rdx
xorl %ecx, %ecx
callq 0x438c6
testl %eax, %eax
je 0x3efd0
movq 0x10(%rsp), %rax
movq %rax, %rcx
shrq $0x20, %rcx
jne 0x3f05d
addl %eax, %r14d
incl %r14d
movq 0x48(%rbx), %rax
movl %r14d, (%rax,%r15,8)
movq 0x40(%rsp), %rax
cmpq %r12, %rax
jae 0x3f032
movb (%rax), %bpl
movq $0x0, 0x10(%rsp)
leaq 0x40(%rsp), %rdi
movq %r12, %rsi
leaq 0x10(%rsp), %rdx
movl $0x1, %ecx
callq 0x438c6
testl %eax, %eax
je 0x3efdc
testb %bpl, %bpl
js 0x3ed9b
movq 0x10(%rsp), %rax
addq %rax, %r13
incq %r13
jmp 0x3eda3
subq 0x10(%rsp), %r13
incq %r13
movq %r13, %rax
shrq $0x20, %rax
jne 0x3f007
movq 0x48(%rbx), %rax
movl %r13d, 0x4(%rax,%r15,8)
incq %r15
cmpq 0x50(%rbx), %r15
jb 0x3ed0b
cmpq $0x0, 0x60(%rbx)
je 0x3ee2a
movl $0xffffffff, %r14d      # imm = 0xFFFFFFFF
xorl %r13d, %r13d
leaq 0x40(%rsp), %r15
leaq 0x10(%rsp), %rbp
movq $0x0, 0x10(%rsp)
movq %r15, %rdi
movq %r12, %rsi
movq %rbp, %rdx
xorl %ecx, %ecx
callq 0x438c6
testl %eax, %eax
je 0x3f088
movq 0x10(%rsp), %rax
movq %rax, %rcx
shrq $0x20, %rcx
jne 0x3f091
addl %eax, %r14d
incl %r14d
movq 0x58(%rbx), %rax
movl %r14d, (%rax,%r13,4)
incq %r13
cmpq 0x60(%rbx), %r13
jb 0x3ede0
cmpq $0x0, 0x70(%rbx)
je 0x3ee82
xorl %r14d, %r14d
leaq 0x40(%rsp), %r15
leaq 0x10(%rsp), %rbp
movq $0x0, 0x10(%rsp)
movq %r15, %rdi
movq %r12, %rsi
movq %rbp, %rdx
xorl %ecx, %ecx
callq 0x438c6
testl %eax, %eax
je 0x3f0bc
movq 0x10(%rsp), %rax
movq %rax, %rcx
shrq $0x20, %rcx
jne 0x3f0c5
movq 0x68(%rbx), %rcx
movl %eax, (%rcx,%r14,4)
incq %r14
cmpq 0x70(%rbx), %r14
jb 0x3ee3e
cmpq $0x0, 0x98(%rbx)
je 0x3eeef
movl $0xffffffff, %r14d      # imm = 0xFFFFFFFF
xorl %r13d, %r13d
leaq 0x40(%rsp), %r15
leaq 0x10(%rsp), %rbp
movq $0x0, 0x10(%rsp)
movq %r15, %rdi
movq %r12, %rsi
movq %rbp, %rdx
xorl %ecx, %ecx
callq 0x438c6
testl %eax, %eax
je 0x3f0f0
movq 0x10(%rsp), %rax
movq %rax, %rcx
shrq $0x20, %rcx
jne 0x3f0f9
addl %eax, %r14d
incl %r14d
movq 0x90(%rbx), %rax
movl %r14d, (%rax,%r13,4)
incq %r13
cmpq 0x98(%rbx), %r13
jb 0x3ee9f
cmpq %r12, 0x40(%rsp)
jne 0x3f5d5
movq 0x20(%rsp), %rdx
addq 0x18(%rsp), %rdx
leaq 0xd0(%rbx), %r15
movq 0x38(%rsp), %r12
leaq (%rdx,%r12), %rcx
movq %r15, %rdi
movq 0x28(%rsp), %r14
movq %r14, %rsi
callq 0x4434d
movq %r15, 0xb8(%rbx)
movq 0x8(%r14), %rsi
cmpq $0xf, %rsi
jbe 0x3f600
addq $-0x10, %rsi
leaq 0x50(%rsp), %rcx
leaq 0x40(%rsp), %rdx
movq %r14, %rdi
callq *0x10(%r14)
testl %eax, %eax
je 0x3f62b
movabsq $0x452631746150695a, %rax # imm = 0x452631746150695A
xorq 0x44(%rsp), %rax
movl 0x4c(%rsp), %ecx
xorq $0x61727478, %rcx       # imm = 0x61727478
orq %rax, %rcx
jne 0x3f656
addq 0xf8(%rbx), %r12
movl 0x40(%rsp), %eax
leaq (%rax,%r12), %rdx
addq $0x10, %rdx
movq 0x8(%r14), %rcx
cmpq %rcx, %rdx
ja 0x3f681
addq $-0x10, %rcx
movq %rcx, %rdx
subq %rax, %rdx
leaq 0x100(%rbx), %r15
movq %r15, %rdi
movq %r14, %rsi
callq 0x4434d
movq %r15, 0xc0(%rbx)
movb $0x1, %al
addq $0x118, %rsp            # imm = 0x118
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x211a7(%rip), %rdi     # 0x6017e
jmp 0x3f064
leaq 0x211f2(%rip), %rdi     # 0x601d5
callq 0x44e0
leaq 0x1b061(%rip), %rdi     # 0x5a050
leaq 0x20c9d(%rip), %rsi     # 0x5fc93
leaq 0x20cb0(%rip), %rcx     # 0x5fcad
movl $0xb5, %edx
callq 0x4200
leaq 0x21205(%rip), %rdi     # 0x60213
callq 0x44e0
leaq 0x1b036(%rip), %rdi     # 0x5a050
leaq 0x20c72(%rip), %rsi     # 0x5fc93
leaq 0x20c85(%rip), %rcx     # 0x5fcad
movl $0xba, %edx
callq 0x4200
leaq 0x21187(%rip), %rdi     # 0x601c0
callq 0x44e0
leaq 0x1b00b(%rip), %rdi     # 0x5a050
leaq 0x20c47(%rip), %rsi     # 0x5fc93
leaq 0x20c5a(%rip), %rcx     # 0x5fcad
movl $0xb2, %edx
callq 0x4200
leaq 0x21146(%rip), %rdi     # 0x601aa
callq 0x44e0
leaq 0x1afe0(%rip), %rdi     # 0x5a050
leaq 0x20c1c(%rip), %rsi     # 0x5fc93
leaq 0x20c2f(%rip), %rcx     # 0x5fcad
movl $0xae, %edx
callq 0x4200
leaq 0x210ef(%rip), %rdi     # 0x6017e
jmp 0x3f098
leaq 0x21112(%rip), %rdi     # 0x601aa
callq 0x44e0
leaq 0x1afac(%rip), %rdi     # 0x5a050
leaq 0x20be8(%rip), %rsi     # 0x5fc93
leaq 0x20bfb(%rip), %rcx     # 0x5fcad
movl $0xbd, %edx
callq 0x4200
leaq 0x210bb(%rip), %rdi     # 0x6017e
jmp 0x3f0cc
leaq 0x210de(%rip), %rdi     # 0x601aa
callq 0x44e0
leaq 0x1af78(%rip), %rdi     # 0x5a050
leaq 0x20bb4(%rip), %rsi     # 0x5fc93
leaq 0x20bc7(%rip), %rcx     # 0x5fcad
movl $0xbf, %edx
callq 0x4200
leaq 0x21087(%rip), %rdi     # 0x6017e
jmp 0x3f100
leaq 0x210aa(%rip), %rdi     # 0x601aa
callq 0x44e0
leaq 0x1af44(%rip), %rdi     # 0x5a050
leaq 0x20b80(%rip), %rsi     # 0x5fc93
leaq 0x20b93(%rip), %rcx     # 0x5fcad
movl $0xc1, %edx
callq 0x4200
leaq 0x20cd8(%rip), %rdi     # 0x5fe03
callq 0x44e0
leaq 0x1af19(%rip), %rdi     # 0x5a050
leaq 0x20b55(%rip), %rsi     # 0x5fc93
leaq 0x20b68(%rip), %rcx     # 0x5fcad
movl $0x66, %edx
callq 0x4200
leaq 0x20cec(%rip), %rdi     # 0x5fe42
callq 0x44e0
leaq 0x1aeee(%rip), %rdi     # 0x5a050
leaq 0x20b2a(%rip), %rsi     # 0x5fc93
leaq 0x20b3d(%rip), %rcx     # 0x5fcad
movl $0x6c, %edx
callq 0x4200
leaq 0x20d17(%rip), %rdi     # 0x5fe98
callq 0x44e0
leaq 0x1aec3(%rip), %rdi     # 0x5a050
leaq 0x20aff(%rip), %rsi     # 0x5fc93
leaq 0x20b12(%rip), %rcx     # 0x5fcad
movl $0x78, %edx
callq 0x4200
leaq 0x20cd1(%rip), %rdi     # 0x5fe7d
callq 0x44e0
leaq 0x1ae98(%rip), %rdi     # 0x5a050
leaq 0x20ad4(%rip), %rsi     # 0x5fc93
leaq 0x20ae7(%rip), %rcx     # 0x5fcad
movl $0x79, %edx
callq 0x4200
leaq 0x20cc1(%rip), %rdi     # 0x5fe98
callq 0x44e0
leaq 0x1ae6d(%rip), %rdi     # 0x5a050
leaq 0x20aa9(%rip), %rsi     # 0x5fc93
leaq 0x20abc(%rip), %rcx     # 0x5fcad
movl $0x7a, %edx
callq 0x4200
leaq 0x20c96(%rip), %rdi     # 0x5fe98
callq 0x44e0
leaq 0x1ae42(%rip), %rdi     # 0x5a050
leaq 0x20a7e(%rip), %rsi     # 0x5fc93
leaq 0x20a91(%rip), %rcx     # 0x5fcad
movl $0x7b, %edx
callq 0x4200
leaq 0x20c6b(%rip), %rdi     # 0x5fe98
callq 0x44e0
leaq 0x1ae17(%rip), %rdi     # 0x5a050
leaq 0x20a53(%rip), %rsi     # 0x5fc93
leaq 0x20a66(%rip), %rcx     # 0x5fcad
movl $0x7c, %edx
callq 0x4200
leaq 0x20c40(%rip), %rdi     # 0x5fe98
callq 0x44e0
leaq 0x1adec(%rip), %rdi     # 0x5a050
leaq 0x20a28(%rip), %rsi     # 0x5fc93
leaq 0x20a3b(%rip), %rcx     # 0x5fcad
movl $0x7d, %edx
callq 0x4200
leaq 0x20c15(%rip), %rdi     # 0x5fe98
callq 0x44e0
leaq 0x1adc1(%rip), %rdi     # 0x5a050
leaq 0x209fd(%rip), %rsi     # 0x5fc93
leaq 0x20a10(%rip), %rcx     # 0x5fcad
movl $0x7e, %edx
callq 0x4200
leaq 0x20bea(%rip), %rdi     # 0x5fe98
callq 0x44e0
leaq 0x1ad96(%rip), %rdi     # 0x5a050
leaq 0x209d2(%rip), %rsi     # 0x5fc93
leaq 0x209e5(%rip), %rcx     # 0x5fcad
movl $0x7f, %edx
callq 0x4200
leaq 0x20bbf(%rip), %rdi     # 0x5fe98
callq 0x44e0
leaq 0x1ad6b(%rip), %rdi     # 0x5a050
leaq 0x209a7(%rip), %rsi     # 0x5fc93
leaq 0x209ba(%rip), %rcx     # 0x5fcad
movl $0x80, %edx
callq 0x4200
leaq 0x20b94(%rip), %rdi     # 0x5fe98
callq 0x44e0
leaq 0x1ad40(%rip), %rdi     # 0x5a050
leaq 0x2097c(%rip), %rsi     # 0x5fc93
leaq 0x2098f(%rip), %rcx     # 0x5fcad
movl $0x81, %edx
callq 0x4200
leaq 0x20b69(%rip), %rdi     # 0x5fe98
callq 0x44e0
leaq 0x1ad15(%rip), %rdi     # 0x5a050
leaq 0x20951(%rip), %rsi     # 0x5fc93
leaq 0x20964(%rip), %rcx     # 0x5fcad
movl $0x82, %edx
callq 0x4200
leaq 0x20b3e(%rip), %rdi     # 0x5fe98
callq 0x44e0
leaq 0x1acea(%rip), %rdi     # 0x5a050
leaq 0x20926(%rip), %rsi     # 0x5fc93
leaq 0x20939(%rip), %rcx     # 0x5fcad
movl $0x83, %edx
callq 0x4200
leaq 0x20b13(%rip), %rdi     # 0x5fe98
callq 0x44e0
leaq 0x1acbf(%rip), %rdi     # 0x5a050
leaq 0x208fb(%rip), %rsi     # 0x5fc93
leaq 0x2090e(%rip), %rcx     # 0x5fcad
movl $0x84, %edx
callq 0x4200
leaq 0x20ae8(%rip), %rdi     # 0x5fe98
callq 0x44e0
leaq 0x1ac94(%rip), %rdi     # 0x5a050
leaq 0x208d0(%rip), %rsi     # 0x5fc93
leaq 0x208e3(%rip), %rcx     # 0x5fcad
movl $0x85, %edx
callq 0x4200
leaq 0x20abd(%rip), %rdi     # 0x5fe98
callq 0x44e0
leaq 0x1ac69(%rip), %rdi     # 0x5a050
leaq 0x208a5(%rip), %rsi     # 0x5fc93
leaq 0x208b8(%rip), %rcx     # 0x5fcad
movl $0x86, %edx
callq 0x4200
leaq 0x20a92(%rip), %rdi     # 0x5fe98
callq 0x44e0
leaq 0x1ac3e(%rip), %rdi     # 0x5a050
leaq 0x2087a(%rip), %rsi     # 0x5fc93
leaq 0x2088d(%rip), %rcx     # 0x5fcad
movl $0x87, %edx
callq 0x4200
leaq 0x20a67(%rip), %rdi     # 0x5fe98
callq 0x44e0
leaq 0x1ac13(%rip), %rdi     # 0x5a050
leaq 0x2084f(%rip), %rsi     # 0x5fc93
leaq 0x20862(%rip), %rcx     # 0x5fcad
movl $0x88, %edx
callq 0x4200
leaq 0x20a3c(%rip), %rdi     # 0x5fe98
jmp 0x3f465
leaq 0x20d45(%rip), %rdi     # 0x601aa
callq 0x44e0
leaq 0x1abdf(%rip), %rdi     # 0x5a050
leaq 0x2081b(%rip), %rsi     # 0x5fc93
leaq 0x2082e(%rip), %rcx     # 0x5fcad
movl $0x89, %edx
callq 0x4200
leaq 0x20a08(%rip), %rdi     # 0x5fe98
callq 0x44e0
leaq 0x1abb4(%rip), %rdi     # 0x5a050
leaq 0x207f0(%rip), %rsi     # 0x5fc93
leaq 0x20803(%rip), %rcx     # 0x5fcad
movl $0x8a, %edx
callq 0x4200
leaq 0x209dd(%rip), %rdi     # 0x5fe98
callq 0x44e0
leaq 0x1ab89(%rip), %rdi     # 0x5a050
leaq 0x207c5(%rip), %rsi     # 0x5fc93
leaq 0x207d8(%rip), %rcx     # 0x5fcad
movl $0x8b, %edx
callq 0x4200
leaq 0x209b2(%rip), %rdi     # 0x5fe98
callq 0x44e0
leaq 0x1ab5e(%rip), %rdi     # 0x5a050
leaq 0x2079a(%rip), %rsi     # 0x5fc93
leaq 0x207ad(%rip), %rcx     # 0x5fcad
movl $0x8c, %edx
callq 0x4200
leaq 0x209b8(%rip), %rdi     # 0x5fec9
callq 0x44e0
leaq 0x1ab33(%rip), %rdi     # 0x5a050
leaq 0x2076f(%rip), %rsi     # 0x5fc93
leaq 0x20782(%rip), %rcx     # 0x5fcad
movl $0x8f, %edx
callq 0x4200
leaq 0x209cf(%rip), %rdi     # 0x5ff0b
callq 0x44e0
leaq 0x1ab08(%rip), %rdi     # 0x5a050
leaq 0x20744(%rip), %rsi     # 0x5fc93
leaq 0x20757(%rip), %rcx     # 0x5fcad
movl $0x90, %edx
callq 0x4200
leaq 0x20469(%rip), %rdi     # 0x5f9d0
leaq 0x20725(%rip), %rsi     # 0x5fc93
leaq 0x20738(%rip), %rcx     # 0x5fcad
movl $0x99, %edx
callq 0x4200
leaq 0x20625(%rip), %rdi     # 0x5fbab
callq 0x44e0
leaq 0x1aabe(%rip), %rdi     # 0x5a050
leaq 0x206fa(%rip), %rsi     # 0x5fc93
leaq 0x2070d(%rip), %rcx     # 0x5fcad
movl $0x9b, %edx
callq 0x4200
leaq 0x209a7(%rip), %rdi     # 0x5ff58
callq 0x44e0
leaq 0x1aa93(%rip), %rdi     # 0x5a050
leaq 0x206cf(%rip), %rsi     # 0x5fc93
leaq 0x206e2(%rip), %rcx     # 0x5fcad
movl $0x9d, %edx
callq 0x4200
leaq 0x20a66(%rip), %rdi     # 0x60042
callq 0x44e0
leaq 0x1aa68(%rip), %rdi     # 0x5a050
leaq 0x206a4(%rip), %rsi     # 0x5fc93
leaq 0x206b7(%rip), %rcx     # 0x5fcad
movl $0xc2, %edx
callq 0x4200
leaq 0x20a51(%rip), %rdi     # 0x60058
callq 0x44e0
leaq 0x1aa3d(%rip), %rdi     # 0x5a050
leaq 0x20679(%rip), %rsi     # 0x5fc93
leaq 0x2068c(%rip), %rcx     # 0x5fcad
movl $0xcb, %edx
callq 0x4200
leaq 0x20a53(%rip), %rdi     # 0x60085
callq 0x44e0
leaq 0x1aa12(%rip), %rdi     # 0x5a050
leaq 0x2064e(%rip), %rsi     # 0x5fc93
leaq 0x20661(%rip), %rcx     # 0x5fcad
movl $0xcd, %edx
callq 0x4200
leaq 0x20a89(%rip), %rdi     # 0x600e6
callq 0x44e0
leaq 0x1a9e7(%rip), %rdi     # 0x5a050
leaq 0x20623(%rip), %rsi     # 0x5fc93
leaq 0x20636(%rip), %rcx     # 0x5fcad
movl $0xce, %edx
callq 0x4200
leaq 0x20a91(%rip), %rdi     # 0x60119
callq 0x44e0
leaq 0x1a9bc(%rip), %rdi     # 0x5a050
leaq 0x205f8(%rip), %rsi     # 0x5fc93
leaq 0x2060b(%rip), %rcx     # 0x5fcad
movl $0xd1, %edx
callq 0x4200
leaq 0x208fe(%rip), %rdi     # 0x5ffb1
callq 0x44e0
leaq 0x1a991(%rip), %rdi     # 0x5a050
leaq 0x205cd(%rip), %rsi     # 0x5fc93
leaq 0x205e0(%rip), %rcx     # 0x5fcad
movl $0xa0, %edx
callq 0x4200
nop