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

📄 deflate.cod

📁 microsoft visual c++ 2005、windows mobile 5 远程控制PC.通过阅读项目源码能让你熟悉Active Sync RAPI
💻 COD
📖 第 1 页 / 共 5 页
字号:

  00417	8b 4f 30	 mov	 ecx, DWORD PTR [edi+48]
  0041a	2b c2		 sub	 eax, edx
  0041c	50		 push	 eax
  0041d	8b 46 08	 mov	 eax, DWORD PTR [esi+8]
  00420	03 c2		 add	 eax, edx
  00422	50		 push	 eax
  00423	51		 push	 ecx
  00424	e8 00 00 00 00	 call	 _crc32@12
  00429	89 47 30	 mov	 DWORD PTR [edi+48], eax
$LN43@deflate:

; 690  :                     flush_pending(strm);

  0042c	8b c7		 mov	 eax, edi
  0042e	e8 00 00 00 00	 call	 _flush_pending

; 691  :                     beg = s->pending;

  00433	8b 46 14	 mov	 eax, DWORD PTR [esi+20]

; 692  :                     if (s->pending == s->pending_buf_size) {

  00436	3b 46 0c	 cmp	 eax, DWORD PTR [esi+12]
  00439	8b d0		 mov	 edx, eax
  0043b	74 21		 je	 SHORT $LN96@deflate
$LN42@deflate:

; 694  :                         break;
; 695  :                     }
; 696  :                 }
; 697  :                 val = s->gzhead->name[s->gzindex++];

  0043d	8b 4e 20	 mov	 ecx, DWORD PTR [esi+32]
  00440	8b 5e 1c	 mov	 ebx, DWORD PTR [esi+28]
  00443	8b 5b 1c	 mov	 ebx, DWORD PTR [ebx+28]
  00446	0f b6 1c 0b	 movzx	 ebx, BYTE PTR [ebx+ecx]
  0044a	03 cd		 add	 ecx, ebp
  0044c	89 4e 20	 mov	 DWORD PTR [esi+32], ecx

; 698  :                 put_byte(s, val);

  0044f	8b 4e 08	 mov	 ecx, DWORD PTR [esi+8]
  00452	88 1c 08	 mov	 BYTE PTR [eax+ecx], bl
  00455	01 6e 14	 add	 DWORD PTR [esi+20], ebp

; 699  :             } while (val != 0);

  00458	85 db		 test	 ebx, ebx
  0045a	75 a6		 jne	 SHORT $LL47@deflate
  0045c	eb 02		 jmp	 SHORT $LN45@deflate
$LN96@deflate:

; 693  :                         val = 1;

  0045e	8b dd		 mov	 ebx, ebp
$LN45@deflate:

; 700  :             if (s->gzhead->hcrc && s->pending > beg)

  00460	8b 46 1c	 mov	 eax, DWORD PTR [esi+28]
  00463	83 78 2c 00	 cmp	 DWORD PTR [eax+44], 0
  00467	74 1c		 je	 SHORT $LN41@deflate
  00469	8b 46 14	 mov	 eax, DWORD PTR [esi+20]
  0046c	3b c2		 cmp	 eax, edx
  0046e	76 15		 jbe	 SHORT $LN41@deflate

; 701  :                 strm->adler = crc32(strm->adler, s->pending_buf + beg,
; 702  :                                     s->pending - beg);

  00470	8b 4e 08	 mov	 ecx, DWORD PTR [esi+8]
  00473	2b c2		 sub	 eax, edx
  00475	50		 push	 eax
  00476	03 ca		 add	 ecx, edx
  00478	8b 57 30	 mov	 edx, DWORD PTR [edi+48]
  0047b	51		 push	 ecx
  0047c	52		 push	 edx
  0047d	e8 00 00 00 00	 call	 _crc32@12
  00482	89 47 30	 mov	 DWORD PTR [edi+48], eax
$LN41@deflate:

; 703  :             if (val == 0) {

  00485	85 db		 test	 ebx, ebx
  00487	75 0a		 jne	 SHORT $LN39@deflate

; 704  :                 s->gzindex = 0;

  00489	89 5e 20	 mov	 DWORD PTR [esi+32], ebx
$LN48@deflate:

; 705  :                 s->status = COMMENT_STATE;

  0048c	c7 46 04 5b 00
	00 00		 mov	 DWORD PTR [esi+4], 91	; 0000005bH
$LN39@deflate:

; 706  :             }
; 707  :         }
; 708  :         else
; 709  :             s->status = COMMENT_STATE;
; 710  :     }
; 711  :     if (s->status == COMMENT_STATE) {

  00493	83 7e 04 5b	 cmp	 DWORD PTR [esi+4], 91	; 0000005bH
  00497	0f 85 a2 00 00
	00		 jne	 $LN28@deflate

; 712  :         if (s->gzhead->comment != NULL) {

  0049d	8b 46 1c	 mov	 eax, DWORD PTR [esi+28]
  004a0	83 78 24 00	 cmp	 DWORD PTR [eax+36], 0
  004a4	0f 84 8e 00 00
	00		 je	 $LN37@deflate

; 713  :             uInt beg = s->pending;  /* start of bytes to update crc */

  004aa	8b 56 14	 mov	 edx, DWORD PTR [esi+20]
  004ad	8d 49 00	 npad	 3
$LL36@deflate:

; 714  :             int val;
; 715  : 
; 716  :             do {
; 717  :                 if (s->pending == s->pending_buf_size) {

  004b0	8b 46 14	 mov	 eax, DWORD PTR [esi+20]
  004b3	3b 46 0c	 cmp	 eax, DWORD PTR [esi+12]
  004b6	75 33		 jne	 SHORT $LN31@deflate

; 718  :                     if (s->gzhead->hcrc && s->pending > beg)

  004b8	8b 4e 1c	 mov	 ecx, DWORD PTR [esi+28]
  004bb	83 79 2c 00	 cmp	 DWORD PTR [ecx+44], 0
  004bf	74 19		 je	 SHORT $LN32@deflate
  004c1	3b c2		 cmp	 eax, edx
  004c3	76 15		 jbe	 SHORT $LN32@deflate

; 719  :                         strm->adler = crc32(strm->adler, s->pending_buf + beg,
; 720  :                                             s->pending - beg);

  004c5	8b 4f 30	 mov	 ecx, DWORD PTR [edi+48]
  004c8	2b c2		 sub	 eax, edx
  004ca	50		 push	 eax
  004cb	8b 46 08	 mov	 eax, DWORD PTR [esi+8]
  004ce	03 c2		 add	 eax, edx
  004d0	50		 push	 eax
  004d1	51		 push	 ecx
  004d2	e8 00 00 00 00	 call	 _crc32@12
  004d7	89 47 30	 mov	 DWORD PTR [edi+48], eax
$LN32@deflate:

; 721  :                     flush_pending(strm);

  004da	8b c7		 mov	 eax, edi
  004dc	e8 00 00 00 00	 call	 _flush_pending

; 722  :                     beg = s->pending;

  004e1	8b 46 14	 mov	 eax, DWORD PTR [esi+20]

; 723  :                     if (s->pending == s->pending_buf_size) {

  004e4	3b 46 0c	 cmp	 eax, DWORD PTR [esi+12]
  004e7	8b d0		 mov	 edx, eax
  004e9	74 22		 je	 SHORT $LN97@deflate
$LN31@deflate:

; 725  :                         break;
; 726  :                     }
; 727  :                 }
; 728  :                 val = s->gzhead->comment[s->gzindex++];

  004eb	8b 4e 20	 mov	 ecx, DWORD PTR [esi+32]
  004ee	8b 5e 1c	 mov	 ebx, DWORD PTR [esi+28]
  004f1	8b 5b 24	 mov	 ebx, DWORD PTR [ebx+36]
  004f4	0f b6 1c 0b	 movzx	 ebx, BYTE PTR [ebx+ecx]
  004f8	83 c1 01	 add	 ecx, 1
  004fb	89 4e 20	 mov	 DWORD PTR [esi+32], ecx

; 729  :                 put_byte(s, val);

  004fe	8b 4e 08	 mov	 ecx, DWORD PTR [esi+8]
  00501	88 1c 08	 mov	 BYTE PTR [eax+ecx], bl
  00504	01 6e 14	 add	 DWORD PTR [esi+20], ebp

; 730  :             } while (val != 0);

  00507	85 db		 test	 ebx, ebx
  00509	75 a5		 jne	 SHORT $LL36@deflate
  0050b	eb 02		 jmp	 SHORT $LN34@deflate
$LN97@deflate:

; 724  :                         val = 1;

  0050d	8b dd		 mov	 ebx, ebp
$LN34@deflate:

; 731  :             if (s->gzhead->hcrc && s->pending > beg)

  0050f	8b 46 1c	 mov	 eax, DWORD PTR [esi+28]
  00512	83 78 2c 00	 cmp	 DWORD PTR [eax+44], 0
  00516	74 1c		 je	 SHORT $LN30@deflate
  00518	8b 46 14	 mov	 eax, DWORD PTR [esi+20]
  0051b	3b c2		 cmp	 eax, edx
  0051d	76 15		 jbe	 SHORT $LN30@deflate

; 732  :                 strm->adler = crc32(strm->adler, s->pending_buf + beg,
; 733  :                                     s->pending - beg);

  0051f	8b 4e 08	 mov	 ecx, DWORD PTR [esi+8]
  00522	2b c2		 sub	 eax, edx
  00524	50		 push	 eax
  00525	03 ca		 add	 ecx, edx
  00527	8b 57 30	 mov	 edx, DWORD PTR [edi+48]
  0052a	51		 push	 ecx
  0052b	52		 push	 edx
  0052c	e8 00 00 00 00	 call	 _crc32@12
  00531	89 47 30	 mov	 DWORD PTR [edi+48], eax
$LN30@deflate:

; 734  :             if (val == 0)

  00534	85 db		 test	 ebx, ebx
  00536	75 07		 jne	 SHORT $LN28@deflate
$LN37@deflate:

; 735  :                 s->status = HCRC_STATE;
; 736  :         }
; 737  :         else
; 738  :             s->status = HCRC_STATE;

  00538	c7 46 04 67 00
	00 00		 mov	 DWORD PTR [esi+4], 103	; 00000067H
$LN28@deflate:

; 739  :     }
; 740  :     if (s->status == HCRC_STATE) {

  0053f	83 7e 04 67	 cmp	 DWORD PTR [esi+4], 103	; 00000067H
  00543	75 58		 jne	 SHORT $LN101@deflate

; 741  :         if (s->gzhead->hcrc) {

  00545	8b 46 1c	 mov	 eax, DWORD PTR [esi+28]
  00548	83 78 2c 00	 cmp	 DWORD PTR [eax+44], 0
  0054c	74 48		 je	 SHORT $LN26@deflate

; 742  :             if (s->pending + 2 > s->pending_buf_size)

  0054e	8b 4e 14	 mov	 ecx, DWORD PTR [esi+20]
  00551	83 c1 02	 add	 ecx, 2
  00554	3b 4e 0c	 cmp	 ecx, DWORD PTR [esi+12]
  00557	76 07		 jbe	 SHORT $LN25@deflate

; 743  :                 flush_pending(strm);

  00559	8b c7		 mov	 eax, edi
  0055b	e8 00 00 00 00	 call	 _flush_pending
$LN25@deflate:

; 744  :             if (s->pending + 2 <= s->pending_buf_size) {

  00560	8b 46 14	 mov	 eax, DWORD PTR [esi+20]
  00563	8d 50 02	 lea	 edx, DWORD PTR [eax+2]
  00566	3b 56 0c	 cmp	 edx, DWORD PTR [esi+12]
  00569	77 32		 ja	 SHORT $LN101@deflate

; 745  :                 put_byte(s, (Byte)(strm->adler & 0xff));

  0056b	0f b6 57 30	 movzx	 edx, BYTE PTR [edi+48]
  0056f	8b 4e 08	 mov	 ecx, DWORD PTR [esi+8]
  00572	88 14 08	 mov	 BYTE PTR [eax+ecx], dl
  00575	01 6e 14	 add	 DWORD PTR [esi+20], ebp

; 746  :                 put_byte(s, (Byte)((strm->adler >> 8) & 0xff));

  00578	0f b6 57 31	 movzx	 edx, BYTE PTR [edi+49]
  0057c	8b 46 14	 mov	 eax, DWORD PTR [esi+20]
  0057f	8b 4e 08	 mov	 ecx, DWORD PTR [esi+8]

; 747  :                 strm->adler = crc32(0L, Z_NULL, 0);

  00582	6a 00		 push	 0
  00584	6a 00		 push	 0
  00586	88 14 08	 mov	 BYTE PTR [eax+ecx], dl
  00589	01 6e 14	 add	 DWORD PTR [esi+20], ebp
  0058c	6a 00		 push	 0
  0058e	e8 00 00 00 00	 call	 _crc32@12
  00593	89 47 30	 mov	 DWORD PTR [edi+48], eax
$LN26@deflate:

; 748  :                 s->status = BUSY_STATE;
; 749  :             }
; 750  :         }
; 751  :         else
; 752  :             s->status = BUSY_STATE;

  00596	c7 46 04 71 00
	00 00		 mov	 DWORD PTR [esi+4], 113	; 00000071H
$LN101@deflate:

; 753  :     }
; 754  : #endif
; 755  : 
; 756  :     /* Flush as much pending output as possible */
; 757  :     if (s->pending != 0) {

  0059d	83 7e 14 00	 cmp	 DWORD PTR [esi+20], 0
  005a1	74 1d		 je	 SHORT $LN22@deflate

; 758  :         flush_pending(strm);

  005a3	8b c7		 mov	 eax, edi
  005a5	e8 00 00 00 00	 call	 _flush_pending

; 759  :         if (strm->avail_out == 0) {

  005aa	83 7f 10 00	 cmp	 DWORD PTR [edi+16], 0
  005ae	75 38		 jne	 SHORT $LN104@deflate
$LN111@deflate:

; 760  :             /* Since avail_out is 0, deflate will be called again with
; 761  :              * more output space, but possibly with both pending and
; 762  :              * avail_in equal to zero. There won't be anything to do,
; 763  :              * but this is not an error situation so make sure we
; 764  :              * return OK instead of BUF_ERROR at next call of deflate:
; 765  :              */
; 766  :             s->last_flush = -1;

  005b0	c7 46 28 ff ff
	ff ff		 mov	 DWORD PTR [esi+40], -1
$LN11@deflate:
  005b7	5d		 pop	 ebp
  005b8	5b		 pop	 ebx
  005b9	5f		 pop	 edi

; 767  :             return Z_OK;

  005ba	33 c0		 xor	 eax, eax
  005bc	5e		 pop	 esi

; 856  : }

  005bd	c2 08 00	 ret	 8
$LN22@deflate:

; 768  :         }
; 769  : 
; 770  :     /* Make sure there is something to do and avoid duplicate consecutive
; 771  :      * flushes. For repeated and useless calls with Z_FINISH, we keep
; 772  :      * returning Z_STREAM_END instead of Z_BUF_ERROR.
; 773  :      */
; 774  :     } else if (strm->avail_in == 0 && flush <= old_flush &&
; 775  :                flush != Z_FINISH) {

  005c0	83 7f 04 00	 cmp	 DWORD PTR [edi+4], 0
  005c4	8b 5c 24 18	 mov	 ebx, DWORD PTR _flush$[esp+12]
  005c8	75 22		 jne	 SHORT $LN19@deflate
  005ca	3b 5c 24 14	 cmp	 ebx, DWORD PTR _old_flush$[esp+12]
  005ce	7f 1c		 jg	 SHORT $LN19@deflate
  005d0	83 fb 04	 cmp	 ebx, 4
  005d3	74 17		 je	 SHORT $LN19@deflate
  005d5	5d		 pop	 ebp
  005d6	5b		 pop	 ebx

; 776  :         ERR_RETURN(strm, Z_BUF_ERROR);

  005d7	c7 47 18 00 00
	00 00		 mov	 DWORD PTR [edi+24], OFFSET ??_C@_0N@DFPGLBGC@buffer?5error?$AA@
  005de	5f		 pop	 edi
  005df	b8 fb ff ff ff	 mov	 eax, -5			; fffffffbH
  005e4	5e		 pop	 esi

; 856  : }

  005e5	c2 08 00	 ret	 8
$LN104@deflate:

; 768  :         }
; 769  : 
; 770  :     /* Make sure there is something to do and avoid duplicate consecutive
; 771  :      * flushes. For repeated and useless calls with Z_FINISH, we keep
; 772  :      * returning Z_STREAM_END instead of Z_BUF_ERROR.
; 773  :      */
; 774  :     } else if (strm->avail_in == 0 && flush <= old_flush &&
; 775  :                flush != Z_FINISH) {

  005e8	8b 5c 24 18	 mov	 ebx, DWORD PTR _flush$[esp+12]
$LN19@deflate:

; 777  :     }
; 778  : 
; 779  :     /* User must not provide more input after the first FINISH: */
; 780  :     if (s->status == FINISH_STATE && strm->avail_in != 0) {

  005ec	8b 46 04	 mov	 eax, DWORD PTR [esi+4]
  005ef	3d 9a 02 00 00	 cmp	 eax, 666		; 0000029aH
  005f4	75 19		 jne	 SHORT $LN105@deflate
  005f6	83 7f 04 00	 cmp	 DWORD PTR [edi+4], 0
  005fa	74 19		 je	 SHORT $LN110@deflate
  005fc	5d		 pop	 ebp
  005fd	5b		 pop	 ebx

; 781  :         ERR_RETURN(strm, Z_BUF_ERROR);

  005fe	c7 47 18 00 00
	00 00		 mov	 DWORD PTR [edi+24], OFFSET ??_C@_0N@DFPGLBGC@buffer?5error?$AA@
  00605	5f		 pop	 edi
  00606	b8 fb ff ff ff	 mov	 eax, -5			; fffffffbH
  0060b	5e		 pop	 esi

; 856  : }

  0060c	c2 08 00	 ret	 8
$LN105@deflate:

; 782  :     }
; 783  : 
; 784  :     /* Start a new block or continue the current one.
; 785  :      */
; 786  :     if (strm->avail_in != 0 || s->lookahead != 0 ||
; 787  :         (flush != Z_NO_FLUSH && s->status != FINISH_STATE)) {

  0060f	83 7f 04 00	 cmp	 DWORD PTR [edi+4], 0
  00613	75 19		 jne	 SHORT $LN16@deflate
$LN110@deflate:
  00615	83 7e 74 00	 cmp	 DWORD PTR [esi+116], 0
  00619	75 13		 jne	 SHORT $LN16@deflate
  0061b	85 db		 test	 ebx, ebx
  0061d	0f 84 9c 00 00
	00		 je	 $LN6

⌨️ 快捷键说明

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