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