cmll-x86.S revision 305153
1/* $FreeBSD: stable/11/secure/lib/libcrypto/i386/cmll-x86.S 305153 2016-08-31 20:33:59Z jkim $ */
2/* Do not modify. This file is auto-generated from cmll-x86.pl. */
3#ifdef PIC
4.file	"cmll-x86.S"
5.text
6.globl	Camellia_EncryptBlock_Rounds
7.type	Camellia_EncryptBlock_Rounds,@function
8.align	16
9Camellia_EncryptBlock_Rounds:
10.L_Camellia_EncryptBlock_Rounds_begin:
11	pushl	%ebp
12	pushl	%ebx
13	pushl	%esi
14	pushl	%edi
15	movl	20(%esp),%eax
16	movl	24(%esp),%esi
17	movl	28(%esp),%edi
18	movl	%esp,%ebx
19	subl	$28,%esp
20	andl	$-64,%esp
21	leal	-127(%edi),%ecx
22	subl	%esp,%ecx
23	negl	%ecx
24	andl	$960,%ecx
25	subl	%ecx,%esp
26	addl	$4,%esp
27	shll	$6,%eax
28	leal	(%edi,%eax,1),%eax
29	movl	%ebx,20(%esp)
30	movl	%eax,16(%esp)
31	call	.L000pic_point
32.L000pic_point:
33	popl	%ebp
34	leal	.LCamellia_SBOX-.L000pic_point(%ebp),%ebp
35	movl	(%esi),%eax
36	movl	4(%esi),%ebx
37	movl	8(%esi),%ecx
38	bswap	%eax
39	movl	12(%esi),%edx
40	bswap	%ebx
41	bswap	%ecx
42	bswap	%edx
43	call	_x86_Camellia_encrypt
44	movl	20(%esp),%esp
45	bswap	%eax
46	movl	32(%esp),%esi
47	bswap	%ebx
48	bswap	%ecx
49	bswap	%edx
50	movl	%eax,(%esi)
51	movl	%ebx,4(%esi)
52	movl	%ecx,8(%esi)
53	movl	%edx,12(%esi)
54	popl	%edi
55	popl	%esi
56	popl	%ebx
57	popl	%ebp
58	ret
59.size	Camellia_EncryptBlock_Rounds,.-.L_Camellia_EncryptBlock_Rounds_begin
60.globl	Camellia_EncryptBlock
61.type	Camellia_EncryptBlock,@function
62.align	16
63Camellia_EncryptBlock:
64.L_Camellia_EncryptBlock_begin:
65	movl	$128,%eax
66	subl	4(%esp),%eax
67	movl	$3,%eax
68	adcl	$0,%eax
69	movl	%eax,4(%esp)
70	jmp	.L_Camellia_EncryptBlock_Rounds_begin
71.size	Camellia_EncryptBlock,.-.L_Camellia_EncryptBlock_begin
72.globl	Camellia_encrypt
73.type	Camellia_encrypt,@function
74.align	16
75Camellia_encrypt:
76.L_Camellia_encrypt_begin:
77	pushl	%ebp
78	pushl	%ebx
79	pushl	%esi
80	pushl	%edi
81	movl	20(%esp),%esi
82	movl	28(%esp),%edi
83	movl	%esp,%ebx
84	subl	$28,%esp
85	andl	$-64,%esp
86	movl	272(%edi),%eax
87	leal	-127(%edi),%ecx
88	subl	%esp,%ecx
89	negl	%ecx
90	andl	$960,%ecx
91	subl	%ecx,%esp
92	addl	$4,%esp
93	shll	$6,%eax
94	leal	(%edi,%eax,1),%eax
95	movl	%ebx,20(%esp)
96	movl	%eax,16(%esp)
97	call	.L001pic_point
98.L001pic_point:
99	popl	%ebp
100	leal	.LCamellia_SBOX-.L001pic_point(%ebp),%ebp
101	movl	(%esi),%eax
102	movl	4(%esi),%ebx
103	movl	8(%esi),%ecx
104	bswap	%eax
105	movl	12(%esi),%edx
106	bswap	%ebx
107	bswap	%ecx
108	bswap	%edx
109	call	_x86_Camellia_encrypt
110	movl	20(%esp),%esp
111	bswap	%eax
112	movl	24(%esp),%esi
113	bswap	%ebx
114	bswap	%ecx
115	bswap	%edx
116	movl	%eax,(%esi)
117	movl	%ebx,4(%esi)
118	movl	%ecx,8(%esi)
119	movl	%edx,12(%esi)
120	popl	%edi
121	popl	%esi
122	popl	%ebx
123	popl	%ebp
124	ret
125.size	Camellia_encrypt,.-.L_Camellia_encrypt_begin
126.type	_x86_Camellia_encrypt,@function
127.align	16
128_x86_Camellia_encrypt:
129	xorl	(%edi),%eax
130	xorl	4(%edi),%ebx
131	xorl	8(%edi),%ecx
132	xorl	12(%edi),%edx
133	movl	16(%edi),%esi
134	movl	%eax,4(%esp)
135	movl	%ebx,8(%esp)
136	movl	%ecx,12(%esp)
137	movl	%edx,16(%esp)
138.align	16
139.L002loop:
140	xorl	%esi,%eax
141	xorl	20(%edi),%ebx
142	movzbl	%ah,%esi
143	movl	2052(%ebp,%esi,8),%edx
144	movzbl	%al,%esi
145	xorl	4(%ebp,%esi,8),%edx
146	shrl	$16,%eax
147	movzbl	%bl,%esi
148	movl	(%ebp,%esi,8),%ecx
149	movzbl	%ah,%esi
150	xorl	(%ebp,%esi,8),%edx
151	movzbl	%bh,%esi
152	xorl	4(%ebp,%esi,8),%ecx
153	shrl	$16,%ebx
154	movzbl	%al,%eax
155	xorl	2048(%ebp,%eax,8),%edx
156	movzbl	%bh,%esi
157	movl	16(%esp),%eax
158	xorl	%edx,%ecx
159	rorl	$8,%edx
160	xorl	2048(%ebp,%esi,8),%ecx
161	movzbl	%bl,%esi
162	movl	12(%esp),%ebx
163	xorl	%eax,%edx
164	xorl	2052(%ebp,%esi,8),%ecx
165	movl	24(%edi),%esi
166	xorl	%ecx,%edx
167	movl	%edx,16(%esp)
168	xorl	%ebx,%ecx
169	movl	%ecx,12(%esp)
170	xorl	%esi,%ecx
171	xorl	28(%edi),%edx
172	movzbl	%ch,%esi
173	movl	2052(%ebp,%esi,8),%ebx
174	movzbl	%cl,%esi
175	xorl	4(%ebp,%esi,8),%ebx
176	shrl	$16,%ecx
177	movzbl	%dl,%esi
178	movl	(%ebp,%esi,8),%eax
179	movzbl	%ch,%esi
180	xorl	(%ebp,%esi,8),%ebx
181	movzbl	%dh,%esi
182	xorl	4(%ebp,%esi,8),%eax
183	shrl	$16,%edx
184	movzbl	%cl,%ecx
185	xorl	2048(%ebp,%ecx,8),%ebx
186	movzbl	%dh,%esi
187	movl	8(%esp),%ecx
188	xorl	%ebx,%eax
189	rorl	$8,%ebx
190	xorl	2048(%ebp,%esi,8),%eax
191	movzbl	%dl,%esi
192	movl	4(%esp),%edx
193	xorl	%ecx,%ebx
194	xorl	2052(%ebp,%esi,8),%eax
195	movl	32(%edi),%esi
196	xorl	%eax,%ebx
197	movl	%ebx,8(%esp)
198	xorl	%edx,%eax
199	movl	%eax,4(%esp)
200	xorl	%esi,%eax
201	xorl	36(%edi),%ebx
202	movzbl	%ah,%esi
203	movl	2052(%ebp,%esi,8),%edx
204	movzbl	%al,%esi
205	xorl	4(%ebp,%esi,8),%edx
206	shrl	$16,%eax
207	movzbl	%bl,%esi
208	movl	(%ebp,%esi,8),%ecx
209	movzbl	%ah,%esi
210	xorl	(%ebp,%esi,8),%edx
211	movzbl	%bh,%esi
212	xorl	4(%ebp,%esi,8),%ecx
213	shrl	$16,%ebx
214	movzbl	%al,%eax
215	xorl	2048(%ebp,%eax,8),%edx
216	movzbl	%bh,%esi
217	movl	16(%esp),%eax
218	xorl	%edx,%ecx
219	rorl	$8,%edx
220	xorl	2048(%ebp,%esi,8),%ecx
221	movzbl	%bl,%esi
222	movl	12(%esp),%ebx
223	xorl	%eax,%edx
224	xorl	2052(%ebp,%esi,8),%ecx
225	movl	40(%edi),%esi
226	xorl	%ecx,%edx
227	movl	%edx,16(%esp)
228	xorl	%ebx,%ecx
229	movl	%ecx,12(%esp)
230	xorl	%esi,%ecx
231	xorl	44(%edi),%edx
232	movzbl	%ch,%esi
233	movl	2052(%ebp,%esi,8),%ebx
234	movzbl	%cl,%esi
235	xorl	4(%ebp,%esi,8),%ebx
236	shrl	$16,%ecx
237	movzbl	%dl,%esi
238	movl	(%ebp,%esi,8),%eax
239	movzbl	%ch,%esi
240	xorl	(%ebp,%esi,8),%ebx
241	movzbl	%dh,%esi
242	xorl	4(%ebp,%esi,8),%eax
243	shrl	$16,%edx
244	movzbl	%cl,%ecx
245	xorl	2048(%ebp,%ecx,8),%ebx
246	movzbl	%dh,%esi
247	movl	8(%esp),%ecx
248	xorl	%ebx,%eax
249	rorl	$8,%ebx
250	xorl	2048(%ebp,%esi,8),%eax
251	movzbl	%dl,%esi
252	movl	4(%esp),%edx
253	xorl	%ecx,%ebx
254	xorl	2052(%ebp,%esi,8),%eax
255	movl	48(%edi),%esi
256	xorl	%eax,%ebx
257	movl	%ebx,8(%esp)
258	xorl	%edx,%eax
259	movl	%eax,4(%esp)
260	xorl	%esi,%eax
261	xorl	52(%edi),%ebx
262	movzbl	%ah,%esi
263	movl	2052(%ebp,%esi,8),%edx
264	movzbl	%al,%esi
265	xorl	4(%ebp,%esi,8),%edx
266	shrl	$16,%eax
267	movzbl	%bl,%esi
268	movl	(%ebp,%esi,8),%ecx
269	movzbl	%ah,%esi
270	xorl	(%ebp,%esi,8),%edx
271	movzbl	%bh,%esi
272	xorl	4(%ebp,%esi,8),%ecx
273	shrl	$16,%ebx
274	movzbl	%al,%eax
275	xorl	2048(%ebp,%eax,8),%edx
276	movzbl	%bh,%esi
277	movl	16(%esp),%eax
278	xorl	%edx,%ecx
279	rorl	$8,%edx
280	xorl	2048(%ebp,%esi,8),%ecx
281	movzbl	%bl,%esi
282	movl	12(%esp),%ebx
283	xorl	%eax,%edx
284	xorl	2052(%ebp,%esi,8),%ecx
285	movl	56(%edi),%esi
286	xorl	%ecx,%edx
287	movl	%edx,16(%esp)
288	xorl	%ebx,%ecx
289	movl	%ecx,12(%esp)
290	xorl	%esi,%ecx
291	xorl	60(%edi),%edx
292	movzbl	%ch,%esi
293	movl	2052(%ebp,%esi,8),%ebx
294	movzbl	%cl,%esi
295	xorl	4(%ebp,%esi,8),%ebx
296	shrl	$16,%ecx
297	movzbl	%dl,%esi
298	movl	(%ebp,%esi,8),%eax
299	movzbl	%ch,%esi
300	xorl	(%ebp,%esi,8),%ebx
301	movzbl	%dh,%esi
302	xorl	4(%ebp,%esi,8),%eax
303	shrl	$16,%edx
304	movzbl	%cl,%ecx
305	xorl	2048(%ebp,%ecx,8),%ebx
306	movzbl	%dh,%esi
307	movl	8(%esp),%ecx
308	xorl	%ebx,%eax
309	rorl	$8,%ebx
310	xorl	2048(%ebp,%esi,8),%eax
311	movzbl	%dl,%esi
312	movl	4(%esp),%edx
313	xorl	%ecx,%ebx
314	xorl	2052(%ebp,%esi,8),%eax
315	movl	64(%edi),%esi
316	xorl	%eax,%ebx
317	movl	%ebx,8(%esp)
318	xorl	%edx,%eax
319	movl	%eax,4(%esp)
320	addl	$64,%edi
321	cmpl	20(%esp),%edi
322	je	.L003done
323	andl	%eax,%esi
324	movl	16(%esp),%edx
325	roll	$1,%esi
326	movl	%edx,%ecx
327	xorl	%esi,%ebx
328	orl	12(%edi),%ecx
329	movl	%ebx,8(%esp)
330	xorl	12(%esp),%ecx
331	movl	4(%edi),%esi
332	movl	%ecx,12(%esp)
333	orl	%ebx,%esi
334	andl	8(%edi),%ecx
335	xorl	%esi,%eax
336	roll	$1,%ecx
337	movl	%eax,4(%esp)
338	xorl	%ecx,%edx
339	movl	16(%edi),%esi
340	movl	%edx,16(%esp)
341	jmp	.L002loop
342.align	8
343.L003done:
344	movl	%eax,%ecx
345	movl	%ebx,%edx
346	movl	12(%esp),%eax
347	movl	16(%esp),%ebx
348	xorl	%esi,%eax
349	xorl	4(%edi),%ebx
350	xorl	8(%edi),%ecx
351	xorl	12(%edi),%edx
352	ret
353.size	_x86_Camellia_encrypt,.-_x86_Camellia_encrypt
354.globl	Camellia_DecryptBlock_Rounds
355.type	Camellia_DecryptBlock_Rounds,@function
356.align	16
357Camellia_DecryptBlock_Rounds:
358.L_Camellia_DecryptBlock_Rounds_begin:
359	pushl	%ebp
360	pushl	%ebx
361	pushl	%esi
362	pushl	%edi
363	movl	20(%esp),%eax
364	movl	24(%esp),%esi
365	movl	28(%esp),%edi
366	movl	%esp,%ebx
367	subl	$28,%esp
368	andl	$-64,%esp
369	leal	-127(%edi),%ecx
370	subl	%esp,%ecx
371	negl	%ecx
372	andl	$960,%ecx
373	subl	%ecx,%esp
374	addl	$4,%esp
375	shll	$6,%eax
376	movl	%edi,16(%esp)
377	leal	(%edi,%eax,1),%edi
378	movl	%ebx,20(%esp)
379	call	.L004pic_point
380.L004pic_point:
381	popl	%ebp
382	leal	.LCamellia_SBOX-.L004pic_point(%ebp),%ebp
383	movl	(%esi),%eax
384	movl	4(%esi),%ebx
385	movl	8(%esi),%ecx
386	bswap	%eax
387	movl	12(%esi),%edx
388	bswap	%ebx
389	bswap	%ecx
390	bswap	%edx
391	call	_x86_Camellia_decrypt
392	movl	20(%esp),%esp
393	bswap	%eax
394	movl	32(%esp),%esi
395	bswap	%ebx
396	bswap	%ecx
397	bswap	%edx
398	movl	%eax,(%esi)
399	movl	%ebx,4(%esi)
400	movl	%ecx,8(%esi)
401	movl	%edx,12(%esi)
402	popl	%edi
403	popl	%esi
404	popl	%ebx
405	popl	%ebp
406	ret
407.size	Camellia_DecryptBlock_Rounds,.-.L_Camellia_DecryptBlock_Rounds_begin
408.globl	Camellia_DecryptBlock
409.type	Camellia_DecryptBlock,@function
410.align	16
411Camellia_DecryptBlock:
412.L_Camellia_DecryptBlock_begin:
413	movl	$128,%eax
414	subl	4(%esp),%eax
415	movl	$3,%eax
416	adcl	$0,%eax
417	movl	%eax,4(%esp)
418	jmp	.L_Camellia_DecryptBlock_Rounds_begin
419.size	Camellia_DecryptBlock,.-.L_Camellia_DecryptBlock_begin
420.globl	Camellia_decrypt
421.type	Camellia_decrypt,@function
422.align	16
423Camellia_decrypt:
424.L_Camellia_decrypt_begin:
425	pushl	%ebp
426	pushl	%ebx
427	pushl	%esi
428	pushl	%edi
429	movl	20(%esp),%esi
430	movl	28(%esp),%edi
431	movl	%esp,%ebx
432	subl	$28,%esp
433	andl	$-64,%esp
434	movl	272(%edi),%eax
435	leal	-127(%edi),%ecx
436	subl	%esp,%ecx
437	negl	%ecx
438	andl	$960,%ecx
439	subl	%ecx,%esp
440	addl	$4,%esp
441	shll	$6,%eax
442	movl	%edi,16(%esp)
443	leal	(%edi,%eax,1),%edi
444	movl	%ebx,20(%esp)
445	call	.L005pic_point
446.L005pic_point:
447	popl	%ebp
448	leal	.LCamellia_SBOX-.L005pic_point(%ebp),%ebp
449	movl	(%esi),%eax
450	movl	4(%esi),%ebx
451	movl	8(%esi),%ecx
452	bswap	%eax
453	movl	12(%esi),%edx
454	bswap	%ebx
455	bswap	%ecx
456	bswap	%edx
457	call	_x86_Camellia_decrypt
458	movl	20(%esp),%esp
459	bswap	%eax
460	movl	24(%esp),%esi
461	bswap	%ebx
462	bswap	%ecx
463	bswap	%edx
464	movl	%eax,(%esi)
465	movl	%ebx,4(%esi)
466	movl	%ecx,8(%esi)
467	movl	%edx,12(%esi)
468	popl	%edi
469	popl	%esi
470	popl	%ebx
471	popl	%ebp
472	ret
473.size	Camellia_decrypt,.-.L_Camellia_decrypt_begin
474.type	_x86_Camellia_decrypt,@function
475.align	16
476_x86_Camellia_decrypt:
477	xorl	(%edi),%eax
478	xorl	4(%edi),%ebx
479	xorl	8(%edi),%ecx
480	xorl	12(%edi),%edx
481	movl	-8(%edi),%esi
482	movl	%eax,4(%esp)
483	movl	%ebx,8(%esp)
484	movl	%ecx,12(%esp)
485	movl	%edx,16(%esp)
486.align	16
487.L006loop:
488	xorl	%esi,%eax
489	xorl	-4(%edi),%ebx
490	movzbl	%ah,%esi
491	movl	2052(%ebp,%esi,8),%edx
492	movzbl	%al,%esi
493	xorl	4(%ebp,%esi,8),%edx
494	shrl	$16,%eax
495	movzbl	%bl,%esi
496	movl	(%ebp,%esi,8),%ecx
497	movzbl	%ah,%esi
498	xorl	(%ebp,%esi,8),%edx
499	movzbl	%bh,%esi
500	xorl	4(%ebp,%esi,8),%ecx
501	shrl	$16,%ebx
502	movzbl	%al,%eax
503	xorl	2048(%ebp,%eax,8),%edx
504	movzbl	%bh,%esi
505	movl	16(%esp),%eax
506	xorl	%edx,%ecx
507	rorl	$8,%edx
508	xorl	2048(%ebp,%esi,8),%ecx
509	movzbl	%bl,%esi
510	movl	12(%esp),%ebx
511	xorl	%eax,%edx
512	xorl	2052(%ebp,%esi,8),%ecx
513	movl	-16(%edi),%esi
514	xorl	%ecx,%edx
515	movl	%edx,16(%esp)
516	xorl	%ebx,%ecx
517	movl	%ecx,12(%esp)
518	xorl	%esi,%ecx
519	xorl	-12(%edi),%edx
520	movzbl	%ch,%esi
521	movl	2052(%ebp,%esi,8),%ebx
522	movzbl	%cl,%esi
523	xorl	4(%ebp,%esi,8),%ebx
524	shrl	$16,%ecx
525	movzbl	%dl,%esi
526	movl	(%ebp,%esi,8),%eax
527	movzbl	%ch,%esi
528	xorl	(%ebp,%esi,8),%ebx
529	movzbl	%dh,%esi
530	xorl	4(%ebp,%esi,8),%eax
531	shrl	$16,%edx
532	movzbl	%cl,%ecx
533	xorl	2048(%ebp,%ecx,8),%ebx
534	movzbl	%dh,%esi
535	movl	8(%esp),%ecx
536	xorl	%ebx,%eax
537	rorl	$8,%ebx
538	xorl	2048(%ebp,%esi,8),%eax
539	movzbl	%dl,%esi
540	movl	4(%esp),%edx
541	xorl	%ecx,%ebx
542	xorl	2052(%ebp,%esi,8),%eax
543	movl	-24(%edi),%esi
544	xorl	%eax,%ebx
545	movl	%ebx,8(%esp)
546	xorl	%edx,%eax
547	movl	%eax,4(%esp)
548	xorl	%esi,%eax
549	xorl	-20(%edi),%ebx
550	movzbl	%ah,%esi
551	movl	2052(%ebp,%esi,8),%edx
552	movzbl	%al,%esi
553	xorl	4(%ebp,%esi,8),%edx
554	shrl	$16,%eax
555	movzbl	%bl,%esi
556	movl	(%ebp,%esi,8),%ecx
557	movzbl	%ah,%esi
558	xorl	(%ebp,%esi,8),%edx
559	movzbl	%bh,%esi
560	xorl	4(%ebp,%esi,8),%ecx
561	shrl	$16,%ebx
562	movzbl	%al,%eax
563	xorl	2048(%ebp,%eax,8),%edx
564	movzbl	%bh,%esi
565	movl	16(%esp),%eax
566	xorl	%edx,%ecx
567	rorl	$8,%edx
568	xorl	2048(%ebp,%esi,8),%ecx
569	movzbl	%bl,%esi
570	movl	12(%esp),%ebx
571	xorl	%eax,%edx
572	xorl	2052(%ebp,%esi,8),%ecx
573	movl	-32(%edi),%esi
574	xorl	%ecx,%edx
575	movl	%edx,16(%esp)
576	xorl	%ebx,%ecx
577	movl	%ecx,12(%esp)
578	xorl	%esi,%ecx
579	xorl	-28(%edi),%edx
580	movzbl	%ch,%esi
581	movl	2052(%ebp,%esi,8),%ebx
582	movzbl	%cl,%esi
583	xorl	4(%ebp,%esi,8),%ebx
584	shrl	$16,%ecx
585	movzbl	%dl,%esi
586	movl	(%ebp,%esi,8),%eax
587	movzbl	%ch,%esi
588	xorl	(%ebp,%esi,8),%ebx
589	movzbl	%dh,%esi
590	xorl	4(%ebp,%esi,8),%eax
591	shrl	$16,%edx
592	movzbl	%cl,%ecx
593	xorl	2048(%ebp,%ecx,8),%ebx
594	movzbl	%dh,%esi
595	movl	8(%esp),%ecx
596	xorl	%ebx,%eax
597	rorl	$8,%ebx
598	xorl	2048(%ebp,%esi,8),%eax
599	movzbl	%dl,%esi
600	movl	4(%esp),%edx
601	xorl	%ecx,%ebx
602	xorl	2052(%ebp,%esi,8),%eax
603	movl	-40(%edi),%esi
604	xorl	%eax,%ebx
605	movl	%ebx,8(%esp)
606	xorl	%edx,%eax
607	movl	%eax,4(%esp)
608	xorl	%esi,%eax
609	xorl	-36(%edi),%ebx
610	movzbl	%ah,%esi
611	movl	2052(%ebp,%esi,8),%edx
612	movzbl	%al,%esi
613	xorl	4(%ebp,%esi,8),%edx
614	shrl	$16,%eax
615	movzbl	%bl,%esi
616	movl	(%ebp,%esi,8),%ecx
617	movzbl	%ah,%esi
618	xorl	(%ebp,%esi,8),%edx
619	movzbl	%bh,%esi
620	xorl	4(%ebp,%esi,8),%ecx
621	shrl	$16,%ebx
622	movzbl	%al,%eax
623	xorl	2048(%ebp,%eax,8),%edx
624	movzbl	%bh,%esi
625	movl	16(%esp),%eax
626	xorl	%edx,%ecx
627	rorl	$8,%edx
628	xorl	2048(%ebp,%esi,8),%ecx
629	movzbl	%bl,%esi
630	movl	12(%esp),%ebx
631	xorl	%eax,%edx
632	xorl	2052(%ebp,%esi,8),%ecx
633	movl	-48(%edi),%esi
634	xorl	%ecx,%edx
635	movl	%edx,16(%esp)
636	xorl	%ebx,%ecx
637	movl	%ecx,12(%esp)
638	xorl	%esi,%ecx
639	xorl	-44(%edi),%edx
640	movzbl	%ch,%esi
641	movl	2052(%ebp,%esi,8),%ebx
642	movzbl	%cl,%esi
643	xorl	4(%ebp,%esi,8),%ebx
644	shrl	$16,%ecx
645	movzbl	%dl,%esi
646	movl	(%ebp,%esi,8),%eax
647	movzbl	%ch,%esi
648	xorl	(%ebp,%esi,8),%ebx
649	movzbl	%dh,%esi
650	xorl	4(%ebp,%esi,8),%eax
651	shrl	$16,%edx
652	movzbl	%cl,%ecx
653	xorl	2048(%ebp,%ecx,8),%ebx
654	movzbl	%dh,%esi
655	movl	8(%esp),%ecx
656	xorl	%ebx,%eax
657	rorl	$8,%ebx
658	xorl	2048(%ebp,%esi,8),%eax
659	movzbl	%dl,%esi
660	movl	4(%esp),%edx
661	xorl	%ecx,%ebx
662	xorl	2052(%ebp,%esi,8),%eax
663	movl	-56(%edi),%esi
664	xorl	%eax,%ebx
665	movl	%ebx,8(%esp)
666	xorl	%edx,%eax
667	movl	%eax,4(%esp)
668	subl	$64,%edi
669	cmpl	20(%esp),%edi
670	je	.L007done
671	andl	%eax,%esi
672	movl	16(%esp),%edx
673	roll	$1,%esi
674	movl	%edx,%ecx
675	xorl	%esi,%ebx
676	orl	4(%edi),%ecx
677	movl	%ebx,8(%esp)
678	xorl	12(%esp),%ecx
679	movl	12(%edi),%esi
680	movl	%ecx,12(%esp)
681	orl	%ebx,%esi
682	andl	(%edi),%ecx
683	xorl	%esi,%eax
684	roll	$1,%ecx
685	movl	%eax,4(%esp)
686	xorl	%ecx,%edx
687	movl	-8(%edi),%esi
688	movl	%edx,16(%esp)
689	jmp	.L006loop
690.align	8
691.L007done:
692	movl	%eax,%ecx
693	movl	%ebx,%edx
694	movl	12(%esp),%eax
695	movl	16(%esp),%ebx
696	xorl	%esi,%ecx
697	xorl	12(%edi),%edx
698	xorl	(%edi),%eax
699	xorl	4(%edi),%ebx
700	ret
701.size	_x86_Camellia_decrypt,.-_x86_Camellia_decrypt
702.globl	Camellia_Ekeygen
703.type	Camellia_Ekeygen,@function
704.align	16
705Camellia_Ekeygen:
706.L_Camellia_Ekeygen_begin:
707	pushl	%ebp
708	pushl	%ebx
709	pushl	%esi
710	pushl	%edi
711	subl	$16,%esp
712	movl	36(%esp),%ebp
713	movl	40(%esp),%esi
714	movl	44(%esp),%edi
715	movl	(%esi),%eax
716	movl	4(%esi),%ebx
717	movl	8(%esi),%ecx
718	movl	12(%esi),%edx
719	bswap	%eax
720	bswap	%ebx
721	bswap	%ecx
722	bswap	%edx
723	movl	%eax,(%edi)
724	movl	%ebx,4(%edi)
725	movl	%ecx,8(%edi)
726	movl	%edx,12(%edi)
727	cmpl	$128,%ebp
728	je	.L0081st128
729	movl	16(%esi),%eax
730	movl	20(%esi),%ebx
731	cmpl	$192,%ebp
732	je	.L0091st192
733	movl	24(%esi),%ecx
734	movl	28(%esi),%edx
735	jmp	.L0101st256
736.align	4
737.L0091st192:
738	movl	%eax,%ecx
739	movl	%ebx,%edx
740	notl	%ecx
741	notl	%edx
742.align	4
743.L0101st256:
744	bswap	%eax
745	bswap	%ebx
746	bswap	%ecx
747	bswap	%edx
748	movl	%eax,32(%edi)
749	movl	%ebx,36(%edi)
750	movl	%ecx,40(%edi)
751	movl	%edx,44(%edi)
752	xorl	(%edi),%eax
753	xorl	4(%edi),%ebx
754	xorl	8(%edi),%ecx
755	xorl	12(%edi),%edx
756.align	4
757.L0081st128:
758	call	.L011pic_point
759.L011pic_point:
760	popl	%ebp
761	leal	.LCamellia_SBOX-.L011pic_point(%ebp),%ebp
762	leal	.LCamellia_SIGMA-.LCamellia_SBOX(%ebp),%edi
763	movl	(%edi),%esi
764	movl	%eax,(%esp)
765	movl	%ebx,4(%esp)
766	movl	%ecx,8(%esp)
767	movl	%edx,12(%esp)
768	xorl	%esi,%eax
769	xorl	4(%edi),%ebx
770	movzbl	%ah,%esi
771	movl	2052(%ebp,%esi,8),%edx
772	movzbl	%al,%esi
773	xorl	4(%ebp,%esi,8),%edx
774	shrl	$16,%eax
775	movzbl	%bl,%esi
776	movl	(%ebp,%esi,8),%ecx
777	movzbl	%ah,%esi
778	xorl	(%ebp,%esi,8),%edx
779	movzbl	%bh,%esi
780	xorl	4(%ebp,%esi,8),%ecx
781	shrl	$16,%ebx
782	movzbl	%al,%eax
783	xorl	2048(%ebp,%eax,8),%edx
784	movzbl	%bh,%esi
785	movl	12(%esp),%eax
786	xorl	%edx,%ecx
787	rorl	$8,%edx
788	xorl	2048(%ebp,%esi,8),%ecx
789	movzbl	%bl,%esi
790	movl	8(%esp),%ebx
791	xorl	%eax,%edx
792	xorl	2052(%ebp,%esi,8),%ecx
793	movl	8(%edi),%esi
794	xorl	%ecx,%edx
795	movl	%edx,12(%esp)
796	xorl	%ebx,%ecx
797	movl	%ecx,8(%esp)
798	xorl	%esi,%ecx
799	xorl	12(%edi),%edx
800	movzbl	%ch,%esi
801	movl	2052(%ebp,%esi,8),%ebx
802	movzbl	%cl,%esi
803	xorl	4(%ebp,%esi,8),%ebx
804	shrl	$16,%ecx
805	movzbl	%dl,%esi
806	movl	(%ebp,%esi,8),%eax
807	movzbl	%ch,%esi
808	xorl	(%ebp,%esi,8),%ebx
809	movzbl	%dh,%esi
810	xorl	4(%ebp,%esi,8),%eax
811	shrl	$16,%edx
812	movzbl	%cl,%ecx
813	xorl	2048(%ebp,%ecx,8),%ebx
814	movzbl	%dh,%esi
815	movl	4(%esp),%ecx
816	xorl	%ebx,%eax
817	rorl	$8,%ebx
818	xorl	2048(%ebp,%esi,8),%eax
819	movzbl	%dl,%esi
820	movl	(%esp),%edx
821	xorl	%ecx,%ebx
822	xorl	2052(%ebp,%esi,8),%eax
823	movl	16(%edi),%esi
824	xorl	%eax,%ebx
825	movl	%ebx,4(%esp)
826	xorl	%edx,%eax
827	movl	%eax,(%esp)
828	movl	8(%esp),%ecx
829	movl	12(%esp),%edx
830	movl	44(%esp),%esi
831	xorl	(%esi),%eax
832	xorl	4(%esi),%ebx
833	xorl	8(%esi),%ecx
834	xorl	12(%esi),%edx
835	movl	16(%edi),%esi
836	movl	%eax,(%esp)
837	movl	%ebx,4(%esp)
838	movl	%ecx,8(%esp)
839	movl	%edx,12(%esp)
840	xorl	%esi,%eax
841	xorl	20(%edi),%ebx
842	movzbl	%ah,%esi
843	movl	2052(%ebp,%esi,8),%edx
844	movzbl	%al,%esi
845	xorl	4(%ebp,%esi,8),%edx
846	shrl	$16,%eax
847	movzbl	%bl,%esi
848	movl	(%ebp,%esi,8),%ecx
849	movzbl	%ah,%esi
850	xorl	(%ebp,%esi,8),%edx
851	movzbl	%bh,%esi
852	xorl	4(%ebp,%esi,8),%ecx
853	shrl	$16,%ebx
854	movzbl	%al,%eax
855	xorl	2048(%ebp,%eax,8),%edx
856	movzbl	%bh,%esi
857	movl	12(%esp),%eax
858	xorl	%edx,%ecx
859	rorl	$8,%edx
860	xorl	2048(%ebp,%esi,8),%ecx
861	movzbl	%bl,%esi
862	movl	8(%esp),%ebx
863	xorl	%eax,%edx
864	xorl	2052(%ebp,%esi,8),%ecx
865	movl	24(%edi),%esi
866	xorl	%ecx,%edx
867	movl	%edx,12(%esp)
868	xorl	%ebx,%ecx
869	movl	%ecx,8(%esp)
870	xorl	%esi,%ecx
871	xorl	28(%edi),%edx
872	movzbl	%ch,%esi
873	movl	2052(%ebp,%esi,8),%ebx
874	movzbl	%cl,%esi
875	xorl	4(%ebp,%esi,8),%ebx
876	shrl	$16,%ecx
877	movzbl	%dl,%esi
878	movl	(%ebp,%esi,8),%eax
879	movzbl	%ch,%esi
880	xorl	(%ebp,%esi,8),%ebx
881	movzbl	%dh,%esi
882	xorl	4(%ebp,%esi,8),%eax
883	shrl	$16,%edx
884	movzbl	%cl,%ecx
885	xorl	2048(%ebp,%ecx,8),%ebx
886	movzbl	%dh,%esi
887	movl	4(%esp),%ecx
888	xorl	%ebx,%eax
889	rorl	$8,%ebx
890	xorl	2048(%ebp,%esi,8),%eax
891	movzbl	%dl,%esi
892	movl	(%esp),%edx
893	xorl	%ecx,%ebx
894	xorl	2052(%ebp,%esi,8),%eax
895	movl	32(%edi),%esi
896	xorl	%eax,%ebx
897	movl	%ebx,4(%esp)
898	xorl	%edx,%eax
899	movl	%eax,(%esp)
900	movl	8(%esp),%ecx
901	movl	12(%esp),%edx
902	movl	36(%esp),%esi
903	cmpl	$128,%esi
904	jne	.L0122nd256
905	movl	44(%esp),%edi
906	leal	128(%edi),%edi
907	movl	%eax,-112(%edi)
908	movl	%ebx,-108(%edi)
909	movl	%ecx,-104(%edi)
910	movl	%edx,-100(%edi)
911	movl	%eax,%ebp
912	shll	$15,%eax
913	movl	%ebx,%esi
914	shrl	$17,%esi
915	shll	$15,%ebx
916	orl	%esi,%eax
917	movl	%ecx,%esi
918	shll	$15,%ecx
919	movl	%eax,-80(%edi)
920	shrl	$17,%esi
921	orl	%esi,%ebx
922	shrl	$17,%ebp
923	movl	%edx,%esi
924	shrl	$17,%esi
925	movl	%ebx,-76(%edi)
926	shll	$15,%edx
927	orl	%esi,%ecx
928	orl	%ebp,%edx
929	movl	%ecx,-72(%edi)
930	movl	%edx,-68(%edi)
931	movl	%eax,%ebp
932	shll	$15,%eax
933	movl	%ebx,%esi
934	shrl	$17,%esi
935	shll	$15,%ebx
936	orl	%esi,%eax
937	movl	%ecx,%esi
938	shll	$15,%ecx
939	movl	%eax,-64(%edi)
940	shrl	$17,%esi
941	orl	%esi,%ebx
942	shrl	$17,%ebp
943	movl	%edx,%esi
944	shrl	$17,%esi
945	movl	%ebx,-60(%edi)
946	shll	$15,%edx
947	orl	%esi,%ecx
948	orl	%ebp,%edx
949	movl	%ecx,-56(%edi)
950	movl	%edx,-52(%edi)
951	movl	%eax,%ebp
952	shll	$15,%eax
953	movl	%ebx,%esi
954	shrl	$17,%esi
955	shll	$15,%ebx
956	orl	%esi,%eax
957	movl	%ecx,%esi
958	shll	$15,%ecx
959	movl	%eax,-32(%edi)
960	shrl	$17,%esi
961	orl	%esi,%ebx
962	shrl	$17,%ebp
963	movl	%edx,%esi
964	shrl	$17,%esi
965	movl	%ebx,-28(%edi)
966	shll	$15,%edx
967	orl	%esi,%ecx
968	orl	%ebp,%edx
969	movl	%eax,%ebp
970	shll	$15,%eax
971	movl	%ebx,%esi
972	shrl	$17,%esi
973	shll	$15,%ebx
974	orl	%esi,%eax
975	movl	%ecx,%esi
976	shll	$15,%ecx
977	movl	%eax,-16(%edi)
978	shrl	$17,%esi
979	orl	%esi,%ebx
980	shrl	$17,%ebp
981	movl	%edx,%esi
982	shrl	$17,%esi
983	movl	%ebx,-12(%edi)
984	shll	$15,%edx
985	orl	%esi,%ecx
986	orl	%ebp,%edx
987	movl	%ecx,-8(%edi)
988	movl	%edx,-4(%edi)
989	movl	%ebx,%ebp
990	shll	$2,%ebx
991	movl	%ecx,%esi
992	shrl	$30,%esi
993	shll	$2,%ecx
994	orl	%esi,%ebx
995	movl	%edx,%esi
996	shll	$2,%edx
997	movl	%ebx,32(%edi)
998	shrl	$30,%esi
999	orl	%esi,%ecx
1000	shrl	$30,%ebp
1001	movl	%eax,%esi
1002	shrl	$30,%esi
1003	movl	%ecx,36(%edi)
1004	shll	$2,%eax
1005	orl	%esi,%edx
1006	orl	%ebp,%eax
1007	movl	%edx,40(%edi)
1008	movl	%eax,44(%edi)
1009	movl	%ebx,%ebp
1010	shll	$17,%ebx
1011	movl	%ecx,%esi
1012	shrl	$15,%esi
1013	shll	$17,%ecx
1014	orl	%esi,%ebx
1015	movl	%edx,%esi
1016	shll	$17,%edx
1017	movl	%ebx,64(%edi)
1018	shrl	$15,%esi
1019	orl	%esi,%ecx
1020	shrl	$15,%ebp
1021	movl	%eax,%esi
1022	shrl	$15,%esi
1023	movl	%ecx,68(%edi)
1024	shll	$17,%eax
1025	orl	%esi,%edx
1026	orl	%ebp,%eax
1027	movl	%edx,72(%edi)
1028	movl	%eax,76(%edi)
1029	movl	-128(%edi),%ebx
1030	movl	-124(%edi),%ecx
1031	movl	-120(%edi),%edx
1032	movl	-116(%edi),%eax
1033	movl	%ebx,%ebp
1034	shll	$15,%ebx
1035	movl	%ecx,%esi
1036	shrl	$17,%esi
1037	shll	$15,%ecx
1038	orl	%esi,%ebx
1039	movl	%edx,%esi
1040	shll	$15,%edx
1041	movl	%ebx,-96(%edi)
1042	shrl	$17,%esi
1043	orl	%esi,%ecx
1044	shrl	$17,%ebp
1045	movl	%eax,%esi
1046	shrl	$17,%esi
1047	movl	%ecx,-92(%edi)
1048	shll	$15,%eax
1049	orl	%esi,%edx
1050	orl	%ebp,%eax
1051	movl	%edx,-88(%edi)
1052	movl	%eax,-84(%edi)
1053	movl	%ebx,%ebp
1054	shll	$30,%ebx
1055	movl	%ecx,%esi
1056	shrl	$2,%esi
1057	shll	$30,%ecx
1058	orl	%esi,%ebx
1059	movl	%edx,%esi
1060	shll	$30,%edx
1061	movl	%ebx,-48(%edi)
1062	shrl	$2,%esi
1063	orl	%esi,%ecx
1064	shrl	$2,%ebp
1065	movl	%eax,%esi
1066	shrl	$2,%esi
1067	movl	%ecx,-44(%edi)
1068	shll	$30,%eax
1069	orl	%esi,%edx
1070	orl	%ebp,%eax
1071	movl	%edx,-40(%edi)
1072	movl	%eax,-36(%edi)
1073	movl	%ebx,%ebp
1074	shll	$15,%ebx
1075	movl	%ecx,%esi
1076	shrl	$17,%esi
1077	shll	$15,%ecx
1078	orl	%esi,%ebx
1079	movl	%edx,%esi
1080	shll	$15,%edx
1081	shrl	$17,%esi
1082	orl	%esi,%ecx
1083	shrl	$17,%ebp
1084	movl	%eax,%esi
1085	shrl	$17,%esi
1086	shll	$15,%eax
1087	orl	%esi,%edx
1088	orl	%ebp,%eax
1089	movl	%edx,-24(%edi)
1090	movl	%eax,-20(%edi)
1091	movl	%ebx,%ebp
1092	shll	$17,%ebx
1093	movl	%ecx,%esi
1094	shrl	$15,%esi
1095	shll	$17,%ecx
1096	orl	%esi,%ebx
1097	movl	%edx,%esi
1098	shll	$17,%edx
1099	movl	%ebx,(%edi)
1100	shrl	$15,%esi
1101	orl	%esi,%ecx
1102	shrl	$15,%ebp
1103	movl	%eax,%esi
1104	shrl	$15,%esi
1105	movl	%ecx,4(%edi)
1106	shll	$17,%eax
1107	orl	%esi,%edx
1108	orl	%ebp,%eax
1109	movl	%edx,8(%edi)
1110	movl	%eax,12(%edi)
1111	movl	%ebx,%ebp
1112	shll	$17,%ebx
1113	movl	%ecx,%esi
1114	shrl	$15,%esi
1115	shll	$17,%ecx
1116	orl	%esi,%ebx
1117	movl	%edx,%esi
1118	shll	$17,%edx
1119	movl	%ebx,16(%edi)
1120	shrl	$15,%esi
1121	orl	%esi,%ecx
1122	shrl	$15,%ebp
1123	movl	%eax,%esi
1124	shrl	$15,%esi
1125	movl	%ecx,20(%edi)
1126	shll	$17,%eax
1127	orl	%esi,%edx
1128	orl	%ebp,%eax
1129	movl	%edx,24(%edi)
1130	movl	%eax,28(%edi)
1131	movl	%ebx,%ebp
1132	shll	$17,%ebx
1133	movl	%ecx,%esi
1134	shrl	$15,%esi
1135	shll	$17,%ecx
1136	orl	%esi,%ebx
1137	movl	%edx,%esi
1138	shll	$17,%edx
1139	movl	%ebx,48(%edi)
1140	shrl	$15,%esi
1141	orl	%esi,%ecx
1142	shrl	$15,%ebp
1143	movl	%eax,%esi
1144	shrl	$15,%esi
1145	movl	%ecx,52(%edi)
1146	shll	$17,%eax
1147	orl	%esi,%edx
1148	orl	%ebp,%eax
1149	movl	%edx,56(%edi)
1150	movl	%eax,60(%edi)
1151	movl	$3,%eax
1152	jmp	.L013done
1153.align	16
1154.L0122nd256:
1155	movl	44(%esp),%esi
1156	movl	%eax,48(%esi)
1157	movl	%ebx,52(%esi)
1158	movl	%ecx,56(%esi)
1159	movl	%edx,60(%esi)
1160	xorl	32(%esi),%eax
1161	xorl	36(%esi),%ebx
1162	xorl	40(%esi),%ecx
1163	xorl	44(%esi),%edx
1164	movl	32(%edi),%esi
1165	movl	%eax,(%esp)
1166	movl	%ebx,4(%esp)
1167	movl	%ecx,8(%esp)
1168	movl	%edx,12(%esp)
1169	xorl	%esi,%eax
1170	xorl	36(%edi),%ebx
1171	movzbl	%ah,%esi
1172	movl	2052(%ebp,%esi,8),%edx
1173	movzbl	%al,%esi
1174	xorl	4(%ebp,%esi,8),%edx
1175	shrl	$16,%eax
1176	movzbl	%bl,%esi
1177	movl	(%ebp,%esi,8),%ecx
1178	movzbl	%ah,%esi
1179	xorl	(%ebp,%esi,8),%edx
1180	movzbl	%bh,%esi
1181	xorl	4(%ebp,%esi,8),%ecx
1182	shrl	$16,%ebx
1183	movzbl	%al,%eax
1184	xorl	2048(%ebp,%eax,8),%edx
1185	movzbl	%bh,%esi
1186	movl	12(%esp),%eax
1187	xorl	%edx,%ecx
1188	rorl	$8,%edx
1189	xorl	2048(%ebp,%esi,8),%ecx
1190	movzbl	%bl,%esi
1191	movl	8(%esp),%ebx
1192	xorl	%eax,%edx
1193	xorl	2052(%ebp,%esi,8),%ecx
1194	movl	40(%edi),%esi
1195	xorl	%ecx,%edx
1196	movl	%edx,12(%esp)
1197	xorl	%ebx,%ecx
1198	movl	%ecx,8(%esp)
1199	xorl	%esi,%ecx
1200	xorl	44(%edi),%edx
1201	movzbl	%ch,%esi
1202	movl	2052(%ebp,%esi,8),%ebx
1203	movzbl	%cl,%esi
1204	xorl	4(%ebp,%esi,8),%ebx
1205	shrl	$16,%ecx
1206	movzbl	%dl,%esi
1207	movl	(%ebp,%esi,8),%eax
1208	movzbl	%ch,%esi
1209	xorl	(%ebp,%esi,8),%ebx
1210	movzbl	%dh,%esi
1211	xorl	4(%ebp,%esi,8),%eax
1212	shrl	$16,%edx
1213	movzbl	%cl,%ecx
1214	xorl	2048(%ebp,%ecx,8),%ebx
1215	movzbl	%dh,%esi
1216	movl	4(%esp),%ecx
1217	xorl	%ebx,%eax
1218	rorl	$8,%ebx
1219	xorl	2048(%ebp,%esi,8),%eax
1220	movzbl	%dl,%esi
1221	movl	(%esp),%edx
1222	xorl	%ecx,%ebx
1223	xorl	2052(%ebp,%esi,8),%eax
1224	movl	48(%edi),%esi
1225	xorl	%eax,%ebx
1226	movl	%ebx,4(%esp)
1227	xorl	%edx,%eax
1228	movl	%eax,(%esp)
1229	movl	8(%esp),%ecx
1230	movl	12(%esp),%edx
1231	movl	44(%esp),%edi
1232	leal	128(%edi),%edi
1233	movl	%eax,-112(%edi)
1234	movl	%ebx,-108(%edi)
1235	movl	%ecx,-104(%edi)
1236	movl	%edx,-100(%edi)
1237	movl	%eax,%ebp
1238	shll	$30,%eax
1239	movl	%ebx,%esi
1240	shrl	$2,%esi
1241	shll	$30,%ebx
1242	orl	%esi,%eax
1243	movl	%ecx,%esi
1244	shll	$30,%ecx
1245	movl	%eax,-48(%edi)
1246	shrl	$2,%esi
1247	orl	%esi,%ebx
1248	shrl	$2,%ebp
1249	movl	%edx,%esi
1250	shrl	$2,%esi
1251	movl	%ebx,-44(%edi)
1252	shll	$30,%edx
1253	orl	%esi,%ecx
1254	orl	%ebp,%edx
1255	movl	%ecx,-40(%edi)
1256	movl	%edx,-36(%edi)
1257	movl	%eax,%ebp
1258	shll	$30,%eax
1259	movl	%ebx,%esi
1260	shrl	$2,%esi
1261	shll	$30,%ebx
1262	orl	%esi,%eax
1263	movl	%ecx,%esi
1264	shll	$30,%ecx
1265	movl	%eax,32(%edi)
1266	shrl	$2,%esi
1267	orl	%esi,%ebx
1268	shrl	$2,%ebp
1269	movl	%edx,%esi
1270	shrl	$2,%esi
1271	movl	%ebx,36(%edi)
1272	shll	$30,%edx
1273	orl	%esi,%ecx
1274	orl	%ebp,%edx
1275	movl	%ecx,40(%edi)
1276	movl	%edx,44(%edi)
1277	movl	%ebx,%ebp
1278	shll	$19,%ebx
1279	movl	%ecx,%esi
1280	shrl	$13,%esi
1281	shll	$19,%ecx
1282	orl	%esi,%ebx
1283	movl	%edx,%esi
1284	shll	$19,%edx
1285	movl	%ebx,128(%edi)
1286	shrl	$13,%esi
1287	orl	%esi,%ecx
1288	shrl	$13,%ebp
1289	movl	%eax,%esi
1290	shrl	$13,%esi
1291	movl	%ecx,132(%edi)
1292	shll	$19,%eax
1293	orl	%esi,%edx
1294	orl	%ebp,%eax
1295	movl	%edx,136(%edi)
1296	movl	%eax,140(%edi)
1297	movl	-96(%edi),%ebx
1298	movl	-92(%edi),%ecx
1299	movl	-88(%edi),%edx
1300	movl	-84(%edi),%eax
1301	movl	%ebx,%ebp
1302	shll	$15,%ebx
1303	movl	%ecx,%esi
1304	shrl	$17,%esi
1305	shll	$15,%ecx
1306	orl	%esi,%ebx
1307	movl	%edx,%esi
1308	shll	$15,%edx
1309	movl	%ebx,-96(%edi)
1310	shrl	$17,%esi
1311	orl	%esi,%ecx
1312	shrl	$17,%ebp
1313	movl	%eax,%esi
1314	shrl	$17,%esi
1315	movl	%ecx,-92(%edi)
1316	shll	$15,%eax
1317	orl	%esi,%edx
1318	orl	%ebp,%eax
1319	movl	%edx,-88(%edi)
1320	movl	%eax,-84(%edi)
1321	movl	%ebx,%ebp
1322	shll	$15,%ebx
1323	movl	%ecx,%esi
1324	shrl	$17,%esi
1325	shll	$15,%ecx
1326	orl	%esi,%ebx
1327	movl	%edx,%esi
1328	shll	$15,%edx
1329	movl	%ebx,-64(%edi)
1330	shrl	$17,%esi
1331	orl	%esi,%ecx
1332	shrl	$17,%ebp
1333	movl	%eax,%esi
1334	shrl	$17,%esi
1335	movl	%ecx,-60(%edi)
1336	shll	$15,%eax
1337	orl	%esi,%edx
1338	orl	%ebp,%eax
1339	movl	%edx,-56(%edi)
1340	movl	%eax,-52(%edi)
1341	movl	%ebx,%ebp
1342	shll	$30,%ebx
1343	movl	%ecx,%esi
1344	shrl	$2,%esi
1345	shll	$30,%ecx
1346	orl	%esi,%ebx
1347	movl	%edx,%esi
1348	shll	$30,%edx
1349	movl	%ebx,16(%edi)
1350	shrl	$2,%esi
1351	orl	%esi,%ecx
1352	shrl	$2,%ebp
1353	movl	%eax,%esi
1354	shrl	$2,%esi
1355	movl	%ecx,20(%edi)
1356	shll	$30,%eax
1357	orl	%esi,%edx
1358	orl	%ebp,%eax
1359	movl	%edx,24(%edi)
1360	movl	%eax,28(%edi)
1361	movl	%ecx,%ebp
1362	shll	$2,%ecx
1363	movl	%edx,%esi
1364	shrl	$30,%esi
1365	shll	$2,%edx
1366	orl	%esi,%ecx
1367	movl	%eax,%esi
1368	shll	$2,%eax
1369	movl	%ecx,80(%edi)
1370	shrl	$30,%esi
1371	orl	%esi,%edx
1372	shrl	$30,%ebp
1373	movl	%ebx,%esi
1374	shrl	$30,%esi
1375	movl	%edx,84(%edi)
1376	shll	$2,%ebx
1377	orl	%esi,%eax
1378	orl	%ebp,%ebx
1379	movl	%eax,88(%edi)
1380	movl	%ebx,92(%edi)
1381	movl	-80(%edi),%ecx
1382	movl	-76(%edi),%edx
1383	movl	-72(%edi),%eax
1384	movl	-68(%edi),%ebx
1385	movl	%ecx,%ebp
1386	shll	$15,%ecx
1387	movl	%edx,%esi
1388	shrl	$17,%esi
1389	shll	$15,%edx
1390	orl	%esi,%ecx
1391	movl	%eax,%esi
1392	shll	$15,%eax
1393	movl	%ecx,-80(%edi)
1394	shrl	$17,%esi
1395	orl	%esi,%edx
1396	shrl	$17,%ebp
1397	movl	%ebx,%esi
1398	shrl	$17,%esi
1399	movl	%edx,-76(%edi)
1400	shll	$15,%ebx
1401	orl	%esi,%eax
1402	orl	%ebp,%ebx
1403	movl	%eax,-72(%edi)
1404	movl	%ebx,-68(%edi)
1405	movl	%ecx,%ebp
1406	shll	$30,%ecx
1407	movl	%edx,%esi
1408	shrl	$2,%esi
1409	shll	$30,%edx
1410	orl	%esi,%ecx
1411	movl	%eax,%esi
1412	shll	$30,%eax
1413	movl	%ecx,-16(%edi)
1414	shrl	$2,%esi
1415	orl	%esi,%edx
1416	shrl	$2,%ebp
1417	movl	%ebx,%esi
1418	shrl	$2,%esi
1419	movl	%edx,-12(%edi)
1420	shll	$30,%ebx
1421	orl	%esi,%eax
1422	orl	%ebp,%ebx
1423	movl	%eax,-8(%edi)
1424	movl	%ebx,-4(%edi)
1425	movl	%edx,64(%edi)
1426	movl	%eax,68(%edi)
1427	movl	%ebx,72(%edi)
1428	movl	%ecx,76(%edi)
1429	movl	%edx,%ebp
1430	shll	$17,%edx
1431	movl	%eax,%esi
1432	shrl	$15,%esi
1433	shll	$17,%eax
1434	orl	%esi,%edx
1435	movl	%ebx,%esi
1436	shll	$17,%ebx
1437	movl	%edx,96(%edi)
1438	shrl	$15,%esi
1439	orl	%esi,%eax
1440	shrl	$15,%ebp
1441	movl	%ecx,%esi
1442	shrl	$15,%esi
1443	movl	%eax,100(%edi)
1444	shll	$17,%ecx
1445	orl	%esi,%ebx
1446	orl	%ebp,%ecx
1447	movl	%ebx,104(%edi)
1448	movl	%ecx,108(%edi)
1449	movl	-128(%edi),%edx
1450	movl	-124(%edi),%eax
1451	movl	-120(%edi),%ebx
1452	movl	-116(%edi),%ecx
1453	movl	%eax,%ebp
1454	shll	$13,%eax
1455	movl	%ebx,%esi
1456	shrl	$19,%esi
1457	shll	$13,%ebx
1458	orl	%esi,%eax
1459	movl	%ecx,%esi
1460	shll	$13,%ecx
1461	movl	%eax,-32(%edi)
1462	shrl	$19,%esi
1463	orl	%esi,%ebx
1464	shrl	$19,%ebp
1465	movl	%edx,%esi
1466	shrl	$19,%esi
1467	movl	%ebx,-28(%edi)
1468	shll	$13,%edx
1469	orl	%esi,%ecx
1470	orl	%ebp,%edx
1471	movl	%ecx,-24(%edi)
1472	movl	%edx,-20(%edi)
1473	movl	%eax,%ebp
1474	shll	$15,%eax
1475	movl	%ebx,%esi
1476	shrl	$17,%esi
1477	shll	$15,%ebx
1478	orl	%esi,%eax
1479	movl	%ecx,%esi
1480	shll	$15,%ecx
1481	movl	%eax,(%edi)
1482	shrl	$17,%esi
1483	orl	%esi,%ebx
1484	shrl	$17,%ebp
1485	movl	%edx,%esi
1486	shrl	$17,%esi
1487	movl	%ebx,4(%edi)
1488	shll	$15,%edx
1489	orl	%esi,%ecx
1490	orl	%ebp,%edx
1491	movl	%ecx,8(%edi)
1492	movl	%edx,12(%edi)
1493	movl	%eax,%ebp
1494	shll	$17,%eax
1495	movl	%ebx,%esi
1496	shrl	$15,%esi
1497	shll	$17,%ebx
1498	orl	%esi,%eax
1499	movl	%ecx,%esi
1500	shll	$17,%ecx
1501	movl	%eax,48(%edi)
1502	shrl	$15,%esi
1503	orl	%esi,%ebx
1504	shrl	$15,%ebp
1505	movl	%edx,%esi
1506	shrl	$15,%esi
1507	movl	%ebx,52(%edi)
1508	shll	$17,%edx
1509	orl	%esi,%ecx
1510	orl	%ebp,%edx
1511	movl	%ecx,56(%edi)
1512	movl	%edx,60(%edi)
1513	movl	%ebx,%ebp
1514	shll	$2,%ebx
1515	movl	%ecx,%esi
1516	shrl	$30,%esi
1517	shll	$2,%ecx
1518	orl	%esi,%ebx
1519	movl	%edx,%esi
1520	shll	$2,%edx
1521	movl	%ebx,112(%edi)
1522	shrl	$30,%esi
1523	orl	%esi,%ecx
1524	shrl	$30,%ebp
1525	movl	%eax,%esi
1526	shrl	$30,%esi
1527	movl	%ecx,116(%edi)
1528	shll	$2,%eax
1529	orl	%esi,%edx
1530	orl	%ebp,%eax
1531	movl	%edx,120(%edi)
1532	movl	%eax,124(%edi)
1533	movl	$4,%eax
1534.L013done:
1535	leal	144(%edi),%edx
1536	addl	$16,%esp
1537	popl	%edi
1538	popl	%esi
1539	popl	%ebx
1540	popl	%ebp
1541	ret
1542.size	Camellia_Ekeygen,.-.L_Camellia_Ekeygen_begin
1543.globl	private_Camellia_set_key
1544.type	private_Camellia_set_key,@function
1545.align	16
1546private_Camellia_set_key:
1547.L_private_Camellia_set_key_begin:
1548	pushl	%ebx
1549	movl	8(%esp),%ecx
1550	movl	12(%esp),%ebx
1551	movl	16(%esp),%edx
1552	movl	$-1,%eax
1553	testl	%ecx,%ecx
1554	jz	.L014done
1555	testl	%edx,%edx
1556	jz	.L014done
1557	movl	$-2,%eax
1558	cmpl	$256,%ebx
1559	je	.L015arg_ok
1560	cmpl	$192,%ebx
1561	je	.L015arg_ok
1562	cmpl	$128,%ebx
1563	jne	.L014done
1564.align	4
1565.L015arg_ok:
1566	pushl	%edx
1567	pushl	%ecx
1568	pushl	%ebx
1569	call	.L_Camellia_Ekeygen_begin
1570	addl	$12,%esp
1571	movl	%eax,(%edx)
1572	xorl	%eax,%eax
1573.align	4
1574.L014done:
1575	popl	%ebx
1576	ret
1577.size	private_Camellia_set_key,.-.L_private_Camellia_set_key_begin
1578.align	64
1579.LCamellia_SIGMA:
1580.long	2694735487,1003262091,3061508184,1286239154,3337565999,3914302142,1426019237,4057165596,283453434,3731369245,2958461122,3018244605,0,0,0,0
1581.align	64
1582.LCamellia_SBOX:
1583.long	1886416896,1886388336
1584.long	2189591040,741081132
1585.long	741092352,3014852787
1586.long	3974949888,3233808576
1587.long	3014898432,3840147684
1588.long	656877312,1465319511
1589.long	3233857536,3941204202
1590.long	3857048832,2930639022
1591.long	3840205824,589496355
1592.long	2240120064,1802174571
1593.long	1465341696,1162149957
1594.long	892679424,2779054245
1595.long	3941263872,3991732461
1596.long	202116096,1330577487
1597.long	2930683392,488439837
1598.long	1094795520,2459041938
1599.long	589505280,2256928902
1600.long	4025478912,2947481775
1601.long	1802201856,2088501372
1602.long	2475922176,522125343
1603.long	1162167552,1044250686
1604.long	421075200,3705405660
1605.long	2779096320,1583218782
1606.long	555819264,185270283
1607.long	3991792896,2795896998
1608.long	235802112,960036921
1609.long	1330597632,3587506389
1610.long	1313754624,1566376029
1611.long	488447232,3654877401
1612.long	1701143808,1515847770
1613.long	2459079168,1364262993
1614.long	3183328512,1819017324
1615.long	2256963072,2341142667
1616.long	3099113472,2593783962
1617.long	2947526400,4227531003
1618.long	2408550144,2964324528
1619.long	2088532992,1953759348
1620.long	3958106880,724238379
1621.long	522133248,4042260720
1622.long	3469659648,2223243396
1623.long	1044266496,3755933919
1624.long	808464384,3419078859
1625.long	3705461760,875823156
1626.long	1600085760,1987444854
1627.long	1583242752,1835860077
1628.long	3318072576,2846425257
1629.long	185273088,3520135377
1630.long	437918208,67371012
1631.long	2795939328,336855060
1632.long	3789676800,976879674
1633.long	960051456,3739091166
1634.long	3402287616,286326801
1635.long	3587560704,842137650
1636.long	1195853568,2627469468
1637.long	1566399744,1397948499
1638.long	1027423488,4075946226
1639.long	3654932736,4278059262
1640.long	16843008,3486449871
1641.long	1515870720,3284336835
1642.long	3604403712,2054815866
1643.long	1364283648,606339108
1644.long	1448498688,3907518696
1645.long	1819044864,1616904288
1646.long	1296911616,1768489065
1647.long	2341178112,2863268010
1648.long	218959104,2694840480
1649.long	2593823232,2711683233
1650.long	1717986816,1650589794
1651.long	4227595008,1414791252
1652.long	3435973632,505282590
1653.long	2964369408,3772776672
1654.long	757935360,1684275300
1655.long	1953788928,269484048
1656.long	303174144,0
1657.long	724249344,2745368739
1658.long	538976256,1970602101
1659.long	4042321920,2324299914
1660.long	2981212416,3873833190
1661.long	2223277056,151584777
1662.long	2576980224,3722248413
1663.long	3755990784,2273771655
1664.long	1280068608,2206400643
1665.long	3419130624,3452764365
1666.long	3267543552,2425356432
1667.long	875836416,1936916595
1668.long	2122219008,4143317238
1669.long	1987474944,2644312221
1670.long	84215040,3216965823
1671.long	1835887872,1381105746
1672.long	3082270464,3638034648
1673.long	2846468352,3368550600
1674.long	825307392,3334865094
1675.long	3520188672,2172715137
1676.long	387389184,1869545583
1677.long	67372032,320012307
1678.long	3621246720,1667432547
1679.long	336860160,3924361449
1680.long	1482184704,2812739751
1681.long	976894464,2677997727
1682.long	1633771776,3166437564
1683.long	3739147776,690552873
1684.long	454761216,4193845497
1685.long	286331136,791609391
1686.long	471604224,3031695540
1687.long	842150400,2021130360
1688.long	252645120,101056518
1689.long	2627509248,3890675943
1690.long	370546176,1903231089
1691.long	1397969664,3570663636
1692.long	404232192,2880110763
1693.long	4076007936,2290614408
1694.long	572662272,2374828173
1695.long	4278124032,1920073842
1696.long	1145324544,3115909305
1697.long	3486502656,4177002744
1698.long	2998055424,2896953516
1699.long	3284386560,909508662
1700.long	3048584448,707395626
1701.long	2054846976,1010565180
1702.long	2442236160,4059103473
1703.long	606348288,1077936192
1704.long	134744064,3553820883
1705.long	3907577856,3149594811
1706.long	2829625344,1128464451
1707.long	1616928768,353697813
1708.long	4244438016,2913796269
1709.long	1768515840,2004287607
1710.long	1347440640,2155872384
1711.long	2863311360,2189557890
1712.long	3503345664,3974889708
1713.long	2694881280,656867367
1714.long	2105376000,3856990437
1715.long	2711724288,2240086149
1716.long	2307492096,892665909
1717.long	1650614784,202113036
1718.long	2543294208,1094778945
1719.long	1414812672,4025417967
1720.long	1532713728,2475884691
1721.long	505290240,421068825
1722.long	2509608192,555810849
1723.long	3772833792,235798542
1724.long	4294967040,1313734734
1725.long	1684300800,1701118053
1726.long	3537031680,3183280317
1727.long	269488128,3099066552
1728.long	3301229568,2408513679
1729.long	0,3958046955
1730.long	1212696576,3469607118
1731.long	2745410304,808452144
1732.long	4160222976,1600061535
1733.long	1970631936,3318022341
1734.long	3688618752,437911578
1735.long	2324335104,3789619425
1736.long	50529024,3402236106
1737.long	3873891840,1195835463
1738.long	3671775744,1027407933
1739.long	151587072,16842753
1740.long	1061109504,3604349142
1741.long	3722304768,1448476758
1742.long	2492765184,1296891981
1743.long	2273806080,218955789
1744.long	1549556736,1717960806
1745.long	2206434048,3435921612
1746.long	33686016,757923885
1747.long	3452816640,303169554
1748.long	1246382592,538968096
1749.long	2425393152,2981167281
1750.long	858993408,2576941209
1751.long	1936945920,1280049228
1752.long	1734829824,3267494082
1753.long	4143379968,2122186878
1754.long	4092850944,84213765
1755.long	2644352256,3082223799
1756.long	2139062016,825294897
1757.long	3217014528,387383319
1758.long	3806519808,3621191895
1759.long	1381126656,1482162264
1760.long	2610666240,1633747041
1761.long	3638089728,454754331
1762.long	640034304,471597084
1763.long	3368601600,252641295
1764.long	926365440,370540566
1765.long	3334915584,404226072
1766.long	993737472,572653602
1767.long	2172748032,1145307204
1768.long	2526451200,2998010034
1769.long	1869573888,3048538293
1770.long	1263225600,2442199185
1771.long	320017152,134742024
1772.long	3200171520,2829582504
1773.long	1667457792,4244373756
1774.long	774778368,1347420240
1775.long	3924420864,3503292624
1776.long	2038003968,2105344125
1777.long	2812782336,2307457161
1778.long	2358021120,2543255703
1779.long	2678038272,1532690523
1780.long	1852730880,2509570197
1781.long	3166485504,4294902015
1782.long	2391707136,3536978130
1783.long	690563328,3301179588
1784.long	4126536960,1212678216
1785.long	4193908992,4160159991
1786.long	3065427456,3688562907
1787.long	791621376,50528259
1788.long	4261281024,3671720154
1789.long	3031741440,1061093439
1790.long	1499027712,2492727444
1791.long	2021160960,1549533276
1792.long	2560137216,33685506
1793.long	101058048,1246363722
1794.long	1785358848,858980403
1795.long	3890734848,1734803559
1796.long	1179010560,4092788979
1797.long	1903259904,2139029631
1798.long	3132799488,3806462178
1799.long	3570717696,2610626715
1800.long	623191296,640024614
1801.long	2880154368,926351415
1802.long	1111638528,993722427
1803.long	2290649088,2526412950
1804.long	2728567296,1263206475
1805.long	2374864128,3200123070
1806.long	4210752000,774766638
1807.long	1920102912,2037973113
1808.long	117901056,2357985420
1809.long	3115956480,1852702830
1810.long	1431655680,2391670926
1811.long	4177065984,4126474485
1812.long	4008635904,3065381046
1813.long	2896997376,4261216509
1814.long	168430080,1499005017
1815.long	909522432,2560098456
1816.long	1229539584,1785331818
1817.long	707406336,1178992710
1818.long	1751672832,3132752058
1819.long	1010580480,623181861
1820.long	943208448,1111621698
1821.long	4059164928,2728525986
1822.long	2762253312,4210688250
1823.long	1077952512,117899271
1824.long	673720320,1431634005
1825.long	3553874688,4008575214
1826.long	2071689984,168427530
1827.long	3149642496,1229520969
1828.long	3385444608,1751646312
1829.long	1128481536,943194168
1830.long	3250700544,2762211492
1831.long	353703168,673710120
1832.long	3823362816,2071658619
1833.long	2913840384,3385393353
1834.long	4109693952,3250651329
1835.long	2004317952,3823304931
1836.long	3351758592,4109631732
1837.long	2155905024,3351707847
1838.long	2661195264,2661154974
1839.long	14737632,939538488
1840.long	328965,1090535745
1841.long	5789784,369104406
1842.long	14277081,1979741814
1843.long	6776679,3640711641
1844.long	5131854,2466288531
1845.long	8487297,1610637408
1846.long	13355979,4060148466
1847.long	13224393,1912631922
1848.long	723723,3254829762
1849.long	11447982,2868947883
1850.long	6974058,2583730842
1851.long	14013909,1962964341
1852.long	1579032,100664838
1853.long	6118749,1459640151
1854.long	8553090,2684395680
1855.long	4605510,2432733585
1856.long	14671839,4144035831
1857.long	14079702,3036722613
1858.long	2565927,3372272073
1859.long	9079434,2717950626
1860.long	3289650,2348846220
1861.long	4934475,3523269330
1862.long	4342338,2415956112
1863.long	14408667,4127258358
1864.long	1842204,117442311
1865.long	10395294,2801837991
1866.long	10263708,654321447
1867.long	3815994,2382401166
1868.long	13290186,2986390194
1869.long	2434341,1224755529
1870.long	8092539,3724599006
1871.long	855309,1124090691
1872.long	7434609,1543527516
1873.long	6250335,3607156695
1874.long	2039583,3338717127
1875.long	16316664,1040203326
1876.long	14145495,4110480885
1877.long	4079166,2399178639
1878.long	10329501,1728079719
1879.long	8158332,520101663
1880.long	6316128,402659352
1881.long	12171705,1845522030
1882.long	12500670,2936057775
1883.long	12369084,788541231
1884.long	9145227,3791708898
1885.long	1447446,2231403909
1886.long	3421236,218107149
1887.long	5066061,1392530259
1888.long	12829635,4026593520
1889.long	7500402,2617285788
1890.long	9803157,1694524773
1891.long	11250603,3925928682
1892.long	9342606,2734728099
1893.long	12237498,2919280302
1894.long	8026746,2650840734
1895.long	11776947,3959483628
1896.long	131586,2147516544
1897.long	11842740,754986285
1898.long	11382189,1795189611
1899.long	10658466,2818615464
1900.long	11316396,721431339
1901.long	14211288,905983542
1902.long	10132122,2785060518
1903.long	1513239,3305162181
1904.long	1710618,2248181382
1905.long	3487029,1291865421
1906.long	13421772,855651123
1907.long	16250871,4244700669
1908.long	10066329,1711302246
1909.long	6381921,1476417624
1910.long	5921370,2516620950
1911.long	15263976,973093434
1912.long	2368548,150997257
1913.long	5658198,2499843477
1914.long	4210752,268439568
1915.long	14803425,2013296760
1916.long	6513507,3623934168
1917.long	592137,1107313218
1918.long	3355443,3422604492
1919.long	12566463,4009816047
1920.long	10000536,637543974
1921.long	9934743,3842041317
1922.long	8750469,1627414881
1923.long	6842472,436214298
1924.long	16579836,1056980799
1925.long	15527148,989870907
1926.long	657930,2181071490
1927.long	14342874,3053500086
1928.long	7303023,3674266587
1929.long	5460819,3556824276
1930.long	6447714,2550175896
1931.long	10724259,3892373736
1932.long	3026478,2332068747
1933.long	526344,33554946
1934.long	11513775,3942706155
1935.long	2631720,167774730
1936.long	11579568,738208812
1937.long	7631988,486546717
1938.long	12763842,2952835248
1939.long	12434877,1862299503
1940.long	3552822,2365623693
1941.long	2236962,2281736328
1942.long	3684408,234884622
1943.long	6579300,419436825
1944.long	1973790,2264958855
1945.long	3750201,1308642894
1946.long	2894892,184552203
1947.long	10921638,2835392937
1948.long	3158064,201329676
1949.long	15066597,2030074233
1950.long	4473924,285217041
1951.long	16645629,2130739071
1952.long	8947848,570434082
1953.long	10461087,3875596263
1954.long	6645093,1493195097
1955.long	8882055,3774931425
1956.long	7039851,3657489114
1957.long	16053492,1023425853
1958.long	2302755,3355494600
1959.long	4737096,301994514
1960.long	1052688,67109892
1961.long	13750737,1946186868
1962.long	5329233,1409307732
1963.long	12632256,805318704
1964.long	16382457,2113961598
1965.long	13816530,3019945140
1966.long	10526880,671098920
1967.long	5592405,1426085205
1968.long	10592673,1744857192
1969.long	4276545,1342197840
1970.long	16448250,3187719870
1971.long	4408131,3489714384
1972.long	1250067,3288384708
1973.long	12895428,822096177
1974.long	3092271,3405827019
1975.long	11053224,704653866
1976.long	11974326,2902502829
1977.long	3947580,251662095
1978.long	2829099,3389049546
1979.long	12698049,1879076976
1980.long	16777215,4278255615
1981.long	13158600,838873650
1982.long	10855845,1761634665
1983.long	2105376,134219784
1984.long	9013641,1644192354
1985.long	0,0
1986.long	9474192,603989028
1987.long	4671303,3506491857
1988.long	15724527,4211145723
1989.long	15395562,3120609978
1990.long	12040119,3976261101
1991.long	1381653,1157645637
1992.long	394758,2164294017
1993.long	13487565,1929409395
1994.long	11908533,1828744557
1995.long	1184274,2214626436
1996.long	8289918,2667618207
1997.long	12303291,3993038574
1998.long	2697513,1241533002
1999.long	986895,3271607235
2000.long	12105912,771763758
2001.long	460551,3238052289
2002.long	263172,16777473
2003.long	10197915,3858818790
2004.long	9737364,620766501
2005.long	2171169,1207978056
2006.long	6710886,2566953369
2007.long	15132390,3103832505
2008.long	13553358,3003167667
2009.long	15592941,2063629179
2010.long	15198183,4177590777
2011.long	3881787,3456159438
2012.long	16711422,3204497343
2013.long	8355711,3741376479
2014.long	12961221,1895854449
2015.long	10790052,687876393
2016.long	3618615,3439381965
2017.long	11645361,1811967084
2018.long	5000268,318771987
2019.long	9539985,1677747300
2020.long	7237230,2600508315
2021.long	9276813,1660969827
2022.long	7763574,2634063261
2023.long	197379,3221274816
2024.long	2960685,1258310475
2025.long	14606046,3070277559
2026.long	9868950,2768283045
2027.long	2500134,2298513801
2028.long	8224125,1593859935
2029.long	13027014,2969612721
2030.long	6052956,385881879
2031.long	13882323,4093703412
2032.long	15921906,3154164924
2033.long	5197647,3540046803
2034.long	1644825,1174423110
2035.long	4144959,3472936911
2036.long	14474460,922761015
2037.long	7960953,1577082462
2038.long	1907997,1191200583
2039.long	5395026,2483066004
2040.long	15461355,4194368250
2041.long	15987699,4227923196
2042.long	7171437,1526750043
2043.long	6184542,2533398423
2044.long	16514043,4261478142
2045.long	6908265,1509972570
2046.long	11711154,2885725356
2047.long	15790320,1006648380
2048.long	3223857,1275087948
2049.long	789516,50332419
2050.long	13948116,889206069
2051.long	13619151,4076925939
2052.long	9211020,587211555
2053.long	14869218,3087055032
2054.long	7697781,1560304989
2055.long	11119017,1778412138
2056.long	4868682,2449511058
2057.long	5723991,3573601749
2058.long	8684676,553656609
2059.long	1118481,1140868164
2060.long	4539717,1358975313
2061.long	1776411,3321939654
2062.long	16119285,2097184125
2063.long	15000804,956315961
2064.long	921102,2197848963
2065.long	7566195,3691044060
2066.long	11184810,2852170410
2067.long	15856113,2080406652
2068.long	14540253,1996519287
2069.long	5855577,1442862678
2070.long	1315860,83887365
2071.long	7105644,452991771
2072.long	9605778,2751505572
2073.long	5526612,352326933
2074.long	13684944,872428596
2075.long	7895160,503324190
2076.long	7368816,469769244
2077.long	14935011,4160813304
2078.long	4802889,1375752786
2079.long	8421504,536879136
2080.long	5263440,335549460
2081.long	10987431,3909151209
2082.long	16185078,3170942397
2083.long	7829367,3707821533
2084.long	9671571,3825263844
2085.long	8816262,2701173153
2086.long	8618883,3758153952
2087.long	2763306,2315291274
2088.long	13092807,4043370993
2089.long	5987163,3590379222
2090.long	15329769,2046851706
2091.long	15658734,3137387451
2092.long	9408399,3808486371
2093.long	65793,1073758272
2094.long	4013373,1325420367
2095.globl	Camellia_cbc_encrypt
2096.type	Camellia_cbc_encrypt,@function
2097.align	16
2098Camellia_cbc_encrypt:
2099.L_Camellia_cbc_encrypt_begin:
2100	pushl	%ebp
2101	pushl	%ebx
2102	pushl	%esi
2103	pushl	%edi
2104	movl	28(%esp),%ecx
2105	cmpl	$0,%ecx
2106	je	.L016enc_out
2107	pushfl
2108	cld
2109	movl	24(%esp),%eax
2110	movl	28(%esp),%ebx
2111	movl	36(%esp),%edx
2112	movl	40(%esp),%ebp
2113	leal	-64(%esp),%esi
2114	andl	$-64,%esi
2115	leal	-127(%edx),%edi
2116	subl	%esi,%edi
2117	negl	%edi
2118	andl	$960,%edi
2119	subl	%edi,%esi
2120	movl	44(%esp),%edi
2121	xchgl	%esi,%esp
2122	addl	$4,%esp
2123	movl	%esi,20(%esp)
2124	movl	%eax,24(%esp)
2125	movl	%ebx,28(%esp)
2126	movl	%ecx,32(%esp)
2127	movl	%edx,36(%esp)
2128	movl	%ebp,40(%esp)
2129	call	.L017pic_point
2130.L017pic_point:
2131	popl	%ebp
2132	leal	.LCamellia_SBOX-.L017pic_point(%ebp),%ebp
2133	movl	$32,%esi
2134.align	4
2135.L018prefetch_sbox:
2136	movl	(%ebp),%eax
2137	movl	32(%ebp),%ebx
2138	movl	64(%ebp),%ecx
2139	movl	96(%ebp),%edx
2140	leal	128(%ebp),%ebp
2141	decl	%esi
2142	jnz	.L018prefetch_sbox
2143	movl	36(%esp),%eax
2144	subl	$4096,%ebp
2145	movl	24(%esp),%esi
2146	movl	272(%eax),%edx
2147	cmpl	$0,%edi
2148	je	.L019DECRYPT
2149	movl	32(%esp),%ecx
2150	movl	40(%esp),%edi
2151	shll	$6,%edx
2152	leal	(%eax,%edx,1),%edx
2153	movl	%edx,16(%esp)
2154	testl	$4294967280,%ecx
2155	jz	.L020enc_tail
2156	movl	(%edi),%eax
2157	movl	4(%edi),%ebx
2158.align	4
2159.L021enc_loop:
2160	movl	8(%edi),%ecx
2161	movl	12(%edi),%edx
2162	xorl	(%esi),%eax
2163	xorl	4(%esi),%ebx
2164	xorl	8(%esi),%ecx
2165	bswap	%eax
2166	xorl	12(%esi),%edx
2167	bswap	%ebx
2168	movl	36(%esp),%edi
2169	bswap	%ecx
2170	bswap	%edx
2171	call	_x86_Camellia_encrypt
2172	movl	24(%esp),%esi
2173	movl	28(%esp),%edi
2174	bswap	%eax
2175	bswap	%ebx
2176	bswap	%ecx
2177	movl	%eax,(%edi)
2178	bswap	%edx
2179	movl	%ebx,4(%edi)
2180	movl	%ecx,8(%edi)
2181	movl	%edx,12(%edi)
2182	movl	32(%esp),%ecx
2183	leal	16(%esi),%esi
2184	movl	%esi,24(%esp)
2185	leal	16(%edi),%edx
2186	movl	%edx,28(%esp)
2187	subl	$16,%ecx
2188	testl	$4294967280,%ecx
2189	movl	%ecx,32(%esp)
2190	jnz	.L021enc_loop
2191	testl	$15,%ecx
2192	jnz	.L020enc_tail
2193	movl	40(%esp),%esi
2194	movl	8(%edi),%ecx
2195	movl	12(%edi),%edx
2196	movl	%eax,(%esi)
2197	movl	%ebx,4(%esi)
2198	movl	%ecx,8(%esi)
2199	movl	%edx,12(%esi)
2200	movl	20(%esp),%esp
2201	popfl
2202.L016enc_out:
2203	popl	%edi
2204	popl	%esi
2205	popl	%ebx
2206	popl	%ebp
2207	ret
2208	pushfl
2209.align	4
2210.L020enc_tail:
2211	movl	%edi,%eax
2212	movl	28(%esp),%edi
2213	pushl	%eax
2214	movl	$16,%ebx
2215	subl	%ecx,%ebx
2216	cmpl	%esi,%edi
2217	je	.L022enc_in_place
2218.align	4
2219.long	2767451785
2220	jmp	.L023enc_skip_in_place
2221.L022enc_in_place:
2222	leal	(%edi,%ecx,1),%edi
2223.L023enc_skip_in_place:
2224	movl	%ebx,%ecx
2225	xorl	%eax,%eax
2226.align	4
2227.long	2868115081
2228	popl	%edi
2229	movl	28(%esp),%esi
2230	movl	(%edi),%eax
2231	movl	4(%edi),%ebx
2232	movl	$16,32(%esp)
2233	jmp	.L021enc_loop
2234.align	16
2235.L019DECRYPT:
2236	shll	$6,%edx
2237	leal	(%eax,%edx,1),%edx
2238	movl	%eax,16(%esp)
2239	movl	%edx,36(%esp)
2240	cmpl	28(%esp),%esi
2241	je	.L024dec_in_place
2242	movl	40(%esp),%edi
2243	movl	%edi,44(%esp)
2244.align	4
2245.L025dec_loop:
2246	movl	(%esi),%eax
2247	movl	4(%esi),%ebx
2248	movl	8(%esi),%ecx
2249	bswap	%eax
2250	movl	12(%esi),%edx
2251	bswap	%ebx
2252	movl	36(%esp),%edi
2253	bswap	%ecx
2254	bswap	%edx
2255	call	_x86_Camellia_decrypt
2256	movl	44(%esp),%edi
2257	movl	32(%esp),%esi
2258	bswap	%eax
2259	bswap	%ebx
2260	bswap	%ecx
2261	xorl	(%edi),%eax
2262	bswap	%edx
2263	xorl	4(%edi),%ebx
2264	xorl	8(%edi),%ecx
2265	xorl	12(%edi),%edx
2266	subl	$16,%esi
2267	jc	.L026dec_partial
2268	movl	%esi,32(%esp)
2269	movl	24(%esp),%esi
2270	movl	28(%esp),%edi
2271	movl	%eax,(%edi)
2272	movl	%ebx,4(%edi)
2273	movl	%ecx,8(%edi)
2274	movl	%edx,12(%edi)
2275	movl	%esi,44(%esp)
2276	leal	16(%esi),%esi
2277	movl	%esi,24(%esp)
2278	leal	16(%edi),%edi
2279	movl	%edi,28(%esp)
2280	jnz	.L025dec_loop
2281	movl	44(%esp),%edi
2282.L027dec_end:
2283	movl	40(%esp),%esi
2284	movl	(%edi),%eax
2285	movl	4(%edi),%ebx
2286	movl	8(%edi),%ecx
2287	movl	12(%edi),%edx
2288	movl	%eax,(%esi)
2289	movl	%ebx,4(%esi)
2290	movl	%ecx,8(%esi)
2291	movl	%edx,12(%esi)
2292	jmp	.L028dec_out
2293.align	4
2294.L026dec_partial:
2295	leal	44(%esp),%edi
2296	movl	%eax,(%edi)
2297	movl	%ebx,4(%edi)
2298	movl	%ecx,8(%edi)
2299	movl	%edx,12(%edi)
2300	leal	16(%esi),%ecx
2301	movl	%edi,%esi
2302	movl	28(%esp),%edi
2303.long	2767451785
2304	movl	24(%esp),%edi
2305	jmp	.L027dec_end
2306.align	4
2307.L024dec_in_place:
2308.L029dec_in_place_loop:
2309	leal	44(%esp),%edi
2310	movl	(%esi),%eax
2311	movl	4(%esi),%ebx
2312	movl	8(%esi),%ecx
2313	movl	12(%esi),%edx
2314	movl	%eax,(%edi)
2315	movl	%ebx,4(%edi)
2316	movl	%ecx,8(%edi)
2317	bswap	%eax
2318	movl	%edx,12(%edi)
2319	bswap	%ebx
2320	movl	36(%esp),%edi
2321	bswap	%ecx
2322	bswap	%edx
2323	call	_x86_Camellia_decrypt
2324	movl	40(%esp),%edi
2325	movl	28(%esp),%esi
2326	bswap	%eax
2327	bswap	%ebx
2328	bswap	%ecx
2329	xorl	(%edi),%eax
2330	bswap	%edx
2331	xorl	4(%edi),%ebx
2332	xorl	8(%edi),%ecx
2333	xorl	12(%edi),%edx
2334	movl	%eax,(%esi)
2335	movl	%ebx,4(%esi)
2336	movl	%ecx,8(%esi)
2337	movl	%edx,12(%esi)
2338	leal	16(%esi),%esi
2339	movl	%esi,28(%esp)
2340	leal	44(%esp),%esi
2341	movl	(%esi),%eax
2342	movl	4(%esi),%ebx
2343	movl	8(%esi),%ecx
2344	movl	12(%esi),%edx
2345	movl	%eax,(%edi)
2346	movl	%ebx,4(%edi)
2347	movl	%ecx,8(%edi)
2348	movl	%edx,12(%edi)
2349	movl	24(%esp),%esi
2350	leal	16(%esi),%esi
2351	movl	%esi,24(%esp)
2352	movl	32(%esp),%ecx
2353	subl	$16,%ecx
2354	jc	.L030dec_in_place_partial
2355	movl	%ecx,32(%esp)
2356	jnz	.L029dec_in_place_loop
2357	jmp	.L028dec_out
2358.align	4
2359.L030dec_in_place_partial:
2360	movl	28(%esp),%edi
2361	leal	44(%esp),%esi
2362	leal	(%edi,%ecx,1),%edi
2363	leal	16(%esi,%ecx,1),%esi
2364	negl	%ecx
2365.long	2767451785
2366.align	4
2367.L028dec_out:
2368	movl	20(%esp),%esp
2369	popfl
2370	popl	%edi
2371	popl	%esi
2372	popl	%ebx
2373	popl	%ebp
2374	ret
2375.size	Camellia_cbc_encrypt,.-.L_Camellia_cbc_encrypt_begin
2376.byte	67,97,109,101,108,108,105,97,32,102,111,114,32,120,56,54
2377.byte	32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
2378.byte	115,108,46,111,114,103,62,0
2379#else
2380.file	"cmll-x86.S"
2381.text
2382.globl	Camellia_EncryptBlock_Rounds
2383.type	Camellia_EncryptBlock_Rounds,@function
2384.align	16
2385Camellia_EncryptBlock_Rounds:
2386.L_Camellia_EncryptBlock_Rounds_begin:
2387	pushl	%ebp
2388	pushl	%ebx
2389	pushl	%esi
2390	pushl	%edi
2391	movl	20(%esp),%eax
2392	movl	24(%esp),%esi
2393	movl	28(%esp),%edi
2394	movl	%esp,%ebx
2395	subl	$28,%esp
2396	andl	$-64,%esp
2397	leal	-127(%edi),%ecx
2398	subl	%esp,%ecx
2399	negl	%ecx
2400	andl	$960,%ecx
2401	subl	%ecx,%esp
2402	addl	$4,%esp
2403	shll	$6,%eax
2404	leal	(%edi,%eax,1),%eax
2405	movl	%ebx,20(%esp)
2406	movl	%eax,16(%esp)
2407	call	.L000pic_point
2408.L000pic_point:
2409	popl	%ebp
2410	leal	.LCamellia_SBOX-.L000pic_point(%ebp),%ebp
2411	movl	(%esi),%eax
2412	movl	4(%esi),%ebx
2413	movl	8(%esi),%ecx
2414	bswap	%eax
2415	movl	12(%esi),%edx
2416	bswap	%ebx
2417	bswap	%ecx
2418	bswap	%edx
2419	call	_x86_Camellia_encrypt
2420	movl	20(%esp),%esp
2421	bswap	%eax
2422	movl	32(%esp),%esi
2423	bswap	%ebx
2424	bswap	%ecx
2425	bswap	%edx
2426	movl	%eax,(%esi)
2427	movl	%ebx,4(%esi)
2428	movl	%ecx,8(%esi)
2429	movl	%edx,12(%esi)
2430	popl	%edi
2431	popl	%esi
2432	popl	%ebx
2433	popl	%ebp
2434	ret
2435.size	Camellia_EncryptBlock_Rounds,.-.L_Camellia_EncryptBlock_Rounds_begin
2436.globl	Camellia_EncryptBlock
2437.type	Camellia_EncryptBlock,@function
2438.align	16
2439Camellia_EncryptBlock:
2440.L_Camellia_EncryptBlock_begin:
2441	movl	$128,%eax
2442	subl	4(%esp),%eax
2443	movl	$3,%eax
2444	adcl	$0,%eax
2445	movl	%eax,4(%esp)
2446	jmp	.L_Camellia_EncryptBlock_Rounds_begin
2447.size	Camellia_EncryptBlock,.-.L_Camellia_EncryptBlock_begin
2448.globl	Camellia_encrypt
2449.type	Camellia_encrypt,@function
2450.align	16
2451Camellia_encrypt:
2452.L_Camellia_encrypt_begin:
2453	pushl	%ebp
2454	pushl	%ebx
2455	pushl	%esi
2456	pushl	%edi
2457	movl	20(%esp),%esi
2458	movl	28(%esp),%edi
2459	movl	%esp,%ebx
2460	subl	$28,%esp
2461	andl	$-64,%esp
2462	movl	272(%edi),%eax
2463	leal	-127(%edi),%ecx
2464	subl	%esp,%ecx
2465	negl	%ecx
2466	andl	$960,%ecx
2467	subl	%ecx,%esp
2468	addl	$4,%esp
2469	shll	$6,%eax
2470	leal	(%edi,%eax,1),%eax
2471	movl	%ebx,20(%esp)
2472	movl	%eax,16(%esp)
2473	call	.L001pic_point
2474.L001pic_point:
2475	popl	%ebp
2476	leal	.LCamellia_SBOX-.L001pic_point(%ebp),%ebp
2477	movl	(%esi),%eax
2478	movl	4(%esi),%ebx
2479	movl	8(%esi),%ecx
2480	bswap	%eax
2481	movl	12(%esi),%edx
2482	bswap	%ebx
2483	bswap	%ecx
2484	bswap	%edx
2485	call	_x86_Camellia_encrypt
2486	movl	20(%esp),%esp
2487	bswap	%eax
2488	movl	24(%esp),%esi
2489	bswap	%ebx
2490	bswap	%ecx
2491	bswap	%edx
2492	movl	%eax,(%esi)
2493	movl	%ebx,4(%esi)
2494	movl	%ecx,8(%esi)
2495	movl	%edx,12(%esi)
2496	popl	%edi
2497	popl	%esi
2498	popl	%ebx
2499	popl	%ebp
2500	ret
2501.size	Camellia_encrypt,.-.L_Camellia_encrypt_begin
2502.type	_x86_Camellia_encrypt,@function
2503.align	16
2504_x86_Camellia_encrypt:
2505	xorl	(%edi),%eax
2506	xorl	4(%edi),%ebx
2507	xorl	8(%edi),%ecx
2508	xorl	12(%edi),%edx
2509	movl	16(%edi),%esi
2510	movl	%eax,4(%esp)
2511	movl	%ebx,8(%esp)
2512	movl	%ecx,12(%esp)
2513	movl	%edx,16(%esp)
2514.align	16
2515.L002loop:
2516	xorl	%esi,%eax
2517	xorl	20(%edi),%ebx
2518	movzbl	%ah,%esi
2519	movl	2052(%ebp,%esi,8),%edx
2520	movzbl	%al,%esi
2521	xorl	4(%ebp,%esi,8),%edx
2522	shrl	$16,%eax
2523	movzbl	%bl,%esi
2524	movl	(%ebp,%esi,8),%ecx
2525	movzbl	%ah,%esi
2526	xorl	(%ebp,%esi,8),%edx
2527	movzbl	%bh,%esi
2528	xorl	4(%ebp,%esi,8),%ecx
2529	shrl	$16,%ebx
2530	movzbl	%al,%eax
2531	xorl	2048(%ebp,%eax,8),%edx
2532	movzbl	%bh,%esi
2533	movl	16(%esp),%eax
2534	xorl	%edx,%ecx
2535	rorl	$8,%edx
2536	xorl	2048(%ebp,%esi,8),%ecx
2537	movzbl	%bl,%esi
2538	movl	12(%esp),%ebx
2539	xorl	%eax,%edx
2540	xorl	2052(%ebp,%esi,8),%ecx
2541	movl	24(%edi),%esi
2542	xorl	%ecx,%edx
2543	movl	%edx,16(%esp)
2544	xorl	%ebx,%ecx
2545	movl	%ecx,12(%esp)
2546	xorl	%esi,%ecx
2547	xorl	28(%edi),%edx
2548	movzbl	%ch,%esi
2549	movl	2052(%ebp,%esi,8),%ebx
2550	movzbl	%cl,%esi
2551	xorl	4(%ebp,%esi,8),%ebx
2552	shrl	$16,%ecx
2553	movzbl	%dl,%esi
2554	movl	(%ebp,%esi,8),%eax
2555	movzbl	%ch,%esi
2556	xorl	(%ebp,%esi,8),%ebx
2557	movzbl	%dh,%esi
2558	xorl	4(%ebp,%esi,8),%eax
2559	shrl	$16,%edx
2560	movzbl	%cl,%ecx
2561	xorl	2048(%ebp,%ecx,8),%ebx
2562	movzbl	%dh,%esi
2563	movl	8(%esp),%ecx
2564	xorl	%ebx,%eax
2565	rorl	$8,%ebx
2566	xorl	2048(%ebp,%esi,8),%eax
2567	movzbl	%dl,%esi
2568	movl	4(%esp),%edx
2569	xorl	%ecx,%ebx
2570	xorl	2052(%ebp,%esi,8),%eax
2571	movl	32(%edi),%esi
2572	xorl	%eax,%ebx
2573	movl	%ebx,8(%esp)
2574	xorl	%edx,%eax
2575	movl	%eax,4(%esp)
2576	xorl	%esi,%eax
2577	xorl	36(%edi),%ebx
2578	movzbl	%ah,%esi
2579	movl	2052(%ebp,%esi,8),%edx
2580	movzbl	%al,%esi
2581	xorl	4(%ebp,%esi,8),%edx
2582	shrl	$16,%eax
2583	movzbl	%bl,%esi
2584	movl	(%ebp,%esi,8),%ecx
2585	movzbl	%ah,%esi
2586	xorl	(%ebp,%esi,8),%edx
2587	movzbl	%bh,%esi
2588	xorl	4(%ebp,%esi,8),%ecx
2589	shrl	$16,%ebx
2590	movzbl	%al,%eax
2591	xorl	2048(%ebp,%eax,8),%edx
2592	movzbl	%bh,%esi
2593	movl	16(%esp),%eax
2594	xorl	%edx,%ecx
2595	rorl	$8,%edx
2596	xorl	2048(%ebp,%esi,8),%ecx
2597	movzbl	%bl,%esi
2598	movl	12(%esp),%ebx
2599	xorl	%eax,%edx
2600	xorl	2052(%ebp,%esi,8),%ecx
2601	movl	40(%edi),%esi
2602	xorl	%ecx,%edx
2603	movl	%edx,16(%esp)
2604	xorl	%ebx,%ecx
2605	movl	%ecx,12(%esp)
2606	xorl	%esi,%ecx
2607	xorl	44(%edi),%edx
2608	movzbl	%ch,%esi
2609	movl	2052(%ebp,%esi,8),%ebx
2610	movzbl	%cl,%esi
2611	xorl	4(%ebp,%esi,8),%ebx
2612	shrl	$16,%ecx
2613	movzbl	%dl,%esi
2614	movl	(%ebp,%esi,8),%eax
2615	movzbl	%ch,%esi
2616	xorl	(%ebp,%esi,8),%ebx
2617	movzbl	%dh,%esi
2618	xorl	4(%ebp,%esi,8),%eax
2619	shrl	$16,%edx
2620	movzbl	%cl,%ecx
2621	xorl	2048(%ebp,%ecx,8),%ebx
2622	movzbl	%dh,%esi
2623	movl	8(%esp),%ecx
2624	xorl	%ebx,%eax
2625	rorl	$8,%ebx
2626	xorl	2048(%ebp,%esi,8),%eax
2627	movzbl	%dl,%esi
2628	movl	4(%esp),%edx
2629	xorl	%ecx,%ebx
2630	xorl	2052(%ebp,%esi,8),%eax
2631	movl	48(%edi),%esi
2632	xorl	%eax,%ebx
2633	movl	%ebx,8(%esp)
2634	xorl	%edx,%eax
2635	movl	%eax,4(%esp)
2636	xorl	%esi,%eax
2637	xorl	52(%edi),%ebx
2638	movzbl	%ah,%esi
2639	movl	2052(%ebp,%esi,8),%edx
2640	movzbl	%al,%esi
2641	xorl	4(%ebp,%esi,8),%edx
2642	shrl	$16,%eax
2643	movzbl	%bl,%esi
2644	movl	(%ebp,%esi,8),%ecx
2645	movzbl	%ah,%esi
2646	xorl	(%ebp,%esi,8),%edx
2647	movzbl	%bh,%esi
2648	xorl	4(%ebp,%esi,8),%ecx
2649	shrl	$16,%ebx
2650	movzbl	%al,%eax
2651	xorl	2048(%ebp,%eax,8),%edx
2652	movzbl	%bh,%esi
2653	movl	16(%esp),%eax
2654	xorl	%edx,%ecx
2655	rorl	$8,%edx
2656	xorl	2048(%ebp,%esi,8),%ecx
2657	movzbl	%bl,%esi
2658	movl	12(%esp),%ebx
2659	xorl	%eax,%edx
2660	xorl	2052(%ebp,%esi,8),%ecx
2661	movl	56(%edi),%esi
2662	xorl	%ecx,%edx
2663	movl	%edx,16(%esp)
2664	xorl	%ebx,%ecx
2665	movl	%ecx,12(%esp)
2666	xorl	%esi,%ecx
2667	xorl	60(%edi),%edx
2668	movzbl	%ch,%esi
2669	movl	2052(%ebp,%esi,8),%ebx
2670	movzbl	%cl,%esi
2671	xorl	4(%ebp,%esi,8),%ebx
2672	shrl	$16,%ecx
2673	movzbl	%dl,%esi
2674	movl	(%ebp,%esi,8),%eax
2675	movzbl	%ch,%esi
2676	xorl	(%ebp,%esi,8),%ebx
2677	movzbl	%dh,%esi
2678	xorl	4(%ebp,%esi,8),%eax
2679	shrl	$16,%edx
2680	movzbl	%cl,%ecx
2681	xorl	2048(%ebp,%ecx,8),%ebx
2682	movzbl	%dh,%esi
2683	movl	8(%esp),%ecx
2684	xorl	%ebx,%eax
2685	rorl	$8,%ebx
2686	xorl	2048(%ebp,%esi,8),%eax
2687	movzbl	%dl,%esi
2688	movl	4(%esp),%edx
2689	xorl	%ecx,%ebx
2690	xorl	2052(%ebp,%esi,8),%eax
2691	movl	64(%edi),%esi
2692	xorl	%eax,%ebx
2693	movl	%ebx,8(%esp)
2694	xorl	%edx,%eax
2695	movl	%eax,4(%esp)
2696	addl	$64,%edi
2697	cmpl	20(%esp),%edi
2698	je	.L003done
2699	andl	%eax,%esi
2700	movl	16(%esp),%edx
2701	roll	$1,%esi
2702	movl	%edx,%ecx
2703	xorl	%esi,%ebx
2704	orl	12(%edi),%ecx
2705	movl	%ebx,8(%esp)
2706	xorl	12(%esp),%ecx
2707	movl	4(%edi),%esi
2708	movl	%ecx,12(%esp)
2709	orl	%ebx,%esi
2710	andl	8(%edi),%ecx
2711	xorl	%esi,%eax
2712	roll	$1,%ecx
2713	movl	%eax,4(%esp)
2714	xorl	%ecx,%edx
2715	movl	16(%edi),%esi
2716	movl	%edx,16(%esp)
2717	jmp	.L002loop
2718.align	8
2719.L003done:
2720	movl	%eax,%ecx
2721	movl	%ebx,%edx
2722	movl	12(%esp),%eax
2723	movl	16(%esp),%ebx
2724	xorl	%esi,%eax
2725	xorl	4(%edi),%ebx
2726	xorl	8(%edi),%ecx
2727	xorl	12(%edi),%edx
2728	ret
2729.size	_x86_Camellia_encrypt,.-_x86_Camellia_encrypt
2730.globl	Camellia_DecryptBlock_Rounds
2731.type	Camellia_DecryptBlock_Rounds,@function
2732.align	16
2733Camellia_DecryptBlock_Rounds:
2734.L_Camellia_DecryptBlock_Rounds_begin:
2735	pushl	%ebp
2736	pushl	%ebx
2737	pushl	%esi
2738	pushl	%edi
2739	movl	20(%esp),%eax
2740	movl	24(%esp),%esi
2741	movl	28(%esp),%edi
2742	movl	%esp,%ebx
2743	subl	$28,%esp
2744	andl	$-64,%esp
2745	leal	-127(%edi),%ecx
2746	subl	%esp,%ecx
2747	negl	%ecx
2748	andl	$960,%ecx
2749	subl	%ecx,%esp
2750	addl	$4,%esp
2751	shll	$6,%eax
2752	movl	%edi,16(%esp)
2753	leal	(%edi,%eax,1),%edi
2754	movl	%ebx,20(%esp)
2755	call	.L004pic_point
2756.L004pic_point:
2757	popl	%ebp
2758	leal	.LCamellia_SBOX-.L004pic_point(%ebp),%ebp
2759	movl	(%esi),%eax
2760	movl	4(%esi),%ebx
2761	movl	8(%esi),%ecx
2762	bswap	%eax
2763	movl	12(%esi),%edx
2764	bswap	%ebx
2765	bswap	%ecx
2766	bswap	%edx
2767	call	_x86_Camellia_decrypt
2768	movl	20(%esp),%esp
2769	bswap	%eax
2770	movl	32(%esp),%esi
2771	bswap	%ebx
2772	bswap	%ecx
2773	bswap	%edx
2774	movl	%eax,(%esi)
2775	movl	%ebx,4(%esi)
2776	movl	%ecx,8(%esi)
2777	movl	%edx,12(%esi)
2778	popl	%edi
2779	popl	%esi
2780	popl	%ebx
2781	popl	%ebp
2782	ret
2783.size	Camellia_DecryptBlock_Rounds,.-.L_Camellia_DecryptBlock_Rounds_begin
2784.globl	Camellia_DecryptBlock
2785.type	Camellia_DecryptBlock,@function
2786.align	16
2787Camellia_DecryptBlock:
2788.L_Camellia_DecryptBlock_begin:
2789	movl	$128,%eax
2790	subl	4(%esp),%eax
2791	movl	$3,%eax
2792	adcl	$0,%eax
2793	movl	%eax,4(%esp)
2794	jmp	.L_Camellia_DecryptBlock_Rounds_begin
2795.size	Camellia_DecryptBlock,.-.L_Camellia_DecryptBlock_begin
2796.globl	Camellia_decrypt
2797.type	Camellia_decrypt,@function
2798.align	16
2799Camellia_decrypt:
2800.L_Camellia_decrypt_begin:
2801	pushl	%ebp
2802	pushl	%ebx
2803	pushl	%esi
2804	pushl	%edi
2805	movl	20(%esp),%esi
2806	movl	28(%esp),%edi
2807	movl	%esp,%ebx
2808	subl	$28,%esp
2809	andl	$-64,%esp
2810	movl	272(%edi),%eax
2811	leal	-127(%edi),%ecx
2812	subl	%esp,%ecx
2813	negl	%ecx
2814	andl	$960,%ecx
2815	subl	%ecx,%esp
2816	addl	$4,%esp
2817	shll	$6,%eax
2818	movl	%edi,16(%esp)
2819	leal	(%edi,%eax,1),%edi
2820	movl	%ebx,20(%esp)
2821	call	.L005pic_point
2822.L005pic_point:
2823	popl	%ebp
2824	leal	.LCamellia_SBOX-.L005pic_point(%ebp),%ebp
2825	movl	(%esi),%eax
2826	movl	4(%esi),%ebx
2827	movl	8(%esi),%ecx
2828	bswap	%eax
2829	movl	12(%esi),%edx
2830	bswap	%ebx
2831	bswap	%ecx
2832	bswap	%edx
2833	call	_x86_Camellia_decrypt
2834	movl	20(%esp),%esp
2835	bswap	%eax
2836	movl	24(%esp),%esi
2837	bswap	%ebx
2838	bswap	%ecx
2839	bswap	%edx
2840	movl	%eax,(%esi)
2841	movl	%ebx,4(%esi)
2842	movl	%ecx,8(%esi)
2843	movl	%edx,12(%esi)
2844	popl	%edi
2845	popl	%esi
2846	popl	%ebx
2847	popl	%ebp
2848	ret
2849.size	Camellia_decrypt,.-.L_Camellia_decrypt_begin
2850.type	_x86_Camellia_decrypt,@function
2851.align	16
2852_x86_Camellia_decrypt:
2853	xorl	(%edi),%eax
2854	xorl	4(%edi),%ebx
2855	xorl	8(%edi),%ecx
2856	xorl	12(%edi),%edx
2857	movl	-8(%edi),%esi
2858	movl	%eax,4(%esp)
2859	movl	%ebx,8(%esp)
2860	movl	%ecx,12(%esp)
2861	movl	%edx,16(%esp)
2862.align	16
2863.L006loop:
2864	xorl	%esi,%eax
2865	xorl	-4(%edi),%ebx
2866	movzbl	%ah,%esi
2867	movl	2052(%ebp,%esi,8),%edx
2868	movzbl	%al,%esi
2869	xorl	4(%ebp,%esi,8),%edx
2870	shrl	$16,%eax
2871	movzbl	%bl,%esi
2872	movl	(%ebp,%esi,8),%ecx
2873	movzbl	%ah,%esi
2874	xorl	(%ebp,%esi,8),%edx
2875	movzbl	%bh,%esi
2876	xorl	4(%ebp,%esi,8),%ecx
2877	shrl	$16,%ebx
2878	movzbl	%al,%eax
2879	xorl	2048(%ebp,%eax,8),%edx
2880	movzbl	%bh,%esi
2881	movl	16(%esp),%eax
2882	xorl	%edx,%ecx
2883	rorl	$8,%edx
2884	xorl	2048(%ebp,%esi,8),%ecx
2885	movzbl	%bl,%esi
2886	movl	12(%esp),%ebx
2887	xorl	%eax,%edx
2888	xorl	2052(%ebp,%esi,8),%ecx
2889	movl	-16(%edi),%esi
2890	xorl	%ecx,%edx
2891	movl	%edx,16(%esp)
2892	xorl	%ebx,%ecx
2893	movl	%ecx,12(%esp)
2894	xorl	%esi,%ecx
2895	xorl	-12(%edi),%edx
2896	movzbl	%ch,%esi
2897	movl	2052(%ebp,%esi,8),%ebx
2898	movzbl	%cl,%esi
2899	xorl	4(%ebp,%esi,8),%ebx
2900	shrl	$16,%ecx
2901	movzbl	%dl,%esi
2902	movl	(%ebp,%esi,8),%eax
2903	movzbl	%ch,%esi
2904	xorl	(%ebp,%esi,8),%ebx
2905	movzbl	%dh,%esi
2906	xorl	4(%ebp,%esi,8),%eax
2907	shrl	$16,%edx
2908	movzbl	%cl,%ecx
2909	xorl	2048(%ebp,%ecx,8),%ebx
2910	movzbl	%dh,%esi
2911	movl	8(%esp),%ecx
2912	xorl	%ebx,%eax
2913	rorl	$8,%ebx
2914	xorl	2048(%ebp,%esi,8),%eax
2915	movzbl	%dl,%esi
2916	movl	4(%esp),%edx
2917	xorl	%ecx,%ebx
2918	xorl	2052(%ebp,%esi,8),%eax
2919	movl	-24(%edi),%esi
2920	xorl	%eax,%ebx
2921	movl	%ebx,8(%esp)
2922	xorl	%edx,%eax
2923	movl	%eax,4(%esp)
2924	xorl	%esi,%eax
2925	xorl	-20(%edi),%ebx
2926	movzbl	%ah,%esi
2927	movl	2052(%ebp,%esi,8),%edx
2928	movzbl	%al,%esi
2929	xorl	4(%ebp,%esi,8),%edx
2930	shrl	$16,%eax
2931	movzbl	%bl,%esi
2932	movl	(%ebp,%esi,8),%ecx
2933	movzbl	%ah,%esi
2934	xorl	(%ebp,%esi,8),%edx
2935	movzbl	%bh,%esi
2936	xorl	4(%ebp,%esi,8),%ecx
2937	shrl	$16,%ebx
2938	movzbl	%al,%eax
2939	xorl	2048(%ebp,%eax,8),%edx
2940	movzbl	%bh,%esi
2941	movl	16(%esp),%eax
2942	xorl	%edx,%ecx
2943	rorl	$8,%edx
2944	xorl	2048(%ebp,%esi,8),%ecx
2945	movzbl	%bl,%esi
2946	movl	12(%esp),%ebx
2947	xorl	%eax,%edx
2948	xorl	2052(%ebp,%esi,8),%ecx
2949	movl	-32(%edi),%esi
2950	xorl	%ecx,%edx
2951	movl	%edx,16(%esp)
2952	xorl	%ebx,%ecx
2953	movl	%ecx,12(%esp)
2954	xorl	%esi,%ecx
2955	xorl	-28(%edi),%edx
2956	movzbl	%ch,%esi
2957	movl	2052(%ebp,%esi,8),%ebx
2958	movzbl	%cl,%esi
2959	xorl	4(%ebp,%esi,8),%ebx
2960	shrl	$16,%ecx
2961	movzbl	%dl,%esi
2962	movl	(%ebp,%esi,8),%eax
2963	movzbl	%ch,%esi
2964	xorl	(%ebp,%esi,8),%ebx
2965	movzbl	%dh,%esi
2966	xorl	4(%ebp,%esi,8),%eax
2967	shrl	$16,%edx
2968	movzbl	%cl,%ecx
2969	xorl	2048(%ebp,%ecx,8),%ebx
2970	movzbl	%dh,%esi
2971	movl	8(%esp),%ecx
2972	xorl	%ebx,%eax
2973	rorl	$8,%ebx
2974	xorl	2048(%ebp,%esi,8),%eax
2975	movzbl	%dl,%esi
2976	movl	4(%esp),%edx
2977	xorl	%ecx,%ebx
2978	xorl	2052(%ebp,%esi,8),%eax
2979	movl	-40(%edi),%esi
2980	xorl	%eax,%ebx
2981	movl	%ebx,8(%esp)
2982	xorl	%edx,%eax
2983	movl	%eax,4(%esp)
2984	xorl	%esi,%eax
2985	xorl	-36(%edi),%ebx
2986	movzbl	%ah,%esi
2987	movl	2052(%ebp,%esi,8),%edx
2988	movzbl	%al,%esi
2989	xorl	4(%ebp,%esi,8),%edx
2990	shrl	$16,%eax
2991	movzbl	%bl,%esi
2992	movl	(%ebp,%esi,8),%ecx
2993	movzbl	%ah,%esi
2994	xorl	(%ebp,%esi,8),%edx
2995	movzbl	%bh,%esi
2996	xorl	4(%ebp,%esi,8),%ecx
2997	shrl	$16,%ebx
2998	movzbl	%al,%eax
2999	xorl	2048(%ebp,%eax,8),%edx
3000	movzbl	%bh,%esi
3001	movl	16(%esp),%eax
3002	xorl	%edx,%ecx
3003	rorl	$8,%edx
3004	xorl	2048(%ebp,%esi,8),%ecx
3005	movzbl	%bl,%esi
3006	movl	12(%esp),%ebx
3007	xorl	%eax,%edx
3008	xorl	2052(%ebp,%esi,8),%ecx
3009	movl	-48(%edi),%esi
3010	xorl	%ecx,%edx
3011	movl	%edx,16(%esp)
3012	xorl	%ebx,%ecx
3013	movl	%ecx,12(%esp)
3014	xorl	%esi,%ecx
3015	xorl	-44(%edi),%edx
3016	movzbl	%ch,%esi
3017	movl	2052(%ebp,%esi,8),%ebx
3018	movzbl	%cl,%esi
3019	xorl	4(%ebp,%esi,8),%ebx
3020	shrl	$16,%ecx
3021	movzbl	%dl,%esi
3022	movl	(%ebp,%esi,8),%eax
3023	movzbl	%ch,%esi
3024	xorl	(%ebp,%esi,8),%ebx
3025	movzbl	%dh,%esi
3026	xorl	4(%ebp,%esi,8),%eax
3027	shrl	$16,%edx
3028	movzbl	%cl,%ecx
3029	xorl	2048(%ebp,%ecx,8),%ebx
3030	movzbl	%dh,%esi
3031	movl	8(%esp),%ecx
3032	xorl	%ebx,%eax
3033	rorl	$8,%ebx
3034	xorl	2048(%ebp,%esi,8),%eax
3035	movzbl	%dl,%esi
3036	movl	4(%esp),%edx
3037	xorl	%ecx,%ebx
3038	xorl	2052(%ebp,%esi,8),%eax
3039	movl	-56(%edi),%esi
3040	xorl	%eax,%ebx
3041	movl	%ebx,8(%esp)
3042	xorl	%edx,%eax
3043	movl	%eax,4(%esp)
3044	subl	$64,%edi
3045	cmpl	20(%esp),%edi
3046	je	.L007done
3047	andl	%eax,%esi
3048	movl	16(%esp),%edx
3049	roll	$1,%esi
3050	movl	%edx,%ecx
3051	xorl	%esi,%ebx
3052	orl	4(%edi),%ecx
3053	movl	%ebx,8(%esp)
3054	xorl	12(%esp),%ecx
3055	movl	12(%edi),%esi
3056	movl	%ecx,12(%esp)
3057	orl	%ebx,%esi
3058	andl	(%edi),%ecx
3059	xorl	%esi,%eax
3060	roll	$1,%ecx
3061	movl	%eax,4(%esp)
3062	xorl	%ecx,%edx
3063	movl	-8(%edi),%esi
3064	movl	%edx,16(%esp)
3065	jmp	.L006loop
3066.align	8
3067.L007done:
3068	movl	%eax,%ecx
3069	movl	%ebx,%edx
3070	movl	12(%esp),%eax
3071	movl	16(%esp),%ebx
3072	xorl	%esi,%ecx
3073	xorl	12(%edi),%edx
3074	xorl	(%edi),%eax
3075	xorl	4(%edi),%ebx
3076	ret
3077.size	_x86_Camellia_decrypt,.-_x86_Camellia_decrypt
3078.globl	Camellia_Ekeygen
3079.type	Camellia_Ekeygen,@function
3080.align	16
3081Camellia_Ekeygen:
3082.L_Camellia_Ekeygen_begin:
3083	pushl	%ebp
3084	pushl	%ebx
3085	pushl	%esi
3086	pushl	%edi
3087	subl	$16,%esp
3088	movl	36(%esp),%ebp
3089	movl	40(%esp),%esi
3090	movl	44(%esp),%edi
3091	movl	(%esi),%eax
3092	movl	4(%esi),%ebx
3093	movl	8(%esi),%ecx
3094	movl	12(%esi),%edx
3095	bswap	%eax
3096	bswap	%ebx
3097	bswap	%ecx
3098	bswap	%edx
3099	movl	%eax,(%edi)
3100	movl	%ebx,4(%edi)
3101	movl	%ecx,8(%edi)
3102	movl	%edx,12(%edi)
3103	cmpl	$128,%ebp
3104	je	.L0081st128
3105	movl	16(%esi),%eax
3106	movl	20(%esi),%ebx
3107	cmpl	$192,%ebp
3108	je	.L0091st192
3109	movl	24(%esi),%ecx
3110	movl	28(%esi),%edx
3111	jmp	.L0101st256
3112.align	4
3113.L0091st192:
3114	movl	%eax,%ecx
3115	movl	%ebx,%edx
3116	notl	%ecx
3117	notl	%edx
3118.align	4
3119.L0101st256:
3120	bswap	%eax
3121	bswap	%ebx
3122	bswap	%ecx
3123	bswap	%edx
3124	movl	%eax,32(%edi)
3125	movl	%ebx,36(%edi)
3126	movl	%ecx,40(%edi)
3127	movl	%edx,44(%edi)
3128	xorl	(%edi),%eax
3129	xorl	4(%edi),%ebx
3130	xorl	8(%edi),%ecx
3131	xorl	12(%edi),%edx
3132.align	4
3133.L0081st128:
3134	call	.L011pic_point
3135.L011pic_point:
3136	popl	%ebp
3137	leal	.LCamellia_SBOX-.L011pic_point(%ebp),%ebp
3138	leal	.LCamellia_SIGMA-.LCamellia_SBOX(%ebp),%edi
3139	movl	(%edi),%esi
3140	movl	%eax,(%esp)
3141	movl	%ebx,4(%esp)
3142	movl	%ecx,8(%esp)
3143	movl	%edx,12(%esp)
3144	xorl	%esi,%eax
3145	xorl	4(%edi),%ebx
3146	movzbl	%ah,%esi
3147	movl	2052(%ebp,%esi,8),%edx
3148	movzbl	%al,%esi
3149	xorl	4(%ebp,%esi,8),%edx
3150	shrl	$16,%eax
3151	movzbl	%bl,%esi
3152	movl	(%ebp,%esi,8),%ecx
3153	movzbl	%ah,%esi
3154	xorl	(%ebp,%esi,8),%edx
3155	movzbl	%bh,%esi
3156	xorl	4(%ebp,%esi,8),%ecx
3157	shrl	$16,%ebx
3158	movzbl	%al,%eax
3159	xorl	2048(%ebp,%eax,8),%edx
3160	movzbl	%bh,%esi
3161	movl	12(%esp),%eax
3162	xorl	%edx,%ecx
3163	rorl	$8,%edx
3164	xorl	2048(%ebp,%esi,8),%ecx
3165	movzbl	%bl,%esi
3166	movl	8(%esp),%ebx
3167	xorl	%eax,%edx
3168	xorl	2052(%ebp,%esi,8),%ecx
3169	movl	8(%edi),%esi
3170	xorl	%ecx,%edx
3171	movl	%edx,12(%esp)
3172	xorl	%ebx,%ecx
3173	movl	%ecx,8(%esp)
3174	xorl	%esi,%ecx
3175	xorl	12(%edi),%edx
3176	movzbl	%ch,%esi
3177	movl	2052(%ebp,%esi,8),%ebx
3178	movzbl	%cl,%esi
3179	xorl	4(%ebp,%esi,8),%ebx
3180	shrl	$16,%ecx
3181	movzbl	%dl,%esi
3182	movl	(%ebp,%esi,8),%eax
3183	movzbl	%ch,%esi
3184	xorl	(%ebp,%esi,8),%ebx
3185	movzbl	%dh,%esi
3186	xorl	4(%ebp,%esi,8),%eax
3187	shrl	$16,%edx
3188	movzbl	%cl,%ecx
3189	xorl	2048(%ebp,%ecx,8),%ebx
3190	movzbl	%dh,%esi
3191	movl	4(%esp),%ecx
3192	xorl	%ebx,%eax
3193	rorl	$8,%ebx
3194	xorl	2048(%ebp,%esi,8),%eax
3195	movzbl	%dl,%esi
3196	movl	(%esp),%edx
3197	xorl	%ecx,%ebx
3198	xorl	2052(%ebp,%esi,8),%eax
3199	movl	16(%edi),%esi
3200	xorl	%eax,%ebx
3201	movl	%ebx,4(%esp)
3202	xorl	%edx,%eax
3203	movl	%eax,(%esp)
3204	movl	8(%esp),%ecx
3205	movl	12(%esp),%edx
3206	movl	44(%esp),%esi
3207	xorl	(%esi),%eax
3208	xorl	4(%esi),%ebx
3209	xorl	8(%esi),%ecx
3210	xorl	12(%esi),%edx
3211	movl	16(%edi),%esi
3212	movl	%eax,(%esp)
3213	movl	%ebx,4(%esp)
3214	movl	%ecx,8(%esp)
3215	movl	%edx,12(%esp)
3216	xorl	%esi,%eax
3217	xorl	20(%edi),%ebx
3218	movzbl	%ah,%esi
3219	movl	2052(%ebp,%esi,8),%edx
3220	movzbl	%al,%esi
3221	xorl	4(%ebp,%esi,8),%edx
3222	shrl	$16,%eax
3223	movzbl	%bl,%esi
3224	movl	(%ebp,%esi,8),%ecx
3225	movzbl	%ah,%esi
3226	xorl	(%ebp,%esi,8),%edx
3227	movzbl	%bh,%esi
3228	xorl	4(%ebp,%esi,8),%ecx
3229	shrl	$16,%ebx
3230	movzbl	%al,%eax
3231	xorl	2048(%ebp,%eax,8),%edx
3232	movzbl	%bh,%esi
3233	movl	12(%esp),%eax
3234	xorl	%edx,%ecx
3235	rorl	$8,%edx
3236	xorl	2048(%ebp,%esi,8),%ecx
3237	movzbl	%bl,%esi
3238	movl	8(%esp),%ebx
3239	xorl	%eax,%edx
3240	xorl	2052(%ebp,%esi,8),%ecx
3241	movl	24(%edi),%esi
3242	xorl	%ecx,%edx
3243	movl	%edx,12(%esp)
3244	xorl	%ebx,%ecx
3245	movl	%ecx,8(%esp)
3246	xorl	%esi,%ecx
3247	xorl	28(%edi),%edx
3248	movzbl	%ch,%esi
3249	movl	2052(%ebp,%esi,8),%ebx
3250	movzbl	%cl,%esi
3251	xorl	4(%ebp,%esi,8),%ebx
3252	shrl	$16,%ecx
3253	movzbl	%dl,%esi
3254	movl	(%ebp,%esi,8),%eax
3255	movzbl	%ch,%esi
3256	xorl	(%ebp,%esi,8),%ebx
3257	movzbl	%dh,%esi
3258	xorl	4(%ebp,%esi,8),%eax
3259	shrl	$16,%edx
3260	movzbl	%cl,%ecx
3261	xorl	2048(%ebp,%ecx,8),%ebx
3262	movzbl	%dh,%esi
3263	movl	4(%esp),%ecx
3264	xorl	%ebx,%eax
3265	rorl	$8,%ebx
3266	xorl	2048(%ebp,%esi,8),%eax
3267	movzbl	%dl,%esi
3268	movl	(%esp),%edx
3269	xorl	%ecx,%ebx
3270	xorl	2052(%ebp,%esi,8),%eax
3271	movl	32(%edi),%esi
3272	xorl	%eax,%ebx
3273	movl	%ebx,4(%esp)
3274	xorl	%edx,%eax
3275	movl	%eax,(%esp)
3276	movl	8(%esp),%ecx
3277	movl	12(%esp),%edx
3278	movl	36(%esp),%esi
3279	cmpl	$128,%esi
3280	jne	.L0122nd256
3281	movl	44(%esp),%edi
3282	leal	128(%edi),%edi
3283	movl	%eax,-112(%edi)
3284	movl	%ebx,-108(%edi)
3285	movl	%ecx,-104(%edi)
3286	movl	%edx,-100(%edi)
3287	movl	%eax,%ebp
3288	shll	$15,%eax
3289	movl	%ebx,%esi
3290	shrl	$17,%esi
3291	shll	$15,%ebx
3292	orl	%esi,%eax
3293	movl	%ecx,%esi
3294	shll	$15,%ecx
3295	movl	%eax,-80(%edi)
3296	shrl	$17,%esi
3297	orl	%esi,%ebx
3298	shrl	$17,%ebp
3299	movl	%edx,%esi
3300	shrl	$17,%esi
3301	movl	%ebx,-76(%edi)
3302	shll	$15,%edx
3303	orl	%esi,%ecx
3304	orl	%ebp,%edx
3305	movl	%ecx,-72(%edi)
3306	movl	%edx,-68(%edi)
3307	movl	%eax,%ebp
3308	shll	$15,%eax
3309	movl	%ebx,%esi
3310	shrl	$17,%esi
3311	shll	$15,%ebx
3312	orl	%esi,%eax
3313	movl	%ecx,%esi
3314	shll	$15,%ecx
3315	movl	%eax,-64(%edi)
3316	shrl	$17,%esi
3317	orl	%esi,%ebx
3318	shrl	$17,%ebp
3319	movl	%edx,%esi
3320	shrl	$17,%esi
3321	movl	%ebx,-60(%edi)
3322	shll	$15,%edx
3323	orl	%esi,%ecx
3324	orl	%ebp,%edx
3325	movl	%ecx,-56(%edi)
3326	movl	%edx,-52(%edi)
3327	movl	%eax,%ebp
3328	shll	$15,%eax
3329	movl	%ebx,%esi
3330	shrl	$17,%esi
3331	shll	$15,%ebx
3332	orl	%esi,%eax
3333	movl	%ecx,%esi
3334	shll	$15,%ecx
3335	movl	%eax,-32(%edi)
3336	shrl	$17,%esi
3337	orl	%esi,%ebx
3338	shrl	$17,%ebp
3339	movl	%edx,%esi
3340	shrl	$17,%esi
3341	movl	%ebx,-28(%edi)
3342	shll	$15,%edx
3343	orl	%esi,%ecx
3344	orl	%ebp,%edx
3345	movl	%eax,%ebp
3346	shll	$15,%eax
3347	movl	%ebx,%esi
3348	shrl	$17,%esi
3349	shll	$15,%ebx
3350	orl	%esi,%eax
3351	movl	%ecx,%esi
3352	shll	$15,%ecx
3353	movl	%eax,-16(%edi)
3354	shrl	$17,%esi
3355	orl	%esi,%ebx
3356	shrl	$17,%ebp
3357	movl	%edx,%esi
3358	shrl	$17,%esi
3359	movl	%ebx,-12(%edi)
3360	shll	$15,%edx
3361	orl	%esi,%ecx
3362	orl	%ebp,%edx
3363	movl	%ecx,-8(%edi)
3364	movl	%edx,-4(%edi)
3365	movl	%ebx,%ebp
3366	shll	$2,%ebx
3367	movl	%ecx,%esi
3368	shrl	$30,%esi
3369	shll	$2,%ecx
3370	orl	%esi,%ebx
3371	movl	%edx,%esi
3372	shll	$2,%edx
3373	movl	%ebx,32(%edi)
3374	shrl	$30,%esi
3375	orl	%esi,%ecx
3376	shrl	$30,%ebp
3377	movl	%eax,%esi
3378	shrl	$30,%esi
3379	movl	%ecx,36(%edi)
3380	shll	$2,%eax
3381	orl	%esi,%edx
3382	orl	%ebp,%eax
3383	movl	%edx,40(%edi)
3384	movl	%eax,44(%edi)
3385	movl	%ebx,%ebp
3386	shll	$17,%ebx
3387	movl	%ecx,%esi
3388	shrl	$15,%esi
3389	shll	$17,%ecx
3390	orl	%esi,%ebx
3391	movl	%edx,%esi
3392	shll	$17,%edx
3393	movl	%ebx,64(%edi)
3394	shrl	$15,%esi
3395	orl	%esi,%ecx
3396	shrl	$15,%ebp
3397	movl	%eax,%esi
3398	shrl	$15,%esi
3399	movl	%ecx,68(%edi)
3400	shll	$17,%eax
3401	orl	%esi,%edx
3402	orl	%ebp,%eax
3403	movl	%edx,72(%edi)
3404	movl	%eax,76(%edi)
3405	movl	-128(%edi),%ebx
3406	movl	-124(%edi),%ecx
3407	movl	-120(%edi),%edx
3408	movl	-116(%edi),%eax
3409	movl	%ebx,%ebp
3410	shll	$15,%ebx
3411	movl	%ecx,%esi
3412	shrl	$17,%esi
3413	shll	$15,%ecx
3414	orl	%esi,%ebx
3415	movl	%edx,%esi
3416	shll	$15,%edx
3417	movl	%ebx,-96(%edi)
3418	shrl	$17,%esi
3419	orl	%esi,%ecx
3420	shrl	$17,%ebp
3421	movl	%eax,%esi
3422	shrl	$17,%esi
3423	movl	%ecx,-92(%edi)
3424	shll	$15,%eax
3425	orl	%esi,%edx
3426	orl	%ebp,%eax
3427	movl	%edx,-88(%edi)
3428	movl	%eax,-84(%edi)
3429	movl	%ebx,%ebp
3430	shll	$30,%ebx
3431	movl	%ecx,%esi
3432	shrl	$2,%esi
3433	shll	$30,%ecx
3434	orl	%esi,%ebx
3435	movl	%edx,%esi
3436	shll	$30,%edx
3437	movl	%ebx,-48(%edi)
3438	shrl	$2,%esi
3439	orl	%esi,%ecx
3440	shrl	$2,%ebp
3441	movl	%eax,%esi
3442	shrl	$2,%esi
3443	movl	%ecx,-44(%edi)
3444	shll	$30,%eax
3445	orl	%esi,%edx
3446	orl	%ebp,%eax
3447	movl	%edx,-40(%edi)
3448	movl	%eax,-36(%edi)
3449	movl	%ebx,%ebp
3450	shll	$15,%ebx
3451	movl	%ecx,%esi
3452	shrl	$17,%esi
3453	shll	$15,%ecx
3454	orl	%esi,%ebx
3455	movl	%edx,%esi
3456	shll	$15,%edx
3457	shrl	$17,%esi
3458	orl	%esi,%ecx
3459	shrl	$17,%ebp
3460	movl	%eax,%esi
3461	shrl	$17,%esi
3462	shll	$15,%eax
3463	orl	%esi,%edx
3464	orl	%ebp,%eax
3465	movl	%edx,-24(%edi)
3466	movl	%eax,-20(%edi)
3467	movl	%ebx,%ebp
3468	shll	$17,%ebx
3469	movl	%ecx,%esi
3470	shrl	$15,%esi
3471	shll	$17,%ecx
3472	orl	%esi,%ebx
3473	movl	%edx,%esi
3474	shll	$17,%edx
3475	movl	%ebx,(%edi)
3476	shrl	$15,%esi
3477	orl	%esi,%ecx
3478	shrl	$15,%ebp
3479	movl	%eax,%esi
3480	shrl	$15,%esi
3481	movl	%ecx,4(%edi)
3482	shll	$17,%eax
3483	orl	%esi,%edx
3484	orl	%ebp,%eax
3485	movl	%edx,8(%edi)
3486	movl	%eax,12(%edi)
3487	movl	%ebx,%ebp
3488	shll	$17,%ebx
3489	movl	%ecx,%esi
3490	shrl	$15,%esi
3491	shll	$17,%ecx
3492	orl	%esi,%ebx
3493	movl	%edx,%esi
3494	shll	$17,%edx
3495	movl	%ebx,16(%edi)
3496	shrl	$15,%esi
3497	orl	%esi,%ecx
3498	shrl	$15,%ebp
3499	movl	%eax,%esi
3500	shrl	$15,%esi
3501	movl	%ecx,20(%edi)
3502	shll	$17,%eax
3503	orl	%esi,%edx
3504	orl	%ebp,%eax
3505	movl	%edx,24(%edi)
3506	movl	%eax,28(%edi)
3507	movl	%ebx,%ebp
3508	shll	$17,%ebx
3509	movl	%ecx,%esi
3510	shrl	$15,%esi
3511	shll	$17,%ecx
3512	orl	%esi,%ebx
3513	movl	%edx,%esi
3514	shll	$17,%edx
3515	movl	%ebx,48(%edi)
3516	shrl	$15,%esi
3517	orl	%esi,%ecx
3518	shrl	$15,%ebp
3519	movl	%eax,%esi
3520	shrl	$15,%esi
3521	movl	%ecx,52(%edi)
3522	shll	$17,%eax
3523	orl	%esi,%edx
3524	orl	%ebp,%eax
3525	movl	%edx,56(%edi)
3526	movl	%eax,60(%edi)
3527	movl	$3,%eax
3528	jmp	.L013done
3529.align	16
3530.L0122nd256:
3531	movl	44(%esp),%esi
3532	movl	%eax,48(%esi)
3533	movl	%ebx,52(%esi)
3534	movl	%ecx,56(%esi)
3535	movl	%edx,60(%esi)
3536	xorl	32(%esi),%eax
3537	xorl	36(%esi),%ebx
3538	xorl	40(%esi),%ecx
3539	xorl	44(%esi),%edx
3540	movl	32(%edi),%esi
3541	movl	%eax,(%esp)
3542	movl	%ebx,4(%esp)
3543	movl	%ecx,8(%esp)
3544	movl	%edx,12(%esp)
3545	xorl	%esi,%eax
3546	xorl	36(%edi),%ebx
3547	movzbl	%ah,%esi
3548	movl	2052(%ebp,%esi,8),%edx
3549	movzbl	%al,%esi
3550	xorl	4(%ebp,%esi,8),%edx
3551	shrl	$16,%eax
3552	movzbl	%bl,%esi
3553	movl	(%ebp,%esi,8),%ecx
3554	movzbl	%ah,%esi
3555	xorl	(%ebp,%esi,8),%edx
3556	movzbl	%bh,%esi
3557	xorl	4(%ebp,%esi,8),%ecx
3558	shrl	$16,%ebx
3559	movzbl	%al,%eax
3560	xorl	2048(%ebp,%eax,8),%edx
3561	movzbl	%bh,%esi
3562	movl	12(%esp),%eax
3563	xorl	%edx,%ecx
3564	rorl	$8,%edx
3565	xorl	2048(%ebp,%esi,8),%ecx
3566	movzbl	%bl,%esi
3567	movl	8(%esp),%ebx
3568	xorl	%eax,%edx
3569	xorl	2052(%ebp,%esi,8),%ecx
3570	movl	40(%edi),%esi
3571	xorl	%ecx,%edx
3572	movl	%edx,12(%esp)
3573	xorl	%ebx,%ecx
3574	movl	%ecx,8(%esp)
3575	xorl	%esi,%ecx
3576	xorl	44(%edi),%edx
3577	movzbl	%ch,%esi
3578	movl	2052(%ebp,%esi,8),%ebx
3579	movzbl	%cl,%esi
3580	xorl	4(%ebp,%esi,8),%ebx
3581	shrl	$16,%ecx
3582	movzbl	%dl,%esi
3583	movl	(%ebp,%esi,8),%eax
3584	movzbl	%ch,%esi
3585	xorl	(%ebp,%esi,8),%ebx
3586	movzbl	%dh,%esi
3587	xorl	4(%ebp,%esi,8),%eax
3588	shrl	$16,%edx
3589	movzbl	%cl,%ecx
3590	xorl	2048(%ebp,%ecx,8),%ebx
3591	movzbl	%dh,%esi
3592	movl	4(%esp),%ecx
3593	xorl	%ebx,%eax
3594	rorl	$8,%ebx
3595	xorl	2048(%ebp,%esi,8),%eax
3596	movzbl	%dl,%esi
3597	movl	(%esp),%edx
3598	xorl	%ecx,%ebx
3599	xorl	2052(%ebp,%esi,8),%eax
3600	movl	48(%edi),%esi
3601	xorl	%eax,%ebx
3602	movl	%ebx,4(%esp)
3603	xorl	%edx,%eax
3604	movl	%eax,(%esp)
3605	movl	8(%esp),%ecx
3606	movl	12(%esp),%edx
3607	movl	44(%esp),%edi
3608	leal	128(%edi),%edi
3609	movl	%eax,-112(%edi)
3610	movl	%ebx,-108(%edi)
3611	movl	%ecx,-104(%edi)
3612	movl	%edx,-100(%edi)
3613	movl	%eax,%ebp
3614	shll	$30,%eax
3615	movl	%ebx,%esi
3616	shrl	$2,%esi
3617	shll	$30,%ebx
3618	orl	%esi,%eax
3619	movl	%ecx,%esi
3620	shll	$30,%ecx
3621	movl	%eax,-48(%edi)
3622	shrl	$2,%esi
3623	orl	%esi,%ebx
3624	shrl	$2,%ebp
3625	movl	%edx,%esi
3626	shrl	$2,%esi
3627	movl	%ebx,-44(%edi)
3628	shll	$30,%edx
3629	orl	%esi,%ecx
3630	orl	%ebp,%edx
3631	movl	%ecx,-40(%edi)
3632	movl	%edx,-36(%edi)
3633	movl	%eax,%ebp
3634	shll	$30,%eax
3635	movl	%ebx,%esi
3636	shrl	$2,%esi
3637	shll	$30,%ebx
3638	orl	%esi,%eax
3639	movl	%ecx,%esi
3640	shll	$30,%ecx
3641	movl	%eax,32(%edi)
3642	shrl	$2,%esi
3643	orl	%esi,%ebx
3644	shrl	$2,%ebp
3645	movl	%edx,%esi
3646	shrl	$2,%esi
3647	movl	%ebx,36(%edi)
3648	shll	$30,%edx
3649	orl	%esi,%ecx
3650	orl	%ebp,%edx
3651	movl	%ecx,40(%edi)
3652	movl	%edx,44(%edi)
3653	movl	%ebx,%ebp
3654	shll	$19,%ebx
3655	movl	%ecx,%esi
3656	shrl	$13,%esi
3657	shll	$19,%ecx
3658	orl	%esi,%ebx
3659	movl	%edx,%esi
3660	shll	$19,%edx
3661	movl	%ebx,128(%edi)
3662	shrl	$13,%esi
3663	orl	%esi,%ecx
3664	shrl	$13,%ebp
3665	movl	%eax,%esi
3666	shrl	$13,%esi
3667	movl	%ecx,132(%edi)
3668	shll	$19,%eax
3669	orl	%esi,%edx
3670	orl	%ebp,%eax
3671	movl	%edx,136(%edi)
3672	movl	%eax,140(%edi)
3673	movl	-96(%edi),%ebx
3674	movl	-92(%edi),%ecx
3675	movl	-88(%edi),%edx
3676	movl	-84(%edi),%eax
3677	movl	%ebx,%ebp
3678	shll	$15,%ebx
3679	movl	%ecx,%esi
3680	shrl	$17,%esi
3681	shll	$15,%ecx
3682	orl	%esi,%ebx
3683	movl	%edx,%esi
3684	shll	$15,%edx
3685	movl	%ebx,-96(%edi)
3686	shrl	$17,%esi
3687	orl	%esi,%ecx
3688	shrl	$17,%ebp
3689	movl	%eax,%esi
3690	shrl	$17,%esi
3691	movl	%ecx,-92(%edi)
3692	shll	$15,%eax
3693	orl	%esi,%edx
3694	orl	%ebp,%eax
3695	movl	%edx,-88(%edi)
3696	movl	%eax,-84(%edi)
3697	movl	%ebx,%ebp
3698	shll	$15,%ebx
3699	movl	%ecx,%esi
3700	shrl	$17,%esi
3701	shll	$15,%ecx
3702	orl	%esi,%ebx
3703	movl	%edx,%esi
3704	shll	$15,%edx
3705	movl	%ebx,-64(%edi)
3706	shrl	$17,%esi
3707	orl	%esi,%ecx
3708	shrl	$17,%ebp
3709	movl	%eax,%esi
3710	shrl	$17,%esi
3711	movl	%ecx,-60(%edi)
3712	shll	$15,%eax
3713	orl	%esi,%edx
3714	orl	%ebp,%eax
3715	movl	%edx,-56(%edi)
3716	movl	%eax,-52(%edi)
3717	movl	%ebx,%ebp
3718	shll	$30,%ebx
3719	movl	%ecx,%esi
3720	shrl	$2,%esi
3721	shll	$30,%ecx
3722	orl	%esi,%ebx
3723	movl	%edx,%esi
3724	shll	$30,%edx
3725	movl	%ebx,16(%edi)
3726	shrl	$2,%esi
3727	orl	%esi,%ecx
3728	shrl	$2,%ebp
3729	movl	%eax,%esi
3730	shrl	$2,%esi
3731	movl	%ecx,20(%edi)
3732	shll	$30,%eax
3733	orl	%esi,%edx
3734	orl	%ebp,%eax
3735	movl	%edx,24(%edi)
3736	movl	%eax,28(%edi)
3737	movl	%ecx,%ebp
3738	shll	$2,%ecx
3739	movl	%edx,%esi
3740	shrl	$30,%esi
3741	shll	$2,%edx
3742	orl	%esi,%ecx
3743	movl	%eax,%esi
3744	shll	$2,%eax
3745	movl	%ecx,80(%edi)
3746	shrl	$30,%esi
3747	orl	%esi,%edx
3748	shrl	$30,%ebp
3749	movl	%ebx,%esi
3750	shrl	$30,%esi
3751	movl	%edx,84(%edi)
3752	shll	$2,%ebx
3753	orl	%esi,%eax
3754	orl	%ebp,%ebx
3755	movl	%eax,88(%edi)
3756	movl	%ebx,92(%edi)
3757	movl	-80(%edi),%ecx
3758	movl	-76(%edi),%edx
3759	movl	-72(%edi),%eax
3760	movl	-68(%edi),%ebx
3761	movl	%ecx,%ebp
3762	shll	$15,%ecx
3763	movl	%edx,%esi
3764	shrl	$17,%esi
3765	shll	$15,%edx
3766	orl	%esi,%ecx
3767	movl	%eax,%esi
3768	shll	$15,%eax
3769	movl	%ecx,-80(%edi)
3770	shrl	$17,%esi
3771	orl	%esi,%edx
3772	shrl	$17,%ebp
3773	movl	%ebx,%esi
3774	shrl	$17,%esi
3775	movl	%edx,-76(%edi)
3776	shll	$15,%ebx
3777	orl	%esi,%eax
3778	orl	%ebp,%ebx
3779	movl	%eax,-72(%edi)
3780	movl	%ebx,-68(%edi)
3781	movl	%ecx,%ebp
3782	shll	$30,%ecx
3783	movl	%edx,%esi
3784	shrl	$2,%esi
3785	shll	$30,%edx
3786	orl	%esi,%ecx
3787	movl	%eax,%esi
3788	shll	$30,%eax
3789	movl	%ecx,-16(%edi)
3790	shrl	$2,%esi
3791	orl	%esi,%edx
3792	shrl	$2,%ebp
3793	movl	%ebx,%esi
3794	shrl	$2,%esi
3795	movl	%edx,-12(%edi)
3796	shll	$30,%ebx
3797	orl	%esi,%eax
3798	orl	%ebp,%ebx
3799	movl	%eax,-8(%edi)
3800	movl	%ebx,-4(%edi)
3801	movl	%edx,64(%edi)
3802	movl	%eax,68(%edi)
3803	movl	%ebx,72(%edi)
3804	movl	%ecx,76(%edi)
3805	movl	%edx,%ebp
3806	shll	$17,%edx
3807	movl	%eax,%esi
3808	shrl	$15,%esi
3809	shll	$17,%eax
3810	orl	%esi,%edx
3811	movl	%ebx,%esi
3812	shll	$17,%ebx
3813	movl	%edx,96(%edi)
3814	shrl	$15,%esi
3815	orl	%esi,%eax
3816	shrl	$15,%ebp
3817	movl	%ecx,%esi
3818	shrl	$15,%esi
3819	movl	%eax,100(%edi)
3820	shll	$17,%ecx
3821	orl	%esi,%ebx
3822	orl	%ebp,%ecx
3823	movl	%ebx,104(%edi)
3824	movl	%ecx,108(%edi)
3825	movl	-128(%edi),%edx
3826	movl	-124(%edi),%eax
3827	movl	-120(%edi),%ebx
3828	movl	-116(%edi),%ecx
3829	movl	%eax,%ebp
3830	shll	$13,%eax
3831	movl	%ebx,%esi
3832	shrl	$19,%esi
3833	shll	$13,%ebx
3834	orl	%esi,%eax
3835	movl	%ecx,%esi
3836	shll	$13,%ecx
3837	movl	%eax,-32(%edi)
3838	shrl	$19,%esi
3839	orl	%esi,%ebx
3840	shrl	$19,%ebp
3841	movl	%edx,%esi
3842	shrl	$19,%esi
3843	movl	%ebx,-28(%edi)
3844	shll	$13,%edx
3845	orl	%esi,%ecx
3846	orl	%ebp,%edx
3847	movl	%ecx,-24(%edi)
3848	movl	%edx,-20(%edi)
3849	movl	%eax,%ebp
3850	shll	$15,%eax
3851	movl	%ebx,%esi
3852	shrl	$17,%esi
3853	shll	$15,%ebx
3854	orl	%esi,%eax
3855	movl	%ecx,%esi
3856	shll	$15,%ecx
3857	movl	%eax,(%edi)
3858	shrl	$17,%esi
3859	orl	%esi,%ebx
3860	shrl	$17,%ebp
3861	movl	%edx,%esi
3862	shrl	$17,%esi
3863	movl	%ebx,4(%edi)
3864	shll	$15,%edx
3865	orl	%esi,%ecx
3866	orl	%ebp,%edx
3867	movl	%ecx,8(%edi)
3868	movl	%edx,12(%edi)
3869	movl	%eax,%ebp
3870	shll	$17,%eax
3871	movl	%ebx,%esi
3872	shrl	$15,%esi
3873	shll	$17,%ebx
3874	orl	%esi,%eax
3875	movl	%ecx,%esi
3876	shll	$17,%ecx
3877	movl	%eax,48(%edi)
3878	shrl	$15,%esi
3879	orl	%esi,%ebx
3880	shrl	$15,%ebp
3881	movl	%edx,%esi
3882	shrl	$15,%esi
3883	movl	%ebx,52(%edi)
3884	shll	$17,%edx
3885	orl	%esi,%ecx
3886	orl	%ebp,%edx
3887	movl	%ecx,56(%edi)
3888	movl	%edx,60(%edi)
3889	movl	%ebx,%ebp
3890	shll	$2,%ebx
3891	movl	%ecx,%esi
3892	shrl	$30,%esi
3893	shll	$2,%ecx
3894	orl	%esi,%ebx
3895	movl	%edx,%esi
3896	shll	$2,%edx
3897	movl	%ebx,112(%edi)
3898	shrl	$30,%esi
3899	orl	%esi,%ecx
3900	shrl	$30,%ebp
3901	movl	%eax,%esi
3902	shrl	$30,%esi
3903	movl	%ecx,116(%edi)
3904	shll	$2,%eax
3905	orl	%esi,%edx
3906	orl	%ebp,%eax
3907	movl	%edx,120(%edi)
3908	movl	%eax,124(%edi)
3909	movl	$4,%eax
3910.L013done:
3911	leal	144(%edi),%edx
3912	addl	$16,%esp
3913	popl	%edi
3914	popl	%esi
3915	popl	%ebx
3916	popl	%ebp
3917	ret
3918.size	Camellia_Ekeygen,.-.L_Camellia_Ekeygen_begin
3919.globl	private_Camellia_set_key
3920.type	private_Camellia_set_key,@function
3921.align	16
3922private_Camellia_set_key:
3923.L_private_Camellia_set_key_begin:
3924	pushl	%ebx
3925	movl	8(%esp),%ecx
3926	movl	12(%esp),%ebx
3927	movl	16(%esp),%edx
3928	movl	$-1,%eax
3929	testl	%ecx,%ecx
3930	jz	.L014done
3931	testl	%edx,%edx
3932	jz	.L014done
3933	movl	$-2,%eax
3934	cmpl	$256,%ebx
3935	je	.L015arg_ok
3936	cmpl	$192,%ebx
3937	je	.L015arg_ok
3938	cmpl	$128,%ebx
3939	jne	.L014done
3940.align	4
3941.L015arg_ok:
3942	pushl	%edx
3943	pushl	%ecx
3944	pushl	%ebx
3945	call	.L_Camellia_Ekeygen_begin
3946	addl	$12,%esp
3947	movl	%eax,(%edx)
3948	xorl	%eax,%eax
3949.align	4
3950.L014done:
3951	popl	%ebx
3952	ret
3953.size	private_Camellia_set_key,.-.L_private_Camellia_set_key_begin
3954.align	64
3955.LCamellia_SIGMA:
3956.long	2694735487,1003262091,3061508184,1286239154,3337565999,3914302142,1426019237,4057165596,283453434,3731369245,2958461122,3018244605,0,0,0,0
3957.align	64
3958.LCamellia_SBOX:
3959.long	1886416896,1886388336
3960.long	2189591040,741081132
3961.long	741092352,3014852787
3962.long	3974949888,3233808576
3963.long	3014898432,3840147684
3964.long	656877312,1465319511
3965.long	3233857536,3941204202
3966.long	3857048832,2930639022
3967.long	3840205824,589496355
3968.long	2240120064,1802174571
3969.long	1465341696,1162149957
3970.long	892679424,2779054245
3971.long	3941263872,3991732461
3972.long	202116096,1330577487
3973.long	2930683392,488439837
3974.long	1094795520,2459041938
3975.long	589505280,2256928902
3976.long	4025478912,2947481775
3977.long	1802201856,2088501372
3978.long	2475922176,522125343
3979.long	1162167552,1044250686
3980.long	421075200,3705405660
3981.long	2779096320,1583218782
3982.long	555819264,185270283
3983.long	3991792896,2795896998
3984.long	235802112,960036921
3985.long	1330597632,3587506389
3986.long	1313754624,1566376029
3987.long	488447232,3654877401
3988.long	1701143808,1515847770
3989.long	2459079168,1364262993
3990.long	3183328512,1819017324
3991.long	2256963072,2341142667
3992.long	3099113472,2593783962
3993.long	2947526400,4227531003
3994.long	2408550144,2964324528
3995.long	2088532992,1953759348
3996.long	3958106880,724238379
3997.long	522133248,4042260720
3998.long	3469659648,2223243396
3999.long	1044266496,3755933919
4000.long	808464384,3419078859
4001.long	3705461760,875823156
4002.long	1600085760,1987444854
4003.long	1583242752,1835860077
4004.long	3318072576,2846425257
4005.long	185273088,3520135377
4006.long	437918208,67371012
4007.long	2795939328,336855060
4008.long	3789676800,976879674
4009.long	960051456,3739091166
4010.long	3402287616,286326801
4011.long	3587560704,842137650
4012.long	1195853568,2627469468
4013.long	1566399744,1397948499
4014.long	1027423488,4075946226
4015.long	3654932736,4278059262
4016.long	16843008,3486449871
4017.long	1515870720,3284336835
4018.long	3604403712,2054815866
4019.long	1364283648,606339108
4020.long	1448498688,3907518696
4021.long	1819044864,1616904288
4022.long	1296911616,1768489065
4023.long	2341178112,2863268010
4024.long	218959104,2694840480
4025.long	2593823232,2711683233
4026.long	1717986816,1650589794
4027.long	4227595008,1414791252
4028.long	3435973632,505282590
4029.long	2964369408,3772776672
4030.long	757935360,1684275300
4031.long	1953788928,269484048
4032.long	303174144,0
4033.long	724249344,2745368739
4034.long	538976256,1970602101
4035.long	4042321920,2324299914
4036.long	2981212416,3873833190
4037.long	2223277056,151584777
4038.long	2576980224,3722248413
4039.long	3755990784,2273771655
4040.long	1280068608,2206400643
4041.long	3419130624,3452764365
4042.long	3267543552,2425356432
4043.long	875836416,1936916595
4044.long	2122219008,4143317238
4045.long	1987474944,2644312221
4046.long	84215040,3216965823
4047.long	1835887872,1381105746
4048.long	3082270464,3638034648
4049.long	2846468352,3368550600
4050.long	825307392,3334865094
4051.long	3520188672,2172715137
4052.long	387389184,1869545583
4053.long	67372032,320012307
4054.long	3621246720,1667432547
4055.long	336860160,3924361449
4056.long	1482184704,2812739751
4057.long	976894464,2677997727
4058.long	1633771776,3166437564
4059.long	3739147776,690552873
4060.long	454761216,4193845497
4061.long	286331136,791609391
4062.long	471604224,3031695540
4063.long	842150400,2021130360
4064.long	252645120,101056518
4065.long	2627509248,3890675943
4066.long	370546176,1903231089
4067.long	1397969664,3570663636
4068.long	404232192,2880110763
4069.long	4076007936,2290614408
4070.long	572662272,2374828173
4071.long	4278124032,1920073842
4072.long	1145324544,3115909305
4073.long	3486502656,4177002744
4074.long	2998055424,2896953516
4075.long	3284386560,909508662
4076.long	3048584448,707395626
4077.long	2054846976,1010565180
4078.long	2442236160,4059103473
4079.long	606348288,1077936192
4080.long	134744064,3553820883
4081.long	3907577856,3149594811
4082.long	2829625344,1128464451
4083.long	1616928768,353697813
4084.long	4244438016,2913796269
4085.long	1768515840,2004287607
4086.long	1347440640,2155872384
4087.long	2863311360,2189557890
4088.long	3503345664,3974889708
4089.long	2694881280,656867367
4090.long	2105376000,3856990437
4091.long	2711724288,2240086149
4092.long	2307492096,892665909
4093.long	1650614784,202113036
4094.long	2543294208,1094778945
4095.long	1414812672,4025417967
4096.long	1532713728,2475884691
4097.long	505290240,421068825
4098.long	2509608192,555810849
4099.long	3772833792,235798542
4100.long	4294967040,1313734734
4101.long	1684300800,1701118053
4102.long	3537031680,3183280317
4103.long	269488128,3099066552
4104.long	3301229568,2408513679
4105.long	0,3958046955
4106.long	1212696576,3469607118
4107.long	2745410304,808452144
4108.long	4160222976,1600061535
4109.long	1970631936,3318022341
4110.long	3688618752,437911578
4111.long	2324335104,3789619425
4112.long	50529024,3402236106
4113.long	3873891840,1195835463
4114.long	3671775744,1027407933
4115.long	151587072,16842753
4116.long	1061109504,3604349142
4117.long	3722304768,1448476758
4118.long	2492765184,1296891981
4119.long	2273806080,218955789
4120.long	1549556736,1717960806
4121.long	2206434048,3435921612
4122.long	33686016,757923885
4123.long	3452816640,303169554
4124.long	1246382592,538968096
4125.long	2425393152,2981167281
4126.long	858993408,2576941209
4127.long	1936945920,1280049228
4128.long	1734829824,3267494082
4129.long	4143379968,2122186878
4130.long	4092850944,84213765
4131.long	2644352256,3082223799
4132.long	2139062016,825294897
4133.long	3217014528,387383319
4134.long	3806519808,3621191895
4135.long	1381126656,1482162264
4136.long	2610666240,1633747041
4137.long	3638089728,454754331
4138.long	640034304,471597084
4139.long	3368601600,252641295
4140.long	926365440,370540566
4141.long	3334915584,404226072
4142.long	993737472,572653602
4143.long	2172748032,1145307204
4144.long	2526451200,2998010034
4145.long	1869573888,3048538293
4146.long	1263225600,2442199185
4147.long	320017152,134742024
4148.long	3200171520,2829582504
4149.long	1667457792,4244373756
4150.long	774778368,1347420240
4151.long	3924420864,3503292624
4152.long	2038003968,2105344125
4153.long	2812782336,2307457161
4154.long	2358021120,2543255703
4155.long	2678038272,1532690523
4156.long	1852730880,2509570197
4157.long	3166485504,4294902015
4158.long	2391707136,3536978130
4159.long	690563328,3301179588
4160.long	4126536960,1212678216
4161.long	4193908992,4160159991
4162.long	3065427456,3688562907
4163.long	791621376,50528259
4164.long	4261281024,3671720154
4165.long	3031741440,1061093439
4166.long	1499027712,2492727444
4167.long	2021160960,1549533276
4168.long	2560137216,33685506
4169.long	101058048,1246363722
4170.long	1785358848,858980403
4171.long	3890734848,1734803559
4172.long	1179010560,4092788979
4173.long	1903259904,2139029631
4174.long	3132799488,3806462178
4175.long	3570717696,2610626715
4176.long	623191296,640024614
4177.long	2880154368,926351415
4178.long	1111638528,993722427
4179.long	2290649088,2526412950
4180.long	2728567296,1263206475
4181.long	2374864128,3200123070
4182.long	4210752000,774766638
4183.long	1920102912,2037973113
4184.long	117901056,2357985420
4185.long	3115956480,1852702830
4186.long	1431655680,2391670926
4187.long	4177065984,4126474485
4188.long	4008635904,3065381046
4189.long	2896997376,4261216509
4190.long	168430080,1499005017
4191.long	909522432,2560098456
4192.long	1229539584,1785331818
4193.long	707406336,1178992710
4194.long	1751672832,3132752058
4195.long	1010580480,623181861
4196.long	943208448,1111621698
4197.long	4059164928,2728525986
4198.long	2762253312,4210688250
4199.long	1077952512,117899271
4200.long	673720320,1431634005
4201.long	3553874688,4008575214
4202.long	2071689984,168427530
4203.long	3149642496,1229520969
4204.long	3385444608,1751646312
4205.long	1128481536,943194168
4206.long	3250700544,2762211492
4207.long	353703168,673710120
4208.long	3823362816,2071658619
4209.long	2913840384,3385393353
4210.long	4109693952,3250651329
4211.long	2004317952,3823304931
4212.long	3351758592,4109631732
4213.long	2155905024,3351707847
4214.long	2661195264,2661154974
4215.long	14737632,939538488
4216.long	328965,1090535745
4217.long	5789784,369104406
4218.long	14277081,1979741814
4219.long	6776679,3640711641
4220.long	5131854,2466288531
4221.long	8487297,1610637408
4222.long	13355979,4060148466
4223.long	13224393,1912631922
4224.long	723723,3254829762
4225.long	11447982,2868947883
4226.long	6974058,2583730842
4227.long	14013909,1962964341
4228.long	1579032,100664838
4229.long	6118749,1459640151
4230.long	8553090,2684395680
4231.long	4605510,2432733585
4232.long	14671839,4144035831
4233.long	14079702,3036722613
4234.long	2565927,3372272073
4235.long	9079434,2717950626
4236.long	3289650,2348846220
4237.long	4934475,3523269330
4238.long	4342338,2415956112
4239.long	14408667,4127258358
4240.long	1842204,117442311
4241.long	10395294,2801837991
4242.long	10263708,654321447
4243.long	3815994,2382401166
4244.long	13290186,2986390194
4245.long	2434341,1224755529
4246.long	8092539,3724599006
4247.long	855309,1124090691
4248.long	7434609,1543527516
4249.long	6250335,3607156695
4250.long	2039583,3338717127
4251.long	16316664,1040203326
4252.long	14145495,4110480885
4253.long	4079166,2399178639
4254.long	10329501,1728079719
4255.long	8158332,520101663
4256.long	6316128,402659352
4257.long	12171705,1845522030
4258.long	12500670,2936057775
4259.long	12369084,788541231
4260.long	9145227,3791708898
4261.long	1447446,2231403909
4262.long	3421236,218107149
4263.long	5066061,1392530259
4264.long	12829635,4026593520
4265.long	7500402,2617285788
4266.long	9803157,1694524773
4267.long	11250603,3925928682
4268.long	9342606,2734728099
4269.long	12237498,2919280302
4270.long	8026746,2650840734
4271.long	11776947,3959483628
4272.long	131586,2147516544
4273.long	11842740,754986285
4274.long	11382189,1795189611
4275.long	10658466,2818615464
4276.long	11316396,721431339
4277.long	14211288,905983542
4278.long	10132122,2785060518
4279.long	1513239,3305162181
4280.long	1710618,2248181382
4281.long	3487029,1291865421
4282.long	13421772,855651123
4283.long	16250871,4244700669
4284.long	10066329,1711302246
4285.long	6381921,1476417624
4286.long	5921370,2516620950
4287.long	15263976,973093434
4288.long	2368548,150997257
4289.long	5658198,2499843477
4290.long	4210752,268439568
4291.long	14803425,2013296760
4292.long	6513507,3623934168
4293.long	592137,1107313218
4294.long	3355443,3422604492
4295.long	12566463,4009816047
4296.long	10000536,637543974
4297.long	9934743,3842041317
4298.long	8750469,1627414881
4299.long	6842472,436214298
4300.long	16579836,1056980799
4301.long	15527148,989870907
4302.long	657930,2181071490
4303.long	14342874,3053500086
4304.long	7303023,3674266587
4305.long	5460819,3556824276
4306.long	6447714,2550175896
4307.long	10724259,3892373736
4308.long	3026478,2332068747
4309.long	526344,33554946
4310.long	11513775,3942706155
4311.long	2631720,167774730
4312.long	11579568,738208812
4313.long	7631988,486546717
4314.long	12763842,2952835248
4315.long	12434877,1862299503
4316.long	3552822,2365623693
4317.long	2236962,2281736328
4318.long	3684408,234884622
4319.long	6579300,419436825
4320.long	1973790,2264958855
4321.long	3750201,1308642894
4322.long	2894892,184552203
4323.long	10921638,2835392937
4324.long	3158064,201329676
4325.long	15066597,2030074233
4326.long	4473924,285217041
4327.long	16645629,2130739071
4328.long	8947848,570434082
4329.long	10461087,3875596263
4330.long	6645093,1493195097
4331.long	8882055,3774931425
4332.long	7039851,3657489114
4333.long	16053492,1023425853
4334.long	2302755,3355494600
4335.long	4737096,301994514
4336.long	1052688,67109892
4337.long	13750737,1946186868
4338.long	5329233,1409307732
4339.long	12632256,805318704
4340.long	16382457,2113961598
4341.long	13816530,3019945140
4342.long	10526880,671098920
4343.long	5592405,1426085205
4344.long	10592673,1744857192
4345.long	4276545,1342197840
4346.long	16448250,3187719870
4347.long	4408131,3489714384
4348.long	1250067,3288384708
4349.long	12895428,822096177
4350.long	3092271,3405827019
4351.long	11053224,704653866
4352.long	11974326,2902502829
4353.long	3947580,251662095
4354.long	2829099,3389049546
4355.long	12698049,1879076976
4356.long	16777215,4278255615
4357.long	13158600,838873650
4358.long	10855845,1761634665
4359.long	2105376,134219784
4360.long	9013641,1644192354
4361.long	0,0
4362.long	9474192,603989028
4363.long	4671303,3506491857
4364.long	15724527,4211145723
4365.long	15395562,3120609978
4366.long	12040119,3976261101
4367.long	1381653,1157645637
4368.long	394758,2164294017
4369.long	13487565,1929409395
4370.long	11908533,1828744557
4371.long	1184274,2214626436
4372.long	8289918,2667618207
4373.long	12303291,3993038574
4374.long	2697513,1241533002
4375.long	986895,3271607235
4376.long	12105912,771763758
4377.long	460551,3238052289
4378.long	263172,16777473
4379.long	10197915,3858818790
4380.long	9737364,620766501
4381.long	2171169,1207978056
4382.long	6710886,2566953369
4383.long	15132390,3103832505
4384.long	13553358,3003167667
4385.long	15592941,2063629179
4386.long	15198183,4177590777
4387.long	3881787,3456159438
4388.long	16711422,3204497343
4389.long	8355711,3741376479
4390.long	12961221,1895854449
4391.long	10790052,687876393
4392.long	3618615,3439381965
4393.long	11645361,1811967084
4394.long	5000268,318771987
4395.long	9539985,1677747300
4396.long	7237230,2600508315
4397.long	9276813,1660969827
4398.long	7763574,2634063261
4399.long	197379,3221274816
4400.long	2960685,1258310475
4401.long	14606046,3070277559
4402.long	9868950,2768283045
4403.long	2500134,2298513801
4404.long	8224125,1593859935
4405.long	13027014,2969612721
4406.long	6052956,385881879
4407.long	13882323,4093703412
4408.long	15921906,3154164924
4409.long	5197647,3540046803
4410.long	1644825,1174423110
4411.long	4144959,3472936911
4412.long	14474460,922761015
4413.long	7960953,1577082462
4414.long	1907997,1191200583
4415.long	5395026,2483066004
4416.long	15461355,4194368250
4417.long	15987699,4227923196
4418.long	7171437,1526750043
4419.long	6184542,2533398423
4420.long	16514043,4261478142
4421.long	6908265,1509972570
4422.long	11711154,2885725356
4423.long	15790320,1006648380
4424.long	3223857,1275087948
4425.long	789516,50332419
4426.long	13948116,889206069
4427.long	13619151,4076925939
4428.long	9211020,587211555
4429.long	14869218,3087055032
4430.long	7697781,1560304989
4431.long	11119017,1778412138
4432.long	4868682,2449511058
4433.long	5723991,3573601749
4434.long	8684676,553656609
4435.long	1118481,1140868164
4436.long	4539717,1358975313
4437.long	1776411,3321939654
4438.long	16119285,2097184125
4439.long	15000804,956315961
4440.long	921102,2197848963
4441.long	7566195,3691044060
4442.long	11184810,2852170410
4443.long	15856113,2080406652
4444.long	14540253,1996519287
4445.long	5855577,1442862678
4446.long	1315860,83887365
4447.long	7105644,452991771
4448.long	9605778,2751505572
4449.long	5526612,352326933
4450.long	13684944,872428596
4451.long	7895160,503324190
4452.long	7368816,469769244
4453.long	14935011,4160813304
4454.long	4802889,1375752786
4455.long	8421504,536879136
4456.long	5263440,335549460
4457.long	10987431,3909151209
4458.long	16185078,3170942397
4459.long	7829367,3707821533
4460.long	9671571,3825263844
4461.long	8816262,2701173153
4462.long	8618883,3758153952
4463.long	2763306,2315291274
4464.long	13092807,4043370993
4465.long	5987163,3590379222
4466.long	15329769,2046851706
4467.long	15658734,3137387451
4468.long	9408399,3808486371
4469.long	65793,1073758272
4470.long	4013373,1325420367
4471.globl	Camellia_cbc_encrypt
4472.type	Camellia_cbc_encrypt,@function
4473.align	16
4474Camellia_cbc_encrypt:
4475.L_Camellia_cbc_encrypt_begin:
4476	pushl	%ebp
4477	pushl	%ebx
4478	pushl	%esi
4479	pushl	%edi
4480	movl	28(%esp),%ecx
4481	cmpl	$0,%ecx
4482	je	.L016enc_out
4483	pushfl
4484	cld
4485	movl	24(%esp),%eax
4486	movl	28(%esp),%ebx
4487	movl	36(%esp),%edx
4488	movl	40(%esp),%ebp
4489	leal	-64(%esp),%esi
4490	andl	$-64,%esi
4491	leal	-127(%edx),%edi
4492	subl	%esi,%edi
4493	negl	%edi
4494	andl	$960,%edi
4495	subl	%edi,%esi
4496	movl	44(%esp),%edi
4497	xchgl	%esi,%esp
4498	addl	$4,%esp
4499	movl	%esi,20(%esp)
4500	movl	%eax,24(%esp)
4501	movl	%ebx,28(%esp)
4502	movl	%ecx,32(%esp)
4503	movl	%edx,36(%esp)
4504	movl	%ebp,40(%esp)
4505	call	.L017pic_point
4506.L017pic_point:
4507	popl	%ebp
4508	leal	.LCamellia_SBOX-.L017pic_point(%ebp),%ebp
4509	movl	$32,%esi
4510.align	4
4511.L018prefetch_sbox:
4512	movl	(%ebp),%eax
4513	movl	32(%ebp),%ebx
4514	movl	64(%ebp),%ecx
4515	movl	96(%ebp),%edx
4516	leal	128(%ebp),%ebp
4517	decl	%esi
4518	jnz	.L018prefetch_sbox
4519	movl	36(%esp),%eax
4520	subl	$4096,%ebp
4521	movl	24(%esp),%esi
4522	movl	272(%eax),%edx
4523	cmpl	$0,%edi
4524	je	.L019DECRYPT
4525	movl	32(%esp),%ecx
4526	movl	40(%esp),%edi
4527	shll	$6,%edx
4528	leal	(%eax,%edx,1),%edx
4529	movl	%edx,16(%esp)
4530	testl	$4294967280,%ecx
4531	jz	.L020enc_tail
4532	movl	(%edi),%eax
4533	movl	4(%edi),%ebx
4534.align	4
4535.L021enc_loop:
4536	movl	8(%edi),%ecx
4537	movl	12(%edi),%edx
4538	xorl	(%esi),%eax
4539	xorl	4(%esi),%ebx
4540	xorl	8(%esi),%ecx
4541	bswap	%eax
4542	xorl	12(%esi),%edx
4543	bswap	%ebx
4544	movl	36(%esp),%edi
4545	bswap	%ecx
4546	bswap	%edx
4547	call	_x86_Camellia_encrypt
4548	movl	24(%esp),%esi
4549	movl	28(%esp),%edi
4550	bswap	%eax
4551	bswap	%ebx
4552	bswap	%ecx
4553	movl	%eax,(%edi)
4554	bswap	%edx
4555	movl	%ebx,4(%edi)
4556	movl	%ecx,8(%edi)
4557	movl	%edx,12(%edi)
4558	movl	32(%esp),%ecx
4559	leal	16(%esi),%esi
4560	movl	%esi,24(%esp)
4561	leal	16(%edi),%edx
4562	movl	%edx,28(%esp)
4563	subl	$16,%ecx
4564	testl	$4294967280,%ecx
4565	movl	%ecx,32(%esp)
4566	jnz	.L021enc_loop
4567	testl	$15,%ecx
4568	jnz	.L020enc_tail
4569	movl	40(%esp),%esi
4570	movl	8(%edi),%ecx
4571	movl	12(%edi),%edx
4572	movl	%eax,(%esi)
4573	movl	%ebx,4(%esi)
4574	movl	%ecx,8(%esi)
4575	movl	%edx,12(%esi)
4576	movl	20(%esp),%esp
4577	popfl
4578.L016enc_out:
4579	popl	%edi
4580	popl	%esi
4581	popl	%ebx
4582	popl	%ebp
4583	ret
4584	pushfl
4585.align	4
4586.L020enc_tail:
4587	movl	%edi,%eax
4588	movl	28(%esp),%edi
4589	pushl	%eax
4590	movl	$16,%ebx
4591	subl	%ecx,%ebx
4592	cmpl	%esi,%edi
4593	je	.L022enc_in_place
4594.align	4
4595.long	2767451785
4596	jmp	.L023enc_skip_in_place
4597.L022enc_in_place:
4598	leal	(%edi,%ecx,1),%edi
4599.L023enc_skip_in_place:
4600	movl	%ebx,%ecx
4601	xorl	%eax,%eax
4602.align	4
4603.long	2868115081
4604	popl	%edi
4605	movl	28(%esp),%esi
4606	movl	(%edi),%eax
4607	movl	4(%edi),%ebx
4608	movl	$16,32(%esp)
4609	jmp	.L021enc_loop
4610.align	16
4611.L019DECRYPT:
4612	shll	$6,%edx
4613	leal	(%eax,%edx,1),%edx
4614	movl	%eax,16(%esp)
4615	movl	%edx,36(%esp)
4616	cmpl	28(%esp),%esi
4617	je	.L024dec_in_place
4618	movl	40(%esp),%edi
4619	movl	%edi,44(%esp)
4620.align	4
4621.L025dec_loop:
4622	movl	(%esi),%eax
4623	movl	4(%esi),%ebx
4624	movl	8(%esi),%ecx
4625	bswap	%eax
4626	movl	12(%esi),%edx
4627	bswap	%ebx
4628	movl	36(%esp),%edi
4629	bswap	%ecx
4630	bswap	%edx
4631	call	_x86_Camellia_decrypt
4632	movl	44(%esp),%edi
4633	movl	32(%esp),%esi
4634	bswap	%eax
4635	bswap	%ebx
4636	bswap	%ecx
4637	xorl	(%edi),%eax
4638	bswap	%edx
4639	xorl	4(%edi),%ebx
4640	xorl	8(%edi),%ecx
4641	xorl	12(%edi),%edx
4642	subl	$16,%esi
4643	jc	.L026dec_partial
4644	movl	%esi,32(%esp)
4645	movl	24(%esp),%esi
4646	movl	28(%esp),%edi
4647	movl	%eax,(%edi)
4648	movl	%ebx,4(%edi)
4649	movl	%ecx,8(%edi)
4650	movl	%edx,12(%edi)
4651	movl	%esi,44(%esp)
4652	leal	16(%esi),%esi
4653	movl	%esi,24(%esp)
4654	leal	16(%edi),%edi
4655	movl	%edi,28(%esp)
4656	jnz	.L025dec_loop
4657	movl	44(%esp),%edi
4658.L027dec_end:
4659	movl	40(%esp),%esi
4660	movl	(%edi),%eax
4661	movl	4(%edi),%ebx
4662	movl	8(%edi),%ecx
4663	movl	12(%edi),%edx
4664	movl	%eax,(%esi)
4665	movl	%ebx,4(%esi)
4666	movl	%ecx,8(%esi)
4667	movl	%edx,12(%esi)
4668	jmp	.L028dec_out
4669.align	4
4670.L026dec_partial:
4671	leal	44(%esp),%edi
4672	movl	%eax,(%edi)
4673	movl	%ebx,4(%edi)
4674	movl	%ecx,8(%edi)
4675	movl	%edx,12(%edi)
4676	leal	16(%esi),%ecx
4677	movl	%edi,%esi
4678	movl	28(%esp),%edi
4679.long	2767451785
4680	movl	24(%esp),%edi
4681	jmp	.L027dec_end
4682.align	4
4683.L024dec_in_place:
4684.L029dec_in_place_loop:
4685	leal	44(%esp),%edi
4686	movl	(%esi),%eax
4687	movl	4(%esi),%ebx
4688	movl	8(%esi),%ecx
4689	movl	12(%esi),%edx
4690	movl	%eax,(%edi)
4691	movl	%ebx,4(%edi)
4692	movl	%ecx,8(%edi)
4693	bswap	%eax
4694	movl	%edx,12(%edi)
4695	bswap	%ebx
4696	movl	36(%esp),%edi
4697	bswap	%ecx
4698	bswap	%edx
4699	call	_x86_Camellia_decrypt
4700	movl	40(%esp),%edi
4701	movl	28(%esp),%esi
4702	bswap	%eax
4703	bswap	%ebx
4704	bswap	%ecx
4705	xorl	(%edi),%eax
4706	bswap	%edx
4707	xorl	4(%edi),%ebx
4708	xorl	8(%edi),%ecx
4709	xorl	12(%edi),%edx
4710	movl	%eax,(%esi)
4711	movl	%ebx,4(%esi)
4712	movl	%ecx,8(%esi)
4713	movl	%edx,12(%esi)
4714	leal	16(%esi),%esi
4715	movl	%esi,28(%esp)
4716	leal	44(%esp),%esi
4717	movl	(%esi),%eax
4718	movl	4(%esi),%ebx
4719	movl	8(%esi),%ecx
4720	movl	12(%esi),%edx
4721	movl	%eax,(%edi)
4722	movl	%ebx,4(%edi)
4723	movl	%ecx,8(%edi)
4724	movl	%edx,12(%edi)
4725	movl	24(%esp),%esi
4726	leal	16(%esi),%esi
4727	movl	%esi,24(%esp)
4728	movl	32(%esp),%ecx
4729	subl	$16,%ecx
4730	jc	.L030dec_in_place_partial
4731	movl	%ecx,32(%esp)
4732	jnz	.L029dec_in_place_loop
4733	jmp	.L028dec_out
4734.align	4
4735.L030dec_in_place_partial:
4736	movl	28(%esp),%edi
4737	leal	44(%esp),%esi
4738	leal	(%edi,%ecx,1),%edi
4739	leal	16(%esi,%ecx,1),%esi
4740	negl	%ecx
4741.long	2767451785
4742.align	4
4743.L028dec_out:
4744	movl	20(%esp),%esp
4745	popfl
4746	popl	%edi
4747	popl	%esi
4748	popl	%ebx
4749	popl	%ebp
4750	ret
4751.size	Camellia_cbc_encrypt,.-.L_Camellia_cbc_encrypt_begin
4752.byte	67,97,109,101,108,108,105,97,32,102,111,114,32,120,56,54
4753.byte	32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
4754.byte	115,108,46,111,114,103,62,0
4755#endif
4756