⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uncompr.cod

📁 microsoft visual c++ 2005、windows mobile 5 远程控制PC.通过阅读项目源码能让你熟悉Active Sync RAPI
💻 COD
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 14.00.50727.762 

	TITLE	d:\src\VS2005\cpp\CeRemoteClient\zlib123\uncompr.c
	.686P
	.XMM
	include listing.inc
	.model	flat

INCLUDELIB OLDNAMES

PUBLIC	_uncompress@16
; Function compile flags: /Ogtpy
; File d:\src\vs2005\cpp\ceremoteclient\zlib123\uncompr.c
;	COMDAT _uncompress@16
_TEXT	SEGMENT
_stream$ = -56						; size = 56
_dest$ = 8						; size = 4
_destLen$ = 12						; size = 4
_source$ = 16						; size = 4
_sourceLen$ = 20					; size = 4
_uncompress@16 PROC					; COMDAT

; 31   : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 e4 f8	 and	 esp, -8			; fffffff8H
  00006	83 ec 38	 sub	 esp, 56			; 00000038H

; 32   :     z_stream stream;
; 33   :     int err;
; 34   : 
; 35   :     stream.next_in = (Bytef*)source;
; 36   :     stream.avail_in = (uInt)sourceLen;

  00009	8b 4d 14	 mov	 ecx, DWORD PTR _sourceLen$[ebp]
  0000c	8b 45 10	 mov	 eax, DWORD PTR _source$[ebp]

; 37   :     /* Check for source > 64K on 16-bit machine: */
; 38   :     if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR;
; 39   : 
; 40   :     stream.next_out = dest;

  0000f	8b 55 08	 mov	 edx, DWORD PTR _dest$[ebp]
  00012	56		 push	 esi
  00013	57		 push	 edi

; 41   :     stream.avail_out = (uInt)*destLen;

  00014	8b 7d 0c	 mov	 edi, DWORD PTR _destLen$[ebp]

; 42   :     if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR;
; 43   : 
; 44   :     stream.zalloc = (alloc_func)0;
; 45   :     stream.zfree = (free_func)0;
; 46   : 
; 47   :     err = inflateInit(&stream);

  00017	6a 38		 push	 56			; 00000038H
  00019	89 4c 24 10	 mov	 DWORD PTR _stream$[esp+72], ecx
  0001d	89 44 24 0c	 mov	 DWORD PTR _stream$[esp+68], eax
  00021	8b 07		 mov	 eax, DWORD PTR [edi]
  00023	68 00 00 00 00	 push	 OFFSET ??_C@_05GDHACFMB@1?42?43?$AA@
  00028	8d 4c 24 10	 lea	 ecx, DWORD PTR _stream$[esp+72]
  0002c	51		 push	 ecx
  0002d	89 54 24 20	 mov	 DWORD PTR _stream$[esp+88], edx
  00031	89 44 24 24	 mov	 DWORD PTR _stream$[esp+92], eax
  00035	c7 44 24 34 00
	00 00 00	 mov	 DWORD PTR _stream$[esp+108], 0
  0003d	c7 44 24 38 00
	00 00 00	 mov	 DWORD PTR _stream$[esp+112], 0
  00045	e8 00 00 00 00	 call	 _inflateInit_@12

; 48   :     if (err != Z_OK) return err;

  0004a	85 c0		 test	 eax, eax
  0004c	75 55		 jne	 SHORT $LN7@uncompress

; 49   : 
; 50   :     err = inflate(&stream, Z_FINISH);

  0004e	6a 04		 push	 4
  00050	8d 54 24 0c	 lea	 edx, DWORD PTR _stream$[esp+68]
  00054	52		 push	 edx
  00055	e8 00 00 00 00	 call	 _inflate@8
  0005a	8b f0		 mov	 esi, eax

; 51   :     if (err != Z_STREAM_END) {

  0005c	83 fe 01	 cmp	 esi, 1
  0005f	74 32		 je	 SHORT $LN3@uncompress

; 52   :         inflateEnd(&stream);

  00061	8d 44 24 08	 lea	 eax, DWORD PTR _stream$[esp+64]
  00065	50		 push	 eax
  00066	e8 00 00 00 00	 call	 _inflateEnd@4

; 53   :         if (err == Z_NEED_DICT || (err == Z_BUF_ERROR && stream.avail_in == 0))

  0006b	83 fe 02	 cmp	 esi, 2
  0006e	74 16		 je	 SHORT $LN1@uncompress
  00070	83 fe fb	 cmp	 esi, -5			; fffffffbH
  00073	75 07		 jne	 SHORT $LN2@uncompress
  00075	83 7c 24 0c 00	 cmp	 DWORD PTR _stream$[esp+68], 0
  0007a	74 0a		 je	 SHORT $LN1@uncompress
$LN2@uncompress:

; 55   :         return err;

  0007c	8b c6		 mov	 eax, esi

; 60   :     return err;
; 61   : }

  0007e	5f		 pop	 edi
  0007f	5e		 pop	 esi
  00080	8b e5		 mov	 esp, ebp
  00082	5d		 pop	 ebp
  00083	c2 10 00	 ret	 16			; 00000010H
$LN1@uncompress:

; 54   :             return Z_DATA_ERROR;

  00086	b8 fd ff ff ff	 mov	 eax, -3			; fffffffdH

; 60   :     return err;
; 61   : }

  0008b	5f		 pop	 edi
  0008c	5e		 pop	 esi
  0008d	8b e5		 mov	 esp, ebp
  0008f	5d		 pop	 ebp
  00090	c2 10 00	 ret	 16			; 00000010H
$LN3@uncompress:

; 56   :     }
; 57   :     *destLen = stream.total_out;

  00093	8b 4c 24 1c	 mov	 ecx, DWORD PTR _stream$[esp+84]

; 58   : 
; 59   :     err = inflateEnd(&stream);

  00097	8d 54 24 08	 lea	 edx, DWORD PTR _stream$[esp+64]
  0009b	52		 push	 edx
  0009c	89 0f		 mov	 DWORD PTR [edi], ecx
  0009e	e8 00 00 00 00	 call	 _inflateEnd@4
$LN7@uncompress:

; 60   :     return err;
; 61   : }

  000a3	5f		 pop	 edi
  000a4	5e		 pop	 esi
  000a5	8b e5		 mov	 esp, ebp
  000a7	5d		 pop	 ebp
  000a8	c2 10 00	 ret	 16			; 00000010H
_uncompress@16 ENDP
END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -