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