]> gerrit.simantics Code Review - simantics/sysdyn.git/blob
030423dc1bcc991e85a3dec369d16827a42d9106
[simantics/sysdyn.git] /
1 ; Listing generated by Microsoft (R) Optimizing Compiler Version 16.00.30319.01 \r
2 \r
3         TITLE   C:\Workspaces\Sysdyn\org.simantics.fmu\FMUSolution\zlib-1.2.6\trees.c\r
4         .686P\r
5         .XMM\r
6         include listing.inc\r
7         .model  flat\r
8 \r
9 INCLUDELIB OLDNAMES\r
10 \r
11 PUBLIC  __dist_code\r
12 PUBLIC  __length_code\r
13 _static_l_desc DD FLAT:_static_ltree\r
14         DD      FLAT:_extra_lbits\r
15         DD      0101H\r
16         DD      011eH\r
17         DD      0fH\r
18 _static_d_desc DD FLAT:_static_dtree\r
19         DD      FLAT:_extra_dbits\r
20         DD      00H\r
21         DD      01eH\r
22         DD      0fH\r
23 _static_bl_desc DD 00H\r
24         DD      FLAT:_extra_blbits\r
25         DD      00H\r
26         DD      013H\r
27         DD      07H\r
28         ORG $+3\r
29 _bl_order DB    010H\r
30         DB      011H\r
31         DB      012H\r
32         DB      00H\r
33         DB      08H\r
34         DB      07H\r
35         DB      09H\r
36         DB      06H\r
37         DB      0aH\r
38         DB      05H\r
39         DB      0bH\r
40         DB      04H\r
41         DB      0cH\r
42         DB      03H\r
43         DB      0dH\r
44         DB      02H\r
45         DB      0eH\r
46         DB      01H\r
47         DB      0fH\r
48         ORG $+1\r
49 _extra_lbits DD 00H\r
50         DD      00H\r
51         DD      00H\r
52         DD      00H\r
53         DD      00H\r
54         DD      00H\r
55         DD      00H\r
56         DD      00H\r
57         DD      01H\r
58         DD      01H\r
59         DD      01H\r
60         DD      01H\r
61         DD      02H\r
62         DD      02H\r
63         DD      02H\r
64         DD      02H\r
65         DD      03H\r
66         DD      03H\r
67         DD      03H\r
68         DD      03H\r
69         DD      04H\r
70         DD      04H\r
71         DD      04H\r
72         DD      04H\r
73         DD      05H\r
74         DD      05H\r
75         DD      05H\r
76         DD      05H\r
77         DD      00H\r
78         ORG $+4\r
79 _extra_dbits DD 00H\r
80         DD      00H\r
81         DD      00H\r
82         DD      00H\r
83         DD      01H\r
84         DD      01H\r
85         DD      02H\r
86         DD      02H\r
87         DD      03H\r
88         DD      03H\r
89         DD      04H\r
90         DD      04H\r
91         DD      05H\r
92         DD      05H\r
93         DD      06H\r
94         DD      06H\r
95         DD      07H\r
96         DD      07H\r
97         DD      08H\r
98         DD      08H\r
99         DD      09H\r
100         DD      09H\r
101         DD      0aH\r
102         DD      0aH\r
103         DD      0bH\r
104         DD      0bH\r
105         DD      0cH\r
106         DD      0cH\r
107         DD      0dH\r
108         DD      0dH\r
109 _extra_blbits DD 00H\r
110         DD      00H\r
111         DD      00H\r
112         DD      00H\r
113         DD      00H\r
114         DD      00H\r
115         DD      00H\r
116         DD      00H\r
117         DD      00H\r
118         DD      00H\r
119         DD      00H\r
120         DD      00H\r
121         DD      00H\r
122         DD      00H\r
123         DD      00H\r
124         DD      00H\r
125         DD      02H\r
126         DD      03H\r
127         DD      07H\r
128         ORG $+4\r
129 _static_ltree DW 0cH\r
130         DW      08H\r
131         DW      08cH\r
132         DW      08H\r
133         DW      04cH\r
134         DW      08H\r
135         DW      0ccH\r
136         DW      08H\r
137         DW      02cH\r
138         DW      08H\r
139         DW      0acH\r
140         DW      08H\r
141         DW      06cH\r
142         DW      08H\r
143         DW      0ecH\r
144         DW      08H\r
145         DW      01cH\r
146         DW      08H\r
147         DW      09cH\r
148         DW      08H\r
149         DW      05cH\r
150         DW      08H\r
151         DW      0dcH\r
152         DW      08H\r
153         DW      03cH\r
154         DW      08H\r
155         DW      0bcH\r
156         DW      08H\r
157         DW      07cH\r
158         DW      08H\r
159         DW      0fcH\r
160         DW      08H\r
161         DW      02H\r
162         DW      08H\r
163         DW      082H\r
164         DW      08H\r
165         DW      042H\r
166         DW      08H\r
167         DW      0c2H\r
168         DW      08H\r
169         DW      022H\r
170         DW      08H\r
171         DW      0a2H\r
172         DW      08H\r
173         DW      062H\r
174         DW      08H\r
175         DW      0e2H\r
176         DW      08H\r
177         DW      012H\r
178         DW      08H\r
179         DW      092H\r
180         DW      08H\r
181         DW      052H\r
182         DW      08H\r
183         DW      0d2H\r
184         DW      08H\r
185         DW      032H\r
186         DW      08H\r
187         DW      0b2H\r
188         DW      08H\r
189         DW      072H\r
190         DW      08H\r
191         DW      0f2H\r
192         DW      08H\r
193         DW      0aH\r
194         DW      08H\r
195         DW      08aH\r
196         DW      08H\r
197         DW      04aH\r
198         DW      08H\r
199         DW      0caH\r
200         DW      08H\r
201         DW      02aH\r
202         DW      08H\r
203         DW      0aaH\r
204         DW      08H\r
205         DW      06aH\r
206         DW      08H\r
207         DW      0eaH\r
208         DW      08H\r
209         DW      01aH\r
210         DW      08H\r
211         DW      09aH\r
212         DW      08H\r
213         DW      05aH\r
214         DW      08H\r
215         DW      0daH\r
216         DW      08H\r
217         DW      03aH\r
218         DW      08H\r
219         DW      0baH\r
220         DW      08H\r
221         DW      07aH\r
222         DW      08H\r
223         DW      0faH\r
224         DW      08H\r
225         DW      06H\r
226         DW      08H\r
227         DW      086H\r
228         DW      08H\r
229         DW      046H\r
230         DW      08H\r
231         DW      0c6H\r
232         DW      08H\r
233         DW      026H\r
234         DW      08H\r
235         DW      0a6H\r
236         DW      08H\r
237         DW      066H\r
238         DW      08H\r
239         DW      0e6H\r
240         DW      08H\r
241         DW      016H\r
242         DW      08H\r
243         DW      096H\r
244         DW      08H\r
245         DW      056H\r
246         DW      08H\r
247         DW      0d6H\r
248         DW      08H\r
249         DW      036H\r
250         DW      08H\r
251         DW      0b6H\r
252         DW      08H\r
253         DW      076H\r
254         DW      08H\r
255         DW      0f6H\r
256         DW      08H\r
257         DW      0eH\r
258         DW      08H\r
259         DW      08eH\r
260         DW      08H\r
261         DW      04eH\r
262         DW      08H\r
263         DW      0ceH\r
264         DW      08H\r
265         DW      02eH\r
266         DW      08H\r
267         DW      0aeH\r
268         DW      08H\r
269         DW      06eH\r
270         DW      08H\r
271         DW      0eeH\r
272         DW      08H\r
273         DW      01eH\r
274         DW      08H\r
275         DW      09eH\r
276         DW      08H\r
277         DW      05eH\r
278         DW      08H\r
279         DW      0deH\r
280         DW      08H\r
281         DW      03eH\r
282         DW      08H\r
283         DW      0beH\r
284         DW      08H\r
285         DW      07eH\r
286         DW      08H\r
287         DW      0feH\r
288         DW      08H\r
289         DW      01H\r
290         DW      08H\r
291         DW      081H\r
292         DW      08H\r
293         DW      041H\r
294         DW      08H\r
295         DW      0c1H\r
296         DW      08H\r
297         DW      021H\r
298         DW      08H\r
299         DW      0a1H\r
300         DW      08H\r
301         DW      061H\r
302         DW      08H\r
303         DW      0e1H\r
304         DW      08H\r
305         DW      011H\r
306         DW      08H\r
307         DW      091H\r
308         DW      08H\r
309         DW      051H\r
310         DW      08H\r
311         DW      0d1H\r
312         DW      08H\r
313         DW      031H\r
314         DW      08H\r
315         DW      0b1H\r
316         DW      08H\r
317         DW      071H\r
318         DW      08H\r
319         DW      0f1H\r
320         DW      08H\r
321         DW      09H\r
322         DW      08H\r
323         DW      089H\r
324         DW      08H\r
325         DW      049H\r
326         DW      08H\r
327         DW      0c9H\r
328         DW      08H\r
329         DW      029H\r
330         DW      08H\r
331         DW      0a9H\r
332         DW      08H\r
333         DW      069H\r
334         DW      08H\r
335         DW      0e9H\r
336         DW      08H\r
337         DW      019H\r
338         DW      08H\r
339         DW      099H\r
340         DW      08H\r
341         DW      059H\r
342         DW      08H\r
343         DW      0d9H\r
344         DW      08H\r
345         DW      039H\r
346         DW      08H\r
347         DW      0b9H\r
348         DW      08H\r
349         DW      079H\r
350         DW      08H\r
351         DW      0f9H\r
352         DW      08H\r
353         DW      05H\r
354         DW      08H\r
355         DW      085H\r
356         DW      08H\r
357         DW      045H\r
358         DW      08H\r
359         DW      0c5H\r
360         DW      08H\r
361         DW      025H\r
362         DW      08H\r
363         DW      0a5H\r
364         DW      08H\r
365         DW      065H\r
366         DW      08H\r
367         DW      0e5H\r
368         DW      08H\r
369         DW      015H\r
370         DW      08H\r
371         DW      095H\r
372         DW      08H\r
373         DW      055H\r
374         DW      08H\r
375         DW      0d5H\r
376         DW      08H\r
377         DW      035H\r
378         DW      08H\r
379         DW      0b5H\r
380         DW      08H\r
381         DW      075H\r
382         DW      08H\r
383         DW      0f5H\r
384         DW      08H\r
385         DW      0dH\r
386         DW      08H\r
387         DW      08dH\r
388         DW      08H\r
389         DW      04dH\r
390         DW      08H\r
391         DW      0cdH\r
392         DW      08H\r
393         DW      02dH\r
394         DW      08H\r
395         DW      0adH\r
396         DW      08H\r
397         DW      06dH\r
398         DW      08H\r
399         DW      0edH\r
400         DW      08H\r
401         DW      01dH\r
402         DW      08H\r
403         DW      09dH\r
404         DW      08H\r
405         DW      05dH\r
406         DW      08H\r
407         DW      0ddH\r
408         DW      08H\r
409         DW      03dH\r
410         DW      08H\r
411         DW      0bdH\r
412         DW      08H\r
413         DW      07dH\r
414         DW      08H\r
415         DW      0fdH\r
416         DW      08H\r
417         DW      013H\r
418         DW      09H\r
419         DW      0113H\r
420         DW      09H\r
421         DW      093H\r
422         DW      09H\r
423         DW      0193H\r
424         DW      09H\r
425         DW      053H\r
426         DW      09H\r
427         DW      0153H\r
428         DW      09H\r
429         DW      0d3H\r
430         DW      09H\r
431         DW      01d3H\r
432         DW      09H\r
433         DW      033H\r
434         DW      09H\r
435         DW      0133H\r
436         DW      09H\r
437         DW      0b3H\r
438         DW      09H\r
439         DW      01b3H\r
440         DW      09H\r
441         DW      073H\r
442         DW      09H\r
443         DW      0173H\r
444         DW      09H\r
445         DW      0f3H\r
446         DW      09H\r
447         DW      01f3H\r
448         DW      09H\r
449         DW      0bH\r
450         DW      09H\r
451         DW      010bH\r
452         DW      09H\r
453         DW      08bH\r
454         DW      09H\r
455         DW      018bH\r
456         DW      09H\r
457         DW      04bH\r
458         DW      09H\r
459         DW      014bH\r
460         DW      09H\r
461         DW      0cbH\r
462         DW      09H\r
463         DW      01cbH\r
464         DW      09H\r
465         DW      02bH\r
466         DW      09H\r
467         DW      012bH\r
468         DW      09H\r
469         DW      0abH\r
470         DW      09H\r
471         DW      01abH\r
472         DW      09H\r
473         DW      06bH\r
474         DW      09H\r
475         DW      016bH\r
476         DW      09H\r
477         DW      0ebH\r
478         DW      09H\r
479         DW      01ebH\r
480         DW      09H\r
481         DW      01bH\r
482         DW      09H\r
483         DW      011bH\r
484         DW      09H\r
485         DW      09bH\r
486         DW      09H\r
487         DW      019bH\r
488         DW      09H\r
489         DW      05bH\r
490         DW      09H\r
491         DW      015bH\r
492         DW      09H\r
493         DW      0dbH\r
494         DW      09H\r
495         DW      01dbH\r
496         DW      09H\r
497         DW      03bH\r
498         DW      09H\r
499         DW      013bH\r
500         DW      09H\r
501         DW      0bbH\r
502         DW      09H\r
503         DW      01bbH\r
504         DW      09H\r
505         DW      07bH\r
506         DW      09H\r
507         DW      017bH\r
508         DW      09H\r
509         DW      0fbH\r
510         DW      09H\r
511         DW      01fbH\r
512         DW      09H\r
513         DW      07H\r
514         DW      09H\r
515         DW      0107H\r
516         DW      09H\r
517         DW      087H\r
518         DW      09H\r
519         DW      0187H\r
520         DW      09H\r
521         DW      047H\r
522         DW      09H\r
523         DW      0147H\r
524         DW      09H\r
525         DW      0c7H\r
526         DW      09H\r
527         DW      01c7H\r
528         DW      09H\r
529         DW      027H\r
530         DW      09H\r
531         DW      0127H\r
532         DW      09H\r
533         DW      0a7H\r
534         DW      09H\r
535         DW      01a7H\r
536         DW      09H\r
537         DW      067H\r
538         DW      09H\r
539         DW      0167H\r
540         DW      09H\r
541         DW      0e7H\r
542         DW      09H\r
543         DW      01e7H\r
544         DW      09H\r
545         DW      017H\r
546         DW      09H\r
547         DW      0117H\r
548         DW      09H\r
549         DW      097H\r
550         DW      09H\r
551         DW      0197H\r
552         DW      09H\r
553         DW      057H\r
554         DW      09H\r
555         DW      0157H\r
556         DW      09H\r
557         DW      0d7H\r
558         DW      09H\r
559         DW      01d7H\r
560         DW      09H\r
561         DW      037H\r
562         DW      09H\r
563         DW      0137H\r
564         DW      09H\r
565         DW      0b7H\r
566         DW      09H\r
567         DW      01b7H\r
568         DW      09H\r
569         DW      077H\r
570         DW      09H\r
571         DW      0177H\r
572         DW      09H\r
573         DW      0f7H\r
574         DW      09H\r
575         DW      01f7H\r
576         DW      09H\r
577         DW      0fH\r
578         DW      09H\r
579         DW      010fH\r
580         DW      09H\r
581         DW      08fH\r
582         DW      09H\r
583         DW      018fH\r
584         DW      09H\r
585         DW      04fH\r
586         DW      09H\r
587         DW      014fH\r
588         DW      09H\r
589         DW      0cfH\r
590         DW      09H\r
591         DW      01cfH\r
592         DW      09H\r
593         DW      02fH\r
594         DW      09H\r
595         DW      012fH\r
596         DW      09H\r
597         DW      0afH\r
598         DW      09H\r
599         DW      01afH\r
600         DW      09H\r
601         DW      06fH\r
602         DW      09H\r
603         DW      016fH\r
604         DW      09H\r
605         DW      0efH\r
606         DW      09H\r
607         DW      01efH\r
608         DW      09H\r
609         DW      01fH\r
610         DW      09H\r
611         DW      011fH\r
612         DW      09H\r
613         DW      09fH\r
614         DW      09H\r
615         DW      019fH\r
616         DW      09H\r
617         DW      05fH\r
618         DW      09H\r
619         DW      015fH\r
620         DW      09H\r
621         DW      0dfH\r
622         DW      09H\r
623         DW      01dfH\r
624         DW      09H\r
625         DW      03fH\r
626         DW      09H\r
627         DW      013fH\r
628         DW      09H\r
629         DW      0bfH\r
630         DW      09H\r
631         DW      01bfH\r
632         DW      09H\r
633         DW      07fH\r
634         DW      09H\r
635         DW      017fH\r
636         DW      09H\r
637         DW      0ffH\r
638         DW      09H\r
639         DW      01ffH\r
640         DW      09H\r
641         DW      00H\r
642         DW      07H\r
643         DW      040H\r
644         DW      07H\r
645         DW      020H\r
646         DW      07H\r
647         DW      060H\r
648         DW      07H\r
649         DW      010H\r
650         DW      07H\r
651         DW      050H\r
652         DW      07H\r
653         DW      030H\r
654         DW      07H\r
655         DW      070H\r
656         DW      07H\r
657         DW      08H\r
658         DW      07H\r
659         DW      048H\r
660         DW      07H\r
661         DW      028H\r
662         DW      07H\r
663         DW      068H\r
664         DW      07H\r
665         DW      018H\r
666         DW      07H\r
667         DW      058H\r
668         DW      07H\r
669         DW      038H\r
670         DW      07H\r
671         DW      078H\r
672         DW      07H\r
673         DW      04H\r
674         DW      07H\r
675         DW      044H\r
676         DW      07H\r
677         DW      024H\r
678         DW      07H\r
679         DW      064H\r
680         DW      07H\r
681         DW      014H\r
682         DW      07H\r
683         DW      054H\r
684         DW      07H\r
685         DW      034H\r
686         DW      07H\r
687         DW      074H\r
688         DW      07H\r
689         DW      03H\r
690         DW      08H\r
691         DW      083H\r
692         DW      08H\r
693         DW      043H\r
694         DW      08H\r
695         DW      0c3H\r
696         DW      08H\r
697         DW      023H\r
698         DW      08H\r
699         DW      0a3H\r
700         DW      08H\r
701         DW      063H\r
702         DW      08H\r
703         DW      0e3H\r
704         DW      08H\r
705 _static_dtree DW 00H\r
706         DW      05H\r
707         DW      010H\r
708         DW      05H\r
709         DW      08H\r
710         DW      05H\r
711         DW      018H\r
712         DW      05H\r
713         DW      04H\r
714         DW      05H\r
715         DW      014H\r
716         DW      05H\r
717         DW      0cH\r
718         DW      05H\r
719         DW      01cH\r
720         DW      05H\r
721         DW      02H\r
722         DW      05H\r
723         DW      012H\r
724         DW      05H\r
725         DW      0aH\r
726         DW      05H\r
727         DW      01aH\r
728         DW      05H\r
729         DW      06H\r
730         DW      05H\r
731         DW      016H\r
732         DW      05H\r
733         DW      0eH\r
734         DW      05H\r
735         DW      01eH\r
736         DW      05H\r
737         DW      01H\r
738         DW      05H\r
739         DW      011H\r
740         DW      05H\r
741         DW      09H\r
742         DW      05H\r
743         DW      019H\r
744         DW      05H\r
745         DW      05H\r
746         DW      05H\r
747         DW      015H\r
748         DW      05H\r
749         DW      0dH\r
750         DW      05H\r
751         DW      01dH\r
752         DW      05H\r
753         DW      03H\r
754         DW      05H\r
755         DW      013H\r
756         DW      05H\r
757         DW      0bH\r
758         DW      05H\r
759         DW      01bH\r
760         DW      05H\r
761         DW      07H\r
762         DW      05H\r
763         DW      017H\r
764         DW      05H\r
765 __dist_code DB  00H\r
766         DB      01H\r
767         DB      02H\r
768         DB      03H\r
769         DB      04H\r
770         DB      04H\r
771         DB      05H\r
772         DB      05H\r
773         DB      06H\r
774         DB      06H\r
775         DB      06H\r
776         DB      06H\r
777         DB      07H\r
778         DB      07H\r
779         DB      07H\r
780         DB      07H\r
781         DB      08H\r
782         DB      08H\r
783         DB      08H\r
784         DB      08H\r
785         DB      08H\r
786         DB      08H\r
787         DB      08H\r
788         DB      08H\r
789         DB      09H\r
790         DB      09H\r
791         DB      09H\r
792         DB      09H\r
793         DB      09H\r
794         DB      09H\r
795         DB      09H\r
796         DB      09H\r
797         DB      0aH\r
798         DB      0aH\r
799         DB      0aH\r
800         DB      0aH\r
801         DB      0aH\r
802         DB      0aH\r
803         DB      0aH\r
804         DB      0aH\r
805         DB      0aH\r
806         DB      0aH\r
807         DB      0aH\r
808         DB      0aH\r
809         DB      0aH\r
810         DB      0aH\r
811         DB      0aH\r
812         DB      0aH\r
813         DB      0bH\r
814         DB      0bH\r
815         DB      0bH\r
816         DB      0bH\r
817         DB      0bH\r
818         DB      0bH\r
819         DB      0bH\r
820         DB      0bH\r
821         DB      0bH\r
822         DB      0bH\r
823         DB      0bH\r
824         DB      0bH\r
825         DB      0bH\r
826         DB      0bH\r
827         DB      0bH\r
828         DB      0bH\r
829         DB      0cH\r
830         DB      0cH\r
831         DB      0cH\r
832         DB      0cH\r
833         DB      0cH\r
834         DB      0cH\r
835         DB      0cH\r
836         DB      0cH\r
837         DB      0cH\r
838         DB      0cH\r
839         DB      0cH\r
840         DB      0cH\r
841         DB      0cH\r
842         DB      0cH\r
843         DB      0cH\r
844         DB      0cH\r
845         DB      0cH\r
846         DB      0cH\r
847         DB      0cH\r
848         DB      0cH\r
849         DB      0cH\r
850         DB      0cH\r
851         DB      0cH\r
852         DB      0cH\r
853         DB      0cH\r
854         DB      0cH\r
855         DB      0cH\r
856         DB      0cH\r
857         DB      0cH\r
858         DB      0cH\r
859         DB      0cH\r
860         DB      0cH\r
861         DB      0dH\r
862         DB      0dH\r
863         DB      0dH\r
864         DB      0dH\r
865         DB      0dH\r
866         DB      0dH\r
867         DB      0dH\r
868         DB      0dH\r
869         DB      0dH\r
870         DB      0dH\r
871         DB      0dH\r
872         DB      0dH\r
873         DB      0dH\r
874         DB      0dH\r
875         DB      0dH\r
876         DB      0dH\r
877         DB      0dH\r
878         DB      0dH\r
879         DB      0dH\r
880         DB      0dH\r
881         DB      0dH\r
882         DB      0dH\r
883         DB      0dH\r
884         DB      0dH\r
885         DB      0dH\r
886         DB      0dH\r
887         DB      0dH\r
888         DB      0dH\r
889         DB      0dH\r
890         DB      0dH\r
891         DB      0dH\r
892         DB      0dH\r
893         DB      0eH\r
894         DB      0eH\r
895         DB      0eH\r
896         DB      0eH\r
897         DB      0eH\r
898         DB      0eH\r
899         DB      0eH\r
900         DB      0eH\r
901         DB      0eH\r
902         DB      0eH\r
903         DB      0eH\r
904         DB      0eH\r
905         DB      0eH\r
906         DB      0eH\r
907         DB      0eH\r
908         DB      0eH\r
909         DB      0eH\r
910         DB      0eH\r
911         DB      0eH\r
912         DB      0eH\r
913         DB      0eH\r
914         DB      0eH\r
915         DB      0eH\r
916         DB      0eH\r
917         DB      0eH\r
918         DB      0eH\r
919         DB      0eH\r
920         DB      0eH\r
921         DB      0eH\r
922         DB      0eH\r
923         DB      0eH\r
924         DB      0eH\r
925         DB      0eH\r
926         DB      0eH\r
927         DB      0eH\r
928         DB      0eH\r
929         DB      0eH\r
930         DB      0eH\r
931         DB      0eH\r
932         DB      0eH\r
933         DB      0eH\r
934         DB      0eH\r
935         DB      0eH\r
936         DB      0eH\r
937         DB      0eH\r
938         DB      0eH\r
939         DB      0eH\r
940         DB      0eH\r
941         DB      0eH\r
942         DB      0eH\r
943         DB      0eH\r
944         DB      0eH\r
945         DB      0eH\r
946         DB      0eH\r
947         DB      0eH\r
948         DB      0eH\r
949         DB      0eH\r
950         DB      0eH\r
951         DB      0eH\r
952         DB      0eH\r
953         DB      0eH\r
954         DB      0eH\r
955         DB      0eH\r
956         DB      0eH\r
957         DB      0fH\r
958         DB      0fH\r
959         DB      0fH\r
960         DB      0fH\r
961         DB      0fH\r
962         DB      0fH\r
963         DB      0fH\r
964         DB      0fH\r
965         DB      0fH\r
966         DB      0fH\r
967         DB      0fH\r
968         DB      0fH\r
969         DB      0fH\r
970         DB      0fH\r
971         DB      0fH\r
972         DB      0fH\r
973         DB      0fH\r
974         DB      0fH\r
975         DB      0fH\r
976         DB      0fH\r
977         DB      0fH\r
978         DB      0fH\r
979         DB      0fH\r
980         DB      0fH\r
981         DB      0fH\r
982         DB      0fH\r
983         DB      0fH\r
984         DB      0fH\r
985         DB      0fH\r
986         DB      0fH\r
987         DB      0fH\r
988         DB      0fH\r
989         DB      0fH\r
990         DB      0fH\r
991         DB      0fH\r
992         DB      0fH\r
993         DB      0fH\r
994         DB      0fH\r
995         DB      0fH\r
996         DB      0fH\r
997         DB      0fH\r
998         DB      0fH\r
999         DB      0fH\r
1000         DB      0fH\r
1001         DB      0fH\r
1002         DB      0fH\r
1003         DB      0fH\r
1004         DB      0fH\r
1005         DB      0fH\r
1006         DB      0fH\r
1007         DB      0fH\r
1008         DB      0fH\r
1009         DB      0fH\r
1010         DB      0fH\r
1011         DB      0fH\r
1012         DB      0fH\r
1013         DB      0fH\r
1014         DB      0fH\r
1015         DB      0fH\r
1016         DB      0fH\r
1017         DB      0fH\r
1018         DB      0fH\r
1019         DB      0fH\r
1020         DB      0fH\r
1021         DB      00H\r
1022         DB      00H\r
1023         DB      010H\r
1024         DB      011H\r
1025         DB      012H\r
1026         DB      012H\r
1027         DB      013H\r
1028         DB      013H\r
1029         DB      014H\r
1030         DB      014H\r
1031         DB      014H\r
1032         DB      014H\r
1033         DB      015H\r
1034         DB      015H\r
1035         DB      015H\r
1036         DB      015H\r
1037         DB      016H\r
1038         DB      016H\r
1039         DB      016H\r
1040         DB      016H\r
1041         DB      016H\r
1042         DB      016H\r
1043         DB      016H\r
1044         DB      016H\r
1045         DB      017H\r
1046         DB      017H\r
1047         DB      017H\r
1048         DB      017H\r
1049         DB      017H\r
1050         DB      017H\r
1051         DB      017H\r
1052         DB      017H\r
1053         DB      018H\r
1054         DB      018H\r
1055         DB      018H\r
1056         DB      018H\r
1057         DB      018H\r
1058         DB      018H\r
1059         DB      018H\r
1060         DB      018H\r
1061         DB      018H\r
1062         DB      018H\r
1063         DB      018H\r
1064         DB      018H\r
1065         DB      018H\r
1066         DB      018H\r
1067         DB      018H\r
1068         DB      018H\r
1069         DB      019H\r
1070         DB      019H\r
1071         DB      019H\r
1072         DB      019H\r
1073         DB      019H\r
1074         DB      019H\r
1075         DB      019H\r
1076         DB      019H\r
1077         DB      019H\r
1078         DB      019H\r
1079         DB      019H\r
1080         DB      019H\r
1081         DB      019H\r
1082         DB      019H\r
1083         DB      019H\r
1084         DB      019H\r
1085         DB      01aH\r
1086         DB      01aH\r
1087         DB      01aH\r
1088         DB      01aH\r
1089         DB      01aH\r
1090         DB      01aH\r
1091         DB      01aH\r
1092         DB      01aH\r
1093         DB      01aH\r
1094         DB      01aH\r
1095         DB      01aH\r
1096         DB      01aH\r
1097         DB      01aH\r
1098         DB      01aH\r
1099         DB      01aH\r
1100         DB      01aH\r
1101         DB      01aH\r
1102         DB      01aH\r
1103         DB      01aH\r
1104         DB      01aH\r
1105         DB      01aH\r
1106         DB      01aH\r
1107         DB      01aH\r
1108         DB      01aH\r
1109         DB      01aH\r
1110         DB      01aH\r
1111         DB      01aH\r
1112         DB      01aH\r
1113         DB      01aH\r
1114         DB      01aH\r
1115         DB      01aH\r
1116         DB      01aH\r
1117         DB      01bH\r
1118         DB      01bH\r
1119         DB      01bH\r
1120         DB      01bH\r
1121         DB      01bH\r
1122         DB      01bH\r
1123         DB      01bH\r
1124         DB      01bH\r
1125         DB      01bH\r
1126         DB      01bH\r
1127         DB      01bH\r
1128         DB      01bH\r
1129         DB      01bH\r
1130         DB      01bH\r
1131         DB      01bH\r
1132         DB      01bH\r
1133         DB      01bH\r
1134         DB      01bH\r
1135         DB      01bH\r
1136         DB      01bH\r
1137         DB      01bH\r
1138         DB      01bH\r
1139         DB      01bH\r
1140         DB      01bH\r
1141         DB      01bH\r
1142         DB      01bH\r
1143         DB      01bH\r
1144         DB      01bH\r
1145         DB      01bH\r
1146         DB      01bH\r
1147         DB      01bH\r
1148         DB      01bH\r
1149         DB      01cH\r
1150         DB      01cH\r
1151         DB      01cH\r
1152         DB      01cH\r
1153         DB      01cH\r
1154         DB      01cH\r
1155         DB      01cH\r
1156         DB      01cH\r
1157         DB      01cH\r
1158         DB      01cH\r
1159         DB      01cH\r
1160         DB      01cH\r
1161         DB      01cH\r
1162         DB      01cH\r
1163         DB      01cH\r
1164         DB      01cH\r
1165         DB      01cH\r
1166         DB      01cH\r
1167         DB      01cH\r
1168         DB      01cH\r
1169         DB      01cH\r
1170         DB      01cH\r
1171         DB      01cH\r
1172         DB      01cH\r
1173         DB      01cH\r
1174         DB      01cH\r
1175         DB      01cH\r
1176         DB      01cH\r
1177         DB      01cH\r
1178         DB      01cH\r
1179         DB      01cH\r
1180         DB      01cH\r
1181         DB      01cH\r
1182         DB      01cH\r
1183         DB      01cH\r
1184         DB      01cH\r
1185         DB      01cH\r
1186         DB      01cH\r
1187         DB      01cH\r
1188         DB      01cH\r
1189         DB      01cH\r
1190         DB      01cH\r
1191         DB      01cH\r
1192         DB      01cH\r
1193         DB      01cH\r
1194         DB      01cH\r
1195         DB      01cH\r
1196         DB      01cH\r
1197         DB      01cH\r
1198         DB      01cH\r
1199         DB      01cH\r
1200         DB      01cH\r
1201         DB      01cH\r
1202         DB      01cH\r
1203         DB      01cH\r
1204         DB      01cH\r
1205         DB      01cH\r
1206         DB      01cH\r
1207         DB      01cH\r
1208         DB      01cH\r
1209         DB      01cH\r
1210         DB      01cH\r
1211         DB      01cH\r
1212         DB      01cH\r
1213         DB      01dH\r
1214         DB      01dH\r
1215         DB      01dH\r
1216         DB      01dH\r
1217         DB      01dH\r
1218         DB      01dH\r
1219         DB      01dH\r
1220         DB      01dH\r
1221         DB      01dH\r
1222         DB      01dH\r
1223         DB      01dH\r
1224         DB      01dH\r
1225         DB      01dH\r
1226         DB      01dH\r
1227         DB      01dH\r
1228         DB      01dH\r
1229         DB      01dH\r
1230         DB      01dH\r
1231         DB      01dH\r
1232         DB      01dH\r
1233         DB      01dH\r
1234         DB      01dH\r
1235         DB      01dH\r
1236         DB      01dH\r
1237         DB      01dH\r
1238         DB      01dH\r
1239         DB      01dH\r
1240         DB      01dH\r
1241         DB      01dH\r
1242         DB      01dH\r
1243         DB      01dH\r
1244         DB      01dH\r
1245         DB      01dH\r
1246         DB      01dH\r
1247         DB      01dH\r
1248         DB      01dH\r
1249         DB      01dH\r
1250         DB      01dH\r
1251         DB      01dH\r
1252         DB      01dH\r
1253         DB      01dH\r
1254         DB      01dH\r
1255         DB      01dH\r
1256         DB      01dH\r
1257         DB      01dH\r
1258         DB      01dH\r
1259         DB      01dH\r
1260         DB      01dH\r
1261         DB      01dH\r
1262         DB      01dH\r
1263         DB      01dH\r
1264         DB      01dH\r
1265         DB      01dH\r
1266         DB      01dH\r
1267         DB      01dH\r
1268         DB      01dH\r
1269         DB      01dH\r
1270         DB      01dH\r
1271         DB      01dH\r
1272         DB      01dH\r
1273         DB      01dH\r
1274         DB      01dH\r
1275         DB      01dH\r
1276         DB      01dH\r
1277 __length_code DB 00H\r
1278         DB      01H\r
1279         DB      02H\r
1280         DB      03H\r
1281         DB      04H\r
1282         DB      05H\r
1283         DB      06H\r
1284         DB      07H\r
1285         DB      08H\r
1286         DB      08H\r
1287         DB      09H\r
1288         DB      09H\r
1289         DB      0aH\r
1290         DB      0aH\r
1291         DB      0bH\r
1292         DB      0bH\r
1293         DB      0cH\r
1294         DB      0cH\r
1295         DB      0cH\r
1296         DB      0cH\r
1297         DB      0dH\r
1298         DB      0dH\r
1299         DB      0dH\r
1300         DB      0dH\r
1301         DB      0eH\r
1302         DB      0eH\r
1303         DB      0eH\r
1304         DB      0eH\r
1305         DB      0fH\r
1306         DB      0fH\r
1307         DB      0fH\r
1308         DB      0fH\r
1309         DB      010H\r
1310         DB      010H\r
1311         DB      010H\r
1312         DB      010H\r
1313         DB      010H\r
1314         DB      010H\r
1315         DB      010H\r
1316         DB      010H\r
1317         DB      011H\r
1318         DB      011H\r
1319         DB      011H\r
1320         DB      011H\r
1321         DB      011H\r
1322         DB      011H\r
1323         DB      011H\r
1324         DB      011H\r
1325         DB      012H\r
1326         DB      012H\r
1327         DB      012H\r
1328         DB      012H\r
1329         DB      012H\r
1330         DB      012H\r
1331         DB      012H\r
1332         DB      012H\r
1333         DB      013H\r
1334         DB      013H\r
1335         DB      013H\r
1336         DB      013H\r
1337         DB      013H\r
1338         DB      013H\r
1339         DB      013H\r
1340         DB      013H\r
1341         DB      014H\r
1342         DB      014H\r
1343         DB      014H\r
1344         DB      014H\r
1345         DB      014H\r
1346         DB      014H\r
1347         DB      014H\r
1348         DB      014H\r
1349         DB      014H\r
1350         DB      014H\r
1351         DB      014H\r
1352         DB      014H\r
1353         DB      014H\r
1354         DB      014H\r
1355         DB      014H\r
1356         DB      014H\r
1357         DB      015H\r
1358         DB      015H\r
1359         DB      015H\r
1360         DB      015H\r
1361         DB      015H\r
1362         DB      015H\r
1363         DB      015H\r
1364         DB      015H\r
1365         DB      015H\r
1366         DB      015H\r
1367         DB      015H\r
1368         DB      015H\r
1369         DB      015H\r
1370         DB      015H\r
1371         DB      015H\r
1372         DB      015H\r
1373         DB      016H\r
1374         DB      016H\r
1375         DB      016H\r
1376         DB      016H\r
1377         DB      016H\r
1378         DB      016H\r
1379         DB      016H\r
1380         DB      016H\r
1381         DB      016H\r
1382         DB      016H\r
1383         DB      016H\r
1384         DB      016H\r
1385         DB      016H\r
1386         DB      016H\r
1387         DB      016H\r
1388         DB      016H\r
1389         DB      017H\r
1390         DB      017H\r
1391         DB      017H\r
1392         DB      017H\r
1393         DB      017H\r
1394         DB      017H\r
1395         DB      017H\r
1396         DB      017H\r
1397         DB      017H\r
1398         DB      017H\r
1399         DB      017H\r
1400         DB      017H\r
1401         DB      017H\r
1402         DB      017H\r
1403         DB      017H\r
1404         DB      017H\r
1405         DB      018H\r
1406         DB      018H\r
1407         DB      018H\r
1408         DB      018H\r
1409         DB      018H\r
1410         DB      018H\r
1411         DB      018H\r
1412         DB      018H\r
1413         DB      018H\r
1414         DB      018H\r
1415         DB      018H\r
1416         DB      018H\r
1417         DB      018H\r
1418         DB      018H\r
1419         DB      018H\r
1420         DB      018H\r
1421         DB      018H\r
1422         DB      018H\r
1423         DB      018H\r
1424         DB      018H\r
1425         DB      018H\r
1426         DB      018H\r
1427         DB      018H\r
1428         DB      018H\r
1429         DB      018H\r
1430         DB      018H\r
1431         DB      018H\r
1432         DB      018H\r
1433         DB      018H\r
1434         DB      018H\r
1435         DB      018H\r
1436         DB      018H\r
1437         DB      019H\r
1438         DB      019H\r
1439         DB      019H\r
1440         DB      019H\r
1441         DB      019H\r
1442         DB      019H\r
1443         DB      019H\r
1444         DB      019H\r
1445         DB      019H\r
1446         DB      019H\r
1447         DB      019H\r
1448         DB      019H\r
1449         DB      019H\r
1450         DB      019H\r
1451         DB      019H\r
1452         DB      019H\r
1453         DB      019H\r
1454         DB      019H\r
1455         DB      019H\r
1456         DB      019H\r
1457         DB      019H\r
1458         DB      019H\r
1459         DB      019H\r
1460         DB      019H\r
1461         DB      019H\r
1462         DB      019H\r
1463         DB      019H\r
1464         DB      019H\r
1465         DB      019H\r
1466         DB      019H\r
1467         DB      019H\r
1468         DB      019H\r
1469         DB      01aH\r
1470         DB      01aH\r
1471         DB      01aH\r
1472         DB      01aH\r
1473         DB      01aH\r
1474         DB      01aH\r
1475         DB      01aH\r
1476         DB      01aH\r
1477         DB      01aH\r
1478         DB      01aH\r
1479         DB      01aH\r
1480         DB      01aH\r
1481         DB      01aH\r
1482         DB      01aH\r
1483         DB      01aH\r
1484         DB      01aH\r
1485         DB      01aH\r
1486         DB      01aH\r
1487         DB      01aH\r
1488         DB      01aH\r
1489         DB      01aH\r
1490         DB      01aH\r
1491         DB      01aH\r
1492         DB      01aH\r
1493         DB      01aH\r
1494         DB      01aH\r
1495         DB      01aH\r
1496         DB      01aH\r
1497         DB      01aH\r
1498         DB      01aH\r
1499         DB      01aH\r
1500         DB      01aH\r
1501         DB      01bH\r
1502         DB      01bH\r
1503         DB      01bH\r
1504         DB      01bH\r
1505         DB      01bH\r
1506         DB      01bH\r
1507         DB      01bH\r
1508         DB      01bH\r
1509         DB      01bH\r
1510         DB      01bH\r
1511         DB      01bH\r
1512         DB      01bH\r
1513         DB      01bH\r
1514         DB      01bH\r
1515         DB      01bH\r
1516         DB      01bH\r
1517         DB      01bH\r
1518         DB      01bH\r
1519         DB      01bH\r
1520         DB      01bH\r
1521         DB      01bH\r
1522         DB      01bH\r
1523         DB      01bH\r
1524         DB      01bH\r
1525         DB      01bH\r
1526         DB      01bH\r
1527         DB      01bH\r
1528         DB      01bH\r
1529         DB      01bH\r
1530         DB      01bH\r
1531         DB      01bH\r
1532         DB      01cH\r
1533 _base_length DD 00H\r
1534         DD      01H\r
1535         DD      02H\r
1536         DD      03H\r
1537         DD      04H\r
1538         DD      05H\r
1539         DD      06H\r
1540         DD      07H\r
1541         DD      08H\r
1542         DD      0aH\r
1543         DD      0cH\r
1544         DD      0eH\r
1545         DD      010H\r
1546         DD      014H\r
1547         DD      018H\r
1548         DD      01cH\r
1549         DD      020H\r
1550         DD      028H\r
1551         DD      030H\r
1552         DD      038H\r
1553         DD      040H\r
1554         DD      050H\r
1555         DD      060H\r
1556         DD      070H\r
1557         DD      080H\r
1558         DD      0a0H\r
1559         DD      0c0H\r
1560         DD      0e0H\r
1561         DD      00H\r
1562         ORG $+4\r
1563 _base_dist DD   00H\r
1564         DD      01H\r
1565         DD      02H\r
1566         DD      03H\r
1567         DD      04H\r
1568         DD      06H\r
1569         DD      08H\r
1570         DD      0cH\r
1571         DD      010H\r
1572         DD      018H\r
1573         DD      020H\r
1574         DD      030H\r
1575         DD      040H\r
1576         DD      060H\r
1577         DD      080H\r
1578         DD      0c0H\r
1579         DD      0100H\r
1580         DD      0180H\r
1581         DD      0200H\r
1582         DD      0300H\r
1583         DD      0400H\r
1584         DD      0600H\r
1585         DD      0800H\r
1586         DD      0c00H\r
1587         DD      01000H\r
1588         DD      01800H\r
1589         DD      02000H\r
1590         DD      03000H\r
1591         DD      04000H\r
1592         DD      06000H\r
1593 ; Function compile flags: /Ogtp\r
1594 ; File c:\workspaces\sysdyn\org.simantics.fmu\fmusolution\zlib-1.2.6\trees.c\r
1595 ;       COMDAT _bi_windup\r
1596 _TEXT   SEGMENT\r
1597 _bi_windup PROC                                         ; COMDAT\r
1598 ; _s$ = eax\r
1599 \r
1600 ; 1187 :     if (s->bi_valid > 8) {\r
1601 \r
1602   00000 8b 88 bc 16 00\r
1603         00               mov     ecx, DWORD PTR [eax+5820]\r
1604   00006 53               push    ebx\r
1605   00007 83 f9 08         cmp     ecx, 8\r
1606   0000a 7e 22            jle     SHORT $LN3@bi_windup\r
1607 \r
1608 ; 1188 :         put_short(s, s->bi_buf);\r
1609 \r
1610   0000c 0f b6 98 b8 16\r
1611         00 00            movzx   ebx, BYTE PTR [eax+5816]\r
1612   00013 8b 50 14         mov     edx, DWORD PTR [eax+20]\r
1613   00016 8b 48 08         mov     ecx, DWORD PTR [eax+8]\r
1614   00019 88 1c 11         mov     BYTE PTR [ecx+edx], bl\r
1615   0001c ff 40 14         inc     DWORD PTR [eax+20]\r
1616   0001f 8b 48 14         mov     ecx, DWORD PTR [eax+20]\r
1617   00022 8b 50 08         mov     edx, DWORD PTR [eax+8]\r
1618   00025 0f b6 98 b9 16\r
1619         00 00            movzx   ebx, BYTE PTR [eax+5817]\r
1620   0002c eb 10            jmp     SHORT $LN6@bi_windup\r
1621 $LN3@bi_windup:\r
1622 \r
1623 ; 1189 :     } else if (s->bi_valid > 0) {\r
1624 \r
1625   0002e 85 c9            test    ecx, ecx\r
1626   00030 7e 12            jle     SHORT $LN1@bi_windup\r
1627 \r
1628 ; 1190 :         put_byte(s, (Byte)s->bi_buf);\r
1629 \r
1630   00032 8b 48 08         mov     ecx, DWORD PTR [eax+8]\r
1631   00035 8b 50 14         mov     edx, DWORD PTR [eax+20]\r
1632   00038 8a 98 b8 16 00\r
1633         00               mov     bl, BYTE PTR [eax+5816]\r
1634 $LN6@bi_windup:\r
1635   0003e 88 1c 11         mov     BYTE PTR [ecx+edx], bl\r
1636   00041 ff 40 14         inc     DWORD PTR [eax+20]\r
1637 $LN1@bi_windup:\r
1638 \r
1639 ; 1191 :     }\r
1640 ; 1192 :     s->bi_buf = 0;\r
1641 \r
1642   00044 33 c9            xor     ecx, ecx\r
1643   00046 66 89 88 b8 16\r
1644         00 00            mov     WORD PTR [eax+5816], cx\r
1645 \r
1646 ; 1193 :     s->bi_valid = 0;\r
1647 \r
1648   0004d 89 88 bc 16 00\r
1649         00               mov     DWORD PTR [eax+5820], ecx\r
1650   00053 5b               pop     ebx\r
1651 \r
1652 ; 1194 : #ifdef DEBUG\r
1653 ; 1195 :     s->bits_sent = (s->bits_sent+7) & ~7;\r
1654 ; 1196 : #endif\r
1655 ; 1197 : }\r
1656 \r
1657   00054 c3               ret     0\r
1658 _bi_windup ENDP\r
1659 ; Function compile flags: /Ogtp\r
1660 _TEXT   ENDS\r
1661 ;       COMDAT _bi_flush\r
1662 _TEXT   SEGMENT\r
1663 _bi_flush PROC                                          ; COMDAT\r
1664 ; _s$ = eax\r
1665 \r
1666 ; 1170 :     if (s->bi_valid == 16) {\r
1667 \r
1668   00000 8b 88 bc 16 00\r
1669         00               mov     ecx, DWORD PTR [eax+5820]\r
1670   00006 53               push    ebx\r
1671   00007 83 f9 10         cmp     ecx, 16                        ; 00000010H\r
1672   0000a 75 37            jne     SHORT $LN3@bi_flush\r
1673 \r
1674 ; 1171 :         put_short(s, s->bi_buf);\r
1675 \r
1676   0000c 0f b6 98 b8 16\r
1677         00 00            movzx   ebx, BYTE PTR [eax+5816]\r
1678   00013 8b 50 14         mov     edx, DWORD PTR [eax+20]\r
1679   00016 8b 48 08         mov     ecx, DWORD PTR [eax+8]\r
1680   00019 88 1c 11         mov     BYTE PTR [ecx+edx], bl\r
1681   0001c ff 40 14         inc     DWORD PTR [eax+20]\r
1682   0001f 0f b6 98 b9 16\r
1683         00 00            movzx   ebx, BYTE PTR [eax+5817]\r
1684   00026 8b 48 14         mov     ecx, DWORD PTR [eax+20]\r
1685   00029 8b 50 08         mov     edx, DWORD PTR [eax+8]\r
1686   0002c 88 1c 11         mov     BYTE PTR [ecx+edx], bl\r
1687   0002f ff 40 14         inc     DWORD PTR [eax+20]\r
1688 \r
1689 ; 1172 :         s->bi_buf = 0;\r
1690 \r
1691   00032 33 c9            xor     ecx, ecx\r
1692   00034 66 89 88 b8 16\r
1693         00 00            mov     WORD PTR [eax+5816], cx\r
1694 \r
1695 ; 1173 :         s->bi_valid = 0;\r
1696 \r
1697   0003b 89 88 bc 16 00\r
1698         00               mov     DWORD PTR [eax+5820], ecx\r
1699   00041 5b               pop     ebx\r
1700 \r
1701 ; 1178 :     }\r
1702 ; 1179 : }\r
1703 \r
1704   00042 c3               ret     0\r
1705 $LN3@bi_flush:\r
1706 \r
1707 ; 1174 :     } else if (s->bi_valid >= 8) {\r
1708 \r
1709   00043 83 f9 08         cmp     ecx, 8\r
1710   00046 7c 27            jl      SHORT $LN1@bi_flush\r
1711 \r
1712 ; 1175 :         put_byte(s, (Byte)s->bi_buf);\r
1713 \r
1714   00048 8b 50 08         mov     edx, DWORD PTR [eax+8]\r
1715   0004b 8b 48 14         mov     ecx, DWORD PTR [eax+20]\r
1716   0004e 8a 98 b8 16 00\r
1717         00               mov     bl, BYTE PTR [eax+5816]\r
1718   00054 88 1c 0a         mov     BYTE PTR [edx+ecx], bl\r
1719 \r
1720 ; 1176 :         s->bi_buf >>= 8;\r
1721 \r
1722   00057 0f b6 90 b9 16\r
1723         00 00            movzx   edx, BYTE PTR [eax+5817]\r
1724   0005e ff 40 14         inc     DWORD PTR [eax+20]\r
1725 \r
1726 ; 1177 :         s->bi_valid -= 8;\r
1727 \r
1728   00061 83 80 bc 16 00\r
1729         00 f8            add     DWORD PTR [eax+5820], -8 ; fffffff8H\r
1730   00068 66 89 90 b8 16\r
1731         00 00            mov     WORD PTR [eax+5816], dx\r
1732 $LN1@bi_flush:\r
1733   0006f 5b               pop     ebx\r
1734 \r
1735 ; 1178 :     }\r
1736 ; 1179 : }\r
1737 \r
1738   00070 c3               ret     0\r
1739 _bi_flush ENDP\r
1740 ; Function compile flags: /Ogtp\r
1741 _TEXT   ENDS\r
1742 ;       COMDAT _bi_reverse\r
1743 _TEXT   SEGMENT\r
1744 _bi_reverse PROC                                        ; COMDAT\r
1745 ; _code$ = ecx\r
1746 ; _len$ = edx\r
1747 \r
1748 ; 1156 :     register unsigned res = 0;\r
1749 \r
1750   00000 33 c0            xor     eax, eax\r
1751   00002 56               push    esi\r
1752 $LL3@bi_reverse:\r
1753 \r
1754 ; 1157 :     do {\r
1755 ; 1158 :         res |= code & 1;\r
1756 \r
1757   00003 8b f1            mov     esi, ecx\r
1758   00005 83 e6 01         and     esi, 1\r
1759   00008 0b c6            or      eax, esi\r
1760 \r
1761 ; 1159 :         code >>= 1, res <<= 1;\r
1762 ; 1160 :     } while (--len > 0);\r
1763 \r
1764   0000a 4a               dec     edx\r
1765   0000b d1 e9            shr     ecx, 1\r
1766   0000d 03 c0            add     eax, eax\r
1767   0000f 85 d2            test    edx, edx\r
1768   00011 7f f0            jg      SHORT $LL3@bi_reverse\r
1769 \r
1770 ; 1161 :     return res >> 1;\r
1771 \r
1772   00013 d1 e8            shr     eax, 1\r
1773   00015 5e               pop     esi\r
1774 \r
1775 ; 1162 : }\r
1776 \r
1777   00016 c3               ret     0\r
1778 _bi_reverse ENDP\r
1779 ; Function compile flags: /Ogtp\r
1780 _TEXT   ENDS\r
1781 ;       COMDAT _detect_data_type\r
1782 _TEXT   SEGMENT\r
1783 _detect_data_type PROC                                  ; COMDAT\r
1784 ; _s$ = esi\r
1785 \r
1786 ; 1121 :     /* black_mask is the bit mask of black-listed bytes\r
1787 ; 1122 :      * set bits 0..6, 14..25, and 28..31\r
1788 ; 1123 :      * 0xf3ffc07f = binary 11110011111111111100000001111111\r
1789 ; 1124 :      */\r
1790 ; 1125 :     unsigned long black_mask = 0xf3ffc07fUL;\r
1791 \r
1792   00000 ba 7f c0 ff f3   mov     edx, -201342849                ; f3ffc07fH\r
1793 \r
1794 ; 1126 :     int n;\r
1795 ; 1127 : \r
1796 ; 1128 :     /* Check for non-textual ("black-listed") bytes. */\r
1797 ; 1129 :     for (n = 0; n <= 31; n++, black_mask >>= 1)\r
1798 \r
1799   00005 33 c0            xor     eax, eax\r
1800   00007 8d 8e 94 00 00\r
1801         00               lea     ecx, DWORD PTR [esi+148]\r
1802   0000d 8d 49 00         npad    3\r
1803 $LL10@detect_dat:\r
1804 \r
1805 ; 1130 :         if ((black_mask & 1) && (s->dyn_ltree[n].Freq != 0))\r
1806 \r
1807   00010 f6 c2 01         test    dl, 1\r
1808   00013 74 06            je      SHORT $LN9@detect_dat\r
1809   00015 66 83 39 00      cmp     WORD PTR [ecx], 0\r
1810   00019 75 46            jne     SHORT $LN15@detect_dat\r
1811 $LN9@detect_dat:\r
1812 \r
1813 ; 1126 :     int n;\r
1814 ; 1127 : \r
1815 ; 1128 :     /* Check for non-textual ("black-listed") bytes. */\r
1816 ; 1129 :     for (n = 0; n <= 31; n++, black_mask >>= 1)\r
1817 \r
1818   0001b 40               inc     eax\r
1819   0001c 83 c1 04         add     ecx, 4\r
1820   0001f d1 ea            shr     edx, 1\r
1821   00021 83 f8 1f         cmp     eax, 31                        ; 0000001fH\r
1822   00024 7e ea            jle     SHORT $LL10@detect_dat\r
1823 \r
1824 ; 1131 :             return Z_BINARY;\r
1825 ; 1132 : \r
1826 ; 1133 :     /* Check for textual ("white-listed") bytes. */\r
1827 ; 1134 :     if (s->dyn_ltree[9].Freq != 0 || s->dyn_ltree[10].Freq != 0\r
1828 ; 1135 :             || s->dyn_ltree[13].Freq != 0)\r
1829 \r
1830   00026 66 83 be b8 00\r
1831         00 00 00         cmp     WORD PTR [esi+184], 0\r
1832   0002e 75 34            jne     SHORT $LN5@detect_dat\r
1833   00030 66 83 be bc 00\r
1834         00 00 00         cmp     WORD PTR [esi+188], 0\r
1835   00038 75 2a            jne     SHORT $LN5@detect_dat\r
1836   0003a 66 83 be c8 00\r
1837         00 00 00         cmp     WORD PTR [esi+200], 0\r
1838   00042 75 20            jne     SHORT $LN5@detect_dat\r
1839 \r
1840 ; 1137 :     for (n = 32; n < LITERALS; n++)\r
1841 \r
1842   00044 b8 20 00 00 00   mov     eax, 32                        ; 00000020H\r
1843   00049 8d 8e 14 01 00\r
1844         00               lea     ecx, DWORD PTR [esi+276]\r
1845   0004f 90               npad    1\r
1846 $LL4@detect_dat:\r
1847 \r
1848 ; 1138 :         if (s->dyn_ltree[n].Freq != 0)\r
1849 \r
1850   00050 66 83 39 00      cmp     WORD PTR [ecx], 0\r
1851   00054 75 0e            jne     SHORT $LN5@detect_dat\r
1852 \r
1853 ; 1137 :     for (n = 32; n < LITERALS; n++)\r
1854 \r
1855   00056 40               inc     eax\r
1856   00057 83 c1 04         add     ecx, 4\r
1857   0005a 3d 00 01 00 00   cmp     eax, 256               ; 00000100H\r
1858   0005f 7c ef            jl      SHORT $LL4@detect_dat\r
1859 $LN15@detect_dat:\r
1860 \r
1861 ; 1139 :             return Z_TEXT;\r
1862 ; 1140 : \r
1863 ; 1141 :     /* There are no "black-listed" or "white-listed" bytes:\r
1864 ; 1142 :      * this stream either is empty or has tolerated ("gray-listed") bytes only.\r
1865 ; 1143 :      */\r
1866 ; 1144 :     return Z_BINARY;\r
1867 \r
1868   00061 33 c0            xor     eax, eax\r
1869 \r
1870 ; 1145 : }\r
1871 \r
1872   00063 c3               ret     0\r
1873 $LN5@detect_dat:\r
1874 \r
1875 ; 1136 :         return Z_TEXT;\r
1876 \r
1877   00064 b8 01 00 00 00   mov     eax, 1\r
1878 \r
1879 ; 1145 : }\r
1880 \r
1881   00069 c3               ret     0\r
1882 _detect_data_type ENDP\r
1883 ; Function compile flags: /Ogtp\r
1884 _TEXT   ENDS\r
1885 ;       COMDAT _compress_block\r
1886 _TEXT   SEGMENT\r
1887 _len$80874 = -16                                        ; size = 4\r
1888 _extra$ = -16                                           ; size = 4\r
1889 _val$80854 = -16                                        ; size = 4\r
1890 _lx$ = -12                                              ; size = 4\r
1891 _len$80851 = -8                                         ; size = 4\r
1892 _dist$ = -4                                             ; size = 4\r
1893 _ltree$ = 8                                             ; size = 4\r
1894 _dtree$ = 12                                            ; size = 4\r
1895 _compress_block PROC                                    ; COMDAT\r
1896 ; _s$ = eax\r
1897 \r
1898 ; 1062 : {\r
1899 \r
1900   00000 55               push    ebp\r
1901   00001 8b ec            mov     ebp, esp\r
1902   00003 83 ec 10         sub     esp, 16                        ; 00000010H\r
1903   00006 53               push    ebx\r
1904   00007 8b 5d 08         mov     ebx, DWORD PTR _ltree$[ebp]\r
1905 \r
1906 ; 1063 :     unsigned dist;      /* distance of matched string */\r
1907 ; 1064 :     int lc;             /* match length or unmatched char (if dist == 0) */\r
1908 ; 1065 :     unsigned lx = 0;    /* running index in l_buf */\r
1909 \r
1910   0000a 33 c9            xor     ecx, ecx\r
1911   0000c 56               push    esi\r
1912   0000d 57               push    edi\r
1913 \r
1914 ; 1066 :     unsigned code;      /* the code to send */\r
1915 ; 1067 :     int extra;          /* number of extra bits to send */\r
1916 ; 1068 : \r
1917 ; 1069 :     if (s->last_lit != 0) do {\r
1918 \r
1919   0000e 39 88 a0 16 00\r
1920         00               cmp     DWORD PTR [eax+5792], ecx\r
1921   00014 0f 84 bb 00 00\r
1922         00               je      $LN17@compress_b\r
1923   0001a eb 07            jmp     SHORT $LN19@compress_b\r
1924   0001c 8d 64 24 00      npad    4\r
1925 $LL26@compress_b:\r
1926   00020 8b 4d f4         mov     ecx, DWORD PTR _lx$[ebp]\r
1927 $LN19@compress_b:\r
1928 \r
1929 ; 1070 :         dist = s->d_buf[lx];\r
1930 \r
1931   00023 8b 90 a4 16 00\r
1932         00               mov     edx, DWORD PTR [eax+5796]\r
1933   00029 0f b7 14 4a      movzx   edx, WORD PTR [edx+ecx*2]\r
1934 \r
1935 ; 1071 :         lc = s->l_buf[lx++];\r
1936 \r
1937   0002d 8b b0 98 16 00\r
1938         00               mov     esi, DWORD PTR [eax+5784]\r
1939   00033 0f b6 34 31      movzx   esi, BYTE PTR [ecx+esi]\r
1940   00037 41               inc     ecx\r
1941   00038 89 4d f4         mov     DWORD PTR _lx$[ebp], ecx\r
1942 \r
1943 ; 1072 :         if (dist == 0) {\r
1944 ; 1073 :             send_code(s, lc, ltree); /* send a literal byte */\r
1945 \r
1946   0003b 8b 88 bc 16 00\r
1947         00               mov     ecx, DWORD PTR [eax+5820]\r
1948   00041 89 55 fc         mov     DWORD PTR _dist$[ebp], edx\r
1949   00044 85 d2            test    edx, edx\r
1950   00046 0f 85 04 01 00\r
1951         00               jne     $LN16@compress_b\r
1952   0004c 0f b7 7c b3 02   movzx   edi, WORD PTR [ebx+esi*4+2]\r
1953   00051 ba 10 00 00 00   mov     edx, 16                        ; 00000010H\r
1954   00056 2b d7            sub     edx, edi\r
1955   00058 3b ca            cmp     ecx, edx\r
1956   0005a 7e 54            jle     SHORT $LN15@compress_b\r
1957   0005c 0f b7 34 b3      movzx   esi, WORD PTR [ebx+esi*4]\r
1958   00060 66 8b d6         mov     dx, si\r
1959   00063 66 d3 e2         shl     dx, cl\r
1960   00066 8b 48 08         mov     ecx, DWORD PTR [eax+8]\r
1961   00069 66 09 90 b8 16\r
1962         00 00            or      WORD PTR [eax+5816], dx\r
1963   00070 0f b6 98 b8 16\r
1964         00 00            movzx   ebx, BYTE PTR [eax+5816]\r
1965   00077 8b 50 14         mov     edx, DWORD PTR [eax+20]\r
1966   0007a 88 1c 11         mov     BYTE PTR [ecx+edx], bl\r
1967   0007d ff 40 14         inc     DWORD PTR [eax+20]\r
1968   00080 0f b6 98 b9 16\r
1969         00 00            movzx   ebx, BYTE PTR [eax+5817]\r
1970   00087 8b 48 14         mov     ecx, DWORD PTR [eax+20]\r
1971   0008a 8b 50 08         mov     edx, DWORD PTR [eax+8]\r
1972   0008d 88 1c 11         mov     BYTE PTR [ecx+edx], bl\r
1973   00090 8b 90 bc 16 00\r
1974         00               mov     edx, DWORD PTR [eax+5820]\r
1975   00096 ff 40 14         inc     DWORD PTR [eax+20]\r
1976   00099 8b 5d 08         mov     ebx, DWORD PTR _ltree$[ebp]\r
1977   0009c b1 10            mov     cl, 16                 ; 00000010H\r
1978   0009e 2a ca            sub     cl, dl\r
1979   000a0 66 d3 ee         shr     si, cl\r
1980   000a3 8d 4c 3a f0      lea     ecx, DWORD PTR [edx+edi-16]\r
1981   000a7 66 89 b0 b8 16\r
1982         00 00            mov     WORD PTR [eax+5816], si\r
1983   000ae eb 10            jmp     SHORT $LN28@compress_b\r
1984 $LN15@compress_b:\r
1985   000b0 66 8b 14 b3      mov     dx, WORD PTR [ebx+esi*4]\r
1986 $LN4@compress_b:\r
1987 \r
1988 ; 1092 :                 send_bits(s, dist, extra);   /* send the extra distance bits */\r
1989 \r
1990   000b4 66 d3 e2         shl     dx, cl\r
1991   000b7 66 09 90 b8 16\r
1992         00 00            or      WORD PTR [eax+5816], dx\r
1993   000be 03 cf            add     ecx, edi\r
1994 $LN28@compress_b:\r
1995   000c0 89 88 bc 16 00\r
1996         00               mov     DWORD PTR [eax+5820], ecx\r
1997 $LN18@compress_b:\r
1998 \r
1999 ; 1093 :             }\r
2000 ; 1094 :         } /* literal or match pair ? */\r
2001 ; 1095 : \r
2002 ; 1096 :         /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\r
2003 ; 1097 :         Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\r
2004 ; 1098 :                "pendingBuf overflow");\r
2005 ; 1099 : \r
2006 ; 1100 :     } while (lx < s->last_lit);\r
2007 \r
2008   000c6 8b 4d f4         mov     ecx, DWORD PTR _lx$[ebp]\r
2009   000c9 3b 88 a0 16 00\r
2010         00               cmp     ecx, DWORD PTR [eax+5792]\r
2011   000cf 0f 82 4b ff ff\r
2012         ff               jb      $LL26@compress_b\r
2013 $LN17@compress_b:\r
2014 \r
2015 ; 1101 : \r
2016 ; 1102 :     send_code(s, END_BLOCK, ltree);\r
2017 \r
2018   000d5 0f b7 bb 02 04\r
2019         00 00            movzx   edi, WORD PTR [ebx+1026]\r
2020   000dc 8b 88 bc 16 00\r
2021         00               mov     ecx, DWORD PTR [eax+5820]\r
2022   000e2 ba 10 00 00 00   mov     edx, 16                        ; 00000010H\r
2023   000e7 2b d7            sub     edx, edi\r
2024   000e9 3b ca            cmp     ecx, edx\r
2025   000eb 0f 8e c3 02 00\r
2026         00               jle     $LN2@compress_b\r
2027   000f1 0f b7 b3 00 04\r
2028         00 00            movzx   esi, WORD PTR [ebx+1024]\r
2029   000f8 66 8b d6         mov     dx, si\r
2030   000fb 66 d3 e2         shl     dx, cl\r
2031   000fe 8b 48 08         mov     ecx, DWORD PTR [eax+8]\r
2032   00101 66 09 90 b8 16\r
2033         00 00            or      WORD PTR [eax+5816], dx\r
2034   00108 0f b6 98 b8 16\r
2035         00 00            movzx   ebx, BYTE PTR [eax+5816]\r
2036   0010f 8b 50 14         mov     edx, DWORD PTR [eax+20]\r
2037   00112 88 1c 11         mov     BYTE PTR [ecx+edx], bl\r
2038   00115 ff 40 14         inc     DWORD PTR [eax+20]\r
2039   00118 0f b6 98 b9 16\r
2040         00 00            movzx   ebx, BYTE PTR [eax+5817]\r
2041   0011f 8b 48 14         mov     ecx, DWORD PTR [eax+20]\r
2042   00122 8b 50 08         mov     edx, DWORD PTR [eax+8]\r
2043   00125 88 1c 11         mov     BYTE PTR [ecx+edx], bl\r
2044   00128 8b 90 bc 16 00\r
2045         00               mov     edx, DWORD PTR [eax+5820]\r
2046   0012e ff 40 14         inc     DWORD PTR [eax+20]\r
2047   00131 b1 10            mov     cl, 16                 ; 00000010H\r
2048   00133 2a ca            sub     cl, dl\r
2049   00135 66 d3 ee         shr     si, cl\r
2050   00138 8d 4c 3a f0      lea     ecx, DWORD PTR [edx+edi-16]\r
2051   0013c 5f               pop     edi\r
2052   0013d 89 88 bc 16 00\r
2053         00               mov     DWORD PTR [eax+5820], ecx\r
2054   00143 66 89 b0 b8 16\r
2055         00 00            mov     WORD PTR [eax+5816], si\r
2056   0014a 5e               pop     esi\r
2057   0014b 5b               pop     ebx\r
2058 \r
2059 ; 1103 : }\r
2060 \r
2061   0014c 8b e5            mov     esp, ebp\r
2062   0014e 5d               pop     ebp\r
2063   0014f c3               ret     0\r
2064 $LN16@compress_b:\r
2065 \r
2066 ; 1074 :             Tracecv(isgraph(lc), (stderr," '%c' ", lc));\r
2067 ; 1075 :         } else {\r
2068 ; 1076 :             /* Here, lc is the match length - MIN_MATCH */\r
2069 ; 1077 :             code = _length_code[lc];\r
2070 \r
2071   00150 0f b6 be 00 00\r
2072         00 00            movzx   edi, BYTE PTR __length_code[esi]\r
2073 \r
2074 ; 1078 :             send_code(s, code+LITERALS+1, ltree); /* send the length code */\r
2075 \r
2076   00157 0f b7 94 bb 06\r
2077         04 00 00         movzx   edx, WORD PTR [ebx+edi*4+1030]\r
2078   0015f bb 10 00 00 00   mov     ebx, 16                        ; 00000010H\r
2079   00164 2b da            sub     ebx, edx\r
2080   00166 89 55 f8         mov     DWORD PTR _len$80851[ebp], edx\r
2081   00169 8b 55 08         mov     edx, DWORD PTR _ltree$[ebp]\r
2082   0016c 3b cb            cmp     ecx, ebx\r
2083   0016e 7e 61            jle     SHORT $LN12@compress_b\r
2084   00170 0f b7 94 ba 04\r
2085         04 00 00         movzx   edx, WORD PTR [edx+edi*4+1028]\r
2086   00178 89 55 f0         mov     DWORD PTR _val$80854[ebp], edx\r
2087   0017b 66 d3 e2         shl     dx, cl\r
2088   0017e 8b 48 08         mov     ecx, DWORD PTR [eax+8]\r
2089   00181 66 09 90 b8 16\r
2090         00 00            or      WORD PTR [eax+5816], dx\r
2091   00188 0f b6 98 b8 16\r
2092         00 00            movzx   ebx, BYTE PTR [eax+5816]\r
2093   0018f 8b 50 14         mov     edx, DWORD PTR [eax+20]\r
2094   00192 88 1c 11         mov     BYTE PTR [ecx+edx], bl\r
2095   00195 ff 40 14         inc     DWORD PTR [eax+20]\r
2096   00198 0f b6 98 b9 16\r
2097         00 00            movzx   ebx, BYTE PTR [eax+5817]\r
2098   0019f 8b 48 14         mov     ecx, DWORD PTR [eax+20]\r
2099   001a2 8b 50 08         mov     edx, DWORD PTR [eax+8]\r
2100   001a5 88 1c 11         mov     BYTE PTR [ecx+edx], bl\r
2101   001a8 8b 90 bc 16 00\r
2102         00               mov     edx, DWORD PTR [eax+5820]\r
2103   001ae 8b 5d f0         mov     ebx, DWORD PTR _val$80854[ebp]\r
2104   001b1 ff 40 14         inc     DWORD PTR [eax+20]\r
2105   001b4 b1 10            mov     cl, 16                 ; 00000010H\r
2106   001b6 2a ca            sub     cl, dl\r
2107   001b8 66 d3 eb         shr     bx, cl\r
2108   001bb 8b 4d f8         mov     ecx, DWORD PTR _len$80851[ebp]\r
2109   001be 8d 54 0a f0      lea     edx, DWORD PTR [edx+ecx-16]\r
2110   001c2 89 90 bc 16 00\r
2111         00               mov     DWORD PTR [eax+5820], edx\r
2112   001c8 66 89 98 b8 16\r
2113         00 00            mov     WORD PTR [eax+5816], bx\r
2114   001cf eb 1b            jmp     SHORT $LN29@compress_b\r
2115 $LN12@compress_b:\r
2116   001d1 66 8b 94 ba 04\r
2117         04 00 00         mov     dx, WORD PTR [edx+edi*4+1028]\r
2118   001d9 66 d3 e2         shl     dx, cl\r
2119   001dc 66 09 90 b8 16\r
2120         00 00            or      WORD PTR [eax+5816], dx\r
2121   001e3 03 4d f8         add     ecx, DWORD PTR _len$80851[ebp]\r
2122   001e6 89 88 bc 16 00\r
2123         00               mov     DWORD PTR [eax+5820], ecx\r
2124 $LN29@compress_b:\r
2125 \r
2126 ; 1079 :             extra = extra_lbits[code];\r
2127 \r
2128   001ec 8b 1c bd 00 00\r
2129         00 00            mov     ebx, DWORD PTR _extra_lbits[edi*4]\r
2130   001f3 8b 55 fc         mov     edx, DWORD PTR _dist$[ebp]\r
2131   001f6 89 5d f0         mov     DWORD PTR _extra$[ebp], ebx\r
2132 \r
2133 ; 1080 :             if (extra != 0) {\r
2134 \r
2135   001f9 85 db            test    ebx, ebx\r
2136   001fb 74 7a            je      SHORT $LN8@compress_b\r
2137 \r
2138 ; 1081 :                 lc -= base_length[code];\r
2139 \r
2140   001fd 2b 34 bd 00 00\r
2141         00 00            sub     esi, DWORD PTR _base_length[edi*4]\r
2142 \r
2143 ; 1082 :                 send_bits(s, lc, extra);       /* send the extra length bits */\r
2144 \r
2145   00204 8b 88 bc 16 00\r
2146         00               mov     ecx, DWORD PTR [eax+5820]\r
2147   0020a bf 10 00 00 00   mov     edi, 16                        ; 00000010H\r
2148   0020f 2b fb            sub     edi, ebx\r
2149   00211 3b cf            cmp     ecx, edi\r
2150   00213 7e 50            jle     SHORT $LN9@compress_b\r
2151   00215 66 8b fe         mov     di, si\r
2152   00218 66 d3 e7         shl     di, cl\r
2153   0021b 8b 48 08         mov     ecx, DWORD PTR [eax+8]\r
2154   0021e 66 09 b8 b8 16\r
2155         00 00            or      WORD PTR [eax+5816], di\r
2156   00225 0f b6 98 b8 16\r
2157         00 00            movzx   ebx, BYTE PTR [eax+5816]\r
2158   0022c 8b 78 14         mov     edi, DWORD PTR [eax+20]\r
2159   0022f 88 1c 39         mov     BYTE PTR [ecx+edi], bl\r
2160   00232 ff 40 14         inc     DWORD PTR [eax+20]\r
2161   00235 0f b6 98 b9 16\r
2162         00 00            movzx   ebx, BYTE PTR [eax+5817]\r
2163   0023c 8b 48 08         mov     ecx, DWORD PTR [eax+8]\r
2164   0023f 8b 78 14         mov     edi, DWORD PTR [eax+20]\r
2165   00242 88 1c 0f         mov     BYTE PTR [edi+ecx], bl\r
2166   00245 8b 98 bc 16 00\r
2167         00               mov     ebx, DWORD PTR [eax+5820]\r
2168   0024b ff 40 14         inc     DWORD PTR [eax+20]\r
2169   0024e b1 10            mov     cl, 16                 ; 00000010H\r
2170   00250 2a cb            sub     cl, bl\r
2171   00252 66 d3 ee         shr     si, cl\r
2172   00255 8b 4d f0         mov     ecx, DWORD PTR _extra$[ebp]\r
2173   00258 8d 4c 0b f0      lea     ecx, DWORD PTR [ebx+ecx-16]\r
2174   0025c 66 89 b0 b8 16\r
2175         00 00            mov     WORD PTR [eax+5816], si\r
2176   00263 eb 0c            jmp     SHORT $LN30@compress_b\r
2177 $LN9@compress_b:\r
2178   00265 66 d3 e6         shl     si, cl\r
2179   00268 66 09 b0 b8 16\r
2180         00 00            or      WORD PTR [eax+5816], si\r
2181   0026f 03 cb            add     ecx, ebx\r
2182 $LN30@compress_b:\r
2183   00271 89 88 bc 16 00\r
2184         00               mov     DWORD PTR [eax+5820], ecx\r
2185 $LN8@compress_b:\r
2186 \r
2187 ; 1083 :             }\r
2188 ; 1084 :             dist--; /* dist is now the match distance - 1 */\r
2189 \r
2190   00277 4a               dec     edx\r
2191   00278 89 55 fc         mov     DWORD PTR _dist$[ebp], edx\r
2192 \r
2193 ; 1085 :             code = d_code(dist);\r
2194 \r
2195   0027b 81 fa 00 01 00\r
2196         00               cmp     edx, 256               ; 00000100H\r
2197   00281 73 09            jae     SHORT $LN23@compress_b\r
2198   00283 0f b6 b2 00 00\r
2199         00 00            movzx   esi, BYTE PTR __dist_code[edx]\r
2200   0028a eb 0c            jmp     SHORT $LN24@compress_b\r
2201 $LN23@compress_b:\r
2202   0028c 8b ca            mov     ecx, edx\r
2203   0028e c1 e9 07         shr     ecx, 7\r
2204   00291 0f b6 b1 00 01\r
2205         00 00            movzx   esi, BYTE PTR __dist_code[ecx+256]\r
2206 $LN24@compress_b:\r
2207 \r
2208 ; 1086 :             Assert (code < D_CODES, "bad d_code");\r
2209 ; 1087 : \r
2210 ; 1088 :             send_code(s, code, dtree);       /* send the distance code */\r
2211 \r
2212   00298 8b 4d 0c         mov     ecx, DWORD PTR _dtree$[ebp]\r
2213   0029b 0f b7 7c b1 02   movzx   edi, WORD PTR [ecx+esi*4+2]\r
2214   002a0 8b 88 bc 16 00\r
2215         00               mov     ecx, DWORD PTR [eax+5820]\r
2216   002a6 bb 10 00 00 00   mov     ebx, 16                        ; 00000010H\r
2217   002ab 2b df            sub     ebx, edi\r
2218   002ad 89 7d f0         mov     DWORD PTR _len$80874[ebp], edi\r
2219   002b0 3b cb            cmp     ecx, ebx\r
2220   002b2 7e 60            jle     SHORT $LN7@compress_b\r
2221   002b4 8b 55 0c         mov     edx, DWORD PTR _dtree$[ebp]\r
2222   002b7 0f b7 3c b2      movzx   edi, WORD PTR [edx+esi*4]\r
2223   002bb 66 8b d7         mov     dx, di\r
2224   002be 66 d3 e2         shl     dx, cl\r
2225   002c1 8b 48 08         mov     ecx, DWORD PTR [eax+8]\r
2226   002c4 66 09 90 b8 16\r
2227         00 00            or      WORD PTR [eax+5816], dx\r
2228   002cb 0f b6 98 b8 16\r
2229         00 00            movzx   ebx, BYTE PTR [eax+5816]\r
2230   002d2 8b 50 14         mov     edx, DWORD PTR [eax+20]\r
2231   002d5 88 1c 11         mov     BYTE PTR [ecx+edx], bl\r
2232   002d8 ff 40 14         inc     DWORD PTR [eax+20]\r
2233   002db 8b 48 14         mov     ecx, DWORD PTR [eax+20]\r
2234   002de 0f b6 98 b9 16\r
2235         00 00            movzx   ebx, BYTE PTR [eax+5817]\r
2236   002e5 8b 50 08         mov     edx, DWORD PTR [eax+8]\r
2237   002e8 88 1c 11         mov     BYTE PTR [ecx+edx], bl\r
2238   002eb 8b 90 bc 16 00\r
2239         00               mov     edx, DWORD PTR [eax+5820]\r
2240   002f1 ff 40 14         inc     DWORD PTR [eax+20]\r
2241   002f4 b1 10            mov     cl, 16                 ; 00000010H\r
2242   002f6 2a ca            sub     cl, dl\r
2243   002f8 66 d3 ef         shr     di, cl\r
2244   002fb 8b 4d f0         mov     ecx, DWORD PTR _len$80874[ebp]\r
2245   002fe 8d 54 0a f0      lea     edx, DWORD PTR [edx+ecx-16]\r
2246   00302 89 90 bc 16 00\r
2247         00               mov     DWORD PTR [eax+5820], edx\r
2248   00308 8b 55 fc         mov     edx, DWORD PTR _dist$[ebp]\r
2249   0030b 66 89 b8 b8 16\r
2250         00 00            mov     WORD PTR [eax+5816], di\r
2251   00312 eb 19            jmp     SHORT $LN31@compress_b\r
2252 $LN7@compress_b:\r
2253   00314 8b 5d 0c         mov     ebx, DWORD PTR _dtree$[ebp]\r
2254   00317 66 8b 1c b3      mov     bx, WORD PTR [ebx+esi*4]\r
2255   0031b 66 d3 e3         shl     bx, cl\r
2256   0031e 66 09 98 b8 16\r
2257         00 00            or      WORD PTR [eax+5816], bx\r
2258   00325 03 cf            add     ecx, edi\r
2259   00327 89 88 bc 16 00\r
2260         00               mov     DWORD PTR [eax+5820], ecx\r
2261 $LN31@compress_b:\r
2262 \r
2263 ; 1089 :             extra = extra_dbits[code];\r
2264 \r
2265   0032d 8b 3c b5 00 00\r
2266         00 00            mov     edi, DWORD PTR _extra_dbits[esi*4]\r
2267   00334 8b 5d 08         mov     ebx, DWORD PTR _ltree$[ebp]\r
2268 \r
2269 ; 1090 :             if (extra != 0) {\r
2270 \r
2271   00337 85 ff            test    edi, edi\r
2272   00339 0f 84 87 fd ff\r
2273         ff               je      $LN18@compress_b\r
2274 \r
2275 ; 1091 :                 dist -= base_dist[code];\r
2276 \r
2277   0033f 2b 14 b5 00 00\r
2278         00 00            sub     edx, DWORD PTR _base_dist[esi*4]\r
2279 \r
2280 ; 1092 :                 send_bits(s, dist, extra);   /* send the extra distance bits */\r
2281 \r
2282   00346 8b 88 bc 16 00\r
2283         00               mov     ecx, DWORD PTR [eax+5820]\r
2284   0034c be 10 00 00 00   mov     esi, 16                        ; 00000010H\r
2285   00351 2b f7            sub     esi, edi\r
2286   00353 3b ce            cmp     ecx, esi\r
2287   00355 0f 8e 59 fd ff\r
2288         ff               jle     $LN4@compress_b\r
2289   0035b 66 8b f2         mov     si, dx\r
2290   0035e 66 d3 e6         shl     si, cl\r
2291   00361 8b 48 08         mov     ecx, DWORD PTR [eax+8]\r
2292   00364 66 09 b0 b8 16\r
2293         00 00            or      WORD PTR [eax+5816], si\r
2294   0036b 0f b6 98 b8 16\r
2295         00 00            movzx   ebx, BYTE PTR [eax+5816]\r
2296   00372 8b 70 14         mov     esi, DWORD PTR [eax+20]\r
2297   00375 88 1c 31         mov     BYTE PTR [ecx+esi], bl\r
2298   00378 ff 40 14         inc     DWORD PTR [eax+20]\r
2299   0037b 0f b6 98 b9 16\r
2300         00 00            movzx   ebx, BYTE PTR [eax+5817]\r
2301   00382 8b 70 14         mov     esi, DWORD PTR [eax+20]\r
2302   00385 8b 48 08         mov     ecx, DWORD PTR [eax+8]\r
2303   00388 88 1c 0e         mov     BYTE PTR [esi+ecx], bl\r
2304   0038b 8b 98 bc 16 00\r
2305         00               mov     ebx, DWORD PTR [eax+5820]\r
2306   00391 ff 40 14         inc     DWORD PTR [eax+20]\r
2307   00394 b1 10            mov     cl, 16                 ; 00000010H\r
2308   00396 2a cb            sub     cl, bl\r
2309   00398 66 d3 ea         shr     dx, cl\r
2310   0039b 66 89 90 b8 16\r
2311         00 00            mov     WORD PTR [eax+5816], dx\r
2312   003a2 8d 54 3b f0      lea     edx, DWORD PTR [ebx+edi-16]\r
2313   003a6 8b 5d 08         mov     ebx, DWORD PTR _ltree$[ebp]\r
2314   003a9 89 90 bc 16 00\r
2315         00               mov     DWORD PTR [eax+5820], edx\r
2316   003af e9 12 fd ff ff   jmp     $LN18@compress_b\r
2317 $LN2@compress_b:\r
2318 \r
2319 ; 1101 : \r
2320 ; 1102 :     send_code(s, END_BLOCK, ltree);\r
2321 \r
2322   003b4 66 8b 93 00 04\r
2323         00 00            mov     dx, WORD PTR [ebx+1024]\r
2324   003bb 66 d3 e2         shl     dx, cl\r
2325   003be 66 09 90 b8 16\r
2326         00 00            or      WORD PTR [eax+5816], dx\r
2327   003c5 03 cf            add     ecx, edi\r
2328   003c7 5f               pop     edi\r
2329   003c8 5e               pop     esi\r
2330   003c9 89 88 bc 16 00\r
2331         00               mov     DWORD PTR [eax+5820], ecx\r
2332   003cf 5b               pop     ebx\r
2333 \r
2334 ; 1103 : }\r
2335 \r
2336   003d0 8b e5            mov     esp, ebp\r
2337   003d2 5d               pop     ebp\r
2338   003d3 c3               ret     0\r
2339 _compress_block ENDP\r
2340 _TEXT   ENDS\r
2341 PUBLIC  __tr_align\r
2342 ; Function compile flags: /Ogtp\r
2343 ;       COMDAT __tr_align\r
2344 _TEXT   SEGMENT\r
2345 __tr_align PROC                                         ; COMDAT\r
2346 ; _s$ = eax\r
2347 \r
2348 ; 895  :     send_bits(s, STATIC_TREES<<1, 3);\r
2349 \r
2350   00000 8b 88 bc 16 00\r
2351         00               mov     ecx, DWORD PTR [eax+5820]\r
2352   00006 ba 02 00 00 00   mov     edx, 2\r
2353   0000b 66 d3 e2         shl     dx, cl\r
2354   0000e 53               push    ebx\r
2355   0000f 56               push    esi\r
2356   00010 be 01 00 00 00   mov     esi, 1\r
2357   00015 66 09 90 b8 16\r
2358         00 00            or      WORD PTR [eax+5816], dx\r
2359   0001c 83 f9 0d         cmp     ecx, 13                        ; 0000000dH\r
2360   0001f 7e 4c            jle     SHORT $LN4@tr_align\r
2361   00021 0f b6 98 b8 16\r
2362         00 00            movzx   ebx, BYTE PTR [eax+5816]\r
2363   00028 8b 50 14         mov     edx, DWORD PTR [eax+20]\r
2364   0002b 8b 48 08         mov     ecx, DWORD PTR [eax+8]\r
2365   0002e 88 1c 11         mov     BYTE PTR [ecx+edx], bl\r
2366   00031 01 70 14         add     DWORD PTR [eax+20], esi\r
2367   00034 0f b6 98 b9 16\r
2368         00 00            movzx   ebx, BYTE PTR [eax+5817]\r
2369   0003b 8b 48 14         mov     ecx, DWORD PTR [eax+20]\r
2370   0003e 8b 50 08         mov     edx, DWORD PTR [eax+8]\r
2371   00041 88 1c 11         mov     BYTE PTR [ecx+edx], bl\r
2372   00044 8b 90 bc 16 00\r
2373         00               mov     edx, DWORD PTR [eax+5820]\r
2374   0004a 01 70 14         add     DWORD PTR [eax+20], esi\r
2375   0004d 57               push    edi\r
2376   0004e b1 10            mov     cl, 16                 ; 00000010H\r
2377   00050 2a ca            sub     cl, dl\r
2378   00052 bf 02 00 00 00   mov     edi, 2\r
2379   00057 66 d3 ef         shr     di, cl\r
2380   0005a 83 c2 f3         add     edx, -13               ; fffffff3H\r
2381   0005d 89 90 bc 16 00\r
2382         00               mov     DWORD PTR [eax+5820], edx\r
2383   00063 66 89 b8 b8 16\r
2384         00 00            mov     WORD PTR [eax+5816], di\r
2385   0006a 5f               pop     edi\r
2386   0006b eb 09            jmp     SHORT $LN3@tr_align\r
2387 $LN4@tr_align:\r
2388   0006d 83 c1 03         add     ecx, 3\r
2389   00070 89 88 bc 16 00\r
2390         00               mov     DWORD PTR [eax+5820], ecx\r
2391 $LN3@tr_align:\r
2392 \r
2393 ; 896  :     send_code(s, END_BLOCK, static_ltree);\r
2394 \r
2395   00076 8b 88 bc 16 00\r
2396         00               mov     ecx, DWORD PTR [eax+5820]\r
2397   0007c 33 d2            xor     edx, edx\r
2398   0007e 66 d3 e2         shl     dx, cl\r
2399   00081 66 09 90 b8 16\r
2400         00 00            or      WORD PTR [eax+5816], dx\r
2401   00088 83 f9 09         cmp     ecx, 9\r
2402   0008b 7e 4c            jle     SHORT $LN2@tr_align\r
2403   0008d 0f b6 98 b8 16\r
2404         00 00            movzx   ebx, BYTE PTR [eax+5816]\r
2405   00094 8b 50 14         mov     edx, DWORD PTR [eax+20]\r
2406   00097 8b 48 08         mov     ecx, DWORD PTR [eax+8]\r
2407   0009a 88 1c 11         mov     BYTE PTR [ecx+edx], bl\r
2408   0009d 01 70 14         add     DWORD PTR [eax+20], esi\r
2409   000a0 0f b6 98 b9 16\r
2410         00 00            movzx   ebx, BYTE PTR [eax+5817]\r
2411   000a7 8b 48 14         mov     ecx, DWORD PTR [eax+20]\r
2412   000aa 8b 50 08         mov     edx, DWORD PTR [eax+8]\r
2413   000ad 88 1c 11         mov     BYTE PTR [ecx+edx], bl\r
2414   000b0 01 70 14         add     DWORD PTR [eax+20], esi\r
2415   000b3 8b 90 bc 16 00\r
2416         00               mov     edx, DWORD PTR [eax+5820]\r
2417   000b9 b1 10            mov     cl, 16                 ; 00000010H\r
2418   000bb 33 f6            xor     esi, esi\r
2419   000bd 2a ca            sub     cl, dl\r
2420   000bf 66 d3 ee         shr     si, cl\r
2421   000c2 83 c2 f7         add     edx, -9                        ; fffffff7H\r
2422   000c5 89 90 bc 16 00\r
2423         00               mov     DWORD PTR [eax+5820], edx\r
2424   000cb 66 89 b0 b8 16\r
2425         00 00            mov     WORD PTR [eax+5816], si\r
2426   000d2 5e               pop     esi\r
2427   000d3 5b               pop     ebx\r
2428 \r
2429 ; 897  : #ifdef DEBUG\r
2430 ; 898  :     s->compressed_len += 10L; /* 3 for block type, 7 for EOB */\r
2431 ; 899  : #endif\r
2432 ; 900  :     bi_flush(s);\r
2433 \r
2434   000d4 e9 00 00 00 00   jmp     _bi_flush\r
2435 $LN2@tr_align:\r
2436 \r
2437 ; 896  :     send_code(s, END_BLOCK, static_ltree);\r
2438 \r
2439   000d9 83 c1 07         add     ecx, 7\r
2440   000dc 5e               pop     esi\r
2441   000dd 89 88 bc 16 00\r
2442         00               mov     DWORD PTR [eax+5820], ecx\r
2443   000e3 5b               pop     ebx\r
2444 \r
2445 ; 897  : #ifdef DEBUG\r
2446 ; 898  :     s->compressed_len += 10L; /* 3 for block type, 7 for EOB */\r
2447 ; 899  : #endif\r
2448 ; 900  :     bi_flush(s);\r
2449 \r
2450   000e4 e9 00 00 00 00   jmp     _bi_flush\r
2451 __tr_align ENDP\r
2452 _TEXT   ENDS\r
2453 PUBLIC  __tr_flush_bits\r
2454 ; Function compile flags: /Ogtp\r
2455 ;       COMDAT __tr_flush_bits\r
2456 _TEXT   SEGMENT\r
2457 __tr_flush_bits PROC                                    ; COMDAT\r
2458 ; _s$ = eax\r
2459 \r
2460 ; 885  :     bi_flush(s);\r
2461 \r
2462   00000 e9 00 00 00 00   jmp     _bi_flush\r
2463 __tr_flush_bits ENDP\r
2464 ; Function compile flags: /Ogtp\r
2465 _TEXT   ENDS\r
2466 ;       COMDAT _send_tree\r
2467 _TEXT   SEGMENT\r
2468 tv1014 = -28                                            ; size = 4\r
2469 tv1013 = -28                                            ; size = 4\r
2470 tv1012 = -28                                            ; size = 4\r
2471 tv1011 = -28                                            ; size = 4\r
2472 tv1010 = -28                                            ; size = 4\r
2473 tv1009 = -28                                            ; size = 4\r
2474 tv1008 = -28                                            ; size = 4\r
2475 _curlen$ = -28                                          ; size = 4\r
2476 tv589 = -24                                             ; size = 4\r
2477 _val$80642 = -20                                        ; size = 4\r
2478 _val$80631 = -20                                        ; size = 4\r
2479 _val$80619 = -20                                        ; size = 4\r
2480 _val$80608 = -20                                        ; size = 4\r
2481 _val$80595 = -20                                        ; size = 4\r
2482 _val$80584 = -20                                        ; size = 4\r
2483 _val$80573 = -20                                        ; size = 4\r
2484 _prevlen$ = -20                                         ; size = 4\r
2485 tv1196 = -16                                            ; size = 4\r
2486 _nextlen$ = -12                                         ; size = 4\r
2487 _len$80628 = -8                                         ; size = 4\r
2488 _len$80605 = -8                                         ; size = 4\r
2489 _len$80581 = -8                                         ; size = 4\r
2490 _len$80570 = -8                                         ; size = 4\r
2491 _min_count$ = -8                                        ; size = 4\r
2492 _count$ = -4                                            ; size = 4\r
2493 _send_tree PROC                                         ; COMDAT\r
2494 ; _s$ = eax\r
2495 ; _tree$ = edx\r
2496 ; _max_code$ = ecx\r
2497 \r
2498 ; 754  : {\r
2499 \r
2500   00000 55               push    ebp\r
2501   00001 8b ec            mov     ebp, esp\r
2502   00003 83 ec 1c         sub     esp, 28                        ; 0000001cH\r
2503   00006 53               push    ebx\r
2504   00007 56               push    esi\r
2505   00008 8b f2            mov     esi, edx\r
2506 \r
2507 ; 755  :     int n;                     /* iterates over all tree elements */\r
2508 ; 756  :     int prevlen = -1;          /* last emitted length */\r
2509 ; 757  :     int curlen;                /* length of current code */\r
2510 ; 758  :     int nextlen = tree[0].Len; /* length of next code */\r
2511 \r
2512   0000a 0f b7 5e 02      movzx   ebx, WORD PTR [esi+2]\r
2513 \r
2514 ; 759  :     int count = 0;             /* repeat count of the current code */\r
2515 \r
2516   0000e 33 d2            xor     edx, edx\r
2517   00010 57               push    edi\r
2518   00011 8b f9            mov     edi, ecx\r
2519   00013 c7 45 ec ff ff\r
2520         ff ff            mov     DWORD PTR _prevlen$[ebp], -1\r
2521   0001a 89 5d f4         mov     DWORD PTR _nextlen$[ebp], ebx\r
2522 \r
2523 ; 760  :     int max_count = 7;         /* max repeat count */\r
2524 \r
2525   0001d 8d 4a 07         lea     ecx, DWORD PTR [edx+7]\r
2526 \r
2527 ; 761  :     int min_count = 4;         /* min repeat count */\r
2528 \r
2529   00020 c7 45 f8 04 00\r
2530         00 00            mov     DWORD PTR _min_count$[ebp], 4\r
2531 \r
2532 ; 762  : \r
2533 ; 763  :     /* tree[max_code+1].Len = -1; */  /* guard already set */\r
2534 ; 764  :     if (nextlen == 0) max_count = 138, min_count = 3;\r
2535 \r
2536   00027 85 db            test    ebx, ebx\r
2537   00029 75 0c            jne     SHORT $LN36@send_tree\r
2538   0002b b9 8a 00 00 00   mov     ecx, 138               ; 0000008aH\r
2539   00030 c7 45 f8 03 00\r
2540         00 00            mov     DWORD PTR _min_count$[ebp], 3\r
2541 $LN36@send_tree:\r
2542 \r
2543 ; 765  : \r
2544 ; 766  :     for (n = 0; n <= max_code; n++) {\r
2545 \r
2546   00037 85 ff            test    edi, edi\r
2547   00039 0f 88 35 05 00\r
2548         00               js      $LN33@send_tree\r
2549   0003f 83 c6 06         add     esi, 6\r
2550   00042 47               inc     edi\r
2551   00043 89 75 f0         mov     DWORD PTR tv1196[ebp], esi\r
2552   00046 89 7d e8         mov     DWORD PTR tv589[ebp], edi\r
2553   00049 bb 01 00 00 00   mov     ebx, 1\r
2554   0004e 8b ff            npad    2\r
2555 $LL35@send_tree:\r
2556 \r
2557 ; 767  :         curlen = nextlen; nextlen = tree[n+1].Len;\r
2558 \r
2559   00050 8b 7d f0         mov     edi, DWORD PTR tv1196[ebp]\r
2560   00053 0f b7 3f         movzx   edi, WORD PTR [edi]\r
2561   00056 8b 75 f4         mov     esi, DWORD PTR _nextlen$[ebp]\r
2562 \r
2563 ; 768  :         if (++count < max_count && curlen == nextlen) {\r
2564 \r
2565   00059 03 d3            add     edx, ebx\r
2566   0005b 89 75 e4         mov     DWORD PTR _curlen$[ebp], esi\r
2567   0005e 89 7d f4         mov     DWORD PTR _nextlen$[ebp], edi\r
2568   00061 89 55 fc         mov     DWORD PTR _count$[ebp], edx\r
2569   00064 3b d1            cmp     edx, ecx\r
2570   00066 7d 08            jge     SHORT $LN32@send_tree\r
2571   00068 3b f7            cmp     esi, edi\r
2572   0006a 0f 84 f7 04 00\r
2573         00               je      $LN34@send_tree\r
2574 $LN32@send_tree:\r
2575 \r
2576 ; 769  :             continue;\r
2577 ; 770  :         } else if (count < min_count) {\r
2578 \r
2579   00070 3b 55 f8         cmp     edx, DWORD PTR _min_count$[ebp]\r
2580   00073 0f 8d a5 00 00\r
2581         00               jge     $LN30@send_tree\r
2582   00079 8d a4 24 00 00\r
2583         00 00            npad    7\r
2584 $LL29@send_tree:\r
2585 \r
2586 ; 771  :             do { send_code(s, curlen, s->bl_tree); } while (--count != 0);\r
2587 \r
2588   00080 0f b7 bc b0 7e\r
2589         0a 00 00         movzx   edi, WORD PTR [eax+esi*4+2686]\r
2590   00088 8b 88 bc 16 00\r
2591         00               mov     ecx, DWORD PTR [eax+5820]\r
2592   0008e ba 10 00 00 00   mov     edx, 16                        ; 00000010H\r
2593   00093 2b d7            sub     edx, edi\r
2594   00095 3b ca            cmp     ecx, edx\r
2595   00097 7e 5d            jle     SHORT $LN26@send_tree\r
2596   00099 0f b7 b4 b0 7c\r
2597         0a 00 00         movzx   esi, WORD PTR [eax+esi*4+2684]\r
2598   000a1 66 8b d6         mov     dx, si\r
2599   000a4 66 d3 e2         shl     dx, cl\r
2600   000a7 8b 48 08         mov     ecx, DWORD PTR [eax+8]\r
2601   000aa 66 09 90 b8 16\r
2602         00 00            or      WORD PTR [eax+5816], dx\r
2603   000b1 0f b6 98 b8 16\r
2604         00 00            movzx   ebx, BYTE PTR [eax+5816]\r
2605   000b8 8b 50 14         mov     edx, DWORD PTR [eax+20]\r
2606   000bb 88 1c 11         mov     BYTE PTR [ecx+edx], bl\r
2607   000be ff 40 14         inc     DWORD PTR [eax+20]\r
2608   000c1 0f b6 98 b9 16\r
2609         00 00            movzx   ebx, BYTE PTR [eax+5817]\r
2610   000c8 8b 48 14         mov     ecx, DWORD PTR [eax+20]\r
2611   000cb 8b 50 08         mov     edx, DWORD PTR [eax+8]\r
2612   000ce 88 1c 11         mov     BYTE PTR [ecx+edx], bl\r
2613   000d1 8b 90 bc 16 00\r
2614         00               mov     edx, DWORD PTR [eax+5820]\r
2615   000d7 b1 10            mov     cl, 16                 ; 00000010H\r
2616   000d9 bb 01 00 00 00   mov     ebx, 1\r
2617   000de 01 58 14         add     DWORD PTR [eax+20], ebx\r
2618   000e1 2a ca            sub     cl, dl\r
2619   000e3 66 d3 ee         shr     si, cl\r
2620   000e6 8d 4c 3a f0      lea     ecx, DWORD PTR [edx+edi-16]\r
2621   000ea 66 89 b0 b8 16\r
2622         00 00            mov     WORD PTR [eax+5816], si\r
2623   000f1 8b 75 e4         mov     esi, DWORD PTR _curlen$[ebp]\r
2624   000f4 eb 14            jmp     SHORT $LN44@send_tree\r
2625 $LN26@send_tree:\r
2626   000f6 66 8b 94 b0 7c\r
2627         0a 00 00         mov     dx, WORD PTR [eax+esi*4+2684]\r
2628   000fe 66 d3 e2         shl     dx, cl\r
2629   00101 66 09 90 b8 16\r
2630         00 00            or      WORD PTR [eax+5816], dx\r
2631   00108 03 cf            add     ecx, edi\r
2632 $LN44@send_tree:\r
2633   0010a 29 5d fc         sub     DWORD PTR _count$[ebp], ebx\r
2634   0010d 89 88 bc 16 00\r
2635         00               mov     DWORD PTR [eax+5820], ecx\r
2636   00113 0f 85 67 ff ff\r
2637         ff               jne     $LL29@send_tree\r
2638 \r
2639 ; 772  : \r
2640 ; 773  :         } else if (curlen != 0) {\r
2641 \r
2642   00119 e9 11 04 00 00   jmp     $LN5@send_tree\r
2643 $LN30@send_tree:\r
2644   0011e 85 f6            test    esi, esi\r
2645   00120 0f 84 cb 01 00\r
2646         00               je      $LN23@send_tree\r
2647 \r
2648 ; 774  :             if (curlen != prevlen) {\r
2649 \r
2650   00126 3b 75 ec         cmp     esi, DWORD PTR _prevlen$[ebp]\r
2651   00129 0f 84 aa 00 00\r
2652         00               je      $LN42@send_tree\r
2653 \r
2654 ; 775  :                 send_code(s, curlen, s->bl_tree); count--;\r
2655 \r
2656   0012f 0f b7 8c b0 7e\r
2657         0a 00 00         movzx   ecx, WORD PTR [eax+esi*4+2686]\r
2658   00137 bf 10 00 00 00   mov     edi, 16                        ; 00000010H\r
2659   0013c 2b f9            sub     edi, ecx\r
2660   0013e 89 4d f8         mov     DWORD PTR _len$80570[ebp], ecx\r
2661   00141 8b 88 bc 16 00\r
2662         00               mov     ecx, DWORD PTR [eax+5820]\r
2663   00147 3b cf            cmp     ecx, edi\r
2664   00149 7e 68            jle     SHORT $LN21@send_tree\r
2665   0014b 0f b7 94 b0 7c\r
2666         0a 00 00         movzx   edx, WORD PTR [eax+esi*4+2684]\r
2667   00153 89 55 ec         mov     DWORD PTR _val$80573[ebp], edx\r
2668   00156 66 d3 e2         shl     dx, cl\r
2669   00159 8b 48 08         mov     ecx, DWORD PTR [eax+8]\r
2670   0015c 89 45 e4         mov     DWORD PTR tv1014[ebp], eax\r
2671   0015f 66 09 90 b8 16\r
2672         00 00            or      WORD PTR [eax+5816], dx\r
2673   00166 8b 50 14         mov     edx, DWORD PTR [eax+20]\r
2674   00169 8a 80 b8 16 00\r
2675         00               mov     al, BYTE PTR [eax+5816]\r
2676   0016f 88 04 11         mov     BYTE PTR [ecx+edx], al\r
2677   00172 8b 45 e4         mov     eax, DWORD PTR tv1014[ebp]\r
2678   00175 01 58 14         add     DWORD PTR [eax+20], ebx\r
2679   00178 8b 78 14         mov     edi, DWORD PTR [eax+20]\r
2680   0017b 8b 48 08         mov     ecx, DWORD PTR [eax+8]\r
2681   0017e 8a 90 b9 16 00\r
2682         00               mov     dl, BYTE PTR [eax+5817]\r
2683   00184 88 14 0f         mov     BYTE PTR [edi+ecx], dl\r
2684   00187 8b 90 bc 16 00\r
2685         00               mov     edx, DWORD PTR [eax+5820]\r
2686   0018d 8b 7d ec         mov     edi, DWORD PTR _val$80573[ebp]\r
2687   00190 01 58 14         add     DWORD PTR [eax+20], ebx\r
2688   00193 b1 10            mov     cl, 16                 ; 00000010H\r
2689   00195 2a ca            sub     cl, dl\r
2690   00197 66 d3 ef         shr     di, cl\r
2691   0019a 8b 4d f8         mov     ecx, DWORD PTR _len$80570[ebp]\r
2692   0019d 8d 54 0a f0      lea     edx, DWORD PTR [edx+ecx-16]\r
2693   001a1 89 90 bc 16 00\r
2694         00               mov     DWORD PTR [eax+5820], edx\r
2695   001a7 8b 55 fc         mov     edx, DWORD PTR _count$[ebp]\r
2696   001aa 66 89 b8 b8 16\r
2697         00 00            mov     WORD PTR [eax+5816], di\r
2698   001b1 eb 21            jmp     SHORT $LN20@send_tree\r
2699 $LN21@send_tree:\r
2700   001b3 66 8b bc b0 7c\r
2701         0a 00 00         mov     di, WORD PTR [eax+esi*4+2684]\r
2702   001bb 66 d3 e7         shl     di, cl\r
2703   001be 8b 88 bc 16 00\r
2704         00               mov     ecx, DWORD PTR [eax+5820]\r
2705   001c4 66 09 b8 b8 16\r
2706         00 00            or      WORD PTR [eax+5816], di\r
2707   001cb 03 4d f8         add     ecx, DWORD PTR _len$80570[ebp]\r
2708   001ce 89 88 bc 16 00\r
2709         00               mov     DWORD PTR [eax+5820], ecx\r
2710 $LN20@send_tree:\r
2711   001d4 2b d3            sub     edx, ebx\r
2712   001d6 89 55 fc         mov     DWORD PTR _count$[ebp], edx\r
2713 $LN42@send_tree:\r
2714 \r
2715 ; 776  :             }\r
2716 ; 777  :             Assert(count >= 3 && count <= 6, " 3_6?");\r
2717 ; 778  :             send_code(s, REP_3_6, s->bl_tree); send_bits(s, count-3, 2);\r
2718 \r
2719   001d9 0f b7 88 be 0a\r
2720         00 00            movzx   ecx, WORD PTR [eax+2750]\r
2721   001e0 bf 10 00 00 00   mov     edi, 16                        ; 00000010H\r
2722   001e5 2b f9            sub     edi, ecx\r
2723   001e7 89 4d f8         mov     DWORD PTR _len$80581[ebp], ecx\r
2724   001ea 8b 88 bc 16 00\r
2725         00               mov     ecx, DWORD PTR [eax+5820]\r
2726   001f0 3b cf            cmp     ecx, edi\r
2727   001f2 7e 67            jle     SHORT $LN19@send_tree\r
2728   001f4 0f b7 90 bc 0a\r
2729         00 00            movzx   edx, WORD PTR [eax+2748]\r
2730   001fb 89 55 ec         mov     DWORD PTR _val$80584[ebp], edx\r
2731   001fe 66 d3 e2         shl     dx, cl\r
2732   00201 8b 48 08         mov     ecx, DWORD PTR [eax+8]\r
2733   00204 89 45 e4         mov     DWORD PTR tv1013[ebp], eax\r
2734   00207 66 09 90 b8 16\r
2735         00 00            or      WORD PTR [eax+5816], dx\r
2736   0020e 8b 50 14         mov     edx, DWORD PTR [eax+20]\r
2737   00211 8a 80 b8 16 00\r
2738         00               mov     al, BYTE PTR [eax+5816]\r
2739   00217 88 04 11         mov     BYTE PTR [ecx+edx], al\r
2740   0021a 8b 45 e4         mov     eax, DWORD PTR tv1013[ebp]\r
2741   0021d 01 58 14         add     DWORD PTR [eax+20], ebx\r
2742   00220 8b 78 14         mov     edi, DWORD PTR [eax+20]\r
2743   00223 8b 48 08         mov     ecx, DWORD PTR [eax+8]\r
2744   00226 8a 90 b9 16 00\r
2745         00               mov     dl, BYTE PTR [eax+5817]\r
2746   0022c 88 14 0f         mov     BYTE PTR [edi+ecx], dl\r
2747   0022f 8b 90 bc 16 00\r
2748         00               mov     edx, DWORD PTR [eax+5820]\r
2749   00235 8b 7d ec         mov     edi, DWORD PTR _val$80584[ebp]\r
2750   00238 01 58 14         add     DWORD PTR [eax+20], ebx\r
2751   0023b b1 10            mov     cl, 16                 ; 00000010H\r
2752   0023d 2a ca            sub     cl, dl\r
2753   0023f 66 d3 ef         shr     di, cl\r
2754   00242 8b 4d f8         mov     ecx, DWORD PTR _len$80581[ebp]\r
2755   00245 8d 54 0a f0      lea     edx, DWORD PTR [edx+ecx-16]\r
2756   00249 89 90 bc 16 00\r
2757         00               mov     DWORD PTR [eax+5820], edx\r
2758   0024f 8b 55 fc         mov     edx, DWORD PTR _count$[ebp]\r
2759   00252 66 89 b8 b8 16\r
2760         00 00            mov     WORD PTR [eax+5816], di\r
2761   00259 eb 1a            jmp     SHORT $LN18@send_tree\r
2762 $LN19@send_tree:\r
2763   0025b 66 8b b8 bc 0a\r
2764         00 00            mov     di, WORD PTR [eax+2748]\r
2765   00262 66 d3 e7         shl     di, cl\r
2766   00265 66 09 b8 b8 16\r
2767         00 00            or      WORD PTR [eax+5816], di\r
2768   0026c 03 4d f8         add     ecx, DWORD PTR _len$80581[ebp]\r
2769   0026f 89 88 bc 16 00\r
2770         00               mov     DWORD PTR [eax+5820], ecx\r
2771 $LN18@send_tree:\r
2772   00275 8b 88 bc 16 00\r
2773         00               mov     ecx, DWORD PTR [eax+5820]\r
2774   0027b 83 c2 fd         add     edx, -3                        ; fffffffdH\r
2775   0027e 83 f9 0e         cmp     ecx, 14                        ; 0000000eH\r
2776   00281 7e 5c            jle     SHORT $LN17@send_tree\r
2777   00283 89 55 ec         mov     DWORD PTR _val$80595[ebp], edx\r
2778   00286 66 d3 e2         shl     dx, cl\r
2779   00289 8b 48 08         mov     ecx, DWORD PTR [eax+8]\r
2780   0028c 89 45 e4         mov     DWORD PTR tv1012[ebp], eax\r
2781   0028f 66 09 90 b8 16\r
2782         00 00            or      WORD PTR [eax+5816], dx\r
2783   00296 8b 50 14         mov     edx, DWORD PTR [eax+20]\r
2784   00299 8a 80 b8 16 00\r
2785         00               mov     al, BYTE PTR [eax+5816]\r
2786   0029f 88 04 11         mov     BYTE PTR [ecx+edx], al\r
2787   002a2 8b 45 e4         mov     eax, DWORD PTR tv1012[ebp]\r
2788   002a5 01 58 14         add     DWORD PTR [eax+20], ebx\r
2789   002a8 8b 78 14         mov     edi, DWORD PTR [eax+20]\r
2790   002ab 8a 90 b9 16 00\r
2791         00               mov     dl, BYTE PTR [eax+5817]\r
2792   002b1 8b 48 08         mov     ecx, DWORD PTR [eax+8]\r
2793   002b4 88 14 0f         mov     BYTE PTR [edi+ecx], dl\r
2794   002b7 8b 90 bc 16 00\r
2795         00               mov     edx, DWORD PTR [eax+5820]\r
2796   002bd 8b 7d ec         mov     edi, DWORD PTR _val$80595[ebp]\r
2797   002c0 01 58 14         add     DWORD PTR [eax+20], ebx\r
2798   002c3 b1 10            mov     cl, 16                 ; 00000010H\r
2799   002c5 2a ca            sub     cl, dl\r
2800   002c7 66 d3 ef         shr     di, cl\r
2801   002ca 83 c2 f2         add     edx, -14               ; fffffff2H\r
2802   002cd 89 90 bc 16 00\r
2803         00               mov     DWORD PTR [eax+5820], edx\r
2804   002d3 66 89 b8 b8 16\r
2805         00 00            mov     WORD PTR [eax+5816], di\r
2806   002da e9 50 02 00 00   jmp     $LN5@send_tree\r
2807 $LN17@send_tree:\r
2808   002df 66 d3 e2         shl     dx, cl\r
2809   002e2 66 09 90 b8 16\r
2810         00 00            or      WORD PTR [eax+5816], dx\r
2811   002e9 83 c1 02         add     ecx, 2\r
2812   002ec e9 38 02 00 00   jmp     $LN45@send_tree\r
2813 $LN23@send_tree:\r
2814 \r
2815 ; 779  : \r
2816 ; 780  :         } else if (count <= 10) {\r
2817 ; 781  :             send_code(s, REPZ_3_10, s->bl_tree); send_bits(s, count-3, 3);\r
2818 \r
2819   002f1 bf 10 00 00 00   mov     edi, 16                        ; 00000010H\r
2820   002f6 83 fa 0a         cmp     edx, 10                        ; 0000000aH\r
2821   002f9 0f 8f 19 01 00\r
2822         00               jg      $LN14@send_tree\r
2823   002ff 0f b7 88 c2 0a\r
2824         00 00            movzx   ecx, WORD PTR [eax+2754]\r
2825   00306 2b f9            sub     edi, ecx\r
2826   00308 89 4d f8         mov     DWORD PTR _len$80605[ebp], ecx\r
2827   0030b 8b 88 bc 16 00\r
2828         00               mov     ecx, DWORD PTR [eax+5820]\r
2829   00311 3b cf            cmp     ecx, edi\r
2830   00313 7e 67            jle     SHORT $LN13@send_tree\r
2831   00315 0f b7 90 c0 0a\r
2832         00 00            movzx   edx, WORD PTR [eax+2752]\r
2833   0031c 89 55 ec         mov     DWORD PTR _val$80608[ebp], edx\r
2834   0031f 66 d3 e2         shl     dx, cl\r
2835   00322 8b 48 08         mov     ecx, DWORD PTR [eax+8]\r
2836   00325 89 45 e4         mov     DWORD PTR tv1011[ebp], eax\r
2837   00328 66 09 90 b8 16\r
2838         00 00            or      WORD PTR [eax+5816], dx\r
2839   0032f 8b 50 14         mov     edx, DWORD PTR [eax+20]\r
2840   00332 8a 80 b8 16 00\r
2841         00               mov     al, BYTE PTR [eax+5816]\r
2842   00338 88 04 11         mov     BYTE PTR [ecx+edx], al\r
2843   0033b 8b 45 e4         mov     eax, DWORD PTR tv1011[ebp]\r
2844   0033e 01 58 14         add     DWORD PTR [eax+20], ebx\r
2845   00341 8b 78 14         mov     edi, DWORD PTR [eax+20]\r
2846   00344 8b 48 08         mov     ecx, DWORD PTR [eax+8]\r
2847   00347 8a 90 b9 16 00\r
2848         00               mov     dl, BYTE PTR [eax+5817]\r
2849   0034d 88 14 0f         mov     BYTE PTR [edi+ecx], dl\r
2850   00350 8b 90 bc 16 00\r
2851         00               mov     edx, DWORD PTR [eax+5820]\r
2852   00356 8b 7d ec         mov     edi, DWORD PTR _val$80608[ebp]\r
2853   00359 01 58 14         add     DWORD PTR [eax+20], ebx\r
2854   0035c b1 10            mov     cl, 16                 ; 00000010H\r
2855   0035e 2a ca            sub     cl, dl\r
2856   00360 66 d3 ef         shr     di, cl\r
2857   00363 8b 4d f8         mov     ecx, DWORD PTR _len$80605[ebp]\r
2858   00366 8d 54 0a f0      lea     edx, DWORD PTR [edx+ecx-16]\r
2859   0036a 89 90 bc 16 00\r
2860         00               mov     DWORD PTR [eax+5820], edx\r
2861   00370 8b 55 fc         mov     edx, DWORD PTR _count$[ebp]\r
2862   00373 66 89 b8 b8 16\r
2863         00 00            mov     WORD PTR [eax+5816], di\r
2864   0037a eb 20            jmp     SHORT $LN12@send_tree\r
2865 $LN13@send_tree:\r
2866   0037c 66 8b b8 c0 0a\r
2867         00 00            mov     di, WORD PTR [eax+2752]\r
2868   00383 66 d3 e7         shl     di, cl\r
2869   00386 8b 88 bc 16 00\r
2870         00               mov     ecx, DWORD PTR [eax+5820]\r
2871   0038c 66 09 b8 b8 16\r
2872         00 00            or      WORD PTR [eax+5816], di\r
2873   00393 03 4d f8         add     ecx, DWORD PTR _len$80605[ebp]\r
2874   00396 89 88 bc 16 00\r
2875         00               mov     DWORD PTR [eax+5820], ecx\r
2876 $LN12@send_tree:\r
2877   0039c 8b 88 bc 16 00\r
2878         00               mov     ecx, DWORD PTR [eax+5820]\r
2879   003a2 83 c2 fd         add     edx, -3                        ; fffffffdH\r
2880   003a5 83 f9 0d         cmp     ecx, 13                        ; 0000000dH\r
2881   003a8 7e 5c            jle     SHORT $LN11@send_tree\r
2882   003aa 89 55 ec         mov     DWORD PTR _val$80619[ebp], edx\r
2883   003ad 66 d3 e2         shl     dx, cl\r
2884   003b0 8b 48 08         mov     ecx, DWORD PTR [eax+8]\r
2885   003b3 89 45 e4         mov     DWORD PTR tv1010[ebp], eax\r
2886   003b6 66 09 90 b8 16\r
2887         00 00            or      WORD PTR [eax+5816], dx\r
2888   003bd 8b 50 14         mov     edx, DWORD PTR [eax+20]\r
2889   003c0 8a 80 b8 16 00\r
2890         00               mov     al, BYTE PTR [eax+5816]\r
2891   003c6 88 04 11         mov     BYTE PTR [ecx+edx], al\r
2892   003c9 8b 45 e4         mov     eax, DWORD PTR tv1010[ebp]\r
2893   003cc 01 58 14         add     DWORD PTR [eax+20], ebx\r
2894   003cf 8b 78 14         mov     edi, DWORD PTR [eax+20]\r
2895   003d2 8a 90 b9 16 00\r
2896         00               mov     dl, BYTE PTR [eax+5817]\r
2897   003d8 8b 48 08         mov     ecx, DWORD PTR [eax+8]\r
2898   003db 88 14 0f         mov     BYTE PTR [edi+ecx], dl\r
2899   003de 8b 90 bc 16 00\r
2900         00               mov     edx, DWORD PTR [eax+5820]\r
2901   003e4 8b 7d ec         mov     edi, DWORD PTR _val$80619[ebp]\r
2902   003e7 01 58 14         add     DWORD PTR [eax+20], ebx\r
2903   003ea b1 10            mov     cl, 16                 ; 00000010H\r
2904   003ec 2a ca            sub     cl, dl\r
2905   003ee 66 d3 ef         shr     di, cl\r
2906   003f1 83 c2 f3         add     edx, -13               ; fffffff3H\r
2907   003f4 89 90 bc 16 00\r
2908         00               mov     DWORD PTR [eax+5820], edx\r
2909   003fa 66 89 b8 b8 16\r
2910         00 00            mov     WORD PTR [eax+5816], di\r
2911   00401 e9 29 01 00 00   jmp     $LN5@send_tree\r
2912 $LN11@send_tree:\r
2913   00406 66 d3 e2         shl     dx, cl\r
2914   00409 66 09 90 b8 16\r
2915         00 00            or      WORD PTR [eax+5816], dx\r
2916   00410 83 c1 03         add     ecx, 3\r
2917 \r
2918 ; 782  : \r
2919 ; 783  :         } else {\r
2920 \r
2921   00413 e9 11 01 00 00   jmp     $LN45@send_tree\r
2922 $LN14@send_tree:\r
2923 \r
2924 ; 784  :             send_code(s, REPZ_11_138, s->bl_tree); send_bits(s, count-11, 7);\r
2925 \r
2926   00418 0f b7 88 c6 0a\r
2927         00 00            movzx   ecx, WORD PTR [eax+2758]\r
2928   0041f 2b f9            sub     edi, ecx\r
2929   00421 89 4d f8         mov     DWORD PTR _len$80628[ebp], ecx\r
2930   00424 8b 88 bc 16 00\r
2931         00               mov     ecx, DWORD PTR [eax+5820]\r
2932   0042a 3b cf            cmp     ecx, edi\r
2933   0042c 7e 67            jle     SHORT $LN8@send_tree\r
2934   0042e 0f b7 90 c4 0a\r
2935         00 00            movzx   edx, WORD PTR [eax+2756]\r
2936   00435 89 55 ec         mov     DWORD PTR _val$80631[ebp], edx\r
2937   00438 66 d3 e2         shl     dx, cl\r
2938   0043b 8b 48 08         mov     ecx, DWORD PTR [eax+8]\r
2939   0043e 89 45 e4         mov     DWORD PTR tv1009[ebp], eax\r
2940   00441 66 09 90 b8 16\r
2941         00 00            or      WORD PTR [eax+5816], dx\r
2942   00448 8b 50 14         mov     edx, DWORD PTR [eax+20]\r
2943   0044b 8a 80 b8 16 00\r
2944         00               mov     al, BYTE PTR [eax+5816]\r
2945   00451 88 04 11         mov     BYTE PTR [ecx+edx], al\r
2946   00454 8b 45 e4         mov     eax, DWORD PTR tv1009[ebp]\r
2947   00457 01 58 14         add     DWORD PTR [eax+20], ebx\r
2948   0045a 8b 78 14         mov     edi, DWORD PTR [eax+20]\r
2949   0045d 8b 48 08         mov     ecx, DWORD PTR [eax+8]\r
2950   00460 8a 90 b9 16 00\r
2951         00               mov     dl, BYTE PTR [eax+5817]\r
2952   00466 88 14 0f         mov     BYTE PTR [edi+ecx], dl\r
2953   00469 8b 90 bc 16 00\r
2954         00               mov     edx, DWORD PTR [eax+5820]\r
2955   0046f 8b 7d ec         mov     edi, DWORD PTR _val$80631[ebp]\r
2956   00472 01 58 14         add     DWORD PTR [eax+20], ebx\r
2957   00475 b1 10            mov     cl, 16                 ; 00000010H\r
2958   00477 2a ca            sub     cl, dl\r
2959   00479 66 d3 ef         shr     di, cl\r
2960   0047c 8b 4d f8         mov     ecx, DWORD PTR _len$80628[ebp]\r
2961   0047f 8d 54 0a f0      lea     edx, DWORD PTR [edx+ecx-16]\r
2962   00483 89 90 bc 16 00\r
2963         00               mov     DWORD PTR [eax+5820], edx\r
2964   00489 8b 55 fc         mov     edx, DWORD PTR _count$[ebp]\r
2965   0048c 66 89 b8 b8 16\r
2966         00 00            mov     WORD PTR [eax+5816], di\r
2967   00493 eb 20            jmp     SHORT $LN7@send_tree\r
2968 $LN8@send_tree:\r
2969   00495 66 8b b8 c4 0a\r
2970         00 00            mov     di, WORD PTR [eax+2756]\r
2971   0049c 66 d3 e7         shl     di, cl\r
2972   0049f 8b 88 bc 16 00\r
2973         00               mov     ecx, DWORD PTR [eax+5820]\r
2974   004a5 66 09 b8 b8 16\r
2975         00 00            or      WORD PTR [eax+5816], di\r
2976   004ac 03 4d f8         add     ecx, DWORD PTR _len$80628[ebp]\r
2977   004af 89 88 bc 16 00\r
2978         00               mov     DWORD PTR [eax+5820], ecx\r
2979 $LN7@send_tree:\r
2980   004b5 8b 88 bc 16 00\r
2981         00               mov     ecx, DWORD PTR [eax+5820]\r
2982   004bb 83 c2 f5         add     edx, -11               ; fffffff5H\r
2983   004be 83 f9 09         cmp     ecx, 9\r
2984   004c1 7e 59            jle     SHORT $LN6@send_tree\r
2985   004c3 89 55 ec         mov     DWORD PTR _val$80642[ebp], edx\r
2986   004c6 66 d3 e2         shl     dx, cl\r
2987   004c9 8b 48 08         mov     ecx, DWORD PTR [eax+8]\r
2988   004cc 89 45 e4         mov     DWORD PTR tv1008[ebp], eax\r
2989   004cf 66 09 90 b8 16\r
2990         00 00            or      WORD PTR [eax+5816], dx\r
2991   004d6 8b 50 14         mov     edx, DWORD PTR [eax+20]\r
2992   004d9 8a 80 b8 16 00\r
2993         00               mov     al, BYTE PTR [eax+5816]\r
2994   004df 88 04 11         mov     BYTE PTR [ecx+edx], al\r
2995   004e2 8b 45 e4         mov     eax, DWORD PTR tv1008[ebp]\r
2996   004e5 01 58 14         add     DWORD PTR [eax+20], ebx\r
2997   004e8 8b 78 14         mov     edi, DWORD PTR [eax+20]\r
2998   004eb 8a 90 b9 16 00\r
2999         00               mov     dl, BYTE PTR [eax+5817]\r
3000   004f1 8b 48 08         mov     ecx, DWORD PTR [eax+8]\r
3001   004f4 88 14 0f         mov     BYTE PTR [edi+ecx], dl\r
3002   004f7 8b 90 bc 16 00\r
3003         00               mov     edx, DWORD PTR [eax+5820]\r
3004   004fd 8b 7d ec         mov     edi, DWORD PTR _val$80642[ebp]\r
3005   00500 01 58 14         add     DWORD PTR [eax+20], ebx\r
3006   00503 b1 10            mov     cl, 16                 ; 00000010H\r
3007   00505 2a ca            sub     cl, dl\r
3008   00507 66 d3 ef         shr     di, cl\r
3009   0050a 83 c2 f7         add     edx, -9                        ; fffffff7H\r
3010   0050d 89 90 bc 16 00\r
3011         00               mov     DWORD PTR [eax+5820], edx\r
3012   00513 66 89 b8 b8 16\r
3013         00 00            mov     WORD PTR [eax+5816], di\r
3014   0051a eb 13            jmp     SHORT $LN5@send_tree\r
3015 $LN6@send_tree:\r
3016   0051c 66 d3 e2         shl     dx, cl\r
3017   0051f 66 09 90 b8 16\r
3018         00 00            or      WORD PTR [eax+5816], dx\r
3019   00526 83 c1 07         add     ecx, 7\r
3020 $LN45@send_tree:\r
3021   00529 89 88 bc 16 00\r
3022         00               mov     DWORD PTR [eax+5820], ecx\r
3023 $LN5@send_tree:\r
3024 \r
3025 ; 785  :         }\r
3026 ; 786  :         count = 0; prevlen = curlen;\r
3027 ; 787  :         if (nextlen == 0) {\r
3028 \r
3029   0052f 8b 4d f4         mov     ecx, DWORD PTR _nextlen$[ebp]\r
3030   00532 33 d2            xor     edx, edx\r
3031   00534 89 75 ec         mov     DWORD PTR _prevlen$[ebp], esi\r
3032   00537 85 c9            test    ecx, ecx\r
3033   00539 75 0e            jne     SHORT $LN4@send_tree\r
3034 \r
3035 ; 788  :             max_count = 138, min_count = 3;\r
3036 \r
3037   0053b b9 8a 00 00 00   mov     ecx, 138               ; 0000008aH\r
3038   00540 c7 45 f8 03 00\r
3039         00 00            mov     DWORD PTR _min_count$[ebp], 3\r
3040   00547 eb 1e            jmp     SHORT $LN34@send_tree\r
3041 $LN4@send_tree:\r
3042 \r
3043 ; 789  :         } else if (curlen == nextlen) {\r
3044 \r
3045   00549 3b f1            cmp     esi, ecx\r
3046   0054b 75 0e            jne     SHORT $LN2@send_tree\r
3047 \r
3048 ; 790  :             max_count = 6, min_count = 3;\r
3049 \r
3050   0054d b9 06 00 00 00   mov     ecx, 6\r
3051   00552 c7 45 f8 03 00\r
3052         00 00            mov     DWORD PTR _min_count$[ebp], 3\r
3053 \r
3054 ; 791  :         } else {\r
3055 \r
3056   00559 eb 0c            jmp     SHORT $LN34@send_tree\r
3057 $LN2@send_tree:\r
3058 \r
3059 ; 792  :             max_count = 7, min_count = 4;\r
3060 \r
3061   0055b b9 07 00 00 00   mov     ecx, 7\r
3062   00560 c7 45 f8 04 00\r
3063         00 00            mov     DWORD PTR _min_count$[ebp], 4\r
3064 $LN34@send_tree:\r
3065 \r
3066 ; 765  : \r
3067 ; 766  :     for (n = 0; n <= max_code; n++) {\r
3068 \r
3069   00567 83 45 f0 04      add     DWORD PTR tv1196[ebp], 4\r
3070   0056b 29 5d e8         sub     DWORD PTR tv589[ebp], ebx\r
3071   0056e 0f 85 dc fa ff\r
3072         ff               jne     $LL35@send_tree\r
3073 $LN33@send_tree:\r
3074   00574 5f               pop     edi\r
3075   00575 5e               pop     esi\r
3076   00576 5b               pop     ebx\r
3077 \r
3078 ; 793  :         }\r
3079 ; 794  :     }\r
3080 ; 795  : }\r
3081 \r
3082   00577 8b e5            mov     esp, ebp\r
3083   00579 5d               pop     ebp\r
3084   0057a c3               ret     0\r
3085 _send_tree ENDP\r
3086 ; Function compile flags: /Ogtp\r
3087 _TEXT   ENDS\r
3088 ;       COMDAT _scan_tree\r
3089 _TEXT   SEGMENT\r
3090 _nextlen$ = -16                                         ; size = 4\r
3091 tv84 = -12                                              ; size = 4\r
3092 _prevlen$ = -8                                          ; size = 4\r
3093 tv295 = -4                                              ; size = 4\r
3094 _s$ = 8                                                 ; size = 4\r
3095 _scan_tree PROC                                         ; COMDAT\r
3096 ; _tree$ = ecx\r
3097 ; _max_code$ = eax\r
3098 \r
3099 ; 709  : {\r
3100 \r
3101   00000 55               push    ebp\r
3102   00001 8b ec            mov     ebp, esp\r
3103   00003 83 ec 10         sub     esp, 16                        ; 00000010H\r
3104   00006 53               push    ebx\r
3105   00007 56               push    esi\r
3106   00008 57               push    edi\r
3107   00009 8b f9            mov     edi, ecx\r
3108   0000b 8b d8            mov     ebx, eax\r
3109 \r
3110 ; 710  :     int n;                     /* iterates over all tree elements */\r
3111 ; 711  :     int prevlen = -1;          /* last emitted length */\r
3112 ; 712  :     int curlen;                /* length of current code */\r
3113 ; 713  :     int nextlen = tree[0].Len; /* length of next code */\r
3114 \r
3115   0000d 0f b7 47 02      movzx   eax, WORD PTR [edi+2]\r
3116 \r
3117 ; 714  :     int count = 0;             /* repeat count of the current code */\r
3118 \r
3119   00011 33 d2            xor     edx, edx\r
3120   00013 c7 45 f8 ff ff\r
3121         ff ff            mov     DWORD PTR _prevlen$[ebp], -1\r
3122   0001a 89 45 f0         mov     DWORD PTR _nextlen$[ebp], eax\r
3123 \r
3124 ; 715  :     int max_count = 7;         /* max repeat count */\r
3125 \r
3126   0001d 8d 4a 07         lea     ecx, DWORD PTR [edx+7]\r
3127 \r
3128 ; 716  :     int min_count = 4;         /* min repeat count */\r
3129 \r
3130   00020 8d 72 04         lea     esi, DWORD PTR [edx+4]\r
3131 \r
3132 ; 717  : \r
3133 ; 718  :     if (nextlen == 0) max_count = 138, min_count = 3;\r
3134 \r
3135   00023 85 c0            test    eax, eax\r
3136   00025 75 08            jne     SHORT $LN17@scan_tree\r
3137   00027 b9 8a 00 00 00   mov     ecx, 138               ; 0000008aH\r
3138   0002c 8d 70 03         lea     esi, DWORD PTR [eax+3]\r
3139 $LN17@scan_tree:\r
3140 \r
3141 ; 719  :     tree[max_code+1].Len = (ush)0xffff; /* guard */\r
3142 \r
3143   0002f b8 ff ff 00 00   mov     eax, 65535             ; 0000ffffH\r
3144   00034 66 89 44 9f 06   mov     WORD PTR [edi+ebx*4+6], ax\r
3145 \r
3146 ; 720  : \r
3147 ; 721  :     for (n = 0; n <= max_code; n++) {\r
3148 \r
3149   00039 85 db            test    ebx, ebx\r
3150   0003b 0f 88 90 00 00\r
3151         00               js      $LN14@scan_tree\r
3152 \r
3153 ; 719  :     tree[max_code+1].Len = (ush)0xffff; /* guard */\r
3154 \r
3155   00041 83 c7 06         add     edi, 6\r
3156   00044 43               inc     ebx\r
3157   00045 89 7d fc         mov     DWORD PTR tv295[ebp], edi\r
3158   00048 8b 7d 08         mov     edi, DWORD PTR _s$[ebp]\r
3159   0004b 89 5d f4         mov     DWORD PTR tv84[ebp], ebx\r
3160   0004e 8b 5d f0         mov     ebx, DWORD PTR _nextlen$[ebp]\r
3161 $LL16@scan_tree:\r
3162 \r
3163 ; 722  :         curlen = nextlen; nextlen = tree[n+1].Len;\r
3164 \r
3165   00051 8b c3            mov     eax, ebx\r
3166   00053 8b 5d fc         mov     ebx, DWORD PTR tv295[ebp]\r
3167   00056 0f b7 1b         movzx   ebx, WORD PTR [ebx]\r
3168 \r
3169 ; 723  :         if (++count < max_count && curlen == nextlen) {\r
3170 \r
3171   00059 42               inc     edx\r
3172   0005a 3b d1            cmp     edx, ecx\r
3173   0005c 7d 04            jge     SHORT $LN13@scan_tree\r
3174   0005e 3b c3            cmp     eax, ebx\r
3175   00060 74 66            je      SHORT $LN15@scan_tree\r
3176 $LN13@scan_tree:\r
3177 \r
3178 ; 724  :             continue;\r
3179 ; 725  :         } else if (count < min_count) {\r
3180 \r
3181   00062 3b d6            cmp     edx, esi\r
3182   00064 7d 0a            jge     SHORT $LN11@scan_tree\r
3183 \r
3184 ; 726  :             s->bl_tree[curlen].Freq += count;\r
3185 \r
3186   00066 66 01 94 87 7c\r
3187         0a 00 00         add     WORD PTR [edi+eax*4+2684], dx\r
3188   0006e eb 2f            jmp     SHORT $LN5@scan_tree\r
3189 $LN11@scan_tree:\r
3190 \r
3191 ; 727  :         } else if (curlen != 0) {\r
3192 \r
3193   00070 85 c0            test    eax, eax\r
3194   00072 74 16            je      SHORT $LN9@scan_tree\r
3195 \r
3196 ; 728  :             if (curlen != prevlen) s->bl_tree[curlen].Freq++;\r
3197 \r
3198   00074 3b 45 f8         cmp     eax, DWORD PTR _prevlen$[ebp]\r
3199   00077 74 08            je      SHORT $LN23@scan_tree\r
3200   00079 66 ff 84 87 7c\r
3201         0a 00 00         inc     WORD PTR [edi+eax*4+2684]\r
3202 $LN23@scan_tree:\r
3203 \r
3204 ; 729  :             s->bl_tree[REP_3_6].Freq++;\r
3205 \r
3206   00081 66 ff 87 bc 0a\r
3207         00 00            inc     WORD PTR [edi+2748]\r
3208   00088 eb 15            jmp     SHORT $LN5@scan_tree\r
3209 $LN9@scan_tree:\r
3210 \r
3211 ; 730  :         } else if (count <= 10) {\r
3212 \r
3213   0008a 83 fa 0a         cmp     edx, 10                        ; 0000000aH\r
3214   0008d 7f 09            jg      SHORT $LN6@scan_tree\r
3215 \r
3216 ; 731  :             s->bl_tree[REPZ_3_10].Freq++;\r
3217 \r
3218   0008f 66 ff 87 c0 0a\r
3219         00 00            inc     WORD PTR [edi+2752]\r
3220 \r
3221 ; 732  :         } else {\r
3222 \r
3223   00096 eb 07            jmp     SHORT $LN5@scan_tree\r
3224 $LN6@scan_tree:\r
3225 \r
3226 ; 733  :             s->bl_tree[REPZ_11_138].Freq++;\r
3227 \r
3228   00098 66 ff 87 c4 0a\r
3229         00 00            inc     WORD PTR [edi+2756]\r
3230 $LN5@scan_tree:\r
3231 \r
3232 ; 734  :         }\r
3233 ; 735  :         count = 0; prevlen = curlen;\r
3234 \r
3235   0009f 33 d2            xor     edx, edx\r
3236   000a1 89 45 f8         mov     DWORD PTR _prevlen$[ebp], eax\r
3237 \r
3238 ; 736  :         if (nextlen == 0) {\r
3239 \r
3240   000a4 85 db            test    ebx, ebx\r
3241   000a6 75 0a            jne     SHORT $LN4@scan_tree\r
3242 \r
3243 ; 737  :             max_count = 138, min_count = 3;\r
3244 \r
3245   000a8 b9 8a 00 00 00   mov     ecx, 138               ; 0000008aH\r
3246   000ad 8d 72 03         lea     esi, DWORD PTR [edx+3]\r
3247   000b0 eb 16            jmp     SHORT $LN15@scan_tree\r
3248 $LN4@scan_tree:\r
3249 \r
3250 ; 738  :         } else if (curlen == nextlen) {\r
3251 \r
3252   000b2 3b c3            cmp     eax, ebx\r
3253   000b4 75 0a            jne     SHORT $LN2@scan_tree\r
3254 \r
3255 ; 739  :             max_count = 6, min_count = 3;\r
3256 \r
3257   000b6 b9 06 00 00 00   mov     ecx, 6\r
3258   000bb 8d 71 fd         lea     esi, DWORD PTR [ecx-3]\r
3259 \r
3260 ; 740  :         } else {\r
3261 \r
3262   000be eb 08            jmp     SHORT $LN15@scan_tree\r
3263 $LN2@scan_tree:\r
3264 \r
3265 ; 741  :             max_count = 7, min_count = 4;\r
3266 \r
3267   000c0 b9 07 00 00 00   mov     ecx, 7\r
3268   000c5 8d 71 fd         lea     esi, DWORD PTR [ecx-3]\r
3269 $LN15@scan_tree:\r
3270 \r
3271 ; 720  : \r
3272 ; 721  :     for (n = 0; n <= max_code; n++) {\r
3273 \r
3274   000c8 83 45 fc 04      add     DWORD PTR tv295[ebp], 4\r
3275   000cc ff 4d f4         dec     DWORD PTR tv84[ebp]\r
3276   000cf 75 80            jne     SHORT $LL16@scan_tree\r
3277 $LN14@scan_tree:\r
3278   000d1 5f               pop     edi\r
3279   000d2 5e               pop     esi\r
3280   000d3 5b               pop     ebx\r
3281 \r
3282 ; 742  :         }\r
3283 ; 743  :     }\r
3284 ; 744  : }\r
3285 \r
3286   000d4 8b e5            mov     esp, ebp\r
3287   000d6 5d               pop     ebp\r
3288   000d7 c3               ret     0\r
3289 _scan_tree ENDP\r
3290 ; Function compile flags: /Ogtp\r
3291 _TEXT   ENDS\r
3292 ;       COMDAT _gen_codes\r
3293 _TEXT   SEGMENT\r
3294 _next_code$ = -32                                       ; size = 32\r
3295 _gen_codes PROC                                         ; COMDAT\r
3296 ; _tree$ = edi\r
3297 ; _max_code$ = ebx\r
3298 ; _bl_count$ = edx\r
3299 \r
3300 ; 579  : {\r
3301 \r
3302   00000 55               push    ebp\r
3303   00001 8b ec            mov     ebp, esp\r
3304   00003 83 ec 20         sub     esp, 32                        ; 00000020H\r
3305   00006 56               push    esi\r
3306 \r
3307 ; 580  :     ush next_code[MAX_BITS+1]; /* next code value for each bit length */\r
3308 ; 581  :     ush code = 0;              /* running code value */\r
3309 ; 582  :     int bits;                  /* bit index */\r
3310 ; 583  :     int n;                     /* code index */\r
3311 ; 584  : \r
3312 ; 585  :     /* The distribution counts are first used to generate the code values\r
3313 ; 586  :      * without bit reversal.\r
3314 ; 587  :      */\r
3315 ; 588  :     for (bits = 1; bits <= MAX_BITS; bits++) {\r
3316 \r
3317   00007 8d 75 e2         lea     esi, DWORD PTR _next_code$[ebp+2]\r
3318   0000a 33 c9            xor     ecx, ecx\r
3319   0000c b8 01 00 00 00   mov     eax, 1\r
3320   00011 2b d6            sub     edx, esi\r
3321 $LL7@gen_codes:\r
3322   00013 8d 34 42         lea     esi, DWORD PTR [edx+eax*2]\r
3323 \r
3324 ; 589  :         next_code[bits] = code = (code + bl_count[bits-1]) << 1;\r
3325 \r
3326   00016 66 8b 74 35 e0   mov     si, WORD PTR _next_code$[ebp+esi]\r
3327   0001b 66 03 f1         add     si, cx\r
3328   0001e 66 03 f6         add     si, si\r
3329   00021 0f b7 ce         movzx   ecx, si\r
3330   00024 66 89 4c 45 e0   mov     WORD PTR _next_code$[ebp+eax*2], cx\r
3331   00029 40               inc     eax\r
3332   0002a 83 f8 0f         cmp     eax, 15                        ; 0000000fH\r
3333   0002d 7e e4            jle     SHORT $LL7@gen_codes\r
3334 \r
3335 ; 590  :     }\r
3336 ; 591  :     /* Check that the bit counts in bl_count are consistent. The last code\r
3337 ; 592  :      * must be all ones.\r
3338 ; 593  :      */\r
3339 ; 594  :     Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,\r
3340 ; 595  :             "inconsistent bit counts");\r
3341 ; 596  :     Tracev((stderr,"\ngen_codes: max_code %d ", max_code));\r
3342 ; 597  : \r
3343 ; 598  :     for (n = 0;  n <= max_code; n++) {\r
3344 \r
3345   0002f 33 f6            xor     esi, esi\r
3346   00031 85 db            test    ebx, ebx\r
3347   00033 78 24            js      SHORT $LN2@gen_codes\r
3348 $LL14@gen_codes:\r
3349 \r
3350 ; 599  :         int len = tree[n].Len;\r
3351 \r
3352   00035 0f b7 54 b7 02   movzx   edx, WORD PTR [edi+esi*4+2]\r
3353 \r
3354 ; 600  :         if (len == 0) continue;\r
3355 \r
3356   0003a 85 d2            test    edx, edx\r
3357   0003c 74 16            je      SHORT $LN3@gen_codes\r
3358 \r
3359 ; 601  :         /* Now reverse the bits */\r
3360 ; 602  :         tree[n].Code = bi_reverse(next_code[len]++, len);\r
3361 \r
3362   0003e 0f b7 44 55 e0   movzx   eax, WORD PTR _next_code$[ebp+edx*2]\r
3363   00043 8b c8            mov     ecx, eax\r
3364   00045 40               inc     eax\r
3365   00046 66 89 44 55 e0   mov     WORD PTR _next_code$[ebp+edx*2], ax\r
3366   0004b e8 00 00 00 00   call    _bi_reverse\r
3367   00050 66 89 04 b7      mov     WORD PTR [edi+esi*4], ax\r
3368 $LN3@gen_codes:\r
3369 \r
3370 ; 590  :     }\r
3371 ; 591  :     /* Check that the bit counts in bl_count are consistent. The last code\r
3372 ; 592  :      * must be all ones.\r
3373 ; 593  :      */\r
3374 ; 594  :     Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,\r
3375 ; 595  :             "inconsistent bit counts");\r
3376 ; 596  :     Tracev((stderr,"\ngen_codes: max_code %d ", max_code));\r
3377 ; 597  : \r
3378 ; 598  :     for (n = 0;  n <= max_code; n++) {\r
3379 \r
3380   00054 46               inc     esi\r
3381   00055 3b f3            cmp     esi, ebx\r
3382   00057 7e dc            jle     SHORT $LL14@gen_codes\r
3383 $LN2@gen_codes:\r
3384   00059 5e               pop     esi\r
3385 \r
3386 ; 603  : \r
3387 ; 604  :         Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ",\r
3388 ; 605  :              n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));\r
3389 ; 606  :     }\r
3390 ; 607  : }\r
3391 \r
3392   0005a 8b e5            mov     esp, ebp\r
3393   0005c 5d               pop     ebp\r
3394   0005d c3               ret     0\r
3395 _gen_codes ENDP\r
3396 ; Function compile flags: /Ogtp\r
3397 _TEXT   ENDS\r
3398 ;       COMDAT _gen_bitlen\r
3399 _TEXT   SEGMENT\r
3400 _tree$ = -40                                            ; size = 4\r
3401 tv643 = -36                                             ; size = 4\r
3402 _stree$ = -36                                           ; size = 4\r
3403 tv671 = -32                                             ; size = 4\r
3404 _extra$ = -32                                           ; size = 4\r
3405 _base$ = -28                                            ; size = 4\r
3406 _max_code$ = -24                                        ; size = 4\r
3407 tv709 = -20                                             ; size = 4\r
3408 tv277 = -20                                             ; size = 4\r
3409 _h$ = -16                                               ; size = 4\r
3410 tv597 = -12                                             ; size = 4\r
3411 _n$ = -12                                               ; size = 4\r
3412 _overflow$ = -8                                         ; size = 4\r
3413 _max_length$ = -4                                       ; size = 4\r
3414 _gen_bitlen PROC                                        ; COMDAT\r
3415 ; _s$ = eax\r
3416 ; _desc$ = ecx\r
3417 \r
3418 ; 491  : {\r
3419 \r
3420   00000 55               push    ebp\r
3421   00001 8b ec            mov     ebp, esp\r
3422   00003 83 ec 28         sub     esp, 40                        ; 00000028H\r
3423 \r
3424 ; 492  :     ct_data *tree        = desc->dyn_tree;\r
3425 ; 493  :     int max_code         = desc->max_code;\r
3426 \r
3427   00006 8b 51 04         mov     edx, DWORD PTR [ecx+4]\r
3428   00009 53               push    ebx\r
3429   0000a 8b 19            mov     ebx, DWORD PTR [ecx]\r
3430 \r
3431 ; 494  :     const ct_data *stree = desc->stat_desc->static_tree;\r
3432 \r
3433   0000c 8b 49 08         mov     ecx, DWORD PTR [ecx+8]\r
3434   0000f 89 55 e8         mov     DWORD PTR _max_code$[ebp], edx\r
3435   00012 8b 11            mov     edx, DWORD PTR [ecx]\r
3436   00014 89 55 dc         mov     DWORD PTR _stree$[ebp], edx\r
3437 \r
3438 ; 495  :     const intf *extra    = desc->stat_desc->extra_bits;\r
3439 \r
3440   00017 8b 51 04         mov     edx, DWORD PTR [ecx+4]\r
3441   0001a 56               push    esi\r
3442   0001b 89 55 e0         mov     DWORD PTR _extra$[ebp], edx\r
3443 \r
3444 ; 496  :     int base             = desc->stat_desc->extra_base;\r
3445 \r
3446   0001e 8b 51 08         mov     edx, DWORD PTR [ecx+8]\r
3447   00021 57               push    edi\r
3448 \r
3449 ; 497  :     int max_length       = desc->stat_desc->max_length;\r
3450 \r
3451   00022 8b 79 10         mov     edi, DWORD PTR [ecx+16]\r
3452 \r
3453 ; 498  :     int h;              /* heap index */\r
3454 ; 499  :     int n, m;           /* iterate over the tree elements */\r
3455 ; 500  :     int bits;           /* bit length */\r
3456 ; 501  :     int xbits;          /* extra bits */\r
3457 ; 502  :     ush f;              /* frequency */\r
3458 ; 503  :     int overflow = 0;   /* number of elements with bit length too large */\r
3459 ; 504  : \r
3460 ; 505  :     for (bits = 0; bits <= MAX_BITS; bits++) s->bl_count[bits] = 0;\r
3461 \r
3462   00025 33 c9            xor     ecx, ecx\r
3463   00027 89 55 e4         mov     DWORD PTR _base$[ebp], edx\r
3464   0002a 0f b7 d1         movzx   edx, cx\r
3465   0002d 8b ca            mov     ecx, edx\r
3466   0002f c1 e2 10         shl     edx, 16                        ; 00000010H\r
3467   00032 0b ca            or      ecx, edx\r
3468   00034 89 88 3c 0b 00\r
3469         00               mov     DWORD PTR [eax+2876], ecx\r
3470   0003a 89 88 40 0b 00\r
3471         00               mov     DWORD PTR [eax+2880], ecx\r
3472   00040 89 88 44 0b 00\r
3473         00               mov     DWORD PTR [eax+2884], ecx\r
3474   00046 89 88 48 0b 00\r
3475         00               mov     DWORD PTR [eax+2888], ecx\r
3476   0004c 89 88 4c 0b 00\r
3477         00               mov     DWORD PTR [eax+2892], ecx\r
3478   00052 89 88 50 0b 00\r
3479         00               mov     DWORD PTR [eax+2896], ecx\r
3480   00058 89 88 54 0b 00\r
3481         00               mov     DWORD PTR [eax+2900], ecx\r
3482   0005e 89 88 58 0b 00\r
3483         00               mov     DWORD PTR [eax+2904], ecx\r
3484 \r
3485 ; 506  : \r
3486 ; 507  :     /* In a first pass, compute the optimal bit lengths (which may\r
3487 ; 508  :      * overflow in the case of the bit length tree).\r
3488 ; 509  :      */\r
3489 ; 510  :     tree[s->heap[s->heap_max]].Len = 0; /* root of the heap */\r
3490 \r
3491   00064 8b 88 54 14 00\r
3492         00               mov     ecx, DWORD PTR [eax+5204]\r
3493   0006a 8b 94 88 5c 0b\r
3494         00 00            mov     edx, DWORD PTR [eax+ecx*4+2908]\r
3495   00071 33 c9            xor     ecx, ecx\r
3496   00073 66 89 4c 93 02   mov     WORD PTR [ebx+edx*4+2], cx\r
3497 \r
3498 ; 511  : \r
3499 ; 512  :     for (h = s->heap_max+1; h < HEAP_SIZE; h++) {\r
3500 \r
3501   00078 8b 88 54 14 00\r
3502         00               mov     ecx, DWORD PTR [eax+5204]\r
3503   0007e 33 f6            xor     esi, esi\r
3504   00080 41               inc     ecx\r
3505   00081 89 5d d8         mov     DWORD PTR _tree$[ebp], ebx\r
3506   00084 89 7d fc         mov     DWORD PTR _max_length$[ebp], edi\r
3507   00087 89 75 f8         mov     DWORD PTR _overflow$[ebp], esi\r
3508   0008a 81 f9 3d 02 00\r
3509         00               cmp     ecx, 573               ; 0000023dH\r
3510   00090 0f 8d 5a 01 00\r
3511         00               jge     $LN5@gen_bitlen\r
3512 \r
3513 ; 506  : \r
3514 ; 507  :     /* In a first pass, compute the optimal bit lengths (which may\r
3515 ; 508  :      * overflow in the case of the bit length tree).\r
3516 ; 509  :      */\r
3517 ; 510  :     tree[s->heap[s->heap_max]].Len = 0; /* root of the heap */\r
3518 \r
3519   00096 8d 94 88 5c 0b\r
3520         00 00            lea     edx, DWORD PTR [eax+ecx*4+2908]\r
3521   0009d 89 55 f4         mov     DWORD PTR tv597[ebp], edx\r
3522   000a0 ba 3d 02 00 00   mov     edx, 573               ; 0000023dH\r
3523   000a5 2b d1            sub     edx, ecx\r
3524 \r
3525 ; 511  : \r
3526 ; 512  :     for (h = s->heap_max+1; h < HEAP_SIZE; h++) {\r
3527 \r
3528   000a7 03 ca            add     ecx, edx\r
3529   000a9 89 55 ec         mov     DWORD PTR tv277[ebp], edx\r
3530   000ac 89 4d f0         mov     DWORD PTR _h$[ebp], ecx\r
3531   000af 90               npad    1\r
3532 $LL41@gen_bitlen:\r
3533 \r
3534 ; 513  :         n = s->heap[h];\r
3535 \r
3536   000b0 8b 4d f4         mov     ecx, DWORD PTR tv597[ebp]\r
3537   000b3 8b 11            mov     edx, DWORD PTR [ecx]\r
3538 \r
3539 ; 514  :         bits = tree[tree[n].Dad].Len + 1;\r
3540 \r
3541   000b5 0f b7 4c 93 02   movzx   ecx, WORD PTR [ebx+edx*4+2]\r
3542   000ba 0f b7 4c 8b 02   movzx   ecx, WORD PTR [ebx+ecx*4+2]\r
3543   000bf 41               inc     ecx\r
3544 \r
3545 ; 515  :         if (bits > max_length) bits = max_length, overflow++;\r
3546 \r
3547   000c0 3b cf            cmp     ecx, edi\r
3548   000c2 7e 06            jle     SHORT $LN17@gen_bitlen\r
3549   000c4 46               inc     esi\r
3550   000c5 8b cf            mov     ecx, edi\r
3551   000c7 89 75 f8         mov     DWORD PTR _overflow$[ebp], esi\r
3552 $LN17@gen_bitlen:\r
3553 \r
3554 ; 516  :         tree[n].Len = (ush)bits;\r
3555 \r
3556   000ca 66 89 4c 93 02   mov     WORD PTR [ebx+edx*4+2], cx\r
3557 \r
3558 ; 517  :         /* We overwrite tree[n].Dad which is no longer needed */\r
3559 ; 518  : \r
3560 ; 519  :         if (n > max_code) continue; /* not a leaf node */\r
3561 \r
3562   000cf 3b 55 e8         cmp     edx, DWORD PTR _max_code$[ebp]\r
3563   000d2 7f 47            jg      SHORT $LN19@gen_bitlen\r
3564 \r
3565 ; 520  : \r
3566 ; 521  :         s->bl_count[bits]++;\r
3567 ; 522  :         xbits = 0;\r
3568 ; 523  :         if (n >= base) xbits = extra[n-base];\r
3569 \r
3570   000d4 8b 7d e4         mov     edi, DWORD PTR _base$[ebp]\r
3571   000d7 66 ff 84 48 3c\r
3572         0b 00 00         inc     WORD PTR [eax+ecx*2+2876]\r
3573   000df 33 f6            xor     esi, esi\r
3574   000e1 3b d7            cmp     edx, edi\r
3575   000e3 7c 0a            jl      SHORT $LN15@gen_bitlen\r
3576   000e5 8b f2            mov     esi, edx\r
3577   000e7 2b f7            sub     esi, edi\r
3578   000e9 8b 7d e0         mov     edi, DWORD PTR _extra$[ebp]\r
3579   000ec 8b 34 b7         mov     esi, DWORD PTR [edi+esi*4]\r
3580 $LN15@gen_bitlen:\r
3581 \r
3582 ; 524  :         f = tree[n].Freq;\r
3583 \r
3584   000ef 0f b7 3c 93      movzx   edi, WORD PTR [ebx+edx*4]\r
3585 \r
3586 ; 525  :         s->opt_len += (ulg)f * (bits + xbits);\r
3587 \r
3588   000f3 03 ce            add     ecx, esi\r
3589   000f5 0f af cf         imul    ecx, edi\r
3590   000f8 01 88 a8 16 00\r
3591         00               add     DWORD PTR [eax+5800], ecx\r
3592 \r
3593 ; 526  :         if (stree) s->static_len += (ulg)f * (stree[n].Len + xbits);\r
3594 \r
3595   000fe 8b 4d dc         mov     ecx, DWORD PTR _stree$[ebp]\r
3596   00101 85 c9            test    ecx, ecx\r
3597   00103 74 10            je      SHORT $LN38@gen_bitlen\r
3598   00105 0f b7 54 91 02   movzx   edx, WORD PTR [ecx+edx*4+2]\r
3599   0010a 03 d6            add     edx, esi\r
3600   0010c 0f af d7         imul    edx, edi\r
3601   0010f 01 90 ac 16 00\r
3602         00               add     DWORD PTR [eax+5804], edx\r
3603 $LN38@gen_bitlen:\r
3604   00115 8b 7d fc         mov     edi, DWORD PTR _max_length$[ebp]\r
3605   00118 8b 75 f8         mov     esi, DWORD PTR _overflow$[ebp]\r
3606 $LN19@gen_bitlen:\r
3607 \r
3608 ; 511  : \r
3609 ; 512  :     for (h = s->heap_max+1; h < HEAP_SIZE; h++) {\r
3610 \r
3611   0011b 83 45 f4 04      add     DWORD PTR tv597[ebp], 4\r
3612   0011f ff 4d ec         dec     DWORD PTR tv277[ebp]\r
3613   00122 75 8c            jne     SHORT $LL41@gen_bitlen\r
3614 \r
3615 ; 527  :     }\r
3616 ; 528  :     if (overflow == 0) return;\r
3617 \r
3618   00124 85 f6            test    esi, esi\r
3619   00126 0f 84 c4 00 00\r
3620         00               je      $LN5@gen_bitlen\r
3621   0012c 8d bc 78 3c 0b\r
3622         00 00            lea     edi, DWORD PTR [eax+edi*2+2876]\r
3623 $LL12@gen_bitlen:\r
3624 \r
3625 ; 529  : \r
3626 ; 530  :     Trace((stderr,"\nbit length overflow\n"));\r
3627 ; 531  :     /* This happens for example on obj2 and pic of the Calgary corpus */\r
3628 ; 532  : \r
3629 ; 533  :     /* Find the first bit length which could increase: */\r
3630 ; 534  :     do {\r
3631 ; 535  :         bits = max_length-1;\r
3632 \r
3633   00133 8b 4d fc         mov     ecx, DWORD PTR _max_length$[ebp]\r
3634   00136 49               dec     ecx\r
3635 \r
3636 ; 536  :         while (s->bl_count[bits] == 0) bits--;\r
3637 \r
3638   00137 66 83 bc 48 3c\r
3639         0b 00 00 00      cmp     WORD PTR [eax+ecx*2+2876], 0\r
3640   00140 8d 94 48 3c 0b\r
3641         00 00            lea     edx, DWORD PTR [eax+ecx*2+2876]\r
3642   00147 75 11            jne     SHORT $LN8@gen_bitlen\r
3643   00149 8d a4 24 00 00\r
3644         00 00            npad    7\r
3645 $LL9@gen_bitlen:\r
3646   00150 83 ea 02         sub     edx, 2\r
3647   00153 49               dec     ecx\r
3648   00154 66 83 3a 00      cmp     WORD PTR [edx], 0\r
3649   00158 74 f6            je      SHORT $LL9@gen_bitlen\r
3650 $LN8@gen_bitlen:\r
3651 \r
3652 ; 537  :         s->bl_count[bits]--;      /* move one leaf down the tree */\r
3653 ; 538  :         s->bl_count[bits+1] += 2; /* move one overflow item as its brother */\r
3654 \r
3655   0015a 66 83 84 48 3e\r
3656         0b 00 00 02      add     WORD PTR [eax+ecx*2+2878], 2\r
3657   00163 ba ff ff 00 00   mov     edx, 65535             ; 0000ffffH\r
3658   00168 66 01 94 48 3c\r
3659         0b 00 00         add     WORD PTR [eax+ecx*2+2876], dx\r
3660 \r
3661 ; 539  :         s->bl_count[max_length]--;\r
3662 \r
3663   00170 8b ca            mov     ecx, edx\r
3664   00172 66 01 0f         add     WORD PTR [edi], cx\r
3665 \r
3666 ; 540  :         /* The brother of the overflow item also moves one step up,\r
3667 ; 541  :          * but this does not affect bl_count[max_length]\r
3668 ; 542  :          */\r
3669 ; 543  :         overflow -= 2;\r
3670 \r
3671   00175 83 ee 02         sub     esi, 2\r
3672 \r
3673 ; 544  :     } while (overflow > 0);\r
3674 \r
3675   00178 85 f6            test    esi, esi\r
3676   0017a 7f b7            jg      SHORT $LL12@gen_bitlen\r
3677 \r
3678 ; 545  : \r
3679 ; 546  :     /* Now recompute all bit lengths, scanning in increasing frequency.\r
3680 ; 547  :      * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\r
3681 ; 548  :      * lengths instead of fixing only the wrong ones. This idea is taken\r
3682 ; 549  :      * from 'ar' written by Haruhiko Okumura.)\r
3683 ; 550  :      */\r
3684 ; 551  :     for (bits = max_length; bits != 0; bits--) {\r
3685 \r
3686   0017c 8b 55 fc         mov     edx, DWORD PTR _max_length$[ebp]\r
3687   0017f 85 d2            test    edx, edx\r
3688   00181 74 6d            je      SHORT $LN5@gen_bitlen\r
3689   00183 89 7d ec         mov     DWORD PTR tv709[ebp], edi\r
3690 $LL7@gen_bitlen:\r
3691 \r
3692 ; 552  :         n = s->bl_count[bits];\r
3693 \r
3694   00186 0f b7 3f         movzx   edi, WORD PTR [edi]\r
3695   00189 89 7d f4         mov     DWORD PTR _n$[ebp], edi\r
3696 \r
3697 ; 553  :         while (n != 0) {\r
3698 \r
3699   0018c 85 ff            test    edi, edi\r
3700   0018e 74 54            je      SHORT $LN6@gen_bitlen\r
3701 \r
3702 ; 552  :         n = s->bl_count[bits];\r
3703 \r
3704   00190 8b 4d f0         mov     ecx, DWORD PTR _h$[ebp]\r
3705   00193 8d b4 88 5c 0b\r
3706         00 00            lea     esi, DWORD PTR [eax+ecx*4+2908]\r
3707   0019a 8d 9b 00 00 00\r
3708         00               npad    6\r
3709 $LL4@gen_bitlen:\r
3710 \r
3711 ; 554  :             m = s->heap[--h];\r
3712 \r
3713   001a0 8b 4e fc         mov     ecx, DWORD PTR [esi-4]\r
3714   001a3 ff 4d f0         dec     DWORD PTR _h$[ebp]\r
3715   001a6 83 ee 04         sub     esi, 4\r
3716   001a9 89 75 e0         mov     DWORD PTR tv671[ebp], esi\r
3717 \r
3718 ; 555  :             if (m > max_code) continue;\r
3719 \r
3720   001ac 3b 4d e8         cmp     ecx, DWORD PTR _max_code$[ebp]\r
3721   001af 7f 2f            jg      SHORT $LN39@gen_bitlen\r
3722 \r
3723 ; 556  :             if ((unsigned) tree[m].Len != (unsigned) bits) {\r
3724 \r
3725   001b1 0f b7 7c 8b 02   movzx   edi, WORD PTR [ebx+ecx*4+2]\r
3726   001b6 8d 74 8b 02      lea     esi, DWORD PTR [ebx+ecx*4+2]\r
3727   001ba 3b fa            cmp     edi, edx\r
3728   001bc 74 19            je      SHORT $LN1@gen_bitlen\r
3729 \r
3730 ; 557  :                 Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits));\r
3731 ; 558  :                 s->opt_len += ((long)bits - (long)tree[m].Len)\r
3732 ; 559  :                               *(long)tree[m].Freq;\r
3733 \r
3734   001be 8b da            mov     ebx, edx\r
3735   001c0 2b df            sub     ebx, edi\r
3736   001c2 8b fb            mov     edi, ebx\r
3737   001c4 8b 5d d8         mov     ebx, DWORD PTR _tree$[ebp]\r
3738   001c7 0f b7 0c 8b      movzx   ecx, WORD PTR [ebx+ecx*4]\r
3739   001cb 0f af f9         imul    edi, ecx\r
3740   001ce 01 b8 a8 16 00\r
3741         00               add     DWORD PTR [eax+5800], edi\r
3742 \r
3743 ; 560  :                 tree[m].Len = (ush)bits;\r
3744 \r
3745   001d4 66 89 16         mov     WORD PTR [esi], dx\r
3746 $LN1@gen_bitlen:\r
3747 \r
3748 ; 561  :             }\r
3749 ; 562  :             n--;\r
3750 \r
3751   001d7 ff 4d f4         dec     DWORD PTR _n$[ebp]\r
3752   001da 8b 7d f4         mov     edi, DWORD PTR _n$[ebp]\r
3753   001dd 8b 75 e0         mov     esi, DWORD PTR tv671[ebp]\r
3754 $LN39@gen_bitlen:\r
3755 \r
3756 ; 553  :         while (n != 0) {\r
3757 \r
3758   001e0 85 ff            test    edi, edi\r
3759   001e2 75 bc            jne     SHORT $LL4@gen_bitlen\r
3760 $LN6@gen_bitlen:\r
3761 \r
3762 ; 545  : \r
3763 ; 546  :     /* Now recompute all bit lengths, scanning in increasing frequency.\r
3764 ; 547  :      * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\r
3765 ; 548  :      * lengths instead of fixing only the wrong ones. This idea is taken\r
3766 ; 549  :      * from 'ar' written by Haruhiko Okumura.)\r
3767 ; 550  :      */\r
3768 ; 551  :     for (bits = max_length; bits != 0; bits--) {\r
3769 \r
3770   001e4 8b 7d ec         mov     edi, DWORD PTR tv709[ebp]\r
3771   001e7 83 ef 02         sub     edi, 2\r
3772   001ea 4a               dec     edx\r
3773   001eb 89 7d ec         mov     DWORD PTR tv709[ebp], edi\r
3774   001ee 75 96            jne     SHORT $LL7@gen_bitlen\r
3775 $LN5@gen_bitlen:\r
3776   001f0 5f               pop     edi\r
3777   001f1 5e               pop     esi\r
3778   001f2 5b               pop     ebx\r
3779 \r
3780 ; 563  :         }\r
3781 ; 564  :     }\r
3782 ; 565  : }\r
3783 \r
3784   001f3 8b e5            mov     esp, ebp\r
3785   001f5 5d               pop     ebp\r
3786   001f6 c3               ret     0\r
3787 _gen_bitlen ENDP\r
3788 ; Function compile flags: /Ogtp\r
3789 _TEXT   ENDS\r
3790 ;       COMDAT _pqdownheap\r
3791 _TEXT   SEGMENT\r
3792 _v$ = -4                                                ; size = 4\r
3793 _k$ = 8                                                 ; size = 4\r
3794 _pqdownheap PROC                                        ; COMDAT\r
3795 ; _s$ = eax\r
3796 ; _tree$ = edi\r
3797 \r
3798 ; 457  : {\r
3799 \r
3800   00000 55               push    ebp\r
3801   00001 8b ec            mov     ebp, esp\r
3802   00003 51               push    ecx\r
3803 \r
3804 ; 458  :     int v = s->heap[k];\r
3805 ; 459  :     int j = k << 1;  /* left son of k */\r
3806 ; 460  :     while (j <= s->heap_len) {\r
3807 \r
3808   00004 8b 90 50 14 00\r
3809         00               mov     edx, DWORD PTR [eax+5200]\r
3810   0000a 53               push    ebx\r
3811   0000b 56               push    esi\r
3812   0000c 8b 75 08         mov     esi, DWORD PTR _k$[ebp]\r
3813   0000f 8b 9c b0 5c 0b\r
3814         00 00            mov     ebx, DWORD PTR [eax+esi*4+2908]\r
3815   00016 8d 0c 36         lea     ecx, DWORD PTR [esi+esi]\r
3816   00019 89 5d fc         mov     DWORD PTR _v$[ebp], ebx\r
3817   0001c 3b ca            cmp     ecx, edx\r
3818   0001e 0f 8f a1 00 00\r
3819         00               jg      $LN14@pqdownheap\r
3820 $LN17@pqdownheap:\r
3821 \r
3822 ; 461  :         /* Set j to the smallest of the two sons: */\r
3823 ; 462  :         if (j < s->heap_len &&\r
3824 ; 463  :             smaller(tree, s->heap[j+1], s->heap[j], s->depth)) {\r
3825 \r
3826   00024 7d 35            jge     SHORT $LN16@pqdownheap\r
3827   00026 8b b4 88 60 0b\r
3828         00 00            mov     esi, DWORD PTR [eax+ecx*4+2912]\r
3829   0002d 8b 9c 88 5c 0b\r
3830         00 00            mov     ebx, DWORD PTR [eax+ecx*4+2908]\r
3831   00034 0f b7 14 b7      movzx   edx, WORD PTR [edi+esi*4]\r
3832   00038 0f b7 1c 9f      movzx   ebx, WORD PTR [edi+ebx*4]\r
3833   0003c 66 3b d3         cmp     dx, bx\r
3834   0003f 72 19            jb      SHORT $LN3@pqdownheap\r
3835   00041 75 18            jne     SHORT $LN16@pqdownheap\r
3836   00043 8a 94 06 58 14\r
3837         00 00            mov     dl, BYTE PTR [esi+eax+5208]\r
3838   0004a 8b b4 88 5c 0b\r
3839         00 00            mov     esi, DWORD PTR [eax+ecx*4+2908]\r
3840   00051 3a 94 06 58 14\r
3841         00 00            cmp     dl, BYTE PTR [esi+eax+5208]\r
3842   00058 77 01            ja      SHORT $LN16@pqdownheap\r
3843 $LN3@pqdownheap:\r
3844 \r
3845 ; 464  :             j++;\r
3846 \r
3847   0005a 41               inc     ecx\r
3848 $LN16@pqdownheap:\r
3849 \r
3850 ; 465  :         }\r
3851 ; 466  :         /* Exit if v is smaller than both sons */\r
3852 ; 467  :         if (smaller(tree, v, s->heap[j], s->depth)) break;\r
3853 \r
3854   0005b 8b b4 88 5c 0b\r
3855         00 00            mov     esi, DWORD PTR [eax+ecx*4+2908]\r
3856   00062 8b 55 fc         mov     edx, DWORD PTR _v$[ebp]\r
3857   00065 0f b7 14 97      movzx   edx, WORD PTR [edi+edx*4]\r
3858   00069 0f b7 1c b7      movzx   ebx, WORD PTR [edi+esi*4]\r
3859   0006d 66 3b d3         cmp     dx, bx\r
3860   00070 72 40            jb      SHORT $LN13@pqdownheap\r
3861   00072 75 13            jne     SHORT $LN15@pqdownheap\r
3862   00074 8b 55 fc         mov     edx, DWORD PTR _v$[ebp]\r
3863   00077 8a 9c 02 58 14\r
3864         00 00            mov     bl, BYTE PTR [edx+eax+5208]\r
3865   0007e 3a 9c 06 58 14\r
3866         00 00            cmp     bl, BYTE PTR [esi+eax+5208]\r
3867   00085 76 2e            jbe     SHORT $LN12@pqdownheap\r
3868 $LN15@pqdownheap:\r
3869 \r
3870 ; 468  : \r
3871 ; 469  :         /* Exchange v with the smallest son */\r
3872 ; 470  :         s->heap[k] = s->heap[j];  k = j;\r
3873 \r
3874   00087 8b 55 08         mov     edx, DWORD PTR _k$[ebp]\r
3875   0008a 89 b4 90 5c 0b\r
3876         00 00            mov     DWORD PTR [eax+edx*4+2908], esi\r
3877   00091 8b 90 50 14 00\r
3878         00               mov     edx, DWORD PTR [eax+5200]\r
3879   00097 8b f1            mov     esi, ecx\r
3880 \r
3881 ; 471  : \r
3882 ; 472  :         /* And continue down the tree, setting j to the left son of k */\r
3883 ; 473  :         j <<= 1;\r
3884 \r
3885   00099 03 c9            add     ecx, ecx\r
3886   0009b 89 75 08         mov     DWORD PTR _k$[ebp], esi\r
3887   0009e 3b ca            cmp     ecx, edx\r
3888   000a0 7e 82            jle     SHORT $LN17@pqdownheap\r
3889 \r
3890 ; 474  :     }\r
3891 ; 475  :     s->heap[k] = v;\r
3892 \r
3893   000a2 8b 4d fc         mov     ecx, DWORD PTR _v$[ebp]\r
3894   000a5 89 8c b0 5c 0b\r
3895         00 00            mov     DWORD PTR [eax+esi*4+2908], ecx\r
3896   000ac 5e               pop     esi\r
3897   000ad 5b               pop     ebx\r
3898 \r
3899 ; 476  : }\r
3900 \r
3901   000ae 8b e5            mov     esp, ebp\r
3902   000b0 5d               pop     ebp\r
3903   000b1 c3               ret     0\r
3904 $LN13@pqdownheap:\r
3905 \r
3906 ; 474  :     }\r
3907 ; 475  :     s->heap[k] = v;\r
3908 \r
3909   000b2 8b 55 fc         mov     edx, DWORD PTR _v$[ebp]\r
3910 $LN12@pqdownheap:\r
3911   000b5 8b 4d 08         mov     ecx, DWORD PTR _k$[ebp]\r
3912   000b8 5e               pop     esi\r
3913   000b9 89 94 88 5c 0b\r
3914         00 00            mov     DWORD PTR [eax+ecx*4+2908], edx\r
3915   000c0 5b               pop     ebx\r
3916 \r
3917 ; 476  : }\r
3918 \r
3919   000c1 8b e5            mov     esp, ebp\r
3920   000c3 5d               pop     ebp\r
3921   000c4 c3               ret     0\r
3922 $LN14@pqdownheap:\r
3923 \r
3924 ; 474  :     }\r
3925 ; 475  :     s->heap[k] = v;\r
3926 \r
3927   000c5 89 9c b0 5c 0b\r
3928         00 00            mov     DWORD PTR [eax+esi*4+2908], ebx\r
3929   000cc 5e               pop     esi\r
3930   000cd 5b               pop     ebx\r
3931 \r
3932 ; 476  : }\r
3933 \r
3934   000ce 8b e5            mov     esp, ebp\r
3935   000d0 5d               pop     ebp\r
3936   000d1 c3               ret     0\r
3937 _pqdownheap ENDP\r
3938 ; Function compile flags: /Ogtp\r
3939 _TEXT   ENDS\r
3940 ;       COMDAT _init_block\r
3941 _TEXT   SEGMENT\r
3942 _init_block PROC                                        ; COMDAT\r
3943 ; _s$ = edx\r
3944 \r
3945 ; 412  :     int n; /* iterates over tree elements */\r
3946 ; 413  : \r
3947 ; 414  :     /* Initialize the trees. */\r
3948 ; 415  :     for (n = 0; n < L_CODES;  n++) s->dyn_ltree[n].Freq = 0;\r
3949 \r
3950   00000 8d 82 94 00 00\r
3951         00               lea     eax, DWORD PTR [edx+148]\r
3952   00006 b9 1e 01 00 00   mov     ecx, 286               ; 0000011eH\r
3953   0000b 56               push    esi\r
3954   0000c 8d 64 24 00      npad    4\r
3955 $LL9@init_block:\r
3956   00010 33 f6            xor     esi, esi\r
3957   00012 66 89 30         mov     WORD PTR [eax], si\r
3958   00015 83 c0 04         add     eax, 4\r
3959   00018 49               dec     ecx\r
3960   00019 75 f5            jne     SHORT $LL9@init_block\r
3961 \r
3962 ; 416  :     for (n = 0; n < D_CODES;  n++) s->dyn_dtree[n].Freq = 0;\r
3963 \r
3964   0001b 8d 82 88 09 00\r
3965         00               lea     eax, DWORD PTR [edx+2440]\r
3966   00021 b9 1e 00 00 00   mov     ecx, 30                        ; 0000001eH\r
3967 $LL6@init_block:\r
3968   00026 33 f6            xor     esi, esi\r
3969   00028 66 89 30         mov     WORD PTR [eax], si\r
3970   0002b 83 c0 04         add     eax, 4\r
3971   0002e 49               dec     ecx\r
3972   0002f 75 f5            jne     SHORT $LL6@init_block\r
3973 \r
3974 ; 417  :     for (n = 0; n < BL_CODES; n++) s->bl_tree[n].Freq = 0;\r
3975 \r
3976   00031 8d 82 7c 0a 00\r
3977         00               lea     eax, DWORD PTR [edx+2684]\r
3978   00037 b9 13 00 00 00   mov     ecx, 19                        ; 00000013H\r
3979   0003c 8d 64 24 00      npad    4\r
3980 $LL3@init_block:\r
3981   00040 33 f6            xor     esi, esi\r
3982   00042 66 89 30         mov     WORD PTR [eax], si\r
3983   00045 83 c0 04         add     eax, 4\r
3984   00048 49               dec     ecx\r
3985   00049 75 f5            jne     SHORT $LL3@init_block\r
3986 \r
3987 ; 418  : \r
3988 ; 419  :     s->dyn_ltree[END_BLOCK].Freq = 1;\r
3989 \r
3990   0004b b8 01 00 00 00   mov     eax, 1\r
3991   00050 66 89 82 94 04\r
3992         00 00            mov     WORD PTR [edx+1172], ax\r
3993 \r
3994 ; 420  :     s->opt_len = s->static_len = 0L;\r
3995 \r
3996   00057 33 c0            xor     eax, eax\r
3997   00059 89 82 ac 16 00\r
3998         00               mov     DWORD PTR [edx+5804], eax\r
3999   0005f 89 82 a8 16 00\r
4000         00               mov     DWORD PTR [edx+5800], eax\r
4001 \r
4002 ; 421  :     s->last_lit = s->matches = 0;\r
4003 \r
4004   00065 89 82 b0 16 00\r
4005         00               mov     DWORD PTR [edx+5808], eax\r
4006   0006b 89 82 a0 16 00\r
4007         00               mov     DWORD PTR [edx+5792], eax\r
4008   00071 5e               pop     esi\r
4009 \r
4010 ; 422  : }\r
4011 \r
4012   00072 c3               ret     0\r
4013 _init_block ENDP\r
4014 ; Function compile flags: /Ogtp\r
4015 _TEXT   ENDS\r
4016 ;       COMDAT _tr_static_init\r
4017 _TEXT   SEGMENT\r
4018 _tr_static_init PROC                                    ; COMDAT\r
4019 \r
4020 ; 236  : #if defined(GEN_TREES_H) || !defined(STDC)\r
4021 ; 237  :     static int static_init_done = 0;\r
4022 ; 238  :     int n;        /* iterates over tree elements */\r
4023 ; 239  :     int bits;     /* bit counter */\r
4024 ; 240  :     int length;   /* length value */\r
4025 ; 241  :     int code;     /* code value */\r
4026 ; 242  :     int dist;     /* distance index */\r
4027 ; 243  :     ush bl_count[MAX_BITS+1];\r
4028 ; 244  :     /* number of codes at each bit length for an optimal tree */\r
4029 ; 245  : \r
4030 ; 246  :     if (static_init_done) return;\r
4031 ; 247  : \r
4032 ; 248  :     /* For some embedded targets, global variables are not initialized: */\r
4033 ; 249  : #ifdef NO_INIT_GLOBAL_POINTERS\r
4034 ; 250  :     static_l_desc.static_tree = static_ltree;\r
4035 ; 251  :     static_l_desc.extra_bits = extra_lbits;\r
4036 ; 252  :     static_d_desc.static_tree = static_dtree;\r
4037 ; 253  :     static_d_desc.extra_bits = extra_dbits;\r
4038 ; 254  :     static_bl_desc.extra_bits = extra_blbits;\r
4039 ; 255  : #endif\r
4040 ; 256  : \r
4041 ; 257  :     /* Initialize the mapping length (0..255) -> length code (0..28) */\r
4042 ; 258  :     length = 0;\r
4043 ; 259  :     for (code = 0; code < LENGTH_CODES-1; code++) {\r
4044 ; 260  :         base_length[code] = length;\r
4045 ; 261  :         for (n = 0; n < (1<<extra_lbits[code]); n++) {\r
4046 ; 262  :             _length_code[length++] = (uch)code;\r
4047 ; 263  :         }\r
4048 ; 264  :     }\r
4049 ; 265  :     Assert (length == 256, "tr_static_init: length != 256");\r
4050 ; 266  :     /* Note that the length 255 (match length 258) can be represented\r
4051 ; 267  :      * in two different ways: code 284 + 5 bits or code 285, so we\r
4052 ; 268  :      * overwrite length_code[255] to use the best encoding:\r
4053 ; 269  :      */\r
4054 ; 270  :     _length_code[length-1] = (uch)code;\r
4055 ; 271  : \r
4056 ; 272  :     /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\r
4057 ; 273  :     dist = 0;\r
4058 ; 274  :     for (code = 0 ; code < 16; code++) {\r
4059 ; 275  :         base_dist[code] = dist;\r
4060 ; 276  :         for (n = 0; n < (1<<extra_dbits[code]); n++) {\r
4061 ; 277  :             _dist_code[dist++] = (uch)code;\r
4062 ; 278  :         }\r
4063 ; 279  :     }\r
4064 ; 280  :     Assert (dist == 256, "tr_static_init: dist != 256");\r
4065 ; 281  :     dist >>= 7; /* from now on, all distances are divided by 128 */\r
4066 ; 282  :     for ( ; code < D_CODES; code++) {\r
4067 ; 283  :         base_dist[code] = dist << 7;\r
4068 ; 284  :         for (n = 0; n < (1<<(extra_dbits[code]-7)); n++) {\r
4069 ; 285  :             _dist_code[256 + dist++] = (uch)code;\r
4070 ; 286  :         }\r
4071 ; 287  :     }\r
4072 ; 288  :     Assert (dist == 256, "tr_static_init: 256+dist != 512");\r
4073 ; 289  : \r
4074 ; 290  :     /* Construct the codes of the static literal tree */\r
4075 ; 291  :     for (bits = 0; bits <= MAX_BITS; bits++) bl_count[bits] = 0;\r
4076 ; 292  :     n = 0;\r
4077 ; 293  :     while (n <= 143) static_ltree[n++].Len = 8, bl_count[8]++;\r
4078 ; 294  :     while (n <= 255) static_ltree[n++].Len = 9, bl_count[9]++;\r
4079 ; 295  :     while (n <= 279) static_ltree[n++].Len = 7, bl_count[7]++;\r
4080 ; 296  :     while (n <= 287) static_ltree[n++].Len = 8, bl_count[8]++;\r
4081 ; 297  :     /* Codes 286 and 287 do not exist, but we must include them in the\r
4082 ; 298  :      * tree construction to get a canonical Huffman tree (longest code\r
4083 ; 299  :      * all ones)\r
4084 ; 300  :      */\r
4085 ; 301  :     gen_codes((ct_data *)static_ltree, L_CODES+1, bl_count);\r
4086 ; 302  : \r
4087 ; 303  :     /* The static distance tree is trivial: */\r
4088 ; 304  :     for (n = 0; n < D_CODES; n++) {\r
4089 ; 305  :         static_dtree[n].Len = 5;\r
4090 ; 306  :         static_dtree[n].Code = bi_reverse((unsigned)n, 5);\r
4091 ; 307  :     }\r
4092 ; 308  :     static_init_done = 1;\r
4093 ; 309  : \r
4094 ; 310  : #  ifdef GEN_TREES_H\r
4095 ; 311  :     gen_trees_header();\r
4096 ; 312  : #  endif\r
4097 ; 313  : #endif /* defined(GEN_TREES_H) || !defined(STDC) */\r
4098 ; 314  : }\r
4099 \r
4100   00000 c3               ret     0\r
4101 _tr_static_init ENDP\r
4102 ; Function compile flags: /Ogtp\r
4103 ;       COMDAT _copy_block\r
4104 _TEXT   SEGMENT\r
4105 _copy_block PROC                                        ; COMDAT\r
4106 ; _s$ = eax\r
4107 ; _buf$ = edx\r
4108 ; _len$ = ecx\r
4109 \r
4110 ; 1208 : {\r
4111 \r
4112   00000 53               push    ebx\r
4113   00001 56               push    esi\r
4114   00002 57               push    edi\r
4115   00003 8b d9            mov     ebx, ecx\r
4116   00005 8b fa            mov     edi, edx\r
4117 \r
4118 ; 1209 :     bi_windup(s);        /* align on byte boundary */\r
4119 \r
4120   00007 e8 00 00 00 00   call    _bi_windup\r
4121 \r
4122 ; 1210 : \r
4123 ; 1211 :     if (header) {\r
4124 ; 1212 :         put_short(s, (ush)len);\r
4125 \r
4126   0000c 8b 48 14         mov     ecx, DWORD PTR [eax+20]\r
4127   0000f 8b 50 08         mov     edx, DWORD PTR [eax+8]\r
4128   00012 88 1c 11         mov     BYTE PTR [ecx+edx], bl\r
4129   00015 ff 40 14         inc     DWORD PTR [eax+20]\r
4130   00018 8b 70 14         mov     esi, DWORD PTR [eax+20]\r
4131   0001b 8b 50 08         mov     edx, DWORD PTR [eax+8]\r
4132   0001e 8b cb            mov     ecx, ebx\r
4133   00020 c1 e9 08         shr     ecx, 8\r
4134   00023 88 0c 16         mov     BYTE PTR [esi+edx], cl\r
4135   00026 ff 40 14         inc     DWORD PTR [eax+20]\r
4136   00029 8b 70 14         mov     esi, DWORD PTR [eax+20]\r
4137 \r
4138 ; 1213 :         put_short(s, (ush)~len);\r
4139 \r
4140   0002c 8b 50 08         mov     edx, DWORD PTR [eax+8]\r
4141   0002f 8a cb            mov     cl, bl\r
4142   00031 f6 d1            not     cl\r
4143   00033 88 0c 16         mov     BYTE PTR [esi+edx], cl\r
4144   00036 ff 40 14         inc     DWORD PTR [eax+20]\r
4145   00039 8b 70 14         mov     esi, DWORD PTR [eax+20]\r
4146   0003c 8b 50 08         mov     edx, DWORD PTR [eax+8]\r
4147   0003f 8b cb            mov     ecx, ebx\r
4148   00041 f7 d1            not     ecx\r
4149   00043 c1 e9 08         shr     ecx, 8\r
4150   00046 88 0c 16         mov     BYTE PTR [esi+edx], cl\r
4151   00049 ff 40 14         inc     DWORD PTR [eax+20]\r
4152   0004c 8b 70 14         mov     esi, DWORD PTR [eax+20]\r
4153 \r
4154 ; 1214 : #ifdef DEBUG\r
4155 ; 1215 :         s->bits_sent += 2*16;\r
4156 ; 1216 : #endif\r
4157 ; 1217 :     }\r
4158 ; 1218 : #ifdef DEBUG\r
4159 ; 1219 :     s->bits_sent += (ulg)len<<3;\r
4160 ; 1220 : #endif\r
4161 ; 1221 :     while (len--) {\r
4162 \r
4163   0004f 85 db            test    ebx, ebx\r
4164   00051 74 12            je      SHORT $LN7@copy_block\r
4165 $LL2@copy_block:\r
4166 \r
4167 ; 1222 :         put_byte(s, *buf++);\r
4168 \r
4169   00053 8a 17            mov     dl, BYTE PTR [edi]\r
4170   00055 8b 48 08         mov     ecx, DWORD PTR [eax+8]\r
4171   00058 88 14 0e         mov     BYTE PTR [esi+ecx], dl\r
4172   0005b ff 40 14         inc     DWORD PTR [eax+20]\r
4173   0005e 8b 70 14         mov     esi, DWORD PTR [eax+20]\r
4174   00061 47               inc     edi\r
4175   00062 4b               dec     ebx\r
4176   00063 75 ee            jne     SHORT $LL2@copy_block\r
4177 $LN7@copy_block:\r
4178   00065 5f               pop     edi\r
4179   00066 5e               pop     esi\r
4180   00067 5b               pop     ebx\r
4181 \r
4182 ; 1223 :     }\r
4183 ; 1224 : }\r
4184 \r
4185   00068 c3               ret     0\r
4186 _copy_block ENDP\r
4187 _TEXT   ENDS\r
4188 PUBLIC  __tr_stored_block\r
4189 ; Function compile flags: /Ogtp\r
4190 ;       COMDAT __tr_stored_block\r
4191 _TEXT   SEGMENT\r
4192 _buf$ = 8                                               ; size = 4\r
4193 _stored_len$ = 12                                       ; size = 4\r
4194 __tr_stored_block PROC                                  ; COMDAT\r
4195 ; _s$ = eax\r
4196 ; _last$ = ecx\r
4197 \r
4198 ; 870  : {\r
4199 \r
4200   00000 55               push    ebp\r
4201   00001 8b ec            mov     ebp, esp\r
4202   00003 56               push    esi\r
4203   00004 8b f1            mov     esi, ecx\r
4204 \r
4205 ; 871  :     send_bits(s, (STORED_BLOCK<<1)+last, 3);    /* send block type */\r
4206 \r
4207   00006 8b 88 bc 16 00\r
4208         00               mov     ecx, DWORD PTR [eax+5820]\r
4209   0000c 83 f9 0d         cmp     ecx, 13                        ; 0000000dH\r
4210   0000f 7e 5f            jle     SHORT $LN2@tr_stored_\r
4211   00011 66 8b d6         mov     dx, si\r
4212   00014 66 d3 e2         shl     dx, cl\r
4213   00017 8b 48 08         mov     ecx, DWORD PTR [eax+8]\r
4214   0001a 53               push    ebx\r
4215   0001b 66 09 90 b8 16\r
4216         00 00            or      WORD PTR [eax+5816], dx\r
4217   00022 0f b6 98 b8 16\r
4218         00 00            movzx   ebx, BYTE PTR [eax+5816]\r
4219   00029 8b 50 14         mov     edx, DWORD PTR [eax+20]\r
4220   0002c 88 1c 11         mov     BYTE PTR [ecx+edx], bl\r
4221   0002f ff 40 14         inc     DWORD PTR [eax+20]\r
4222   00032 0f b6 98 b9 16\r
4223         00 00            movzx   ebx, BYTE PTR [eax+5817]\r
4224   00039 8b 48 14         mov     ecx, DWORD PTR [eax+20]\r
4225   0003c 8b 50 08         mov     edx, DWORD PTR [eax+8]\r
4226   0003f 88 1c 11         mov     BYTE PTR [ecx+edx], bl\r
4227   00042 8b 90 bc 16 00\r
4228         00               mov     edx, DWORD PTR [eax+5820]\r
4229   00048 ff 40 14         inc     DWORD PTR [eax+20]\r
4230   0004b b1 10            mov     cl, 16                 ; 00000010H\r
4231   0004d 2a ca            sub     cl, dl\r
4232   0004f 66 d3 ee         shr     si, cl\r
4233 \r
4234 ; 872  : #ifdef DEBUG\r
4235 ; 873  :     s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L;\r
4236 ; 874  :     s->compressed_len += (stored_len + 4) << 3;\r
4237 ; 875  : #endif\r
4238 ; 876  :     copy_block(s, buf, (unsigned)stored_len, 1); /* with header */\r
4239 \r
4240   00052 8b 4d 0c         mov     ecx, DWORD PTR _stored_len$[ebp]\r
4241   00055 83 c2 f3         add     edx, -13               ; fffffff3H\r
4242   00058 5b               pop     ebx\r
4243   00059 66 89 b0 b8 16\r
4244         00 00            mov     WORD PTR [eax+5816], si\r
4245   00060 89 90 bc 16 00\r
4246         00               mov     DWORD PTR [eax+5820], edx\r
4247   00066 8b 55 08         mov     edx, DWORD PTR _buf$[ebp]\r
4248   00069 5e               pop     esi\r
4249 \r
4250 ; 877  : }\r
4251 \r
4252   0006a 5d               pop     ebp\r
4253 \r
4254 ; 872  : #ifdef DEBUG\r
4255 ; 873  :     s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L;\r
4256 ; 874  :     s->compressed_len += (stored_len + 4) << 3;\r
4257 ; 875  : #endif\r
4258 ; 876  :     copy_block(s, buf, (unsigned)stored_len, 1); /* with header */\r
4259 \r
4260   0006b e9 00 00 00 00   jmp     _copy_block\r
4261 $LN2@tr_stored_:\r
4262   00070 8b 55 08         mov     edx, DWORD PTR _buf$[ebp]\r
4263   00073 66 d3 e6         shl     si, cl\r
4264   00076 66 09 b0 b8 16\r
4265         00 00            or      WORD PTR [eax+5816], si\r
4266   0007d 83 c1 03         add     ecx, 3\r
4267   00080 89 88 bc 16 00\r
4268         00               mov     DWORD PTR [eax+5820], ecx\r
4269   00086 8b 4d 0c         mov     ecx, DWORD PTR _stored_len$[ebp]\r
4270   00089 5e               pop     esi\r
4271 \r
4272 ; 877  : }\r
4273 \r
4274   0008a 5d               pop     ebp\r
4275 \r
4276 ; 872  : #ifdef DEBUG\r
4277 ; 873  :     s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L;\r
4278 ; 874  :     s->compressed_len += (stored_len + 4) << 3;\r
4279 ; 875  : #endif\r
4280 ; 876  :     copy_block(s, buf, (unsigned)stored_len, 1); /* with header */\r
4281 \r
4282   0008b e9 00 00 00 00   jmp     _copy_block\r
4283 __tr_stored_block ENDP\r
4284 ; Function compile flags: /Ogtp\r
4285 _TEXT   ENDS\r
4286 ;       COMDAT _send_all_trees\r
4287 _TEXT   SEGMENT\r
4288 tv556 = -4                                              ; size = 4\r
4289 tv555 = -4                                              ; size = 4\r
4290 tv554 = -4                                              ; size = 4\r
4291 _lcodes$ = 8                                            ; size = 4\r
4292 _dcodes$ = 12                                           ; size = 4\r
4293 _blcodes$ = 16                                          ; size = 4\r
4294 _send_all_trees PROC                                    ; COMDAT\r
4295 ; _s$ = esi\r
4296 \r
4297 ; 839  : {\r
4298 \r
4299   00000 55               push    ebp\r
4300   00001 8b ec            mov     ebp, esp\r
4301   00003 51               push    ecx\r
4302 \r
4303 ; 840  :     int rank;                    /* index in bl_order */\r
4304 ; 841  : \r
4305 ; 842  :     Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes");\r
4306 ; 843  :     Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\r
4307 ; 844  :             "too many codes");\r
4308 ; 845  :     Tracev((stderr, "\nbl counts: "));\r
4309 ; 846  :     send_bits(s, lcodes-257, 5); /* not +255 as stated in appnote.txt */\r
4310 \r
4311   00004 8b 45 08         mov     eax, DWORD PTR _lcodes$[ebp]\r
4312   00007 8b 8e bc 16 00\r
4313         00               mov     ecx, DWORD PTR [esi+5820]\r
4314   0000d 53               push    ebx\r
4315   0000e 05 ff fe ff ff   add     eax, -257              ; fffffeffH\r
4316   00013 57               push    edi\r
4317   00014 bb 01 00 00 00   mov     ebx, 1\r
4318   00019 83 f9 0b         cmp     ecx, 11                        ; 0000000bH\r
4319   0001c 7e 56            jle     SHORT $LN11@send_all_t\r
4320   0001e 66 8b d0         mov     dx, ax\r
4321   00021 66 d3 e2         shl     dx, cl\r
4322   00024 8b 4e 14         mov     ecx, DWORD PTR [esi+20]\r
4323   00027 89 45 fc         mov     DWORD PTR tv556[ebp], eax\r
4324   0002a 66 09 96 b8 16\r
4325         00 00            or      WORD PTR [esi+5816], dx\r
4326   00031 8b 56 08         mov     edx, DWORD PTR [esi+8]\r
4327   00034 8a 86 b8 16 00\r
4328         00               mov     al, BYTE PTR [esi+5816]\r
4329   0003a 88 04 11         mov     BYTE PTR [ecx+edx], al\r
4330   0003d 01 5e 14         add     DWORD PTR [esi+20], ebx\r
4331   00040 8a 96 b9 16 00\r
4332         00               mov     dl, BYTE PTR [esi+5817]\r
4333   00046 8b 7e 14         mov     edi, DWORD PTR [esi+20]\r
4334   00049 8b 4e 08         mov     ecx, DWORD PTR [esi+8]\r
4335   0004c 8b 45 fc         mov     eax, DWORD PTR tv556[ebp]\r
4336   0004f 88 14 0f         mov     BYTE PTR [edi+ecx], dl\r
4337   00052 8b 96 bc 16 00\r
4338         00               mov     edx, DWORD PTR [esi+5820]\r
4339   00058 01 5e 14         add     DWORD PTR [esi+20], ebx\r
4340   0005b b1 10            mov     cl, 16                 ; 00000010H\r
4341   0005d 2a ca            sub     cl, dl\r
4342   0005f 66 d3 e8         shr     ax, cl\r
4343   00062 83 c2 f5         add     edx, -11               ; fffffff5H\r
4344   00065 89 96 bc 16 00\r
4345         00               mov     DWORD PTR [esi+5820], edx\r
4346   0006b 66 89 86 b8 16\r
4347         00 00            mov     WORD PTR [esi+5816], ax\r
4348   00072 eb 13            jmp     SHORT $LN10@send_all_t\r
4349 $LN11@send_all_t:\r
4350   00074 66 d3 e0         shl     ax, cl\r
4351   00077 66 09 86 b8 16\r
4352         00 00            or      WORD PTR [esi+5816], ax\r
4353   0007e 83 c1 05         add     ecx, 5\r
4354   00081 89 8e bc 16 00\r
4355         00               mov     DWORD PTR [esi+5820], ecx\r
4356 $LN10@send_all_t:\r
4357 \r
4358 ; 847  :     send_bits(s, dcodes-1,   5);\r
4359 \r
4360   00087 8b 45 0c         mov     eax, DWORD PTR _dcodes$[ebp]\r
4361   0008a 8b 8e bc 16 00\r
4362         00               mov     ecx, DWORD PTR [esi+5820]\r
4363   00090 48               dec     eax\r
4364   00091 83 f9 0b         cmp     ecx, 11                        ; 0000000bH\r
4365   00094 7e 56            jle     SHORT $LN9@send_all_t\r
4366   00096 66 8b d0         mov     dx, ax\r
4367   00099 66 d3 e2         shl     dx, cl\r
4368   0009c 8b 4e 14         mov     ecx, DWORD PTR [esi+20]\r
4369   0009f 89 45 fc         mov     DWORD PTR tv555[ebp], eax\r
4370   000a2 66 09 96 b8 16\r
4371         00 00            or      WORD PTR [esi+5816], dx\r
4372   000a9 8b 56 08         mov     edx, DWORD PTR [esi+8]\r
4373   000ac 8a 86 b8 16 00\r
4374         00               mov     al, BYTE PTR [esi+5816]\r
4375   000b2 88 04 11         mov     BYTE PTR [ecx+edx], al\r
4376   000b5 01 5e 14         add     DWORD PTR [esi+20], ebx\r
4377   000b8 8a 96 b9 16 00\r
4378         00               mov     dl, BYTE PTR [esi+5817]\r
4379   000be 8b 7e 14         mov     edi, DWORD PTR [esi+20]\r
4380   000c1 8b 4e 08         mov     ecx, DWORD PTR [esi+8]\r
4381   000c4 8b 45 fc         mov     eax, DWORD PTR tv555[ebp]\r
4382   000c7 88 14 0f         mov     BYTE PTR [edi+ecx], dl\r
4383   000ca 8b 96 bc 16 00\r
4384         00               mov     edx, DWORD PTR [esi+5820]\r
4385   000d0 01 5e 14         add     DWORD PTR [esi+20], ebx\r
4386   000d3 b1 10            mov     cl, 16                 ; 00000010H\r
4387   000d5 2a ca            sub     cl, dl\r
4388   000d7 66 d3 e8         shr     ax, cl\r
4389   000da 83 c2 f5         add     edx, -11               ; fffffff5H\r
4390   000dd 89 96 bc 16 00\r
4391         00               mov     DWORD PTR [esi+5820], edx\r
4392   000e3 66 89 86 b8 16\r
4393         00 00            mov     WORD PTR [esi+5816], ax\r
4394   000ea eb 13            jmp     SHORT $LN8@send_all_t\r
4395 $LN9@send_all_t:\r
4396   000ec 66 d3 e0         shl     ax, cl\r
4397   000ef 66 09 86 b8 16\r
4398         00 00            or      WORD PTR [esi+5816], ax\r
4399   000f6 83 c1 05         add     ecx, 5\r
4400   000f9 89 8e bc 16 00\r
4401         00               mov     DWORD PTR [esi+5820], ecx\r
4402 $LN8@send_all_t:\r
4403 \r
4404 ; 848  :     send_bits(s, blcodes-4,  4); /* not -3 as stated in appnote.txt */\r
4405 \r
4406   000ff 8b 45 10         mov     eax, DWORD PTR _blcodes$[ebp]\r
4407   00102 8b 8e bc 16 00\r
4408         00               mov     ecx, DWORD PTR [esi+5820]\r
4409   00108 83 c0 fc         add     eax, -4                        ; fffffffcH\r
4410   0010b 83 f9 0c         cmp     ecx, 12                        ; 0000000cH\r
4411   0010e 7e 56            jle     SHORT $LN7@send_all_t\r
4412   00110 66 8b d0         mov     dx, ax\r
4413   00113 66 d3 e2         shl     dx, cl\r
4414   00116 8b 4e 14         mov     ecx, DWORD PTR [esi+20]\r
4415   00119 89 45 fc         mov     DWORD PTR tv554[ebp], eax\r
4416   0011c 66 09 96 b8 16\r
4417         00 00            or      WORD PTR [esi+5816], dx\r
4418   00123 8b 56 08         mov     edx, DWORD PTR [esi+8]\r
4419   00126 8a 86 b8 16 00\r
4420         00               mov     al, BYTE PTR [esi+5816]\r
4421   0012c 88 04 11         mov     BYTE PTR [ecx+edx], al\r
4422   0012f 01 5e 14         add     DWORD PTR [esi+20], ebx\r
4423   00132 8a 96 b9 16 00\r
4424         00               mov     dl, BYTE PTR [esi+5817]\r
4425   00138 8b 7e 14         mov     edi, DWORD PTR [esi+20]\r
4426   0013b 8b 4e 08         mov     ecx, DWORD PTR [esi+8]\r
4427   0013e 8b 45 fc         mov     eax, DWORD PTR tv554[ebp]\r
4428   00141 88 14 0f         mov     BYTE PTR [edi+ecx], dl\r
4429   00144 8b 96 bc 16 00\r
4430         00               mov     edx, DWORD PTR [esi+5820]\r
4431   0014a 01 5e 14         add     DWORD PTR [esi+20], ebx\r
4432   0014d b1 10            mov     cl, 16                 ; 00000010H\r
4433   0014f 2a ca            sub     cl, dl\r
4434   00151 66 d3 e8         shr     ax, cl\r
4435   00154 83 c2 f4         add     edx, -12               ; fffffff4H\r
4436   00157 89 96 bc 16 00\r
4437         00               mov     DWORD PTR [esi+5820], edx\r
4438   0015d 66 89 86 b8 16\r
4439         00 00            mov     WORD PTR [esi+5816], ax\r
4440   00164 eb 13            jmp     SHORT $LN6@send_all_t\r
4441 $LN7@send_all_t:\r
4442   00166 66 d3 e0         shl     ax, cl\r
4443   00169 66 09 86 b8 16\r
4444         00 00            or      WORD PTR [esi+5816], ax\r
4445   00170 83 c1 04         add     ecx, 4\r
4446   00173 89 8e bc 16 00\r
4447         00               mov     DWORD PTR [esi+5820], ecx\r
4448 $LN6@send_all_t:\r
4449 \r
4450 ; 849  :     for (rank = 0; rank < blcodes; rank++) {\r
4451 \r
4452   00179 33 ff            xor     edi, edi\r
4453   0017b 39 7d 10         cmp     DWORD PTR _blcodes$[ebp], edi\r
4454   0017e 0f 8e 9e 00 00\r
4455         00               jle     $LN3@send_all_t\r
4456 $LL5@send_all_t:\r
4457 \r
4458 ; 850  :         Tracev((stderr, "\nbl code %2d ", bl_order[rank]));\r
4459 ; 851  :         send_bits(s, s->bl_tree[bl_order[rank]].Len, 3);\r
4460 \r
4461   00184 8b 8e bc 16 00\r
4462         00               mov     ecx, DWORD PTR [esi+5820]\r
4463   0018a 83 f9 0d         cmp     ecx, 13                        ; 0000000dH\r
4464   0018d 7e 66            jle     SHORT $LN2@send_all_t\r
4465   0018f 0f b6 97 00 00\r
4466         00 00            movzx   edx, BYTE PTR _bl_order[edi]\r
4467   00196 0f b7 84 96 7e\r
4468         0a 00 00         movzx   eax, WORD PTR [esi+edx*4+2686]\r
4469   0019e 66 8b d0         mov     dx, ax\r
4470   001a1 66 d3 e2         shl     dx, cl\r
4471   001a4 8b 4e 14         mov     ecx, DWORD PTR [esi+20]\r
4472   001a7 66 09 96 b8 16\r
4473         00 00            or      WORD PTR [esi+5816], dx\r
4474   001ae 0f b6 9e b8 16\r
4475         00 00            movzx   ebx, BYTE PTR [esi+5816]\r
4476   001b5 8b 56 08         mov     edx, DWORD PTR [esi+8]\r
4477   001b8 88 1c 11         mov     BYTE PTR [ecx+edx], bl\r
4478   001bb ff 46 14         inc     DWORD PTR [esi+20]\r
4479   001be 0f b6 9e b9 16\r
4480         00 00            movzx   ebx, BYTE PTR [esi+5817]\r
4481   001c5 8b 4e 14         mov     ecx, DWORD PTR [esi+20]\r
4482   001c8 8b 56 08         mov     edx, DWORD PTR [esi+8]\r
4483   001cb 88 1c 11         mov     BYTE PTR [ecx+edx], bl\r
4484   001ce 8b 96 bc 16 00\r
4485         00               mov     edx, DWORD PTR [esi+5820]\r
4486   001d4 b1 10            mov     cl, 16                 ; 00000010H\r
4487   001d6 2a ca            sub     cl, dl\r
4488   001d8 66 d3 e8         shr     ax, cl\r
4489   001db bb 01 00 00 00   mov     ebx, 1\r
4490   001e0 01 5e 14         add     DWORD PTR [esi+20], ebx\r
4491   001e3 83 c2 f3         add     edx, -13               ; fffffff3H\r
4492   001e6 66 89 86 b8 16\r
4493         00 00            mov     WORD PTR [esi+5816], ax\r
4494   001ed 89 96 bc 16 00\r
4495         00               mov     DWORD PTR [esi+5820], edx\r
4496   001f3 eb 22            jmp     SHORT $LN4@send_all_t\r
4497 $LN2@send_all_t:\r
4498   001f5 0f b6 87 00 00\r
4499         00 00            movzx   eax, BYTE PTR _bl_order[edi]\r
4500   001fc 66 8b 94 86 7e\r
4501         0a 00 00         mov     dx, WORD PTR [esi+eax*4+2686]\r
4502   00204 66 d3 e2         shl     dx, cl\r
4503   00207 66 09 96 b8 16\r
4504         00 00            or      WORD PTR [esi+5816], dx\r
4505   0020e 83 c1 03         add     ecx, 3\r
4506   00211 89 8e bc 16 00\r
4507         00               mov     DWORD PTR [esi+5820], ecx\r
4508 $LN4@send_all_t:\r
4509 \r
4510 ; 849  :     for (rank = 0; rank < blcodes; rank++) {\r
4511 \r
4512   00217 03 fb            add     edi, ebx\r
4513   00219 3b 7d 10         cmp     edi, DWORD PTR _blcodes$[ebp]\r
4514   0021c 0f 8c 62 ff ff\r
4515         ff               jl      $LL5@send_all_t\r
4516 $LN3@send_all_t:\r
4517 \r
4518 ; 852  :     }\r
4519 ; 853  :     Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent));\r
4520 ; 854  : \r
4521 ; 855  :     send_tree(s, (ct_data *)s->dyn_ltree, lcodes-1); /* literal tree */\r
4522 \r
4523   00222 8b 4d 08         mov     ecx, DWORD PTR _lcodes$[ebp]\r
4524   00225 49               dec     ecx\r
4525   00226 8d 96 94 00 00\r
4526         00               lea     edx, DWORD PTR [esi+148]\r
4527   0022c 8b c6            mov     eax, esi\r
4528   0022e e8 00 00 00 00   call    _send_tree\r
4529 \r
4530 ; 856  :     Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent));\r
4531 ; 857  : \r
4532 ; 858  :     send_tree(s, (ct_data *)s->dyn_dtree, dcodes-1); /* distance tree */\r
4533 \r
4534   00233 8b 4d 0c         mov     ecx, DWORD PTR _dcodes$[ebp]\r
4535   00236 49               dec     ecx\r
4536   00237 8d 96 88 09 00\r
4537         00               lea     edx, DWORD PTR [esi+2440]\r
4538   0023d 8b c6            mov     eax, esi\r
4539   0023f e8 00 00 00 00   call    _send_tree\r
4540   00244 5f               pop     edi\r
4541   00245 5b               pop     ebx\r
4542 \r
4543 ; 859  :     Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent));\r
4544 ; 860  : }\r
4545 \r
4546   00246 8b e5            mov     esp, ebp\r
4547   00248 5d               pop     ebp\r
4548   00249 c3               ret     0\r
4549 _send_all_trees ENDP\r
4550 ; Function compile flags: /Ogtp\r
4551 _TEXT   ENDS\r
4552 ;       COMDAT _build_tree\r
4553 _TEXT   SEGMENT\r
4554 _node$ = -8                                             ; size = 4\r
4555 _elems$ = -8                                            ; size = 4\r
4556 _max_code$ = -4                                         ; size = 4\r
4557 _desc$ = 8                                              ; size = 4\r
4558 _build_tree PROC                                        ; COMDAT\r
4559 ; _s$ = esi\r
4560 \r
4561 ; 620  : {\r
4562 \r
4563   00000 55               push    ebp\r
4564   00001 8b ec            mov     ebp, esp\r
4565   00003 83 ec 08         sub     esp, 8\r
4566 \r
4567 ; 621  :     ct_data *tree         = desc->dyn_tree;\r
4568 \r
4569   00006 8b 45 08         mov     eax, DWORD PTR _desc$[ebp]\r
4570   00009 53               push    ebx\r
4571   0000a 57               push    edi\r
4572   0000b 8b 38            mov     edi, DWORD PTR [eax]\r
4573 \r
4574 ; 622  :     const ct_data *stree  = desc->stat_desc->static_tree;\r
4575 \r
4576   0000d 8b 40 08         mov     eax, DWORD PTR [eax+8]\r
4577 \r
4578 ; 623  :     int elems             = desc->stat_desc->elems;\r
4579 \r
4580   00010 8b 50 0c         mov     edx, DWORD PTR [eax+12]\r
4581   00013 8b 18            mov     ebx, DWORD PTR [eax]\r
4582 \r
4583 ; 624  :     int n, m;          /* iterate over heap elements */\r
4584 ; 625  :     int max_code = -1; /* largest code with non zero frequency */\r
4585 \r
4586   00015 83 c9 ff         or      ecx, -1\r
4587 \r
4588 ; 626  :     int node;          /* new node being created */\r
4589 ; 627  : \r
4590 ; 628  :     /* Construct the initial heap, with least frequent element in\r
4591 ; 629  :      * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\r
4592 ; 630  :      * heap[0] is not used.\r
4593 ; 631  :      */\r
4594 ; 632  :     s->heap_len = 0, s->heap_max = HEAP_SIZE;\r
4595 ; 633  : \r
4596 ; 634  :     for (n = 0; n < elems; n++) {\r
4597 \r
4598   00018 33 c0            xor     eax, eax\r
4599   0001a 89 55 f8         mov     DWORD PTR _elems$[ebp], edx\r
4600   0001d 89 4d fc         mov     DWORD PTR _max_code$[ebp], ecx\r
4601   00020 c7 86 50 14 00\r
4602         00 00 00 00 00   mov     DWORD PTR [esi+5200], 0\r
4603   0002a c7 86 54 14 00\r
4604         00 3d 02 00 00   mov     DWORD PTR [esi+5204], 573 ; 0000023dH\r
4605   00034 85 d2            test    edx, edx\r
4606   00036 7e 36            jle     SHORT $LN22@build_tree\r
4607 $LL14@build_tree:\r
4608 \r
4609 ; 635  :         if (tree[n].Freq != 0) {\r
4610 \r
4611   00038 66 83 3c 87 00   cmp     WORD PTR [edi+eax*4], 0\r
4612   0003d 74 22            je      SHORT $LN11@build_tree\r
4613 \r
4614 ; 636  :             s->heap[++(s->heap_len)] = max_code = n;\r
4615 \r
4616   0003f ff 86 50 14 00\r
4617         00               inc     DWORD PTR [esi+5200]\r
4618   00045 8b 96 50 14 00\r
4619         00               mov     edx, DWORD PTR [esi+5200]\r
4620   0004b 89 84 96 5c 0b\r
4621         00 00            mov     DWORD PTR [esi+edx*4+2908], eax\r
4622   00052 89 45 fc         mov     DWORD PTR _max_code$[ebp], eax\r
4623 \r
4624 ; 637  :             s->depth[n] = 0;\r
4625 \r
4626   00055 c6 84 30 58 14\r
4627         00 00 00         mov     BYTE PTR [eax+esi+5208], 0\r
4628 \r
4629 ; 638  :         } else {\r
4630 \r
4631   0005d 8b c8            mov     ecx, eax\r
4632   0005f eb 07            jmp     SHORT $LN13@build_tree\r
4633 $LN11@build_tree:\r
4634 \r
4635 ; 639  :             tree[n].Len = 0;\r
4636 \r
4637   00061 33 d2            xor     edx, edx\r
4638   00063 66 89 54 87 02   mov     WORD PTR [edi+eax*4+2], dx\r
4639 $LN13@build_tree:\r
4640 \r
4641 ; 626  :     int node;          /* new node being created */\r
4642 ; 627  : \r
4643 ; 628  :     /* Construct the initial heap, with least frequent element in\r
4644 ; 629  :      * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\r
4645 ; 630  :      * heap[0] is not used.\r
4646 ; 631  :      */\r
4647 ; 632  :     s->heap_len = 0, s->heap_max = HEAP_SIZE;\r
4648 ; 633  : \r
4649 ; 634  :     for (n = 0; n < elems; n++) {\r
4650 \r
4651   00068 40               inc     eax\r
4652   00069 3b 45 f8         cmp     eax, DWORD PTR _elems$[ebp]\r
4653   0006c 7c ca            jl      SHORT $LL14@build_tree\r
4654 $LN22@build_tree:\r
4655 \r
4656 ; 640  :         }\r
4657 ; 641  :     }\r
4658 ; 642  : \r
4659 ; 643  :     /* The pkzip format requires that at least one distance code exists,\r
4660 ; 644  :      * and that at least one bit should be sent even if there is only one\r
4661 ; 645  :      * possible code. So to avoid special checks later on we force at least\r
4662 ; 646  :      * two codes of non zero frequency.\r
4663 ; 647  :      */\r
4664 ; 648  :     while (s->heap_len < 2) {\r
4665 \r
4666   0006e 83 be 50 14 00\r
4667         00 02            cmp     DWORD PTR [esi+5200], 2\r
4668   00075 7d 51            jge     SHORT $LN8@build_tree\r
4669 $LL9@build_tree:\r
4670 \r
4671 ; 649  :         node = s->heap[++(s->heap_len)] = (max_code < 2 ? ++max_code : 0);\r
4672 \r
4673   00077 83 f9 02         cmp     ecx, 2\r
4674   0007a 7d 05            jge     SHORT $LN17@build_tree\r
4675   0007c 41               inc     ecx\r
4676   0007d 8b c1            mov     eax, ecx\r
4677   0007f eb 02            jmp     SHORT $LN18@build_tree\r
4678 $LN17@build_tree:\r
4679   00081 33 c0            xor     eax, eax\r
4680 $LN18@build_tree:\r
4681   00083 ff 86 50 14 00\r
4682         00               inc     DWORD PTR [esi+5200]\r
4683   00089 8b 96 50 14 00\r
4684         00               mov     edx, DWORD PTR [esi+5200]\r
4685   0008f 89 84 96 5c 0b\r
4686         00 00            mov     DWORD PTR [esi+edx*4+2908], eax\r
4687 \r
4688 ; 650  :         tree[node].Freq = 1;\r
4689 \r
4690   00096 ba 01 00 00 00   mov     edx, 1\r
4691   0009b 66 89 14 87      mov     WORD PTR [edi+eax*4], dx\r
4692 \r
4693 ; 651  :         s->depth[node] = 0;\r
4694 \r
4695   0009f c6 84 06 58 14\r
4696         00 00 00         mov     BYTE PTR [esi+eax+5208], 0\r
4697 \r
4698 ; 652  :         s->opt_len--; if (stree) s->static_len -= stree[node].Len;\r
4699 \r
4700   000a7 ff 8e a8 16 00\r
4701         00               dec     DWORD PTR [esi+5800]\r
4702   000ad 85 db            test    ebx, ebx\r
4703   000af 74 0b            je      SHORT $LN7@build_tree\r
4704   000b1 0f b7 44 83 02   movzx   eax, WORD PTR [ebx+eax*4+2]\r
4705   000b6 29 86 ac 16 00\r
4706         00               sub     DWORD PTR [esi+5804], eax\r
4707 $LN7@build_tree:\r
4708 \r
4709 ; 640  :         }\r
4710 ; 641  :     }\r
4711 ; 642  : \r
4712 ; 643  :     /* The pkzip format requires that at least one distance code exists,\r
4713 ; 644  :      * and that at least one bit should be sent even if there is only one\r
4714 ; 645  :      * possible code. So to avoid special checks later on we force at least\r
4715 ; 646  :      * two codes of non zero frequency.\r
4716 ; 647  :      */\r
4717 ; 648  :     while (s->heap_len < 2) {\r
4718 \r
4719   000bc 83 be 50 14 00\r
4720         00 02            cmp     DWORD PTR [esi+5200], 2\r
4721   000c3 7c b2            jl      SHORT $LL9@build_tree\r
4722 \r
4723 ; 649  :         node = s->heap[++(s->heap_len)] = (max_code < 2 ? ++max_code : 0);\r
4724 \r
4725   000c5 89 4d fc         mov     DWORD PTR _max_code$[ebp], ecx\r
4726 $LN8@build_tree:\r
4727 \r
4728 ; 653  :         /* node is 0 or 1 so it does not have extra bits */\r
4729 ; 654  :     }\r
4730 ; 655  :     desc->max_code = max_code;\r
4731 \r
4732   000c8 8b 55 08         mov     edx, DWORD PTR _desc$[ebp]\r
4733   000cb 89 4a 04         mov     DWORD PTR [edx+4], ecx\r
4734 \r
4735 ; 656  : \r
4736 ; 657  :     /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\r
4737 ; 658  :      * establish sub-heaps of increasing lengths:\r
4738 ; 659  :      */\r
4739 ; 660  :     for (n = s->heap_len/2; n >= 1; n--) pqdownheap(s, tree, n);\r
4740 \r
4741   000ce 8b 86 50 14 00\r
4742         00               mov     eax, DWORD PTR [esi+5200]\r
4743   000d4 99               cdq\r
4744   000d5 2b c2            sub     eax, edx\r
4745   000d7 8b d8            mov     ebx, eax\r
4746   000d9 d1 fb            sar     ebx, 1\r
4747   000db 83 fb 01         cmp     ebx, 1\r
4748   000de 7c 11            jl      SHORT $LN4@build_tree\r
4749 $LL6@build_tree:\r
4750   000e0 53               push    ebx\r
4751   000e1 8b c6            mov     eax, esi\r
4752   000e3 e8 00 00 00 00   call    _pqdownheap\r
4753   000e8 4b               dec     ebx\r
4754   000e9 83 c4 04         add     esp, 4\r
4755   000ec 83 fb 01         cmp     ebx, 1\r
4756   000ef 7d ef            jge     SHORT $LL6@build_tree\r
4757 $LN4@build_tree:\r
4758 \r
4759 ; 661  : \r
4760 ; 662  :     /* Construct the Huffman tree by repeatedly combining the least two\r
4761 ; 663  :      * frequent nodes.\r
4762 ; 664  :      */\r
4763 ; 665  :     node = elems;              /* next internal node of the tree */\r
4764 \r
4765   000f1 8b 45 f8         mov     eax, DWORD PTR _elems$[ebp]\r
4766   000f4 89 45 f8         mov     DWORD PTR _node$[ebp], eax\r
4767   000f7 eb 07 8d a4 24\r
4768         00 00 00 00      npad    9\r
4769 $LL3@build_tree:\r
4770 \r
4771 ; 666  :     do {\r
4772 ; 667  :         pqremove(s, tree, n);  /* n = node of least frequency */\r
4773 \r
4774   00100 8b 86 50 14 00\r
4775         00               mov     eax, DWORD PTR [esi+5200]\r
4776   00106 8b 8c 86 5c 0b\r
4777         00 00            mov     ecx, DWORD PTR [esi+eax*4+2908]\r
4778   0010d 8b 9e 60 0b 00\r
4779         00               mov     ebx, DWORD PTR [esi+2912]\r
4780   00113 48               dec     eax\r
4781   00114 89 86 50 14 00\r
4782         00               mov     DWORD PTR [esi+5200], eax\r
4783   0011a 6a 01            push    1\r
4784   0011c 8b c6            mov     eax, esi\r
4785   0011e 89 8e 60 0b 00\r
4786         00               mov     DWORD PTR [esi+2912], ecx\r
4787   00124 e8 00 00 00 00   call    _pqdownheap\r
4788 \r
4789 ; 668  :         m = s->heap[SMALLEST]; /* m = node of next least frequency */\r
4790 \r
4791   00129 8b 86 60 0b 00\r
4792         00               mov     eax, DWORD PTR [esi+2912]\r
4793 \r
4794 ; 669  : \r
4795 ; 670  :         s->heap[--(s->heap_max)] = n; /* keep the nodes sorted by frequency */\r
4796 \r
4797   0012f 83 ca ff         or      edx, -1\r
4798   00132 01 96 54 14 00\r
4799         00               add     DWORD PTR [esi+5204], edx\r
4800   00138 8b 8e 54 14 00\r
4801         00               mov     ecx, DWORD PTR [esi+5204]\r
4802   0013e 89 9c 8e 5c 0b\r
4803         00 00            mov     DWORD PTR [esi+ecx*4+2908], ebx\r
4804 \r
4805 ; 671  :         s->heap[--(s->heap_max)] = m;\r
4806 \r
4807   00145 01 96 54 14 00\r
4808         00               add     DWORD PTR [esi+5204], edx\r
4809   0014b 8b 8e 54 14 00\r
4810         00               mov     ecx, DWORD PTR [esi+5204]\r
4811   00151 89 84 8e 5c 0b\r
4812         00 00            mov     DWORD PTR [esi+ecx*4+2908], eax\r
4813 \r
4814 ; 672  : \r
4815 ; 673  :         /* Create a new node father of n and m */\r
4816 ; 674  :         tree[node].Freq = tree[n].Freq + tree[m].Freq;\r
4817 \r
4818   00158 66 8b 14 87      mov     dx, WORD PTR [edi+eax*4]\r
4819   0015c 66 03 14 9f      add     dx, WORD PTR [edi+ebx*4]\r
4820   00160 8b 4d f8         mov     ecx, DWORD PTR _node$[ebp]\r
4821   00163 66 89 14 8f      mov     WORD PTR [edi+ecx*4], dx\r
4822 \r
4823 ; 675  :         s->depth[node] = (uch)((s->depth[n] >= s->depth[m] ?\r
4824 ; 676  :                                 s->depth[n] : s->depth[m]) + 1);\r
4825 \r
4826   00167 8a 94 1e 58 14\r
4827         00 00            mov     dl, BYTE PTR [esi+ebx+5208]\r
4828   0016e 8a 8c 06 58 14\r
4829         00 00            mov     cl, BYTE PTR [esi+eax+5208]\r
4830   00175 83 c4 04         add     esp, 4\r
4831   00178 3a d1            cmp     dl, cl\r
4832   0017a 0f b6 d2         movzx   edx, dl\r
4833   0017d 73 03            jae     SHORT $LN20@build_tree\r
4834   0017f 0f b6 d1         movzx   edx, cl\r
4835 $LN20@build_tree:\r
4836   00182 8b 4d f8         mov     ecx, DWORD PTR _node$[ebp]\r
4837   00185 fe c2            inc     dl\r
4838   00187 88 94 0e 58 14\r
4839         00 00            mov     BYTE PTR [esi+ecx+5208], dl\r
4840 \r
4841 ; 677  :         tree[n].Dad = tree[m].Dad = (ush)node;\r
4842 \r
4843   0018e 0f b7 d1         movzx   edx, cx\r
4844   00191 66 89 54 87 02   mov     WORD PTR [edi+eax*4+2], dx\r
4845   00196 66 89 54 9f 02   mov     WORD PTR [edi+ebx*4+2], dx\r
4846 \r
4847 ; 678  : #ifdef DUMP_BL_TREE\r
4848 ; 679  :         if (tree == s->bl_tree) {\r
4849 ; 680  :             fprintf(stderr,"\nnode %d(%d), sons %d(%d) %d(%d)",\r
4850 ; 681  :                     node, tree[node].Freq, n, tree[n].Freq, m, tree[m].Freq);\r
4851 ; 682  :         }\r
4852 ; 683  : #endif\r
4853 ; 684  :         /* and insert the new node in the heap */\r
4854 ; 685  :         s->heap[SMALLEST] = node++;\r
4855 \r
4856   0019b 89 8e 60 0b 00\r
4857         00               mov     DWORD PTR [esi+2912], ecx\r
4858   001a1 41               inc     ecx\r
4859 \r
4860 ; 686  :         pqdownheap(s, tree, SMALLEST);\r
4861 \r
4862   001a2 6a 01            push    1\r
4863   001a4 8b c6            mov     eax, esi\r
4864   001a6 89 4d f8         mov     DWORD PTR _node$[ebp], ecx\r
4865   001a9 e8 00 00 00 00   call    _pqdownheap\r
4866   001ae 83 c4 04         add     esp, 4\r
4867 \r
4868 ; 687  : \r
4869 ; 688  :     } while (s->heap_len >= 2);\r
4870 \r
4871   001b1 83 be 50 14 00\r
4872         00 02            cmp     DWORD PTR [esi+5200], 2\r
4873   001b8 0f 8d 42 ff ff\r
4874         ff               jge     $LL3@build_tree\r
4875 \r
4876 ; 689  : \r
4877 ; 690  :     s->heap[--(s->heap_max)] = s->heap[SMALLEST];\r
4878 \r
4879   001be ff 8e 54 14 00\r
4880         00               dec     DWORD PTR [esi+5204]\r
4881   001c4 8b 86 54 14 00\r
4882         00               mov     eax, DWORD PTR [esi+5204]\r
4883   001ca 8b 96 60 0b 00\r
4884         00               mov     edx, DWORD PTR [esi+2912]\r
4885 \r
4886 ; 691  : \r
4887 ; 692  :     /* At this point, the fields freq and dad are set. We can now\r
4888 ; 693  :      * generate the bit lengths.\r
4889 ; 694  :      */\r
4890 ; 695  :     gen_bitlen(s, (tree_desc *)desc);\r
4891 \r
4892   001d0 8b 4d 08         mov     ecx, DWORD PTR _desc$[ebp]\r
4893   001d3 89 94 86 5c 0b\r
4894         00 00            mov     DWORD PTR [esi+eax*4+2908], edx\r
4895   001da 8b c6            mov     eax, esi\r
4896   001dc e8 00 00 00 00   call    _gen_bitlen\r
4897 \r
4898 ; 696  : \r
4899 ; 697  :     /* The field len is now set, we can generate the bit codes */\r
4900 ; 698  :     gen_codes ((ct_data *)tree, max_code, s->bl_count);\r
4901 \r
4902   001e1 8b 5d fc         mov     ebx, DWORD PTR _max_code$[ebp]\r
4903   001e4 8d 96 3c 0b 00\r
4904         00               lea     edx, DWORD PTR [esi+2876]\r
4905   001ea e8 00 00 00 00   call    _gen_codes\r
4906   001ef 5f               pop     edi\r
4907   001f0 5b               pop     ebx\r
4908 \r
4909 ; 699  : }\r
4910 \r
4911   001f1 8b e5            mov     esp, ebp\r
4912   001f3 5d               pop     ebp\r
4913   001f4 c3               ret     0\r
4914 _build_tree ENDP\r
4915 _TEXT   ENDS\r
4916 PUBLIC  __tr_init\r
4917 ; Function compile flags: /Ogtp\r
4918 ;       COMDAT __tr_init\r
4919 _TEXT   SEGMENT\r
4920 __tr_init PROC                                          ; COMDAT\r
4921 ; _s$ = edx\r
4922 \r
4923 ; 384  :     tr_static_init();\r
4924 ; 385  : \r
4925 ; 386  :     s->l_desc.dyn_tree = s->dyn_ltree;\r
4926 \r
4927   00000 8d 82 94 00 00\r
4928         00               lea     eax, DWORD PTR [edx+148]\r
4929 \r
4930 ; 387  :     s->l_desc.stat_desc = &static_l_desc;\r
4931 ; 388  : \r
4932 ; 389  :     s->d_desc.dyn_tree = s->dyn_dtree;\r
4933 \r
4934   00006 8d 8a 88 09 00\r
4935         00               lea     ecx, DWORD PTR [edx+2440]\r
4936   0000c 89 82 18 0b 00\r
4937         00               mov     DWORD PTR [edx+2840], eax\r
4938   00012 89 8a 24 0b 00\r
4939         00               mov     DWORD PTR [edx+2852], ecx\r
4940 \r
4941 ; 390  :     s->d_desc.stat_desc = &static_d_desc;\r
4942 ; 391  : \r
4943 ; 392  :     s->bl_desc.dyn_tree = s->bl_tree;\r
4944 ; 393  :     s->bl_desc.stat_desc = &static_bl_desc;\r
4945 ; 394  : \r
4946 ; 395  :     s->bi_buf = 0;\r
4947 \r
4948   00018 33 c9            xor     ecx, ecx\r
4949   0001a 8d 82 7c 0a 00\r
4950         00               lea     eax, DWORD PTR [edx+2684]\r
4951   00020 c7 82 20 0b 00\r
4952         00 00 00 00 00   mov     DWORD PTR [edx+2848], OFFSET _static_l_desc\r
4953   0002a c7 82 2c 0b 00\r
4954         00 00 00 00 00   mov     DWORD PTR [edx+2860], OFFSET _static_d_desc\r
4955   00034 89 82 30 0b 00\r
4956         00               mov     DWORD PTR [edx+2864], eax\r
4957   0003a c7 82 38 0b 00\r
4958         00 00 00 00 00   mov     DWORD PTR [edx+2872], OFFSET _static_bl_desc\r
4959   00044 66 89 8a b8 16\r
4960         00 00            mov     WORD PTR [edx+5816], cx\r
4961 \r
4962 ; 396  :     s->bi_valid = 0;\r
4963 \r
4964   0004b 89 8a bc 16 00\r
4965         00               mov     DWORD PTR [edx+5820], ecx\r
4966 \r
4967 ; 397  : #ifdef DEBUG\r
4968 ; 398  :     s->compressed_len = 0L;\r
4969 ; 399  :     s->bits_sent = 0L;\r
4970 ; 400  : #endif\r
4971 ; 401  : \r
4972 ; 402  :     /* Initialize the first block of the first file: */\r
4973 ; 403  :     init_block(s);\r
4974 \r
4975   00051 e9 00 00 00 00   jmp     _init_block\r
4976 __tr_init ENDP\r
4977 ; Function compile flags: /Ogtp\r
4978 ;       COMDAT _build_bl_tree\r
4979 _TEXT   SEGMENT\r
4980 _build_bl_tree PROC                                     ; COMDAT\r
4981 ; _s$ = eax\r
4982 \r
4983 ; 803  : {\r
4984 \r
4985   00000 56               push    esi\r
4986   00001 8b f0            mov     esi, eax\r
4987 \r
4988 ; 804  :     int max_blindex;  /* index of last bit length code of non zero freq */\r
4989 ; 805  : \r
4990 ; 806  :     /* Determine the bit length frequencies for literal and distance trees */\r
4991 ; 807  :     scan_tree(s, (ct_data *)s->dyn_ltree, s->l_desc.max_code);\r
4992 \r
4993   00003 8b 86 1c 0b 00\r
4994         00               mov     eax, DWORD PTR [esi+2844]\r
4995   00009 8d 8e 94 00 00\r
4996         00               lea     ecx, DWORD PTR [esi+148]\r
4997   0000f 56               push    esi\r
4998   00010 e8 00 00 00 00   call    _scan_tree\r
4999 \r
5000 ; 808  :     scan_tree(s, (ct_data *)s->dyn_dtree, s->d_desc.max_code);\r
5001 \r
5002   00015 8b 86 28 0b 00\r
5003         00               mov     eax, DWORD PTR [esi+2856]\r
5004   0001b 8d 8e 88 09 00\r
5005         00               lea     ecx, DWORD PTR [esi+2440]\r
5006   00021 56               push    esi\r
5007   00022 e8 00 00 00 00   call    _scan_tree\r
5008 \r
5009 ; 809  : \r
5010 ; 810  :     /* Build the bit length tree: */\r
5011 ; 811  :     build_tree(s, (tree_desc *)(&(s->bl_desc)));\r
5012 \r
5013   00027 8d 86 30 0b 00\r
5014         00               lea     eax, DWORD PTR [esi+2864]\r
5015   0002d 50               push    eax\r
5016   0002e e8 00 00 00 00   call    _build_tree\r
5017   00033 83 c4 0c         add     esp, 12                        ; 0000000cH\r
5018 \r
5019 ; 812  :     /* opt_len now includes the length of the tree representations, except\r
5020 ; 813  :      * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\r
5021 ; 814  :      */\r
5022 ; 815  : \r
5023 ; 816  :     /* Determine the number of bit length codes to send. The pkzip format\r
5024 ; 817  :      * requires that at least 4 bit length codes be sent. (appnote.txt says\r
5025 ; 818  :      * 3 but the actual value used is 4.)\r
5026 ; 819  :      */\r
5027 ; 820  :     for (max_blindex = BL_CODES-1; max_blindex >= 3; max_blindex--) {\r
5028 \r
5029   00036 b8 12 00 00 00   mov     eax, 18                        ; 00000012H\r
5030   0003b eb 03 8d 49 00   npad    5\r
5031 $LL4@build_bl_t:\r
5032 \r
5033 ; 821  :         if (s->bl_tree[bl_order[max_blindex]].Len != 0) break;\r
5034 \r
5035   00040 0f b6 88 00 00\r
5036         00 00            movzx   ecx, BYTE PTR _bl_order[eax]\r
5037   00047 66 83 bc 8e 7e\r
5038         0a 00 00 00      cmp     WORD PTR [esi+ecx*4+2686], 0\r
5039   00050 75 69            jne     SHORT $LN8@build_bl_t\r
5040   00052 0f b6 90 ff ff\r
5041         ff ff            movzx   edx, BYTE PTR _bl_order[eax-1]\r
5042   00059 66 83 bc 96 7e\r
5043         0a 00 00 00      cmp     WORD PTR [esi+edx*4+2686], 0\r
5044   00062 75 38            jne     SHORT $LN10@build_bl_t\r
5045   00064 0f b6 88 fe ff\r
5046         ff ff            movzx   ecx, BYTE PTR _bl_order[eax-2]\r
5047   0006b 66 83 bc 8e 7e\r
5048         0a 00 00 00      cmp     WORD PTR [esi+ecx*4+2686], 0\r
5049   00074 75 33            jne     SHORT $LN11@build_bl_t\r
5050   00076 0f b6 90 fd ff\r
5051         ff ff            movzx   edx, BYTE PTR _bl_order[eax-3]\r
5052   0007d 66 83 bc 96 7e\r
5053         0a 00 00 00      cmp     WORD PTR [esi+edx*4+2686], 0\r
5054   00086 75 30            jne     SHORT $LN12@build_bl_t\r
5055 \r
5056 ; 812  :     /* opt_len now includes the length of the tree representations, except\r
5057 ; 813  :      * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\r
5058 ; 814  :      */\r
5059 ; 815  : \r
5060 ; 816  :     /* Determine the number of bit length codes to send. The pkzip format\r
5061 ; 817  :      * requires that at least 4 bit length codes be sent. (appnote.txt says\r
5062 ; 818  :      * 3 but the actual value used is 4.)\r
5063 ; 819  :      */\r
5064 ; 820  :     for (max_blindex = BL_CODES-1; max_blindex >= 3; max_blindex--) {\r
5065 \r
5066   00088 83 e8 04         sub     eax, 4\r
5067   0008b 83 f8 03         cmp     eax, 3\r
5068   0008e 7d b0            jge     SHORT $LL4@build_bl_t\r
5069 \r
5070 ; 822  :     }\r
5071 ; 823  :     /* Update opt_len to include the bit length tree and counts */\r
5072 ; 824  :     s->opt_len += 3*(max_blindex+1) + 5+5+4;\r
5073 \r
5074   00090 8d 4c 40 11      lea     ecx, DWORD PTR [eax+eax*2+17]\r
5075   00094 01 8e a8 16 00\r
5076         00               add     DWORD PTR [esi+5800], ecx\r
5077   0009a 5e               pop     esi\r
5078 \r
5079 ; 825  :     Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld",\r
5080 ; 826  :             s->opt_len, s->static_len));\r
5081 ; 827  : \r
5082 ; 828  :     return max_blindex;\r
5083 ; 829  : }\r
5084 \r
5085   0009b c3               ret     0\r
5086 $LN10@build_bl_t:\r
5087 \r
5088 ; 821  :         if (s->bl_tree[bl_order[max_blindex]].Len != 0) break;\r
5089 \r
5090   0009c 48               dec     eax\r
5091 \r
5092 ; 822  :     }\r
5093 ; 823  :     /* Update opt_len to include the bit length tree and counts */\r
5094 ; 824  :     s->opt_len += 3*(max_blindex+1) + 5+5+4;\r
5095 \r
5096   0009d 8d 4c 40 11      lea     ecx, DWORD PTR [eax+eax*2+17]\r
5097   000a1 01 8e a8 16 00\r
5098         00               add     DWORD PTR [esi+5800], ecx\r
5099   000a7 5e               pop     esi\r
5100 \r
5101 ; 825  :     Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld",\r
5102 ; 826  :             s->opt_len, s->static_len));\r
5103 ; 827  : \r
5104 ; 828  :     return max_blindex;\r
5105 ; 829  : }\r
5106 \r
5107   000a8 c3               ret     0\r
5108 $LN11@build_bl_t:\r
5109 \r
5110 ; 821  :         if (s->bl_tree[bl_order[max_blindex]].Len != 0) break;\r
5111 \r
5112   000a9 83 e8 02         sub     eax, 2\r
5113 \r
5114 ; 822  :     }\r
5115 ; 823  :     /* Update opt_len to include the bit length tree and counts */\r
5116 ; 824  :     s->opt_len += 3*(max_blindex+1) + 5+5+4;\r
5117 \r
5118   000ac 8d 4c 40 11      lea     ecx, DWORD PTR [eax+eax*2+17]\r
5119   000b0 01 8e a8 16 00\r
5120         00               add     DWORD PTR [esi+5800], ecx\r
5121   000b6 5e               pop     esi\r
5122 \r
5123 ; 825  :     Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld",\r
5124 ; 826  :             s->opt_len, s->static_len));\r
5125 ; 827  : \r
5126 ; 828  :     return max_blindex;\r
5127 ; 829  : }\r
5128 \r
5129   000b7 c3               ret     0\r
5130 $LN12@build_bl_t:\r
5131 \r
5132 ; 821  :         if (s->bl_tree[bl_order[max_blindex]].Len != 0) break;\r
5133 \r
5134   000b8 83 e8 03         sub     eax, 3\r
5135 $LN8@build_bl_t:\r
5136 \r
5137 ; 822  :     }\r
5138 ; 823  :     /* Update opt_len to include the bit length tree and counts */\r
5139 ; 824  :     s->opt_len += 3*(max_blindex+1) + 5+5+4;\r
5140 \r
5141   000bb 8d 4c 40 11      lea     ecx, DWORD PTR [eax+eax*2+17]\r
5142   000bf 01 8e a8 16 00\r
5143         00               add     DWORD PTR [esi+5800], ecx\r
5144   000c5 5e               pop     esi\r
5145 \r
5146 ; 825  :     Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld",\r
5147 ; 826  :             s->opt_len, s->static_len));\r
5148 ; 827  : \r
5149 ; 828  :     return max_blindex;\r
5150 ; 829  : }\r
5151 \r
5152   000c6 c3               ret     0\r
5153 _build_bl_tree ENDP\r
5154 PUBLIC  __tr_flush_block\r
5155 ; Function compile flags: /Ogtp\r
5156 ;       COMDAT __tr_flush_block\r
5157 _TEXT   SEGMENT\r
5158 _max_blindex$ = -4                                      ; size = 4\r
5159 _buf$ = 8                                               ; size = 4\r
5160 _last$ = 12                                             ; size = 4\r
5161 __tr_flush_block PROC                                   ; COMDAT\r
5162 ; _s$ = ecx\r
5163 ; _stored_len$ = eax\r
5164 \r
5165 ; 912  : {\r
5166 \r
5167   00000 55               push    ebp\r
5168   00001 8b ec            mov     ebp, esp\r
5169   00003 51               push    ecx\r
5170   00004 53               push    ebx\r
5171   00005 56               push    esi\r
5172   00006 8b f1            mov     esi, ecx\r
5173 \r
5174 ; 913  :     ulg opt_lenb, static_lenb; /* opt_len and static_len in bytes */\r
5175 ; 914  :     int max_blindex = 0;  /* index of last bit length code of non zero freq */\r
5176 ; 915  : \r
5177 ; 916  :     /* Build the Huffman trees unless a stored block is forced */\r
5178 ; 917  :     if (s->level > 0) {\r
5179 \r
5180   00008 83 be 84 00 00\r
5181         00 00            cmp     DWORD PTR [esi+132], 0\r
5182   0000f 57               push    edi\r
5183   00010 8b d8            mov     ebx, eax\r
5184   00012 c7 45 fc 00 00\r
5185         00 00            mov     DWORD PTR _max_blindex$[ebp], 0\r
5186   00019 7e 53            jle     SHORT $LN14@tr_flush_b\r
5187 \r
5188 ; 918  : \r
5189 ; 919  :         /* Check if the file is binary or text */\r
5190 ; 920  :         if (s->strm->data_type == Z_UNKNOWN)\r
5191 \r
5192   0001b 8b 3e            mov     edi, DWORD PTR [esi]\r
5193   0001d 83 7f 2c 02      cmp     DWORD PTR [edi+44], 2\r
5194   00021 75 08            jne     SHORT $LN13@tr_flush_b\r
5195 \r
5196 ; 921  :             s->strm->data_type = detect_data_type(s);\r
5197 \r
5198   00023 e8 00 00 00 00   call    _detect_data_type\r
5199   00028 89 47 2c         mov     DWORD PTR [edi+44], eax\r
5200 $LN13@tr_flush_b:\r
5201 \r
5202 ; 922  : \r
5203 ; 923  :         /* Construct the literal and distance trees */\r
5204 ; 924  :         build_tree(s, (tree_desc *)(&(s->l_desc)));\r
5205 \r
5206   0002b 8d 86 18 0b 00\r
5207         00               lea     eax, DWORD PTR [esi+2840]\r
5208   00031 50               push    eax\r
5209   00032 e8 00 00 00 00   call    _build_tree\r
5210 \r
5211 ; 925  :         Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len,\r
5212 ; 926  :                 s->static_len));\r
5213 ; 927  : \r
5214 ; 928  :         build_tree(s, (tree_desc *)(&(s->d_desc)));\r
5215 \r
5216   00037 8d 8e 24 0b 00\r
5217         00               lea     ecx, DWORD PTR [esi+2852]\r
5218   0003d 51               push    ecx\r
5219   0003e e8 00 00 00 00   call    _build_tree\r
5220   00043 83 c4 08         add     esp, 8\r
5221 \r
5222 ; 929  :         Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len,\r
5223 ; 930  :                 s->static_len));\r
5224 ; 931  :         /* At this point, opt_len and static_len are the total bit lengths of\r
5225 ; 932  :          * the compressed block data, excluding the tree representations.\r
5226 ; 933  :          */\r
5227 ; 934  : \r
5228 ; 935  :         /* Build the bit length tree for the above two trees, and get the index\r
5229 ; 936  :          * in bl_order of the last bit length code to send.\r
5230 ; 937  :          */\r
5231 ; 938  :         max_blindex = build_bl_tree(s);\r
5232 \r
5233   00046 8b c6            mov     eax, esi\r
5234   00048 e8 00 00 00 00   call    _build_bl_tree\r
5235 \r
5236 ; 939  : \r
5237 ; 940  :         /* Determine the best encoding. Compute the block lengths in bytes. */\r
5238 ; 941  :         opt_lenb = (s->opt_len+3+7)>>3;\r
5239 \r
5240   0004d 8b 96 a8 16 00\r
5241         00               mov     edx, DWORD PTR [esi+5800]\r
5242 \r
5243 ; 942  :         static_lenb = (s->static_len+3+7)>>3;\r
5244 \r
5245   00053 8b 8e ac 16 00\r
5246         00               mov     ecx, DWORD PTR [esi+5804]\r
5247   00059 83 c2 0a         add     edx, 10                        ; 0000000aH\r
5248   0005c 83 c1 0a         add     ecx, 10                        ; 0000000aH\r
5249   0005f c1 ea 03         shr     edx, 3\r
5250   00062 c1 e9 03         shr     ecx, 3\r
5251   00065 89 45 fc         mov     DWORD PTR _max_blindex$[ebp], eax\r
5252 \r
5253 ; 943  : \r
5254 ; 944  :         Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",\r
5255 ; 945  :                 opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\r
5256 ; 946  :                 s->last_lit));\r
5257 ; 947  : \r
5258 ; 948  :         if (static_lenb <= opt_lenb) opt_lenb = static_lenb;\r
5259 \r
5260   00068 3b ca            cmp     ecx, edx\r
5261   0006a 77 07            ja      SHORT $LN17@tr_flush_b\r
5262 \r
5263 ; 949  : \r
5264 ; 950  :     } else {\r
5265 \r
5266   0006c eb 03            jmp     SHORT $LN18@tr_flush_b\r
5267 $LN14@tr_flush_b:\r
5268 \r
5269 ; 951  :         Assert(buf != (char*)0, "lost buf");\r
5270 ; 952  :         opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\r
5271 \r
5272   0006e 8d 4b 05         lea     ecx, DWORD PTR [ebx+5]\r
5273 $LN18@tr_flush_b:\r
5274   00071 8b d1            mov     edx, ecx\r
5275 $LN17@tr_flush_b:\r
5276 \r
5277 ; 953  :     }\r
5278 ; 954  : \r
5279 ; 955  : #ifdef FORCE_STORED\r
5280 ; 956  :     if (buf != (char*)0) { /* force stored block */\r
5281 ; 957  : #else\r
5282 ; 958  :     if (stored_len+4 <= opt_lenb && buf != (char*)0) {\r
5283 \r
5284   00073 8d 43 04         lea     eax, DWORD PTR [ebx+4]\r
5285   00076 3b c2            cmp     eax, edx\r
5286   00078 77 18            ja      SHORT $LN10@tr_flush_b\r
5287   0007a 8b 45 08         mov     eax, DWORD PTR _buf$[ebp]\r
5288   0007d 85 c0            test    eax, eax\r
5289   0007f 74 11            je      SHORT $LN10@tr_flush_b\r
5290 \r
5291 ; 959  :                        /* 4: two words for the lengths */\r
5292 ; 960  : #endif\r
5293 ; 961  :         /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\r
5294 ; 962  :          * Otherwise we can't have processed more than WSIZE input bytes since\r
5295 ; 963  :          * the last block flush, because compression would have been\r
5296 ; 964  :          * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\r
5297 ; 965  :          * transform a block into a stored block.\r
5298 ; 966  :          */\r
5299 ; 967  :         _tr_stored_block(s, buf, stored_len, last);\r
5300 \r
5301   00081 8b 4d 0c         mov     ecx, DWORD PTR _last$[ebp]\r
5302   00084 53               push    ebx\r
5303   00085 50               push    eax\r
5304   00086 8b c6            mov     eax, esi\r
5305   00088 e8 00 00 00 00   call    __tr_stored_block\r
5306   0008d e9 55 01 00 00   jmp     $LN19@tr_flush_b\r
5307 $LN10@tr_flush_b:\r
5308 \r
5309 ; 968  : \r
5310 ; 969  : #ifdef FORCE_STATIC\r
5311 ; 970  :     } else if (static_lenb >= 0) { /* force static trees */\r
5312 ; 971  : #else\r
5313 ; 972  :     } else if (s->strategy == Z_FIXED || static_lenb == opt_lenb) {\r
5314 \r
5315   00092 83 be 88 00 00\r
5316         00 04            cmp     DWORD PTR [esi+136], 4\r
5317   00099 0f 84 bc 00 00\r
5318         00               je      $LN7@tr_flush_b\r
5319   0009f 3b ca            cmp     ecx, edx\r
5320   000a1 0f 84 b4 00 00\r
5321         00               je      $LN7@tr_flush_b\r
5322 \r
5323 ; 976  : #ifdef DEBUG\r
5324 ; 977  :         s->compressed_len += 3 + s->static_len;\r
5325 ; 978  : #endif\r
5326 ; 979  :     } else {\r
5327 ; 980  :         send_bits(s, (DYN_TREES<<1)+last, 3);\r
5328 \r
5329   000a7 8b 55 0c         mov     edx, DWORD PTR _last$[ebp]\r
5330   000aa 8b 8e bc 16 00\r
5331         00               mov     ecx, DWORD PTR [esi+5820]\r
5332   000b0 83 c2 04         add     edx, 4\r
5333   000b3 bf 01 00 00 00   mov     edi, 1\r
5334   000b8 83 f9 0d         cmp     ecx, 13                        ; 0000000dH\r
5335   000bb 7e 52            jle     SHORT $LN3@tr_flush_b\r
5336   000bd 66 8b c2         mov     ax, dx\r
5337   000c0 66 d3 e0         shl     ax, cl\r
5338   000c3 8b 4e 14         mov     ecx, DWORD PTR [esi+20]\r
5339   000c6 66 09 86 b8 16\r
5340         00 00            or      WORD PTR [esi+5816], ax\r
5341   000cd 0f b6 9e b8 16\r
5342         00 00            movzx   ebx, BYTE PTR [esi+5816]\r
5343   000d4 8b 46 08         mov     eax, DWORD PTR [esi+8]\r
5344   000d7 88 1c 01         mov     BYTE PTR [ecx+eax], bl\r
5345   000da 01 7e 14         add     DWORD PTR [esi+20], edi\r
5346   000dd 0f b6 9e b9 16\r
5347         00 00            movzx   ebx, BYTE PTR [esi+5817]\r
5348   000e4 8b 4e 14         mov     ecx, DWORD PTR [esi+20]\r
5349   000e7 8b 46 08         mov     eax, DWORD PTR [esi+8]\r
5350   000ea 88 1c 01         mov     BYTE PTR [ecx+eax], bl\r
5351   000ed 8b 9e bc 16 00\r
5352         00               mov     ebx, DWORD PTR [esi+5820]\r
5353   000f3 01 7e 14         add     DWORD PTR [esi+20], edi\r
5354   000f6 b1 10            mov     cl, 16                 ; 00000010H\r
5355   000f8 2a cb            sub     cl, bl\r
5356   000fa 66 d3 ea         shr     dx, cl\r
5357   000fd 83 c3 f3         add     ebx, -13               ; fffffff3H\r
5358   00100 89 9e bc 16 00\r
5359         00               mov     DWORD PTR [esi+5820], ebx\r
5360   00106 66 89 96 b8 16\r
5361         00 00            mov     WORD PTR [esi+5816], dx\r
5362   0010d eb 13            jmp     SHORT $LN2@tr_flush_b\r
5363 $LN3@tr_flush_b:\r
5364   0010f 66 d3 e2         shl     dx, cl\r
5365   00112 66 09 96 b8 16\r
5366         00 00            or      WORD PTR [esi+5816], dx\r
5367   00119 83 c1 03         add     ecx, 3\r
5368   0011c 89 8e bc 16 00\r
5369         00               mov     DWORD PTR [esi+5820], ecx\r
5370 $LN2@tr_flush_b:\r
5371 \r
5372 ; 981  :         send_all_trees(s, s->l_desc.max_code+1, s->d_desc.max_code+1,\r
5373 ; 982  :                        max_blindex+1);\r
5374 \r
5375   00122 8b 45 fc         mov     eax, DWORD PTR _max_blindex$[ebp]\r
5376   00125 8b 8e 28 0b 00\r
5377         00               mov     ecx, DWORD PTR [esi+2856]\r
5378   0012b 8b 96 1c 0b 00\r
5379         00               mov     edx, DWORD PTR [esi+2844]\r
5380   00131 40               inc     eax\r
5381   00132 50               push    eax\r
5382   00133 03 cf            add     ecx, edi\r
5383   00135 51               push    ecx\r
5384   00136 03 d7            add     edx, edi\r
5385   00138 52               push    edx\r
5386   00139 e8 00 00 00 00   call    _send_all_trees\r
5387 \r
5388 ; 983  :         compress_block(s, (ct_data *)s->dyn_ltree, (ct_data *)s->dyn_dtree);\r
5389 \r
5390   0013e 8d 86 88 09 00\r
5391         00               lea     eax, DWORD PTR [esi+2440]\r
5392   00144 50               push    eax\r
5393   00145 8d 8e 94 00 00\r
5394         00               lea     ecx, DWORD PTR [esi+148]\r
5395   0014b 51               push    ecx\r
5396   0014c 8b c6            mov     eax, esi\r
5397   0014e e8 00 00 00 00   call    _compress_block\r
5398   00153 83 c4 14         add     esp, 20                        ; 00000014H\r
5399   00156 e9 8f 00 00 00   jmp     $LN4@tr_flush_b\r
5400 $LN7@tr_flush_b:\r
5401 \r
5402 ; 973  : #endif\r
5403 ; 974  :         send_bits(s, (STATIC_TREES<<1)+last, 3);\r
5404 \r
5405   0015b 8b 45 0c         mov     eax, DWORD PTR _last$[ebp]\r
5406   0015e 8b 8e bc 16 00\r
5407         00               mov     ecx, DWORD PTR [esi+5820]\r
5408   00164 83 c0 02         add     eax, 2\r
5409   00167 83 f9 0d         cmp     ecx, 13                        ; 0000000dH\r
5410   0016a 7e 57            jle     SHORT $LN6@tr_flush_b\r
5411   0016c 66 8b d0         mov     dx, ax\r
5412   0016f 66 d3 e2         shl     dx, cl\r
5413   00172 8b 4e 14         mov     ecx, DWORD PTR [esi+20]\r
5414   00175 bf 01 00 00 00   mov     edi, 1\r
5415   0017a 66 09 96 b8 16\r
5416         00 00            or      WORD PTR [esi+5816], dx\r
5417   00181 0f b6 9e b8 16\r
5418         00 00            movzx   ebx, BYTE PTR [esi+5816]\r
5419   00188 8b 56 08         mov     edx, DWORD PTR [esi+8]\r
5420   0018b 88 1c 11         mov     BYTE PTR [ecx+edx], bl\r
5421   0018e 01 7e 14         add     DWORD PTR [esi+20], edi\r
5422   00191 0f b6 9e b9 16\r
5423         00 00            movzx   ebx, BYTE PTR [esi+5817]\r
5424   00198 8b 4e 14         mov     ecx, DWORD PTR [esi+20]\r
5425   0019b 8b 56 08         mov     edx, DWORD PTR [esi+8]\r
5426   0019e 88 1c 11         mov     BYTE PTR [ecx+edx], bl\r
5427   001a1 8b 96 bc 16 00\r
5428         00               mov     edx, DWORD PTR [esi+5820]\r
5429   001a7 01 7e 14         add     DWORD PTR [esi+20], edi\r
5430   001aa b1 10            mov     cl, 16                 ; 00000010H\r
5431   001ac 2a ca            sub     cl, dl\r
5432   001ae 66 d3 e8         shr     ax, cl\r
5433   001b1 83 c2 f3         add     edx, -13               ; fffffff3H\r
5434   001b4 89 96 bc 16 00\r
5435         00               mov     DWORD PTR [esi+5820], edx\r
5436   001ba 66 89 86 b8 16\r
5437         00 00            mov     WORD PTR [esi+5816], ax\r
5438   001c1 eb 13            jmp     SHORT $LN5@tr_flush_b\r
5439 $LN6@tr_flush_b:\r
5440   001c3 66 d3 e0         shl     ax, cl\r
5441   001c6 66 09 86 b8 16\r
5442         00 00            or      WORD PTR [esi+5816], ax\r
5443   001cd 83 c1 03         add     ecx, 3\r
5444   001d0 89 8e bc 16 00\r
5445         00               mov     DWORD PTR [esi+5820], ecx\r
5446 $LN5@tr_flush_b:\r
5447 \r
5448 ; 975  :         compress_block(s, (ct_data *)static_ltree, (ct_data *)static_dtree);\r
5449 \r
5450   001d6 68 00 00 00 00   push    OFFSET _static_dtree\r
5451   001db 68 00 00 00 00   push    OFFSET _static_ltree\r
5452   001e0 8b c6            mov     eax, esi\r
5453   001e2 e8 00 00 00 00   call    _compress_block\r
5454 $LN19@tr_flush_b:\r
5455   001e7 83 c4 08         add     esp, 8\r
5456 $LN4@tr_flush_b:\r
5457 \r
5458 ; 984  : #ifdef DEBUG\r
5459 ; 985  :         s->compressed_len += 3 + s->opt_len;\r
5460 ; 986  : #endif\r
5461 ; 987  :     }\r
5462 ; 988  :     Assert (s->compressed_len == s->bits_sent, "bad compressed size");\r
5463 ; 989  :     /* The above check is made mod 2^32, for files larger than 512 MB\r
5464 ; 990  :      * and uLong implemented on 32 bits.\r
5465 ; 991  :      */\r
5466 ; 992  :     init_block(s);\r
5467 \r
5468   001ea 8b d6            mov     edx, esi\r
5469   001ec e8 00 00 00 00   call    _init_block\r
5470 \r
5471 ; 993  : \r
5472 ; 994  :     if (last) {\r
5473 \r
5474   001f1 83 7d 0c 00      cmp     DWORD PTR _last$[ebp], 0\r
5475   001f5 74 07            je      SHORT $LN1@tr_flush_b\r
5476 \r
5477 ; 995  :         bi_windup(s);\r
5478 \r
5479   001f7 8b c6            mov     eax, esi\r
5480   001f9 e8 00 00 00 00   call    _bi_windup\r
5481 $LN1@tr_flush_b:\r
5482   001fe 5f               pop     edi\r
5483   001ff 5e               pop     esi\r
5484   00200 5b               pop     ebx\r
5485 \r
5486 ; 996  : #ifdef DEBUG\r
5487 ; 997  :         s->compressed_len += 7;  /* align on byte boundary */\r
5488 ; 998  : #endif\r
5489 ; 999  :     }\r
5490 ; 1000 :     Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3,\r
5491 ; 1001 :            s->compressed_len-7*last));\r
5492 ; 1002 : }\r
5493 \r
5494   00201 8b e5            mov     esp, ebp\r
5495   00203 5d               pop     ebp\r
5496   00204 c3               ret     0\r
5497 __tr_flush_block ENDP\r
5498 END\r