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