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