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