1 /* $NetBSD: des_enc.S,v 1.1 2001/09/09 11:01:02 tls Exp $ */
2 /* $FreeBSD$ */
3
4 /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
5 * All rights reserved.
6 *
7 * This package is an SSL implementation written
8 * by Eric Young (eay@cryptsoft.com).
9 * The implementation was written so as to conform with Netscapes SSL.
10 *
11 * This library is free for commercial and non-commercial use as long as
12 * the following conditions are aheared to. The following conditions
13 * apply to all code found in this distribution, be it the RC4, RSA,
14 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
15 * included with this distribution is covered by the same copyright terms
16 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
17 *
18 * Copyright remains Eric Young's, and as such any Copyright notices in
19 * the code are not to be removed.
20 * If this package is used in a product, Eric Young should be given attribution
21 * as the author of the parts of the library used.
22 * This can be in the form of a textual message at program startup or
23 * in documentation (online or textual) provided with the package.
24 *
25 * Redistribution and use in source and binary forms, with or without
26 * modification, are permitted provided that the following conditions
27 * are met:
28 * 1. Redistributions of source code must retain the copyright
29 * notice, this list of conditions and the following disclaimer.
30 * 2. Redistributions in binary form must reproduce the above copyright
31 * notice, this list of conditions and the following disclaimer in the
32 * documentation and/or other materials provided with the distribution.
33 * 3. All advertising materials mentioning features or use of this software
34 * must display the following acknowledgement:
35 * "This product includes cryptographic software written by
36 * Eric Young (eay@cryptsoft.com)"
37 * The word 'cryptographic' can be left out if the rouines from the library
38 * being used are not cryptographic related :-).
39 * 4. If you include any Windows specific code (or a derivative thereof) from
40 * the apps directory (application code) you must include an acknowledgement:
41 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
42 *
43 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
44 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
45 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
46 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
47 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
48 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
49 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
50 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
51 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
52 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
53 * SUCH DAMAGE.
54 *
55 * The licence and distribution terms for any publically available version or
56 * derivative of this code cannot be changed. i.e. this code cannot simply be
57 * copied and put under another distribution licence
58 * [including the GNU Public Licence.]
59 */
60
61 /*
62 * Modified from the output of `perl des686.pl elf' by
63 * Thor Lancelot Simon <tls@netbsd.org>
64 */
65
66 #include <i386/include/asm.h>
67 #define _C_LABEL CNAME
68
69 ENTRY(des_encrypt1)
70 pushl %esi
71 pushl %edi
72
73 /* Load the 2 words */
74 movl 12(%esp), %esi
75 xorl %ecx, %ecx
76 pushl %ebx
77 pushl %ebp
78 movl (%esi), %eax
79 movl 28(%esp), %ebx
80 movl 4(%esi), %edi
81
82 /* IP */
83 roll $4, %eax
84 movl %eax, %esi
85 xorl %edi, %eax
86 andl $0xf0f0f0f0, %eax
87 xorl %eax, %esi
88 xorl %eax, %edi
89
90 roll $20, %edi
91 movl %edi, %eax
92 xorl %esi, %edi
93 andl $0xfff0000f, %edi
94 xorl %edi, %eax
95 xorl %edi, %esi
96
97 roll $14, %eax
98 movl %eax, %edi
99 xorl %esi, %eax
100 andl $0x33333333, %eax
101 xorl %eax, %edi
102 xorl %eax, %esi
103
104 roll $22, %esi
105 movl %esi, %eax
106 xorl %edi, %esi
107 andl $0x03fc03fc, %esi
108 xorl %esi, %eax
109 xorl %esi, %edi
110
111 roll $9, %eax
112 movl %eax, %esi
113 xorl %edi, %eax
114 andl $0xaaaaaaaa, %eax
115 xorl %eax, %esi
116 xorl %eax, %edi
117
118 .byte 209
119 .byte 199 # roll $1 %edi
120 movl 24(%esp), %ebp
121 cmpl $0, %ebx
122 je .L000start_decrypt
123
124 /* Round 0 */
125 movl (%ebp), %eax
126 xorl %ebx, %ebx
127 movl 4(%ebp), %edx
128 xorl %esi, %eax
129 xorl %esi, %edx
130 andl $0xfcfcfcfc, %eax
131 andl $0xcfcfcfcf, %edx
132 movb %al, %bl
133 movb %ah, %cl
134 rorl $4, %edx
135 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
136 movb %dl, %bl
137 xorl %ebp, %edi
138 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
139 xorl %ebp, %edi
140 movb %dh, %cl
141 shrl $16, %eax
142 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
143 xorl %ebp, %edi
144 movb %ah, %bl
145 shrl $16, %edx
146 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
147 xorl %ebp, %edi
148 movl 24(%esp), %ebp
149 movb %dh, %cl
150 andl $0xff, %eax
151 andl $0xff, %edx
152 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
153 xorl %ebx, %edi
154 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
155 xorl %ebx, %edi
156 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
157 xorl %ebx, %edi
158 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
159 xorl %ebx, %edi
160
161 /* Round 1 */
162 movl 8(%ebp), %eax
163 xorl %ebx, %ebx
164 movl 12(%ebp), %edx
165 xorl %edi, %eax
166 xorl %edi, %edx
167 andl $0xfcfcfcfc, %eax
168 andl $0xcfcfcfcf, %edx
169 movb %al, %bl
170 movb %ah, %cl
171 rorl $4, %edx
172 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
173 movb %dl, %bl
174 xorl %ebp, %esi
175 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
176 xorl %ebp, %esi
177 movb %dh, %cl
178 shrl $16, %eax
179 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
180 xorl %ebp, %esi
181 movb %ah, %bl
182 shrl $16, %edx
183 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
184 xorl %ebp, %esi
185 movl 24(%esp), %ebp
186 movb %dh, %cl
187 andl $0xff, %eax
188 andl $0xff, %edx
189 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
190 xorl %ebx, %esi
191 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
192 xorl %ebx, %esi
193 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
194 xorl %ebx, %esi
195 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
196 xorl %ebx, %esi
197
198 /* Round 2 */
199 movl 16(%ebp), %eax
200 xorl %ebx, %ebx
201 movl 20(%ebp), %edx
202 xorl %esi, %eax
203 xorl %esi, %edx
204 andl $0xfcfcfcfc, %eax
205 andl $0xcfcfcfcf, %edx
206 movb %al, %bl
207 movb %ah, %cl
208 rorl $4, %edx
209 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
210 movb %dl, %bl
211 xorl %ebp, %edi
212 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
213 xorl %ebp, %edi
214 movb %dh, %cl
215 shrl $16, %eax
216 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
217 xorl %ebp, %edi
218 movb %ah, %bl
219 shrl $16, %edx
220 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
221 xorl %ebp, %edi
222 movl 24(%esp), %ebp
223 movb %dh, %cl
224 andl $0xff, %eax
225 andl $0xff, %edx
226 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
227 xorl %ebx, %edi
228 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
229 xorl %ebx, %edi
230 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
231 xorl %ebx, %edi
232 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
233 xorl %ebx, %edi
234
235 /* Round 3 */
236 movl 24(%ebp), %eax
237 xorl %ebx, %ebx
238 movl 28(%ebp), %edx
239 xorl %edi, %eax
240 xorl %edi, %edx
241 andl $0xfcfcfcfc, %eax
242 andl $0xcfcfcfcf, %edx
243 movb %al, %bl
244 movb %ah, %cl
245 rorl $4, %edx
246 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
247 movb %dl, %bl
248 xorl %ebp, %esi
249 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
250 xorl %ebp, %esi
251 movb %dh, %cl
252 shrl $16, %eax
253 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
254 xorl %ebp, %esi
255 movb %ah, %bl
256 shrl $16, %edx
257 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
258 xorl %ebp, %esi
259 movl 24(%esp), %ebp
260 movb %dh, %cl
261 andl $0xff, %eax
262 andl $0xff, %edx
263 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
264 xorl %ebx, %esi
265 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
266 xorl %ebx, %esi
267 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
268 xorl %ebx, %esi
269 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
270 xorl %ebx, %esi
271
272 /* Round 4 */
273 movl 32(%ebp), %eax
274 xorl %ebx, %ebx
275 movl 36(%ebp), %edx
276 xorl %esi, %eax
277 xorl %esi, %edx
278 andl $0xfcfcfcfc, %eax
279 andl $0xcfcfcfcf, %edx
280 movb %al, %bl
281 movb %ah, %cl
282 rorl $4, %edx
283 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
284 movb %dl, %bl
285 xorl %ebp, %edi
286 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
287 xorl %ebp, %edi
288 movb %dh, %cl
289 shrl $16, %eax
290 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
291 xorl %ebp, %edi
292 movb %ah, %bl
293 shrl $16, %edx
294 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
295 xorl %ebp, %edi
296 movl 24(%esp), %ebp
297 movb %dh, %cl
298 andl $0xff, %eax
299 andl $0xff, %edx
300 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
301 xorl %ebx, %edi
302 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
303 xorl %ebx, %edi
304 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
305 xorl %ebx, %edi
306 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
307 xorl %ebx, %edi
308
309 /* Round 5 */
310 movl 40(%ebp), %eax
311 xorl %ebx, %ebx
312 movl 44(%ebp), %edx
313 xorl %edi, %eax
314 xorl %edi, %edx
315 andl $0xfcfcfcfc, %eax
316 andl $0xcfcfcfcf, %edx
317 movb %al, %bl
318 movb %ah, %cl
319 rorl $4, %edx
320 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
321 movb %dl, %bl
322 xorl %ebp, %esi
323 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
324 xorl %ebp, %esi
325 movb %dh, %cl
326 shrl $16, %eax
327 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
328 xorl %ebp, %esi
329 movb %ah, %bl
330 shrl $16, %edx
331 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
332 xorl %ebp, %esi
333 movl 24(%esp), %ebp
334 movb %dh, %cl
335 andl $0xff, %eax
336 andl $0xff, %edx
337 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
338 xorl %ebx, %esi
339 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
340 xorl %ebx, %esi
341 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
342 xorl %ebx, %esi
343 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
344 xorl %ebx, %esi
345
346 /* Round 6 */
347 movl 48(%ebp), %eax
348 xorl %ebx, %ebx
349 movl 52(%ebp), %edx
350 xorl %esi, %eax
351 xorl %esi, %edx
352 andl $0xfcfcfcfc, %eax
353 andl $0xcfcfcfcf, %edx
354 movb %al, %bl
355 movb %ah, %cl
356 rorl $4, %edx
357 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
358 movb %dl, %bl
359 xorl %ebp, %edi
360 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
361 xorl %ebp, %edi
362 movb %dh, %cl
363 shrl $16, %eax
364 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
365 xorl %ebp, %edi
366 movb %ah, %bl
367 shrl $16, %edx
368 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
369 xorl %ebp, %edi
370 movl 24(%esp), %ebp
371 movb %dh, %cl
372 andl $0xff, %eax
373 andl $0xff, %edx
374 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
375 xorl %ebx, %edi
376 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
377 xorl %ebx, %edi
378 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
379 xorl %ebx, %edi
380 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
381 xorl %ebx, %edi
382
383 /* Round 7 */
384 movl 56(%ebp), %eax
385 xorl %ebx, %ebx
386 movl 60(%ebp), %edx
387 xorl %edi, %eax
388 xorl %edi, %edx
389 andl $0xfcfcfcfc, %eax
390 andl $0xcfcfcfcf, %edx
391 movb %al, %bl
392 movb %ah, %cl
393 rorl $4, %edx
394 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
395 movb %dl, %bl
396 xorl %ebp, %esi
397 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
398 xorl %ebp, %esi
399 movb %dh, %cl
400 shrl $16, %eax
401 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
402 xorl %ebp, %esi
403 movb %ah, %bl
404 shrl $16, %edx
405 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
406 xorl %ebp, %esi
407 movl 24(%esp), %ebp
408 movb %dh, %cl
409 andl $0xff, %eax
410 andl $0xff, %edx
411 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
412 xorl %ebx, %esi
413 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
414 xorl %ebx, %esi
415 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
416 xorl %ebx, %esi
417 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
418 xorl %ebx, %esi
419
420 /* Round 8 */
421 movl 64(%ebp), %eax
422 xorl %ebx, %ebx
423 movl 68(%ebp), %edx
424 xorl %esi, %eax
425 xorl %esi, %edx
426 andl $0xfcfcfcfc, %eax
427 andl $0xcfcfcfcf, %edx
428 movb %al, %bl
429 movb %ah, %cl
430 rorl $4, %edx
431 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
432 movb %dl, %bl
433 xorl %ebp, %edi
434 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
435 xorl %ebp, %edi
436 movb %dh, %cl
437 shrl $16, %eax
438 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
439 xorl %ebp, %edi
440 movb %ah, %bl
441 shrl $16, %edx
442 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
443 xorl %ebp, %edi
444 movl 24(%esp), %ebp
445 movb %dh, %cl
446 andl $0xff, %eax
447 andl $0xff, %edx
448 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
449 xorl %ebx, %edi
450 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
451 xorl %ebx, %edi
452 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
453 xorl %ebx, %edi
454 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
455 xorl %ebx, %edi
456
457 /* Round 9 */
458 movl 72(%ebp), %eax
459 xorl %ebx, %ebx
460 movl 76(%ebp), %edx
461 xorl %edi, %eax
462 xorl %edi, %edx
463 andl $0xfcfcfcfc, %eax
464 andl $0xcfcfcfcf, %edx
465 movb %al, %bl
466 movb %ah, %cl
467 rorl $4, %edx
468 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
469 movb %dl, %bl
470 xorl %ebp, %esi
471 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
472 xorl %ebp, %esi
473 movb %dh, %cl
474 shrl $16, %eax
475 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
476 xorl %ebp, %esi
477 movb %ah, %bl
478 shrl $16, %edx
479 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
480 xorl %ebp, %esi
481 movl 24(%esp), %ebp
482 movb %dh, %cl
483 andl $0xff, %eax
484 andl $0xff, %edx
485 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
486 xorl %ebx, %esi
487 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
488 xorl %ebx, %esi
489 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
490 xorl %ebx, %esi
491 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
492 xorl %ebx, %esi
493
494 /* Round 10 */
495 movl 80(%ebp), %eax
496 xorl %ebx, %ebx
497 movl 84(%ebp), %edx
498 xorl %esi, %eax
499 xorl %esi, %edx
500 andl $0xfcfcfcfc, %eax
501 andl $0xcfcfcfcf, %edx
502 movb %al, %bl
503 movb %ah, %cl
504 rorl $4, %edx
505 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
506 movb %dl, %bl
507 xorl %ebp, %edi
508 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
509 xorl %ebp, %edi
510 movb %dh, %cl
511 shrl $16, %eax
512 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
513 xorl %ebp, %edi
514 movb %ah, %bl
515 shrl $16, %edx
516 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
517 xorl %ebp, %edi
518 movl 24(%esp), %ebp
519 movb %dh, %cl
520 andl $0xff, %eax
521 andl $0xff, %edx
522 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
523 xorl %ebx, %edi
524 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
525 xorl %ebx, %edi
526 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
527 xorl %ebx, %edi
528 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
529 xorl %ebx, %edi
530
531 /* Round 11 */
532 movl 88(%ebp), %eax
533 xorl %ebx, %ebx
534 movl 92(%ebp), %edx
535 xorl %edi, %eax
536 xorl %edi, %edx
537 andl $0xfcfcfcfc, %eax
538 andl $0xcfcfcfcf, %edx
539 movb %al, %bl
540 movb %ah, %cl
541 rorl $4, %edx
542 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
543 movb %dl, %bl
544 xorl %ebp, %esi
545 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
546 xorl %ebp, %esi
547 movb %dh, %cl
548 shrl $16, %eax
549 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
550 xorl %ebp, %esi
551 movb %ah, %bl
552 shrl $16, %edx
553 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
554 xorl %ebp, %esi
555 movl 24(%esp), %ebp
556 movb %dh, %cl
557 andl $0xff, %eax
558 andl $0xff, %edx
559 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
560 xorl %ebx, %esi
561 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
562 xorl %ebx, %esi
563 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
564 xorl %ebx, %esi
565 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
566 xorl %ebx, %esi
567
568 /* Round 12 */
569 movl 96(%ebp), %eax
570 xorl %ebx, %ebx
571 movl 100(%ebp), %edx
572 xorl %esi, %eax
573 xorl %esi, %edx
574 andl $0xfcfcfcfc, %eax
575 andl $0xcfcfcfcf, %edx
576 movb %al, %bl
577 movb %ah, %cl
578 rorl $4, %edx
579 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
580 movb %dl, %bl
581 xorl %ebp, %edi
582 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
583 xorl %ebp, %edi
584 movb %dh, %cl
585 shrl $16, %eax
586 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
587 xorl %ebp, %edi
588 movb %ah, %bl
589 shrl $16, %edx
590 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
591 xorl %ebp, %edi
592 movl 24(%esp), %ebp
593 movb %dh, %cl
594 andl $0xff, %eax
595 andl $0xff, %edx
596 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
597 xorl %ebx, %edi
598 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
599 xorl %ebx, %edi
600 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
601 xorl %ebx, %edi
602 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
603 xorl %ebx, %edi
604
605 /* Round 13 */
606 movl 104(%ebp), %eax
607 xorl %ebx, %ebx
608 movl 108(%ebp), %edx
609 xorl %edi, %eax
610 xorl %edi, %edx
611 andl $0xfcfcfcfc, %eax
612 andl $0xcfcfcfcf, %edx
613 movb %al, %bl
614 movb %ah, %cl
615 rorl $4, %edx
616 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
617 movb %dl, %bl
618 xorl %ebp, %esi
619 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
620 xorl %ebp, %esi
621 movb %dh, %cl
622 shrl $16, %eax
623 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
624 xorl %ebp, %esi
625 movb %ah, %bl
626 shrl $16, %edx
627 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
628 xorl %ebp, %esi
629 movl 24(%esp), %ebp
630 movb %dh, %cl
631 andl $0xff, %eax
632 andl $0xff, %edx
633 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
634 xorl %ebx, %esi
635 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
636 xorl %ebx, %esi
637 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
638 xorl %ebx, %esi
639 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
640 xorl %ebx, %esi
641
642 /* Round 14 */
643 movl 112(%ebp), %eax
644 xorl %ebx, %ebx
645 movl 116(%ebp), %edx
646 xorl %esi, %eax
647 xorl %esi, %edx
648 andl $0xfcfcfcfc, %eax
649 andl $0xcfcfcfcf, %edx
650 movb %al, %bl
651 movb %ah, %cl
652 rorl $4, %edx
653 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
654 movb %dl, %bl
655 xorl %ebp, %edi
656 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
657 xorl %ebp, %edi
658 movb %dh, %cl
659 shrl $16, %eax
660 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
661 xorl %ebp, %edi
662 movb %ah, %bl
663 shrl $16, %edx
664 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
665 xorl %ebp, %edi
666 movl 24(%esp), %ebp
667 movb %dh, %cl
668 andl $0xff, %eax
669 andl $0xff, %edx
670 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
671 xorl %ebx, %edi
672 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
673 xorl %ebx, %edi
674 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
675 xorl %ebx, %edi
676 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
677 xorl %ebx, %edi
678
679 /* Round 15 */
680 movl 120(%ebp), %eax
681 xorl %ebx, %ebx
682 movl 124(%ebp), %edx
683 xorl %edi, %eax
684 xorl %edi, %edx
685 andl $0xfcfcfcfc, %eax
686 andl $0xcfcfcfcf, %edx
687 movb %al, %bl
688 movb %ah, %cl
689 rorl $4, %edx
690 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
691 movb %dl, %bl
692 xorl %ebp, %esi
693 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
694 xorl %ebp, %esi
695 movb %dh, %cl
696 shrl $16, %eax
697 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
698 xorl %ebp, %esi
699 movb %ah, %bl
700 shrl $16, %edx
701 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
702 xorl %ebp, %esi
703 movl 24(%esp), %ebp
704 movb %dh, %cl
705 andl $0xff, %eax
706 andl $0xff, %edx
707 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
708 xorl %ebx, %esi
709 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
710 xorl %ebx, %esi
711 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
712 xorl %ebx, %esi
713 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
714 xorl %ebx, %esi
715 jmp .L001end
716 .L000start_decrypt:
717
718 /* Round 15 */
719 movl 120(%ebp), %eax
720 xorl %ebx, %ebx
721 movl 124(%ebp), %edx
722 xorl %esi, %eax
723 xorl %esi, %edx
724 andl $0xfcfcfcfc, %eax
725 andl $0xcfcfcfcf, %edx
726 movb %al, %bl
727 movb %ah, %cl
728 rorl $4, %edx
729 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
730 movb %dl, %bl
731 xorl %ebp, %edi
732 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
733 xorl %ebp, %edi
734 movb %dh, %cl
735 shrl $16, %eax
736 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
737 xorl %ebp, %edi
738 movb %ah, %bl
739 shrl $16, %edx
740 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
741 xorl %ebp, %edi
742 movl 24(%esp), %ebp
743 movb %dh, %cl
744 andl $0xff, %eax
745 andl $0xff, %edx
746 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
747 xorl %ebx, %edi
748 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
749 xorl %ebx, %edi
750 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
751 xorl %ebx, %edi
752 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
753 xorl %ebx, %edi
754
755 /* Round 14 */
756 movl 112(%ebp), %eax
757 xorl %ebx, %ebx
758 movl 116(%ebp), %edx
759 xorl %edi, %eax
760 xorl %edi, %edx
761 andl $0xfcfcfcfc, %eax
762 andl $0xcfcfcfcf, %edx
763 movb %al, %bl
764 movb %ah, %cl
765 rorl $4, %edx
766 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
767 movb %dl, %bl
768 xorl %ebp, %esi
769 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
770 xorl %ebp, %esi
771 movb %dh, %cl
772 shrl $16, %eax
773 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
774 xorl %ebp, %esi
775 movb %ah, %bl
776 shrl $16, %edx
777 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
778 xorl %ebp, %esi
779 movl 24(%esp), %ebp
780 movb %dh, %cl
781 andl $0xff, %eax
782 andl $0xff, %edx
783 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
784 xorl %ebx, %esi
785 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
786 xorl %ebx, %esi
787 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
788 xorl %ebx, %esi
789 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
790 xorl %ebx, %esi
791
792 /* Round 13 */
793 movl 104(%ebp), %eax
794 xorl %ebx, %ebx
795 movl 108(%ebp), %edx
796 xorl %esi, %eax
797 xorl %esi, %edx
798 andl $0xfcfcfcfc, %eax
799 andl $0xcfcfcfcf, %edx
800 movb %al, %bl
801 movb %ah, %cl
802 rorl $4, %edx
803 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
804 movb %dl, %bl
805 xorl %ebp, %edi
806 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
807 xorl %ebp, %edi
808 movb %dh, %cl
809 shrl $16, %eax
810 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
811 xorl %ebp, %edi
812 movb %ah, %bl
813 shrl $16, %edx
814 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
815 xorl %ebp, %edi
816 movl 24(%esp), %ebp
817 movb %dh, %cl
818 andl $0xff, %eax
819 andl $0xff, %edx
820 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
821 xorl %ebx, %edi
822 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
823 xorl %ebx, %edi
824 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
825 xorl %ebx, %edi
826 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
827 xorl %ebx, %edi
828
829 /* Round 12 */
830 movl 96(%ebp), %eax
831 xorl %ebx, %ebx
832 movl 100(%ebp), %edx
833 xorl %edi, %eax
834 xorl %edi, %edx
835 andl $0xfcfcfcfc, %eax
836 andl $0xcfcfcfcf, %edx
837 movb %al, %bl
838 movb %ah, %cl
839 rorl $4, %edx
840 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
841 movb %dl, %bl
842 xorl %ebp, %esi
843 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
844 xorl %ebp, %esi
845 movb %dh, %cl
846 shrl $16, %eax
847 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
848 xorl %ebp, %esi
849 movb %ah, %bl
850 shrl $16, %edx
851 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
852 xorl %ebp, %esi
853 movl 24(%esp), %ebp
854 movb %dh, %cl
855 andl $0xff, %eax
856 andl $0xff, %edx
857 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
858 xorl %ebx, %esi
859 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
860 xorl %ebx, %esi
861 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
862 xorl %ebx, %esi
863 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
864 xorl %ebx, %esi
865
866 /* Round 11 */
867 movl 88(%ebp), %eax
868 xorl %ebx, %ebx
869 movl 92(%ebp), %edx
870 xorl %esi, %eax
871 xorl %esi, %edx
872 andl $0xfcfcfcfc, %eax
873 andl $0xcfcfcfcf, %edx
874 movb %al, %bl
875 movb %ah, %cl
876 rorl $4, %edx
877 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
878 movb %dl, %bl
879 xorl %ebp, %edi
880 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
881 xorl %ebp, %edi
882 movb %dh, %cl
883 shrl $16, %eax
884 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
885 xorl %ebp, %edi
886 movb %ah, %bl
887 shrl $16, %edx
888 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
889 xorl %ebp, %edi
890 movl 24(%esp), %ebp
891 movb %dh, %cl
892 andl $0xff, %eax
893 andl $0xff, %edx
894 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
895 xorl %ebx, %edi
896 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
897 xorl %ebx, %edi
898 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
899 xorl %ebx, %edi
900 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
901 xorl %ebx, %edi
902
903 /* Round 10 */
904 movl 80(%ebp), %eax
905 xorl %ebx, %ebx
906 movl 84(%ebp), %edx
907 xorl %edi, %eax
908 xorl %edi, %edx
909 andl $0xfcfcfcfc, %eax
910 andl $0xcfcfcfcf, %edx
911 movb %al, %bl
912 movb %ah, %cl
913 rorl $4, %edx
914 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
915 movb %dl, %bl
916 xorl %ebp, %esi
917 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
918 xorl %ebp, %esi
919 movb %dh, %cl
920 shrl $16, %eax
921 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
922 xorl %ebp, %esi
923 movb %ah, %bl
924 shrl $16, %edx
925 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
926 xorl %ebp, %esi
927 movl 24(%esp), %ebp
928 movb %dh, %cl
929 andl $0xff, %eax
930 andl $0xff, %edx
931 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
932 xorl %ebx, %esi
933 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
934 xorl %ebx, %esi
935 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
936 xorl %ebx, %esi
937 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
938 xorl %ebx, %esi
939
940 /* Round 9 */
941 movl 72(%ebp), %eax
942 xorl %ebx, %ebx
943 movl 76(%ebp), %edx
944 xorl %esi, %eax
945 xorl %esi, %edx
946 andl $0xfcfcfcfc, %eax
947 andl $0xcfcfcfcf, %edx
948 movb %al, %bl
949 movb %ah, %cl
950 rorl $4, %edx
951 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
952 movb %dl, %bl
953 xorl %ebp, %edi
954 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
955 xorl %ebp, %edi
956 movb %dh, %cl
957 shrl $16, %eax
958 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
959 xorl %ebp, %edi
960 movb %ah, %bl
961 shrl $16, %edx
962 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
963 xorl %ebp, %edi
964 movl 24(%esp), %ebp
965 movb %dh, %cl
966 andl $0xff, %eax
967 andl $0xff, %edx
968 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
969 xorl %ebx, %edi
970 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
971 xorl %ebx, %edi
972 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
973 xorl %ebx, %edi
974 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
975 xorl %ebx, %edi
976
977 /* Round 8 */
978 movl 64(%ebp), %eax
979 xorl %ebx, %ebx
980 movl 68(%ebp), %edx
981 xorl %edi, %eax
982 xorl %edi, %edx
983 andl $0xfcfcfcfc, %eax
984 andl $0xcfcfcfcf, %edx
985 movb %al, %bl
986 movb %ah, %cl
987 rorl $4, %edx
988 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
989 movb %dl, %bl
990 xorl %ebp, %esi
991 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
992 xorl %ebp, %esi
993 movb %dh, %cl
994 shrl $16, %eax
995 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
996 xorl %ebp, %esi
997 movb %ah, %bl
998 shrl $16, %edx
999 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1000 xorl %ebp, %esi
1001 movl 24(%esp), %ebp
1002 movb %dh, %cl
1003 andl $0xff, %eax
1004 andl $0xff, %edx
1005 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1006 xorl %ebx, %esi
1007 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1008 xorl %ebx, %esi
1009 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1010 xorl %ebx, %esi
1011 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1012 xorl %ebx, %esi
1013
1014 /* Round 7 */
1015 movl 56(%ebp), %eax
1016 xorl %ebx, %ebx
1017 movl 60(%ebp), %edx
1018 xorl %esi, %eax
1019 xorl %esi, %edx
1020 andl $0xfcfcfcfc, %eax
1021 andl $0xcfcfcfcf, %edx
1022 movb %al, %bl
1023 movb %ah, %cl
1024 rorl $4, %edx
1025 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1026 movb %dl, %bl
1027 xorl %ebp, %edi
1028 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1029 xorl %ebp, %edi
1030 movb %dh, %cl
1031 shrl $16, %eax
1032 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1033 xorl %ebp, %edi
1034 movb %ah, %bl
1035 shrl $16, %edx
1036 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1037 xorl %ebp, %edi
1038 movl 24(%esp), %ebp
1039 movb %dh, %cl
1040 andl $0xff, %eax
1041 andl $0xff, %edx
1042 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1043 xorl %ebx, %edi
1044 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1045 xorl %ebx, %edi
1046 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1047 xorl %ebx, %edi
1048 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1049 xorl %ebx, %edi
1050
1051 /* Round 6 */
1052 movl 48(%ebp), %eax
1053 xorl %ebx, %ebx
1054 movl 52(%ebp), %edx
1055 xorl %edi, %eax
1056 xorl %edi, %edx
1057 andl $0xfcfcfcfc, %eax
1058 andl $0xcfcfcfcf, %edx
1059 movb %al, %bl
1060 movb %ah, %cl
1061 rorl $4, %edx
1062 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1063 movb %dl, %bl
1064 xorl %ebp, %esi
1065 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1066 xorl %ebp, %esi
1067 movb %dh, %cl
1068 shrl $16, %eax
1069 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1070 xorl %ebp, %esi
1071 movb %ah, %bl
1072 shrl $16, %edx
1073 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1074 xorl %ebp, %esi
1075 movl 24(%esp), %ebp
1076 movb %dh, %cl
1077 andl $0xff, %eax
1078 andl $0xff, %edx
1079 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1080 xorl %ebx, %esi
1081 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1082 xorl %ebx, %esi
1083 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1084 xorl %ebx, %esi
1085 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1086 xorl %ebx, %esi
1087
1088 /* Round 5 */
1089 movl 40(%ebp), %eax
1090 xorl %ebx, %ebx
1091 movl 44(%ebp), %edx
1092 xorl %esi, %eax
1093 xorl %esi, %edx
1094 andl $0xfcfcfcfc, %eax
1095 andl $0xcfcfcfcf, %edx
1096 movb %al, %bl
1097 movb %ah, %cl
1098 rorl $4, %edx
1099 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1100 movb %dl, %bl
1101 xorl %ebp, %edi
1102 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1103 xorl %ebp, %edi
1104 movb %dh, %cl
1105 shrl $16, %eax
1106 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1107 xorl %ebp, %edi
1108 movb %ah, %bl
1109 shrl $16, %edx
1110 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1111 xorl %ebp, %edi
1112 movl 24(%esp), %ebp
1113 movb %dh, %cl
1114 andl $0xff, %eax
1115 andl $0xff, %edx
1116 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1117 xorl %ebx, %edi
1118 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1119 xorl %ebx, %edi
1120 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1121 xorl %ebx, %edi
1122 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1123 xorl %ebx, %edi
1124
1125 /* Round 4 */
1126 movl 32(%ebp), %eax
1127 xorl %ebx, %ebx
1128 movl 36(%ebp), %edx
1129 xorl %edi, %eax
1130 xorl %edi, %edx
1131 andl $0xfcfcfcfc, %eax
1132 andl $0xcfcfcfcf, %edx
1133 movb %al, %bl
1134 movb %ah, %cl
1135 rorl $4, %edx
1136 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1137 movb %dl, %bl
1138 xorl %ebp, %esi
1139 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1140 xorl %ebp, %esi
1141 movb %dh, %cl
1142 shrl $16, %eax
1143 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1144 xorl %ebp, %esi
1145 movb %ah, %bl
1146 shrl $16, %edx
1147 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1148 xorl %ebp, %esi
1149 movl 24(%esp), %ebp
1150 movb %dh, %cl
1151 andl $0xff, %eax
1152 andl $0xff, %edx
1153 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1154 xorl %ebx, %esi
1155 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1156 xorl %ebx, %esi
1157 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1158 xorl %ebx, %esi
1159 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1160 xorl %ebx, %esi
1161
1162 /* Round 3 */
1163 movl 24(%ebp), %eax
1164 xorl %ebx, %ebx
1165 movl 28(%ebp), %edx
1166 xorl %esi, %eax
1167 xorl %esi, %edx
1168 andl $0xfcfcfcfc, %eax
1169 andl $0xcfcfcfcf, %edx
1170 movb %al, %bl
1171 movb %ah, %cl
1172 rorl $4, %edx
1173 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1174 movb %dl, %bl
1175 xorl %ebp, %edi
1176 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1177 xorl %ebp, %edi
1178 movb %dh, %cl
1179 shrl $16, %eax
1180 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1181 xorl %ebp, %edi
1182 movb %ah, %bl
1183 shrl $16, %edx
1184 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1185 xorl %ebp, %edi
1186 movl 24(%esp), %ebp
1187 movb %dh, %cl
1188 andl $0xff, %eax
1189 andl $0xff, %edx
1190 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1191 xorl %ebx, %edi
1192 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1193 xorl %ebx, %edi
1194 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1195 xorl %ebx, %edi
1196 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1197 xorl %ebx, %edi
1198
1199 /* Round 2 */
1200 movl 16(%ebp), %eax
1201 xorl %ebx, %ebx
1202 movl 20(%ebp), %edx
1203 xorl %edi, %eax
1204 xorl %edi, %edx
1205 andl $0xfcfcfcfc, %eax
1206 andl $0xcfcfcfcf, %edx
1207 movb %al, %bl
1208 movb %ah, %cl
1209 rorl $4, %edx
1210 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1211 movb %dl, %bl
1212 xorl %ebp, %esi
1213 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1214 xorl %ebp, %esi
1215 movb %dh, %cl
1216 shrl $16, %eax
1217 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1218 xorl %ebp, %esi
1219 movb %ah, %bl
1220 shrl $16, %edx
1221 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1222 xorl %ebp, %esi
1223 movl 24(%esp), %ebp
1224 movb %dh, %cl
1225 andl $0xff, %eax
1226 andl $0xff, %edx
1227 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1228 xorl %ebx, %esi
1229 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1230 xorl %ebx, %esi
1231 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1232 xorl %ebx, %esi
1233 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1234 xorl %ebx, %esi
1235
1236 /* Round 1 */
1237 movl 8(%ebp), %eax
1238 xorl %ebx, %ebx
1239 movl 12(%ebp), %edx
1240 xorl %esi, %eax
1241 xorl %esi, %edx
1242 andl $0xfcfcfcfc, %eax
1243 andl $0xcfcfcfcf, %edx
1244 movb %al, %bl
1245 movb %ah, %cl
1246 rorl $4, %edx
1247 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1248 movb %dl, %bl
1249 xorl %ebp, %edi
1250 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1251 xorl %ebp, %edi
1252 movb %dh, %cl
1253 shrl $16, %eax
1254 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1255 xorl %ebp, %edi
1256 movb %ah, %bl
1257 shrl $16, %edx
1258 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1259 xorl %ebp, %edi
1260 movl 24(%esp), %ebp
1261 movb %dh, %cl
1262 andl $0xff, %eax
1263 andl $0xff, %edx
1264 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1265 xorl %ebx, %edi
1266 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1267 xorl %ebx, %edi
1268 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1269 xorl %ebx, %edi
1270 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1271 xorl %ebx, %edi
1272
1273 /* Round 0 */
1274 movl (%ebp), %eax
1275 xorl %ebx, %ebx
1276 movl 4(%ebp), %edx
1277 xorl %edi, %eax
1278 xorl %edi, %edx
1279 andl $0xfcfcfcfc, %eax
1280 andl $0xcfcfcfcf, %edx
1281 movb %al, %bl
1282 movb %ah, %cl
1283 rorl $4, %edx
1284 movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1285 movb %dl, %bl
1286 xorl %ebp, %esi
1287 movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1288 xorl %ebp, %esi
1289 movb %dh, %cl
1290 shrl $16, %eax
1291 movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1292 xorl %ebp, %esi
1293 movb %ah, %bl
1294 shrl $16, %edx
1295 movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1296 xorl %ebp, %esi
1297 movl 24(%esp), %ebp
1298 movb %dh, %cl
1299 andl $0xff, %eax
1300 andl $0xff, %edx
1301 movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1302 xorl %ebx, %esi
1303 movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1304 xorl %ebx, %esi
1305 movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1306 xorl %ebx, %esi
1307 movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1308 xorl %ebx, %esi
1309 .L001end:
1310
1311 /* FP */
1312 movl 20(%esp), %edx
1313 .byte 209
1314 .byte 206 # rorl $1 %esi
1315 movl %edi, %eax
1316 xorl %esi, %edi
1317 andl $0xaaaaaaaa, %edi
1318 xorl %edi, %eax
1319 xorl %edi, %esi
1320
1321 roll $23, %eax
1322 movl %eax, %edi
1323 xorl %esi, %eax
1324 andl $0x03fc03fc, %eax
1325 xorl %eax, %edi
1326 xorl %eax, %esi
1327
1328 roll $10, %edi
1329 movl %edi, %eax
1330 xorl %esi, %edi
1331 andl $0x33333333, %edi
1332 xorl %edi, %eax
1333 xorl %edi, %esi
1334
1335 roll $18, %esi
1336 movl %esi, %edi
1337 xorl %eax, %esi
1338 andl $0xfff0000f, %esi
1339 xorl %esi, %edi
1340 xorl %esi, %eax
1341
1342 roll $12, %edi
1343 movl %edi, %esi
1344 xorl %eax, %edi
1345 andl $0xf0f0f0f0, %edi
1346 xorl %edi, %esi
1347 xorl %edi, %eax
1348
1349 rorl $4, %eax
1350 movl %eax, (%edx)
1351 movl %esi, 4(%edx)
1352 popl %ebp
1353 popl %ebx
1354 popl %edi
1355 popl %esi
1356 ret
1357 END(des_encrypt1)
1358
1359 ENTRY(des_encrypt2)
1360 pushl %esi
1361 pushl %edi
1362
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
1376
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
1413
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
1450
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
1487
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
1524
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
1561
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
1598
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
1635
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
1672
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
1709
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
1746
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
1783
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
1820
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
1857
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
1894
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
1931
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:
1970
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
2007
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
2044
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
2081
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
2118
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
2155
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
2192
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
2229
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
2266
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
2303
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
2340
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
2377
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
2414
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
2451
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
2488
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
2525
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:
2563
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 END(des_encrypt2)
2576
2577 ENTRY(des_encrypt3)
2578 pushl %ebx
2579 movl 8(%esp), %ebx
2580 pushl %ebp
2581 pushl %esi
2582 pushl %edi
2583
2584 /* Load the data words */
2585 movl (%ebx), %edi
2586 movl 4(%ebx), %esi
2587 subl $12, %esp
2588
2589 /* IP */
2590 roll $4, %edi
2591 movl %edi, %edx
2592 xorl %esi, %edi
2593 andl $0xf0f0f0f0, %edi
2594 xorl %edi, %edx
2595 xorl %edi, %esi
2596
2597 roll $20, %esi
2598 movl %esi, %edi
2599 xorl %edx, %esi
2600 andl $0xfff0000f, %esi
2601 xorl %esi, %edi
2602 xorl %esi, %edx
2603
2604 roll $14, %edi
2605 movl %edi, %esi
2606 xorl %edx, %edi
2607 andl $0x33333333, %edi
2608 xorl %edi, %esi
2609 xorl %edi, %edx
2610
2611 roll $22, %edx
2612 movl %edx, %edi
2613 xorl %esi, %edx
2614 andl $0x03fc03fc, %edx
2615 xorl %edx, %edi
2616 xorl %edx, %esi
2617
2618 roll $9, %edi
2619 movl %edi, %edx
2620 xorl %esi, %edi
2621 andl $0xaaaaaaaa, %edi
2622 xorl %edi, %edx
2623 xorl %edi, %esi
2624
2625 rorl $3, %edx
2626 rorl $2, %esi
2627 movl %esi, 4(%ebx)
2628 movl 36(%esp), %eax
2629 movl %edx, (%ebx)
2630 movl 40(%esp), %edi
2631 movl 44(%esp), %esi
2632 movl $1, 8(%esp)
2633 movl %eax, 4(%esp)
2634 movl %ebx, (%esp)
2635 call _C_LABEL(des_encrypt2)
2636 movl $0, 8(%esp)
2637 movl %edi, 4(%esp)
2638 movl %ebx, (%esp)
2639 call _C_LABEL(des_encrypt2)
2640 movl $1, 8(%esp)
2641 movl %esi, 4(%esp)
2642 movl %ebx, (%esp)
2643 call _C_LABEL(des_encrypt2)
2644 addl $12, %esp
2645 movl (%ebx), %edi
2646 movl 4(%ebx), %esi
2647
2648 /* FP */
2649 roll $2, %esi
2650 roll $3, %edi
2651 movl %edi, %eax
2652 xorl %esi, %edi
2653 andl $0xaaaaaaaa, %edi
2654 xorl %edi, %eax
2655 xorl %edi, %esi
2656
2657 roll $23, %eax
2658 movl %eax, %edi
2659 xorl %esi, %eax
2660 andl $0x03fc03fc, %eax
2661 xorl %eax, %edi
2662 xorl %eax, %esi
2663
2664 roll $10, %edi
2665 movl %edi, %eax
2666 xorl %esi, %edi
2667 andl $0x33333333, %edi
2668 xorl %edi, %eax
2669 xorl %edi, %esi
2670
2671 roll $18, %esi
2672 movl %esi, %edi
2673 xorl %eax, %esi
2674 andl $0xfff0000f, %esi
2675 xorl %esi, %edi
2676 xorl %esi, %eax
2677
2678 roll $12, %edi
2679 movl %edi, %esi
2680 xorl %eax, %edi
2681 andl $0xf0f0f0f0, %edi
2682 xorl %edi, %esi
2683 xorl %edi, %eax
2684
2685 rorl $4, %eax
2686 movl %eax, (%ebx)
2687 movl %esi, 4(%ebx)
2688 popl %edi
2689 popl %esi
2690 popl %ebp
2691 popl %ebx
2692 ret
2693 END(des_encrypt3)
2694
2695 ENTRY(des_decrypt3)
2696 pushl %ebx
2697 movl 8(%esp), %ebx
2698 pushl %ebp
2699 pushl %esi
2700 pushl %edi
2701
2702 /* Load the data words */
2703 movl (%ebx), %edi
2704 movl 4(%ebx), %esi
2705 subl $12, %esp
2706
2707 /* IP */
2708 roll $4, %edi
2709 movl %edi, %edx
2710 xorl %esi, %edi
2711 andl $0xf0f0f0f0, %edi
2712 xorl %edi, %edx
2713 xorl %edi, %esi
2714
2715 roll $20, %esi
2716 movl %esi, %edi
2717 xorl %edx, %esi
2718 andl $0xfff0000f, %esi
2719 xorl %esi, %edi
2720 xorl %esi, %edx
2721
2722 roll $14, %edi
2723 movl %edi, %esi
2724 xorl %edx, %edi
2725 andl $0x33333333, %edi
2726 xorl %edi, %esi
2727 xorl %edi, %edx
2728
2729 roll $22, %edx
2730 movl %edx, %edi
2731 xorl %esi, %edx
2732 andl $0x03fc03fc, %edx
2733 xorl %edx, %edi
2734 xorl %edx, %esi
2735
2736 roll $9, %edi
2737 movl %edi, %edx
2738 xorl %esi, %edi
2739 andl $0xaaaaaaaa, %edi
2740 xorl %edi, %edx
2741 xorl %edi, %esi
2742
2743 rorl $3, %edx
2744 rorl $2, %esi
2745 movl %esi, 4(%ebx)
2746 movl 36(%esp), %esi
2747 movl %edx, (%ebx)
2748 movl 40(%esp), %edi
2749 movl 44(%esp), %eax
2750 movl $0, 8(%esp)
2751 movl %eax, 4(%esp)
2752 movl %ebx, (%esp)
2753 call _C_LABEL(des_encrypt2)
2754 movl $1, 8(%esp)
2755 movl %edi, 4(%esp)
2756 movl %ebx, (%esp)
2757 call _C_LABEL(des_encrypt2)
2758 movl $0, 8(%esp)
2759 movl %esi, 4(%esp)
2760 movl %ebx, (%esp)
2761 call _C_LABEL(des_encrypt2)
2762 addl $12, %esp
2763 movl (%ebx), %edi
2764 movl 4(%ebx), %esi
2765
2766 /* FP */
2767 roll $2, %esi
2768 roll $3, %edi
2769 movl %edi, %eax
2770 xorl %esi, %edi
2771 andl $0xaaaaaaaa, %edi
2772 xorl %edi, %eax
2773 xorl %edi, %esi
2774
2775 roll $23, %eax
2776 movl %eax, %edi
2777 xorl %esi, %eax
2778 andl $0x03fc03fc, %eax
2779 xorl %eax, %edi
2780 xorl %eax, %esi
2781
2782 roll $10, %edi
2783 movl %edi, %eax
2784 xorl %esi, %edi
2785 andl $0x33333333, %edi
2786 xorl %edi, %eax
2787 xorl %edi, %esi
2788
2789 roll $18, %esi
2790 movl %esi, %edi
2791 xorl %eax, %esi
2792 andl $0xfff0000f, %esi
2793 xorl %esi, %edi
2794 xorl %esi, %eax
2795
2796 roll $12, %edi
2797 movl %edi, %esi
2798 xorl %eax, %edi
2799 andl $0xf0f0f0f0, %edi
2800 xorl %edi, %esi
2801 xorl %edi, %eax
2802
2803 rorl $4, %eax
2804 movl %eax, (%ebx)
2805 movl %esi, 4(%ebx)
2806 popl %edi
2807 popl %esi
2808 popl %ebp
2809 popl %ebx
2810 ret
2811 END(des_decrypt3)
Cache object: 75cb2e7553b96f6b0bf8aeec20baacca
|