]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/blob - secure/lib/libcrypto/i386/des-586.S
- Make libcrypto.so position independent on i386.
[FreeBSD/stable/10.git] / secure / lib / libcrypto / i386 / des-586.S
1 # $FreeBSD$
2 # Do not modify. This file is auto-generated from des-586.pl.
3 #ifdef PIC
4 .file   "des-586.S"
5 .text
6 .globl  DES_SPtrans
7 .type   _x86_DES_encrypt,@function
8 .align  16
9 _x86_DES_encrypt:
10         pushl   %ecx
11
12         movl    (%ecx),%eax
13         xorl    %ebx,%ebx
14         movl    4(%ecx),%edx
15         xorl    %esi,%eax
16         xorl    %ecx,%ecx
17         xorl    %esi,%edx
18         andl    $0xfcfcfcfc,%eax
19         andl    $0xcfcfcfcf,%edx
20         movb    %al,%bl
21         movb    %ah,%cl
22         rorl    $4,%edx
23         xorl    (%ebp,%ebx,1),%edi
24         movb    %dl,%bl
25         xorl    0x200(%ebp,%ecx,1),%edi
26         movb    %dh,%cl
27         shrl    $16,%eax
28         xorl    0x100(%ebp,%ebx,1),%edi
29         movb    %ah,%bl
30         shrl    $16,%edx
31         xorl    0x300(%ebp,%ecx,1),%edi
32         movb    %dh,%cl
33         andl    $0xff,%eax
34         andl    $0xff,%edx
35         xorl    0x600(%ebp,%ebx,1),%edi
36         xorl    0x700(%ebp,%ecx,1),%edi
37         movl    (%esp),%ecx
38         xorl    0x400(%ebp,%eax,1),%edi
39         xorl    0x500(%ebp,%edx,1),%edi
40
41         movl    8(%ecx),%eax
42         xorl    %ebx,%ebx
43         movl    12(%ecx),%edx
44         xorl    %edi,%eax
45         xorl    %ecx,%ecx
46         xorl    %edi,%edx
47         andl    $0xfcfcfcfc,%eax
48         andl    $0xcfcfcfcf,%edx
49         movb    %al,%bl
50         movb    %ah,%cl
51         rorl    $4,%edx
52         xorl    (%ebp,%ebx,1),%esi
53         movb    %dl,%bl
54         xorl    0x200(%ebp,%ecx,1),%esi
55         movb    %dh,%cl
56         shrl    $16,%eax
57         xorl    0x100(%ebp,%ebx,1),%esi
58         movb    %ah,%bl
59         shrl    $16,%edx
60         xorl    0x300(%ebp,%ecx,1),%esi
61         movb    %dh,%cl
62         andl    $0xff,%eax
63         andl    $0xff,%edx
64         xorl    0x600(%ebp,%ebx,1),%esi
65         xorl    0x700(%ebp,%ecx,1),%esi
66         movl    (%esp),%ecx
67         xorl    0x400(%ebp,%eax,1),%esi
68         xorl    0x500(%ebp,%edx,1),%esi
69
70         movl    16(%ecx),%eax
71         xorl    %ebx,%ebx
72         movl    20(%ecx),%edx
73         xorl    %esi,%eax
74         xorl    %ecx,%ecx
75         xorl    %esi,%edx
76         andl    $0xfcfcfcfc,%eax
77         andl    $0xcfcfcfcf,%edx
78         movb    %al,%bl
79         movb    %ah,%cl
80         rorl    $4,%edx
81         xorl    (%ebp,%ebx,1),%edi
82         movb    %dl,%bl
83         xorl    0x200(%ebp,%ecx,1),%edi
84         movb    %dh,%cl
85         shrl    $16,%eax
86         xorl    0x100(%ebp,%ebx,1),%edi
87         movb    %ah,%bl
88         shrl    $16,%edx
89         xorl    0x300(%ebp,%ecx,1),%edi
90         movb    %dh,%cl
91         andl    $0xff,%eax
92         andl    $0xff,%edx
93         xorl    0x600(%ebp,%ebx,1),%edi
94         xorl    0x700(%ebp,%ecx,1),%edi
95         movl    (%esp),%ecx
96         xorl    0x400(%ebp,%eax,1),%edi
97         xorl    0x500(%ebp,%edx,1),%edi
98
99         movl    24(%ecx),%eax
100         xorl    %ebx,%ebx
101         movl    28(%ecx),%edx
102         xorl    %edi,%eax
103         xorl    %ecx,%ecx
104         xorl    %edi,%edx
105         andl    $0xfcfcfcfc,%eax
106         andl    $0xcfcfcfcf,%edx
107         movb    %al,%bl
108         movb    %ah,%cl
109         rorl    $4,%edx
110         xorl    (%ebp,%ebx,1),%esi
111         movb    %dl,%bl
112         xorl    0x200(%ebp,%ecx,1),%esi
113         movb    %dh,%cl
114         shrl    $16,%eax
115         xorl    0x100(%ebp,%ebx,1),%esi
116         movb    %ah,%bl
117         shrl    $16,%edx
118         xorl    0x300(%ebp,%ecx,1),%esi
119         movb    %dh,%cl
120         andl    $0xff,%eax
121         andl    $0xff,%edx
122         xorl    0x600(%ebp,%ebx,1),%esi
123         xorl    0x700(%ebp,%ecx,1),%esi
124         movl    (%esp),%ecx
125         xorl    0x400(%ebp,%eax,1),%esi
126         xorl    0x500(%ebp,%edx,1),%esi
127
128         movl    32(%ecx),%eax
129         xorl    %ebx,%ebx
130         movl    36(%ecx),%edx
131         xorl    %esi,%eax
132         xorl    %ecx,%ecx
133         xorl    %esi,%edx
134         andl    $0xfcfcfcfc,%eax
135         andl    $0xcfcfcfcf,%edx
136         movb    %al,%bl
137         movb    %ah,%cl
138         rorl    $4,%edx
139         xorl    (%ebp,%ebx,1),%edi
140         movb    %dl,%bl
141         xorl    0x200(%ebp,%ecx,1),%edi
142         movb    %dh,%cl
143         shrl    $16,%eax
144         xorl    0x100(%ebp,%ebx,1),%edi
145         movb    %ah,%bl
146         shrl    $16,%edx
147         xorl    0x300(%ebp,%ecx,1),%edi
148         movb    %dh,%cl
149         andl    $0xff,%eax
150         andl    $0xff,%edx
151         xorl    0x600(%ebp,%ebx,1),%edi
152         xorl    0x700(%ebp,%ecx,1),%edi
153         movl    (%esp),%ecx
154         xorl    0x400(%ebp,%eax,1),%edi
155         xorl    0x500(%ebp,%edx,1),%edi
156
157         movl    40(%ecx),%eax
158         xorl    %ebx,%ebx
159         movl    44(%ecx),%edx
160         xorl    %edi,%eax
161         xorl    %ecx,%ecx
162         xorl    %edi,%edx
163         andl    $0xfcfcfcfc,%eax
164         andl    $0xcfcfcfcf,%edx
165         movb    %al,%bl
166         movb    %ah,%cl
167         rorl    $4,%edx
168         xorl    (%ebp,%ebx,1),%esi
169         movb    %dl,%bl
170         xorl    0x200(%ebp,%ecx,1),%esi
171         movb    %dh,%cl
172         shrl    $16,%eax
173         xorl    0x100(%ebp,%ebx,1),%esi
174         movb    %ah,%bl
175         shrl    $16,%edx
176         xorl    0x300(%ebp,%ecx,1),%esi
177         movb    %dh,%cl
178         andl    $0xff,%eax
179         andl    $0xff,%edx
180         xorl    0x600(%ebp,%ebx,1),%esi
181         xorl    0x700(%ebp,%ecx,1),%esi
182         movl    (%esp),%ecx
183         xorl    0x400(%ebp,%eax,1),%esi
184         xorl    0x500(%ebp,%edx,1),%esi
185
186         movl    48(%ecx),%eax
187         xorl    %ebx,%ebx
188         movl    52(%ecx),%edx
189         xorl    %esi,%eax
190         xorl    %ecx,%ecx
191         xorl    %esi,%edx
192         andl    $0xfcfcfcfc,%eax
193         andl    $0xcfcfcfcf,%edx
194         movb    %al,%bl
195         movb    %ah,%cl
196         rorl    $4,%edx
197         xorl    (%ebp,%ebx,1),%edi
198         movb    %dl,%bl
199         xorl    0x200(%ebp,%ecx,1),%edi
200         movb    %dh,%cl
201         shrl    $16,%eax
202         xorl    0x100(%ebp,%ebx,1),%edi
203         movb    %ah,%bl
204         shrl    $16,%edx
205         xorl    0x300(%ebp,%ecx,1),%edi
206         movb    %dh,%cl
207         andl    $0xff,%eax
208         andl    $0xff,%edx
209         xorl    0x600(%ebp,%ebx,1),%edi
210         xorl    0x700(%ebp,%ecx,1),%edi
211         movl    (%esp),%ecx
212         xorl    0x400(%ebp,%eax,1),%edi
213         xorl    0x500(%ebp,%edx,1),%edi
214
215         movl    56(%ecx),%eax
216         xorl    %ebx,%ebx
217         movl    60(%ecx),%edx
218         xorl    %edi,%eax
219         xorl    %ecx,%ecx
220         xorl    %edi,%edx
221         andl    $0xfcfcfcfc,%eax
222         andl    $0xcfcfcfcf,%edx
223         movb    %al,%bl
224         movb    %ah,%cl
225         rorl    $4,%edx
226         xorl    (%ebp,%ebx,1),%esi
227         movb    %dl,%bl
228         xorl    0x200(%ebp,%ecx,1),%esi
229         movb    %dh,%cl
230         shrl    $16,%eax
231         xorl    0x100(%ebp,%ebx,1),%esi
232         movb    %ah,%bl
233         shrl    $16,%edx
234         xorl    0x300(%ebp,%ecx,1),%esi
235         movb    %dh,%cl
236         andl    $0xff,%eax
237         andl    $0xff,%edx
238         xorl    0x600(%ebp,%ebx,1),%esi
239         xorl    0x700(%ebp,%ecx,1),%esi
240         movl    (%esp),%ecx
241         xorl    0x400(%ebp,%eax,1),%esi
242         xorl    0x500(%ebp,%edx,1),%esi
243
244         movl    64(%ecx),%eax
245         xorl    %ebx,%ebx
246         movl    68(%ecx),%edx
247         xorl    %esi,%eax
248         xorl    %ecx,%ecx
249         xorl    %esi,%edx
250         andl    $0xfcfcfcfc,%eax
251         andl    $0xcfcfcfcf,%edx
252         movb    %al,%bl
253         movb    %ah,%cl
254         rorl    $4,%edx
255         xorl    (%ebp,%ebx,1),%edi
256         movb    %dl,%bl
257         xorl    0x200(%ebp,%ecx,1),%edi
258         movb    %dh,%cl
259         shrl    $16,%eax
260         xorl    0x100(%ebp,%ebx,1),%edi
261         movb    %ah,%bl
262         shrl    $16,%edx
263         xorl    0x300(%ebp,%ecx,1),%edi
264         movb    %dh,%cl
265         andl    $0xff,%eax
266         andl    $0xff,%edx
267         xorl    0x600(%ebp,%ebx,1),%edi
268         xorl    0x700(%ebp,%ecx,1),%edi
269         movl    (%esp),%ecx
270         xorl    0x400(%ebp,%eax,1),%edi
271         xorl    0x500(%ebp,%edx,1),%edi
272
273         movl    72(%ecx),%eax
274         xorl    %ebx,%ebx
275         movl    76(%ecx),%edx
276         xorl    %edi,%eax
277         xorl    %ecx,%ecx
278         xorl    %edi,%edx
279         andl    $0xfcfcfcfc,%eax
280         andl    $0xcfcfcfcf,%edx
281         movb    %al,%bl
282         movb    %ah,%cl
283         rorl    $4,%edx
284         xorl    (%ebp,%ebx,1),%esi
285         movb    %dl,%bl
286         xorl    0x200(%ebp,%ecx,1),%esi
287         movb    %dh,%cl
288         shrl    $16,%eax
289         xorl    0x100(%ebp,%ebx,1),%esi
290         movb    %ah,%bl
291         shrl    $16,%edx
292         xorl    0x300(%ebp,%ecx,1),%esi
293         movb    %dh,%cl
294         andl    $0xff,%eax
295         andl    $0xff,%edx
296         xorl    0x600(%ebp,%ebx,1),%esi
297         xorl    0x700(%ebp,%ecx,1),%esi
298         movl    (%esp),%ecx
299         xorl    0x400(%ebp,%eax,1),%esi
300         xorl    0x500(%ebp,%edx,1),%esi
301
302         movl    80(%ecx),%eax
303         xorl    %ebx,%ebx
304         movl    84(%ecx),%edx
305         xorl    %esi,%eax
306         xorl    %ecx,%ecx
307         xorl    %esi,%edx
308         andl    $0xfcfcfcfc,%eax
309         andl    $0xcfcfcfcf,%edx
310         movb    %al,%bl
311         movb    %ah,%cl
312         rorl    $4,%edx
313         xorl    (%ebp,%ebx,1),%edi
314         movb    %dl,%bl
315         xorl    0x200(%ebp,%ecx,1),%edi
316         movb    %dh,%cl
317         shrl    $16,%eax
318         xorl    0x100(%ebp,%ebx,1),%edi
319         movb    %ah,%bl
320         shrl    $16,%edx
321         xorl    0x300(%ebp,%ecx,1),%edi
322         movb    %dh,%cl
323         andl    $0xff,%eax
324         andl    $0xff,%edx
325         xorl    0x600(%ebp,%ebx,1),%edi
326         xorl    0x700(%ebp,%ecx,1),%edi
327         movl    (%esp),%ecx
328         xorl    0x400(%ebp,%eax,1),%edi
329         xorl    0x500(%ebp,%edx,1),%edi
330
331         movl    88(%ecx),%eax
332         xorl    %ebx,%ebx
333         movl    92(%ecx),%edx
334         xorl    %edi,%eax
335         xorl    %ecx,%ecx
336         xorl    %edi,%edx
337         andl    $0xfcfcfcfc,%eax
338         andl    $0xcfcfcfcf,%edx
339         movb    %al,%bl
340         movb    %ah,%cl
341         rorl    $4,%edx
342         xorl    (%ebp,%ebx,1),%esi
343         movb    %dl,%bl
344         xorl    0x200(%ebp,%ecx,1),%esi
345         movb    %dh,%cl
346         shrl    $16,%eax
347         xorl    0x100(%ebp,%ebx,1),%esi
348         movb    %ah,%bl
349         shrl    $16,%edx
350         xorl    0x300(%ebp,%ecx,1),%esi
351         movb    %dh,%cl
352         andl    $0xff,%eax
353         andl    $0xff,%edx
354         xorl    0x600(%ebp,%ebx,1),%esi
355         xorl    0x700(%ebp,%ecx,1),%esi
356         movl    (%esp),%ecx
357         xorl    0x400(%ebp,%eax,1),%esi
358         xorl    0x500(%ebp,%edx,1),%esi
359
360         movl    96(%ecx),%eax
361         xorl    %ebx,%ebx
362         movl    100(%ecx),%edx
363         xorl    %esi,%eax
364         xorl    %ecx,%ecx
365         xorl    %esi,%edx
366         andl    $0xfcfcfcfc,%eax
367         andl    $0xcfcfcfcf,%edx
368         movb    %al,%bl
369         movb    %ah,%cl
370         rorl    $4,%edx
371         xorl    (%ebp,%ebx,1),%edi
372         movb    %dl,%bl
373         xorl    0x200(%ebp,%ecx,1),%edi
374         movb    %dh,%cl
375         shrl    $16,%eax
376         xorl    0x100(%ebp,%ebx,1),%edi
377         movb    %ah,%bl
378         shrl    $16,%edx
379         xorl    0x300(%ebp,%ecx,1),%edi
380         movb    %dh,%cl
381         andl    $0xff,%eax
382         andl    $0xff,%edx
383         xorl    0x600(%ebp,%ebx,1),%edi
384         xorl    0x700(%ebp,%ecx,1),%edi
385         movl    (%esp),%ecx
386         xorl    0x400(%ebp,%eax,1),%edi
387         xorl    0x500(%ebp,%edx,1),%edi
388
389         movl    104(%ecx),%eax
390         xorl    %ebx,%ebx
391         movl    108(%ecx),%edx
392         xorl    %edi,%eax
393         xorl    %ecx,%ecx
394         xorl    %edi,%edx
395         andl    $0xfcfcfcfc,%eax
396         andl    $0xcfcfcfcf,%edx
397         movb    %al,%bl
398         movb    %ah,%cl
399         rorl    $4,%edx
400         xorl    (%ebp,%ebx,1),%esi
401         movb    %dl,%bl
402         xorl    0x200(%ebp,%ecx,1),%esi
403         movb    %dh,%cl
404         shrl    $16,%eax
405         xorl    0x100(%ebp,%ebx,1),%esi
406         movb    %ah,%bl
407         shrl    $16,%edx
408         xorl    0x300(%ebp,%ecx,1),%esi
409         movb    %dh,%cl
410         andl    $0xff,%eax
411         andl    $0xff,%edx
412         xorl    0x600(%ebp,%ebx,1),%esi
413         xorl    0x700(%ebp,%ecx,1),%esi
414         movl    (%esp),%ecx
415         xorl    0x400(%ebp,%eax,1),%esi
416         xorl    0x500(%ebp,%edx,1),%esi
417
418         movl    112(%ecx),%eax
419         xorl    %ebx,%ebx
420         movl    116(%ecx),%edx
421         xorl    %esi,%eax
422         xorl    %ecx,%ecx
423         xorl    %esi,%edx
424         andl    $0xfcfcfcfc,%eax
425         andl    $0xcfcfcfcf,%edx
426         movb    %al,%bl
427         movb    %ah,%cl
428         rorl    $4,%edx
429         xorl    (%ebp,%ebx,1),%edi
430         movb    %dl,%bl
431         xorl    0x200(%ebp,%ecx,1),%edi
432         movb    %dh,%cl
433         shrl    $16,%eax
434         xorl    0x100(%ebp,%ebx,1),%edi
435         movb    %ah,%bl
436         shrl    $16,%edx
437         xorl    0x300(%ebp,%ecx,1),%edi
438         movb    %dh,%cl
439         andl    $0xff,%eax
440         andl    $0xff,%edx
441         xorl    0x600(%ebp,%ebx,1),%edi
442         xorl    0x700(%ebp,%ecx,1),%edi
443         movl    (%esp),%ecx
444         xorl    0x400(%ebp,%eax,1),%edi
445         xorl    0x500(%ebp,%edx,1),%edi
446
447         movl    120(%ecx),%eax
448         xorl    %ebx,%ebx
449         movl    124(%ecx),%edx
450         xorl    %edi,%eax
451         xorl    %ecx,%ecx
452         xorl    %edi,%edx
453         andl    $0xfcfcfcfc,%eax
454         andl    $0xcfcfcfcf,%edx
455         movb    %al,%bl
456         movb    %ah,%cl
457         rorl    $4,%edx
458         xorl    (%ebp,%ebx,1),%esi
459         movb    %dl,%bl
460         xorl    0x200(%ebp,%ecx,1),%esi
461         movb    %dh,%cl
462         shrl    $16,%eax
463         xorl    0x100(%ebp,%ebx,1),%esi
464         movb    %ah,%bl
465         shrl    $16,%edx
466         xorl    0x300(%ebp,%ecx,1),%esi
467         movb    %dh,%cl
468         andl    $0xff,%eax
469         andl    $0xff,%edx
470         xorl    0x600(%ebp,%ebx,1),%esi
471         xorl    0x700(%ebp,%ecx,1),%esi
472         movl    (%esp),%ecx
473         xorl    0x400(%ebp,%eax,1),%esi
474         xorl    0x500(%ebp,%edx,1),%esi
475         addl    $4,%esp
476         ret
477 .size   _x86_DES_encrypt,.-_x86_DES_encrypt
478 .type   _x86_DES_decrypt,@function
479 .align  16
480 _x86_DES_decrypt:
481         pushl   %ecx
482
483         movl    120(%ecx),%eax
484         xorl    %ebx,%ebx
485         movl    124(%ecx),%edx
486         xorl    %esi,%eax
487         xorl    %ecx,%ecx
488         xorl    %esi,%edx
489         andl    $0xfcfcfcfc,%eax
490         andl    $0xcfcfcfcf,%edx
491         movb    %al,%bl
492         movb    %ah,%cl
493         rorl    $4,%edx
494         xorl    (%ebp,%ebx,1),%edi
495         movb    %dl,%bl
496         xorl    0x200(%ebp,%ecx,1),%edi
497         movb    %dh,%cl
498         shrl    $16,%eax
499         xorl    0x100(%ebp,%ebx,1),%edi
500         movb    %ah,%bl
501         shrl    $16,%edx
502         xorl    0x300(%ebp,%ecx,1),%edi
503         movb    %dh,%cl
504         andl    $0xff,%eax
505         andl    $0xff,%edx
506         xorl    0x600(%ebp,%ebx,1),%edi
507         xorl    0x700(%ebp,%ecx,1),%edi
508         movl    (%esp),%ecx
509         xorl    0x400(%ebp,%eax,1),%edi
510         xorl    0x500(%ebp,%edx,1),%edi
511
512         movl    112(%ecx),%eax
513         xorl    %ebx,%ebx
514         movl    116(%ecx),%edx
515         xorl    %edi,%eax
516         xorl    %ecx,%ecx
517         xorl    %edi,%edx
518         andl    $0xfcfcfcfc,%eax
519         andl    $0xcfcfcfcf,%edx
520         movb    %al,%bl
521         movb    %ah,%cl
522         rorl    $4,%edx
523         xorl    (%ebp,%ebx,1),%esi
524         movb    %dl,%bl
525         xorl    0x200(%ebp,%ecx,1),%esi
526         movb    %dh,%cl
527         shrl    $16,%eax
528         xorl    0x100(%ebp,%ebx,1),%esi
529         movb    %ah,%bl
530         shrl    $16,%edx
531         xorl    0x300(%ebp,%ecx,1),%esi
532         movb    %dh,%cl
533         andl    $0xff,%eax
534         andl    $0xff,%edx
535         xorl    0x600(%ebp,%ebx,1),%esi
536         xorl    0x700(%ebp,%ecx,1),%esi
537         movl    (%esp),%ecx
538         xorl    0x400(%ebp,%eax,1),%esi
539         xorl    0x500(%ebp,%edx,1),%esi
540
541         movl    104(%ecx),%eax
542         xorl    %ebx,%ebx
543         movl    108(%ecx),%edx
544         xorl    %esi,%eax
545         xorl    %ecx,%ecx
546         xorl    %esi,%edx
547         andl    $0xfcfcfcfc,%eax
548         andl    $0xcfcfcfcf,%edx
549         movb    %al,%bl
550         movb    %ah,%cl
551         rorl    $4,%edx
552         xorl    (%ebp,%ebx,1),%edi
553         movb    %dl,%bl
554         xorl    0x200(%ebp,%ecx,1),%edi
555         movb    %dh,%cl
556         shrl    $16,%eax
557         xorl    0x100(%ebp,%ebx,1),%edi
558         movb    %ah,%bl
559         shrl    $16,%edx
560         xorl    0x300(%ebp,%ecx,1),%edi
561         movb    %dh,%cl
562         andl    $0xff,%eax
563         andl    $0xff,%edx
564         xorl    0x600(%ebp,%ebx,1),%edi
565         xorl    0x700(%ebp,%ecx,1),%edi
566         movl    (%esp),%ecx
567         xorl    0x400(%ebp,%eax,1),%edi
568         xorl    0x500(%ebp,%edx,1),%edi
569
570         movl    96(%ecx),%eax
571         xorl    %ebx,%ebx
572         movl    100(%ecx),%edx
573         xorl    %edi,%eax
574         xorl    %ecx,%ecx
575         xorl    %edi,%edx
576         andl    $0xfcfcfcfc,%eax
577         andl    $0xcfcfcfcf,%edx
578         movb    %al,%bl
579         movb    %ah,%cl
580         rorl    $4,%edx
581         xorl    (%ebp,%ebx,1),%esi
582         movb    %dl,%bl
583         xorl    0x200(%ebp,%ecx,1),%esi
584         movb    %dh,%cl
585         shrl    $16,%eax
586         xorl    0x100(%ebp,%ebx,1),%esi
587         movb    %ah,%bl
588         shrl    $16,%edx
589         xorl    0x300(%ebp,%ecx,1),%esi
590         movb    %dh,%cl
591         andl    $0xff,%eax
592         andl    $0xff,%edx
593         xorl    0x600(%ebp,%ebx,1),%esi
594         xorl    0x700(%ebp,%ecx,1),%esi
595         movl    (%esp),%ecx
596         xorl    0x400(%ebp,%eax,1),%esi
597         xorl    0x500(%ebp,%edx,1),%esi
598
599         movl    88(%ecx),%eax
600         xorl    %ebx,%ebx
601         movl    92(%ecx),%edx
602         xorl    %esi,%eax
603         xorl    %ecx,%ecx
604         xorl    %esi,%edx
605         andl    $0xfcfcfcfc,%eax
606         andl    $0xcfcfcfcf,%edx
607         movb    %al,%bl
608         movb    %ah,%cl
609         rorl    $4,%edx
610         xorl    (%ebp,%ebx,1),%edi
611         movb    %dl,%bl
612         xorl    0x200(%ebp,%ecx,1),%edi
613         movb    %dh,%cl
614         shrl    $16,%eax
615         xorl    0x100(%ebp,%ebx,1),%edi
616         movb    %ah,%bl
617         shrl    $16,%edx
618         xorl    0x300(%ebp,%ecx,1),%edi
619         movb    %dh,%cl
620         andl    $0xff,%eax
621         andl    $0xff,%edx
622         xorl    0x600(%ebp,%ebx,1),%edi
623         xorl    0x700(%ebp,%ecx,1),%edi
624         movl    (%esp),%ecx
625         xorl    0x400(%ebp,%eax,1),%edi
626         xorl    0x500(%ebp,%edx,1),%edi
627
628         movl    80(%ecx),%eax
629         xorl    %ebx,%ebx
630         movl    84(%ecx),%edx
631         xorl    %edi,%eax
632         xorl    %ecx,%ecx
633         xorl    %edi,%edx
634         andl    $0xfcfcfcfc,%eax
635         andl    $0xcfcfcfcf,%edx
636         movb    %al,%bl
637         movb    %ah,%cl
638         rorl    $4,%edx
639         xorl    (%ebp,%ebx,1),%esi
640         movb    %dl,%bl
641         xorl    0x200(%ebp,%ecx,1),%esi
642         movb    %dh,%cl
643         shrl    $16,%eax
644         xorl    0x100(%ebp,%ebx,1),%esi
645         movb    %ah,%bl
646         shrl    $16,%edx
647         xorl    0x300(%ebp,%ecx,1),%esi
648         movb    %dh,%cl
649         andl    $0xff,%eax
650         andl    $0xff,%edx
651         xorl    0x600(%ebp,%ebx,1),%esi
652         xorl    0x700(%ebp,%ecx,1),%esi
653         movl    (%esp),%ecx
654         xorl    0x400(%ebp,%eax,1),%esi
655         xorl    0x500(%ebp,%edx,1),%esi
656
657         movl    72(%ecx),%eax
658         xorl    %ebx,%ebx
659         movl    76(%ecx),%edx
660         xorl    %esi,%eax
661         xorl    %ecx,%ecx
662         xorl    %esi,%edx
663         andl    $0xfcfcfcfc,%eax
664         andl    $0xcfcfcfcf,%edx
665         movb    %al,%bl
666         movb    %ah,%cl
667         rorl    $4,%edx
668         xorl    (%ebp,%ebx,1),%edi
669         movb    %dl,%bl
670         xorl    0x200(%ebp,%ecx,1),%edi
671         movb    %dh,%cl
672         shrl    $16,%eax
673         xorl    0x100(%ebp,%ebx,1),%edi
674         movb    %ah,%bl
675         shrl    $16,%edx
676         xorl    0x300(%ebp,%ecx,1),%edi
677         movb    %dh,%cl
678         andl    $0xff,%eax
679         andl    $0xff,%edx
680         xorl    0x600(%ebp,%ebx,1),%edi
681         xorl    0x700(%ebp,%ecx,1),%edi
682         movl    (%esp),%ecx
683         xorl    0x400(%ebp,%eax,1),%edi
684         xorl    0x500(%ebp,%edx,1),%edi
685
686         movl    64(%ecx),%eax
687         xorl    %ebx,%ebx
688         movl    68(%ecx),%edx
689         xorl    %edi,%eax
690         xorl    %ecx,%ecx
691         xorl    %edi,%edx
692         andl    $0xfcfcfcfc,%eax
693         andl    $0xcfcfcfcf,%edx
694         movb    %al,%bl
695         movb    %ah,%cl
696         rorl    $4,%edx
697         xorl    (%ebp,%ebx,1),%esi
698         movb    %dl,%bl
699         xorl    0x200(%ebp,%ecx,1),%esi
700         movb    %dh,%cl
701         shrl    $16,%eax
702         xorl    0x100(%ebp,%ebx,1),%esi
703         movb    %ah,%bl
704         shrl    $16,%edx
705         xorl    0x300(%ebp,%ecx,1),%esi
706         movb    %dh,%cl
707         andl    $0xff,%eax
708         andl    $0xff,%edx
709         xorl    0x600(%ebp,%ebx,1),%esi
710         xorl    0x700(%ebp,%ecx,1),%esi
711         movl    (%esp),%ecx
712         xorl    0x400(%ebp,%eax,1),%esi
713         xorl    0x500(%ebp,%edx,1),%esi
714
715         movl    56(%ecx),%eax
716         xorl    %ebx,%ebx
717         movl    60(%ecx),%edx
718         xorl    %esi,%eax
719         xorl    %ecx,%ecx
720         xorl    %esi,%edx
721         andl    $0xfcfcfcfc,%eax
722         andl    $0xcfcfcfcf,%edx
723         movb    %al,%bl
724         movb    %ah,%cl
725         rorl    $4,%edx
726         xorl    (%ebp,%ebx,1),%edi
727         movb    %dl,%bl
728         xorl    0x200(%ebp,%ecx,1),%edi
729         movb    %dh,%cl
730         shrl    $16,%eax
731         xorl    0x100(%ebp,%ebx,1),%edi
732         movb    %ah,%bl
733         shrl    $16,%edx
734         xorl    0x300(%ebp,%ecx,1),%edi
735         movb    %dh,%cl
736         andl    $0xff,%eax
737         andl    $0xff,%edx
738         xorl    0x600(%ebp,%ebx,1),%edi
739         xorl    0x700(%ebp,%ecx,1),%edi
740         movl    (%esp),%ecx
741         xorl    0x400(%ebp,%eax,1),%edi
742         xorl    0x500(%ebp,%edx,1),%edi
743
744         movl    48(%ecx),%eax
745         xorl    %ebx,%ebx
746         movl    52(%ecx),%edx
747         xorl    %edi,%eax
748         xorl    %ecx,%ecx
749         xorl    %edi,%edx
750         andl    $0xfcfcfcfc,%eax
751         andl    $0xcfcfcfcf,%edx
752         movb    %al,%bl
753         movb    %ah,%cl
754         rorl    $4,%edx
755         xorl    (%ebp,%ebx,1),%esi
756         movb    %dl,%bl
757         xorl    0x200(%ebp,%ecx,1),%esi
758         movb    %dh,%cl
759         shrl    $16,%eax
760         xorl    0x100(%ebp,%ebx,1),%esi
761         movb    %ah,%bl
762         shrl    $16,%edx
763         xorl    0x300(%ebp,%ecx,1),%esi
764         movb    %dh,%cl
765         andl    $0xff,%eax
766         andl    $0xff,%edx
767         xorl    0x600(%ebp,%ebx,1),%esi
768         xorl    0x700(%ebp,%ecx,1),%esi
769         movl    (%esp),%ecx
770         xorl    0x400(%ebp,%eax,1),%esi
771         xorl    0x500(%ebp,%edx,1),%esi
772
773         movl    40(%ecx),%eax
774         xorl    %ebx,%ebx
775         movl    44(%ecx),%edx
776         xorl    %esi,%eax
777         xorl    %ecx,%ecx
778         xorl    %esi,%edx
779         andl    $0xfcfcfcfc,%eax
780         andl    $0xcfcfcfcf,%edx
781         movb    %al,%bl
782         movb    %ah,%cl
783         rorl    $4,%edx
784         xorl    (%ebp,%ebx,1),%edi
785         movb    %dl,%bl
786         xorl    0x200(%ebp,%ecx,1),%edi
787         movb    %dh,%cl
788         shrl    $16,%eax
789         xorl    0x100(%ebp,%ebx,1),%edi
790         movb    %ah,%bl
791         shrl    $16,%edx
792         xorl    0x300(%ebp,%ecx,1),%edi
793         movb    %dh,%cl
794         andl    $0xff,%eax
795         andl    $0xff,%edx
796         xorl    0x600(%ebp,%ebx,1),%edi
797         xorl    0x700(%ebp,%ecx,1),%edi
798         movl    (%esp),%ecx
799         xorl    0x400(%ebp,%eax,1),%edi
800         xorl    0x500(%ebp,%edx,1),%edi
801
802         movl    32(%ecx),%eax
803         xorl    %ebx,%ebx
804         movl    36(%ecx),%edx
805         xorl    %edi,%eax
806         xorl    %ecx,%ecx
807         xorl    %edi,%edx
808         andl    $0xfcfcfcfc,%eax
809         andl    $0xcfcfcfcf,%edx
810         movb    %al,%bl
811         movb    %ah,%cl
812         rorl    $4,%edx
813         xorl    (%ebp,%ebx,1),%esi
814         movb    %dl,%bl
815         xorl    0x200(%ebp,%ecx,1),%esi
816         movb    %dh,%cl
817         shrl    $16,%eax
818         xorl    0x100(%ebp,%ebx,1),%esi
819         movb    %ah,%bl
820         shrl    $16,%edx
821         xorl    0x300(%ebp,%ecx,1),%esi
822         movb    %dh,%cl
823         andl    $0xff,%eax
824         andl    $0xff,%edx
825         xorl    0x600(%ebp,%ebx,1),%esi
826         xorl    0x700(%ebp,%ecx,1),%esi
827         movl    (%esp),%ecx
828         xorl    0x400(%ebp,%eax,1),%esi
829         xorl    0x500(%ebp,%edx,1),%esi
830
831         movl    24(%ecx),%eax
832         xorl    %ebx,%ebx
833         movl    28(%ecx),%edx
834         xorl    %esi,%eax
835         xorl    %ecx,%ecx
836         xorl    %esi,%edx
837         andl    $0xfcfcfcfc,%eax
838         andl    $0xcfcfcfcf,%edx
839         movb    %al,%bl
840         movb    %ah,%cl
841         rorl    $4,%edx
842         xorl    (%ebp,%ebx,1),%edi
843         movb    %dl,%bl
844         xorl    0x200(%ebp,%ecx,1),%edi
845         movb    %dh,%cl
846         shrl    $16,%eax
847         xorl    0x100(%ebp,%ebx,1),%edi
848         movb    %ah,%bl
849         shrl    $16,%edx
850         xorl    0x300(%ebp,%ecx,1),%edi
851         movb    %dh,%cl
852         andl    $0xff,%eax
853         andl    $0xff,%edx
854         xorl    0x600(%ebp,%ebx,1),%edi
855         xorl    0x700(%ebp,%ecx,1),%edi
856         movl    (%esp),%ecx
857         xorl    0x400(%ebp,%eax,1),%edi
858         xorl    0x500(%ebp,%edx,1),%edi
859
860         movl    16(%ecx),%eax
861         xorl    %ebx,%ebx
862         movl    20(%ecx),%edx
863         xorl    %edi,%eax
864         xorl    %ecx,%ecx
865         xorl    %edi,%edx
866         andl    $0xfcfcfcfc,%eax
867         andl    $0xcfcfcfcf,%edx
868         movb    %al,%bl
869         movb    %ah,%cl
870         rorl    $4,%edx
871         xorl    (%ebp,%ebx,1),%esi
872         movb    %dl,%bl
873         xorl    0x200(%ebp,%ecx,1),%esi
874         movb    %dh,%cl
875         shrl    $16,%eax
876         xorl    0x100(%ebp,%ebx,1),%esi
877         movb    %ah,%bl
878         shrl    $16,%edx
879         xorl    0x300(%ebp,%ecx,1),%esi
880         movb    %dh,%cl
881         andl    $0xff,%eax
882         andl    $0xff,%edx
883         xorl    0x600(%ebp,%ebx,1),%esi
884         xorl    0x700(%ebp,%ecx,1),%esi
885         movl    (%esp),%ecx
886         xorl    0x400(%ebp,%eax,1),%esi
887         xorl    0x500(%ebp,%edx,1),%esi
888
889         movl    8(%ecx),%eax
890         xorl    %ebx,%ebx
891         movl    12(%ecx),%edx
892         xorl    %esi,%eax
893         xorl    %ecx,%ecx
894         xorl    %esi,%edx
895         andl    $0xfcfcfcfc,%eax
896         andl    $0xcfcfcfcf,%edx
897         movb    %al,%bl
898         movb    %ah,%cl
899         rorl    $4,%edx
900         xorl    (%ebp,%ebx,1),%edi
901         movb    %dl,%bl
902         xorl    0x200(%ebp,%ecx,1),%edi
903         movb    %dh,%cl
904         shrl    $16,%eax
905         xorl    0x100(%ebp,%ebx,1),%edi
906         movb    %ah,%bl
907         shrl    $16,%edx
908         xorl    0x300(%ebp,%ecx,1),%edi
909         movb    %dh,%cl
910         andl    $0xff,%eax
911         andl    $0xff,%edx
912         xorl    0x600(%ebp,%ebx,1),%edi
913         xorl    0x700(%ebp,%ecx,1),%edi
914         movl    (%esp),%ecx
915         xorl    0x400(%ebp,%eax,1),%edi
916         xorl    0x500(%ebp,%edx,1),%edi
917
918         movl    (%ecx),%eax
919         xorl    %ebx,%ebx
920         movl    4(%ecx),%edx
921         xorl    %edi,%eax
922         xorl    %ecx,%ecx
923         xorl    %edi,%edx
924         andl    $0xfcfcfcfc,%eax
925         andl    $0xcfcfcfcf,%edx
926         movb    %al,%bl
927         movb    %ah,%cl
928         rorl    $4,%edx
929         xorl    (%ebp,%ebx,1),%esi
930         movb    %dl,%bl
931         xorl    0x200(%ebp,%ecx,1),%esi
932         movb    %dh,%cl
933         shrl    $16,%eax
934         xorl    0x100(%ebp,%ebx,1),%esi
935         movb    %ah,%bl
936         shrl    $16,%edx
937         xorl    0x300(%ebp,%ecx,1),%esi
938         movb    %dh,%cl
939         andl    $0xff,%eax
940         andl    $0xff,%edx
941         xorl    0x600(%ebp,%ebx,1),%esi
942         xorl    0x700(%ebp,%ecx,1),%esi
943         movl    (%esp),%ecx
944         xorl    0x400(%ebp,%eax,1),%esi
945         xorl    0x500(%ebp,%edx,1),%esi
946         addl    $4,%esp
947         ret
948 .size   _x86_DES_decrypt,.-_x86_DES_decrypt
949 .globl  DES_encrypt1
950 .type   DES_encrypt1,@function
951 .align  16
952 DES_encrypt1:
953 .L_DES_encrypt1_begin:
954         pushl   %esi
955         pushl   %edi
956
957
958         movl    12(%esp),%esi
959         xorl    %ecx,%ecx
960         pushl   %ebx
961         pushl   %ebp
962         movl    (%esi),%eax
963         movl    28(%esp),%ebx
964         movl    4(%esi),%edi
965
966
967         roll    $4,%eax
968         movl    %eax,%esi
969         xorl    %edi,%eax
970         andl    $0xf0f0f0f0,%eax
971         xorl    %eax,%esi
972         xorl    %eax,%edi
973
974         roll    $20,%edi
975         movl    %edi,%eax
976         xorl    %esi,%edi
977         andl    $0xfff0000f,%edi
978         xorl    %edi,%eax
979         xorl    %edi,%esi
980
981         roll    $14,%eax
982         movl    %eax,%edi
983         xorl    %esi,%eax
984         andl    $0x33333333,%eax
985         xorl    %eax,%edi
986         xorl    %eax,%esi
987
988         roll    $22,%esi
989         movl    %esi,%eax
990         xorl    %edi,%esi
991         andl    $0x03fc03fc,%esi
992         xorl    %esi,%eax
993         xorl    %esi,%edi
994
995         roll    $9,%eax
996         movl    %eax,%esi
997         xorl    %edi,%eax
998         andl    $0xaaaaaaaa,%eax
999         xorl    %eax,%esi
1000         xorl    %eax,%edi
1001
1002         roll    $1,%edi
1003         call    .L000pic_point
1004 .L000pic_point:
1005         popl    %ebp
1006         leal    DES_SPtrans-.L000pic_point(%ebp),%ebp
1007         movl    24(%esp),%ecx
1008         cmpl    $0,%ebx
1009         je      .L001decrypt
1010         call    _x86_DES_encrypt
1011         jmp     .L002done
1012 .L001decrypt:
1013         call    _x86_DES_decrypt
1014 .L002done:
1015
1016
1017         movl    20(%esp),%edx
1018         rorl    $1,%esi
1019         movl    %edi,%eax
1020         xorl    %esi,%edi
1021         andl    $0xaaaaaaaa,%edi
1022         xorl    %edi,%eax
1023         xorl    %edi,%esi
1024
1025         roll    $23,%eax
1026         movl    %eax,%edi
1027         xorl    %esi,%eax
1028         andl    $0x03fc03fc,%eax
1029         xorl    %eax,%edi
1030         xorl    %eax,%esi
1031
1032         roll    $10,%edi
1033         movl    %edi,%eax
1034         xorl    %esi,%edi
1035         andl    $0x33333333,%edi
1036         xorl    %edi,%eax
1037         xorl    %edi,%esi
1038
1039         roll    $18,%esi
1040         movl    %esi,%edi
1041         xorl    %eax,%esi
1042         andl    $0xfff0000f,%esi
1043         xorl    %esi,%edi
1044         xorl    %esi,%eax
1045
1046         roll    $12,%edi
1047         movl    %edi,%esi
1048         xorl    %eax,%edi
1049         andl    $0xf0f0f0f0,%edi
1050         xorl    %edi,%esi
1051         xorl    %edi,%eax
1052
1053         rorl    $4,%eax
1054         movl    %eax,(%edx)
1055         movl    %esi,4(%edx)
1056         popl    %ebp
1057         popl    %ebx
1058         popl    %edi
1059         popl    %esi
1060         ret
1061 .size   DES_encrypt1,.-.L_DES_encrypt1_begin
1062 .globl  DES_encrypt2
1063 .type   DES_encrypt2,@function
1064 .align  16
1065 DES_encrypt2:
1066 .L_DES_encrypt2_begin:
1067         pushl   %esi
1068         pushl   %edi
1069
1070
1071         movl    12(%esp),%eax
1072         xorl    %ecx,%ecx
1073         pushl   %ebx
1074         pushl   %ebp
1075         movl    (%eax),%esi
1076         movl    28(%esp),%ebx
1077         roll    $3,%esi
1078         movl    4(%eax),%edi
1079         roll    $3,%edi
1080         call    .L003pic_point
1081 .L003pic_point:
1082         popl    %ebp
1083         leal    DES_SPtrans-.L003pic_point(%ebp),%ebp
1084         movl    24(%esp),%ecx
1085         cmpl    $0,%ebx
1086         je      .L004decrypt
1087         call    _x86_DES_encrypt
1088         jmp     .L005done
1089 .L004decrypt:
1090         call    _x86_DES_decrypt
1091 .L005done:
1092
1093
1094         rorl    $3,%edi
1095         movl    20(%esp),%eax
1096         rorl    $3,%esi
1097         movl    %edi,(%eax)
1098         movl    %esi,4(%eax)
1099         popl    %ebp
1100         popl    %ebx
1101         popl    %edi
1102         popl    %esi
1103         ret
1104 .size   DES_encrypt2,.-.L_DES_encrypt2_begin
1105 .globl  DES_encrypt3
1106 .type   DES_encrypt3,@function
1107 .align  16
1108 DES_encrypt3:
1109 .L_DES_encrypt3_begin:
1110         pushl   %ebx
1111         movl    8(%esp),%ebx
1112         pushl   %ebp
1113         pushl   %esi
1114         pushl   %edi
1115
1116
1117         movl    (%ebx),%edi
1118         movl    4(%ebx),%esi
1119         subl    $12,%esp
1120
1121
1122         roll    $4,%edi
1123         movl    %edi,%edx
1124         xorl    %esi,%edi
1125         andl    $0xf0f0f0f0,%edi
1126         xorl    %edi,%edx
1127         xorl    %edi,%esi
1128
1129         roll    $20,%esi
1130         movl    %esi,%edi
1131         xorl    %edx,%esi
1132         andl    $0xfff0000f,%esi
1133         xorl    %esi,%edi
1134         xorl    %esi,%edx
1135
1136         roll    $14,%edi
1137         movl    %edi,%esi
1138         xorl    %edx,%edi
1139         andl    $0x33333333,%edi
1140         xorl    %edi,%esi
1141         xorl    %edi,%edx
1142
1143         roll    $22,%edx
1144         movl    %edx,%edi
1145         xorl    %esi,%edx
1146         andl    $0x03fc03fc,%edx
1147         xorl    %edx,%edi
1148         xorl    %edx,%esi
1149
1150         roll    $9,%edi
1151         movl    %edi,%edx
1152         xorl    %esi,%edi
1153         andl    $0xaaaaaaaa,%edi
1154         xorl    %edi,%edx
1155         xorl    %edi,%esi
1156
1157         rorl    $3,%edx
1158         rorl    $2,%esi
1159         movl    %esi,4(%ebx)
1160         movl    36(%esp),%eax
1161         movl    %edx,(%ebx)
1162         movl    40(%esp),%edi
1163         movl    44(%esp),%esi
1164         movl    $1,8(%esp)
1165         movl    %eax,4(%esp)
1166         movl    %ebx,(%esp)
1167         call    .L_DES_encrypt2_begin
1168         movl    $0,8(%esp)
1169         movl    %edi,4(%esp)
1170         movl    %ebx,(%esp)
1171         call    .L_DES_encrypt2_begin
1172         movl    $1,8(%esp)
1173         movl    %esi,4(%esp)
1174         movl    %ebx,(%esp)
1175         call    .L_DES_encrypt2_begin
1176         addl    $12,%esp
1177         movl    (%ebx),%edi
1178         movl    4(%ebx),%esi
1179
1180
1181         roll    $2,%esi
1182         roll    $3,%edi
1183         movl    %edi,%eax
1184         xorl    %esi,%edi
1185         andl    $0xaaaaaaaa,%edi
1186         xorl    %edi,%eax
1187         xorl    %edi,%esi
1188
1189         roll    $23,%eax
1190         movl    %eax,%edi
1191         xorl    %esi,%eax
1192         andl    $0x03fc03fc,%eax
1193         xorl    %eax,%edi
1194         xorl    %eax,%esi
1195
1196         roll    $10,%edi
1197         movl    %edi,%eax
1198         xorl    %esi,%edi
1199         andl    $0x33333333,%edi
1200         xorl    %edi,%eax
1201         xorl    %edi,%esi
1202
1203         roll    $18,%esi
1204         movl    %esi,%edi
1205         xorl    %eax,%esi
1206         andl    $0xfff0000f,%esi
1207         xorl    %esi,%edi
1208         xorl    %esi,%eax
1209
1210         roll    $12,%edi
1211         movl    %edi,%esi
1212         xorl    %eax,%edi
1213         andl    $0xf0f0f0f0,%edi
1214         xorl    %edi,%esi
1215         xorl    %edi,%eax
1216
1217         rorl    $4,%eax
1218         movl    %eax,(%ebx)
1219         movl    %esi,4(%ebx)
1220         popl    %edi
1221         popl    %esi
1222         popl    %ebp
1223         popl    %ebx
1224         ret
1225 .size   DES_encrypt3,.-.L_DES_encrypt3_begin
1226 .globl  DES_decrypt3
1227 .type   DES_decrypt3,@function
1228 .align  16
1229 DES_decrypt3:
1230 .L_DES_decrypt3_begin:
1231         pushl   %ebx
1232         movl    8(%esp),%ebx
1233         pushl   %ebp
1234         pushl   %esi
1235         pushl   %edi
1236
1237
1238         movl    (%ebx),%edi
1239         movl    4(%ebx),%esi
1240         subl    $12,%esp
1241
1242
1243         roll    $4,%edi
1244         movl    %edi,%edx
1245         xorl    %esi,%edi
1246         andl    $0xf0f0f0f0,%edi
1247         xorl    %edi,%edx
1248         xorl    %edi,%esi
1249
1250         roll    $20,%esi
1251         movl    %esi,%edi
1252         xorl    %edx,%esi
1253         andl    $0xfff0000f,%esi
1254         xorl    %esi,%edi
1255         xorl    %esi,%edx
1256
1257         roll    $14,%edi
1258         movl    %edi,%esi
1259         xorl    %edx,%edi
1260         andl    $0x33333333,%edi
1261         xorl    %edi,%esi
1262         xorl    %edi,%edx
1263
1264         roll    $22,%edx
1265         movl    %edx,%edi
1266         xorl    %esi,%edx
1267         andl    $0x03fc03fc,%edx
1268         xorl    %edx,%edi
1269         xorl    %edx,%esi
1270
1271         roll    $9,%edi
1272         movl    %edi,%edx
1273         xorl    %esi,%edi
1274         andl    $0xaaaaaaaa,%edi
1275         xorl    %edi,%edx
1276         xorl    %edi,%esi
1277
1278         rorl    $3,%edx
1279         rorl    $2,%esi
1280         movl    %esi,4(%ebx)
1281         movl    36(%esp),%esi
1282         movl    %edx,(%ebx)
1283         movl    40(%esp),%edi
1284         movl    44(%esp),%eax
1285         movl    $0,8(%esp)
1286         movl    %eax,4(%esp)
1287         movl    %ebx,(%esp)
1288         call    .L_DES_encrypt2_begin
1289         movl    $1,8(%esp)
1290         movl    %edi,4(%esp)
1291         movl    %ebx,(%esp)
1292         call    .L_DES_encrypt2_begin
1293         movl    $0,8(%esp)
1294         movl    %esi,4(%esp)
1295         movl    %ebx,(%esp)
1296         call    .L_DES_encrypt2_begin
1297         addl    $12,%esp
1298         movl    (%ebx),%edi
1299         movl    4(%ebx),%esi
1300
1301
1302         roll    $2,%esi
1303         roll    $3,%edi
1304         movl    %edi,%eax
1305         xorl    %esi,%edi
1306         andl    $0xaaaaaaaa,%edi
1307         xorl    %edi,%eax
1308         xorl    %edi,%esi
1309
1310         roll    $23,%eax
1311         movl    %eax,%edi
1312         xorl    %esi,%eax
1313         andl    $0x03fc03fc,%eax
1314         xorl    %eax,%edi
1315         xorl    %eax,%esi
1316
1317         roll    $10,%edi
1318         movl    %edi,%eax
1319         xorl    %esi,%edi
1320         andl    $0x33333333,%edi
1321         xorl    %edi,%eax
1322         xorl    %edi,%esi
1323
1324         roll    $18,%esi
1325         movl    %esi,%edi
1326         xorl    %eax,%esi
1327         andl    $0xfff0000f,%esi
1328         xorl    %esi,%edi
1329         xorl    %esi,%eax
1330
1331         roll    $12,%edi
1332         movl    %edi,%esi
1333         xorl    %eax,%edi
1334         andl    $0xf0f0f0f0,%edi
1335         xorl    %edi,%esi
1336         xorl    %edi,%eax
1337
1338         rorl    $4,%eax
1339         movl    %eax,(%ebx)
1340         movl    %esi,4(%ebx)
1341         popl    %edi
1342         popl    %esi
1343         popl    %ebp
1344         popl    %ebx
1345         ret
1346 .size   DES_decrypt3,.-.L_DES_decrypt3_begin
1347 .globl  DES_ncbc_encrypt
1348 .type   DES_ncbc_encrypt,@function
1349 .align  16
1350 DES_ncbc_encrypt:
1351 .L_DES_ncbc_encrypt_begin:
1352
1353         pushl   %ebp
1354         pushl   %ebx
1355         pushl   %esi
1356         pushl   %edi
1357         movl    28(%esp),%ebp
1358
1359         movl    36(%esp),%ebx
1360         movl    (%ebx),%esi
1361         movl    4(%ebx),%edi
1362         pushl   %edi
1363         pushl   %esi
1364         pushl   %edi
1365         pushl   %esi
1366         movl    %esp,%ebx
1367         movl    36(%esp),%esi
1368         movl    40(%esp),%edi
1369
1370         movl    56(%esp),%ecx
1371
1372         pushl   %ecx
1373
1374         movl    52(%esp),%eax
1375         pushl   %eax
1376         pushl   %ebx
1377         cmpl    $0,%ecx
1378         jz      .L006decrypt
1379         andl    $4294967288,%ebp
1380         movl    12(%esp),%eax
1381         movl    16(%esp),%ebx
1382         jz      .L007encrypt_finish
1383 .L008encrypt_loop:
1384         movl    (%esi),%ecx
1385         movl    4(%esi),%edx
1386         xorl    %ecx,%eax
1387         xorl    %edx,%ebx
1388         movl    %eax,12(%esp)
1389         movl    %ebx,16(%esp)
1390         call    .L_DES_encrypt1_begin
1391         movl    12(%esp),%eax
1392         movl    16(%esp),%ebx
1393         movl    %eax,(%edi)
1394         movl    %ebx,4(%edi)
1395         addl    $8,%esi
1396         addl    $8,%edi
1397         subl    $8,%ebp
1398         jnz     .L008encrypt_loop
1399 .L007encrypt_finish:
1400         movl    56(%esp),%ebp
1401         andl    $7,%ebp
1402         jz      .L009finish
1403         call    .L010PIC_point
1404 .L010PIC_point:
1405         popl    %edx
1406         leal    .L011cbc_enc_jmp_table-.L010PIC_point(%edx),%ecx
1407         movl    (%ecx,%ebp,4),%ebp
1408         addl    %edx,%ebp
1409         xorl    %ecx,%ecx
1410         xorl    %edx,%edx
1411         jmp     *%ebp
1412 .L012ej7:
1413         movb    6(%esi),%dh
1414         shll    $8,%edx
1415 .L013ej6:
1416         movb    5(%esi),%dh
1417 .L014ej5:
1418         movb    4(%esi),%dl
1419 .L015ej4:
1420         movl    (%esi),%ecx
1421         jmp     .L016ejend
1422 .L017ej3:
1423         movb    2(%esi),%ch
1424         shll    $8,%ecx
1425 .L018ej2:
1426         movb    1(%esi),%ch
1427 .L019ej1:
1428         movb    (%esi),%cl
1429 .L016ejend:
1430         xorl    %ecx,%eax
1431         xorl    %edx,%ebx
1432         movl    %eax,12(%esp)
1433         movl    %ebx,16(%esp)
1434         call    .L_DES_encrypt1_begin
1435         movl    12(%esp),%eax
1436         movl    16(%esp),%ebx
1437         movl    %eax,(%edi)
1438         movl    %ebx,4(%edi)
1439         jmp     .L009finish
1440 .L006decrypt:
1441         andl    $4294967288,%ebp
1442         movl    20(%esp),%eax
1443         movl    24(%esp),%ebx
1444         jz      .L020decrypt_finish
1445 .L021decrypt_loop:
1446         movl    (%esi),%eax
1447         movl    4(%esi),%ebx
1448         movl    %eax,12(%esp)
1449         movl    %ebx,16(%esp)
1450         call    .L_DES_encrypt1_begin
1451         movl    12(%esp),%eax
1452         movl    16(%esp),%ebx
1453         movl    20(%esp),%ecx
1454         movl    24(%esp),%edx
1455         xorl    %eax,%ecx
1456         xorl    %ebx,%edx
1457         movl    (%esi),%eax
1458         movl    4(%esi),%ebx
1459         movl    %ecx,(%edi)
1460         movl    %edx,4(%edi)
1461         movl    %eax,20(%esp)
1462         movl    %ebx,24(%esp)
1463         addl    $8,%esi
1464         addl    $8,%edi
1465         subl    $8,%ebp
1466         jnz     .L021decrypt_loop
1467 .L020decrypt_finish:
1468         movl    56(%esp),%ebp
1469         andl    $7,%ebp
1470         jz      .L009finish
1471         movl    (%esi),%eax
1472         movl    4(%esi),%ebx
1473         movl    %eax,12(%esp)
1474         movl    %ebx,16(%esp)
1475         call    .L_DES_encrypt1_begin
1476         movl    12(%esp),%eax
1477         movl    16(%esp),%ebx
1478         movl    20(%esp),%ecx
1479         movl    24(%esp),%edx
1480         xorl    %eax,%ecx
1481         xorl    %ebx,%edx
1482         movl    (%esi),%eax
1483         movl    4(%esi),%ebx
1484 .L022dj7:
1485         rorl    $16,%edx
1486         movb    %dl,6(%edi)
1487         shrl    $16,%edx
1488 .L023dj6:
1489         movb    %dh,5(%edi)
1490 .L024dj5:
1491         movb    %dl,4(%edi)
1492 .L025dj4:
1493         movl    %ecx,(%edi)
1494         jmp     .L026djend
1495 .L027dj3:
1496         rorl    $16,%ecx
1497         movb    %cl,2(%edi)
1498         shll    $16,%ecx
1499 .L028dj2:
1500         movb    %ch,1(%esi)
1501 .L029dj1:
1502         movb    %cl,(%esi)
1503 .L026djend:
1504         jmp     .L009finish
1505 .L009finish:
1506         movl    64(%esp),%ecx
1507         addl    $28,%esp
1508         movl    %eax,(%ecx)
1509         movl    %ebx,4(%ecx)
1510         popl    %edi
1511         popl    %esi
1512         popl    %ebx
1513         popl    %ebp
1514         ret
1515 .align  64
1516 .L011cbc_enc_jmp_table:
1517 .long   0
1518 .long   .L019ej1-.L010PIC_point
1519 .long   .L018ej2-.L010PIC_point
1520 .long   .L017ej3-.L010PIC_point
1521 .long   .L015ej4-.L010PIC_point
1522 .long   .L014ej5-.L010PIC_point
1523 .long   .L013ej6-.L010PIC_point
1524 .long   .L012ej7-.L010PIC_point
1525 .align  64
1526 .size   DES_ncbc_encrypt,.-.L_DES_ncbc_encrypt_begin
1527 .globl  DES_ede3_cbc_encrypt
1528 .type   DES_ede3_cbc_encrypt,@function
1529 .align  16
1530 DES_ede3_cbc_encrypt:
1531 .L_DES_ede3_cbc_encrypt_begin:
1532
1533         pushl   %ebp
1534         pushl   %ebx
1535         pushl   %esi
1536         pushl   %edi
1537         movl    28(%esp),%ebp
1538
1539         movl    44(%esp),%ebx
1540         movl    (%ebx),%esi
1541         movl    4(%ebx),%edi
1542         pushl   %edi
1543         pushl   %esi
1544         pushl   %edi
1545         pushl   %esi
1546         movl    %esp,%ebx
1547         movl    36(%esp),%esi
1548         movl    40(%esp),%edi
1549
1550         movl    64(%esp),%ecx
1551
1552         movl    56(%esp),%eax
1553         pushl   %eax
1554
1555         movl    56(%esp),%eax
1556         pushl   %eax
1557
1558         movl    56(%esp),%eax
1559         pushl   %eax
1560         pushl   %ebx
1561         cmpl    $0,%ecx
1562         jz      .L030decrypt
1563         andl    $4294967288,%ebp
1564         movl    16(%esp),%eax
1565         movl    20(%esp),%ebx
1566         jz      .L031encrypt_finish
1567 .L032encrypt_loop:
1568         movl    (%esi),%ecx
1569         movl    4(%esi),%edx
1570         xorl    %ecx,%eax
1571         xorl    %edx,%ebx
1572         movl    %eax,16(%esp)
1573         movl    %ebx,20(%esp)
1574         call    .L_DES_encrypt3_begin
1575         movl    16(%esp),%eax
1576         movl    20(%esp),%ebx
1577         movl    %eax,(%edi)
1578         movl    %ebx,4(%edi)
1579         addl    $8,%esi
1580         addl    $8,%edi
1581         subl    $8,%ebp
1582         jnz     .L032encrypt_loop
1583 .L031encrypt_finish:
1584         movl    60(%esp),%ebp
1585         andl    $7,%ebp
1586         jz      .L033finish
1587         call    .L034PIC_point
1588 .L034PIC_point:
1589         popl    %edx
1590         leal    .L035cbc_enc_jmp_table-.L034PIC_point(%edx),%ecx
1591         movl    (%ecx,%ebp,4),%ebp
1592         addl    %edx,%ebp
1593         xorl    %ecx,%ecx
1594         xorl    %edx,%edx
1595         jmp     *%ebp
1596 .L036ej7:
1597         movb    6(%esi),%dh
1598         shll    $8,%edx
1599 .L037ej6:
1600         movb    5(%esi),%dh
1601 .L038ej5:
1602         movb    4(%esi),%dl
1603 .L039ej4:
1604         movl    (%esi),%ecx
1605         jmp     .L040ejend
1606 .L041ej3:
1607         movb    2(%esi),%ch
1608         shll    $8,%ecx
1609 .L042ej2:
1610         movb    1(%esi),%ch
1611 .L043ej1:
1612         movb    (%esi),%cl
1613 .L040ejend:
1614         xorl    %ecx,%eax
1615         xorl    %edx,%ebx
1616         movl    %eax,16(%esp)
1617         movl    %ebx,20(%esp)
1618         call    .L_DES_encrypt3_begin
1619         movl    16(%esp),%eax
1620         movl    20(%esp),%ebx
1621         movl    %eax,(%edi)
1622         movl    %ebx,4(%edi)
1623         jmp     .L033finish
1624 .L030decrypt:
1625         andl    $4294967288,%ebp
1626         movl    24(%esp),%eax
1627         movl    28(%esp),%ebx
1628         jz      .L044decrypt_finish
1629 .L045decrypt_loop:
1630         movl    (%esi),%eax
1631         movl    4(%esi),%ebx
1632         movl    %eax,16(%esp)
1633         movl    %ebx,20(%esp)
1634         call    .L_DES_decrypt3_begin
1635         movl    16(%esp),%eax
1636         movl    20(%esp),%ebx
1637         movl    24(%esp),%ecx
1638         movl    28(%esp),%edx
1639         xorl    %eax,%ecx
1640         xorl    %ebx,%edx
1641         movl    (%esi),%eax
1642         movl    4(%esi),%ebx
1643         movl    %ecx,(%edi)
1644         movl    %edx,4(%edi)
1645         movl    %eax,24(%esp)
1646         movl    %ebx,28(%esp)
1647         addl    $8,%esi
1648         addl    $8,%edi
1649         subl    $8,%ebp
1650         jnz     .L045decrypt_loop
1651 .L044decrypt_finish:
1652         movl    60(%esp),%ebp
1653         andl    $7,%ebp
1654         jz      .L033finish
1655         movl    (%esi),%eax
1656         movl    4(%esi),%ebx
1657         movl    %eax,16(%esp)
1658         movl    %ebx,20(%esp)
1659         call    .L_DES_decrypt3_begin
1660         movl    16(%esp),%eax
1661         movl    20(%esp),%ebx
1662         movl    24(%esp),%ecx
1663         movl    28(%esp),%edx
1664         xorl    %eax,%ecx
1665         xorl    %ebx,%edx
1666         movl    (%esi),%eax
1667         movl    4(%esi),%ebx
1668 .L046dj7:
1669         rorl    $16,%edx
1670         movb    %dl,6(%edi)
1671         shrl    $16,%edx
1672 .L047dj6:
1673         movb    %dh,5(%edi)
1674 .L048dj5:
1675         movb    %dl,4(%edi)
1676 .L049dj4:
1677         movl    %ecx,(%edi)
1678         jmp     .L050djend
1679 .L051dj3:
1680         rorl    $16,%ecx
1681         movb    %cl,2(%edi)
1682         shll    $16,%ecx
1683 .L052dj2:
1684         movb    %ch,1(%esi)
1685 .L053dj1:
1686         movb    %cl,(%esi)
1687 .L050djend:
1688         jmp     .L033finish
1689 .L033finish:
1690         movl    76(%esp),%ecx
1691         addl    $32,%esp
1692         movl    %eax,(%ecx)
1693         movl    %ebx,4(%ecx)
1694         popl    %edi
1695         popl    %esi
1696         popl    %ebx
1697         popl    %ebp
1698         ret
1699 .align  64
1700 .L035cbc_enc_jmp_table:
1701 .long   0
1702 .long   .L043ej1-.L034PIC_point
1703 .long   .L042ej2-.L034PIC_point
1704 .long   .L041ej3-.L034PIC_point
1705 .long   .L039ej4-.L034PIC_point
1706 .long   .L038ej5-.L034PIC_point
1707 .long   .L037ej6-.L034PIC_point
1708 .long   .L036ej7-.L034PIC_point
1709 .align  64
1710 .size   DES_ede3_cbc_encrypt,.-.L_DES_ede3_cbc_encrypt_begin
1711 .align  64
1712 DES_SPtrans:
1713 .long   34080768,524288,33554434,34080770
1714 .long   33554432,526338,524290,33554434
1715 .long   526338,34080768,34078720,2050
1716 .long   33556482,33554432,0,524290
1717 .long   524288,2,33556480,526336
1718 .long   34080770,34078720,2050,33556480
1719 .long   2,2048,526336,34078722
1720 .long   2048,33556482,34078722,0
1721 .long   0,34080770,33556480,524290
1722 .long   34080768,524288,2050,33556480
1723 .long   34078722,2048,526336,33554434
1724 .long   526338,2,33554434,34078720
1725 .long   34080770,526336,34078720,33556482
1726 .long   33554432,2050,524290,0
1727 .long   524288,33554432,33556482,34080768
1728 .long   2,34078722,2048,526338
1729 .long   1074823184,0,1081344,1074790400
1730 .long   1073741840,32784,1073774592,1081344
1731 .long   32768,1074790416,16,1073774592
1732 .long   1048592,1074823168,1074790400,16
1733 .long   1048576,1073774608,1074790416,32768
1734 .long   1081360,1073741824,0,1048592
1735 .long   1073774608,1081360,1074823168,1073741840
1736 .long   1073741824,1048576,32784,1074823184
1737 .long   1048592,1074823168,1073774592,1081360
1738 .long   1074823184,1048592,1073741840,0
1739 .long   1073741824,32784,1048576,1074790416
1740 .long   32768,1073741824,1081360,1073774608
1741 .long   1074823168,32768,0,1073741840
1742 .long   16,1074823184,1081344,1074790400
1743 .long   1074790416,1048576,32784,1073774592
1744 .long   1073774608,16,1074790400,1081344
1745 .long   67108865,67371264,256,67109121
1746 .long   262145,67108864,67109121,262400
1747 .long   67109120,262144,67371008,1
1748 .long   67371265,257,1,67371009
1749 .long   0,262145,67371264,256
1750 .long   257,67371265,262144,67108865
1751 .long   67371009,67109120,262401,67371008
1752 .long   262400,0,67108864,262401
1753 .long   67371264,256,1,262144
1754 .long   257,262145,67371008,67109121
1755 .long   0,67371264,262400,67371009
1756 .long   262145,67108864,67371265,1
1757 .long   262401,67108865,67108864,67371265
1758 .long   262144,67109120,67109121,262400
1759 .long   67109120,0,67371009,257
1760 .long   67108865,262401,256,67371008
1761 .long   4198408,268439552,8,272633864
1762 .long   0,272629760,268439560,4194312
1763 .long   272633856,268435464,268435456,4104
1764 .long   268435464,4198408,4194304,268435456
1765 .long   272629768,4198400,4096,8
1766 .long   4198400,268439560,272629760,4096
1767 .long   4104,0,4194312,272633856
1768 .long   268439552,272629768,272633864,4194304
1769 .long   272629768,4104,4194304,268435464
1770 .long   4198400,268439552,8,272629760
1771 .long   268439560,0,4096,4194312
1772 .long   0,272629768,272633856,4096
1773 .long   268435456,272633864,4198408,4194304
1774 .long   272633864,8,268439552,4198408
1775 .long   4194312,4198400,272629760,268439560
1776 .long   4104,268435456,268435464,272633856
1777 .long   134217728,65536,1024,134284320
1778 .long   134283296,134218752,66592,134283264
1779 .long   65536,32,134217760,66560
1780 .long   134218784,134283296,134284288,0
1781 .long   66560,134217728,65568,1056
1782 .long   134218752,66592,0,134217760
1783 .long   32,134218784,134284320,65568
1784 .long   134283264,1024,1056,134284288
1785 .long   134284288,134218784,65568,134283264
1786 .long   65536,32,134217760,134218752
1787 .long   134217728,66560,134284320,0
1788 .long   66592,134217728,1024,65568
1789 .long   134218784,1024,0,134284320
1790 .long   134283296,134284288,1056,65536
1791 .long   66560,134283296,134218752,1056
1792 .long   32,66592,134283264,134217760
1793 .long   2147483712,2097216,0,2149588992
1794 .long   2097216,8192,2147491904,2097152
1795 .long   8256,2149589056,2105344,2147483648
1796 .long   2147491840,2147483712,2149580800,2105408
1797 .long   2097152,2147491904,2149580864,0
1798 .long   8192,64,2149588992,2149580864
1799 .long   2149589056,2149580800,2147483648,8256
1800 .long   64,2105344,2105408,2147491840
1801 .long   8256,2147483648,2147491840,2105408
1802 .long   2149588992,2097216,0,2147491840
1803 .long   2147483648,8192,2149580864,2097152
1804 .long   2097216,2149589056,2105344,64
1805 .long   2149589056,2105344,2097152,2147491904
1806 .long   2147483712,2149580800,2105408,0
1807 .long   8192,2147483712,2147491904,2149588992
1808 .long   2149580800,8256,64,2149580864
1809 .long   16384,512,16777728,16777220
1810 .long   16794116,16388,16896,0
1811 .long   16777216,16777732,516,16793600
1812 .long   4,16794112,16793600,516
1813 .long   16777732,16384,16388,16794116
1814 .long   0,16777728,16777220,16896
1815 .long   16793604,16900,16794112,4
1816 .long   16900,16793604,512,16777216
1817 .long   16900,16793600,16793604,516
1818 .long   16384,512,16777216,16793604
1819 .long   16777732,16900,16896,0
1820 .long   512,16777220,4,16777728
1821 .long   0,16777732,16777728,16896
1822 .long   516,16384,16794116,16777216
1823 .long   16794112,4,16388,16794116
1824 .long   16777220,16794112,16793600,16388
1825 .long   545259648,545390592,131200,0
1826 .long   537001984,8388736,545259520,545390720
1827 .long   128,536870912,8519680,131200
1828 .long   8519808,537002112,536871040,545259520
1829 .long   131072,8519808,8388736,537001984
1830 .long   545390720,536871040,0,8519680
1831 .long   536870912,8388608,537002112,545259648
1832 .long   8388608,131072,545390592,128
1833 .long   8388608,131072,536871040,545390720
1834 .long   131200,536870912,0,8519680
1835 .long   545259648,537002112,537001984,8388736
1836 .long   545390592,128,8388736,537001984
1837 .long   545390720,8388608,545259520,536871040
1838 .long   8519680,131200,537002112,545259520
1839 .long   128,545390592,8519808,0
1840 .long   536870912,545259648,131072,8519808
1841 #else
1842 .file   "des-586.S"
1843 .text
1844 .globl  DES_SPtrans
1845 .type   _x86_DES_encrypt,@function
1846 .align  16
1847 _x86_DES_encrypt:
1848         pushl   %ecx
1849
1850         movl    (%ecx),%eax
1851         xorl    %ebx,%ebx
1852         movl    4(%ecx),%edx
1853         xorl    %esi,%eax
1854         xorl    %ecx,%ecx
1855         xorl    %esi,%edx
1856         andl    $0xfcfcfcfc,%eax
1857         andl    $0xcfcfcfcf,%edx
1858         movb    %al,%bl
1859         movb    %ah,%cl
1860         rorl    $4,%edx
1861         xorl    (%ebp,%ebx,1),%edi
1862         movb    %dl,%bl
1863         xorl    0x200(%ebp,%ecx,1),%edi
1864         movb    %dh,%cl
1865         shrl    $16,%eax
1866         xorl    0x100(%ebp,%ebx,1),%edi
1867         movb    %ah,%bl
1868         shrl    $16,%edx
1869         xorl    0x300(%ebp,%ecx,1),%edi
1870         movb    %dh,%cl
1871         andl    $0xff,%eax
1872         andl    $0xff,%edx
1873         xorl    0x600(%ebp,%ebx,1),%edi
1874         xorl    0x700(%ebp,%ecx,1),%edi
1875         movl    (%esp),%ecx
1876         xorl    0x400(%ebp,%eax,1),%edi
1877         xorl    0x500(%ebp,%edx,1),%edi
1878
1879         movl    8(%ecx),%eax
1880         xorl    %ebx,%ebx
1881         movl    12(%ecx),%edx
1882         xorl    %edi,%eax
1883         xorl    %ecx,%ecx
1884         xorl    %edi,%edx
1885         andl    $0xfcfcfcfc,%eax
1886         andl    $0xcfcfcfcf,%edx
1887         movb    %al,%bl
1888         movb    %ah,%cl
1889         rorl    $4,%edx
1890         xorl    (%ebp,%ebx,1),%esi
1891         movb    %dl,%bl
1892         xorl    0x200(%ebp,%ecx,1),%esi
1893         movb    %dh,%cl
1894         shrl    $16,%eax
1895         xorl    0x100(%ebp,%ebx,1),%esi
1896         movb    %ah,%bl
1897         shrl    $16,%edx
1898         xorl    0x300(%ebp,%ecx,1),%esi
1899         movb    %dh,%cl
1900         andl    $0xff,%eax
1901         andl    $0xff,%edx
1902         xorl    0x600(%ebp,%ebx,1),%esi
1903         xorl    0x700(%ebp,%ecx,1),%esi
1904         movl    (%esp),%ecx
1905         xorl    0x400(%ebp,%eax,1),%esi
1906         xorl    0x500(%ebp,%edx,1),%esi
1907
1908         movl    16(%ecx),%eax
1909         xorl    %ebx,%ebx
1910         movl    20(%ecx),%edx
1911         xorl    %esi,%eax
1912         xorl    %ecx,%ecx
1913         xorl    %esi,%edx
1914         andl    $0xfcfcfcfc,%eax
1915         andl    $0xcfcfcfcf,%edx
1916         movb    %al,%bl
1917         movb    %ah,%cl
1918         rorl    $4,%edx
1919         xorl    (%ebp,%ebx,1),%edi
1920         movb    %dl,%bl
1921         xorl    0x200(%ebp,%ecx,1),%edi
1922         movb    %dh,%cl
1923         shrl    $16,%eax
1924         xorl    0x100(%ebp,%ebx,1),%edi
1925         movb    %ah,%bl
1926         shrl    $16,%edx
1927         xorl    0x300(%ebp,%ecx,1),%edi
1928         movb    %dh,%cl
1929         andl    $0xff,%eax
1930         andl    $0xff,%edx
1931         xorl    0x600(%ebp,%ebx,1),%edi
1932         xorl    0x700(%ebp,%ecx,1),%edi
1933         movl    (%esp),%ecx
1934         xorl    0x400(%ebp,%eax,1),%edi
1935         xorl    0x500(%ebp,%edx,1),%edi
1936
1937         movl    24(%ecx),%eax
1938         xorl    %ebx,%ebx
1939         movl    28(%ecx),%edx
1940         xorl    %edi,%eax
1941         xorl    %ecx,%ecx
1942         xorl    %edi,%edx
1943         andl    $0xfcfcfcfc,%eax
1944         andl    $0xcfcfcfcf,%edx
1945         movb    %al,%bl
1946         movb    %ah,%cl
1947         rorl    $4,%edx
1948         xorl    (%ebp,%ebx,1),%esi
1949         movb    %dl,%bl
1950         xorl    0x200(%ebp,%ecx,1),%esi
1951         movb    %dh,%cl
1952         shrl    $16,%eax
1953         xorl    0x100(%ebp,%ebx,1),%esi
1954         movb    %ah,%bl
1955         shrl    $16,%edx
1956         xorl    0x300(%ebp,%ecx,1),%esi
1957         movb    %dh,%cl
1958         andl    $0xff,%eax
1959         andl    $0xff,%edx
1960         xorl    0x600(%ebp,%ebx,1),%esi
1961         xorl    0x700(%ebp,%ecx,1),%esi
1962         movl    (%esp),%ecx
1963         xorl    0x400(%ebp,%eax,1),%esi
1964         xorl    0x500(%ebp,%edx,1),%esi
1965
1966         movl    32(%ecx),%eax
1967         xorl    %ebx,%ebx
1968         movl    36(%ecx),%edx
1969         xorl    %esi,%eax
1970         xorl    %ecx,%ecx
1971         xorl    %esi,%edx
1972         andl    $0xfcfcfcfc,%eax
1973         andl    $0xcfcfcfcf,%edx
1974         movb    %al,%bl
1975         movb    %ah,%cl
1976         rorl    $4,%edx
1977         xorl    (%ebp,%ebx,1),%edi
1978         movb    %dl,%bl
1979         xorl    0x200(%ebp,%ecx,1),%edi
1980         movb    %dh,%cl
1981         shrl    $16,%eax
1982         xorl    0x100(%ebp,%ebx,1),%edi
1983         movb    %ah,%bl
1984         shrl    $16,%edx
1985         xorl    0x300(%ebp,%ecx,1),%edi
1986         movb    %dh,%cl
1987         andl    $0xff,%eax
1988         andl    $0xff,%edx
1989         xorl    0x600(%ebp,%ebx,1),%edi
1990         xorl    0x700(%ebp,%ecx,1),%edi
1991         movl    (%esp),%ecx
1992         xorl    0x400(%ebp,%eax,1),%edi
1993         xorl    0x500(%ebp,%edx,1),%edi
1994
1995         movl    40(%ecx),%eax
1996         xorl    %ebx,%ebx
1997         movl    44(%ecx),%edx
1998         xorl    %edi,%eax
1999         xorl    %ecx,%ecx
2000         xorl    %edi,%edx
2001         andl    $0xfcfcfcfc,%eax
2002         andl    $0xcfcfcfcf,%edx
2003         movb    %al,%bl
2004         movb    %ah,%cl
2005         rorl    $4,%edx
2006         xorl    (%ebp,%ebx,1),%esi
2007         movb    %dl,%bl
2008         xorl    0x200(%ebp,%ecx,1),%esi
2009         movb    %dh,%cl
2010         shrl    $16,%eax
2011         xorl    0x100(%ebp,%ebx,1),%esi
2012         movb    %ah,%bl
2013         shrl    $16,%edx
2014         xorl    0x300(%ebp,%ecx,1),%esi
2015         movb    %dh,%cl
2016         andl    $0xff,%eax
2017         andl    $0xff,%edx
2018         xorl    0x600(%ebp,%ebx,1),%esi
2019         xorl    0x700(%ebp,%ecx,1),%esi
2020         movl    (%esp),%ecx
2021         xorl    0x400(%ebp,%eax,1),%esi
2022         xorl    0x500(%ebp,%edx,1),%esi
2023
2024         movl    48(%ecx),%eax
2025         xorl    %ebx,%ebx
2026         movl    52(%ecx),%edx
2027         xorl    %esi,%eax
2028         xorl    %ecx,%ecx
2029         xorl    %esi,%edx
2030         andl    $0xfcfcfcfc,%eax
2031         andl    $0xcfcfcfcf,%edx
2032         movb    %al,%bl
2033         movb    %ah,%cl
2034         rorl    $4,%edx
2035         xorl    (%ebp,%ebx,1),%edi
2036         movb    %dl,%bl
2037         xorl    0x200(%ebp,%ecx,1),%edi
2038         movb    %dh,%cl
2039         shrl    $16,%eax
2040         xorl    0x100(%ebp,%ebx,1),%edi
2041         movb    %ah,%bl
2042         shrl    $16,%edx
2043         xorl    0x300(%ebp,%ecx,1),%edi
2044         movb    %dh,%cl
2045         andl    $0xff,%eax
2046         andl    $0xff,%edx
2047         xorl    0x600(%ebp,%ebx,1),%edi
2048         xorl    0x700(%ebp,%ecx,1),%edi
2049         movl    (%esp),%ecx
2050         xorl    0x400(%ebp,%eax,1),%edi
2051         xorl    0x500(%ebp,%edx,1),%edi
2052
2053         movl    56(%ecx),%eax
2054         xorl    %ebx,%ebx
2055         movl    60(%ecx),%edx
2056         xorl    %edi,%eax
2057         xorl    %ecx,%ecx
2058         xorl    %edi,%edx
2059         andl    $0xfcfcfcfc,%eax
2060         andl    $0xcfcfcfcf,%edx
2061         movb    %al,%bl
2062         movb    %ah,%cl
2063         rorl    $4,%edx
2064         xorl    (%ebp,%ebx,1),%esi
2065         movb    %dl,%bl
2066         xorl    0x200(%ebp,%ecx,1),%esi
2067         movb    %dh,%cl
2068         shrl    $16,%eax
2069         xorl    0x100(%ebp,%ebx,1),%esi
2070         movb    %ah,%bl
2071         shrl    $16,%edx
2072         xorl    0x300(%ebp,%ecx,1),%esi
2073         movb    %dh,%cl
2074         andl    $0xff,%eax
2075         andl    $0xff,%edx
2076         xorl    0x600(%ebp,%ebx,1),%esi
2077         xorl    0x700(%ebp,%ecx,1),%esi
2078         movl    (%esp),%ecx
2079         xorl    0x400(%ebp,%eax,1),%esi
2080         xorl    0x500(%ebp,%edx,1),%esi
2081
2082         movl    64(%ecx),%eax
2083         xorl    %ebx,%ebx
2084         movl    68(%ecx),%edx
2085         xorl    %esi,%eax
2086         xorl    %ecx,%ecx
2087         xorl    %esi,%edx
2088         andl    $0xfcfcfcfc,%eax
2089         andl    $0xcfcfcfcf,%edx
2090         movb    %al,%bl
2091         movb    %ah,%cl
2092         rorl    $4,%edx
2093         xorl    (%ebp,%ebx,1),%edi
2094         movb    %dl,%bl
2095         xorl    0x200(%ebp,%ecx,1),%edi
2096         movb    %dh,%cl
2097         shrl    $16,%eax
2098         xorl    0x100(%ebp,%ebx,1),%edi
2099         movb    %ah,%bl
2100         shrl    $16,%edx
2101         xorl    0x300(%ebp,%ecx,1),%edi
2102         movb    %dh,%cl
2103         andl    $0xff,%eax
2104         andl    $0xff,%edx
2105         xorl    0x600(%ebp,%ebx,1),%edi
2106         xorl    0x700(%ebp,%ecx,1),%edi
2107         movl    (%esp),%ecx
2108         xorl    0x400(%ebp,%eax,1),%edi
2109         xorl    0x500(%ebp,%edx,1),%edi
2110
2111         movl    72(%ecx),%eax
2112         xorl    %ebx,%ebx
2113         movl    76(%ecx),%edx
2114         xorl    %edi,%eax
2115         xorl    %ecx,%ecx
2116         xorl    %edi,%edx
2117         andl    $0xfcfcfcfc,%eax
2118         andl    $0xcfcfcfcf,%edx
2119         movb    %al,%bl
2120         movb    %ah,%cl
2121         rorl    $4,%edx
2122         xorl    (%ebp,%ebx,1),%esi
2123         movb    %dl,%bl
2124         xorl    0x200(%ebp,%ecx,1),%esi
2125         movb    %dh,%cl
2126         shrl    $16,%eax
2127         xorl    0x100(%ebp,%ebx,1),%esi
2128         movb    %ah,%bl
2129         shrl    $16,%edx
2130         xorl    0x300(%ebp,%ecx,1),%esi
2131         movb    %dh,%cl
2132         andl    $0xff,%eax
2133         andl    $0xff,%edx
2134         xorl    0x600(%ebp,%ebx,1),%esi
2135         xorl    0x700(%ebp,%ecx,1),%esi
2136         movl    (%esp),%ecx
2137         xorl    0x400(%ebp,%eax,1),%esi
2138         xorl    0x500(%ebp,%edx,1),%esi
2139
2140         movl    80(%ecx),%eax
2141         xorl    %ebx,%ebx
2142         movl    84(%ecx),%edx
2143         xorl    %esi,%eax
2144         xorl    %ecx,%ecx
2145         xorl    %esi,%edx
2146         andl    $0xfcfcfcfc,%eax
2147         andl    $0xcfcfcfcf,%edx
2148         movb    %al,%bl
2149         movb    %ah,%cl
2150         rorl    $4,%edx
2151         xorl    (%ebp,%ebx,1),%edi
2152         movb    %dl,%bl
2153         xorl    0x200(%ebp,%ecx,1),%edi
2154         movb    %dh,%cl
2155         shrl    $16,%eax
2156         xorl    0x100(%ebp,%ebx,1),%edi
2157         movb    %ah,%bl
2158         shrl    $16,%edx
2159         xorl    0x300(%ebp,%ecx,1),%edi
2160         movb    %dh,%cl
2161         andl    $0xff,%eax
2162         andl    $0xff,%edx
2163         xorl    0x600(%ebp,%ebx,1),%edi
2164         xorl    0x700(%ebp,%ecx,1),%edi
2165         movl    (%esp),%ecx
2166         xorl    0x400(%ebp,%eax,1),%edi
2167         xorl    0x500(%ebp,%edx,1),%edi
2168
2169         movl    88(%ecx),%eax
2170         xorl    %ebx,%ebx
2171         movl    92(%ecx),%edx
2172         xorl    %edi,%eax
2173         xorl    %ecx,%ecx
2174         xorl    %edi,%edx
2175         andl    $0xfcfcfcfc,%eax
2176         andl    $0xcfcfcfcf,%edx
2177         movb    %al,%bl
2178         movb    %ah,%cl
2179         rorl    $4,%edx
2180         xorl    (%ebp,%ebx,1),%esi
2181         movb    %dl,%bl
2182         xorl    0x200(%ebp,%ecx,1),%esi
2183         movb    %dh,%cl
2184         shrl    $16,%eax
2185         xorl    0x100(%ebp,%ebx,1),%esi
2186         movb    %ah,%bl
2187         shrl    $16,%edx
2188         xorl    0x300(%ebp,%ecx,1),%esi
2189         movb    %dh,%cl
2190         andl    $0xff,%eax
2191         andl    $0xff,%edx
2192         xorl    0x600(%ebp,%ebx,1),%esi
2193         xorl    0x700(%ebp,%ecx,1),%esi
2194         movl    (%esp),%ecx
2195         xorl    0x400(%ebp,%eax,1),%esi
2196         xorl    0x500(%ebp,%edx,1),%esi
2197
2198         movl    96(%ecx),%eax
2199         xorl    %ebx,%ebx
2200         movl    100(%ecx),%edx
2201         xorl    %esi,%eax
2202         xorl    %ecx,%ecx
2203         xorl    %esi,%edx
2204         andl    $0xfcfcfcfc,%eax
2205         andl    $0xcfcfcfcf,%edx
2206         movb    %al,%bl
2207         movb    %ah,%cl
2208         rorl    $4,%edx
2209         xorl    (%ebp,%ebx,1),%edi
2210         movb    %dl,%bl
2211         xorl    0x200(%ebp,%ecx,1),%edi
2212         movb    %dh,%cl
2213         shrl    $16,%eax
2214         xorl    0x100(%ebp,%ebx,1),%edi
2215         movb    %ah,%bl
2216         shrl    $16,%edx
2217         xorl    0x300(%ebp,%ecx,1),%edi
2218         movb    %dh,%cl
2219         andl    $0xff,%eax
2220         andl    $0xff,%edx
2221         xorl    0x600(%ebp,%ebx,1),%edi
2222         xorl    0x700(%ebp,%ecx,1),%edi
2223         movl    (%esp),%ecx
2224         xorl    0x400(%ebp,%eax,1),%edi
2225         xorl    0x500(%ebp,%edx,1),%edi
2226
2227         movl    104(%ecx),%eax
2228         xorl    %ebx,%ebx
2229         movl    108(%ecx),%edx
2230         xorl    %edi,%eax
2231         xorl    %ecx,%ecx
2232         xorl    %edi,%edx
2233         andl    $0xfcfcfcfc,%eax
2234         andl    $0xcfcfcfcf,%edx
2235         movb    %al,%bl
2236         movb    %ah,%cl
2237         rorl    $4,%edx
2238         xorl    (%ebp,%ebx,1),%esi
2239         movb    %dl,%bl
2240         xorl    0x200(%ebp,%ecx,1),%esi
2241         movb    %dh,%cl
2242         shrl    $16,%eax
2243         xorl    0x100(%ebp,%ebx,1),%esi
2244         movb    %ah,%bl
2245         shrl    $16,%edx
2246         xorl    0x300(%ebp,%ecx,1),%esi
2247         movb    %dh,%cl
2248         andl    $0xff,%eax
2249         andl    $0xff,%edx
2250         xorl    0x600(%ebp,%ebx,1),%esi
2251         xorl    0x700(%ebp,%ecx,1),%esi
2252         movl    (%esp),%ecx
2253         xorl    0x400(%ebp,%eax,1),%esi
2254         xorl    0x500(%ebp,%edx,1),%esi
2255
2256         movl    112(%ecx),%eax
2257         xorl    %ebx,%ebx
2258         movl    116(%ecx),%edx
2259         xorl    %esi,%eax
2260         xorl    %ecx,%ecx
2261         xorl    %esi,%edx
2262         andl    $0xfcfcfcfc,%eax
2263         andl    $0xcfcfcfcf,%edx
2264         movb    %al,%bl
2265         movb    %ah,%cl
2266         rorl    $4,%edx
2267         xorl    (%ebp,%ebx,1),%edi
2268         movb    %dl,%bl
2269         xorl    0x200(%ebp,%ecx,1),%edi
2270         movb    %dh,%cl
2271         shrl    $16,%eax
2272         xorl    0x100(%ebp,%ebx,1),%edi
2273         movb    %ah,%bl
2274         shrl    $16,%edx
2275         xorl    0x300(%ebp,%ecx,1),%edi
2276         movb    %dh,%cl
2277         andl    $0xff,%eax
2278         andl    $0xff,%edx
2279         xorl    0x600(%ebp,%ebx,1),%edi
2280         xorl    0x700(%ebp,%ecx,1),%edi
2281         movl    (%esp),%ecx
2282         xorl    0x400(%ebp,%eax,1),%edi
2283         xorl    0x500(%ebp,%edx,1),%edi
2284
2285         movl    120(%ecx),%eax
2286         xorl    %ebx,%ebx
2287         movl    124(%ecx),%edx
2288         xorl    %edi,%eax
2289         xorl    %ecx,%ecx
2290         xorl    %edi,%edx
2291         andl    $0xfcfcfcfc,%eax
2292         andl    $0xcfcfcfcf,%edx
2293         movb    %al,%bl
2294         movb    %ah,%cl
2295         rorl    $4,%edx
2296         xorl    (%ebp,%ebx,1),%esi
2297         movb    %dl,%bl
2298         xorl    0x200(%ebp,%ecx,1),%esi
2299         movb    %dh,%cl
2300         shrl    $16,%eax
2301         xorl    0x100(%ebp,%ebx,1),%esi
2302         movb    %ah,%bl
2303         shrl    $16,%edx
2304         xorl    0x300(%ebp,%ecx,1),%esi
2305         movb    %dh,%cl
2306         andl    $0xff,%eax
2307         andl    $0xff,%edx
2308         xorl    0x600(%ebp,%ebx,1),%esi
2309         xorl    0x700(%ebp,%ecx,1),%esi
2310         movl    (%esp),%ecx
2311         xorl    0x400(%ebp,%eax,1),%esi
2312         xorl    0x500(%ebp,%edx,1),%esi
2313         addl    $4,%esp
2314         ret
2315 .size   _x86_DES_encrypt,.-_x86_DES_encrypt
2316 .type   _x86_DES_decrypt,@function
2317 .align  16
2318 _x86_DES_decrypt:
2319         pushl   %ecx
2320
2321         movl    120(%ecx),%eax
2322         xorl    %ebx,%ebx
2323         movl    124(%ecx),%edx
2324         xorl    %esi,%eax
2325         xorl    %ecx,%ecx
2326         xorl    %esi,%edx
2327         andl    $0xfcfcfcfc,%eax
2328         andl    $0xcfcfcfcf,%edx
2329         movb    %al,%bl
2330         movb    %ah,%cl
2331         rorl    $4,%edx
2332         xorl    (%ebp,%ebx,1),%edi
2333         movb    %dl,%bl
2334         xorl    0x200(%ebp,%ecx,1),%edi
2335         movb    %dh,%cl
2336         shrl    $16,%eax
2337         xorl    0x100(%ebp,%ebx,1),%edi
2338         movb    %ah,%bl
2339         shrl    $16,%edx
2340         xorl    0x300(%ebp,%ecx,1),%edi
2341         movb    %dh,%cl
2342         andl    $0xff,%eax
2343         andl    $0xff,%edx
2344         xorl    0x600(%ebp,%ebx,1),%edi
2345         xorl    0x700(%ebp,%ecx,1),%edi
2346         movl    (%esp),%ecx
2347         xorl    0x400(%ebp,%eax,1),%edi
2348         xorl    0x500(%ebp,%edx,1),%edi
2349
2350         movl    112(%ecx),%eax
2351         xorl    %ebx,%ebx
2352         movl    116(%ecx),%edx
2353         xorl    %edi,%eax
2354         xorl    %ecx,%ecx
2355         xorl    %edi,%edx
2356         andl    $0xfcfcfcfc,%eax
2357         andl    $0xcfcfcfcf,%edx
2358         movb    %al,%bl
2359         movb    %ah,%cl
2360         rorl    $4,%edx
2361         xorl    (%ebp,%ebx,1),%esi
2362         movb    %dl,%bl
2363         xorl    0x200(%ebp,%ecx,1),%esi
2364         movb    %dh,%cl
2365         shrl    $16,%eax
2366         xorl    0x100(%ebp,%ebx,1),%esi
2367         movb    %ah,%bl
2368         shrl    $16,%edx
2369         xorl    0x300(%ebp,%ecx,1),%esi
2370         movb    %dh,%cl
2371         andl    $0xff,%eax
2372         andl    $0xff,%edx
2373         xorl    0x600(%ebp,%ebx,1),%esi
2374         xorl    0x700(%ebp,%ecx,1),%esi
2375         movl    (%esp),%ecx
2376         xorl    0x400(%ebp,%eax,1),%esi
2377         xorl    0x500(%ebp,%edx,1),%esi
2378
2379         movl    104(%ecx),%eax
2380         xorl    %ebx,%ebx
2381         movl    108(%ecx),%edx
2382         xorl    %esi,%eax
2383         xorl    %ecx,%ecx
2384         xorl    %esi,%edx
2385         andl    $0xfcfcfcfc,%eax
2386         andl    $0xcfcfcfcf,%edx
2387         movb    %al,%bl
2388         movb    %ah,%cl
2389         rorl    $4,%edx
2390         xorl    (%ebp,%ebx,1),%edi
2391         movb    %dl,%bl
2392         xorl    0x200(%ebp,%ecx,1),%edi
2393         movb    %dh,%cl
2394         shrl    $16,%eax
2395         xorl    0x100(%ebp,%ebx,1),%edi
2396         movb    %ah,%bl
2397         shrl    $16,%edx
2398         xorl    0x300(%ebp,%ecx,1),%edi
2399         movb    %dh,%cl
2400         andl    $0xff,%eax
2401         andl    $0xff,%edx
2402         xorl    0x600(%ebp,%ebx,1),%edi
2403         xorl    0x700(%ebp,%ecx,1),%edi
2404         movl    (%esp),%ecx
2405         xorl    0x400(%ebp,%eax,1),%edi
2406         xorl    0x500(%ebp,%edx,1),%edi
2407
2408         movl    96(%ecx),%eax
2409         xorl    %ebx,%ebx
2410         movl    100(%ecx),%edx
2411         xorl    %edi,%eax
2412         xorl    %ecx,%ecx
2413         xorl    %edi,%edx
2414         andl    $0xfcfcfcfc,%eax
2415         andl    $0xcfcfcfcf,%edx
2416         movb    %al,%bl
2417         movb    %ah,%cl
2418         rorl    $4,%edx
2419         xorl    (%ebp,%ebx,1),%esi
2420         movb    %dl,%bl
2421         xorl    0x200(%ebp,%ecx,1),%esi
2422         movb    %dh,%cl
2423         shrl    $16,%eax
2424         xorl    0x100(%ebp,%ebx,1),%esi
2425         movb    %ah,%bl
2426         shrl    $16,%edx
2427         xorl    0x300(%ebp,%ecx,1),%esi
2428         movb    %dh,%cl
2429         andl    $0xff,%eax
2430         andl    $0xff,%edx
2431         xorl    0x600(%ebp,%ebx,1),%esi
2432         xorl    0x700(%ebp,%ecx,1),%esi
2433         movl    (%esp),%ecx
2434         xorl    0x400(%ebp,%eax,1),%esi
2435         xorl    0x500(%ebp,%edx,1),%esi
2436
2437         movl    88(%ecx),%eax
2438         xorl    %ebx,%ebx
2439         movl    92(%ecx),%edx
2440         xorl    %esi,%eax
2441         xorl    %ecx,%ecx
2442         xorl    %esi,%edx
2443         andl    $0xfcfcfcfc,%eax
2444         andl    $0xcfcfcfcf,%edx
2445         movb    %al,%bl
2446         movb    %ah,%cl
2447         rorl    $4,%edx
2448         xorl    (%ebp,%ebx,1),%edi
2449         movb    %dl,%bl
2450         xorl    0x200(%ebp,%ecx,1),%edi
2451         movb    %dh,%cl
2452         shrl    $16,%eax
2453         xorl    0x100(%ebp,%ebx,1),%edi
2454         movb    %ah,%bl
2455         shrl    $16,%edx
2456         xorl    0x300(%ebp,%ecx,1),%edi
2457         movb    %dh,%cl
2458         andl    $0xff,%eax
2459         andl    $0xff,%edx
2460         xorl    0x600(%ebp,%ebx,1),%edi
2461         xorl    0x700(%ebp,%ecx,1),%edi
2462         movl    (%esp),%ecx
2463         xorl    0x400(%ebp,%eax,1),%edi
2464         xorl    0x500(%ebp,%edx,1),%edi
2465
2466         movl    80(%ecx),%eax
2467         xorl    %ebx,%ebx
2468         movl    84(%ecx),%edx
2469         xorl    %edi,%eax
2470         xorl    %ecx,%ecx
2471         xorl    %edi,%edx
2472         andl    $0xfcfcfcfc,%eax
2473         andl    $0xcfcfcfcf,%edx
2474         movb    %al,%bl
2475         movb    %ah,%cl
2476         rorl    $4,%edx
2477         xorl    (%ebp,%ebx,1),%esi
2478         movb    %dl,%bl
2479         xorl    0x200(%ebp,%ecx,1),%esi
2480         movb    %dh,%cl
2481         shrl    $16,%eax
2482         xorl    0x100(%ebp,%ebx,1),%esi
2483         movb    %ah,%bl
2484         shrl    $16,%edx
2485         xorl    0x300(%ebp,%ecx,1),%esi
2486         movb    %dh,%cl
2487         andl    $0xff,%eax
2488         andl    $0xff,%edx
2489         xorl    0x600(%ebp,%ebx,1),%esi
2490         xorl    0x700(%ebp,%ecx,1),%esi
2491         movl    (%esp),%ecx
2492         xorl    0x400(%ebp,%eax,1),%esi
2493         xorl    0x500(%ebp,%edx,1),%esi
2494
2495         movl    72(%ecx),%eax
2496         xorl    %ebx,%ebx
2497         movl    76(%ecx),%edx
2498         xorl    %esi,%eax
2499         xorl    %ecx,%ecx
2500         xorl    %esi,%edx
2501         andl    $0xfcfcfcfc,%eax
2502         andl    $0xcfcfcfcf,%edx
2503         movb    %al,%bl
2504         movb    %ah,%cl
2505         rorl    $4,%edx
2506         xorl    (%ebp,%ebx,1),%edi
2507         movb    %dl,%bl
2508         xorl    0x200(%ebp,%ecx,1),%edi
2509         movb    %dh,%cl
2510         shrl    $16,%eax
2511         xorl    0x100(%ebp,%ebx,1),%edi
2512         movb    %ah,%bl
2513         shrl    $16,%edx
2514         xorl    0x300(%ebp,%ecx,1),%edi
2515         movb    %dh,%cl
2516         andl    $0xff,%eax
2517         andl    $0xff,%edx
2518         xorl    0x600(%ebp,%ebx,1),%edi
2519         xorl    0x700(%ebp,%ecx,1),%edi
2520         movl    (%esp),%ecx
2521         xorl    0x400(%ebp,%eax,1),%edi
2522         xorl    0x500(%ebp,%edx,1),%edi
2523
2524         movl    64(%ecx),%eax
2525         xorl    %ebx,%ebx
2526         movl    68(%ecx),%edx
2527         xorl    %edi,%eax
2528         xorl    %ecx,%ecx
2529         xorl    %edi,%edx
2530         andl    $0xfcfcfcfc,%eax
2531         andl    $0xcfcfcfcf,%edx
2532         movb    %al,%bl
2533         movb    %ah,%cl
2534         rorl    $4,%edx
2535         xorl    (%ebp,%ebx,1),%esi
2536         movb    %dl,%bl
2537         xorl    0x200(%ebp,%ecx,1),%esi
2538         movb    %dh,%cl
2539         shrl    $16,%eax
2540         xorl    0x100(%ebp,%ebx,1),%esi
2541         movb    %ah,%bl
2542         shrl    $16,%edx
2543         xorl    0x300(%ebp,%ecx,1),%esi
2544         movb    %dh,%cl
2545         andl    $0xff,%eax
2546         andl    $0xff,%edx
2547         xorl    0x600(%ebp,%ebx,1),%esi
2548         xorl    0x700(%ebp,%ecx,1),%esi
2549         movl    (%esp),%ecx
2550         xorl    0x400(%ebp,%eax,1),%esi
2551         xorl    0x500(%ebp,%edx,1),%esi
2552
2553         movl    56(%ecx),%eax
2554         xorl    %ebx,%ebx
2555         movl    60(%ecx),%edx
2556         xorl    %esi,%eax
2557         xorl    %ecx,%ecx
2558         xorl    %esi,%edx
2559         andl    $0xfcfcfcfc,%eax
2560         andl    $0xcfcfcfcf,%edx
2561         movb    %al,%bl
2562         movb    %ah,%cl
2563         rorl    $4,%edx
2564         xorl    (%ebp,%ebx,1),%edi
2565         movb    %dl,%bl
2566         xorl    0x200(%ebp,%ecx,1),%edi
2567         movb    %dh,%cl
2568         shrl    $16,%eax
2569         xorl    0x100(%ebp,%ebx,1),%edi
2570         movb    %ah,%bl
2571         shrl    $16,%edx
2572         xorl    0x300(%ebp,%ecx,1),%edi
2573         movb    %dh,%cl
2574         andl    $0xff,%eax
2575         andl    $0xff,%edx
2576         xorl    0x600(%ebp,%ebx,1),%edi
2577         xorl    0x700(%ebp,%ecx,1),%edi
2578         movl    (%esp),%ecx
2579         xorl    0x400(%ebp,%eax,1),%edi
2580         xorl    0x500(%ebp,%edx,1),%edi
2581
2582         movl    48(%ecx),%eax
2583         xorl    %ebx,%ebx
2584         movl    52(%ecx),%edx
2585         xorl    %edi,%eax
2586         xorl    %ecx,%ecx
2587         xorl    %edi,%edx
2588         andl    $0xfcfcfcfc,%eax
2589         andl    $0xcfcfcfcf,%edx
2590         movb    %al,%bl
2591         movb    %ah,%cl
2592         rorl    $4,%edx
2593         xorl    (%ebp,%ebx,1),%esi
2594         movb    %dl,%bl
2595         xorl    0x200(%ebp,%ecx,1),%esi
2596         movb    %dh,%cl
2597         shrl    $16,%eax
2598         xorl    0x100(%ebp,%ebx,1),%esi
2599         movb    %ah,%bl
2600         shrl    $16,%edx
2601         xorl    0x300(%ebp,%ecx,1),%esi
2602         movb    %dh,%cl
2603         andl    $0xff,%eax
2604         andl    $0xff,%edx
2605         xorl    0x600(%ebp,%ebx,1),%esi
2606         xorl    0x700(%ebp,%ecx,1),%esi
2607         movl    (%esp),%ecx
2608         xorl    0x400(%ebp,%eax,1),%esi
2609         xorl    0x500(%ebp,%edx,1),%esi
2610
2611         movl    40(%ecx),%eax
2612         xorl    %ebx,%ebx
2613         movl    44(%ecx),%edx
2614         xorl    %esi,%eax
2615         xorl    %ecx,%ecx
2616         xorl    %esi,%edx
2617         andl    $0xfcfcfcfc,%eax
2618         andl    $0xcfcfcfcf,%edx
2619         movb    %al,%bl
2620         movb    %ah,%cl
2621         rorl    $4,%edx
2622         xorl    (%ebp,%ebx,1),%edi
2623         movb    %dl,%bl
2624         xorl    0x200(%ebp,%ecx,1),%edi
2625         movb    %dh,%cl
2626         shrl    $16,%eax
2627         xorl    0x100(%ebp,%ebx,1),%edi
2628         movb    %ah,%bl
2629         shrl    $16,%edx
2630         xorl    0x300(%ebp,%ecx,1),%edi
2631         movb    %dh,%cl
2632         andl    $0xff,%eax
2633         andl    $0xff,%edx
2634         xorl    0x600(%ebp,%ebx,1),%edi
2635         xorl    0x700(%ebp,%ecx,1),%edi
2636         movl    (%esp),%ecx
2637         xorl    0x400(%ebp,%eax,1),%edi
2638         xorl    0x500(%ebp,%edx,1),%edi
2639
2640         movl    32(%ecx),%eax
2641         xorl    %ebx,%ebx
2642         movl    36(%ecx),%edx
2643         xorl    %edi,%eax
2644         xorl    %ecx,%ecx
2645         xorl    %edi,%edx
2646         andl    $0xfcfcfcfc,%eax
2647         andl    $0xcfcfcfcf,%edx
2648         movb    %al,%bl
2649         movb    %ah,%cl
2650         rorl    $4,%edx
2651         xorl    (%ebp,%ebx,1),%esi
2652         movb    %dl,%bl
2653         xorl    0x200(%ebp,%ecx,1),%esi
2654         movb    %dh,%cl
2655         shrl    $16,%eax
2656         xorl    0x100(%ebp,%ebx,1),%esi
2657         movb    %ah,%bl
2658         shrl    $16,%edx
2659         xorl    0x300(%ebp,%ecx,1),%esi
2660         movb    %dh,%cl
2661         andl    $0xff,%eax
2662         andl    $0xff,%edx
2663         xorl    0x600(%ebp,%ebx,1),%esi
2664         xorl    0x700(%ebp,%ecx,1),%esi
2665         movl    (%esp),%ecx
2666         xorl    0x400(%ebp,%eax,1),%esi
2667         xorl    0x500(%ebp,%edx,1),%esi
2668
2669         movl    24(%ecx),%eax
2670         xorl    %ebx,%ebx
2671         movl    28(%ecx),%edx
2672         xorl    %esi,%eax
2673         xorl    %ecx,%ecx
2674         xorl    %esi,%edx
2675         andl    $0xfcfcfcfc,%eax
2676         andl    $0xcfcfcfcf,%edx
2677         movb    %al,%bl
2678         movb    %ah,%cl
2679         rorl    $4,%edx
2680         xorl    (%ebp,%ebx,1),%edi
2681         movb    %dl,%bl
2682         xorl    0x200(%ebp,%ecx,1),%edi
2683         movb    %dh,%cl
2684         shrl    $16,%eax
2685         xorl    0x100(%ebp,%ebx,1),%edi
2686         movb    %ah,%bl
2687         shrl    $16,%edx
2688         xorl    0x300(%ebp,%ecx,1),%edi
2689         movb    %dh,%cl
2690         andl    $0xff,%eax
2691         andl    $0xff,%edx
2692         xorl    0x600(%ebp,%ebx,1),%edi
2693         xorl    0x700(%ebp,%ecx,1),%edi
2694         movl    (%esp),%ecx
2695         xorl    0x400(%ebp,%eax,1),%edi
2696         xorl    0x500(%ebp,%edx,1),%edi
2697
2698         movl    16(%ecx),%eax
2699         xorl    %ebx,%ebx
2700         movl    20(%ecx),%edx
2701         xorl    %edi,%eax
2702         xorl    %ecx,%ecx
2703         xorl    %edi,%edx
2704         andl    $0xfcfcfcfc,%eax
2705         andl    $0xcfcfcfcf,%edx
2706         movb    %al,%bl
2707         movb    %ah,%cl
2708         rorl    $4,%edx
2709         xorl    (%ebp,%ebx,1),%esi
2710         movb    %dl,%bl
2711         xorl    0x200(%ebp,%ecx,1),%esi
2712         movb    %dh,%cl
2713         shrl    $16,%eax
2714         xorl    0x100(%ebp,%ebx,1),%esi
2715         movb    %ah,%bl
2716         shrl    $16,%edx
2717         xorl    0x300(%ebp,%ecx,1),%esi
2718         movb    %dh,%cl
2719         andl    $0xff,%eax
2720         andl    $0xff,%edx
2721         xorl    0x600(%ebp,%ebx,1),%esi
2722         xorl    0x700(%ebp,%ecx,1),%esi
2723         movl    (%esp),%ecx
2724         xorl    0x400(%ebp,%eax,1),%esi
2725         xorl    0x500(%ebp,%edx,1),%esi
2726
2727         movl    8(%ecx),%eax
2728         xorl    %ebx,%ebx
2729         movl    12(%ecx),%edx
2730         xorl    %esi,%eax
2731         xorl    %ecx,%ecx
2732         xorl    %esi,%edx
2733         andl    $0xfcfcfcfc,%eax
2734         andl    $0xcfcfcfcf,%edx
2735         movb    %al,%bl
2736         movb    %ah,%cl
2737         rorl    $4,%edx
2738         xorl    (%ebp,%ebx,1),%edi
2739         movb    %dl,%bl
2740         xorl    0x200(%ebp,%ecx,1),%edi
2741         movb    %dh,%cl
2742         shrl    $16,%eax
2743         xorl    0x100(%ebp,%ebx,1),%edi
2744         movb    %ah,%bl
2745         shrl    $16,%edx
2746         xorl    0x300(%ebp,%ecx,1),%edi
2747         movb    %dh,%cl
2748         andl    $0xff,%eax
2749         andl    $0xff,%edx
2750         xorl    0x600(%ebp,%ebx,1),%edi
2751         xorl    0x700(%ebp,%ecx,1),%edi
2752         movl    (%esp),%ecx
2753         xorl    0x400(%ebp,%eax,1),%edi
2754         xorl    0x500(%ebp,%edx,1),%edi
2755
2756         movl    (%ecx),%eax
2757         xorl    %ebx,%ebx
2758         movl    4(%ecx),%edx
2759         xorl    %edi,%eax
2760         xorl    %ecx,%ecx
2761         xorl    %edi,%edx
2762         andl    $0xfcfcfcfc,%eax
2763         andl    $0xcfcfcfcf,%edx
2764         movb    %al,%bl
2765         movb    %ah,%cl
2766         rorl    $4,%edx
2767         xorl    (%ebp,%ebx,1),%esi
2768         movb    %dl,%bl
2769         xorl    0x200(%ebp,%ecx,1),%esi
2770         movb    %dh,%cl
2771         shrl    $16,%eax
2772         xorl    0x100(%ebp,%ebx,1),%esi
2773         movb    %ah,%bl
2774         shrl    $16,%edx
2775         xorl    0x300(%ebp,%ecx,1),%esi
2776         movb    %dh,%cl
2777         andl    $0xff,%eax
2778         andl    $0xff,%edx
2779         xorl    0x600(%ebp,%ebx,1),%esi
2780         xorl    0x700(%ebp,%ecx,1),%esi
2781         movl    (%esp),%ecx
2782         xorl    0x400(%ebp,%eax,1),%esi
2783         xorl    0x500(%ebp,%edx,1),%esi
2784         addl    $4,%esp
2785         ret
2786 .size   _x86_DES_decrypt,.-_x86_DES_decrypt
2787 .globl  DES_encrypt1
2788 .type   DES_encrypt1,@function
2789 .align  16
2790 DES_encrypt1:
2791 .L_DES_encrypt1_begin:
2792         pushl   %esi
2793         pushl   %edi
2794
2795
2796         movl    12(%esp),%esi
2797         xorl    %ecx,%ecx
2798         pushl   %ebx
2799         pushl   %ebp
2800         movl    (%esi),%eax
2801         movl    28(%esp),%ebx
2802         movl    4(%esi),%edi
2803
2804
2805         roll    $4,%eax
2806         movl    %eax,%esi
2807         xorl    %edi,%eax
2808         andl    $0xf0f0f0f0,%eax
2809         xorl    %eax,%esi
2810         xorl    %eax,%edi
2811
2812         roll    $20,%edi
2813         movl    %edi,%eax
2814         xorl    %esi,%edi
2815         andl    $0xfff0000f,%edi
2816         xorl    %edi,%eax
2817         xorl    %edi,%esi
2818
2819         roll    $14,%eax
2820         movl    %eax,%edi
2821         xorl    %esi,%eax
2822         andl    $0x33333333,%eax
2823         xorl    %eax,%edi
2824         xorl    %eax,%esi
2825
2826         roll    $22,%esi
2827         movl    %esi,%eax
2828         xorl    %edi,%esi
2829         andl    $0x03fc03fc,%esi
2830         xorl    %esi,%eax
2831         xorl    %esi,%edi
2832
2833         roll    $9,%eax
2834         movl    %eax,%esi
2835         xorl    %edi,%eax
2836         andl    $0xaaaaaaaa,%eax
2837         xorl    %eax,%esi
2838         xorl    %eax,%edi
2839
2840         roll    $1,%edi
2841         call    .L000pic_point
2842 .L000pic_point:
2843         popl    %ebp
2844         leal    DES_SPtrans-.L000pic_point(%ebp),%ebp
2845         movl    24(%esp),%ecx
2846         cmpl    $0,%ebx
2847         je      .L001decrypt
2848         call    _x86_DES_encrypt
2849         jmp     .L002done
2850 .L001decrypt:
2851         call    _x86_DES_decrypt
2852 .L002done:
2853
2854
2855         movl    20(%esp),%edx
2856         rorl    $1,%esi
2857         movl    %edi,%eax
2858         xorl    %esi,%edi
2859         andl    $0xaaaaaaaa,%edi
2860         xorl    %edi,%eax
2861         xorl    %edi,%esi
2862
2863         roll    $23,%eax
2864         movl    %eax,%edi
2865         xorl    %esi,%eax
2866         andl    $0x03fc03fc,%eax
2867         xorl    %eax,%edi
2868         xorl    %eax,%esi
2869
2870         roll    $10,%edi
2871         movl    %edi,%eax
2872         xorl    %esi,%edi
2873         andl    $0x33333333,%edi
2874         xorl    %edi,%eax
2875         xorl    %edi,%esi
2876
2877         roll    $18,%esi
2878         movl    %esi,%edi
2879         xorl    %eax,%esi
2880         andl    $0xfff0000f,%esi
2881         xorl    %esi,%edi
2882         xorl    %esi,%eax
2883
2884         roll    $12,%edi
2885         movl    %edi,%esi
2886         xorl    %eax,%edi
2887         andl    $0xf0f0f0f0,%edi
2888         xorl    %edi,%esi
2889         xorl    %edi,%eax
2890
2891         rorl    $4,%eax
2892         movl    %eax,(%edx)
2893         movl    %esi,4(%edx)
2894         popl    %ebp
2895         popl    %ebx
2896         popl    %edi
2897         popl    %esi
2898         ret
2899 .size   DES_encrypt1,.-.L_DES_encrypt1_begin
2900 .globl  DES_encrypt2
2901 .type   DES_encrypt2,@function
2902 .align  16
2903 DES_encrypt2:
2904 .L_DES_encrypt2_begin:
2905         pushl   %esi
2906         pushl   %edi
2907
2908
2909         movl    12(%esp),%eax
2910         xorl    %ecx,%ecx
2911         pushl   %ebx
2912         pushl   %ebp
2913         movl    (%eax),%esi
2914         movl    28(%esp),%ebx
2915         roll    $3,%esi
2916         movl    4(%eax),%edi
2917         roll    $3,%edi
2918         call    .L003pic_point
2919 .L003pic_point:
2920         popl    %ebp
2921         leal    DES_SPtrans-.L003pic_point(%ebp),%ebp
2922         movl    24(%esp),%ecx
2923         cmpl    $0,%ebx
2924         je      .L004decrypt
2925         call    _x86_DES_encrypt
2926         jmp     .L005done
2927 .L004decrypt:
2928         call    _x86_DES_decrypt
2929 .L005done:
2930
2931
2932         rorl    $3,%edi
2933         movl    20(%esp),%eax
2934         rorl    $3,%esi
2935         movl    %edi,(%eax)
2936         movl    %esi,4(%eax)
2937         popl    %ebp
2938         popl    %ebx
2939         popl    %edi
2940         popl    %esi
2941         ret
2942 .size   DES_encrypt2,.-.L_DES_encrypt2_begin
2943 .globl  DES_encrypt3
2944 .type   DES_encrypt3,@function
2945 .align  16
2946 DES_encrypt3:
2947 .L_DES_encrypt3_begin:
2948         pushl   %ebx
2949         movl    8(%esp),%ebx
2950         pushl   %ebp
2951         pushl   %esi
2952         pushl   %edi
2953
2954
2955         movl    (%ebx),%edi
2956         movl    4(%ebx),%esi
2957         subl    $12,%esp
2958
2959
2960         roll    $4,%edi
2961         movl    %edi,%edx
2962         xorl    %esi,%edi
2963         andl    $0xf0f0f0f0,%edi
2964         xorl    %edi,%edx
2965         xorl    %edi,%esi
2966
2967         roll    $20,%esi
2968         movl    %esi,%edi
2969         xorl    %edx,%esi
2970         andl    $0xfff0000f,%esi
2971         xorl    %esi,%edi
2972         xorl    %esi,%edx
2973
2974         roll    $14,%edi
2975         movl    %edi,%esi
2976         xorl    %edx,%edi
2977         andl    $0x33333333,%edi
2978         xorl    %edi,%esi
2979         xorl    %edi,%edx
2980
2981         roll    $22,%edx
2982         movl    %edx,%edi
2983         xorl    %esi,%edx
2984         andl    $0x03fc03fc,%edx
2985         xorl    %edx,%edi
2986         xorl    %edx,%esi
2987
2988         roll    $9,%edi
2989         movl    %edi,%edx
2990         xorl    %esi,%edi
2991         andl    $0xaaaaaaaa,%edi
2992         xorl    %edi,%edx
2993         xorl    %edi,%esi
2994
2995         rorl    $3,%edx
2996         rorl    $2,%esi
2997         movl    %esi,4(%ebx)
2998         movl    36(%esp),%eax
2999         movl    %edx,(%ebx)
3000         movl    40(%esp),%edi
3001         movl    44(%esp),%esi
3002         movl    $1,8(%esp)
3003         movl    %eax,4(%esp)
3004         movl    %ebx,(%esp)
3005         call    .L_DES_encrypt2_begin
3006         movl    $0,8(%esp)
3007         movl    %edi,4(%esp)
3008         movl    %ebx,(%esp)
3009         call    .L_DES_encrypt2_begin
3010         movl    $1,8(%esp)
3011         movl    %esi,4(%esp)
3012         movl    %ebx,(%esp)
3013         call    .L_DES_encrypt2_begin
3014         addl    $12,%esp
3015         movl    (%ebx),%edi
3016         movl    4(%ebx),%esi
3017
3018
3019         roll    $2,%esi
3020         roll    $3,%edi
3021         movl    %edi,%eax
3022         xorl    %esi,%edi
3023         andl    $0xaaaaaaaa,%edi
3024         xorl    %edi,%eax
3025         xorl    %edi,%esi
3026
3027         roll    $23,%eax
3028         movl    %eax,%edi
3029         xorl    %esi,%eax
3030         andl    $0x03fc03fc,%eax
3031         xorl    %eax,%edi
3032         xorl    %eax,%esi
3033
3034         roll    $10,%edi
3035         movl    %edi,%eax
3036         xorl    %esi,%edi
3037         andl    $0x33333333,%edi
3038         xorl    %edi,%eax
3039         xorl    %edi,%esi
3040
3041         roll    $18,%esi
3042         movl    %esi,%edi
3043         xorl    %eax,%esi
3044         andl    $0xfff0000f,%esi
3045         xorl    %esi,%edi
3046         xorl    %esi,%eax
3047
3048         roll    $12,%edi
3049         movl    %edi,%esi
3050         xorl    %eax,%edi
3051         andl    $0xf0f0f0f0,%edi
3052         xorl    %edi,%esi
3053         xorl    %edi,%eax
3054
3055         rorl    $4,%eax
3056         movl    %eax,(%ebx)
3057         movl    %esi,4(%ebx)
3058         popl    %edi
3059         popl    %esi
3060         popl    %ebp
3061         popl    %ebx
3062         ret
3063 .size   DES_encrypt3,.-.L_DES_encrypt3_begin
3064 .globl  DES_decrypt3
3065 .type   DES_decrypt3,@function
3066 .align  16
3067 DES_decrypt3:
3068 .L_DES_decrypt3_begin:
3069         pushl   %ebx
3070         movl    8(%esp),%ebx
3071         pushl   %ebp
3072         pushl   %esi
3073         pushl   %edi
3074
3075
3076         movl    (%ebx),%edi
3077         movl    4(%ebx),%esi
3078         subl    $12,%esp
3079
3080
3081         roll    $4,%edi
3082         movl    %edi,%edx
3083         xorl    %esi,%edi
3084         andl    $0xf0f0f0f0,%edi
3085         xorl    %edi,%edx
3086         xorl    %edi,%esi
3087
3088         roll    $20,%esi
3089         movl    %esi,%edi
3090         xorl    %edx,%esi
3091         andl    $0xfff0000f,%esi
3092         xorl    %esi,%edi
3093         xorl    %esi,%edx
3094
3095         roll    $14,%edi
3096         movl    %edi,%esi
3097         xorl    %edx,%edi
3098         andl    $0x33333333,%edi
3099         xorl    %edi,%esi
3100         xorl    %edi,%edx
3101
3102         roll    $22,%edx
3103         movl    %edx,%edi
3104         xorl    %esi,%edx
3105         andl    $0x03fc03fc,%edx
3106         xorl    %edx,%edi
3107         xorl    %edx,%esi
3108
3109         roll    $9,%edi
3110         movl    %edi,%edx
3111         xorl    %esi,%edi
3112         andl    $0xaaaaaaaa,%edi
3113         xorl    %edi,%edx
3114         xorl    %edi,%esi
3115
3116         rorl    $3,%edx
3117         rorl    $2,%esi
3118         movl    %esi,4(%ebx)
3119         movl    36(%esp),%esi
3120         movl    %edx,(%ebx)
3121         movl    40(%esp),%edi
3122         movl    44(%esp),%eax
3123         movl    $0,8(%esp)
3124         movl    %eax,4(%esp)
3125         movl    %ebx,(%esp)
3126         call    .L_DES_encrypt2_begin
3127         movl    $1,8(%esp)
3128         movl    %edi,4(%esp)
3129         movl    %ebx,(%esp)
3130         call    .L_DES_encrypt2_begin
3131         movl    $0,8(%esp)
3132         movl    %esi,4(%esp)
3133         movl    %ebx,(%esp)
3134         call    .L_DES_encrypt2_begin
3135         addl    $12,%esp
3136         movl    (%ebx),%edi
3137         movl    4(%ebx),%esi
3138
3139
3140         roll    $2,%esi
3141         roll    $3,%edi
3142         movl    %edi,%eax
3143         xorl    %esi,%edi
3144         andl    $0xaaaaaaaa,%edi
3145         xorl    %edi,%eax
3146         xorl    %edi,%esi
3147
3148         roll    $23,%eax
3149         movl    %eax,%edi
3150         xorl    %esi,%eax
3151         andl    $0x03fc03fc,%eax
3152         xorl    %eax,%edi
3153         xorl    %eax,%esi
3154
3155         roll    $10,%edi
3156         movl    %edi,%eax
3157         xorl    %esi,%edi
3158         andl    $0x33333333,%edi
3159         xorl    %edi,%eax
3160         xorl    %edi,%esi
3161
3162         roll    $18,%esi
3163         movl    %esi,%edi
3164         xorl    %eax,%esi
3165         andl    $0xfff0000f,%esi
3166         xorl    %esi,%edi
3167         xorl    %esi,%eax
3168
3169         roll    $12,%edi
3170         movl    %edi,%esi
3171         xorl    %eax,%edi
3172         andl    $0xf0f0f0f0,%edi
3173         xorl    %edi,%esi
3174         xorl    %edi,%eax
3175
3176         rorl    $4,%eax
3177         movl    %eax,(%ebx)
3178         movl    %esi,4(%ebx)
3179         popl    %edi
3180         popl    %esi
3181         popl    %ebp
3182         popl    %ebx
3183         ret
3184 .size   DES_decrypt3,.-.L_DES_decrypt3_begin
3185 .globl  DES_ncbc_encrypt
3186 .type   DES_ncbc_encrypt,@function
3187 .align  16
3188 DES_ncbc_encrypt:
3189 .L_DES_ncbc_encrypt_begin:
3190
3191         pushl   %ebp
3192         pushl   %ebx
3193         pushl   %esi
3194         pushl   %edi
3195         movl    28(%esp),%ebp
3196
3197         movl    36(%esp),%ebx
3198         movl    (%ebx),%esi
3199         movl    4(%ebx),%edi
3200         pushl   %edi
3201         pushl   %esi
3202         pushl   %edi
3203         pushl   %esi
3204         movl    %esp,%ebx
3205         movl    36(%esp),%esi
3206         movl    40(%esp),%edi
3207
3208         movl    56(%esp),%ecx
3209
3210         pushl   %ecx
3211
3212         movl    52(%esp),%eax
3213         pushl   %eax
3214         pushl   %ebx
3215         cmpl    $0,%ecx
3216         jz      .L006decrypt
3217         andl    $4294967288,%ebp
3218         movl    12(%esp),%eax
3219         movl    16(%esp),%ebx
3220         jz      .L007encrypt_finish
3221 .L008encrypt_loop:
3222         movl    (%esi),%ecx
3223         movl    4(%esi),%edx
3224         xorl    %ecx,%eax
3225         xorl    %edx,%ebx
3226         movl    %eax,12(%esp)
3227         movl    %ebx,16(%esp)
3228         call    .L_DES_encrypt1_begin
3229         movl    12(%esp),%eax
3230         movl    16(%esp),%ebx
3231         movl    %eax,(%edi)
3232         movl    %ebx,4(%edi)
3233         addl    $8,%esi
3234         addl    $8,%edi
3235         subl    $8,%ebp
3236         jnz     .L008encrypt_loop
3237 .L007encrypt_finish:
3238         movl    56(%esp),%ebp
3239         andl    $7,%ebp
3240         jz      .L009finish
3241         call    .L010PIC_point
3242 .L010PIC_point:
3243         popl    %edx
3244         leal    .L011cbc_enc_jmp_table-.L010PIC_point(%edx),%ecx
3245         movl    (%ecx,%ebp,4),%ebp
3246         addl    %edx,%ebp
3247         xorl    %ecx,%ecx
3248         xorl    %edx,%edx
3249         jmp     *%ebp
3250 .L012ej7:
3251         movb    6(%esi),%dh
3252         shll    $8,%edx
3253 .L013ej6:
3254         movb    5(%esi),%dh
3255 .L014ej5:
3256         movb    4(%esi),%dl
3257 .L015ej4:
3258         movl    (%esi),%ecx
3259         jmp     .L016ejend
3260 .L017ej3:
3261         movb    2(%esi),%ch
3262         shll    $8,%ecx
3263 .L018ej2:
3264         movb    1(%esi),%ch
3265 .L019ej1:
3266         movb    (%esi),%cl
3267 .L016ejend:
3268         xorl    %ecx,%eax
3269         xorl    %edx,%ebx
3270         movl    %eax,12(%esp)
3271         movl    %ebx,16(%esp)
3272         call    .L_DES_encrypt1_begin
3273         movl    12(%esp),%eax
3274         movl    16(%esp),%ebx
3275         movl    %eax,(%edi)
3276         movl    %ebx,4(%edi)
3277         jmp     .L009finish
3278 .L006decrypt:
3279         andl    $4294967288,%ebp
3280         movl    20(%esp),%eax
3281         movl    24(%esp),%ebx
3282         jz      .L020decrypt_finish
3283 .L021decrypt_loop:
3284         movl    (%esi),%eax
3285         movl    4(%esi),%ebx
3286         movl    %eax,12(%esp)
3287         movl    %ebx,16(%esp)
3288         call    .L_DES_encrypt1_begin
3289         movl    12(%esp),%eax
3290         movl    16(%esp),%ebx
3291         movl    20(%esp),%ecx
3292         movl    24(%esp),%edx
3293         xorl    %eax,%ecx
3294         xorl    %ebx,%edx
3295         movl    (%esi),%eax
3296         movl    4(%esi),%ebx
3297         movl    %ecx,(%edi)
3298         movl    %edx,4(%edi)
3299         movl    %eax,20(%esp)
3300         movl    %ebx,24(%esp)
3301         addl    $8,%esi
3302         addl    $8,%edi
3303         subl    $8,%ebp
3304         jnz     .L021decrypt_loop
3305 .L020decrypt_finish:
3306         movl    56(%esp),%ebp
3307         andl    $7,%ebp
3308         jz      .L009finish
3309         movl    (%esi),%eax
3310         movl    4(%esi),%ebx
3311         movl    %eax,12(%esp)
3312         movl    %ebx,16(%esp)
3313         call    .L_DES_encrypt1_begin
3314         movl    12(%esp),%eax
3315         movl    16(%esp),%ebx
3316         movl    20(%esp),%ecx
3317         movl    24(%esp),%edx
3318         xorl    %eax,%ecx
3319         xorl    %ebx,%edx
3320         movl    (%esi),%eax
3321         movl    4(%esi),%ebx
3322 .L022dj7:
3323         rorl    $16,%edx
3324         movb    %dl,6(%edi)
3325         shrl    $16,%edx
3326 .L023dj6:
3327         movb    %dh,5(%edi)
3328 .L024dj5:
3329         movb    %dl,4(%edi)
3330 .L025dj4:
3331         movl    %ecx,(%edi)
3332         jmp     .L026djend
3333 .L027dj3:
3334         rorl    $16,%ecx
3335         movb    %cl,2(%edi)
3336         shll    $16,%ecx
3337 .L028dj2:
3338         movb    %ch,1(%esi)
3339 .L029dj1:
3340         movb    %cl,(%esi)
3341 .L026djend:
3342         jmp     .L009finish
3343 .L009finish:
3344         movl    64(%esp),%ecx
3345         addl    $28,%esp
3346         movl    %eax,(%ecx)
3347         movl    %ebx,4(%ecx)
3348         popl    %edi
3349         popl    %esi
3350         popl    %ebx
3351         popl    %ebp
3352         ret
3353 .align  64
3354 .L011cbc_enc_jmp_table:
3355 .long   0
3356 .long   .L019ej1-.L010PIC_point
3357 .long   .L018ej2-.L010PIC_point
3358 .long   .L017ej3-.L010PIC_point
3359 .long   .L015ej4-.L010PIC_point
3360 .long   .L014ej5-.L010PIC_point
3361 .long   .L013ej6-.L010PIC_point
3362 .long   .L012ej7-.L010PIC_point
3363 .align  64
3364 .size   DES_ncbc_encrypt,.-.L_DES_ncbc_encrypt_begin
3365 .globl  DES_ede3_cbc_encrypt
3366 .type   DES_ede3_cbc_encrypt,@function
3367 .align  16
3368 DES_ede3_cbc_encrypt:
3369 .L_DES_ede3_cbc_encrypt_begin:
3370
3371         pushl   %ebp
3372         pushl   %ebx
3373         pushl   %esi
3374         pushl   %edi
3375         movl    28(%esp),%ebp
3376
3377         movl    44(%esp),%ebx
3378         movl    (%ebx),%esi
3379         movl    4(%ebx),%edi
3380         pushl   %edi
3381         pushl   %esi
3382         pushl   %edi
3383         pushl   %esi
3384         movl    %esp,%ebx
3385         movl    36(%esp),%esi
3386         movl    40(%esp),%edi
3387
3388         movl    64(%esp),%ecx
3389
3390         movl    56(%esp),%eax
3391         pushl   %eax
3392
3393         movl    56(%esp),%eax
3394         pushl   %eax
3395
3396         movl    56(%esp),%eax
3397         pushl   %eax
3398         pushl   %ebx
3399         cmpl    $0,%ecx
3400         jz      .L030decrypt
3401         andl    $4294967288,%ebp
3402         movl    16(%esp),%eax
3403         movl    20(%esp),%ebx
3404         jz      .L031encrypt_finish
3405 .L032encrypt_loop:
3406         movl    (%esi),%ecx
3407         movl    4(%esi),%edx
3408         xorl    %ecx,%eax
3409         xorl    %edx,%ebx
3410         movl    %eax,16(%esp)
3411         movl    %ebx,20(%esp)
3412         call    .L_DES_encrypt3_begin
3413         movl    16(%esp),%eax
3414         movl    20(%esp),%ebx
3415         movl    %eax,(%edi)
3416         movl    %ebx,4(%edi)
3417         addl    $8,%esi
3418         addl    $8,%edi
3419         subl    $8,%ebp
3420         jnz     .L032encrypt_loop
3421 .L031encrypt_finish:
3422         movl    60(%esp),%ebp
3423         andl    $7,%ebp
3424         jz      .L033finish
3425         call    .L034PIC_point
3426 .L034PIC_point:
3427         popl    %edx
3428         leal    .L035cbc_enc_jmp_table-.L034PIC_point(%edx),%ecx
3429         movl    (%ecx,%ebp,4),%ebp
3430         addl    %edx,%ebp
3431         xorl    %ecx,%ecx
3432         xorl    %edx,%edx
3433         jmp     *%ebp
3434 .L036ej7:
3435         movb    6(%esi),%dh
3436         shll    $8,%edx
3437 .L037ej6:
3438         movb    5(%esi),%dh
3439 .L038ej5:
3440         movb    4(%esi),%dl
3441 .L039ej4:
3442         movl    (%esi),%ecx
3443         jmp     .L040ejend
3444 .L041ej3:
3445         movb    2(%esi),%ch
3446         shll    $8,%ecx
3447 .L042ej2:
3448         movb    1(%esi),%ch
3449 .L043ej1:
3450         movb    (%esi),%cl
3451 .L040ejend:
3452         xorl    %ecx,%eax
3453         xorl    %edx,%ebx
3454         movl    %eax,16(%esp)
3455         movl    %ebx,20(%esp)
3456         call    .L_DES_encrypt3_begin
3457         movl    16(%esp),%eax
3458         movl    20(%esp),%ebx
3459         movl    %eax,(%edi)
3460         movl    %ebx,4(%edi)
3461         jmp     .L033finish
3462 .L030decrypt:
3463         andl    $4294967288,%ebp
3464         movl    24(%esp),%eax
3465         movl    28(%esp),%ebx
3466         jz      .L044decrypt_finish
3467 .L045decrypt_loop:
3468         movl    (%esi),%eax
3469         movl    4(%esi),%ebx
3470         movl    %eax,16(%esp)
3471         movl    %ebx,20(%esp)
3472         call    .L_DES_decrypt3_begin
3473         movl    16(%esp),%eax
3474         movl    20(%esp),%ebx
3475         movl    24(%esp),%ecx
3476         movl    28(%esp),%edx
3477         xorl    %eax,%ecx
3478         xorl    %ebx,%edx
3479         movl    (%esi),%eax
3480         movl    4(%esi),%ebx
3481         movl    %ecx,(%edi)
3482         movl    %edx,4(%edi)
3483         movl    %eax,24(%esp)
3484         movl    %ebx,28(%esp)
3485         addl    $8,%esi
3486         addl    $8,%edi
3487         subl    $8,%ebp
3488         jnz     .L045decrypt_loop
3489 .L044decrypt_finish:
3490         movl    60(%esp),%ebp
3491         andl    $7,%ebp
3492         jz      .L033finish
3493         movl    (%esi),%eax
3494         movl    4(%esi),%ebx
3495         movl    %eax,16(%esp)
3496         movl    %ebx,20(%esp)
3497         call    .L_DES_decrypt3_begin
3498         movl    16(%esp),%eax
3499         movl    20(%esp),%ebx
3500         movl    24(%esp),%ecx
3501         movl    28(%esp),%edx
3502         xorl    %eax,%ecx
3503         xorl    %ebx,%edx
3504         movl    (%esi),%eax
3505         movl    4(%esi),%ebx
3506 .L046dj7:
3507         rorl    $16,%edx
3508         movb    %dl,6(%edi)
3509         shrl    $16,%edx
3510 .L047dj6:
3511         movb    %dh,5(%edi)
3512 .L048dj5:
3513         movb    %dl,4(%edi)
3514 .L049dj4:
3515         movl    %ecx,(%edi)
3516         jmp     .L050djend
3517 .L051dj3:
3518         rorl    $16,%ecx
3519         movb    %cl,2(%edi)
3520         shll    $16,%ecx
3521 .L052dj2:
3522         movb    %ch,1(%esi)
3523 .L053dj1:
3524         movb    %cl,(%esi)
3525 .L050djend:
3526         jmp     .L033finish
3527 .L033finish:
3528         movl    76(%esp),%ecx
3529         addl    $32,%esp
3530         movl    %eax,(%ecx)
3531         movl    %ebx,4(%ecx)
3532         popl    %edi
3533         popl    %esi
3534         popl    %ebx
3535         popl    %ebp
3536         ret
3537 .align  64
3538 .L035cbc_enc_jmp_table:
3539 .long   0
3540 .long   .L043ej1-.L034PIC_point
3541 .long   .L042ej2-.L034PIC_point
3542 .long   .L041ej3-.L034PIC_point
3543 .long   .L039ej4-.L034PIC_point
3544 .long   .L038ej5-.L034PIC_point
3545 .long   .L037ej6-.L034PIC_point
3546 .long   .L036ej7-.L034PIC_point
3547 .align  64
3548 .size   DES_ede3_cbc_encrypt,.-.L_DES_ede3_cbc_encrypt_begin
3549 .align  64
3550 DES_SPtrans:
3551 .long   34080768,524288,33554434,34080770
3552 .long   33554432,526338,524290,33554434
3553 .long   526338,34080768,34078720,2050
3554 .long   33556482,33554432,0,524290
3555 .long   524288,2,33556480,526336
3556 .long   34080770,34078720,2050,33556480
3557 .long   2,2048,526336,34078722
3558 .long   2048,33556482,34078722,0
3559 .long   0,34080770,33556480,524290
3560 .long   34080768,524288,2050,33556480
3561 .long   34078722,2048,526336,33554434
3562 .long   526338,2,33554434,34078720
3563 .long   34080770,526336,34078720,33556482
3564 .long   33554432,2050,524290,0
3565 .long   524288,33554432,33556482,34080768
3566 .long   2,34078722,2048,526338
3567 .long   1074823184,0,1081344,1074790400
3568 .long   1073741840,32784,1073774592,1081344
3569 .long   32768,1074790416,16,1073774592
3570 .long   1048592,1074823168,1074790400,16
3571 .long   1048576,1073774608,1074790416,32768
3572 .long   1081360,1073741824,0,1048592
3573 .long   1073774608,1081360,1074823168,1073741840
3574 .long   1073741824,1048576,32784,1074823184
3575 .long   1048592,1074823168,1073774592,1081360
3576 .long   1074823184,1048592,1073741840,0
3577 .long   1073741824,32784,1048576,1074790416
3578 .long   32768,1073741824,1081360,1073774608
3579 .long   1074823168,32768,0,1073741840
3580 .long   16,1074823184,1081344,1074790400
3581 .long   1074790416,1048576,32784,1073774592
3582 .long   1073774608,16,1074790400,1081344
3583 .long   67108865,67371264,256,67109121
3584 .long   262145,67108864,67109121,262400
3585 .long   67109120,262144,67371008,1
3586 .long   67371265,257,1,67371009
3587 .long   0,262145,67371264,256
3588 .long   257,67371265,262144,67108865
3589 .long   67371009,67109120,262401,67371008
3590 .long   262400,0,67108864,262401
3591 .long   67371264,256,1,262144
3592 .long   257,262145,67371008,67109121
3593 .long   0,67371264,262400,67371009
3594 .long   262145,67108864,67371265,1
3595 .long   262401,67108865,67108864,67371265
3596 .long   262144,67109120,67109121,262400
3597 .long   67109120,0,67371009,257
3598 .long   67108865,262401,256,67371008
3599 .long   4198408,268439552,8,272633864
3600 .long   0,272629760,268439560,4194312
3601 .long   272633856,268435464,268435456,4104
3602 .long   268435464,4198408,4194304,268435456
3603 .long   272629768,4198400,4096,8
3604 .long   4198400,268439560,272629760,4096
3605 .long   4104,0,4194312,272633856
3606 .long   268439552,272629768,272633864,4194304
3607 .long   272629768,4104,4194304,268435464
3608 .long   4198400,268439552,8,272629760
3609 .long   268439560,0,4096,4194312
3610 .long   0,272629768,272633856,4096
3611 .long   268435456,272633864,4198408,4194304
3612 .long   272633864,8,268439552,4198408
3613 .long   4194312,4198400,272629760,268439560
3614 .long   4104,268435456,268435464,272633856
3615 .long   134217728,65536,1024,134284320
3616 .long   134283296,134218752,66592,134283264
3617 .long   65536,32,134217760,66560
3618 .long   134218784,134283296,134284288,0
3619 .long   66560,134217728,65568,1056
3620 .long   134218752,66592,0,134217760
3621 .long   32,134218784,134284320,65568
3622 .long   134283264,1024,1056,134284288
3623 .long   134284288,134218784,65568,134283264
3624 .long   65536,32,134217760,134218752
3625 .long   134217728,66560,134284320,0
3626 .long   66592,134217728,1024,65568
3627 .long   134218784,1024,0,134284320
3628 .long   134283296,134284288,1056,65536
3629 .long   66560,134283296,134218752,1056
3630 .long   32,66592,134283264,134217760
3631 .long   2147483712,2097216,0,2149588992
3632 .long   2097216,8192,2147491904,2097152
3633 .long   8256,2149589056,2105344,2147483648
3634 .long   2147491840,2147483712,2149580800,2105408
3635 .long   2097152,2147491904,2149580864,0
3636 .long   8192,64,2149588992,2149580864
3637 .long   2149589056,2149580800,2147483648,8256
3638 .long   64,2105344,2105408,2147491840
3639 .long   8256,2147483648,2147491840,2105408
3640 .long   2149588992,2097216,0,2147491840
3641 .long   2147483648,8192,2149580864,2097152
3642 .long   2097216,2149589056,2105344,64
3643 .long   2149589056,2105344,2097152,2147491904
3644 .long   2147483712,2149580800,2105408,0
3645 .long   8192,2147483712,2147491904,2149588992
3646 .long   2149580800,8256,64,2149580864
3647 .long   16384,512,16777728,16777220
3648 .long   16794116,16388,16896,0
3649 .long   16777216,16777732,516,16793600
3650 .long   4,16794112,16793600,516
3651 .long   16777732,16384,16388,16794116
3652 .long   0,16777728,16777220,16896
3653 .long   16793604,16900,16794112,4
3654 .long   16900,16793604,512,16777216
3655 .long   16900,16793600,16793604,516
3656 .long   16384,512,16777216,16793604
3657 .long   16777732,16900,16896,0
3658 .long   512,16777220,4,16777728
3659 .long   0,16777732,16777728,16896
3660 .long   516,16384,16794116,16777216
3661 .long   16794112,4,16388,16794116
3662 .long   16777220,16794112,16793600,16388
3663 .long   545259648,545390592,131200,0
3664 .long   537001984,8388736,545259520,545390720
3665 .long   128,536870912,8519680,131200
3666 .long   8519808,537002112,536871040,545259520
3667 .long   131072,8519808,8388736,537001984
3668 .long   545390720,536871040,0,8519680
3669 .long   536870912,8388608,537002112,545259648
3670 .long   8388608,131072,545390592,128
3671 .long   8388608,131072,536871040,545390720
3672 .long   131200,536870912,0,8519680
3673 .long   545259648,537002112,537001984,8388736
3674 .long   545390592,128,8388736,537001984
3675 .long   545390720,8388608,545259520,536871040
3676 .long   8519680,131200,537002112,545259520
3677 .long   128,545390592,8519808,0
3678 .long   536870912,545259648,131072,8519808
3679 #endif