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