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