OSDN Git Service

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