summaryrefslogtreecommitdiffhomepage
path: root/zlib/contrib/masmx86/inffas32.lst
blob: 025627c71c1dda64bc1490bbbc427070d8c93fd5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
Microsoft (R) Macro Assembler Version 14.16.27031.1	    09/14/19 11:35:23
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 14.16.27031.1	    09/14/19 11:35:23
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