xref: /freebsd/sys/crypto/openssl/i386/rc5-586.S (revision d0b2dbfa0ecf2bbc9709efc5e20baf8e4b44bbbf)
1/* Do not modify. This file is auto-generated from rc5-586.pl. */
2#ifdef PIC
3.text
4.globl	RC5_32_encrypt
5.type	RC5_32_encrypt,@function
6.align	16
7RC5_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
198RC5_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
391RC5_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
566#else
567.text
568.globl	RC5_32_encrypt
569.type	RC5_32_encrypt,@function
570.align	16
571RC5_32_encrypt:
572.L_RC5_32_encrypt_begin:
573
574	pushl	%ebp
575	pushl	%esi
576	pushl	%edi
577	movl	16(%esp),%edx
578	movl	20(%esp),%ebp
579
580	movl	(%edx),%edi
581	movl	4(%edx),%esi
582	pushl	%ebx
583	movl	(%ebp),%ebx
584	addl	4(%ebp),%edi
585	addl	8(%ebp),%esi
586	xorl	%esi,%edi
587	movl	12(%ebp),%eax
588	movl	%esi,%ecx
589	roll	%cl,%edi
590	addl	%eax,%edi
591	xorl	%edi,%esi
592	movl	16(%ebp),%eax
593	movl	%edi,%ecx
594	roll	%cl,%esi
595	addl	%eax,%esi
596	xorl	%esi,%edi
597	movl	20(%ebp),%eax
598	movl	%esi,%ecx
599	roll	%cl,%edi
600	addl	%eax,%edi
601	xorl	%edi,%esi
602	movl	24(%ebp),%eax
603	movl	%edi,%ecx
604	roll	%cl,%esi
605	addl	%eax,%esi
606	xorl	%esi,%edi
607	movl	28(%ebp),%eax
608	movl	%esi,%ecx
609	roll	%cl,%edi
610	addl	%eax,%edi
611	xorl	%edi,%esi
612	movl	32(%ebp),%eax
613	movl	%edi,%ecx
614	roll	%cl,%esi
615	addl	%eax,%esi
616	xorl	%esi,%edi
617	movl	36(%ebp),%eax
618	movl	%esi,%ecx
619	roll	%cl,%edi
620	addl	%eax,%edi
621	xorl	%edi,%esi
622	movl	40(%ebp),%eax
623	movl	%edi,%ecx
624	roll	%cl,%esi
625	addl	%eax,%esi
626	xorl	%esi,%edi
627	movl	44(%ebp),%eax
628	movl	%esi,%ecx
629	roll	%cl,%edi
630	addl	%eax,%edi
631	xorl	%edi,%esi
632	movl	48(%ebp),%eax
633	movl	%edi,%ecx
634	roll	%cl,%esi
635	addl	%eax,%esi
636	xorl	%esi,%edi
637	movl	52(%ebp),%eax
638	movl	%esi,%ecx
639	roll	%cl,%edi
640	addl	%eax,%edi
641	xorl	%edi,%esi
642	movl	56(%ebp),%eax
643	movl	%edi,%ecx
644	roll	%cl,%esi
645	addl	%eax,%esi
646	xorl	%esi,%edi
647	movl	60(%ebp),%eax
648	movl	%esi,%ecx
649	roll	%cl,%edi
650	addl	%eax,%edi
651	xorl	%edi,%esi
652	movl	64(%ebp),%eax
653	movl	%edi,%ecx
654	roll	%cl,%esi
655	addl	%eax,%esi
656	xorl	%esi,%edi
657	movl	68(%ebp),%eax
658	movl	%esi,%ecx
659	roll	%cl,%edi
660	addl	%eax,%edi
661	xorl	%edi,%esi
662	movl	72(%ebp),%eax
663	movl	%edi,%ecx
664	roll	%cl,%esi
665	addl	%eax,%esi
666	cmpl	$8,%ebx
667	je	.L000rc5_exit
668	xorl	%esi,%edi
669	movl	76(%ebp),%eax
670	movl	%esi,%ecx
671	roll	%cl,%edi
672	addl	%eax,%edi
673	xorl	%edi,%esi
674	movl	80(%ebp),%eax
675	movl	%edi,%ecx
676	roll	%cl,%esi
677	addl	%eax,%esi
678	xorl	%esi,%edi
679	movl	84(%ebp),%eax
680	movl	%esi,%ecx
681	roll	%cl,%edi
682	addl	%eax,%edi
683	xorl	%edi,%esi
684	movl	88(%ebp),%eax
685	movl	%edi,%ecx
686	roll	%cl,%esi
687	addl	%eax,%esi
688	xorl	%esi,%edi
689	movl	92(%ebp),%eax
690	movl	%esi,%ecx
691	roll	%cl,%edi
692	addl	%eax,%edi
693	xorl	%edi,%esi
694	movl	96(%ebp),%eax
695	movl	%edi,%ecx
696	roll	%cl,%esi
697	addl	%eax,%esi
698	xorl	%esi,%edi
699	movl	100(%ebp),%eax
700	movl	%esi,%ecx
701	roll	%cl,%edi
702	addl	%eax,%edi
703	xorl	%edi,%esi
704	movl	104(%ebp),%eax
705	movl	%edi,%ecx
706	roll	%cl,%esi
707	addl	%eax,%esi
708	cmpl	$12,%ebx
709	je	.L000rc5_exit
710	xorl	%esi,%edi
711	movl	108(%ebp),%eax
712	movl	%esi,%ecx
713	roll	%cl,%edi
714	addl	%eax,%edi
715	xorl	%edi,%esi
716	movl	112(%ebp),%eax
717	movl	%edi,%ecx
718	roll	%cl,%esi
719	addl	%eax,%esi
720	xorl	%esi,%edi
721	movl	116(%ebp),%eax
722	movl	%esi,%ecx
723	roll	%cl,%edi
724	addl	%eax,%edi
725	xorl	%edi,%esi
726	movl	120(%ebp),%eax
727	movl	%edi,%ecx
728	roll	%cl,%esi
729	addl	%eax,%esi
730	xorl	%esi,%edi
731	movl	124(%ebp),%eax
732	movl	%esi,%ecx
733	roll	%cl,%edi
734	addl	%eax,%edi
735	xorl	%edi,%esi
736	movl	128(%ebp),%eax
737	movl	%edi,%ecx
738	roll	%cl,%esi
739	addl	%eax,%esi
740	xorl	%esi,%edi
741	movl	132(%ebp),%eax
742	movl	%esi,%ecx
743	roll	%cl,%edi
744	addl	%eax,%edi
745	xorl	%edi,%esi
746	movl	136(%ebp),%eax
747	movl	%edi,%ecx
748	roll	%cl,%esi
749	addl	%eax,%esi
750.L000rc5_exit:
751	movl	%edi,(%edx)
752	movl	%esi,4(%edx)
753	popl	%ebx
754	popl	%edi
755	popl	%esi
756	popl	%ebp
757	ret
758.size	RC5_32_encrypt,.-.L_RC5_32_encrypt_begin
759.globl	RC5_32_decrypt
760.type	RC5_32_decrypt,@function
761.align	16
762RC5_32_decrypt:
763.L_RC5_32_decrypt_begin:
764
765	pushl	%ebp
766	pushl	%esi
767	pushl	%edi
768	movl	16(%esp),%edx
769	movl	20(%esp),%ebp
770
771	movl	(%edx),%edi
772	movl	4(%edx),%esi
773	pushl	%ebx
774	movl	(%ebp),%ebx
775	cmpl	$12,%ebx
776	je	.L001rc5_dec_12
777	cmpl	$8,%ebx
778	je	.L002rc5_dec_8
779	movl	136(%ebp),%eax
780	subl	%eax,%esi
781	movl	%edi,%ecx
782	rorl	%cl,%esi
783	xorl	%edi,%esi
784	movl	132(%ebp),%eax
785	subl	%eax,%edi
786	movl	%esi,%ecx
787	rorl	%cl,%edi
788	xorl	%esi,%edi
789	movl	128(%ebp),%eax
790	subl	%eax,%esi
791	movl	%edi,%ecx
792	rorl	%cl,%esi
793	xorl	%edi,%esi
794	movl	124(%ebp),%eax
795	subl	%eax,%edi
796	movl	%esi,%ecx
797	rorl	%cl,%edi
798	xorl	%esi,%edi
799	movl	120(%ebp),%eax
800	subl	%eax,%esi
801	movl	%edi,%ecx
802	rorl	%cl,%esi
803	xorl	%edi,%esi
804	movl	116(%ebp),%eax
805	subl	%eax,%edi
806	movl	%esi,%ecx
807	rorl	%cl,%edi
808	xorl	%esi,%edi
809	movl	112(%ebp),%eax
810	subl	%eax,%esi
811	movl	%edi,%ecx
812	rorl	%cl,%esi
813	xorl	%edi,%esi
814	movl	108(%ebp),%eax
815	subl	%eax,%edi
816	movl	%esi,%ecx
817	rorl	%cl,%edi
818	xorl	%esi,%edi
819.L001rc5_dec_12:
820	movl	104(%ebp),%eax
821	subl	%eax,%esi
822	movl	%edi,%ecx
823	rorl	%cl,%esi
824	xorl	%edi,%esi
825	movl	100(%ebp),%eax
826	subl	%eax,%edi
827	movl	%esi,%ecx
828	rorl	%cl,%edi
829	xorl	%esi,%edi
830	movl	96(%ebp),%eax
831	subl	%eax,%esi
832	movl	%edi,%ecx
833	rorl	%cl,%esi
834	xorl	%edi,%esi
835	movl	92(%ebp),%eax
836	subl	%eax,%edi
837	movl	%esi,%ecx
838	rorl	%cl,%edi
839	xorl	%esi,%edi
840	movl	88(%ebp),%eax
841	subl	%eax,%esi
842	movl	%edi,%ecx
843	rorl	%cl,%esi
844	xorl	%edi,%esi
845	movl	84(%ebp),%eax
846	subl	%eax,%edi
847	movl	%esi,%ecx
848	rorl	%cl,%edi
849	xorl	%esi,%edi
850	movl	80(%ebp),%eax
851	subl	%eax,%esi
852	movl	%edi,%ecx
853	rorl	%cl,%esi
854	xorl	%edi,%esi
855	movl	76(%ebp),%eax
856	subl	%eax,%edi
857	movl	%esi,%ecx
858	rorl	%cl,%edi
859	xorl	%esi,%edi
860.L002rc5_dec_8:
861	movl	72(%ebp),%eax
862	subl	%eax,%esi
863	movl	%edi,%ecx
864	rorl	%cl,%esi
865	xorl	%edi,%esi
866	movl	68(%ebp),%eax
867	subl	%eax,%edi
868	movl	%esi,%ecx
869	rorl	%cl,%edi
870	xorl	%esi,%edi
871	movl	64(%ebp),%eax
872	subl	%eax,%esi
873	movl	%edi,%ecx
874	rorl	%cl,%esi
875	xorl	%edi,%esi
876	movl	60(%ebp),%eax
877	subl	%eax,%edi
878	movl	%esi,%ecx
879	rorl	%cl,%edi
880	xorl	%esi,%edi
881	movl	56(%ebp),%eax
882	subl	%eax,%esi
883	movl	%edi,%ecx
884	rorl	%cl,%esi
885	xorl	%edi,%esi
886	movl	52(%ebp),%eax
887	subl	%eax,%edi
888	movl	%esi,%ecx
889	rorl	%cl,%edi
890	xorl	%esi,%edi
891	movl	48(%ebp),%eax
892	subl	%eax,%esi
893	movl	%edi,%ecx
894	rorl	%cl,%esi
895	xorl	%edi,%esi
896	movl	44(%ebp),%eax
897	subl	%eax,%edi
898	movl	%esi,%ecx
899	rorl	%cl,%edi
900	xorl	%esi,%edi
901	movl	40(%ebp),%eax
902	subl	%eax,%esi
903	movl	%edi,%ecx
904	rorl	%cl,%esi
905	xorl	%edi,%esi
906	movl	36(%ebp),%eax
907	subl	%eax,%edi
908	movl	%esi,%ecx
909	rorl	%cl,%edi
910	xorl	%esi,%edi
911	movl	32(%ebp),%eax
912	subl	%eax,%esi
913	movl	%edi,%ecx
914	rorl	%cl,%esi
915	xorl	%edi,%esi
916	movl	28(%ebp),%eax
917	subl	%eax,%edi
918	movl	%esi,%ecx
919	rorl	%cl,%edi
920	xorl	%esi,%edi
921	movl	24(%ebp),%eax
922	subl	%eax,%esi
923	movl	%edi,%ecx
924	rorl	%cl,%esi
925	xorl	%edi,%esi
926	movl	20(%ebp),%eax
927	subl	%eax,%edi
928	movl	%esi,%ecx
929	rorl	%cl,%edi
930	xorl	%esi,%edi
931	movl	16(%ebp),%eax
932	subl	%eax,%esi
933	movl	%edi,%ecx
934	rorl	%cl,%esi
935	xorl	%edi,%esi
936	movl	12(%ebp),%eax
937	subl	%eax,%edi
938	movl	%esi,%ecx
939	rorl	%cl,%edi
940	xorl	%esi,%edi
941	subl	8(%ebp),%esi
942	subl	4(%ebp),%edi
943.L003rc5_exit:
944	movl	%edi,(%edx)
945	movl	%esi,4(%edx)
946	popl	%ebx
947	popl	%edi
948	popl	%esi
949	popl	%ebp
950	ret
951.size	RC5_32_decrypt,.-.L_RC5_32_decrypt_begin
952.globl	RC5_32_cbc_encrypt
953.type	RC5_32_cbc_encrypt,@function
954.align	16
955RC5_32_cbc_encrypt:
956.L_RC5_32_cbc_encrypt_begin:
957
958	pushl	%ebp
959	pushl	%ebx
960	pushl	%esi
961	pushl	%edi
962	movl	28(%esp),%ebp
963
964	movl	36(%esp),%ebx
965	movl	(%ebx),%esi
966	movl	4(%ebx),%edi
967	pushl	%edi
968	pushl	%esi
969	pushl	%edi
970	pushl	%esi
971	movl	%esp,%ebx
972	movl	36(%esp),%esi
973	movl	40(%esp),%edi
974
975	movl	56(%esp),%ecx
976
977	movl	48(%esp),%eax
978	pushl	%eax
979	pushl	%ebx
980	cmpl	$0,%ecx
981	jz	.L004decrypt
982	andl	$4294967288,%ebp
983	movl	8(%esp),%eax
984	movl	12(%esp),%ebx
985	jz	.L005encrypt_finish
986.L006encrypt_loop:
987	movl	(%esi),%ecx
988	movl	4(%esi),%edx
989	xorl	%ecx,%eax
990	xorl	%edx,%ebx
991	movl	%eax,8(%esp)
992	movl	%ebx,12(%esp)
993	call	.L_RC5_32_encrypt_begin
994	movl	8(%esp),%eax
995	movl	12(%esp),%ebx
996	movl	%eax,(%edi)
997	movl	%ebx,4(%edi)
998	addl	$8,%esi
999	addl	$8,%edi
1000	subl	$8,%ebp
1001	jnz	.L006encrypt_loop
1002.L005encrypt_finish:
1003	movl	52(%esp),%ebp
1004	andl	$7,%ebp
1005	jz	.L007finish
1006	call	.L008PIC_point
1007.L008PIC_point:
1008	popl	%edx
1009	leal	.L009cbc_enc_jmp_table-.L008PIC_point(%edx),%ecx
1010	movl	(%ecx,%ebp,4),%ebp
1011	addl	%edx,%ebp
1012	xorl	%ecx,%ecx
1013	xorl	%edx,%edx
1014	jmp	*%ebp
1015.L010ej7:
1016	movb	6(%esi),%dh
1017	shll	$8,%edx
1018.L011ej6:
1019	movb	5(%esi),%dh
1020.L012ej5:
1021	movb	4(%esi),%dl
1022.L013ej4:
1023	movl	(%esi),%ecx
1024	jmp	.L014ejend
1025.L015ej3:
1026	movb	2(%esi),%ch
1027	shll	$8,%ecx
1028.L016ej2:
1029	movb	1(%esi),%ch
1030.L017ej1:
1031	movb	(%esi),%cl
1032.L014ejend:
1033	xorl	%ecx,%eax
1034	xorl	%edx,%ebx
1035	movl	%eax,8(%esp)
1036	movl	%ebx,12(%esp)
1037	call	.L_RC5_32_encrypt_begin
1038	movl	8(%esp),%eax
1039	movl	12(%esp),%ebx
1040	movl	%eax,(%edi)
1041	movl	%ebx,4(%edi)
1042	jmp	.L007finish
1043.L004decrypt:
1044	andl	$4294967288,%ebp
1045	movl	16(%esp),%eax
1046	movl	20(%esp),%ebx
1047	jz	.L018decrypt_finish
1048.L019decrypt_loop:
1049	movl	(%esi),%eax
1050	movl	4(%esi),%ebx
1051	movl	%eax,8(%esp)
1052	movl	%ebx,12(%esp)
1053	call	.L_RC5_32_decrypt_begin
1054	movl	8(%esp),%eax
1055	movl	12(%esp),%ebx
1056	movl	16(%esp),%ecx
1057	movl	20(%esp),%edx
1058	xorl	%eax,%ecx
1059	xorl	%ebx,%edx
1060	movl	(%esi),%eax
1061	movl	4(%esi),%ebx
1062	movl	%ecx,(%edi)
1063	movl	%edx,4(%edi)
1064	movl	%eax,16(%esp)
1065	movl	%ebx,20(%esp)
1066	addl	$8,%esi
1067	addl	$8,%edi
1068	subl	$8,%ebp
1069	jnz	.L019decrypt_loop
1070.L018decrypt_finish:
1071	movl	52(%esp),%ebp
1072	andl	$7,%ebp
1073	jz	.L007finish
1074	movl	(%esi),%eax
1075	movl	4(%esi),%ebx
1076	movl	%eax,8(%esp)
1077	movl	%ebx,12(%esp)
1078	call	.L_RC5_32_decrypt_begin
1079	movl	8(%esp),%eax
1080	movl	12(%esp),%ebx
1081	movl	16(%esp),%ecx
1082	movl	20(%esp),%edx
1083	xorl	%eax,%ecx
1084	xorl	%ebx,%edx
1085	movl	(%esi),%eax
1086	movl	4(%esi),%ebx
1087.L020dj7:
1088	rorl	$16,%edx
1089	movb	%dl,6(%edi)
1090	shrl	$16,%edx
1091.L021dj6:
1092	movb	%dh,5(%edi)
1093.L022dj5:
1094	movb	%dl,4(%edi)
1095.L023dj4:
1096	movl	%ecx,(%edi)
1097	jmp	.L024djend
1098.L025dj3:
1099	rorl	$16,%ecx
1100	movb	%cl,2(%edi)
1101	shll	$16,%ecx
1102.L026dj2:
1103	movb	%ch,1(%esi)
1104.L027dj1:
1105	movb	%cl,(%esi)
1106.L024djend:
1107	jmp	.L007finish
1108.L007finish:
1109	movl	60(%esp),%ecx
1110	addl	$24,%esp
1111	movl	%eax,(%ecx)
1112	movl	%ebx,4(%ecx)
1113	popl	%edi
1114	popl	%esi
1115	popl	%ebx
1116	popl	%ebp
1117	ret
1118.align	64
1119.L009cbc_enc_jmp_table:
1120.long	0
1121.long	.L017ej1-.L008PIC_point
1122.long	.L016ej2-.L008PIC_point
1123.long	.L015ej3-.L008PIC_point
1124.long	.L013ej4-.L008PIC_point
1125.long	.L012ej5-.L008PIC_point
1126.long	.L011ej6-.L008PIC_point
1127.long	.L010ej7-.L008PIC_point
1128.align	64
1129.size	RC5_32_cbc_encrypt,.-.L_RC5_32_cbc_encrypt_begin
1130#endif
1131