]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - secure/lib/libcrypto/i386/rc5-586.s
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / secure / lib / libcrypto / i386 / rc5-586.s
1         # $FreeBSD$
2 .file   "rc5-586.s"
3 .text
4 .globl  RC5_32_encrypt
5 .type   RC5_32_encrypt,@function
6 .align  16
7 RC5_32_encrypt:
8 .L_RC5_32_encrypt_begin:
9
10         pushl   %ebp
11         pushl   %esi
12         pushl   %edi
13         movl    16(%esp),%edx
14         movl    20(%esp),%ebp
15
16         movl    (%edx),%edi
17         movl    4(%edx),%esi
18         pushl   %ebx
19         movl    (%ebp),%ebx
20         addl    4(%ebp),%edi
21         addl    8(%ebp),%esi
22         xorl    %esi,%edi
23         movl    12(%ebp),%eax
24         movl    %esi,%ecx
25         roll    %cl,%edi
26         addl    %eax,%edi
27         xorl    %edi,%esi
28         movl    16(%ebp),%eax
29         movl    %edi,%ecx
30         roll    %cl,%esi
31         addl    %eax,%esi
32         xorl    %esi,%edi
33         movl    20(%ebp),%eax
34         movl    %esi,%ecx
35         roll    %cl,%edi
36         addl    %eax,%edi
37         xorl    %edi,%esi
38         movl    24(%ebp),%eax
39         movl    %edi,%ecx
40         roll    %cl,%esi
41         addl    %eax,%esi
42         xorl    %esi,%edi
43         movl    28(%ebp),%eax
44         movl    %esi,%ecx
45         roll    %cl,%edi
46         addl    %eax,%edi
47         xorl    %edi,%esi
48         movl    32(%ebp),%eax
49         movl    %edi,%ecx
50         roll    %cl,%esi
51         addl    %eax,%esi
52         xorl    %esi,%edi
53         movl    36(%ebp),%eax
54         movl    %esi,%ecx
55         roll    %cl,%edi
56         addl    %eax,%edi
57         xorl    %edi,%esi
58         movl    40(%ebp),%eax
59         movl    %edi,%ecx
60         roll    %cl,%esi
61         addl    %eax,%esi
62         xorl    %esi,%edi
63         movl    44(%ebp),%eax
64         movl    %esi,%ecx
65         roll    %cl,%edi
66         addl    %eax,%edi
67         xorl    %edi,%esi
68         movl    48(%ebp),%eax
69         movl    %edi,%ecx
70         roll    %cl,%esi
71         addl    %eax,%esi
72         xorl    %esi,%edi
73         movl    52(%ebp),%eax
74         movl    %esi,%ecx
75         roll    %cl,%edi
76         addl    %eax,%edi
77         xorl    %edi,%esi
78         movl    56(%ebp),%eax
79         movl    %edi,%ecx
80         roll    %cl,%esi
81         addl    %eax,%esi
82         xorl    %esi,%edi
83         movl    60(%ebp),%eax
84         movl    %esi,%ecx
85         roll    %cl,%edi
86         addl    %eax,%edi
87         xorl    %edi,%esi
88         movl    64(%ebp),%eax
89         movl    %edi,%ecx
90         roll    %cl,%esi
91         addl    %eax,%esi
92         xorl    %esi,%edi
93         movl    68(%ebp),%eax
94         movl    %esi,%ecx
95         roll    %cl,%edi
96         addl    %eax,%edi
97         xorl    %edi,%esi
98         movl    72(%ebp),%eax
99         movl    %edi,%ecx
100         roll    %cl,%esi
101         addl    %eax,%esi
102         cmpl    $8,%ebx
103         je      .L000rc5_exit
104         xorl    %esi,%edi
105         movl    76(%ebp),%eax
106         movl    %esi,%ecx
107         roll    %cl,%edi
108         addl    %eax,%edi
109         xorl    %edi,%esi
110         movl    80(%ebp),%eax
111         movl    %edi,%ecx
112         roll    %cl,%esi
113         addl    %eax,%esi
114         xorl    %esi,%edi
115         movl    84(%ebp),%eax
116         movl    %esi,%ecx
117         roll    %cl,%edi
118         addl    %eax,%edi
119         xorl    %edi,%esi
120         movl    88(%ebp),%eax
121         movl    %edi,%ecx
122         roll    %cl,%esi
123         addl    %eax,%esi
124         xorl    %esi,%edi
125         movl    92(%ebp),%eax
126         movl    %esi,%ecx
127         roll    %cl,%edi
128         addl    %eax,%edi
129         xorl    %edi,%esi
130         movl    96(%ebp),%eax
131         movl    %edi,%ecx
132         roll    %cl,%esi
133         addl    %eax,%esi
134         xorl    %esi,%edi
135         movl    100(%ebp),%eax
136         movl    %esi,%ecx
137         roll    %cl,%edi
138         addl    %eax,%edi
139         xorl    %edi,%esi
140         movl    104(%ebp),%eax
141         movl    %edi,%ecx
142         roll    %cl,%esi
143         addl    %eax,%esi
144         cmpl    $12,%ebx
145         je      .L000rc5_exit
146         xorl    %esi,%edi
147         movl    108(%ebp),%eax
148         movl    %esi,%ecx
149         roll    %cl,%edi
150         addl    %eax,%edi
151         xorl    %edi,%esi
152         movl    112(%ebp),%eax
153         movl    %edi,%ecx
154         roll    %cl,%esi
155         addl    %eax,%esi
156         xorl    %esi,%edi
157         movl    116(%ebp),%eax
158         movl    %esi,%ecx
159         roll    %cl,%edi
160         addl    %eax,%edi
161         xorl    %edi,%esi
162         movl    120(%ebp),%eax
163         movl    %edi,%ecx
164         roll    %cl,%esi
165         addl    %eax,%esi
166         xorl    %esi,%edi
167         movl    124(%ebp),%eax
168         movl    %esi,%ecx
169         roll    %cl,%edi
170         addl    %eax,%edi
171         xorl    %edi,%esi
172         movl    128(%ebp),%eax
173         movl    %edi,%ecx
174         roll    %cl,%esi
175         addl    %eax,%esi
176         xorl    %esi,%edi
177         movl    132(%ebp),%eax
178         movl    %esi,%ecx
179         roll    %cl,%edi
180         addl    %eax,%edi
181         xorl    %edi,%esi
182         movl    136(%ebp),%eax
183         movl    %edi,%ecx
184         roll    %cl,%esi
185         addl    %eax,%esi
186 .L000rc5_exit:
187         movl    %edi,(%edx)
188         movl    %esi,4(%edx)
189         popl    %ebx
190         popl    %edi
191         popl    %esi
192         popl    %ebp
193         ret
194 .size   RC5_32_encrypt,.-.L_RC5_32_encrypt_begin
195 .globl  RC5_32_decrypt
196 .type   RC5_32_decrypt,@function
197 .align  16
198 RC5_32_decrypt:
199 .L_RC5_32_decrypt_begin:
200
201         pushl   %ebp
202         pushl   %esi
203         pushl   %edi
204         movl    16(%esp),%edx
205         movl    20(%esp),%ebp
206
207         movl    (%edx),%edi
208         movl    4(%edx),%esi
209         pushl   %ebx
210         movl    (%ebp),%ebx
211         cmpl    $12,%ebx
212         je      .L001rc5_dec_12
213         cmpl    $8,%ebx
214         je      .L002rc5_dec_8
215         movl    136(%ebp),%eax
216         subl    %eax,%esi
217         movl    %edi,%ecx
218         rorl    %cl,%esi
219         xorl    %edi,%esi
220         movl    132(%ebp),%eax
221         subl    %eax,%edi
222         movl    %esi,%ecx
223         rorl    %cl,%edi
224         xorl    %esi,%edi
225         movl    128(%ebp),%eax
226         subl    %eax,%esi
227         movl    %edi,%ecx
228         rorl    %cl,%esi
229         xorl    %edi,%esi
230         movl    124(%ebp),%eax
231         subl    %eax,%edi
232         movl    %esi,%ecx
233         rorl    %cl,%edi
234         xorl    %esi,%edi
235         movl    120(%ebp),%eax
236         subl    %eax,%esi
237         movl    %edi,%ecx
238         rorl    %cl,%esi
239         xorl    %edi,%esi
240         movl    116(%ebp),%eax
241         subl    %eax,%edi
242         movl    %esi,%ecx
243         rorl    %cl,%edi
244         xorl    %esi,%edi
245         movl    112(%ebp),%eax
246         subl    %eax,%esi
247         movl    %edi,%ecx
248         rorl    %cl,%esi
249         xorl    %edi,%esi
250         movl    108(%ebp),%eax
251         subl    %eax,%edi
252         movl    %esi,%ecx
253         rorl    %cl,%edi
254         xorl    %esi,%edi
255 .L001rc5_dec_12:
256         movl    104(%ebp),%eax
257         subl    %eax,%esi
258         movl    %edi,%ecx
259         rorl    %cl,%esi
260         xorl    %edi,%esi
261         movl    100(%ebp),%eax
262         subl    %eax,%edi
263         movl    %esi,%ecx
264         rorl    %cl,%edi
265         xorl    %esi,%edi
266         movl    96(%ebp),%eax
267         subl    %eax,%esi
268         movl    %edi,%ecx
269         rorl    %cl,%esi
270         xorl    %edi,%esi
271         movl    92(%ebp),%eax
272         subl    %eax,%edi
273         movl    %esi,%ecx
274         rorl    %cl,%edi
275         xorl    %esi,%edi
276         movl    88(%ebp),%eax
277         subl    %eax,%esi
278         movl    %edi,%ecx
279         rorl    %cl,%esi
280         xorl    %edi,%esi
281         movl    84(%ebp),%eax
282         subl    %eax,%edi
283         movl    %esi,%ecx
284         rorl    %cl,%edi
285         xorl    %esi,%edi
286         movl    80(%ebp),%eax
287         subl    %eax,%esi
288         movl    %edi,%ecx
289         rorl    %cl,%esi
290         xorl    %edi,%esi
291         movl    76(%ebp),%eax
292         subl    %eax,%edi
293         movl    %esi,%ecx
294         rorl    %cl,%edi
295         xorl    %esi,%edi
296 .L002rc5_dec_8:
297         movl    72(%ebp),%eax
298         subl    %eax,%esi
299         movl    %edi,%ecx
300         rorl    %cl,%esi
301         xorl    %edi,%esi
302         movl    68(%ebp),%eax
303         subl    %eax,%edi
304         movl    %esi,%ecx
305         rorl    %cl,%edi
306         xorl    %esi,%edi
307         movl    64(%ebp),%eax
308         subl    %eax,%esi
309         movl    %edi,%ecx
310         rorl    %cl,%esi
311         xorl    %edi,%esi
312         movl    60(%ebp),%eax
313         subl    %eax,%edi
314         movl    %esi,%ecx
315         rorl    %cl,%edi
316         xorl    %esi,%edi
317         movl    56(%ebp),%eax
318         subl    %eax,%esi
319         movl    %edi,%ecx
320         rorl    %cl,%esi
321         xorl    %edi,%esi
322         movl    52(%ebp),%eax
323         subl    %eax,%edi
324         movl    %esi,%ecx
325         rorl    %cl,%edi
326         xorl    %esi,%edi
327         movl    48(%ebp),%eax
328         subl    %eax,%esi
329         movl    %edi,%ecx
330         rorl    %cl,%esi
331         xorl    %edi,%esi
332         movl    44(%ebp),%eax
333         subl    %eax,%edi
334         movl    %esi,%ecx
335         rorl    %cl,%edi
336         xorl    %esi,%edi
337         movl    40(%ebp),%eax
338         subl    %eax,%esi
339         movl    %edi,%ecx
340         rorl    %cl,%esi
341         xorl    %edi,%esi
342         movl    36(%ebp),%eax
343         subl    %eax,%edi
344         movl    %esi,%ecx
345         rorl    %cl,%edi
346         xorl    %esi,%edi
347         movl    32(%ebp),%eax
348         subl    %eax,%esi
349         movl    %edi,%ecx
350         rorl    %cl,%esi
351         xorl    %edi,%esi
352         movl    28(%ebp),%eax
353         subl    %eax,%edi
354         movl    %esi,%ecx
355         rorl    %cl,%edi
356         xorl    %esi,%edi
357         movl    24(%ebp),%eax
358         subl    %eax,%esi
359         movl    %edi,%ecx
360         rorl    %cl,%esi
361         xorl    %edi,%esi
362         movl    20(%ebp),%eax
363         subl    %eax,%edi
364         movl    %esi,%ecx
365         rorl    %cl,%edi
366         xorl    %esi,%edi
367         movl    16(%ebp),%eax
368         subl    %eax,%esi
369         movl    %edi,%ecx
370         rorl    %cl,%esi
371         xorl    %edi,%esi
372         movl    12(%ebp),%eax
373         subl    %eax,%edi
374         movl    %esi,%ecx
375         rorl    %cl,%edi
376         xorl    %esi,%edi
377         subl    8(%ebp),%esi
378         subl    4(%ebp),%edi
379 .L003rc5_exit:
380         movl    %edi,(%edx)
381         movl    %esi,4(%edx)
382         popl    %ebx
383         popl    %edi
384         popl    %esi
385         popl    %ebp
386         ret
387 .size   RC5_32_decrypt,.-.L_RC5_32_decrypt_begin
388 .globl  RC5_32_cbc_encrypt
389 .type   RC5_32_cbc_encrypt,@function
390 .align  16
391 RC5_32_cbc_encrypt:
392 .L_RC5_32_cbc_encrypt_begin:
393
394         pushl   %ebp
395         pushl   %ebx
396         pushl   %esi
397         pushl   %edi
398         movl    28(%esp),%ebp
399
400         movl    36(%esp),%ebx
401         movl    (%ebx),%esi
402         movl    4(%ebx),%edi
403         pushl   %edi
404         pushl   %esi
405         pushl   %edi
406         pushl   %esi
407         movl    %esp,%ebx
408         movl    36(%esp),%esi
409         movl    40(%esp),%edi
410
411         movl    56(%esp),%ecx
412
413         movl    48(%esp),%eax
414         pushl   %eax
415         pushl   %ebx
416         cmpl    $0,%ecx
417         jz      .L004decrypt
418         andl    $4294967288,%ebp
419         movl    8(%esp),%eax
420         movl    12(%esp),%ebx
421         jz      .L005encrypt_finish
422 .L006encrypt_loop:
423         movl    (%esi),%ecx
424         movl    4(%esi),%edx
425         xorl    %ecx,%eax
426         xorl    %edx,%ebx
427         movl    %eax,8(%esp)
428         movl    %ebx,12(%esp)
429         call    .L_RC5_32_encrypt_begin
430         movl    8(%esp),%eax
431         movl    12(%esp),%ebx
432         movl    %eax,(%edi)
433         movl    %ebx,4(%edi)
434         addl    $8,%esi
435         addl    $8,%edi
436         subl    $8,%ebp
437         jnz     .L006encrypt_loop
438 .L005encrypt_finish:
439         movl    52(%esp),%ebp
440         andl    $7,%ebp
441         jz      .L007finish
442         call    .L008PIC_point
443 .L008PIC_point:
444         popl    %edx
445         leal    .L009cbc_enc_jmp_table-.L008PIC_point(%edx),%ecx
446         movl    (%ecx,%ebp,4),%ebp
447         addl    %edx,%ebp
448         xorl    %ecx,%ecx
449         xorl    %edx,%edx
450         jmp     *%ebp
451 .L010ej7:
452         movb    6(%esi),%dh
453         shll    $8,%edx
454 .L011ej6:
455         movb    5(%esi),%dh
456 .L012ej5:
457         movb    4(%esi),%dl
458 .L013ej4:
459         movl    (%esi),%ecx
460         jmp     .L014ejend
461 .L015ej3:
462         movb    2(%esi),%ch
463         shll    $8,%ecx
464 .L016ej2:
465         movb    1(%esi),%ch
466 .L017ej1:
467         movb    (%esi),%cl
468 .L014ejend:
469         xorl    %ecx,%eax
470         xorl    %edx,%ebx
471         movl    %eax,8(%esp)
472         movl    %ebx,12(%esp)
473         call    .L_RC5_32_encrypt_begin
474         movl    8(%esp),%eax
475         movl    12(%esp),%ebx
476         movl    %eax,(%edi)
477         movl    %ebx,4(%edi)
478         jmp     .L007finish
479 .L004decrypt:
480         andl    $4294967288,%ebp
481         movl    16(%esp),%eax
482         movl    20(%esp),%ebx
483         jz      .L018decrypt_finish
484 .L019decrypt_loop:
485         movl    (%esi),%eax
486         movl    4(%esi),%ebx
487         movl    %eax,8(%esp)
488         movl    %ebx,12(%esp)
489         call    .L_RC5_32_decrypt_begin
490         movl    8(%esp),%eax
491         movl    12(%esp),%ebx
492         movl    16(%esp),%ecx
493         movl    20(%esp),%edx
494         xorl    %eax,%ecx
495         xorl    %ebx,%edx
496         movl    (%esi),%eax
497         movl    4(%esi),%ebx
498         movl    %ecx,(%edi)
499         movl    %edx,4(%edi)
500         movl    %eax,16(%esp)
501         movl    %ebx,20(%esp)
502         addl    $8,%esi
503         addl    $8,%edi
504         subl    $8,%ebp
505         jnz     .L019decrypt_loop
506 .L018decrypt_finish:
507         movl    52(%esp),%ebp
508         andl    $7,%ebp
509         jz      .L007finish
510         movl    (%esi),%eax
511         movl    4(%esi),%ebx
512         movl    %eax,8(%esp)
513         movl    %ebx,12(%esp)
514         call    .L_RC5_32_decrypt_begin
515         movl    8(%esp),%eax
516         movl    12(%esp),%ebx
517         movl    16(%esp),%ecx
518         movl    20(%esp),%edx
519         xorl    %eax,%ecx
520         xorl    %ebx,%edx
521         movl    (%esi),%eax
522         movl    4(%esi),%ebx
523 .L020dj7:
524         rorl    $16,%edx
525         movb    %dl,6(%edi)
526         shrl    $16,%edx
527 .L021dj6:
528         movb    %dh,5(%edi)
529 .L022dj5:
530         movb    %dl,4(%edi)
531 .L023dj4:
532         movl    %ecx,(%edi)
533         jmp     .L024djend
534 .L025dj3:
535         rorl    $16,%ecx
536         movb    %cl,2(%edi)
537         shll    $16,%ecx
538 .L026dj2:
539         movb    %ch,1(%esi)
540 .L027dj1:
541         movb    %cl,(%esi)
542 .L024djend:
543         jmp     .L007finish
544 .L007finish:
545         movl    60(%esp),%ecx
546         addl    $24,%esp
547         movl    %eax,(%ecx)
548         movl    %ebx,4(%ecx)
549         popl    %edi
550         popl    %esi
551         popl    %ebx
552         popl    %ebp
553         ret
554 .align  64
555 .L009cbc_enc_jmp_table:
556 .long   0
557 .long   .L017ej1-.L008PIC_point
558 .long   .L016ej2-.L008PIC_point
559 .long   .L015ej3-.L008PIC_point
560 .long   .L013ej4-.L008PIC_point
561 .long   .L012ej5-.L008PIC_point
562 .long   .L011ej6-.L008PIC_point
563 .long   .L010ej7-.L008PIC_point
564 .align  64
565 .size   RC5_32_cbc_encrypt,.-.L_RC5_32_cbc_encrypt_begin