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