]> git.saurik.com Git - wxWidgets.git/blob - utils/Install/sfxzip/crc_lcc.asm
Menuing and statusbar updates
[wxWidgets.git] / utils / Install / sfxzip / crc_lcc.asm
1 ; crc_lcc.asm, optimized CRC calculation function for Zip and UnZip, not
2 ; copyrighted by Paul Kienitz and Christian Spieler. Last revised 25 Mar 98.
3 ;
4 ; The code in this file has been copied verbatim from crc_i386.{asm|S};
5 ; only the assembler syntax and metacommands have been adapted to
6 ; the habits of the free LCC-Win32 C compiler package.
7 ; This version of the code uses the "optimized for i686" variant of
8 ; crc_i386.{asm|S}.
9 ;
10 ; For more information (and a revision log), look into the original
11 ; source files.
12 ;
13 .text
14 .file "crc32.c"
15 .text
16 .type _crc32,function
17 _crc32:
18 pushl %ebp
19 movl %esp,%ebp
20 pushl %ecx
21 pushl %ebx
22 pushl %esi
23 pushl %edi
24 .line 34
25 .line 37
26 movl 12(%ebp),%esi
27 subl %eax,%eax
28 testl %esi,%esi
29 jz _$3
30 .line 39
31 call _get_crc_table
32 movl %eax,%edi
33 .line 41
34 movl 8(%ebp),%eax
35 movl 16(%ebp),%ecx
36 notl %eax
37 testl %ecx,%ecx
38 jz _$4
39 _$5:
40 testl $3,%esi
41 jz _$6
42 xorb (%esi),%al
43 incl %esi
44 movzbl %al,%ebx
45 shrl $8,%eax
46 xorl (%edi,%ebx,4),%eax
47 decl %ecx
48 jnz _$5
49 _$6:
50 movl %ecx,%edx
51 andl $7,%edx
52 shrl $3,%ecx
53 jz _$8
54 _$7:
55 xorl (%esi),%eax
56 addl $4,%esi
57 movzbl %al,%ebx
58 shrl $8,%eax
59 xorl (%edi,%ebx,4),%eax
60 movzbl %al,%ebx
61 shrl $8,%eax
62 xorl (%edi,%ebx,4),%eax
63 movzbl %al,%ebx
64 shrl $8,%eax
65 xorl (%edi,%ebx,4),%eax
66 movzbl %al,%ebx
67 shrl $8,%eax
68 xorl (%edi,%ebx,4),%eax
69 xorl (%esi),%eax
70 addl $4,%esi
71 movzbl %al,%ebx
72 shrl $8,%eax
73 xorl (%edi,%ebx,4),%eax
74 movzbl %al,%ebx
75 shrl $8,%eax
76 xorl (%edi,%ebx,4),%eax
77 movzbl %al,%ebx
78 shrl $8,%eax
79 xorl (%edi,%ebx,4),%eax
80 movzbl %al,%ebx
81 shrl $8,%eax
82 xorl (%edi,%ebx,4),%eax
83 decl %ecx
84 jnz _$7
85 _$8:
86 movl %edx,%ecx
87 jecxz _$4
88 _$9:
89 xorb (%esi),%al
90 incl %esi
91 movzbl %al,%ebx
92 shrl $8,%eax
93 xorl (%edi,%ebx,4),%eax
94 decl %ecx
95 jnz _$9
96 _$4:
97 xorl $0xffffffff,%eax
98 _$3:
99 .line 52
100 popl %edi
101 popl %esi
102 popl %ebx
103 leave
104 ret
105 _$34:
106 .size _crc32,_$34-_crc32
107 .globl _crc32
108 .extern _get_crc_table