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