Initial import from FreeBSD RELENG_4:
[dragonfly.git] / secure / lib / libcrypto / i386 / crypt586.s
1         # $FreeBSD: src/secure/lib/libcrypto/i386/crypt586.s,v 1.1.4.1 2003/02/14 22:38:15 nectar Exp $
2         # Dont even think of reading this code 
3         # It was automatically generated by crypt586.pl 
4         # Which is a perl program used to generate the x86 assember for 
5         # any of elf, a.out, BSDI, Win32, gaswin (for GNU as on Win32) or Solaris 
6         # eric <eay@cryptsoft.com> 
7
8         .file   "crypt586.s"
9         .version        "01.01"
10 gcc2_compiled.:
11 .text
12         .align 16
13 .globl fcrypt_body
14         .type   fcrypt_body,@function
15 fcrypt_body:
16         pushl   %ebp
17         pushl   %ebx
18         pushl   %esi
19         pushl   %edi
20
21
22         # Load the 2 words 
23         xorl    %edi,           %edi
24         xorl    %esi,           %esi
25         movl    24(%esp),       %ebp
26         pushl   $25
27 .L000start:
28
29         # Round 0 
30         movl    32(%esp),       %eax
31         movl    %esi,           %edx
32         shrl    $16,            %edx
33         movl    36(%esp),       %ecx
34         xorl    %esi,           %edx
35         andl    %edx,           %eax
36         andl    %ecx,           %edx
37         movl    %eax,           %ebx
38         sall    $16,            %ebx
39         movl    %edx,           %ecx
40         sall    $16,            %ecx
41         xorl    %ebx,           %eax
42         xorl    %ecx,           %edx
43         movl    (%ebp),         %ebx
44         xorl    %ebx,           %eax
45         movl    4(%ebp),        %ecx
46         xorl    %esi,           %eax
47         xorl    %esi,           %edx
48         xorl    %ecx,           %edx
49         andl    $0xfcfcfcfc,    %eax
50         xorl    %ebx,           %ebx
51         andl    $0xcfcfcfcf,    %edx
52         xorl    %ecx,           %ecx
53         movb    %al,            %bl
54         movb    %ah,            %cl
55         rorl    $4,             %edx
56         movl          des_SPtrans(%ebx),%ebp
57         movb    %dl,            %bl
58         xorl    %ebp,           %edi
59         movl    0x200+des_SPtrans(%ecx),%ebp
60         xorl    %ebp,           %edi
61         movb    %dh,            %cl
62         shrl    $16,            %eax
63         movl    0x100+des_SPtrans(%ebx),%ebp
64         xorl    %ebp,           %edi
65         movb    %ah,            %bl
66         shrl    $16,            %edx
67         movl    0x300+des_SPtrans(%ecx),%ebp
68         xorl    %ebp,           %edi
69         movl    28(%esp),       %ebp
70         movb    %dh,            %cl
71         andl    $0xff,          %eax
72         andl    $0xff,          %edx
73         movl    0x600+des_SPtrans(%ebx),%ebx
74         xorl    %ebx,           %edi
75         movl    0x700+des_SPtrans(%ecx),%ebx
76         xorl    %ebx,           %edi
77         movl    0x400+des_SPtrans(%eax),%ebx
78         xorl    %ebx,           %edi
79         movl    0x500+des_SPtrans(%edx),%ebx
80         xorl    %ebx,           %edi
81
82         # Round 1 
83         movl    32(%esp),       %eax
84         movl    %edi,           %edx
85         shrl    $16,            %edx
86         movl    36(%esp),       %ecx
87         xorl    %edi,           %edx
88         andl    %edx,           %eax
89         andl    %ecx,           %edx
90         movl    %eax,           %ebx
91         sall    $16,            %ebx
92         movl    %edx,           %ecx
93         sall    $16,            %ecx
94         xorl    %ebx,           %eax
95         xorl    %ecx,           %edx
96         movl    8(%ebp),        %ebx
97         xorl    %ebx,           %eax
98         movl    12(%ebp),       %ecx
99         xorl    %edi,           %eax
100         xorl    %edi,           %edx
101         xorl    %ecx,           %edx
102         andl    $0xfcfcfcfc,    %eax
103         xorl    %ebx,           %ebx
104         andl    $0xcfcfcfcf,    %edx
105         xorl    %ecx,           %ecx
106         movb    %al,            %bl
107         movb    %ah,            %cl
108         rorl    $4,             %edx
109         movl          des_SPtrans(%ebx),%ebp
110         movb    %dl,            %bl
111         xorl    %ebp,           %esi
112         movl    0x200+des_SPtrans(%ecx),%ebp
113         xorl    %ebp,           %esi
114         movb    %dh,            %cl
115         shrl    $16,            %eax
116         movl    0x100+des_SPtrans(%ebx),%ebp
117         xorl    %ebp,           %esi
118         movb    %ah,            %bl
119         shrl    $16,            %edx
120         movl    0x300+des_SPtrans(%ecx),%ebp
121         xorl    %ebp,           %esi
122         movl    28(%esp),       %ebp
123         movb    %dh,            %cl
124         andl    $0xff,          %eax
125         andl    $0xff,          %edx
126         movl    0x600+des_SPtrans(%ebx),%ebx
127         xorl    %ebx,           %esi
128         movl    0x700+des_SPtrans(%ecx),%ebx
129         xorl    %ebx,           %esi
130         movl    0x400+des_SPtrans(%eax),%ebx
131         xorl    %ebx,           %esi
132         movl    0x500+des_SPtrans(%edx),%ebx
133         xorl    %ebx,           %esi
134
135         # Round 2 
136         movl    32(%esp),       %eax
137         movl    %esi,           %edx
138         shrl    $16,            %edx
139         movl    36(%esp),       %ecx
140         xorl    %esi,           %edx
141         andl    %edx,           %eax
142         andl    %ecx,           %edx
143         movl    %eax,           %ebx
144         sall    $16,            %ebx
145         movl    %edx,           %ecx
146         sall    $16,            %ecx
147         xorl    %ebx,           %eax
148         xorl    %ecx,           %edx
149         movl    16(%ebp),       %ebx
150         xorl    %ebx,           %eax
151         movl    20(%ebp),       %ecx
152         xorl    %esi,           %eax
153         xorl    %esi,           %edx
154         xorl    %ecx,           %edx
155         andl    $0xfcfcfcfc,    %eax
156         xorl    %ebx,           %ebx
157         andl    $0xcfcfcfcf,    %edx
158         xorl    %ecx,           %ecx
159         movb    %al,            %bl
160         movb    %ah,            %cl
161         rorl    $4,             %edx
162         movl          des_SPtrans(%ebx),%ebp
163         movb    %dl,            %bl
164         xorl    %ebp,           %edi
165         movl    0x200+des_SPtrans(%ecx),%ebp
166         xorl    %ebp,           %edi
167         movb    %dh,            %cl
168         shrl    $16,            %eax
169         movl    0x100+des_SPtrans(%ebx),%ebp
170         xorl    %ebp,           %edi
171         movb    %ah,            %bl
172         shrl    $16,            %edx
173         movl    0x300+des_SPtrans(%ecx),%ebp
174         xorl    %ebp,           %edi
175         movl    28(%esp),       %ebp
176         movb    %dh,            %cl
177         andl    $0xff,          %eax
178         andl    $0xff,          %edx
179         movl    0x600+des_SPtrans(%ebx),%ebx
180         xorl    %ebx,           %edi
181         movl    0x700+des_SPtrans(%ecx),%ebx
182         xorl    %ebx,           %edi
183         movl    0x400+des_SPtrans(%eax),%ebx
184         xorl    %ebx,           %edi
185         movl    0x500+des_SPtrans(%edx),%ebx
186         xorl    %ebx,           %edi
187
188         # Round 3 
189         movl    32(%esp),       %eax
190         movl    %edi,           %edx
191         shrl    $16,            %edx
192         movl    36(%esp),       %ecx
193         xorl    %edi,           %edx
194         andl    %edx,           %eax
195         andl    %ecx,           %edx
196         movl    %eax,           %ebx
197         sall    $16,            %ebx
198         movl    %edx,           %ecx
199         sall    $16,            %ecx
200         xorl    %ebx,           %eax
201         xorl    %ecx,           %edx
202         movl    24(%ebp),       %ebx
203         xorl    %ebx,           %eax
204         movl    28(%ebp),       %ecx
205         xorl    %edi,           %eax
206         xorl    %edi,           %edx
207         xorl    %ecx,           %edx
208         andl    $0xfcfcfcfc,    %eax
209         xorl    %ebx,           %ebx
210         andl    $0xcfcfcfcf,    %edx
211         xorl    %ecx,           %ecx
212         movb    %al,            %bl
213         movb    %ah,            %cl
214         rorl    $4,             %edx
215         movl          des_SPtrans(%ebx),%ebp
216         movb    %dl,            %bl
217         xorl    %ebp,           %esi
218         movl    0x200+des_SPtrans(%ecx),%ebp
219         xorl    %ebp,           %esi
220         movb    %dh,            %cl
221         shrl    $16,            %eax
222         movl    0x100+des_SPtrans(%ebx),%ebp
223         xorl    %ebp,           %esi
224         movb    %ah,            %bl
225         shrl    $16,            %edx
226         movl    0x300+des_SPtrans(%ecx),%ebp
227         xorl    %ebp,           %esi
228         movl    28(%esp),       %ebp
229         movb    %dh,            %cl
230         andl    $0xff,          %eax
231         andl    $0xff,          %edx
232         movl    0x600+des_SPtrans(%ebx),%ebx
233         xorl    %ebx,           %esi
234         movl    0x700+des_SPtrans(%ecx),%ebx
235         xorl    %ebx,           %esi
236         movl    0x400+des_SPtrans(%eax),%ebx
237         xorl    %ebx,           %esi
238         movl    0x500+des_SPtrans(%edx),%ebx
239         xorl    %ebx,           %esi
240
241         # Round 4 
242         movl    32(%esp),       %eax
243         movl    %esi,           %edx
244         shrl    $16,            %edx
245         movl    36(%esp),       %ecx
246         xorl    %esi,           %edx
247         andl    %edx,           %eax
248         andl    %ecx,           %edx
249         movl    %eax,           %ebx
250         sall    $16,            %ebx
251         movl    %edx,           %ecx
252         sall    $16,            %ecx
253         xorl    %ebx,           %eax
254         xorl    %ecx,           %edx
255         movl    32(%ebp),       %ebx
256         xorl    %ebx,           %eax
257         movl    36(%ebp),       %ecx
258         xorl    %esi,           %eax
259         xorl    %esi,           %edx
260         xorl    %ecx,           %edx
261         andl    $0xfcfcfcfc,    %eax
262         xorl    %ebx,           %ebx
263         andl    $0xcfcfcfcf,    %edx
264         xorl    %ecx,           %ecx
265         movb    %al,            %bl
266         movb    %ah,            %cl
267         rorl    $4,             %edx
268         movl          des_SPtrans(%ebx),%ebp
269         movb    %dl,            %bl
270         xorl    %ebp,           %edi
271         movl    0x200+des_SPtrans(%ecx),%ebp
272         xorl    %ebp,           %edi
273         movb    %dh,            %cl
274         shrl    $16,            %eax
275         movl    0x100+des_SPtrans(%ebx),%ebp
276         xorl    %ebp,           %edi
277         movb    %ah,            %bl
278         shrl    $16,            %edx
279         movl    0x300+des_SPtrans(%ecx),%ebp
280         xorl    %ebp,           %edi
281         movl    28(%esp),       %ebp
282         movb    %dh,            %cl
283         andl    $0xff,          %eax
284         andl    $0xff,          %edx
285         movl    0x600+des_SPtrans(%ebx),%ebx
286         xorl    %ebx,           %edi
287         movl    0x700+des_SPtrans(%ecx),%ebx
288         xorl    %ebx,           %edi
289         movl    0x400+des_SPtrans(%eax),%ebx
290         xorl    %ebx,           %edi
291         movl    0x500+des_SPtrans(%edx),%ebx
292         xorl    %ebx,           %edi
293
294         # Round 5 
295         movl    32(%esp),       %eax
296         movl    %edi,           %edx
297         shrl    $16,            %edx
298         movl    36(%esp),       %ecx
299         xorl    %edi,           %edx
300         andl    %edx,           %eax
301         andl    %ecx,           %edx
302         movl    %eax,           %ebx
303         sall    $16,            %ebx
304         movl    %edx,           %ecx
305         sall    $16,            %ecx
306         xorl    %ebx,           %eax
307         xorl    %ecx,           %edx
308         movl    40(%ebp),       %ebx
309         xorl    %ebx,           %eax
310         movl    44(%ebp),       %ecx
311         xorl    %edi,           %eax
312         xorl    %edi,           %edx
313         xorl    %ecx,           %edx
314         andl    $0xfcfcfcfc,    %eax
315         xorl    %ebx,           %ebx
316         andl    $0xcfcfcfcf,    %edx
317         xorl    %ecx,           %ecx
318         movb    %al,            %bl
319         movb    %ah,            %cl
320         rorl    $4,             %edx
321         movl          des_SPtrans(%ebx),%ebp
322         movb    %dl,            %bl
323         xorl    %ebp,           %esi
324         movl    0x200+des_SPtrans(%ecx),%ebp
325         xorl    %ebp,           %esi
326         movb    %dh,            %cl
327         shrl    $16,            %eax
328         movl    0x100+des_SPtrans(%ebx),%ebp
329         xorl    %ebp,           %esi
330         movb    %ah,            %bl
331         shrl    $16,            %edx
332         movl    0x300+des_SPtrans(%ecx),%ebp
333         xorl    %ebp,           %esi
334         movl    28(%esp),       %ebp
335         movb    %dh,            %cl
336         andl    $0xff,          %eax
337         andl    $0xff,          %edx
338         movl    0x600+des_SPtrans(%ebx),%ebx
339         xorl    %ebx,           %esi
340         movl    0x700+des_SPtrans(%ecx),%ebx
341         xorl    %ebx,           %esi
342         movl    0x400+des_SPtrans(%eax),%ebx
343         xorl    %ebx,           %esi
344         movl    0x500+des_SPtrans(%edx),%ebx
345         xorl    %ebx,           %esi
346
347         # Round 6 
348         movl    32(%esp),       %eax
349         movl    %esi,           %edx
350         shrl    $16,            %edx
351         movl    36(%esp),       %ecx
352         xorl    %esi,           %edx
353         andl    %edx,           %eax
354         andl    %ecx,           %edx
355         movl    %eax,           %ebx
356         sall    $16,            %ebx
357         movl    %edx,           %ecx
358         sall    $16,            %ecx
359         xorl    %ebx,           %eax
360         xorl    %ecx,           %edx
361         movl    48(%ebp),       %ebx
362         xorl    %ebx,           %eax
363         movl    52(%ebp),       %ecx
364         xorl    %esi,           %eax
365         xorl    %esi,           %edx
366         xorl    %ecx,           %edx
367         andl    $0xfcfcfcfc,    %eax
368         xorl    %ebx,           %ebx
369         andl    $0xcfcfcfcf,    %edx
370         xorl    %ecx,           %ecx
371         movb    %al,            %bl
372         movb    %ah,            %cl
373         rorl    $4,             %edx
374         movl          des_SPtrans(%ebx),%ebp
375         movb    %dl,            %bl
376         xorl    %ebp,           %edi
377         movl    0x200+des_SPtrans(%ecx),%ebp
378         xorl    %ebp,           %edi
379         movb    %dh,            %cl
380         shrl    $16,            %eax
381         movl    0x100+des_SPtrans(%ebx),%ebp
382         xorl    %ebp,           %edi
383         movb    %ah,            %bl
384         shrl    $16,            %edx
385         movl    0x300+des_SPtrans(%ecx),%ebp
386         xorl    %ebp,           %edi
387         movl    28(%esp),       %ebp
388         movb    %dh,            %cl
389         andl    $0xff,          %eax
390         andl    $0xff,          %edx
391         movl    0x600+des_SPtrans(%ebx),%ebx
392         xorl    %ebx,           %edi
393         movl    0x700+des_SPtrans(%ecx),%ebx
394         xorl    %ebx,           %edi
395         movl    0x400+des_SPtrans(%eax),%ebx
396         xorl    %ebx,           %edi
397         movl    0x500+des_SPtrans(%edx),%ebx
398         xorl    %ebx,           %edi
399
400         # Round 7 
401         movl    32(%esp),       %eax
402         movl    %edi,           %edx
403         shrl    $16,            %edx
404         movl    36(%esp),       %ecx
405         xorl    %edi,           %edx
406         andl    %edx,           %eax
407         andl    %ecx,           %edx
408         movl    %eax,           %ebx
409         sall    $16,            %ebx
410         movl    %edx,           %ecx
411         sall    $16,            %ecx
412         xorl    %ebx,           %eax
413         xorl    %ecx,           %edx
414         movl    56(%ebp),       %ebx
415         xorl    %ebx,           %eax
416         movl    60(%ebp),       %ecx
417         xorl    %edi,           %eax
418         xorl    %edi,           %edx
419         xorl    %ecx,           %edx
420         andl    $0xfcfcfcfc,    %eax
421         xorl    %ebx,           %ebx
422         andl    $0xcfcfcfcf,    %edx
423         xorl    %ecx,           %ecx
424         movb    %al,            %bl
425         movb    %ah,            %cl
426         rorl    $4,             %edx
427         movl          des_SPtrans(%ebx),%ebp
428         movb    %dl,            %bl
429         xorl    %ebp,           %esi
430         movl    0x200+des_SPtrans(%ecx),%ebp
431         xorl    %ebp,           %esi
432         movb    %dh,            %cl
433         shrl    $16,            %eax
434         movl    0x100+des_SPtrans(%ebx),%ebp
435         xorl    %ebp,           %esi
436         movb    %ah,            %bl
437         shrl    $16,            %edx
438         movl    0x300+des_SPtrans(%ecx),%ebp
439         xorl    %ebp,           %esi
440         movl    28(%esp),       %ebp
441         movb    %dh,            %cl
442         andl    $0xff,          %eax
443         andl    $0xff,          %edx
444         movl    0x600+des_SPtrans(%ebx),%ebx
445         xorl    %ebx,           %esi
446         movl    0x700+des_SPtrans(%ecx),%ebx
447         xorl    %ebx,           %esi
448         movl    0x400+des_SPtrans(%eax),%ebx
449         xorl    %ebx,           %esi
450         movl    0x500+des_SPtrans(%edx),%ebx
451         xorl    %ebx,           %esi
452
453         # Round 8 
454         movl    32(%esp),       %eax
455         movl    %esi,           %edx
456         shrl    $16,            %edx
457         movl    36(%esp),       %ecx
458         xorl    %esi,           %edx
459         andl    %edx,           %eax
460         andl    %ecx,           %edx
461         movl    %eax,           %ebx
462         sall    $16,            %ebx
463         movl    %edx,           %ecx
464         sall    $16,            %ecx
465         xorl    %ebx,           %eax
466         xorl    %ecx,           %edx
467         movl    64(%ebp),       %ebx
468         xorl    %ebx,           %eax
469         movl    68(%ebp),       %ecx
470         xorl    %esi,           %eax
471         xorl    %esi,           %edx
472         xorl    %ecx,           %edx
473         andl    $0xfcfcfcfc,    %eax
474         xorl    %ebx,           %ebx
475         andl    $0xcfcfcfcf,    %edx
476         xorl    %ecx,           %ecx
477         movb    %al,            %bl
478         movb    %ah,            %cl
479         rorl    $4,             %edx
480         movl          des_SPtrans(%ebx),%ebp
481         movb    %dl,            %bl
482         xorl    %ebp,           %edi
483         movl    0x200+des_SPtrans(%ecx),%ebp
484         xorl    %ebp,           %edi
485         movb    %dh,            %cl
486         shrl    $16,            %eax
487         movl    0x100+des_SPtrans(%ebx),%ebp
488         xorl    %ebp,           %edi
489         movb    %ah,            %bl
490         shrl    $16,            %edx
491         movl    0x300+des_SPtrans(%ecx),%ebp
492         xorl    %ebp,           %edi
493         movl    28(%esp),       %ebp
494         movb    %dh,            %cl
495         andl    $0xff,          %eax
496         andl    $0xff,          %edx
497         movl    0x600+des_SPtrans(%ebx),%ebx
498         xorl    %ebx,           %edi
499         movl    0x700+des_SPtrans(%ecx),%ebx
500         xorl    %ebx,           %edi
501         movl    0x400+des_SPtrans(%eax),%ebx
502         xorl    %ebx,           %edi
503         movl    0x500+des_SPtrans(%edx),%ebx
504         xorl    %ebx,           %edi
505
506         # Round 9 
507         movl    32(%esp),       %eax
508         movl    %edi,           %edx
509         shrl    $16,            %edx
510         movl    36(%esp),       %ecx
511         xorl    %edi,           %edx
512         andl    %edx,           %eax
513         andl    %ecx,           %edx
514         movl    %eax,           %ebx
515         sall    $16,            %ebx
516         movl    %edx,           %ecx
517         sall    $16,            %ecx
518         xorl    %ebx,           %eax
519         xorl    %ecx,           %edx
520         movl    72(%ebp),       %ebx
521         xorl    %ebx,           %eax
522         movl    76(%ebp),       %ecx
523         xorl    %edi,           %eax
524         xorl    %edi,           %edx
525         xorl    %ecx,           %edx
526         andl    $0xfcfcfcfc,    %eax
527         xorl    %ebx,           %ebx
528         andl    $0xcfcfcfcf,    %edx
529         xorl    %ecx,           %ecx
530         movb    %al,            %bl
531         movb    %ah,            %cl
532         rorl    $4,             %edx
533         movl          des_SPtrans(%ebx),%ebp
534         movb    %dl,            %bl
535         xorl    %ebp,           %esi
536         movl    0x200+des_SPtrans(%ecx),%ebp
537         xorl    %ebp,           %esi
538         movb    %dh,            %cl
539         shrl    $16,            %eax
540         movl    0x100+des_SPtrans(%ebx),%ebp
541         xorl    %ebp,           %esi
542         movb    %ah,            %bl
543         shrl    $16,            %edx
544         movl    0x300+des_SPtrans(%ecx),%ebp
545         xorl    %ebp,           %esi
546         movl    28(%esp),       %ebp
547         movb    %dh,            %cl
548         andl    $0xff,          %eax
549         andl    $0xff,          %edx
550         movl    0x600+des_SPtrans(%ebx),%ebx
551         xorl    %ebx,           %esi
552         movl    0x700+des_SPtrans(%ecx),%ebx
553         xorl    %ebx,           %esi
554         movl    0x400+des_SPtrans(%eax),%ebx
555         xorl    %ebx,           %esi
556         movl    0x500+des_SPtrans(%edx),%ebx
557         xorl    %ebx,           %esi
558
559         # Round 10 
560         movl    32(%esp),       %eax
561         movl    %esi,           %edx
562         shrl    $16,            %edx
563         movl    36(%esp),       %ecx
564         xorl    %esi,           %edx
565         andl    %edx,           %eax
566         andl    %ecx,           %edx
567         movl    %eax,           %ebx
568         sall    $16,            %ebx
569         movl    %edx,           %ecx
570         sall    $16,            %ecx
571         xorl    %ebx,           %eax
572         xorl    %ecx,           %edx
573         movl    80(%ebp),       %ebx
574         xorl    %ebx,           %eax
575         movl    84(%ebp),       %ecx
576         xorl    %esi,           %eax
577         xorl    %esi,           %edx
578         xorl    %ecx,           %edx
579         andl    $0xfcfcfcfc,    %eax
580         xorl    %ebx,           %ebx
581         andl    $0xcfcfcfcf,    %edx
582         xorl    %ecx,           %ecx
583         movb    %al,            %bl
584         movb    %ah,            %cl
585         rorl    $4,             %edx
586         movl          des_SPtrans(%ebx),%ebp
587         movb    %dl,            %bl
588         xorl    %ebp,           %edi
589         movl    0x200+des_SPtrans(%ecx),%ebp
590         xorl    %ebp,           %edi
591         movb    %dh,            %cl
592         shrl    $16,            %eax
593         movl    0x100+des_SPtrans(%ebx),%ebp
594         xorl    %ebp,           %edi
595         movb    %ah,            %bl
596         shrl    $16,            %edx
597         movl    0x300+des_SPtrans(%ecx),%ebp
598         xorl    %ebp,           %edi
599         movl    28(%esp),       %ebp
600         movb    %dh,            %cl
601         andl    $0xff,          %eax
602         andl    $0xff,          %edx
603         movl    0x600+des_SPtrans(%ebx),%ebx
604         xorl    %ebx,           %edi
605         movl    0x700+des_SPtrans(%ecx),%ebx
606         xorl    %ebx,           %edi
607         movl    0x400+des_SPtrans(%eax),%ebx
608         xorl    %ebx,           %edi
609         movl    0x500+des_SPtrans(%edx),%ebx
610         xorl    %ebx,           %edi
611
612         # Round 11 
613         movl    32(%esp),       %eax
614         movl    %edi,           %edx
615         shrl    $16,            %edx
616         movl    36(%esp),       %ecx
617         xorl    %edi,           %edx
618         andl    %edx,           %eax
619         andl    %ecx,           %edx
620         movl    %eax,           %ebx
621         sall    $16,            %ebx
622         movl    %edx,           %ecx
623         sall    $16,            %ecx
624         xorl    %ebx,           %eax
625         xorl    %ecx,           %edx
626         movl    88(%ebp),       %ebx
627         xorl    %ebx,           %eax
628         movl    92(%ebp),       %ecx
629         xorl    %edi,           %eax
630         xorl    %edi,           %edx
631         xorl    %ecx,           %edx
632         andl    $0xfcfcfcfc,    %eax
633         xorl    %ebx,           %ebx
634         andl    $0xcfcfcfcf,    %edx
635         xorl    %ecx,           %ecx
636         movb    %al,            %bl
637         movb    %ah,            %cl
638         rorl    $4,             %edx
639         movl          des_SPtrans(%ebx),%ebp
640         movb    %dl,            %bl
641         xorl    %ebp,           %esi
642         movl    0x200+des_SPtrans(%ecx),%ebp
643         xorl    %ebp,           %esi
644         movb    %dh,            %cl
645         shrl    $16,            %eax
646         movl    0x100+des_SPtrans(%ebx),%ebp
647         xorl    %ebp,           %esi
648         movb    %ah,            %bl
649         shrl    $16,            %edx
650         movl    0x300+des_SPtrans(%ecx),%ebp
651         xorl    %ebp,           %esi
652         movl    28(%esp),       %ebp
653         movb    %dh,            %cl
654         andl    $0xff,          %eax
655         andl    $0xff,          %edx
656         movl    0x600+des_SPtrans(%ebx),%ebx
657         xorl    %ebx,           %esi
658         movl    0x700+des_SPtrans(%ecx),%ebx
659         xorl    %ebx,           %esi
660         movl    0x400+des_SPtrans(%eax),%ebx
661         xorl    %ebx,           %esi
662         movl    0x500+des_SPtrans(%edx),%ebx
663         xorl    %ebx,           %esi
664
665         # Round 12 
666         movl    32(%esp),       %eax
667         movl    %esi,           %edx
668         shrl    $16,            %edx
669         movl    36(%esp),       %ecx
670         xorl    %esi,           %edx
671         andl    %edx,           %eax
672         andl    %ecx,           %edx
673         movl    %eax,           %ebx
674         sall    $16,            %ebx
675         movl    %edx,           %ecx
676         sall    $16,            %ecx
677         xorl    %ebx,           %eax
678         xorl    %ecx,           %edx
679         movl    96(%ebp),       %ebx
680         xorl    %ebx,           %eax
681         movl    100(%ebp),      %ecx
682         xorl    %esi,           %eax
683         xorl    %esi,           %edx
684         xorl    %ecx,           %edx
685         andl    $0xfcfcfcfc,    %eax
686         xorl    %ebx,           %ebx
687         andl    $0xcfcfcfcf,    %edx
688         xorl    %ecx,           %ecx
689         movb    %al,            %bl
690         movb    %ah,            %cl
691         rorl    $4,             %edx
692         movl          des_SPtrans(%ebx),%ebp
693         movb    %dl,            %bl
694         xorl    %ebp,           %edi
695         movl    0x200+des_SPtrans(%ecx),%ebp
696         xorl    %ebp,           %edi
697         movb    %dh,            %cl
698         shrl    $16,            %eax
699         movl    0x100+des_SPtrans(%ebx),%ebp
700         xorl    %ebp,           %edi
701         movb    %ah,            %bl
702         shrl    $16,            %edx
703         movl    0x300+des_SPtrans(%ecx),%ebp
704         xorl    %ebp,           %edi
705         movl    28(%esp),       %ebp
706         movb    %dh,            %cl
707         andl    $0xff,          %eax
708         andl    $0xff,          %edx
709         movl    0x600+des_SPtrans(%ebx),%ebx
710         xorl    %ebx,           %edi
711         movl    0x700+des_SPtrans(%ecx),%ebx
712         xorl    %ebx,           %edi
713         movl    0x400+des_SPtrans(%eax),%ebx
714         xorl    %ebx,           %edi
715         movl    0x500+des_SPtrans(%edx),%ebx
716         xorl    %ebx,           %edi
717
718         # Round 13 
719         movl    32(%esp),       %eax
720         movl    %edi,           %edx
721         shrl    $16,            %edx
722         movl    36(%esp),       %ecx
723         xorl    %edi,           %edx
724         andl    %edx,           %eax
725         andl    %ecx,           %edx
726         movl    %eax,           %ebx
727         sall    $16,            %ebx
728         movl    %edx,           %ecx
729         sall    $16,            %ecx
730         xorl    %ebx,           %eax
731         xorl    %ecx,           %edx
732         movl    104(%ebp),      %ebx
733         xorl    %ebx,           %eax
734         movl    108(%ebp),      %ecx
735         xorl    %edi,           %eax
736         xorl    %edi,           %edx
737         xorl    %ecx,           %edx
738         andl    $0xfcfcfcfc,    %eax
739         xorl    %ebx,           %ebx
740         andl    $0xcfcfcfcf,    %edx
741         xorl    %ecx,           %ecx
742         movb    %al,            %bl
743         movb    %ah,            %cl
744         rorl    $4,             %edx
745         movl          des_SPtrans(%ebx),%ebp
746         movb    %dl,            %bl
747         xorl    %ebp,           %esi
748         movl    0x200+des_SPtrans(%ecx),%ebp
749         xorl    %ebp,           %esi
750         movb    %dh,            %cl
751         shrl    $16,            %eax
752         movl    0x100+des_SPtrans(%ebx),%ebp
753         xorl    %ebp,           %esi
754         movb    %ah,            %bl
755         shrl    $16,            %edx
756         movl    0x300+des_SPtrans(%ecx),%ebp
757         xorl    %ebp,           %esi
758         movl    28(%esp),       %ebp
759         movb    %dh,            %cl
760         andl    $0xff,          %eax
761         andl    $0xff,          %edx
762         movl    0x600+des_SPtrans(%ebx),%ebx
763         xorl    %ebx,           %esi
764         movl    0x700+des_SPtrans(%ecx),%ebx
765         xorl    %ebx,           %esi
766         movl    0x400+des_SPtrans(%eax),%ebx
767         xorl    %ebx,           %esi
768         movl    0x500+des_SPtrans(%edx),%ebx
769         xorl    %ebx,           %esi
770
771         # Round 14 
772         movl    32(%esp),       %eax
773         movl    %esi,           %edx
774         shrl    $16,            %edx
775         movl    36(%esp),       %ecx
776         xorl    %esi,           %edx
777         andl    %edx,           %eax
778         andl    %ecx,           %edx
779         movl    %eax,           %ebx
780         sall    $16,            %ebx
781         movl    %edx,           %ecx
782         sall    $16,            %ecx
783         xorl    %ebx,           %eax
784         xorl    %ecx,           %edx
785         movl    112(%ebp),      %ebx
786         xorl    %ebx,           %eax
787         movl    116(%ebp),      %ecx
788         xorl    %esi,           %eax
789         xorl    %esi,           %edx
790         xorl    %ecx,           %edx
791         andl    $0xfcfcfcfc,    %eax
792         xorl    %ebx,           %ebx
793         andl    $0xcfcfcfcf,    %edx
794         xorl    %ecx,           %ecx
795         movb    %al,            %bl
796         movb    %ah,            %cl
797         rorl    $4,             %edx
798         movl          des_SPtrans(%ebx),%ebp
799         movb    %dl,            %bl
800         xorl    %ebp,           %edi
801         movl    0x200+des_SPtrans(%ecx),%ebp
802         xorl    %ebp,           %edi
803         movb    %dh,            %cl
804         shrl    $16,            %eax
805         movl    0x100+des_SPtrans(%ebx),%ebp
806         xorl    %ebp,           %edi
807         movb    %ah,            %bl
808         shrl    $16,            %edx
809         movl    0x300+des_SPtrans(%ecx),%ebp
810         xorl    %ebp,           %edi
811         movl    28(%esp),       %ebp
812         movb    %dh,            %cl
813         andl    $0xff,          %eax
814         andl    $0xff,          %edx
815         movl    0x600+des_SPtrans(%ebx),%ebx
816         xorl    %ebx,           %edi
817         movl    0x700+des_SPtrans(%ecx),%ebx
818         xorl    %ebx,           %edi
819         movl    0x400+des_SPtrans(%eax),%ebx
820         xorl    %ebx,           %edi
821         movl    0x500+des_SPtrans(%edx),%ebx
822         xorl    %ebx,           %edi
823
824         # Round 15 
825         movl    32(%esp),       %eax
826         movl    %edi,           %edx
827         shrl    $16,            %edx
828         movl    36(%esp),       %ecx
829         xorl    %edi,           %edx
830         andl    %edx,           %eax
831         andl    %ecx,           %edx
832         movl    %eax,           %ebx
833         sall    $16,            %ebx
834         movl    %edx,           %ecx
835         sall    $16,            %ecx
836         xorl    %ebx,           %eax
837         xorl    %ecx,           %edx
838         movl    120(%ebp),      %ebx
839         xorl    %ebx,           %eax
840         movl    124(%ebp),      %ecx
841         xorl    %edi,           %eax
842         xorl    %edi,           %edx
843         xorl    %ecx,           %edx
844         andl    $0xfcfcfcfc,    %eax
845         xorl    %ebx,           %ebx
846         andl    $0xcfcfcfcf,    %edx
847         xorl    %ecx,           %ecx
848         movb    %al,            %bl
849         movb    %ah,            %cl
850         rorl    $4,             %edx
851         movl          des_SPtrans(%ebx),%ebp
852         movb    %dl,            %bl
853         xorl    %ebp,           %esi
854         movl    0x200+des_SPtrans(%ecx),%ebp
855         xorl    %ebp,           %esi
856         movb    %dh,            %cl
857         shrl    $16,            %eax
858         movl    0x100+des_SPtrans(%ebx),%ebp
859         xorl    %ebp,           %esi
860         movb    %ah,            %bl
861         shrl    $16,            %edx
862         movl    0x300+des_SPtrans(%ecx),%ebp
863         xorl    %ebp,           %esi
864         movl    28(%esp),       %ebp
865         movb    %dh,            %cl
866         andl    $0xff,          %eax
867         andl    $0xff,          %edx
868         movl    0x600+des_SPtrans(%ebx),%ebx
869         xorl    %ebx,           %esi
870         movl    0x700+des_SPtrans(%ecx),%ebx
871         xorl    %ebx,           %esi
872         movl    0x400+des_SPtrans(%eax),%ebx
873         xorl    %ebx,           %esi
874         movl    0x500+des_SPtrans(%edx),%ebx
875         xorl    %ebx,           %esi
876         movl    (%esp),         %ebx
877         movl    %edi,           %eax
878         decl    %ebx
879         movl    %esi,           %edi
880         movl    %eax,           %esi
881         movl    %ebx,           (%esp)
882         jnz     .L000start
883
884         # FP 
885         movl    24(%esp),       %edx
886 .byte 209
887 .byte 207               # rorl $1 %edi 
888         movl    %esi,           %eax
889         xorl    %edi,           %esi
890         andl    $0xaaaaaaaa,    %esi
891         xorl    %esi,           %eax
892         xorl    %esi,           %edi
893
894         roll    $23,            %eax
895         movl    %eax,           %esi
896         xorl    %edi,           %eax
897         andl    $0x03fc03fc,    %eax
898         xorl    %eax,           %esi
899         xorl    %eax,           %edi
900
901         roll    $10,            %esi
902         movl    %esi,           %eax
903         xorl    %edi,           %esi
904         andl    $0x33333333,    %esi
905         xorl    %esi,           %eax
906         xorl    %esi,           %edi
907
908         roll    $18,            %edi
909         movl    %edi,           %esi
910         xorl    %eax,           %edi
911         andl    $0xfff0000f,    %edi
912         xorl    %edi,           %esi
913         xorl    %edi,           %eax
914
915         roll    $12,            %esi
916         movl    %esi,           %edi
917         xorl    %eax,           %esi
918         andl    $0xf0f0f0f0,    %esi
919         xorl    %esi,           %edi
920         xorl    %esi,           %eax
921
922         rorl    $4,             %eax
923         movl    %eax,           (%edx)
924         movl    %edi,           4(%edx)
925         popl    %ecx
926         popl    %edi
927         popl    %esi
928         popl    %ebx
929         popl    %ebp
930         ret
931 .fcrypt_body_end:
932         .size   fcrypt_body,.fcrypt_body_end-fcrypt_body
933 .ident  "fcrypt_body"