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