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