Add the DragonFly cvs id and perform general cleanups on cvs/rcs/sccs ids. Most
[dragonfly.git] / secure / lib / libcrypto / i386 / rc4-586.s
1         # $FreeBSD: src/secure/lib/libcrypto/i386/rc4-586.s,v 1.1.4.1 2003/02/14 22:38:15 nectar Exp $
2         # $DragonFly: src/secure/lib/libcrypto/i386/Attic/rc4-586.s,v 1.2 2003/06/17 04:27:48 dillon Exp $
3         # Dont even think of reading this code 
4         # It was automatically generated by rc4-586.pl 
5         # Which is a perl program used to generate the x86 assember for 
6         # any of elf, a.out, BSDI, Win32, gaswin (for GNU as on Win32) or Solaris 
7         # eric <eay@cryptsoft.com> 
8
9         .file   "rc4-586.s"
10         .version        "01.01"
11 gcc2_compiled.:
12 .text
13         .align 16
14 .globl RC4
15         .type   RC4,@function
16 RC4:
17
18         pushl   %ebp
19         pushl   %ebx
20         movl    12(%esp),       %ebp
21         movl    16(%esp),       %ebx
22         pushl   %esi
23         pushl   %edi
24         movl    (%ebp),         %ecx
25         movl    4(%ebp),        %edx
26         movl    28(%esp),       %esi
27         incl    %ecx
28         subl    $12,            %esp
29         addl    $8,             %ebp
30         andl    $255,           %ecx
31         leal    -8(%ebx,%esi),  %ebx
32         movl    44(%esp),       %edi
33         movl    %ebx,           8(%esp)
34         movl    (%ebp,%ecx,4),  %eax
35         cmpl    %esi,           %ebx
36         jl      .L000end
37 .L001start:
38         addl    $8,             %esi
39         # Round 0 
40         addl    %eax,           %edx
41         andl    $255,           %edx
42         incl    %ecx
43         movl    (%ebp,%edx,4),  %ebx
44         movl    %ebx,           -4(%ebp,%ecx,4)
45         addl    %eax,           %ebx
46         andl    $255,           %ecx
47         andl    $255,           %ebx
48         movl    %eax,           (%ebp,%edx,4)
49         nop
50         movl    (%ebp,%ebx,4),  %ebx
51         movl    (%ebp,%ecx,4),  %eax
52         movb    %bl,            (%esp)
53         # Round 1 
54         addl    %eax,           %edx
55         andl    $255,           %edx
56         incl    %ecx
57         movl    (%ebp,%edx,4),  %ebx
58         movl    %ebx,           -4(%ebp,%ecx,4)
59         addl    %eax,           %ebx
60         andl    $255,           %ecx
61         andl    $255,           %ebx
62         movl    %eax,           (%ebp,%edx,4)
63         nop
64         movl    (%ebp,%ebx,4),  %ebx
65         movl    (%ebp,%ecx,4),  %eax
66         movb    %bl,            1(%esp)
67         # Round 2 
68         addl    %eax,           %edx
69         andl    $255,           %edx
70         incl    %ecx
71         movl    (%ebp,%edx,4),  %ebx
72         movl    %ebx,           -4(%ebp,%ecx,4)
73         addl    %eax,           %ebx
74         andl    $255,           %ecx
75         andl    $255,           %ebx
76         movl    %eax,           (%ebp,%edx,4)
77         nop
78         movl    (%ebp,%ebx,4),  %ebx
79         movl    (%ebp,%ecx,4),  %eax
80         movb    %bl,            2(%esp)
81         # Round 3 
82         addl    %eax,           %edx
83         andl    $255,           %edx
84         incl    %ecx
85         movl    (%ebp,%edx,4),  %ebx
86         movl    %ebx,           -4(%ebp,%ecx,4)
87         addl    %eax,           %ebx
88         andl    $255,           %ecx
89         andl    $255,           %ebx
90         movl    %eax,           (%ebp,%edx,4)
91         nop
92         movl    (%ebp,%ebx,4),  %ebx
93         movl    (%ebp,%ecx,4),  %eax
94         movb    %bl,            3(%esp)
95         # Round 4 
96         addl    %eax,           %edx
97         andl    $255,           %edx
98         incl    %ecx
99         movl    (%ebp,%edx,4),  %ebx
100         movl    %ebx,           -4(%ebp,%ecx,4)
101         addl    %eax,           %ebx
102         andl    $255,           %ecx
103         andl    $255,           %ebx
104         movl    %eax,           (%ebp,%edx,4)
105         nop
106         movl    (%ebp,%ebx,4),  %ebx
107         movl    (%ebp,%ecx,4),  %eax
108         movb    %bl,            4(%esp)
109         # Round 5 
110         addl    %eax,           %edx
111         andl    $255,           %edx
112         incl    %ecx
113         movl    (%ebp,%edx,4),  %ebx
114         movl    %ebx,           -4(%ebp,%ecx,4)
115         addl    %eax,           %ebx
116         andl    $255,           %ecx
117         andl    $255,           %ebx
118         movl    %eax,           (%ebp,%edx,4)
119         nop
120         movl    (%ebp,%ebx,4),  %ebx
121         movl    (%ebp,%ecx,4),  %eax
122         movb    %bl,            5(%esp)
123         # Round 6 
124         addl    %eax,           %edx
125         andl    $255,           %edx
126         incl    %ecx
127         movl    (%ebp,%edx,4),  %ebx
128         movl    %ebx,           -4(%ebp,%ecx,4)
129         addl    %eax,           %ebx
130         andl    $255,           %ecx
131         andl    $255,           %ebx
132         movl    %eax,           (%ebp,%edx,4)
133         nop
134         movl    (%ebp,%ebx,4),  %ebx
135         movl    (%ebp,%ecx,4),  %eax
136         movb    %bl,            6(%esp)
137         # Round 7 
138         addl    %eax,           %edx
139         andl    $255,           %edx
140         incl    %ecx
141         movl    (%ebp,%edx,4),  %ebx
142         movl    %ebx,           -4(%ebp,%ecx,4)
143         addl    %eax,           %ebx
144         andl    $255,           %ecx
145         andl    $255,           %ebx
146         movl    %eax,           (%ebp,%edx,4)
147         nop
148         movl    (%ebp,%ebx,4),  %ebx
149         addl    $8,             %edi
150         movb    %bl,            7(%esp)
151         # apply the cipher text 
152         movl    (%esp),         %eax
153         movl    -8(%esi),       %ebx
154         xorl    %ebx,           %eax
155         movl    -4(%esi),       %ebx
156         movl    %eax,           -8(%edi)
157         movl    4(%esp),        %eax
158         xorl    %ebx,           %eax
159         movl    8(%esp),        %ebx
160         movl    %eax,           -4(%edi)
161         movl    (%ebp,%ecx,4),  %eax
162         cmpl    %ebx,           %esi
163         jle     .L001start
164 .L000end:
165         # Round 0 
166         addl    $8,             %ebx
167         incl    %esi
168         cmpl    %esi,           %ebx
169         jl      .L002finished
170         movl    %ebx,           8(%esp)
171         addl    %eax,           %edx
172         andl    $255,           %edx
173         incl    %ecx
174         movl    (%ebp,%edx,4),  %ebx
175         movl    %ebx,           -4(%ebp,%ecx,4)
176         addl    %eax,           %ebx
177         andl    $255,           %ecx
178         andl    $255,           %ebx
179         movl    %eax,           (%ebp,%edx,4)
180         nop
181         movl    (%ebp,%ebx,4),  %ebx
182         movl    (%ebp,%ecx,4),  %eax
183         movb    -1(%esi),       %bh
184         xorb    %bh,            %bl
185         movb    %bl,            (%edi)
186         # Round 1 
187         movl    8(%esp),        %ebx
188         cmpl    %esi,           %ebx
189         jle     .L002finished
190         incl    %esi
191         addl    %eax,           %edx
192         andl    $255,           %edx
193         incl    %ecx
194         movl    (%ebp,%edx,4),  %ebx
195         movl    %ebx,           -4(%ebp,%ecx,4)
196         addl    %eax,           %ebx
197         andl    $255,           %ecx
198         andl    $255,           %ebx
199         movl    %eax,           (%ebp,%edx,4)
200         nop
201         movl    (%ebp,%ebx,4),  %ebx
202         movl    (%ebp,%ecx,4),  %eax
203         movb    -1(%esi),       %bh
204         xorb    %bh,            %bl
205         movb    %bl,            1(%edi)
206         # Round 2 
207         movl    8(%esp),        %ebx
208         cmpl    %esi,           %ebx
209         jle     .L002finished
210         incl    %esi
211         addl    %eax,           %edx
212         andl    $255,           %edx
213         incl    %ecx
214         movl    (%ebp,%edx,4),  %ebx
215         movl    %ebx,           -4(%ebp,%ecx,4)
216         addl    %eax,           %ebx
217         andl    $255,           %ecx
218         andl    $255,           %ebx
219         movl    %eax,           (%ebp,%edx,4)
220         nop
221         movl    (%ebp,%ebx,4),  %ebx
222         movl    (%ebp,%ecx,4),  %eax
223         movb    -1(%esi),       %bh
224         xorb    %bh,            %bl
225         movb    %bl,            2(%edi)
226         # Round 3 
227         movl    8(%esp),        %ebx
228         cmpl    %esi,           %ebx
229         jle     .L002finished
230         incl    %esi
231         addl    %eax,           %edx
232         andl    $255,           %edx
233         incl    %ecx
234         movl    (%ebp,%edx,4),  %ebx
235         movl    %ebx,           -4(%ebp,%ecx,4)
236         addl    %eax,           %ebx
237         andl    $255,           %ecx
238         andl    $255,           %ebx
239         movl    %eax,           (%ebp,%edx,4)
240         nop
241         movl    (%ebp,%ebx,4),  %ebx
242         movl    (%ebp,%ecx,4),  %eax
243         movb    -1(%esi),       %bh
244         xorb    %bh,            %bl
245         movb    %bl,            3(%edi)
246         # Round 4 
247         movl    8(%esp),        %ebx
248         cmpl    %esi,           %ebx
249         jle     .L002finished
250         incl    %esi
251         addl    %eax,           %edx
252         andl    $255,           %edx
253         incl    %ecx
254         movl    (%ebp,%edx,4),  %ebx
255         movl    %ebx,           -4(%ebp,%ecx,4)
256         addl    %eax,           %ebx
257         andl    $255,           %ecx
258         andl    $255,           %ebx
259         movl    %eax,           (%ebp,%edx,4)
260         nop
261         movl    (%ebp,%ebx,4),  %ebx
262         movl    (%ebp,%ecx,4),  %eax
263         movb    -1(%esi),       %bh
264         xorb    %bh,            %bl
265         movb    %bl,            4(%edi)
266         # Round 5 
267         movl    8(%esp),        %ebx
268         cmpl    %esi,           %ebx
269         jle     .L002finished
270         incl    %esi
271         addl    %eax,           %edx
272         andl    $255,           %edx
273         incl    %ecx
274         movl    (%ebp,%edx,4),  %ebx
275         movl    %ebx,           -4(%ebp,%ecx,4)
276         addl    %eax,           %ebx
277         andl    $255,           %ecx
278         andl    $255,           %ebx
279         movl    %eax,           (%ebp,%edx,4)
280         nop
281         movl    (%ebp,%ebx,4),  %ebx
282         movl    (%ebp,%ecx,4),  %eax
283         movb    -1(%esi),       %bh
284         xorb    %bh,            %bl
285         movb    %bl,            5(%edi)
286         # Round 6 
287         movl    8(%esp),        %ebx
288         cmpl    %esi,           %ebx
289         jle     .L002finished
290         incl    %esi
291         addl    %eax,           %edx
292         andl    $255,           %edx
293         incl    %ecx
294         movl    (%ebp,%edx,4),  %ebx
295         movl    %ebx,           -4(%ebp,%ecx,4)
296         addl    %eax,           %ebx
297         andl    $255,           %ecx
298         andl    $255,           %ebx
299         movl    %eax,           (%ebp,%edx,4)
300         nop
301         movl    (%ebp,%ebx,4),  %ebx
302         movb    -1(%esi),       %bh
303         xorb    %bh,            %bl
304         movb    %bl,            6(%edi)
305 .L002finished:
306         decl    %ecx
307         addl    $12,            %esp
308         movl    %edx,           -4(%ebp)
309         movb    %cl,            -8(%ebp)
310         popl    %edi
311         popl    %esi
312         popl    %ebx
313         popl    %ebp
314         ret
315 .RC4_end:
316         .size   RC4,.RC4_end-RC4
317 .ident  "RC4"