Microsoft (R) Macro Assembler Version 10.00.40219.01	    08/26/16 23:18:07
inffas32.asm						     Page 1 - 1


				;/* inffas32.asm is a hand tuned assembler version of inffast.c -- fast decoding
				; *
				; * inffas32.asm is derivated from inffas86.c, with translation of assembly code
				; *
				; * Copyright (C) 1995-2003 Mark Adler
				; * For conditions of distribution and use, see copyright notice in zlib.h
				; *
				; * Copyright (C) 2003 Chris Anderson <christop@charm.net>
				; * Please use the copyright conditions above.
				; *
				; * Mar-13-2003 -- Most of this is derived from inffast.S which is derived from
				; * the gcc -S output of zlib-1.2.0/inffast.c.  Zlib-1.2.0 is in beta release at
				; * the moment.  I have successfully compiled and tested this code with gcc2.96,
				; * gcc3.2, icc5.0, msvc6.0.  It is very close to the speed of inffast.S
				; * compiled with gcc -DNO_MMX, but inffast.S is still faster on the P3 with MMX
				; * enabled.  I will attempt to merge the MMX code into this version.  Newer
				; * versions of this and inffast.S can be found at
				; * http://www.eetbeetee.com/zlib/ and http://www.charm.net/~christop/zlib/
				; *
				; * 2005 : modification by Gilles Vollant
				; */
				; For Visual C++ 4.x and higher and ML 6.x and higher
				;   ml.exe is in directory \MASM611C of Win95 DDK
				;   ml.exe is also distributed in http://www.masm32.com/masmdl.htm
				;    and in VC++2003 toolkit at http://msdn.microsoft.com/visualc/vctoolkit2003/
				;
				;
				;   compile with command line option
				;   ml  /coff /Zi /c /Flinffas32.lst inffas32.asm

				;   if you define NO_GZIP (see inflate.h), compile with
				;   ml  /coff /Zi /c /Flinffas32.lst /DNO_GUNZIP inffas32.asm


				; zlib122sup is 0 fort zlib 1.2.2.1 and lower
				; zlib122sup is 8 fort zlib 1.2.2.2 and more (with addition of dmax and head
				;        in inflate_state in inflate.h)
 = 00000008			zlib1222sup      equ    8


				IFDEF GUNZIP
				ELSE
				  IFNDEF NO_GUNZIP
 = 0000000B			    INFLATE_MODE_TYPE    equ 11
 = 0000001A			    INFLATE_MODE_BAD     equ 26
				  ELSE
				  ENDIF
				ENDIF


				; 75 "inffast.S"
				;FILE "inffast.S"

				;;;GLOBAL _inflate_fast

				;;;SECTION .text



					.586p
					.mmx

					name	inflate_fast_x86
					.MODEL	FLAT

 00000000			_DATA			segment
 00000000			inflate_fast_use_mmx:
 00000000  00000001			dd	1


 00000000			_TEXT			segment



				ALIGN 4
 00000000  46 61 73 74 20		db	'Fast decoding Code from Chris Anderson'
	   64 65 63 6F 64
	   69 6E 67 20 43
	   6F 64 65 20 66
	   72 6F 6D 20 43
	   68 72 69 73 20
	   41 6E 64 65 72
	   73 6F 6E
 00000026  00				db	0

				ALIGN 4
 00000028			invalid_literal_length_code_msg:
 00000028  69 6E 76 61 6C		db	'invalid literal/length code'
	   69 64 20 6C 69
	   74 65 72 61 6C
	   2F 6C 65 6E 67
	   74 68 20 63 6F
	   64 65
 00000043  00				db	0

				ALIGN 4
 00000044			invalid_distance_code_msg:
 00000044  69 6E 76 61 6C		db	'invalid distance code'
	   69 64 20 64 69
	   73 74 61 6E 63
	   65 20 63 6F 64
	   65
 00000059  00				db	0

				ALIGN 4
 0000005C			invalid_distance_too_far_msg:
 0000005C  69 6E 76 61 6C		db	'invalid distance too far back'
	   69 64 20 64 69
	   73 74 61 6E 63
	   65 20 74 6F 6F
	   20 66 61 72 20
	   62 61 63 6B
 00000079  00				db	0


				ALIGN 4
 0000007C			inflate_fast_mask:
 0000007C  00000000		dd	0
 00000080  00000001		dd	1
 00000084  00000003		dd	3
 00000088  00000007		dd	7
 0000008C  0000000F		dd	15
 00000090  0000001F		dd	31
 00000094  0000003F		dd	63
 00000098  0000007F		dd	127
 0000009C  000000FF		dd	255
 000000A0  000001FF		dd	511
 000000A4  000003FF		dd	1023
 000000A8  000007FF		dd	2047
 000000AC  00000FFF		dd	4095
 000000B0  00001FFF		dd	8191
 000000B4  00003FFF		dd	16383
 000000B8  00007FFF		dd	32767
 000000BC  0000FFFF		dd	65535
 000000C0  0001FFFF		dd	131071
 000000C4  0003FFFF		dd	262143
 000000C8  0007FFFF		dd	524287
 000000CC  000FFFFF		dd	1048575
 000000D0  001FFFFF		dd	2097151
 000000D4  003FFFFF		dd	4194303
 000000D8  007FFFFF		dd	8388607
 000000DC  00FFFFFF		dd	16777215
 000000E0  01FFFFFF		dd	33554431
 000000E4  03FFFFFF		dd	67108863
 000000E8  07FFFFFF		dd	134217727
 000000EC  0FFFFFFF		dd	268435455
 000000F0  1FFFFFFF		dd	536870911
 000000F4  3FFFFFFF		dd	1073741823
 000000F8  7FFFFFFF		dd	2147483647
 000000FC  FFFFFFFF		dd	4294967295


 = 00000000			mode_state	 equ	0	;/* state->mode	*/
 = 00000028			wsize_state	 equ	(32+zlib1222sup)	;/* state->wsize */
 = 00000030			write_state	 equ	(36+4+zlib1222sup)	;/* state->write */
 = 00000034			window_state	 equ	(40+4+zlib1222sup)	;/* state->window */
 = 00000038			hold_state	 equ	(44+4+zlib1222sup)	;/* state->hold	*/
 = 0000003C			bits_state	 equ	(48+4+zlib1222sup)	;/* state->bits	*/
 = 0000004C			lencode_state	 equ	(64+4+zlib1222sup)	;/* state->lencode */
 = 00000050			distcode_state	 equ	(68+4+zlib1222sup)	;/* state->distcode */
 = 00000054			lenbits_state	 equ	(72+4+zlib1222sup)	;/* state->lenbits */
 = 00000058			distbits_state	 equ	(76+4+zlib1222sup)	;/* state->distbits */


				;;SECTION .text
				; 205 "inffast.S"
				;GLOBAL	inflate_fast_use_mmx

				;SECTION .data


				; GLOBAL inflate_fast_use_mmx:object
				;.size inflate_fast_use_mmx, 4
				; 226 "inffast.S"
				;SECTION .text

				ALIGN 4
 00000100			_inflate_fast proc near
 00000100			.FPO (16, 4, 0, 0, 1, 0)
 00000100  57				push  edi
 00000101  56				push  esi
 00000102  55				push  ebp
 00000103  53				push  ebx
 00000104  9C				pushfd
 00000105  83 EC 40			sub  esp,64
 00000108  FC				cld




 00000109  8B 74 24 58			mov  esi, [esp+88]
 0000010D  8B 7E 1C			mov  edi, [esi+28]







 00000110  8B 56 04			mov  edx, [esi+4]
 00000113  8B 06			mov  eax, [esi+0]

 00000115  03 D0			add  edx,eax
 00000117  83 EA 0B			sub  edx,11

 0000011A  89 44 24 2C			mov  [esp+44],eax
 0000011E  89 54 24 14			mov  [esp+20],edx

 00000122  8B 6C 24 5C			mov  ebp, [esp+92]
 00000126  8B 4E 10			mov  ecx, [esi+16]
 00000129  8B 5E 0C			mov  ebx, [esi+12]

 0000012C  2B E9			sub  ebp,ecx
 0000012E  F7 DD			neg  ebp
 00000130  03 EB			add  ebp,ebx

 00000132  81 E9 00000101		sub  ecx,257
 00000138  03 CB			add  ecx,ebx

 0000013A  89 5C 24 3C			mov  [esp+60],ebx
 0000013E  89 6C 24 28			mov  [esp+40],ebp
 00000142  89 4C 24 10			mov  [esp+16],ecx
				; 285 "inffast.S"
 00000146  8B 47 4C			mov  eax, [edi+lencode_state]
 00000149  8B 4F 50			mov  ecx, [edi+distcode_state]

 0000014C  89 44 24 08			mov  [esp+8],eax
 00000150  89 4C 24 0C			mov  [esp+12],ecx

 00000154  B8 00000001			mov  eax,1
 00000159  8B 4F 54			mov  ecx, [edi+lenbits_state]
 0000015C  D3 E0			shl  eax,cl
 0000015E  48				dec  eax
 0000015F  89 04 24			mov  [esp+0],eax

 00000162  B8 00000001			mov  eax,1
 00000167  8B 4F 58			mov  ecx, [edi+distbits_state]
 0000016A  D3 E0			shl  eax,cl
 0000016C  48				dec  eax
 0000016D  89 44 24 04			mov  [esp+4],eax

 00000171  8B 47 28			mov  eax, [edi+wsize_state]
 00000174  8B 4F 30			mov  ecx, [edi+write_state]
 00000177  8B 57 34			mov  edx, [edi+window_state]

 0000017A  89 44 24 34			mov  [esp+52],eax
 0000017E  89 4C 24 30			mov  [esp+48],ecx
 00000182  89 54 24 38			mov  [esp+56],edx

 00000186  8B 6F 38			mov  ebp, [edi+hold_state]
 00000189  8B 5F 3C			mov  ebx, [edi+bits_state]
				; 321 "inffast.S"
 0000018C  8B 74 24 2C			mov  esi, [esp+44]
 00000190  8B 4C 24 14			mov  ecx, [esp+20]
 00000194  3B CE			cmp  ecx,esi
 00000196  77 22			ja   L_align_long

 00000198  83 C1 0B			add  ecx,11
 0000019B  2B CE			sub  ecx,esi
 0000019D  B8 0000000C			mov  eax,12
 000001A2  2B C1			sub  eax,ecx
 000001A4  8D 7C 24 1C			lea  edi, [esp+28]
 000001A8  F3/ A4			rep movsb
 000001AA  8B C8			mov  ecx,eax
 000001AC  33 C0			xor  eax,eax
 000001AE  F3/ AA			rep stosb
 000001B0  8D 74 24 1C			lea  esi, [esp+28]
 000001B4  89 74 24 14			mov  [esp+20],esi
 000001B8  EB 18			jmp  L_is_aligned


 000001BA			L_align_long:
 000001BA  F7 C6 00000003		test  esi,3
 000001C0  74 10			jz   L_is_aligned
 000001C2  33 C0			xor  eax,eax
 000001C4  8A 06			mov  al, [esi]
 000001C6  46				inc  esi
 000001C7  8B CB			mov  ecx,ebx
 000001C9  83 C3 08			add  ebx,8
 000001CC  D3 E0			shl  eax,cl
 000001CE  0B E8			or  ebp,eax
 000001D0  EB E8			jmp L_align_long

 000001D2			L_is_aligned:
 000001D2  8B 7C 24 3C			mov  edi, [esp+60]
				; 366 "inffast.S"
 000001D6			L_check_mmx:
 000001D6  83 3D 00000000 R		cmp  dword ptr [inflate_fast_use_mmx],2
	   02
 000001DD  0F 84 00000289		je   L_init_mmx
 000001E3  77 6B			ja   L_do_loop

 000001E5  50				push  eax
 000001E6  53				push  ebx
 000001E7  51				push  ecx
 000001E8  52				push  edx
 000001E9  9C				pushfd
 000001EA  8B 04 24			mov  eax, [esp]
 000001ED  81 34 24			xor  dword ptr [esp],0200000h
	   00200000




 000001F4  9D				popfd
 000001F5  9C				pushfd
 000001F6  5A				pop  edx
 000001F7  33 D0			xor  edx,eax
 000001F9  74 44			jz   L_dont_use_mmx
 000001FB  33 C0			xor  eax,eax
 000001FD  0F A2			cpuid
 000001FF  81 FB 756E6547		cmp  ebx,0756e6547h
 00000205  75 38			jne  L_dont_use_mmx
 00000207  81 F9 6C65746E		cmp  ecx,06c65746eh
 0000020D  75 30			jne  L_dont_use_mmx
 0000020F  81 FA 49656E69		cmp  edx,049656e69h
 00000215  75 28			jne  L_dont_use_mmx
 00000217  B8 00000001			mov  eax,1
 0000021C  0F A2			cpuid
 0000021E  C1 E8 08			shr  eax,8
 00000221  83 E0 0F			and  eax,15
 00000224  83 F8 06			cmp  eax,6
 00000227  75 16			jne  L_dont_use_mmx
 00000229  F7 C2 00800000		test  edx,0800000h
 0000022F  75 02			jnz  L_use_mmx
 00000231  EB 0C			jmp  L_dont_use_mmx
 00000233			L_use_mmx:
 00000233  C7 05 00000000 R		mov  dword ptr [inflate_fast_use_mmx],2
	   00000002
 0000023D  EB 0A			jmp  L_check_mmx_pop
 0000023F			L_dont_use_mmx:
 0000023F  C7 05 00000000 R		mov  dword ptr [inflate_fast_use_mmx],3
	   00000003
 00000249			L_check_mmx_pop:
 00000249  5A				pop  edx
 0000024A  59				pop  ecx
 0000024B  5B				pop  ebx
 0000024C  58				pop  eax
 0000024D  EB 87			jmp  L_check_mmx
				; 426 "inffast.S"
				ALIGN 4
 00000250			L_do_loop:
				; 437 "inffast.S"
 00000250  80 FB 0F			cmp  bl,15
 00000253  77 0D			ja   L_get_length_code

 00000255  33 C0			xor  eax,eax
 00000257  66| AD			lodsw
 00000259  8A CB			mov  cl,bl
 0000025B  80 C3 10			add  bl,16
 0000025E  D3 E0			shl  eax,cl
 00000260  0B E8			or  ebp,eax

 00000262			L_get_length_code:
 00000262  8B 14 24			mov  edx, [esp+0]
 00000265  8B 4C 24 08			mov  ecx, [esp+8]
 00000269  23 D5			and  edx,ebp
 0000026B  8B 04 91			mov  eax, [ecx+edx*4]

 0000026E			L_dolen:






 0000026E  8A CC			mov  cl,ah
 00000270  2A DC			sub  bl,ah
 00000272  D3 ED			shr  ebp,cl






 00000274  84 C0			test  al,al
 00000276  75 19			jnz   L_test_for_length_base

 00000278  C1 E8 10			shr  eax,16
 0000027B  AA				stosb

 0000027C			L_while_test:


 0000027C  39 7C 24 10			cmp  [esp+16],edi
 00000280  0F 86 00000462		jbe  L_break_loop

 00000286  39 74 24 14			cmp  [esp+20],esi
 0000028A  77 C4			ja   L_do_loop
 0000028C  E9 00000457			jmp  L_break_loop

 00000291			L_test_for_length_base:
				; 502 "inffast.S"
 00000291  8B D0			mov  edx,eax
 00000293  C1 EA 10			shr  edx,16
 00000296  8A C8			mov  cl,al

 00000298  A8 10			test  al,16
 0000029A  0F 84 000000F4		jz   L_test_for_second_level_length
 000002A0  80 E1 0F			and  cl,15
 000002A3  74 25			jz   L_save_len
 000002A5  3A D9			cmp  bl,cl
 000002A7  73 11			jae  L_add_bits_to_len

 000002A9  8A E9			mov  ch,cl
 000002AB  33 C0			xor  eax,eax
 000002AD  66| AD			lodsw
 000002AF  8A CB			mov  cl,bl
 000002B1  80 C3 10			add  bl,16
 000002B4  D3 E0			shl  eax,cl
 000002B6  0B E8			or  ebp,eax
 000002B8  8A CD			mov  cl,ch

 000002BA			L_add_bits_to_len:
 000002BA  B8 00000001			mov  eax,1
 000002BF  D3 E0			shl  eax,cl
 000002C1  48				dec  eax
 000002C2  2A D9			sub  bl,cl
 000002C4  23 C5			and  eax,ebp
 000002C6  D3 ED			shr  ebp,cl
 000002C8  03 D0			add  edx,eax

 000002CA			L_save_len:
 000002CA  89 54 24 18			mov  [esp+24],edx


 000002CE			L_decode_distance:
				; 549 "inffast.S"
 000002CE  80 FB 0F			cmp  bl,15
 000002D1  77 0D			ja   L_get_distance_code

 000002D3  33 C0			xor  eax,eax
 000002D5  66| AD			lodsw
 000002D7  8A CB			mov  cl,bl
 000002D9  80 C3 10			add  bl,16
 000002DC  D3 E0			shl  eax,cl
 000002DE  0B E8			or  ebp,eax

 000002E0			L_get_distance_code:
 000002E0  8B 54 24 04			mov  edx, [esp+4]
 000002E4  8B 4C 24 0C			mov  ecx, [esp+12]
 000002E8  23 D5			and  edx,ebp
 000002EA  8B 04 91			mov  eax, [ecx+edx*4]


 000002ED			L_dodist:
 000002ED  8B D0			mov  edx,eax
 000002EF  C1 EA 10			shr  edx,16
 000002F2  8A CC			mov  cl,ah
 000002F4  2A DC			sub  bl,ah
 000002F6  D3 ED			shr  ebp,cl
				; 584 "inffast.S"
 000002F8  8A C8			mov  cl,al

 000002FA  A8 10			test  al,16
 000002FC  0F 84 000000B2		jz  L_test_for_second_level_dist
 00000302  80 E1 0F			and  cl,15
 00000305  74 65			jz  L_check_dist_one
 00000307  3A D9			cmp  bl,cl
 00000309  73 11			jae  L_add_bits_to_dist

 0000030B  8A E9			mov  ch,cl
 0000030D  33 C0			xor  eax,eax
 0000030F  66| AD			lodsw
 00000311  8A CB			mov  cl,bl
 00000313  80 C3 10			add  bl,16
 00000316  D3 E0			shl  eax,cl
 00000318  0B E8			or  ebp,eax
 0000031A  8A CD			mov  cl,ch

 0000031C			L_add_bits_to_dist:
 0000031C  B8 00000001			mov  eax,1
 00000321  D3 E0			shl  eax,cl
 00000323  48				dec  eax
 00000324  2A D9			sub  bl,cl
 00000326  23 C5			and  eax,ebp
 00000328  D3 ED			shr  ebp,cl
 0000032A  03 D0			add  edx,eax
 0000032C  EB 00			jmp  L_check_window

 0000032E			L_check_window:
				; 625 "inffast.S"
 0000032E  89 74 24 2C			mov  [esp+44],esi
 00000332  8B C7			mov  eax,edi
 00000334  2B 44 24 28			sub  eax, [esp+40]

 00000338  3B C2			cmp  eax,edx
 0000033A  0F 82 00000094		jb   L_clip_window

 00000340  8B 4C 24 18			mov  ecx, [esp+24]
 00000344  8B F7			mov  esi,edi
 00000346  2B F2			sub  esi,edx

 00000348  83 E9 03			sub  ecx,3
 0000034B  8A 06			mov  al, [esi]
 0000034D  88 07			mov  [edi],al
 0000034F  8A 46 01			mov  al, [esi+1]
 00000352  8A 56 02			mov  dl, [esi+2]
 00000355  83 C6 03			add  esi,3
 00000358  88 47 01			mov  [edi+1],al
 0000035B  88 57 02			mov  [edi+2],dl
 0000035E  83 C7 03			add  edi,3
 00000361  F3/ A4			rep movsb

 00000363  8B 74 24 2C			mov  esi, [esp+44]
 00000367  E9 FFFFFF10			jmp  L_while_test

				ALIGN 4
 0000036C			L_check_dist_one:
 0000036C  83 FA 01			cmp  edx,1
 0000036F  75 BD			jne  L_check_window
 00000371  39 7C 24 28			cmp  [esp+40],edi
 00000375  74 B7			je  L_check_window

 00000377  4F				dec  edi
 00000378  8B 4C 24 18			mov  ecx, [esp+24]
 0000037C  8A 07			mov  al, [edi]
 0000037E  83 E9 03			sub  ecx,3

 00000381  88 47 01			mov  [edi+1],al
 00000384  88 47 02			mov  [edi+2],al
 00000387  88 47 03			mov  [edi+3],al
 0000038A  83 C7 04			add  edi,4
 0000038D  F3/ AA			rep stosb

 0000038F  E9 FFFFFEE8			jmp  L_while_test

				ALIGN 4
 00000394			L_test_for_second_level_length:




 00000394  A8 40			test  al,64
 00000396  0F 85 0000030E		jnz   L_test_for_end_of_block

 0000039C  B8 00000001			mov  eax,1
 000003A1  D3 E0			shl  eax,cl
 000003A3  48				dec  eax
 000003A4  23 C5			and  eax,ebp
 000003A6  03 C2			add  eax,edx
 000003A8  8B 54 24 08			mov  edx, [esp+8]
 000003AC  8B 04 82			mov  eax, [edx+eax*4]
 000003AF  E9 FFFFFEBA			jmp  L_dolen

				ALIGN 4
 000003B4			L_test_for_second_level_dist:




 000003B4  A8 40			test  al,64
 000003B6  0F 85 000002E2		jnz   L_invalid_distance_code

 000003BC  B8 00000001			mov  eax,1
 000003C1  D3 E0			shl  eax,cl
 000003C3  48				dec  eax
 000003C4  23 C5			and  eax,ebp
 000003C6  03 C2			add  eax,edx
 000003C8  8B 54 24 0C			mov  edx, [esp+12]
 000003CC  8B 04 82			mov  eax, [edx+eax*4]
 000003CF  E9 FFFFFF19			jmp  L_dodist

				ALIGN 4
 000003D4			L_clip_window:
				; 721 "inffast.S"
 000003D4  8B C8			mov  ecx,eax
 000003D6  8B 44 24 34			mov  eax, [esp+52]
 000003DA  F7 D9			neg  ecx
 000003DC  8B 74 24 38			mov  esi, [esp+56]

 000003E0  3B C2			cmp  eax,edx
 000003E2  0F 82 000002DE		jb   L_invalid_distance_too_far

 000003E8  03 CA			add  ecx,edx
 000003EA  83 7C 24 30 00		cmp  dword ptr [esp+48],0
 000003EF  75 24			jne  L_wrap_around_window

 000003F1  2B C1			sub  eax,ecx
 000003F3  03 F0			add  esi,eax
				; 749 "inffast.S"
 000003F5  8B 44 24 18			mov  eax, [esp+24]
 000003F9  3B C1			cmp  eax,ecx
 000003FB  76 60			jbe  L_do_copy1

 000003FD  2B C1			sub  eax,ecx
 000003FF  F3/ A4			rep movsb
 00000401  8B F7			mov  esi,edi
 00000403  2B F2			sub  esi,edx
 00000405  EB 56			jmp  L_do_copy1

 00000407  3B C1			cmp  eax,ecx
 00000409  76 52			jbe  L_do_copy1

 0000040B  2B C1			sub  eax,ecx
 0000040D  F3/ A4			rep movsb
 0000040F  8B F7			mov  esi,edi
 00000411  2B F2			sub  esi,edx
 00000413  EB 48			jmp  L_do_copy1

 00000415			L_wrap_around_window:
				; 793 "inffast.S"
 00000415  8B 44 24 30			mov  eax, [esp+48]
 00000419  3B C8			cmp  ecx,eax
 0000041B  76 2C			jbe  L_contiguous_in_window

 0000041D  03 74 24 34			add  esi, [esp+52]
 00000421  03 F0			add  esi,eax
 00000423  2B F1			sub  esi,ecx
 00000425  2B C8			sub  ecx,eax


 00000427  8B 44 24 18			mov  eax, [esp+24]
 0000042B  3B C1			cmp  eax,ecx
 0000042D  76 2E			jbe  L_do_copy1

 0000042F  2B C1			sub  eax,ecx
 00000431  F3/ A4			rep movsb
 00000433  8B 74 24 38			mov  esi, [esp+56]
 00000437  8B 4C 24 30			mov  ecx, [esp+48]
 0000043B  3B C1			cmp  eax,ecx
 0000043D  76 1E			jbe  L_do_copy1

 0000043F  2B C1			sub  eax,ecx
 00000441  F3/ A4			rep movsb
 00000443  8B F7			mov  esi,edi
 00000445  2B F2			sub  esi,edx
 00000447  EB 14			jmp  L_do_copy1

 00000449			L_contiguous_in_window:
				; 836 "inffast.S"
 00000449  03 F0			add  esi,eax
 0000044B  2B F1			sub  esi,ecx


 0000044D  8B 44 24 18			mov  eax, [esp+24]
 00000451  3B C1			cmp  eax,ecx
 00000453  76 08			jbe  L_do_copy1

 00000455  2B C1			sub  eax,ecx
 00000457  F3/ A4			rep movsb
 00000459  8B F7			mov  esi,edi
 0000045B  2B F2			sub  esi,edx

 0000045D			L_do_copy1:
				; 862 "inffast.S"
 0000045D  8B C8			mov  ecx,eax
 0000045F  F3/ A4			rep movsb

 00000461  8B 74 24 2C			mov  esi, [esp+44]
 00000465  E9 FFFFFE12			jmp  L_while_test
				; 878 "inffast.S"
				ALIGN 4
 0000046C			L_init_mmx:
 0000046C  0F 77			emms





 0000046E  0F 6E C5			movd mm0,ebp
 00000471  8B EB			mov  ebp,ebx
				; 896 "inffast.S"
 00000473  0F 6E 24 24			movd mm4,dword ptr [esp+0]
 00000477  0F 7F E3			movq mm3,mm4
 0000047A  0F 6E 6C 24 04		movd mm5,dword ptr [esp+4]
 0000047F  0F 7F EA			movq mm2,mm5
 00000482  0F EF C9			pxor mm1,mm1
 00000485  8B 5C 24 08			mov  ebx, [esp+8]
 00000489  EB 01			jmp  L_do_loop_mmx

				ALIGN 4
 0000048C			L_do_loop_mmx:
 0000048C  0F D3 C1			psrlq mm0,mm1

 0000048F  83 FD 20			cmp  ebp,32
 00000492  77 12			ja  L_get_length_code_mmx

 00000494  0F 6E F5			movd mm6,ebp
 00000497  0F 6E 3E			movd mm7,dword ptr [esi]
 0000049A  83 C6 04			add  esi,4
 0000049D  0F F3 FE			psllq mm7,mm6
 000004A0  83 C5 20			add  ebp,32
 000004A3  0F EB C7			por mm0,mm7

 000004A6			L_get_length_code_mmx:
 000004A6  0F DB E0			pand mm4,mm0
 000004A9  0F 7E E0			movd eax,mm4
 000004AC  0F 7F DC			movq mm4,mm3
 000004AF  8B 04 83			mov  eax, [ebx+eax*4]

 000004B2			L_dolen_mmx:
 000004B2  0F B6 CC			movzx  ecx,ah
 000004B5  0F 6E C9			movd mm1,ecx
 000004B8  2B E9			sub  ebp,ecx

 000004BA  84 C0			test  al,al
 000004BC  75 19			jnz L_test_for_length_base_mmx

 000004BE  C1 E8 10			shr  eax,16
 000004C1  AA				stosb

 000004C2			L_while_test_mmx:


 000004C2  39 7C 24 10			cmp  [esp+16],edi
 000004C6  0F 86 0000021C		jbe L_break_loop

 000004CC  39 74 24 14			cmp  [esp+20],esi
 000004D0  77 BA			ja L_do_loop_mmx
 000004D2  E9 00000211			jmp L_break_loop

 000004D7			L_test_for_length_base_mmx:

 000004D7  8B D0			mov  edx,eax
 000004D9  C1 EA 10			shr  edx,16

 000004DC  A8 10			test  al,16
 000004DE  0F 84 000000E0		jz  L_test_for_second_level_length_mmx
 000004E4  83 E0 0F			and  eax,15
 000004E7  74 14			jz L_decode_distance_mmx

 000004E9  0F D3 C1			psrlq mm0,mm1
 000004EC  0F 6E C8			movd mm1,eax
 000004EF  0F 7E C1			movd ecx,mm0
 000004F2  2B E8			sub  ebp,eax
 000004F4  23 0C 85			and  ecx, [inflate_fast_mask+eax*4]
	   0000007C R
 000004FB  03 D1			add  edx,ecx

 000004FD			L_decode_distance_mmx:
 000004FD  0F D3 C1			psrlq mm0,mm1

 00000500  83 FD 20			cmp  ebp,32
 00000503  77 12			ja L_get_dist_code_mmx

 00000505  0F 6E F5			movd mm6,ebp
 00000508  0F 6E 3E			movd mm7,dword ptr [esi]
 0000050B  83 C6 04			add  esi,4
 0000050E  0F F3 FE			psllq mm7,mm6
 00000511  83 C5 20			add  ebp,32
 00000514  0F EB C7			por mm0,mm7

 00000517			L_get_dist_code_mmx:
 00000517  8B 5C 24 0C			mov  ebx, [esp+12]
 0000051B  0F DB E8			pand mm5,mm0
 0000051E  0F 7E E8			movd eax,mm5
 00000521  0F 7F D5			movq mm5,mm2
 00000524  8B 04 83			mov  eax, [ebx+eax*4]

 00000527			L_dodist_mmx:

 00000527  0F B6 CC			movzx  ecx,ah
 0000052A  8B D8			mov  ebx,eax
 0000052C  C1 EB 10			shr  ebx,16
 0000052F  2B E9			sub  ebp,ecx
 00000531  0F 6E C9			movd mm1,ecx

 00000534  A8 10			test  al,16
 00000536  0F 84 000000AC		jz L_test_for_second_level_dist_mmx
 0000053C  83 E0 0F			and  eax,15
 0000053F  74 57			jz L_check_dist_one_mmx

 00000541			L_add_bits_to_dist_mmx:
 00000541  0F D3 C1			psrlq mm0,mm1
 00000544  0F 6E C8			movd mm1,eax
 00000547  0F 7E C1			movd ecx,mm0
 0000054A  2B E8			sub  ebp,eax
 0000054C  23 0C 85			and  ecx, [inflate_fast_mask+eax*4]
	   0000007C R
 00000553  03 D9			add  ebx,ecx

 00000555			L_check_window_mmx:
 00000555  89 74 24 2C			mov  [esp+44],esi
 00000559  8B C7			mov  eax,edi
 0000055B  2B 44 24 28			sub  eax, [esp+40]

 0000055F  3B C3			cmp  eax,ebx
 00000561  0F 82 000000A9		jb L_clip_window_mmx

 00000567  8B CA			mov  ecx,edx
 00000569  8B F7			mov  esi,edi
 0000056B  2B F3			sub  esi,ebx

 0000056D  83 E9 03			sub  ecx,3
 00000570  8A 06			mov  al, [esi]
 00000572  88 07			mov  [edi],al
 00000574  8A 46 01			mov  al, [esi+1]
 00000577  8A 56 02			mov  dl, [esi+2]
 0000057A  83 C6 03			add  esi,3
 0000057D  88 47 01			mov  [edi+1],al
 00000580  88 57 02			mov  [edi+2],dl
 00000583  83 C7 03			add  edi,3
 00000586  F3/ A4			rep movsb

 00000588  8B 74 24 2C			mov  esi, [esp+44]
 0000058C  8B 5C 24 08			mov  ebx, [esp+8]
 00000590  E9 FFFFFF2D			jmp  L_while_test_mmx

				ALIGN 4
 00000598			L_check_dist_one_mmx:
 00000598  83 FB 01			cmp  ebx,1
 0000059B  75 B8			jne  L_check_window_mmx
 0000059D  39 7C 24 28			cmp  [esp+40],edi
 000005A1  74 B2			je   L_check_window_mmx

 000005A3  4F				dec  edi
 000005A4  8B CA			mov  ecx,edx
 000005A6  8A 07			mov  al, [edi]
 000005A8  83 E9 03			sub  ecx,3

 000005AB  88 47 01			mov  [edi+1],al
 000005AE  88 47 02			mov  [edi+2],al
 000005B1  88 47 03			mov  [edi+3],al
 000005B4  83 C7 04			add  edi,4
 000005B7  F3/ AA			rep stosb

 000005B9  8B 5C 24 08			mov  ebx, [esp+8]
 000005BD  E9 FFFFFF00			jmp  L_while_test_mmx

				ALIGN 4
 000005C4			L_test_for_second_level_length_mmx:
 000005C4  A8 40			test  al,64
 000005C6  0F 85 000000DE		jnz L_test_for_end_of_block

 000005CC  83 E0 0F			and  eax,15
 000005CF  0F D3 C1			psrlq mm0,mm1
 000005D2  0F 7E C1			movd ecx,mm0
 000005D5  23 0C 85			and  ecx, [inflate_fast_mask+eax*4]
	   0000007C R
 000005DC  03 CA			add  ecx,edx
 000005DE  8B 04 8B			mov  eax, [ebx+ecx*4]
 000005E1  E9 FFFFFECC			jmp L_dolen_mmx

				ALIGN 4
 000005E8			L_test_for_second_level_dist_mmx:
 000005E8  A8 40			test  al,64
 000005EA  0F 85 000000AE		jnz L_invalid_distance_code

 000005F0  83 E0 0F			and  eax,15
 000005F3  0F D3 C1			psrlq mm0,mm1
 000005F6  0F 7E C1			movd ecx,mm0
 000005F9  23 0C 85			and  ecx, [inflate_fast_mask+eax*4]
	   0000007C R
 00000600  8B 44 24 0C			mov  eax, [esp+12]
 00000604  03 CB			add  ecx,ebx
 00000606  8B 04 88			mov  eax, [eax+ecx*4]
 00000609  E9 FFFFFF19			jmp  L_dodist_mmx

				ALIGN 4
 00000610			L_clip_window_mmx:

 00000610  8B C8			mov  ecx,eax
 00000612  8B 44 24 34			mov  eax, [esp+52]
 00000616  F7 D9			neg  ecx
 00000618  8B 74 24 38			mov  esi, [esp+56]

 0000061C  3B C3			cmp  eax,ebx
 0000061E  0F 82 000000A2		jb  L_invalid_distance_too_far

 00000624  03 CB			add  ecx,ebx
 00000626  83 7C 24 30 00		cmp  dword ptr [esp+48],0
 0000062B  75 20			jne  L_wrap_around_window_mmx

 0000062D  2B C1			sub  eax,ecx
 0000062F  03 F0			add  esi,eax

 00000631  3B D1			cmp  edx,ecx
 00000633  76 58			jbe  L_do_copy1_mmx

 00000635  2B D1			sub  edx,ecx
 00000637  F3/ A4			rep movsb
 00000639  8B F7			mov  esi,edi
 0000063B  2B F3			sub  esi,ebx
 0000063D  EB 4E			jmp  L_do_copy1_mmx

 0000063F  3B D1			cmp  edx,ecx
 00000641  76 4A			jbe  L_do_copy1_mmx

 00000643  2B D1			sub  edx,ecx
 00000645  F3/ A4			rep movsb
 00000647  8B F7			mov  esi,edi
 00000649  2B F3			sub  esi,ebx
 0000064B  EB 40			jmp  L_do_copy1_mmx

 0000064D			L_wrap_around_window_mmx:

 0000064D  8B 44 24 30			mov  eax, [esp+48]
 00000651  3B C8			cmp  ecx,eax
 00000653  76 28			jbe  L_contiguous_in_window_mmx

 00000655  03 74 24 34			add  esi, [esp+52]
 00000659  03 F0			add  esi,eax
 0000065B  2B F1			sub  esi,ecx
 0000065D  2B C8			sub  ecx,eax


 0000065F  3B D1			cmp  edx,ecx
 00000661  76 2A			jbe  L_do_copy1_mmx

 00000663  2B D1			sub  edx,ecx
 00000665  F3/ A4			rep movsb
 00000667  8B 74 24 38			mov  esi, [esp+56]
 0000066B  8B 4C 24 30			mov  ecx, [esp+48]
 0000066F  3B D1			cmp  edx,ecx
 00000671  76 1A			jbe  L_do_copy1_mmx

 00000673  2B D1			sub  edx,ecx
 00000675  F3/ A4			rep movsb
 00000677  8B F7			mov  esi,edi
 00000679  2B F3			sub  esi,ebx
 0000067B  EB 10			jmp  L_do_copy1_mmx

 0000067D			L_contiguous_in_window_mmx:

 0000067D  03 F0			add  esi,eax
 0000067F  2B F1			sub  esi,ecx


 00000681  3B D1			cmp  edx,ecx
 00000683  76 08			jbe  L_do_copy1_mmx

 00000685  2B D1			sub  edx,ecx
 00000687  F3/ A4			rep movsb
 00000689  8B F7			mov  esi,edi
 0000068B  2B F3			sub  esi,ebx

 0000068D			L_do_copy1_mmx:


 0000068D  8B CA			mov  ecx,edx
 0000068F  F3/ A4			rep movsb

 00000691  8B 74 24 2C			mov  esi, [esp+44]
 00000695  8B 5C 24 08			mov  ebx, [esp+8]
 00000699  E9 FFFFFE24			jmp  L_while_test_mmx
				; 1174 "inffast.S"
 0000069E			L_invalid_distance_code:





 0000069E  B9 00000044 R		mov  ecx, invalid_distance_code_msg
 000006A3  BA 0000001A			mov  edx,INFLATE_MODE_BAD
 000006A8  EB 2C			jmp  L_update_stream_state

 000006AA			L_test_for_end_of_block:





 000006AA  A8 20			test  al,32
 000006AC  74 0C			jz  L_invalid_literal_length_code

 000006AE  B9 00000000			mov  ecx,0
 000006B3  BA 0000000B			mov  edx,INFLATE_MODE_TYPE
 000006B8  EB 1C			jmp  L_update_stream_state

 000006BA			L_invalid_literal_length_code:





 000006BA  B9 00000028 R		mov  ecx, invalid_literal_length_code_msg
 000006BF  BA 0000001A			mov  edx,INFLATE_MODE_BAD
 000006C4  EB 10			jmp  L_update_stream_state

 000006C6			L_invalid_distance_too_far:



 000006C6  8B 74 24 2C			mov  esi, [esp+44]
 000006CA  B9 0000005C R		mov  ecx, invalid_distance_too_far_msg
 000006CF  BA 0000001A			mov  edx,INFLATE_MODE_BAD
 000006D4  EB 00			jmp  L_update_stream_state

 000006D6			L_update_stream_state:

 000006D6  8B 44 24 58			mov  eax, [esp+88]
 000006DA  85 C9			test  ecx,ecx
 000006DC  74 03			jz  L_skip_msg
 000006DE  89 48 18			mov  [eax+24],ecx
 000006E1			L_skip_msg:
 000006E1  8B 40 1C			mov  eax, [eax+28]
 000006E4  89 10			mov  [eax+mode_state],edx
 000006E6  EB 00			jmp  L_break_loop

				ALIGN 4
 000006E8			L_break_loop:
				; 1243 "inffast.S"
 000006E8  83 3D 00000000 R		cmp  dword ptr [inflate_fast_use_mmx],2
	   02
 000006EF  75 02			jne  L_update_next_in



 000006F1  8B DD			mov  ebx,ebp

 000006F3			L_update_next_in:
				; 1266 "inffast.S"
 000006F3  8B 44 24 58			mov  eax, [esp+88]
 000006F7  8B CB			mov  ecx,ebx
 000006F9  8B 50 1C			mov  edx, [eax+28]
 000006FC  C1 E9 03			shr  ecx,3
 000006FF  2B F1			sub  esi,ecx
 00000701  C1 E1 03			shl  ecx,3
 00000704  2B D9			sub  ebx,ecx
 00000706  89 78 0C			mov  [eax+12],edi
 00000709  89 5A 3C			mov  [edx+bits_state],ebx
 0000070C  8B CB			mov  ecx,ebx

 0000070E  8D 5C 24 1C			lea  ebx, [esp+28]
 00000712  39 5C 24 14			cmp  [esp+20],ebx
 00000716  75 14			jne  L_buf_not_used

 00000718  2B F3			sub  esi,ebx
 0000071A  8B 18			mov  ebx, [eax+0]
 0000071C  89 5C 24 14			mov  [esp+20],ebx
 00000720  03 F3			add  esi,ebx
 00000722  8B 58 04			mov  ebx, [eax+4]
 00000725  83 EB 0B			sub  ebx,11
 00000728  01 5C 24 14			add  [esp+20],ebx

 0000072C			L_buf_not_used:
 0000072C  89 30			mov  [eax+0],esi

 0000072E  BB 00000001			mov  ebx,1
 00000733  D3 E3			shl  ebx,cl
 00000735  4B				dec  ebx





 00000736  83 3D 00000000 R		cmp  dword ptr [inflate_fast_use_mmx],2
	   02
 0000073D  75 08			jne  L_update_hold



 0000073F  0F D3 C1			psrlq mm0,mm1
 00000742  0F 7E C5			movd ebp,mm0

 00000745  0F 77			emms

 00000747			L_update_hold:



 00000747  23 EB			and  ebp,ebx
 00000749  89 6A 38			mov  [edx+hold_state],ebp




 0000074C  8B 5C 24 14			mov  ebx, [esp+20]
 00000750  3B DE			cmp  ebx,esi
 00000752  76 0A			jbe  L_last_is_smaller

 00000754  2B DE			sub  ebx,esi
 00000756  83 C3 0B			add  ebx,11
 00000759  89 58 04			mov  [eax+4],ebx
 0000075C  EB 0A			jmp  L_fixup_out
 0000075E			L_last_is_smaller:
 0000075E  2B F3			sub  esi,ebx
 00000760  F7 DE			neg  esi
 00000762  83 C6 0B			add  esi,11
 00000765  89 70 04			mov  [eax+4],esi




 00000768			L_fixup_out:

 00000768  8B 5C 24 10			mov  ebx, [esp+16]
 0000076C  3B DF			cmp  ebx,edi
 0000076E  76 0D			jbe  L_end_is_smaller

 00000770  2B DF			sub  ebx,edi
 00000772  81 C3 00000101		add  ebx,257
 00000778  89 58 10			mov  [eax+16],ebx
 0000077B  EB 0D			jmp  L_done
 0000077D			L_end_is_smaller:
 0000077D  2B FB			sub  edi,ebx
 0000077F  F7 DF			neg  edi
 00000781  81 C7 00000101		add  edi,257
 00000787  89 78 10			mov  [eax+16],edi





 0000078A			L_done:
 0000078A  83 C4 40			add  esp,64
 0000078D  9D				popfd
 0000078E  5B				pop  ebx
 0000078F  5D				pop  ebp
 00000790  5E				pop  esi
 00000791  5F				pop  edi
 00000792  C3				ret
 00000793			_inflate_fast endp

 00000004			_TEXT	ends
				end
Microsoft (R) Macro Assembler Version 10.00.40219.01	    08/26/16 23:18:07
inffas32.asm						     Symbols 2 - 1




Segments and Groups:

                N a m e                 Size     Length   Align   Combine Class

FLAT . . . . . . . . . . . . . .	GROUP
_DATA  . . . . . . . . . . . . .	32 Bit	 00000004 Para	  Public  'DATA'	
_TEXT  . . . . . . . . . . . . .	32 Bit	 00000793 Para	  Public  'CODE'	


Procedures, parameters, and locals:

                N a m e                 Type     Value    Attr

_inflate_fast  . . . . . . . . .	P Near	 00000100 _TEXT	Length= 00000693 Public
  L_align_long . . . . . . . . .	L Near	 000001BA _TEXT	
  L_is_aligned . . . . . . . . .	L Near	 000001D2 _TEXT	
  L_check_mmx  . . . . . . . . .	L Near	 000001D6 _TEXT	
  L_use_mmx  . . . . . . . . . .	L Near	 00000233 _TEXT	
  L_dont_use_mmx . . . . . . . .	L Near	 0000023F _TEXT	
  L_check_mmx_pop  . . . . . . .	L Near	 00000249 _TEXT	
  L_do_loop  . . . . . . . . . .	L Near	 00000250 _TEXT	
  L_get_length_code  . . . . . .	L Near	 00000262 _TEXT	
  L_dolen  . . . . . . . . . . .	L Near	 0000026E _TEXT	
  L_while_test . . . . . . . . .	L Near	 0000027C _TEXT	
  L_test_for_length_base . . . .	L Near	 00000291 _TEXT	
  L_add_bits_to_len  . . . . . .	L Near	 000002BA _TEXT	
  L_save_len . . . . . . . . . .	L Near	 000002CA _TEXT	
  L_decode_distance  . . . . . .	L Near	 000002CE _TEXT	
  L_get_distance_code  . . . . .	L Near	 000002E0 _TEXT	
  L_dodist . . . . . . . . . . .	L Near	 000002ED _TEXT	
  L_add_bits_to_dist . . . . . .	L Near	 0000031C _TEXT	
  L_check_window . . . . . . . .	L Near	 0000032E _TEXT	
  L_check_dist_one . . . . . . .	L Near	 0000036C _TEXT	
  L_test_for_second_level_length .	L Near	 00000394 _TEXT	
  L_test_for_second_level_dist .	L Near	 000003B4 _TEXT	
  L_clip_window  . . . . . . . .	L Near	 000003D4 _TEXT	
  L_wrap_around_window . . . . .	L Near	 00000415 _TEXT	
  L_contiguous_in_window . . . .	L Near	 00000449 _TEXT	
  L_do_copy1 . . . . . . . . . .	L Near	 0000045D _TEXT	
  L_init_mmx . . . . . . . . . .	L Near	 0000046C _TEXT	
  L_do_loop_mmx  . . . . . . . .	L Near	 0000048C _TEXT	
  L_get_length_code_mmx  . . . .	L Near	 000004A6 _TEXT	
  L_dolen_mmx  . . . . . . . . .	L Near	 000004B2 _TEXT	
  L_while_test_mmx . . . . . . .	L Near	 000004C2 _TEXT	
  L_test_for_length_base_mmx . .	L Near	 000004D7 _TEXT	
  L_decode_distance_mmx  . . . .	L Near	 000004FD _TEXT	
  L_get_dist_code_mmx  . . . . .	L Near	 00000517 _TEXT	
  L_dodist_mmx . . . . . . . . .	L Near	 00000527 _TEXT	
  L_add_bits_to_dist_mmx . . . .	L Near	 00000541 _TEXT	
  L_check_window_mmx . . . . . .	L Near	 00000555 _TEXT	
  L_check_dist_one_mmx . . . . .	L Near	 00000598 _TEXT	
  L_test_for_second_level_length_mmx .	L Near	 000005C4 _TEXT	
  L_test_for_second_level_dist_mmx .	L Near	 000005E8 _TEXT	
  L_clip_window_mmx  . . . . . .	L Near	 00000610 _TEXT	
  L_wrap_around_window_mmx . . .	L Near	 0000064D _TEXT	
  L_contiguous_in_window_mmx . .	L Near	 0000067D _TEXT	
  L_do_copy1_mmx . . . . . . . .	L Near	 0000068D _TEXT	
  L_invalid_distance_code  . . .	L Near	 0000069E _TEXT	
  L_test_for_end_of_block  . . .	L Near	 000006AA _TEXT	
  L_invalid_literal_length_code 	L Near	 000006BA _TEXT	
  L_invalid_distance_too_far . .	L Near	 000006C6 _TEXT	
  L_update_stream_state  . . . .	L Near	 000006D6 _TEXT	
  L_skip_msg . . . . . . . . . .	L Near	 000006E1 _TEXT	
  L_break_loop . . . . . . . . .	L Near	 000006E8 _TEXT	
  L_update_next_in . . . . . . .	L Near	 000006F3 _TEXT	
  L_buf_not_used . . . . . . . .	L Near	 0000072C _TEXT	
  L_update_hold  . . . . . . . .	L Near	 00000747 _TEXT	
  L_last_is_smaller  . . . . . .	L Near	 0000075E _TEXT	
  L_fixup_out  . . . . . . . . .	L Near	 00000768 _TEXT	
  L_end_is_smaller . . . . . . .	L Near	 0000077D _TEXT	
  L_done . . . . . . . . . . . .	L Near	 0000078A _TEXT	


Symbols:

                N a m e                 Type     Value    Attr

@CodeSize  . . . . . . . . . . .	Number	 00000000h   
@DataSize  . . . . . . . . . . .	Number	 00000000h   
@Interface . . . . . . . . . . .	Number	 00000000h   
@Model . . . . . . . . . . . . .	Number	 00000007h   
@code  . . . . . . . . . . . . .	Text   	 _TEXT
@data  . . . . . . . . . . . . .	Text   	 FLAT
@fardata?  . . . . . . . . . . .	Text   	 FLAT
@fardata . . . . . . . . . . . .	Text   	 FLAT
@stack . . . . . . . . . . . . .	Text   	 FLAT
INFLATE_MODE_BAD . . . . . . . .	Number	 0000001Ah   
INFLATE_MODE_TYPE  . . . . . . .	Number	 0000000Bh   
bits_state . . . . . . . . . . .	Number	 0000003Ch   
distbits_state . . . . . . . . .	Number	 00000058h   
distcode_state . . . . . . . . .	Number	 00000050h   
hold_state . . . . . . . . . . .	Number	 00000038h   
inflate_fast_mask  . . . . . . .	L Near	 0000007C _TEXT	
inflate_fast_use_mmx . . . . . .	L Near	 00000000 _DATA	
invalid_distance_code_msg  . . .	L Near	 00000044 _TEXT	
invalid_distance_too_far_msg . .	L Near	 0000005C _TEXT	
invalid_literal_length_code_msg 	L Near	 00000028 _TEXT	
lenbits_state  . . . . . . . . .	Number	 00000054h   
lencode_state  . . . . . . . . .	Number	 0000004Ch   
mode_state . . . . . . . . . . .	Number	 00000000h   
window_state . . . . . . . . . .	Number	 00000034h   
write_state  . . . . . . . . . .	Number	 00000030h   
wsize_state  . . . . . . . . . .	Number	 00000028h   
zlib1222sup  . . . . . . . . . .	Number	 00000008h   

	   0 Warnings
	   0 Errors
