📄 unzip.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 14.00.50727.762
TITLE d:\src\VS2005\cpp\CeRemoteClient\zlib123\contrib\minizip\unzip.c
.686P
.XMM
include listing.inc
.model flat
INCLUDELIB OLDNAMES
PUBLIC _unz_copyright
ORG $+1
_unz_copyright DB ' unzip 1.01 Copyright 1998-2004 Gilles Vollant - http:'
DB '//www.winimage.com/zLibDll', 00H
PUBLIC _unzGetGlobalComment@12
; Function compile flags: /Ogtpy
; File d:\src\vs2005\cpp\ceremoteclient\zlib123\contrib\minizip\unzip.c
; COMDAT _unzGetGlobalComment@12
_TEXT SEGMENT
_file$ = 8 ; size = 4
_szComment$ = 12 ; size = 4
_uSizeBuf$ = 16 ; size = 4
_unzGetGlobalComment@12 PROC ; COMDAT
; 1536 : {
00000 56 push esi
; 1537 : int err=UNZ_OK;
; 1538 : unz_s* s;
; 1539 : uLong uReadThis ;
; 1540 : 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 $LN6@unzGetGlob
; 1541 : return UNZ_PARAMERROR;
00009 8d 46 9a lea eax, DWORD PTR [esi-102]
0000c 5e pop esi
; 1561 : }
0000d c2 0c 00 ret 12 ; 0000000cH
$LN6@unzGetGlob:
; 1542 : s=(unz_s*)file;
; 1543 :
; 1544 : uReadThis = uSizeBuf;
; 1545 : if (uReadThis>s->gi.size_comment)
00010 8b 46 28 mov eax, DWORD PTR [esi+40]
00013 55 push ebp
00014 8b 6c 24 14 mov ebp, DWORD PTR _uSizeBuf$[esp+4]
00018 3b e8 cmp ebp, eax
0001a 57 push edi
0001b 8b fd mov edi, ebp
0001d 76 02 jbe SHORT $LN5@unzGetGlob
; 1546 : uReadThis = s->gi.size_comment;
0001f 8b f8 mov edi, eax
$LN5@unzGetGlob:
; 1547 :
; 1548 : if (ZSEEK(s->z_filefunc,s->filestream,s->central_pos+22,ZLIB_FILEFUNC_SEEK_SET)!=0)
00021 8b 46 3c mov eax, DWORD PTR [esi+60]
00024 8b 4e 20 mov ecx, DWORD PTR [esi+32]
00027 8b 56 1c mov edx, DWORD PTR [esi+28]
0002a 6a 00 push 0
0002c 83 c0 16 add eax, 22 ; 00000016H
0002f 50 push eax
00030 8b 46 10 mov eax, DWORD PTR [esi+16]
00033 51 push ecx
00034 52 push edx
00035 ff d0 call eax
00037 83 c4 10 add esp, 16 ; 00000010H
0003a 85 c0 test eax, eax
0003c 74 09 je SHORT $LN4@unzGetGlob
0003e 5f pop edi
0003f 5d pop ebp
; 1549 : return UNZ_ERRNO;
00040 83 c8 ff or eax, -1
00043 5e pop esi
; 1561 : }
00044 c2 0c 00 ret 12 ; 0000000cH
$LN4@unzGetGlob:
; 1550 :
; 1551 : if (uReadThis>0)
00047 85 ff test edi, edi
00049 53 push ebx
0004a 8b 5c 24 18 mov ebx, DWORD PTR _szComment$[esp+12]
0004e 76 23 jbe SHORT $LN2@unzGetGlob
; 1552 : {
; 1553 : *szComment='\0';
00050 c6 03 00 mov BYTE PTR [ebx], 0
; 1554 : if (ZREAD(s->z_filefunc,s->filestream,szComment,uReadThis)!=uReadThis)
00053 8b 4e 20 mov ecx, DWORD PTR [esi+32]
00056 8b 56 1c mov edx, DWORD PTR [esi+28]
00059 8b 46 04 mov eax, DWORD PTR [esi+4]
0005c 57 push edi
0005d 53 push ebx
0005e 51 push ecx
0005f 52 push edx
00060 ff d0 call eax
00062 83 c4 10 add esp, 16 ; 00000010H
00065 3b c7 cmp eax, edi
00067 74 0a je SHORT $LN2@unzGetGlob
00069 5b pop ebx
0006a 5f pop edi
0006b 5d pop ebp
; 1555 : return UNZ_ERRNO;
0006c 83 c8 ff or eax, -1
0006f 5e pop esi
; 1561 : }
00070 c2 0c 00 ret 12 ; 0000000cH
$LN2@unzGetGlob:
; 1556 : }
; 1557 :
; 1558 : if ((szComment != NULL) && (uSizeBuf > s->gi.size_comment))
00073 85 db test ebx, ebx
00075 74 0b je SHORT $LN1@unzGetGlob
00077 8b 76 28 mov esi, DWORD PTR [esi+40]
0007a 3b ee cmp ebp, esi
0007c 76 04 jbe SHORT $LN1@unzGetGlob
; 1559 : *(szComment+s->gi.size_comment)='\0';
0007e c6 04 1e 00 mov BYTE PTR [esi+ebx], 0
$LN1@unzGetGlob:
00082 5b pop ebx
; 1560 : return (int)uReadThis;
00083 8b c7 mov eax, edi
00085 5f pop edi
00086 5d pop ebp
00087 5e pop esi
; 1561 : }
00088 c2 0c 00 ret 12 ; 0000000cH
_unzGetGlobalComment@12 ENDP
_TEXT ENDS
PUBLIC _unzGetLocalExtrafield@12
; Function compile flags: /Ogtpy
; COMDAT _unzGetLocalExtrafield@12
_TEXT SEGMENT
_file$ = 8 ; size = 4
_buf$ = 12 ; size = 4
_len$ = 16 ; size = 4
_unzGetLocalExtrafield@12 PROC ; COMDAT
; 1443 : unz_s* s;
; 1444 : file_in_zip_read_info_s* pfile_in_zip_read_info;
; 1445 : uInt read_now;
; 1446 : uLong size_to_read;
; 1447 :
; 1448 : if (file==NULL)
00000 8b 44 24 04 mov eax, DWORD PTR _file$[esp-4]
00004 85 c0 test eax, eax
00006 75 08 jne SHORT $LN8@unzGetLoca
; 1449 : return UNZ_PARAMERROR;
00008 b8 9a ff ff ff mov eax, -102 ; ffffff9aH
; 1483 : }
0000d c2 0c 00 ret 12 ; 0000000cH
$LN8@unzGetLoca:
00010 56 push esi
; 1450 : s=(unz_s*)file;
; 1451 : pfile_in_zip_read_info=s->pfile_in_zip_read;
00011 8b b0 9c 00 00
00 mov esi, DWORD PTR [eax+156]
; 1452 :
; 1453 : if (pfile_in_zip_read_info==NULL)
00017 85 f6 test esi, esi
00019 75 07 jne SHORT $LN7@unzGetLoca
; 1454 : return UNZ_PARAMERROR;
0001b 8d 46 9a lea eax, DWORD PTR [esi-102]
0001e 5e pop esi
; 1483 : }
0001f c2 0c 00 ret 12 ; 0000000cH
$LN7@unzGetLoca:
; 1455 :
; 1456 : size_to_read = (pfile_in_zip_read_info->size_local_extrafield -
; 1457 : pfile_in_zip_read_info->pos_local_extrafield);
00022 8b 4e 4c mov ecx, DWORD PTR [esi+76]
00025 8b 46 48 mov eax, DWORD PTR [esi+72]
00028 53 push ebx
; 1458 :
; 1459 : if (buf==NULL)
00029 8b 5c 24 10 mov ebx, DWORD PTR _buf$[esp+4]
0002d 2b c1 sub eax, ecx
0002f 85 db test ebx, ebx
; 1460 : return (int)size_to_read;
00031 74 5b je SHORT $LN12@unzGetLoca
00033 57 push edi
; 1461 :
; 1462 : if (len>size_to_read)
00034 8b 7c 24 18 mov edi, DWORD PTR _len$[esp+8]
00038 3b f8 cmp edi, eax
0003a 76 02 jbe SHORT $LN5@unzGetLoca
; 1463 : read_now = (uInt)size_to_read;
0003c 8b f8 mov edi, eax
$LN5@unzGetLoca:
; 1464 : else
; 1465 : read_now = (uInt)len ;
; 1466 :
; 1467 : if (read_now==0)
0003e 85 ff test edi, edi
00040 75 08 jne SHORT $LN3@unzGetLoca
00042 5f pop edi
00043 5b pop ebx
; 1468 : return 0;
00044 33 c0 xor eax, eax
00046 5e pop esi
; 1483 : }
00047 c2 0c 00 ret 12 ; 0000000cH
$LN3@unzGetLoca:
; 1469 :
; 1470 : if (ZSEEK(pfile_in_zip_read_info->z_filefunc,
; 1471 : pfile_in_zip_read_info->filestream,
; 1472 : pfile_in_zip_read_info->offset_local_extrafield +
; 1473 : pfile_in_zip_read_info->pos_local_extrafield,
; 1474 : ZLIB_FILEFUNC_SEEK_SET)!=0)
0004a 8b 46 44 mov eax, DWORD PTR [esi+68]
0004d 8b 56 7c mov edx, DWORD PTR [esi+124]
00050 03 c1 add eax, ecx
00052 8b 8e 80 00 00
00 mov ecx, DWORD PTR [esi+128]
00058 6a 00 push 0
0005a 50 push eax
0005b 8b 46 70 mov eax, DWORD PTR [esi+112]
0005e 51 push ecx
0005f 52 push edx
00060 ff d0 call eax
00062 83 c4 10 add esp, 16 ; 00000010H
00065 85 c0 test eax, eax
; 1475 : return UNZ_ERRNO;
00067 75 19 jne SHORT $LN14@unzGetLoca
; 1476 :
; 1477 : if (ZREAD(pfile_in_zip_read_info->z_filefunc,
; 1478 : pfile_in_zip_read_info->filestream,
; 1479 : buf,read_now)!=read_now)
00069 8b 8e 80 00 00
00 mov ecx, DWORD PTR [esi+128]
0006f 8b 56 7c mov edx, DWORD PTR [esi+124]
00072 8b 46 64 mov eax, DWORD PTR [esi+100]
00075 57 push edi
00076 53 push ebx
00077 51 push ecx
00078 52 push edx
00079 ff d0 call eax
0007b 83 c4 10 add esp, 16 ; 00000010H
0007e 3b c7 cmp eax, edi
00080 74 09 je SHORT $LN1@unzGetLoca
$LN14@unzGetLoca:
00082 5f pop edi
00083 5b pop ebx
; 1480 : return UNZ_ERRNO;
00084 83 c8 ff or eax, -1
00087 5e pop esi
; 1483 : }
00088 c2 0c 00 ret 12 ; 0000000cH
$LN1@unzGetLoca:
; 1481 :
; 1482 : return (int)read_now;
0008b 8b c7 mov eax, edi
0008d 5f pop edi
$LN12@unzGetLoca:
0008e 5b pop ebx
0008f 5e pop esi
; 1483 : }
00090 c2 0c 00 ret 12 ; 0000000cH
_unzGetLocalExtrafield@12 ENDP
_TEXT ENDS
PUBLIC _unzeof@4
; Function compile flags: /Ogtpy
; COMDAT _unzeof@4
_TEXT SEGMENT
_file$ = 8 ; size = 4
_unzeof@4 PROC ; COMDAT
; 1408 : unz_s* s;
; 1409 : file_in_zip_read_info_s* pfile_in_zip_read_info;
; 1410 : if (file==NULL)
00000 8b 44 24 04 mov eax, DWORD PTR _file$[esp-4]
00004 85 c0 test eax, eax
00006 75 08 jne SHORT $LN4@unzeof
$LN7@unzeof:
; 1411 : return UNZ_PARAMERROR;
00008 b8 9a ff ff ff mov eax, -102 ; ffffff9aH
; 1419 : return 1;
; 1420 : else
; 1421 : return 0;
; 1422 : }
0000d c2 04 00 ret 4
$LN4@unzeof:
; 1412 : s=(unz_s*)file;
; 1413 : pfile_in_zip_read_info=s->pfile_in_zip_read;
00010 8b 80 9c 00 00
00 mov eax, DWORD PTR [eax+156]
; 1414 :
; 1415 : if (pfile_in_zip_read_info==NULL)
00016 85 c0 test eax, eax
; 1416 : return UNZ_PARAMERROR;
00018 74 ee je SHORT $LN7@unzeof
; 1417 :
; 1418 : if (pfile_in_zip_read_info->rest_read_uncompressed == 0)
0001a 33 c9 xor ecx, ecx
0001c 39 48 5c cmp DWORD PTR [eax+92], ecx
0001f 0f 94 c1 sete cl
00022 8b c1 mov eax, ecx
; 1419 : return 1;
; 1420 : else
; 1421 : return 0;
; 1422 : }
00024 c2 04 00 ret 4
_unzeof@4 ENDP
_TEXT ENDS
PUBLIC _unztell@4
; Function compile flags: /Ogtpy
; COMDAT _unztell@4
_TEXT SEGMENT
_file$ = 8 ; size = 4
_unztell@4 PROC ; COMDAT
; 1388 : unz_s* s;
; 1389 : file_in_zip_read_info_s* pfile_in_zip_read_info;
; 1390 : if (file==NULL)
00000 8b 44 24 04 mov eax, DWORD PTR _file$[esp-4]
00004 85 c0 test eax, eax
00006 75 08 jne SHORT $LN2@unztell
$LN5@unztell:
; 1391 : return UNZ_PARAMERROR;
00008 b8 9a ff ff ff mov eax, -102 ; ffffff9aH
; 1399 : }
0000d c2 04 00 ret 4
$LN2@unztell:
; 1392 : s=(unz_s*)file;
; 1393 : pfile_in_zip_read_info=s->pfile_in_zip_read;
00010 8b 80 9c 00 00
00 mov eax, DWORD PTR [eax+156]
; 1394 :
; 1395 : if (pfile_in_zip_read_info==NULL)
00016 85 c0 test eax, eax
; 1396 : return UNZ_PARAMERROR;
00018 74 ee je SHORT $LN5@unztell
; 1397 :
; 1398 : return (z_off_t)pfile_in_zip_read_info->stream.total_out;
0001a 8b 40 18 mov eax, DWORD PTR [eax+24]
; 1399 : }
0001d c2 04 00 ret 4
_unztell@4 ENDP
_TEXT ENDS
PUBLIC _unzGetFilePos@8
; Function compile flags: /Ogtpy
; COMDAT _unzGetFilePos@8
_TEXT SEGMENT
_file$ = 8 ; size = 4
_file_pos$ = 12 ; size = 4
_unzGetFilePos@8 PROC ; COMDAT
; 907 : unz_s* s;
; 908 :
; 909 : if (file==NULL || file_pos==NULL)
00000 8b 44 24 04 mov eax, DWORD PTR _file$[esp-4]
00004 85 c0 test eax, eax
00006 74 26 je SHORT $LN2@unzGetFile
00008 8b 4c 24 08 mov ecx, DWORD PTR _file_pos$[esp-4]
0000c 85 c9 test ecx, ecx
0000e 74 1e je SHORT $LN2@unzGetFile
; 911 : s=(unz_s*)file;
; 912 : if (!s->current_file_ok)
00010 83 78 38 00 cmp DWORD PTR [eax+56], 0
00014 75 08 jne SHORT $LN1@unzGetFile
; 913 : return UNZ_END_OF_LIST_OF_FILE;
00016 b8 9c ff ff ff mov eax, -100 ; ffffff9cH
; 919 : }
0001b c2 08 00 ret 8
$LN1@unzGetFile:
; 914 :
; 915 : file_pos->pos_in_zip_directory = s->pos_in_central_dir;
0001e 8b 50 34 mov edx, DWORD PTR [eax+52]
00021 89 11 mov DWORD PTR [ecx], edx
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -