📄 unzip.cod
字号:
$LN13@strcmpcase:
; 275 : return ((c2=='\0') ? 0 : -1);
0003f f6 d8 neg al
00041 5f pop edi
00042 5e pop esi
00043 1b c0 sbb eax, eax
; 282 : }
; 283 : }
00045 c3 ret 0
$LN15@strcmpcase:
00046 5f pop edi
; 279 : return -1;
00047 83 c8 ff or eax, -1
0004a 5e pop esi
; 282 : }
; 283 : }
0004b c3 ret 0
_strcmpcasenosensitive_internal ENDP
; Function compile flags: /Ogtpy
_TEXT ENDS
; COMDAT _unzlocal_getByte
_TEXT SEGMENT
_c$ = -1 ; size = 1
_pi$ = 8 ; size = 4
_unzlocal_getByte PROC ; COMDAT
; _pzlib_filefunc_def$ = esi
; _filestream$ = edi
; 175 : {
00000 51 push ecx
; 176 : unsigned char c;
; 177 : int err = (int)ZREAD(*pzlib_filefunc_def,filestream,&c,1);
00001 8b 4e 1c mov ecx, DWORD PTR [esi+28]
00004 8b 56 04 mov edx, DWORD PTR [esi+4]
00007 6a 01 push 1
00009 8d 44 24 07 lea eax, DWORD PTR _c$[esp+8]
0000d 50 push eax
0000e 57 push edi
0000f 51 push ecx
00010 ff d2 call edx
00012 83 c4 10 add esp, 16 ; 00000010H
; 178 : if (err==1)
00015 83 f8 01 cmp eax, 1
00018 75 0f jne SHORT $LN4@unzlocal_g
; 179 : {
; 180 : *pi = (int)c;
0001a 0f b6 44 24 03 movzx eax, BYTE PTR _c$[esp+4]
0001f 8b 4c 24 08 mov ecx, DWORD PTR _pi$[esp]
00023 89 01 mov DWORD PTR [ecx], eax
; 181 : return UNZ_OK;
00025 33 c0 xor eax, eax
; 186 : return UNZ_ERRNO;
; 187 : else
; 188 : return UNZ_EOF;
; 189 : }
; 190 : }
00027 59 pop ecx
00028 c3 ret 0
$LN4@unzlocal_g:
; 182 : }
; 183 : else
; 184 : {
; 185 : if (ZERROR(*pzlib_filefunc_def,filestream))
00029 8b 56 1c mov edx, DWORD PTR [esi+28]
0002c 8b 46 18 mov eax, DWORD PTR [esi+24]
0002f 57 push edi
00030 52 push edx
00031 ff d0 call eax
00033 83 c4 08 add esp, 8
00036 f7 d8 neg eax
00038 1b c0 sbb eax, eax
; 186 : return UNZ_ERRNO;
; 187 : else
; 188 : return UNZ_EOF;
; 189 : }
; 190 : }
0003a 59 pop ecx
0003b c3 ret 0
_unzlocal_getByte ENDP
; Function compile flags: /Ogtpy
; File d:\src\vs2005\cpp\ceremoteclient\zlib123\contrib\minizip\crypt.h
_TEXT ENDS
; COMDAT _update_keys
_TEXT SEGMENT
_update_keys PROC ; COMDAT
; _pkeys$ = esi
; _pcrc_32_tab$ = edi
; _c$ = eax
; 50 : (*(pkeys+0)) = CRC32((*(pkeys+0)), c);
00000 8b 0e mov ecx, DWORD PTR [esi]
00002 8b d1 mov edx, ecx
00004 33 d0 xor edx, eax
00006 c1 e9 08 shr ecx, 8
00009 81 e2 ff 00 00
00 and edx, 255 ; 000000ffH
0000f 8b 14 97 mov edx, DWORD PTR [edi+edx*4]
00012 33 d1 xor edx, ecx
; 51 : (*(pkeys+1)) += (*(pkeys+0)) & 0xff;
00014 0f b6 ca movzx ecx, dl
; 52 : (*(pkeys+1)) = (*(pkeys+1)) * 134775813L + 1;
00017 03 4e 04 add ecx, DWORD PTR [esi+4]
0001a 89 16 mov DWORD PTR [esi], edx
; 53 : {
; 54 : register int keyshift = (int)((*(pkeys+1)) >> 24);
; 55 : (*(pkeys+2)) = CRC32((*(pkeys+2)), keyshift);
0001c 8b 56 08 mov edx, DWORD PTR [esi+8]
0001f 69 c9 05 84 08
08 imul ecx, 134775813 ; 08088405H
00025 83 c1 01 add ecx, 1
00028 89 4e 04 mov DWORD PTR [esi+4], ecx
0002b c1 e9 18 shr ecx, 24 ; 00000018H
0002e 33 ca xor ecx, edx
00030 81 e1 ff 00 00
00 and ecx, 255 ; 000000ffH
00036 c1 ea 08 shr edx, 8
00039 33 14 8f xor edx, DWORD PTR [edi+ecx*4]
0003c 89 56 08 mov DWORD PTR [esi+8], edx
; 56 : }
; 57 : return c;
; 58 : }
0003f c3 ret 0
_update_keys ENDP
; Function compile flags: /Ogtpy
_TEXT ENDS
; COMDAT _decrypt_byte
_TEXT SEGMENT
_decrypt_byte PROC ; COMDAT
; _pkeys$ = eax
; 37 : unsigned temp; /* POTENTIAL BUG: temp*(temp^1) may overflow in an
; 38 : * unpredictable manner on 16-bit systems; not a problem
; 39 : * with any known compiler so far, though */
; 40 :
; 41 : temp = ((unsigned)(*(pkeys+2)) & 0xffff) | 2;
00000 8b 40 08 mov eax, DWORD PTR [eax+8]
00003 25 fd ff 00 00 and eax, 65533 ; 0000fffdH
00008 83 c8 02 or eax, 2
; 42 : return (int)(((temp * (temp ^ 1)) >> 8) & 0xff);
0000b 8b c8 mov ecx, eax
0000d 83 f1 01 xor ecx, 1
00010 0f af c8 imul ecx, eax
00013 0f b6 c5 movzx eax, ch
; 43 : }
00016 c3 ret 0
_decrypt_byte ENDP
PUBLIC _unzCloseCurrentFile@4
; Function compile flags: /Ogtpy
; File d:\src\vs2005\cpp\ceremoteclient\zlib123\contrib\minizip\unzip.c
; COMDAT _unzCloseCurrentFile@4
_TEXT SEGMENT
_err$ = -4 ; size = 4
_file$ = 8 ; size = 4
_unzCloseCurrentFile@4 PROC ; COMDAT
; 1491 : {
00000 51 push ecx
00001 53 push ebx
; 1492 : int err=UNZ_OK;
; 1493 :
; 1494 : unz_s* s;
; 1495 : file_in_zip_read_info_s* pfile_in_zip_read_info;
; 1496 : if (file==NULL)
00002 8b 5c 24 0c mov ebx, DWORD PTR _file$[esp+4]
00006 85 db test ebx, ebx
00008 c7 44 24 04 00
00 00 00 mov DWORD PTR _err$[esp+8], 0
00010 75 08 jne SHORT $LN7@unzCloseCu
; 1497 : return UNZ_PARAMERROR;
00012 8d 43 9a lea eax, DWORD PTR [ebx-102]
00015 5b pop ebx
; 1524 : }
00016 59 pop ecx
00017 c2 04 00 ret 4
$LN7@unzCloseCu:
0001a 56 push esi
; 1498 : s=(unz_s*)file;
; 1499 : pfile_in_zip_read_info=s->pfile_in_zip_read;
0001b 8b b3 9c 00 00
00 mov esi, DWORD PTR [ebx+156]
; 1500 :
; 1501 : if (pfile_in_zip_read_info==NULL)
00021 85 f6 test esi, esi
00023 75 09 jne SHORT $LN6@unzCloseCu
; 1502 : return UNZ_PARAMERROR;
00025 8d 46 9a lea eax, DWORD PTR [esi-102]
00028 5e pop esi
00029 5b pop ebx
; 1524 : }
0002a 59 pop ecx
0002b c2 04 00 ret 4
$LN6@unzCloseCu:
; 1503 :
; 1504 :
; 1505 : if ((pfile_in_zip_read_info->rest_read_uncompressed == 0) &&
; 1506 : (!pfile_in_zip_read_info->raw))
0002e 83 7e 5c 00 cmp DWORD PTR [esi+92], 0
00032 75 19 jne SHORT $LN4@unzCloseCu
00034 83 be 8c 00 00
00 00 cmp DWORD PTR [esi+140], 0
0003b 75 10 jne SHORT $LN4@unzCloseCu
; 1507 : {
; 1508 : if (pfile_in_zip_read_info->crc32 != pfile_in_zip_read_info->crc32_wait)
0003d 8b 46 50 mov eax, DWORD PTR [esi+80]
00040 3b 46 54 cmp eax, DWORD PTR [esi+84]
00043 74 08 je SHORT $LN4@unzCloseCu
; 1509 : err=UNZ_CRCERROR;
00045 c7 44 24 08 97
ff ff ff mov DWORD PTR _err$[esp+12], -105 ; ffffff97H
$LN4@unzCloseCu:
; 1510 : }
; 1511 :
; 1512 :
; 1513 : TRYFREE(pfile_in_zip_read_info->read_buffer);
0004d 8b 06 mov eax, DWORD PTR [esi]
0004f 85 c0 test eax, eax
00051 57 push edi
00052 8b 3d 00 00 00
00 mov edi, DWORD PTR __imp__free
00058 74 06 je SHORT $LN3@unzCloseCu
0005a 50 push eax
0005b ff d7 call edi
0005d 83 c4 04 add esp, 4
$LN3@unzCloseCu:
; 1514 : pfile_in_zip_read_info->read_buffer = NULL;
; 1515 : if (pfile_in_zip_read_info->stream_initialised)
00060 83 7e 40 00 cmp DWORD PTR [esi+64], 0
00064 c7 06 00 00 00
00 mov DWORD PTR [esi], 0
0006a 74 09 je SHORT $LN2@unzCloseCu
; 1516 : inflateEnd(&pfile_in_zip_read_info->stream);
0006c 8d 4e 04 lea ecx, DWORD PTR [esi+4]
0006f 51 push ecx
00070 e8 00 00 00 00 call _inflateEnd@4
$LN2@unzCloseCu:
; 1517 :
; 1518 : pfile_in_zip_read_info->stream_initialised = 0;
; 1519 : TRYFREE(pfile_in_zip_read_info);
00075 56 push esi
00076 c7 46 40 00 00
00 00 mov DWORD PTR [esi+64], 0
0007d ff d7 call edi
; 1520 :
; 1521 : s->pfile_in_zip_read=NULL;
; 1522 :
; 1523 : return err;
0007f 8b 44 24 10 mov eax, DWORD PTR _err$[esp+20]
00083 83 c4 04 add esp, 4
00086 5f pop edi
00087 5e pop esi
00088 c7 83 9c 00 00
00 00 00 00 00 mov DWORD PTR [ebx+156], 0
00092 5b pop ebx
; 1524 : }
00093 59 pop ecx
00094 c2 04 00 ret 4
_unzCloseCurrentFile@4 ENDP
_TEXT ENDS
PUBLIC _unzClose@4
; Function compile flags: /Ogtpy
; COMDAT _unzClose@4
_TEXT SEGMENT
_file$ = 8 ; size = 4
_unzClose@4 PROC ; COMDAT
; 513 : {
00000 56 push esi
; 514 : unz_s* s;
; 515 : if (file==NULL)
00001 8b 74 24 08 mov esi, DWORD PTR _file$[esp]
00005 85 f6 test esi, esi
00007 75 07 jne SHORT $LN3@unzClose
; 516 : return UNZ_PARAMERROR;
00009 8d 46 9a lea eax, DWORD PTR [esi-102]
0000c 5e pop esi
; 525 : }
0000d c2 04 00 ret 4
$LN3@unzClose:
; 517 : s=(unz_s*)file;
; 518 :
; 519 : if (s->pfile_in_zip_read!=NULL)
00010 83 be 9c 00 00
00 00 cmp DWORD PTR [esi+156], 0
00017 74 06 je SHORT $LN2@unzClose
; 520 : unzCloseCurrentFile(file);
00019 56 push esi
0001a e8 00 00 00 00 call _unzCloseCurrentFile@4
$LN2@unzClose:
; 521 :
; 522 : ZCLOSE(s->z_filefunc, s->filestream);
0001f 8b 46 20 mov eax, DWORD PTR [esi+32]
00022 8b 4e 1c mov ecx, DWORD PTR [esi+28]
00025 8b 56 14 mov edx, DWORD PTR [esi+20]
00028 50 push eax
00029 51 push ecx
0002a ff d2 call edx
; 523 : TRYFREE(s);
0002c 56 push esi
0002d ff 15 00 00 00
00 call DWORD PTR __imp__free
00033 83 c4 0c add esp, 12 ; 0000000cH
; 524 : return UNZ_OK;
00036 33 c0 xor eax, eax
00038 5e pop esi
; 525 : }
00039 c2 04 00 ret 4
_unzClose@4 ENDP
_TEXT ENDS
PUBLIC _unzStringFileNameCompare@12
; Function compile flags: /Ogtpy
; COMDAT _unzStringFileNameCompare@12
_TEXT SEGMENT
_fileName1$ = 8 ; size = 4
_fileName2$ = 12 ; size = 4
_iCaseSensitivity$ = 16 ; size = 4
_unzStringFileNameCompare@12 PROC ; COMDAT
; 310 : if (iCaseSensitivity==0)
00000 8b 44 24 0c mov eax, DWORD PTR _iCaseSensitivity$[esp-4]
00004 85 c0 test eax, eax
; 311 : iCaseSensitivity=CASESENSITIVITYDEFAULTVALUE;
; 312 :
; 313 : if (iCaseSensitivity==1)
00006 74 36 je SHORT $LN1@unzStringF
00008 83 f8 01 cmp eax, 1
0000b 75 31 jne SHORT $LN1@unzStringF
; 314 : return strcmp(fileName1,fileName2);
0000d 8b 54 24 08 mov edx, DWORD PTR _fileName2$[esp-4]
00011 8b 4c 24 04 mov ecx, DWORD PTR _fileName1$[esp-4]
$LL5@unzStringF:
00015 8a 01 mov al, BYTE PTR [ecx]
00017 3a 02 cmp al, BYTE PTR [edx]
00019 75 1b jne SHORT $LN6@unzStringF
0001b 84 c0 test al, al
0001d 74 12 je SHORT $LN7@unzStringF
0001f 8a 41 01 mov al, BYTE PTR [ecx+1]
00022 3a 42 01 cmp al, BYTE PTR [edx+1]
00025 75 0f jne SHORT $LN6@unzStringF
00027 83 c1 02 add ecx, 2
0002a 83 c2 02 add edx, 2
0002d 84 c0 test al, al
0002f 75 e4 jne SHORT $LL5@unzStringF
$LN7@unzStringF:
00031 33 c0 xor eax, eax
; 317 : }
00033 c2 0c 00 ret 12 ; 0000000cH
$LN6@unzStringF:
; 314 : return strcmp(fileName1,fileName2);
00036 1b c0 sbb eax, eax
00038 83 d8 ff sbb eax, -1
; 317 : }
0003b c2 0c 00 ret 12 ; 0000000cH
$LN1@unzStringF:
; 315 :
; 316 : return STRCMPCASENOSENTIVEFUNCTION(fileName1,fileName2);
0003e 8b 44 24 08 mov eax, DWORD PTR _fileName2$[esp-4]
00042 8b 4c 24 04 mov ecx, DWORD PTR _fileName1$[esp-4]
00046 e8 00 00 00 00 call _strcmpcasenosensitive_internal
; 317 : }
0004b c2 0c 00 ret 12 ; 0000000cH
_unzStringFileNameCompare@12 ENDP
; Function compile flags: /Ogtpy
_TEXT ENDS
; COMDAT _unzlocal_getLong
_TEXT SEGMENT
_i$ = -4 ; size = 4
_pX$ = 8 ; size = 4
_unzlocal_getLong PROC ; COMDAT
; _pzlib_filefunc_def$ = ecx
; _filestream$ = eax
; 233 : {
00000 51 push ecx
00001 53 push ebx
00002 55 push ebp
00003 8b 6c 24 10 mov ebp, DWORD PTR _pX$[esp+8]
00007 56 push esi
00008 57 push edi
00009 8b f8 mov edi, eax
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -