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