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