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