xref: /freebsd/sys/crypto/openssl/i386/cast-586.S (revision 02e9120893770924227138ba49df1edb3896112a)
1/* Do not modify. This file is auto-generated from cast-586.pl. */
2#ifdef PIC
3.text
4.globl	CAST_encrypt
5.type	CAST_encrypt,@function
6.align	16
7CAST_encrypt:
8.L_CAST_encrypt_begin:
9	#ifdef __CET__
10
11.byte	243,15,30,251
12	#endif
13
14
15	pushl	%ebp
16	pushl	%ebx
17	movl	12(%esp),%ebx
18	movl	16(%esp),%ebp
19	pushl	%esi
20	pushl	%edi
21
22	movl	(%ebx),%edi
23	movl	4(%ebx),%esi
24
25	movl	128(%ebp),%eax
26	pushl	%eax
27	xorl	%eax,%eax
28
29	movl	(%ebp),%edx
30	movl	4(%ebp),%ecx
31	addl	%esi,%edx
32	roll	%cl,%edx
33	xorl	%ecx,%ecx
34	movl	$255,%ebx
35	movb	%dh,%cl
36	andl	%edx,%ebx
37	shrl	$16,%edx
38	xorl	%eax,%eax
39	movb	%dh,%al
40	andl	$255,%edx
41	movl	CAST_S_table0(,%ecx,4),%ecx
42	movl	CAST_S_table1(,%ebx,4),%ebx
43	xorl	%ebx,%ecx
44	movl	CAST_S_table2(,%eax,4),%ebx
45	subl	%ebx,%ecx
46	movl	CAST_S_table3(,%edx,4),%ebx
47	addl	%ebx,%ecx
48	xorl	%ecx,%edi
49
50	movl	8(%ebp),%edx
51	movl	12(%ebp),%ecx
52	xorl	%edi,%edx
53	roll	%cl,%edx
54	xorl	%ecx,%ecx
55	movl	$255,%ebx
56	movb	%dh,%cl
57	andl	%edx,%ebx
58	shrl	$16,%edx
59	xorl	%eax,%eax
60	movb	%dh,%al
61	andl	$255,%edx
62	movl	CAST_S_table0(,%ecx,4),%ecx
63	movl	CAST_S_table1(,%ebx,4),%ebx
64	subl	%ebx,%ecx
65	movl	CAST_S_table2(,%eax,4),%ebx
66	addl	%ebx,%ecx
67	movl	CAST_S_table3(,%edx,4),%ebx
68	xorl	%ebx,%ecx
69	xorl	%ecx,%esi
70
71	movl	16(%ebp),%edx
72	movl	20(%ebp),%ecx
73	subl	%esi,%edx
74	roll	%cl,%edx
75	xorl	%ecx,%ecx
76	movl	$255,%ebx
77	movb	%dh,%cl
78	andl	%edx,%ebx
79	shrl	$16,%edx
80	xorl	%eax,%eax
81	movb	%dh,%al
82	andl	$255,%edx
83	movl	CAST_S_table0(,%ecx,4),%ecx
84	movl	CAST_S_table1(,%ebx,4),%ebx
85	addl	%ebx,%ecx
86	movl	CAST_S_table2(,%eax,4),%ebx
87	xorl	%ebx,%ecx
88	movl	CAST_S_table3(,%edx,4),%ebx
89	subl	%ebx,%ecx
90	xorl	%ecx,%edi
91
92	movl	24(%ebp),%edx
93	movl	28(%ebp),%ecx
94	addl	%edi,%edx
95	roll	%cl,%edx
96	xorl	%ecx,%ecx
97	movl	$255,%ebx
98	movb	%dh,%cl
99	andl	%edx,%ebx
100	shrl	$16,%edx
101	xorl	%eax,%eax
102	movb	%dh,%al
103	andl	$255,%edx
104	movl	CAST_S_table0(,%ecx,4),%ecx
105	movl	CAST_S_table1(,%ebx,4),%ebx
106	xorl	%ebx,%ecx
107	movl	CAST_S_table2(,%eax,4),%ebx
108	subl	%ebx,%ecx
109	movl	CAST_S_table3(,%edx,4),%ebx
110	addl	%ebx,%ecx
111	xorl	%ecx,%esi
112
113	movl	32(%ebp),%edx
114	movl	36(%ebp),%ecx
115	xorl	%esi,%edx
116	roll	%cl,%edx
117	xorl	%ecx,%ecx
118	movl	$255,%ebx
119	movb	%dh,%cl
120	andl	%edx,%ebx
121	shrl	$16,%edx
122	xorl	%eax,%eax
123	movb	%dh,%al
124	andl	$255,%edx
125	movl	CAST_S_table0(,%ecx,4),%ecx
126	movl	CAST_S_table1(,%ebx,4),%ebx
127	subl	%ebx,%ecx
128	movl	CAST_S_table2(,%eax,4),%ebx
129	addl	%ebx,%ecx
130	movl	CAST_S_table3(,%edx,4),%ebx
131	xorl	%ebx,%ecx
132	xorl	%ecx,%edi
133
134	movl	40(%ebp),%edx
135	movl	44(%ebp),%ecx
136	subl	%edi,%edx
137	roll	%cl,%edx
138	xorl	%ecx,%ecx
139	movl	$255,%ebx
140	movb	%dh,%cl
141	andl	%edx,%ebx
142	shrl	$16,%edx
143	xorl	%eax,%eax
144	movb	%dh,%al
145	andl	$255,%edx
146	movl	CAST_S_table0(,%ecx,4),%ecx
147	movl	CAST_S_table1(,%ebx,4),%ebx
148	addl	%ebx,%ecx
149	movl	CAST_S_table2(,%eax,4),%ebx
150	xorl	%ebx,%ecx
151	movl	CAST_S_table3(,%edx,4),%ebx
152	subl	%ebx,%ecx
153	xorl	%ecx,%esi
154
155	movl	48(%ebp),%edx
156	movl	52(%ebp),%ecx
157	addl	%esi,%edx
158	roll	%cl,%edx
159	xorl	%ecx,%ecx
160	movl	$255,%ebx
161	movb	%dh,%cl
162	andl	%edx,%ebx
163	shrl	$16,%edx
164	xorl	%eax,%eax
165	movb	%dh,%al
166	andl	$255,%edx
167	movl	CAST_S_table0(,%ecx,4),%ecx
168	movl	CAST_S_table1(,%ebx,4),%ebx
169	xorl	%ebx,%ecx
170	movl	CAST_S_table2(,%eax,4),%ebx
171	subl	%ebx,%ecx
172	movl	CAST_S_table3(,%edx,4),%ebx
173	addl	%ebx,%ecx
174	xorl	%ecx,%edi
175
176	movl	56(%ebp),%edx
177	movl	60(%ebp),%ecx
178	xorl	%edi,%edx
179	roll	%cl,%edx
180	xorl	%ecx,%ecx
181	movl	$255,%ebx
182	movb	%dh,%cl
183	andl	%edx,%ebx
184	shrl	$16,%edx
185	xorl	%eax,%eax
186	movb	%dh,%al
187	andl	$255,%edx
188	movl	CAST_S_table0(,%ecx,4),%ecx
189	movl	CAST_S_table1(,%ebx,4),%ebx
190	subl	%ebx,%ecx
191	movl	CAST_S_table2(,%eax,4),%ebx
192	addl	%ebx,%ecx
193	movl	CAST_S_table3(,%edx,4),%ebx
194	xorl	%ebx,%ecx
195	xorl	%ecx,%esi
196
197	movl	64(%ebp),%edx
198	movl	68(%ebp),%ecx
199	subl	%esi,%edx
200	roll	%cl,%edx
201	xorl	%ecx,%ecx
202	movl	$255,%ebx
203	movb	%dh,%cl
204	andl	%edx,%ebx
205	shrl	$16,%edx
206	xorl	%eax,%eax
207	movb	%dh,%al
208	andl	$255,%edx
209	movl	CAST_S_table0(,%ecx,4),%ecx
210	movl	CAST_S_table1(,%ebx,4),%ebx
211	addl	%ebx,%ecx
212	movl	CAST_S_table2(,%eax,4),%ebx
213	xorl	%ebx,%ecx
214	movl	CAST_S_table3(,%edx,4),%ebx
215	subl	%ebx,%ecx
216	xorl	%ecx,%edi
217
218	movl	72(%ebp),%edx
219	movl	76(%ebp),%ecx
220	addl	%edi,%edx
221	roll	%cl,%edx
222	xorl	%ecx,%ecx
223	movl	$255,%ebx
224	movb	%dh,%cl
225	andl	%edx,%ebx
226	shrl	$16,%edx
227	xorl	%eax,%eax
228	movb	%dh,%al
229	andl	$255,%edx
230	movl	CAST_S_table0(,%ecx,4),%ecx
231	movl	CAST_S_table1(,%ebx,4),%ebx
232	xorl	%ebx,%ecx
233	movl	CAST_S_table2(,%eax,4),%ebx
234	subl	%ebx,%ecx
235	movl	CAST_S_table3(,%edx,4),%ebx
236	addl	%ebx,%ecx
237	xorl	%ecx,%esi
238
239	movl	80(%ebp),%edx
240	movl	84(%ebp),%ecx
241	xorl	%esi,%edx
242	roll	%cl,%edx
243	xorl	%ecx,%ecx
244	movl	$255,%ebx
245	movb	%dh,%cl
246	andl	%edx,%ebx
247	shrl	$16,%edx
248	xorl	%eax,%eax
249	movb	%dh,%al
250	andl	$255,%edx
251	movl	CAST_S_table0(,%ecx,4),%ecx
252	movl	CAST_S_table1(,%ebx,4),%ebx
253	subl	%ebx,%ecx
254	movl	CAST_S_table2(,%eax,4),%ebx
255	addl	%ebx,%ecx
256	movl	CAST_S_table3(,%edx,4),%ebx
257	xorl	%ebx,%ecx
258	xorl	%ecx,%edi
259
260	movl	88(%ebp),%edx
261	movl	92(%ebp),%ecx
262	subl	%edi,%edx
263	roll	%cl,%edx
264	xorl	%ecx,%ecx
265	movl	$255,%ebx
266	movb	%dh,%cl
267	andl	%edx,%ebx
268	shrl	$16,%edx
269	xorl	%eax,%eax
270	movb	%dh,%al
271	andl	$255,%edx
272	movl	CAST_S_table0(,%ecx,4),%ecx
273	movl	CAST_S_table1(,%ebx,4),%ebx
274	addl	%ebx,%ecx
275	movl	CAST_S_table2(,%eax,4),%ebx
276	xorl	%ebx,%ecx
277	movl	CAST_S_table3(,%edx,4),%ebx
278	subl	%ebx,%ecx
279	xorl	%ecx,%esi
280
281	popl	%edx
282	orl	%edx,%edx
283	jnz	.L000cast_enc_done
284
285	movl	96(%ebp),%edx
286	movl	100(%ebp),%ecx
287	addl	%esi,%edx
288	roll	%cl,%edx
289	xorl	%ecx,%ecx
290	movl	$255,%ebx
291	movb	%dh,%cl
292	andl	%edx,%ebx
293	shrl	$16,%edx
294	xorl	%eax,%eax
295	movb	%dh,%al
296	andl	$255,%edx
297	movl	CAST_S_table0(,%ecx,4),%ecx
298	movl	CAST_S_table1(,%ebx,4),%ebx
299	xorl	%ebx,%ecx
300	movl	CAST_S_table2(,%eax,4),%ebx
301	subl	%ebx,%ecx
302	movl	CAST_S_table3(,%edx,4),%ebx
303	addl	%ebx,%ecx
304	xorl	%ecx,%edi
305
306	movl	104(%ebp),%edx
307	movl	108(%ebp),%ecx
308	xorl	%edi,%edx
309	roll	%cl,%edx
310	xorl	%ecx,%ecx
311	movl	$255,%ebx
312	movb	%dh,%cl
313	andl	%edx,%ebx
314	shrl	$16,%edx
315	xorl	%eax,%eax
316	movb	%dh,%al
317	andl	$255,%edx
318	movl	CAST_S_table0(,%ecx,4),%ecx
319	movl	CAST_S_table1(,%ebx,4),%ebx
320	subl	%ebx,%ecx
321	movl	CAST_S_table2(,%eax,4),%ebx
322	addl	%ebx,%ecx
323	movl	CAST_S_table3(,%edx,4),%ebx
324	xorl	%ebx,%ecx
325	xorl	%ecx,%esi
326
327	movl	112(%ebp),%edx
328	movl	116(%ebp),%ecx
329	subl	%esi,%edx
330	roll	%cl,%edx
331	xorl	%ecx,%ecx
332	movl	$255,%ebx
333	movb	%dh,%cl
334	andl	%edx,%ebx
335	shrl	$16,%edx
336	xorl	%eax,%eax
337	movb	%dh,%al
338	andl	$255,%edx
339	movl	CAST_S_table0(,%ecx,4),%ecx
340	movl	CAST_S_table1(,%ebx,4),%ebx
341	addl	%ebx,%ecx
342	movl	CAST_S_table2(,%eax,4),%ebx
343	xorl	%ebx,%ecx
344	movl	CAST_S_table3(,%edx,4),%ebx
345	subl	%ebx,%ecx
346	xorl	%ecx,%edi
347
348	movl	120(%ebp),%edx
349	movl	124(%ebp),%ecx
350	addl	%edi,%edx
351	roll	%cl,%edx
352	xorl	%ecx,%ecx
353	movl	$255,%ebx
354	movb	%dh,%cl
355	andl	%edx,%ebx
356	shrl	$16,%edx
357	xorl	%eax,%eax
358	movb	%dh,%al
359	andl	$255,%edx
360	movl	CAST_S_table0(,%ecx,4),%ecx
361	movl	CAST_S_table1(,%ebx,4),%ebx
362	xorl	%ebx,%ecx
363	movl	CAST_S_table2(,%eax,4),%ebx
364	subl	%ebx,%ecx
365	movl	CAST_S_table3(,%edx,4),%ebx
366	addl	%ebx,%ecx
367	xorl	%ecx,%esi
368.L000cast_enc_done:
369	nop
370	movl	20(%esp),%eax
371	movl	%edi,4(%eax)
372	movl	%esi,(%eax)
373	popl	%edi
374	popl	%esi
375	popl	%ebx
376	popl	%ebp
377	ret
378.size	CAST_encrypt,.-.L_CAST_encrypt_begin
379.globl	CAST_decrypt
380.type	CAST_decrypt,@function
381.align	16
382CAST_decrypt:
383.L_CAST_decrypt_begin:
384	#ifdef __CET__
385
386.byte	243,15,30,251
387	#endif
388
389
390	pushl	%ebp
391	pushl	%ebx
392	movl	12(%esp),%ebx
393	movl	16(%esp),%ebp
394	pushl	%esi
395	pushl	%edi
396
397	movl	(%ebx),%edi
398	movl	4(%ebx),%esi
399
400	movl	128(%ebp),%eax
401	orl	%eax,%eax
402	jnz	.L001cast_dec_skip
403	xorl	%eax,%eax
404
405	movl	120(%ebp),%edx
406	movl	124(%ebp),%ecx
407	addl	%esi,%edx
408	roll	%cl,%edx
409	xorl	%ecx,%ecx
410	movl	$255,%ebx
411	movb	%dh,%cl
412	andl	%edx,%ebx
413	shrl	$16,%edx
414	xorl	%eax,%eax
415	movb	%dh,%al
416	andl	$255,%edx
417	movl	CAST_S_table0(,%ecx,4),%ecx
418	movl	CAST_S_table1(,%ebx,4),%ebx
419	xorl	%ebx,%ecx
420	movl	CAST_S_table2(,%eax,4),%ebx
421	subl	%ebx,%ecx
422	movl	CAST_S_table3(,%edx,4),%ebx
423	addl	%ebx,%ecx
424	xorl	%ecx,%edi
425
426	movl	112(%ebp),%edx
427	movl	116(%ebp),%ecx
428	subl	%edi,%edx
429	roll	%cl,%edx
430	xorl	%ecx,%ecx
431	movl	$255,%ebx
432	movb	%dh,%cl
433	andl	%edx,%ebx
434	shrl	$16,%edx
435	xorl	%eax,%eax
436	movb	%dh,%al
437	andl	$255,%edx
438	movl	CAST_S_table0(,%ecx,4),%ecx
439	movl	CAST_S_table1(,%ebx,4),%ebx
440	addl	%ebx,%ecx
441	movl	CAST_S_table2(,%eax,4),%ebx
442	xorl	%ebx,%ecx
443	movl	CAST_S_table3(,%edx,4),%ebx
444	subl	%ebx,%ecx
445	xorl	%ecx,%esi
446
447	movl	104(%ebp),%edx
448	movl	108(%ebp),%ecx
449	xorl	%esi,%edx
450	roll	%cl,%edx
451	xorl	%ecx,%ecx
452	movl	$255,%ebx
453	movb	%dh,%cl
454	andl	%edx,%ebx
455	shrl	$16,%edx
456	xorl	%eax,%eax
457	movb	%dh,%al
458	andl	$255,%edx
459	movl	CAST_S_table0(,%ecx,4),%ecx
460	movl	CAST_S_table1(,%ebx,4),%ebx
461	subl	%ebx,%ecx
462	movl	CAST_S_table2(,%eax,4),%ebx
463	addl	%ebx,%ecx
464	movl	CAST_S_table3(,%edx,4),%ebx
465	xorl	%ebx,%ecx
466	xorl	%ecx,%edi
467
468	movl	96(%ebp),%edx
469	movl	100(%ebp),%ecx
470	addl	%edi,%edx
471	roll	%cl,%edx
472	xorl	%ecx,%ecx
473	movl	$255,%ebx
474	movb	%dh,%cl
475	andl	%edx,%ebx
476	shrl	$16,%edx
477	xorl	%eax,%eax
478	movb	%dh,%al
479	andl	$255,%edx
480	movl	CAST_S_table0(,%ecx,4),%ecx
481	movl	CAST_S_table1(,%ebx,4),%ebx
482	xorl	%ebx,%ecx
483	movl	CAST_S_table2(,%eax,4),%ebx
484	subl	%ebx,%ecx
485	movl	CAST_S_table3(,%edx,4),%ebx
486	addl	%ebx,%ecx
487	xorl	%ecx,%esi
488.L001cast_dec_skip:
489
490	movl	88(%ebp),%edx
491	movl	92(%ebp),%ecx
492	subl	%esi,%edx
493	roll	%cl,%edx
494	xorl	%ecx,%ecx
495	movl	$255,%ebx
496	movb	%dh,%cl
497	andl	%edx,%ebx
498	shrl	$16,%edx
499	xorl	%eax,%eax
500	movb	%dh,%al
501	andl	$255,%edx
502	movl	CAST_S_table0(,%ecx,4),%ecx
503	movl	CAST_S_table1(,%ebx,4),%ebx
504	addl	%ebx,%ecx
505	movl	CAST_S_table2(,%eax,4),%ebx
506	xorl	%ebx,%ecx
507	movl	CAST_S_table3(,%edx,4),%ebx
508	subl	%ebx,%ecx
509	xorl	%ecx,%edi
510
511	movl	80(%ebp),%edx
512	movl	84(%ebp),%ecx
513	xorl	%edi,%edx
514	roll	%cl,%edx
515	xorl	%ecx,%ecx
516	movl	$255,%ebx
517	movb	%dh,%cl
518	andl	%edx,%ebx
519	shrl	$16,%edx
520	xorl	%eax,%eax
521	movb	%dh,%al
522	andl	$255,%edx
523	movl	CAST_S_table0(,%ecx,4),%ecx
524	movl	CAST_S_table1(,%ebx,4),%ebx
525	subl	%ebx,%ecx
526	movl	CAST_S_table2(,%eax,4),%ebx
527	addl	%ebx,%ecx
528	movl	CAST_S_table3(,%edx,4),%ebx
529	xorl	%ebx,%ecx
530	xorl	%ecx,%esi
531
532	movl	72(%ebp),%edx
533	movl	76(%ebp),%ecx
534	addl	%esi,%edx
535	roll	%cl,%edx
536	xorl	%ecx,%ecx
537	movl	$255,%ebx
538	movb	%dh,%cl
539	andl	%edx,%ebx
540	shrl	$16,%edx
541	xorl	%eax,%eax
542	movb	%dh,%al
543	andl	$255,%edx
544	movl	CAST_S_table0(,%ecx,4),%ecx
545	movl	CAST_S_table1(,%ebx,4),%ebx
546	xorl	%ebx,%ecx
547	movl	CAST_S_table2(,%eax,4),%ebx
548	subl	%ebx,%ecx
549	movl	CAST_S_table3(,%edx,4),%ebx
550	addl	%ebx,%ecx
551	xorl	%ecx,%edi
552
553	movl	64(%ebp),%edx
554	movl	68(%ebp),%ecx
555	subl	%edi,%edx
556	roll	%cl,%edx
557	xorl	%ecx,%ecx
558	movl	$255,%ebx
559	movb	%dh,%cl
560	andl	%edx,%ebx
561	shrl	$16,%edx
562	xorl	%eax,%eax
563	movb	%dh,%al
564	andl	$255,%edx
565	movl	CAST_S_table0(,%ecx,4),%ecx
566	movl	CAST_S_table1(,%ebx,4),%ebx
567	addl	%ebx,%ecx
568	movl	CAST_S_table2(,%eax,4),%ebx
569	xorl	%ebx,%ecx
570	movl	CAST_S_table3(,%edx,4),%ebx
571	subl	%ebx,%ecx
572	xorl	%ecx,%esi
573
574	movl	56(%ebp),%edx
575	movl	60(%ebp),%ecx
576	xorl	%esi,%edx
577	roll	%cl,%edx
578	xorl	%ecx,%ecx
579	movl	$255,%ebx
580	movb	%dh,%cl
581	andl	%edx,%ebx
582	shrl	$16,%edx
583	xorl	%eax,%eax
584	movb	%dh,%al
585	andl	$255,%edx
586	movl	CAST_S_table0(,%ecx,4),%ecx
587	movl	CAST_S_table1(,%ebx,4),%ebx
588	subl	%ebx,%ecx
589	movl	CAST_S_table2(,%eax,4),%ebx
590	addl	%ebx,%ecx
591	movl	CAST_S_table3(,%edx,4),%ebx
592	xorl	%ebx,%ecx
593	xorl	%ecx,%edi
594
595	movl	48(%ebp),%edx
596	movl	52(%ebp),%ecx
597	addl	%edi,%edx
598	roll	%cl,%edx
599	xorl	%ecx,%ecx
600	movl	$255,%ebx
601	movb	%dh,%cl
602	andl	%edx,%ebx
603	shrl	$16,%edx
604	xorl	%eax,%eax
605	movb	%dh,%al
606	andl	$255,%edx
607	movl	CAST_S_table0(,%ecx,4),%ecx
608	movl	CAST_S_table1(,%ebx,4),%ebx
609	xorl	%ebx,%ecx
610	movl	CAST_S_table2(,%eax,4),%ebx
611	subl	%ebx,%ecx
612	movl	CAST_S_table3(,%edx,4),%ebx
613	addl	%ebx,%ecx
614	xorl	%ecx,%esi
615
616	movl	40(%ebp),%edx
617	movl	44(%ebp),%ecx
618	subl	%esi,%edx
619	roll	%cl,%edx
620	xorl	%ecx,%ecx
621	movl	$255,%ebx
622	movb	%dh,%cl
623	andl	%edx,%ebx
624	shrl	$16,%edx
625	xorl	%eax,%eax
626	movb	%dh,%al
627	andl	$255,%edx
628	movl	CAST_S_table0(,%ecx,4),%ecx
629	movl	CAST_S_table1(,%ebx,4),%ebx
630	addl	%ebx,%ecx
631	movl	CAST_S_table2(,%eax,4),%ebx
632	xorl	%ebx,%ecx
633	movl	CAST_S_table3(,%edx,4),%ebx
634	subl	%ebx,%ecx
635	xorl	%ecx,%edi
636
637	movl	32(%ebp),%edx
638	movl	36(%ebp),%ecx
639	xorl	%edi,%edx
640	roll	%cl,%edx
641	xorl	%ecx,%ecx
642	movl	$255,%ebx
643	movb	%dh,%cl
644	andl	%edx,%ebx
645	shrl	$16,%edx
646	xorl	%eax,%eax
647	movb	%dh,%al
648	andl	$255,%edx
649	movl	CAST_S_table0(,%ecx,4),%ecx
650	movl	CAST_S_table1(,%ebx,4),%ebx
651	subl	%ebx,%ecx
652	movl	CAST_S_table2(,%eax,4),%ebx
653	addl	%ebx,%ecx
654	movl	CAST_S_table3(,%edx,4),%ebx
655	xorl	%ebx,%ecx
656	xorl	%ecx,%esi
657
658	movl	24(%ebp),%edx
659	movl	28(%ebp),%ecx
660	addl	%esi,%edx
661	roll	%cl,%edx
662	xorl	%ecx,%ecx
663	movl	$255,%ebx
664	movb	%dh,%cl
665	andl	%edx,%ebx
666	shrl	$16,%edx
667	xorl	%eax,%eax
668	movb	%dh,%al
669	andl	$255,%edx
670	movl	CAST_S_table0(,%ecx,4),%ecx
671	movl	CAST_S_table1(,%ebx,4),%ebx
672	xorl	%ebx,%ecx
673	movl	CAST_S_table2(,%eax,4),%ebx
674	subl	%ebx,%ecx
675	movl	CAST_S_table3(,%edx,4),%ebx
676	addl	%ebx,%ecx
677	xorl	%ecx,%edi
678
679	movl	16(%ebp),%edx
680	movl	20(%ebp),%ecx
681	subl	%edi,%edx
682	roll	%cl,%edx
683	xorl	%ecx,%ecx
684	movl	$255,%ebx
685	movb	%dh,%cl
686	andl	%edx,%ebx
687	shrl	$16,%edx
688	xorl	%eax,%eax
689	movb	%dh,%al
690	andl	$255,%edx
691	movl	CAST_S_table0(,%ecx,4),%ecx
692	movl	CAST_S_table1(,%ebx,4),%ebx
693	addl	%ebx,%ecx
694	movl	CAST_S_table2(,%eax,4),%ebx
695	xorl	%ebx,%ecx
696	movl	CAST_S_table3(,%edx,4),%ebx
697	subl	%ebx,%ecx
698	xorl	%ecx,%esi
699
700	movl	8(%ebp),%edx
701	movl	12(%ebp),%ecx
702	xorl	%esi,%edx
703	roll	%cl,%edx
704	xorl	%ecx,%ecx
705	movl	$255,%ebx
706	movb	%dh,%cl
707	andl	%edx,%ebx
708	shrl	$16,%edx
709	xorl	%eax,%eax
710	movb	%dh,%al
711	andl	$255,%edx
712	movl	CAST_S_table0(,%ecx,4),%ecx
713	movl	CAST_S_table1(,%ebx,4),%ebx
714	subl	%ebx,%ecx
715	movl	CAST_S_table2(,%eax,4),%ebx
716	addl	%ebx,%ecx
717	movl	CAST_S_table3(,%edx,4),%ebx
718	xorl	%ebx,%ecx
719	xorl	%ecx,%edi
720
721	movl	(%ebp),%edx
722	movl	4(%ebp),%ecx
723	addl	%edi,%edx
724	roll	%cl,%edx
725	xorl	%ecx,%ecx
726	movl	$255,%ebx
727	movb	%dh,%cl
728	andl	%edx,%ebx
729	shrl	$16,%edx
730	xorl	%eax,%eax
731	movb	%dh,%al
732	andl	$255,%edx
733	movl	CAST_S_table0(,%ecx,4),%ecx
734	movl	CAST_S_table1(,%ebx,4),%ebx
735	xorl	%ebx,%ecx
736	movl	CAST_S_table2(,%eax,4),%ebx
737	subl	%ebx,%ecx
738	movl	CAST_S_table3(,%edx,4),%ebx
739	addl	%ebx,%ecx
740	xorl	%ecx,%esi
741	nop
742	movl	20(%esp),%eax
743	movl	%edi,4(%eax)
744	movl	%esi,(%eax)
745	popl	%edi
746	popl	%esi
747	popl	%ebx
748	popl	%ebp
749	ret
750.size	CAST_decrypt,.-.L_CAST_decrypt_begin
751.globl	CAST_cbc_encrypt
752.type	CAST_cbc_encrypt,@function
753.align	16
754CAST_cbc_encrypt:
755.L_CAST_cbc_encrypt_begin:
756	#ifdef __CET__
757
758.byte	243,15,30,251
759	#endif
760
761
762	pushl	%ebp
763	pushl	%ebx
764	pushl	%esi
765	pushl	%edi
766	movl	28(%esp),%ebp
767
768	movl	36(%esp),%ebx
769	movl	(%ebx),%esi
770	movl	4(%ebx),%edi
771	pushl	%edi
772	pushl	%esi
773	pushl	%edi
774	pushl	%esi
775	movl	%esp,%ebx
776	movl	36(%esp),%esi
777	movl	40(%esp),%edi
778
779	movl	56(%esp),%ecx
780
781	movl	48(%esp),%eax
782	pushl	%eax
783	pushl	%ebx
784	cmpl	$0,%ecx
785	jz	.L002decrypt
786	andl	$4294967288,%ebp
787	movl	8(%esp),%eax
788	movl	12(%esp),%ebx
789	jz	.L003encrypt_finish
790.L004encrypt_loop:
791	movl	(%esi),%ecx
792	movl	4(%esi),%edx
793	xorl	%ecx,%eax
794	xorl	%edx,%ebx
795	bswap	%eax
796	bswap	%ebx
797	movl	%eax,8(%esp)
798	movl	%ebx,12(%esp)
799	call	.L_CAST_encrypt_begin
800	movl	8(%esp),%eax
801	movl	12(%esp),%ebx
802	bswap	%eax
803	bswap	%ebx
804	movl	%eax,(%edi)
805	movl	%ebx,4(%edi)
806	addl	$8,%esi
807	addl	$8,%edi
808	subl	$8,%ebp
809	jnz	.L004encrypt_loop
810.L003encrypt_finish:
811	movl	52(%esp),%ebp
812	andl	$7,%ebp
813	jz	.L005finish
814	call	.L006PIC_point
815.L006PIC_point:
816	popl	%edx
817	leal	.L007cbc_enc_jmp_table-.L006PIC_point(%edx),%ecx
818	movl	(%ecx,%ebp,4),%ebp
819	addl	%edx,%ebp
820	xorl	%ecx,%ecx
821	xorl	%edx,%edx
822	jmp	*%ebp
823.L008ej7:
824	#ifdef __CET__
825
826.byte	243,15,30,251
827	#endif
828
829	movb	6(%esi),%dh
830	shll	$8,%edx
831.L009ej6:
832	#ifdef __CET__
833
834.byte	243,15,30,251
835	#endif
836
837	movb	5(%esi),%dh
838.L010ej5:
839	#ifdef __CET__
840
841.byte	243,15,30,251
842	#endif
843
844	movb	4(%esi),%dl
845.L011ej4:
846	#ifdef __CET__
847
848.byte	243,15,30,251
849	#endif
850
851	movl	(%esi),%ecx
852	jmp	.L012ejend
853.L013ej3:
854	#ifdef __CET__
855
856.byte	243,15,30,251
857	#endif
858
859	movb	2(%esi),%ch
860	shll	$8,%ecx
861.L014ej2:
862	#ifdef __CET__
863
864.byte	243,15,30,251
865	#endif
866
867	movb	1(%esi),%ch
868.L015ej1:
869	#ifdef __CET__
870
871.byte	243,15,30,251
872	#endif
873
874	movb	(%esi),%cl
875.L012ejend:
876	xorl	%ecx,%eax
877	xorl	%edx,%ebx
878	bswap	%eax
879	bswap	%ebx
880	movl	%eax,8(%esp)
881	movl	%ebx,12(%esp)
882	call	.L_CAST_encrypt_begin
883	movl	8(%esp),%eax
884	movl	12(%esp),%ebx
885	bswap	%eax
886	bswap	%ebx
887	movl	%eax,(%edi)
888	movl	%ebx,4(%edi)
889	jmp	.L005finish
890.L002decrypt:
891	andl	$4294967288,%ebp
892	movl	16(%esp),%eax
893	movl	20(%esp),%ebx
894	jz	.L016decrypt_finish
895.L017decrypt_loop:
896	movl	(%esi),%eax
897	movl	4(%esi),%ebx
898	bswap	%eax
899	bswap	%ebx
900	movl	%eax,8(%esp)
901	movl	%ebx,12(%esp)
902	call	.L_CAST_decrypt_begin
903	movl	8(%esp),%eax
904	movl	12(%esp),%ebx
905	bswap	%eax
906	bswap	%ebx
907	movl	16(%esp),%ecx
908	movl	20(%esp),%edx
909	xorl	%eax,%ecx
910	xorl	%ebx,%edx
911	movl	(%esi),%eax
912	movl	4(%esi),%ebx
913	movl	%ecx,(%edi)
914	movl	%edx,4(%edi)
915	movl	%eax,16(%esp)
916	movl	%ebx,20(%esp)
917	addl	$8,%esi
918	addl	$8,%edi
919	subl	$8,%ebp
920	jnz	.L017decrypt_loop
921.L016decrypt_finish:
922	movl	52(%esp),%ebp
923	andl	$7,%ebp
924	jz	.L005finish
925	movl	(%esi),%eax
926	movl	4(%esi),%ebx
927	bswap	%eax
928	bswap	%ebx
929	movl	%eax,8(%esp)
930	movl	%ebx,12(%esp)
931	call	.L_CAST_decrypt_begin
932	movl	8(%esp),%eax
933	movl	12(%esp),%ebx
934	bswap	%eax
935	bswap	%ebx
936	movl	16(%esp),%ecx
937	movl	20(%esp),%edx
938	xorl	%eax,%ecx
939	xorl	%ebx,%edx
940	movl	(%esi),%eax
941	movl	4(%esi),%ebx
942.L018dj7:
943	rorl	$16,%edx
944	movb	%dl,6(%edi)
945	shrl	$16,%edx
946.L019dj6:
947	movb	%dh,5(%edi)
948.L020dj5:
949	movb	%dl,4(%edi)
950.L021dj4:
951	movl	%ecx,(%edi)
952	jmp	.L022djend
953.L023dj3:
954	rorl	$16,%ecx
955	movb	%cl,2(%edi)
956	shll	$16,%ecx
957.L024dj2:
958	movb	%ch,1(%esi)
959.L025dj1:
960	movb	%cl,(%esi)
961.L022djend:
962	jmp	.L005finish
963.L005finish:
964	movl	60(%esp),%ecx
965	addl	$24,%esp
966	movl	%eax,(%ecx)
967	movl	%ebx,4(%ecx)
968	popl	%edi
969	popl	%esi
970	popl	%ebx
971	popl	%ebp
972	ret
973.align	64
974.L007cbc_enc_jmp_table:
975.long	0
976.long	.L015ej1-.L006PIC_point
977.long	.L014ej2-.L006PIC_point
978.long	.L013ej3-.L006PIC_point
979.long	.L011ej4-.L006PIC_point
980.long	.L010ej5-.L006PIC_point
981.long	.L009ej6-.L006PIC_point
982.long	.L008ej7-.L006PIC_point
983.align	64
984.size	CAST_cbc_encrypt,.-.L_CAST_cbc_encrypt_begin
985
986	.section ".note.gnu.property", "a"
987	.p2align 2
988	.long 1f - 0f
989	.long 4f - 1f
990	.long 5
9910:
992	.asciz "GNU"
9931:
994	.p2align 2
995	.long 0xc0000002
996	.long 3f - 2f
9972:
998	.long 3
9993:
1000	.p2align 2
10014:
1002#else
1003.text
1004.globl	CAST_encrypt
1005.type	CAST_encrypt,@function
1006.align	16
1007CAST_encrypt:
1008.L_CAST_encrypt_begin:
1009	#ifdef __CET__
1010
1011.byte	243,15,30,251
1012	#endif
1013
1014
1015	pushl	%ebp
1016	pushl	%ebx
1017	movl	12(%esp),%ebx
1018	movl	16(%esp),%ebp
1019	pushl	%esi
1020	pushl	%edi
1021
1022	movl	(%ebx),%edi
1023	movl	4(%ebx),%esi
1024
1025	movl	128(%ebp),%eax
1026	pushl	%eax
1027	xorl	%eax,%eax
1028
1029	movl	(%ebp),%edx
1030	movl	4(%ebp),%ecx
1031	addl	%esi,%edx
1032	roll	%cl,%edx
1033	xorl	%ecx,%ecx
1034	movl	$255,%ebx
1035	movb	%dh,%cl
1036	andl	%edx,%ebx
1037	shrl	$16,%edx
1038	xorl	%eax,%eax
1039	movb	%dh,%al
1040	andl	$255,%edx
1041	movl	CAST_S_table0(,%ecx,4),%ecx
1042	movl	CAST_S_table1(,%ebx,4),%ebx
1043	xorl	%ebx,%ecx
1044	movl	CAST_S_table2(,%eax,4),%ebx
1045	subl	%ebx,%ecx
1046	movl	CAST_S_table3(,%edx,4),%ebx
1047	addl	%ebx,%ecx
1048	xorl	%ecx,%edi
1049
1050	movl	8(%ebp),%edx
1051	movl	12(%ebp),%ecx
1052	xorl	%edi,%edx
1053	roll	%cl,%edx
1054	xorl	%ecx,%ecx
1055	movl	$255,%ebx
1056	movb	%dh,%cl
1057	andl	%edx,%ebx
1058	shrl	$16,%edx
1059	xorl	%eax,%eax
1060	movb	%dh,%al
1061	andl	$255,%edx
1062	movl	CAST_S_table0(,%ecx,4),%ecx
1063	movl	CAST_S_table1(,%ebx,4),%ebx
1064	subl	%ebx,%ecx
1065	movl	CAST_S_table2(,%eax,4),%ebx
1066	addl	%ebx,%ecx
1067	movl	CAST_S_table3(,%edx,4),%ebx
1068	xorl	%ebx,%ecx
1069	xorl	%ecx,%esi
1070
1071	movl	16(%ebp),%edx
1072	movl	20(%ebp),%ecx
1073	subl	%esi,%edx
1074	roll	%cl,%edx
1075	xorl	%ecx,%ecx
1076	movl	$255,%ebx
1077	movb	%dh,%cl
1078	andl	%edx,%ebx
1079	shrl	$16,%edx
1080	xorl	%eax,%eax
1081	movb	%dh,%al
1082	andl	$255,%edx
1083	movl	CAST_S_table0(,%ecx,4),%ecx
1084	movl	CAST_S_table1(,%ebx,4),%ebx
1085	addl	%ebx,%ecx
1086	movl	CAST_S_table2(,%eax,4),%ebx
1087	xorl	%ebx,%ecx
1088	movl	CAST_S_table3(,%edx,4),%ebx
1089	subl	%ebx,%ecx
1090	xorl	%ecx,%edi
1091
1092	movl	24(%ebp),%edx
1093	movl	28(%ebp),%ecx
1094	addl	%edi,%edx
1095	roll	%cl,%edx
1096	xorl	%ecx,%ecx
1097	movl	$255,%ebx
1098	movb	%dh,%cl
1099	andl	%edx,%ebx
1100	shrl	$16,%edx
1101	xorl	%eax,%eax
1102	movb	%dh,%al
1103	andl	$255,%edx
1104	movl	CAST_S_table0(,%ecx,4),%ecx
1105	movl	CAST_S_table1(,%ebx,4),%ebx
1106	xorl	%ebx,%ecx
1107	movl	CAST_S_table2(,%eax,4),%ebx
1108	subl	%ebx,%ecx
1109	movl	CAST_S_table3(,%edx,4),%ebx
1110	addl	%ebx,%ecx
1111	xorl	%ecx,%esi
1112
1113	movl	32(%ebp),%edx
1114	movl	36(%ebp),%ecx
1115	xorl	%esi,%edx
1116	roll	%cl,%edx
1117	xorl	%ecx,%ecx
1118	movl	$255,%ebx
1119	movb	%dh,%cl
1120	andl	%edx,%ebx
1121	shrl	$16,%edx
1122	xorl	%eax,%eax
1123	movb	%dh,%al
1124	andl	$255,%edx
1125	movl	CAST_S_table0(,%ecx,4),%ecx
1126	movl	CAST_S_table1(,%ebx,4),%ebx
1127	subl	%ebx,%ecx
1128	movl	CAST_S_table2(,%eax,4),%ebx
1129	addl	%ebx,%ecx
1130	movl	CAST_S_table3(,%edx,4),%ebx
1131	xorl	%ebx,%ecx
1132	xorl	%ecx,%edi
1133
1134	movl	40(%ebp),%edx
1135	movl	44(%ebp),%ecx
1136	subl	%edi,%edx
1137	roll	%cl,%edx
1138	xorl	%ecx,%ecx
1139	movl	$255,%ebx
1140	movb	%dh,%cl
1141	andl	%edx,%ebx
1142	shrl	$16,%edx
1143	xorl	%eax,%eax
1144	movb	%dh,%al
1145	andl	$255,%edx
1146	movl	CAST_S_table0(,%ecx,4),%ecx
1147	movl	CAST_S_table1(,%ebx,4),%ebx
1148	addl	%ebx,%ecx
1149	movl	CAST_S_table2(,%eax,4),%ebx
1150	xorl	%ebx,%ecx
1151	movl	CAST_S_table3(,%edx,4),%ebx
1152	subl	%ebx,%ecx
1153	xorl	%ecx,%esi
1154
1155	movl	48(%ebp),%edx
1156	movl	52(%ebp),%ecx
1157	addl	%esi,%edx
1158	roll	%cl,%edx
1159	xorl	%ecx,%ecx
1160	movl	$255,%ebx
1161	movb	%dh,%cl
1162	andl	%edx,%ebx
1163	shrl	$16,%edx
1164	xorl	%eax,%eax
1165	movb	%dh,%al
1166	andl	$255,%edx
1167	movl	CAST_S_table0(,%ecx,4),%ecx
1168	movl	CAST_S_table1(,%ebx,4),%ebx
1169	xorl	%ebx,%ecx
1170	movl	CAST_S_table2(,%eax,4),%ebx
1171	subl	%ebx,%ecx
1172	movl	CAST_S_table3(,%edx,4),%ebx
1173	addl	%ebx,%ecx
1174	xorl	%ecx,%edi
1175
1176	movl	56(%ebp),%edx
1177	movl	60(%ebp),%ecx
1178	xorl	%edi,%edx
1179	roll	%cl,%edx
1180	xorl	%ecx,%ecx
1181	movl	$255,%ebx
1182	movb	%dh,%cl
1183	andl	%edx,%ebx
1184	shrl	$16,%edx
1185	xorl	%eax,%eax
1186	movb	%dh,%al
1187	andl	$255,%edx
1188	movl	CAST_S_table0(,%ecx,4),%ecx
1189	movl	CAST_S_table1(,%ebx,4),%ebx
1190	subl	%ebx,%ecx
1191	movl	CAST_S_table2(,%eax,4),%ebx
1192	addl	%ebx,%ecx
1193	movl	CAST_S_table3(,%edx,4),%ebx
1194	xorl	%ebx,%ecx
1195	xorl	%ecx,%esi
1196
1197	movl	64(%ebp),%edx
1198	movl	68(%ebp),%ecx
1199	subl	%esi,%edx
1200	roll	%cl,%edx
1201	xorl	%ecx,%ecx
1202	movl	$255,%ebx
1203	movb	%dh,%cl
1204	andl	%edx,%ebx
1205	shrl	$16,%edx
1206	xorl	%eax,%eax
1207	movb	%dh,%al
1208	andl	$255,%edx
1209	movl	CAST_S_table0(,%ecx,4),%ecx
1210	movl	CAST_S_table1(,%ebx,4),%ebx
1211	addl	%ebx,%ecx
1212	movl	CAST_S_table2(,%eax,4),%ebx
1213	xorl	%ebx,%ecx
1214	movl	CAST_S_table3(,%edx,4),%ebx
1215	subl	%ebx,%ecx
1216	xorl	%ecx,%edi
1217
1218	movl	72(%ebp),%edx
1219	movl	76(%ebp),%ecx
1220	addl	%edi,%edx
1221	roll	%cl,%edx
1222	xorl	%ecx,%ecx
1223	movl	$255,%ebx
1224	movb	%dh,%cl
1225	andl	%edx,%ebx
1226	shrl	$16,%edx
1227	xorl	%eax,%eax
1228	movb	%dh,%al
1229	andl	$255,%edx
1230	movl	CAST_S_table0(,%ecx,4),%ecx
1231	movl	CAST_S_table1(,%ebx,4),%ebx
1232	xorl	%ebx,%ecx
1233	movl	CAST_S_table2(,%eax,4),%ebx
1234	subl	%ebx,%ecx
1235	movl	CAST_S_table3(,%edx,4),%ebx
1236	addl	%ebx,%ecx
1237	xorl	%ecx,%esi
1238
1239	movl	80(%ebp),%edx
1240	movl	84(%ebp),%ecx
1241	xorl	%esi,%edx
1242	roll	%cl,%edx
1243	xorl	%ecx,%ecx
1244	movl	$255,%ebx
1245	movb	%dh,%cl
1246	andl	%edx,%ebx
1247	shrl	$16,%edx
1248	xorl	%eax,%eax
1249	movb	%dh,%al
1250	andl	$255,%edx
1251	movl	CAST_S_table0(,%ecx,4),%ecx
1252	movl	CAST_S_table1(,%ebx,4),%ebx
1253	subl	%ebx,%ecx
1254	movl	CAST_S_table2(,%eax,4),%ebx
1255	addl	%ebx,%ecx
1256	movl	CAST_S_table3(,%edx,4),%ebx
1257	xorl	%ebx,%ecx
1258	xorl	%ecx,%edi
1259
1260	movl	88(%ebp),%edx
1261	movl	92(%ebp),%ecx
1262	subl	%edi,%edx
1263	roll	%cl,%edx
1264	xorl	%ecx,%ecx
1265	movl	$255,%ebx
1266	movb	%dh,%cl
1267	andl	%edx,%ebx
1268	shrl	$16,%edx
1269	xorl	%eax,%eax
1270	movb	%dh,%al
1271	andl	$255,%edx
1272	movl	CAST_S_table0(,%ecx,4),%ecx
1273	movl	CAST_S_table1(,%ebx,4),%ebx
1274	addl	%ebx,%ecx
1275	movl	CAST_S_table2(,%eax,4),%ebx
1276	xorl	%ebx,%ecx
1277	movl	CAST_S_table3(,%edx,4),%ebx
1278	subl	%ebx,%ecx
1279	xorl	%ecx,%esi
1280
1281	popl	%edx
1282	orl	%edx,%edx
1283	jnz	.L000cast_enc_done
1284
1285	movl	96(%ebp),%edx
1286	movl	100(%ebp),%ecx
1287	addl	%esi,%edx
1288	roll	%cl,%edx
1289	xorl	%ecx,%ecx
1290	movl	$255,%ebx
1291	movb	%dh,%cl
1292	andl	%edx,%ebx
1293	shrl	$16,%edx
1294	xorl	%eax,%eax
1295	movb	%dh,%al
1296	andl	$255,%edx
1297	movl	CAST_S_table0(,%ecx,4),%ecx
1298	movl	CAST_S_table1(,%ebx,4),%ebx
1299	xorl	%ebx,%ecx
1300	movl	CAST_S_table2(,%eax,4),%ebx
1301	subl	%ebx,%ecx
1302	movl	CAST_S_table3(,%edx,4),%ebx
1303	addl	%ebx,%ecx
1304	xorl	%ecx,%edi
1305
1306	movl	104(%ebp),%edx
1307	movl	108(%ebp),%ecx
1308	xorl	%edi,%edx
1309	roll	%cl,%edx
1310	xorl	%ecx,%ecx
1311	movl	$255,%ebx
1312	movb	%dh,%cl
1313	andl	%edx,%ebx
1314	shrl	$16,%edx
1315	xorl	%eax,%eax
1316	movb	%dh,%al
1317	andl	$255,%edx
1318	movl	CAST_S_table0(,%ecx,4),%ecx
1319	movl	CAST_S_table1(,%ebx,4),%ebx
1320	subl	%ebx,%ecx
1321	movl	CAST_S_table2(,%eax,4),%ebx
1322	addl	%ebx,%ecx
1323	movl	CAST_S_table3(,%edx,4),%ebx
1324	xorl	%ebx,%ecx
1325	xorl	%ecx,%esi
1326
1327	movl	112(%ebp),%edx
1328	movl	116(%ebp),%ecx
1329	subl	%esi,%edx
1330	roll	%cl,%edx
1331	xorl	%ecx,%ecx
1332	movl	$255,%ebx
1333	movb	%dh,%cl
1334	andl	%edx,%ebx
1335	shrl	$16,%edx
1336	xorl	%eax,%eax
1337	movb	%dh,%al
1338	andl	$255,%edx
1339	movl	CAST_S_table0(,%ecx,4),%ecx
1340	movl	CAST_S_table1(,%ebx,4),%ebx
1341	addl	%ebx,%ecx
1342	movl	CAST_S_table2(,%eax,4),%ebx
1343	xorl	%ebx,%ecx
1344	movl	CAST_S_table3(,%edx,4),%ebx
1345	subl	%ebx,%ecx
1346	xorl	%ecx,%edi
1347
1348	movl	120(%ebp),%edx
1349	movl	124(%ebp),%ecx
1350	addl	%edi,%edx
1351	roll	%cl,%edx
1352	xorl	%ecx,%ecx
1353	movl	$255,%ebx
1354	movb	%dh,%cl
1355	andl	%edx,%ebx
1356	shrl	$16,%edx
1357	xorl	%eax,%eax
1358	movb	%dh,%al
1359	andl	$255,%edx
1360	movl	CAST_S_table0(,%ecx,4),%ecx
1361	movl	CAST_S_table1(,%ebx,4),%ebx
1362	xorl	%ebx,%ecx
1363	movl	CAST_S_table2(,%eax,4),%ebx
1364	subl	%ebx,%ecx
1365	movl	CAST_S_table3(,%edx,4),%ebx
1366	addl	%ebx,%ecx
1367	xorl	%ecx,%esi
1368.L000cast_enc_done:
1369	nop
1370	movl	20(%esp),%eax
1371	movl	%edi,4(%eax)
1372	movl	%esi,(%eax)
1373	popl	%edi
1374	popl	%esi
1375	popl	%ebx
1376	popl	%ebp
1377	ret
1378.size	CAST_encrypt,.-.L_CAST_encrypt_begin
1379.globl	CAST_decrypt
1380.type	CAST_decrypt,@function
1381.align	16
1382CAST_decrypt:
1383.L_CAST_decrypt_begin:
1384	#ifdef __CET__
1385
1386.byte	243,15,30,251
1387	#endif
1388
1389
1390	pushl	%ebp
1391	pushl	%ebx
1392	movl	12(%esp),%ebx
1393	movl	16(%esp),%ebp
1394	pushl	%esi
1395	pushl	%edi
1396
1397	movl	(%ebx),%edi
1398	movl	4(%ebx),%esi
1399
1400	movl	128(%ebp),%eax
1401	orl	%eax,%eax
1402	jnz	.L001cast_dec_skip
1403	xorl	%eax,%eax
1404
1405	movl	120(%ebp),%edx
1406	movl	124(%ebp),%ecx
1407	addl	%esi,%edx
1408	roll	%cl,%edx
1409	xorl	%ecx,%ecx
1410	movl	$255,%ebx
1411	movb	%dh,%cl
1412	andl	%edx,%ebx
1413	shrl	$16,%edx
1414	xorl	%eax,%eax
1415	movb	%dh,%al
1416	andl	$255,%edx
1417	movl	CAST_S_table0(,%ecx,4),%ecx
1418	movl	CAST_S_table1(,%ebx,4),%ebx
1419	xorl	%ebx,%ecx
1420	movl	CAST_S_table2(,%eax,4),%ebx
1421	subl	%ebx,%ecx
1422	movl	CAST_S_table3(,%edx,4),%ebx
1423	addl	%ebx,%ecx
1424	xorl	%ecx,%edi
1425
1426	movl	112(%ebp),%edx
1427	movl	116(%ebp),%ecx
1428	subl	%edi,%edx
1429	roll	%cl,%edx
1430	xorl	%ecx,%ecx
1431	movl	$255,%ebx
1432	movb	%dh,%cl
1433	andl	%edx,%ebx
1434	shrl	$16,%edx
1435	xorl	%eax,%eax
1436	movb	%dh,%al
1437	andl	$255,%edx
1438	movl	CAST_S_table0(,%ecx,4),%ecx
1439	movl	CAST_S_table1(,%ebx,4),%ebx
1440	addl	%ebx,%ecx
1441	movl	CAST_S_table2(,%eax,4),%ebx
1442	xorl	%ebx,%ecx
1443	movl	CAST_S_table3(,%edx,4),%ebx
1444	subl	%ebx,%ecx
1445	xorl	%ecx,%esi
1446
1447	movl	104(%ebp),%edx
1448	movl	108(%ebp),%ecx
1449	xorl	%esi,%edx
1450	roll	%cl,%edx
1451	xorl	%ecx,%ecx
1452	movl	$255,%ebx
1453	movb	%dh,%cl
1454	andl	%edx,%ebx
1455	shrl	$16,%edx
1456	xorl	%eax,%eax
1457	movb	%dh,%al
1458	andl	$255,%edx
1459	movl	CAST_S_table0(,%ecx,4),%ecx
1460	movl	CAST_S_table1(,%ebx,4),%ebx
1461	subl	%ebx,%ecx
1462	movl	CAST_S_table2(,%eax,4),%ebx
1463	addl	%ebx,%ecx
1464	movl	CAST_S_table3(,%edx,4),%ebx
1465	xorl	%ebx,%ecx
1466	xorl	%ecx,%edi
1467
1468	movl	96(%ebp),%edx
1469	movl	100(%ebp),%ecx
1470	addl	%edi,%edx
1471	roll	%cl,%edx
1472	xorl	%ecx,%ecx
1473	movl	$255,%ebx
1474	movb	%dh,%cl
1475	andl	%edx,%ebx
1476	shrl	$16,%edx
1477	xorl	%eax,%eax
1478	movb	%dh,%al
1479	andl	$255,%edx
1480	movl	CAST_S_table0(,%ecx,4),%ecx
1481	movl	CAST_S_table1(,%ebx,4),%ebx
1482	xorl	%ebx,%ecx
1483	movl	CAST_S_table2(,%eax,4),%ebx
1484	subl	%ebx,%ecx
1485	movl	CAST_S_table3(,%edx,4),%ebx
1486	addl	%ebx,%ecx
1487	xorl	%ecx,%esi
1488.L001cast_dec_skip:
1489
1490	movl	88(%ebp),%edx
1491	movl	92(%ebp),%ecx
1492	subl	%esi,%edx
1493	roll	%cl,%edx
1494	xorl	%ecx,%ecx
1495	movl	$255,%ebx
1496	movb	%dh,%cl
1497	andl	%edx,%ebx
1498	shrl	$16,%edx
1499	xorl	%eax,%eax
1500	movb	%dh,%al
1501	andl	$255,%edx
1502	movl	CAST_S_table0(,%ecx,4),%ecx
1503	movl	CAST_S_table1(,%ebx,4),%ebx
1504	addl	%ebx,%ecx
1505	movl	CAST_S_table2(,%eax,4),%ebx
1506	xorl	%ebx,%ecx
1507	movl	CAST_S_table3(,%edx,4),%ebx
1508	subl	%ebx,%ecx
1509	xorl	%ecx,%edi
1510
1511	movl	80(%ebp),%edx
1512	movl	84(%ebp),%ecx
1513	xorl	%edi,%edx
1514	roll	%cl,%edx
1515	xorl	%ecx,%ecx
1516	movl	$255,%ebx
1517	movb	%dh,%cl
1518	andl	%edx,%ebx
1519	shrl	$16,%edx
1520	xorl	%eax,%eax
1521	movb	%dh,%al
1522	andl	$255,%edx
1523	movl	CAST_S_table0(,%ecx,4),%ecx
1524	movl	CAST_S_table1(,%ebx,4),%ebx
1525	subl	%ebx,%ecx
1526	movl	CAST_S_table2(,%eax,4),%ebx
1527	addl	%ebx,%ecx
1528	movl	CAST_S_table3(,%edx,4),%ebx
1529	xorl	%ebx,%ecx
1530	xorl	%ecx,%esi
1531
1532	movl	72(%ebp),%edx
1533	movl	76(%ebp),%ecx
1534	addl	%esi,%edx
1535	roll	%cl,%edx
1536	xorl	%ecx,%ecx
1537	movl	$255,%ebx
1538	movb	%dh,%cl
1539	andl	%edx,%ebx
1540	shrl	$16,%edx
1541	xorl	%eax,%eax
1542	movb	%dh,%al
1543	andl	$255,%edx
1544	movl	CAST_S_table0(,%ecx,4),%ecx
1545	movl	CAST_S_table1(,%ebx,4),%ebx
1546	xorl	%ebx,%ecx
1547	movl	CAST_S_table2(,%eax,4),%ebx
1548	subl	%ebx,%ecx
1549	movl	CAST_S_table3(,%edx,4),%ebx
1550	addl	%ebx,%ecx
1551	xorl	%ecx,%edi
1552
1553	movl	64(%ebp),%edx
1554	movl	68(%ebp),%ecx
1555	subl	%edi,%edx
1556	roll	%cl,%edx
1557	xorl	%ecx,%ecx
1558	movl	$255,%ebx
1559	movb	%dh,%cl
1560	andl	%edx,%ebx
1561	shrl	$16,%edx
1562	xorl	%eax,%eax
1563	movb	%dh,%al
1564	andl	$255,%edx
1565	movl	CAST_S_table0(,%ecx,4),%ecx
1566	movl	CAST_S_table1(,%ebx,4),%ebx
1567	addl	%ebx,%ecx
1568	movl	CAST_S_table2(,%eax,4),%ebx
1569	xorl	%ebx,%ecx
1570	movl	CAST_S_table3(,%edx,4),%ebx
1571	subl	%ebx,%ecx
1572	xorl	%ecx,%esi
1573
1574	movl	56(%ebp),%edx
1575	movl	60(%ebp),%ecx
1576	xorl	%esi,%edx
1577	roll	%cl,%edx
1578	xorl	%ecx,%ecx
1579	movl	$255,%ebx
1580	movb	%dh,%cl
1581	andl	%edx,%ebx
1582	shrl	$16,%edx
1583	xorl	%eax,%eax
1584	movb	%dh,%al
1585	andl	$255,%edx
1586	movl	CAST_S_table0(,%ecx,4),%ecx
1587	movl	CAST_S_table1(,%ebx,4),%ebx
1588	subl	%ebx,%ecx
1589	movl	CAST_S_table2(,%eax,4),%ebx
1590	addl	%ebx,%ecx
1591	movl	CAST_S_table3(,%edx,4),%ebx
1592	xorl	%ebx,%ecx
1593	xorl	%ecx,%edi
1594
1595	movl	48(%ebp),%edx
1596	movl	52(%ebp),%ecx
1597	addl	%edi,%edx
1598	roll	%cl,%edx
1599	xorl	%ecx,%ecx
1600	movl	$255,%ebx
1601	movb	%dh,%cl
1602	andl	%edx,%ebx
1603	shrl	$16,%edx
1604	xorl	%eax,%eax
1605	movb	%dh,%al
1606	andl	$255,%edx
1607	movl	CAST_S_table0(,%ecx,4),%ecx
1608	movl	CAST_S_table1(,%ebx,4),%ebx
1609	xorl	%ebx,%ecx
1610	movl	CAST_S_table2(,%eax,4),%ebx
1611	subl	%ebx,%ecx
1612	movl	CAST_S_table3(,%edx,4),%ebx
1613	addl	%ebx,%ecx
1614	xorl	%ecx,%esi
1615
1616	movl	40(%ebp),%edx
1617	movl	44(%ebp),%ecx
1618	subl	%esi,%edx
1619	roll	%cl,%edx
1620	xorl	%ecx,%ecx
1621	movl	$255,%ebx
1622	movb	%dh,%cl
1623	andl	%edx,%ebx
1624	shrl	$16,%edx
1625	xorl	%eax,%eax
1626	movb	%dh,%al
1627	andl	$255,%edx
1628	movl	CAST_S_table0(,%ecx,4),%ecx
1629	movl	CAST_S_table1(,%ebx,4),%ebx
1630	addl	%ebx,%ecx
1631	movl	CAST_S_table2(,%eax,4),%ebx
1632	xorl	%ebx,%ecx
1633	movl	CAST_S_table3(,%edx,4),%ebx
1634	subl	%ebx,%ecx
1635	xorl	%ecx,%edi
1636
1637	movl	32(%ebp),%edx
1638	movl	36(%ebp),%ecx
1639	xorl	%edi,%edx
1640	roll	%cl,%edx
1641	xorl	%ecx,%ecx
1642	movl	$255,%ebx
1643	movb	%dh,%cl
1644	andl	%edx,%ebx
1645	shrl	$16,%edx
1646	xorl	%eax,%eax
1647	movb	%dh,%al
1648	andl	$255,%edx
1649	movl	CAST_S_table0(,%ecx,4),%ecx
1650	movl	CAST_S_table1(,%ebx,4),%ebx
1651	subl	%ebx,%ecx
1652	movl	CAST_S_table2(,%eax,4),%ebx
1653	addl	%ebx,%ecx
1654	movl	CAST_S_table3(,%edx,4),%ebx
1655	xorl	%ebx,%ecx
1656	xorl	%ecx,%esi
1657
1658	movl	24(%ebp),%edx
1659	movl	28(%ebp),%ecx
1660	addl	%esi,%edx
1661	roll	%cl,%edx
1662	xorl	%ecx,%ecx
1663	movl	$255,%ebx
1664	movb	%dh,%cl
1665	andl	%edx,%ebx
1666	shrl	$16,%edx
1667	xorl	%eax,%eax
1668	movb	%dh,%al
1669	andl	$255,%edx
1670	movl	CAST_S_table0(,%ecx,4),%ecx
1671	movl	CAST_S_table1(,%ebx,4),%ebx
1672	xorl	%ebx,%ecx
1673	movl	CAST_S_table2(,%eax,4),%ebx
1674	subl	%ebx,%ecx
1675	movl	CAST_S_table3(,%edx,4),%ebx
1676	addl	%ebx,%ecx
1677	xorl	%ecx,%edi
1678
1679	movl	16(%ebp),%edx
1680	movl	20(%ebp),%ecx
1681	subl	%edi,%edx
1682	roll	%cl,%edx
1683	xorl	%ecx,%ecx
1684	movl	$255,%ebx
1685	movb	%dh,%cl
1686	andl	%edx,%ebx
1687	shrl	$16,%edx
1688	xorl	%eax,%eax
1689	movb	%dh,%al
1690	andl	$255,%edx
1691	movl	CAST_S_table0(,%ecx,4),%ecx
1692	movl	CAST_S_table1(,%ebx,4),%ebx
1693	addl	%ebx,%ecx
1694	movl	CAST_S_table2(,%eax,4),%ebx
1695	xorl	%ebx,%ecx
1696	movl	CAST_S_table3(,%edx,4),%ebx
1697	subl	%ebx,%ecx
1698	xorl	%ecx,%esi
1699
1700	movl	8(%ebp),%edx
1701	movl	12(%ebp),%ecx
1702	xorl	%esi,%edx
1703	roll	%cl,%edx
1704	xorl	%ecx,%ecx
1705	movl	$255,%ebx
1706	movb	%dh,%cl
1707	andl	%edx,%ebx
1708	shrl	$16,%edx
1709	xorl	%eax,%eax
1710	movb	%dh,%al
1711	andl	$255,%edx
1712	movl	CAST_S_table0(,%ecx,4),%ecx
1713	movl	CAST_S_table1(,%ebx,4),%ebx
1714	subl	%ebx,%ecx
1715	movl	CAST_S_table2(,%eax,4),%ebx
1716	addl	%ebx,%ecx
1717	movl	CAST_S_table3(,%edx,4),%ebx
1718	xorl	%ebx,%ecx
1719	xorl	%ecx,%edi
1720
1721	movl	(%ebp),%edx
1722	movl	4(%ebp),%ecx
1723	addl	%edi,%edx
1724	roll	%cl,%edx
1725	xorl	%ecx,%ecx
1726	movl	$255,%ebx
1727	movb	%dh,%cl
1728	andl	%edx,%ebx
1729	shrl	$16,%edx
1730	xorl	%eax,%eax
1731	movb	%dh,%al
1732	andl	$255,%edx
1733	movl	CAST_S_table0(,%ecx,4),%ecx
1734	movl	CAST_S_table1(,%ebx,4),%ebx
1735	xorl	%ebx,%ecx
1736	movl	CAST_S_table2(,%eax,4),%ebx
1737	subl	%ebx,%ecx
1738	movl	CAST_S_table3(,%edx,4),%ebx
1739	addl	%ebx,%ecx
1740	xorl	%ecx,%esi
1741	nop
1742	movl	20(%esp),%eax
1743	movl	%edi,4(%eax)
1744	movl	%esi,(%eax)
1745	popl	%edi
1746	popl	%esi
1747	popl	%ebx
1748	popl	%ebp
1749	ret
1750.size	CAST_decrypt,.-.L_CAST_decrypt_begin
1751.globl	CAST_cbc_encrypt
1752.type	CAST_cbc_encrypt,@function
1753.align	16
1754CAST_cbc_encrypt:
1755.L_CAST_cbc_encrypt_begin:
1756	#ifdef __CET__
1757
1758.byte	243,15,30,251
1759	#endif
1760
1761
1762	pushl	%ebp
1763	pushl	%ebx
1764	pushl	%esi
1765	pushl	%edi
1766	movl	28(%esp),%ebp
1767
1768	movl	36(%esp),%ebx
1769	movl	(%ebx),%esi
1770	movl	4(%ebx),%edi
1771	pushl	%edi
1772	pushl	%esi
1773	pushl	%edi
1774	pushl	%esi
1775	movl	%esp,%ebx
1776	movl	36(%esp),%esi
1777	movl	40(%esp),%edi
1778
1779	movl	56(%esp),%ecx
1780
1781	movl	48(%esp),%eax
1782	pushl	%eax
1783	pushl	%ebx
1784	cmpl	$0,%ecx
1785	jz	.L002decrypt
1786	andl	$4294967288,%ebp
1787	movl	8(%esp),%eax
1788	movl	12(%esp),%ebx
1789	jz	.L003encrypt_finish
1790.L004encrypt_loop:
1791	movl	(%esi),%ecx
1792	movl	4(%esi),%edx
1793	xorl	%ecx,%eax
1794	xorl	%edx,%ebx
1795	bswap	%eax
1796	bswap	%ebx
1797	movl	%eax,8(%esp)
1798	movl	%ebx,12(%esp)
1799	call	.L_CAST_encrypt_begin
1800	movl	8(%esp),%eax
1801	movl	12(%esp),%ebx
1802	bswap	%eax
1803	bswap	%ebx
1804	movl	%eax,(%edi)
1805	movl	%ebx,4(%edi)
1806	addl	$8,%esi
1807	addl	$8,%edi
1808	subl	$8,%ebp
1809	jnz	.L004encrypt_loop
1810.L003encrypt_finish:
1811	movl	52(%esp),%ebp
1812	andl	$7,%ebp
1813	jz	.L005finish
1814	call	.L006PIC_point
1815.L006PIC_point:
1816	popl	%edx
1817	leal	.L007cbc_enc_jmp_table-.L006PIC_point(%edx),%ecx
1818	movl	(%ecx,%ebp,4),%ebp
1819	addl	%edx,%ebp
1820	xorl	%ecx,%ecx
1821	xorl	%edx,%edx
1822	jmp	*%ebp
1823.L008ej7:
1824	#ifdef __CET__
1825
1826.byte	243,15,30,251
1827	#endif
1828
1829	movb	6(%esi),%dh
1830	shll	$8,%edx
1831.L009ej6:
1832	#ifdef __CET__
1833
1834.byte	243,15,30,251
1835	#endif
1836
1837	movb	5(%esi),%dh
1838.L010ej5:
1839	#ifdef __CET__
1840
1841.byte	243,15,30,251
1842	#endif
1843
1844	movb	4(%esi),%dl
1845.L011ej4:
1846	#ifdef __CET__
1847
1848.byte	243,15,30,251
1849	#endif
1850
1851	movl	(%esi),%ecx
1852	jmp	.L012ejend
1853.L013ej3:
1854	#ifdef __CET__
1855
1856.byte	243,15,30,251
1857	#endif
1858
1859	movb	2(%esi),%ch
1860	shll	$8,%ecx
1861.L014ej2:
1862	#ifdef __CET__
1863
1864.byte	243,15,30,251
1865	#endif
1866
1867	movb	1(%esi),%ch
1868.L015ej1:
1869	#ifdef __CET__
1870
1871.byte	243,15,30,251
1872	#endif
1873
1874	movb	(%esi),%cl
1875.L012ejend:
1876	xorl	%ecx,%eax
1877	xorl	%edx,%ebx
1878	bswap	%eax
1879	bswap	%ebx
1880	movl	%eax,8(%esp)
1881	movl	%ebx,12(%esp)
1882	call	.L_CAST_encrypt_begin
1883	movl	8(%esp),%eax
1884	movl	12(%esp),%ebx
1885	bswap	%eax
1886	bswap	%ebx
1887	movl	%eax,(%edi)
1888	movl	%ebx,4(%edi)
1889	jmp	.L005finish
1890.L002decrypt:
1891	andl	$4294967288,%ebp
1892	movl	16(%esp),%eax
1893	movl	20(%esp),%ebx
1894	jz	.L016decrypt_finish
1895.L017decrypt_loop:
1896	movl	(%esi),%eax
1897	movl	4(%esi),%ebx
1898	bswap	%eax
1899	bswap	%ebx
1900	movl	%eax,8(%esp)
1901	movl	%ebx,12(%esp)
1902	call	.L_CAST_decrypt_begin
1903	movl	8(%esp),%eax
1904	movl	12(%esp),%ebx
1905	bswap	%eax
1906	bswap	%ebx
1907	movl	16(%esp),%ecx
1908	movl	20(%esp),%edx
1909	xorl	%eax,%ecx
1910	xorl	%ebx,%edx
1911	movl	(%esi),%eax
1912	movl	4(%esi),%ebx
1913	movl	%ecx,(%edi)
1914	movl	%edx,4(%edi)
1915	movl	%eax,16(%esp)
1916	movl	%ebx,20(%esp)
1917	addl	$8,%esi
1918	addl	$8,%edi
1919	subl	$8,%ebp
1920	jnz	.L017decrypt_loop
1921.L016decrypt_finish:
1922	movl	52(%esp),%ebp
1923	andl	$7,%ebp
1924	jz	.L005finish
1925	movl	(%esi),%eax
1926	movl	4(%esi),%ebx
1927	bswap	%eax
1928	bswap	%ebx
1929	movl	%eax,8(%esp)
1930	movl	%ebx,12(%esp)
1931	call	.L_CAST_decrypt_begin
1932	movl	8(%esp),%eax
1933	movl	12(%esp),%ebx
1934	bswap	%eax
1935	bswap	%ebx
1936	movl	16(%esp),%ecx
1937	movl	20(%esp),%edx
1938	xorl	%eax,%ecx
1939	xorl	%ebx,%edx
1940	movl	(%esi),%eax
1941	movl	4(%esi),%ebx
1942.L018dj7:
1943	rorl	$16,%edx
1944	movb	%dl,6(%edi)
1945	shrl	$16,%edx
1946.L019dj6:
1947	movb	%dh,5(%edi)
1948.L020dj5:
1949	movb	%dl,4(%edi)
1950.L021dj4:
1951	movl	%ecx,(%edi)
1952	jmp	.L022djend
1953.L023dj3:
1954	rorl	$16,%ecx
1955	movb	%cl,2(%edi)
1956	shll	$16,%ecx
1957.L024dj2:
1958	movb	%ch,1(%esi)
1959.L025dj1:
1960	movb	%cl,(%esi)
1961.L022djend:
1962	jmp	.L005finish
1963.L005finish:
1964	movl	60(%esp),%ecx
1965	addl	$24,%esp
1966	movl	%eax,(%ecx)
1967	movl	%ebx,4(%ecx)
1968	popl	%edi
1969	popl	%esi
1970	popl	%ebx
1971	popl	%ebp
1972	ret
1973.align	64
1974.L007cbc_enc_jmp_table:
1975.long	0
1976.long	.L015ej1-.L006PIC_point
1977.long	.L014ej2-.L006PIC_point
1978.long	.L013ej3-.L006PIC_point
1979.long	.L011ej4-.L006PIC_point
1980.long	.L010ej5-.L006PIC_point
1981.long	.L009ej6-.L006PIC_point
1982.long	.L008ej7-.L006PIC_point
1983.align	64
1984.size	CAST_cbc_encrypt,.-.L_CAST_cbc_encrypt_begin
1985
1986	.section ".note.gnu.property", "a"
1987	.p2align 2
1988	.long 1f - 0f
1989	.long 4f - 1f
1990	.long 5
19910:
1992	.asciz "GNU"
19931:
1994	.p2align 2
1995	.long 0xc0000002
1996	.long 3f - 2f
19972:
1998	.long 3
19993:
2000	.p2align 2
20014:
2002#endif
2003