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