OSDN Git Service

#xxxxx DTXViewerのプロジェクトを追加。
[dtxmania/dtxmania.git] / DTXViewerプロジェクト / @libpngソリューション / zlib-1.2.8 / contrib / vstudio / vc10 / x86 / ZlibDllRelease / Tmp / deflate.cod
diff --git a/DTXViewerプロジェクト/@libpngソリューション/zlib-1.2.8/contrib/vstudio/vc10/x86/ZlibDllRelease/Tmp/deflate.cod b/DTXViewerプロジェクト/@libpngソリューション/zlib-1.2.8/contrib/vstudio/vc10/x86/ZlibDllRelease/Tmp/deflate.cod
new file mode 100644 (file)
index 0000000..c8bf0dc
--- /dev/null
@@ -0,0 +1,6570 @@
+; Listing generated by Microsoft (R) Optimizing Compiler Version 16.00.40219.01 
+
+       TITLE   C:\Documents and Settings\yyagi\My Documents\Visual Studio 2010\Projects\dtxmania\branches\111222(DTXViewer023 with #26977)\@libpng\[V\zlib-1.2.8\deflate.c
+       .686P
+       .XMM
+       include listing.inc
+       .model  flat
+
+INCLUDELIB OLDNAMES
+
+PUBLIC _deflate_copyright
+EXTRN  _match_init:PROC
+EXTRN  _longest_match:PROC
+       ORG $+2
+_deflate_copyright DB ' deflate 1.2.8 Copyright 1995-2013 Jean-loup Gaill'
+       DB      'y and Mark Adler ', 00H
+       ORG $+4
+_configuration_table DW 00H
+       DW      00H
+       DW      00H
+       DW      00H
+       DD      FLAT:_deflate_stored
+       DW      04H
+       DW      04H
+       DW      08H
+       DW      04H
+       DD      FLAT:_deflate_fast
+       DW      04H
+       DW      05H
+       DW      010H
+       DW      08H
+       DD      FLAT:_deflate_fast
+       DW      04H
+       DW      06H
+       DW      020H
+       DW      020H
+       DD      FLAT:_deflate_fast
+       DW      04H
+       DW      04H
+       DW      010H
+       DW      010H
+       DD      FLAT:_deflate_slow
+       DW      08H
+       DW      010H
+       DW      020H
+       DW      020H
+       DD      FLAT:_deflate_slow
+       DW      08H
+       DW      010H
+       DW      080H
+       DW      080H
+       DD      FLAT:_deflate_slow
+       DW      08H
+       DW      020H
+       DW      080H
+       DW      0100H
+       DD      FLAT:_deflate_slow
+       DW      020H
+       DW      080H
+       DW      0102H
+       DW      0400H
+       DD      FLAT:_deflate_slow
+       DW      020H
+       DW      0102H
+       DW      0102H
+       DW      01000H
+       DD      FLAT:_deflate_slow
+?my_version@?1??deflateInit2_@@9@9 DB '1.2.8', 00H     ; `deflateInit2_'::`2'::my_version
+; Function compile flags: /Ogtp
+; File c:\documents and settings\yyagi\my documents\visual studio 2010\projects\dtxmania\branches\111222(dtxviewer023 with #26977)\@libpng\83\\83\8a\83\85\81[\83V\83\87\83\93\zlib-1.2.8\deflate.c
+;      COMDAT _lm_init
+_TEXT  SEGMENT
+_lm_init PROC                                          ; COMDAT
+; _s$ = esi
+
+; 1109 :     s->window_size = (ulg)2L*s->w_size;
+
+  00000        8b 46 2c         mov     eax, DWORD PTR [esi+44]
+
+; 1110 : 
+; 1111 :     CLEAR_HASH(s);
+
+  00003        8b 4e 4c         mov     ecx, DWORD PTR [esi+76]
+  00006        8b 56 44         mov     edx, DWORD PTR [esi+68]
+  00009        03 c0            add     eax, eax
+  0000b        89 46 3c         mov     DWORD PTR [esi+60], eax
+  0000e        33 c0            xor     eax, eax
+  00010        66 89 44 4a fe   mov     WORD PTR [edx+ecx*2-2], ax
+  00015        8b 4e 4c         mov     ecx, DWORD PTR [esi+76]
+  00018        8b 46 44         mov     eax, DWORD PTR [esi+68]
+  0001b        57               push    edi
+  0001c        8d 54 09 fe      lea     edx, DWORD PTR [ecx+ecx-2]
+  00020        52               push    edx
+  00021        33 ff            xor     edi, edi
+  00023        57               push    edi
+  00024        50               push    eax
+  00025        e8 00 00 00 00   call    _memset
+
+; 1112 : 
+; 1113 :     /* Set the default configuration parameters:
+; 1114 :      */
+; 1115 :     s->max_lazy_match   = configuration_table[s->level].max_lazy;
+
+  0002a        8b 86 84 00 00
+       00               mov     eax, DWORD PTR [esi+132]
+  00030        8d 04 40         lea     eax, DWORD PTR [eax+eax*2]
+  00033        03 c0            add     eax, eax
+  00035        0f b7 8c 00 02
+       00 00 00         movzx   ecx, WORD PTR _configuration_table[eax+eax+2]
+  0003d        83 c4 0c         add     esp, 12                        ; 0000000cH
+  00040        03 c0            add     eax, eax
+  00042        89 8e 80 00 00
+       00               mov     DWORD PTR [esi+128], ecx
+
+; 1116 :     s->good_match       = configuration_table[s->level].good_length;
+
+  00048        0f b7 90 00 00
+       00 00            movzx   edx, WORD PTR _configuration_table[eax]
+  0004f        89 96 8c 00 00
+       00               mov     DWORD PTR [esi+140], edx
+
+; 1117 :     s->nice_match       = configuration_table[s->level].nice_length;
+
+  00055        0f b7 88 04 00
+       00 00            movzx   ecx, WORD PTR _configuration_table[eax+4]
+  0005c        89 8e 90 00 00
+       00               mov     DWORD PTR [esi+144], ecx
+
+; 1118 :     s->max_chain_length = configuration_table[s->level].max_chain;
+
+  00062        0f b7 90 06 00
+       00 00            movzx   edx, WORD PTR _configuration_table[eax+6]
+
+; 1119 : 
+; 1120 :     s->strstart = 0;
+; 1121 :     s->block_start = 0L;
+; 1122 :     s->lookahead = 0;
+; 1123 :     s->insert = 0;
+; 1124 :     s->match_length = s->prev_length = MIN_MATCH-1;
+
+  00069        b8 02 00 00 00   mov     eax, 2
+  0006e        89 7e 6c         mov     DWORD PTR [esi+108], edi
+  00071        89 7e 5c         mov     DWORD PTR [esi+92], edi
+  00074        89 7e 74         mov     DWORD PTR [esi+116], edi
+  00077        89 be b4 16 00
+       00               mov     DWORD PTR [esi+5812], edi
+
+; 1125 :     s->match_available = 0;
+
+  0007d        89 7e 68         mov     DWORD PTR [esi+104], edi
+
+; 1126 :     s->ins_h = 0;
+
+  00080        89 7e 48         mov     DWORD PTR [esi+72], edi
+  00083        89 56 7c         mov     DWORD PTR [esi+124], edx
+  00086        89 46 78         mov     DWORD PTR [esi+120], eax
+  00089        89 46 60         mov     DWORD PTR [esi+96], eax
+  0008c        5f               pop     edi
+
+; 1127 : #ifndef FASTEST
+; 1128 : #ifdef ASMV
+; 1129 :     match_init(); /* initialize the asm code */
+
+  0008d        e9 00 00 00 00   jmp     _match_init
+_lm_init ENDP
+_TEXT  ENDS
+PUBLIC _deflateEnd@4
+; Function compile flags: /Ogtp
+;      COMDAT _deflateEnd@4
+_TEXT  SEGMENT
+_strm$ = 8                                             ; size = 4
+_deflateEnd@4 PROC                                     ; COMDAT
+
+; 981  : {
+
+  00000        55               push    ebp
+  00001        8b ec            mov     ebp, esp
+  00003        56               push    esi
+
+; 982  :     int status;
+; 983  : 
+; 984  :     if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+
+  00004        8b 75 08         mov     esi, DWORD PTR _strm$[ebp]
+  00007        85 f6            test    esi, esi
+  00009        0f 84 c2 00 00
+       00               je      $LN6@deflateEnd
+  0000f        8b 46 1c         mov     eax, DWORD PTR [esi+28]
+  00012        85 c0            test    eax, eax
+  00014        0f 84 b7 00 00
+       00               je      $LN6@deflateEnd
+
+; 985  : 
+; 986  :     status = strm->state->status;
+
+  0001a        57               push    edi
+  0001b        8b 78 04         mov     edi, DWORD PTR [eax+4]
+
+; 987  :     if (status != INIT_STATE &&
+; 988  :         status != EXTRA_STATE &&
+; 989  :         status != NAME_STATE &&
+; 990  :         status != COMMENT_STATE &&
+; 991  :         status != HCRC_STATE &&
+; 992  :         status != BUSY_STATE &&
+; 993  :         status != FINISH_STATE) {
+
+  0001e        83 ff 2a         cmp     edi, 42                        ; 0000002aH
+  00021        74 2c            je      SHORT $LN5@deflateEnd
+  00023        83 ff 45         cmp     edi, 69                        ; 00000045H
+  00026        74 27            je      SHORT $LN5@deflateEnd
+  00028        83 ff 49         cmp     edi, 73                        ; 00000049H
+  0002b        74 22            je      SHORT $LN5@deflateEnd
+  0002d        83 ff 5b         cmp     edi, 91                        ; 0000005bH
+  00030        74 1d            je      SHORT $LN5@deflateEnd
+  00032        83 ff 67         cmp     edi, 103               ; 00000067H
+  00035        74 18            je      SHORT $LN5@deflateEnd
+  00037        83 ff 71         cmp     edi, 113               ; 00000071H
+  0003a        74 13            je      SHORT $LN5@deflateEnd
+  0003c        81 ff 9a 02 00
+       00               cmp     edi, 666               ; 0000029aH
+  00042        74 0b            je      SHORT $LN5@deflateEnd
+
+; 994  :       return Z_STREAM_ERROR;
+
+  00044        5f               pop     edi
+  00045        b8 fe ff ff ff   mov     eax, -2                        ; fffffffeH
+  0004a        5e               pop     esi
+
+; 1007 : }
+
+  0004b        5d               pop     ebp
+  0004c        c2 04 00         ret     4
+$LN5@deflateEnd:
+
+; 995  :     }
+; 996  : 
+; 997  :     /* Deallocate in reverse order of allocations: */
+; 998  :     TRY_FREE(strm, strm->state->pending_buf);
+
+  0004f        8b 40 08         mov     eax, DWORD PTR [eax+8]
+  00052        85 c0            test    eax, eax
+  00054        74 0d            je      SHORT $LN4@deflateEnd
+  00056        8b 4e 24         mov     ecx, DWORD PTR [esi+36]
+  00059        50               push    eax
+  0005a        8b 46 28         mov     eax, DWORD PTR [esi+40]
+  0005d        50               push    eax
+  0005e        ff d1            call    ecx
+  00060        83 c4 08         add     esp, 8
+$LN4@deflateEnd:
+
+; 999  :     TRY_FREE(strm, strm->state->head);
+
+  00063        8b 56 1c         mov     edx, DWORD PTR [esi+28]
+  00066        8b 42 44         mov     eax, DWORD PTR [edx+68]
+  00069        85 c0            test    eax, eax
+  0006b        74 0d            je      SHORT $LN3@deflateEnd
+  0006d        8b 4e 24         mov     ecx, DWORD PTR [esi+36]
+  00070        50               push    eax
+  00071        8b 46 28         mov     eax, DWORD PTR [esi+40]
+  00074        50               push    eax
+  00075        ff d1            call    ecx
+  00077        83 c4 08         add     esp, 8
+$LN3@deflateEnd:
+
+; 1000 :     TRY_FREE(strm, strm->state->prev);
+
+  0007a        8b 56 1c         mov     edx, DWORD PTR [esi+28]
+  0007d        8b 42 40         mov     eax, DWORD PTR [edx+64]
+  00080        85 c0            test    eax, eax
+  00082        74 0d            je      SHORT $LN2@deflateEnd
+  00084        8b 4e 24         mov     ecx, DWORD PTR [esi+36]
+  00087        50               push    eax
+  00088        8b 46 28         mov     eax, DWORD PTR [esi+40]
+  0008b        50               push    eax
+  0008c        ff d1            call    ecx
+  0008e        83 c4 08         add     esp, 8
+$LN2@deflateEnd:
+
+; 1001 :     TRY_FREE(strm, strm->state->window);
+
+  00091        8b 56 1c         mov     edx, DWORD PTR [esi+28]
+  00094        8b 42 38         mov     eax, DWORD PTR [edx+56]
+  00097        85 c0            test    eax, eax
+  00099        74 0d            je      SHORT $LN1@deflateEnd
+  0009b        8b 4e 24         mov     ecx, DWORD PTR [esi+36]
+  0009e        50               push    eax
+  0009f        8b 46 28         mov     eax, DWORD PTR [esi+40]
+  000a2        50               push    eax
+  000a3        ff d1            call    ecx
+  000a5        83 c4 08         add     esp, 8
+$LN1@deflateEnd:
+
+; 1002 : 
+; 1003 :     ZFREE(strm, strm->state);
+
+  000a8        8b 56 1c         mov     edx, DWORD PTR [esi+28]
+  000ab        8b 46 28         mov     eax, DWORD PTR [esi+40]
+  000ae        8b 4e 24         mov     ecx, DWORD PTR [esi+36]
+  000b1        52               push    edx
+  000b2        50               push    eax
+  000b3        ff d1            call    ecx
+  000b5        83 c4 08         add     esp, 8
+
+; 1004 :     strm->state = Z_NULL;
+; 1005 : 
+; 1006 :     return status == BUSY_STATE ? Z_DATA_ERROR : Z_OK;
+
+  000b8        33 c0            xor     eax, eax
+  000ba        83 ff 71         cmp     edi, 113               ; 00000071H
+  000bd        0f 95 c0         setne   al
+  000c0        5f               pop     edi
+  000c1        c7 46 1c 00 00
+       00 00            mov     DWORD PTR [esi+28], 0
+  000c8        5e               pop     esi
+  000c9        48               dec     eax
+  000ca        83 e0 fd         and     eax, -3                        ; fffffffdH
+
+; 1007 : }
+
+  000cd        5d               pop     ebp
+  000ce        c2 04 00         ret     4
+$LN6@deflateEnd:
+
+; 982  :     int status;
+; 983  : 
+; 984  :     if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+
+  000d1        b8 fe ff ff ff   mov     eax, -2                        ; fffffffeH
+  000d6        5e               pop     esi
+
+; 1007 : }
+
+  000d7        5d               pop     ebp
+  000d8        c2 04 00         ret     4
+_deflateEnd@4 ENDP
+; Function compile flags: /Ogtp
+_TEXT  ENDS
+;      COMDAT _flush_pending
+_TEXT  SEGMENT
+_flush_pending PROC                                    ; COMDAT
+; _strm$ = edi
+
+; 644  : {
+
+  00000        53               push    ebx
+
+; 645  :     unsigned len;
+; 646  :     deflate_state *s = strm->state;
+
+  00001        8b 5f 1c         mov     ebx, DWORD PTR [edi+28]
+  00004        56               push    esi
+
+; 647  : 
+; 648  :     _tr_flush_bits(s);
+
+  00005        8b c3            mov     eax, ebx
+  00007        e8 00 00 00 00   call    __tr_flush_bits
+
+; 649  :     len = s->pending;
+
+  0000c        8b 73 14         mov     esi, DWORD PTR [ebx+20]
+
+; 650  :     if (len > strm->avail_out) len = strm->avail_out;
+
+  0000f        8b 47 10         mov     eax, DWORD PTR [edi+16]
+  00012        3b f0            cmp     esi, eax
+  00014        76 02            jbe     SHORT $LN3@flush_pend
+  00016        8b f0            mov     esi, eax
+$LN3@flush_pend:
+
+; 651  :     if (len == 0) return;
+
+  00018        85 f6            test    esi, esi
+  0001a        74 28            je      SHORT $LN1@flush_pend
+
+; 652  : 
+; 653  :     zmemcpy(strm->next_out, s->pending_out, len);
+
+  0001c        8b 43 10         mov     eax, DWORD PTR [ebx+16]
+  0001f        8b 4f 0c         mov     ecx, DWORD PTR [edi+12]
+  00022        56               push    esi
+  00023        50               push    eax
+  00024        51               push    ecx
+  00025        e8 00 00 00 00   call    _memcpy
+
+; 654  :     strm->next_out  += len;
+
+  0002a        01 77 0c         add     DWORD PTR [edi+12], esi
+
+; 655  :     s->pending_out  += len;
+
+  0002d        01 73 10         add     DWORD PTR [ebx+16], esi
+
+; 656  :     strm->total_out += len;
+
+  00030        01 77 14         add     DWORD PTR [edi+20], esi
+
+; 657  :     strm->avail_out  -= len;
+
+  00033        29 77 10         sub     DWORD PTR [edi+16], esi
+  00036        83 c4 0c         add     esp, 12                        ; 0000000cH
+
+; 658  :     s->pending -= len;
+
+  00039        29 73 14         sub     DWORD PTR [ebx+20], esi
+
+; 659  :     if (s->pending == 0) {
+
+  0003c        75 06            jne     SHORT $LN1@flush_pend
+
+; 660  :         s->pending_out = s->pending_buf;
+
+  0003e        8b 53 08         mov     edx, DWORD PTR [ebx+8]
+  00041        89 53 10         mov     DWORD PTR [ebx+16], edx
+$LN1@flush_pend:
+
+; 661  :     }
+; 662  : }
+
+  00044        5e               pop     esi
+  00045        5b               pop     ebx
+  00046        c3               ret     0
+_flush_pending ENDP
+; Function compile flags: /Ogtp
+_TEXT  ENDS
+;      COMDAT _putShortMSB
+_TEXT  SEGMENT
+_putShortMSB PROC                                      ; COMDAT
+; _s$ = eax
+; _b$ = ecx
+
+; 631  : {
+
+  00000        56               push    esi
+
+; 632  :     put_byte(s, (Byte)(b >> 8));
+
+  00001        8b 70 08         mov     esi, DWORD PTR [eax+8]
+  00004        57               push    edi
+  00005        8b 78 14         mov     edi, DWORD PTR [eax+20]
+  00008        8b d1            mov     edx, ecx
+  0000a        c1 ea 08         shr     edx, 8
+  0000d        88 14 3e         mov     BYTE PTR [esi+edi], dl
+
+; 633  :     put_byte(s, (Byte)(b & 0xff));
+
+  00010        8b 78 08         mov     edi, DWORD PTR [eax+8]
+  00013        be 01 00 00 00   mov     esi, 1
+  00018        01 70 14         add     DWORD PTR [eax+20], esi
+  0001b        8b 50 14         mov     edx, DWORD PTR [eax+20]
+  0001e        88 0c 3a         mov     BYTE PTR [edx+edi], cl
+  00021        01 70 14         add     DWORD PTR [eax+20], esi
+  00024        5f               pop     edi
+  00025        5e               pop     esi
+
+; 634  : }
+
+  00026        c3               ret     0
+_putShortMSB ENDP
+_TEXT  ENDS
+PUBLIC _deflateBound@8
+; Function compile flags: /Ogtp
+;      COMDAT _deflateBound@8
+_TEXT  SEGMENT
+_strm$ = 8                                             ; size = 4
+_complen$ = 12                                         ; size = 4
+_sourceLen$ = 12                                       ; size = 4
+_deflateBound@8 PROC                                   ; COMDAT
+
+; 569  : {
+
+  00000        55               push    ebp
+  00001        8b ec            mov     ebp, esp
+
+; 570  :     deflate_state *s;
+; 571  :     uLong complen, wraplen;
+; 572  :     Bytef *str;
+; 573  : 
+; 574  :     /* conservative upper bound for compressed data */
+; 575  :     complen = sourceLen +
+; 576  :               ((sourceLen + 7) >> 3) + ((sourceLen + 63) >> 6) + 5;
+
+  00003        8b 55 0c         mov     edx, DWORD PTR _sourceLen$[ebp]
+  00006        8d 42 3f         lea     eax, DWORD PTR [edx+63]
+  00009        c1 e8 06         shr     eax, 6
+  0000c        8d 4a 07         lea     ecx, DWORD PTR [edx+7]
+  0000f        03 c2            add     eax, edx
+  00011        c1 e9 03         shr     ecx, 3
+  00014        8d 4c 01 05      lea     ecx, DWORD PTR [ecx+eax+5]
+
+; 577  : 
+; 578  :     /* if can't get parameters, return conservative bound plus zlib wrapper */
+; 579  :     if (strm == Z_NULL || strm->state == Z_NULL)
+
+  00018        8b 45 08         mov     eax, DWORD PTR _strm$[ebp]
+  0001b        57               push    edi
+  0001c        89 4d 0c         mov     DWORD PTR _complen$[ebp], ecx
+  0001f        85 c0            test    eax, eax
+  00021        0f 84 ac 00 00
+       00               je      $LN20@deflateBou
+  00027        8b 78 1c         mov     edi, DWORD PTR [eax+28]
+  0002a        85 ff            test    edi, edi
+  0002c        0f 84 a1 00 00
+       00               je      $LN20@deflateBou
+
+; 581  : 
+; 582  :     /* compute wrapper length */
+; 583  :     s = strm->state;
+; 584  :     switch (s->wrap) {
+
+  00032        8b 47 18         mov     eax, DWORD PTR [edi+24]
+  00035        83 e8 00         sub     eax, 0
+  00038        56               push    esi
+  00039        74 5f            je      SHORT $LN17@deflateBou
+  0003b        48               dec     eax
+  0003c        74 4d            je      SHORT $LN16@deflateBou
+  0003e        48               dec     eax
+  0003f        74 07            je      SHORT $LN15@deflateBou
+
+; 610  :     default:                                /* for compiler happiness */
+; 611  :         wraplen = 6;
+
+  00041        b8 06 00 00 00   mov     eax, 6
+  00046        eb 54            jmp     SHORT $LN28@deflateBou
+$LN15@deflateBou:
+
+; 591  :     case 2:                                 /* gzip wrapper */
+; 592  :         wraplen = 18;
+; 593  :         if (s->gzhead != Z_NULL) {          /* user-supplied gzip header */
+
+  00048        8b 77 1c         mov     esi, DWORD PTR [edi+28]
+  0004b        b8 12 00 00 00   mov     eax, 18                        ; 00000012H
+  00050        85 f6            test    esi, esi
+  00052        74 48            je      SHORT $LN28@deflateBou
+
+; 594  :             if (s->gzhead->extra != Z_NULL)
+
+  00054        83 7e 10 00      cmp     DWORD PTR [esi+16], 0
+  00058        74 06            je      SHORT $LN13@deflateBou
+
+; 595  :                 wraplen += 2 + s->gzhead->extra_len;
+
+  0005a        8b 46 14         mov     eax, DWORD PTR [esi+20]
+  0005d        83 c0 14         add     eax, 20                        ; 00000014H
+$LN13@deflateBou:
+
+; 596  :             str = s->gzhead->name;
+
+  00060        8b 4e 1c         mov     ecx, DWORD PTR [esi+28]
+  00063        53               push    ebx
+
+; 597  :             if (str != Z_NULL)
+
+  00064        85 c9            test    ecx, ecx
+  00066        74 08            je      SHORT $LN9@deflateBou
+$LL11@deflateBou:
+
+; 598  :                 do {
+; 599  :                     wraplen++;
+; 600  :                 } while (*str++);
+
+  00068        8a 19            mov     bl, BYTE PTR [ecx]
+  0006a        40               inc     eax
+  0006b        41               inc     ecx
+  0006c        84 db            test    bl, bl
+  0006e        75 f8            jne     SHORT $LL11@deflateBou
+$LN9@deflateBou:
+
+; 601  :             str = s->gzhead->comment;
+
+  00070        8b 4e 24         mov     ecx, DWORD PTR [esi+36]
+
+; 602  :             if (str != Z_NULL)
+
+  00073        85 c9            test    ecx, ecx
+  00075        74 08            je      SHORT $LN5@deflateBou
+$LL7@deflateBou:
+
+; 603  :                 do {
+; 604  :                     wraplen++;
+; 605  :                 } while (*str++);
+
+  00077        8a 19            mov     bl, BYTE PTR [ecx]
+  00079        40               inc     eax
+  0007a        41               inc     ecx
+  0007b        84 db            test    bl, bl
+  0007d        75 f8            jne     SHORT $LL7@deflateBou
+$LN5@deflateBou:
+
+; 606  :             if (s->gzhead->hcrc)
+
+  0007f        83 7e 2c 00      cmp     DWORD PTR [esi+44], 0
+  00083        5b               pop     ebx
+  00084        74 16            je      SHORT $LN28@deflateBou
+
+; 607  :                 wraplen += 2;
+
+  00086        83 c0 02         add     eax, 2
+
+; 608  :         }
+; 609  :         break;
+
+  00089        eb 11            jmp     SHORT $LN28@deflateBou
+$LN16@deflateBou:
+
+; 587  :         break;
+; 588  :     case 1:                                 /* zlib wrapper */
+; 589  :         wraplen = 6 + (s->strstart ? 4 : 0);
+
+  0008b        8b 47 6c         mov     eax, DWORD PTR [edi+108]
+  0008e        f7 d8            neg     eax
+  00090        1b c0            sbb     eax, eax
+  00092        83 e0 04         and     eax, 4
+  00095        83 c0 06         add     eax, 6
+
+; 590  :         break;
+
+  00098        eb 02            jmp     SHORT $LN28@deflateBou
+$LN17@deflateBou:
+
+; 585  :     case 0:                                 /* raw deflate */
+; 586  :         wraplen = 0;
+
+  0009a        33 c0            xor     eax, eax
+$LN28@deflateBou:
+
+; 612  :     }
+; 613  : 
+; 614  :     /* if not default parameters, return conservative bound */
+; 615  :     if (s->w_bits != 15 || s->hash_bits != 8 + 7)
+
+  0009c        b9 0f 00 00 00   mov     ecx, 15                        ; 0000000fH
+  000a1        39 4f 30         cmp     DWORD PTR [edi+48], ecx
+  000a4        75 24            jne     SHORT $LN1@deflateBou
+  000a6        39 4f 50         cmp     DWORD PTR [edi+80], ecx
+  000a9        75 1f            jne     SHORT $LN1@deflateBou
+
+; 617  : 
+; 618  :     /* default settings: return tight bound for that case */
+; 619  :     return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) +
+; 620  :            (sourceLen >> 25) + 13 - 6 + wraplen;
+
+  000ab        8b f2            mov     esi, edx
+  000ad        c1 ee 0e         shr     esi, 14                        ; 0000000eH
+  000b0        03 f0            add     esi, eax
+  000b2        8b ca            mov     ecx, edx
+  000b4        c1 e9 19         shr     ecx, 25                        ; 00000019H
+  000b7        8b c2            mov     eax, edx
+  000b9        c1 e8 0c         shr     eax, 12                        ; 0000000cH
+  000bc        03 f1            add     esi, ecx
+  000be        03 c6            add     eax, esi
+  000c0        5e               pop     esi
+  000c1        8d 44 10 07      lea     eax, DWORD PTR [eax+edx+7]
+  000c5        5f               pop     edi
+
+; 621  : }
+
+  000c6        5d               pop     ebp
+  000c7        c2 08 00         ret     8
+$LN1@deflateBou:
+
+; 616  :         return complen + wraplen;
+
+  000ca        03 45 0c         add     eax, DWORD PTR _complen$[ebp]
+  000cd        5e               pop     esi
+  000ce        5f               pop     edi
+
+; 621  : }
+
+  000cf        5d               pop     ebp
+  000d0        c2 08 00         ret     8
+$LN20@deflateBou:
+
+; 580  :         return complen + 6;
+
+  000d3        8d 41 06         lea     eax, DWORD PTR [ecx+6]
+  000d6        5f               pop     edi
+
+; 621  : }
+
+  000d7        5d               pop     ebp
+  000d8        c2 08 00         ret     8
+_deflateBound@8 ENDP
+_TEXT  ENDS
+PUBLIC _deflateTune@20
+; Function compile flags: /Ogtp
+;      COMDAT _deflateTune@20
+_TEXT  SEGMENT
+_strm$ = 8                                             ; size = 4
+_good_length$ = 12                                     ; size = 4
+_max_lazy$ = 16                                                ; size = 4
+_nice_length$ = 20                                     ; size = 4
+_max_chain$ = 24                                       ; size = 4
+_deflateTune@20 PROC                                   ; COMDAT
+
+; 537  : {
+
+  00000        55               push    ebp
+  00001        8b ec            mov     ebp, esp
+
+; 538  :     deflate_state *s;
+; 539  : 
+; 540  :     if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+
+  00003        8b 45 08         mov     eax, DWORD PTR _strm$[ebp]
+  00006        85 c0            test    eax, eax
+  00008        74 2e            je      SHORT $LN1@deflateTun
+  0000a        8b 40 1c         mov     eax, DWORD PTR [eax+28]
+  0000d        85 c0            test    eax, eax
+  0000f        74 27            je      SHORT $LN1@deflateTun
+
+; 541  :     s = strm->state;
+; 542  :     s->good_match = good_length;
+
+  00011        8b 4d 0c         mov     ecx, DWORD PTR _good_length$[ebp]
+
+; 543  :     s->max_lazy_match = max_lazy;
+
+  00014        8b 55 10         mov     edx, DWORD PTR _max_lazy$[ebp]
+  00017        89 88 8c 00 00
+       00               mov     DWORD PTR [eax+140], ecx
+
+; 544  :     s->nice_match = nice_length;
+
+  0001d        8b 4d 14         mov     ecx, DWORD PTR _nice_length$[ebp]
+  00020        89 90 80 00 00
+       00               mov     DWORD PTR [eax+128], edx
+
+; 545  :     s->max_chain_length = max_chain;
+
+  00026        8b 55 18         mov     edx, DWORD PTR _max_chain$[ebp]
+  00029        89 88 90 00 00
+       00               mov     DWORD PTR [eax+144], ecx
+  0002f        89 50 7c         mov     DWORD PTR [eax+124], edx
+
+; 546  :     return Z_OK;
+
+  00032        33 c0            xor     eax, eax
+
+; 547  : }
+
+  00034        5d               pop     ebp
+  00035        c2 14 00         ret     20                     ; 00000014H
+$LN1@deflateTun:
+
+; 538  :     deflate_state *s;
+; 539  : 
+; 540  :     if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+
+  00038        b8 fe ff ff ff   mov     eax, -2                        ; fffffffeH
+
+; 547  : }
+
+  0003d        5d               pop     ebp
+  0003e        c2 14 00         ret     20                     ; 00000014H
+_deflateTune@20 ENDP
+_TEXT  ENDS
+PUBLIC _deflatePrime@12
+; Function compile flags: /Ogtp
+;      COMDAT _deflatePrime@12
+_TEXT  SEGMENT
+_strm$ = 8                                             ; size = 4
+_bits$ = 12                                            ; size = 4
+_value$ = 16                                           ; size = 4
+_deflatePrime@12 PROC                                  ; COMDAT
+
+; 468  : {
+
+  00000        55               push    ebp
+  00001        8b ec            mov     ebp, esp
+
+; 469  :     deflate_state *s;
+; 470  :     int put;
+; 471  : 
+; 472  :     if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+
+  00003        8b 45 08         mov     eax, DWORD PTR _strm$[ebp]
+  00006        85 c0            test    eax, eax
+  00008        74 74            je      SHORT $LN6@deflatePri
+  0000a        8b 40 1c         mov     eax, DWORD PTR [eax+28]
+  0000d        85 c0            test    eax, eax
+  0000f        74 6d            je      SHORT $LN6@deflatePri
+
+; 473  :     s = strm->state;
+; 474  :     if ((Bytef *)(s->d_buf) < s->pending_out + ((Buf_size + 7) >> 3))
+
+  00011        8b 48 10         mov     ecx, DWORD PTR [eax+16]
+  00014        83 c1 02         add     ecx, 2
+  00017        39 88 a4 16 00
+       00               cmp     DWORD PTR [eax+5796], ecx
+  0001d        73 09            jae     SHORT $LN10@deflatePri
+
+; 475  :         return Z_BUF_ERROR;
+
+  0001f        b8 fb ff ff ff   mov     eax, -5                        ; fffffffbH
+
+; 487  : }
+
+  00024        5d               pop     ebp
+  00025        c2 0c 00         ret     12                     ; 0000000cH
+$LN10@deflatePri:
+  00028        53               push    ebx
+  00029        56               push    esi
+  0002a        57               push    edi
+
+; 475  :         return Z_BUF_ERROR;
+
+  0002b        8b 7d 0c         mov     edi, DWORD PTR _bits$[ebp]
+  0002e        8b ff            npad    2
+$LL4@deflatePri:
+
+; 476  :     do {
+; 477  :         put = Buf_size - s->bi_valid;
+
+  00030        8b 90 bc 16 00
+       00               mov     edx, DWORD PTR [eax+5820]
+  00036        be 10 00 00 00   mov     esi, 16                        ; 00000010H
+  0003b        2b f2            sub     esi, edx
+
+; 478  :         if (put > bits)
+
+  0003d        3b f7            cmp     esi, edi
+  0003f        7e 02            jle     SHORT $LN1@deflatePri
+
+; 479  :             put = bits;
+
+  00041        8b f7            mov     esi, edi
+$LN1@deflatePri:
+
+; 480  :         s->bi_buf |= (ush)((value & ((1 << put) - 1)) << s->bi_valid);
+
+  00043        8b ce            mov     ecx, esi
+  00045        bb 01 00 00 00   mov     ebx, 1
+  0004a        66 d3 e3         shl     bx, cl
+  0004d        8b ca            mov     ecx, edx
+
+; 481  :         s->bi_valid += put;
+
+  0004f        03 d6            add     edx, esi
+  00051        89 90 bc 16 00
+       00               mov     DWORD PTR [eax+5820], edx
+  00057        66 4b            dec     bx
+  00059        66 23 5d 10      and     bx, WORD PTR _value$[ebp]
+  0005d        66 d3 e3         shl     bx, cl
+  00060        66 09 98 b8 16
+       00 00            or      WORD PTR [eax+5816], bx
+
+; 482  :         _tr_flush_bits(s);
+
+  00067        e8 00 00 00 00   call    __tr_flush_bits
+
+; 483  :         value >>= put;
+
+  0006c        8b ce            mov     ecx, esi
+  0006e        d3 7d 10         sar     DWORD PTR _value$[ebp], cl
+
+; 484  :         bits -= put;
+
+  00071        2b fe            sub     edi, esi
+
+; 485  :     } while (bits);
+
+  00073        75 bb            jne     SHORT $LL4@deflatePri
+
+; 486  :     return Z_OK;
+
+  00075        5f               pop     edi
+  00076        5e               pop     esi
+  00077        33 c0            xor     eax, eax
+  00079        5b               pop     ebx
+
+; 487  : }
+
+  0007a        5d               pop     ebp
+  0007b        c2 0c 00         ret     12                     ; 0000000cH
+$LN6@deflatePri:
+
+; 469  :     deflate_state *s;
+; 470  :     int put;
+; 471  : 
+; 472  :     if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+
+  0007e        b8 fe ff ff ff   mov     eax, -2                        ; fffffffeH
+
+; 487  : }
+
+  00083        5d               pop     ebp
+  00084        c2 0c 00         ret     12                     ; 0000000cH
+_deflatePrime@12 ENDP
+_TEXT  ENDS
+PUBLIC _deflatePending@12
+; Function compile flags: /Ogtp
+;      COMDAT _deflatePending@12
+_TEXT  SEGMENT
+_strm$ = 8                                             ; size = 4
+_pending$ = 12                                         ; size = 4
+_bits$ = 16                                            ; size = 4
+_deflatePending@12 PROC                                        ; COMDAT
+
+; 454  : {
+
+  00000        55               push    ebp
+  00001        8b ec            mov     ebp, esp
+
+; 455  :     if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+
+  00003        8b 55 08         mov     edx, DWORD PTR _strm$[ebp]
+  00006        85 d2            test    edx, edx
+  00008        74 2b            je      SHORT $LN3@deflatePen
+  0000a        8b 42 1c         mov     eax, DWORD PTR [edx+28]
+  0000d        85 c0            test    eax, eax
+  0000f        74 24            je      SHORT $LN3@deflatePen
+
+; 456  :     if (pending != Z_NULL)
+
+  00011        8b 4d 0c         mov     ecx, DWORD PTR _pending$[ebp]
+  00014        85 c9            test    ecx, ecx
+  00016        74 05            je      SHORT $LN2@deflatePen
+
+; 457  :         *pending = strm->state->pending;
+
+  00018        8b 40 14         mov     eax, DWORD PTR [eax+20]
+  0001b        89 01            mov     DWORD PTR [ecx], eax
+$LN2@deflatePen:
+
+; 458  :     if (bits != Z_NULL)
+
+  0001d        8b 45 10         mov     eax, DWORD PTR _bits$[ebp]
+  00020        85 c0            test    eax, eax
+  00022        74 0b            je      SHORT $LN1@deflatePen
+
+; 459  :         *bits = strm->state->bi_valid;
+
+  00024        8b 4a 1c         mov     ecx, DWORD PTR [edx+28]
+  00027        8b 91 bc 16 00
+       00               mov     edx, DWORD PTR [ecx+5820]
+  0002d        89 10            mov     DWORD PTR [eax], edx
+$LN1@deflatePen:
+
+; 460  :     return Z_OK;
+
+  0002f        33 c0            xor     eax, eax
+
+; 461  : }
+
+  00031        5d               pop     ebp
+  00032        c2 0c 00         ret     12                     ; 0000000cH
+$LN3@deflatePen:
+
+; 455  :     if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+
+  00035        b8 fe ff ff ff   mov     eax, -2                        ; fffffffeH
+
+; 461  : }
+
+  0003a        5d               pop     ebp
+  0003b        c2 0c 00         ret     12                     ; 0000000cH
+_deflatePending@12 ENDP
+_TEXT  ENDS
+PUBLIC _deflateSetHeader@8
+; Function compile flags: /Ogtp
+;      COMDAT _deflateSetHeader@8
+_TEXT  SEGMENT
+_strm$ = 8                                             ; size = 4
+_head$ = 12                                            ; size = 4
+_deflateSetHeader@8 PROC                               ; COMDAT
+
+; 442  : {
+
+  00000        55               push    ebp
+  00001        8b ec            mov     ebp, esp
+
+; 443  :     if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+
+  00003        8b 45 08         mov     eax, DWORD PTR _strm$[ebp]
+  00006        85 c0            test    eax, eax
+  00008        74 19            je      SHORT $LN2@deflateSet
+  0000a        8b 40 1c         mov     eax, DWORD PTR [eax+28]
+  0000d        85 c0            test    eax, eax
+  0000f        74 12            je      SHORT $LN2@deflateSet
+
+; 444  :     if (strm->state->wrap != 2) return Z_STREAM_ERROR;
+
+  00011        83 78 18 02      cmp     DWORD PTR [eax+24], 2
+  00015        75 0c            jne     SHORT $LN2@deflateSet
+
+; 445  :     strm->state->gzhead = head;
+
+  00017        8b 4d 0c         mov     ecx, DWORD PTR _head$[ebp]
+  0001a        89 48 1c         mov     DWORD PTR [eax+28], ecx
+
+; 446  :     return Z_OK;
+
+  0001d        33 c0            xor     eax, eax
+
+; 447  : }
+
+  0001f        5d               pop     ebp
+  00020        c2 08 00         ret     8
+$LN2@deflateSet:
+
+; 443  :     if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+
+  00023        b8 fe ff ff ff   mov     eax, -2                        ; fffffffeH
+
+; 447  : }
+
+  00028        5d               pop     ebp
+  00029        c2 08 00         ret     8
+_deflateSetHeader@8 ENDP
+; Function compile flags: /Ogtp
+;      COMDAT _read_buf
+_TEXT  SEGMENT
+_read_buf PROC                                         ; COMDAT
+; _strm$ = esi
+; _buf$ = ebx
+; _size$ = ecx
+
+; 1081 :     unsigned len = strm->avail_in;
+
+  00000        8b 46 04         mov     eax, DWORD PTR [esi+4]
+  00003        57               push    edi
+  00004        8b f8            mov     edi, eax
+
+; 1082 : 
+; 1083 :     if (len > size) len = size;
+
+  00006        3b f9            cmp     edi, ecx
+  00008        76 02            jbe     SHORT $LN5@read_buf
+  0000a        8b f9            mov     edi, ecx
+$LN5@read_buf:
+
+; 1084 :     if (len == 0) return 0;
+
+  0000c        85 ff            test    edi, edi
+  0000e        75 04            jne     SHORT $LN4@read_buf
+  00010        33 c0            xor     eax, eax
+  00012        5f               pop     edi
+
+; 1101 : }
+
+  00013        c3               ret     0
+$LN4@read_buf:
+
+; 1085 : 
+; 1086 :     strm->avail_in  -= len;
+
+  00014        2b c7            sub     eax, edi
+  00016        89 46 04         mov     DWORD PTR [esi+4], eax
+
+; 1087 : 
+; 1088 :     zmemcpy(buf, strm->next_in, len);
+
+  00019        8b 06            mov     eax, DWORD PTR [esi]
+  0001b        57               push    edi
+  0001c        50               push    eax
+  0001d        53               push    ebx
+  0001e        e8 00 00 00 00   call    _memcpy
+
+; 1089 :     if (strm->state->wrap == 1) {
+
+  00023        8b 4e 1c         mov     ecx, DWORD PTR [esi+28]
+  00026        8b 41 18         mov     eax, DWORD PTR [ecx+24]
+  00029        83 c4 0c         add     esp, 12                        ; 0000000cH
+  0002c        83 f8 01         cmp     eax, 1
+  0002f        75 17            jne     SHORT $LN3@read_buf
+
+; 1090 :         strm->adler = adler32(strm->adler, buf, len);
+
+  00031        8b 56 30         mov     edx, DWORD PTR [esi+48]
+  00034        57               push    edi
+  00035        53               push    ebx
+  00036        52               push    edx
+  00037        e8 00 00 00 00   call    _adler32@12
+
+; 1095 :     }
+; 1096 : #endif
+; 1097 :     strm->next_in  += len;
+
+  0003c        01 3e            add     DWORD PTR [esi], edi
+
+; 1098 :     strm->total_in += len;
+
+  0003e        01 7e 08         add     DWORD PTR [esi+8], edi
+  00041        89 46 30         mov     DWORD PTR [esi+48], eax
+
+; 1099 : 
+; 1100 :     return (int)len;
+
+  00044        8b c7            mov     eax, edi
+  00046        5f               pop     edi
+
+; 1101 : }
+
+  00047        c3               ret     0
+$LN3@read_buf:
+
+; 1091 :     }
+; 1092 : #ifdef GZIP
+; 1093 :     else if (strm->state->wrap == 2) {
+
+  00048        83 f8 02         cmp     eax, 2
+  0004b        75 0e            jne     SHORT $LN1@read_buf
+
+; 1094 :         strm->adler = crc32(strm->adler, buf, len);
+
+  0004d        8b 46 30         mov     eax, DWORD PTR [esi+48]
+  00050        57               push    edi
+  00051        53               push    ebx
+  00052        50               push    eax
+  00053        e8 00 00 00 00   call    _crc32@12
+  00058        89 46 30         mov     DWORD PTR [esi+48], eax
+$LN1@read_buf:
+
+; 1095 :     }
+; 1096 : #endif
+; 1097 :     strm->next_in  += len;
+
+  0005b        01 3e            add     DWORD PTR [esi], edi
+
+; 1098 :     strm->total_in += len;
+
+  0005d        01 7e 08         add     DWORD PTR [esi+8], edi
+
+; 1099 : 
+; 1100 :     return (int)len;
+
+  00060        8b c7            mov     eax, edi
+  00062        5f               pop     edi
+
+; 1101 : }
+
+  00063        c3               ret     0
+_read_buf ENDP
+_TEXT  ENDS
+PUBLIC _deflateCopy@8
+; Function compile flags: /Ogtp
+;      COMDAT _deflateCopy@8
+_TEXT  SEGMENT
+_dest$ = 8                                             ; size = 4
+tv260 = 12                                             ; size = 4
+_overlay$ = 12                                         ; size = 4
+_source$ = 12                                          ; size = 4
+_deflateCopy@8 PROC                                    ; COMDAT
+
+; 1017 : {
+
+  00000        55               push    ebp
+  00001        8b ec            mov     ebp, esp
+  00003        53               push    ebx
+  00004        56               push    esi
+
+; 1018 : #ifdef MAXSEG_64K
+; 1019 :     return Z_STREAM_ERROR;
+; 1020 : #else
+; 1021 :     deflate_state *ds;
+; 1022 :     deflate_state *ss;
+; 1023 :     ushf *overlay;
+; 1024 : 
+; 1025 : 
+; 1026 :     if (source == Z_NULL || dest == Z_NULL || source->state == Z_NULL) {
+
+  00005        8b 75 0c         mov     esi, DWORD PTR _source$[ebp]
+  00008        85 f6            test    esi, esi
+  0000a        0f 84 84 01 00
+       00               je      $LN4@deflateCop
+  00010        8b 5d 08         mov     ebx, DWORD PTR _dest$[ebp]
+  00013        85 db            test    ebx, ebx
+  00015        0f 84 79 01 00
+       00               je      $LN4@deflateCop
+  0001b        8b 46 1c         mov     eax, DWORD PTR [esi+28]
+  0001e        89 45 0c         mov     DWORD PTR tv260[ebp], eax
+  00021        85 c0            test    eax, eax
+  00023        0f 84 6b 01 00
+       00               je      $LN4@deflateCop
+
+; 1028 :     }
+; 1029 : 
+; 1030 :     ss = source->state;
+; 1031 : 
+; 1032 :     zmemcpy((voidpf)dest, (voidpf)source, sizeof(z_stream));
+
+  00029        57               push    edi
+  0002a        b9 0e 00 00 00   mov     ecx, 14                        ; 0000000eH
+  0002f        8b fb            mov     edi, ebx
+  00031        f3 a5            rep movsd
+
+; 1033 : 
+; 1034 :     ds = (deflate_state *) ZALLOC(dest, 1, sizeof(deflate_state));
+
+  00033        8b 43 28         mov     eax, DWORD PTR [ebx+40]
+  00036        8b 4b 20         mov     ecx, DWORD PTR [ebx+32]
+  00039        68 c4 16 00 00   push    5828                   ; 000016c4H
+  0003e        6a 01            push    1
+  00040        50               push    eax
+  00041        ff d1            call    ecx
+  00043        8b f0            mov     esi, eax
+  00045        83 c4 0c         add     esp, 12                        ; 0000000cH
+
+; 1035 :     if (ds == Z_NULL) return Z_MEM_ERROR;
+
+  00048        85 f6            test    esi, esi
+  0004a        0f 84 38 01 00
+       00               je      $LN9@deflateCop
+
+; 1036 :     dest->state = (struct internal_state FAR *) ds;
+; 1037 :     zmemcpy((voidpf)ds, (voidpf)ss, sizeof(deflate_state));
+
+  00050        8b 7d 0c         mov     edi, DWORD PTR tv260[ebp]
+  00053        68 c4 16 00 00   push    5828                   ; 000016c4H
+  00058        57               push    edi
+  00059        56               push    esi
+  0005a        89 73 1c         mov     DWORD PTR [ebx+28], esi
+  0005d        e8 00 00 00 00   call    _memcpy
+
+; 1038 :     ds->strm = dest;
+; 1039 : 
+; 1040 :     ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte));
+
+  00062        8b 56 2c         mov     edx, DWORD PTR [esi+44]
+  00065        89 1e            mov     DWORD PTR [esi], ebx
+  00067        8b 43 28         mov     eax, DWORD PTR [ebx+40]
+  0006a        8b 4b 20         mov     ecx, DWORD PTR [ebx+32]
+  0006d        6a 02            push    2
+  0006f        52               push    edx
+  00070        50               push    eax
+  00071        ff d1            call    ecx
+
+; 1041 :     ds->prev   = (Posf *)  ZALLOC(dest, ds->w_size, sizeof(Pos));
+
+  00073        8b 56 2c         mov     edx, DWORD PTR [esi+44]
+  00076        89 46 38         mov     DWORD PTR [esi+56], eax
+  00079        8b 43 28         mov     eax, DWORD PTR [ebx+40]
+  0007c        8b 4b 20         mov     ecx, DWORD PTR [ebx+32]
+  0007f        6a 02            push    2
+  00081        52               push    edx
+  00082        50               push    eax
+  00083        ff d1            call    ecx
+
+; 1042 :     ds->head   = (Posf *)  ZALLOC(dest, ds->hash_size, sizeof(Pos));
+
+  00085        8b 56 4c         mov     edx, DWORD PTR [esi+76]
+  00088        89 46 40         mov     DWORD PTR [esi+64], eax
+  0008b        8b 43 28         mov     eax, DWORD PTR [ebx+40]
+  0008e        8b 4b 20         mov     ecx, DWORD PTR [ebx+32]
+  00091        6a 02            push    2
+  00093        52               push    edx
+  00094        50               push    eax
+  00095        ff d1            call    ecx
+
+; 1043 :     overlay = (ushf *) ZALLOC(dest, ds->lit_bufsize, sizeof(ush)+2);
+
+  00097        8b 96 9c 16 00
+       00               mov     edx, DWORD PTR [esi+5788]
+  0009d        89 46 44         mov     DWORD PTR [esi+68], eax
+  000a0        8b 43 28         mov     eax, DWORD PTR [ebx+40]
+  000a3        8b 4b 20         mov     ecx, DWORD PTR [ebx+32]
+  000a6        6a 04            push    4
+  000a8        52               push    edx
+  000a9        50               push    eax
+  000aa        ff d1            call    ecx
+
+; 1044 :     ds->pending_buf = (uchf *) overlay;
+; 1045 : 
+; 1046 :     if (ds->window == Z_NULL || ds->prev == Z_NULL || ds->head == Z_NULL ||
+; 1047 :         ds->pending_buf == Z_NULL) {
+
+  000ac        8b 4e 38         mov     ecx, DWORD PTR [esi+56]
+  000af        83 c4 3c         add     esp, 60                        ; 0000003cH
+  000b2        89 45 0c         mov     DWORD PTR _overlay$[ebp], eax
+  000b5        89 46 08         mov     DWORD PTR [esi+8], eax
+  000b8        85 c9            test    ecx, ecx
+  000ba        0f 84 c2 00 00
+       00               je      $LN1@deflateCop
+  000c0        83 7e 40 00      cmp     DWORD PTR [esi+64], 0
+  000c4        0f 84 b8 00 00
+       00               je      $LN1@deflateCop
+  000ca        83 7e 44 00      cmp     DWORD PTR [esi+68], 0
+  000ce        0f 84 ae 00 00
+       00               je      $LN1@deflateCop
+  000d4        85 c0            test    eax, eax
+  000d6        0f 84 a6 00 00
+       00               je      $LN1@deflateCop
+
+; 1050 :     }
+; 1051 :     /* following zmemcpy do not work for 16-bit MSDOS */
+; 1052 :     zmemcpy(ds->window, ss->window, ds->w_size * 2 * sizeof(Byte));
+
+  000dc        8b 56 2c         mov     edx, DWORD PTR [esi+44]
+  000df        8b 47 38         mov     eax, DWORD PTR [edi+56]
+  000e2        03 d2            add     edx, edx
+  000e4        52               push    edx
+  000e5        50               push    eax
+  000e6        51               push    ecx
+  000e7        e8 00 00 00 00   call    _memcpy
+
+; 1053 :     zmemcpy((voidpf)ds->prev, (voidpf)ss->prev, ds->w_size * sizeof(Pos));
+
+  000ec        8b 4e 2c         mov     ecx, DWORD PTR [esi+44]
+  000ef        8b 57 40         mov     edx, DWORD PTR [edi+64]
+  000f2        8b 46 40         mov     eax, DWORD PTR [esi+64]
+  000f5        03 c9            add     ecx, ecx
+  000f7        51               push    ecx
+  000f8        52               push    edx
+  000f9        50               push    eax
+  000fa        e8 00 00 00 00   call    _memcpy
+
+; 1054 :     zmemcpy((voidpf)ds->head, (voidpf)ss->head, ds->hash_size * sizeof(Pos));
+
+  000ff        8b 4e 4c         mov     ecx, DWORD PTR [esi+76]
+  00102        8b 57 44         mov     edx, DWORD PTR [edi+68]
+  00105        8b 46 44         mov     eax, DWORD PTR [esi+68]
+  00108        03 c9            add     ecx, ecx
+  0010a        51               push    ecx
+  0010b        52               push    edx
+  0010c        50               push    eax
+  0010d        e8 00 00 00 00   call    _memcpy
+
+; 1055 :     zmemcpy(ds->pending_buf, ss->pending_buf, (uInt)ds->pending_buf_size);
+
+  00112        8b 4e 0c         mov     ecx, DWORD PTR [esi+12]
+  00115        8b 57 08         mov     edx, DWORD PTR [edi+8]
+  00118        8b 46 08         mov     eax, DWORD PTR [esi+8]
+  0011b        51               push    ecx
+  0011c        52               push    edx
+  0011d        50               push    eax
+  0011e        e8 00 00 00 00   call    _memcpy
+
+; 1056 : 
+; 1057 :     ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf);
+
+  00123        8b 57 10         mov     edx, DWORD PTR [edi+16]
+  00126        2b 57 08         sub     edx, DWORD PTR [edi+8]
+  00129        8b 4e 08         mov     ecx, DWORD PTR [esi+8]
+
+; 1058 :     ds->d_buf = overlay + ds->lit_bufsize/sizeof(ush);
+
+  0012c        8b 86 9c 16 00
+       00               mov     eax, DWORD PTR [esi+5788]
+  00132        8b 7d 0c         mov     edi, DWORD PTR _overlay$[ebp]
+  00135        03 d1            add     edx, ecx
+  00137        89 56 10         mov     DWORD PTR [esi+16], edx
+  0013a        8b d0            mov     edx, eax
+
+; 1059 :     ds->l_buf = ds->pending_buf + (1+sizeof(ush))*ds->lit_bufsize;
+
+  0013c        8d 0c 41         lea     ecx, DWORD PTR [ecx+eax*2]
+  0013f        d1 ea            shr     edx, 1
+  00141        03 c8            add     ecx, eax
+  00143        8d 14 57         lea     edx, DWORD PTR [edi+edx*2]
+  00146        83 c4 30         add     esp, 48                        ; 00000030H
+  00149        89 96 a4 16 00
+       00               mov     DWORD PTR [esi+5796], edx
+  0014f        89 8e 98 16 00
+       00               mov     DWORD PTR [esi+5784], ecx
+
+; 1060 : 
+; 1061 :     ds->l_desc.dyn_tree = ds->dyn_ltree;
+; 1062 :     ds->d_desc.dyn_tree = ds->dyn_dtree;
+
+  00155        8d 86 88 09 00
+       00               lea     eax, DWORD PTR [esi+2440]
+  0015b        8d 96 94 00 00
+       00               lea     edx, DWORD PTR [esi+148]
+
+; 1063 :     ds->bl_desc.dyn_tree = ds->bl_tree;
+
+  00161        8d 8e 7c 0a 00
+       00               lea     ecx, DWORD PTR [esi+2684]
+  00167        5f               pop     edi
+  00168        89 86 24 0b 00
+       00               mov     DWORD PTR [esi+2852], eax
+  0016e        89 96 18 0b 00
+       00               mov     DWORD PTR [esi+2840], edx
+  00174        89 8e 30 0b 00
+       00               mov     DWORD PTR [esi+2864], ecx
+  0017a        5e               pop     esi
+
+; 1064 : 
+; 1065 :     return Z_OK;
+
+  0017b        33 c0            xor     eax, eax
+  0017d        5b               pop     ebx
+
+; 1066 : #endif /* MAXSEG_64K */
+; 1067 : }
+
+  0017e        5d               pop     ebp
+  0017f        c2 08 00         ret     8
+$LN1@deflateCop:
+
+; 1048 :         deflateEnd (dest);
+
+  00182        53               push    ebx
+  00183        e8 00 00 00 00   call    _deflateEnd@4
+$LN9@deflateCop:
+
+; 1049 :         return Z_MEM_ERROR;
+
+  00188        5f               pop     edi
+  00189        5e               pop     esi
+  0018a        b8 fc ff ff ff   mov     eax, -4                        ; fffffffcH
+  0018f        5b               pop     ebx
+
+; 1066 : #endif /* MAXSEG_64K */
+; 1067 : }
+
+  00190        5d               pop     ebp
+  00191        c2 08 00         ret     8
+$LN4@deflateCop:
+  00194        5e               pop     esi
+
+; 1027 :         return Z_STREAM_ERROR;
+
+  00195        b8 fe ff ff ff   mov     eax, -2                        ; fffffffeH
+  0019a        5b               pop     ebx
+
+; 1066 : #endif /* MAXSEG_64K */
+; 1067 : }
+
+  0019b        5d               pop     ebp
+  0019c        c2 08 00         ret     8
+_deflateCopy@8 ENDP
+_TEXT  ENDS
+PUBLIC _deflateResetKeep@4
+; Function compile flags: /Ogtp
+;      COMDAT _deflateResetKeep@4
+_TEXT  SEGMENT
+_strm$ = 8                                             ; size = 4
+_deflateResetKeep@4 PROC                               ; COMDAT
+
+; 394  : {
+
+  00000        55               push    ebp
+  00001        8b ec            mov     ebp, esp
+  00003        53               push    ebx
+  00004        56               push    esi
+  00005        57               push    edi
+
+; 395  :     deflate_state *s;
+; 396  : 
+; 397  :     if (strm == Z_NULL || strm->state == Z_NULL ||
+; 398  :         strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0) {
+
+  00006        8b 7d 08         mov     edi, DWORD PTR _strm$[ebp]
+  00009        33 db            xor     ebx, ebx
+  0000b        3b fb            cmp     edi, ebx
+  0000d        0f 84 86 00 00
+       00               je      $LN2@deflateRes
+  00013        8b 77 1c         mov     esi, DWORD PTR [edi+28]
+  00016        3b f3            cmp     esi, ebx
+  00018        74 7f            je      SHORT $LN2@deflateRes
+  0001a        39 5f 20         cmp     DWORD PTR [edi+32], ebx
+  0001d        74 7a            je      SHORT $LN2@deflateRes
+  0001f        39 5f 24         cmp     DWORD PTR [edi+36], ebx
+  00022        74 75            je      SHORT $LN2@deflateRes
+
+; 400  :     }
+; 401  : 
+; 402  :     strm->total_in = strm->total_out = 0;
+
+  00024        89 5f 14         mov     DWORD PTR [edi+20], ebx
+  00027        89 5f 08         mov     DWORD PTR [edi+8], ebx
+
+; 403  :     strm->msg = Z_NULL; /* use zfree if we ever allocate msg dynamically */
+
+  0002a        89 5f 18         mov     DWORD PTR [edi+24], ebx
+
+; 404  :     strm->data_type = Z_UNKNOWN;
+
+  0002d        c7 47 2c 02 00
+       00 00            mov     DWORD PTR [edi+44], 2
+
+; 405  : 
+; 406  :     s = (deflate_state *)strm->state;
+; 407  :     s->pending = 0;
+; 408  :     s->pending_out = s->pending_buf;
+
+  00034        8b 46 08         mov     eax, DWORD PTR [esi+8]
+  00037        89 46 10         mov     DWORD PTR [esi+16], eax
+
+; 409  : 
+; 410  :     if (s->wrap < 0) {
+
+  0003a        8b 46 18         mov     eax, DWORD PTR [esi+24]
+  0003d        89 5e 14         mov     DWORD PTR [esi+20], ebx
+  00040        3b c3            cmp     eax, ebx
+  00042        7d 05            jge     SHORT $LN1@deflateRes
+
+; 411  :         s->wrap = -s->wrap; /* was made negative by deflate(..., Z_FINISH); */
+
+  00044        f7 d8            neg     eax
+  00046        89 46 18         mov     DWORD PTR [esi+24], eax
+$LN1@deflateRes:
+
+; 412  :     }
+; 413  :     s->status = s->wrap ? INIT_STATE : BUSY_STATE;
+
+  00049        8b 46 18         mov     eax, DWORD PTR [esi+24]
+  0004c        8b c8            mov     ecx, eax
+  0004e        f7 d9            neg     ecx
+  00050        1b c9            sbb     ecx, ecx
+  00052        83 e1 b9         and     ecx, -71               ; ffffffb9H
+
+; 414  :     strm->adler =
+; 415  : #ifdef GZIP
+; 416  :         s->wrap == 2 ? crc32(0L, Z_NULL, 0) :
+; 417  : #endif
+; 418  :         adler32(0L, Z_NULL, 0);
+
+  00055        53               push    ebx
+  00056        83 c1 71         add     ecx, 113               ; 00000071H
+  00059        53               push    ebx
+  0005a        89 4e 04         mov     DWORD PTR [esi+4], ecx
+  0005d        53               push    ebx
+  0005e        83 f8 02         cmp     eax, 2
+  00061        75 1b            jne     SHORT $LN6@deflateRes
+  00063        e8 00 00 00 00   call    _crc32@12
+  00068        89 47 30         mov     DWORD PTR [edi+48], eax
+
+; 419  :     s->last_flush = Z_NO_FLUSH;
+; 420  : 
+; 421  :     _tr_init(s);
+
+  0006b        8b d6            mov     edx, esi
+  0006d        89 5e 28         mov     DWORD PTR [esi+40], ebx
+  00070        e8 00 00 00 00   call    __tr_init
+  00075        5f               pop     edi
+  00076        5e               pop     esi
+
+; 422  : 
+; 423  :     return Z_OK;
+
+  00077        33 c0            xor     eax, eax
+  00079        5b               pop     ebx
+
+; 424  : }
+
+  0007a        5d               pop     ebp
+  0007b        c2 04 00         ret     4
+$LN6@deflateRes:
+
+; 414  :     strm->adler =
+; 415  : #ifdef GZIP
+; 416  :         s->wrap == 2 ? crc32(0L, Z_NULL, 0) :
+; 417  : #endif
+; 418  :         adler32(0L, Z_NULL, 0);
+
+  0007e        e8 00 00 00 00   call    _adler32@12
+  00083        89 47 30         mov     DWORD PTR [edi+48], eax
+
+; 419  :     s->last_flush = Z_NO_FLUSH;
+; 420  : 
+; 421  :     _tr_init(s);
+
+  00086        8b d6            mov     edx, esi
+  00088        89 5e 28         mov     DWORD PTR [esi+40], ebx
+  0008b        e8 00 00 00 00   call    __tr_init
+  00090        5f               pop     edi
+  00091        5e               pop     esi
+
+; 422  : 
+; 423  :     return Z_OK;
+
+  00092        33 c0            xor     eax, eax
+  00094        5b               pop     ebx
+
+; 424  : }
+
+  00095        5d               pop     ebp
+  00096        c2 04 00         ret     4
+$LN2@deflateRes:
+  00099        5f               pop     edi
+  0009a        5e               pop     esi
+
+; 399  :         return Z_STREAM_ERROR;
+
+  0009b        b8 fe ff ff ff   mov     eax, -2                        ; fffffffeH
+  000a0        5b               pop     ebx
+
+; 424  : }
+
+  000a1        5d               pop     ebp
+  000a2        c2 04 00         ret     4
+_deflateResetKeep@4 ENDP
+; Function compile flags: /Ogtp
+;      COMDAT _fill_window
+_TEXT  SEGMENT
+_wsize$ = -4                                           ; size = 4
+_fill_window PROC                                      ; COMDAT
+; _s$ = edi
+
+; 1392 : {
+
+  00000        55               push    ebp
+  00001        8b ec            mov     ebp, esp
+  00003        51               push    ecx
+  00004        53               push    ebx
+
+; 1393 :     register unsigned n, m;
+; 1394 :     register Posf *p;
+; 1395 :     unsigned more;    /* Amount of free space at the end of the window. */
+; 1396 :     uInt wsize = s->w_size;
+
+  00005        8b 5f 2c         mov     ebx, DWORD PTR [edi+44]
+  00008        56               push    esi
+  00009        89 5d fc         mov     DWORD PTR _wsize$[ebp], ebx
+  0000c        eb 05            jmp     SHORT $LN26@fill_windo
+  0000e        8b ff            npad    2
+$LL39@fill_windo:
+  00010        8b 5d fc         mov     ebx, DWORD PTR _wsize$[ebp]
+$LN26@fill_windo:
+
+; 1397 : 
+; 1398 :     Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead");
+; 1399 : 
+; 1400 :     do {
+; 1401 :         more = (unsigned)(s->window_size -(ulg)s->lookahead -(ulg)s->strstart);
+
+  00013        8b 77 3c         mov     esi, DWORD PTR [edi+60]
+  00016        2b 77 74         sub     esi, DWORD PTR [edi+116]
+  00019        8b 47 6c         mov     eax, DWORD PTR [edi+108]
+
+; 1402 : 
+; 1403 :         /* Deal with !@#$% 64K limit: */
+; 1404 :         if (sizeof(int) <= 2) {
+; 1405 :             if (more == 0 && s->strstart == 0 && s->lookahead == 0) {
+; 1406 :                 more = wsize;
+; 1407 : 
+; 1408 :             } else if (more == (unsigned)(-1)) {
+; 1409 :                 /* Very unlikely, but possible on 16 bit machine if
+; 1410 :                  * strstart == 0 && lookahead == 1 (input done a byte at time)
+; 1411 :                  */
+; 1412 :                 more--;
+; 1413 :             }
+; 1414 :         }
+; 1415 : 
+; 1416 :         /* If the window is almost full and there is insufficient lookahead,
+; 1417 :          * move the upper half to the lower one to make room in the upper half.
+; 1418 :          */
+; 1419 :         if (s->strstart >= wsize+MAX_DIST(s)) {
+
+  0001c        8b 4f 2c         mov     ecx, DWORD PTR [edi+44]
+  0001f        8d 94 0b fa fe
+       ff ff            lea     edx, DWORD PTR [ebx+ecx-262]
+  00026        2b f0            sub     esi, eax
+  00028        3b c2            cmp     eax, edx
+  0002a        72 5d            jb      SHORT $LN19@fill_windo
+
+; 1420 : 
+; 1421 :             zmemcpy(s->window, s->window+wsize, (unsigned)wsize);
+
+  0002c        8b 47 38         mov     eax, DWORD PTR [edi+56]
+  0002f        53               push    ebx
+  00030        8d 0c 18         lea     ecx, DWORD PTR [eax+ebx]
+  00033        51               push    ecx
+  00034        50               push    eax
+  00035        e8 00 00 00 00   call    _memcpy
+
+; 1422 :             s->match_start -= wsize;
+; 1423 :             s->strstart    -= wsize; /* we now have strstart >= MAX_DIST */
+; 1424 :             s->block_start -= (long) wsize;
+; 1425 : 
+; 1426 :             /* Slide the hash table (could be avoided with 32 bit values
+; 1427 :                at the expense of memory usage). We slide even when level == 0
+; 1428 :                to keep the hash table consistent if we switch back to level > 0
+; 1429 :                later. (Using level 0 permanently is not an optimal usage of
+; 1430 :                zlib, so we don't care about this pathological case.)
+; 1431 :              */
+; 1432 :             n = s->hash_size;
+
+  0003a        8b 57 4c         mov     edx, DWORD PTR [edi+76]
+
+; 1433 :             p = &s->head[n];
+
+  0003d        8b 47 44         mov     eax, DWORD PTR [edi+68]
+  00040        29 5f 70         sub     DWORD PTR [edi+112], ebx
+  00043        29 5f 6c         sub     DWORD PTR [edi+108], ebx
+  00046        83 c4 0c         add     esp, 12                        ; 0000000cH
+  00049        29 5f 5c         sub     DWORD PTR [edi+92], ebx
+  0004c        8d 0c 50         lea     ecx, DWORD PTR [eax+edx*2]
+  0004f        90               npad    1
+$LL18@fill_windo:
+
+; 1434 :             do {
+; 1435 :                 m = *--p;
+
+  00050        0f b7 41 fe      movzx   eax, WORD PTR [ecx-2]
+  00054        83 e9 02         sub     ecx, 2
+
+; 1436 :                 *p = (Pos)(m >= wsize ? m-wsize : NIL);
+
+  00057        3b c3            cmp     eax, ebx
+  00059        72 04            jb      SHORT $LN29@fill_windo
+  0005b        2b c3            sub     eax, ebx
+  0005d        eb 02            jmp     SHORT $LN30@fill_windo
+$LN29@fill_windo:
+  0005f        33 c0            xor     eax, eax
+$LN30@fill_windo:
+
+; 1437 :             } while (--n);
+
+  00061        4a               dec     edx
+  00062        66 89 01         mov     WORD PTR [ecx], ax
+  00065        75 e9            jne     SHORT $LL18@fill_windo
+
+; 1438 : 
+; 1439 :             n = wsize;
+; 1440 : #ifndef FASTEST
+; 1441 :             p = &s->prev[n];
+
+  00067        8b 4f 40         mov     ecx, DWORD PTR [edi+64]
+  0006a        8b d3            mov     edx, ebx
+  0006c        8d 0c 59         lea     ecx, DWORD PTR [ecx+ebx*2]
+  0006f        90               npad    1
+$LL15@fill_windo:
+
+; 1442 :             do {
+; 1443 :                 m = *--p;
+
+  00070        0f b7 41 fe      movzx   eax, WORD PTR [ecx-2]
+  00074        83 e9 02         sub     ecx, 2
+
+; 1444 :                 *p = (Pos)(m >= wsize ? m-wsize : NIL);
+
+  00077        3b c3            cmp     eax, ebx
+  00079        72 04            jb      SHORT $LN31@fill_windo
+  0007b        2b c3            sub     eax, ebx
+  0007d        eb 02            jmp     SHORT $LN32@fill_windo
+$LN31@fill_windo:
+  0007f        33 c0            xor     eax, eax
+$LN32@fill_windo:
+
+; 1445 :                 /* If n is not on any hash chain, prev[n] is garbage but
+; 1446 :                  * its value will never be used.
+; 1447 :                  */
+; 1448 :             } while (--n);
+
+  00081        4a               dec     edx
+  00082        66 89 01         mov     WORD PTR [ecx], ax
+  00085        75 e9            jne     SHORT $LL15@fill_windo
+
+; 1449 : #endif
+; 1450 :             more += wsize;
+
+  00087        03 f3            add     esi, ebx
+$LN19@fill_windo:
+
+; 1451 :         }
+; 1452 :         if (s->strm->avail_in == 0) break;
+
+  00089        8b 07            mov     eax, DWORD PTR [edi]
+  0008b        83 78 04 00      cmp     DWORD PTR [eax+4], 0
+  0008f        0f 84 b0 00 00
+       00               je      $LN24@fill_windo
+
+; 1453 : 
+; 1454 :         /* If there was no sliding:
+; 1455 :          *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
+; 1456 :          *    more == window_size - lookahead - strstart
+; 1457 :          * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)
+; 1458 :          * => more >= window_size - 2*WSIZE + 2
+; 1459 :          * In the BIG_MEM or MMAP case (not yet supported),
+; 1460 :          *   window_size == input_size + MIN_LOOKAHEAD  &&
+; 1461 :          *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.
+; 1462 :          * Otherwise, window_size == 2*WSIZE so more >= 2.
+; 1463 :          * If there was sliding, more >= WSIZE. So in all cases, more >= 2.
+; 1464 :          */
+; 1465 :         Assert(more >= 2, "more < 2");
+; 1466 : 
+; 1467 :         n = read_buf(s->strm, s->window + s->strstart + s->lookahead, more);
+
+  00095        8b 5f 74         mov     ebx, DWORD PTR [edi+116]
+  00098        03 5f 6c         add     ebx, DWORD PTR [edi+108]
+  0009b        8b ce            mov     ecx, esi
+  0009d        03 5f 38         add     ebx, DWORD PTR [edi+56]
+  000a0        8b f0            mov     esi, eax
+  000a2        e8 00 00 00 00   call    _read_buf
+
+; 1468 :         s->lookahead += n;
+
+  000a7        01 47 74         add     DWORD PTR [edi+116], eax
+  000aa        8b 47 74         mov     eax, DWORD PTR [edi+116]
+
+; 1469 : 
+; 1470 :         /* Initialize the hash value now that we have some input: */
+; 1471 :         if (s->lookahead + s->insert >= MIN_MATCH) {
+
+  000ad        8b b7 b4 16 00
+       00               mov     esi, DWORD PTR [edi+5812]
+  000b3        8d 14 06         lea     edx, DWORD PTR [esi+eax]
+  000b6        83 fa 03         cmp     edx, 3
+  000b9        72 75            jb      SHORT $LN25@fill_windo
+
+; 1472 :             uInt str = s->strstart - s->insert;
+
+  000bb        8b 57 6c         mov     edx, DWORD PTR [edi+108]
+
+; 1473 :             s->ins_h = s->window[str];
+
+  000be        8b 5f 38         mov     ebx, DWORD PTR [edi+56]
+
+; 1474 :             UPDATE_HASH(s, s->ins_h, s->window[str + 1]);
+
+  000c1        8b 4f 58         mov     ecx, DWORD PTR [edi+88]
+  000c4        2b d6            sub     edx, esi
+  000c6        0f b6 04 13      movzx   eax, BYTE PTR [ebx+edx]
+  000ca        89 47 48         mov     DWORD PTR [edi+72], eax
+  000cd        d3 e0            shl     eax, cl
+  000cf        0f b6 4c 13 01   movzx   ecx, BYTE PTR [ebx+edx+1]
+  000d4        33 c1            xor     eax, ecx
+  000d6        23 47 54         and     eax, DWORD PTR [edi+84]
+  000d9        89 47 48         mov     DWORD PTR [edi+72], eax
+
+; 1475 : #if MIN_MATCH != 3
+; 1476 :             Call UPDATE_HASH() MIN_MATCH-3 more times
+; 1477 : #endif
+; 1478 :             while (s->insert) {
+
+  000dc        85 f6            test    esi, esi
+  000de        74 50            je      SHORT $LN25@fill_windo
+$LL10@fill_windo:
+
+; 1479 :                 UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]);
+
+  000e0        8b 77 48         mov     esi, DWORD PTR [edi+72]
+  000e3        8b 4f 58         mov     ecx, DWORD PTR [edi+88]
+  000e6        8b 47 38         mov     eax, DWORD PTR [edi+56]
+  000e9        0f b6 44 10 02   movzx   eax, BYTE PTR [eax+edx+2]
+
+; 1480 : #ifndef FASTEST
+; 1481 :                 s->prev[str & s->w_mask] = s->head[s->ins_h];
+
+  000ee        8b 5f 40         mov     ebx, DWORD PTR [edi+64]
+  000f1        d3 e6            shl     esi, cl
+  000f3        8b 4f 44         mov     ecx, DWORD PTR [edi+68]
+  000f6        33 c6            xor     eax, esi
+  000f8        23 47 54         and     eax, DWORD PTR [edi+84]
+  000fb        8b 77 34         mov     esi, DWORD PTR [edi+52]
+  000fe        89 47 48         mov     DWORD PTR [edi+72], eax
+  00101        66 8b 04 41      mov     ax, WORD PTR [ecx+eax*2]
+  00105        23 f2            and     esi, edx
+  00107        66 89 04 73      mov     WORD PTR [ebx+esi*2], ax
+
+; 1482 : #endif
+; 1483 :                 s->head[s->ins_h] = (Pos)str;
+
+  0010b        8b 4f 48         mov     ecx, DWORD PTR [edi+72]
+  0010e        8b 47 44         mov     eax, DWORD PTR [edi+68]
+  00111        66 89 14 48      mov     WORD PTR [eax+ecx*2], dx
+
+; 1484 :                 str++;
+; 1485 :                 s->insert--;
+
+  00115        ff 8f b4 16 00
+       00               dec     DWORD PTR [edi+5812]
+  0011b        8b 87 b4 16 00
+       00               mov     eax, DWORD PTR [edi+5812]
+
+; 1486 :                 if (s->lookahead + s->insert < MIN_MATCH)
+
+  00121        8b 4f 74         mov     ecx, DWORD PTR [edi+116]
+  00124        03 c8            add     ecx, eax
+  00126        42               inc     edx
+  00127        83 f9 03         cmp     ecx, 3
+  0012a        72 04            jb      SHORT $LN25@fill_windo
+
+; 1475 : #if MIN_MATCH != 3
+; 1476 :             Call UPDATE_HASH() MIN_MATCH-3 more times
+; 1477 : #endif
+; 1478 :             while (s->insert) {
+
+  0012c        85 c0            test    eax, eax
+  0012e        75 b0            jne     SHORT $LL10@fill_windo
+$LN25@fill_windo:
+
+; 1487 :                     break;
+; 1488 :             }
+; 1489 :         }
+; 1490 :         /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,
+; 1491 :          * but this is not important since only literal bytes will be emitted.
+; 1492 :          */
+; 1493 : 
+; 1494 :     } while (s->lookahead < MIN_LOOKAHEAD && s->strm->avail_in != 0);
+
+  00130        81 7f 74 06 01
+       00 00            cmp     DWORD PTR [edi+116], 262 ; 00000106H
+  00137        73 0c            jae     SHORT $LN24@fill_windo
+  00139        8b 17            mov     edx, DWORD PTR [edi]
+  0013b        83 7a 04 00      cmp     DWORD PTR [edx+4], 0
+  0013f        0f 85 cb fe ff
+       ff               jne     $LL39@fill_windo
+$LN24@fill_windo:
+
+; 1495 : 
+; 1496 :     /* If the WIN_INIT bytes after the end of the current data have never been
+; 1497 :      * written, then zero those bytes in order to avoid memory check reports of
+; 1498 :      * the use of uninitialized (or uninitialised as Julian writes) bytes by
+; 1499 :      * the longest match routines.  Update the high water mark for the next
+; 1500 :      * time through here.  WIN_INIT is set to MAX_MATCH since the longest match
+; 1501 :      * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.
+; 1502 :      */
+; 1503 :     if (s->high_water < s->window_size) {
+
+  00145        8b 87 c0 16 00
+       00               mov     eax, DWORD PTR [edi+5824]
+  0014b        8b 4f 3c         mov     ecx, DWORD PTR [edi+60]
+  0014e        3b c1            cmp     eax, ecx
+  00150        73 6b            jae     SHORT $LN2@fill_windo
+
+; 1504 :         ulg curr = s->strstart + (ulg)(s->lookahead);
+
+  00152        8b 77 74         mov     esi, DWORD PTR [edi+116]
+  00155        03 77 6c         add     esi, DWORD PTR [edi+108]
+
+; 1505 :         ulg init;
+; 1506 : 
+; 1507 :         if (s->high_water < curr) {
+
+  00158        3b c6            cmp     eax, esi
+  0015a        73 30            jae     SHORT $LN5@fill_windo
+
+; 1508 :             /* Previous high water mark below current data -- zero WIN_INIT
+; 1509 :              * bytes or up to end of window, whichever is less.
+; 1510 :              */
+; 1511 :             init = s->window_size - curr;
+
+  0015c        2b ce            sub     ecx, esi
+  0015e        8b d9            mov     ebx, ecx
+
+; 1512 :             if (init > WIN_INIT)
+
+  00160        81 fb 02 01 00
+       00               cmp     ebx, 258               ; 00000102H
+  00166        76 05            jbe     SHORT $LN4@fill_windo
+
+; 1513 :                 init = WIN_INIT;
+
+  00168        bb 02 01 00 00   mov     ebx, 258               ; 00000102H
+$LN4@fill_windo:
+
+; 1514 :             zmemzero(s->window + curr, (unsigned)init);
+
+  0016d        8b 47 38         mov     eax, DWORD PTR [edi+56]
+  00170        53               push    ebx
+  00171        03 c6            add     eax, esi
+  00173        6a 00            push    0
+  00175        50               push    eax
+  00176        e8 00 00 00 00   call    _memset
+  0017b        83 c4 0c         add     esp, 12                        ; 0000000cH
+
+; 1515 :             s->high_water = curr + init;
+
+  0017e        03 de            add     ebx, esi
+  00180        5e               pop     esi
+  00181        89 9f c0 16 00
+       00               mov     DWORD PTR [edi+5824], ebx
+  00187        5b               pop     ebx
+
+; 1527 :         }
+; 1528 :     }
+; 1529 : 
+; 1530 :     Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,
+; 1531 :            "not enough room for search");
+; 1532 : }
+
+  00188        8b e5            mov     esp, ebp
+  0018a        5d               pop     ebp
+  0018b        c3               ret     0
+$LN5@fill_windo:
+
+; 1516 :         }
+; 1517 :         else if (s->high_water < (ulg)curr + WIN_INIT) {
+
+  0018c        8d 96 02 01 00
+       00               lea     edx, DWORD PTR [esi+258]
+  00192        3b c2            cmp     eax, edx
+  00194        73 27            jae     SHORT $LN2@fill_windo
+
+; 1518 :             /* High water mark at or above current data, but below current data
+; 1519 :              * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up
+; 1520 :              * to end of window, whichever is less.
+; 1521 :              */
+; 1522 :             init = (ulg)curr + WIN_INIT - s->high_water;
+
+  00196        2b f0            sub     esi, eax
+  00198        81 c6 02 01 00
+       00               add     esi, 258               ; 00000102H
+
+; 1523 :             if (init > s->window_size - s->high_water)
+
+  0019e        2b c8            sub     ecx, eax
+  001a0        3b f1            cmp     esi, ecx
+  001a2        76 02            jbe     SHORT $LN1@fill_windo
+
+; 1524 :                 init = s->window_size - s->high_water;
+
+  001a4        8b f1            mov     esi, ecx
+$LN1@fill_windo:
+
+; 1525 :             zmemzero(s->window + s->high_water, (unsigned)init);
+
+  001a6        8b 4f 38         mov     ecx, DWORD PTR [edi+56]
+  001a9        56               push    esi
+  001aa        03 c8            add     ecx, eax
+  001ac        6a 00            push    0
+  001ae        51               push    ecx
+  001af        e8 00 00 00 00   call    _memset
+  001b4        83 c4 0c         add     esp, 12                        ; 0000000cH
+
+; 1526 :             s->high_water += init;
+
+  001b7        01 b7 c0 16 00
+       00               add     DWORD PTR [edi+5824], esi
+$LN2@fill_windo:
+  001bd        5e               pop     esi
+  001be        5b               pop     ebx
+
+; 1527 :         }
+; 1528 :     }
+; 1529 : 
+; 1530 :     Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,
+; 1531 :            "not enough room for search");
+; 1532 : }
+
+  001bf        8b e5            mov     esp, ebp
+  001c1        5d               pop     ebp
+  001c2        c3               ret     0
+_fill_window ENDP
+_TEXT  ENDS
+PUBLIC _deflateReset@4
+; Function compile flags: /Ogtp
+;      COMDAT _deflateReset@4
+_TEXT  SEGMENT
+_strm$ = 8                                             ; size = 4
+_deflateReset@4 PROC                                   ; COMDAT
+
+; 429  : {
+
+  00000        55               push    ebp
+  00001        8b ec            mov     ebp, esp
+  00003        56               push    esi
+
+; 430  :     int ret;
+; 431  : 
+; 432  :     ret = deflateResetKeep(strm);
+
+  00004        8b 75 08         mov     esi, DWORD PTR _strm$[ebp]
+  00007        57               push    edi
+  00008        56               push    esi
+  00009        e8 00 00 00 00   call    _deflateResetKeep@4
+  0000e        8b f8            mov     edi, eax
+
+; 433  :     if (ret == Z_OK)
+
+  00010        85 ff            test    edi, edi
+  00012        75 0a            jne     SHORT $LN1@deflateRes@2
+
+; 434  :         lm_init(strm->state);
+
+  00014        8b 76 1c         mov     esi, DWORD PTR [esi+28]
+  00017        e8 00 00 00 00   call    _lm_init
+
+; 435  :     return ret;
+
+  0001c        8b c7            mov     eax, edi
+$LN1@deflateRes@2:
+  0001e        5f               pop     edi
+  0001f        5e               pop     esi
+
+; 436  : }
+
+  00020        5d               pop     ebp
+  00021        c2 04 00         ret     4
+_deflateReset@4 ENDP
+_TEXT  ENDS
+PUBLIC _deflateSetDictionary@12
+; Function compile flags: /Ogtp
+;      COMDAT _deflateSetDictionary@12
+_TEXT  SEGMENT
+_avail$ = -8                                           ; size = 4
+_wrap$ = -4                                            ; size = 4
+_strm$ = 8                                             ; size = 4
+_n$ = 12                                               ; size = 4
+_dictionary$ = 12                                      ; size = 4
+_next$ = 16                                            ; size = 4
+_dictLength$ = 16                                      ; size = 4
+_deflateSetDictionary@12 PROC                          ; COMDAT
+
+; 327  : {
+
+  00000        55               push    ebp
+  00001        8b ec            mov     ebp, esp
+  00003        83 ec 08         sub     esp, 8
+  00006        56               push    esi
+
+; 328  :     deflate_state *s;
+; 329  :     uInt str, n;
+; 330  :     int wrap;
+; 331  :     unsigned avail;
+; 332  :     z_const unsigned char *next;
+; 333  : 
+; 334  :     if (strm == Z_NULL || strm->state == Z_NULL || dictionary == Z_NULL)
+
+  00007        8b 75 08         mov     esi, DWORD PTR _strm$[ebp]
+  0000a        57               push    edi
+  0000b        85 f6            test    esi, esi
+  0000d        0f 84 61 01 00
+       00               je      $LN12@deflateSet@2
+  00013        8b 7e 1c         mov     edi, DWORD PTR [esi+28]
+  00016        85 ff            test    edi, edi
+  00018        0f 84 56 01 00
+       00               je      $LN12@deflateSet@2
+  0001e        8b 4d 0c         mov     ecx, DWORD PTR _dictionary$[ebp]
+  00021        85 c9            test    ecx, ecx
+  00023        0f 84 4b 01 00
+       00               je      $LN12@deflateSet@2
+
+; 336  :     s = strm->state;
+; 337  :     wrap = s->wrap;
+
+  00029        8b 47 18         mov     eax, DWORD PTR [edi+24]
+  0002c        89 45 fc         mov     DWORD PTR _wrap$[ebp], eax
+
+; 338  :     if (wrap == 2 || (wrap == 1 && s->status != INIT_STATE) || s->lookahead)
+
+  0002f        83 f8 02         cmp     eax, 2
+  00032        0f 84 3c 01 00
+       00               je      $LN12@deflateSet@2
+  00038        83 f8 01         cmp     eax, 1
+  0003b        75 0a            jne     SHORT $LN9@deflateSet@2
+  0003d        83 7f 04 2a      cmp     DWORD PTR [edi+4], 42  ; 0000002aH
+  00041        0f 85 2d 01 00
+       00               jne     $LN12@deflateSet@2
+$LN9@deflateSet@2:
+  00047        83 7f 74 00      cmp     DWORD PTR [edi+116], 0
+  0004b        0f 85 23 01 00
+       00               jne     $LN12@deflateSet@2
+
+; 339  :         return Z_STREAM_ERROR;
+; 340  : 
+; 341  :     /* when using zlib wrappers, compute Adler-32 for provided dictionary */
+; 342  :     if (wrap == 1)
+
+  00051        53               push    ebx
+  00052        8b 5d 10         mov     ebx, DWORD PTR _dictLength$[ebp]
+  00055        83 f8 01         cmp     eax, 1
+  00058        75 14            jne     SHORT $LN8@deflateSet@2
+
+; 343  :         strm->adler = adler32(strm->adler, dictionary, dictLength);
+
+  0005a        8b 46 30         mov     eax, DWORD PTR [esi+48]
+  0005d        53               push    ebx
+  0005e        51               push    ecx
+  0005f        50               push    eax
+  00060        e8 00 00 00 00   call    _adler32@12
+  00065        8b 4d 0c         mov     ecx, DWORD PTR _dictionary$[ebp]
+  00068        89 46 30         mov     DWORD PTR [esi+48], eax
+  0006b        8b 45 fc         mov     eax, DWORD PTR _wrap$[ebp]
+$LN8@deflateSet@2:
+
+; 344  :     s->wrap = 0;                    /* avoid computing Adler-32 in read_buf */
+
+  0006e        c7 47 18 00 00
+       00 00            mov     DWORD PTR [edi+24], 0
+
+; 345  : 
+; 346  :     /* if dictionary would fill window, just replace the history */
+; 347  :     if (dictLength >= s->w_size) {
+
+  00075        3b 5f 2c         cmp     ebx, DWORD PTR [edi+44]
+  00078        72 3e            jb      SHORT $LN7@deflateSet@2
+
+; 348  :         if (wrap == 0) {            /* already empty otherwise */
+
+  0007a        85 c0            test    eax, eax
+  0007c        75 31            jne     SHORT $LN6@deflateSet@2
+
+; 349  :             CLEAR_HASH(s);
+
+  0007e        8b 4f 4c         mov     ecx, DWORD PTR [edi+76]
+  00081        8b 57 44         mov     edx, DWORD PTR [edi+68]
+  00084        66 89 44 4a fe   mov     WORD PTR [edx+ecx*2-2], ax
+  00089        8b 4f 4c         mov     ecx, DWORD PTR [edi+76]
+  0008c        8d 54 09 fe      lea     edx, DWORD PTR [ecx+ecx-2]
+  00090        52               push    edx
+  00091        50               push    eax
+  00092        8b 47 44         mov     eax, DWORD PTR [edi+68]
+  00095        50               push    eax
+  00096        e8 00 00 00 00   call    _memset
+
+; 350  :             s->strstart = 0;
+; 351  :             s->block_start = 0L;
+; 352  :             s->insert = 0;
+
+  0009b        8b 4d 0c         mov     ecx, DWORD PTR _dictionary$[ebp]
+  0009e        83 c4 0c         add     esp, 12                        ; 0000000cH
+  000a1        33 c0            xor     eax, eax
+  000a3        89 47 6c         mov     DWORD PTR [edi+108], eax
+  000a6        89 47 5c         mov     DWORD PTR [edi+92], eax
+  000a9        89 87 b4 16 00
+       00               mov     DWORD PTR [edi+5812], eax
+$LN6@deflateSet@2:
+
+; 353  :         }
+; 354  :         dictionary += dictLength - s->w_size;  /* use the tail */
+
+  000af        8b 47 2c         mov     eax, DWORD PTR [edi+44]
+  000b2        2b d8            sub     ebx, eax
+  000b4        03 cb            add     ecx, ebx
+
+; 355  :         dictLength = s->w_size;
+
+  000b6        8b d8            mov     ebx, eax
+$LN7@deflateSet@2:
+
+; 356  :     }
+; 357  : 
+; 358  :     /* insert dictionary into window and hash */
+; 359  :     avail = strm->avail_in;
+
+  000b8        8b 56 04         mov     edx, DWORD PTR [esi+4]
+
+; 360  :     next = strm->next_in;
+
+  000bb        8b 06            mov     eax, DWORD PTR [esi]
+  000bd        89 55 f8         mov     DWORD PTR _avail$[ebp], edx
+  000c0        89 45 10         mov     DWORD PTR _next$[ebp], eax
+
+; 361  :     strm->avail_in = dictLength;
+
+  000c3        89 5e 04         mov     DWORD PTR [esi+4], ebx
+
+; 362  :     strm->next_in = (z_const Bytef *)dictionary;
+
+  000c6        89 0e            mov     DWORD PTR [esi], ecx
+
+; 363  :     fill_window(s);
+
+  000c8        e8 00 00 00 00   call    _fill_window
+
+; 364  :     while (s->lookahead >= MIN_MATCH) {
+
+  000cd        83 7f 74 03      cmp     DWORD PTR [edi+116], 3
+  000d1        72 60            jb      SHORT $LN4@deflateSet@2
+$LL5@deflateSet@2:
+
+; 365  :         str = s->strstart;
+; 366  :         n = s->lookahead - (MIN_MATCH-1);
+
+  000d3        8b 47 74         mov     eax, DWORD PTR [edi+116]
+  000d6        8b 57 6c         mov     edx, DWORD PTR [edi+108]
+  000d9        83 e8 02         sub     eax, 2
+  000dc        89 45 0c         mov     DWORD PTR _n$[ebp], eax
+  000df        90               npad    1
+$LL3@deflateSet@2:
+
+; 367  :         do {
+; 368  :             UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]);
+
+  000e0        8b 4f 38         mov     ecx, DWORD PTR [edi+56]
+  000e3        0f b6 44 11 02   movzx   eax, BYTE PTR [ecx+edx+2]
+  000e8        8b 77 48         mov     esi, DWORD PTR [edi+72]
+  000eb        8b 4f 58         mov     ecx, DWORD PTR [edi+88]
+
+; 369  : #ifndef FASTEST
+; 370  :             s->prev[str & s->w_mask] = s->head[s->ins_h];
+
+  000ee        8b 5f 40         mov     ebx, DWORD PTR [edi+64]
+  000f1        d3 e6            shl     esi, cl
+  000f3        8b 4f 44         mov     ecx, DWORD PTR [edi+68]
+  000f6        33 c6            xor     eax, esi
+  000f8        23 47 54         and     eax, DWORD PTR [edi+84]
+  000fb        8b 77 34         mov     esi, DWORD PTR [edi+52]
+  000fe        89 47 48         mov     DWORD PTR [edi+72], eax
+  00101        66 8b 04 41      mov     ax, WORD PTR [ecx+eax*2]
+  00105        23 f2            and     esi, edx
+  00107        66 89 04 73      mov     WORD PTR [ebx+esi*2], ax
+
+; 371  : #endif
+; 372  :             s->head[s->ins_h] = (Pos)str;
+
+  0010b        8b 4f 48         mov     ecx, DWORD PTR [edi+72]
+  0010e        8b 47 44         mov     eax, DWORD PTR [edi+68]
+  00111        66 89 14 48      mov     WORD PTR [eax+ecx*2], dx
+
+; 373  :             str++;
+
+  00115        42               inc     edx
+
+; 374  :         } while (--n);
+
+  00116        ff 4d 0c         dec     DWORD PTR _n$[ebp]
+  00119        75 c5            jne     SHORT $LL3@deflateSet@2
+
+; 375  :         s->strstart = str;
+
+  0011b        89 57 6c         mov     DWORD PTR [edi+108], edx
+
+; 376  :         s->lookahead = MIN_MATCH-1;
+
+  0011e        c7 47 74 02 00
+       00 00            mov     DWORD PTR [edi+116], 2
+
+; 377  :         fill_window(s);
+
+  00125        e8 00 00 00 00   call    _fill_window
+  0012a        83 7f 74 03      cmp     DWORD PTR [edi+116], 3
+  0012e        73 a3            jae     SHORT $LL5@deflateSet@2
+
+; 364  :     while (s->lookahead >= MIN_MATCH) {
+
+  00130        8b 75 08         mov     esi, DWORD PTR _strm$[ebp]
+$LN4@deflateSet@2:
+
+; 378  :     }
+; 379  :     s->strstart += s->lookahead;
+
+  00133        8b 47 74         mov     eax, DWORD PTR [edi+116]
+  00136        01 47 6c         add     DWORD PTR [edi+108], eax
+  00139        8b 4f 6c         mov     ecx, DWORD PTR [edi+108]
+
+; 380  :     s->block_start = (long)s->strstart;
+; 381  :     s->insert = s->lookahead;
+; 382  :     s->lookahead = 0;
+; 383  :     s->match_length = s->prev_length = MIN_MATCH-1;
+; 384  :     s->match_available = 0;
+; 385  :     strm->next_in = next;
+; 386  :     strm->avail_in = avail;
+
+  0013c        8b 55 f8         mov     edx, DWORD PTR _avail$[ebp]
+  0013f        89 4f 5c         mov     DWORD PTR [edi+92], ecx
+  00142        89 87 b4 16 00
+       00               mov     DWORD PTR [edi+5812], eax
+  00148        33 c0            xor     eax, eax
+  0014a        b9 02 00 00 00   mov     ecx, 2
+  0014f        89 47 74         mov     DWORD PTR [edi+116], eax
+  00152        89 4f 78         mov     DWORD PTR [edi+120], ecx
+  00155        89 4f 60         mov     DWORD PTR [edi+96], ecx
+  00158        8b 4d 10         mov     ecx, DWORD PTR _next$[ebp]
+  0015b        89 47 68         mov     DWORD PTR [edi+104], eax
+
+; 387  :     s->wrap = wrap;
+
+  0015e        8b 45 fc         mov     eax, DWORD PTR _wrap$[ebp]
+  00161        89 0e            mov     DWORD PTR [esi], ecx
+  00163        89 56 04         mov     DWORD PTR [esi+4], edx
+  00166        5b               pop     ebx
+  00167        89 47 18         mov     DWORD PTR [edi+24], eax
+  0016a        5f               pop     edi
+
+; 388  :     return Z_OK;
+
+  0016b        33 c0            xor     eax, eax
+  0016d        5e               pop     esi
+
+; 389  : }
+
+  0016e        8b e5            mov     esp, ebp
+  00170        5d               pop     ebp
+  00171        c2 0c 00         ret     12                     ; 0000000cH
+$LN12@deflateSet@2:
+  00174        5f               pop     edi
+
+; 335  :         return Z_STREAM_ERROR;
+
+  00175        b8 fe ff ff ff   mov     eax, -2                        ; fffffffeH
+  0017a        5e               pop     esi
+
+; 389  : }
+
+  0017b        8b e5            mov     esp, ebp
+  0017d        5d               pop     ebp
+  0017e        c2 0c 00         ret     12                     ; 0000000cH
+_deflateSetDictionary@12 ENDP
+_TEXT  ENDS
+PUBLIC _deflateInit2_@32
+; Function compile flags: /Ogtp
+;      COMDAT _deflateInit2_@32
+_TEXT  SEGMENT
+_wrap$ = -4                                            ; size = 4
+_strm$ = 8                                             ; size = 4
+_level$ = 12                                           ; size = 4
+_method$ = 16                                          ; size = 4
+_windowBits$ = 20                                      ; size = 4
+_memLevel$ = 24                                                ; size = 4
+_strategy$ = 28                                                ; size = 4
+_version$ = 32                                         ; size = 4
+_stream_size$ = 36                                     ; size = 4
+_deflateInit2_@32 PROC                                 ; COMDAT
+
+; 223  : {
+
+  00000        55               push    ebp
+  00001        8b ec            mov     ebp, esp
+  00003        51               push    ecx
+
+; 224  :     deflate_state *s;
+; 225  :     int wrap = 1;
+; 226  :     static const char my_version[] = ZLIB_VERSION;
+; 227  : 
+; 228  :     ushf *overlay;
+; 229  :     /* We overlay pending_buf and d_buf+l_buf. This works since the average
+; 230  :      * output size for (length,distance) codes is <= 24 bits.
+; 231  :      */
+; 232  : 
+; 233  :     if (version == Z_NULL || version[0] != my_version[0] ||
+; 234  :         stream_size != sizeof(z_stream)) {
+
+  00004        8b 45 20         mov     eax, DWORD PTR _version$[ebp]
+  00007        33 c9            xor     ecx, ecx
+  00009        c7 45 fc 01 00
+       00 00            mov     DWORD PTR _wrap$[ebp], 1
+  00010        3b c1            cmp     eax, ecx
+  00012        0f 84 16 02 00
+       00               je      $LN14@deflateIni
+  00018        80 38 31         cmp     BYTE PTR [eax], 49     ; 00000031H
+  0001b        0f 85 0d 02 00
+       00               jne     $LN14@deflateIni
+  00021        83 7d 24 38      cmp     DWORD PTR _stream_size$[ebp], 56 ; 00000038H
+  00025        0f 85 03 02 00
+       00               jne     $LN14@deflateIni
+
+; 236  :     }
+; 237  :     if (strm == Z_NULL) return Z_STREAM_ERROR;
+
+  0002b        57               push    edi
+  0002c        8b 7d 08         mov     edi, DWORD PTR _strm$[ebp]
+  0002f        3b f9            cmp     edi, ecx
+  00031        75 0a            jne     SHORT $LN13@deflateIni
+  00033        8d 41 fe         lea     eax, DWORD PTR [ecx-2]
+  00036        5f               pop     edi
+
+; 320  : }
+
+  00037        8b e5            mov     esp, ebp
+  00039        5d               pop     ebp
+  0003a        c2 20 00         ret     32                     ; 00000020H
+$LN13@deflateIni:
+
+; 238  : 
+; 239  :     strm->msg = Z_NULL;
+
+  0003d        89 4f 18         mov     DWORD PTR [edi+24], ecx
+
+; 240  :     if (strm->zalloc == (alloc_func)0) {
+
+  00040        39 4f 20         cmp     DWORD PTR [edi+32], ecx
+  00043        75 0a            jne     SHORT $LN12@deflateIni
+
+; 241  : #ifdef Z_SOLO
+; 242  :         return Z_STREAM_ERROR;
+; 243  : #else
+; 244  :         strm->zalloc = zcalloc;
+
+  00045        c7 47 20 00 00
+       00 00            mov     DWORD PTR [edi+32], OFFSET _zcalloc
+
+; 245  :         strm->opaque = (voidpf)0;
+
+  0004c        89 4f 28         mov     DWORD PTR [edi+40], ecx
+$LN12@deflateIni:
+
+; 246  : #endif
+; 247  :     }
+; 248  :     if (strm->zfree == (free_func)0)
+
+  0004f        39 4f 24         cmp     DWORD PTR [edi+36], ecx
+  00052        75 07            jne     SHORT $LN11@deflateIni
+
+; 249  : #ifdef Z_SOLO
+; 250  :         return Z_STREAM_ERROR;
+; 251  : #else
+; 252  :         strm->zfree = zcfree;
+
+  00054        c7 47 24 00 00
+       00 00            mov     DWORD PTR [edi+36], OFFSET _zcfree
+$LN11@deflateIni:
+
+; 253  : #endif
+; 254  : 
+; 255  : #ifdef FASTEST
+; 256  :     if (level != 0) level = 1;
+; 257  : #else
+; 258  :     if (level == Z_DEFAULT_COMPRESSION) level = 6;
+
+  0005b        83 7d 0c ff      cmp     DWORD PTR _level$[ebp], -1
+  0005f        75 07            jne     SHORT $LN10@deflateIni
+  00061        c7 45 0c 06 00
+       00 00            mov     DWORD PTR _level$[ebp], 6
+$LN10@deflateIni:
+  00068        53               push    ebx
+
+; 259  : #endif
+; 260  : 
+; 261  :     if (windowBits < 0) { /* suppress zlib wrapper */
+
+  00069        8b 5d 14         mov     ebx, DWORD PTR _windowBits$[ebp]
+  0006c        3b d9            cmp     ebx, ecx
+  0006e        7d 07            jge     SHORT $LN9@deflateIni
+
+; 262  :         wrap = 0;
+
+  00070        89 4d fc         mov     DWORD PTR _wrap$[ebp], ecx
+
+; 263  :         windowBits = -windowBits;
+
+  00073        f7 db            neg     ebx
+  00075        eb 0f            jmp     SHORT $LN21@deflateIni
+$LN9@deflateIni:
+
+; 264  :     }
+; 265  : #ifdef GZIP
+; 266  :     else if (windowBits > 15) {
+
+  00077        83 fb 0f         cmp     ebx, 15                        ; 0000000fH
+  0007a        7e 0d            jle     SHORT $LN7@deflateIni
+
+; 267  :         wrap = 2;       /* write gzip wrapper instead */
+
+  0007c        c7 45 fc 02 00
+       00 00            mov     DWORD PTR _wrap$[ebp], 2
+
+; 268  :         windowBits -= 16;
+
+  00083        83 eb 10         sub     ebx, 16                        ; 00000010H
+$LN21@deflateIni:
+  00086        89 5d 14         mov     DWORD PTR _windowBits$[ebp], ebx
+$LN7@deflateIni:
+
+; 269  :     }
+; 270  : #endif
+; 271  :     if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method != Z_DEFLATED ||
+; 272  :         windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||
+; 273  :         strategy < 0 || strategy > Z_FIXED) {
+
+  00089        8b 45 18         mov     eax, DWORD PTR _memLevel$[ebp]
+  0008c        48               dec     eax
+  0008d        83 f8 08         cmp     eax, 8
+  00090        0f 87 8b 01 00
+       00               ja      $LN5@deflateIni
+  00096        83 7d 10 08      cmp     DWORD PTR _method$[ebp], 8
+  0009a        0f 85 81 01 00
+       00               jne     $LN5@deflateIni
+  000a0        8d 4b f8         lea     ecx, DWORD PTR [ebx-8]
+  000a3        83 f9 07         cmp     ecx, 7
+  000a6        0f 87 75 01 00
+       00               ja      $LN5@deflateIni
+  000ac        b8 09 00 00 00   mov     eax, 9
+  000b1        39 45 0c         cmp     DWORD PTR _level$[ebp], eax
+  000b4        0f 87 67 01 00
+       00               ja      $LN5@deflateIni
+  000ba        83 7d 1c 04      cmp     DWORD PTR _strategy$[ebp], 4
+  000be        0f 87 5d 01 00
+       00               ja      $LN5@deflateIni
+
+; 275  :     }
+; 276  :     if (windowBits == 8) windowBits = 9;  /* until 256-byte window bug fixed */
+
+  000c4        83 fb 08         cmp     ebx, 8
+  000c7        75 05            jne     SHORT $LN4@deflateIni
+  000c9        89 45 14         mov     DWORD PTR _windowBits$[ebp], eax
+  000cc        8b d8            mov     ebx, eax
+$LN4@deflateIni:
+
+; 277  :     s = (deflate_state *) ZALLOC(strm, 1, sizeof(deflate_state));
+
+  000ce        8b 57 28         mov     edx, DWORD PTR [edi+40]
+  000d1        8b 47 20         mov     eax, DWORD PTR [edi+32]
+  000d4        56               push    esi
+  000d5        68 c4 16 00 00   push    5828                   ; 000016c4H
+  000da        6a 01            push    1
+  000dc        52               push    edx
+  000dd        ff d0            call    eax
+  000df        8b f0            mov     esi, eax
+  000e1        83 c4 0c         add     esp, 12                        ; 0000000cH
+
+; 278  :     if (s == Z_NULL) return Z_MEM_ERROR;
+
+  000e4        85 f6            test    esi, esi
+  000e6        0f 84 27 01 00
+       00               je      $LN22@deflateIni
+
+; 279  :     strm->state = (struct internal_state FAR *)s;
+; 280  :     s->strm = strm;
+; 281  : 
+; 282  :     s->wrap = wrap;
+
+  000ec        8b 4d fc         mov     ecx, DWORD PTR _wrap$[ebp]
+  000ef        89 77 1c         mov     DWORD PTR [edi+28], esi
+  000f2        89 4e 18         mov     DWORD PTR [esi+24], ecx
+
+; 283  :     s->gzhead = Z_NULL;
+; 284  :     s->w_bits = windowBits;
+; 285  :     s->w_size = 1 << s->w_bits;
+
+  000f5        8b 4d 14         mov     ecx, DWORD PTR _windowBits$[ebp]
+  000f8        89 5e 30         mov     DWORD PTR [esi+48], ebx
+  000fb        bb 01 00 00 00   mov     ebx, 1
+  00100        d3 e3            shl     ebx, cl
+
+; 286  :     s->w_mask = s->w_size - 1;
+; 287  : 
+; 288  :     s->hash_bits = memLevel + 7;
+
+  00102        8b 4d 18         mov     ecx, DWORD PTR _memLevel$[ebp]
+  00105        83 c1 07         add     ecx, 7
+
+; 289  :     s->hash_size = 1 << s->hash_bits;
+
+  00108        b8 01 00 00 00   mov     eax, 1
+  0010d        d3 e0            shl     eax, cl
+  0010f        89 4e 50         mov     DWORD PTR [esi+80], ecx
+  00112        8d 53 ff         lea     edx, DWORD PTR [ebx-1]
+  00115        89 56 34         mov     DWORD PTR [esi+52], edx
+  00118        89 46 4c         mov     DWORD PTR [esi+76], eax
+
+; 290  :     s->hash_mask = s->hash_size - 1;
+
+  0011b        48               dec     eax
+  0011c        89 46 54         mov     DWORD PTR [esi+84], eax
+
+; 291  :     s->hash_shift =  ((s->hash_bits+MIN_MATCH-1)/MIN_MATCH);
+
+  0011f        83 c1 02         add     ecx, 2
+  00122        b8 ab aa aa aa   mov     eax, -1431655765       ; aaaaaaabH
+  00127        f7 e1            mul     ecx
+  00129        d1 ea            shr     edx, 1
+  0012b        89 3e            mov     DWORD PTR [esi], edi
+  0012d        c7 46 1c 00 00
+       00 00            mov     DWORD PTR [esi+28], 0
+  00134        89 5e 2c         mov     DWORD PTR [esi+44], ebx
+  00137        89 56 58         mov     DWORD PTR [esi+88], edx
+
+; 292  : 
+; 293  :     s->window = (Bytef *) ZALLOC(strm, s->w_size, 2*sizeof(Byte));
+
+  0013a        8b 47 28         mov     eax, DWORD PTR [edi+40]
+  0013d        8b 4f 20         mov     ecx, DWORD PTR [edi+32]
+  00140        6a 02            push    2
+  00142        53               push    ebx
+  00143        50               push    eax
+  00144        ff d1            call    ecx
+
+; 294  :     s->prev   = (Posf *)  ZALLOC(strm, s->w_size, sizeof(Pos));
+
+  00146        8b 56 2c         mov     edx, DWORD PTR [esi+44]
+  00149        89 46 38         mov     DWORD PTR [esi+56], eax
+  0014c        8b 47 28         mov     eax, DWORD PTR [edi+40]
+  0014f        8b 4f 20         mov     ecx, DWORD PTR [edi+32]
+  00152        6a 02            push    2
+  00154        52               push    edx
+  00155        50               push    eax
+  00156        ff d1            call    ecx
+
+; 295  :     s->head   = (Posf *)  ZALLOC(strm, s->hash_size, sizeof(Pos));
+
+  00158        8b 56 4c         mov     edx, DWORD PTR [esi+76]
+  0015b        89 46 40         mov     DWORD PTR [esi+64], eax
+  0015e        8b 47 28         mov     eax, DWORD PTR [edi+40]
+  00161        8b 4f 20         mov     ecx, DWORD PTR [edi+32]
+  00164        6a 02            push    2
+  00166        52               push    edx
+  00167        50               push    eax
+  00168        ff d1            call    ecx
+
+; 296  : 
+; 297  :     s->high_water = 0;      /* nothing written to s->window yet */
+; 298  : 
+; 299  :     s->lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */
+
+  0016a        8b 4d 18         mov     ecx, DWORD PTR _memLevel$[ebp]
+  0016d        89 46 44         mov     DWORD PTR [esi+68], eax
+  00170        83 c1 06         add     ecx, 6
+  00173        b8 01 00 00 00   mov     eax, 1
+  00178        d3 e0            shl     eax, cl
+  0017a        c7 86 c0 16 00
+       00 00 00 00 00   mov     DWORD PTR [esi+5824], 0
+
+; 300  : 
+; 301  :     overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);
+
+  00184        6a 04            push    4
+  00186        89 86 9c 16 00
+       00               mov     DWORD PTR [esi+5788], eax
+  0018c        8b 57 28         mov     edx, DWORD PTR [edi+40]
+  0018f        50               push    eax
+  00190        8b 47 20         mov     eax, DWORD PTR [edi+32]
+  00193        52               push    edx
+  00194        ff d0            call    eax
+
+; 302  :     s->pending_buf = (uchf *) overlay;
+; 303  :     s->pending_buf_size = (ulg)s->lit_bufsize * (sizeof(ush)+2L);
+
+  00196        8b 8e 9c 16 00
+       00               mov     ecx, DWORD PTR [esi+5788]
+  0019c        83 c4 30         add     esp, 48                        ; 00000030H
+
+; 304  : 
+; 305  :     if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL ||
+; 306  :         s->pending_buf == Z_NULL) {
+
+  0019f        83 7e 38 00      cmp     DWORD PTR [esi+56], 0
+  001a3        8d 14 8d 00 00
+       00 00            lea     edx, DWORD PTR [ecx*4]
+  001aa        89 46 08         mov     DWORD PTR [esi+8], eax
+  001ad        89 56 0c         mov     DWORD PTR [esi+12], edx
+  001b0        74 4d            je      SHORT $LN1@deflateIni
+  001b2        83 7e 40 00      cmp     DWORD PTR [esi+64], 0
+  001b6        74 47            je      SHORT $LN1@deflateIni
+  001b8        83 7e 44 00      cmp     DWORD PTR [esi+68], 0
+  001bc        74 41            je      SHORT $LN1@deflateIni
+  001be        85 c0            test    eax, eax
+  001c0        74 3d            je      SHORT $LN1@deflateIni
+
+; 311  :     }
+; 312  :     s->d_buf = overlay + s->lit_bufsize/sizeof(ush);
+
+  001c2        8b d1            mov     edx, ecx
+  001c4        d1 ea            shr     edx, 1
+  001c6        8d 14 50         lea     edx, DWORD PTR [eax+edx*2]
+
+; 313  :     s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;
+
+  001c9        8d 04 48         lea     eax, DWORD PTR [eax+ecx*2]
+  001cc        03 c1            add     eax, ecx
+
+; 314  : 
+; 315  :     s->level = level;
+
+  001ce        8b 4d 0c         mov     ecx, DWORD PTR _level$[ebp]
+  001d1        89 96 a4 16 00
+       00               mov     DWORD PTR [esi+5796], edx
+
+; 316  :     s->strategy = strategy;
+
+  001d7        8b 55 1c         mov     edx, DWORD PTR _strategy$[ebp]
+
+; 317  :     s->method = (Byte)method;
+; 318  : 
+; 319  :     return deflateReset(strm);
+
+  001da        57               push    edi
+  001db        89 86 98 16 00
+       00               mov     DWORD PTR [esi+5784], eax
+  001e1        89 8e 84 00 00
+       00               mov     DWORD PTR [esi+132], ecx
+  001e7        89 96 88 00 00
+       00               mov     DWORD PTR [esi+136], edx
+  001ed        c6 46 24 08      mov     BYTE PTR [esi+36], 8
+  001f1        e8 00 00 00 00   call    _deflateReset@4
+  001f6        5e               pop     esi
+  001f7        5b               pop     ebx
+  001f8        5f               pop     edi
+
+; 320  : }
+
+  001f9        8b e5            mov     esp, ebp
+  001fb        5d               pop     ebp
+  001fc        c2 20 00         ret     32                     ; 00000020H
+$LN1@deflateIni:
+
+; 307  :         s->status = FINISH_STATE;
+
+  001ff        c7 46 04 9a 02
+       00 00            mov     DWORD PTR [esi+4], 666 ; 0000029aH
+
+; 308  :         strm->msg = ERR_MSG(Z_MEM_ERROR);
+; 309  :         deflateEnd (strm);
+
+  00206        57               push    edi
+  00207        c7 47 18 00 00
+       00 00            mov     DWORD PTR [edi+24], OFFSET ??_C@_0BE@OGGJBMCE@insufficient?5memory?$AA@
+  0020e        e8 00 00 00 00   call    _deflateEnd@4
+$LN22@deflateIni:
+
+; 310  :         return Z_MEM_ERROR;
+
+  00213        5e               pop     esi
+  00214        5b               pop     ebx
+  00215        b8 fc ff ff ff   mov     eax, -4                        ; fffffffcH
+  0021a        5f               pop     edi
+
+; 320  : }
+
+  0021b        8b e5            mov     esp, ebp
+  0021d        5d               pop     ebp
+  0021e        c2 20 00         ret     32                     ; 00000020H
+$LN5@deflateIni:
+  00221        5b               pop     ebx
+
+; 274  :         return Z_STREAM_ERROR;
+
+  00222        b8 fe ff ff ff   mov     eax, -2                        ; fffffffeH
+  00227        5f               pop     edi
+
+; 320  : }
+
+  00228        8b e5            mov     esp, ebp
+  0022a        5d               pop     ebp
+  0022b        c2 20 00         ret     32                     ; 00000020H
+$LN14@deflateIni:
+
+; 235  :         return Z_VERSION_ERROR;
+
+  0022e        b8 fa ff ff ff   mov     eax, -6                        ; fffffffaH
+
+; 320  : }
+
+  00233        8b e5            mov     esp, ebp
+  00235        5d               pop     ebp
+  00236        c2 20 00         ret     32                     ; 00000020H
+_deflateInit2_@32 ENDP
+_TEXT  ENDS
+PUBLIC _deflateInit_@16
+; Function compile flags: /Ogtp
+;      COMDAT _deflateInit_@16
+_TEXT  SEGMENT
+_strm$ = 8                                             ; size = 4
+_level$ = 12                                           ; size = 4
+_version$ = 16                                         ; size = 4
+_stream_size$ = 20                                     ; size = 4
+_deflateInit_@16 PROC                                  ; COMDAT
+
+; 206  : {
+
+  00000        55               push    ebp
+  00001        8b ec            mov     ebp, esp
+
+; 207  :     return deflateInit2_(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL,
+; 208  :                          Z_DEFAULT_STRATEGY, version, stream_size);
+
+  00003        8b 45 14         mov     eax, DWORD PTR _stream_size$[ebp]
+  00006        8b 4d 10         mov     ecx, DWORD PTR _version$[ebp]
+  00009        8b 55 0c         mov     edx, DWORD PTR _level$[ebp]
+  0000c        50               push    eax
+  0000d        8b 45 08         mov     eax, DWORD PTR _strm$[ebp]
+  00010        51               push    ecx
+  00011        6a 00            push    0
+  00013        6a 08            push    8
+  00015        6a 0f            push    15                     ; 0000000fH
+  00017        6a 08            push    8
+  00019        52               push    edx
+  0001a        50               push    eax
+  0001b        e8 00 00 00 00   call    _deflateInit2_@32
+
+; 209  :     /* To do: ignore strm->next_in if we use it as window */
+; 210  : }
+
+  00020        5d               pop     ebp
+  00021        c2 10 00         ret     16                     ; 00000010H
+_deflateInit_@16 ENDP
+; Function compile flags: /Ogtp
+;      COMDAT _deflate_huff
+_TEXT  SEGMENT
+_flush$ = 8                                            ; size = 4
+_deflate_huff PROC                                     ; COMDAT
+; _s$ = esi
+
+; 1937 : {
+
+  00000        55               push    ebp
+  00001        8b ec            mov     ebp, esp
+  00003        57               push    edi
+$LL11@deflate_hu:
+
+; 1938 :     int bflush;             /* set if current block must be flushed */
+; 1939 : 
+; 1940 :     for (;;) {
+; 1941 :         /* Make sure that we have a literal to write. */
+; 1942 :         if (s->lookahead == 0) {
+
+  00004        83 7e 74 00      cmp     DWORD PTR [esi+116], 0
+  00008        75 11            jne     SHORT $LN8@deflate_hu
+
+; 1943 :             fill_window(s);
+
+  0000a        8b fe            mov     edi, esi
+  0000c        e8 00 00 00 00   call    _fill_window
+
+; 1944 :             if (s->lookahead == 0) {
+
+  00011        83 7e 74 00      cmp     DWORD PTR [esi+116], 0
+  00015        0f 84 a4 00 00
+       00               je      $LN22@deflate_hu
+$LN8@deflate_hu:
+
+; 1947 :                 break;      /* flush the current block */
+; 1948 :             }
+; 1949 :         }
+; 1950 : 
+; 1951 :         /* Output a literal byte */
+; 1952 :         s->match_length = 0;
+; 1953 :         Tracevv((stderr,"%c", s->window[s->strstart]));
+; 1954 :         _tr_tally_lit (s, s->window[s->strstart], bflush);
+
+  0001b        8b 46 6c         mov     eax, DWORD PTR [esi+108]
+  0001e        8b 4e 38         mov     ecx, DWORD PTR [esi+56]
+  00021        8b 96 a0 16 00
+       00               mov     edx, DWORD PTR [esi+5792]
+  00027        c7 46 60 00 00
+       00 00            mov     DWORD PTR [esi+96], 0
+  0002e        8a 04 08         mov     al, BYTE PTR [eax+ecx]
+  00031        8b 8e a4 16 00
+       00               mov     ecx, DWORD PTR [esi+5796]
+  00037        33 ff            xor     edi, edi
+  00039        66 89 3c 51      mov     WORD PTR [ecx+edx*2], di
+  0003d        8b 8e a0 16 00
+       00               mov     ecx, DWORD PTR [esi+5792]
+  00043        8b 96 98 16 00
+       00               mov     edx, DWORD PTR [esi+5784]
+  00049        88 04 0a         mov     BYTE PTR [edx+ecx], al
+  0004c        0f b6 d0         movzx   edx, al
+  0004f        b9 01 00 00 00   mov     ecx, 1
+  00054        01 8e a0 16 00
+       00               add     DWORD PTR [esi+5792], ecx
+  0005a        66 01 8c 96 94
+       00 00 00         add     WORD PTR [esi+edx*4+148], cx
+
+; 1955 :         s->lookahead--;
+; 1956 :         s->strstart++;
+
+  00062        01 4e 6c         add     DWORD PTR [esi+108], ecx
+  00065        ff 4e 74         dec     DWORD PTR [esi+116]
+  00068        8d 84 96 94 00
+       00 00            lea     eax, DWORD PTR [esi+edx*4+148]
+  0006f        8b 96 9c 16 00
+       00               mov     edx, DWORD PTR [esi+5788]
+  00075        8b 46 6c         mov     eax, DWORD PTR [esi+108]
+  00078        2b d1            sub     edx, ecx
+  0007a        39 96 a0 16 00
+       00               cmp     DWORD PTR [esi+5792], edx
+
+; 1957 :         if (bflush) FLUSH_BLOCK(s, 0);
+
+  00080        75 82            jne     SHORT $LL11@deflate_hu
+  00082        8b 56 5c         mov     edx, DWORD PTR [esi+92]
+  00085        85 d2            test    edx, edx
+  00087        78 07            js      SHORT $LN14@deflate_hu
+  00089        8b 4e 38         mov     ecx, DWORD PTR [esi+56]
+  0008c        03 ca            add     ecx, edx
+  0008e        eb 02            jmp     SHORT $LN15@deflate_hu
+$LN14@deflate_hu:
+  00090        33 c9            xor     ecx, ecx
+$LN15@deflate_hu:
+  00092        6a 00            push    0
+  00094        51               push    ecx
+  00095        2b c2            sub     eax, edx
+  00097        8b ce            mov     ecx, esi
+  00099        e8 00 00 00 00   call    __tr_flush_block
+  0009e        8b 46 6c         mov     eax, DWORD PTR [esi+108]
+  000a1        8b 3e            mov     edi, DWORD PTR [esi]
+  000a3        83 c4 08         add     esp, 8
+  000a6        89 46 5c         mov     DWORD PTR [esi+92], eax
+  000a9        e8 00 00 00 00   call    _flush_pending
+  000ae        8b 0e            mov     ecx, DWORD PTR [esi]
+  000b0        83 79 10 00      cmp     DWORD PTR [ecx+16], 0
+  000b4        0f 85 4a ff ff
+       ff               jne     $LL11@deflate_hu
+$LN23@deflate_hu:
+  000ba        33 c0            xor     eax, eax
+  000bc        5f               pop     edi
+
+; 1967 : }
+
+  000bd        5d               pop     ebp
+  000be        c3               ret     0
+$LN22@deflate_hu:
+
+; 1945 :                 if (flush == Z_NO_FLUSH)
+
+  000bf        8b 45 08         mov     eax, DWORD PTR _flush$[ebp]
+  000c2        85 c0            test    eax, eax
+
+; 1946 :                     return need_more;
+
+  000c4        74 f4            je      SHORT $LN23@deflate_hu
+
+; 1958 :     }
+; 1959 :     s->insert = 0;
+
+  000c6        c7 86 b4 16 00
+       00 00 00 00 00   mov     DWORD PTR [esi+5812], 0
+
+; 1960 :     if (flush == Z_FINISH) {
+
+  000d0        83 f8 04         cmp     eax, 4
+  000d3        75 3f            jne     SHORT $LN4@deflate_hu
+
+; 1961 :         FLUSH_BLOCK(s, 1);
+
+  000d5        8b 56 5c         mov     edx, DWORD PTR [esi+92]
+  000d8        85 d2            test    edx, edx
+  000da        78 07            js      SHORT $LN16@deflate_hu
+  000dc        8b 4e 38         mov     ecx, DWORD PTR [esi+56]
+  000df        03 ca            add     ecx, edx
+  000e1        eb 02            jmp     SHORT $LN17@deflate_hu
+$LN16@deflate_hu:
+  000e3        33 c9            xor     ecx, ecx
+$LN17@deflate_hu:
+  000e5        8b 46 6c         mov     eax, DWORD PTR [esi+108]
+  000e8        6a 01            push    1
+  000ea        51               push    ecx
+  000eb        2b c2            sub     eax, edx
+  000ed        8b ce            mov     ecx, esi
+  000ef        e8 00 00 00 00   call    __tr_flush_block
+  000f4        8b 56 6c         mov     edx, DWORD PTR [esi+108]
+  000f7        8b 3e            mov     edi, DWORD PTR [esi]
+  000f9        83 c4 08         add     esp, 8
+  000fc        89 56 5c         mov     DWORD PTR [esi+92], edx
+  000ff        e8 00 00 00 00   call    _flush_pending
+  00104        8b 06            mov     eax, DWORD PTR [esi]
+  00106        33 c9            xor     ecx, ecx
+  00108        39 48 10         cmp     DWORD PTR [eax+16], ecx
+  0010b        5f               pop     edi
+  0010c        0f 95 c1         setne   cl
+  0010f        8d 41 02         lea     eax, DWORD PTR [ecx+2]
+
+; 1967 : }
+
+  00112        5d               pop     ebp
+  00113        c3               ret     0
+$LN4@deflate_hu:
+
+; 1962 :         return finish_done;
+; 1963 :     }
+; 1964 :     if (s->last_lit)
+
+  00114        83 be a0 16 00
+       00 00            cmp     DWORD PTR [esi+5792], 0
+  0011b        74 3b            je      SHORT $LN1@deflate_hu
+
+; 1965 :         FLUSH_BLOCK(s, 0);
+
+  0011d        8b 56 5c         mov     edx, DWORD PTR [esi+92]
+  00120        85 d2            test    edx, edx
+  00122        78 07            js      SHORT $LN18@deflate_hu
+  00124        8b 4e 38         mov     ecx, DWORD PTR [esi+56]
+  00127        03 ca            add     ecx, edx
+  00129        eb 02            jmp     SHORT $LN19@deflate_hu
+$LN18@deflate_hu:
+  0012b        33 c9            xor     ecx, ecx
+$LN19@deflate_hu:
+  0012d        8b 46 6c         mov     eax, DWORD PTR [esi+108]
+  00130        6a 00            push    0
+  00132        51               push    ecx
+  00133        2b c2            sub     eax, edx
+  00135        8b ce            mov     ecx, esi
+  00137        e8 00 00 00 00   call    __tr_flush_block
+  0013c        8b 56 6c         mov     edx, DWORD PTR [esi+108]
+  0013f        8b 3e            mov     edi, DWORD PTR [esi]
+  00141        83 c4 08         add     esp, 8
+  00144        89 56 5c         mov     DWORD PTR [esi+92], edx
+  00147        e8 00 00 00 00   call    _flush_pending
+  0014c        8b 06            mov     eax, DWORD PTR [esi]
+  0014e        83 78 10 00      cmp     DWORD PTR [eax+16], 0
+  00152        0f 84 62 ff ff
+       ff               je      $LN23@deflate_hu
+$LN1@deflate_hu:
+
+; 1966 :     return block_done;
+
+  00158        b8 01 00 00 00   mov     eax, 1
+  0015d        5f               pop     edi
+
+; 1967 : }
+
+  0015e        5d               pop     ebp
+  0015f        c3               ret     0
+_deflate_huff ENDP
+; Function compile flags: /Ogtp
+_TEXT  ENDS
+;      COMDAT _deflate_rle
+_TEXT  SEGMENT
+_flush$ = 8                                            ; size = 4
+_deflate_rle PROC                                      ; COMDAT
+; _s$ = esi
+
+; 1864 : {
+
+  00000        55               push    ebp
+  00001        8b ec            mov     ebp, esp
+  00003        53               push    ebx
+  00004        57               push    edi
+  00005        bb 01 00 00 00   mov     ebx, 1
+  0000a        8d 9b 00 00 00
+       00               npad    6
+$LL20@deflate_rl:
+
+; 1865 :     int bflush;             /* set if current block must be flushed */
+; 1866 :     uInt prev;              /* byte at distance one to match */
+; 1867 :     Bytef *scan, *strend;   /* scan goes up to strend for length of run */
+; 1868 : 
+; 1869 :     for (;;) {
+; 1870 :         /* Make sure that we always have enough lookahead, except
+; 1871 :          * at the end of the input file. We need MAX_MATCH bytes
+; 1872 :          * for the longest run, plus one for the unrolled loop.
+; 1873 :          */
+; 1874 :         if (s->lookahead <= MAX_MATCH) {
+
+  00010        8b 7e 74         mov     edi, DWORD PTR [esi+116]
+  00013        81 ff 02 01 00
+       00               cmp     edi, 258               ; 00000102H
+  00019        77 24            ja      SHORT $LN41@deflate_rl
+
+; 1875 :             fill_window(s);
+
+  0001b        8b fe            mov     edi, esi
+  0001d        e8 00 00 00 00   call    _fill_window
+
+; 1876 :             if (s->lookahead <= MAX_MATCH && flush == Z_NO_FLUSH) {
+
+  00022        8b 7e 74         mov     edi, DWORD PTR [esi+116]
+  00025        81 ff 02 01 00
+       00               cmp     edi, 258               ; 00000102H
+  0002b        77 0a            ja      SHORT $LN40@deflate_rl
+  0002d        83 7d 08 00      cmp     DWORD PTR _flush$[ebp], 0
+  00031        0f 84 cb 01 00
+       00               je      $LN36@deflate_rl
+$LN40@deflate_rl:
+
+; 1877 :                 return need_more;
+; 1878 :             }
+; 1879 :             if (s->lookahead == 0) break; /* flush the current block */
+
+  00037        85 ff            test    edi, edi
+  00039        0f 84 c9 01 00
+       00               je      $LN35@deflate_rl
+$LN41@deflate_rl:
+
+; 1880 :         }
+; 1881 : 
+; 1882 :         /* See how many times the previous byte repeats */
+; 1883 :         s->match_length = 0;
+
+  0003f        c7 46 60 00 00
+       00 00            mov     DWORD PTR [esi+96], 0
+
+; 1884 :         if (s->lookahead >= MIN_MATCH && s->strstart > 0) {
+
+  00046        83 ff 03         cmp     edi, 3
+  00049        0f 82 a2 00 00
+       00               jb      $LN9@deflate_rl
+  0004f        8b 46 6c         mov     eax, DWORD PTR [esi+108]
+  00052        85 c0            test    eax, eax
+  00054        0f 84 97 00 00
+       00               je      $LN9@deflate_rl
+
+; 1885 :             scan = s->window + s->strstart - 1;
+
+  0005a        8b 56 38         mov     edx, DWORD PTR [esi+56]
+  0005d        03 d0            add     edx, eax
+
+; 1886 :             prev = *scan;
+
+  0005f        0f b6 4a ff      movzx   ecx, BYTE PTR [edx-1]
+  00063        8d 42 ff         lea     eax, DWORD PTR [edx-1]
+
+; 1887 :             if (prev == *++scan && prev == *++scan && prev == *++scan) {
+
+  00066        03 c3            add     eax, ebx
+  00068        0f b6 18         movzx   ebx, BYTE PTR [eax]
+  0006b        3b cb            cmp     ecx, ebx
+  0006d        75 7d            jne     SHORT $LN38@deflate_rl
+  0006f        0f b6 58 01      movzx   ebx, BYTE PTR [eax+1]
+  00073        3b cb            cmp     ecx, ebx
+  00075        75 75            jne     SHORT $LN38@deflate_rl
+  00077        0f b6 58 02      movzx   ebx, BYTE PTR [eax+2]
+  0007b        83 c0 02         add     eax, 2
+  0007e        3b cb            cmp     ecx, ebx
+  00080        75 6a            jne     SHORT $LN38@deflate_rl
+
+; 1888 :                 strend = s->window + s->strstart + MAX_MATCH;
+
+  00082        81 c2 02 01 00
+       00               add     edx, 258               ; 00000102H
+$LL13@deflate_rl:
+
+; 1889 :                 do {
+; 1890 :                 } while (prev == *++scan && prev == *++scan &&
+; 1891 :                          prev == *++scan && prev == *++scan &&
+; 1892 :                          prev == *++scan && prev == *++scan &&
+; 1893 :                          prev == *++scan && prev == *++scan &&
+; 1894 :                          scan < strend);
+
+  00088        0f b6 58 01      movzx   ebx, BYTE PTR [eax+1]
+  0008c        40               inc     eax
+  0008d        3b cb            cmp     ecx, ebx
+  0008f        75 43            jne     SHORT $LN10@deflate_rl
+  00091        0f b6 58 01      movzx   ebx, BYTE PTR [eax+1]
+  00095        40               inc     eax
+  00096        3b cb            cmp     ecx, ebx
+  00098        75 3a            jne     SHORT $LN10@deflate_rl
+  0009a        0f b6 58 01      movzx   ebx, BYTE PTR [eax+1]
+  0009e        40               inc     eax
+  0009f        3b cb            cmp     ecx, ebx
+  000a1        75 31            jne     SHORT $LN10@deflate_rl
+  000a3        0f b6 58 01      movzx   ebx, BYTE PTR [eax+1]
+  000a7        40               inc     eax
+  000a8        3b cb            cmp     ecx, ebx
+  000aa        75 28            jne     SHORT $LN10@deflate_rl
+  000ac        0f b6 58 01      movzx   ebx, BYTE PTR [eax+1]
+  000b0        40               inc     eax
+  000b1        3b cb            cmp     ecx, ebx
+  000b3        75 1f            jne     SHORT $LN10@deflate_rl
+  000b5        0f b6 58 01      movzx   ebx, BYTE PTR [eax+1]
+  000b9        40               inc     eax
+  000ba        3b cb            cmp     ecx, ebx
+  000bc        75 16            jne     SHORT $LN10@deflate_rl
+  000be        0f b6 58 01      movzx   ebx, BYTE PTR [eax+1]
+  000c2        40               inc     eax
+  000c3        3b cb            cmp     ecx, ebx
+  000c5        75 0d            jne     SHORT $LN10@deflate_rl
+  000c7        0f b6 58 01      movzx   ebx, BYTE PTR [eax+1]
+  000cb        40               inc     eax
+  000cc        3b cb            cmp     ecx, ebx
+  000ce        75 04            jne     SHORT $LN10@deflate_rl
+  000d0        3b c2            cmp     eax, edx
+  000d2        72 b4            jb      SHORT $LL13@deflate_rl
+$LN10@deflate_rl:
+
+; 1895 :                 s->match_length = MAX_MATCH - (int)(strend - scan);
+
+  000d4        2b c2            sub     eax, edx
+  000d6        05 02 01 00 00   add     eax, 258               ; 00000102H
+  000db        89 46 60         mov     DWORD PTR [esi+96], eax
+
+; 1896 :                 if (s->match_length > s->lookahead)
+; 1897 :                     s->match_length = s->lookahead;
+
+  000de        bb 01 00 00 00   mov     ebx, 1
+  000e3        3b c7            cmp     eax, edi
+  000e5        76 0a            jbe     SHORT $LN9@deflate_rl
+  000e7        89 7e 60         mov     DWORD PTR [esi+96], edi
+  000ea        eb 05            jmp     SHORT $LN9@deflate_rl
+$LN38@deflate_rl:
+  000ec        bb 01 00 00 00   mov     ebx, 1
+$LN9@deflate_rl:
+
+; 1898 :             }
+; 1899 :             Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan");
+; 1900 :         }
+; 1901 : 
+; 1902 :         /* Emit match if have run of MIN_MATCH or longer, else emit literal */
+; 1903 :         if (s->match_length >= MIN_MATCH) {
+
+  000f1        83 7e 60 03      cmp     DWORD PTR [esi+96], 3
+
+; 1904 :             check_match(s, s->strstart, s->strstart - 1, s->match_length);
+; 1905 : 
+; 1906 :             _tr_tally_dist(s, 1, s->match_length - MIN_MATCH, bflush);
+
+  000f5        8b 96 a0 16 00
+       00               mov     edx, DWORD PTR [esi+5792]
+  000fb        72 6d            jb      SHORT $LN8@deflate_rl
+  000fd        8a 46 60         mov     al, BYTE PTR [esi+96]
+  00100        8b 8e a4 16 00
+       00               mov     ecx, DWORD PTR [esi+5796]
+  00106        2c 03            sub     al, 3
+  00108        8b fb            mov     edi, ebx
+  0010a        66 89 3c 51      mov     WORD PTR [ecx+edx*2], di
+  0010e        8b 8e a0 16 00
+       00               mov     ecx, DWORD PTR [esi+5792]
+  00114        8b 96 98 16 00
+       00               mov     edx, DWORD PTR [esi+5784]
+  0011a        88 04 0a         mov     BYTE PTR [edx+ecx], al
+  0011d        01 9e a0 16 00
+       00               add     DWORD PTR [esi+5792], ebx
+  00123        0f b6 d0         movzx   edx, al
+  00126        0f b6 82 00 00
+       00 00            movzx   eax, BYTE PTR __length_code[edx]
+  0012d        66 01 9c 86 98
+       04 00 00         add     WORD PTR [esi+eax*4+1176], bx
+  00135        66 01 9e 88 09
+       00 00            add     WORD PTR [esi+2440], bx
+  0013c        8b 8e 9c 16 00
+       00               mov     ecx, DWORD PTR [esi+5788]
+  00142        8d 84 86 98 04
+       00 00            lea     eax, DWORD PTR [esi+eax*4+1176]
+
+; 1907 : 
+; 1908 :             s->lookahead -= s->match_length;
+
+  00149        8b 46 60         mov     eax, DWORD PTR [esi+96]
+  0014c        2b cb            sub     ecx, ebx
+  0014e        33 d2            xor     edx, edx
+  00150        39 8e a0 16 00
+       00               cmp     DWORD PTR [esi+5792], ecx
+
+; 1909 :             s->strstart += s->match_length;
+; 1910 :             s->match_length = 0;
+
+  00156        c7 46 60 00 00
+       00 00            mov     DWORD PTR [esi+96], 0
+  0015d        0f 94 c2         sete    dl
+  00160        29 46 74         sub     DWORD PTR [esi+116], eax
+  00163        01 46 6c         add     DWORD PTR [esi+108], eax
+  00166        8b ca            mov     ecx, edx
+
+; 1911 :         } else {
+
+  00168        eb 55            jmp     SHORT $LN7@deflate_rl
+$LN8@deflate_rl:
+
+; 1912 :             /* No match, output a literal byte */
+; 1913 :             Tracevv((stderr,"%c", s->window[s->strstart]));
+; 1914 :             _tr_tally_lit (s, s->window[s->strstart], bflush);
+
+  0016a        8b 4e 6c         mov     ecx, DWORD PTR [esi+108]
+  0016d        8b 46 38         mov     eax, DWORD PTR [esi+56]
+  00170        8a 04 08         mov     al, BYTE PTR [eax+ecx]
+  00173        8b 8e a4 16 00
+       00               mov     ecx, DWORD PTR [esi+5796]
+  00179        33 ff            xor     edi, edi
+  0017b        66 89 3c 51      mov     WORD PTR [ecx+edx*2], di
+  0017f        8b 8e a0 16 00
+       00               mov     ecx, DWORD PTR [esi+5792]
+  00185        8b 96 98 16 00
+       00               mov     edx, DWORD PTR [esi+5784]
+  0018b        88 04 0a         mov     BYTE PTR [edx+ecx], al
+  0018e        01 9e a0 16 00
+       00               add     DWORD PTR [esi+5792], ebx
+  00194        0f b6 d0         movzx   edx, al
+  00197        66 01 9c 96 94
+       00 00 00         add     WORD PTR [esi+edx*4+148], bx
+  0019f        8d 84 96 94 00
+       00 00            lea     eax, DWORD PTR [esi+edx*4+148]
+  001a6        8b 86 9c 16 00
+       00               mov     eax, DWORD PTR [esi+5788]
+  001ac        2b c3            sub     eax, ebx
+  001ae        33 c9            xor     ecx, ecx
+  001b0        39 86 a0 16 00
+       00               cmp     DWORD PTR [esi+5792], eax
+  001b6        0f 94 c1         sete    cl
+
+; 1915 :             s->lookahead--;
+
+  001b9        ff 4e 74         dec     DWORD PTR [esi+116]
+
+; 1916 :             s->strstart++;
+
+  001bc        01 5e 6c         add     DWORD PTR [esi+108], ebx
+$LN7@deflate_rl:
+
+; 1917 :         }
+; 1918 :         if (bflush) FLUSH_BLOCK(s, 0);
+
+  001bf        85 c9            test    ecx, ecx
+  001c1        0f 84 49 fe ff
+       ff               je      $LL20@deflate_rl
+  001c7        8b 56 5c         mov     edx, DWORD PTR [esi+92]
+  001ca        85 d2            test    edx, edx
+  001cc        78 07            js      SHORT $LN25@deflate_rl
+  001ce        8b 4e 38         mov     ecx, DWORD PTR [esi+56]
+  001d1        03 ca            add     ecx, edx
+  001d3        eb 02            jmp     SHORT $LN26@deflate_rl
+$LN25@deflate_rl:
+  001d5        33 c9            xor     ecx, ecx
+$LN26@deflate_rl:
+  001d7        8b 46 6c         mov     eax, DWORD PTR [esi+108]
+  001da        6a 00            push    0
+  001dc        51               push    ecx
+  001dd        2b c2            sub     eax, edx
+  001df        8b ce            mov     ecx, esi
+  001e1        e8 00 00 00 00   call    __tr_flush_block
+  001e6        8b 4e 6c         mov     ecx, DWORD PTR [esi+108]
+  001e9        8b 3e            mov     edi, DWORD PTR [esi]
+  001eb        83 c4 08         add     esp, 8
+  001ee        89 4e 5c         mov     DWORD PTR [esi+92], ecx
+  001f1        e8 00 00 00 00   call    _flush_pending
+  001f6        8b 16            mov     edx, DWORD PTR [esi]
+  001f8        83 7a 10 00      cmp     DWORD PTR [edx+16], 0
+  001fc        0f 85 0e fe ff
+       ff               jne     $LL20@deflate_rl
+$LN36@deflate_rl:
+  00202        5f               pop     edi
+  00203        33 c0            xor     eax, eax
+  00205        5b               pop     ebx
+
+; 1928 : }
+
+  00206        5d               pop     ebp
+  00207        c3               ret     0
+$LN35@deflate_rl:
+
+; 1919 :     }
+; 1920 :     s->insert = 0;
+; 1921 :     if (flush == Z_FINISH) {
+
+  00208        83 7d 08 04      cmp     DWORD PTR _flush$[ebp], 4
+  0020c        c7 86 b4 16 00
+       00 00 00 00 00   mov     DWORD PTR [esi+5812], 0
+  00216        75 3f            jne     SHORT $LN4@deflate_rl
+
+; 1922 :         FLUSH_BLOCK(s, 1);
+
+  00218        8b 56 5c         mov     edx, DWORD PTR [esi+92]
+  0021b        85 d2            test    edx, edx
+  0021d        78 07            js      SHORT $LN27@deflate_rl
+  0021f        8b 4e 38         mov     ecx, DWORD PTR [esi+56]
+  00222        03 ca            add     ecx, edx
+  00224        eb 02            jmp     SHORT $LN28@deflate_rl
+$LN27@deflate_rl:
+  00226        33 c9            xor     ecx, ecx
+$LN28@deflate_rl:
+  00228        8b 46 6c         mov     eax, DWORD PTR [esi+108]
+  0022b        53               push    ebx
+  0022c        51               push    ecx
+  0022d        2b c2            sub     eax, edx
+  0022f        8b ce            mov     ecx, esi
+  00231        e8 00 00 00 00   call    __tr_flush_block
+  00236        8b 46 6c         mov     eax, DWORD PTR [esi+108]
+  00239        8b 3e            mov     edi, DWORD PTR [esi]
+  0023b        83 c4 08         add     esp, 8
+  0023e        89 46 5c         mov     DWORD PTR [esi+92], eax
+  00241        e8 00 00 00 00   call    _flush_pending
+  00246        8b 0e            mov     ecx, DWORD PTR [esi]
+  00248        33 c0            xor     eax, eax
+  0024a        39 41 10         cmp     DWORD PTR [ecx+16], eax
+  0024d        5f               pop     edi
+  0024e        0f 95 c0         setne   al
+  00251        5b               pop     ebx
+  00252        83 c0 02         add     eax, 2
+
+; 1928 : }
+
+  00255        5d               pop     ebp
+  00256        c3               ret     0
+$LN4@deflate_rl:
+
+; 1923 :         return finish_done;
+; 1924 :     }
+; 1925 :     if (s->last_lit)
+
+  00257        83 be a0 16 00
+       00 00            cmp     DWORD PTR [esi+5792], 0
+  0025e        74 3b            je      SHORT $LN1@deflate_rl
+
+; 1926 :         FLUSH_BLOCK(s, 0);
+
+  00260        8b 56 5c         mov     edx, DWORD PTR [esi+92]
+  00263        85 d2            test    edx, edx
+  00265        78 07            js      SHORT $LN29@deflate_rl
+  00267        8b 4e 38         mov     ecx, DWORD PTR [esi+56]
+  0026a        03 ca            add     ecx, edx
+  0026c        eb 02            jmp     SHORT $LN30@deflate_rl
+$LN29@deflate_rl:
+  0026e        33 c9            xor     ecx, ecx
+$LN30@deflate_rl:
+  00270        8b 46 6c         mov     eax, DWORD PTR [esi+108]
+  00273        6a 00            push    0
+  00275        51               push    ecx
+  00276        2b c2            sub     eax, edx
+  00278        8b ce            mov     ecx, esi
+  0027a        e8 00 00 00 00   call    __tr_flush_block
+  0027f        8b 56 6c         mov     edx, DWORD PTR [esi+108]
+  00282        8b 3e            mov     edi, DWORD PTR [esi]
+  00284        83 c4 08         add     esp, 8
+  00287        89 56 5c         mov     DWORD PTR [esi+92], edx
+  0028a        e8 00 00 00 00   call    _flush_pending
+  0028f        8b 06            mov     eax, DWORD PTR [esi]
+  00291        83 78 10 00      cmp     DWORD PTR [eax+16], 0
+  00295        0f 84 67 ff ff
+       ff               je      $LN36@deflate_rl
+$LN1@deflate_rl:
+  0029b        5f               pop     edi
+
+; 1927 :     return block_done;
+
+  0029c        8b c3            mov     eax, ebx
+  0029e        5b               pop     ebx
+
+; 1928 : }
+
+  0029f        5d               pop     ebp
+  002a0        c3               ret     0
+_deflate_rle ENDP
+; Function compile flags: /Ogtp
+_TEXT  ENDS
+;      COMDAT _deflate_slow
+_TEXT  SEGMENT
+_bflush$ = 8                                           ; size = 4
+_s$ = 8                                                        ; size = 4
+_flush$ = 12                                           ; size = 4
+_deflate_slow PROC                                     ; COMDAT
+
+; 1733 : {
+
+  00000        55               push    ebp
+  00001        8b ec            mov     ebp, esp
+  00003        53               push    ebx
+  00004        56               push    esi
+  00005        8b 75 08         mov     esi, DWORD PTR _s$[ebp]
+  00008        57               push    edi
+  00009        bb 01 00 00 00   mov     ebx, 1
+  0000e        8b ff            npad    2
+$LL26@deflate_sl:
+
+; 1734 :     IPos hash_head;          /* head of hash chain */
+; 1735 :     int bflush;              /* set if current block must be flushed */
+; 1736 : 
+; 1737 :     /* Process the input block. */
+; 1738 :     for (;;) {
+; 1739 :         /* Make sure that we always have enough lookahead, except
+; 1740 :          * at the end of the input file. We need MAX_MATCH bytes
+; 1741 :          * for the next match, plus MIN_MATCH bytes to insert the
+; 1742 :          * string following the next match.
+; 1743 :          */
+; 1744 :         if (s->lookahead < MIN_LOOKAHEAD) {
+
+  00010        8b 4e 74         mov     ecx, DWORD PTR [esi+116]
+  00013        81 f9 06 01 00
+       00               cmp     ecx, 262               ; 00000106H
+  00019        73 24            jae     SHORT $LN50@deflate_sl
+
+; 1745 :             fill_window(s);
+
+  0001b        8b fe            mov     edi, esi
+  0001d        e8 00 00 00 00   call    _fill_window
+
+; 1746 :             if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) {
+
+  00022        8b 4e 74         mov     ecx, DWORD PTR [esi+116]
+  00025        81 f9 06 01 00
+       00               cmp     ecx, 262               ; 00000106H
+  0002b        73 0a            jae     SHORT $LN49@deflate_sl
+  0002d        83 7d 0c 00      cmp     DWORD PTR _flush$[ebp], 0
+  00031        0f 84 2c 02 00
+       00               je      $LN47@deflate_sl
+$LN49@deflate_sl:
+
+; 1747 :                 return need_more;
+; 1748 :             }
+; 1749 :             if (s->lookahead == 0) break; /* flush the current block */
+
+  00037        85 c9            test    ecx, ecx
+  00039        0f 84 d0 02 00
+       00               je      $LN45@deflate_sl
+$LN50@deflate_sl:
+
+; 1750 :         }
+; 1751 : 
+; 1752 :         /* Insert the string window[strstart .. strstart+2] in the
+; 1753 :          * dictionary, and set hash_head to the head of the hash chain:
+; 1754 :          */
+; 1755 :         hash_head = NIL;
+
+  0003f        33 c0            xor     eax, eax
+
+; 1756 :         if (s->lookahead >= MIN_MATCH) {
+
+  00041        83 f9 03         cmp     ecx, 3
+  00044        72 49            jb      SHORT $LN21@deflate_sl
+
+; 1757 :             INSERT_STRING(s, s->strstart, hash_head);
+
+  00046        8b 46 48         mov     eax, DWORD PTR [esi+72]
+  00049        8b 4e 58         mov     ecx, DWORD PTR [esi+88]
+  0004c        8b 56 6c         mov     edx, DWORD PTR [esi+108]
+  0004f        8b 7e 34         mov     edi, DWORD PTR [esi+52]
+  00052        d3 e0            shl     eax, cl
+  00054        8b 4e 38         mov     ecx, DWORD PTR [esi+56]
+  00057        0f b6 4c 11 02   movzx   ecx, BYTE PTR [ecx+edx+2]
+  0005c        33 c1            xor     eax, ecx
+  0005e        23 46 54         and     eax, DWORD PTR [esi+84]
+  00061        8b 4e 44         mov     ecx, DWORD PTR [esi+68]
+  00064        23 fa            and     edi, edx
+  00066        8b 56 40         mov     edx, DWORD PTR [esi+64]
+  00069        89 46 48         mov     DWORD PTR [esi+72], eax
+  0006c        66 8b 04 41      mov     ax, WORD PTR [ecx+eax*2]
+  00070        66 89 04 7a      mov     WORD PTR [edx+edi*2], ax
+  00074        8b 4e 6c         mov     ecx, DWORD PTR [esi+108]
+  00077        23 4e 34         and     ecx, DWORD PTR [esi+52]
+  0007a        8b 56 40         mov     edx, DWORD PTR [esi+64]
+  0007d        0f b7 04 4a      movzx   eax, WORD PTR [edx+ecx*2]
+  00081        8b 4e 48         mov     ecx, DWORD PTR [esi+72]
+  00084        8b 56 44         mov     edx, DWORD PTR [esi+68]
+  00087        66 8b 7e 6c      mov     di, WORD PTR [esi+108]
+  0008b        66 89 3c 4a      mov     WORD PTR [edx+ecx*2], di
+$LN21@deflate_sl:
+
+; 1758 :         }
+; 1759 : 
+; 1760 :         /* Find the longest match, discarding those <= prev_length.
+; 1761 :          */
+; 1762 :         s->prev_length = s->match_length, s->prev_match = s->match_start;
+
+  0008f        8b 4e 60         mov     ecx, DWORD PTR [esi+96]
+  00092        8b 56 70         mov     edx, DWORD PTR [esi+112]
+
+; 1763 :         s->match_length = MIN_MATCH-1;
+
+  00095        bf 02 00 00 00   mov     edi, 2
+  0009a        89 4e 78         mov     DWORD PTR [esi+120], ecx
+  0009d        89 56 64         mov     DWORD PTR [esi+100], edx
+  000a0        89 7e 60         mov     DWORD PTR [esi+96], edi
+
+; 1764 : 
+; 1765 :         if (hash_head != NIL && s->prev_length < s->max_lazy_match &&
+; 1766 :             s->strstart - hash_head <= MAX_DIST(s)) {
+
+  000a3        85 c0            test    eax, eax
+  000a5        74 4a            je      SHORT $LN52@deflate_sl
+  000a7        3b 8e 80 00 00
+       00               cmp     ecx, DWORD PTR [esi+128]
+  000ad        73 42            jae     SHORT $LN52@deflate_sl
+  000af        8b 56 6c         mov     edx, DWORD PTR [esi+108]
+  000b2        8b 4e 2c         mov     ecx, DWORD PTR [esi+44]
+  000b5        2b d0            sub     edx, eax
+  000b7        81 e9 06 01 00
+       00               sub     ecx, 262               ; 00000106H
+  000bd        3b d1            cmp     edx, ecx
+  000bf        77 30            ja      SHORT $LN52@deflate_sl
+
+; 1767 :             /* To simplify the code, we prevent matches with the string
+; 1768 :              * of window index 0 (in particular we have to avoid a match
+; 1769 :              * of the string with itself at the start of the input file).
+; 1770 :              */
+; 1771 :             s->match_length = longest_match (s, hash_head);
+
+  000c1        50               push    eax
+  000c2        56               push    esi
+  000c3        e8 00 00 00 00   call    _longest_match
+  000c8        83 c4 08         add     esp, 8
+  000cb        89 46 60         mov     DWORD PTR [esi+96], eax
+
+; 1772 :             /* longest_match() sets match_start */
+; 1773 : 
+; 1774 :             if (s->match_length <= 5 && (s->strategy == Z_FILTERED
+; 1775 : #if TOO_FAR <= 32767
+; 1776 :                 || (s->match_length == MIN_MATCH &&
+; 1777 :                     s->strstart - s->match_start > TOO_FAR)
+; 1778 : #endif
+; 1779 :                 )) {
+
+  000ce        83 f8 05         cmp     eax, 5
+  000d1        77 1e            ja      SHORT $LN52@deflate_sl
+  000d3        39 9e 88 00 00
+       00               cmp     DWORD PTR [esi+136], ebx
+  000d9        74 13            je      SHORT $LN18@deflate_sl
+  000db        83 f8 03         cmp     eax, 3
+  000de        75 11            jne     SHORT $LN52@deflate_sl
+  000e0        8b 56 6c         mov     edx, DWORD PTR [esi+108]
+  000e3        2b 56 70         sub     edx, DWORD PTR [esi+112]
+  000e6        81 fa 00 10 00
+       00               cmp     edx, 4096              ; 00001000H
+  000ec        76 03            jbe     SHORT $LN52@deflate_sl
+$LN18@deflate_sl:
+
+; 1780 : 
+; 1781 :                 /* If prev_match is also MIN_MATCH, match_start is garbage
+; 1782 :                  * but we will ignore the current match anyway.
+; 1783 :                  */
+; 1784 :                 s->match_length = MIN_MATCH-1;
+
+  000ee        89 7e 60         mov     DWORD PTR [esi+96], edi
+$LN52@deflate_sl:
+
+; 1785 :             }
+; 1786 :         }
+; 1787 :         /* If there was a match at the previous step and the current
+; 1788 :          * match is not better, output the previous match:
+; 1789 :          */
+; 1790 :         if (s->prev_length >= MIN_MATCH && s->match_length <= s->prev_length) {
+
+  000f1        8b 46 78         mov     eax, DWORD PTR [esi+120]
+  000f4        83 f8 03         cmp     eax, 3
+  000f7        0f 82 6d 01 00
+       00               jb      $LN17@deflate_sl
+  000fd        39 46 60         cmp     DWORD PTR [esi+96], eax
+  00100        0f 87 64 01 00
+       00               ja      $LN17@deflate_sl
+
+; 1791 :             uInt max_insert = s->strstart + s->lookahead - MIN_MATCH;
+; 1792 :             /* Do not insert strings in hash table beyond this. */
+; 1793 : 
+; 1794 :             check_match(s, s->strstart-1, s->prev_match, s->prev_length);
+; 1795 : 
+; 1796 :             _tr_tally_dist(s, s->strstart -1 - s->prev_match,
+; 1797 :                            s->prev_length - MIN_MATCH, bflush);
+
+  00106        66 8b 56 6c      mov     dx, WORD PTR [esi+108]
+  0010a        66 2b 56 64      sub     dx, WORD PTR [esi+100]
+  0010e        8b 46 6c         mov     eax, DWORD PTR [esi+108]
+  00111        8b 4e 74         mov     ecx, DWORD PTR [esi+116]
+  00114        66 2b d3         sub     dx, bx
+  00117        8b 9e a4 16 00
+       00               mov     ebx, DWORD PTR [esi+5796]
+  0011d        8d 7c 08 fd      lea     edi, DWORD PTR [eax+ecx-3]
+  00121        8a 46 78         mov     al, BYTE PTR [esi+120]
+  00124        0f b7 ca         movzx   ecx, dx
+  00127        8b 96 a0 16 00
+       00               mov     edx, DWORD PTR [esi+5792]
+  0012d        66 89 0c 53      mov     WORD PTR [ebx+edx*2], cx
+  00131        8b 9e a0 16 00
+       00               mov     ebx, DWORD PTR [esi+5792]
+  00137        8b 96 98 16 00
+       00               mov     edx, DWORD PTR [esi+5784]
+  0013d        2c 03            sub     al, 3
+  0013f        88 04 1a         mov     BYTE PTR [edx+ebx], al
+  00142        0f b6 c0         movzx   eax, al
+  00145        bb 01 00 00 00   mov     ebx, 1
+  0014a        01 9e a0 16 00
+       00               add     DWORD PTR [esi+5792], ebx
+  00150        0f b6 90 00 00
+       00 00            movzx   edx, BYTE PTR __length_code[eax]
+  00157        66 01 9c 96 98
+       04 00 00         add     WORD PTR [esi+edx*4+1176], bx
+  0015f        8d 84 96 98 04
+       00 00            lea     eax, DWORD PTR [esi+edx*4+1176]
+  00166        81 c1 ff ff 00
+       00               add     ecx, 65535             ; 0000ffffH
+  0016c        b8 00 01 00 00   mov     eax, 256               ; 00000100H
+  00171        66 3b c8         cmp     cx, ax
+  00174        73 0c            jae     SHORT $LN29@deflate_sl
+  00176        0f b7 c9         movzx   ecx, cx
+  00179        0f b6 81 00 00
+       00 00            movzx   eax, BYTE PTR __dist_code[ecx]
+  00180        eb 0d            jmp     SHORT $LN30@deflate_sl
+$LN29@deflate_sl:
+  00182        0f b7 d1         movzx   edx, cx
+  00185        c1 ea 07         shr     edx, 7
+  00188        0f b6 82 00 01
+       00 00            movzx   eax, BYTE PTR __dist_code[edx+256]
+$LN30@deflate_sl:
+  0018f        66 01 9c 86 88
+       09 00 00         add     WORD PTR [esi+eax*4+2440], bx
+  00197        8b 86 9c 16 00
+       00               mov     eax, DWORD PTR [esi+5788]
+  0019d        2b c3            sub     eax, ebx
+  0019f        33 c9            xor     ecx, ecx
+  001a1        39 86 a0 16 00
+       00               cmp     DWORD PTR [esi+5792], eax
+
+; 1798 : 
+; 1799 :             /* Insert in hash table all strings up to the end of the match.
+; 1800 :              * strstart-1 and strstart are already inserted. If there is not
+; 1801 :              * enough lookahead, the last two strings are not inserted in
+; 1802 :              * the hash table.
+; 1803 :              */
+; 1804 :             s->lookahead -= s->prev_length-1;
+
+  001a7        8b 46 78         mov     eax, DWORD PTR [esi+120]
+  001aa        0f 94 c1         sete    cl
+  001ad        8b d3            mov     edx, ebx
+  001af        2b d0            sub     edx, eax
+  001b1        01 56 74         add     DWORD PTR [esi+116], edx
+
+; 1805 :             s->prev_length -= 2;
+
+  001b4        83 c0 fe         add     eax, -2                        ; fffffffeH
+  001b7        89 46 78         mov     DWORD PTR [esi+120], eax
+  001ba        89 4d 08         mov     DWORD PTR _bflush$[ebp], ecx
+  001bd        8d 49 00         npad    3
+$LL16@deflate_sl:
+
+; 1806 :             do {
+; 1807 :                 if (++s->strstart <= max_insert) {
+
+  001c0        01 5e 6c         add     DWORD PTR [esi+108], ebx
+  001c3        8b 56 6c         mov     edx, DWORD PTR [esi+108]
+  001c6        3b d7            cmp     edx, edi
+  001c8        77 3e            ja      SHORT $LN15@deflate_sl
+
+; 1808 :                     INSERT_STRING(s, s->strstart, hash_head);
+
+  001ca        8b 46 48         mov     eax, DWORD PTR [esi+72]
+  001cd        8b 4e 58         mov     ecx, DWORD PTR [esi+88]
+  001d0        8b 5e 34         mov     ebx, DWORD PTR [esi+52]
+  001d3        d3 e0            shl     eax, cl
+  001d5        8b 4e 38         mov     ecx, DWORD PTR [esi+56]
+  001d8        0f b6 4c 11 02   movzx   ecx, BYTE PTR [ecx+edx+2]
+  001dd        33 c1            xor     eax, ecx
+  001df        23 46 54         and     eax, DWORD PTR [esi+84]
+  001e2        8b 4e 44         mov     ecx, DWORD PTR [esi+68]
+  001e5        89 46 48         mov     DWORD PTR [esi+72], eax
+  001e8        0f b7 04 41      movzx   eax, WORD PTR [ecx+eax*2]
+  001ec        23 da            and     ebx, edx
+  001ee        8b 56 40         mov     edx, DWORD PTR [esi+64]
+  001f1        66 89 04 5a      mov     WORD PTR [edx+ebx*2], ax
+  001f5        0f b7 46 6c      movzx   eax, WORD PTR [esi+108]
+  001f9        8b 4e 48         mov     ecx, DWORD PTR [esi+72]
+  001fc        8b 56 44         mov     edx, DWORD PTR [esi+68]
+  001ff        66 89 04 4a      mov     WORD PTR [edx+ecx*2], ax
+  00203        bb 01 00 00 00   mov     ebx, 1
+$LN15@deflate_sl:
+
+; 1809 :                 }
+; 1810 :             } while (--s->prev_length != 0);
+
+  00208        ff 4e 78         dec     DWORD PTR [esi+120]
+  0020b        75 b3            jne     SHORT $LL16@deflate_sl
+
+; 1811 :             s->match_available = 0;
+; 1812 :             s->match_length = MIN_MATCH-1;
+; 1813 :             s->strstart++;
+
+  0020d        01 5e 6c         add     DWORD PTR [esi+108], ebx
+
+; 1814 : 
+; 1815 :             if (bflush) FLUSH_BLOCK(s, 0);
+
+  00210        83 7d 08 00      cmp     DWORD PTR _bflush$[ebp], 0
+  00214        8b 46 6c         mov     eax, DWORD PTR [esi+108]
+  00217        c7 46 68 00 00
+       00 00            mov     DWORD PTR [esi+104], 0
+  0021e        c7 46 60 02 00
+       00 00            mov     DWORD PTR [esi+96], 2
+  00225        0f 84 e5 fd ff
+       ff               je      $LL26@deflate_sl
+  0022b        8b 56 5c         mov     edx, DWORD PTR [esi+92]
+  0022e        85 d2            test    edx, edx
+  00230        78 07            js      SHORT $LN31@deflate_sl
+  00232        8b 4e 38         mov     ecx, DWORD PTR [esi+56]
+  00235        03 ca            add     ecx, edx
+  00237        eb 02            jmp     SHORT $LN32@deflate_sl
+$LN31@deflate_sl:
+  00239        33 c9            xor     ecx, ecx
+$LN32@deflate_sl:
+  0023b        6a 00            push    0
+  0023d        51               push    ecx
+  0023e        2b c2            sub     eax, edx
+  00240        8b ce            mov     ecx, esi
+  00242        e8 00 00 00 00   call    __tr_flush_block
+  00247        8b 4e 6c         mov     ecx, DWORD PTR [esi+108]
+  0024a        8b 3e            mov     edi, DWORD PTR [esi]
+  0024c        83 c4 08         add     esp, 8
+  0024f        89 4e 5c         mov     DWORD PTR [esi+92], ecx
+  00252        e8 00 00 00 00   call    _flush_pending
+$LN53@deflate_sl:
+  00257        8b 16            mov     edx, DWORD PTR [esi]
+  00259        83 7a 10 00      cmp     DWORD PTR [edx+16], 0
+  0025d        0f 85 ad fd ff
+       ff               jne     $LL26@deflate_sl
+$LN47@deflate_sl:
+  00263        5f               pop     edi
+  00264        5e               pop     esi
+
+; 1829 :             if (s->strm->avail_out == 0) return need_more;
+
+  00265        33 c0            xor     eax, eax
+  00267        5b               pop     ebx
+
+; 1853 : }
+
+  00268        5d               pop     ebp
+  00269        c3               ret     0
+$LN17@deflate_sl:
+
+; 1816 : 
+; 1817 :         } else if (s->match_available) {
+
+  0026a        83 7e 68 00      cmp     DWORD PTR [esi+104], 0
+  0026e        0f 84 8d 00 00
+       00               je      $LN9@deflate_sl
+
+; 1818 :             /* If there was no match at the previous position, output a
+; 1819 :              * single literal. If there was a match but the current match
+; 1820 :              * is longer, truncate the previous match to a single literal.
+; 1821 :              */
+; 1822 :             Tracevv((stderr,"%c", s->window[s->strstart-1]));
+; 1823 :             _tr_tally_lit(s, s->window[s->strstart-1], bflush);
+
+  00274        8b 46 6c         mov     eax, DWORD PTR [esi+108]
+  00277        8b 4e 38         mov     ecx, DWORD PTR [esi+56]
+  0027a        8a 44 08 ff      mov     al, BYTE PTR [eax+ecx-1]
+  0027e        8b 96 a0 16 00
+       00               mov     edx, DWORD PTR [esi+5792]
+  00284        8b 8e a4 16 00
+       00               mov     ecx, DWORD PTR [esi+5796]
+  0028a        33 ff            xor     edi, edi
+  0028c        66 89 3c 51      mov     WORD PTR [ecx+edx*2], di
+  00290        8b 96 98 16 00
+       00               mov     edx, DWORD PTR [esi+5784]
+  00296        8b 8e a0 16 00
+       00               mov     ecx, DWORD PTR [esi+5792]
+  0029c        88 04 0a         mov     BYTE PTR [edx+ecx], al
+  0029f        01 9e a0 16 00
+       00               add     DWORD PTR [esi+5792], ebx
+  002a5        0f b6 d0         movzx   edx, al
+  002a8        66 01 9c 96 94
+       00 00 00         add     WORD PTR [esi+edx*4+148], bx
+  002b0        8d 84 96 94 00
+       00 00            lea     eax, DWORD PTR [esi+edx*4+148]
+  002b7        8b 86 9c 16 00
+       00               mov     eax, DWORD PTR [esi+5788]
+  002bd        2b c3            sub     eax, ebx
+  002bf        39 86 a0 16 00
+       00               cmp     DWORD PTR [esi+5792], eax
+
+; 1824 :             if (bflush) {
+
+  002c5        75 2f            jne     SHORT $LN8@deflate_sl
+
+; 1825 :                 FLUSH_BLOCK_ONLY(s, 0);
+
+  002c7        8b 56 5c         mov     edx, DWORD PTR [esi+92]
+  002ca        85 d2            test    edx, edx
+  002cc        78 07            js      SHORT $LN33@deflate_sl
+  002ce        8b 4e 38         mov     ecx, DWORD PTR [esi+56]
+  002d1        03 ca            add     ecx, edx
+  002d3        eb 02            jmp     SHORT $LN34@deflate_sl
+$LN33@deflate_sl:
+  002d5        33 c9            xor     ecx, ecx
+$LN34@deflate_sl:
+  002d7        8b 46 6c         mov     eax, DWORD PTR [esi+108]
+  002da        6a 00            push    0
+  002dc        51               push    ecx
+  002dd        2b c2            sub     eax, edx
+  002df        8b ce            mov     ecx, esi
+  002e1        e8 00 00 00 00   call    __tr_flush_block
+  002e6        8b 4e 6c         mov     ecx, DWORD PTR [esi+108]
+  002e9        8b 3e            mov     edi, DWORD PTR [esi]
+  002eb        83 c4 08         add     esp, 8
+  002ee        89 4e 5c         mov     DWORD PTR [esi+92], ecx
+  002f1        e8 00 00 00 00   call    _flush_pending
+$LN8@deflate_sl:
+
+; 1826 :             }
+; 1827 :             s->strstart++;
+
+  002f6        01 5e 6c         add     DWORD PTR [esi+108], ebx
+
+; 1828 :             s->lookahead--;
+
+  002f9        ff 4e 74         dec     DWORD PTR [esi+116]
+
+; 1830 :         } else {
+
+  002fc        e9 56 ff ff ff   jmp     $LN53@deflate_sl
+$LN9@deflate_sl:
+
+; 1831 :             /* There is no previous match to compare with, wait for
+; 1832 :              * the next step to decide.
+; 1833 :              */
+; 1834 :             s->match_available = 1;
+; 1835 :             s->strstart++;
+
+  00301        01 5e 6c         add     DWORD PTR [esi+108], ebx
+
+; 1836 :             s->lookahead--;
+
+  00304        ff 4e 74         dec     DWORD PTR [esi+116]
+  00307        89 5e 68         mov     DWORD PTR [esi+104], ebx
+
+; 1837 :         }
+; 1838 :     }
+
+  0030a        e9 01 fd ff ff   jmp     $LL26@deflate_sl
+$LN45@deflate_sl:
+
+; 1839 :     Assert (flush != Z_NO_FLUSH, "no flush?");
+; 1840 :     if (s->match_available) {
+
+  0030f        83 7e 68 00      cmp     DWORD PTR [esi+104], 0
+  00313        74 46            je      SHORT $LN5@deflate_sl
+
+; 1841 :         Tracevv((stderr,"%c", s->window[s->strstart-1]));
+; 1842 :         _tr_tally_lit(s, s->window[s->strstart-1], bflush);
+
+  00315        8b 46 6c         mov     eax, DWORD PTR [esi+108]
+  00318        8b 4e 38         mov     ecx, DWORD PTR [esi+56]
+  0031b        8a 44 08 ff      mov     al, BYTE PTR [eax+ecx-1]
+  0031f        8b 96 a0 16 00
+       00               mov     edx, DWORD PTR [esi+5792]
+  00325        8b 8e a4 16 00
+       00               mov     ecx, DWORD PTR [esi+5796]
+  0032b        33 ff            xor     edi, edi
+  0032d        66 89 3c 51      mov     WORD PTR [ecx+edx*2], di
+  00331        8b 96 98 16 00
+       00               mov     edx, DWORD PTR [esi+5784]
+  00337        8b 8e a0 16 00
+       00               mov     ecx, DWORD PTR [esi+5792]
+  0033d        88 04 0a         mov     BYTE PTR [edx+ecx], al
+  00340        01 9e a0 16 00
+       00               add     DWORD PTR [esi+5792], ebx
+  00346        0f b6 d0         movzx   edx, al
+  00349        66 01 9c 96 94
+       00 00 00         add     WORD PTR [esi+edx*4+148], bx
+  00351        8d 84 96 94 00
+       00 00            lea     eax, DWORD PTR [esi+edx*4+148]
+
+; 1843 :         s->match_available = 0;
+
+  00358        89 7e 68         mov     DWORD PTR [esi+104], edi
+$LN5@deflate_sl:
+
+; 1844 :     }
+; 1845 :     s->insert = s->strstart < MIN_MATCH-1 ? s->strstart : MIN_MATCH-1;
+
+  0035b        8b 46 6c         mov     eax, DWORD PTR [esi+108]
+  0035e        8b c8            mov     ecx, eax
+  00360        83 f8 02         cmp     eax, 2
+  00363        72 05            jb      SHORT $LN36@deflate_sl
+  00365        b9 02 00 00 00   mov     ecx, 2
+$LN36@deflate_sl:
+
+; 1846 :     if (flush == Z_FINISH) {
+
+  0036a        83 7d 0c 04      cmp     DWORD PTR _flush$[ebp], 4
+  0036e        89 8e b4 16 00
+       00               mov     DWORD PTR [esi+5812], ecx
+  00374        75 3d            jne     SHORT $LN4@deflate_sl
+
+; 1847 :         FLUSH_BLOCK(s, 1);
+
+  00376        8b 56 5c         mov     edx, DWORD PTR [esi+92]
+  00379        85 d2            test    edx, edx
+  0037b        78 07            js      SHORT $LN37@deflate_sl
+  0037d        8b 4e 38         mov     ecx, DWORD PTR [esi+56]
+  00380        03 ca            add     ecx, edx
+  00382        eb 02            jmp     SHORT $LN38@deflate_sl
+$LN37@deflate_sl:
+  00384        33 c9            xor     ecx, ecx
+$LN38@deflate_sl:
+  00386        53               push    ebx
+  00387        51               push    ecx
+  00388        2b c2            sub     eax, edx
+  0038a        8b ce            mov     ecx, esi
+  0038c        e8 00 00 00 00   call    __tr_flush_block
+  00391        8b 46 6c         mov     eax, DWORD PTR [esi+108]
+  00394        8b 3e            mov     edi, DWORD PTR [esi]
+  00396        83 c4 08         add     esp, 8
+  00399        89 46 5c         mov     DWORD PTR [esi+92], eax
+  0039c        e8 00 00 00 00   call    _flush_pending
+  003a1        8b 0e            mov     ecx, DWORD PTR [esi]
+  003a3        33 c0            xor     eax, eax
+  003a5        39 41 10         cmp     DWORD PTR [ecx+16], eax
+  003a8        5f               pop     edi
+  003a9        0f 95 c0         setne   al
+  003ac        5e               pop     esi
+  003ad        5b               pop     ebx
+  003ae        83 c0 02         add     eax, 2
+
+; 1853 : }
+
+  003b1        5d               pop     ebp
+  003b2        c3               ret     0
+$LN4@deflate_sl:
+
+; 1848 :         return finish_done;
+; 1849 :     }
+; 1850 :     if (s->last_lit)
+
+  003b3        83 be a0 16 00
+       00 00            cmp     DWORD PTR [esi+5792], 0
+  003ba        74 38            je      SHORT $LN1@deflate_sl
+
+; 1851 :         FLUSH_BLOCK(s, 0);
+
+  003bc        8b 56 5c         mov     edx, DWORD PTR [esi+92]
+  003bf        85 d2            test    edx, edx
+  003c1        78 07            js      SHORT $LN39@deflate_sl
+  003c3        8b 4e 38         mov     ecx, DWORD PTR [esi+56]
+  003c6        03 ca            add     ecx, edx
+  003c8        eb 02            jmp     SHORT $LN40@deflate_sl
+$LN39@deflate_sl:
+  003ca        33 c9            xor     ecx, ecx
+$LN40@deflate_sl:
+  003cc        6a 00            push    0
+  003ce        51               push    ecx
+  003cf        2b c2            sub     eax, edx
+  003d1        8b ce            mov     ecx, esi
+  003d3        e8 00 00 00 00   call    __tr_flush_block
+  003d8        8b 56 6c         mov     edx, DWORD PTR [esi+108]
+  003db        8b 3e            mov     edi, DWORD PTR [esi]
+  003dd        83 c4 08         add     esp, 8
+  003e0        89 56 5c         mov     DWORD PTR [esi+92], edx
+  003e3        e8 00 00 00 00   call    _flush_pending
+  003e8        8b 06            mov     eax, DWORD PTR [esi]
+  003ea        83 78 10 00      cmp     DWORD PTR [eax+16], 0
+  003ee        0f 84 6f fe ff
+       ff               je      $LN47@deflate_sl
+$LN1@deflate_sl:
+  003f4        5f               pop     edi
+  003f5        5e               pop     esi
+
+; 1852 :     return block_done;
+
+  003f6        8b c3            mov     eax, ebx
+  003f8        5b               pop     ebx
+
+; 1853 : }
+
+  003f9        5d               pop     ebp
+  003fa        c3               ret     0
+_deflate_slow ENDP
+; Function compile flags: /Ogtp
+_TEXT  ENDS
+;      COMDAT _deflate_fast
+_TEXT  SEGMENT
+_s$ = 8                                                        ; size = 4
+_flush$ = 12                                           ; size = 4
+_deflate_fast PROC                                     ; COMDAT
+
+; 1631 : {
+
+  00000        55               push    ebp
+  00001        8b ec            mov     ebp, esp
+  00003        53               push    ebx
+  00004        56               push    esi
+  00005        8b 75 08         mov     esi, DWORD PTR _s$[ebp]
+  00008        57               push    edi
+  00009        bb 01 00 00 00   mov     ebx, 1
+  0000e        8b ff            npad    2
+$LL20@deflate_fa:
+
+; 1632 :     IPos hash_head;       /* head of the hash chain */
+; 1633 :     int bflush;           /* set if current block must be flushed */
+; 1634 : 
+; 1635 :     for (;;) {
+; 1636 :         /* Make sure that we always have enough lookahead, except
+; 1637 :          * at the end of the input file. We need MAX_MATCH bytes
+; 1638 :          * for the next match, plus MIN_MATCH bytes to insert the
+; 1639 :          * string following the next match.
+; 1640 :          */
+; 1641 :         if (s->lookahead < MIN_LOOKAHEAD) {
+
+  00010        8b 46 74         mov     eax, DWORD PTR [esi+116]
+  00013        3d 06 01 00 00   cmp     eax, 262               ; 00000106H
+  00018        73 23            jae     SHORT $LN16@deflate_fa
+
+; 1642 :             fill_window(s);
+
+  0001a        8b fe            mov     edi, esi
+  0001c        e8 00 00 00 00   call    _fill_window
+
+; 1643 :             if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) {
+
+  00021        8b 46 74         mov     eax, DWORD PTR [esi+116]
+  00024        3d 06 01 00 00   cmp     eax, 262               ; 00000106H
+  00029        73 0a            jae     SHORT $LN40@deflate_fa
+  0002b        83 7d 0c 00      cmp     DWORD PTR _flush$[ebp], 0
+  0002f        0f 84 48 02 00
+       00               je      $LN38@deflate_fa
+$LN40@deflate_fa:
+
+; 1644 :                 return need_more;
+; 1645 :             }
+; 1646 :             if (s->lookahead == 0) break; /* flush the current block */
+
+  00035        85 c0            test    eax, eax
+  00037        0f 84 47 02 00
+       00               je      $LN37@deflate_fa
+$LN16@deflate_fa:
+
+; 1647 :         }
+; 1648 : 
+; 1649 :         /* Insert the string window[strstart .. strstart+2] in the
+; 1650 :          * dictionary, and set hash_head to the head of the hash chain:
+; 1651 :          */
+; 1652 :         hash_head = NIL;
+; 1653 :         if (s->lookahead >= MIN_MATCH) {
+
+  0003d        83 f8 03         cmp     eax, 3
+  00040        72 6c            jb      SHORT $LN41@deflate_fa
+
+; 1654 :             INSERT_STRING(s, s->strstart, hash_head);
+
+  00042        8b 46 48         mov     eax, DWORD PTR [esi+72]
+  00045        8b 4e 58         mov     ecx, DWORD PTR [esi+88]
+  00048        8b 56 6c         mov     edx, DWORD PTR [esi+108]
+  0004b        8b 7e 34         mov     edi, DWORD PTR [esi+52]
+  0004e        d3 e0            shl     eax, cl
+  00050        8b 4e 38         mov     ecx, DWORD PTR [esi+56]
+  00053        0f b6 4c 11 02   movzx   ecx, BYTE PTR [ecx+edx+2]
+  00058        33 c1            xor     eax, ecx
+  0005a        23 46 54         and     eax, DWORD PTR [esi+84]
+  0005d        8b 4e 44         mov     ecx, DWORD PTR [esi+68]
+  00060        23 fa            and     edi, edx
+  00062        8b 56 40         mov     edx, DWORD PTR [esi+64]
+  00065        89 46 48         mov     DWORD PTR [esi+72], eax
+  00068        66 8b 04 41      mov     ax, WORD PTR [ecx+eax*2]
+  0006c        66 89 04 7a      mov     WORD PTR [edx+edi*2], ax
+  00070        8b 4e 6c         mov     ecx, DWORD PTR [esi+108]
+  00073        23 4e 34         and     ecx, DWORD PTR [esi+52]
+  00076        8b 56 40         mov     edx, DWORD PTR [esi+64]
+  00079        0f b7 04 4a      movzx   eax, WORD PTR [edx+ecx*2]
+  0007d        8b 4e 48         mov     ecx, DWORD PTR [esi+72]
+  00080        8b 56 44         mov     edx, DWORD PTR [esi+68]
+  00083        66 8b 7e 6c      mov     di, WORD PTR [esi+108]
+  00087        66 89 3c 4a      mov     WORD PTR [edx+ecx*2], di
+
+; 1655 :         }
+; 1656 : 
+; 1657 :         /* Find the longest match, discarding those <= prev_length.
+; 1658 :          * At this point we have always match_length < MIN_MATCH
+; 1659 :          */
+; 1660 :         if (hash_head != NIL && s->strstart - hash_head <= MAX_DIST(s)) {
+
+  0008b        85 c0            test    eax, eax
+  0008d        74 1f            je      SHORT $LN41@deflate_fa
+  0008f        8b 4e 6c         mov     ecx, DWORD PTR [esi+108]
+  00092        8b 56 2c         mov     edx, DWORD PTR [esi+44]
+  00095        2b c8            sub     ecx, eax
+  00097        81 ea 06 01 00
+       00               sub     edx, 262               ; 00000106H
+  0009d        3b ca            cmp     ecx, edx
+  0009f        77 0d            ja      SHORT $LN41@deflate_fa
+
+; 1661 :             /* To simplify the code, we prevent matches with the string
+; 1662 :              * of window index 0 (in particular we have to avoid a match
+; 1663 :              * of the string with itself at the start of the input file).
+; 1664 :              */
+; 1665 :             s->match_length = longest_match (s, hash_head);
+
+  000a1        50               push    eax
+  000a2        56               push    esi
+  000a3        e8 00 00 00 00   call    _longest_match
+  000a8        83 c4 08         add     esp, 8
+  000ab        89 46 60         mov     DWORD PTR [esi+96], eax
+$LN41@deflate_fa:
+
+; 1666 :             /* longest_match() sets match_start */
+; 1667 :         }
+; 1668 :         if (s->match_length >= MIN_MATCH) {
+
+  000ae        83 7e 60 03      cmp     DWORD PTR [esi+96], 3
+  000b2        0f 82 25 01 00
+       00               jb      $LN13@deflate_fa
+
+; 1669 :             check_match(s, s->strstart, s->match_start, s->match_length);
+; 1670 : 
+; 1671 :             _tr_tally_dist(s, s->strstart - s->match_start,
+; 1672 :                            s->match_length - MIN_MATCH, bflush);
+
+  000b8        66 8b 4e 6c      mov     cx, WORD PTR [esi+108]
+  000bc        66 2b 4e 70      sub     cx, WORD PTR [esi+112]
+  000c0        8b 96 a0 16 00
+       00               mov     edx, DWORD PTR [esi+5792]
+  000c6        8a 46 60         mov     al, BYTE PTR [esi+96]
+  000c9        8b be a4 16 00
+       00               mov     edi, DWORD PTR [esi+5796]
+  000cf        0f b7 c9         movzx   ecx, cx
+  000d2        66 89 0c 57      mov     WORD PTR [edi+edx*2], cx
+  000d6        8b 96 98 16 00
+       00               mov     edx, DWORD PTR [esi+5784]
+  000dc        8b be a0 16 00
+       00               mov     edi, DWORD PTR [esi+5792]
+  000e2        2c 03            sub     al, 3
+  000e4        88 04 3a         mov     BYTE PTR [edx+edi], al
+  000e7        01 9e a0 16 00
+       00               add     DWORD PTR [esi+5792], ebx
+  000ed        0f b6 c0         movzx   eax, al
+  000f0        0f b6 90 00 00
+       00 00            movzx   edx, BYTE PTR __length_code[eax]
+  000f7        66 01 9c 96 98
+       04 00 00         add     WORD PTR [esi+edx*4+1176], bx
+  000ff        8d 84 96 98 04
+       00 00            lea     eax, DWORD PTR [esi+edx*4+1176]
+  00106        81 c1 ff ff 00
+       00               add     ecx, 65535             ; 0000ffffH
+  0010c        b8 00 01 00 00   mov     eax, 256               ; 00000100H
+  00111        66 3b c8         cmp     cx, ax
+  00114        73 0c            jae     SHORT $LN23@deflate_fa
+  00116        0f b7 c9         movzx   ecx, cx
+  00119        0f b6 81 00 00
+       00 00            movzx   eax, BYTE PTR __dist_code[ecx]
+  00120        eb 0d            jmp     SHORT $LN24@deflate_fa
+$LN23@deflate_fa:
+  00122        0f b7 d1         movzx   edx, cx
+  00125        c1 ea 07         shr     edx, 7
+  00128        0f b6 82 00 01
+       00 00            movzx   eax, BYTE PTR __dist_code[edx+256]
+$LN24@deflate_fa:
+  0012f        66 01 9c 86 88
+       09 00 00         add     WORD PTR [esi+eax*4+2440], bx
+  00137        8b 86 9c 16 00
+       00               mov     eax, DWORD PTR [esi+5788]
+  0013d        33 c9            xor     ecx, ecx
+  0013f        2b c3            sub     eax, ebx
+  00141        39 86 a0 16 00
+       00               cmp     DWORD PTR [esi+5792], eax
+
+; 1673 : 
+; 1674 :             s->lookahead -= s->match_length;
+
+  00147        8b 46 60         mov     eax, DWORD PTR [esi+96]
+  0014a        0f 94 c1         sete    cl
+  0014d        29 46 74         sub     DWORD PTR [esi+116], eax
+  00150        8b f9            mov     edi, ecx
+  00152        8b 4e 74         mov     ecx, DWORD PTR [esi+116]
+
+; 1675 : 
+; 1676 :             /* Insert new strings in the hash table only if the match length
+; 1677 :              * is not too large. This saves time but degrades compression.
+; 1678 :              */
+; 1679 : #ifndef FASTEST
+; 1680 :             if (s->match_length <= s->max_insert_length &&
+; 1681 :                 s->lookahead >= MIN_MATCH) {
+
+  00155        3b 86 80 00 00
+       00               cmp     eax, DWORD PTR [esi+128]
+  0015b        77 57            ja      SHORT $LN12@deflate_fa
+  0015d        83 f9 03         cmp     ecx, 3
+  00160        72 52            jb      SHORT $LN12@deflate_fa
+
+; 1682 :                 s->match_length--; /* string at strstart already in table */
+
+  00162        48               dec     eax
+  00163        89 46 60         mov     DWORD PTR [esi+96], eax
+$LL39@deflate_fa:
+
+; 1683 :                 do {
+; 1684 :                     s->strstart++;
+
+  00166        01 5e 6c         add     DWORD PTR [esi+108], ebx
+  00169        8b 56 6c         mov     edx, DWORD PTR [esi+108]
+
+; 1685 :                     INSERT_STRING(s, s->strstart, hash_head);
+
+  0016c        8b 5e 48         mov     ebx, DWORD PTR [esi+72]
+  0016f        8b 4e 58         mov     ecx, DWORD PTR [esi+88]
+  00172        8b 46 38         mov     eax, DWORD PTR [esi+56]
+  00175        0f b6 44 02 02   movzx   eax, BYTE PTR [edx+eax+2]
+  0017a        d3 e3            shl     ebx, cl
+  0017c        8b 4e 44         mov     ecx, DWORD PTR [esi+68]
+  0017f        33 c3            xor     eax, ebx
+  00181        23 46 54         and     eax, DWORD PTR [esi+84]
+  00184        8b 5e 34         mov     ebx, DWORD PTR [esi+52]
+  00187        89 46 48         mov     DWORD PTR [esi+72], eax
+  0018a        0f b7 04 41      movzx   eax, WORD PTR [ecx+eax*2]
+  0018e        23 da            and     ebx, edx
+  00190        8b 56 40         mov     edx, DWORD PTR [esi+64]
+  00193        66 89 04 5a      mov     WORD PTR [edx+ebx*2], ax
+  00197        0f b7 46 6c      movzx   eax, WORD PTR [esi+108]
+  0019b        8b 4e 48         mov     ecx, DWORD PTR [esi+72]
+  0019e        8b 56 44         mov     edx, DWORD PTR [esi+68]
+  001a1        66 89 04 4a      mov     WORD PTR [edx+ecx*2], ax
+
+; 1686 :                     /* strstart never exceeds WSIZE-MAX_MATCH, so there are
+; 1687 :                      * always MIN_MATCH bytes ahead.
+; 1688 :                      */
+; 1689 :                 } while (--s->match_length != 0);
+
+  001a5        ff 4e 60         dec     DWORD PTR [esi+96]
+
+; 1690 :                 s->strstart++;
+
+  001a8        bb 01 00 00 00   mov     ebx, 1
+  001ad        75 b7            jne     SHORT $LL39@deflate_fa
+
+; 1691 :             } else
+
+  001af        e9 83 00 00 00   jmp     $LN42@deflate_fa
+$LN12@deflate_fa:
+
+; 1692 : #endif
+; 1693 :             {
+; 1694 :                 s->strstart += s->match_length;
+
+  001b4        01 46 6c         add     DWORD PTR [esi+108], eax
+
+; 1695 :                 s->match_length = 0;
+; 1696 :                 s->ins_h = s->window[s->strstart];
+
+  001b7        8b 56 38         mov     edx, DWORD PTR [esi+56]
+  001ba        03 56 6c         add     edx, DWORD PTR [esi+108]
+
+; 1697 :                 UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]);
+
+  001bd        8b 4e 58         mov     ecx, DWORD PTR [esi+88]
+  001c0        c7 46 60 00 00
+       00 00            mov     DWORD PTR [esi+96], 0
+  001c7        0f b6 02         movzx   eax, BYTE PTR [edx]
+  001ca        89 46 48         mov     DWORD PTR [esi+72], eax
+  001cd        d3 e0            shl     eax, cl
+  001cf        0f b6 4a 01      movzx   ecx, BYTE PTR [edx+1]
+  001d3        33 c1            xor     eax, ecx
+  001d5        23 46 54         and     eax, DWORD PTR [esi+84]
+  001d8        89 46 48         mov     DWORD PTR [esi+72], eax
+
+; 1698 : #if MIN_MATCH != 3
+; 1699 :                 Call UPDATE_HASH() MIN_MATCH-3 more times
+; 1700 : #endif
+; 1701 :                 /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not
+; 1702 :                  * matter since it will be recomputed at next deflate call.
+; 1703 :                  */
+; 1704 :             }
+; 1705 :         } else {
+
+  001db        eb 5d            jmp     SHORT $LN7@deflate_fa
+$LN13@deflate_fa:
+
+; 1706 :             /* No match, output a literal byte */
+; 1707 :             Tracevv((stderr,"%c", s->window[s->strstart]));
+; 1708 :             _tr_tally_lit (s, s->window[s->strstart], bflush);
+
+  001dd        8b 56 6c         mov     edx, DWORD PTR [esi+108]
+  001e0        8b 46 38         mov     eax, DWORD PTR [esi+56]
+  001e3        8a 04 02         mov     al, BYTE PTR [edx+eax]
+  001e6        8b 8e a0 16 00
+       00               mov     ecx, DWORD PTR [esi+5792]
+  001ec        8b 96 a4 16 00
+       00               mov     edx, DWORD PTR [esi+5796]
+  001f2        33 ff            xor     edi, edi
+  001f4        66 89 3c 4a      mov     WORD PTR [edx+ecx*2], di
+  001f8        8b 96 a0 16 00
+       00               mov     edx, DWORD PTR [esi+5792]
+  001fe        8b 8e 98 16 00
+       00               mov     ecx, DWORD PTR [esi+5784]
+  00204        88 04 11         mov     BYTE PTR [ecx+edx], al
+  00207        01 9e a0 16 00
+       00               add     DWORD PTR [esi+5792], ebx
+  0020d        0f b6 c0         movzx   eax, al
+  00210        66 01 9c 86 94
+       00 00 00         add     WORD PTR [esi+eax*4+148], bx
+  00218        8b 8e 9c 16 00
+       00               mov     ecx, DWORD PTR [esi+5788]
+  0021e        8d 84 86 94 00
+       00 00            lea     eax, DWORD PTR [esi+eax*4+148]
+  00225        33 d2            xor     edx, edx
+  00227        2b cb            sub     ecx, ebx
+  00229        39 8e a0 16 00
+       00               cmp     DWORD PTR [esi+5792], ecx
+  0022f        0f 94 c2         sete    dl
+
+; 1709 :             s->lookahead--;
+
+  00232        ff 4e 74         dec     DWORD PTR [esi+116]
+  00235        8b fa            mov     edi, edx
+$LN42@deflate_fa:
+
+; 1710 :             s->strstart++;
+
+  00237        01 5e 6c         add     DWORD PTR [esi+108], ebx
+$LN7@deflate_fa:
+
+; 1711 :         }
+; 1712 :         if (bflush) FLUSH_BLOCK(s, 0);
+
+  0023a        85 ff            test    edi, edi
+  0023c        0f 84 ce fd ff
+       ff               je      $LL20@deflate_fa
+  00242        8b 56 5c         mov     edx, DWORD PTR [esi+92]
+  00245        85 d2            test    edx, edx
+  00247        78 07            js      SHORT $LN25@deflate_fa
+  00249        8b 4e 38         mov     ecx, DWORD PTR [esi+56]
+  0024c        03 ca            add     ecx, edx
+  0024e        eb 02            jmp     SHORT $LN26@deflate_fa
+$LN25@deflate_fa:
+  00250        33 c9            xor     ecx, ecx
+$LN26@deflate_fa:
+  00252        8b 46 6c         mov     eax, DWORD PTR [esi+108]
+  00255        6a 00            push    0
+  00257        51               push    ecx
+  00258        2b c2            sub     eax, edx
+  0025a        8b ce            mov     ecx, esi
+  0025c        e8 00 00 00 00   call    __tr_flush_block
+  00261        8b 46 6c         mov     eax, DWORD PTR [esi+108]
+  00264        8b 3e            mov     edi, DWORD PTR [esi]
+  00266        83 c4 08         add     esp, 8
+  00269        89 46 5c         mov     DWORD PTR [esi+92], eax
+  0026c        e8 00 00 00 00   call    _flush_pending
+  00271        8b 0e            mov     ecx, DWORD PTR [esi]
+  00273        83 79 10 00      cmp     DWORD PTR [ecx+16], 0
+  00277        0f 85 93 fd ff
+       ff               jne     $LL20@deflate_fa
+$LN38@deflate_fa:
+  0027d        5f               pop     edi
+  0027e        5e               pop     esi
+  0027f        33 c0            xor     eax, eax
+  00281        5b               pop     ebx
+
+; 1722 : }
+
+  00282        5d               pop     ebp
+  00283        c3               ret     0
+$LN37@deflate_fa:
+
+; 1713 :     }
+; 1714 :     s->insert = s->strstart < MIN_MATCH-1 ? s->strstart : MIN_MATCH-1;
+
+  00284        8b 46 6c         mov     eax, DWORD PTR [esi+108]
+  00287        8b c8            mov     ecx, eax
+  00289        83 f8 02         cmp     eax, 2
+  0028c        72 05            jb      SHORT $LN28@deflate_fa
+  0028e        b9 02 00 00 00   mov     ecx, 2
+$LN28@deflate_fa:
+
+; 1715 :     if (flush == Z_FINISH) {
+
+  00293        83 7d 0c 04      cmp     DWORD PTR _flush$[ebp], 4
+  00297        89 8e b4 16 00
+       00               mov     DWORD PTR [esi+5812], ecx
+  0029d        75 3d            jne     SHORT $LN4@deflate_fa
+
+; 1716 :         FLUSH_BLOCK(s, 1);
+
+  0029f        8b 56 5c         mov     edx, DWORD PTR [esi+92]
+  002a2        85 d2            test    edx, edx
+  002a4        78 07            js      SHORT $LN29@deflate_fa
+  002a6        8b 4e 38         mov     ecx, DWORD PTR [esi+56]
+  002a9        03 ca            add     ecx, edx
+  002ab        eb 02            jmp     SHORT $LN30@deflate_fa
+$LN29@deflate_fa:
+  002ad        33 c9            xor     ecx, ecx
+$LN30@deflate_fa:
+  002af        53               push    ebx
+  002b0        51               push    ecx
+  002b1        2b c2            sub     eax, edx
+  002b3        8b ce            mov     ecx, esi
+  002b5        e8 00 00 00 00   call    __tr_flush_block
+  002ba        8b 56 6c         mov     edx, DWORD PTR [esi+108]
+  002bd        8b 3e            mov     edi, DWORD PTR [esi]
+  002bf        83 c4 08         add     esp, 8
+  002c2        89 56 5c         mov     DWORD PTR [esi+92], edx
+  002c5        e8 00 00 00 00   call    _flush_pending
+  002ca        8b 06            mov     eax, DWORD PTR [esi]
+  002cc        33 c9            xor     ecx, ecx
+  002ce        39 48 10         cmp     DWORD PTR [eax+16], ecx
+  002d1        5f               pop     edi
+  002d2        0f 95 c1         setne   cl
+  002d5        5e               pop     esi
+  002d6        5b               pop     ebx
+  002d7        8d 41 02         lea     eax, DWORD PTR [ecx+2]
+
+; 1722 : }
+
+  002da        5d               pop     ebp
+  002db        c3               ret     0
+$LN4@deflate_fa:
+
+; 1717 :         return finish_done;
+; 1718 :     }
+; 1719 :     if (s->last_lit)
+
+  002dc        83 be a0 16 00
+       00 00            cmp     DWORD PTR [esi+5792], 0
+  002e3        74 38            je      SHORT $LN1@deflate_fa
+
+; 1720 :         FLUSH_BLOCK(s, 0);
+
+  002e5        8b 56 5c         mov     edx, DWORD PTR [esi+92]
+  002e8        85 d2            test    edx, edx
+  002ea        78 07            js      SHORT $LN31@deflate_fa
+  002ec        8b 4e 38         mov     ecx, DWORD PTR [esi+56]
+  002ef        03 ca            add     ecx, edx
+  002f1        eb 02            jmp     SHORT $LN32@deflate_fa
+$LN31@deflate_fa:
+  002f3        33 c9            xor     ecx, ecx
+$LN32@deflate_fa:
+  002f5        6a 00            push    0
+  002f7        51               push    ecx
+  002f8        2b c2            sub     eax, edx
+  002fa        8b ce            mov     ecx, esi
+  002fc        e8 00 00 00 00   call    __tr_flush_block
+  00301        8b 56 6c         mov     edx, DWORD PTR [esi+108]
+  00304        8b 3e            mov     edi, DWORD PTR [esi]
+  00306        83 c4 08         add     esp, 8
+  00309        89 56 5c         mov     DWORD PTR [esi+92], edx
+  0030c        e8 00 00 00 00   call    _flush_pending
+  00311        8b 06            mov     eax, DWORD PTR [esi]
+  00313        83 78 10 00      cmp     DWORD PTR [eax+16], 0
+  00317        0f 84 60 ff ff
+       ff               je      $LN38@deflate_fa
+$LN1@deflate_fa:
+  0031d        5f               pop     edi
+  0031e        5e               pop     esi
+
+; 1721 :     return block_done;
+
+  0031f        8b c3            mov     eax, ebx
+  00321        5b               pop     ebx
+
+; 1722 : }
+
+  00322        5d               pop     ebp
+  00323        c3               ret     0
+_deflate_fast ENDP
+; Function compile flags: /Ogtp
+_TEXT  ENDS
+;      COMDAT _deflate_stored
+_TEXT  SEGMENT
+_max_block_size$ = -4                                  ; size = 4
+_s$ = 8                                                        ; size = 4
+_flush$ = 12                                           ; size = 4
+_deflate_stored PROC                                   ; COMDAT
+
+; 1567 : {
+
+  00000        55               push    ebp
+  00001        8b ec            mov     ebp, esp
+  00003        51               push    ecx
+  00004        56               push    esi
+
+; 1568 :     /* Stored blocks are limited to 0xffff bytes, pending_buf is limited
+; 1569 :      * to pending_buf_size, and each stored block has a 5 byte header:
+; 1570 :      */
+; 1571 :     ulg max_block_size = 0xffff;
+; 1572 :     ulg max_start;
+; 1573 : 
+; 1574 :     if (max_block_size > s->pending_buf_size - 5) {
+
+  00005        8b 75 08         mov     esi, DWORD PTR _s$[ebp]
+  00008        8b 46 0c         mov     eax, DWORD PTR [esi+12]
+  0000b        83 c0 fb         add     eax, -5                        ; fffffffbH
+  0000e        57               push    edi
+  0000f        c7 45 fc ff ff
+       00 00            mov     DWORD PTR _max_block_size$[ebp], 65535 ; 0000ffffH
+  00016        3d ff ff 00 00   cmp     eax, 65535             ; 0000ffffH
+  0001b        73 03            jae     SHORT $LL14@deflate_st
+
+; 1575 :         max_block_size = s->pending_buf_size - 5;
+
+  0001d        89 45 fc         mov     DWORD PTR _max_block_size$[ebp], eax
+$LL14@deflate_st:
+
+; 1576 :     }
+; 1577 : 
+; 1578 :     /* Copy as much as possible from input to output: */
+; 1579 :     for (;;) {
+; 1580 :         /* Fill the window as much as possible: */
+; 1581 :         if (s->lookahead <= 1) {
+
+  00020        8b 46 74         mov     eax, DWORD PTR [esi+116]
+  00023        83 f8 01         cmp     eax, 1
+  00026        77 12            ja      SHORT $LN10@deflate_st
+
+; 1582 : 
+; 1583 :             Assert(s->strstart < s->w_size+MAX_DIST(s) ||
+; 1584 :                    s->block_start >= (long)s->w_size, "slide too late");
+; 1585 : 
+; 1586 :             fill_window(s);
+
+  00028        8b fe            mov     edi, esi
+  0002a        e8 00 00 00 00   call    _fill_window
+
+; 1587 :             if (s->lookahead == 0 && flush == Z_NO_FLUSH) return need_more;
+
+  0002f        8b 46 74         mov     eax, DWORD PTR [esi+116]
+  00032        85 c0            test    eax, eax
+  00034        0f 84 a9 00 00
+       00               je      $LN32@deflate_st
+$LN10@deflate_st:
+
+; 1588 : 
+; 1589 :             if (s->lookahead == 0) break; /* flush the current block */
+; 1590 :         }
+; 1591 :         Assert(s->block_start >= 0L, "block gone");
+; 1592 : 
+; 1593 :         s->strstart += s->lookahead;
+
+  0003a        01 46 6c         add     DWORD PTR [esi+108], eax
+
+; 1594 :         s->lookahead = 0;
+; 1595 : 
+; 1596 :         /* Emit a stored block if pending_buf will be full: */
+; 1597 :         max_start = s->block_start + max_block_size;
+
+  0003d        8b 4e 5c         mov     ecx, DWORD PTR [esi+92]
+  00040        8b 45 fc         mov     eax, DWORD PTR _max_block_size$[ebp]
+
+; 1598 :         if (s->strstart == 0 || (ulg)s->strstart >= max_start) {
+
+  00043        8b 56 6c         mov     edx, DWORD PTR [esi+108]
+  00046        c7 46 74 00 00
+       00 00            mov     DWORD PTR [esi+116], 0
+  0004d        8d 04 01         lea     eax, DWORD PTR [ecx+eax]
+  00050        74 04            je      SHORT $LN8@deflate_st
+  00052        3b d0            cmp     edx, eax
+  00054        72 39            jb      SHORT $LN7@deflate_st
+$LN8@deflate_st:
+
+; 1599 :             /* strstart == 0 is possible when wraparound on 16-bit machine */
+; 1600 :             s->lookahead = (uInt)(s->strstart - max_start);
+
+  00056        2b d0            sub     edx, eax
+  00058        89 56 74         mov     DWORD PTR [esi+116], edx
+
+; 1601 :             s->strstart = (uInt)max_start;
+
+  0005b        89 46 6c         mov     DWORD PTR [esi+108], eax
+
+; 1602 :             FLUSH_BLOCK(s, 0);
+
+  0005e        85 c9            test    ecx, ecx
+  00060        78 07            js      SHORT $LN18@deflate_st
+  00062        8b 56 38         mov     edx, DWORD PTR [esi+56]
+  00065        03 d1            add     edx, ecx
+  00067        eb 02            jmp     SHORT $LN19@deflate_st
+$LN18@deflate_st:
+  00069        33 d2            xor     edx, edx
+$LN19@deflate_st:
+  0006b        6a 00            push    0
+  0006d        2b c1            sub     eax, ecx
+  0006f        52               push    edx
+  00070        8b ce            mov     ecx, esi
+  00072        e8 00 00 00 00   call    __tr_flush_block
+  00077        8b 4e 6c         mov     ecx, DWORD PTR [esi+108]
+  0007a        8b 3e            mov     edi, DWORD PTR [esi]
+  0007c        83 c4 08         add     esp, 8
+  0007f        89 4e 5c         mov     DWORD PTR [esi+92], ecx
+  00082        e8 00 00 00 00   call    _flush_pending
+  00087        8b 16            mov     edx, DWORD PTR [esi]
+  00089        83 7a 10 00      cmp     DWORD PTR [edx+16], 0
+  0008d        74 4c            je      SHORT $LN31@deflate_st
+$LN7@deflate_st:
+
+; 1603 :         }
+; 1604 :         /* Flush if we may have to slide, otherwise block_start may become
+; 1605 :          * negative and the data will be gone:
+; 1606 :          */
+; 1607 :         if (s->strstart - (uInt)s->block_start >= MAX_DIST(s)) {
+
+  0008f        8b 56 5c         mov     edx, DWORD PTR [esi+92]
+  00092        8b 46 6c         mov     eax, DWORD PTR [esi+108]
+  00095        8b 4e 2c         mov     ecx, DWORD PTR [esi+44]
+  00098        2b c2            sub     eax, edx
+  0009a        81 e9 06 01 00
+       00               sub     ecx, 262               ; 00000106H
+  000a0        3b c1            cmp     eax, ecx
+  000a2        0f 82 78 ff ff
+       ff               jb      $LL14@deflate_st
+
+; 1608 :             FLUSH_BLOCK(s, 0);
+
+  000a8        85 d2            test    edx, edx
+  000aa        78 07            js      SHORT $LN20@deflate_st
+  000ac        8b 4e 38         mov     ecx, DWORD PTR [esi+56]
+  000af        03 ca            add     ecx, edx
+  000b1        eb 02            jmp     SHORT $LN21@deflate_st
+$LN20@deflate_st:
+  000b3        33 c9            xor     ecx, ecx
+$LN21@deflate_st:
+  000b5        6a 00            push    0
+  000b7        51               push    ecx
+  000b8        8b ce            mov     ecx, esi
+  000ba        e8 00 00 00 00   call    __tr_flush_block
+  000bf        8b 56 6c         mov     edx, DWORD PTR [esi+108]
+  000c2        8b 3e            mov     edi, DWORD PTR [esi]
+  000c4        83 c4 08         add     esp, 8
+  000c7        89 56 5c         mov     DWORD PTR [esi+92], edx
+  000ca        e8 00 00 00 00   call    _flush_pending
+  000cf        8b 06            mov     eax, DWORD PTR [esi]
+  000d1        83 78 10 00      cmp     DWORD PTR [eax+16], 0
+  000d5        0f 85 45 ff ff
+       ff               jne     $LL14@deflate_st
+$LN31@deflate_st:
+  000db        5f               pop     edi
+  000dc        33 c0            xor     eax, eax
+  000de        5e               pop     esi
+
+; 1619 : }
+
+  000df        8b e5            mov     esp, ebp
+  000e1        5d               pop     ebp
+  000e2        c3               ret     0
+$LN32@deflate_st:
+
+; 1587 :             if (s->lookahead == 0 && flush == Z_NO_FLUSH) return need_more;
+
+  000e3        8b 45 0c         mov     eax, DWORD PTR _flush$[ebp]
+  000e6        85 c0            test    eax, eax
+  000e8        74 f1            je      SHORT $LN31@deflate_st
+
+; 1609 :         }
+; 1610 :     }
+; 1611 :     s->insert = 0;
+; 1612 :     if (flush == Z_FINISH) {
+; 1613 :         FLUSH_BLOCK(s, 1);
+
+  000ea        8b 56 5c         mov     edx, DWORD PTR [esi+92]
+  000ed        c7 86 b4 16 00
+       00 00 00 00 00   mov     DWORD PTR [esi+5812], 0
+  000f7        83 f8 04         cmp     eax, 4
+  000fa        75 3f            jne     SHORT $LN4@deflate_st
+  000fc        85 d2            test    edx, edx
+  000fe        78 07            js      SHORT $LN22@deflate_st
+  00100        8b 4e 38         mov     ecx, DWORD PTR [esi+56]
+  00103        03 ca            add     ecx, edx
+  00105        eb 02            jmp     SHORT $LN23@deflate_st
+$LN22@deflate_st:
+  00107        33 c9            xor     ecx, ecx
+$LN23@deflate_st:
+  00109        8b 46 6c         mov     eax, DWORD PTR [esi+108]
+  0010c        6a 01            push    1
+  0010e        51               push    ecx
+  0010f        2b c2            sub     eax, edx
+  00111        8b ce            mov     ecx, esi
+  00113        e8 00 00 00 00   call    __tr_flush_block
+  00118        8b 4e 6c         mov     ecx, DWORD PTR [esi+108]
+  0011b        8b 3e            mov     edi, DWORD PTR [esi]
+  0011d        83 c4 08         add     esp, 8
+  00120        89 4e 5c         mov     DWORD PTR [esi+92], ecx
+  00123        e8 00 00 00 00   call    _flush_pending
+  00128        8b 16            mov     edx, DWORD PTR [esi]
+  0012a        33 c0            xor     eax, eax
+  0012c        39 42 10         cmp     DWORD PTR [edx+16], eax
+  0012f        5f               pop     edi
+  00130        0f 95 c0         setne   al
+  00133        5e               pop     esi
+  00134        83 c0 02         add     eax, 2
+
+; 1619 : }
+
+  00137        8b e5            mov     esp, ebp
+  00139        5d               pop     ebp
+  0013a        c3               ret     0
+$LN4@deflate_st:
+
+; 1614 :         return finish_done;
+; 1615 :     }
+; 1616 :     if ((long)s->strstart > s->block_start)
+
+  0013b        8b 46 6c         mov     eax, DWORD PTR [esi+108]
+  0013e        3b c2            cmp     eax, edx
+  00140        7e 35            jle     SHORT $LN1@deflate_st
+
+; 1617 :         FLUSH_BLOCK(s, 0);
+
+  00142        85 d2            test    edx, edx
+  00144        78 07            js      SHORT $LN24@deflate_st
+  00146        8b 4e 38         mov     ecx, DWORD PTR [esi+56]
+  00149        03 ca            add     ecx, edx
+  0014b        eb 02            jmp     SHORT $LN25@deflate_st
+$LN24@deflate_st:
+  0014d        33 c9            xor     ecx, ecx
+$LN25@deflate_st:
+  0014f        6a 00            push    0
+  00151        51               push    ecx
+  00152        2b c2            sub     eax, edx
+  00154        8b ce            mov     ecx, esi
+  00156        e8 00 00 00 00   call    __tr_flush_block
+  0015b        8b 46 6c         mov     eax, DWORD PTR [esi+108]
+  0015e        8b 3e            mov     edi, DWORD PTR [esi]
+  00160        83 c4 08         add     esp, 8
+  00163        89 46 5c         mov     DWORD PTR [esi+92], eax
+  00166        e8 00 00 00 00   call    _flush_pending
+  0016b        8b 0e            mov     ecx, DWORD PTR [esi]
+  0016d        83 79 10 00      cmp     DWORD PTR [ecx+16], 0
+  00171        0f 84 64 ff ff
+       ff               je      $LN31@deflate_st
+$LN1@deflate_st:
+  00177        5f               pop     edi
+
+; 1618 :     return block_done;
+
+  00178        b8 01 00 00 00   mov     eax, 1
+  0017d        5e               pop     esi
+
+; 1619 : }
+
+  0017e        8b e5            mov     esp, ebp
+  00180        5d               pop     ebp
+  00181        c3               ret     0
+_deflate_stored ENDP
+_TEXT  ENDS
+PUBLIC _deflate@8
+; Function compile flags: /Ogtp
+;      COMDAT _deflate@8
+_TEXT  SEGMENT
+_old_flush$ = -4                                       ; size = 4
+tv1136 = 8                                             ; size = 4
+_beg$80701 = 8                                         ; size = 4
+_strm$ = 8                                             ; size = 4
+_flush$ = 12                                           ; size = 4
+_deflate@8 PROC                                                ; COMDAT
+
+; 668  : {
+
+  00000        55               push    ebp
+  00001        8b ec            mov     ebp, esp
+  00003        51               push    ecx
+  00004        56               push    esi
+  00005        57               push    edi
+
+; 669  :     int old_flush; /* value of flush param for previous deflate call */
+; 670  :     deflate_state *s;
+; 671  : 
+; 672  :     if (strm == Z_NULL || strm->state == Z_NULL ||
+; 673  :         flush > Z_BLOCK || flush < 0) {
+
+  00006        8b 7d 08         mov     edi, DWORD PTR _strm$[ebp]
+  00009        85 ff            test    edi, edi
+  0000b        0f 84 40 08 00
+       00               je      $LN82@deflate
+  00011        8b 77 1c         mov     esi, DWORD PTR [edi+28]
+  00014        85 f6            test    esi, esi
+  00016        0f 84 35 08 00
+       00               je      $LN82@deflate
+  0001c        8b 4d 0c         mov     ecx, DWORD PTR _flush$[ebp]
+  0001f        83 f9 05         cmp     ecx, 5
+  00022        0f 87 29 08 00
+       00               ja      $LN82@deflate
+
+; 674  :         return Z_STREAM_ERROR;
+; 675  :     }
+; 676  :     s = strm->state;
+; 677  : 
+; 678  :     if (strm->next_out == Z_NULL ||
+; 679  :         (strm->next_in == Z_NULL && strm->avail_in != 0) ||
+; 680  :         (s->status == FINISH_STATE && flush != Z_FINISH)) {
+
+  00028        83 7f 0c 00      cmp     DWORD PTR [edi+12], 0
+  0002c        0f 84 18 08 00
+       00               je      $LN80@deflate
+  00032        83 3f 00         cmp     DWORD PTR [edi], 0
+  00035        75 0a            jne     SHORT $LN79@deflate
+  00037        83 7f 04 00      cmp     DWORD PTR [edi+4], 0
+  0003b        0f 85 09 08 00
+       00               jne     $LN80@deflate
+$LN79@deflate:
+  00041        8b 46 04         mov     eax, DWORD PTR [esi+4]
+  00044        3d 9a 02 00 00   cmp     eax, 666               ; 0000029aH
+  00049        75 09            jne     SHORT $LN81@deflate
+  0004b        83 f9 04         cmp     ecx, 4
+  0004e        0f 85 f6 07 00
+       00               jne     $LN80@deflate
+$LN81@deflate:
+
+; 682  :     }
+; 683  :     if (strm->avail_out == 0) ERR_RETURN(strm, Z_BUF_ERROR);
+
+  00054        83 7f 10 00      cmp     DWORD PTR [edi+16], 0
+  00058        75 14            jne     SHORT $LN78@deflate
+  0005a        c7 47 18 00 00
+       00 00            mov     DWORD PTR [edi+24], OFFSET ??_C@_0N@DFPGLBGC@buffer?5error?$AA@
+  00061        5f               pop     edi
+  00062        b8 fb ff ff ff   mov     eax, -5                        ; fffffffbH
+  00067        5e               pop     esi
+
+; 976  : }
+
+  00068        8b e5            mov     esp, ebp
+  0006a        5d               pop     ebp
+  0006b        c2 08 00         ret     8
+$LN78@deflate:
+
+; 684  : 
+; 685  :     s->strm = strm; /* just in case */
+; 686  :     old_flush = s->last_flush;
+
+  0006e        8b 56 28         mov     edx, DWORD PTR [esi+40]
+  00071        53               push    ebx
+  00072        89 3e            mov     DWORD PTR [esi], edi
+  00074        89 55 fc         mov     DWORD PTR _old_flush$[ebp], edx
+
+; 687  :     s->last_flush = flush;
+
+  00077        89 4e 28         mov     DWORD PTR [esi+40], ecx
+
+; 688  : 
+; 689  :     /* Write the header */
+; 690  :     if (s->status == INIT_STATE) {
+
+  0007a        bb 01 00 00 00   mov     ebx, 1
+  0007f        83 f8 2a         cmp     eax, 42                        ; 0000002aH
+  00082        0f 85 a1 02 00
+       00               jne     $LN71@deflate
+
+; 691  : #ifdef GZIP
+; 692  :         if (s->wrap == 2) {
+
+  00088        ba 02 00 00 00   mov     edx, 2
+  0008d        39 56 18         cmp     DWORD PTR [esi+24], edx
+  00090        0f 85 fe 01 00
+       00               jne     $LN76@deflate
+
+; 693  :             strm->adler = crc32(0L, Z_NULL, 0);
+
+  00096        6a 00            push    0
+  00098        6a 00            push    0
+  0009a        6a 00            push    0
+  0009c        e8 00 00 00 00   call    _crc32@12
+  000a1        89 47 30         mov     DWORD PTR [edi+48], eax
+
+; 694  :             put_byte(s, 31);
+
+  000a4        8b 4e 14         mov     ecx, DWORD PTR [esi+20]
+  000a7        8b 46 08         mov     eax, DWORD PTR [esi+8]
+  000aa        c6 04 08 1f      mov     BYTE PTR [eax+ecx], 31 ; 0000001fH
+  000ae        01 5e 14         add     DWORD PTR [esi+20], ebx
+  000b1        8b 46 14         mov     eax, DWORD PTR [esi+20]
+
+; 695  :             put_byte(s, 139);
+
+  000b4        8b 56 08         mov     edx, DWORD PTR [esi+8]
+  000b7        c6 04 10 8b      mov     BYTE PTR [eax+edx], 139        ; 0000008bH
+  000bb        01 5e 14         add     DWORD PTR [esi+20], ebx
+  000be        8b 46 14         mov     eax, DWORD PTR [esi+20]
+
+; 696  :             put_byte(s, 8);
+
+  000c1        8b 4e 08         mov     ecx, DWORD PTR [esi+8]
+  000c4        c6 04 08 08      mov     BYTE PTR [eax+ecx], 8
+  000c8        01 5e 14         add     DWORD PTR [esi+20], ebx
+
+; 697  :             if (s->gzhead == Z_NULL) {
+
+  000cb        8b 46 1c         mov     eax, DWORD PTR [esi+28]
+  000ce        8b 4e 14         mov     ecx, DWORD PTR [esi+20]
+  000d1        89 4d 08         mov     DWORD PTR tv1136[ebp], ecx
+  000d4        85 c0            test    eax, eax
+  000d6        0f 85 89 00 00
+       00               jne     $LN75@deflate
+
+; 698  :                 put_byte(s, 0);
+
+  000dc        8b 56 08         mov     edx, DWORD PTR [esi+8]
+  000df        88 04 11         mov     BYTE PTR [ecx+edx], al
+  000e2        01 5e 14         add     DWORD PTR [esi+20], ebx
+  000e5        8b 46 14         mov     eax, DWORD PTR [esi+20]
+
+; 699  :                 put_byte(s, 0);
+
+  000e8        8b 4e 08         mov     ecx, DWORD PTR [esi+8]
+  000eb        c6 04 08 00      mov     BYTE PTR [eax+ecx], 0
+  000ef        01 5e 14         add     DWORD PTR [esi+20], ebx
+  000f2        8b 46 14         mov     eax, DWORD PTR [esi+20]
+
+; 700  :                 put_byte(s, 0);
+
+  000f5        8b 56 08         mov     edx, DWORD PTR [esi+8]
+  000f8        c6 04 10 00      mov     BYTE PTR [eax+edx], 0
+  000fc        01 5e 14         add     DWORD PTR [esi+20], ebx
+  000ff        8b 46 14         mov     eax, DWORD PTR [esi+20]
+
+; 701  :                 put_byte(s, 0);
+
+  00102        8b 4e 08         mov     ecx, DWORD PTR [esi+8]
+  00105        c6 04 08 00      mov     BYTE PTR [eax+ecx], 0
+  00109        01 5e 14         add     DWORD PTR [esi+20], ebx
+  0010c        8b 46 14         mov     eax, DWORD PTR [esi+20]
+
+; 702  :                 put_byte(s, 0);
+
+  0010f        8b 56 08         mov     edx, DWORD PTR [esi+8]
+  00112        c6 04 10 00      mov     BYTE PTR [eax+edx], 0
+  00116        01 5e 14         add     DWORD PTR [esi+20], ebx
+
+; 703  :                 put_byte(s, s->level == 9 ? 2 :
+; 704  :                             (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ?
+; 705  :                              4 : 0));
+
+  00119        8b 86 84 00 00
+       00               mov     eax, DWORD PTR [esi+132]
+  0011f        8b 4e 14         mov     ecx, DWORD PTR [esi+20]
+  00122        83 f8 09         cmp     eax, 9
+  00125        75 05            jne     SHORT $LN88@deflate
+  00127        8d 43 01         lea     eax, DWORD PTR [ebx+1]
+  0012a        eb 17            jmp     SHORT $LN87@deflate
+$LN88@deflate:
+  0012c        83 be 88 00 00
+       00 02            cmp     DWORD PTR [esi+136], 2
+  00133        7d 09            jge     SHORT $LN86@deflate
+  00135        83 f8 02         cmp     eax, 2
+  00138        7c 04            jl      SHORT $LN86@deflate
+  0013a        33 c0            xor     eax, eax
+  0013c        eb 05            jmp     SHORT $LN87@deflate
+$LN86@deflate:
+  0013e        b8 04 00 00 00   mov     eax, 4
+$LN87@deflate:
+  00143        8b 56 08         mov     edx, DWORD PTR [esi+8]
+  00146        88 04 11         mov     BYTE PTR [ecx+edx], al
+  00149        01 5e 14         add     DWORD PTR [esi+20], ebx
+  0014c        8b 46 14         mov     eax, DWORD PTR [esi+20]
+
+; 706  :                 put_byte(s, OS_CODE);
+
+  0014f        8b 4e 08         mov     ecx, DWORD PTR [esi+8]
+  00152        c6 04 08 0b      mov     BYTE PTR [eax+ecx], 11 ; 0000000bH
+  00156        01 5e 14         add     DWORD PTR [esi+20], ebx
+
+; 707  :                 s->status = BUSY_STATE;
+
+  00159        c7 46 04 71 00
+       00 00            mov     DWORD PTR [esi+4], 113 ; 00000071H
+
+; 708  :             }
+; 709  :             else {
+
+  00160        e9 c4 01 00 00   jmp     $LN71@deflate
+$LN75@deflate:
+
+; 710  :                 put_byte(s, (s->gzhead->text ? 1 : 0) +
+; 711  :                             (s->gzhead->hcrc ? 2 : 0) +
+; 712  :                             (s->gzhead->extra == Z_NULL ? 0 : 4) +
+; 713  :                             (s->gzhead->name == Z_NULL ? 0 : 8) +
+; 714  :                             (s->gzhead->comment == Z_NULL ? 0 : 16)
+; 715  :                         );
+
+  00165        8b 50 24         mov     edx, DWORD PTR [eax+36]
+  00168        8b 48 2c         mov     ecx, DWORD PTR [eax+44]
+  0016b        f7 da            neg     edx
+  0016d        1a d2            sbb     dl, dl
+  0016f        80 e2 10         and     dl, 16                 ; 00000010H
+  00172        f7 d9            neg     ecx
+  00174        1a c9            sbb     cl, cl
+  00176        80 e1 02         and     cl, 2
+  00179        02 d1            add     dl, cl
+  0017b        8b 48 1c         mov     ecx, DWORD PTR [eax+28]
+  0017e        f7 d9            neg     ecx
+  00180        1a c9            sbb     cl, cl
+  00182        80 e1 08         and     cl, 8
+  00185        02 d1            add     dl, cl
+  00187        8b 48 10         mov     ecx, DWORD PTR [eax+16]
+  0018a        f7 d9            neg     ecx
+  0018c        1a c9            sbb     cl, cl
+  0018e        80 e1 04         and     cl, 4
+  00191        02 d1            add     dl, cl
+  00193        83 38 00         cmp     DWORD PTR [eax], 0
+  00196        8b 4e 08         mov     ecx, DWORD PTR [esi+8]
+  00199        0f 95 c0         setne   al
+  0019c        02 d0            add     dl, al
+  0019e        8b 45 08         mov     eax, DWORD PTR tv1136[ebp]
+  001a1        88 14 08         mov     BYTE PTR [eax+ecx], dl
+  001a4        01 5e 14         add     DWORD PTR [esi+20], ebx
+  001a7        8b 46 14         mov     eax, DWORD PTR [esi+20]
+
+; 716  :                 put_byte(s, (Byte)(s->gzhead->time & 0xff));
+
+  001aa        8b 4e 1c         mov     ecx, DWORD PTR [esi+28]
+  001ad        0f b6 49 04      movzx   ecx, BYTE PTR [ecx+4]
+  001b1        8b 56 08         mov     edx, DWORD PTR [esi+8]
+  001b4        88 0c 10         mov     BYTE PTR [eax+edx], cl
+  001b7        01 5e 14         add     DWORD PTR [esi+20], ebx
+
+; 717  :                 put_byte(s, (Byte)((s->gzhead->time >> 8) & 0xff));
+
+  001ba        8b 56 1c         mov     edx, DWORD PTR [esi+28]
+  001bd        0f b6 52 05      movzx   edx, BYTE PTR [edx+5]
+  001c1        8b 46 14         mov     eax, DWORD PTR [esi+20]
+  001c4        8b 4e 08         mov     ecx, DWORD PTR [esi+8]
+  001c7        88 14 08         mov     BYTE PTR [eax+ecx], dl
+  001ca        01 5e 14         add     DWORD PTR [esi+20], ebx
+
+; 718  :                 put_byte(s, (Byte)((s->gzhead->time >> 16) & 0xff));
+
+  001cd        8b 4e 1c         mov     ecx, DWORD PTR [esi+28]
+  001d0        0f b6 49 06      movzx   ecx, BYTE PTR [ecx+6]
+  001d4        8b 46 14         mov     eax, DWORD PTR [esi+20]
+  001d7        8b 56 08         mov     edx, DWORD PTR [esi+8]
+  001da        88 0c 10         mov     BYTE PTR [eax+edx], cl
+  001dd        01 5e 14         add     DWORD PTR [esi+20], ebx
+
+; 719  :                 put_byte(s, (Byte)((s->gzhead->time >> 24) & 0xff));
+
+  001e0        8b 56 1c         mov     edx, DWORD PTR [esi+28]
+  001e3        0f b6 52 07      movzx   edx, BYTE PTR [edx+7]
+  001e7        8b 46 14         mov     eax, DWORD PTR [esi+20]
+  001ea        8b 4e 08         mov     ecx, DWORD PTR [esi+8]
+  001ed        88 14 08         mov     BYTE PTR [eax+ecx], dl
+  001f0        01 5e 14         add     DWORD PTR [esi+20], ebx
+
+; 720  :                 put_byte(s, s->level == 9 ? 2 :
+; 721  :                             (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ?
+; 722  :                              4 : 0));
+
+  001f3        8b 86 84 00 00
+       00               mov     eax, DWORD PTR [esi+132]
+  001f9        8b 4e 14         mov     ecx, DWORD PTR [esi+20]
+  001fc        83 f8 09         cmp     eax, 9
+  001ff        75 07            jne     SHORT $LN92@deflate
+  00201        b8 02 00 00 00   mov     eax, 2
+  00206        eb 17            jmp     SHORT $LN91@deflate
+$LN92@deflate:
+  00208        83 be 88 00 00
+       00 02            cmp     DWORD PTR [esi+136], 2
+  0020f        7d 09            jge     SHORT $LN90@deflate
+  00211        83 f8 02         cmp     eax, 2
+  00214        7c 04            jl      SHORT $LN90@deflate
+  00216        33 c0            xor     eax, eax
+  00218        eb 05            jmp     SHORT $LN91@deflate
+$LN90@deflate:
+  0021a        b8 04 00 00 00   mov     eax, 4
+$LN91@deflate:
+  0021f        8b 56 08         mov     edx, DWORD PTR [esi+8]
+  00222        88 04 11         mov     BYTE PTR [ecx+edx], al
+  00225        01 5e 14         add     DWORD PTR [esi+20], ebx
+
+; 723  :                 put_byte(s, s->gzhead->os & 0xff);
+
+  00228        8b 4e 1c         mov     ecx, DWORD PTR [esi+28]
+  0022b        8b 46 14         mov     eax, DWORD PTR [esi+20]
+  0022e        8a 49 0c         mov     cl, BYTE PTR [ecx+12]
+  00231        8b 56 08         mov     edx, DWORD PTR [esi+8]
+  00234        88 0c 10         mov     BYTE PTR [eax+edx], cl
+  00237        01 5e 14         add     DWORD PTR [esi+20], ebx
+
+; 724  :                 if (s->gzhead->extra != Z_NULL) {
+
+  0023a        8b 46 1c         mov     eax, DWORD PTR [esi+28]
+  0023d        83 78 10 00      cmp     DWORD PTR [eax+16], 0
+  00241        8b 4e 14         mov     ecx, DWORD PTR [esi+20]
+  00244        74 21            je      SHORT $LN73@deflate
+
+; 725  :                     put_byte(s, s->gzhead->extra_len & 0xff);
+
+  00246        8a 40 14         mov     al, BYTE PTR [eax+20]
+  00249        8b 56 08         mov     edx, DWORD PTR [esi+8]
+  0024c        88 04 11         mov     BYTE PTR [ecx+edx], al
+  0024f        01 5e 14         add     DWORD PTR [esi+20], ebx
+
+; 726  :                     put_byte(s, (s->gzhead->extra_len >> 8) & 0xff);
+
+  00252        8b 4e 1c         mov     ecx, DWORD PTR [esi+28]
+  00255        8a 49 15         mov     cl, BYTE PTR [ecx+21]
+  00258        8b 46 14         mov     eax, DWORD PTR [esi+20]
+  0025b        8b 56 08         mov     edx, DWORD PTR [esi+8]
+  0025e        88 0c 10         mov     BYTE PTR [eax+edx], cl
+  00261        01 5e 14         add     DWORD PTR [esi+20], ebx
+  00264        8b 4e 14         mov     ecx, DWORD PTR [esi+20]
+$LN73@deflate:
+
+; 727  :                 }
+; 728  :                 if (s->gzhead->hcrc)
+
+  00267        8b 56 1c         mov     edx, DWORD PTR [esi+28]
+  0026a        83 7a 2c 00      cmp     DWORD PTR [edx+44], 0
+  0026e        74 11            je      SHORT $LN72@deflate
+
+; 729  :                     strm->adler = crc32(strm->adler, s->pending_buf,
+; 730  :                                         s->pending);
+
+  00270        8b 46 08         mov     eax, DWORD PTR [esi+8]
+  00273        51               push    ecx
+  00274        8b 4f 30         mov     ecx, DWORD PTR [edi+48]
+  00277        50               push    eax
+  00278        51               push    ecx
+  00279        e8 00 00 00 00   call    _crc32@12
+  0027e        89 47 30         mov     DWORD PTR [edi+48], eax
+$LN72@deflate:
+
+; 731  :                 s->gzindex = 0;
+
+  00281        c7 46 20 00 00
+       00 00            mov     DWORD PTR [esi+32], 0
+
+; 732  :                 s->status = EXTRA_STATE;
+
+  00288        c7 46 04 45 00
+       00 00            mov     DWORD PTR [esi+4], 69  ; 00000045H
+
+; 733  :             }
+; 734  :         }
+; 735  :         else
+
+  0028f        e9 95 00 00 00   jmp     $LN71@deflate
+$LN76@deflate:
+
+; 736  : #endif
+; 737  :         {
+; 738  :             uInt header = (Z_DEFLATED + ((s->w_bits-8)<<4)) << 8;
+
+  00294        8b 4e 30         mov     ecx, DWORD PTR [esi+48]
+  00297        83 e9 08         sub     ecx, 8
+  0029a        c1 e1 0c         shl     ecx, 12                        ; 0000000cH
+  0029d        81 c1 00 08 00
+       00               add     ecx, 2048              ; 00000800H
+
+; 739  :             uInt level_flags;
+; 740  : 
+; 741  :             if (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2)
+
+  002a3        39 96 88 00 00
+       00               cmp     DWORD PTR [esi+136], edx
+  002a9        7d 20            jge     SHORT $LN69@deflate
+  002ab        8b 86 84 00 00
+       00               mov     eax, DWORD PTR [esi+132]
+  002b1        3b c2            cmp     eax, edx
+  002b3        7c 16            jl      SHORT $LN69@deflate
+
+; 743  :             else if (s->level < 6)
+
+  002b5        83 f8 06         cmp     eax, 6
+  002b8        7d 04            jge     SHORT $LN67@deflate
+
+; 744  :                 level_flags = 1;
+
+  002ba        8b c3            mov     eax, ebx
+  002bc        eb 0f            jmp     SHORT $LN64@deflate
+$LN67@deflate:
+
+; 745  :             else if (s->level == 6)
+
+  002be        33 d2            xor     edx, edx
+  002c0        83 f8 06         cmp     eax, 6
+  002c3        0f 95 c2         setne   dl
+  002c6        8d 42 02         lea     eax, DWORD PTR [edx+2]
+
+; 746  :                 level_flags = 2;
+; 747  :             else
+; 748  :                 level_flags = 3;
+
+  002c9        eb 02            jmp     SHORT $LN64@deflate
+$LN69@deflate:
+
+; 742  :                 level_flags = 0;
+
+  002cb        33 c0            xor     eax, eax
+$LN64@deflate:
+
+; 749  :             header |= (level_flags << 6);
+
+  002cd        c1 e0 06         shl     eax, 6
+  002d0        0b c8            or      ecx, eax
+
+; 750  :             if (s->strstart != 0) header |= PRESET_DICT;
+
+  002d2        83 7e 6c 00      cmp     DWORD PTR [esi+108], 0
+  002d6        74 03            je      SHORT $LN63@deflate
+  002d8        83 c9 20         or      ecx, 32                        ; 00000020H
+$LN63@deflate:
+
+; 751  :             header += 31 - (header % 31);
+
+  002db        b8 85 10 42 08   mov     eax, 138547333         ; 08421085H
+  002e0        f7 e1            mul     ecx
+  002e2        2b ca            sub     ecx, edx
+  002e4        d1 e9            shr     ecx, 1
+  002e6        8d 04 0a         lea     eax, DWORD PTR [edx+ecx]
+  002e9        c1 e8 04         shr     eax, 4
+
+; 752  : 
+; 753  :             s->status = BUSY_STATE;
+; 754  :             putShortMSB(s, header);
+
+  002ec        03 c3            add     eax, ebx
+  002ee        8b c8            mov     ecx, eax
+  002f0        c1 e1 05         shl     ecx, 5
+  002f3        2b c8            sub     ecx, eax
+  002f5        8b c6            mov     eax, esi
+  002f7        c7 46 04 71 00
+       00 00            mov     DWORD PTR [esi+4], 113 ; 00000071H
+  002fe        e8 00 00 00 00   call    _putShortMSB
+
+; 755  : 
+; 756  :             /* Save the adler32 of the preset dictionary: */
+; 757  :             if (s->strstart != 0) {
+
+  00303        83 7e 6c 00      cmp     DWORD PTR [esi+108], 0
+  00307        74 12            je      SHORT $LN62@deflate
+
+; 758  :                 putShortMSB(s, (uInt)(strm->adler >> 16));
+
+  00309        0f b7 4f 32      movzx   ecx, WORD PTR [edi+50]
+  0030d        e8 00 00 00 00   call    _putShortMSB
+
+; 759  :                 putShortMSB(s, (uInt)(strm->adler & 0xffff));
+
+  00312        0f b7 4f 30      movzx   ecx, WORD PTR [edi+48]
+  00316        e8 00 00 00 00   call    _putShortMSB
+$LN62@deflate:
+
+; 760  :             }
+; 761  :             strm->adler = adler32(0L, Z_NULL, 0);
+
+  0031b        6a 00            push    0
+  0031d        6a 00            push    0
+  0031f        6a 00            push    0
+  00321        e8 00 00 00 00   call    _adler32@12
+  00326        89 47 30         mov     DWORD PTR [edi+48], eax
+$LN71@deflate:
+
+; 762  :         }
+; 763  :     }
+; 764  : #ifdef GZIP
+; 765  :     if (s->status == EXTRA_STATE) {
+
+  00329        83 7e 04 45      cmp     DWORD PTR [esi+4], 69  ; 00000045H
+  0032d        0f 85 c3 00 00
+       00               jne     $LN109@deflate
+
+; 766  :         if (s->gzhead->extra != Z_NULL) {
+
+  00333        8b 46 1c         mov     eax, DWORD PTR [esi+28]
+  00336        83 78 10 00      cmp     DWORD PTR [eax+16], 0
+  0033a        0f 84 af 00 00
+       00               je      $LN60@deflate
+
+; 767  :             uInt beg = s->pending;  /* start of bytes to update crc */
+; 768  : 
+; 769  :             while (s->gzindex < (s->gzhead->extra_len & 0xffff)) {
+
+  00340        0f b7 40 14      movzx   eax, WORD PTR [eax+20]
+  00344        8b 4e 14         mov     ecx, DWORD PTR [esi+20]
+  00347        89 4d 08         mov     DWORD PTR _beg$80701[ebp], ecx
+  0034a        39 46 20         cmp     DWORD PTR [esi+32], eax
+  0034d        73 69            jae     SHORT $LN101@deflate
+  0034f        90               npad    1
+$LL59@deflate:
+
+; 770  :                 if (s->pending == s->pending_buf_size) {
+
+  00350        8b 46 14         mov     eax, DWORD PTR [esi+20]
+  00353        3b 46 0c         cmp     eax, DWORD PTR [esi+12]
+  00356        75 34            jne     SHORT $LN55@deflate
+
+; 771  :                     if (s->gzhead->hcrc && s->pending > beg)
+
+  00358        8b 56 1c         mov     edx, DWORD PTR [esi+28]
+  0035b        83 7a 2c 00      cmp     DWORD PTR [edx+44], 0
+  0035f        74 19            je      SHORT $LN56@deflate
+  00361        3b c1            cmp     eax, ecx
+  00363        76 15            jbe     SHORT $LN56@deflate
+
+; 772  :                         strm->adler = crc32(strm->adler, s->pending_buf + beg,
+; 773  :                                             s->pending - beg);
+
+  00365        2b c1            sub     eax, ecx
+  00367        50               push    eax
+  00368        8b 46 08         mov     eax, DWORD PTR [esi+8]
+  0036b        03 c1            add     eax, ecx
+  0036d        8b 4f 30         mov     ecx, DWORD PTR [edi+48]
+  00370        50               push    eax
+  00371        51               push    ecx
+  00372        e8 00 00 00 00   call    _crc32@12
+  00377        89 47 30         mov     DWORD PTR [edi+48], eax
+$LN56@deflate:
+
+; 774  :                     flush_pending(strm);
+
+  0037a        e8 00 00 00 00   call    _flush_pending
+
+; 775  :                     beg = s->pending;
+
+  0037f        8b 46 14         mov     eax, DWORD PTR [esi+20]
+  00382        8b c8            mov     ecx, eax
+  00384        89 4d 08         mov     DWORD PTR _beg$80701[ebp], ecx
+
+; 776  :                     if (s->pending == s->pending_buf_size)
+
+  00387        3b 46 0c         cmp     eax, DWORD PTR [esi+12]
+  0038a        74 2c            je      SHORT $LN101@deflate
+$LN55@deflate:
+
+; 777  :                         break;
+; 778  :                 }
+; 779  :                 put_byte(s, s->gzhead->extra[s->gzindex]);
+
+  0038c        8b 56 1c         mov     edx, DWORD PTR [esi+28]
+  0038f        8b 4a 10         mov     ecx, DWORD PTR [edx+16]
+  00392        8b 56 20         mov     edx, DWORD PTR [esi+32]
+  00395        8a 0c 11         mov     cl, BYTE PTR [ecx+edx]
+  00398        8b 5e 08         mov     ebx, DWORD PTR [esi+8]
+  0039b        88 0c 18         mov     BYTE PTR [eax+ebx], cl
+  0039e        8b 4d 08         mov     ecx, DWORD PTR _beg$80701[ebp]
+  003a1        b8 01 00 00 00   mov     eax, 1
+  003a6        01 46 14         add     DWORD PTR [esi+20], eax
+
+; 780  :                 s->gzindex++;
+
+  003a9        01 46 20         add     DWORD PTR [esi+32], eax
+  003ac        8b 56 1c         mov     edx, DWORD PTR [esi+28]
+  003af        0f b7 42 14      movzx   eax, WORD PTR [edx+20]
+  003b3        39 46 20         cmp     DWORD PTR [esi+32], eax
+  003b6        72 98            jb      SHORT $LL59@deflate
+$LN101@deflate:
+
+; 781  :             }
+; 782  :             if (s->gzhead->hcrc && s->pending > beg)
+
+  003b8        8b 56 1c         mov     edx, DWORD PTR [esi+28]
+  003bb        83 7a 2c 00      cmp     DWORD PTR [edx+44], 0
+  003bf        74 1c            je      SHORT $LN54@deflate
+  003c1        8b 46 14         mov     eax, DWORD PTR [esi+20]
+  003c4        3b c1            cmp     eax, ecx
+  003c6        76 15            jbe     SHORT $LN54@deflate
+
+; 783  :                 strm->adler = crc32(strm->adler, s->pending_buf + beg,
+; 784  :                                     s->pending - beg);
+
+  003c8        2b c1            sub     eax, ecx
+  003ca        50               push    eax
+  003cb        8b 46 08         mov     eax, DWORD PTR [esi+8]
+  003ce        03 c1            add     eax, ecx
+  003d0        8b 4f 30         mov     ecx, DWORD PTR [edi+48]
+  003d3        50               push    eax
+  003d4        51               push    ecx
+  003d5        e8 00 00 00 00   call    _crc32@12
+  003da        89 47 30         mov     DWORD PTR [edi+48], eax
+$LN54@deflate:
+
+; 785  :             if (s->gzindex == s->gzhead->extra_len) {
+
+  003dd        8b 56 1c         mov     edx, DWORD PTR [esi+28]
+  003e0        8b 46 20         mov     eax, DWORD PTR [esi+32]
+  003e3        3b 42 14         cmp     eax, DWORD PTR [edx+20]
+  003e6        75 0e            jne     SHORT $LN109@deflate
+
+; 786  :                 s->gzindex = 0;
+
+  003e8        c7 46 20 00 00
+       00 00            mov     DWORD PTR [esi+32], 0
+$LN60@deflate:
+
+; 787  :                 s->status = NAME_STATE;
+; 788  :             }
+; 789  :         }
+; 790  :         else
+; 791  :             s->status = NAME_STATE;
+
+  003ef        c7 46 04 49 00
+       00 00            mov     DWORD PTR [esi+4], 73  ; 00000049H
+$LN109@deflate:
+
+; 792  :     }
+; 793  :     if (s->status == NAME_STATE) {
+
+  003f6        83 7e 04 49      cmp     DWORD PTR [esi+4], 73  ; 00000049H
+  003fa        0f 85 a1 00 00
+       00               jne     $LN41@deflate
+
+; 794  :         if (s->gzhead->name != Z_NULL) {
+
+  00400        8b 4e 1c         mov     ecx, DWORD PTR [esi+28]
+  00403        83 79 1c 00      cmp     DWORD PTR [ecx+28], 0
+  00407        0f 84 8d 00 00
+       00               je      $LN50@deflate
+
+; 795  :             uInt beg = s->pending;  /* start of bytes to update crc */
+
+  0040d        8b 56 14         mov     edx, DWORD PTR [esi+20]
+$LL49@deflate:
+
+; 796  :             int val;
+; 797  : 
+; 798  :             do {
+; 799  :                 if (s->pending == s->pending_buf_size) {
+
+  00410        8b 46 14         mov     eax, DWORD PTR [esi+20]
+  00413        3b 46 0c         cmp     eax, DWORD PTR [esi+12]
+  00416        75 31            jne     SHORT $LN44@deflate
+
+; 800  :                     if (s->gzhead->hcrc && s->pending > beg)
+
+  00418        8b 4e 1c         mov     ecx, DWORD PTR [esi+28]
+  0041b        83 79 2c 00      cmp     DWORD PTR [ecx+44], 0
+  0041f        74 19            je      SHORT $LN45@deflate
+  00421        3b c2            cmp     eax, edx
+  00423        76 15            jbe     SHORT $LN45@deflate
+
+; 801  :                         strm->adler = crc32(strm->adler, s->pending_buf + beg,
+; 802  :                                             s->pending - beg);
+
+  00425        8b 4f 30         mov     ecx, DWORD PTR [edi+48]
+  00428        2b c2            sub     eax, edx
+  0042a        50               push    eax
+  0042b        8b 46 08         mov     eax, DWORD PTR [esi+8]
+  0042e        03 c2            add     eax, edx
+  00430        50               push    eax
+  00431        51               push    ecx
+  00432        e8 00 00 00 00   call    _crc32@12
+  00437        89 47 30         mov     DWORD PTR [edi+48], eax
+$LN45@deflate:
+
+; 803  :                     flush_pending(strm);
+
+  0043a        e8 00 00 00 00   call    _flush_pending
+
+; 804  :                     beg = s->pending;
+
+  0043f        8b 46 14         mov     eax, DWORD PTR [esi+20]
+  00442        8b d0            mov     edx, eax
+
+; 805  :                     if (s->pending == s->pending_buf_size) {
+
+  00444        3b 46 0c         cmp     eax, DWORD PTR [esi+12]
+  00447        74 20            je      SHORT $LN102@deflate
+$LN44@deflate:
+
+; 807  :                         break;
+; 808  :                     }
+; 809  :                 }
+; 810  :                 val = s->gzhead->name[s->gzindex++];
+
+  00449        8b 4e 20         mov     ecx, DWORD PTR [esi+32]
+  0044c        8b 5e 1c         mov     ebx, DWORD PTR [esi+28]
+  0044f        8b 5b 1c         mov     ebx, DWORD PTR [ebx+28]
+  00452        0f b6 1c 0b      movzx   ebx, BYTE PTR [ebx+ecx]
+  00456        41               inc     ecx
+  00457        89 4e 20         mov     DWORD PTR [esi+32], ecx
+
+; 811  :                 put_byte(s, val);
+
+  0045a        8b 4e 08         mov     ecx, DWORD PTR [esi+8]
+  0045d        88 1c 08         mov     BYTE PTR [eax+ecx], bl
+  00460        ff 46 14         inc     DWORD PTR [esi+20]
+
+; 812  :             } while (val != 0);
+
+  00463        85 db            test    ebx, ebx
+  00465        75 a9            jne     SHORT $LL49@deflate
+  00467        eb 05            jmp     SHORT $LN47@deflate
+$LN102@deflate:
+
+; 806  :                         val = 1;
+
+  00469        bb 01 00 00 00   mov     ebx, 1
+$LN47@deflate:
+
+; 813  :             if (s->gzhead->hcrc && s->pending > beg)
+
+  0046e        8b 46 1c         mov     eax, DWORD PTR [esi+28]
+  00471        83 78 2c 00      cmp     DWORD PTR [eax+44], 0
+  00475        74 1c            je      SHORT $LN43@deflate
+  00477        8b 46 14         mov     eax, DWORD PTR [esi+20]
+  0047a        3b c2            cmp     eax, edx
+  0047c        76 15            jbe     SHORT $LN43@deflate
+
+; 814  :                 strm->adler = crc32(strm->adler, s->pending_buf + beg,
+; 815  :                                     s->pending - beg);
+
+  0047e        8b 4e 08         mov     ecx, DWORD PTR [esi+8]
+  00481        2b c2            sub     eax, edx
+  00483        50               push    eax
+  00484        03 ca            add     ecx, edx
+  00486        8b 57 30         mov     edx, DWORD PTR [edi+48]
+  00489        51               push    ecx
+  0048a        52               push    edx
+  0048b        e8 00 00 00 00   call    _crc32@12
+  00490        89 47 30         mov     DWORD PTR [edi+48], eax
+$LN43@deflate:
+
+; 816  :             if (val == 0) {
+
+  00493        85 db            test    ebx, ebx
+  00495        75 0a            jne     SHORT $LN41@deflate
+
+; 817  :                 s->gzindex = 0;
+
+  00497        89 5e 20         mov     DWORD PTR [esi+32], ebx
+$LN50@deflate:
+
+; 818  :                 s->status = COMMENT_STATE;
+; 819  :             }
+; 820  :         }
+; 821  :         else
+; 822  :             s->status = COMMENT_STATE;
+
+  0049a        c7 46 04 5b 00
+       00 00            mov     DWORD PTR [esi+4], 91  ; 0000005bH
+$LN41@deflate:
+
+; 823  :     }
+; 824  :     if (s->status == COMMENT_STATE) {
+
+  004a1        83 7e 04 5b      cmp     DWORD PTR [esi+4], 91  ; 0000005bH
+  004a5        0f 85 a3 00 00
+       00               jne     $LN30@deflate
+
+; 825  :         if (s->gzhead->comment != Z_NULL) {
+
+  004ab        8b 46 1c         mov     eax, DWORD PTR [esi+28]
+  004ae        83 78 24 00      cmp     DWORD PTR [eax+36], 0
+  004b2        0f 84 8f 00 00
+       00               je      $LN39@deflate
+
+; 826  :             uInt beg = s->pending;  /* start of bytes to update crc */
+
+  004b8        8b 56 14         mov     edx, DWORD PTR [esi+20]
+  004bb        eb 03 8d 49 00   npad    5
+$LL38@deflate:
+
+; 827  :             int val;
+; 828  : 
+; 829  :             do {
+; 830  :                 if (s->pending == s->pending_buf_size) {
+
+  004c0        8b 46 14         mov     eax, DWORD PTR [esi+20]
+  004c3        3b 46 0c         cmp     eax, DWORD PTR [esi+12]
+  004c6        75 31            jne     SHORT $LN33@deflate
+
+; 831  :                     if (s->gzhead->hcrc && s->pending > beg)
+
+  004c8        8b 4e 1c         mov     ecx, DWORD PTR [esi+28]
+  004cb        83 79 2c 00      cmp     DWORD PTR [ecx+44], 0
+  004cf        74 19            je      SHORT $LN34@deflate
+  004d1        3b c2            cmp     eax, edx
+  004d3        76 15            jbe     SHORT $LN34@deflate
+
+; 832  :                         strm->adler = crc32(strm->adler, s->pending_buf + beg,
+; 833  :                                             s->pending - beg);
+
+  004d5        8b 4f 30         mov     ecx, DWORD PTR [edi+48]
+  004d8        2b c2            sub     eax, edx
+  004da        50               push    eax
+  004db        8b 46 08         mov     eax, DWORD PTR [esi+8]
+  004de        03 c2            add     eax, edx
+  004e0        50               push    eax
+  004e1        51               push    ecx
+  004e2        e8 00 00 00 00   call    _crc32@12
+  004e7        89 47 30         mov     DWORD PTR [edi+48], eax
+$LN34@deflate:
+
+; 834  :                     flush_pending(strm);
+
+  004ea        e8 00 00 00 00   call    _flush_pending
+
+; 835  :                     beg = s->pending;
+
+  004ef        8b 46 14         mov     eax, DWORD PTR [esi+20]
+  004f2        8b d0            mov     edx, eax
+
+; 836  :                     if (s->pending == s->pending_buf_size) {
+
+  004f4        3b 46 0c         cmp     eax, DWORD PTR [esi+12]
+  004f7        74 20            je      SHORT $LN103@deflate
+$LN33@deflate:
+
+; 838  :                         break;
+; 839  :                     }
+; 840  :                 }
+; 841  :                 val = s->gzhead->comment[s->gzindex++];
+
+  004f9        8b 4e 20         mov     ecx, DWORD PTR [esi+32]
+  004fc        8b 5e 1c         mov     ebx, DWORD PTR [esi+28]
+  004ff        8b 5b 24         mov     ebx, DWORD PTR [ebx+36]
+  00502        0f b6 1c 0b      movzx   ebx, BYTE PTR [ebx+ecx]
+  00506        41               inc     ecx
+  00507        89 4e 20         mov     DWORD PTR [esi+32], ecx
+
+; 842  :                 put_byte(s, val);
+
+  0050a        8b 4e 08         mov     ecx, DWORD PTR [esi+8]
+  0050d        88 1c 08         mov     BYTE PTR [eax+ecx], bl
+  00510        ff 46 14         inc     DWORD PTR [esi+20]
+
+; 843  :             } while (val != 0);
+
+  00513        85 db            test    ebx, ebx
+  00515        75 a9            jne     SHORT $LL38@deflate
+  00517        eb 05            jmp     SHORT $LN36@deflate
+$LN103@deflate:
+
+; 837  :                         val = 1;
+
+  00519        bb 01 00 00 00   mov     ebx, 1
+$LN36@deflate:
+
+; 844  :             if (s->gzhead->hcrc && s->pending > beg)
+
+  0051e        8b 46 1c         mov     eax, DWORD PTR [esi+28]
+  00521        83 78 2c 00      cmp     DWORD PTR [eax+44], 0
+  00525        74 1c            je      SHORT $LN32@deflate
+  00527        8b 46 14         mov     eax, DWORD PTR [esi+20]
+  0052a        3b c2            cmp     eax, edx
+  0052c        76 15            jbe     SHORT $LN32@deflate
+
+; 845  :                 strm->adler = crc32(strm->adler, s->pending_buf + beg,
+; 846  :                                     s->pending - beg);
+
+  0052e        8b 4e 08         mov     ecx, DWORD PTR [esi+8]
+  00531        2b c2            sub     eax, edx
+  00533        50               push    eax
+  00534        03 ca            add     ecx, edx
+  00536        8b 57 30         mov     edx, DWORD PTR [edi+48]
+  00539        51               push    ecx
+  0053a        52               push    edx
+  0053b        e8 00 00 00 00   call    _crc32@12
+  00540        89 47 30         mov     DWORD PTR [edi+48], eax
+$LN32@deflate:
+
+; 847  :             if (val == 0)
+
+  00543        85 db            test    ebx, ebx
+  00545        75 07            jne     SHORT $LN30@deflate
+$LN39@deflate:
+
+; 848  :                 s->status = HCRC_STATE;
+; 849  :         }
+; 850  :         else
+; 851  :             s->status = HCRC_STATE;
+
+  00547        c7 46 04 67 00
+       00 00            mov     DWORD PTR [esi+4], 103 ; 00000067H
+$LN30@deflate:
+
+; 852  :     }
+; 853  :     if (s->status == HCRC_STATE) {
+
+  0054e        83 7e 04 67      cmp     DWORD PTR [esi+4], 103 ; 00000067H
+  00552        75 59            jne     SHORT $LN25@deflate
+
+; 854  :         if (s->gzhead->hcrc) {
+
+  00554        8b 46 1c         mov     eax, DWORD PTR [esi+28]
+  00557        83 78 2c 00      cmp     DWORD PTR [eax+44], 0
+  0055b        74 49            je      SHORT $LN28@deflate
+
+; 855  :             if (s->pending + 2 > s->pending_buf_size)
+
+  0055d        8b 4e 14         mov     ecx, DWORD PTR [esi+20]
+  00560        83 c1 02         add     ecx, 2
+  00563        3b 4e 0c         cmp     ecx, DWORD PTR [esi+12]
+  00566        76 05            jbe     SHORT $LN27@deflate
+
+; 856  :                 flush_pending(strm);
+
+  00568        e8 00 00 00 00   call    _flush_pending
+$LN27@deflate:
+
+; 857  :             if (s->pending + 2 <= s->pending_buf_size) {
+
+  0056d        8b 46 14         mov     eax, DWORD PTR [esi+20]
+  00570        8d 50 02         lea     edx, DWORD PTR [eax+2]
+  00573        3b 56 0c         cmp     edx, DWORD PTR [esi+12]
+  00576        77 35            ja      SHORT $LN25@deflate
+
+; 858  :                 put_byte(s, (Byte)(strm->adler & 0xff));
+
+  00578        8a 57 30         mov     dl, BYTE PTR [edi+48]
+  0057b        8b 4e 08         mov     ecx, DWORD PTR [esi+8]
+  0057e        88 14 08         mov     BYTE PTR [eax+ecx], dl
+
+; 859  :                 put_byte(s, (Byte)((strm->adler >> 8) & 0xff));
+
+  00581        8b 56 08         mov     edx, DWORD PTR [esi+8]
+  00584        b9 01 00 00 00   mov     ecx, 1
+  00589        01 4e 14         add     DWORD PTR [esi+20], ecx
+  0058c        8b 46 14         mov     eax, DWORD PTR [esi+20]
+  0058f        8a 5f 31         mov     bl, BYTE PTR [edi+49]
+
+; 860  :                 strm->adler = crc32(0L, Z_NULL, 0);
+
+  00592        6a 00            push    0
+  00594        6a 00            push    0
+  00596        88 1c 10         mov     BYTE PTR [eax+edx], bl
+  00599        01 4e 14         add     DWORD PTR [esi+20], ecx
+  0059c        6a 00            push    0
+  0059e        e8 00 00 00 00   call    _crc32@12
+  005a3        89 47 30         mov     DWORD PTR [edi+48], eax
+$LN28@deflate:
+
+; 861  :                 s->status = BUSY_STATE;
+; 862  :             }
+; 863  :         }
+; 864  :         else
+; 865  :             s->status = BUSY_STATE;
+
+  005a6        c7 46 04 71 00
+       00 00            mov     DWORD PTR [esi+4], 113 ; 00000071H
+$LN25@deflate:
+
+; 866  :     }
+; 867  : #endif
+; 868  : 
+; 869  :     /* Flush as much pending output as possible */
+; 870  :     if (s->pending != 0) {
+
+  005ad        83 7e 14 00      cmp     DWORD PTR [esi+20], 0
+  005b1        74 1d            je      SHORT $LN24@deflate
+
+; 871  :         flush_pending(strm);
+
+  005b3        e8 00 00 00 00   call    _flush_pending
+
+; 872  :         if (strm->avail_out == 0) {
+
+  005b8        83 7f 10 00      cmp     DWORD PTR [edi+16], 0
+  005bc        75 5e            jne     SHORT $LN106@deflate
+
+; 942  :               s->last_flush = -1; /* avoid BUF_ERROR at next call, see above */
+
+  005be        c7 46 28 ff ff
+       ff ff            mov     DWORD PTR [esi+40], -1
+$LN13@deflate:
+  005c5        5b               pop     ebx
+  005c6        5f               pop     edi
+
+; 943  :               return Z_OK;
+
+  005c7        33 c0            xor     eax, eax
+  005c9        5e               pop     esi
+
+; 976  : }
+
+  005ca        8b e5            mov     esp, ebp
+  005cc        5d               pop     ebp
+  005cd        c2 08 00         ret     8
+$LN24@deflate:
+
+; 873  :             /* Since avail_out is 0, deflate will be called again with
+; 874  :              * more output space, but possibly with both pending and
+; 875  :              * avail_in equal to zero. There won't be anything to do,
+; 876  :              * but this is not an error situation so make sure we
+; 877  :              * return OK instead of BUF_ERROR at next call of deflate:
+; 878  :              */
+; 879  :             s->last_flush = -1;
+; 880  :             return Z_OK;
+; 881  :         }
+; 882  : 
+; 883  :     /* Make sure there is something to do and avoid duplicate consecutive
+; 884  :      * flushes. For repeated and useless calls with Z_FINISH, we keep
+; 885  :      * returning Z_STREAM_END instead of Z_BUF_ERROR.
+; 886  :      */
+; 887  :     } else if (strm->avail_in == 0 && RANK(flush) <= RANK(old_flush) &&
+; 888  :                flush != Z_FINISH) {
+
+  005d0        83 7f 04 00      cmp     DWORD PTR [edi+4], 0
+  005d4        75 46            jne     SHORT $LN106@deflate
+  005d6        8b 45 fc         mov     eax, DWORD PTR _old_flush$[ebp]
+  005d9        33 c9            xor     ecx, ecx
+  005db        83 f8 04         cmp     eax, 4
+  005de        0f 9e c1         setle   cl
+  005e1        8d 14 00         lea     edx, DWORD PTR [eax+eax]
+  005e4        8b 45 0c         mov     eax, DWORD PTR _flush$[ebp]
+  005e7        8d 1c 00         lea     ebx, DWORD PTR [eax+eax]
+  005ea        49               dec     ecx
+  005eb        83 e1 09         and     ecx, 9
+  005ee        2b d1            sub     edx, ecx
+  005f0        33 c9            xor     ecx, ecx
+  005f2        83 f8 04         cmp     eax, 4
+  005f5        0f 9e c1         setle   cl
+  005f8        49               dec     ecx
+  005f9        83 e1 09         and     ecx, 9
+  005fc        2b d9            sub     ebx, ecx
+  005fe        3b da            cmp     ebx, edx
+  00600        7f 1d            jg      SHORT $LN108@deflate
+  00602        83 f8 04         cmp     eax, 4
+  00605        74 18            je      SHORT $LN108@deflate
+
+; 889  :         ERR_RETURN(strm, Z_BUF_ERROR);
+
+  00607        5b               pop     ebx
+  00608        c7 47 18 00 00
+       00 00            mov     DWORD PTR [edi+24], OFFSET ??_C@_0N@DFPGLBGC@buffer?5error?$AA@
+  0060f        5f               pop     edi
+  00610        b8 fb ff ff ff   mov     eax, -5                        ; fffffffbH
+  00615        5e               pop     esi
+
+; 976  : }
+
+  00616        8b e5            mov     esp, ebp
+  00618        5d               pop     ebp
+  00619        c2 08 00         ret     8
+$LN106@deflate:
+
+; 873  :             /* Since avail_out is 0, deflate will be called again with
+; 874  :              * more output space, but possibly with both pending and
+; 875  :              * avail_in equal to zero. There won't be anything to do,
+; 876  :              * but this is not an error situation so make sure we
+; 877  :              * return OK instead of BUF_ERROR at next call of deflate:
+; 878  :              */
+; 879  :             s->last_flush = -1;
+; 880  :             return Z_OK;
+; 881  :         }
+; 882  : 
+; 883  :     /* Make sure there is something to do and avoid duplicate consecutive
+; 884  :      * flushes. For repeated and useless calls with Z_FINISH, we keep
+; 885  :      * returning Z_STREAM_END instead of Z_BUF_ERROR.
+; 886  :      */
+; 887  :     } else if (strm->avail_in == 0 && RANK(flush) <= RANK(old_flush) &&
+; 888  :                flush != Z_FINISH) {
+
+  0061c        8b 45 0c         mov     eax, DWORD PTR _flush$[ebp]
+$LN108@deflate:
+
+; 890  :     }
+; 891  : 
+; 892  :     /* User must not provide more input after the first FINISH: */
+; 893  :     if (s->status == FINISH_STATE && strm->avail_in != 0) {
+
+  0061f        8b 4e 04         mov     ecx, DWORD PTR [esi+4]
+  00622        81 f9 9a 02 00
+       00               cmp     ecx, 666               ; 0000029aH
+  00628        75 1b            jne     SHORT $LN110@deflate
+  0062a        83 7f 04 00      cmp     DWORD PTR [edi+4], 0
+  0062e        74 1b            je      SHORT $LN113@deflate
+
+; 894  :         ERR_RETURN(strm, Z_BUF_ERROR);
+
+  00630        5b               pop     ebx
+  00631        c7 47 18 00 00
+       00 00            mov     DWORD PTR [edi+24], OFFSET ??_C@_0N@DFPGLBGC@buffer?5error?$AA@
+  00638        5f               pop     edi
+  00639        b8 fb ff ff ff   mov     eax, -5                        ; fffffffbH
+  0063e        5e               pop     esi
+
+; 976  : }
+
+  0063f        8b e5            mov     esp, ebp
+  00641        5d               pop     ebp
+  00642        c2 08 00         ret     8
+$LN110@deflate:
+
+; 895  :     }
+; 896  : 
+; 897  :     /* Start a new block or continue the current one.
+; 898  :      */
+; 899  :     if (strm->avail_in != 0 || s->lookahead != 0 ||
+; 900  :         (flush != Z_NO_FLUSH && s->status != FINISH_STATE)) {
+
+  00645        83 7f 04 00      cmp     DWORD PTR [edi+4], 0
+  00649        75 1a            jne     SHORT $LN18@deflate
+$LN113@deflate:
+  0064b        83 7e 74 00      cmp     DWORD PTR [esi+116], 0
+  0064f        75 14            jne     SHORT $LN18@deflate
+  00651        85 c0            test    eax, eax
+  00653        0f 84 f4 00 00
+       00               je      $LN107@deflate
+  00659        81 f9 9a 02 00
+       00               cmp     ecx, 666               ; 0000029aH
+  0065f        0f 84 e8 00 00
+       00               je      $LN107@deflate
+$LN18@deflate:
+
+; 901  :         block_state bstate;
+; 902  : 
+; 903  :         bstate = s->strategy == Z_HUFFMAN_ONLY ? deflate_huff(s, flush) :
+; 904  :                     (s->strategy == Z_RLE ? deflate_rle(s, flush) :
+; 905  :                         (*(configuration_table[s->level].func))(s, flush));
+
+  00665        8b 8e 88 00 00
+       00               mov     ecx, DWORD PTR [esi+136]
+  0066b        50               push    eax
+  0066c        83 f9 02         cmp     ecx, 2
+  0066f        75 0a            jne     SHORT $LN96@deflate
+  00671        e8 00 00 00 00   call    _deflate_huff
+  00676        83 c4 04         add     esp, 4
+  00679        eb 25            jmp     SHORT $LN95@deflate
+$LN96@deflate:
+  0067b        83 f9 03         cmp     ecx, 3
+  0067e        75 0a            jne     SHORT $LN94@deflate
+  00680        e8 00 00 00 00   call    _deflate_rle
+  00685        83 c4 04         add     esp, 4
+  00688        eb 16            jmp     SHORT $LN95@deflate
+$LN94@deflate:
+  0068a        8b 8e 84 00 00
+       00               mov     ecx, DWORD PTR [esi+132]
+  00690        8d 14 49         lea     edx, DWORD PTR [ecx+ecx*2]
+  00693        8b 04 95 08 00
+       00 00            mov     eax, DWORD PTR _configuration_table[edx*4+8]
+  0069a        56               push    esi
+  0069b        ff d0            call    eax
+  0069d        83 c4 08         add     esp, 8
+$LN95@deflate:
+
+; 906  : 
+; 907  :         if (bstate == finish_started || bstate == finish_done) {
+
+  006a0        83 f8 02         cmp     eax, 2
+  006a3        74 05            je      SHORT $LN16@deflate
+  006a5        83 f8 03         cmp     eax, 3
+  006a8        75 07            jne     SHORT $LN17@deflate
+$LN16@deflate:
+
+; 908  :             s->status = FINISH_STATE;
+
+  006aa        c7 46 04 9a 02
+       00 00            mov     DWORD PTR [esi+4], 666 ; 0000029aH
+$LN17@deflate:
+
+; 909  :         }
+; 910  :         if (bstate == need_more || bstate == finish_started) {
+
+  006b1        85 c0            test    eax, eax
+  006b3        0f 84 75 01 00
+       00               je      $LN14@deflate
+  006b9        83 f8 02         cmp     eax, 2
+  006bc        0f 84 6c 01 00
+       00               je      $LN14@deflate
+
+; 912  :                 s->last_flush = -1; /* avoid BUF_ERROR next call, see above */
+; 913  :             }
+; 914  :             return Z_OK;
+; 915  :             /* If flush != Z_NO_FLUSH && avail_out == 0, the next call
+; 916  :              * of deflate should use the same flush parameter to make sure
+; 917  :              * that the flush is complete. So we don't have to output an
+; 918  :              * empty block here, this will be done at next call. This also
+; 919  :              * ensures that for a very small output buffer, we emit at most
+; 920  :              * one empty block.
+; 921  :              */
+; 922  :         }
+; 923  :         if (bstate == block_done) {
+
+  006c2        bb 01 00 00 00   mov     ebx, 1
+  006c7        3b c3            cmp     eax, ebx
+  006c9        0f 85 83 00 00
+       00               jne     $LN6@deflate
+
+; 924  :             if (flush == Z_PARTIAL_FLUSH) {
+
+  006cf        8b 45 0c         mov     eax, DWORD PTR _flush$[ebp]
+  006d2        3b c3            cmp     eax, ebx
+  006d4        75 09            jne     SHORT $LN11@deflate
+
+; 925  :                 _tr_align(s);
+
+  006d6        8b c6            mov     eax, esi
+  006d8        e8 00 00 00 00   call    __tr_align
+  006dd        eb 51            jmp     SHORT $LN7@deflate
+$LN11@deflate:
+
+; 926  :             } else if (flush != Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */
+
+  006df        83 f8 05         cmp     eax, 5
+  006e2        74 4c            je      SHORT $LN7@deflate
+
+; 927  :                 _tr_stored_block(s, (char*)0, 0L, 0);
+
+  006e4        6a 00            push    0
+  006e6        6a 00            push    0
+  006e8        33 c9            xor     ecx, ecx
+  006ea        8b c6            mov     eax, esi
+  006ec        e8 00 00 00 00   call    __tr_stored_block
+  006f1        83 c4 08         add     esp, 8
+
+; 928  :                 /* For a full flush, this empty block will be recognized
+; 929  :                  * as a special marker by inflate_sync().
+; 930  :                  */
+; 931  :                 if (flush == Z_FULL_FLUSH) {
+
+  006f4        83 7d 0c 03      cmp     DWORD PTR _flush$[ebp], 3
+  006f8        75 36            jne     SHORT $LN7@deflate
+
+; 932  :                     CLEAR_HASH(s);             /* forget history */
+
+  006fa        8b 4e 4c         mov     ecx, DWORD PTR [esi+76]
+  006fd        8b 56 44         mov     edx, DWORD PTR [esi+68]
+  00700        33 c0            xor     eax, eax
+  00702        66 89 44 4a fe   mov     WORD PTR [edx+ecx*2-2], ax
+  00707        8b 4e 4c         mov     ecx, DWORD PTR [esi+76]
+  0070a        8d 54 09 fe      lea     edx, DWORD PTR [ecx+ecx-2]
+  0070e        52               push    edx
+  0070f        50               push    eax
+  00710        8b 46 44         mov     eax, DWORD PTR [esi+68]
+  00713        50               push    eax
+  00714        e8 00 00 00 00   call    _memset
+  00719        83 c4 0c         add     esp, 12                        ; 0000000cH
+
+; 933  :                     if (s->lookahead == 0) {
+
+  0071c        83 7e 74 00      cmp     DWORD PTR [esi+116], 0
+  00720        75 0e            jne     SHORT $LN7@deflate
+
+; 934  :                         s->strstart = 0;
+
+  00722        33 c0            xor     eax, eax
+  00724        89 46 6c         mov     DWORD PTR [esi+108], eax
+
+; 935  :                         s->block_start = 0L;
+
+  00727        89 46 5c         mov     DWORD PTR [esi+92], eax
+
+; 936  :                         s->insert = 0;
+
+  0072a        89 86 b4 16 00
+       00               mov     DWORD PTR [esi+5812], eax
+$LN7@deflate:
+
+; 937  :                     }
+; 938  :                 }
+; 939  :             }
+; 940  :             flush_pending(strm);
+
+  00730        e8 00 00 00 00   call    _flush_pending
+
+; 941  :             if (strm->avail_out == 0) {
+
+  00735        83 7f 10 00      cmp     DWORD PTR [edi+16], 0
+  00739        75 17            jne     SHORT $LN6@deflate
+
+; 942  :               s->last_flush = -1; /* avoid BUF_ERROR at next call, see above */
+
+  0073b        5b               pop     ebx
+  0073c        5f               pop     edi
+  0073d        c7 46 28 ff ff
+       ff ff            mov     DWORD PTR [esi+40], -1
+
+; 943  :               return Z_OK;
+
+  00744        33 c0            xor     eax, eax
+  00746        5e               pop     esi
+
+; 976  : }
+
+  00747        8b e5            mov     esp, ebp
+  00749        5d               pop     ebp
+  0074a        c2 08 00         ret     8
+$LN107@deflate:
+
+; 941  :             if (strm->avail_out == 0) {
+
+  0074d        bb 01 00 00 00   mov     ebx, 1
+$LN6@deflate:
+
+; 944  :             }
+; 945  :         }
+; 946  :     }
+; 947  :     Assert(strm->avail_out > 0, "bug2");
+; 948  : 
+; 949  :     if (flush != Z_FINISH) return Z_OK;
+
+  00752        83 7d 0c 04      cmp     DWORD PTR _flush$[ebp], 4
+  00756        0f 85 69 fe ff
+       ff               jne     $LN13@deflate
+
+; 950  :     if (s->wrap <= 0) return Z_STREAM_END;
+
+  0075c        8b 46 18         mov     eax, DWORD PTR [esi+24]
+  0075f        85 c0            test    eax, eax
+  00761        7f 0b            jg      SHORT $LN4@deflate
+  00763        8b c3            mov     eax, ebx
+  00765        5b               pop     ebx
+  00766        5f               pop     edi
+  00767        5e               pop     esi
+
+; 976  : }
+
+  00768        8b e5            mov     esp, ebp
+  0076a        5d               pop     ebp
+  0076b        c2 08 00         ret     8
+$LN4@deflate:
+
+; 951  : 
+; 952  :     /* Write the trailer */
+; 953  : #ifdef GZIP
+; 954  :     if (s->wrap == 2) {
+
+  0076e        83 f8 02         cmp     eax, 2
+  00771        0f 85 81 00 00
+       00               jne     $LN3@deflate
+
+; 955  :         put_byte(s, (Byte)(strm->adler & 0xff));
+
+  00777        8b 56 14         mov     edx, DWORD PTR [esi+20]
+  0077a        8a 47 30         mov     al, BYTE PTR [edi+48]
+  0077d        8b 4e 08         mov     ecx, DWORD PTR [esi+8]
+  00780        88 04 11         mov     BYTE PTR [ecx+edx], al
+  00783        01 5e 14         add     DWORD PTR [esi+20], ebx
+
+; 956  :         put_byte(s, (Byte)((strm->adler >> 8) & 0xff));
+
+  00786        0f b6 57 31      movzx   edx, BYTE PTR [edi+49]
+  0078a        8b 46 14         mov     eax, DWORD PTR [esi+20]
+  0078d        8b 4e 08         mov     ecx, DWORD PTR [esi+8]
+  00790        88 14 08         mov     BYTE PTR [eax+ecx], dl
+  00793        01 5e 14         add     DWORD PTR [esi+20], ebx
+
+; 957  :         put_byte(s, (Byte)((strm->adler >> 16) & 0xff));
+
+  00796        0f b6 57 32      movzx   edx, BYTE PTR [edi+50]
+  0079a        8b 46 14         mov     eax, DWORD PTR [esi+20]
+  0079d        8b 4e 08         mov     ecx, DWORD PTR [esi+8]
+  007a0        88 14 08         mov     BYTE PTR [eax+ecx], dl
+  007a3        01 5e 14         add     DWORD PTR [esi+20], ebx
+
+; 958  :         put_byte(s, (Byte)((strm->adler >> 24) & 0xff));
+
+  007a6        0f b6 57 33      movzx   edx, BYTE PTR [edi+51]
+  007aa        8b 46 14         mov     eax, DWORD PTR [esi+20]
+  007ad        8b 4e 08         mov     ecx, DWORD PTR [esi+8]
+  007b0        88 14 08         mov     BYTE PTR [eax+ecx], dl
+  007b3        01 5e 14         add     DWORD PTR [esi+20], ebx
+
+; 959  :         put_byte(s, (Byte)(strm->total_in & 0xff));
+
+  007b6        0f b6 57 08      movzx   edx, BYTE PTR [edi+8]
+  007ba        8b 46 14         mov     eax, DWORD PTR [esi+20]
+  007bd        8b 4e 08         mov     ecx, DWORD PTR [esi+8]
+  007c0        88 14 08         mov     BYTE PTR [eax+ecx], dl
+  007c3        01 5e 14         add     DWORD PTR [esi+20], ebx
+
+; 960  :         put_byte(s, (Byte)((strm->total_in >> 8) & 0xff));
+
+  007c6        0f b6 57 09      movzx   edx, BYTE PTR [edi+9]
+  007ca        8b 46 14         mov     eax, DWORD PTR [esi+20]
+  007cd        8b 4e 08         mov     ecx, DWORD PTR [esi+8]
+  007d0        88 14 08         mov     BYTE PTR [eax+ecx], dl
+  007d3        01 5e 14         add     DWORD PTR [esi+20], ebx
+
+; 961  :         put_byte(s, (Byte)((strm->total_in >> 16) & 0xff));
+
+  007d6        0f b6 57 0a      movzx   edx, BYTE PTR [edi+10]
+  007da        8b 46 14         mov     eax, DWORD PTR [esi+20]
+  007dd        8b 4e 08         mov     ecx, DWORD PTR [esi+8]
+  007e0        88 14 08         mov     BYTE PTR [eax+ecx], dl
+  007e3        01 5e 14         add     DWORD PTR [esi+20], ebx
+
+; 962  :         put_byte(s, (Byte)((strm->total_in >> 24) & 0xff));
+
+  007e6        0f b6 57 0b      movzx   edx, BYTE PTR [edi+11]
+  007ea        8b 46 14         mov     eax, DWORD PTR [esi+20]
+  007ed        8b 4e 08         mov     ecx, DWORD PTR [esi+8]
+  007f0        88 14 08         mov     BYTE PTR [eax+ecx], dl
+  007f3        01 5e 14         add     DWORD PTR [esi+20], ebx
+
+; 963  :     }
+; 964  :     else
+
+  007f6        eb 14            jmp     SHORT $LN2@deflate
+$LN3@deflate:
+
+; 965  : #endif
+; 966  :     {
+; 967  :         putShortMSB(s, (uInt)(strm->adler >> 16));
+
+  007f8        0f b7 4f 32      movzx   ecx, WORD PTR [edi+50]
+  007fc        8b c6            mov     eax, esi
+  007fe        e8 00 00 00 00   call    _putShortMSB
+
+; 968  :         putShortMSB(s, (uInt)(strm->adler & 0xffff));
+
+  00803        0f b7 4f 30      movzx   ecx, WORD PTR [edi+48]
+  00807        e8 00 00 00 00   call    _putShortMSB
+$LN2@deflate:
+
+; 969  :     }
+; 970  :     flush_pending(strm);
+
+  0080c        e8 00 00 00 00   call    _flush_pending
+
+; 971  :     /* If avail_out is zero, the application will call deflate again
+; 972  :      * to flush the rest.
+; 973  :      */
+; 974  :     if (s->wrap > 0) s->wrap = -s->wrap; /* write the trailer only once! */
+
+  00811        8b 46 18         mov     eax, DWORD PTR [esi+24]
+  00814        85 c0            test    eax, eax
+  00816        7e 05            jle     SHORT $LN1@deflate
+  00818        f7 d8            neg     eax
+  0081a        89 46 18         mov     DWORD PTR [esi+24], eax
+$LN1@deflate:
+
+; 975  :     return s->pending != 0 ? Z_OK : Z_STREAM_END;
+
+  0081d        33 c0            xor     eax, eax
+  0081f        39 46 14         cmp     DWORD PTR [esi+20], eax
+  00822        5b               pop     ebx
+  00823        5f               pop     edi
+  00824        0f 94 c0         sete    al
+  00827        5e               pop     esi
+
+; 976  : }
+
+  00828        8b e5            mov     esp, ebp
+  0082a        5d               pop     ebp
+  0082b        c2 08 00         ret     8
+$LN14@deflate:
+
+; 911  :             if (strm->avail_out == 0) {
+
+  0082e        83 7f 10 00      cmp     DWORD PTR [edi+16], 0
+  00832        0f 85 8d fd ff
+       ff               jne     $LN13@deflate
+
+; 942  :               s->last_flush = -1; /* avoid BUF_ERROR at next call, see above */
+
+  00838        5b               pop     ebx
+  00839        5f               pop     edi
+  0083a        c7 46 28 ff ff
+       ff ff            mov     DWORD PTR [esi+40], -1
+
+; 943  :               return Z_OK;
+
+  00841        33 c0            xor     eax, eax
+  00843        5e               pop     esi
+
+; 976  : }
+
+  00844        8b e5            mov     esp, ebp
+  00846        5d               pop     ebp
+  00847        c2 08 00         ret     8
+$LN80@deflate:
+
+; 681  :         ERR_RETURN(strm, Z_STREAM_ERROR);
+
+  0084a        c7 47 18 00 00
+       00 00            mov     DWORD PTR [edi+24], OFFSET ??_C@_0N@MKKNPMJD@stream?5error?$AA@
+$LN82@deflate:
+  00851        5f               pop     edi
+  00852        b8 fe ff ff ff   mov     eax, -2                        ; fffffffeH
+  00857        5e               pop     esi
+
+; 976  : }
+
+  00858        8b e5            mov     esp, ebp
+  0085a        5d               pop     ebp
+  0085b        c2 08 00         ret     8
+_deflate@8 ENDP
+_TEXT  ENDS
+PUBLIC _deflateParams@12
+; Function compile flags: /Ogtp
+;      COMDAT _deflateParams@12
+_TEXT  SEGMENT
+_strm$ = 8                                             ; size = 4
+_level$ = 12                                           ; size = 4
+_strategy$ = 16                                                ; size = 4
+_deflateParams@12 PROC                                 ; COMDAT
+
+; 494  : {
+
+  00000        55               push    ebp
+  00001        8b ec            mov     ebp, esp
+
+; 495  :     deflate_state *s;
+; 496  :     compress_func func;
+; 497  :     int err = Z_OK;
+; 498  : 
+; 499  :     if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+
+  00003        8b 55 08         mov     edx, DWORD PTR _strm$[ebp]
+  00006        33 c0            xor     eax, eax
+  00008        56               push    esi
+  00009        85 d2            test    edx, edx
+  0000b        0f 84 d6 00 00
+       00               je      $LN8@deflatePar
+  00011        8b 72 1c         mov     esi, DWORD PTR [edx+28]
+  00014        85 f6            test    esi, esi
+  00016        0f 84 cb 00 00
+       00               je      $LN8@deflatePar
+
+; 500  :     s = strm->state;
+; 501  : 
+; 502  : #ifdef FASTEST
+; 503  :     if (level != 0) level = 1;
+; 504  : #else
+; 505  :     if (level == Z_DEFAULT_COMPRESSION) level = 6;
+
+  0001c        57               push    edi
+  0001d        8b 7d 0c         mov     edi, DWORD PTR _level$[ebp]
+  00020        83 ff ff         cmp     edi, -1
+  00023        75 05            jne     SHORT $LN7@deflatePar
+  00025        8d 78 06         lea     edi, DWORD PTR [eax+6]
+
+; 506  : #endif
+; 507  :     if (level < 0 || level > 9 || strategy < 0 || strategy > Z_FIXED) {
+
+  00028        eb 11            jmp     SHORT $LN13@deflatePar
+$LN7@deflatePar:
+  0002a        85 ff            test    edi, edi
+  0002c        0f 88 aa 00 00
+       00               js      $LN5@deflatePar
+  00032        83 ff 09         cmp     edi, 9
+  00035        0f 8f a1 00 00
+       00               jg      $LN5@deflatePar
+$LN13@deflatePar:
+  0003b        8b 4d 10         mov     ecx, DWORD PTR _strategy$[ebp]
+  0003e        83 f9 04         cmp     ecx, 4
+  00041        0f 87 95 00 00
+       00               ja      $LN5@deflatePar
+
+; 511  : 
+; 512  :     if ((strategy != s->strategy || func != configuration_table[level].func) &&
+; 513  :         strm->total_in != 0) {
+
+  00047        3b 8e 88 00 00
+       00               cmp     ecx, DWORD PTR [esi+136]
+  0004d        75 1e            jne     SHORT $LN3@deflatePar
+
+; 509  :     }
+; 510  :     func = configuration_table[s->level].func;
+
+  0004f        8b 8e 84 00 00
+       00               mov     ecx, DWORD PTR [esi+132]
+  00055        53               push    ebx
+  00056        8d 0c 49         lea     ecx, DWORD PTR [ecx+ecx*2]
+
+; 511  : 
+; 512  :     if ((strategy != s->strategy || func != configuration_table[level].func) &&
+; 513  :         strm->total_in != 0) {
+
+  00059        8b 0c 8d 08 00
+       00 00            mov     ecx, DWORD PTR _configuration_table[ecx*4+8]
+  00060        8d 1c 7f         lea     ebx, DWORD PTR [edi+edi*2]
+  00063        3b 0c 9d 08 00
+       00 00            cmp     ecx, DWORD PTR _configuration_table[ebx*4+8]
+  0006a        5b               pop     ebx
+  0006b        74 1a            je      SHORT $LN14@deflatePar
+$LN3@deflatePar:
+  0006d        39 42 08         cmp     DWORD PTR [edx+8], eax
+  00070        74 15            je      SHORT $LN14@deflatePar
+
+; 514  :         /* Flush the last buffer: */
+; 515  :         err = deflate(strm, Z_BLOCK);
+
+  00072        6a 05            push    5
+  00074        52               push    edx
+  00075        e8 00 00 00 00   call    _deflate@8
+
+; 516  :         if (err == Z_BUF_ERROR && s->pending == 0)
+
+  0007a        83 f8 fb         cmp     eax, -5                        ; fffffffbH
+  0007d        75 08            jne     SHORT $LN14@deflatePar
+  0007f        83 7e 14 00      cmp     DWORD PTR [esi+20], 0
+  00083        75 02            jne     SHORT $LN14@deflatePar
+
+; 517  :             err = Z_OK;
+
+  00085        33 c0            xor     eax, eax
+$LN14@deflatePar:
+
+; 518  :     }
+; 519  :     if (s->level != level) {
+
+  00087        39 be 84 00 00
+       00               cmp     DWORD PTR [esi+132], edi
+  0008d        74 3e            je      SHORT $LN1@deflatePar
+
+; 520  :         s->level = level;
+; 521  :         s->max_lazy_match   = configuration_table[level].max_lazy;
+
+  0008f        8d 0c 7f         lea     ecx, DWORD PTR [edi+edi*2]
+  00092        03 c9            add     ecx, ecx
+  00094        03 c9            add     ecx, ecx
+  00096        89 be 84 00 00
+       00               mov     DWORD PTR [esi+132], edi
+  0009c        0f b7 91 02 00
+       00 00            movzx   edx, WORD PTR _configuration_table[ecx+2]
+  000a3        89 96 80 00 00
+       00               mov     DWORD PTR [esi+128], edx
+
+; 522  :         s->good_match       = configuration_table[level].good_length;
+
+  000a9        0f b7 91 00 00
+       00 00            movzx   edx, WORD PTR _configuration_table[ecx]
+  000b0        89 96 8c 00 00
+       00               mov     DWORD PTR [esi+140], edx
+
+; 523  :         s->nice_match       = configuration_table[level].nice_length;
+
+  000b6        0f b7 91 04 00
+       00 00            movzx   edx, WORD PTR _configuration_table[ecx+4]
+  000bd        89 96 90 00 00
+       00               mov     DWORD PTR [esi+144], edx
+
+; 524  :         s->max_chain_length = configuration_table[level].max_chain;
+
+  000c3        0f b7 89 06 00
+       00 00            movzx   ecx, WORD PTR _configuration_table[ecx+6]
+  000ca        89 4e 7c         mov     DWORD PTR [esi+124], ecx
+$LN1@deflatePar:
+
+; 525  :     }
+; 526  :     s->strategy = strategy;
+
+  000cd        8b 55 10         mov     edx, DWORD PTR _strategy$[ebp]
+  000d0        5f               pop     edi
+  000d1        89 96 88 00 00
+       00               mov     DWORD PTR [esi+136], edx
+  000d7        5e               pop     esi
+
+; 527  :     return err;
+; 528  : }
+
+  000d8        5d               pop     ebp
+  000d9        c2 0c 00         ret     12                     ; 0000000cH
+$LN5@deflatePar:
+  000dc        5f               pop     edi
+
+; 508  :         return Z_STREAM_ERROR;
+
+  000dd        b8 fe ff ff ff   mov     eax, -2                        ; fffffffeH
+  000e2        5e               pop     esi
+
+; 527  :     return err;
+; 528  : }
+
+  000e3        5d               pop     ebp
+  000e4        c2 0c 00         ret     12                     ; 0000000cH
+$LN8@deflatePar:
+
+; 495  :     deflate_state *s;
+; 496  :     compress_func func;
+; 497  :     int err = Z_OK;
+; 498  : 
+; 499  :     if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+
+  000e7        b8 fe ff ff ff   mov     eax, -2                        ; fffffffeH
+  000ec        5e               pop     esi
+
+; 527  :     return err;
+; 528  : }
+
+  000ed        5d               pop     ebp
+  000ee        c2 0c 00         ret     12                     ; 0000000cH
+_deflateParams@12 ENDP
+END