xref: /freebsd/sys/crypto/openssl/i386/rc5-586.S (revision 69d94f4c7608e41505996559367450706e91fbb8)
1/* $FreeBSD$ */
2/* Do not modify. This file is auto-generated from rc5-586.pl. */
3#ifdef PIC
4.text
5.globl	RC5_32_encrypt
6.type	RC5_32_encrypt,@function
7.align	16
8RC5_32_encrypt:
9.L_RC5_32_encrypt_begin:
10
11	pushl	%ebp
12	pushl	%esi
13	pushl	%edi
14	movl	16(%esp),%edx
15	movl	20(%esp),%ebp
16
17	movl	(%edx),%edi
18	movl	4(%edx),%esi
19	pushl	%ebx
20	movl	(%ebp),%ebx
21	addl	4(%ebp),%edi
22	addl	8(%ebp),%esi
23	xorl	%esi,%edi
24	movl	12(%ebp),%eax
25	movl	%esi,%ecx
26	roll	%cl,%edi
27	addl	%eax,%edi
28	xorl	%edi,%esi
29	movl	16(%ebp),%eax
30	movl	%edi,%ecx
31	roll	%cl,%esi
32	addl	%eax,%esi
33	xorl	%esi,%edi
34	movl	20(%ebp),%eax
35	movl	%esi,%ecx
36	roll	%cl,%edi
37	addl	%eax,%edi
38	xorl	%edi,%esi
39	movl	24(%ebp),%eax
40	movl	%edi,%ecx
41	roll	%cl,%esi
42	addl	%eax,%esi
43	xorl	%esi,%edi
44	movl	28(%ebp),%eax
45	movl	%esi,%ecx
46	roll	%cl,%edi
47	addl	%eax,%edi
48	xorl	%edi,%esi
49	movl	32(%ebp),%eax
50	movl	%edi,%ecx
51	roll	%cl,%esi
52	addl	%eax,%esi
53	xorl	%esi,%edi
54	movl	36(%ebp),%eax
55	movl	%esi,%ecx
56	roll	%cl,%edi
57	addl	%eax,%edi
58	xorl	%edi,%esi
59	movl	40(%ebp),%eax
60	movl	%edi,%ecx
61	roll	%cl,%esi
62	addl	%eax,%esi
63	xorl	%esi,%edi
64	movl	44(%ebp),%eax
65	movl	%esi,%ecx
66	roll	%cl,%edi
67	addl	%eax,%edi
68	xorl	%edi,%esi
69	movl	48(%ebp),%eax
70	movl	%edi,%ecx
71	roll	%cl,%esi
72	addl	%eax,%esi
73	xorl	%esi,%edi
74	movl	52(%ebp),%eax
75	movl	%esi,%ecx
76	roll	%cl,%edi
77	addl	%eax,%edi
78	xorl	%edi,%esi
79	movl	56(%ebp),%eax
80	movl	%edi,%ecx
81	roll	%cl,%esi
82	addl	%eax,%esi
83	xorl	%esi,%edi
84	movl	60(%ebp),%eax
85	movl	%esi,%ecx
86	roll	%cl,%edi
87	addl	%eax,%edi
88	xorl	%edi,%esi
89	movl	64(%ebp),%eax
90	movl	%edi,%ecx
91	roll	%cl,%esi
92	addl	%eax,%esi
93	xorl	%esi,%edi
94	movl	68(%ebp),%eax
95	movl	%esi,%ecx
96	roll	%cl,%edi
97	addl	%eax,%edi
98	xorl	%edi,%esi
99	movl	72(%ebp),%eax
100	movl	%edi,%ecx
101	roll	%cl,%esi
102	addl	%eax,%esi
103	cmpl	$8,%ebx
104	je	.L000rc5_exit
105	xorl	%esi,%edi
106	movl	76(%ebp),%eax
107	movl	%esi,%ecx
108	roll	%cl,%edi
109	addl	%eax,%edi
110	xorl	%edi,%esi
111	movl	80(%ebp),%eax
112	movl	%edi,%ecx
113	roll	%cl,%esi
114	addl	%eax,%esi
115	xorl	%esi,%edi
116	movl	84(%ebp),%eax
117	movl	%esi,%ecx
118	roll	%cl,%edi
119	addl	%eax,%edi
120	xorl	%edi,%esi
121	movl	88(%ebp),%eax
122	movl	%edi,%ecx
123	roll	%cl,%esi
124	addl	%eax,%esi
125	xorl	%esi,%edi
126	movl	92(%ebp),%eax
127	movl	%esi,%ecx
128	roll	%cl,%edi
129	addl	%eax,%edi
130	xorl	%edi,%esi
131	movl	96(%ebp),%eax
132	movl	%edi,%ecx
133	roll	%cl,%esi
134	addl	%eax,%esi
135	xorl	%esi,%edi
136	movl	100(%ebp),%eax
137	movl	%esi,%ecx
138	roll	%cl,%edi
139	addl	%eax,%edi
140	xorl	%edi,%esi
141	movl	104(%ebp),%eax
142	movl	%edi,%ecx
143	roll	%cl,%esi
144	addl	%eax,%esi
145	cmpl	$12,%ebx
146	je	.L000rc5_exit
147	xorl	%esi,%edi
148	movl	108(%ebp),%eax
149	movl	%esi,%ecx
150	roll	%cl,%edi
151	addl	%eax,%edi
152	xorl	%edi,%esi
153	movl	112(%ebp),%eax
154	movl	%edi,%ecx
155	roll	%cl,%esi
156	addl	%eax,%esi
157	xorl	%esi,%edi
158	movl	116(%ebp),%eax
159	movl	%esi,%ecx
160	roll	%cl,%edi
161	addl	%eax,%edi
162	xorl	%edi,%esi
163	movl	120(%ebp),%eax
164	movl	%edi,%ecx
165	roll	%cl,%esi
166	addl	%eax,%esi
167	xorl	%esi,%edi
168	movl	124(%ebp),%eax
169	movl	%esi,%ecx
170	roll	%cl,%edi
171	addl	%eax,%edi
172	xorl	%edi,%esi
173	movl	128(%ebp),%eax
174	movl	%edi,%ecx
175	roll	%cl,%esi
176	addl	%eax,%esi
177	xorl	%esi,%edi
178	movl	132(%ebp),%eax
179	movl	%esi,%ecx
180	roll	%cl,%edi
181	addl	%eax,%edi
182	xorl	%edi,%esi
183	movl	136(%ebp),%eax
184	movl	%edi,%ecx
185	roll	%cl,%esi
186	addl	%eax,%esi
187.L000rc5_exit:
188	movl	%edi,(%edx)
189	movl	%esi,4(%edx)
190	popl	%ebx
191	popl	%edi
192	popl	%esi
193	popl	%ebp
194	ret
195.size	RC5_32_encrypt,.-.L_RC5_32_encrypt_begin
196.globl	RC5_32_decrypt
197.type	RC5_32_decrypt,@function
198.align	16
199RC5_32_decrypt:
200.L_RC5_32_decrypt_begin:
201
202	pushl	%ebp
203	pushl	%esi
204	pushl	%edi
205	movl	16(%esp),%edx
206	movl	20(%esp),%ebp
207
208	movl	(%edx),%edi
209	movl	4(%edx),%esi
210	pushl	%ebx
211	movl	(%ebp),%ebx
212	cmpl	$12,%ebx
213	je	.L001rc5_dec_12
214	cmpl	$8,%ebx
215	je	.L002rc5_dec_8
216	movl	136(%ebp),%eax
217	subl	%eax,%esi
218	movl	%edi,%ecx
219	rorl	%cl,%esi
220	xorl	%edi,%esi
221	movl	132(%ebp),%eax
222	subl	%eax,%edi
223	movl	%esi,%ecx
224	rorl	%cl,%edi
225	xorl	%esi,%edi
226	movl	128(%ebp),%eax
227	subl	%eax,%esi
228	movl	%edi,%ecx
229	rorl	%cl,%esi
230	xorl	%edi,%esi
231	movl	124(%ebp),%eax
232	subl	%eax,%edi
233	movl	%esi,%ecx
234	rorl	%cl,%edi
235	xorl	%esi,%edi
236	movl	120(%ebp),%eax
237	subl	%eax,%esi
238	movl	%edi,%ecx
239	rorl	%cl,%esi
240	xorl	%edi,%esi
241	movl	116(%ebp),%eax
242	subl	%eax,%edi
243	movl	%esi,%ecx
244	rorl	%cl,%edi
245	xorl	%esi,%edi
246	movl	112(%ebp),%eax
247	subl	%eax,%esi
248	movl	%edi,%ecx
249	rorl	%cl,%esi
250	xorl	%edi,%esi
251	movl	108(%ebp),%eax
252	subl	%eax,%edi
253	movl	%esi,%ecx
254	rorl	%cl,%edi
255	xorl	%esi,%edi
256.L001rc5_dec_12:
257	movl	104(%ebp),%eax
258	subl	%eax,%esi
259	movl	%edi,%ecx
260	rorl	%cl,%esi
261	xorl	%edi,%esi
262	movl	100(%ebp),%eax
263	subl	%eax,%edi
264	movl	%esi,%ecx
265	rorl	%cl,%edi
266	xorl	%esi,%edi
267	movl	96(%ebp),%eax
268	subl	%eax,%esi
269	movl	%edi,%ecx
270	rorl	%cl,%esi
271	xorl	%edi,%esi
272	movl	92(%ebp),%eax
273	subl	%eax,%edi
274	movl	%esi,%ecx
275	rorl	%cl,%edi
276	xorl	%esi,%edi
277	movl	88(%ebp),%eax
278	subl	%eax,%esi
279	movl	%edi,%ecx
280	rorl	%cl,%esi
281	xorl	%edi,%esi
282	movl	84(%ebp),%eax
283	subl	%eax,%edi
284	movl	%esi,%ecx
285	rorl	%cl,%edi
286	xorl	%esi,%edi
287	movl	80(%ebp),%eax
288	subl	%eax,%esi
289	movl	%edi,%ecx
290	rorl	%cl,%esi
291	xorl	%edi,%esi
292	movl	76(%ebp),%eax
293	subl	%eax,%edi
294	movl	%esi,%ecx
295	rorl	%cl,%edi
296	xorl	%esi,%edi
297.L002rc5_dec_8:
298	movl	72(%ebp),%eax
299	subl	%eax,%esi
300	movl	%edi,%ecx
301	rorl	%cl,%esi
302	xorl	%edi,%esi
303	movl	68(%ebp),%eax
304	subl	%eax,%edi
305	movl	%esi,%ecx
306	rorl	%cl,%edi
307	xorl	%esi,%edi
308	movl	64(%ebp),%eax
309	subl	%eax,%esi
310	movl	%edi,%ecx
311	rorl	%cl,%esi
312	xorl	%edi,%esi
313	movl	60(%ebp),%eax
314	subl	%eax,%edi
315	movl	%esi,%ecx
316	rorl	%cl,%edi
317	xorl	%esi,%edi
318	movl	56(%ebp),%eax
319	subl	%eax,%esi
320	movl	%edi,%ecx
321	rorl	%cl,%esi
322	xorl	%edi,%esi
323	movl	52(%ebp),%eax
324	subl	%eax,%edi
325	movl	%esi,%ecx
326	rorl	%cl,%edi
327	xorl	%esi,%edi
328	movl	48(%ebp),%eax
329	subl	%eax,%esi
330	movl	%edi,%ecx
331	rorl	%cl,%esi
332	xorl	%edi,%esi
333	movl	44(%ebp),%eax
334	subl	%eax,%edi
335	movl	%esi,%ecx
336	rorl	%cl,%edi
337	xorl	%esi,%edi
338	movl	40(%ebp),%eax
339	subl	%eax,%esi
340	movl	%edi,%ecx
341	rorl	%cl,%esi
342	xorl	%edi,%esi
343	movl	36(%ebp),%eax
344	subl	%eax,%edi
345	movl	%esi,%ecx
346	rorl	%cl,%edi
347	xorl	%esi,%edi
348	movl	32(%ebp),%eax
349	subl	%eax,%esi
350	movl	%edi,%ecx
351	rorl	%cl,%esi
352	xorl	%edi,%esi
353	movl	28(%ebp),%eax
354	subl	%eax,%edi
355	movl	%esi,%ecx
356	rorl	%cl,%edi
357	xorl	%esi,%edi
358	movl	24(%ebp),%eax
359	subl	%eax,%esi
360	movl	%edi,%ecx
361	rorl	%cl,%esi
362	xorl	%edi,%esi
363	movl	20(%ebp),%eax
364	subl	%eax,%edi
365	movl	%esi,%ecx
366	rorl	%cl,%edi
367	xorl	%esi,%edi
368	movl	16(%ebp),%eax
369	subl	%eax,%esi
370	movl	%edi,%ecx
371	rorl	%cl,%esi
372	xorl	%edi,%esi
373	movl	12(%ebp),%eax
374	subl	%eax,%edi
375	movl	%esi,%ecx
376	rorl	%cl,%edi
377	xorl	%esi,%edi
378	subl	8(%ebp),%esi
379	subl	4(%ebp),%edi
380.L003rc5_exit:
381	movl	%edi,(%edx)
382	movl	%esi,4(%edx)
383	popl	%ebx
384	popl	%edi
385	popl	%esi
386	popl	%ebp
387	ret
388.size	RC5_32_decrypt,.-.L_RC5_32_decrypt_begin
389.globl	RC5_32_cbc_encrypt
390.type	RC5_32_cbc_encrypt,@function
391.align	16
392RC5_32_cbc_encrypt:
393.L_RC5_32_cbc_encrypt_begin:
394
395	pushl	%ebp
396	pushl	%ebx
397	pushl	%esi
398	pushl	%edi
399	movl	28(%esp),%ebp
400
401	movl	36(%esp),%ebx
402	movl	(%ebx),%esi
403	movl	4(%ebx),%edi
404	pushl	%edi
405	pushl	%esi
406	pushl	%edi
407	pushl	%esi
408	movl	%esp,%ebx
409	movl	36(%esp),%esi
410	movl	40(%esp),%edi
411
412	movl	56(%esp),%ecx
413
414	movl	48(%esp),%eax
415	pushl	%eax
416	pushl	%ebx
417	cmpl	$0,%ecx
418	jz	.L004decrypt
419	andl	$4294967288,%ebp
420	movl	8(%esp),%eax
421	movl	12(%esp),%ebx
422	jz	.L005encrypt_finish
423.L006encrypt_loop:
424	movl	(%esi),%ecx
425	movl	4(%esi),%edx
426	xorl	%ecx,%eax
427	xorl	%edx,%ebx
428	movl	%eax,8(%esp)
429	movl	%ebx,12(%esp)
430	call	.L_RC5_32_encrypt_begin
431	movl	8(%esp),%eax
432	movl	12(%esp),%ebx
433	movl	%eax,(%edi)
434	movl	%ebx,4(%edi)
435	addl	$8,%esi
436	addl	$8,%edi
437	subl	$8,%ebp
438	jnz	.L006encrypt_loop
439.L005encrypt_finish:
440	movl	52(%esp),%ebp
441	andl	$7,%ebp
442	jz	.L007finish
443	call	.L008PIC_point
444.L008PIC_point:
445	popl	%edx
446	leal	.L009cbc_enc_jmp_table-.L008PIC_point(%edx),%ecx
447	movl	(%ecx,%ebp,4),%ebp
448	addl	%edx,%ebp
449	xorl	%ecx,%ecx
450	xorl	%edx,%edx
451	jmp	*%ebp
452.L010ej7:
453	movb	6(%esi),%dh
454	shll	$8,%edx
455.L011ej6:
456	movb	5(%esi),%dh
457.L012ej5:
458	movb	4(%esi),%dl
459.L013ej4:
460	movl	(%esi),%ecx
461	jmp	.L014ejend
462.L015ej3:
463	movb	2(%esi),%ch
464	shll	$8,%ecx
465.L016ej2:
466	movb	1(%esi),%ch
467.L017ej1:
468	movb	(%esi),%cl
469.L014ejend:
470	xorl	%ecx,%eax
471	xorl	%edx,%ebx
472	movl	%eax,8(%esp)
473	movl	%ebx,12(%esp)
474	call	.L_RC5_32_encrypt_begin
475	movl	8(%esp),%eax
476	movl	12(%esp),%ebx
477	movl	%eax,(%edi)
478	movl	%ebx,4(%edi)
479	jmp	.L007finish
480.L004decrypt:
481	andl	$4294967288,%ebp
482	movl	16(%esp),%eax
483	movl	20(%esp),%ebx
484	jz	.L018decrypt_finish
485.L019decrypt_loop:
486	movl	(%esi),%eax
487	movl	4(%esi),%ebx
488	movl	%eax,8(%esp)
489	movl	%ebx,12(%esp)
490	call	.L_RC5_32_decrypt_begin
491	movl	8(%esp),%eax
492	movl	12(%esp),%ebx
493	movl	16(%esp),%ecx
494	movl	20(%esp),%edx
495	xorl	%eax,%ecx
496	xorl	%ebx,%edx
497	movl	(%esi),%eax
498	movl	4(%esi),%ebx
499	movl	%ecx,(%edi)
500	movl	%edx,4(%edi)
501	movl	%eax,16(%esp)
502	movl	%ebx,20(%esp)
503	addl	$8,%esi
504	addl	$8,%edi
505	subl	$8,%ebp
506	jnz	.L019decrypt_loop
507.L018decrypt_finish:
508	movl	52(%esp),%ebp
509	andl	$7,%ebp
510	jz	.L007finish
511	movl	(%esi),%eax
512	movl	4(%esi),%ebx
513	movl	%eax,8(%esp)
514	movl	%ebx,12(%esp)
515	call	.L_RC5_32_decrypt_begin
516	movl	8(%esp),%eax
517	movl	12(%esp),%ebx
518	movl	16(%esp),%ecx
519	movl	20(%esp),%edx
520	xorl	%eax,%ecx
521	xorl	%ebx,%edx
522	movl	(%esi),%eax
523	movl	4(%esi),%ebx
524.L020dj7:
525	rorl	$16,%edx
526	movb	%dl,6(%edi)
527	shrl	$16,%edx
528.L021dj6:
529	movb	%dh,5(%edi)
530.L022dj5:
531	movb	%dl,4(%edi)
532.L023dj4:
533	movl	%ecx,(%edi)
534	jmp	.L024djend
535.L025dj3:
536	rorl	$16,%ecx
537	movb	%cl,2(%edi)
538	shll	$16,%ecx
539.L026dj2:
540	movb	%ch,1(%esi)
541.L027dj1:
542	movb	%cl,(%esi)
543.L024djend:
544	jmp	.L007finish
545.L007finish:
546	movl	60(%esp),%ecx
547	addl	$24,%esp
548	movl	%eax,(%ecx)
549	movl	%ebx,4(%ecx)
550	popl	%edi
551	popl	%esi
552	popl	%ebx
553	popl	%ebp
554	ret
555.align	64
556.L009cbc_enc_jmp_table:
557.long	0
558.long	.L017ej1-.L008PIC_point
559.long	.L016ej2-.L008PIC_point
560.long	.L015ej3-.L008PIC_point
561.long	.L013ej4-.L008PIC_point
562.long	.L012ej5-.L008PIC_point
563.long	.L011ej6-.L008PIC_point
564.long	.L010ej7-.L008PIC_point
565.align	64
566.size	RC5_32_cbc_encrypt,.-.L_RC5_32_cbc_encrypt_begin
567#else
568.text
569.globl	RC5_32_encrypt
570.type	RC5_32_encrypt,@function
571.align	16
572RC5_32_encrypt:
573.L_RC5_32_encrypt_begin:
574
575	pushl	%ebp
576	pushl	%esi
577	pushl	%edi
578	movl	16(%esp),%edx
579	movl	20(%esp),%ebp
580
581	movl	(%edx),%edi
582	movl	4(%edx),%esi
583	pushl	%ebx
584	movl	(%ebp),%ebx
585	addl	4(%ebp),%edi
586	addl	8(%ebp),%esi
587	xorl	%esi,%edi
588	movl	12(%ebp),%eax
589	movl	%esi,%ecx
590	roll	%cl,%edi
591	addl	%eax,%edi
592	xorl	%edi,%esi
593	movl	16(%ebp),%eax
594	movl	%edi,%ecx
595	roll	%cl,%esi
596	addl	%eax,%esi
597	xorl	%esi,%edi
598	movl	20(%ebp),%eax
599	movl	%esi,%ecx
600	roll	%cl,%edi
601	addl	%eax,%edi
602	xorl	%edi,%esi
603	movl	24(%ebp),%eax
604	movl	%edi,%ecx
605	roll	%cl,%esi
606	addl	%eax,%esi
607	xorl	%esi,%edi
608	movl	28(%ebp),%eax
609	movl	%esi,%ecx
610	roll	%cl,%edi
611	addl	%eax,%edi
612	xorl	%edi,%esi
613	movl	32(%ebp),%eax
614	movl	%edi,%ecx
615	roll	%cl,%esi
616	addl	%eax,%esi
617	xorl	%esi,%edi
618	movl	36(%ebp),%eax
619	movl	%esi,%ecx
620	roll	%cl,%edi
621	addl	%eax,%edi
622	xorl	%edi,%esi
623	movl	40(%ebp),%eax
624	movl	%edi,%ecx
625	roll	%cl,%esi
626	addl	%eax,%esi
627	xorl	%esi,%edi
628	movl	44(%ebp),%eax
629	movl	%esi,%ecx
630	roll	%cl,%edi
631	addl	%eax,%edi
632	xorl	%edi,%esi
633	movl	48(%ebp),%eax
634	movl	%edi,%ecx
635	roll	%cl,%esi
636	addl	%eax,%esi
637	xorl	%esi,%edi
638	movl	52(%ebp),%eax
639	movl	%esi,%ecx
640	roll	%cl,%edi
641	addl	%eax,%edi
642	xorl	%edi,%esi
643	movl	56(%ebp),%eax
644	movl	%edi,%ecx
645	roll	%cl,%esi
646	addl	%eax,%esi
647	xorl	%esi,%edi
648	movl	60(%ebp),%eax
649	movl	%esi,%ecx
650	roll	%cl,%edi
651	addl	%eax,%edi
652	xorl	%edi,%esi
653	movl	64(%ebp),%eax
654	movl	%edi,%ecx
655	roll	%cl,%esi
656	addl	%eax,%esi
657	xorl	%esi,%edi
658	movl	68(%ebp),%eax
659	movl	%esi,%ecx
660	roll	%cl,%edi
661	addl	%eax,%edi
662	xorl	%edi,%esi
663	movl	72(%ebp),%eax
664	movl	%edi,%ecx
665	roll	%cl,%esi
666	addl	%eax,%esi
667	cmpl	$8,%ebx
668	je	.L000rc5_exit
669	xorl	%esi,%edi
670	movl	76(%ebp),%eax
671	movl	%esi,%ecx
672	roll	%cl,%edi
673	addl	%eax,%edi
674	xorl	%edi,%esi
675	movl	80(%ebp),%eax
676	movl	%edi,%ecx
677	roll	%cl,%esi
678	addl	%eax,%esi
679	xorl	%esi,%edi
680	movl	84(%ebp),%eax
681	movl	%esi,%ecx
682	roll	%cl,%edi
683	addl	%eax,%edi
684	xorl	%edi,%esi
685	movl	88(%ebp),%eax
686	movl	%edi,%ecx
687	roll	%cl,%esi
688	addl	%eax,%esi
689	xorl	%esi,%edi
690	movl	92(%ebp),%eax
691	movl	%esi,%ecx
692	roll	%cl,%edi
693	addl	%eax,%edi
694	xorl	%edi,%esi
695	movl	96(%ebp),%eax
696	movl	%edi,%ecx
697	roll	%cl,%esi
698	addl	%eax,%esi
699	xorl	%esi,%edi
700	movl	100(%ebp),%eax
701	movl	%esi,%ecx
702	roll	%cl,%edi
703	addl	%eax,%edi
704	xorl	%edi,%esi
705	movl	104(%ebp),%eax
706	movl	%edi,%ecx
707	roll	%cl,%esi
708	addl	%eax,%esi
709	cmpl	$12,%ebx
710	je	.L000rc5_exit
711	xorl	%esi,%edi
712	movl	108(%ebp),%eax
713	movl	%esi,%ecx
714	roll	%cl,%edi
715	addl	%eax,%edi
716	xorl	%edi,%esi
717	movl	112(%ebp),%eax
718	movl	%edi,%ecx
719	roll	%cl,%esi
720	addl	%eax,%esi
721	xorl	%esi,%edi
722	movl	116(%ebp),%eax
723	movl	%esi,%ecx
724	roll	%cl,%edi
725	addl	%eax,%edi
726	xorl	%edi,%esi
727	movl	120(%ebp),%eax
728	movl	%edi,%ecx
729	roll	%cl,%esi
730	addl	%eax,%esi
731	xorl	%esi,%edi
732	movl	124(%ebp),%eax
733	movl	%esi,%ecx
734	roll	%cl,%edi
735	addl	%eax,%edi
736	xorl	%edi,%esi
737	movl	128(%ebp),%eax
738	movl	%edi,%ecx
739	roll	%cl,%esi
740	addl	%eax,%esi
741	xorl	%esi,%edi
742	movl	132(%ebp),%eax
743	movl	%esi,%ecx
744	roll	%cl,%edi
745	addl	%eax,%edi
746	xorl	%edi,%esi
747	movl	136(%ebp),%eax
748	movl	%edi,%ecx
749	roll	%cl,%esi
750	addl	%eax,%esi
751.L000rc5_exit:
752	movl	%edi,(%edx)
753	movl	%esi,4(%edx)
754	popl	%ebx
755	popl	%edi
756	popl	%esi
757	popl	%ebp
758	ret
759.size	RC5_32_encrypt,.-.L_RC5_32_encrypt_begin
760.globl	RC5_32_decrypt
761.type	RC5_32_decrypt,@function
762.align	16
763RC5_32_decrypt:
764.L_RC5_32_decrypt_begin:
765
766	pushl	%ebp
767	pushl	%esi
768	pushl	%edi
769	movl	16(%esp),%edx
770	movl	20(%esp),%ebp
771
772	movl	(%edx),%edi
773	movl	4(%edx),%esi
774	pushl	%ebx
775	movl	(%ebp),%ebx
776	cmpl	$12,%ebx
777	je	.L001rc5_dec_12
778	cmpl	$8,%ebx
779	je	.L002rc5_dec_8
780	movl	136(%ebp),%eax
781	subl	%eax,%esi
782	movl	%edi,%ecx
783	rorl	%cl,%esi
784	xorl	%edi,%esi
785	movl	132(%ebp),%eax
786	subl	%eax,%edi
787	movl	%esi,%ecx
788	rorl	%cl,%edi
789	xorl	%esi,%edi
790	movl	128(%ebp),%eax
791	subl	%eax,%esi
792	movl	%edi,%ecx
793	rorl	%cl,%esi
794	xorl	%edi,%esi
795	movl	124(%ebp),%eax
796	subl	%eax,%edi
797	movl	%esi,%ecx
798	rorl	%cl,%edi
799	xorl	%esi,%edi
800	movl	120(%ebp),%eax
801	subl	%eax,%esi
802	movl	%edi,%ecx
803	rorl	%cl,%esi
804	xorl	%edi,%esi
805	movl	116(%ebp),%eax
806	subl	%eax,%edi
807	movl	%esi,%ecx
808	rorl	%cl,%edi
809	xorl	%esi,%edi
810	movl	112(%ebp),%eax
811	subl	%eax,%esi
812	movl	%edi,%ecx
813	rorl	%cl,%esi
814	xorl	%edi,%esi
815	movl	108(%ebp),%eax
816	subl	%eax,%edi
817	movl	%esi,%ecx
818	rorl	%cl,%edi
819	xorl	%esi,%edi
820.L001rc5_dec_12:
821	movl	104(%ebp),%eax
822	subl	%eax,%esi
823	movl	%edi,%ecx
824	rorl	%cl,%esi
825	xorl	%edi,%esi
826	movl	100(%ebp),%eax
827	subl	%eax,%edi
828	movl	%esi,%ecx
829	rorl	%cl,%edi
830	xorl	%esi,%edi
831	movl	96(%ebp),%eax
832	subl	%eax,%esi
833	movl	%edi,%ecx
834	rorl	%cl,%esi
835	xorl	%edi,%esi
836	movl	92(%ebp),%eax
837	subl	%eax,%edi
838	movl	%esi,%ecx
839	rorl	%cl,%edi
840	xorl	%esi,%edi
841	movl	88(%ebp),%eax
842	subl	%eax,%esi
843	movl	%edi,%ecx
844	rorl	%cl,%esi
845	xorl	%edi,%esi
846	movl	84(%ebp),%eax
847	subl	%eax,%edi
848	movl	%esi,%ecx
849	rorl	%cl,%edi
850	xorl	%esi,%edi
851	movl	80(%ebp),%eax
852	subl	%eax,%esi
853	movl	%edi,%ecx
854	rorl	%cl,%esi
855	xorl	%edi,%esi
856	movl	76(%ebp),%eax
857	subl	%eax,%edi
858	movl	%esi,%ecx
859	rorl	%cl,%edi
860	xorl	%esi,%edi
861.L002rc5_dec_8:
862	movl	72(%ebp),%eax
863	subl	%eax,%esi
864	movl	%edi,%ecx
865	rorl	%cl,%esi
866	xorl	%edi,%esi
867	movl	68(%ebp),%eax
868	subl	%eax,%edi
869	movl	%esi,%ecx
870	rorl	%cl,%edi
871	xorl	%esi,%edi
872	movl	64(%ebp),%eax
873	subl	%eax,%esi
874	movl	%edi,%ecx
875	rorl	%cl,%esi
876	xorl	%edi,%esi
877	movl	60(%ebp),%eax
878	subl	%eax,%edi
879	movl	%esi,%ecx
880	rorl	%cl,%edi
881	xorl	%esi,%edi
882	movl	56(%ebp),%eax
883	subl	%eax,%esi
884	movl	%edi,%ecx
885	rorl	%cl,%esi
886	xorl	%edi,%esi
887	movl	52(%ebp),%eax
888	subl	%eax,%edi
889	movl	%esi,%ecx
890	rorl	%cl,%edi
891	xorl	%esi,%edi
892	movl	48(%ebp),%eax
893	subl	%eax,%esi
894	movl	%edi,%ecx
895	rorl	%cl,%esi
896	xorl	%edi,%esi
897	movl	44(%ebp),%eax
898	subl	%eax,%edi
899	movl	%esi,%ecx
900	rorl	%cl,%edi
901	xorl	%esi,%edi
902	movl	40(%ebp),%eax
903	subl	%eax,%esi
904	movl	%edi,%ecx
905	rorl	%cl,%esi
906	xorl	%edi,%esi
907	movl	36(%ebp),%eax
908	subl	%eax,%edi
909	movl	%esi,%ecx
910	rorl	%cl,%edi
911	xorl	%esi,%edi
912	movl	32(%ebp),%eax
913	subl	%eax,%esi
914	movl	%edi,%ecx
915	rorl	%cl,%esi
916	xorl	%edi,%esi
917	movl	28(%ebp),%eax
918	subl	%eax,%edi
919	movl	%esi,%ecx
920	rorl	%cl,%edi
921	xorl	%esi,%edi
922	movl	24(%ebp),%eax
923	subl	%eax,%esi
924	movl	%edi,%ecx
925	rorl	%cl,%esi
926	xorl	%edi,%esi
927	movl	20(%ebp),%eax
928	subl	%eax,%edi
929	movl	%esi,%ecx
930	rorl	%cl,%edi
931	xorl	%esi,%edi
932	movl	16(%ebp),%eax
933	subl	%eax,%esi
934	movl	%edi,%ecx
935	rorl	%cl,%esi
936	xorl	%edi,%esi
937	movl	12(%ebp),%eax
938	subl	%eax,%edi
939	movl	%esi,%ecx
940	rorl	%cl,%edi
941	xorl	%esi,%edi
942	subl	8(%ebp),%esi
943	subl	4(%ebp),%edi
944.L003rc5_exit:
945	movl	%edi,(%edx)
946	movl	%esi,4(%edx)
947	popl	%ebx
948	popl	%edi
949	popl	%esi
950	popl	%ebp
951	ret
952.size	RC5_32_decrypt,.-.L_RC5_32_decrypt_begin
953.globl	RC5_32_cbc_encrypt
954.type	RC5_32_cbc_encrypt,@function
955.align	16
956RC5_32_cbc_encrypt:
957.L_RC5_32_cbc_encrypt_begin:
958
959	pushl	%ebp
960	pushl	%ebx
961	pushl	%esi
962	pushl	%edi
963	movl	28(%esp),%ebp
964
965	movl	36(%esp),%ebx
966	movl	(%ebx),%esi
967	movl	4(%ebx),%edi
968	pushl	%edi
969	pushl	%esi
970	pushl	%edi
971	pushl	%esi
972	movl	%esp,%ebx
973	movl	36(%esp),%esi
974	movl	40(%esp),%edi
975
976	movl	56(%esp),%ecx
977
978	movl	48(%esp),%eax
979	pushl	%eax
980	pushl	%ebx
981	cmpl	$0,%ecx
982	jz	.L004decrypt
983	andl	$4294967288,%ebp
984	movl	8(%esp),%eax
985	movl	12(%esp),%ebx
986	jz	.L005encrypt_finish
987.L006encrypt_loop:
988	movl	(%esi),%ecx
989	movl	4(%esi),%edx
990	xorl	%ecx,%eax
991	xorl	%edx,%ebx
992	movl	%eax,8(%esp)
993	movl	%ebx,12(%esp)
994	call	.L_RC5_32_encrypt_begin
995	movl	8(%esp),%eax
996	movl	12(%esp),%ebx
997	movl	%eax,(%edi)
998	movl	%ebx,4(%edi)
999	addl	$8,%esi
1000	addl	$8,%edi
1001	subl	$8,%ebp
1002	jnz	.L006encrypt_loop
1003.L005encrypt_finish:
1004	movl	52(%esp),%ebp
1005	andl	$7,%ebp
1006	jz	.L007finish
1007	call	.L008PIC_point
1008.L008PIC_point:
1009	popl	%edx
1010	leal	.L009cbc_enc_jmp_table-.L008PIC_point(%edx),%ecx
1011	movl	(%ecx,%ebp,4),%ebp
1012	addl	%edx,%ebp
1013	xorl	%ecx,%ecx
1014	xorl	%edx,%edx
1015	jmp	*%ebp
1016.L010ej7:
1017	movb	6(%esi),%dh
1018	shll	$8,%edx
1019.L011ej6:
1020	movb	5(%esi),%dh
1021.L012ej5:
1022	movb	4(%esi),%dl
1023.L013ej4:
1024	movl	(%esi),%ecx
1025	jmp	.L014ejend
1026.L015ej3:
1027	movb	2(%esi),%ch
1028	shll	$8,%ecx
1029.L016ej2:
1030	movb	1(%esi),%ch
1031.L017ej1:
1032	movb	(%esi),%cl
1033.L014ejend:
1034	xorl	%ecx,%eax
1035	xorl	%edx,%ebx
1036	movl	%eax,8(%esp)
1037	movl	%ebx,12(%esp)
1038	call	.L_RC5_32_encrypt_begin
1039	movl	8(%esp),%eax
1040	movl	12(%esp),%ebx
1041	movl	%eax,(%edi)
1042	movl	%ebx,4(%edi)
1043	jmp	.L007finish
1044.L004decrypt:
1045	andl	$4294967288,%ebp
1046	movl	16(%esp),%eax
1047	movl	20(%esp),%ebx
1048	jz	.L018decrypt_finish
1049.L019decrypt_loop:
1050	movl	(%esi),%eax
1051	movl	4(%esi),%ebx
1052	movl	%eax,8(%esp)
1053	movl	%ebx,12(%esp)
1054	call	.L_RC5_32_decrypt_begin
1055	movl	8(%esp),%eax
1056	movl	12(%esp),%ebx
1057	movl	16(%esp),%ecx
1058	movl	20(%esp),%edx
1059	xorl	%eax,%ecx
1060	xorl	%ebx,%edx
1061	movl	(%esi),%eax
1062	movl	4(%esi),%ebx
1063	movl	%ecx,(%edi)
1064	movl	%edx,4(%edi)
1065	movl	%eax,16(%esp)
1066	movl	%ebx,20(%esp)
1067	addl	$8,%esi
1068	addl	$8,%edi
1069	subl	$8,%ebp
1070	jnz	.L019decrypt_loop
1071.L018decrypt_finish:
1072	movl	52(%esp),%ebp
1073	andl	$7,%ebp
1074	jz	.L007finish
1075	movl	(%esi),%eax
1076	movl	4(%esi),%ebx
1077	movl	%eax,8(%esp)
1078	movl	%ebx,12(%esp)
1079	call	.L_RC5_32_decrypt_begin
1080	movl	8(%esp),%eax
1081	movl	12(%esp),%ebx
1082	movl	16(%esp),%ecx
1083	movl	20(%esp),%edx
1084	xorl	%eax,%ecx
1085	xorl	%ebx,%edx
1086	movl	(%esi),%eax
1087	movl	4(%esi),%ebx
1088.L020dj7:
1089	rorl	$16,%edx
1090	movb	%dl,6(%edi)
1091	shrl	$16,%edx
1092.L021dj6:
1093	movb	%dh,5(%edi)
1094.L022dj5:
1095	movb	%dl,4(%edi)
1096.L023dj4:
1097	movl	%ecx,(%edi)
1098	jmp	.L024djend
1099.L025dj3:
1100	rorl	$16,%ecx
1101	movb	%cl,2(%edi)
1102	shll	$16,%ecx
1103.L026dj2:
1104	movb	%ch,1(%esi)
1105.L027dj1:
1106	movb	%cl,(%esi)
1107.L024djend:
1108	jmp	.L007finish
1109.L007finish:
1110	movl	60(%esp),%ecx
1111	addl	$24,%esp
1112	movl	%eax,(%ecx)
1113	movl	%ebx,4(%ecx)
1114	popl	%edi
1115	popl	%esi
1116	popl	%ebx
1117	popl	%ebp
1118	ret
1119.align	64
1120.L009cbc_enc_jmp_table:
1121.long	0
1122.long	.L017ej1-.L008PIC_point
1123.long	.L016ej2-.L008PIC_point
1124.long	.L015ej3-.L008PIC_point
1125.long	.L013ej4-.L008PIC_point
1126.long	.L012ej5-.L008PIC_point
1127.long	.L011ej6-.L008PIC_point
1128.long	.L010ej7-.L008PIC_point
1129.align	64
1130.size	RC5_32_cbc_encrypt,.-.L_RC5_32_cbc_encrypt_begin
1131#endif
1132