Randomize ephermal source ports.
[dragonfly.git] / sys / crypto / des / arch / i386 / des_enc.S
1 /* $NetBSD: des_enc.S,v 1.1 2001/09/09 11:01:02 tls Exp $ */
2 /* $FreeBSD: src/sys/crypto/des/arch/i386/des_enc.S,v 1.1.2.1 2002/03/26 10:12:25 ume Exp $ */
3 /* $DragonFly: src/sys/crypto/des/arch/i386/des_enc.S,v 1.3 2003/11/12 22:08:03 dillon Exp $ */
4
5 /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
6  * All rights reserved.
7  *
8  * This package is an SSL implementation written
9  * by Eric Young (eay@cryptsoft.com).
10  * The implementation was written so as to conform with Netscapes SSL.
11  *
12  * This library is free for commercial and non-commercial use as long as
13  * the following conditions are aheared to.  The following conditions
14  * apply to all code found in this distribution, be it the RC4, RSA,
15  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
16  * included with this distribution is covered by the same copyright terms
17  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
18  *
19  * Copyright remains Eric Young's, and as such any Copyright notices in
20  * the code are not to be removed.
21  * If this package is used in a product, Eric Young should be given attribution
22  * as the author of the parts of the library used.
23  * This can be in the form of a textual message at program startup or
24  * in documentation (online or textual) provided with the package.
25  *
26  * Redistribution and use in source and binary forms, with or without
27  * modification, are permitted provided that the following conditions
28  * are met:
29  * 1. Redistributions of source code must retain the copyright
30  *    notice, this list of conditions and the following disclaimer.
31  * 2. Redistributions in binary form must reproduce the above copyright
32  *    notice, this list of conditions and the following disclaimer in the
33  *    documentation and/or other materials provided with the distribution.
34  * 3. All advertising materials mentioning features or use of this software
35  *    must display the following acknowledgement:
36  *    "This product includes cryptographic software written by
37  *     Eric Young (eay@cryptsoft.com)"
38  *    The word 'cryptographic' can be left out if the rouines from the library
39  *    being used are not cryptographic related :-).
40  * 4. If you include any Windows specific code (or a derivative thereof) from
41  *    the apps directory (application code) you must include an acknowledgement:
42  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
43  *
44  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
45  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
46  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
47  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
48  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
49  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
50  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
51  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
52  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
53  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
54  * SUCH DAMAGE.
55  *
56  * The licence and distribution terms for any publically available version or
57  * derivative of this code cannot be changed.  i.e. this code cannot simply be
58  * copied and put under another distribution licence
59  * [including the GNU Public Licence.]
60  */
61
62 /*
63  * Modified from the output of `perl des686.pl elf' by 
64  * Thor Lancelot Simon <tls@netbsd.org>
65  */
66
67 #include <i386/include/asm.h>
68 #define _C_LABEL        CNAME
69
70 ENTRY(des_encrypt1)
71         pushl   %esi
72         pushl   %edi
73
74         /* Load the 2 words */
75         movl    12(%esp),       %esi
76         xorl    %ecx,           %ecx
77         pushl   %ebx
78         pushl   %ebp
79         movl    (%esi),         %eax
80         movl    28(%esp),       %ebx
81         movl    4(%esi),        %edi
82
83         /* IP */
84         roll    $4,             %eax
85         movl    %eax,           %esi
86         xorl    %edi,           %eax
87         andl    $0xf0f0f0f0,    %eax
88         xorl    %eax,           %esi
89         xorl    %eax,           %edi
90
91         roll    $20,            %edi
92         movl    %edi,           %eax
93         xorl    %esi,           %edi
94         andl    $0xfff0000f,    %edi
95         xorl    %edi,           %eax
96         xorl    %edi,           %esi
97
98         roll    $14,            %eax
99         movl    %eax,           %edi
100         xorl    %esi,           %eax
101         andl    $0x33333333,    %eax
102         xorl    %eax,           %edi
103         xorl    %eax,           %esi
104
105         roll    $22,            %esi
106         movl    %esi,           %eax
107         xorl    %edi,           %esi
108         andl    $0x03fc03fc,    %esi
109         xorl    %esi,           %eax
110         xorl    %esi,           %edi
111
112         roll    $9,             %eax
113         movl    %eax,           %esi
114         xorl    %edi,           %eax
115         andl    $0xaaaaaaaa,    %eax
116         xorl    %eax,           %esi
117         xorl    %eax,           %edi
118
119 .byte 209
120 .byte 199               # roll $1 %edi 
121         movl    24(%esp),       %ebp
122         cmpl    $0,             %ebx
123         je      .L000start_decrypt
124
125         /* Round 0 */
126         movl    (%ebp),         %eax
127         xorl    %ebx,           %ebx
128         movl    4(%ebp),        %edx
129         xorl    %esi,           %eax
130         xorl    %esi,           %edx
131         andl    $0xfcfcfcfc,    %eax
132         andl    $0xcfcfcfcf,    %edx
133         movb    %al,            %bl
134         movb    %ah,            %cl
135         rorl    $4,             %edx
136         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
137         movb    %dl,            %bl
138         xorl    %ebp,           %edi
139         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
140         xorl    %ebp,           %edi
141         movb    %dh,            %cl
142         shrl    $16,            %eax
143         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
144         xorl    %ebp,           %edi
145         movb    %ah,            %bl
146         shrl    $16,            %edx
147         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
148         xorl    %ebp,           %edi
149         movl    24(%esp),       %ebp
150         movb    %dh,            %cl
151         andl    $0xff,          %eax
152         andl    $0xff,          %edx
153         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
154         xorl    %ebx,           %edi
155         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
156         xorl    %ebx,           %edi
157         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
158         xorl    %ebx,           %edi
159         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
160         xorl    %ebx,           %edi
161
162         /* Round 1 */
163         movl    8(%ebp),        %eax
164         xorl    %ebx,           %ebx
165         movl    12(%ebp),       %edx
166         xorl    %edi,           %eax
167         xorl    %edi,           %edx
168         andl    $0xfcfcfcfc,    %eax
169         andl    $0xcfcfcfcf,    %edx
170         movb    %al,            %bl
171         movb    %ah,            %cl
172         rorl    $4,             %edx
173         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
174         movb    %dl,            %bl
175         xorl    %ebp,           %esi
176         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
177         xorl    %ebp,           %esi
178         movb    %dh,            %cl
179         shrl    $16,            %eax
180         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
181         xorl    %ebp,           %esi
182         movb    %ah,            %bl
183         shrl    $16,            %edx
184         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
185         xorl    %ebp,           %esi
186         movl    24(%esp),       %ebp
187         movb    %dh,            %cl
188         andl    $0xff,          %eax
189         andl    $0xff,          %edx
190         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
191         xorl    %ebx,           %esi
192         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
193         xorl    %ebx,           %esi
194         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
195         xorl    %ebx,           %esi
196         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
197         xorl    %ebx,           %esi
198
199         /* Round 2 */
200         movl    16(%ebp),       %eax
201         xorl    %ebx,           %ebx
202         movl    20(%ebp),       %edx
203         xorl    %esi,           %eax
204         xorl    %esi,           %edx
205         andl    $0xfcfcfcfc,    %eax
206         andl    $0xcfcfcfcf,    %edx
207         movb    %al,            %bl
208         movb    %ah,            %cl
209         rorl    $4,             %edx
210         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
211         movb    %dl,            %bl
212         xorl    %ebp,           %edi
213         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
214         xorl    %ebp,           %edi
215         movb    %dh,            %cl
216         shrl    $16,            %eax
217         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
218         xorl    %ebp,           %edi
219         movb    %ah,            %bl
220         shrl    $16,            %edx
221         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
222         xorl    %ebp,           %edi
223         movl    24(%esp),       %ebp
224         movb    %dh,            %cl
225         andl    $0xff,          %eax
226         andl    $0xff,          %edx
227         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
228         xorl    %ebx,           %edi
229         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
230         xorl    %ebx,           %edi
231         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
232         xorl    %ebx,           %edi
233         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
234         xorl    %ebx,           %edi
235
236         /* Round 3 */
237         movl    24(%ebp),       %eax
238         xorl    %ebx,           %ebx
239         movl    28(%ebp),       %edx
240         xorl    %edi,           %eax
241         xorl    %edi,           %edx
242         andl    $0xfcfcfcfc,    %eax
243         andl    $0xcfcfcfcf,    %edx
244         movb    %al,            %bl
245         movb    %ah,            %cl
246         rorl    $4,             %edx
247         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
248         movb    %dl,            %bl
249         xorl    %ebp,           %esi
250         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
251         xorl    %ebp,           %esi
252         movb    %dh,            %cl
253         shrl    $16,            %eax
254         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
255         xorl    %ebp,           %esi
256         movb    %ah,            %bl
257         shrl    $16,            %edx
258         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
259         xorl    %ebp,           %esi
260         movl    24(%esp),       %ebp
261         movb    %dh,            %cl
262         andl    $0xff,          %eax
263         andl    $0xff,          %edx
264         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
265         xorl    %ebx,           %esi
266         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
267         xorl    %ebx,           %esi
268         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
269         xorl    %ebx,           %esi
270         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
271         xorl    %ebx,           %esi
272
273         /* Round 4 */
274         movl    32(%ebp),       %eax
275         xorl    %ebx,           %ebx
276         movl    36(%ebp),       %edx
277         xorl    %esi,           %eax
278         xorl    %esi,           %edx
279         andl    $0xfcfcfcfc,    %eax
280         andl    $0xcfcfcfcf,    %edx
281         movb    %al,            %bl
282         movb    %ah,            %cl
283         rorl    $4,             %edx
284         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
285         movb    %dl,            %bl
286         xorl    %ebp,           %edi
287         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
288         xorl    %ebp,           %edi
289         movb    %dh,            %cl
290         shrl    $16,            %eax
291         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
292         xorl    %ebp,           %edi
293         movb    %ah,            %bl
294         shrl    $16,            %edx
295         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
296         xorl    %ebp,           %edi
297         movl    24(%esp),       %ebp
298         movb    %dh,            %cl
299         andl    $0xff,          %eax
300         andl    $0xff,          %edx
301         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
302         xorl    %ebx,           %edi
303         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
304         xorl    %ebx,           %edi
305         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
306         xorl    %ebx,           %edi
307         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
308         xorl    %ebx,           %edi
309
310         /* Round 5 */
311         movl    40(%ebp),       %eax
312         xorl    %ebx,           %ebx
313         movl    44(%ebp),       %edx
314         xorl    %edi,           %eax
315         xorl    %edi,           %edx
316         andl    $0xfcfcfcfc,    %eax
317         andl    $0xcfcfcfcf,    %edx
318         movb    %al,            %bl
319         movb    %ah,            %cl
320         rorl    $4,             %edx
321         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
322         movb    %dl,            %bl
323         xorl    %ebp,           %esi
324         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
325         xorl    %ebp,           %esi
326         movb    %dh,            %cl
327         shrl    $16,            %eax
328         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
329         xorl    %ebp,           %esi
330         movb    %ah,            %bl
331         shrl    $16,            %edx
332         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
333         xorl    %ebp,           %esi
334         movl    24(%esp),       %ebp
335         movb    %dh,            %cl
336         andl    $0xff,          %eax
337         andl    $0xff,          %edx
338         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
339         xorl    %ebx,           %esi
340         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
341         xorl    %ebx,           %esi
342         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
343         xorl    %ebx,           %esi
344         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
345         xorl    %ebx,           %esi
346
347         /* Round 6 */
348         movl    48(%ebp),       %eax
349         xorl    %ebx,           %ebx
350         movl    52(%ebp),       %edx
351         xorl    %esi,           %eax
352         xorl    %esi,           %edx
353         andl    $0xfcfcfcfc,    %eax
354         andl    $0xcfcfcfcf,    %edx
355         movb    %al,            %bl
356         movb    %ah,            %cl
357         rorl    $4,             %edx
358         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
359         movb    %dl,            %bl
360         xorl    %ebp,           %edi
361         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
362         xorl    %ebp,           %edi
363         movb    %dh,            %cl
364         shrl    $16,            %eax
365         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
366         xorl    %ebp,           %edi
367         movb    %ah,            %bl
368         shrl    $16,            %edx
369         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
370         xorl    %ebp,           %edi
371         movl    24(%esp),       %ebp
372         movb    %dh,            %cl
373         andl    $0xff,          %eax
374         andl    $0xff,          %edx
375         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
376         xorl    %ebx,           %edi
377         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
378         xorl    %ebx,           %edi
379         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
380         xorl    %ebx,           %edi
381         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
382         xorl    %ebx,           %edi
383
384         /* Round 7 */
385         movl    56(%ebp),       %eax
386         xorl    %ebx,           %ebx
387         movl    60(%ebp),       %edx
388         xorl    %edi,           %eax
389         xorl    %edi,           %edx
390         andl    $0xfcfcfcfc,    %eax
391         andl    $0xcfcfcfcf,    %edx
392         movb    %al,            %bl
393         movb    %ah,            %cl
394         rorl    $4,             %edx
395         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
396         movb    %dl,            %bl
397         xorl    %ebp,           %esi
398         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
399         xorl    %ebp,           %esi
400         movb    %dh,            %cl
401         shrl    $16,            %eax
402         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
403         xorl    %ebp,           %esi
404         movb    %ah,            %bl
405         shrl    $16,            %edx
406         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
407         xorl    %ebp,           %esi
408         movl    24(%esp),       %ebp
409         movb    %dh,            %cl
410         andl    $0xff,          %eax
411         andl    $0xff,          %edx
412         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
413         xorl    %ebx,           %esi
414         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
415         xorl    %ebx,           %esi
416         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
417         xorl    %ebx,           %esi
418         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
419         xorl    %ebx,           %esi
420
421         /* Round 8 */
422         movl    64(%ebp),       %eax
423         xorl    %ebx,           %ebx
424         movl    68(%ebp),       %edx
425         xorl    %esi,           %eax
426         xorl    %esi,           %edx
427         andl    $0xfcfcfcfc,    %eax
428         andl    $0xcfcfcfcf,    %edx
429         movb    %al,            %bl
430         movb    %ah,            %cl
431         rorl    $4,             %edx
432         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
433         movb    %dl,            %bl
434         xorl    %ebp,           %edi
435         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
436         xorl    %ebp,           %edi
437         movb    %dh,            %cl
438         shrl    $16,            %eax
439         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
440         xorl    %ebp,           %edi
441         movb    %ah,            %bl
442         shrl    $16,            %edx
443         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
444         xorl    %ebp,           %edi
445         movl    24(%esp),       %ebp
446         movb    %dh,            %cl
447         andl    $0xff,          %eax
448         andl    $0xff,          %edx
449         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
450         xorl    %ebx,           %edi
451         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
452         xorl    %ebx,           %edi
453         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
454         xorl    %ebx,           %edi
455         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
456         xorl    %ebx,           %edi
457
458         /* Round 9 */
459         movl    72(%ebp),       %eax
460         xorl    %ebx,           %ebx
461         movl    76(%ebp),       %edx
462         xorl    %edi,           %eax
463         xorl    %edi,           %edx
464         andl    $0xfcfcfcfc,    %eax
465         andl    $0xcfcfcfcf,    %edx
466         movb    %al,            %bl
467         movb    %ah,            %cl
468         rorl    $4,             %edx
469         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
470         movb    %dl,            %bl
471         xorl    %ebp,           %esi
472         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
473         xorl    %ebp,           %esi
474         movb    %dh,            %cl
475         shrl    $16,            %eax
476         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
477         xorl    %ebp,           %esi
478         movb    %ah,            %bl
479         shrl    $16,            %edx
480         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
481         xorl    %ebp,           %esi
482         movl    24(%esp),       %ebp
483         movb    %dh,            %cl
484         andl    $0xff,          %eax
485         andl    $0xff,          %edx
486         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
487         xorl    %ebx,           %esi
488         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
489         xorl    %ebx,           %esi
490         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
491         xorl    %ebx,           %esi
492         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
493         xorl    %ebx,           %esi
494
495         /* Round 10 */
496         movl    80(%ebp),       %eax
497         xorl    %ebx,           %ebx
498         movl    84(%ebp),       %edx
499         xorl    %esi,           %eax
500         xorl    %esi,           %edx
501         andl    $0xfcfcfcfc,    %eax
502         andl    $0xcfcfcfcf,    %edx
503         movb    %al,            %bl
504         movb    %ah,            %cl
505         rorl    $4,             %edx
506         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
507         movb    %dl,            %bl
508         xorl    %ebp,           %edi
509         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
510         xorl    %ebp,           %edi
511         movb    %dh,            %cl
512         shrl    $16,            %eax
513         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
514         xorl    %ebp,           %edi
515         movb    %ah,            %bl
516         shrl    $16,            %edx
517         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
518         xorl    %ebp,           %edi
519         movl    24(%esp),       %ebp
520         movb    %dh,            %cl
521         andl    $0xff,          %eax
522         andl    $0xff,          %edx
523         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
524         xorl    %ebx,           %edi
525         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
526         xorl    %ebx,           %edi
527         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
528         xorl    %ebx,           %edi
529         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
530         xorl    %ebx,           %edi
531
532         /* Round 11 */
533         movl    88(%ebp),       %eax
534         xorl    %ebx,           %ebx
535         movl    92(%ebp),       %edx
536         xorl    %edi,           %eax
537         xorl    %edi,           %edx
538         andl    $0xfcfcfcfc,    %eax
539         andl    $0xcfcfcfcf,    %edx
540         movb    %al,            %bl
541         movb    %ah,            %cl
542         rorl    $4,             %edx
543         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
544         movb    %dl,            %bl
545         xorl    %ebp,           %esi
546         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
547         xorl    %ebp,           %esi
548         movb    %dh,            %cl
549         shrl    $16,            %eax
550         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
551         xorl    %ebp,           %esi
552         movb    %ah,            %bl
553         shrl    $16,            %edx
554         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
555         xorl    %ebp,           %esi
556         movl    24(%esp),       %ebp
557         movb    %dh,            %cl
558         andl    $0xff,          %eax
559         andl    $0xff,          %edx
560         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
561         xorl    %ebx,           %esi
562         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
563         xorl    %ebx,           %esi
564         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
565         xorl    %ebx,           %esi
566         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
567         xorl    %ebx,           %esi
568
569         /* Round 12 */
570         movl    96(%ebp),       %eax
571         xorl    %ebx,           %ebx
572         movl    100(%ebp),      %edx
573         xorl    %esi,           %eax
574         xorl    %esi,           %edx
575         andl    $0xfcfcfcfc,    %eax
576         andl    $0xcfcfcfcf,    %edx
577         movb    %al,            %bl
578         movb    %ah,            %cl
579         rorl    $4,             %edx
580         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
581         movb    %dl,            %bl
582         xorl    %ebp,           %edi
583         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
584         xorl    %ebp,           %edi
585         movb    %dh,            %cl
586         shrl    $16,            %eax
587         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
588         xorl    %ebp,           %edi
589         movb    %ah,            %bl
590         shrl    $16,            %edx
591         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
592         xorl    %ebp,           %edi
593         movl    24(%esp),       %ebp
594         movb    %dh,            %cl
595         andl    $0xff,          %eax
596         andl    $0xff,          %edx
597         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
598         xorl    %ebx,           %edi
599         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
600         xorl    %ebx,           %edi
601         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
602         xorl    %ebx,           %edi
603         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
604         xorl    %ebx,           %edi
605
606         /* Round 13 */
607         movl    104(%ebp),      %eax
608         xorl    %ebx,           %ebx
609         movl    108(%ebp),      %edx
610         xorl    %edi,           %eax
611         xorl    %edi,           %edx
612         andl    $0xfcfcfcfc,    %eax
613         andl    $0xcfcfcfcf,    %edx
614         movb    %al,            %bl
615         movb    %ah,            %cl
616         rorl    $4,             %edx
617         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
618         movb    %dl,            %bl
619         xorl    %ebp,           %esi
620         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
621         xorl    %ebp,           %esi
622         movb    %dh,            %cl
623         shrl    $16,            %eax
624         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
625         xorl    %ebp,           %esi
626         movb    %ah,            %bl
627         shrl    $16,            %edx
628         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
629         xorl    %ebp,           %esi
630         movl    24(%esp),       %ebp
631         movb    %dh,            %cl
632         andl    $0xff,          %eax
633         andl    $0xff,          %edx
634         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
635         xorl    %ebx,           %esi
636         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
637         xorl    %ebx,           %esi
638         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
639         xorl    %ebx,           %esi
640         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
641         xorl    %ebx,           %esi
642
643         /* Round 14 */
644         movl    112(%ebp),      %eax
645         xorl    %ebx,           %ebx
646         movl    116(%ebp),      %edx
647         xorl    %esi,           %eax
648         xorl    %esi,           %edx
649         andl    $0xfcfcfcfc,    %eax
650         andl    $0xcfcfcfcf,    %edx
651         movb    %al,            %bl
652         movb    %ah,            %cl
653         rorl    $4,             %edx
654         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
655         movb    %dl,            %bl
656         xorl    %ebp,           %edi
657         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
658         xorl    %ebp,           %edi
659         movb    %dh,            %cl
660         shrl    $16,            %eax
661         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
662         xorl    %ebp,           %edi
663         movb    %ah,            %bl
664         shrl    $16,            %edx
665         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
666         xorl    %ebp,           %edi
667         movl    24(%esp),       %ebp
668         movb    %dh,            %cl
669         andl    $0xff,          %eax
670         andl    $0xff,          %edx
671         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
672         xorl    %ebx,           %edi
673         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
674         xorl    %ebx,           %edi
675         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
676         xorl    %ebx,           %edi
677         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
678         xorl    %ebx,           %edi
679
680         /* Round 15 */
681         movl    120(%ebp),      %eax
682         xorl    %ebx,           %ebx
683         movl    124(%ebp),      %edx
684         xorl    %edi,           %eax
685         xorl    %edi,           %edx
686         andl    $0xfcfcfcfc,    %eax
687         andl    $0xcfcfcfcf,    %edx
688         movb    %al,            %bl
689         movb    %ah,            %cl
690         rorl    $4,             %edx
691         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
692         movb    %dl,            %bl
693         xorl    %ebp,           %esi
694         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
695         xorl    %ebp,           %esi
696         movb    %dh,            %cl
697         shrl    $16,            %eax
698         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
699         xorl    %ebp,           %esi
700         movb    %ah,            %bl
701         shrl    $16,            %edx
702         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
703         xorl    %ebp,           %esi
704         movl    24(%esp),       %ebp
705         movb    %dh,            %cl
706         andl    $0xff,          %eax
707         andl    $0xff,          %edx
708         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
709         xorl    %ebx,           %esi
710         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
711         xorl    %ebx,           %esi
712         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
713         xorl    %ebx,           %esi
714         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
715         xorl    %ebx,           %esi
716         jmp     .L001end
717 .L000start_decrypt:
718
719         /* Round 15 */
720         movl    120(%ebp),      %eax
721         xorl    %ebx,           %ebx
722         movl    124(%ebp),      %edx
723         xorl    %esi,           %eax
724         xorl    %esi,           %edx
725         andl    $0xfcfcfcfc,    %eax
726         andl    $0xcfcfcfcf,    %edx
727         movb    %al,            %bl
728         movb    %ah,            %cl
729         rorl    $4,             %edx
730         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
731         movb    %dl,            %bl
732         xorl    %ebp,           %edi
733         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
734         xorl    %ebp,           %edi
735         movb    %dh,            %cl
736         shrl    $16,            %eax
737         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
738         xorl    %ebp,           %edi
739         movb    %ah,            %bl
740         shrl    $16,            %edx
741         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
742         xorl    %ebp,           %edi
743         movl    24(%esp),       %ebp
744         movb    %dh,            %cl
745         andl    $0xff,          %eax
746         andl    $0xff,          %edx
747         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
748         xorl    %ebx,           %edi
749         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
750         xorl    %ebx,           %edi
751         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
752         xorl    %ebx,           %edi
753         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
754         xorl    %ebx,           %edi
755
756         /* Round 14 */
757         movl    112(%ebp),      %eax
758         xorl    %ebx,           %ebx
759         movl    116(%ebp),      %edx
760         xorl    %edi,           %eax
761         xorl    %edi,           %edx
762         andl    $0xfcfcfcfc,    %eax
763         andl    $0xcfcfcfcf,    %edx
764         movb    %al,            %bl
765         movb    %ah,            %cl
766         rorl    $4,             %edx
767         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
768         movb    %dl,            %bl
769         xorl    %ebp,           %esi
770         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
771         xorl    %ebp,           %esi
772         movb    %dh,            %cl
773         shrl    $16,            %eax
774         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
775         xorl    %ebp,           %esi
776         movb    %ah,            %bl
777         shrl    $16,            %edx
778         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
779         xorl    %ebp,           %esi
780         movl    24(%esp),       %ebp
781         movb    %dh,            %cl
782         andl    $0xff,          %eax
783         andl    $0xff,          %edx
784         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
785         xorl    %ebx,           %esi
786         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
787         xorl    %ebx,           %esi
788         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
789         xorl    %ebx,           %esi
790         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
791         xorl    %ebx,           %esi
792
793         /* Round 13 */
794         movl    104(%ebp),      %eax
795         xorl    %ebx,           %ebx
796         movl    108(%ebp),      %edx
797         xorl    %esi,           %eax
798         xorl    %esi,           %edx
799         andl    $0xfcfcfcfc,    %eax
800         andl    $0xcfcfcfcf,    %edx
801         movb    %al,            %bl
802         movb    %ah,            %cl
803         rorl    $4,             %edx
804         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
805         movb    %dl,            %bl
806         xorl    %ebp,           %edi
807         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
808         xorl    %ebp,           %edi
809         movb    %dh,            %cl
810         shrl    $16,            %eax
811         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
812         xorl    %ebp,           %edi
813         movb    %ah,            %bl
814         shrl    $16,            %edx
815         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
816         xorl    %ebp,           %edi
817         movl    24(%esp),       %ebp
818         movb    %dh,            %cl
819         andl    $0xff,          %eax
820         andl    $0xff,          %edx
821         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
822         xorl    %ebx,           %edi
823         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
824         xorl    %ebx,           %edi
825         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
826         xorl    %ebx,           %edi
827         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
828         xorl    %ebx,           %edi
829
830         /* Round 12 */
831         movl    96(%ebp),       %eax
832         xorl    %ebx,           %ebx
833         movl    100(%ebp),      %edx
834         xorl    %edi,           %eax
835         xorl    %edi,           %edx
836         andl    $0xfcfcfcfc,    %eax
837         andl    $0xcfcfcfcf,    %edx
838         movb    %al,            %bl
839         movb    %ah,            %cl
840         rorl    $4,             %edx
841         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
842         movb    %dl,            %bl
843         xorl    %ebp,           %esi
844         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
845         xorl    %ebp,           %esi
846         movb    %dh,            %cl
847         shrl    $16,            %eax
848         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
849         xorl    %ebp,           %esi
850         movb    %ah,            %bl
851         shrl    $16,            %edx
852         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
853         xorl    %ebp,           %esi
854         movl    24(%esp),       %ebp
855         movb    %dh,            %cl
856         andl    $0xff,          %eax
857         andl    $0xff,          %edx
858         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
859         xorl    %ebx,           %esi
860         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
861         xorl    %ebx,           %esi
862         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
863         xorl    %ebx,           %esi
864         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
865         xorl    %ebx,           %esi
866
867         /* Round 11 */
868         movl    88(%ebp),       %eax
869         xorl    %ebx,           %ebx
870         movl    92(%ebp),       %edx
871         xorl    %esi,           %eax
872         xorl    %esi,           %edx
873         andl    $0xfcfcfcfc,    %eax
874         andl    $0xcfcfcfcf,    %edx
875         movb    %al,            %bl
876         movb    %ah,            %cl
877         rorl    $4,             %edx
878         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
879         movb    %dl,            %bl
880         xorl    %ebp,           %edi
881         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
882         xorl    %ebp,           %edi
883         movb    %dh,            %cl
884         shrl    $16,            %eax
885         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
886         xorl    %ebp,           %edi
887         movb    %ah,            %bl
888         shrl    $16,            %edx
889         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
890         xorl    %ebp,           %edi
891         movl    24(%esp),       %ebp
892         movb    %dh,            %cl
893         andl    $0xff,          %eax
894         andl    $0xff,          %edx
895         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
896         xorl    %ebx,           %edi
897         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
898         xorl    %ebx,           %edi
899         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
900         xorl    %ebx,           %edi
901         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
902         xorl    %ebx,           %edi
903
904         /* Round 10 */
905         movl    80(%ebp),       %eax
906         xorl    %ebx,           %ebx
907         movl    84(%ebp),       %edx
908         xorl    %edi,           %eax
909         xorl    %edi,           %edx
910         andl    $0xfcfcfcfc,    %eax
911         andl    $0xcfcfcfcf,    %edx
912         movb    %al,            %bl
913         movb    %ah,            %cl
914         rorl    $4,             %edx
915         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
916         movb    %dl,            %bl
917         xorl    %ebp,           %esi
918         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
919         xorl    %ebp,           %esi
920         movb    %dh,            %cl
921         shrl    $16,            %eax
922         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
923         xorl    %ebp,           %esi
924         movb    %ah,            %bl
925         shrl    $16,            %edx
926         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
927         xorl    %ebp,           %esi
928         movl    24(%esp),       %ebp
929         movb    %dh,            %cl
930         andl    $0xff,          %eax
931         andl    $0xff,          %edx
932         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
933         xorl    %ebx,           %esi
934         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
935         xorl    %ebx,           %esi
936         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
937         xorl    %ebx,           %esi
938         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
939         xorl    %ebx,           %esi
940
941         /* Round 9 */
942         movl    72(%ebp),       %eax
943         xorl    %ebx,           %ebx
944         movl    76(%ebp),       %edx
945         xorl    %esi,           %eax
946         xorl    %esi,           %edx
947         andl    $0xfcfcfcfc,    %eax
948         andl    $0xcfcfcfcf,    %edx
949         movb    %al,            %bl
950         movb    %ah,            %cl
951         rorl    $4,             %edx
952         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
953         movb    %dl,            %bl
954         xorl    %ebp,           %edi
955         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
956         xorl    %ebp,           %edi
957         movb    %dh,            %cl
958         shrl    $16,            %eax
959         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
960         xorl    %ebp,           %edi
961         movb    %ah,            %bl
962         shrl    $16,            %edx
963         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
964         xorl    %ebp,           %edi
965         movl    24(%esp),       %ebp
966         movb    %dh,            %cl
967         andl    $0xff,          %eax
968         andl    $0xff,          %edx
969         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
970         xorl    %ebx,           %edi
971         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
972         xorl    %ebx,           %edi
973         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
974         xorl    %ebx,           %edi
975         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
976         xorl    %ebx,           %edi
977
978         /* Round 8 */
979         movl    64(%ebp),       %eax
980         xorl    %ebx,           %ebx
981         movl    68(%ebp),       %edx
982         xorl    %edi,           %eax
983         xorl    %edi,           %edx
984         andl    $0xfcfcfcfc,    %eax
985         andl    $0xcfcfcfcf,    %edx
986         movb    %al,            %bl
987         movb    %ah,            %cl
988         rorl    $4,             %edx
989         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
990         movb    %dl,            %bl
991         xorl    %ebp,           %esi
992         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
993         xorl    %ebp,           %esi
994         movb    %dh,            %cl
995         shrl    $16,            %eax
996         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
997         xorl    %ebp,           %esi
998         movb    %ah,            %bl
999         shrl    $16,            %edx
1000         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1001         xorl    %ebp,           %esi
1002         movl    24(%esp),       %ebp
1003         movb    %dh,            %cl
1004         andl    $0xff,          %eax
1005         andl    $0xff,          %edx
1006         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1007         xorl    %ebx,           %esi
1008         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1009         xorl    %ebx,           %esi
1010         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1011         xorl    %ebx,           %esi
1012         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1013         xorl    %ebx,           %esi
1014
1015         /* Round 7 */
1016         movl    56(%ebp),       %eax
1017         xorl    %ebx,           %ebx
1018         movl    60(%ebp),       %edx
1019         xorl    %esi,           %eax
1020         xorl    %esi,           %edx
1021         andl    $0xfcfcfcfc,    %eax
1022         andl    $0xcfcfcfcf,    %edx
1023         movb    %al,            %bl
1024         movb    %ah,            %cl
1025         rorl    $4,             %edx
1026         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
1027         movb    %dl,            %bl
1028         xorl    %ebp,           %edi
1029         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1030         xorl    %ebp,           %edi
1031         movb    %dh,            %cl
1032         shrl    $16,            %eax
1033         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1034         xorl    %ebp,           %edi
1035         movb    %ah,            %bl
1036         shrl    $16,            %edx
1037         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1038         xorl    %ebp,           %edi
1039         movl    24(%esp),       %ebp
1040         movb    %dh,            %cl
1041         andl    $0xff,          %eax
1042         andl    $0xff,          %edx
1043         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1044         xorl    %ebx,           %edi
1045         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1046         xorl    %ebx,           %edi
1047         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1048         xorl    %ebx,           %edi
1049         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1050         xorl    %ebx,           %edi
1051
1052         /* Round 6 */
1053         movl    48(%ebp),       %eax
1054         xorl    %ebx,           %ebx
1055         movl    52(%ebp),       %edx
1056         xorl    %edi,           %eax
1057         xorl    %edi,           %edx
1058         andl    $0xfcfcfcfc,    %eax
1059         andl    $0xcfcfcfcf,    %edx
1060         movb    %al,            %bl
1061         movb    %ah,            %cl
1062         rorl    $4,             %edx
1063         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
1064         movb    %dl,            %bl
1065         xorl    %ebp,           %esi
1066         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1067         xorl    %ebp,           %esi
1068         movb    %dh,            %cl
1069         shrl    $16,            %eax
1070         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1071         xorl    %ebp,           %esi
1072         movb    %ah,            %bl
1073         shrl    $16,            %edx
1074         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1075         xorl    %ebp,           %esi
1076         movl    24(%esp),       %ebp
1077         movb    %dh,            %cl
1078         andl    $0xff,          %eax
1079         andl    $0xff,          %edx
1080         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1081         xorl    %ebx,           %esi
1082         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1083         xorl    %ebx,           %esi
1084         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1085         xorl    %ebx,           %esi
1086         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1087         xorl    %ebx,           %esi
1088
1089         /* Round 5 */
1090         movl    40(%ebp),       %eax
1091         xorl    %ebx,           %ebx
1092         movl    44(%ebp),       %edx
1093         xorl    %esi,           %eax
1094         xorl    %esi,           %edx
1095         andl    $0xfcfcfcfc,    %eax
1096         andl    $0xcfcfcfcf,    %edx
1097         movb    %al,            %bl
1098         movb    %ah,            %cl
1099         rorl    $4,             %edx
1100         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
1101         movb    %dl,            %bl
1102         xorl    %ebp,           %edi
1103         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1104         xorl    %ebp,           %edi
1105         movb    %dh,            %cl
1106         shrl    $16,            %eax
1107         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1108         xorl    %ebp,           %edi
1109         movb    %ah,            %bl
1110         shrl    $16,            %edx
1111         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1112         xorl    %ebp,           %edi
1113         movl    24(%esp),       %ebp
1114         movb    %dh,            %cl
1115         andl    $0xff,          %eax
1116         andl    $0xff,          %edx
1117         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1118         xorl    %ebx,           %edi
1119         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1120         xorl    %ebx,           %edi
1121         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1122         xorl    %ebx,           %edi
1123         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1124         xorl    %ebx,           %edi
1125
1126         /* Round 4 */
1127         movl    32(%ebp),       %eax
1128         xorl    %ebx,           %ebx
1129         movl    36(%ebp),       %edx
1130         xorl    %edi,           %eax
1131         xorl    %edi,           %edx
1132         andl    $0xfcfcfcfc,    %eax
1133         andl    $0xcfcfcfcf,    %edx
1134         movb    %al,            %bl
1135         movb    %ah,            %cl
1136         rorl    $4,             %edx
1137         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
1138         movb    %dl,            %bl
1139         xorl    %ebp,           %esi
1140         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1141         xorl    %ebp,           %esi
1142         movb    %dh,            %cl
1143         shrl    $16,            %eax
1144         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1145         xorl    %ebp,           %esi
1146         movb    %ah,            %bl
1147         shrl    $16,            %edx
1148         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1149         xorl    %ebp,           %esi
1150         movl    24(%esp),       %ebp
1151         movb    %dh,            %cl
1152         andl    $0xff,          %eax
1153         andl    $0xff,          %edx
1154         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1155         xorl    %ebx,           %esi
1156         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1157         xorl    %ebx,           %esi
1158         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1159         xorl    %ebx,           %esi
1160         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1161         xorl    %ebx,           %esi
1162
1163         /* Round 3 */
1164         movl    24(%ebp),       %eax
1165         xorl    %ebx,           %ebx
1166         movl    28(%ebp),       %edx
1167         xorl    %esi,           %eax
1168         xorl    %esi,           %edx
1169         andl    $0xfcfcfcfc,    %eax
1170         andl    $0xcfcfcfcf,    %edx
1171         movb    %al,            %bl
1172         movb    %ah,            %cl
1173         rorl    $4,             %edx
1174         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
1175         movb    %dl,            %bl
1176         xorl    %ebp,           %edi
1177         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1178         xorl    %ebp,           %edi
1179         movb    %dh,            %cl
1180         shrl    $16,            %eax
1181         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1182         xorl    %ebp,           %edi
1183         movb    %ah,            %bl
1184         shrl    $16,            %edx
1185         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1186         xorl    %ebp,           %edi
1187         movl    24(%esp),       %ebp
1188         movb    %dh,            %cl
1189         andl    $0xff,          %eax
1190         andl    $0xff,          %edx
1191         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1192         xorl    %ebx,           %edi
1193         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1194         xorl    %ebx,           %edi
1195         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1196         xorl    %ebx,           %edi
1197         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1198         xorl    %ebx,           %edi
1199
1200         /* Round 2 */
1201         movl    16(%ebp),       %eax
1202         xorl    %ebx,           %ebx
1203         movl    20(%ebp),       %edx
1204         xorl    %edi,           %eax
1205         xorl    %edi,           %edx
1206         andl    $0xfcfcfcfc,    %eax
1207         andl    $0xcfcfcfcf,    %edx
1208         movb    %al,            %bl
1209         movb    %ah,            %cl
1210         rorl    $4,             %edx
1211         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
1212         movb    %dl,            %bl
1213         xorl    %ebp,           %esi
1214         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1215         xorl    %ebp,           %esi
1216         movb    %dh,            %cl
1217         shrl    $16,            %eax
1218         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1219         xorl    %ebp,           %esi
1220         movb    %ah,            %bl
1221         shrl    $16,            %edx
1222         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1223         xorl    %ebp,           %esi
1224         movl    24(%esp),       %ebp
1225         movb    %dh,            %cl
1226         andl    $0xff,          %eax
1227         andl    $0xff,          %edx
1228         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1229         xorl    %ebx,           %esi
1230         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1231         xorl    %ebx,           %esi
1232         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1233         xorl    %ebx,           %esi
1234         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1235         xorl    %ebx,           %esi
1236
1237         /* Round 1 */
1238         movl    8(%ebp),        %eax
1239         xorl    %ebx,           %ebx
1240         movl    12(%ebp),       %edx
1241         xorl    %esi,           %eax
1242         xorl    %esi,           %edx
1243         andl    $0xfcfcfcfc,    %eax
1244         andl    $0xcfcfcfcf,    %edx
1245         movb    %al,            %bl
1246         movb    %ah,            %cl
1247         rorl    $4,             %edx
1248         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
1249         movb    %dl,            %bl
1250         xorl    %ebp,           %edi
1251         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1252         xorl    %ebp,           %edi
1253         movb    %dh,            %cl
1254         shrl    $16,            %eax
1255         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1256         xorl    %ebp,           %edi
1257         movb    %ah,            %bl
1258         shrl    $16,            %edx
1259         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1260         xorl    %ebp,           %edi
1261         movl    24(%esp),       %ebp
1262         movb    %dh,            %cl
1263         andl    $0xff,          %eax
1264         andl    $0xff,          %edx
1265         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1266         xorl    %ebx,           %edi
1267         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1268         xorl    %ebx,           %edi
1269         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1270         xorl    %ebx,           %edi
1271         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1272         xorl    %ebx,           %edi
1273
1274         /* Round 0 */
1275         movl    (%ebp),         %eax
1276         xorl    %ebx,           %ebx
1277         movl    4(%ebp),        %edx
1278         xorl    %edi,           %eax
1279         xorl    %edi,           %edx
1280         andl    $0xfcfcfcfc,    %eax
1281         andl    $0xcfcfcfcf,    %edx
1282         movb    %al,            %bl
1283         movb    %ah,            %cl
1284         rorl    $4,             %edx
1285         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
1286         movb    %dl,            %bl
1287         xorl    %ebp,           %esi
1288         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1289         xorl    %ebp,           %esi
1290         movb    %dh,            %cl
1291         shrl    $16,            %eax
1292         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1293         xorl    %ebp,           %esi
1294         movb    %ah,            %bl
1295         shrl    $16,            %edx
1296         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1297         xorl    %ebp,           %esi
1298         movl    24(%esp),       %ebp
1299         movb    %dh,            %cl
1300         andl    $0xff,          %eax
1301         andl    $0xff,          %edx
1302         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1303         xorl    %ebx,           %esi
1304         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1305         xorl    %ebx,           %esi
1306         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1307         xorl    %ebx,           %esi
1308         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1309         xorl    %ebx,           %esi
1310 .L001end:
1311
1312         /* FP */
1313         movl    20(%esp),       %edx
1314 .byte 209
1315 .byte 206               # rorl $1 %esi 
1316         movl    %edi,           %eax
1317         xorl    %esi,           %edi
1318         andl    $0xaaaaaaaa,    %edi
1319         xorl    %edi,           %eax
1320         xorl    %edi,           %esi
1321
1322         roll    $23,            %eax
1323         movl    %eax,           %edi
1324         xorl    %esi,           %eax
1325         andl    $0x03fc03fc,    %eax
1326         xorl    %eax,           %edi
1327         xorl    %eax,           %esi
1328
1329         roll    $10,            %edi
1330         movl    %edi,           %eax
1331         xorl    %esi,           %edi
1332         andl    $0x33333333,    %edi
1333         xorl    %edi,           %eax
1334         xorl    %edi,           %esi
1335
1336         roll    $18,            %esi
1337         movl    %esi,           %edi
1338         xorl    %eax,           %esi
1339         andl    $0xfff0000f,    %esi
1340         xorl    %esi,           %edi
1341         xorl    %esi,           %eax
1342
1343         roll    $12,            %edi
1344         movl    %edi,           %esi
1345         xorl    %eax,           %edi
1346         andl    $0xf0f0f0f0,    %edi
1347         xorl    %edi,           %esi
1348         xorl    %edi,           %eax
1349
1350         rorl    $4,             %eax
1351         movl    %eax,           (%edx)
1352         movl    %esi,           4(%edx)
1353         popl    %ebp
1354         popl    %ebx
1355         popl    %edi
1356         popl    %esi
1357         ret
1358 .L_des_encrypt1_end:
1359         .size   _C_LABEL(des_encrypt1),.L_des_encrypt1_end-_C_LABEL(des_encrypt1)
1360
1361 ENTRY(des_encrypt2)
1362         pushl   %esi
1363         pushl   %edi
1364
1365         /* Load the 2 words */
1366         movl    12(%esp),       %eax
1367         xorl    %ecx,           %ecx
1368         pushl   %ebx
1369         pushl   %ebp
1370         movl    (%eax),         %esi
1371         movl    28(%esp),       %ebx
1372         roll    $3,             %esi
1373         movl    4(%eax),        %edi
1374         roll    $3,             %edi
1375         movl    24(%esp),       %ebp
1376         cmpl    $0,             %ebx
1377         je      .L002start_decrypt
1378
1379         /* Round 0 */
1380         movl    (%ebp),         %eax
1381         xorl    %ebx,           %ebx
1382         movl    4(%ebp),        %edx
1383         xorl    %esi,           %eax
1384         xorl    %esi,           %edx
1385         andl    $0xfcfcfcfc,    %eax
1386         andl    $0xcfcfcfcf,    %edx
1387         movb    %al,            %bl
1388         movb    %ah,            %cl
1389         rorl    $4,             %edx
1390         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
1391         movb    %dl,            %bl
1392         xorl    %ebp,           %edi
1393         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1394         xorl    %ebp,           %edi
1395         movb    %dh,            %cl
1396         shrl    $16,            %eax
1397         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1398         xorl    %ebp,           %edi
1399         movb    %ah,            %bl
1400         shrl    $16,            %edx
1401         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1402         xorl    %ebp,           %edi
1403         movl    24(%esp),       %ebp
1404         movb    %dh,            %cl
1405         andl    $0xff,          %eax
1406         andl    $0xff,          %edx
1407         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1408         xorl    %ebx,           %edi
1409         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1410         xorl    %ebx,           %edi
1411         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1412         xorl    %ebx,           %edi
1413         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1414         xorl    %ebx,           %edi
1415
1416         /* Round 1 */
1417         movl    8(%ebp),        %eax
1418         xorl    %ebx,           %ebx
1419         movl    12(%ebp),       %edx
1420         xorl    %edi,           %eax
1421         xorl    %edi,           %edx
1422         andl    $0xfcfcfcfc,    %eax
1423         andl    $0xcfcfcfcf,    %edx
1424         movb    %al,            %bl
1425         movb    %ah,            %cl
1426         rorl    $4,             %edx
1427         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
1428         movb    %dl,            %bl
1429         xorl    %ebp,           %esi
1430         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1431         xorl    %ebp,           %esi
1432         movb    %dh,            %cl
1433         shrl    $16,            %eax
1434         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1435         xorl    %ebp,           %esi
1436         movb    %ah,            %bl
1437         shrl    $16,            %edx
1438         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1439         xorl    %ebp,           %esi
1440         movl    24(%esp),       %ebp
1441         movb    %dh,            %cl
1442         andl    $0xff,          %eax
1443         andl    $0xff,          %edx
1444         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1445         xorl    %ebx,           %esi
1446         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1447         xorl    %ebx,           %esi
1448         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1449         xorl    %ebx,           %esi
1450         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1451         xorl    %ebx,           %esi
1452
1453         /* Round 2 */
1454         movl    16(%ebp),       %eax
1455         xorl    %ebx,           %ebx
1456         movl    20(%ebp),       %edx
1457         xorl    %esi,           %eax
1458         xorl    %esi,           %edx
1459         andl    $0xfcfcfcfc,    %eax
1460         andl    $0xcfcfcfcf,    %edx
1461         movb    %al,            %bl
1462         movb    %ah,            %cl
1463         rorl    $4,             %edx
1464         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
1465         movb    %dl,            %bl
1466         xorl    %ebp,           %edi
1467         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1468         xorl    %ebp,           %edi
1469         movb    %dh,            %cl
1470         shrl    $16,            %eax
1471         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1472         xorl    %ebp,           %edi
1473         movb    %ah,            %bl
1474         shrl    $16,            %edx
1475         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1476         xorl    %ebp,           %edi
1477         movl    24(%esp),       %ebp
1478         movb    %dh,            %cl
1479         andl    $0xff,          %eax
1480         andl    $0xff,          %edx
1481         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1482         xorl    %ebx,           %edi
1483         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1484         xorl    %ebx,           %edi
1485         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1486         xorl    %ebx,           %edi
1487         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1488         xorl    %ebx,           %edi
1489
1490         /* Round 3 */
1491         movl    24(%ebp),       %eax
1492         xorl    %ebx,           %ebx
1493         movl    28(%ebp),       %edx
1494         xorl    %edi,           %eax
1495         xorl    %edi,           %edx
1496         andl    $0xfcfcfcfc,    %eax
1497         andl    $0xcfcfcfcf,    %edx
1498         movb    %al,            %bl
1499         movb    %ah,            %cl
1500         rorl    $4,             %edx
1501         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
1502         movb    %dl,            %bl
1503         xorl    %ebp,           %esi
1504         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1505         xorl    %ebp,           %esi
1506         movb    %dh,            %cl
1507         shrl    $16,            %eax
1508         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1509         xorl    %ebp,           %esi
1510         movb    %ah,            %bl
1511         shrl    $16,            %edx
1512         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1513         xorl    %ebp,           %esi
1514         movl    24(%esp),       %ebp
1515         movb    %dh,            %cl
1516         andl    $0xff,          %eax
1517         andl    $0xff,          %edx
1518         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1519         xorl    %ebx,           %esi
1520         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1521         xorl    %ebx,           %esi
1522         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1523         xorl    %ebx,           %esi
1524         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1525         xorl    %ebx,           %esi
1526
1527         /* Round 4 */
1528         movl    32(%ebp),       %eax
1529         xorl    %ebx,           %ebx
1530         movl    36(%ebp),       %edx
1531         xorl    %esi,           %eax
1532         xorl    %esi,           %edx
1533         andl    $0xfcfcfcfc,    %eax
1534         andl    $0xcfcfcfcf,    %edx
1535         movb    %al,            %bl
1536         movb    %ah,            %cl
1537         rorl    $4,             %edx
1538         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
1539         movb    %dl,            %bl
1540         xorl    %ebp,           %edi
1541         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1542         xorl    %ebp,           %edi
1543         movb    %dh,            %cl
1544         shrl    $16,            %eax
1545         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1546         xorl    %ebp,           %edi
1547         movb    %ah,            %bl
1548         shrl    $16,            %edx
1549         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1550         xorl    %ebp,           %edi
1551         movl    24(%esp),       %ebp
1552         movb    %dh,            %cl
1553         andl    $0xff,          %eax
1554         andl    $0xff,          %edx
1555         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1556         xorl    %ebx,           %edi
1557         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1558         xorl    %ebx,           %edi
1559         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1560         xorl    %ebx,           %edi
1561         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1562         xorl    %ebx,           %edi
1563
1564         /* Round 5 */
1565         movl    40(%ebp),       %eax
1566         xorl    %ebx,           %ebx
1567         movl    44(%ebp),       %edx
1568         xorl    %edi,           %eax
1569         xorl    %edi,           %edx
1570         andl    $0xfcfcfcfc,    %eax
1571         andl    $0xcfcfcfcf,    %edx
1572         movb    %al,            %bl
1573         movb    %ah,            %cl
1574         rorl    $4,             %edx
1575         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
1576         movb    %dl,            %bl
1577         xorl    %ebp,           %esi
1578         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1579         xorl    %ebp,           %esi
1580         movb    %dh,            %cl
1581         shrl    $16,            %eax
1582         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1583         xorl    %ebp,           %esi
1584         movb    %ah,            %bl
1585         shrl    $16,            %edx
1586         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1587         xorl    %ebp,           %esi
1588         movl    24(%esp),       %ebp
1589         movb    %dh,            %cl
1590         andl    $0xff,          %eax
1591         andl    $0xff,          %edx
1592         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1593         xorl    %ebx,           %esi
1594         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1595         xorl    %ebx,           %esi
1596         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1597         xorl    %ebx,           %esi
1598         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1599         xorl    %ebx,           %esi
1600
1601         /* Round 6 */
1602         movl    48(%ebp),       %eax
1603         xorl    %ebx,           %ebx
1604         movl    52(%ebp),       %edx
1605         xorl    %esi,           %eax
1606         xorl    %esi,           %edx
1607         andl    $0xfcfcfcfc,    %eax
1608         andl    $0xcfcfcfcf,    %edx
1609         movb    %al,            %bl
1610         movb    %ah,            %cl
1611         rorl    $4,             %edx
1612         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
1613         movb    %dl,            %bl
1614         xorl    %ebp,           %edi
1615         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1616         xorl    %ebp,           %edi
1617         movb    %dh,            %cl
1618         shrl    $16,            %eax
1619         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1620         xorl    %ebp,           %edi
1621         movb    %ah,            %bl
1622         shrl    $16,            %edx
1623         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1624         xorl    %ebp,           %edi
1625         movl    24(%esp),       %ebp
1626         movb    %dh,            %cl
1627         andl    $0xff,          %eax
1628         andl    $0xff,          %edx
1629         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1630         xorl    %ebx,           %edi
1631         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1632         xorl    %ebx,           %edi
1633         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1634         xorl    %ebx,           %edi
1635         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1636         xorl    %ebx,           %edi
1637
1638         /* Round 7 */
1639         movl    56(%ebp),       %eax
1640         xorl    %ebx,           %ebx
1641         movl    60(%ebp),       %edx
1642         xorl    %edi,           %eax
1643         xorl    %edi,           %edx
1644         andl    $0xfcfcfcfc,    %eax
1645         andl    $0xcfcfcfcf,    %edx
1646         movb    %al,            %bl
1647         movb    %ah,            %cl
1648         rorl    $4,             %edx
1649         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
1650         movb    %dl,            %bl
1651         xorl    %ebp,           %esi
1652         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1653         xorl    %ebp,           %esi
1654         movb    %dh,            %cl
1655         shrl    $16,            %eax
1656         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1657         xorl    %ebp,           %esi
1658         movb    %ah,            %bl
1659         shrl    $16,            %edx
1660         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1661         xorl    %ebp,           %esi
1662         movl    24(%esp),       %ebp
1663         movb    %dh,            %cl
1664         andl    $0xff,          %eax
1665         andl    $0xff,          %edx
1666         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1667         xorl    %ebx,           %esi
1668         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1669         xorl    %ebx,           %esi
1670         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1671         xorl    %ebx,           %esi
1672         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1673         xorl    %ebx,           %esi
1674
1675         /* Round 8 */
1676         movl    64(%ebp),       %eax
1677         xorl    %ebx,           %ebx
1678         movl    68(%ebp),       %edx
1679         xorl    %esi,           %eax
1680         xorl    %esi,           %edx
1681         andl    $0xfcfcfcfc,    %eax
1682         andl    $0xcfcfcfcf,    %edx
1683         movb    %al,            %bl
1684         movb    %ah,            %cl
1685         rorl    $4,             %edx
1686         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
1687         movb    %dl,            %bl
1688         xorl    %ebp,           %edi
1689         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1690         xorl    %ebp,           %edi
1691         movb    %dh,            %cl
1692         shrl    $16,            %eax
1693         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1694         xorl    %ebp,           %edi
1695         movb    %ah,            %bl
1696         shrl    $16,            %edx
1697         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1698         xorl    %ebp,           %edi
1699         movl    24(%esp),       %ebp
1700         movb    %dh,            %cl
1701         andl    $0xff,          %eax
1702         andl    $0xff,          %edx
1703         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1704         xorl    %ebx,           %edi
1705         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1706         xorl    %ebx,           %edi
1707         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1708         xorl    %ebx,           %edi
1709         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1710         xorl    %ebx,           %edi
1711
1712         /* Round 9 */
1713         movl    72(%ebp),       %eax
1714         xorl    %ebx,           %ebx
1715         movl    76(%ebp),       %edx
1716         xorl    %edi,           %eax
1717         xorl    %edi,           %edx
1718         andl    $0xfcfcfcfc,    %eax
1719         andl    $0xcfcfcfcf,    %edx
1720         movb    %al,            %bl
1721         movb    %ah,            %cl
1722         rorl    $4,             %edx
1723         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
1724         movb    %dl,            %bl
1725         xorl    %ebp,           %esi
1726         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1727         xorl    %ebp,           %esi
1728         movb    %dh,            %cl
1729         shrl    $16,            %eax
1730         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1731         xorl    %ebp,           %esi
1732         movb    %ah,            %bl
1733         shrl    $16,            %edx
1734         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1735         xorl    %ebp,           %esi
1736         movl    24(%esp),       %ebp
1737         movb    %dh,            %cl
1738         andl    $0xff,          %eax
1739         andl    $0xff,          %edx
1740         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1741         xorl    %ebx,           %esi
1742         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1743         xorl    %ebx,           %esi
1744         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1745         xorl    %ebx,           %esi
1746         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1747         xorl    %ebx,           %esi
1748
1749         /* Round 10 */
1750         movl    80(%ebp),       %eax
1751         xorl    %ebx,           %ebx
1752         movl    84(%ebp),       %edx
1753         xorl    %esi,           %eax
1754         xorl    %esi,           %edx
1755         andl    $0xfcfcfcfc,    %eax
1756         andl    $0xcfcfcfcf,    %edx
1757         movb    %al,            %bl
1758         movb    %ah,            %cl
1759         rorl    $4,             %edx
1760         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
1761         movb    %dl,            %bl
1762         xorl    %ebp,           %edi
1763         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1764         xorl    %ebp,           %edi
1765         movb    %dh,            %cl
1766         shrl    $16,            %eax
1767         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1768         xorl    %ebp,           %edi
1769         movb    %ah,            %bl
1770         shrl    $16,            %edx
1771         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1772         xorl    %ebp,           %edi
1773         movl    24(%esp),       %ebp
1774         movb    %dh,            %cl
1775         andl    $0xff,          %eax
1776         andl    $0xff,          %edx
1777         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1778         xorl    %ebx,           %edi
1779         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1780         xorl    %ebx,           %edi
1781         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1782         xorl    %ebx,           %edi
1783         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1784         xorl    %ebx,           %edi
1785
1786         /* Round 11 */
1787         movl    88(%ebp),       %eax
1788         xorl    %ebx,           %ebx
1789         movl    92(%ebp),       %edx
1790         xorl    %edi,           %eax
1791         xorl    %edi,           %edx
1792         andl    $0xfcfcfcfc,    %eax
1793         andl    $0xcfcfcfcf,    %edx
1794         movb    %al,            %bl
1795         movb    %ah,            %cl
1796         rorl    $4,             %edx
1797         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
1798         movb    %dl,            %bl
1799         xorl    %ebp,           %esi
1800         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1801         xorl    %ebp,           %esi
1802         movb    %dh,            %cl
1803         shrl    $16,            %eax
1804         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1805         xorl    %ebp,           %esi
1806         movb    %ah,            %bl
1807         shrl    $16,            %edx
1808         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1809         xorl    %ebp,           %esi
1810         movl    24(%esp),       %ebp
1811         movb    %dh,            %cl
1812         andl    $0xff,          %eax
1813         andl    $0xff,          %edx
1814         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1815         xorl    %ebx,           %esi
1816         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1817         xorl    %ebx,           %esi
1818         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1819         xorl    %ebx,           %esi
1820         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1821         xorl    %ebx,           %esi
1822
1823         /* Round 12 */
1824         movl    96(%ebp),       %eax
1825         xorl    %ebx,           %ebx
1826         movl    100(%ebp),      %edx
1827         xorl    %esi,           %eax
1828         xorl    %esi,           %edx
1829         andl    $0xfcfcfcfc,    %eax
1830         andl    $0xcfcfcfcf,    %edx
1831         movb    %al,            %bl
1832         movb    %ah,            %cl
1833         rorl    $4,             %edx
1834         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
1835         movb    %dl,            %bl
1836         xorl    %ebp,           %edi
1837         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1838         xorl    %ebp,           %edi
1839         movb    %dh,            %cl
1840         shrl    $16,            %eax
1841         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1842         xorl    %ebp,           %edi
1843         movb    %ah,            %bl
1844         shrl    $16,            %edx
1845         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1846         xorl    %ebp,           %edi
1847         movl    24(%esp),       %ebp
1848         movb    %dh,            %cl
1849         andl    $0xff,          %eax
1850         andl    $0xff,          %edx
1851         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1852         xorl    %ebx,           %edi
1853         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1854         xorl    %ebx,           %edi
1855         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1856         xorl    %ebx,           %edi
1857         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1858         xorl    %ebx,           %edi
1859
1860         /* Round 13 */
1861         movl    104(%ebp),      %eax
1862         xorl    %ebx,           %ebx
1863         movl    108(%ebp),      %edx
1864         xorl    %edi,           %eax
1865         xorl    %edi,           %edx
1866         andl    $0xfcfcfcfc,    %eax
1867         andl    $0xcfcfcfcf,    %edx
1868         movb    %al,            %bl
1869         movb    %ah,            %cl
1870         rorl    $4,             %edx
1871         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
1872         movb    %dl,            %bl
1873         xorl    %ebp,           %esi
1874         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1875         xorl    %ebp,           %esi
1876         movb    %dh,            %cl
1877         shrl    $16,            %eax
1878         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1879         xorl    %ebp,           %esi
1880         movb    %ah,            %bl
1881         shrl    $16,            %edx
1882         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1883         xorl    %ebp,           %esi
1884         movl    24(%esp),       %ebp
1885         movb    %dh,            %cl
1886         andl    $0xff,          %eax
1887         andl    $0xff,          %edx
1888         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1889         xorl    %ebx,           %esi
1890         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1891         xorl    %ebx,           %esi
1892         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1893         xorl    %ebx,           %esi
1894         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1895         xorl    %ebx,           %esi
1896
1897         /* Round 14 */
1898         movl    112(%ebp),      %eax
1899         xorl    %ebx,           %ebx
1900         movl    116(%ebp),      %edx
1901         xorl    %esi,           %eax
1902         xorl    %esi,           %edx
1903         andl    $0xfcfcfcfc,    %eax
1904         andl    $0xcfcfcfcf,    %edx
1905         movb    %al,            %bl
1906         movb    %ah,            %cl
1907         rorl    $4,             %edx
1908         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
1909         movb    %dl,            %bl
1910         xorl    %ebp,           %edi
1911         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1912         xorl    %ebp,           %edi
1913         movb    %dh,            %cl
1914         shrl    $16,            %eax
1915         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1916         xorl    %ebp,           %edi
1917         movb    %ah,            %bl
1918         shrl    $16,            %edx
1919         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1920         xorl    %ebp,           %edi
1921         movl    24(%esp),       %ebp
1922         movb    %dh,            %cl
1923         andl    $0xff,          %eax
1924         andl    $0xff,          %edx
1925         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1926         xorl    %ebx,           %edi
1927         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1928         xorl    %ebx,           %edi
1929         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1930         xorl    %ebx,           %edi
1931         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1932         xorl    %ebx,           %edi
1933
1934         /* Round 15 */
1935         movl    120(%ebp),      %eax
1936         xorl    %ebx,           %ebx
1937         movl    124(%ebp),      %edx
1938         xorl    %edi,           %eax
1939         xorl    %edi,           %edx
1940         andl    $0xfcfcfcfc,    %eax
1941         andl    $0xcfcfcfcf,    %edx
1942         movb    %al,            %bl
1943         movb    %ah,            %cl
1944         rorl    $4,             %edx
1945         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
1946         movb    %dl,            %bl
1947         xorl    %ebp,           %esi
1948         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1949         xorl    %ebp,           %esi
1950         movb    %dh,            %cl
1951         shrl    $16,            %eax
1952         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1953         xorl    %ebp,           %esi
1954         movb    %ah,            %bl
1955         shrl    $16,            %edx
1956         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1957         xorl    %ebp,           %esi
1958         movl    24(%esp),       %ebp
1959         movb    %dh,            %cl
1960         andl    $0xff,          %eax
1961         andl    $0xff,          %edx
1962         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1963         xorl    %ebx,           %esi
1964         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1965         xorl    %ebx,           %esi
1966         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1967         xorl    %ebx,           %esi
1968         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1969         xorl    %ebx,           %esi
1970         jmp     .L003end
1971 .L002start_decrypt:
1972
1973         /* Round 15 */
1974         movl    120(%ebp),      %eax
1975         xorl    %ebx,           %ebx
1976         movl    124(%ebp),      %edx
1977         xorl    %esi,           %eax
1978         xorl    %esi,           %edx
1979         andl    $0xfcfcfcfc,    %eax
1980         andl    $0xcfcfcfcf,    %edx
1981         movb    %al,            %bl
1982         movb    %ah,            %cl
1983         rorl    $4,             %edx
1984         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
1985         movb    %dl,            %bl
1986         xorl    %ebp,           %edi
1987         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1988         xorl    %ebp,           %edi
1989         movb    %dh,            %cl
1990         shrl    $16,            %eax
1991         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1992         xorl    %ebp,           %edi
1993         movb    %ah,            %bl
1994         shrl    $16,            %edx
1995         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1996         xorl    %ebp,           %edi
1997         movl    24(%esp),       %ebp
1998         movb    %dh,            %cl
1999         andl    $0xff,          %eax
2000         andl    $0xff,          %edx
2001         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2002         xorl    %ebx,           %edi
2003         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2004         xorl    %ebx,           %edi
2005         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2006         xorl    %ebx,           %edi
2007         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2008         xorl    %ebx,           %edi
2009
2010         /* Round 14 */
2011         movl    112(%ebp),      %eax
2012         xorl    %ebx,           %ebx
2013         movl    116(%ebp),      %edx
2014         xorl    %edi,           %eax
2015         xorl    %edi,           %edx
2016         andl    $0xfcfcfcfc,    %eax
2017         andl    $0xcfcfcfcf,    %edx
2018         movb    %al,            %bl
2019         movb    %ah,            %cl
2020         rorl    $4,             %edx
2021         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
2022         movb    %dl,            %bl
2023         xorl    %ebp,           %esi
2024         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
2025         xorl    %ebp,           %esi
2026         movb    %dh,            %cl
2027         shrl    $16,            %eax
2028         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
2029         xorl    %ebp,           %esi
2030         movb    %ah,            %bl
2031         shrl    $16,            %edx
2032         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
2033         xorl    %ebp,           %esi
2034         movl    24(%esp),       %ebp
2035         movb    %dh,            %cl
2036         andl    $0xff,          %eax
2037         andl    $0xff,          %edx
2038         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2039         xorl    %ebx,           %esi
2040         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2041         xorl    %ebx,           %esi
2042         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2043         xorl    %ebx,           %esi
2044         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2045         xorl    %ebx,           %esi
2046
2047         /* Round 13 */
2048         movl    104(%ebp),      %eax
2049         xorl    %ebx,           %ebx
2050         movl    108(%ebp),      %edx
2051         xorl    %esi,           %eax
2052         xorl    %esi,           %edx
2053         andl    $0xfcfcfcfc,    %eax
2054         andl    $0xcfcfcfcf,    %edx
2055         movb    %al,            %bl
2056         movb    %ah,            %cl
2057         rorl    $4,             %edx
2058         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
2059         movb    %dl,            %bl
2060         xorl    %ebp,           %edi
2061         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
2062         xorl    %ebp,           %edi
2063         movb    %dh,            %cl
2064         shrl    $16,            %eax
2065         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
2066         xorl    %ebp,           %edi
2067         movb    %ah,            %bl
2068         shrl    $16,            %edx
2069         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
2070         xorl    %ebp,           %edi
2071         movl    24(%esp),       %ebp
2072         movb    %dh,            %cl
2073         andl    $0xff,          %eax
2074         andl    $0xff,          %edx
2075         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2076         xorl    %ebx,           %edi
2077         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2078         xorl    %ebx,           %edi
2079         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2080         xorl    %ebx,           %edi
2081         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2082         xorl    %ebx,           %edi
2083
2084         /* Round 12 */
2085         movl    96(%ebp),       %eax
2086         xorl    %ebx,           %ebx
2087         movl    100(%ebp),      %edx
2088         xorl    %edi,           %eax
2089         xorl    %edi,           %edx
2090         andl    $0xfcfcfcfc,    %eax
2091         andl    $0xcfcfcfcf,    %edx
2092         movb    %al,            %bl
2093         movb    %ah,            %cl
2094         rorl    $4,             %edx
2095         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
2096         movb    %dl,            %bl
2097         xorl    %ebp,           %esi
2098         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
2099         xorl    %ebp,           %esi
2100         movb    %dh,            %cl
2101         shrl    $16,            %eax
2102         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
2103         xorl    %ebp,           %esi
2104         movb    %ah,            %bl
2105         shrl    $16,            %edx
2106         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
2107         xorl    %ebp,           %esi
2108         movl    24(%esp),       %ebp
2109         movb    %dh,            %cl
2110         andl    $0xff,          %eax
2111         andl    $0xff,          %edx
2112         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2113         xorl    %ebx,           %esi
2114         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2115         xorl    %ebx,           %esi
2116         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2117         xorl    %ebx,           %esi
2118         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2119         xorl    %ebx,           %esi
2120
2121         /* Round 11 */
2122         movl    88(%ebp),       %eax
2123         xorl    %ebx,           %ebx
2124         movl    92(%ebp),       %edx
2125         xorl    %esi,           %eax
2126         xorl    %esi,           %edx
2127         andl    $0xfcfcfcfc,    %eax
2128         andl    $0xcfcfcfcf,    %edx
2129         movb    %al,            %bl
2130         movb    %ah,            %cl
2131         rorl    $4,             %edx
2132         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
2133         movb    %dl,            %bl
2134         xorl    %ebp,           %edi
2135         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
2136         xorl    %ebp,           %edi
2137         movb    %dh,            %cl
2138         shrl    $16,            %eax
2139         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
2140         xorl    %ebp,           %edi
2141         movb    %ah,            %bl
2142         shrl    $16,            %edx
2143         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
2144         xorl    %ebp,           %edi
2145         movl    24(%esp),       %ebp
2146         movb    %dh,            %cl
2147         andl    $0xff,          %eax
2148         andl    $0xff,          %edx
2149         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2150         xorl    %ebx,           %edi
2151         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2152         xorl    %ebx,           %edi
2153         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2154         xorl    %ebx,           %edi
2155         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2156         xorl    %ebx,           %edi
2157
2158         /* Round 10 */
2159         movl    80(%ebp),       %eax
2160         xorl    %ebx,           %ebx
2161         movl    84(%ebp),       %edx
2162         xorl    %edi,           %eax
2163         xorl    %edi,           %edx
2164         andl    $0xfcfcfcfc,    %eax
2165         andl    $0xcfcfcfcf,    %edx
2166         movb    %al,            %bl
2167         movb    %ah,            %cl
2168         rorl    $4,             %edx
2169         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
2170         movb    %dl,            %bl
2171         xorl    %ebp,           %esi
2172         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
2173         xorl    %ebp,           %esi
2174         movb    %dh,            %cl
2175         shrl    $16,            %eax
2176         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
2177         xorl    %ebp,           %esi
2178         movb    %ah,            %bl
2179         shrl    $16,            %edx
2180         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
2181         xorl    %ebp,           %esi
2182         movl    24(%esp),       %ebp
2183         movb    %dh,            %cl
2184         andl    $0xff,          %eax
2185         andl    $0xff,          %edx
2186         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2187         xorl    %ebx,           %esi
2188         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2189         xorl    %ebx,           %esi
2190         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2191         xorl    %ebx,           %esi
2192         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2193         xorl    %ebx,           %esi
2194
2195         /* Round 9 */
2196         movl    72(%ebp),       %eax
2197         xorl    %ebx,           %ebx
2198         movl    76(%ebp),       %edx
2199         xorl    %esi,           %eax
2200         xorl    %esi,           %edx
2201         andl    $0xfcfcfcfc,    %eax
2202         andl    $0xcfcfcfcf,    %edx
2203         movb    %al,            %bl
2204         movb    %ah,            %cl
2205         rorl    $4,             %edx
2206         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
2207         movb    %dl,            %bl
2208         xorl    %ebp,           %edi
2209         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
2210         xorl    %ebp,           %edi
2211         movb    %dh,            %cl
2212         shrl    $16,            %eax
2213         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
2214         xorl    %ebp,           %edi
2215         movb    %ah,            %bl
2216         shrl    $16,            %edx
2217         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
2218         xorl    %ebp,           %edi
2219         movl    24(%esp),       %ebp
2220         movb    %dh,            %cl
2221         andl    $0xff,          %eax
2222         andl    $0xff,          %edx
2223         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2224         xorl    %ebx,           %edi
2225         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2226         xorl    %ebx,           %edi
2227         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2228         xorl    %ebx,           %edi
2229         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2230         xorl    %ebx,           %edi
2231
2232         /* Round 8 */
2233         movl    64(%ebp),       %eax
2234         xorl    %ebx,           %ebx
2235         movl    68(%ebp),       %edx
2236         xorl    %edi,           %eax
2237         xorl    %edi,           %edx
2238         andl    $0xfcfcfcfc,    %eax
2239         andl    $0xcfcfcfcf,    %edx
2240         movb    %al,            %bl
2241         movb    %ah,            %cl
2242         rorl    $4,             %edx
2243         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
2244         movb    %dl,            %bl
2245         xorl    %ebp,           %esi
2246         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
2247         xorl    %ebp,           %esi
2248         movb    %dh,            %cl
2249         shrl    $16,            %eax
2250         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
2251         xorl    %ebp,           %esi
2252         movb    %ah,            %bl
2253         shrl    $16,            %edx
2254         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
2255         xorl    %ebp,           %esi
2256         movl    24(%esp),       %ebp
2257         movb    %dh,            %cl
2258         andl    $0xff,          %eax
2259         andl    $0xff,          %edx
2260         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2261         xorl    %ebx,           %esi
2262         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2263         xorl    %ebx,           %esi
2264         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2265         xorl    %ebx,           %esi
2266         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2267         xorl    %ebx,           %esi
2268
2269         /* Round 7 */
2270         movl    56(%ebp),       %eax
2271         xorl    %ebx,           %ebx
2272         movl    60(%ebp),       %edx
2273         xorl    %esi,           %eax
2274         xorl    %esi,           %edx
2275         andl    $0xfcfcfcfc,    %eax
2276         andl    $0xcfcfcfcf,    %edx
2277         movb    %al,            %bl
2278         movb    %ah,            %cl
2279         rorl    $4,             %edx
2280         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
2281         movb    %dl,            %bl
2282         xorl    %ebp,           %edi
2283         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
2284         xorl    %ebp,           %edi
2285         movb    %dh,            %cl
2286         shrl    $16,            %eax
2287         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
2288         xorl    %ebp,           %edi
2289         movb    %ah,            %bl
2290         shrl    $16,            %edx
2291         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
2292         xorl    %ebp,           %edi
2293         movl    24(%esp),       %ebp
2294         movb    %dh,            %cl
2295         andl    $0xff,          %eax
2296         andl    $0xff,          %edx
2297         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2298         xorl    %ebx,           %edi
2299         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2300         xorl    %ebx,           %edi
2301         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2302         xorl    %ebx,           %edi
2303         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2304         xorl    %ebx,           %edi
2305
2306         /* Round 6 */
2307         movl    48(%ebp),       %eax
2308         xorl    %ebx,           %ebx
2309         movl    52(%ebp),       %edx
2310         xorl    %edi,           %eax
2311         xorl    %edi,           %edx
2312         andl    $0xfcfcfcfc,    %eax
2313         andl    $0xcfcfcfcf,    %edx
2314         movb    %al,            %bl
2315         movb    %ah,            %cl
2316         rorl    $4,             %edx
2317         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
2318         movb    %dl,            %bl
2319         xorl    %ebp,           %esi
2320         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
2321         xorl    %ebp,           %esi
2322         movb    %dh,            %cl
2323         shrl    $16,            %eax
2324         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
2325         xorl    %ebp,           %esi
2326         movb    %ah,            %bl
2327         shrl    $16,            %edx
2328         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
2329         xorl    %ebp,           %esi
2330         movl    24(%esp),       %ebp
2331         movb    %dh,            %cl
2332         andl    $0xff,          %eax
2333         andl    $0xff,          %edx
2334         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2335         xorl    %ebx,           %esi
2336         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2337         xorl    %ebx,           %esi
2338         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2339         xorl    %ebx,           %esi
2340         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2341         xorl    %ebx,           %esi
2342
2343         /* Round 5 */
2344         movl    40(%ebp),       %eax
2345         xorl    %ebx,           %ebx
2346         movl    44(%ebp),       %edx
2347         xorl    %esi,           %eax
2348         xorl    %esi,           %edx
2349         andl    $0xfcfcfcfc,    %eax
2350         andl    $0xcfcfcfcf,    %edx
2351         movb    %al,            %bl
2352         movb    %ah,            %cl
2353         rorl    $4,             %edx
2354         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
2355         movb    %dl,            %bl
2356         xorl    %ebp,           %edi
2357         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
2358         xorl    %ebp,           %edi
2359         movb    %dh,            %cl
2360         shrl    $16,            %eax
2361         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
2362         xorl    %ebp,           %edi
2363         movb    %ah,            %bl
2364         shrl    $16,            %edx
2365         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
2366         xorl    %ebp,           %edi
2367         movl    24(%esp),       %ebp
2368         movb    %dh,            %cl
2369         andl    $0xff,          %eax
2370         andl    $0xff,          %edx
2371         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2372         xorl    %ebx,           %edi
2373         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2374         xorl    %ebx,           %edi
2375         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2376         xorl    %ebx,           %edi
2377         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2378         xorl    %ebx,           %edi
2379
2380         /* Round 4 */
2381         movl    32(%ebp),       %eax
2382         xorl    %ebx,           %ebx
2383         movl    36(%ebp),       %edx
2384         xorl    %edi,           %eax
2385         xorl    %edi,           %edx
2386         andl    $0xfcfcfcfc,    %eax
2387         andl    $0xcfcfcfcf,    %edx
2388         movb    %al,            %bl
2389         movb    %ah,            %cl
2390         rorl    $4,             %edx
2391         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
2392         movb    %dl,            %bl
2393         xorl    %ebp,           %esi
2394         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
2395         xorl    %ebp,           %esi
2396         movb    %dh,            %cl
2397         shrl    $16,            %eax
2398         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
2399         xorl    %ebp,           %esi
2400         movb    %ah,            %bl
2401         shrl    $16,            %edx
2402         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
2403         xorl    %ebp,           %esi
2404         movl    24(%esp),       %ebp
2405         movb    %dh,            %cl
2406         andl    $0xff,          %eax
2407         andl    $0xff,          %edx
2408         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2409         xorl    %ebx,           %esi
2410         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2411         xorl    %ebx,           %esi
2412         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2413         xorl    %ebx,           %esi
2414         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2415         xorl    %ebx,           %esi
2416
2417         /* Round 3 */
2418         movl    24(%ebp),       %eax
2419         xorl    %ebx,           %ebx
2420         movl    28(%ebp),       %edx
2421         xorl    %esi,           %eax
2422         xorl    %esi,           %edx
2423         andl    $0xfcfcfcfc,    %eax
2424         andl    $0xcfcfcfcf,    %edx
2425         movb    %al,            %bl
2426         movb    %ah,            %cl
2427         rorl    $4,             %edx
2428         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
2429         movb    %dl,            %bl
2430         xorl    %ebp,           %edi
2431         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
2432         xorl    %ebp,           %edi
2433         movb    %dh,            %cl
2434         shrl    $16,            %eax
2435         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
2436         xorl    %ebp,           %edi
2437         movb    %ah,            %bl
2438         shrl    $16,            %edx
2439         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
2440         xorl    %ebp,           %edi
2441         movl    24(%esp),       %ebp
2442         movb    %dh,            %cl
2443         andl    $0xff,          %eax
2444         andl    $0xff,          %edx
2445         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2446         xorl    %ebx,           %edi
2447         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2448         xorl    %ebx,           %edi
2449         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2450         xorl    %ebx,           %edi
2451         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2452         xorl    %ebx,           %edi
2453
2454         /* Round 2 */
2455         movl    16(%ebp),       %eax
2456         xorl    %ebx,           %ebx
2457         movl    20(%ebp),       %edx
2458         xorl    %edi,           %eax
2459         xorl    %edi,           %edx
2460         andl    $0xfcfcfcfc,    %eax
2461         andl    $0xcfcfcfcf,    %edx
2462         movb    %al,            %bl
2463         movb    %ah,            %cl
2464         rorl    $4,             %edx
2465         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
2466         movb    %dl,            %bl
2467         xorl    %ebp,           %esi
2468         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
2469         xorl    %ebp,           %esi
2470         movb    %dh,            %cl
2471         shrl    $16,            %eax
2472         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
2473         xorl    %ebp,           %esi
2474         movb    %ah,            %bl
2475         shrl    $16,            %edx
2476         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
2477         xorl    %ebp,           %esi
2478         movl    24(%esp),       %ebp
2479         movb    %dh,            %cl
2480         andl    $0xff,          %eax
2481         andl    $0xff,          %edx
2482         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2483         xorl    %ebx,           %esi
2484         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2485         xorl    %ebx,           %esi
2486         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2487         xorl    %ebx,           %esi
2488         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2489         xorl    %ebx,           %esi
2490
2491         /* Round 1 */
2492         movl    8(%ebp),        %eax
2493         xorl    %ebx,           %ebx
2494         movl    12(%ebp),       %edx
2495         xorl    %esi,           %eax
2496         xorl    %esi,           %edx
2497         andl    $0xfcfcfcfc,    %eax
2498         andl    $0xcfcfcfcf,    %edx
2499         movb    %al,            %bl
2500         movb    %ah,            %cl
2501         rorl    $4,             %edx
2502         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
2503         movb    %dl,            %bl
2504         xorl    %ebp,           %edi
2505         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
2506         xorl    %ebp,           %edi
2507         movb    %dh,            %cl
2508         shrl    $16,            %eax
2509         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
2510         xorl    %ebp,           %edi
2511         movb    %ah,            %bl
2512         shrl    $16,            %edx
2513         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
2514         xorl    %ebp,           %edi
2515         movl    24(%esp),       %ebp
2516         movb    %dh,            %cl
2517         andl    $0xff,          %eax
2518         andl    $0xff,          %edx
2519         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2520         xorl    %ebx,           %edi
2521         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2522         xorl    %ebx,           %edi
2523         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2524         xorl    %ebx,           %edi
2525         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2526         xorl    %ebx,           %edi
2527
2528         /* Round 0 */
2529         movl    (%ebp),         %eax
2530         xorl    %ebx,           %ebx
2531         movl    4(%ebp),        %edx
2532         xorl    %edi,           %eax
2533         xorl    %edi,           %edx
2534         andl    $0xfcfcfcfc,    %eax
2535         andl    $0xcfcfcfcf,    %edx
2536         movb    %al,            %bl
2537         movb    %ah,            %cl
2538         rorl    $4,             %edx
2539         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
2540         movb    %dl,            %bl
2541         xorl    %ebp,           %esi
2542         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
2543         xorl    %ebp,           %esi
2544         movb    %dh,            %cl
2545         shrl    $16,            %eax
2546         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
2547         xorl    %ebp,           %esi
2548         movb    %ah,            %bl
2549         shrl    $16,            %edx
2550         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
2551         xorl    %ebp,           %esi
2552         movl    24(%esp),       %ebp
2553         movb    %dh,            %cl
2554         andl    $0xff,          %eax
2555         andl    $0xff,          %edx
2556         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2557         xorl    %ebx,           %esi
2558         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2559         xorl    %ebx,           %esi
2560         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2561         xorl    %ebx,           %esi
2562         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2563         xorl    %ebx,           %esi
2564 .L003end:
2565
2566         /* Fixup */
2567         rorl    $3,             %edi
2568         movl    20(%esp),       %eax
2569         rorl    $3,             %esi
2570         movl    %edi,           (%eax)
2571         movl    %esi,           4(%eax)
2572         popl    %ebp
2573         popl    %ebx
2574         popl    %edi
2575         popl    %esi
2576         ret
2577 .L_des_encrypt2_end:
2578         .size   _C_LABEL(des_encrypt2),.L_des_encrypt2_end-_C_LABEL(des_encrypt2)
2579
2580 ENTRY(des_encrypt3)
2581         pushl   %ebx
2582         movl    8(%esp),        %ebx
2583         pushl   %ebp
2584         pushl   %esi
2585         pushl   %edi
2586
2587         /* Load the data words */
2588         movl    (%ebx),         %edi
2589         movl    4(%ebx),        %esi
2590         subl    $12,            %esp
2591
2592         /* IP */
2593         roll    $4,             %edi
2594         movl    %edi,           %edx
2595         xorl    %esi,           %edi
2596         andl    $0xf0f0f0f0,    %edi
2597         xorl    %edi,           %edx
2598         xorl    %edi,           %esi
2599
2600         roll    $20,            %esi
2601         movl    %esi,           %edi
2602         xorl    %edx,           %esi
2603         andl    $0xfff0000f,    %esi
2604         xorl    %esi,           %edi
2605         xorl    %esi,           %edx
2606
2607         roll    $14,            %edi
2608         movl    %edi,           %esi
2609         xorl    %edx,           %edi
2610         andl    $0x33333333,    %edi
2611         xorl    %edi,           %esi
2612         xorl    %edi,           %edx
2613
2614         roll    $22,            %edx
2615         movl    %edx,           %edi
2616         xorl    %esi,           %edx
2617         andl    $0x03fc03fc,    %edx
2618         xorl    %edx,           %edi
2619         xorl    %edx,           %esi
2620
2621         roll    $9,             %edi
2622         movl    %edi,           %edx
2623         xorl    %esi,           %edi
2624         andl    $0xaaaaaaaa,    %edi
2625         xorl    %edi,           %edx
2626         xorl    %edi,           %esi
2627
2628         rorl    $3,             %edx
2629         rorl    $2,             %esi
2630         movl    %esi,           4(%ebx)
2631         movl    36(%esp),       %eax
2632         movl    %edx,           (%ebx)
2633         movl    40(%esp),       %edi
2634         movl    44(%esp),       %esi
2635         movl    $1,             8(%esp)
2636         movl    %eax,           4(%esp)
2637         movl    %ebx,           (%esp)
2638         call    _C_LABEL(des_encrypt2)
2639         movl    $0,             8(%esp)
2640         movl    %edi,           4(%esp)
2641         movl    %ebx,           (%esp)
2642         call    _C_LABEL(des_encrypt2)
2643         movl    $1,             8(%esp)
2644         movl    %esi,           4(%esp)
2645         movl    %ebx,           (%esp)
2646         call    _C_LABEL(des_encrypt2)
2647         addl    $12,            %esp
2648         movl    (%ebx),         %edi
2649         movl    4(%ebx),        %esi
2650
2651         /* FP */
2652         roll    $2,             %esi
2653         roll    $3,             %edi
2654         movl    %edi,           %eax
2655         xorl    %esi,           %edi
2656         andl    $0xaaaaaaaa,    %edi
2657         xorl    %edi,           %eax
2658         xorl    %edi,           %esi
2659
2660         roll    $23,            %eax
2661         movl    %eax,           %edi
2662         xorl    %esi,           %eax
2663         andl    $0x03fc03fc,    %eax
2664         xorl    %eax,           %edi
2665         xorl    %eax,           %esi
2666
2667         roll    $10,            %edi
2668         movl    %edi,           %eax
2669         xorl    %esi,           %edi
2670         andl    $0x33333333,    %edi
2671         xorl    %edi,           %eax
2672         xorl    %edi,           %esi
2673
2674         roll    $18,            %esi
2675         movl    %esi,           %edi
2676         xorl    %eax,           %esi
2677         andl    $0xfff0000f,    %esi
2678         xorl    %esi,           %edi
2679         xorl    %esi,           %eax
2680
2681         roll    $12,            %edi
2682         movl    %edi,           %esi
2683         xorl    %eax,           %edi
2684         andl    $0xf0f0f0f0,    %edi
2685         xorl    %edi,           %esi
2686         xorl    %edi,           %eax
2687
2688         rorl    $4,             %eax
2689         movl    %eax,           (%ebx)
2690         movl    %esi,           4(%ebx)
2691         popl    %edi
2692         popl    %esi
2693         popl    %ebp
2694         popl    %ebx
2695         ret
2696 .L_des_encrypt3_end:
2697         .size   _C_LABEL(des_encrypt3),.L_des_encrypt3_end-_C_LABEL(des_encrypt3)
2698
2699 ENTRY(des_decrypt3)
2700         pushl   %ebx
2701         movl    8(%esp),        %ebx
2702         pushl   %ebp
2703         pushl   %esi
2704         pushl   %edi
2705
2706         /* Load the data words */
2707         movl    (%ebx),         %edi
2708         movl    4(%ebx),        %esi
2709         subl    $12,            %esp
2710
2711         /* IP */
2712         roll    $4,             %edi
2713         movl    %edi,           %edx
2714         xorl    %esi,           %edi
2715         andl    $0xf0f0f0f0,    %edi
2716         xorl    %edi,           %edx
2717         xorl    %edi,           %esi
2718
2719         roll    $20,            %esi
2720         movl    %esi,           %edi
2721         xorl    %edx,           %esi
2722         andl    $0xfff0000f,    %esi
2723         xorl    %esi,           %edi
2724         xorl    %esi,           %edx
2725
2726         roll    $14,            %edi
2727         movl    %edi,           %esi
2728         xorl    %edx,           %edi
2729         andl    $0x33333333,    %edi
2730         xorl    %edi,           %esi
2731         xorl    %edi,           %edx
2732
2733         roll    $22,            %edx
2734         movl    %edx,           %edi
2735         xorl    %esi,           %edx
2736         andl    $0x03fc03fc,    %edx
2737         xorl    %edx,           %edi
2738         xorl    %edx,           %esi
2739
2740         roll    $9,             %edi
2741         movl    %edi,           %edx
2742         xorl    %esi,           %edi
2743         andl    $0xaaaaaaaa,    %edi
2744         xorl    %edi,           %edx
2745         xorl    %edi,           %esi
2746
2747         rorl    $3,             %edx
2748         rorl    $2,             %esi
2749         movl    %esi,           4(%ebx)
2750         movl    36(%esp),       %esi
2751         movl    %edx,           (%ebx)
2752         movl    40(%esp),       %edi
2753         movl    44(%esp),       %eax
2754         movl    $0,             8(%esp)
2755         movl    %eax,           4(%esp)
2756         movl    %ebx,           (%esp)
2757         call    _C_LABEL(des_encrypt2)
2758         movl    $1,             8(%esp)
2759         movl    %edi,           4(%esp)
2760         movl    %ebx,           (%esp)
2761         call    _C_LABEL(des_encrypt2)
2762         movl    $0,             8(%esp)
2763         movl    %esi,           4(%esp)
2764         movl    %ebx,           (%esp)
2765         call    _C_LABEL(des_encrypt2)
2766         addl    $12,            %esp
2767         movl    (%ebx),         %edi
2768         movl    4(%ebx),        %esi
2769
2770         /* FP */
2771         roll    $2,             %esi
2772         roll    $3,             %edi
2773         movl    %edi,           %eax
2774         xorl    %esi,           %edi
2775         andl    $0xaaaaaaaa,    %edi
2776         xorl    %edi,           %eax
2777         xorl    %edi,           %esi
2778
2779         roll    $23,            %eax
2780         movl    %eax,           %edi
2781         xorl    %esi,           %eax
2782         andl    $0x03fc03fc,    %eax
2783         xorl    %eax,           %edi
2784         xorl    %eax,           %esi
2785
2786         roll    $10,            %edi
2787         movl    %edi,           %eax
2788         xorl    %esi,           %edi
2789         andl    $0x33333333,    %edi
2790         xorl    %edi,           %eax
2791         xorl    %edi,           %esi
2792
2793         roll    $18,            %esi
2794         movl    %esi,           %edi
2795         xorl    %eax,           %esi
2796         andl    $0xfff0000f,    %esi
2797         xorl    %esi,           %edi
2798         xorl    %esi,           %eax
2799
2800         roll    $12,            %edi
2801         movl    %edi,           %esi
2802         xorl    %eax,           %edi
2803         andl    $0xf0f0f0f0,    %edi
2804         xorl    %edi,           %esi
2805         xorl    %edi,           %eax
2806
2807         rorl    $4,             %eax
2808         movl    %eax,           (%ebx)
2809         movl    %esi,           4(%ebx)
2810         popl    %edi
2811         popl    %esi
2812         popl    %ebp
2813         popl    %ebx
2814         ret
2815 .L_des_decrypt3_end:
2816         .size   _C_LABEL(des_decrypt3),.L_des_decrypt3_end-_C_LABEL(des_decrypt3)