1#include <machine/asm.h>
2.text
3.globl	Camellia_EncryptBlock_Rounds
4.type	Camellia_EncryptBlock_Rounds,@function
5.align	16
6Camellia_EncryptBlock_Rounds:
7.L_Camellia_EncryptBlock_Rounds_begin:
8	pushl	%ebp
9	pushl	%ebx
10	pushl	%esi
11	pushl	%edi
12	movl	20(%esp),%eax
13	movl	24(%esp),%esi
14	movl	28(%esp),%edi
15	movl	%esp,%ebx
16	subl	$28,%esp
17	andl	$-64,%esp
18	leal	-127(%edi),%ecx
19	subl	%esp,%ecx
20	negl	%ecx
21	andl	$960,%ecx
22	subl	%ecx,%esp
23	addl	$4,%esp
24	shll	$6,%eax
25	leal	(%edi,%eax,1),%eax
26	movl	%ebx,20(%esp)
27	movl	%eax,16(%esp)
28	call	.L000pic_point
29.L000pic_point:
30	popl	%ebp
31	leal	.LCamellia_SBOX-.L000pic_point(%ebp),%ebp
32	movl	(%esi),%eax
33	movl	4(%esi),%ebx
34	movl	8(%esi),%ecx
35	bswap	%eax
36	movl	12(%esi),%edx
37	bswap	%ebx
38	bswap	%ecx
39	bswap	%edx
40	call	_x86_Camellia_encrypt
41	movl	20(%esp),%esp
42	bswap	%eax
43	movl	32(%esp),%esi
44	bswap	%ebx
45	bswap	%ecx
46	bswap	%edx
47	movl	%eax,(%esi)
48	movl	%ebx,4(%esi)
49	movl	%ecx,8(%esi)
50	movl	%edx,12(%esi)
51	popl	%edi
52	popl	%esi
53	popl	%ebx
54	popl	%ebp
55	ret
56.size	Camellia_EncryptBlock_Rounds,.-.L_Camellia_EncryptBlock_Rounds_begin
57.globl	Camellia_EncryptBlock
58.type	Camellia_EncryptBlock,@function
59.align	16
60Camellia_EncryptBlock:
61.L_Camellia_EncryptBlock_begin:
62	movl	$128,%eax
63	subl	4(%esp),%eax
64	movl	$3,%eax
65	adcl	$0,%eax
66	movl	%eax,4(%esp)
67	jmp	.L_Camellia_EncryptBlock_Rounds_begin
68.size	Camellia_EncryptBlock,.-.L_Camellia_EncryptBlock_begin
69.globl	Camellia_encrypt
70.type	Camellia_encrypt,@function
71.align	16
72Camellia_encrypt:
73.L_Camellia_encrypt_begin:
74	pushl	%ebp
75	pushl	%ebx
76	pushl	%esi
77	pushl	%edi
78	movl	20(%esp),%esi
79	movl	28(%esp),%edi
80	movl	%esp,%ebx
81	subl	$28,%esp
82	andl	$-64,%esp
83	movl	272(%edi),%eax
84	leal	-127(%edi),%ecx
85	subl	%esp,%ecx
86	negl	%ecx
87	andl	$960,%ecx
88	subl	%ecx,%esp
89	addl	$4,%esp
90	shll	$6,%eax
91	leal	(%edi,%eax,1),%eax
92	movl	%ebx,20(%esp)
93	movl	%eax,16(%esp)
94	call	.L001pic_point
95.L001pic_point:
96	popl	%ebp
97	leal	.LCamellia_SBOX-.L001pic_point(%ebp),%ebp
98	movl	(%esi),%eax
99	movl	4(%esi),%ebx
100	movl	8(%esi),%ecx
101	bswap	%eax
102	movl	12(%esi),%edx
103	bswap	%ebx
104	bswap	%ecx
105	bswap	%edx
106	call	_x86_Camellia_encrypt
107	movl	20(%esp),%esp
108	bswap	%eax
109	movl	24(%esp),%esi
110	bswap	%ebx
111	bswap	%ecx
112	bswap	%edx
113	movl	%eax,(%esi)
114	movl	%ebx,4(%esi)
115	movl	%ecx,8(%esi)
116	movl	%edx,12(%esi)
117	popl	%edi
118	popl	%esi
119	popl	%ebx
120	popl	%ebp
121	ret
122.size	Camellia_encrypt,.-.L_Camellia_encrypt_begin
123.type	_x86_Camellia_encrypt,@function
124.align	16
125_x86_Camellia_encrypt:
126	xorl	(%edi),%eax
127	xorl	4(%edi),%ebx
128	xorl	8(%edi),%ecx
129	xorl	12(%edi),%edx
130	movl	16(%edi),%esi
131	movl	%eax,4(%esp)
132	movl	%ebx,8(%esp)
133	movl	%ecx,12(%esp)
134	movl	%edx,16(%esp)
135.align	16
136.L002loop:
137	xorl	%esi,%eax
138	xorl	20(%edi),%ebx
139	movzbl	%ah,%esi
140	movl	2052(%ebp,%esi,8),%edx
141	movzbl	%al,%esi
142	xorl	4(%ebp,%esi,8),%edx
143	shrl	$16,%eax
144	movzbl	%bl,%esi
145	movl	(%ebp,%esi,8),%ecx
146	movzbl	%ah,%esi
147	xorl	(%ebp,%esi,8),%edx
148	movzbl	%bh,%esi
149	xorl	4(%ebp,%esi,8),%ecx
150	shrl	$16,%ebx
151	movzbl	%al,%eax
152	xorl	2048(%ebp,%eax,8),%edx
153	movzbl	%bh,%esi
154	movl	16(%esp),%eax
155	xorl	%edx,%ecx
156	rorl	$8,%edx
157	xorl	2048(%ebp,%esi,8),%ecx
158	movzbl	%bl,%esi
159	movl	12(%esp),%ebx
160	xorl	%eax,%edx
161	xorl	2052(%ebp,%esi,8),%ecx
162	movl	24(%edi),%esi
163	xorl	%ecx,%edx
164	movl	%edx,16(%esp)
165	xorl	%ebx,%ecx
166	movl	%ecx,12(%esp)
167	xorl	%esi,%ecx
168	xorl	28(%edi),%edx
169	movzbl	%ch,%esi
170	movl	2052(%ebp,%esi,8),%ebx
171	movzbl	%cl,%esi
172	xorl	4(%ebp,%esi,8),%ebx
173	shrl	$16,%ecx
174	movzbl	%dl,%esi
175	movl	(%ebp,%esi,8),%eax
176	movzbl	%ch,%esi
177	xorl	(%ebp,%esi,8),%ebx
178	movzbl	%dh,%esi
179	xorl	4(%ebp,%esi,8),%eax
180	shrl	$16,%edx
181	movzbl	%cl,%ecx
182	xorl	2048(%ebp,%ecx,8),%ebx
183	movzbl	%dh,%esi
184	movl	8(%esp),%ecx
185	xorl	%ebx,%eax
186	rorl	$8,%ebx
187	xorl	2048(%ebp,%esi,8),%eax
188	movzbl	%dl,%esi
189	movl	4(%esp),%edx
190	xorl	%ecx,%ebx
191	xorl	2052(%ebp,%esi,8),%eax
192	movl	32(%edi),%esi
193	xorl	%eax,%ebx
194	movl	%ebx,8(%esp)
195	xorl	%edx,%eax
196	movl	%eax,4(%esp)
197	xorl	%esi,%eax
198	xorl	36(%edi),%ebx
199	movzbl	%ah,%esi
200	movl	2052(%ebp,%esi,8),%edx
201	movzbl	%al,%esi
202	xorl	4(%ebp,%esi,8),%edx
203	shrl	$16,%eax
204	movzbl	%bl,%esi
205	movl	(%ebp,%esi,8),%ecx
206	movzbl	%ah,%esi
207	xorl	(%ebp,%esi,8),%edx
208	movzbl	%bh,%esi
209	xorl	4(%ebp,%esi,8),%ecx
210	shrl	$16,%ebx
211	movzbl	%al,%eax
212	xorl	2048(%ebp,%eax,8),%edx
213	movzbl	%bh,%esi
214	movl	16(%esp),%eax
215	xorl	%edx,%ecx
216	rorl	$8,%edx
217	xorl	2048(%ebp,%esi,8),%ecx
218	movzbl	%bl,%esi
219	movl	12(%esp),%ebx
220	xorl	%eax,%edx
221	xorl	2052(%ebp,%esi,8),%ecx
222	movl	40(%edi),%esi
223	xorl	%ecx,%edx
224	movl	%edx,16(%esp)
225	xorl	%ebx,%ecx
226	movl	%ecx,12(%esp)
227	xorl	%esi,%ecx
228	xorl	44(%edi),%edx
229	movzbl	%ch,%esi
230	movl	2052(%ebp,%esi,8),%ebx
231	movzbl	%cl,%esi
232	xorl	4(%ebp,%esi,8),%ebx
233	shrl	$16,%ecx
234	movzbl	%dl,%esi
235	movl	(%ebp,%esi,8),%eax
236	movzbl	%ch,%esi
237	xorl	(%ebp,%esi,8),%ebx
238	movzbl	%dh,%esi
239	xorl	4(%ebp,%esi,8),%eax
240	shrl	$16,%edx
241	movzbl	%cl,%ecx
242	xorl	2048(%ebp,%ecx,8),%ebx
243	movzbl	%dh,%esi
244	movl	8(%esp),%ecx
245	xorl	%ebx,%eax
246	rorl	$8,%ebx
247	xorl	2048(%ebp,%esi,8),%eax
248	movzbl	%dl,%esi
249	movl	4(%esp),%edx
250	xorl	%ecx,%ebx
251	xorl	2052(%ebp,%esi,8),%eax
252	movl	48(%edi),%esi
253	xorl	%eax,%ebx
254	movl	%ebx,8(%esp)
255	xorl	%edx,%eax
256	movl	%eax,4(%esp)
257	xorl	%esi,%eax
258	xorl	52(%edi),%ebx
259	movzbl	%ah,%esi
260	movl	2052(%ebp,%esi,8),%edx
261	movzbl	%al,%esi
262	xorl	4(%ebp,%esi,8),%edx
263	shrl	$16,%eax
264	movzbl	%bl,%esi
265	movl	(%ebp,%esi,8),%ecx
266	movzbl	%ah,%esi
267	xorl	(%ebp,%esi,8),%edx
268	movzbl	%bh,%esi
269	xorl	4(%ebp,%esi,8),%ecx
270	shrl	$16,%ebx
271	movzbl	%al,%eax
272	xorl	2048(%ebp,%eax,8),%edx
273	movzbl	%bh,%esi
274	movl	16(%esp),%eax
275	xorl	%edx,%ecx
276	rorl	$8,%edx
277	xorl	2048(%ebp,%esi,8),%ecx
278	movzbl	%bl,%esi
279	movl	12(%esp),%ebx
280	xorl	%eax,%edx
281	xorl	2052(%ebp,%esi,8),%ecx
282	movl	56(%edi),%esi
283	xorl	%ecx,%edx
284	movl	%edx,16(%esp)
285	xorl	%ebx,%ecx
286	movl	%ecx,12(%esp)
287	xorl	%esi,%ecx
288	xorl	60(%edi),%edx
289	movzbl	%ch,%esi
290	movl	2052(%ebp,%esi,8),%ebx
291	movzbl	%cl,%esi
292	xorl	4(%ebp,%esi,8),%ebx
293	shrl	$16,%ecx
294	movzbl	%dl,%esi
295	movl	(%ebp,%esi,8),%eax
296	movzbl	%ch,%esi
297	xorl	(%ebp,%esi,8),%ebx
298	movzbl	%dh,%esi
299	xorl	4(%ebp,%esi,8),%eax
300	shrl	$16,%edx
301	movzbl	%cl,%ecx
302	xorl	2048(%ebp,%ecx,8),%ebx
303	movzbl	%dh,%esi
304	movl	8(%esp),%ecx
305	xorl	%ebx,%eax
306	rorl	$8,%ebx
307	xorl	2048(%ebp,%esi,8),%eax
308	movzbl	%dl,%esi
309	movl	4(%esp),%edx
310	xorl	%ecx,%ebx
311	xorl	2052(%ebp,%esi,8),%eax
312	movl	64(%edi),%esi
313	xorl	%eax,%ebx
314	movl	%ebx,8(%esp)
315	xorl	%edx,%eax
316	movl	%eax,4(%esp)
317	addl	$64,%edi
318	cmpl	20(%esp),%edi
319	je	.L003done
320	andl	%eax,%esi
321	movl	16(%esp),%edx
322	roll	$1,%esi
323	movl	%edx,%ecx
324	xorl	%esi,%ebx
325	orl	12(%edi),%ecx
326	movl	%ebx,8(%esp)
327	xorl	12(%esp),%ecx
328	movl	4(%edi),%esi
329	movl	%ecx,12(%esp)
330	orl	%ebx,%esi
331	andl	8(%edi),%ecx
332	xorl	%esi,%eax
333	roll	$1,%ecx
334	movl	%eax,4(%esp)
335	xorl	%ecx,%edx
336	movl	16(%edi),%esi
337	movl	%edx,16(%esp)
338	jmp	.L002loop
339.align	8
340.L003done:
341	movl	%eax,%ecx
342	movl	%ebx,%edx
343	movl	12(%esp),%eax
344	movl	16(%esp),%ebx
345	xorl	%esi,%eax
346	xorl	4(%edi),%ebx
347	xorl	8(%edi),%ecx
348	xorl	12(%edi),%edx
349	ret
350.size	_x86_Camellia_encrypt,.-_x86_Camellia_encrypt
351.globl	Camellia_DecryptBlock_Rounds
352.type	Camellia_DecryptBlock_Rounds,@function
353.align	16
354Camellia_DecryptBlock_Rounds:
355.L_Camellia_DecryptBlock_Rounds_begin:
356	pushl	%ebp
357	pushl	%ebx
358	pushl	%esi
359	pushl	%edi
360	movl	20(%esp),%eax
361	movl	24(%esp),%esi
362	movl	28(%esp),%edi
363	movl	%esp,%ebx
364	subl	$28,%esp
365	andl	$-64,%esp
366	leal	-127(%edi),%ecx
367	subl	%esp,%ecx
368	negl	%ecx
369	andl	$960,%ecx
370	subl	%ecx,%esp
371	addl	$4,%esp
372	shll	$6,%eax
373	movl	%edi,16(%esp)
374	leal	(%edi,%eax,1),%edi
375	movl	%ebx,20(%esp)
376	call	.L004pic_point
377.L004pic_point:
378	popl	%ebp
379	leal	.LCamellia_SBOX-.L004pic_point(%ebp),%ebp
380	movl	(%esi),%eax
381	movl	4(%esi),%ebx
382	movl	8(%esi),%ecx
383	bswap	%eax
384	movl	12(%esi),%edx
385	bswap	%ebx
386	bswap	%ecx
387	bswap	%edx
388	call	_x86_Camellia_decrypt
389	movl	20(%esp),%esp
390	bswap	%eax
391	movl	32(%esp),%esi
392	bswap	%ebx
393	bswap	%ecx
394	bswap	%edx
395	movl	%eax,(%esi)
396	movl	%ebx,4(%esi)
397	movl	%ecx,8(%esi)
398	movl	%edx,12(%esi)
399	popl	%edi
400	popl	%esi
401	popl	%ebx
402	popl	%ebp
403	ret
404.size	Camellia_DecryptBlock_Rounds,.-.L_Camellia_DecryptBlock_Rounds_begin
405.globl	Camellia_DecryptBlock
406.type	Camellia_DecryptBlock,@function
407.align	16
408Camellia_DecryptBlock:
409.L_Camellia_DecryptBlock_begin:
410	movl	$128,%eax
411	subl	4(%esp),%eax
412	movl	$3,%eax
413	adcl	$0,%eax
414	movl	%eax,4(%esp)
415	jmp	.L_Camellia_DecryptBlock_Rounds_begin
416.size	Camellia_DecryptBlock,.-.L_Camellia_DecryptBlock_begin
417.globl	Camellia_decrypt
418.type	Camellia_decrypt,@function
419.align	16
420Camellia_decrypt:
421.L_Camellia_decrypt_begin:
422	pushl	%ebp
423	pushl	%ebx
424	pushl	%esi
425	pushl	%edi
426	movl	20(%esp),%esi
427	movl	28(%esp),%edi
428	movl	%esp,%ebx
429	subl	$28,%esp
430	andl	$-64,%esp
431	movl	272(%edi),%eax
432	leal	-127(%edi),%ecx
433	subl	%esp,%ecx
434	negl	%ecx
435	andl	$960,%ecx
436	subl	%ecx,%esp
437	addl	$4,%esp
438	shll	$6,%eax
439	movl	%edi,16(%esp)
440	leal	(%edi,%eax,1),%edi
441	movl	%ebx,20(%esp)
442	call	.L005pic_point
443.L005pic_point:
444	popl	%ebp
445	leal	.LCamellia_SBOX-.L005pic_point(%ebp),%ebp
446	movl	(%esi),%eax
447	movl	4(%esi),%ebx
448	movl	8(%esi),%ecx
449	bswap	%eax
450	movl	12(%esi),%edx
451	bswap	%ebx
452	bswap	%ecx
453	bswap	%edx
454	call	_x86_Camellia_decrypt
455	movl	20(%esp),%esp
456	bswap	%eax
457	movl	24(%esp),%esi
458	bswap	%ebx
459	bswap	%ecx
460	bswap	%edx
461	movl	%eax,(%esi)
462	movl	%ebx,4(%esi)
463	movl	%ecx,8(%esi)
464	movl	%edx,12(%esi)
465	popl	%edi
466	popl	%esi
467	popl	%ebx
468	popl	%ebp
469	ret
470.size	Camellia_decrypt,.-.L_Camellia_decrypt_begin
471.type	_x86_Camellia_decrypt,@function
472.align	16
473_x86_Camellia_decrypt:
474	xorl	(%edi),%eax
475	xorl	4(%edi),%ebx
476	xorl	8(%edi),%ecx
477	xorl	12(%edi),%edx
478	movl	-8(%edi),%esi
479	movl	%eax,4(%esp)
480	movl	%ebx,8(%esp)
481	movl	%ecx,12(%esp)
482	movl	%edx,16(%esp)
483.align	16
484.L006loop:
485	xorl	%esi,%eax
486	xorl	-4(%edi),%ebx
487	movzbl	%ah,%esi
488	movl	2052(%ebp,%esi,8),%edx
489	movzbl	%al,%esi
490	xorl	4(%ebp,%esi,8),%edx
491	shrl	$16,%eax
492	movzbl	%bl,%esi
493	movl	(%ebp,%esi,8),%ecx
494	movzbl	%ah,%esi
495	xorl	(%ebp,%esi,8),%edx
496	movzbl	%bh,%esi
497	xorl	4(%ebp,%esi,8),%ecx
498	shrl	$16,%ebx
499	movzbl	%al,%eax
500	xorl	2048(%ebp,%eax,8),%edx
501	movzbl	%bh,%esi
502	movl	16(%esp),%eax
503	xorl	%edx,%ecx
504	rorl	$8,%edx
505	xorl	2048(%ebp,%esi,8),%ecx
506	movzbl	%bl,%esi
507	movl	12(%esp),%ebx
508	xorl	%eax,%edx
509	xorl	2052(%ebp,%esi,8),%ecx
510	movl	-16(%edi),%esi
511	xorl	%ecx,%edx
512	movl	%edx,16(%esp)
513	xorl	%ebx,%ecx
514	movl	%ecx,12(%esp)
515	xorl	%esi,%ecx
516	xorl	-12(%edi),%edx
517	movzbl	%ch,%esi
518	movl	2052(%ebp,%esi,8),%ebx
519	movzbl	%cl,%esi
520	xorl	4(%ebp,%esi,8),%ebx
521	shrl	$16,%ecx
522	movzbl	%dl,%esi
523	movl	(%ebp,%esi,8),%eax
524	movzbl	%ch,%esi
525	xorl	(%ebp,%esi,8),%ebx
526	movzbl	%dh,%esi
527	xorl	4(%ebp,%esi,8),%eax
528	shrl	$16,%edx
529	movzbl	%cl,%ecx
530	xorl	2048(%ebp,%ecx,8),%ebx
531	movzbl	%dh,%esi
532	movl	8(%esp),%ecx
533	xorl	%ebx,%eax
534	rorl	$8,%ebx
535	xorl	2048(%ebp,%esi,8),%eax
536	movzbl	%dl,%esi
537	movl	4(%esp),%edx
538	xorl	%ecx,%ebx
539	xorl	2052(%ebp,%esi,8),%eax
540	movl	-24(%edi),%esi
541	xorl	%eax,%ebx
542	movl	%ebx,8(%esp)
543	xorl	%edx,%eax
544	movl	%eax,4(%esp)
545	xorl	%esi,%eax
546	xorl	-20(%edi),%ebx
547	movzbl	%ah,%esi
548	movl	2052(%ebp,%esi,8),%edx
549	movzbl	%al,%esi
550	xorl	4(%ebp,%esi,8),%edx
551	shrl	$16,%eax
552	movzbl	%bl,%esi
553	movl	(%ebp,%esi,8),%ecx
554	movzbl	%ah,%esi
555	xorl	(%ebp,%esi,8),%edx
556	movzbl	%bh,%esi
557	xorl	4(%ebp,%esi,8),%ecx
558	shrl	$16,%ebx
559	movzbl	%al,%eax
560	xorl	2048(%ebp,%eax,8),%edx
561	movzbl	%bh,%esi
562	movl	16(%esp),%eax
563	xorl	%edx,%ecx
564	rorl	$8,%edx
565	xorl	2048(%ebp,%esi,8),%ecx
566	movzbl	%bl,%esi
567	movl	12(%esp),%ebx
568	xorl	%eax,%edx
569	xorl	2052(%ebp,%esi,8),%ecx
570	movl	-32(%edi),%esi
571	xorl	%ecx,%edx
572	movl	%edx,16(%esp)
573	xorl	%ebx,%ecx
574	movl	%ecx,12(%esp)
575	xorl	%esi,%ecx
576	xorl	-28(%edi),%edx
577	movzbl	%ch,%esi
578	movl	2052(%ebp,%esi,8),%ebx
579	movzbl	%cl,%esi
580	xorl	4(%ebp,%esi,8),%ebx
581	shrl	$16,%ecx
582	movzbl	%dl,%esi
583	movl	(%ebp,%esi,8),%eax
584	movzbl	%ch,%esi
585	xorl	(%ebp,%esi,8),%ebx
586	movzbl	%dh,%esi
587	xorl	4(%ebp,%esi,8),%eax
588	shrl	$16,%edx
589	movzbl	%cl,%ecx
590	xorl	2048(%ebp,%ecx,8),%ebx
591	movzbl	%dh,%esi
592	movl	8(%esp),%ecx
593	xorl	%ebx,%eax
594	rorl	$8,%ebx
595	xorl	2048(%ebp,%esi,8),%eax
596	movzbl	%dl,%esi
597	movl	4(%esp),%edx
598	xorl	%ecx,%ebx
599	xorl	2052(%ebp,%esi,8),%eax
600	movl	-40(%edi),%esi
601	xorl	%eax,%ebx
602	movl	%ebx,8(%esp)
603	xorl	%edx,%eax
604	movl	%eax,4(%esp)
605	xorl	%esi,%eax
606	xorl	-36(%edi),%ebx
607	movzbl	%ah,%esi
608	movl	2052(%ebp,%esi,8),%edx
609	movzbl	%al,%esi
610	xorl	4(%ebp,%esi,8),%edx
611	shrl	$16,%eax
612	movzbl	%bl,%esi
613	movl	(%ebp,%esi,8),%ecx
614	movzbl	%ah,%esi
615	xorl	(%ebp,%esi,8),%edx
616	movzbl	%bh,%esi
617	xorl	4(%ebp,%esi,8),%ecx
618	shrl	$16,%ebx
619	movzbl	%al,%eax
620	xorl	2048(%ebp,%eax,8),%edx
621	movzbl	%bh,%esi
622	movl	16(%esp),%eax
623	xorl	%edx,%ecx
624	rorl	$8,%edx
625	xorl	2048(%ebp,%esi,8),%ecx
626	movzbl	%bl,%esi
627	movl	12(%esp),%ebx
628	xorl	%eax,%edx
629	xorl	2052(%ebp,%esi,8),%ecx
630	movl	-48(%edi),%esi
631	xorl	%ecx,%edx
632	movl	%edx,16(%esp)
633	xorl	%ebx,%ecx
634	movl	%ecx,12(%esp)
635	xorl	%esi,%ecx
636	xorl	-44(%edi),%edx
637	movzbl	%ch,%esi
638	movl	2052(%ebp,%esi,8),%ebx
639	movzbl	%cl,%esi
640	xorl	4(%ebp,%esi,8),%ebx
641	shrl	$16,%ecx
642	movzbl	%dl,%esi
643	movl	(%ebp,%esi,8),%eax
644	movzbl	%ch,%esi
645	xorl	(%ebp,%esi,8),%ebx
646	movzbl	%dh,%esi
647	xorl	4(%ebp,%esi,8),%eax
648	shrl	$16,%edx
649	movzbl	%cl,%ecx
650	xorl	2048(%ebp,%ecx,8),%ebx
651	movzbl	%dh,%esi
652	movl	8(%esp),%ecx
653	xorl	%ebx,%eax
654	rorl	$8,%ebx
655	xorl	2048(%ebp,%esi,8),%eax
656	movzbl	%dl,%esi
657	movl	4(%esp),%edx
658	xorl	%ecx,%ebx
659	xorl	2052(%ebp,%esi,8),%eax
660	movl	-56(%edi),%esi
661	xorl	%eax,%ebx
662	movl	%ebx,8(%esp)
663	xorl	%edx,%eax
664	movl	%eax,4(%esp)
665	subl	$64,%edi
666	cmpl	20(%esp),%edi
667	je	.L007done
668	andl	%eax,%esi
669	movl	16(%esp),%edx
670	roll	$1,%esi
671	movl	%edx,%ecx
672	xorl	%esi,%ebx
673	orl	4(%edi),%ecx
674	movl	%ebx,8(%esp)
675	xorl	12(%esp),%ecx
676	movl	12(%edi),%esi
677	movl	%ecx,12(%esp)
678	orl	%ebx,%esi
679	andl	(%edi),%ecx
680	xorl	%esi,%eax
681	roll	$1,%ecx
682	movl	%eax,4(%esp)
683	xorl	%ecx,%edx
684	movl	-8(%edi),%esi
685	movl	%edx,16(%esp)
686	jmp	.L006loop
687.align	8
688.L007done:
689	movl	%eax,%ecx
690	movl	%ebx,%edx
691	movl	12(%esp),%eax
692	movl	16(%esp),%ebx
693	xorl	%esi,%ecx
694	xorl	12(%edi),%edx
695	xorl	(%edi),%eax
696	xorl	4(%edi),%ebx
697	ret
698.size	_x86_Camellia_decrypt,.-_x86_Camellia_decrypt
699.globl	Camellia_Ekeygen
700.type	Camellia_Ekeygen,@function
701.align	16
702Camellia_Ekeygen:
703.L_Camellia_Ekeygen_begin:
704	pushl	%ebp
705	pushl	%ebx
706	pushl	%esi
707	pushl	%edi
708	subl	$16,%esp
709	movl	36(%esp),%ebp
710	movl	40(%esp),%esi
711	movl	44(%esp),%edi
712	movl	(%esi),%eax
713	movl	4(%esi),%ebx
714	movl	8(%esi),%ecx
715	movl	12(%esi),%edx
716	bswap	%eax
717	bswap	%ebx
718	bswap	%ecx
719	bswap	%edx
720	movl	%eax,(%edi)
721	movl	%ebx,4(%edi)
722	movl	%ecx,8(%edi)
723	movl	%edx,12(%edi)
724	cmpl	$128,%ebp
725	je	.L0081st128
726	movl	16(%esi),%eax
727	movl	20(%esi),%ebx
728	cmpl	$192,%ebp
729	je	.L0091st192
730	movl	24(%esi),%ecx
731	movl	28(%esi),%edx
732	jmp	.L0101st256
733.align	4
734.L0091st192:
735	movl	%eax,%ecx
736	movl	%ebx,%edx
737	notl	%ecx
738	notl	%edx
739.align	4
740.L0101st256:
741	bswap	%eax
742	bswap	%ebx
743	bswap	%ecx
744	bswap	%edx
745	movl	%eax,32(%edi)
746	movl	%ebx,36(%edi)
747	movl	%ecx,40(%edi)
748	movl	%edx,44(%edi)
749	xorl	(%edi),%eax
750	xorl	4(%edi),%ebx
751	xorl	8(%edi),%ecx
752	xorl	12(%edi),%edx
753.align	4
754.L0081st128:
755	call	.L011pic_point
756.L011pic_point:
757	popl	%ebp
758	leal	.LCamellia_SBOX-.L011pic_point(%ebp),%ebp
759	leal	.LCamellia_SIGMA-.LCamellia_SBOX(%ebp),%edi
760	movl	(%edi),%esi
761	movl	%eax,(%esp)
762	movl	%ebx,4(%esp)
763	movl	%ecx,8(%esp)
764	movl	%edx,12(%esp)
765	xorl	%esi,%eax
766	xorl	4(%edi),%ebx
767	movzbl	%ah,%esi
768	movl	2052(%ebp,%esi,8),%edx
769	movzbl	%al,%esi
770	xorl	4(%ebp,%esi,8),%edx
771	shrl	$16,%eax
772	movzbl	%bl,%esi
773	movl	(%ebp,%esi,8),%ecx
774	movzbl	%ah,%esi
775	xorl	(%ebp,%esi,8),%edx
776	movzbl	%bh,%esi
777	xorl	4(%ebp,%esi,8),%ecx
778	shrl	$16,%ebx
779	movzbl	%al,%eax
780	xorl	2048(%ebp,%eax,8),%edx
781	movzbl	%bh,%esi
782	movl	12(%esp),%eax
783	xorl	%edx,%ecx
784	rorl	$8,%edx
785	xorl	2048(%ebp,%esi,8),%ecx
786	movzbl	%bl,%esi
787	movl	8(%esp),%ebx
788	xorl	%eax,%edx
789	xorl	2052(%ebp,%esi,8),%ecx
790	movl	8(%edi),%esi
791	xorl	%ecx,%edx
792	movl	%edx,12(%esp)
793	xorl	%ebx,%ecx
794	movl	%ecx,8(%esp)
795	xorl	%esi,%ecx
796	xorl	12(%edi),%edx
797	movzbl	%ch,%esi
798	movl	2052(%ebp,%esi,8),%ebx
799	movzbl	%cl,%esi
800	xorl	4(%ebp,%esi,8),%ebx
801	shrl	$16,%ecx
802	movzbl	%dl,%esi
803	movl	(%ebp,%esi,8),%eax
804	movzbl	%ch,%esi
805	xorl	(%ebp,%esi,8),%ebx
806	movzbl	%dh,%esi
807	xorl	4(%ebp,%esi,8),%eax
808	shrl	$16,%edx
809	movzbl	%cl,%ecx
810	xorl	2048(%ebp,%ecx,8),%ebx
811	movzbl	%dh,%esi
812	movl	4(%esp),%ecx
813	xorl	%ebx,%eax
814	rorl	$8,%ebx
815	xorl	2048(%ebp,%esi,8),%eax
816	movzbl	%dl,%esi
817	movl	(%esp),%edx
818	xorl	%ecx,%ebx
819	xorl	2052(%ebp,%esi,8),%eax
820	movl	16(%edi),%esi
821	xorl	%eax,%ebx
822	movl	%ebx,4(%esp)
823	xorl	%edx,%eax
824	movl	%eax,(%esp)
825	movl	8(%esp),%ecx
826	movl	12(%esp),%edx
827	movl	44(%esp),%esi
828	xorl	(%esi),%eax
829	xorl	4(%esi),%ebx
830	xorl	8(%esi),%ecx
831	xorl	12(%esi),%edx
832	movl	16(%edi),%esi
833	movl	%eax,(%esp)
834	movl	%ebx,4(%esp)
835	movl	%ecx,8(%esp)
836	movl	%edx,12(%esp)
837	xorl	%esi,%eax
838	xorl	20(%edi),%ebx
839	movzbl	%ah,%esi
840	movl	2052(%ebp,%esi,8),%edx
841	movzbl	%al,%esi
842	xorl	4(%ebp,%esi,8),%edx
843	shrl	$16,%eax
844	movzbl	%bl,%esi
845	movl	(%ebp,%esi,8),%ecx
846	movzbl	%ah,%esi
847	xorl	(%ebp,%esi,8),%edx
848	movzbl	%bh,%esi
849	xorl	4(%ebp,%esi,8),%ecx
850	shrl	$16,%ebx
851	movzbl	%al,%eax
852	xorl	2048(%ebp,%eax,8),%edx
853	movzbl	%bh,%esi
854	movl	12(%esp),%eax
855	xorl	%edx,%ecx
856	rorl	$8,%edx
857	xorl	2048(%ebp,%esi,8),%ecx
858	movzbl	%bl,%esi
859	movl	8(%esp),%ebx
860	xorl	%eax,%edx
861	xorl	2052(%ebp,%esi,8),%ecx
862	movl	24(%edi),%esi
863	xorl	%ecx,%edx
864	movl	%edx,12(%esp)
865	xorl	%ebx,%ecx
866	movl	%ecx,8(%esp)
867	xorl	%esi,%ecx
868	xorl	28(%edi),%edx
869	movzbl	%ch,%esi
870	movl	2052(%ebp,%esi,8),%ebx
871	movzbl	%cl,%esi
872	xorl	4(%ebp,%esi,8),%ebx
873	shrl	$16,%ecx
874	movzbl	%dl,%esi
875	movl	(%ebp,%esi,8),%eax
876	movzbl	%ch,%esi
877	xorl	(%ebp,%esi,8),%ebx
878	movzbl	%dh,%esi
879	xorl	4(%ebp,%esi,8),%eax
880	shrl	$16,%edx
881	movzbl	%cl,%ecx
882	xorl	2048(%ebp,%ecx,8),%ebx
883	movzbl	%dh,%esi
884	movl	4(%esp),%ecx
885	xorl	%ebx,%eax
886	rorl	$8,%ebx
887	xorl	2048(%ebp,%esi,8),%eax
888	movzbl	%dl,%esi
889	movl	(%esp),%edx
890	xorl	%ecx,%ebx
891	xorl	2052(%ebp,%esi,8),%eax
892	movl	32(%edi),%esi
893	xorl	%eax,%ebx
894	movl	%ebx,4(%esp)
895	xorl	%edx,%eax
896	movl	%eax,(%esp)
897	movl	8(%esp),%ecx
898	movl	12(%esp),%edx
899	movl	36(%esp),%esi
900	cmpl	$128,%esi
901	jne	.L0122nd256
902	movl	44(%esp),%edi
903	leal	128(%edi),%edi
904	movl	%eax,-112(%edi)
905	movl	%ebx,-108(%edi)
906	movl	%ecx,-104(%edi)
907	movl	%edx,-100(%edi)
908	movl	%eax,%ebp
909	shll	$15,%eax
910	movl	%ebx,%esi
911	shrl	$17,%esi
912	shll	$15,%ebx
913	orl	%esi,%eax
914	movl	%ecx,%esi
915	shll	$15,%ecx
916	movl	%eax,-80(%edi)
917	shrl	$17,%esi
918	orl	%esi,%ebx
919	shrl	$17,%ebp
920	movl	%edx,%esi
921	shrl	$17,%esi
922	movl	%ebx,-76(%edi)
923	shll	$15,%edx
924	orl	%esi,%ecx
925	orl	%ebp,%edx
926	movl	%ecx,-72(%edi)
927	movl	%edx,-68(%edi)
928	movl	%eax,%ebp
929	shll	$15,%eax
930	movl	%ebx,%esi
931	shrl	$17,%esi
932	shll	$15,%ebx
933	orl	%esi,%eax
934	movl	%ecx,%esi
935	shll	$15,%ecx
936	movl	%eax,-64(%edi)
937	shrl	$17,%esi
938	orl	%esi,%ebx
939	shrl	$17,%ebp
940	movl	%edx,%esi
941	shrl	$17,%esi
942	movl	%ebx,-60(%edi)
943	shll	$15,%edx
944	orl	%esi,%ecx
945	orl	%ebp,%edx
946	movl	%ecx,-56(%edi)
947	movl	%edx,-52(%edi)
948	movl	%eax,%ebp
949	shll	$15,%eax
950	movl	%ebx,%esi
951	shrl	$17,%esi
952	shll	$15,%ebx
953	orl	%esi,%eax
954	movl	%ecx,%esi
955	shll	$15,%ecx
956	movl	%eax,-32(%edi)
957	shrl	$17,%esi
958	orl	%esi,%ebx
959	shrl	$17,%ebp
960	movl	%edx,%esi
961	shrl	$17,%esi
962	movl	%ebx,-28(%edi)
963	shll	$15,%edx
964	orl	%esi,%ecx
965	orl	%ebp,%edx
966	movl	%eax,%ebp
967	shll	$15,%eax
968	movl	%ebx,%esi
969	shrl	$17,%esi
970	shll	$15,%ebx
971	orl	%esi,%eax
972	movl	%ecx,%esi
973	shll	$15,%ecx
974	movl	%eax,-16(%edi)
975	shrl	$17,%esi
976	orl	%esi,%ebx
977	shrl	$17,%ebp
978	movl	%edx,%esi
979	shrl	$17,%esi
980	movl	%ebx,-12(%edi)
981	shll	$15,%edx
982	orl	%esi,%ecx
983	orl	%ebp,%edx
984	movl	%ecx,-8(%edi)
985	movl	%edx,-4(%edi)
986	movl	%ebx,%ebp
987	shll	$2,%ebx
988	movl	%ecx,%esi
989	shrl	$30,%esi
990	shll	$2,%ecx
991	orl	%esi,%ebx
992	movl	%edx,%esi
993	shll	$2,%edx
994	movl	%ebx,32(%edi)
995	shrl	$30,%esi
996	orl	%esi,%ecx
997	shrl	$30,%ebp
998	movl	%eax,%esi
999	shrl	$30,%esi
1000	movl	%ecx,36(%edi)
1001	shll	$2,%eax
1002	orl	%esi,%edx
1003	orl	%ebp,%eax
1004	movl	%edx,40(%edi)
1005	movl	%eax,44(%edi)
1006	movl	%ebx,%ebp
1007	shll	$17,%ebx
1008	movl	%ecx,%esi
1009	shrl	$15,%esi
1010	shll	$17,%ecx
1011	orl	%esi,%ebx
1012	movl	%edx,%esi
1013	shll	$17,%edx
1014	movl	%ebx,64(%edi)
1015	shrl	$15,%esi
1016	orl	%esi,%ecx
1017	shrl	$15,%ebp
1018	movl	%eax,%esi
1019	shrl	$15,%esi
1020	movl	%ecx,68(%edi)
1021	shll	$17,%eax
1022	orl	%esi,%edx
1023	orl	%ebp,%eax
1024	movl	%edx,72(%edi)
1025	movl	%eax,76(%edi)
1026	movl	-128(%edi),%ebx
1027	movl	-124(%edi),%ecx
1028	movl	-120(%edi),%edx
1029	movl	-116(%edi),%eax
1030	movl	%ebx,%ebp
1031	shll	$15,%ebx
1032	movl	%ecx,%esi
1033	shrl	$17,%esi
1034	shll	$15,%ecx
1035	orl	%esi,%ebx
1036	movl	%edx,%esi
1037	shll	$15,%edx
1038	movl	%ebx,-96(%edi)
1039	shrl	$17,%esi
1040	orl	%esi,%ecx
1041	shrl	$17,%ebp
1042	movl	%eax,%esi
1043	shrl	$17,%esi
1044	movl	%ecx,-92(%edi)
1045	shll	$15,%eax
1046	orl	%esi,%edx
1047	orl	%ebp,%eax
1048	movl	%edx,-88(%edi)
1049	movl	%eax,-84(%edi)
1050	movl	%ebx,%ebp
1051	shll	$30,%ebx
1052	movl	%ecx,%esi
1053	shrl	$2,%esi
1054	shll	$30,%ecx
1055	orl	%esi,%ebx
1056	movl	%edx,%esi
1057	shll	$30,%edx
1058	movl	%ebx,-48(%edi)
1059	shrl	$2,%esi
1060	orl	%esi,%ecx
1061	shrl	$2,%ebp
1062	movl	%eax,%esi
1063	shrl	$2,%esi
1064	movl	%ecx,-44(%edi)
1065	shll	$30,%eax
1066	orl	%esi,%edx
1067	orl	%ebp,%eax
1068	movl	%edx,-40(%edi)
1069	movl	%eax,-36(%edi)
1070	movl	%ebx,%ebp
1071	shll	$15,%ebx
1072	movl	%ecx,%esi
1073	shrl	$17,%esi
1074	shll	$15,%ecx
1075	orl	%esi,%ebx
1076	movl	%edx,%esi
1077	shll	$15,%edx
1078	shrl	$17,%esi
1079	orl	%esi,%ecx
1080	shrl	$17,%ebp
1081	movl	%eax,%esi
1082	shrl	$17,%esi
1083	shll	$15,%eax
1084	orl	%esi,%edx
1085	orl	%ebp,%eax
1086	movl	%edx,-24(%edi)
1087	movl	%eax,-20(%edi)
1088	movl	%ebx,%ebp
1089	shll	$17,%ebx
1090	movl	%ecx,%esi
1091	shrl	$15,%esi
1092	shll	$17,%ecx
1093	orl	%esi,%ebx
1094	movl	%edx,%esi
1095	shll	$17,%edx
1096	movl	%ebx,(%edi)
1097	shrl	$15,%esi
1098	orl	%esi,%ecx
1099	shrl	$15,%ebp
1100	movl	%eax,%esi
1101	shrl	$15,%esi
1102	movl	%ecx,4(%edi)
1103	shll	$17,%eax
1104	orl	%esi,%edx
1105	orl	%ebp,%eax
1106	movl	%edx,8(%edi)
1107	movl	%eax,12(%edi)
1108	movl	%ebx,%ebp
1109	shll	$17,%ebx
1110	movl	%ecx,%esi
1111	shrl	$15,%esi
1112	shll	$17,%ecx
1113	orl	%esi,%ebx
1114	movl	%edx,%esi
1115	shll	$17,%edx
1116	movl	%ebx,16(%edi)
1117	shrl	$15,%esi
1118	orl	%esi,%ecx
1119	shrl	$15,%ebp
1120	movl	%eax,%esi
1121	shrl	$15,%esi
1122	movl	%ecx,20(%edi)
1123	shll	$17,%eax
1124	orl	%esi,%edx
1125	orl	%ebp,%eax
1126	movl	%edx,24(%edi)
1127	movl	%eax,28(%edi)
1128	movl	%ebx,%ebp
1129	shll	$17,%ebx
1130	movl	%ecx,%esi
1131	shrl	$15,%esi
1132	shll	$17,%ecx
1133	orl	%esi,%ebx
1134	movl	%edx,%esi
1135	shll	$17,%edx
1136	movl	%ebx,48(%edi)
1137	shrl	$15,%esi
1138	orl	%esi,%ecx
1139	shrl	$15,%ebp
1140	movl	%eax,%esi
1141	shrl	$15,%esi
1142	movl	%ecx,52(%edi)
1143	shll	$17,%eax
1144	orl	%esi,%edx
1145	orl	%ebp,%eax
1146	movl	%edx,56(%edi)
1147	movl	%eax,60(%edi)
1148	movl	$3,%eax
1149	jmp	.L013done
1150.align	16
1151.L0122nd256:
1152	movl	44(%esp),%esi
1153	movl	%eax,48(%esi)
1154	movl	%ebx,52(%esi)
1155	movl	%ecx,56(%esi)
1156	movl	%edx,60(%esi)
1157	xorl	32(%esi),%eax
1158	xorl	36(%esi),%ebx
1159	xorl	40(%esi),%ecx
1160	xorl	44(%esi),%edx
1161	movl	32(%edi),%esi
1162	movl	%eax,(%esp)
1163	movl	%ebx,4(%esp)
1164	movl	%ecx,8(%esp)
1165	movl	%edx,12(%esp)
1166	xorl	%esi,%eax
1167	xorl	36(%edi),%ebx
1168	movzbl	%ah,%esi
1169	movl	2052(%ebp,%esi,8),%edx
1170	movzbl	%al,%esi
1171	xorl	4(%ebp,%esi,8),%edx
1172	shrl	$16,%eax
1173	movzbl	%bl,%esi
1174	movl	(%ebp,%esi,8),%ecx
1175	movzbl	%ah,%esi
1176	xorl	(%ebp,%esi,8),%edx
1177	movzbl	%bh,%esi
1178	xorl	4(%ebp,%esi,8),%ecx
1179	shrl	$16,%ebx
1180	movzbl	%al,%eax
1181	xorl	2048(%ebp,%eax,8),%edx
1182	movzbl	%bh,%esi
1183	movl	12(%esp),%eax
1184	xorl	%edx,%ecx
1185	rorl	$8,%edx
1186	xorl	2048(%ebp,%esi,8),%ecx
1187	movzbl	%bl,%esi
1188	movl	8(%esp),%ebx
1189	xorl	%eax,%edx
1190	xorl	2052(%ebp,%esi,8),%ecx
1191	movl	40(%edi),%esi
1192	xorl	%ecx,%edx
1193	movl	%edx,12(%esp)
1194	xorl	%ebx,%ecx
1195	movl	%ecx,8(%esp)
1196	xorl	%esi,%ecx
1197	xorl	44(%edi),%edx
1198	movzbl	%ch,%esi
1199	movl	2052(%ebp,%esi,8),%ebx
1200	movzbl	%cl,%esi
1201	xorl	4(%ebp,%esi,8),%ebx
1202	shrl	$16,%ecx
1203	movzbl	%dl,%esi
1204	movl	(%ebp,%esi,8),%eax
1205	movzbl	%ch,%esi
1206	xorl	(%ebp,%esi,8),%ebx
1207	movzbl	%dh,%esi
1208	xorl	4(%ebp,%esi,8),%eax
1209	shrl	$16,%edx
1210	movzbl	%cl,%ecx
1211	xorl	2048(%ebp,%ecx,8),%ebx
1212	movzbl	%dh,%esi
1213	movl	4(%esp),%ecx
1214	xorl	%ebx,%eax
1215	rorl	$8,%ebx
1216	xorl	2048(%ebp,%esi,8),%eax
1217	movzbl	%dl,%esi
1218	movl	(%esp),%edx
1219	xorl	%ecx,%ebx
1220	xorl	2052(%ebp,%esi,8),%eax
1221	movl	48(%edi),%esi
1222	xorl	%eax,%ebx
1223	movl	%ebx,4(%esp)
1224	xorl	%edx,%eax
1225	movl	%eax,(%esp)
1226	movl	8(%esp),%ecx
1227	movl	12(%esp),%edx
1228	movl	44(%esp),%edi
1229	leal	128(%edi),%edi
1230	movl	%eax,-112(%edi)
1231	movl	%ebx,-108(%edi)
1232	movl	%ecx,-104(%edi)
1233	movl	%edx,-100(%edi)
1234	movl	%eax,%ebp
1235	shll	$30,%eax
1236	movl	%ebx,%esi
1237	shrl	$2,%esi
1238	shll	$30,%ebx
1239	orl	%esi,%eax
1240	movl	%ecx,%esi
1241	shll	$30,%ecx
1242	movl	%eax,-48(%edi)
1243	shrl	$2,%esi
1244	orl	%esi,%ebx
1245	shrl	$2,%ebp
1246	movl	%edx,%esi
1247	shrl	$2,%esi
1248	movl	%ebx,-44(%edi)
1249	shll	$30,%edx
1250	orl	%esi,%ecx
1251	orl	%ebp,%edx
1252	movl	%ecx,-40(%edi)
1253	movl	%edx,-36(%edi)
1254	movl	%eax,%ebp
1255	shll	$30,%eax
1256	movl	%ebx,%esi
1257	shrl	$2,%esi
1258	shll	$30,%ebx
1259	orl	%esi,%eax
1260	movl	%ecx,%esi
1261	shll	$30,%ecx
1262	movl	%eax,32(%edi)
1263	shrl	$2,%esi
1264	orl	%esi,%ebx
1265	shrl	$2,%ebp
1266	movl	%edx,%esi
1267	shrl	$2,%esi
1268	movl	%ebx,36(%edi)
1269	shll	$30,%edx
1270	orl	%esi,%ecx
1271	orl	%ebp,%edx
1272	movl	%ecx,40(%edi)
1273	movl	%edx,44(%edi)
1274	movl	%ebx,%ebp
1275	shll	$19,%ebx
1276	movl	%ecx,%esi
1277	shrl	$13,%esi
1278	shll	$19,%ecx
1279	orl	%esi,%ebx
1280	movl	%edx,%esi
1281	shll	$19,%edx
1282	movl	%ebx,128(%edi)
1283	shrl	$13,%esi
1284	orl	%esi,%ecx
1285	shrl	$13,%ebp
1286	movl	%eax,%esi
1287	shrl	$13,%esi
1288	movl	%ecx,132(%edi)
1289	shll	$19,%eax
1290	orl	%esi,%edx
1291	orl	%ebp,%eax
1292	movl	%edx,136(%edi)
1293	movl	%eax,140(%edi)
1294	movl	-96(%edi),%ebx
1295	movl	-92(%edi),%ecx
1296	movl	-88(%edi),%edx
1297	movl	-84(%edi),%eax
1298	movl	%ebx,%ebp
1299	shll	$15,%ebx
1300	movl	%ecx,%esi
1301	shrl	$17,%esi
1302	shll	$15,%ecx
1303	orl	%esi,%ebx
1304	movl	%edx,%esi
1305	shll	$15,%edx
1306	movl	%ebx,-96(%edi)
1307	shrl	$17,%esi
1308	orl	%esi,%ecx
1309	shrl	$17,%ebp
1310	movl	%eax,%esi
1311	shrl	$17,%esi
1312	movl	%ecx,-92(%edi)
1313	shll	$15,%eax
1314	orl	%esi,%edx
1315	orl	%ebp,%eax
1316	movl	%edx,-88(%edi)
1317	movl	%eax,-84(%edi)
1318	movl	%ebx,%ebp
1319	shll	$15,%ebx
1320	movl	%ecx,%esi
1321	shrl	$17,%esi
1322	shll	$15,%ecx
1323	orl	%esi,%ebx
1324	movl	%edx,%esi
1325	shll	$15,%edx
1326	movl	%ebx,-64(%edi)
1327	shrl	$17,%esi
1328	orl	%esi,%ecx
1329	shrl	$17,%ebp
1330	movl	%eax,%esi
1331	shrl	$17,%esi
1332	movl	%ecx,-60(%edi)
1333	shll	$15,%eax
1334	orl	%esi,%edx
1335	orl	%ebp,%eax
1336	movl	%edx,-56(%edi)
1337	movl	%eax,-52(%edi)
1338	movl	%ebx,%ebp
1339	shll	$30,%ebx
1340	movl	%ecx,%esi
1341	shrl	$2,%esi
1342	shll	$30,%ecx
1343	orl	%esi,%ebx
1344	movl	%edx,%esi
1345	shll	$30,%edx
1346	movl	%ebx,16(%edi)
1347	shrl	$2,%esi
1348	orl	%esi,%ecx
1349	shrl	$2,%ebp
1350	movl	%eax,%esi
1351	shrl	$2,%esi
1352	movl	%ecx,20(%edi)
1353	shll	$30,%eax
1354	orl	%esi,%edx
1355	orl	%ebp,%eax
1356	movl	%edx,24(%edi)
1357	movl	%eax,28(%edi)
1358	movl	%ecx,%ebp
1359	shll	$2,%ecx
1360	movl	%edx,%esi
1361	shrl	$30,%esi
1362	shll	$2,%edx
1363	orl	%esi,%ecx
1364	movl	%eax,%esi
1365	shll	$2,%eax
1366	movl	%ecx,80(%edi)
1367	shrl	$30,%esi
1368	orl	%esi,%edx
1369	shrl	$30,%ebp
1370	movl	%ebx,%esi
1371	shrl	$30,%esi
1372	movl	%edx,84(%edi)
1373	shll	$2,%ebx
1374	orl	%esi,%eax
1375	orl	%ebp,%ebx
1376	movl	%eax,88(%edi)
1377	movl	%ebx,92(%edi)
1378	movl	-80(%edi),%ecx
1379	movl	-76(%edi),%edx
1380	movl	-72(%edi),%eax
1381	movl	-68(%edi),%ebx
1382	movl	%ecx,%ebp
1383	shll	$15,%ecx
1384	movl	%edx,%esi
1385	shrl	$17,%esi
1386	shll	$15,%edx
1387	orl	%esi,%ecx
1388	movl	%eax,%esi
1389	shll	$15,%eax
1390	movl	%ecx,-80(%edi)
1391	shrl	$17,%esi
1392	orl	%esi,%edx
1393	shrl	$17,%ebp
1394	movl	%ebx,%esi
1395	shrl	$17,%esi
1396	movl	%edx,-76(%edi)
1397	shll	$15,%ebx
1398	orl	%esi,%eax
1399	orl	%ebp,%ebx
1400	movl	%eax,-72(%edi)
1401	movl	%ebx,-68(%edi)
1402	movl	%ecx,%ebp
1403	shll	$30,%ecx
1404	movl	%edx,%esi
1405	shrl	$2,%esi
1406	shll	$30,%edx
1407	orl	%esi,%ecx
1408	movl	%eax,%esi
1409	shll	$30,%eax
1410	movl	%ecx,-16(%edi)
1411	shrl	$2,%esi
1412	orl	%esi,%edx
1413	shrl	$2,%ebp
1414	movl	%ebx,%esi
1415	shrl	$2,%esi
1416	movl	%edx,-12(%edi)
1417	shll	$30,%ebx
1418	orl	%esi,%eax
1419	orl	%ebp,%ebx
1420	movl	%eax,-8(%edi)
1421	movl	%ebx,-4(%edi)
1422	movl	%edx,64(%edi)
1423	movl	%eax,68(%edi)
1424	movl	%ebx,72(%edi)
1425	movl	%ecx,76(%edi)
1426	movl	%edx,%ebp
1427	shll	$17,%edx
1428	movl	%eax,%esi
1429	shrl	$15,%esi
1430	shll	$17,%eax
1431	orl	%esi,%edx
1432	movl	%ebx,%esi
1433	shll	$17,%ebx
1434	movl	%edx,96(%edi)
1435	shrl	$15,%esi
1436	orl	%esi,%eax
1437	shrl	$15,%ebp
1438	movl	%ecx,%esi
1439	shrl	$15,%esi
1440	movl	%eax,100(%edi)
1441	shll	$17,%ecx
1442	orl	%esi,%ebx
1443	orl	%ebp,%ecx
1444	movl	%ebx,104(%edi)
1445	movl	%ecx,108(%edi)
1446	movl	-128(%edi),%edx
1447	movl	-124(%edi),%eax
1448	movl	-120(%edi),%ebx
1449	movl	-116(%edi),%ecx
1450	movl	%eax,%ebp
1451	shll	$13,%eax
1452	movl	%ebx,%esi
1453	shrl	$19,%esi
1454	shll	$13,%ebx
1455	orl	%esi,%eax
1456	movl	%ecx,%esi
1457	shll	$13,%ecx
1458	movl	%eax,-32(%edi)
1459	shrl	$19,%esi
1460	orl	%esi,%ebx
1461	shrl	$19,%ebp
1462	movl	%edx,%esi
1463	shrl	$19,%esi
1464	movl	%ebx,-28(%edi)
1465	shll	$13,%edx
1466	orl	%esi,%ecx
1467	orl	%ebp,%edx
1468	movl	%ecx,-24(%edi)
1469	movl	%edx,-20(%edi)
1470	movl	%eax,%ebp
1471	shll	$15,%eax
1472	movl	%ebx,%esi
1473	shrl	$17,%esi
1474	shll	$15,%ebx
1475	orl	%esi,%eax
1476	movl	%ecx,%esi
1477	shll	$15,%ecx
1478	movl	%eax,(%edi)
1479	shrl	$17,%esi
1480	orl	%esi,%ebx
1481	shrl	$17,%ebp
1482	movl	%edx,%esi
1483	shrl	$17,%esi
1484	movl	%ebx,4(%edi)
1485	shll	$15,%edx
1486	orl	%esi,%ecx
1487	orl	%ebp,%edx
1488	movl	%ecx,8(%edi)
1489	movl	%edx,12(%edi)
1490	movl	%eax,%ebp
1491	shll	$17,%eax
1492	movl	%ebx,%esi
1493	shrl	$15,%esi
1494	shll	$17,%ebx
1495	orl	%esi,%eax
1496	movl	%ecx,%esi
1497	shll	$17,%ecx
1498	movl	%eax,48(%edi)
1499	shrl	$15,%esi
1500	orl	%esi,%ebx
1501	shrl	$15,%ebp
1502	movl	%edx,%esi
1503	shrl	$15,%esi
1504	movl	%ebx,52(%edi)
1505	shll	$17,%edx
1506	orl	%esi,%ecx
1507	orl	%ebp,%edx
1508	movl	%ecx,56(%edi)
1509	movl	%edx,60(%edi)
1510	movl	%ebx,%ebp
1511	shll	$2,%ebx
1512	movl	%ecx,%esi
1513	shrl	$30,%esi
1514	shll	$2,%ecx
1515	orl	%esi,%ebx
1516	movl	%edx,%esi
1517	shll	$2,%edx
1518	movl	%ebx,112(%edi)
1519	shrl	$30,%esi
1520	orl	%esi,%ecx
1521	shrl	$30,%ebp
1522	movl	%eax,%esi
1523	shrl	$30,%esi
1524	movl	%ecx,116(%edi)
1525	shll	$2,%eax
1526	orl	%esi,%edx
1527	orl	%ebp,%eax
1528	movl	%edx,120(%edi)
1529	movl	%eax,124(%edi)
1530	movl	$4,%eax
1531.L013done:
1532	leal	144(%edi),%edx
1533	addl	$16,%esp
1534	popl	%edi
1535	popl	%esi
1536	popl	%ebx
1537	popl	%ebp
1538	ret
1539.size	Camellia_Ekeygen,.-.L_Camellia_Ekeygen_begin
1540.globl	private_Camellia_set_key
1541.type	private_Camellia_set_key,@function
1542.align	16
1543private_Camellia_set_key:
1544.L_private_Camellia_set_key_begin:
1545	pushl	%ebx
1546	movl	8(%esp),%ecx
1547	movl	12(%esp),%ebx
1548	movl	16(%esp),%edx
1549	movl	$-1,%eax
1550	testl	%ecx,%ecx
1551	jz	.L014done
1552	testl	%edx,%edx
1553	jz	.L014done
1554	movl	$-2,%eax
1555	cmpl	$256,%ebx
1556	je	.L015arg_ok
1557	cmpl	$192,%ebx
1558	je	.L015arg_ok
1559	cmpl	$128,%ebx
1560	jne	.L014done
1561.align	4
1562.L015arg_ok:
1563	pushl	%edx
1564	pushl	%ecx
1565	pushl	%ebx
1566	call	.L_Camellia_Ekeygen_begin
1567	addl	$12,%esp
1568	movl	%eax,(%edx)
1569	xorl	%eax,%eax
1570.align	4
1571.L014done:
1572	popl	%ebx
1573	ret
1574.size	private_Camellia_set_key,.-.L_private_Camellia_set_key_begin
1575.align	64
1576.LCamellia_SIGMA:
1577.long	2694735487,1003262091,3061508184,1286239154,3337565999,3914302142,1426019237,4057165596,283453434,3731369245,2958461122,3018244605,0,0,0,0
1578.align	64
1579.LCamellia_SBOX:
1580.long	1886416896,1886388336
1581.long	2189591040,741081132
1582.long	741092352,3014852787
1583.long	3974949888,3233808576
1584.long	3014898432,3840147684
1585.long	656877312,1465319511
1586.long	3233857536,3941204202
1587.long	3857048832,2930639022
1588.long	3840205824,589496355
1589.long	2240120064,1802174571
1590.long	1465341696,1162149957
1591.long	892679424,2779054245
1592.long	3941263872,3991732461
1593.long	202116096,1330577487
1594.long	2930683392,488439837
1595.long	1094795520,2459041938
1596.long	589505280,2256928902
1597.long	4025478912,2947481775
1598.long	1802201856,2088501372
1599.long	2475922176,522125343
1600.long	1162167552,1044250686
1601.long	421075200,3705405660
1602.long	2779096320,1583218782
1603.long	555819264,185270283
1604.long	3991792896,2795896998
1605.long	235802112,960036921
1606.long	1330597632,3587506389
1607.long	1313754624,1566376029
1608.long	488447232,3654877401
1609.long	1701143808,1515847770
1610.long	2459079168,1364262993
1611.long	3183328512,1819017324
1612.long	2256963072,2341142667
1613.long	3099113472,2593783962
1614.long	2947526400,4227531003
1615.long	2408550144,2964324528
1616.long	2088532992,1953759348
1617.long	3958106880,724238379
1618.long	522133248,4042260720
1619.long	3469659648,2223243396
1620.long	1044266496,3755933919
1621.long	808464384,3419078859
1622.long	3705461760,875823156
1623.long	1600085760,1987444854
1624.long	1583242752,1835860077
1625.long	3318072576,2846425257
1626.long	185273088,3520135377
1627.long	437918208,67371012
1628.long	2795939328,336855060
1629.long	3789676800,976879674
1630.long	960051456,3739091166
1631.long	3402287616,286326801
1632.long	3587560704,842137650
1633.long	1195853568,2627469468
1634.long	1566399744,1397948499
1635.long	1027423488,4075946226
1636.long	3654932736,4278059262
1637.long	16843008,3486449871
1638.long	1515870720,3284336835
1639.long	3604403712,2054815866
1640.long	1364283648,606339108
1641.long	1448498688,3907518696
1642.long	1819044864,1616904288
1643.long	1296911616,1768489065
1644.long	2341178112,2863268010
1645.long	218959104,2694840480
1646.long	2593823232,2711683233
1647.long	1717986816,1650589794
1648.long	4227595008,1414791252
1649.long	3435973632,505282590
1650.long	2964369408,3772776672
1651.long	757935360,1684275300
1652.long	1953788928,269484048
1653.long	303174144,0
1654.long	724249344,2745368739
1655.long	538976256,1970602101
1656.long	4042321920,2324299914
1657.long	2981212416,3873833190
1658.long	2223277056,151584777
1659.long	2576980224,3722248413
1660.long	3755990784,2273771655
1661.long	1280068608,2206400643
1662.long	3419130624,3452764365
1663.long	3267543552,2425356432
1664.long	875836416,1936916595
1665.long	2122219008,4143317238
1666.long	1987474944,2644312221
1667.long	84215040,3216965823
1668.long	1835887872,1381105746
1669.long	3082270464,3638034648
1670.long	2846468352,3368550600
1671.long	825307392,3334865094
1672.long	3520188672,2172715137
1673.long	387389184,1869545583
1674.long	67372032,320012307
1675.long	3621246720,1667432547
1676.long	336860160,3924361449
1677.long	1482184704,2812739751
1678.long	976894464,2677997727
1679.long	1633771776,3166437564
1680.long	3739147776,690552873
1681.long	454761216,4193845497
1682.long	286331136,791609391
1683.long	471604224,3031695540
1684.long	842150400,2021130360
1685.long	252645120,101056518
1686.long	2627509248,3890675943
1687.long	370546176,1903231089
1688.long	1397969664,3570663636
1689.long	404232192,2880110763
1690.long	4076007936,2290614408
1691.long	572662272,2374828173
1692.long	4278124032,1920073842
1693.long	1145324544,3115909305
1694.long	3486502656,4177002744
1695.long	2998055424,2896953516
1696.long	3284386560,909508662
1697.long	3048584448,707395626
1698.long	2054846976,1010565180
1699.long	2442236160,4059103473
1700.long	606348288,1077936192
1701.long	134744064,3553820883
1702.long	3907577856,3149594811
1703.long	2829625344,1128464451
1704.long	1616928768,353697813
1705.long	4244438016,2913796269
1706.long	1768515840,2004287607
1707.long	1347440640,2155872384
1708.long	2863311360,2189557890
1709.long	3503345664,3974889708
1710.long	2694881280,656867367
1711.long	2105376000,3856990437
1712.long	2711724288,2240086149
1713.long	2307492096,892665909
1714.long	1650614784,202113036
1715.long	2543294208,1094778945
1716.long	1414812672,4025417967
1717.long	1532713728,2475884691
1718.long	505290240,421068825
1719.long	2509608192,555810849
1720.long	3772833792,235798542
1721.long	4294967040,1313734734
1722.long	1684300800,1701118053
1723.long	3537031680,3183280317
1724.long	269488128,3099066552
1725.long	3301229568,2408513679
1726.long	0,3958046955
1727.long	1212696576,3469607118
1728.long	2745410304,808452144
1729.long	4160222976,1600061535
1730.long	1970631936,3318022341
1731.long	3688618752,437911578
1732.long	2324335104,3789619425
1733.long	50529024,3402236106
1734.long	3873891840,1195835463
1735.long	3671775744,1027407933
1736.long	151587072,16842753
1737.long	1061109504,3604349142
1738.long	3722304768,1448476758
1739.long	2492765184,1296891981
1740.long	2273806080,218955789
1741.long	1549556736,1717960806
1742.long	2206434048,3435921612
1743.long	33686016,757923885
1744.long	3452816640,303169554
1745.long	1246382592,538968096
1746.long	2425393152,2981167281
1747.long	858993408,2576941209
1748.long	1936945920,1280049228
1749.long	1734829824,3267494082
1750.long	4143379968,2122186878
1751.long	4092850944,84213765
1752.long	2644352256,3082223799
1753.long	2139062016,825294897
1754.long	3217014528,387383319
1755.long	3806519808,3621191895
1756.long	1381126656,1482162264
1757.long	2610666240,1633747041
1758.long	3638089728,454754331
1759.long	640034304,471597084
1760.long	3368601600,252641295
1761.long	926365440,370540566
1762.long	3334915584,404226072
1763.long	993737472,572653602
1764.long	2172748032,1145307204
1765.long	2526451200,2998010034
1766.long	1869573888,3048538293
1767.long	1263225600,2442199185
1768.long	320017152,134742024
1769.long	3200171520,2829582504
1770.long	1667457792,4244373756
1771.long	774778368,1347420240
1772.long	3924420864,3503292624
1773.long	2038003968,2105344125
1774.long	2812782336,2307457161
1775.long	2358021120,2543255703
1776.long	2678038272,1532690523
1777.long	1852730880,2509570197
1778.long	3166485504,4294902015
1779.long	2391707136,3536978130
1780.long	690563328,3301179588
1781.long	4126536960,1212678216
1782.long	4193908992,4160159991
1783.long	3065427456,3688562907
1784.long	791621376,50528259
1785.long	4261281024,3671720154
1786.long	3031741440,1061093439
1787.long	1499027712,2492727444
1788.long	2021160960,1549533276
1789.long	2560137216,33685506
1790.long	101058048,1246363722
1791.long	1785358848,858980403
1792.long	3890734848,1734803559
1793.long	1179010560,4092788979
1794.long	1903259904,2139029631
1795.long	3132799488,3806462178
1796.long	3570717696,2610626715
1797.long	623191296,640024614
1798.long	2880154368,926351415
1799.long	1111638528,993722427
1800.long	2290649088,2526412950
1801.long	2728567296,1263206475
1802.long	2374864128,3200123070
1803.long	4210752000,774766638
1804.long	1920102912,2037973113
1805.long	117901056,2357985420
1806.long	3115956480,1852702830
1807.long	1431655680,2391670926
1808.long	4177065984,4126474485
1809.long	4008635904,3065381046
1810.long	2896997376,4261216509
1811.long	168430080,1499005017
1812.long	909522432,2560098456
1813.long	1229539584,1785331818
1814.long	707406336,1178992710
1815.long	1751672832,3132752058
1816.long	1010580480,623181861
1817.long	943208448,1111621698
1818.long	4059164928,2728525986
1819.long	2762253312,4210688250
1820.long	1077952512,117899271
1821.long	673720320,1431634005
1822.long	3553874688,4008575214
1823.long	2071689984,168427530
1824.long	3149642496,1229520969
1825.long	3385444608,1751646312
1826.long	1128481536,943194168
1827.long	3250700544,2762211492
1828.long	353703168,673710120
1829.long	3823362816,2071658619
1830.long	2913840384,3385393353
1831.long	4109693952,3250651329
1832.long	2004317952,3823304931
1833.long	3351758592,4109631732
1834.long	2155905024,3351707847
1835.long	2661195264,2661154974
1836.long	14737632,939538488
1837.long	328965,1090535745
1838.long	5789784,369104406
1839.long	14277081,1979741814
1840.long	6776679,3640711641
1841.long	5131854,2466288531
1842.long	8487297,1610637408
1843.long	13355979,4060148466
1844.long	13224393,1912631922
1845.long	723723,3254829762
1846.long	11447982,2868947883
1847.long	6974058,2583730842
1848.long	14013909,1962964341
1849.long	1579032,100664838
1850.long	6118749,1459640151
1851.long	8553090,2684395680
1852.long	4605510,2432733585
1853.long	14671839,4144035831
1854.long	14079702,3036722613
1855.long	2565927,3372272073
1856.long	9079434,2717950626
1857.long	3289650,2348846220
1858.long	4934475,3523269330
1859.long	4342338,2415956112
1860.long	14408667,4127258358
1861.long	1842204,117442311
1862.long	10395294,2801837991
1863.long	10263708,654321447
1864.long	3815994,2382401166
1865.long	13290186,2986390194
1866.long	2434341,1224755529
1867.long	8092539,3724599006
1868.long	855309,1124090691
1869.long	7434609,1543527516
1870.long	6250335,3607156695
1871.long	2039583,3338717127
1872.long	16316664,1040203326
1873.long	14145495,4110480885
1874.long	4079166,2399178639
1875.long	10329501,1728079719
1876.long	8158332,520101663
1877.long	6316128,402659352
1878.long	12171705,1845522030
1879.long	12500670,2936057775
1880.long	12369084,788541231
1881.long	9145227,3791708898
1882.long	1447446,2231403909
1883.long	3421236,218107149
1884.long	5066061,1392530259
1885.long	12829635,4026593520
1886.long	7500402,2617285788
1887.long	9803157,1694524773
1888.long	11250603,3925928682
1889.long	9342606,2734728099
1890.long	12237498,2919280302
1891.long	8026746,2650840734
1892.long	11776947,3959483628
1893.long	131586,2147516544
1894.long	11842740,754986285
1895.long	11382189,1795189611
1896.long	10658466,2818615464
1897.long	11316396,721431339
1898.long	14211288,905983542
1899.long	10132122,2785060518
1900.long	1513239,3305162181
1901.long	1710618,2248181382
1902.long	3487029,1291865421
1903.long	13421772,855651123
1904.long	16250871,4244700669
1905.long	10066329,1711302246
1906.long	6381921,1476417624
1907.long	5921370,2516620950
1908.long	15263976,973093434
1909.long	2368548,150997257
1910.long	5658198,2499843477
1911.long	4210752,268439568
1912.long	14803425,2013296760
1913.long	6513507,3623934168
1914.long	592137,1107313218
1915.long	3355443,3422604492
1916.long	12566463,4009816047
1917.long	10000536,637543974
1918.long	9934743,3842041317
1919.long	8750469,1627414881
1920.long	6842472,436214298
1921.long	16579836,1056980799
1922.long	15527148,989870907
1923.long	657930,2181071490
1924.long	14342874,3053500086
1925.long	7303023,3674266587
1926.long	5460819,3556824276
1927.long	6447714,2550175896
1928.long	10724259,3892373736
1929.long	3026478,2332068747
1930.long	526344,33554946
1931.long	11513775,3942706155
1932.long	2631720,167774730
1933.long	11579568,738208812
1934.long	7631988,486546717
1935.long	12763842,2952835248
1936.long	12434877,1862299503
1937.long	3552822,2365623693
1938.long	2236962,2281736328
1939.long	3684408,234884622
1940.long	6579300,419436825
1941.long	1973790,2264958855
1942.long	3750201,1308642894
1943.long	2894892,184552203
1944.long	10921638,2835392937
1945.long	3158064,201329676
1946.long	15066597,2030074233
1947.long	4473924,285217041
1948.long	16645629,2130739071
1949.long	8947848,570434082
1950.long	10461087,3875596263
1951.long	6645093,1493195097
1952.long	8882055,3774931425
1953.long	7039851,3657489114
1954.long	16053492,1023425853
1955.long	2302755,3355494600
1956.long	4737096,301994514
1957.long	1052688,67109892
1958.long	13750737,1946186868
1959.long	5329233,1409307732
1960.long	12632256,805318704
1961.long	16382457,2113961598
1962.long	13816530,3019945140
1963.long	10526880,671098920
1964.long	5592405,1426085205
1965.long	10592673,1744857192
1966.long	4276545,1342197840
1967.long	16448250,3187719870
1968.long	4408131,3489714384
1969.long	1250067,3288384708
1970.long	12895428,822096177
1971.long	3092271,3405827019
1972.long	11053224,704653866
1973.long	11974326,2902502829
1974.long	3947580,251662095
1975.long	2829099,3389049546
1976.long	12698049,1879076976
1977.long	16777215,4278255615
1978.long	13158600,838873650
1979.long	10855845,1761634665
1980.long	2105376,134219784
1981.long	9013641,1644192354
1982.long	0,0
1983.long	9474192,603989028
1984.long	4671303,3506491857
1985.long	15724527,4211145723
1986.long	15395562,3120609978
1987.long	12040119,3976261101
1988.long	1381653,1157645637
1989.long	394758,2164294017
1990.long	13487565,1929409395
1991.long	11908533,1828744557
1992.long	1184274,2214626436
1993.long	8289918,2667618207
1994.long	12303291,3993038574
1995.long	2697513,1241533002
1996.long	986895,3271607235
1997.long	12105912,771763758
1998.long	460551,3238052289
1999.long	263172,16777473
2000.long	10197915,3858818790
2001.long	9737364,620766501
2002.long	2171169,1207978056
2003.long	6710886,2566953369
2004.long	15132390,3103832505
2005.long	13553358,3003167667
2006.long	15592941,2063629179
2007.long	15198183,4177590777
2008.long	3881787,3456159438
2009.long	16711422,3204497343
2010.long	8355711,3741376479
2011.long	12961221,1895854449
2012.long	10790052,687876393
2013.long	3618615,3439381965
2014.long	11645361,1811967084
2015.long	5000268,318771987
2016.long	9539985,1677747300
2017.long	7237230,2600508315
2018.long	9276813,1660969827
2019.long	7763574,2634063261
2020.long	197379,3221274816
2021.long	2960685,1258310475
2022.long	14606046,3070277559
2023.long	9868950,2768283045
2024.long	2500134,2298513801
2025.long	8224125,1593859935
2026.long	13027014,2969612721
2027.long	6052956,385881879
2028.long	13882323,4093703412
2029.long	15921906,3154164924
2030.long	5197647,3540046803
2031.long	1644825,1174423110
2032.long	4144959,3472936911
2033.long	14474460,922761015
2034.long	7960953,1577082462
2035.long	1907997,1191200583
2036.long	5395026,2483066004
2037.long	15461355,4194368250
2038.long	15987699,4227923196
2039.long	7171437,1526750043
2040.long	6184542,2533398423
2041.long	16514043,4261478142
2042.long	6908265,1509972570
2043.long	11711154,2885725356
2044.long	15790320,1006648380
2045.long	3223857,1275087948
2046.long	789516,50332419
2047.long	13948116,889206069
2048.long	13619151,4076925939
2049.long	9211020,587211555
2050.long	14869218,3087055032
2051.long	7697781,1560304989
2052.long	11119017,1778412138
2053.long	4868682,2449511058
2054.long	5723991,3573601749
2055.long	8684676,553656609
2056.long	1118481,1140868164
2057.long	4539717,1358975313
2058.long	1776411,3321939654
2059.long	16119285,2097184125
2060.long	15000804,956315961
2061.long	921102,2197848963
2062.long	7566195,3691044060
2063.long	11184810,2852170410
2064.long	15856113,2080406652
2065.long	14540253,1996519287
2066.long	5855577,1442862678
2067.long	1315860,83887365
2068.long	7105644,452991771
2069.long	9605778,2751505572
2070.long	5526612,352326933
2071.long	13684944,872428596
2072.long	7895160,503324190
2073.long	7368816,469769244
2074.long	14935011,4160813304
2075.long	4802889,1375752786
2076.long	8421504,536879136
2077.long	5263440,335549460
2078.long	10987431,3909151209
2079.long	16185078,3170942397
2080.long	7829367,3707821533
2081.long	9671571,3825263844
2082.long	8816262,2701173153
2083.long	8618883,3758153952
2084.long	2763306,2315291274
2085.long	13092807,4043370993
2086.long	5987163,3590379222
2087.long	15329769,2046851706
2088.long	15658734,3137387451
2089.long	9408399,3808486371
2090.long	65793,1073758272
2091.long	4013373,1325420367
2092.globl	Camellia_cbc_encrypt
2093.type	Camellia_cbc_encrypt,@function
2094.align	16
2095Camellia_cbc_encrypt:
2096.L_Camellia_cbc_encrypt_begin:
2097	pushl	%ebp
2098	pushl	%ebx
2099	pushl	%esi
2100	pushl	%edi
2101	movl	28(%esp),%ecx
2102	cmpl	$0,%ecx
2103	je	.L016enc_out
2104	pushfl
2105	cld
2106	movl	24(%esp),%eax
2107	movl	28(%esp),%ebx
2108	movl	36(%esp),%edx
2109	movl	40(%esp),%ebp
2110	leal	-64(%esp),%esi
2111	andl	$-64,%esi
2112	leal	-127(%edx),%edi
2113	subl	%esi,%edi
2114	negl	%edi
2115	andl	$960,%edi
2116	subl	%edi,%esi
2117	movl	44(%esp),%edi
2118	xchgl	%esi,%esp
2119	addl	$4,%esp
2120	movl	%esi,20(%esp)
2121	movl	%eax,24(%esp)
2122	movl	%ebx,28(%esp)
2123	movl	%ecx,32(%esp)
2124	movl	%edx,36(%esp)
2125	movl	%ebp,40(%esp)
2126	call	.L017pic_point
2127.L017pic_point:
2128	popl	%ebp
2129	leal	.LCamellia_SBOX-.L017pic_point(%ebp),%ebp
2130	movl	$32,%esi
2131.align	4
2132.L018prefetch_sbox:
2133	movl	(%ebp),%eax
2134	movl	32(%ebp),%ebx
2135	movl	64(%ebp),%ecx
2136	movl	96(%ebp),%edx
2137	leal	128(%ebp),%ebp
2138	decl	%esi
2139	jnz	.L018prefetch_sbox
2140	movl	36(%esp),%eax
2141	subl	$4096,%ebp
2142	movl	24(%esp),%esi
2143	movl	272(%eax),%edx
2144	cmpl	$0,%edi
2145	je	.L019DECRYPT
2146	movl	32(%esp),%ecx
2147	movl	40(%esp),%edi
2148	shll	$6,%edx
2149	leal	(%eax,%edx,1),%edx
2150	movl	%edx,16(%esp)
2151	testl	$4294967280,%ecx
2152	jz	.L020enc_tail
2153	movl	(%edi),%eax
2154	movl	4(%edi),%ebx
2155.align	4
2156.L021enc_loop:
2157	movl	8(%edi),%ecx
2158	movl	12(%edi),%edx
2159	xorl	(%esi),%eax
2160	xorl	4(%esi),%ebx
2161	xorl	8(%esi),%ecx
2162	bswap	%eax
2163	xorl	12(%esi),%edx
2164	bswap	%ebx
2165	movl	36(%esp),%edi
2166	bswap	%ecx
2167	bswap	%edx
2168	call	_x86_Camellia_encrypt
2169	movl	24(%esp),%esi
2170	movl	28(%esp),%edi
2171	bswap	%eax
2172	bswap	%ebx
2173	bswap	%ecx
2174	movl	%eax,(%edi)
2175	bswap	%edx
2176	movl	%ebx,4(%edi)
2177	movl	%ecx,8(%edi)
2178	movl	%edx,12(%edi)
2179	movl	32(%esp),%ecx
2180	leal	16(%esi),%esi
2181	movl	%esi,24(%esp)
2182	leal	16(%edi),%edx
2183	movl	%edx,28(%esp)
2184	subl	$16,%ecx
2185	testl	$4294967280,%ecx
2186	movl	%ecx,32(%esp)
2187	jnz	.L021enc_loop
2188	testl	$15,%ecx
2189	jnz	.L020enc_tail
2190	movl	40(%esp),%esi
2191	movl	8(%edi),%ecx
2192	movl	12(%edi),%edx
2193	movl	%eax,(%esi)
2194	movl	%ebx,4(%esi)
2195	movl	%ecx,8(%esi)
2196	movl	%edx,12(%esi)
2197	movl	20(%esp),%esp
2198	popfl
2199.L016enc_out:
2200	popl	%edi
2201	popl	%esi
2202	popl	%ebx
2203	popl	%ebp
2204	ret
2205	pushfl
2206.align	4
2207.L020enc_tail:
2208	movl	%edi,%eax
2209	movl	28(%esp),%edi
2210	pushl	%eax
2211	movl	$16,%ebx
2212	subl	%ecx,%ebx
2213	cmpl	%esi,%edi
2214	je	.L022enc_in_place
2215.align	4
2216.long	2767451785
2217	jmp	.L023enc_skip_in_place
2218.L022enc_in_place:
2219	leal	(%edi,%ecx,1),%edi
2220.L023enc_skip_in_place:
2221	movl	%ebx,%ecx
2222	xorl	%eax,%eax
2223.align	4
2224.long	2868115081
2225	popl	%edi
2226	movl	28(%esp),%esi
2227	movl	(%edi),%eax
2228	movl	4(%edi),%ebx
2229	movl	$16,32(%esp)
2230	jmp	.L021enc_loop
2231.align	16
2232.L019DECRYPT:
2233	shll	$6,%edx
2234	leal	(%eax,%edx,1),%edx
2235	movl	%eax,16(%esp)
2236	movl	%edx,36(%esp)
2237	cmpl	28(%esp),%esi
2238	je	.L024dec_in_place
2239	movl	40(%esp),%edi
2240	movl	%edi,44(%esp)
2241.align	4
2242.L025dec_loop:
2243	movl	(%esi),%eax
2244	movl	4(%esi),%ebx
2245	movl	8(%esi),%ecx
2246	bswap	%eax
2247	movl	12(%esi),%edx
2248	bswap	%ebx
2249	movl	36(%esp),%edi
2250	bswap	%ecx
2251	bswap	%edx
2252	call	_x86_Camellia_decrypt
2253	movl	44(%esp),%edi
2254	movl	32(%esp),%esi
2255	bswap	%eax
2256	bswap	%ebx
2257	bswap	%ecx
2258	xorl	(%edi),%eax
2259	bswap	%edx
2260	xorl	4(%edi),%ebx
2261	xorl	8(%edi),%ecx
2262	xorl	12(%edi),%edx
2263	subl	$16,%esi
2264	jc	.L026dec_partial
2265	movl	%esi,32(%esp)
2266	movl	24(%esp),%esi
2267	movl	28(%esp),%edi
2268	movl	%eax,(%edi)
2269	movl	%ebx,4(%edi)
2270	movl	%ecx,8(%edi)
2271	movl	%edx,12(%edi)
2272	movl	%esi,44(%esp)
2273	leal	16(%esi),%esi
2274	movl	%esi,24(%esp)
2275	leal	16(%edi),%edi
2276	movl	%edi,28(%esp)
2277	jnz	.L025dec_loop
2278	movl	44(%esp),%edi
2279.L027dec_end:
2280	movl	40(%esp),%esi
2281	movl	(%edi),%eax
2282	movl	4(%edi),%ebx
2283	movl	8(%edi),%ecx
2284	movl	12(%edi),%edx
2285	movl	%eax,(%esi)
2286	movl	%ebx,4(%esi)
2287	movl	%ecx,8(%esi)
2288	movl	%edx,12(%esi)
2289	jmp	.L028dec_out
2290.align	4
2291.L026dec_partial:
2292	leal	44(%esp),%edi
2293	movl	%eax,(%edi)
2294	movl	%ebx,4(%edi)
2295	movl	%ecx,8(%edi)
2296	movl	%edx,12(%edi)
2297	leal	16(%esi),%ecx
2298	movl	%edi,%esi
2299	movl	28(%esp),%edi
2300.long	2767451785
2301	movl	24(%esp),%edi
2302	jmp	.L027dec_end
2303.align	4
2304.L024dec_in_place:
2305.L029dec_in_place_loop:
2306	leal	44(%esp),%edi
2307	movl	(%esi),%eax
2308	movl	4(%esi),%ebx
2309	movl	8(%esi),%ecx
2310	movl	12(%esi),%edx
2311	movl	%eax,(%edi)
2312	movl	%ebx,4(%edi)
2313	movl	%ecx,8(%edi)
2314	bswap	%eax
2315	movl	%edx,12(%edi)
2316	bswap	%ebx
2317	movl	36(%esp),%edi
2318	bswap	%ecx
2319	bswap	%edx
2320	call	_x86_Camellia_decrypt
2321	movl	40(%esp),%edi
2322	movl	28(%esp),%esi
2323	bswap	%eax
2324	bswap	%ebx
2325	bswap	%ecx
2326	xorl	(%edi),%eax
2327	bswap	%edx
2328	xorl	4(%edi),%ebx
2329	xorl	8(%edi),%ecx
2330	xorl	12(%edi),%edx
2331	movl	%eax,(%esi)
2332	movl	%ebx,4(%esi)
2333	movl	%ecx,8(%esi)
2334	movl	%edx,12(%esi)
2335	leal	16(%esi),%esi
2336	movl	%esi,28(%esp)
2337	leal	44(%esp),%esi
2338	movl	(%esi),%eax
2339	movl	4(%esi),%ebx
2340	movl	8(%esi),%ecx
2341	movl	12(%esi),%edx
2342	movl	%eax,(%edi)
2343	movl	%ebx,4(%edi)
2344	movl	%ecx,8(%edi)
2345	movl	%edx,12(%edi)
2346	movl	24(%esp),%esi
2347	leal	16(%esi),%esi
2348	movl	%esi,24(%esp)
2349	movl	32(%esp),%ecx
2350	subl	$16,%ecx
2351	jc	.L030dec_in_place_partial
2352	movl	%ecx,32(%esp)
2353	jnz	.L029dec_in_place_loop
2354	jmp	.L028dec_out
2355.align	4
2356.L030dec_in_place_partial:
2357	movl	28(%esp),%edi
2358	leal	44(%esp),%esi
2359	leal	(%edi,%ecx,1),%edi
2360	leal	16(%esi,%ecx,1),%esi
2361	negl	%ecx
2362.long	2767451785
2363.align	4
2364.L028dec_out:
2365	movl	20(%esp),%esp
2366	popfl
2367	popl	%edi
2368	popl	%esi
2369	popl	%ebx
2370	popl	%ebp
2371	ret
2372.size	Camellia_cbc_encrypt,.-.L_Camellia_cbc_encrypt_begin
2373.byte	67,97,109,101,108,108,105,97,32,102,111,114,32,120,56,54
2374.byte	32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
2375.byte	115,108,46,111,114,103,62,0
2376