OSDN Git Service

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