195967Speter	# $FreeBSD$
2238405Sjkim.file	"cast-586.s"
395967Speter.text
4238405Sjkim.globl	CAST_encrypt
5238405Sjkim.type	CAST_encrypt,@function
6238405Sjkim.align	16
795967SpeterCAST_encrypt:
8238405Sjkim.L_CAST_encrypt_begin:
995967Speter
1095967Speter	pushl	%ebp
1195967Speter	pushl	%ebx
12238405Sjkim	movl	12(%esp),%ebx
13238405Sjkim	movl	16(%esp),%ebp
1495967Speter	pushl	%esi
1595967Speter	pushl	%edi
16127326Smarkm
17238405Sjkim	movl	(%ebx),%edi
18238405Sjkim	movl	4(%ebx),%esi
19127326Smarkm
20238405Sjkim	movl	128(%ebp),%eax
2195967Speter	pushl	%eax
22238405Sjkim	xorl	%eax,%eax
23127326Smarkm
24238405Sjkim	movl	(%ebp),%edx
25238405Sjkim	movl	4(%ebp),%ecx
26238405Sjkim	addl	%esi,%edx
27238405Sjkim	roll	%cl,%edx
28238405Sjkim	movl	%edx,%ebx
29238405Sjkim	xorl	%ecx,%ecx
30238405Sjkim	movb	%dh,%cl
31238405Sjkim	andl	$255,%ebx
32238405Sjkim	shrl	$16,%edx
33238405Sjkim	xorl	%eax,%eax
34238405Sjkim	movb	%dh,%al
35238405Sjkim	andl	$255,%edx
3695967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
3795967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
38238405Sjkim	xorl	%ebx,%ecx
3995967Speter	movl	CAST_S_table2(,%eax,4),%ebx
40238405Sjkim	subl	%ebx,%ecx
4195967Speter	movl	CAST_S_table3(,%edx,4),%ebx
42238405Sjkim	addl	%ebx,%ecx
43238405Sjkim	xorl	%ecx,%edi
44127326Smarkm
45238405Sjkim	movl	8(%ebp),%edx
46238405Sjkim	movl	12(%ebp),%ecx
47238405Sjkim	xorl	%edi,%edx
48238405Sjkim	roll	%cl,%edx
49238405Sjkim	movl	%edx,%ebx
50238405Sjkim	xorl	%ecx,%ecx
51238405Sjkim	movb	%dh,%cl
52238405Sjkim	andl	$255,%ebx
53238405Sjkim	shrl	$16,%edx
54238405Sjkim	xorl	%eax,%eax
55238405Sjkim	movb	%dh,%al
56238405Sjkim	andl	$255,%edx
5795967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
5895967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
59238405Sjkim	subl	%ebx,%ecx
6095967Speter	movl	CAST_S_table2(,%eax,4),%ebx
61238405Sjkim	addl	%ebx,%ecx
6295967Speter	movl	CAST_S_table3(,%edx,4),%ebx
63238405Sjkim	xorl	%ebx,%ecx
64238405Sjkim	xorl	%ecx,%esi
65127326Smarkm
66238405Sjkim	movl	16(%ebp),%edx
67238405Sjkim	movl	20(%ebp),%ecx
68238405Sjkim	subl	%esi,%edx
69238405Sjkim	roll	%cl,%edx
70238405Sjkim	movl	%edx,%ebx
71238405Sjkim	xorl	%ecx,%ecx
72238405Sjkim	movb	%dh,%cl
73238405Sjkim	andl	$255,%ebx
74238405Sjkim	shrl	$16,%edx
75238405Sjkim	xorl	%eax,%eax
76238405Sjkim	movb	%dh,%al
77238405Sjkim	andl	$255,%edx
7895967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
7995967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
80238405Sjkim	addl	%ebx,%ecx
8195967Speter	movl	CAST_S_table2(,%eax,4),%ebx
82238405Sjkim	xorl	%ebx,%ecx
8395967Speter	movl	CAST_S_table3(,%edx,4),%ebx
84238405Sjkim	subl	%ebx,%ecx
85238405Sjkim	xorl	%ecx,%edi
86127326Smarkm
87238405Sjkim	movl	24(%ebp),%edx
88238405Sjkim	movl	28(%ebp),%ecx
89238405Sjkim	addl	%edi,%edx
90238405Sjkim	roll	%cl,%edx
91238405Sjkim	movl	%edx,%ebx
92238405Sjkim	xorl	%ecx,%ecx
93238405Sjkim	movb	%dh,%cl
94238405Sjkim	andl	$255,%ebx
95238405Sjkim	shrl	$16,%edx
96238405Sjkim	xorl	%eax,%eax
97238405Sjkim	movb	%dh,%al
98238405Sjkim	andl	$255,%edx
9995967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
10095967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
101238405Sjkim	xorl	%ebx,%ecx
10295967Speter	movl	CAST_S_table2(,%eax,4),%ebx
103238405Sjkim	subl	%ebx,%ecx
10495967Speter	movl	CAST_S_table3(,%edx,4),%ebx
105238405Sjkim	addl	%ebx,%ecx
106238405Sjkim	xorl	%ecx,%esi
107127326Smarkm
108238405Sjkim	movl	32(%ebp),%edx
109238405Sjkim	movl	36(%ebp),%ecx
110238405Sjkim	xorl	%esi,%edx
111238405Sjkim	roll	%cl,%edx
112238405Sjkim	movl	%edx,%ebx
113238405Sjkim	xorl	%ecx,%ecx
114238405Sjkim	movb	%dh,%cl
115238405Sjkim	andl	$255,%ebx
116238405Sjkim	shrl	$16,%edx
117238405Sjkim	xorl	%eax,%eax
118238405Sjkim	movb	%dh,%al
119238405Sjkim	andl	$255,%edx
12095967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
12195967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
122238405Sjkim	subl	%ebx,%ecx
12395967Speter	movl	CAST_S_table2(,%eax,4),%ebx
124238405Sjkim	addl	%ebx,%ecx
12595967Speter	movl	CAST_S_table3(,%edx,4),%ebx
126238405Sjkim	xorl	%ebx,%ecx
127238405Sjkim	xorl	%ecx,%edi
128127326Smarkm
129238405Sjkim	movl	40(%ebp),%edx
130238405Sjkim	movl	44(%ebp),%ecx
131238405Sjkim	subl	%edi,%edx
132238405Sjkim	roll	%cl,%edx
133238405Sjkim	movl	%edx,%ebx
134238405Sjkim	xorl	%ecx,%ecx
135238405Sjkim	movb	%dh,%cl
136238405Sjkim	andl	$255,%ebx
137238405Sjkim	shrl	$16,%edx
138238405Sjkim	xorl	%eax,%eax
139238405Sjkim	movb	%dh,%al
140238405Sjkim	andl	$255,%edx
14195967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
14295967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
143238405Sjkim	addl	%ebx,%ecx
14495967Speter	movl	CAST_S_table2(,%eax,4),%ebx
145238405Sjkim	xorl	%ebx,%ecx
14695967Speter	movl	CAST_S_table3(,%edx,4),%ebx
147238405Sjkim	subl	%ebx,%ecx
148238405Sjkim	xorl	%ecx,%esi
149127326Smarkm
150238405Sjkim	movl	48(%ebp),%edx
151238405Sjkim	movl	52(%ebp),%ecx
152238405Sjkim	addl	%esi,%edx
153238405Sjkim	roll	%cl,%edx
154238405Sjkim	movl	%edx,%ebx
155238405Sjkim	xorl	%ecx,%ecx
156238405Sjkim	movb	%dh,%cl
157238405Sjkim	andl	$255,%ebx
158238405Sjkim	shrl	$16,%edx
159238405Sjkim	xorl	%eax,%eax
160238405Sjkim	movb	%dh,%al
161238405Sjkim	andl	$255,%edx
16295967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
16395967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
164238405Sjkim	xorl	%ebx,%ecx
16595967Speter	movl	CAST_S_table2(,%eax,4),%ebx
166238405Sjkim	subl	%ebx,%ecx
16795967Speter	movl	CAST_S_table3(,%edx,4),%ebx
168238405Sjkim	addl	%ebx,%ecx
169238405Sjkim	xorl	%ecx,%edi
170127326Smarkm
171238405Sjkim	movl	56(%ebp),%edx
172238405Sjkim	movl	60(%ebp),%ecx
173238405Sjkim	xorl	%edi,%edx
174238405Sjkim	roll	%cl,%edx
175238405Sjkim	movl	%edx,%ebx
176238405Sjkim	xorl	%ecx,%ecx
177238405Sjkim	movb	%dh,%cl
178238405Sjkim	andl	$255,%ebx
179238405Sjkim	shrl	$16,%edx
180238405Sjkim	xorl	%eax,%eax
181238405Sjkim	movb	%dh,%al
182238405Sjkim	andl	$255,%edx
18395967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
18495967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
185238405Sjkim	subl	%ebx,%ecx
18695967Speter	movl	CAST_S_table2(,%eax,4),%ebx
187238405Sjkim	addl	%ebx,%ecx
18895967Speter	movl	CAST_S_table3(,%edx,4),%ebx
189238405Sjkim	xorl	%ebx,%ecx
190238405Sjkim	xorl	%ecx,%esi
191127326Smarkm
192238405Sjkim	movl	64(%ebp),%edx
193238405Sjkim	movl	68(%ebp),%ecx
194238405Sjkim	subl	%esi,%edx
195238405Sjkim	roll	%cl,%edx
196238405Sjkim	movl	%edx,%ebx
197238405Sjkim	xorl	%ecx,%ecx
198238405Sjkim	movb	%dh,%cl
199238405Sjkim	andl	$255,%ebx
200238405Sjkim	shrl	$16,%edx
201238405Sjkim	xorl	%eax,%eax
202238405Sjkim	movb	%dh,%al
203238405Sjkim	andl	$255,%edx
20495967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
20595967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
206238405Sjkim	addl	%ebx,%ecx
20795967Speter	movl	CAST_S_table2(,%eax,4),%ebx
208238405Sjkim	xorl	%ebx,%ecx
20995967Speter	movl	CAST_S_table3(,%edx,4),%ebx
210238405Sjkim	subl	%ebx,%ecx
211238405Sjkim	xorl	%ecx,%edi
212127326Smarkm
213238405Sjkim	movl	72(%ebp),%edx
214238405Sjkim	movl	76(%ebp),%ecx
215238405Sjkim	addl	%edi,%edx
216238405Sjkim	roll	%cl,%edx
217238405Sjkim	movl	%edx,%ebx
218238405Sjkim	xorl	%ecx,%ecx
219238405Sjkim	movb	%dh,%cl
220238405Sjkim	andl	$255,%ebx
221238405Sjkim	shrl	$16,%edx
222238405Sjkim	xorl	%eax,%eax
223238405Sjkim	movb	%dh,%al
224238405Sjkim	andl	$255,%edx
22595967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
22695967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
227238405Sjkim	xorl	%ebx,%ecx
22895967Speter	movl	CAST_S_table2(,%eax,4),%ebx
229238405Sjkim	subl	%ebx,%ecx
23095967Speter	movl	CAST_S_table3(,%edx,4),%ebx
231238405Sjkim	addl	%ebx,%ecx
232238405Sjkim	xorl	%ecx,%esi
233127326Smarkm
234238405Sjkim	movl	80(%ebp),%edx
235238405Sjkim	movl	84(%ebp),%ecx
236238405Sjkim	xorl	%esi,%edx
237238405Sjkim	roll	%cl,%edx
238238405Sjkim	movl	%edx,%ebx
239238405Sjkim	xorl	%ecx,%ecx
240238405Sjkim	movb	%dh,%cl
241238405Sjkim	andl	$255,%ebx
242238405Sjkim	shrl	$16,%edx
243238405Sjkim	xorl	%eax,%eax
244238405Sjkim	movb	%dh,%al
245238405Sjkim	andl	$255,%edx
24695967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
24795967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
248238405Sjkim	subl	%ebx,%ecx
24995967Speter	movl	CAST_S_table2(,%eax,4),%ebx
250238405Sjkim	addl	%ebx,%ecx
25195967Speter	movl	CAST_S_table3(,%edx,4),%ebx
252238405Sjkim	xorl	%ebx,%ecx
253238405Sjkim	xorl	%ecx,%edi
254127326Smarkm
255238405Sjkim	movl	88(%ebp),%edx
256238405Sjkim	movl	92(%ebp),%ecx
257238405Sjkim	subl	%edi,%edx
258238405Sjkim	roll	%cl,%edx
259238405Sjkim	movl	%edx,%ebx
260238405Sjkim	xorl	%ecx,%ecx
261238405Sjkim	movb	%dh,%cl
262238405Sjkim	andl	$255,%ebx
263238405Sjkim	shrl	$16,%edx
264238405Sjkim	xorl	%eax,%eax
265238405Sjkim	movb	%dh,%al
266238405Sjkim	andl	$255,%edx
26795967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
26895967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
269238405Sjkim	addl	%ebx,%ecx
27095967Speter	movl	CAST_S_table2(,%eax,4),%ebx
271238405Sjkim	xorl	%ebx,%ecx
27295967Speter	movl	CAST_S_table3(,%edx,4),%ebx
273238405Sjkim	subl	%ebx,%ecx
274238405Sjkim	xorl	%ecx,%esi
275127326Smarkm
27695967Speter	popl	%edx
277238405Sjkim	orl	%edx,%edx
27895967Speter	jnz	.L000cast_enc_done
279127326Smarkm
280238405Sjkim	movl	96(%ebp),%edx
281238405Sjkim	movl	100(%ebp),%ecx
282238405Sjkim	addl	%esi,%edx
283238405Sjkim	roll	%cl,%edx
284238405Sjkim	movl	%edx,%ebx
285238405Sjkim	xorl	%ecx,%ecx
286238405Sjkim	movb	%dh,%cl
287238405Sjkim	andl	$255,%ebx
288238405Sjkim	shrl	$16,%edx
289238405Sjkim	xorl	%eax,%eax
290238405Sjkim	movb	%dh,%al
291238405Sjkim	andl	$255,%edx
29295967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
29395967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
294238405Sjkim	xorl	%ebx,%ecx
29595967Speter	movl	CAST_S_table2(,%eax,4),%ebx
296238405Sjkim	subl	%ebx,%ecx
29795967Speter	movl	CAST_S_table3(,%edx,4),%ebx
298238405Sjkim	addl	%ebx,%ecx
299238405Sjkim	xorl	%ecx,%edi
300127326Smarkm
301238405Sjkim	movl	104(%ebp),%edx
302238405Sjkim	movl	108(%ebp),%ecx
303238405Sjkim	xorl	%edi,%edx
304238405Sjkim	roll	%cl,%edx
305238405Sjkim	movl	%edx,%ebx
306238405Sjkim	xorl	%ecx,%ecx
307238405Sjkim	movb	%dh,%cl
308238405Sjkim	andl	$255,%ebx
309238405Sjkim	shrl	$16,%edx
310238405Sjkim	xorl	%eax,%eax
311238405Sjkim	movb	%dh,%al
312238405Sjkim	andl	$255,%edx
31395967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
31495967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
315238405Sjkim	subl	%ebx,%ecx
31695967Speter	movl	CAST_S_table2(,%eax,4),%ebx
317238405Sjkim	addl	%ebx,%ecx
31895967Speter	movl	CAST_S_table3(,%edx,4),%ebx
319238405Sjkim	xorl	%ebx,%ecx
320238405Sjkim	xorl	%ecx,%esi
321127326Smarkm
322238405Sjkim	movl	112(%ebp),%edx
323238405Sjkim	movl	116(%ebp),%ecx
324238405Sjkim	subl	%esi,%edx
325238405Sjkim	roll	%cl,%edx
326238405Sjkim	movl	%edx,%ebx
327238405Sjkim	xorl	%ecx,%ecx
328238405Sjkim	movb	%dh,%cl
329238405Sjkim	andl	$255,%ebx
330238405Sjkim	shrl	$16,%edx
331238405Sjkim	xorl	%eax,%eax
332238405Sjkim	movb	%dh,%al
333238405Sjkim	andl	$255,%edx
33495967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
33595967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
336238405Sjkim	addl	%ebx,%ecx
33795967Speter	movl	CAST_S_table2(,%eax,4),%ebx
338238405Sjkim	xorl	%ebx,%ecx
33995967Speter	movl	CAST_S_table3(,%edx,4),%ebx
340238405Sjkim	subl	%ebx,%ecx
341238405Sjkim	xorl	%ecx,%edi
342127326Smarkm
343238405Sjkim	movl	120(%ebp),%edx
344238405Sjkim	movl	124(%ebp),%ecx
345238405Sjkim	addl	%edi,%edx
346238405Sjkim	roll	%cl,%edx
347238405Sjkim	movl	%edx,%ebx
348238405Sjkim	xorl	%ecx,%ecx
349238405Sjkim	movb	%dh,%cl
350238405Sjkim	andl	$255,%ebx
351238405Sjkim	shrl	$16,%edx
352238405Sjkim	xorl	%eax,%eax
353238405Sjkim	movb	%dh,%al
354238405Sjkim	andl	$255,%edx
35595967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
35695967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
357238405Sjkim	xorl	%ebx,%ecx
35895967Speter	movl	CAST_S_table2(,%eax,4),%ebx
359238405Sjkim	subl	%ebx,%ecx
36095967Speter	movl	CAST_S_table3(,%edx,4),%ebx
361238405Sjkim	addl	%ebx,%ecx
362238405Sjkim	xorl	%ecx,%esi
36395967Speter.L000cast_enc_done:
36495967Speter	nop
365238405Sjkim	movl	20(%esp),%eax
366238405Sjkim	movl	%edi,4(%eax)
367238405Sjkim	movl	%esi,(%eax)
36895967Speter	popl	%edi
36995967Speter	popl	%esi
37095967Speter	popl	%ebx
37195967Speter	popl	%ebp
37295967Speter	ret
373238405Sjkim.size	CAST_encrypt,.-.L_CAST_encrypt_begin
374238405Sjkim.globl	CAST_decrypt
375238405Sjkim.type	CAST_decrypt,@function
376238405Sjkim.align	16
37795967SpeterCAST_decrypt:
378238405Sjkim.L_CAST_decrypt_begin:
37995967Speter
38095967Speter	pushl	%ebp
38195967Speter	pushl	%ebx
382238405Sjkim	movl	12(%esp),%ebx
383238405Sjkim	movl	16(%esp),%ebp
38495967Speter	pushl	%esi
38595967Speter	pushl	%edi
386127326Smarkm
387238405Sjkim	movl	(%ebx),%edi
388238405Sjkim	movl	4(%ebx),%esi
389127326Smarkm
390238405Sjkim	movl	128(%ebp),%eax
391238405Sjkim	orl	%eax,%eax
39295967Speter	jnz	.L001cast_dec_skip
393238405Sjkim	xorl	%eax,%eax
394127326Smarkm
395238405Sjkim	movl	120(%ebp),%edx
396238405Sjkim	movl	124(%ebp),%ecx
397238405Sjkim	addl	%esi,%edx
398238405Sjkim	roll	%cl,%edx
399238405Sjkim	movl	%edx,%ebx
400238405Sjkim	xorl	%ecx,%ecx
401238405Sjkim	movb	%dh,%cl
402238405Sjkim	andl	$255,%ebx
403238405Sjkim	shrl	$16,%edx
404238405Sjkim	xorl	%eax,%eax
405238405Sjkim	movb	%dh,%al
406238405Sjkim	andl	$255,%edx
40795967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
40895967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
409238405Sjkim	xorl	%ebx,%ecx
41095967Speter	movl	CAST_S_table2(,%eax,4),%ebx
411238405Sjkim	subl	%ebx,%ecx
41295967Speter	movl	CAST_S_table3(,%edx,4),%ebx
413238405Sjkim	addl	%ebx,%ecx
414238405Sjkim	xorl	%ecx,%edi
415127326Smarkm
416238405Sjkim	movl	112(%ebp),%edx
417238405Sjkim	movl	116(%ebp),%ecx
418238405Sjkim	subl	%edi,%edx
419238405Sjkim	roll	%cl,%edx
420238405Sjkim	movl	%edx,%ebx
421238405Sjkim	xorl	%ecx,%ecx
422238405Sjkim	movb	%dh,%cl
423238405Sjkim	andl	$255,%ebx
424238405Sjkim	shrl	$16,%edx
425238405Sjkim	xorl	%eax,%eax
426238405Sjkim	movb	%dh,%al
427238405Sjkim	andl	$255,%edx
42895967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
42995967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
430238405Sjkim	addl	%ebx,%ecx
43195967Speter	movl	CAST_S_table2(,%eax,4),%ebx
432238405Sjkim	xorl	%ebx,%ecx
43395967Speter	movl	CAST_S_table3(,%edx,4),%ebx
434238405Sjkim	subl	%ebx,%ecx
435238405Sjkim	xorl	%ecx,%esi
436127326Smarkm
437238405Sjkim	movl	104(%ebp),%edx
438238405Sjkim	movl	108(%ebp),%ecx
439238405Sjkim	xorl	%esi,%edx
440238405Sjkim	roll	%cl,%edx
441238405Sjkim	movl	%edx,%ebx
442238405Sjkim	xorl	%ecx,%ecx
443238405Sjkim	movb	%dh,%cl
444238405Sjkim	andl	$255,%ebx
445238405Sjkim	shrl	$16,%edx
446238405Sjkim	xorl	%eax,%eax
447238405Sjkim	movb	%dh,%al
448238405Sjkim	andl	$255,%edx
44995967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
45095967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
451238405Sjkim	subl	%ebx,%ecx
45295967Speter	movl	CAST_S_table2(,%eax,4),%ebx
453238405Sjkim	addl	%ebx,%ecx
45495967Speter	movl	CAST_S_table3(,%edx,4),%ebx
455238405Sjkim	xorl	%ebx,%ecx
456238405Sjkim	xorl	%ecx,%edi
457127326Smarkm
458238405Sjkim	movl	96(%ebp),%edx
459238405Sjkim	movl	100(%ebp),%ecx
460238405Sjkim	addl	%edi,%edx
461238405Sjkim	roll	%cl,%edx
462238405Sjkim	movl	%edx,%ebx
463238405Sjkim	xorl	%ecx,%ecx
464238405Sjkim	movb	%dh,%cl
465238405Sjkim	andl	$255,%ebx
466238405Sjkim	shrl	$16,%edx
467238405Sjkim	xorl	%eax,%eax
468238405Sjkim	movb	%dh,%al
469238405Sjkim	andl	$255,%edx
47095967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
47195967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
472238405Sjkim	xorl	%ebx,%ecx
47395967Speter	movl	CAST_S_table2(,%eax,4),%ebx
474238405Sjkim	subl	%ebx,%ecx
47595967Speter	movl	CAST_S_table3(,%edx,4),%ebx
476238405Sjkim	addl	%ebx,%ecx
477238405Sjkim	xorl	%ecx,%esi
47895967Speter.L001cast_dec_skip:
479127326Smarkm
480238405Sjkim	movl	88(%ebp),%edx
481238405Sjkim	movl	92(%ebp),%ecx
482238405Sjkim	subl	%esi,%edx
483238405Sjkim	roll	%cl,%edx
484238405Sjkim	movl	%edx,%ebx
485238405Sjkim	xorl	%ecx,%ecx
486238405Sjkim	movb	%dh,%cl
487238405Sjkim	andl	$255,%ebx
488238405Sjkim	shrl	$16,%edx
489238405Sjkim	xorl	%eax,%eax
490238405Sjkim	movb	%dh,%al
491238405Sjkim	andl	$255,%edx
49295967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
49395967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
494238405Sjkim	addl	%ebx,%ecx
49595967Speter	movl	CAST_S_table2(,%eax,4),%ebx
496238405Sjkim	xorl	%ebx,%ecx
49795967Speter	movl	CAST_S_table3(,%edx,4),%ebx
498238405Sjkim	subl	%ebx,%ecx
499238405Sjkim	xorl	%ecx,%edi
500127326Smarkm
501238405Sjkim	movl	80(%ebp),%edx
502238405Sjkim	movl	84(%ebp),%ecx
503238405Sjkim	xorl	%edi,%edx
504238405Sjkim	roll	%cl,%edx
505238405Sjkim	movl	%edx,%ebx
506238405Sjkim	xorl	%ecx,%ecx
507238405Sjkim	movb	%dh,%cl
508238405Sjkim	andl	$255,%ebx
509238405Sjkim	shrl	$16,%edx
510238405Sjkim	xorl	%eax,%eax
511238405Sjkim	movb	%dh,%al
512238405Sjkim	andl	$255,%edx
51395967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
51495967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
515238405Sjkim	subl	%ebx,%ecx
51695967Speter	movl	CAST_S_table2(,%eax,4),%ebx
517238405Sjkim	addl	%ebx,%ecx
51895967Speter	movl	CAST_S_table3(,%edx,4),%ebx
519238405Sjkim	xorl	%ebx,%ecx
520238405Sjkim	xorl	%ecx,%esi
521127326Smarkm
522238405Sjkim	movl	72(%ebp),%edx
523238405Sjkim	movl	76(%ebp),%ecx
524238405Sjkim	addl	%esi,%edx
525238405Sjkim	roll	%cl,%edx
526238405Sjkim	movl	%edx,%ebx
527238405Sjkim	xorl	%ecx,%ecx
528238405Sjkim	movb	%dh,%cl
529238405Sjkim	andl	$255,%ebx
530238405Sjkim	shrl	$16,%edx
531238405Sjkim	xorl	%eax,%eax
532238405Sjkim	movb	%dh,%al
533238405Sjkim	andl	$255,%edx
53495967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
53595967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
536238405Sjkim	xorl	%ebx,%ecx
53795967Speter	movl	CAST_S_table2(,%eax,4),%ebx
538238405Sjkim	subl	%ebx,%ecx
53995967Speter	movl	CAST_S_table3(,%edx,4),%ebx
540238405Sjkim	addl	%ebx,%ecx
541238405Sjkim	xorl	%ecx,%edi
542127326Smarkm
543238405Sjkim	movl	64(%ebp),%edx
544238405Sjkim	movl	68(%ebp),%ecx
545238405Sjkim	subl	%edi,%edx
546238405Sjkim	roll	%cl,%edx
547238405Sjkim	movl	%edx,%ebx
548238405Sjkim	xorl	%ecx,%ecx
549238405Sjkim	movb	%dh,%cl
550238405Sjkim	andl	$255,%ebx
551238405Sjkim	shrl	$16,%edx
552238405Sjkim	xorl	%eax,%eax
553238405Sjkim	movb	%dh,%al
554238405Sjkim	andl	$255,%edx
55595967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
55695967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
557238405Sjkim	addl	%ebx,%ecx
55895967Speter	movl	CAST_S_table2(,%eax,4),%ebx
559238405Sjkim	xorl	%ebx,%ecx
56095967Speter	movl	CAST_S_table3(,%edx,4),%ebx
561238405Sjkim	subl	%ebx,%ecx
562238405Sjkim	xorl	%ecx,%esi
563127326Smarkm
564238405Sjkim	movl	56(%ebp),%edx
565238405Sjkim	movl	60(%ebp),%ecx
566238405Sjkim	xorl	%esi,%edx
567238405Sjkim	roll	%cl,%edx
568238405Sjkim	movl	%edx,%ebx
569238405Sjkim	xorl	%ecx,%ecx
570238405Sjkim	movb	%dh,%cl
571238405Sjkim	andl	$255,%ebx
572238405Sjkim	shrl	$16,%edx
573238405Sjkim	xorl	%eax,%eax
574238405Sjkim	movb	%dh,%al
575238405Sjkim	andl	$255,%edx
57695967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
57795967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
578238405Sjkim	subl	%ebx,%ecx
57995967Speter	movl	CAST_S_table2(,%eax,4),%ebx
580238405Sjkim	addl	%ebx,%ecx
58195967Speter	movl	CAST_S_table3(,%edx,4),%ebx
582238405Sjkim	xorl	%ebx,%ecx
583238405Sjkim	xorl	%ecx,%edi
584127326Smarkm
585238405Sjkim	movl	48(%ebp),%edx
586238405Sjkim	movl	52(%ebp),%ecx
587238405Sjkim	addl	%edi,%edx
588238405Sjkim	roll	%cl,%edx
589238405Sjkim	movl	%edx,%ebx
590238405Sjkim	xorl	%ecx,%ecx
591238405Sjkim	movb	%dh,%cl
592238405Sjkim	andl	$255,%ebx
593238405Sjkim	shrl	$16,%edx
594238405Sjkim	xorl	%eax,%eax
595238405Sjkim	movb	%dh,%al
596238405Sjkim	andl	$255,%edx
59795967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
59895967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
599238405Sjkim	xorl	%ebx,%ecx
60095967Speter	movl	CAST_S_table2(,%eax,4),%ebx
601238405Sjkim	subl	%ebx,%ecx
60295967Speter	movl	CAST_S_table3(,%edx,4),%ebx
603238405Sjkim	addl	%ebx,%ecx
604238405Sjkim	xorl	%ecx,%esi
605127326Smarkm
606238405Sjkim	movl	40(%ebp),%edx
607238405Sjkim	movl	44(%ebp),%ecx
608238405Sjkim	subl	%esi,%edx
609238405Sjkim	roll	%cl,%edx
610238405Sjkim	movl	%edx,%ebx
611238405Sjkim	xorl	%ecx,%ecx
612238405Sjkim	movb	%dh,%cl
613238405Sjkim	andl	$255,%ebx
614238405Sjkim	shrl	$16,%edx
615238405Sjkim	xorl	%eax,%eax
616238405Sjkim	movb	%dh,%al
617238405Sjkim	andl	$255,%edx
61895967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
61995967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
620238405Sjkim	addl	%ebx,%ecx
62195967Speter	movl	CAST_S_table2(,%eax,4),%ebx
622238405Sjkim	xorl	%ebx,%ecx
62395967Speter	movl	CAST_S_table3(,%edx,4),%ebx
624238405Sjkim	subl	%ebx,%ecx
625238405Sjkim	xorl	%ecx,%edi
626127326Smarkm
627238405Sjkim	movl	32(%ebp),%edx
628238405Sjkim	movl	36(%ebp),%ecx
629238405Sjkim	xorl	%edi,%edx
630238405Sjkim	roll	%cl,%edx
631238405Sjkim	movl	%edx,%ebx
632238405Sjkim	xorl	%ecx,%ecx
633238405Sjkim	movb	%dh,%cl
634238405Sjkim	andl	$255,%ebx
635238405Sjkim	shrl	$16,%edx
636238405Sjkim	xorl	%eax,%eax
637238405Sjkim	movb	%dh,%al
638238405Sjkim	andl	$255,%edx
63995967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
64095967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
641238405Sjkim	subl	%ebx,%ecx
64295967Speter	movl	CAST_S_table2(,%eax,4),%ebx
643238405Sjkim	addl	%ebx,%ecx
64495967Speter	movl	CAST_S_table3(,%edx,4),%ebx
645238405Sjkim	xorl	%ebx,%ecx
646238405Sjkim	xorl	%ecx,%esi
647127326Smarkm
648238405Sjkim	movl	24(%ebp),%edx
649238405Sjkim	movl	28(%ebp),%ecx
650238405Sjkim	addl	%esi,%edx
651238405Sjkim	roll	%cl,%edx
652238405Sjkim	movl	%edx,%ebx
653238405Sjkim	xorl	%ecx,%ecx
654238405Sjkim	movb	%dh,%cl
655238405Sjkim	andl	$255,%ebx
656238405Sjkim	shrl	$16,%edx
657238405Sjkim	xorl	%eax,%eax
658238405Sjkim	movb	%dh,%al
659238405Sjkim	andl	$255,%edx
66095967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
66195967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
662238405Sjkim	xorl	%ebx,%ecx
66395967Speter	movl	CAST_S_table2(,%eax,4),%ebx
664238405Sjkim	subl	%ebx,%ecx
66595967Speter	movl	CAST_S_table3(,%edx,4),%ebx
666238405Sjkim	addl	%ebx,%ecx
667238405Sjkim	xorl	%ecx,%edi
668127326Smarkm
669238405Sjkim	movl	16(%ebp),%edx
670238405Sjkim	movl	20(%ebp),%ecx
671238405Sjkim	subl	%edi,%edx
672238405Sjkim	roll	%cl,%edx
673238405Sjkim	movl	%edx,%ebx
674238405Sjkim	xorl	%ecx,%ecx
675238405Sjkim	movb	%dh,%cl
676238405Sjkim	andl	$255,%ebx
677238405Sjkim	shrl	$16,%edx
678238405Sjkim	xorl	%eax,%eax
679238405Sjkim	movb	%dh,%al
680238405Sjkim	andl	$255,%edx
68195967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
68295967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
683238405Sjkim	addl	%ebx,%ecx
68495967Speter	movl	CAST_S_table2(,%eax,4),%ebx
685238405Sjkim	xorl	%ebx,%ecx
68695967Speter	movl	CAST_S_table3(,%edx,4),%ebx
687238405Sjkim	subl	%ebx,%ecx
688238405Sjkim	xorl	%ecx,%esi
689127326Smarkm
690238405Sjkim	movl	8(%ebp),%edx
691238405Sjkim	movl	12(%ebp),%ecx
692238405Sjkim	xorl	%esi,%edx
693238405Sjkim	roll	%cl,%edx
694238405Sjkim	movl	%edx,%ebx
695238405Sjkim	xorl	%ecx,%ecx
696238405Sjkim	movb	%dh,%cl
697238405Sjkim	andl	$255,%ebx
698238405Sjkim	shrl	$16,%edx
699238405Sjkim	xorl	%eax,%eax
700238405Sjkim	movb	%dh,%al
701238405Sjkim	andl	$255,%edx
70295967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
70395967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
704238405Sjkim	subl	%ebx,%ecx
70595967Speter	movl	CAST_S_table2(,%eax,4),%ebx
706238405Sjkim	addl	%ebx,%ecx
70795967Speter	movl	CAST_S_table3(,%edx,4),%ebx
708238405Sjkim	xorl	%ebx,%ecx
709238405Sjkim	xorl	%ecx,%edi
710127326Smarkm
711238405Sjkim	movl	(%ebp),%edx
712238405Sjkim	movl	4(%ebp),%ecx
713238405Sjkim	addl	%edi,%edx
714238405Sjkim	roll	%cl,%edx
715238405Sjkim	movl	%edx,%ebx
716238405Sjkim	xorl	%ecx,%ecx
717238405Sjkim	movb	%dh,%cl
718238405Sjkim	andl	$255,%ebx
719238405Sjkim	shrl	$16,%edx
720238405Sjkim	xorl	%eax,%eax
721238405Sjkim	movb	%dh,%al
722238405Sjkim	andl	$255,%edx
72395967Speter	movl	CAST_S_table0(,%ecx,4),%ecx
72495967Speter	movl	CAST_S_table1(,%ebx,4),%ebx
725238405Sjkim	xorl	%ebx,%ecx
72695967Speter	movl	CAST_S_table2(,%eax,4),%ebx
727238405Sjkim	subl	%ebx,%ecx
72895967Speter	movl	CAST_S_table3(,%edx,4),%ebx
729238405Sjkim	addl	%ebx,%ecx
730238405Sjkim	xorl	%ecx,%esi
73195967Speter	nop
732238405Sjkim	movl	20(%esp),%eax
733238405Sjkim	movl	%edi,4(%eax)
734238405Sjkim	movl	%esi,(%eax)
73595967Speter	popl	%edi
73695967Speter	popl	%esi
73795967Speter	popl	%ebx
73895967Speter	popl	%ebp
73995967Speter	ret
740238405Sjkim.size	CAST_decrypt,.-.L_CAST_decrypt_begin
741238405Sjkim.globl	CAST_cbc_encrypt
742238405Sjkim.type	CAST_cbc_encrypt,@function
743238405Sjkim.align	16
74495967SpeterCAST_cbc_encrypt:
745238405Sjkim.L_CAST_cbc_encrypt_begin:
74695967Speter
74795967Speter	pushl	%ebp
74895967Speter	pushl	%ebx
74995967Speter	pushl	%esi
75095967Speter	pushl	%edi
751238405Sjkim	movl	28(%esp),%ebp
752127326Smarkm
753238405Sjkim	movl	36(%esp),%ebx
754238405Sjkim	movl	(%ebx),%esi
755238405Sjkim	movl	4(%ebx),%edi
75695967Speter	pushl	%edi
75795967Speter	pushl	%esi
75895967Speter	pushl	%edi
75995967Speter	pushl	%esi
760238405Sjkim	movl	%esp,%ebx
761238405Sjkim	movl	36(%esp),%esi
762238405Sjkim	movl	40(%esp),%edi
763127326Smarkm
764238405Sjkim	movl	56(%esp),%ecx
765127326Smarkm
766238405Sjkim	movl	48(%esp),%eax
76795967Speter	pushl	%eax
76895967Speter	pushl	%ebx
769238405Sjkim	cmpl	$0,%ecx
77095967Speter	jz	.L002decrypt
771238405Sjkim	andl	$4294967288,%ebp
772238405Sjkim	movl	8(%esp),%eax
773238405Sjkim	movl	12(%esp),%ebx
77495967Speter	jz	.L003encrypt_finish
77595967Speter.L004encrypt_loop:
776238405Sjkim	movl	(%esi),%ecx
777238405Sjkim	movl	4(%esi),%edx
778238405Sjkim	xorl	%ecx,%eax
779238405Sjkim	xorl	%edx,%ebx
780238405Sjkim	bswap	%eax
781238405Sjkim	bswap	%ebx
782238405Sjkim	movl	%eax,8(%esp)
783238405Sjkim	movl	%ebx,12(%esp)
784238405Sjkim	call	.L_CAST_encrypt_begin
785238405Sjkim	movl	8(%esp),%eax
786238405Sjkim	movl	12(%esp),%ebx
787238405Sjkim	bswap	%eax
788238405Sjkim	bswap	%ebx
789238405Sjkim	movl	%eax,(%edi)
790238405Sjkim	movl	%ebx,4(%edi)
791238405Sjkim	addl	$8,%esi
792238405Sjkim	addl	$8,%edi
793238405Sjkim	subl	$8,%ebp
79495967Speter	jnz	.L004encrypt_loop
79595967Speter.L003encrypt_finish:
796238405Sjkim	movl	52(%esp),%ebp
797238405Sjkim	andl	$7,%ebp
79895967Speter	jz	.L005finish
799127326Smarkm	call	.L006PIC_point
800127326Smarkm.L006PIC_point:
801127326Smarkm	popl	%edx
802127326Smarkm	leal	.L007cbc_enc_jmp_table-.L006PIC_point(%edx),%ecx
803238405Sjkim	movl	(%ecx,%ebp,4),%ebp
804238405Sjkim	addl	%edx,%ebp
805238405Sjkim	xorl	%ecx,%ecx
806238405Sjkim	xorl	%edx,%edx
80795967Speter	jmp	*%ebp
808127326Smarkm.L008ej7:
809238405Sjkim	movb	6(%esi),%dh
810238405Sjkim	shll	$8,%edx
811127326Smarkm.L009ej6:
812238405Sjkim	movb	5(%esi),%dh
813127326Smarkm.L010ej5:
814238405Sjkim	movb	4(%esi),%dl
815127326Smarkm.L011ej4:
816238405Sjkim	movl	(%esi),%ecx
817127326Smarkm	jmp	.L012ejend
818127326Smarkm.L013ej3:
819238405Sjkim	movb	2(%esi),%ch
820238405Sjkim	shll	$8,%ecx
821127326Smarkm.L014ej2:
822238405Sjkim	movb	1(%esi),%ch
823127326Smarkm.L015ej1:
824238405Sjkim	movb	(%esi),%cl
825127326Smarkm.L012ejend:
826238405Sjkim	xorl	%ecx,%eax
827238405Sjkim	xorl	%edx,%ebx
828238405Sjkim	bswap	%eax
829238405Sjkim	bswap	%ebx
830238405Sjkim	movl	%eax,8(%esp)
831238405Sjkim	movl	%ebx,12(%esp)
832238405Sjkim	call	.L_CAST_encrypt_begin
833238405Sjkim	movl	8(%esp),%eax
834238405Sjkim	movl	12(%esp),%ebx
835238405Sjkim	bswap	%eax
836238405Sjkim	bswap	%ebx
837238405Sjkim	movl	%eax,(%edi)
838238405Sjkim	movl	%ebx,4(%edi)
83995967Speter	jmp	.L005finish
84095967Speter.L002decrypt:
841238405Sjkim	andl	$4294967288,%ebp
842238405Sjkim	movl	16(%esp),%eax
843238405Sjkim	movl	20(%esp),%ebx
844127326Smarkm	jz	.L016decrypt_finish
845127326Smarkm.L017decrypt_loop:
846238405Sjkim	movl	(%esi),%eax
847238405Sjkim	movl	4(%esi),%ebx
848238405Sjkim	bswap	%eax
849238405Sjkim	bswap	%ebx
850238405Sjkim	movl	%eax,8(%esp)
851238405Sjkim	movl	%ebx,12(%esp)
852238405Sjkim	call	.L_CAST_decrypt_begin
853238405Sjkim	movl	8(%esp),%eax
854238405Sjkim	movl	12(%esp),%ebx
855238405Sjkim	bswap	%eax
856238405Sjkim	bswap	%ebx
857238405Sjkim	movl	16(%esp),%ecx
858238405Sjkim	movl	20(%esp),%edx
859238405Sjkim	xorl	%eax,%ecx
860238405Sjkim	xorl	%ebx,%edx
861238405Sjkim	movl	(%esi),%eax
862238405Sjkim	movl	4(%esi),%ebx
863238405Sjkim	movl	%ecx,(%edi)
864238405Sjkim	movl	%edx,4(%edi)
865238405Sjkim	movl	%eax,16(%esp)
866238405Sjkim	movl	%ebx,20(%esp)
867238405Sjkim	addl	$8,%esi
868238405Sjkim	addl	$8,%edi
869238405Sjkim	subl	$8,%ebp
870127326Smarkm	jnz	.L017decrypt_loop
871127326Smarkm.L016decrypt_finish:
872238405Sjkim	movl	52(%esp),%ebp
873238405Sjkim	andl	$7,%ebp
87495967Speter	jz	.L005finish
875238405Sjkim	movl	(%esi),%eax
876238405Sjkim	movl	4(%esi),%ebx
877238405Sjkim	bswap	%eax
878238405Sjkim	bswap	%ebx
879238405Sjkim	movl	%eax,8(%esp)
880238405Sjkim	movl	%ebx,12(%esp)
881238405Sjkim	call	.L_CAST_decrypt_begin
882238405Sjkim	movl	8(%esp),%eax
883238405Sjkim	movl	12(%esp),%ebx
884238405Sjkim	bswap	%eax
885238405Sjkim	bswap	%ebx
886238405Sjkim	movl	16(%esp),%ecx
887238405Sjkim	movl	20(%esp),%edx
888238405Sjkim	xorl	%eax,%ecx
889238405Sjkim	xorl	%ebx,%edx
890238405Sjkim	movl	(%esi),%eax
891238405Sjkim	movl	4(%esi),%ebx
892127326Smarkm.L018dj7:
893238405Sjkim	rorl	$16,%edx
894238405Sjkim	movb	%dl,6(%edi)
895238405Sjkim	shrl	$16,%edx
896127326Smarkm.L019dj6:
897238405Sjkim	movb	%dh,5(%edi)
898127326Smarkm.L020dj5:
899238405Sjkim	movb	%dl,4(%edi)
900127326Smarkm.L021dj4:
901238405Sjkim	movl	%ecx,(%edi)
902127326Smarkm	jmp	.L022djend
903127326Smarkm.L023dj3:
904238405Sjkim	rorl	$16,%ecx
905238405Sjkim	movb	%cl,2(%edi)
906238405Sjkim	shll	$16,%ecx
907127326Smarkm.L024dj2:
908238405Sjkim	movb	%ch,1(%esi)
909127326Smarkm.L025dj1:
910238405Sjkim	movb	%cl,(%esi)
911127326Smarkm.L022djend:
91295967Speter	jmp	.L005finish
91395967Speter.L005finish:
914238405Sjkim	movl	60(%esp),%ecx
915238405Sjkim	addl	$24,%esp
916238405Sjkim	movl	%eax,(%ecx)
917238405Sjkim	movl	%ebx,4(%ecx)
91895967Speter	popl	%edi
91995967Speter	popl	%esi
92095967Speter	popl	%ebx
92195967Speter	popl	%ebp
92295967Speter	ret
923238405Sjkim.align	64
924127326Smarkm.L007cbc_enc_jmp_table:
925238405Sjkim.long	0
926238405Sjkim.long	.L015ej1-.L006PIC_point
927238405Sjkim.long	.L014ej2-.L006PIC_point
928238405Sjkim.long	.L013ej3-.L006PIC_point
929238405Sjkim.long	.L011ej4-.L006PIC_point
930238405Sjkim.long	.L010ej5-.L006PIC_point
931238405Sjkim.long	.L009ej6-.L006PIC_point
932238405Sjkim.long	.L008ej7-.L006PIC_point
933238405Sjkim.align	64
934238405Sjkim.size	CAST_cbc_encrypt,.-.L_CAST_cbc_encrypt_begin
935