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