cmll-x86_64.S revision 305153
1/* $FreeBSD: stable/11/secure/lib/libcrypto/amd64/cmll-x86_64.S 305153 2016-08-31 20:33:59Z jkim $ */
2/* Do not modify. This file is auto-generated from cmll-x86_64.pl. */
3.text
4
5
6.globl	Camellia_EncryptBlock
7.type	Camellia_EncryptBlock,@function
8.align	16
9Camellia_EncryptBlock:
10	movl	$128,%eax
11	subl	%edi,%eax
12	movl	$3,%edi
13	adcl	$0,%edi
14	jmp	.Lenc_rounds
15.size	Camellia_EncryptBlock,.-Camellia_EncryptBlock
16
17.globl	Camellia_EncryptBlock_Rounds
18.type	Camellia_EncryptBlock_Rounds,@function
19.align	16
20.Lenc_rounds:
21Camellia_EncryptBlock_Rounds:
22	pushq	%rbx
23	pushq	%rbp
24	pushq	%r13
25	pushq	%r14
26	pushq	%r15
27.Lenc_prologue:
28
29
30	movq	%rcx,%r13
31	movq	%rdx,%r14
32
33	shll	$6,%edi
34	leaq	.LCamellia_SBOX(%rip),%rbp
35	leaq	(%r14,%rdi,1),%r15
36
37	movl	0(%rsi),%r8d
38	movl	4(%rsi),%r9d
39	movl	8(%rsi),%r10d
40	bswapl	%r8d
41	movl	12(%rsi),%r11d
42	bswapl	%r9d
43	bswapl	%r10d
44	bswapl	%r11d
45
46	call	_x86_64_Camellia_encrypt
47
48	bswapl	%r8d
49	bswapl	%r9d
50	bswapl	%r10d
51	movl	%r8d,0(%r13)
52	bswapl	%r11d
53	movl	%r9d,4(%r13)
54	movl	%r10d,8(%r13)
55	movl	%r11d,12(%r13)
56
57	movq	0(%rsp),%r15
58	movq	8(%rsp),%r14
59	movq	16(%rsp),%r13
60	movq	24(%rsp),%rbp
61	movq	32(%rsp),%rbx
62	leaq	40(%rsp),%rsp
63.Lenc_epilogue:
64	.byte	0xf3,0xc3
65.size	Camellia_EncryptBlock_Rounds,.-Camellia_EncryptBlock_Rounds
66
67.type	_x86_64_Camellia_encrypt,@function
68.align	16
69_x86_64_Camellia_encrypt:
70	xorl	0(%r14),%r9d
71	xorl	4(%r14),%r8d
72	xorl	8(%r14),%r11d
73	xorl	12(%r14),%r10d
74.align	16
75.Leloop:
76	movl	16(%r14),%ebx
77	movl	20(%r14),%eax
78
79	xorl	%r8d,%eax
80	xorl	%r9d,%ebx
81	movzbl	%ah,%esi
82	movzbl	%bl,%edi
83	movl	2052(%rbp,%rsi,8),%edx
84	movl	0(%rbp,%rdi,8),%ecx
85	movzbl	%al,%esi
86	shrl	$16,%eax
87	movzbl	%bh,%edi
88	xorl	4(%rbp,%rsi,8),%edx
89	shrl	$16,%ebx
90	xorl	4(%rbp,%rdi,8),%ecx
91	movzbl	%ah,%esi
92	movzbl	%bl,%edi
93	xorl	0(%rbp,%rsi,8),%edx
94	xorl	2052(%rbp,%rdi,8),%ecx
95	movzbl	%al,%esi
96	movzbl	%bh,%edi
97	xorl	2048(%rbp,%rsi,8),%edx
98	xorl	2048(%rbp,%rdi,8),%ecx
99	movl	24(%r14),%ebx
100	movl	28(%r14),%eax
101	xorl	%edx,%ecx
102	rorl	$8,%edx
103	xorl	%ecx,%r10d
104	xorl	%ecx,%r11d
105	xorl	%edx,%r11d
106	xorl	%r10d,%eax
107	xorl	%r11d,%ebx
108	movzbl	%ah,%esi
109	movzbl	%bl,%edi
110	movl	2052(%rbp,%rsi,8),%edx
111	movl	0(%rbp,%rdi,8),%ecx
112	movzbl	%al,%esi
113	shrl	$16,%eax
114	movzbl	%bh,%edi
115	xorl	4(%rbp,%rsi,8),%edx
116	shrl	$16,%ebx
117	xorl	4(%rbp,%rdi,8),%ecx
118	movzbl	%ah,%esi
119	movzbl	%bl,%edi
120	xorl	0(%rbp,%rsi,8),%edx
121	xorl	2052(%rbp,%rdi,8),%ecx
122	movzbl	%al,%esi
123	movzbl	%bh,%edi
124	xorl	2048(%rbp,%rsi,8),%edx
125	xorl	2048(%rbp,%rdi,8),%ecx
126	movl	32(%r14),%ebx
127	movl	36(%r14),%eax
128	xorl	%edx,%ecx
129	rorl	$8,%edx
130	xorl	%ecx,%r8d
131	xorl	%ecx,%r9d
132	xorl	%edx,%r9d
133	xorl	%r8d,%eax
134	xorl	%r9d,%ebx
135	movzbl	%ah,%esi
136	movzbl	%bl,%edi
137	movl	2052(%rbp,%rsi,8),%edx
138	movl	0(%rbp,%rdi,8),%ecx
139	movzbl	%al,%esi
140	shrl	$16,%eax
141	movzbl	%bh,%edi
142	xorl	4(%rbp,%rsi,8),%edx
143	shrl	$16,%ebx
144	xorl	4(%rbp,%rdi,8),%ecx
145	movzbl	%ah,%esi
146	movzbl	%bl,%edi
147	xorl	0(%rbp,%rsi,8),%edx
148	xorl	2052(%rbp,%rdi,8),%ecx
149	movzbl	%al,%esi
150	movzbl	%bh,%edi
151	xorl	2048(%rbp,%rsi,8),%edx
152	xorl	2048(%rbp,%rdi,8),%ecx
153	movl	40(%r14),%ebx
154	movl	44(%r14),%eax
155	xorl	%edx,%ecx
156	rorl	$8,%edx
157	xorl	%ecx,%r10d
158	xorl	%ecx,%r11d
159	xorl	%edx,%r11d
160	xorl	%r10d,%eax
161	xorl	%r11d,%ebx
162	movzbl	%ah,%esi
163	movzbl	%bl,%edi
164	movl	2052(%rbp,%rsi,8),%edx
165	movl	0(%rbp,%rdi,8),%ecx
166	movzbl	%al,%esi
167	shrl	$16,%eax
168	movzbl	%bh,%edi
169	xorl	4(%rbp,%rsi,8),%edx
170	shrl	$16,%ebx
171	xorl	4(%rbp,%rdi,8),%ecx
172	movzbl	%ah,%esi
173	movzbl	%bl,%edi
174	xorl	0(%rbp,%rsi,8),%edx
175	xorl	2052(%rbp,%rdi,8),%ecx
176	movzbl	%al,%esi
177	movzbl	%bh,%edi
178	xorl	2048(%rbp,%rsi,8),%edx
179	xorl	2048(%rbp,%rdi,8),%ecx
180	movl	48(%r14),%ebx
181	movl	52(%r14),%eax
182	xorl	%edx,%ecx
183	rorl	$8,%edx
184	xorl	%ecx,%r8d
185	xorl	%ecx,%r9d
186	xorl	%edx,%r9d
187	xorl	%r8d,%eax
188	xorl	%r9d,%ebx
189	movzbl	%ah,%esi
190	movzbl	%bl,%edi
191	movl	2052(%rbp,%rsi,8),%edx
192	movl	0(%rbp,%rdi,8),%ecx
193	movzbl	%al,%esi
194	shrl	$16,%eax
195	movzbl	%bh,%edi
196	xorl	4(%rbp,%rsi,8),%edx
197	shrl	$16,%ebx
198	xorl	4(%rbp,%rdi,8),%ecx
199	movzbl	%ah,%esi
200	movzbl	%bl,%edi
201	xorl	0(%rbp,%rsi,8),%edx
202	xorl	2052(%rbp,%rdi,8),%ecx
203	movzbl	%al,%esi
204	movzbl	%bh,%edi
205	xorl	2048(%rbp,%rsi,8),%edx
206	xorl	2048(%rbp,%rdi,8),%ecx
207	movl	56(%r14),%ebx
208	movl	60(%r14),%eax
209	xorl	%edx,%ecx
210	rorl	$8,%edx
211	xorl	%ecx,%r10d
212	xorl	%ecx,%r11d
213	xorl	%edx,%r11d
214	xorl	%r10d,%eax
215	xorl	%r11d,%ebx
216	movzbl	%ah,%esi
217	movzbl	%bl,%edi
218	movl	2052(%rbp,%rsi,8),%edx
219	movl	0(%rbp,%rdi,8),%ecx
220	movzbl	%al,%esi
221	shrl	$16,%eax
222	movzbl	%bh,%edi
223	xorl	4(%rbp,%rsi,8),%edx
224	shrl	$16,%ebx
225	xorl	4(%rbp,%rdi,8),%ecx
226	movzbl	%ah,%esi
227	movzbl	%bl,%edi
228	xorl	0(%rbp,%rsi,8),%edx
229	xorl	2052(%rbp,%rdi,8),%ecx
230	movzbl	%al,%esi
231	movzbl	%bh,%edi
232	xorl	2048(%rbp,%rsi,8),%edx
233	xorl	2048(%rbp,%rdi,8),%ecx
234	movl	64(%r14),%ebx
235	movl	68(%r14),%eax
236	xorl	%edx,%ecx
237	rorl	$8,%edx
238	xorl	%ecx,%r8d
239	xorl	%ecx,%r9d
240	xorl	%edx,%r9d
241	leaq	64(%r14),%r14
242	cmpq	%r15,%r14
243	movl	8(%r14),%edx
244	movl	12(%r14),%ecx
245	je	.Ledone
246
247	andl	%r8d,%eax
248	orl	%r11d,%edx
249	roll	$1,%eax
250	xorl	%edx,%r10d
251	xorl	%eax,%r9d
252	andl	%r10d,%ecx
253	orl	%r9d,%ebx
254	roll	$1,%ecx
255	xorl	%ebx,%r8d
256	xorl	%ecx,%r11d
257	jmp	.Leloop
258
259.align	16
260.Ledone:
261	xorl	%r10d,%eax
262	xorl	%r11d,%ebx
263	xorl	%r8d,%ecx
264	xorl	%r9d,%edx
265
266	movl	%eax,%r8d
267	movl	%ebx,%r9d
268	movl	%ecx,%r10d
269	movl	%edx,%r11d
270
271.byte	0xf3,0xc3
272.size	_x86_64_Camellia_encrypt,.-_x86_64_Camellia_encrypt
273
274
275.globl	Camellia_DecryptBlock
276.type	Camellia_DecryptBlock,@function
277.align	16
278Camellia_DecryptBlock:
279	movl	$128,%eax
280	subl	%edi,%eax
281	movl	$3,%edi
282	adcl	$0,%edi
283	jmp	.Ldec_rounds
284.size	Camellia_DecryptBlock,.-Camellia_DecryptBlock
285
286.globl	Camellia_DecryptBlock_Rounds
287.type	Camellia_DecryptBlock_Rounds,@function
288.align	16
289.Ldec_rounds:
290Camellia_DecryptBlock_Rounds:
291	pushq	%rbx
292	pushq	%rbp
293	pushq	%r13
294	pushq	%r14
295	pushq	%r15
296.Ldec_prologue:
297
298
299	movq	%rcx,%r13
300	movq	%rdx,%r15
301
302	shll	$6,%edi
303	leaq	.LCamellia_SBOX(%rip),%rbp
304	leaq	(%r15,%rdi,1),%r14
305
306	movl	0(%rsi),%r8d
307	movl	4(%rsi),%r9d
308	movl	8(%rsi),%r10d
309	bswapl	%r8d
310	movl	12(%rsi),%r11d
311	bswapl	%r9d
312	bswapl	%r10d
313	bswapl	%r11d
314
315	call	_x86_64_Camellia_decrypt
316
317	bswapl	%r8d
318	bswapl	%r9d
319	bswapl	%r10d
320	movl	%r8d,0(%r13)
321	bswapl	%r11d
322	movl	%r9d,4(%r13)
323	movl	%r10d,8(%r13)
324	movl	%r11d,12(%r13)
325
326	movq	0(%rsp),%r15
327	movq	8(%rsp),%r14
328	movq	16(%rsp),%r13
329	movq	24(%rsp),%rbp
330	movq	32(%rsp),%rbx
331	leaq	40(%rsp),%rsp
332.Ldec_epilogue:
333	.byte	0xf3,0xc3
334.size	Camellia_DecryptBlock_Rounds,.-Camellia_DecryptBlock_Rounds
335
336.type	_x86_64_Camellia_decrypt,@function
337.align	16
338_x86_64_Camellia_decrypt:
339	xorl	0(%r14),%r9d
340	xorl	4(%r14),%r8d
341	xorl	8(%r14),%r11d
342	xorl	12(%r14),%r10d
343.align	16
344.Ldloop:
345	movl	-8(%r14),%ebx
346	movl	-4(%r14),%eax
347
348	xorl	%r8d,%eax
349	xorl	%r9d,%ebx
350	movzbl	%ah,%esi
351	movzbl	%bl,%edi
352	movl	2052(%rbp,%rsi,8),%edx
353	movl	0(%rbp,%rdi,8),%ecx
354	movzbl	%al,%esi
355	shrl	$16,%eax
356	movzbl	%bh,%edi
357	xorl	4(%rbp,%rsi,8),%edx
358	shrl	$16,%ebx
359	xorl	4(%rbp,%rdi,8),%ecx
360	movzbl	%ah,%esi
361	movzbl	%bl,%edi
362	xorl	0(%rbp,%rsi,8),%edx
363	xorl	2052(%rbp,%rdi,8),%ecx
364	movzbl	%al,%esi
365	movzbl	%bh,%edi
366	xorl	2048(%rbp,%rsi,8),%edx
367	xorl	2048(%rbp,%rdi,8),%ecx
368	movl	-16(%r14),%ebx
369	movl	-12(%r14),%eax
370	xorl	%edx,%ecx
371	rorl	$8,%edx
372	xorl	%ecx,%r10d
373	xorl	%ecx,%r11d
374	xorl	%edx,%r11d
375	xorl	%r10d,%eax
376	xorl	%r11d,%ebx
377	movzbl	%ah,%esi
378	movzbl	%bl,%edi
379	movl	2052(%rbp,%rsi,8),%edx
380	movl	0(%rbp,%rdi,8),%ecx
381	movzbl	%al,%esi
382	shrl	$16,%eax
383	movzbl	%bh,%edi
384	xorl	4(%rbp,%rsi,8),%edx
385	shrl	$16,%ebx
386	xorl	4(%rbp,%rdi,8),%ecx
387	movzbl	%ah,%esi
388	movzbl	%bl,%edi
389	xorl	0(%rbp,%rsi,8),%edx
390	xorl	2052(%rbp,%rdi,8),%ecx
391	movzbl	%al,%esi
392	movzbl	%bh,%edi
393	xorl	2048(%rbp,%rsi,8),%edx
394	xorl	2048(%rbp,%rdi,8),%ecx
395	movl	-24(%r14),%ebx
396	movl	-20(%r14),%eax
397	xorl	%edx,%ecx
398	rorl	$8,%edx
399	xorl	%ecx,%r8d
400	xorl	%ecx,%r9d
401	xorl	%edx,%r9d
402	xorl	%r8d,%eax
403	xorl	%r9d,%ebx
404	movzbl	%ah,%esi
405	movzbl	%bl,%edi
406	movl	2052(%rbp,%rsi,8),%edx
407	movl	0(%rbp,%rdi,8),%ecx
408	movzbl	%al,%esi
409	shrl	$16,%eax
410	movzbl	%bh,%edi
411	xorl	4(%rbp,%rsi,8),%edx
412	shrl	$16,%ebx
413	xorl	4(%rbp,%rdi,8),%ecx
414	movzbl	%ah,%esi
415	movzbl	%bl,%edi
416	xorl	0(%rbp,%rsi,8),%edx
417	xorl	2052(%rbp,%rdi,8),%ecx
418	movzbl	%al,%esi
419	movzbl	%bh,%edi
420	xorl	2048(%rbp,%rsi,8),%edx
421	xorl	2048(%rbp,%rdi,8),%ecx
422	movl	-32(%r14),%ebx
423	movl	-28(%r14),%eax
424	xorl	%edx,%ecx
425	rorl	$8,%edx
426	xorl	%ecx,%r10d
427	xorl	%ecx,%r11d
428	xorl	%edx,%r11d
429	xorl	%r10d,%eax
430	xorl	%r11d,%ebx
431	movzbl	%ah,%esi
432	movzbl	%bl,%edi
433	movl	2052(%rbp,%rsi,8),%edx
434	movl	0(%rbp,%rdi,8),%ecx
435	movzbl	%al,%esi
436	shrl	$16,%eax
437	movzbl	%bh,%edi
438	xorl	4(%rbp,%rsi,8),%edx
439	shrl	$16,%ebx
440	xorl	4(%rbp,%rdi,8),%ecx
441	movzbl	%ah,%esi
442	movzbl	%bl,%edi
443	xorl	0(%rbp,%rsi,8),%edx
444	xorl	2052(%rbp,%rdi,8),%ecx
445	movzbl	%al,%esi
446	movzbl	%bh,%edi
447	xorl	2048(%rbp,%rsi,8),%edx
448	xorl	2048(%rbp,%rdi,8),%ecx
449	movl	-40(%r14),%ebx
450	movl	-36(%r14),%eax
451	xorl	%edx,%ecx
452	rorl	$8,%edx
453	xorl	%ecx,%r8d
454	xorl	%ecx,%r9d
455	xorl	%edx,%r9d
456	xorl	%r8d,%eax
457	xorl	%r9d,%ebx
458	movzbl	%ah,%esi
459	movzbl	%bl,%edi
460	movl	2052(%rbp,%rsi,8),%edx
461	movl	0(%rbp,%rdi,8),%ecx
462	movzbl	%al,%esi
463	shrl	$16,%eax
464	movzbl	%bh,%edi
465	xorl	4(%rbp,%rsi,8),%edx
466	shrl	$16,%ebx
467	xorl	4(%rbp,%rdi,8),%ecx
468	movzbl	%ah,%esi
469	movzbl	%bl,%edi
470	xorl	0(%rbp,%rsi,8),%edx
471	xorl	2052(%rbp,%rdi,8),%ecx
472	movzbl	%al,%esi
473	movzbl	%bh,%edi
474	xorl	2048(%rbp,%rsi,8),%edx
475	xorl	2048(%rbp,%rdi,8),%ecx
476	movl	-48(%r14),%ebx
477	movl	-44(%r14),%eax
478	xorl	%edx,%ecx
479	rorl	$8,%edx
480	xorl	%ecx,%r10d
481	xorl	%ecx,%r11d
482	xorl	%edx,%r11d
483	xorl	%r10d,%eax
484	xorl	%r11d,%ebx
485	movzbl	%ah,%esi
486	movzbl	%bl,%edi
487	movl	2052(%rbp,%rsi,8),%edx
488	movl	0(%rbp,%rdi,8),%ecx
489	movzbl	%al,%esi
490	shrl	$16,%eax
491	movzbl	%bh,%edi
492	xorl	4(%rbp,%rsi,8),%edx
493	shrl	$16,%ebx
494	xorl	4(%rbp,%rdi,8),%ecx
495	movzbl	%ah,%esi
496	movzbl	%bl,%edi
497	xorl	0(%rbp,%rsi,8),%edx
498	xorl	2052(%rbp,%rdi,8),%ecx
499	movzbl	%al,%esi
500	movzbl	%bh,%edi
501	xorl	2048(%rbp,%rsi,8),%edx
502	xorl	2048(%rbp,%rdi,8),%ecx
503	movl	-56(%r14),%ebx
504	movl	-52(%r14),%eax
505	xorl	%edx,%ecx
506	rorl	$8,%edx
507	xorl	%ecx,%r8d
508	xorl	%ecx,%r9d
509	xorl	%edx,%r9d
510	leaq	-64(%r14),%r14
511	cmpq	%r15,%r14
512	movl	0(%r14),%edx
513	movl	4(%r14),%ecx
514	je	.Lddone
515
516	andl	%r8d,%eax
517	orl	%r11d,%edx
518	roll	$1,%eax
519	xorl	%edx,%r10d
520	xorl	%eax,%r9d
521	andl	%r10d,%ecx
522	orl	%r9d,%ebx
523	roll	$1,%ecx
524	xorl	%ebx,%r8d
525	xorl	%ecx,%r11d
526
527	jmp	.Ldloop
528
529.align	16
530.Lddone:
531	xorl	%r10d,%ecx
532	xorl	%r11d,%edx
533	xorl	%r8d,%eax
534	xorl	%r9d,%ebx
535
536	movl	%ecx,%r8d
537	movl	%edx,%r9d
538	movl	%eax,%r10d
539	movl	%ebx,%r11d
540
541.byte	0xf3,0xc3
542.size	_x86_64_Camellia_decrypt,.-_x86_64_Camellia_decrypt
543.globl	Camellia_Ekeygen
544.type	Camellia_Ekeygen,@function
545.align	16
546Camellia_Ekeygen:
547	pushq	%rbx
548	pushq	%rbp
549	pushq	%r13
550	pushq	%r14
551	pushq	%r15
552.Lkey_prologue:
553
554	movl	%edi,%r15d
555	movq	%rdx,%r13
556
557	movl	0(%rsi),%r8d
558	movl	4(%rsi),%r9d
559	movl	8(%rsi),%r10d
560	movl	12(%rsi),%r11d
561
562	bswapl	%r8d
563	bswapl	%r9d
564	bswapl	%r10d
565	bswapl	%r11d
566	movl	%r9d,0(%r13)
567	movl	%r8d,4(%r13)
568	movl	%r11d,8(%r13)
569	movl	%r10d,12(%r13)
570	cmpq	$128,%r15
571	je	.L1st128
572
573	movl	16(%rsi),%r8d
574	movl	20(%rsi),%r9d
575	cmpq	$192,%r15
576	je	.L1st192
577	movl	24(%rsi),%r10d
578	movl	28(%rsi),%r11d
579	jmp	.L1st256
580.L1st192:
581	movl	%r8d,%r10d
582	movl	%r9d,%r11d
583	notl	%r10d
584	notl	%r11d
585.L1st256:
586	bswapl	%r8d
587	bswapl	%r9d
588	bswapl	%r10d
589	bswapl	%r11d
590	movl	%r9d,32(%r13)
591	movl	%r8d,36(%r13)
592	movl	%r11d,40(%r13)
593	movl	%r10d,44(%r13)
594	xorl	0(%r13),%r9d
595	xorl	4(%r13),%r8d
596	xorl	8(%r13),%r11d
597	xorl	12(%r13),%r10d
598
599.L1st128:
600	leaq	.LCamellia_SIGMA(%rip),%r14
601	leaq	.LCamellia_SBOX(%rip),%rbp
602
603	movl	0(%r14),%ebx
604	movl	4(%r14),%eax
605	xorl	%r8d,%eax
606	xorl	%r9d,%ebx
607	movzbl	%ah,%esi
608	movzbl	%bl,%edi
609	movl	2052(%rbp,%rsi,8),%edx
610	movl	0(%rbp,%rdi,8),%ecx
611	movzbl	%al,%esi
612	shrl	$16,%eax
613	movzbl	%bh,%edi
614	xorl	4(%rbp,%rsi,8),%edx
615	shrl	$16,%ebx
616	xorl	4(%rbp,%rdi,8),%ecx
617	movzbl	%ah,%esi
618	movzbl	%bl,%edi
619	xorl	0(%rbp,%rsi,8),%edx
620	xorl	2052(%rbp,%rdi,8),%ecx
621	movzbl	%al,%esi
622	movzbl	%bh,%edi
623	xorl	2048(%rbp,%rsi,8),%edx
624	xorl	2048(%rbp,%rdi,8),%ecx
625	movl	8(%r14),%ebx
626	movl	12(%r14),%eax
627	xorl	%edx,%ecx
628	rorl	$8,%edx
629	xorl	%ecx,%r10d
630	xorl	%ecx,%r11d
631	xorl	%edx,%r11d
632	xorl	%r10d,%eax
633	xorl	%r11d,%ebx
634	movzbl	%ah,%esi
635	movzbl	%bl,%edi
636	movl	2052(%rbp,%rsi,8),%edx
637	movl	0(%rbp,%rdi,8),%ecx
638	movzbl	%al,%esi
639	shrl	$16,%eax
640	movzbl	%bh,%edi
641	xorl	4(%rbp,%rsi,8),%edx
642	shrl	$16,%ebx
643	xorl	4(%rbp,%rdi,8),%ecx
644	movzbl	%ah,%esi
645	movzbl	%bl,%edi
646	xorl	0(%rbp,%rsi,8),%edx
647	xorl	2052(%rbp,%rdi,8),%ecx
648	movzbl	%al,%esi
649	movzbl	%bh,%edi
650	xorl	2048(%rbp,%rsi,8),%edx
651	xorl	2048(%rbp,%rdi,8),%ecx
652	movl	16(%r14),%ebx
653	movl	20(%r14),%eax
654	xorl	%edx,%ecx
655	rorl	$8,%edx
656	xorl	%ecx,%r8d
657	xorl	%ecx,%r9d
658	xorl	%edx,%r9d
659	xorl	0(%r13),%r9d
660	xorl	4(%r13),%r8d
661	xorl	8(%r13),%r11d
662	xorl	12(%r13),%r10d
663	xorl	%r8d,%eax
664	xorl	%r9d,%ebx
665	movzbl	%ah,%esi
666	movzbl	%bl,%edi
667	movl	2052(%rbp,%rsi,8),%edx
668	movl	0(%rbp,%rdi,8),%ecx
669	movzbl	%al,%esi
670	shrl	$16,%eax
671	movzbl	%bh,%edi
672	xorl	4(%rbp,%rsi,8),%edx
673	shrl	$16,%ebx
674	xorl	4(%rbp,%rdi,8),%ecx
675	movzbl	%ah,%esi
676	movzbl	%bl,%edi
677	xorl	0(%rbp,%rsi,8),%edx
678	xorl	2052(%rbp,%rdi,8),%ecx
679	movzbl	%al,%esi
680	movzbl	%bh,%edi
681	xorl	2048(%rbp,%rsi,8),%edx
682	xorl	2048(%rbp,%rdi,8),%ecx
683	movl	24(%r14),%ebx
684	movl	28(%r14),%eax
685	xorl	%edx,%ecx
686	rorl	$8,%edx
687	xorl	%ecx,%r10d
688	xorl	%ecx,%r11d
689	xorl	%edx,%r11d
690	xorl	%r10d,%eax
691	xorl	%r11d,%ebx
692	movzbl	%ah,%esi
693	movzbl	%bl,%edi
694	movl	2052(%rbp,%rsi,8),%edx
695	movl	0(%rbp,%rdi,8),%ecx
696	movzbl	%al,%esi
697	shrl	$16,%eax
698	movzbl	%bh,%edi
699	xorl	4(%rbp,%rsi,8),%edx
700	shrl	$16,%ebx
701	xorl	4(%rbp,%rdi,8),%ecx
702	movzbl	%ah,%esi
703	movzbl	%bl,%edi
704	xorl	0(%rbp,%rsi,8),%edx
705	xorl	2052(%rbp,%rdi,8),%ecx
706	movzbl	%al,%esi
707	movzbl	%bh,%edi
708	xorl	2048(%rbp,%rsi,8),%edx
709	xorl	2048(%rbp,%rdi,8),%ecx
710	movl	32(%r14),%ebx
711	movl	36(%r14),%eax
712	xorl	%edx,%ecx
713	rorl	$8,%edx
714	xorl	%ecx,%r8d
715	xorl	%ecx,%r9d
716	xorl	%edx,%r9d
717	cmpq	$128,%r15
718	jne	.L2nd256
719
720	leaq	128(%r13),%r13
721	shlq	$32,%r8
722	shlq	$32,%r10
723	orq	%r9,%r8
724	orq	%r11,%r10
725	movq	-128(%r13),%rax
726	movq	-120(%r13),%rbx
727	movq	%r8,-112(%r13)
728	movq	%r10,-104(%r13)
729	movq	%rax,%r11
730	shlq	$15,%rax
731	movq	%rbx,%r9
732	shrq	$49,%r9
733	shrq	$49,%r11
734	orq	%r9,%rax
735	shlq	$15,%rbx
736	orq	%r11,%rbx
737	movq	%rax,-96(%r13)
738	movq	%rbx,-88(%r13)
739	movq	%r8,%r11
740	shlq	$15,%r8
741	movq	%r10,%r9
742	shrq	$49,%r9
743	shrq	$49,%r11
744	orq	%r9,%r8
745	shlq	$15,%r10
746	orq	%r11,%r10
747	movq	%r8,-80(%r13)
748	movq	%r10,-72(%r13)
749	movq	%r8,%r11
750	shlq	$15,%r8
751	movq	%r10,%r9
752	shrq	$49,%r9
753	shrq	$49,%r11
754	orq	%r9,%r8
755	shlq	$15,%r10
756	orq	%r11,%r10
757	movq	%r8,-64(%r13)
758	movq	%r10,-56(%r13)
759	movq	%rax,%r11
760	shlq	$30,%rax
761	movq	%rbx,%r9
762	shrq	$34,%r9
763	shrq	$34,%r11
764	orq	%r9,%rax
765	shlq	$30,%rbx
766	orq	%r11,%rbx
767	movq	%rax,-48(%r13)
768	movq	%rbx,-40(%r13)
769	movq	%r8,%r11
770	shlq	$15,%r8
771	movq	%r10,%r9
772	shrq	$49,%r9
773	shrq	$49,%r11
774	orq	%r9,%r8
775	shlq	$15,%r10
776	orq	%r11,%r10
777	movq	%r8,-32(%r13)
778	movq	%rax,%r11
779	shlq	$15,%rax
780	movq	%rbx,%r9
781	shrq	$49,%r9
782	shrq	$49,%r11
783	orq	%r9,%rax
784	shlq	$15,%rbx
785	orq	%r11,%rbx
786	movq	%rbx,-24(%r13)
787	movq	%r8,%r11
788	shlq	$15,%r8
789	movq	%r10,%r9
790	shrq	$49,%r9
791	shrq	$49,%r11
792	orq	%r9,%r8
793	shlq	$15,%r10
794	orq	%r11,%r10
795	movq	%r8,-16(%r13)
796	movq	%r10,-8(%r13)
797	movq	%rax,%r11
798	shlq	$17,%rax
799	movq	%rbx,%r9
800	shrq	$47,%r9
801	shrq	$47,%r11
802	orq	%r9,%rax
803	shlq	$17,%rbx
804	orq	%r11,%rbx
805	movq	%rax,0(%r13)
806	movq	%rbx,8(%r13)
807	movq	%rax,%r11
808	shlq	$17,%rax
809	movq	%rbx,%r9
810	shrq	$47,%r9
811	shrq	$47,%r11
812	orq	%r9,%rax
813	shlq	$17,%rbx
814	orq	%r11,%rbx
815	movq	%rax,16(%r13)
816	movq	%rbx,24(%r13)
817	movq	%r8,%r11
818	shlq	$34,%r8
819	movq	%r10,%r9
820	shrq	$30,%r9
821	shrq	$30,%r11
822	orq	%r9,%r8
823	shlq	$34,%r10
824	orq	%r11,%r10
825	movq	%r8,32(%r13)
826	movq	%r10,40(%r13)
827	movq	%rax,%r11
828	shlq	$17,%rax
829	movq	%rbx,%r9
830	shrq	$47,%r9
831	shrq	$47,%r11
832	orq	%r9,%rax
833	shlq	$17,%rbx
834	orq	%r11,%rbx
835	movq	%rax,48(%r13)
836	movq	%rbx,56(%r13)
837	movq	%r8,%r11
838	shlq	$17,%r8
839	movq	%r10,%r9
840	shrq	$47,%r9
841	shrq	$47,%r11
842	orq	%r9,%r8
843	shlq	$17,%r10
844	orq	%r11,%r10
845	movq	%r8,64(%r13)
846	movq	%r10,72(%r13)
847	movl	$3,%eax
848	jmp	.Ldone
849.align	16
850.L2nd256:
851	movl	%r9d,48(%r13)
852	movl	%r8d,52(%r13)
853	movl	%r11d,56(%r13)
854	movl	%r10d,60(%r13)
855	xorl	32(%r13),%r9d
856	xorl	36(%r13),%r8d
857	xorl	40(%r13),%r11d
858	xorl	44(%r13),%r10d
859	xorl	%r8d,%eax
860	xorl	%r9d,%ebx
861	movzbl	%ah,%esi
862	movzbl	%bl,%edi
863	movl	2052(%rbp,%rsi,8),%edx
864	movl	0(%rbp,%rdi,8),%ecx
865	movzbl	%al,%esi
866	shrl	$16,%eax
867	movzbl	%bh,%edi
868	xorl	4(%rbp,%rsi,8),%edx
869	shrl	$16,%ebx
870	xorl	4(%rbp,%rdi,8),%ecx
871	movzbl	%ah,%esi
872	movzbl	%bl,%edi
873	xorl	0(%rbp,%rsi,8),%edx
874	xorl	2052(%rbp,%rdi,8),%ecx
875	movzbl	%al,%esi
876	movzbl	%bh,%edi
877	xorl	2048(%rbp,%rsi,8),%edx
878	xorl	2048(%rbp,%rdi,8),%ecx
879	movl	40(%r14),%ebx
880	movl	44(%r14),%eax
881	xorl	%edx,%ecx
882	rorl	$8,%edx
883	xorl	%ecx,%r10d
884	xorl	%ecx,%r11d
885	xorl	%edx,%r11d
886	xorl	%r10d,%eax
887	xorl	%r11d,%ebx
888	movzbl	%ah,%esi
889	movzbl	%bl,%edi
890	movl	2052(%rbp,%rsi,8),%edx
891	movl	0(%rbp,%rdi,8),%ecx
892	movzbl	%al,%esi
893	shrl	$16,%eax
894	movzbl	%bh,%edi
895	xorl	4(%rbp,%rsi,8),%edx
896	shrl	$16,%ebx
897	xorl	4(%rbp,%rdi,8),%ecx
898	movzbl	%ah,%esi
899	movzbl	%bl,%edi
900	xorl	0(%rbp,%rsi,8),%edx
901	xorl	2052(%rbp,%rdi,8),%ecx
902	movzbl	%al,%esi
903	movzbl	%bh,%edi
904	xorl	2048(%rbp,%rsi,8),%edx
905	xorl	2048(%rbp,%rdi,8),%ecx
906	movl	48(%r14),%ebx
907	movl	52(%r14),%eax
908	xorl	%edx,%ecx
909	rorl	$8,%edx
910	xorl	%ecx,%r8d
911	xorl	%ecx,%r9d
912	xorl	%edx,%r9d
913	movq	0(%r13),%rax
914	movq	8(%r13),%rbx
915	movq	32(%r13),%rcx
916	movq	40(%r13),%rdx
917	movq	48(%r13),%r14
918	movq	56(%r13),%r15
919	leaq	128(%r13),%r13
920	shlq	$32,%r8
921	shlq	$32,%r10
922	orq	%r9,%r8
923	orq	%r11,%r10
924	movq	%r8,-112(%r13)
925	movq	%r10,-104(%r13)
926	movq	%rcx,%r11
927	shlq	$15,%rcx
928	movq	%rdx,%r9
929	shrq	$49,%r9
930	shrq	$49,%r11
931	orq	%r9,%rcx
932	shlq	$15,%rdx
933	orq	%r11,%rdx
934	movq	%rcx,-96(%r13)
935	movq	%rdx,-88(%r13)
936	movq	%r14,%r11
937	shlq	$15,%r14
938	movq	%r15,%r9
939	shrq	$49,%r9
940	shrq	$49,%r11
941	orq	%r9,%r14
942	shlq	$15,%r15
943	orq	%r11,%r15
944	movq	%r14,-80(%r13)
945	movq	%r15,-72(%r13)
946	movq	%rcx,%r11
947	shlq	$15,%rcx
948	movq	%rdx,%r9
949	shrq	$49,%r9
950	shrq	$49,%r11
951	orq	%r9,%rcx
952	shlq	$15,%rdx
953	orq	%r11,%rdx
954	movq	%rcx,-64(%r13)
955	movq	%rdx,-56(%r13)
956	movq	%r8,%r11
957	shlq	$30,%r8
958	movq	%r10,%r9
959	shrq	$34,%r9
960	shrq	$34,%r11
961	orq	%r9,%r8
962	shlq	$30,%r10
963	orq	%r11,%r10
964	movq	%r8,-48(%r13)
965	movq	%r10,-40(%r13)
966	movq	%rax,%r11
967	shlq	$45,%rax
968	movq	%rbx,%r9
969	shrq	$19,%r9
970	shrq	$19,%r11
971	orq	%r9,%rax
972	shlq	$45,%rbx
973	orq	%r11,%rbx
974	movq	%rax,-32(%r13)
975	movq	%rbx,-24(%r13)
976	movq	%r14,%r11
977	shlq	$30,%r14
978	movq	%r15,%r9
979	shrq	$34,%r9
980	shrq	$34,%r11
981	orq	%r9,%r14
982	shlq	$30,%r15
983	orq	%r11,%r15
984	movq	%r14,-16(%r13)
985	movq	%r15,-8(%r13)
986	movq	%rax,%r11
987	shlq	$15,%rax
988	movq	%rbx,%r9
989	shrq	$49,%r9
990	shrq	$49,%r11
991	orq	%r9,%rax
992	shlq	$15,%rbx
993	orq	%r11,%rbx
994	movq	%rax,0(%r13)
995	movq	%rbx,8(%r13)
996	movq	%rcx,%r11
997	shlq	$30,%rcx
998	movq	%rdx,%r9
999	shrq	$34,%r9
1000	shrq	$34,%r11
1001	orq	%r9,%rcx
1002	shlq	$30,%rdx
1003	orq	%r11,%rdx
1004	movq	%rcx,16(%r13)
1005	movq	%rdx,24(%r13)
1006	movq	%r8,%r11
1007	shlq	$30,%r8
1008	movq	%r10,%r9
1009	shrq	$34,%r9
1010	shrq	$34,%r11
1011	orq	%r9,%r8
1012	shlq	$30,%r10
1013	orq	%r11,%r10
1014	movq	%r8,32(%r13)
1015	movq	%r10,40(%r13)
1016	movq	%rax,%r11
1017	shlq	$17,%rax
1018	movq	%rbx,%r9
1019	shrq	$47,%r9
1020	shrq	$47,%r11
1021	orq	%r9,%rax
1022	shlq	$17,%rbx
1023	orq	%r11,%rbx
1024	movq	%rax,48(%r13)
1025	movq	%rbx,56(%r13)
1026	movq	%r14,%r11
1027	shlq	$32,%r14
1028	movq	%r15,%r9
1029	shrq	$32,%r9
1030	shrq	$32,%r11
1031	orq	%r9,%r14
1032	shlq	$32,%r15
1033	orq	%r11,%r15
1034	movq	%r14,64(%r13)
1035	movq	%r15,72(%r13)
1036	movq	%rcx,%r11
1037	shlq	$34,%rcx
1038	movq	%rdx,%r9
1039	shrq	$30,%r9
1040	shrq	$30,%r11
1041	orq	%r9,%rcx
1042	shlq	$34,%rdx
1043	orq	%r11,%rdx
1044	movq	%rcx,80(%r13)
1045	movq	%rdx,88(%r13)
1046	movq	%r14,%r11
1047	shlq	$17,%r14
1048	movq	%r15,%r9
1049	shrq	$47,%r9
1050	shrq	$47,%r11
1051	orq	%r9,%r14
1052	shlq	$17,%r15
1053	orq	%r11,%r15
1054	movq	%r14,96(%r13)
1055	movq	%r15,104(%r13)
1056	movq	%rax,%r11
1057	shlq	$34,%rax
1058	movq	%rbx,%r9
1059	shrq	$30,%r9
1060	shrq	$30,%r11
1061	orq	%r9,%rax
1062	shlq	$34,%rbx
1063	orq	%r11,%rbx
1064	movq	%rax,112(%r13)
1065	movq	%rbx,120(%r13)
1066	movq	%r8,%r11
1067	shlq	$51,%r8
1068	movq	%r10,%r9
1069	shrq	$13,%r9
1070	shrq	$13,%r11
1071	orq	%r9,%r8
1072	shlq	$51,%r10
1073	orq	%r11,%r10
1074	movq	%r8,128(%r13)
1075	movq	%r10,136(%r13)
1076	movl	$4,%eax
1077.Ldone:
1078	movq	0(%rsp),%r15
1079	movq	8(%rsp),%r14
1080	movq	16(%rsp),%r13
1081	movq	24(%rsp),%rbp
1082	movq	32(%rsp),%rbx
1083	leaq	40(%rsp),%rsp
1084.Lkey_epilogue:
1085	.byte	0xf3,0xc3
1086.size	Camellia_Ekeygen,.-Camellia_Ekeygen
1087.align	64
1088.LCamellia_SIGMA:
1089.long	0x3bcc908b, 0xa09e667f, 0x4caa73b2, 0xb67ae858
1090.long	0xe94f82be, 0xc6ef372f, 0xf1d36f1c, 0x54ff53a5
1091.long	0xde682d1d, 0x10e527fa, 0xb3e6c1fd, 0xb05688c2
1092.long	0,          0,          0,          0
1093.LCamellia_SBOX:
1094.long	0x70707000,0x70700070
1095.long	0x82828200,0x2c2c002c
1096.long	0x2c2c2c00,0xb3b300b3
1097.long	0xececec00,0xc0c000c0
1098.long	0xb3b3b300,0xe4e400e4
1099.long	0x27272700,0x57570057
1100.long	0xc0c0c000,0xeaea00ea
1101.long	0xe5e5e500,0xaeae00ae
1102.long	0xe4e4e400,0x23230023
1103.long	0x85858500,0x6b6b006b
1104.long	0x57575700,0x45450045
1105.long	0x35353500,0xa5a500a5
1106.long	0xeaeaea00,0xeded00ed
1107.long	0x0c0c0c00,0x4f4f004f
1108.long	0xaeaeae00,0x1d1d001d
1109.long	0x41414100,0x92920092
1110.long	0x23232300,0x86860086
1111.long	0xefefef00,0xafaf00af
1112.long	0x6b6b6b00,0x7c7c007c
1113.long	0x93939300,0x1f1f001f
1114.long	0x45454500,0x3e3e003e
1115.long	0x19191900,0xdcdc00dc
1116.long	0xa5a5a500,0x5e5e005e
1117.long	0x21212100,0x0b0b000b
1118.long	0xededed00,0xa6a600a6
1119.long	0x0e0e0e00,0x39390039
1120.long	0x4f4f4f00,0xd5d500d5
1121.long	0x4e4e4e00,0x5d5d005d
1122.long	0x1d1d1d00,0xd9d900d9
1123.long	0x65656500,0x5a5a005a
1124.long	0x92929200,0x51510051
1125.long	0xbdbdbd00,0x6c6c006c
1126.long	0x86868600,0x8b8b008b
1127.long	0xb8b8b800,0x9a9a009a
1128.long	0xafafaf00,0xfbfb00fb
1129.long	0x8f8f8f00,0xb0b000b0
1130.long	0x7c7c7c00,0x74740074
1131.long	0xebebeb00,0x2b2b002b
1132.long	0x1f1f1f00,0xf0f000f0
1133.long	0xcecece00,0x84840084
1134.long	0x3e3e3e00,0xdfdf00df
1135.long	0x30303000,0xcbcb00cb
1136.long	0xdcdcdc00,0x34340034
1137.long	0x5f5f5f00,0x76760076
1138.long	0x5e5e5e00,0x6d6d006d
1139.long	0xc5c5c500,0xa9a900a9
1140.long	0x0b0b0b00,0xd1d100d1
1141.long	0x1a1a1a00,0x04040004
1142.long	0xa6a6a600,0x14140014
1143.long	0xe1e1e100,0x3a3a003a
1144.long	0x39393900,0xdede00de
1145.long	0xcacaca00,0x11110011
1146.long	0xd5d5d500,0x32320032
1147.long	0x47474700,0x9c9c009c
1148.long	0x5d5d5d00,0x53530053
1149.long	0x3d3d3d00,0xf2f200f2
1150.long	0xd9d9d900,0xfefe00fe
1151.long	0x01010100,0xcfcf00cf
1152.long	0x5a5a5a00,0xc3c300c3
1153.long	0xd6d6d600,0x7a7a007a
1154.long	0x51515100,0x24240024
1155.long	0x56565600,0xe8e800e8
1156.long	0x6c6c6c00,0x60600060
1157.long	0x4d4d4d00,0x69690069
1158.long	0x8b8b8b00,0xaaaa00aa
1159.long	0x0d0d0d00,0xa0a000a0
1160.long	0x9a9a9a00,0xa1a100a1
1161.long	0x66666600,0x62620062
1162.long	0xfbfbfb00,0x54540054
1163.long	0xcccccc00,0x1e1e001e
1164.long	0xb0b0b000,0xe0e000e0
1165.long	0x2d2d2d00,0x64640064
1166.long	0x74747400,0x10100010
1167.long	0x12121200,0x00000000
1168.long	0x2b2b2b00,0xa3a300a3
1169.long	0x20202000,0x75750075
1170.long	0xf0f0f000,0x8a8a008a
1171.long	0xb1b1b100,0xe6e600e6
1172.long	0x84848400,0x09090009
1173.long	0x99999900,0xdddd00dd
1174.long	0xdfdfdf00,0x87870087
1175.long	0x4c4c4c00,0x83830083
1176.long	0xcbcbcb00,0xcdcd00cd
1177.long	0xc2c2c200,0x90900090
1178.long	0x34343400,0x73730073
1179.long	0x7e7e7e00,0xf6f600f6
1180.long	0x76767600,0x9d9d009d
1181.long	0x05050500,0xbfbf00bf
1182.long	0x6d6d6d00,0x52520052
1183.long	0xb7b7b700,0xd8d800d8
1184.long	0xa9a9a900,0xc8c800c8
1185.long	0x31313100,0xc6c600c6
1186.long	0xd1d1d100,0x81810081
1187.long	0x17171700,0x6f6f006f
1188.long	0x04040400,0x13130013
1189.long	0xd7d7d700,0x63630063
1190.long	0x14141400,0xe9e900e9
1191.long	0x58585800,0xa7a700a7
1192.long	0x3a3a3a00,0x9f9f009f
1193.long	0x61616100,0xbcbc00bc
1194.long	0xdedede00,0x29290029
1195.long	0x1b1b1b00,0xf9f900f9
1196.long	0x11111100,0x2f2f002f
1197.long	0x1c1c1c00,0xb4b400b4
1198.long	0x32323200,0x78780078
1199.long	0x0f0f0f00,0x06060006
1200.long	0x9c9c9c00,0xe7e700e7
1201.long	0x16161600,0x71710071
1202.long	0x53535300,0xd4d400d4
1203.long	0x18181800,0xabab00ab
1204.long	0xf2f2f200,0x88880088
1205.long	0x22222200,0x8d8d008d
1206.long	0xfefefe00,0x72720072
1207.long	0x44444400,0xb9b900b9
1208.long	0xcfcfcf00,0xf8f800f8
1209.long	0xb2b2b200,0xacac00ac
1210.long	0xc3c3c300,0x36360036
1211.long	0xb5b5b500,0x2a2a002a
1212.long	0x7a7a7a00,0x3c3c003c
1213.long	0x91919100,0xf1f100f1
1214.long	0x24242400,0x40400040
1215.long	0x08080800,0xd3d300d3
1216.long	0xe8e8e800,0xbbbb00bb
1217.long	0xa8a8a800,0x43430043
1218.long	0x60606000,0x15150015
1219.long	0xfcfcfc00,0xadad00ad
1220.long	0x69696900,0x77770077
1221.long	0x50505000,0x80800080
1222.long	0xaaaaaa00,0x82820082
1223.long	0xd0d0d000,0xecec00ec
1224.long	0xa0a0a000,0x27270027
1225.long	0x7d7d7d00,0xe5e500e5
1226.long	0xa1a1a100,0x85850085
1227.long	0x89898900,0x35350035
1228.long	0x62626200,0x0c0c000c
1229.long	0x97979700,0x41410041
1230.long	0x54545400,0xefef00ef
1231.long	0x5b5b5b00,0x93930093
1232.long	0x1e1e1e00,0x19190019
1233.long	0x95959500,0x21210021
1234.long	0xe0e0e000,0x0e0e000e
1235.long	0xffffff00,0x4e4e004e
1236.long	0x64646400,0x65650065
1237.long	0xd2d2d200,0xbdbd00bd
1238.long	0x10101000,0xb8b800b8
1239.long	0xc4c4c400,0x8f8f008f
1240.long	0x00000000,0xebeb00eb
1241.long	0x48484800,0xcece00ce
1242.long	0xa3a3a300,0x30300030
1243.long	0xf7f7f700,0x5f5f005f
1244.long	0x75757500,0xc5c500c5
1245.long	0xdbdbdb00,0x1a1a001a
1246.long	0x8a8a8a00,0xe1e100e1
1247.long	0x03030300,0xcaca00ca
1248.long	0xe6e6e600,0x47470047
1249.long	0xdadada00,0x3d3d003d
1250.long	0x09090900,0x01010001
1251.long	0x3f3f3f00,0xd6d600d6
1252.long	0xdddddd00,0x56560056
1253.long	0x94949400,0x4d4d004d
1254.long	0x87878700,0x0d0d000d
1255.long	0x5c5c5c00,0x66660066
1256.long	0x83838300,0xcccc00cc
1257.long	0x02020200,0x2d2d002d
1258.long	0xcdcdcd00,0x12120012
1259.long	0x4a4a4a00,0x20200020
1260.long	0x90909000,0xb1b100b1
1261.long	0x33333300,0x99990099
1262.long	0x73737300,0x4c4c004c
1263.long	0x67676700,0xc2c200c2
1264.long	0xf6f6f600,0x7e7e007e
1265.long	0xf3f3f300,0x05050005
1266.long	0x9d9d9d00,0xb7b700b7
1267.long	0x7f7f7f00,0x31310031
1268.long	0xbfbfbf00,0x17170017
1269.long	0xe2e2e200,0xd7d700d7
1270.long	0x52525200,0x58580058
1271.long	0x9b9b9b00,0x61610061
1272.long	0xd8d8d800,0x1b1b001b
1273.long	0x26262600,0x1c1c001c
1274.long	0xc8c8c800,0x0f0f000f
1275.long	0x37373700,0x16160016
1276.long	0xc6c6c600,0x18180018
1277.long	0x3b3b3b00,0x22220022
1278.long	0x81818100,0x44440044
1279.long	0x96969600,0xb2b200b2
1280.long	0x6f6f6f00,0xb5b500b5
1281.long	0x4b4b4b00,0x91910091
1282.long	0x13131300,0x08080008
1283.long	0xbebebe00,0xa8a800a8
1284.long	0x63636300,0xfcfc00fc
1285.long	0x2e2e2e00,0x50500050
1286.long	0xe9e9e900,0xd0d000d0
1287.long	0x79797900,0x7d7d007d
1288.long	0xa7a7a700,0x89890089
1289.long	0x8c8c8c00,0x97970097
1290.long	0x9f9f9f00,0x5b5b005b
1291.long	0x6e6e6e00,0x95950095
1292.long	0xbcbcbc00,0xffff00ff
1293.long	0x8e8e8e00,0xd2d200d2
1294.long	0x29292900,0xc4c400c4
1295.long	0xf5f5f500,0x48480048
1296.long	0xf9f9f900,0xf7f700f7
1297.long	0xb6b6b600,0xdbdb00db
1298.long	0x2f2f2f00,0x03030003
1299.long	0xfdfdfd00,0xdada00da
1300.long	0xb4b4b400,0x3f3f003f
1301.long	0x59595900,0x94940094
1302.long	0x78787800,0x5c5c005c
1303.long	0x98989800,0x02020002
1304.long	0x06060600,0x4a4a004a
1305.long	0x6a6a6a00,0x33330033
1306.long	0xe7e7e700,0x67670067
1307.long	0x46464600,0xf3f300f3
1308.long	0x71717100,0x7f7f007f
1309.long	0xbababa00,0xe2e200e2
1310.long	0xd4d4d400,0x9b9b009b
1311.long	0x25252500,0x26260026
1312.long	0xababab00,0x37370037
1313.long	0x42424200,0x3b3b003b
1314.long	0x88888800,0x96960096
1315.long	0xa2a2a200,0x4b4b004b
1316.long	0x8d8d8d00,0xbebe00be
1317.long	0xfafafa00,0x2e2e002e
1318.long	0x72727200,0x79790079
1319.long	0x07070700,0x8c8c008c
1320.long	0xb9b9b900,0x6e6e006e
1321.long	0x55555500,0x8e8e008e
1322.long	0xf8f8f800,0xf5f500f5
1323.long	0xeeeeee00,0xb6b600b6
1324.long	0xacacac00,0xfdfd00fd
1325.long	0x0a0a0a00,0x59590059
1326.long	0x36363600,0x98980098
1327.long	0x49494900,0x6a6a006a
1328.long	0x2a2a2a00,0x46460046
1329.long	0x68686800,0xbaba00ba
1330.long	0x3c3c3c00,0x25250025
1331.long	0x38383800,0x42420042
1332.long	0xf1f1f100,0xa2a200a2
1333.long	0xa4a4a400,0xfafa00fa
1334.long	0x40404000,0x07070007
1335.long	0x28282800,0x55550055
1336.long	0xd3d3d300,0xeeee00ee
1337.long	0x7b7b7b00,0x0a0a000a
1338.long	0xbbbbbb00,0x49490049
1339.long	0xc9c9c900,0x68680068
1340.long	0x43434300,0x38380038
1341.long	0xc1c1c100,0xa4a400a4
1342.long	0x15151500,0x28280028
1343.long	0xe3e3e300,0x7b7b007b
1344.long	0xadadad00,0xc9c900c9
1345.long	0xf4f4f400,0xc1c100c1
1346.long	0x77777700,0xe3e300e3
1347.long	0xc7c7c700,0xf4f400f4
1348.long	0x80808000,0xc7c700c7
1349.long	0x9e9e9e00,0x9e9e009e
1350.long	0x00e0e0e0,0x38003838
1351.long	0x00050505,0x41004141
1352.long	0x00585858,0x16001616
1353.long	0x00d9d9d9,0x76007676
1354.long	0x00676767,0xd900d9d9
1355.long	0x004e4e4e,0x93009393
1356.long	0x00818181,0x60006060
1357.long	0x00cbcbcb,0xf200f2f2
1358.long	0x00c9c9c9,0x72007272
1359.long	0x000b0b0b,0xc200c2c2
1360.long	0x00aeaeae,0xab00abab
1361.long	0x006a6a6a,0x9a009a9a
1362.long	0x00d5d5d5,0x75007575
1363.long	0x00181818,0x06000606
1364.long	0x005d5d5d,0x57005757
1365.long	0x00828282,0xa000a0a0
1366.long	0x00464646,0x91009191
1367.long	0x00dfdfdf,0xf700f7f7
1368.long	0x00d6d6d6,0xb500b5b5
1369.long	0x00272727,0xc900c9c9
1370.long	0x008a8a8a,0xa200a2a2
1371.long	0x00323232,0x8c008c8c
1372.long	0x004b4b4b,0xd200d2d2
1373.long	0x00424242,0x90009090
1374.long	0x00dbdbdb,0xf600f6f6
1375.long	0x001c1c1c,0x07000707
1376.long	0x009e9e9e,0xa700a7a7
1377.long	0x009c9c9c,0x27002727
1378.long	0x003a3a3a,0x8e008e8e
1379.long	0x00cacaca,0xb200b2b2
1380.long	0x00252525,0x49004949
1381.long	0x007b7b7b,0xde00dede
1382.long	0x000d0d0d,0x43004343
1383.long	0x00717171,0x5c005c5c
1384.long	0x005f5f5f,0xd700d7d7
1385.long	0x001f1f1f,0xc700c7c7
1386.long	0x00f8f8f8,0x3e003e3e
1387.long	0x00d7d7d7,0xf500f5f5
1388.long	0x003e3e3e,0x8f008f8f
1389.long	0x009d9d9d,0x67006767
1390.long	0x007c7c7c,0x1f001f1f
1391.long	0x00606060,0x18001818
1392.long	0x00b9b9b9,0x6e006e6e
1393.long	0x00bebebe,0xaf00afaf
1394.long	0x00bcbcbc,0x2f002f2f
1395.long	0x008b8b8b,0xe200e2e2
1396.long	0x00161616,0x85008585
1397.long	0x00343434,0x0d000d0d
1398.long	0x004d4d4d,0x53005353
1399.long	0x00c3c3c3,0xf000f0f0
1400.long	0x00727272,0x9c009c9c
1401.long	0x00959595,0x65006565
1402.long	0x00ababab,0xea00eaea
1403.long	0x008e8e8e,0xa300a3a3
1404.long	0x00bababa,0xae00aeae
1405.long	0x007a7a7a,0x9e009e9e
1406.long	0x00b3b3b3,0xec00ecec
1407.long	0x00020202,0x80008080
1408.long	0x00b4b4b4,0x2d002d2d
1409.long	0x00adadad,0x6b006b6b
1410.long	0x00a2a2a2,0xa800a8a8
1411.long	0x00acacac,0x2b002b2b
1412.long	0x00d8d8d8,0x36003636
1413.long	0x009a9a9a,0xa600a6a6
1414.long	0x00171717,0xc500c5c5
1415.long	0x001a1a1a,0x86008686
1416.long	0x00353535,0x4d004d4d
1417.long	0x00cccccc,0x33003333
1418.long	0x00f7f7f7,0xfd00fdfd
1419.long	0x00999999,0x66006666
1420.long	0x00616161,0x58005858
1421.long	0x005a5a5a,0x96009696
1422.long	0x00e8e8e8,0x3a003a3a
1423.long	0x00242424,0x09000909
1424.long	0x00565656,0x95009595
1425.long	0x00404040,0x10001010
1426.long	0x00e1e1e1,0x78007878
1427.long	0x00636363,0xd800d8d8
1428.long	0x00090909,0x42004242
1429.long	0x00333333,0xcc00cccc
1430.long	0x00bfbfbf,0xef00efef
1431.long	0x00989898,0x26002626
1432.long	0x00979797,0xe500e5e5
1433.long	0x00858585,0x61006161
1434.long	0x00686868,0x1a001a1a
1435.long	0x00fcfcfc,0x3f003f3f
1436.long	0x00ececec,0x3b003b3b
1437.long	0x000a0a0a,0x82008282
1438.long	0x00dadada,0xb600b6b6
1439.long	0x006f6f6f,0xdb00dbdb
1440.long	0x00535353,0xd400d4d4
1441.long	0x00626262,0x98009898
1442.long	0x00a3a3a3,0xe800e8e8
1443.long	0x002e2e2e,0x8b008b8b
1444.long	0x00080808,0x02000202
1445.long	0x00afafaf,0xeb00ebeb
1446.long	0x00282828,0x0a000a0a
1447.long	0x00b0b0b0,0x2c002c2c
1448.long	0x00747474,0x1d001d1d
1449.long	0x00c2c2c2,0xb000b0b0
1450.long	0x00bdbdbd,0x6f006f6f
1451.long	0x00363636,0x8d008d8d
1452.long	0x00222222,0x88008888
1453.long	0x00383838,0x0e000e0e
1454.long	0x00646464,0x19001919
1455.long	0x001e1e1e,0x87008787
1456.long	0x00393939,0x4e004e4e
1457.long	0x002c2c2c,0x0b000b0b
1458.long	0x00a6a6a6,0xa900a9a9
1459.long	0x00303030,0x0c000c0c
1460.long	0x00e5e5e5,0x79007979
1461.long	0x00444444,0x11001111
1462.long	0x00fdfdfd,0x7f007f7f
1463.long	0x00888888,0x22002222
1464.long	0x009f9f9f,0xe700e7e7
1465.long	0x00656565,0x59005959
1466.long	0x00878787,0xe100e1e1
1467.long	0x006b6b6b,0xda00dada
1468.long	0x00f4f4f4,0x3d003d3d
1469.long	0x00232323,0xc800c8c8
1470.long	0x00484848,0x12001212
1471.long	0x00101010,0x04000404
1472.long	0x00d1d1d1,0x74007474
1473.long	0x00515151,0x54005454
1474.long	0x00c0c0c0,0x30003030
1475.long	0x00f9f9f9,0x7e007e7e
1476.long	0x00d2d2d2,0xb400b4b4
1477.long	0x00a0a0a0,0x28002828
1478.long	0x00555555,0x55005555
1479.long	0x00a1a1a1,0x68006868
1480.long	0x00414141,0x50005050
1481.long	0x00fafafa,0xbe00bebe
1482.long	0x00434343,0xd000d0d0
1483.long	0x00131313,0xc400c4c4
1484.long	0x00c4c4c4,0x31003131
1485.long	0x002f2f2f,0xcb00cbcb
1486.long	0x00a8a8a8,0x2a002a2a
1487.long	0x00b6b6b6,0xad00adad
1488.long	0x003c3c3c,0x0f000f0f
1489.long	0x002b2b2b,0xca00caca
1490.long	0x00c1c1c1,0x70007070
1491.long	0x00ffffff,0xff00ffff
1492.long	0x00c8c8c8,0x32003232
1493.long	0x00a5a5a5,0x69006969
1494.long	0x00202020,0x08000808
1495.long	0x00898989,0x62006262
1496.long	0x00000000,0x00000000
1497.long	0x00909090,0x24002424
1498.long	0x00474747,0xd100d1d1
1499.long	0x00efefef,0xfb00fbfb
1500.long	0x00eaeaea,0xba00baba
1501.long	0x00b7b7b7,0xed00eded
1502.long	0x00151515,0x45004545
1503.long	0x00060606,0x81008181
1504.long	0x00cdcdcd,0x73007373
1505.long	0x00b5b5b5,0x6d006d6d
1506.long	0x00121212,0x84008484
1507.long	0x007e7e7e,0x9f009f9f
1508.long	0x00bbbbbb,0xee00eeee
1509.long	0x00292929,0x4a004a4a
1510.long	0x000f0f0f,0xc300c3c3
1511.long	0x00b8b8b8,0x2e002e2e
1512.long	0x00070707,0xc100c1c1
1513.long	0x00040404,0x01000101
1514.long	0x009b9b9b,0xe600e6e6
1515.long	0x00949494,0x25002525
1516.long	0x00212121,0x48004848
1517.long	0x00666666,0x99009999
1518.long	0x00e6e6e6,0xb900b9b9
1519.long	0x00cecece,0xb300b3b3
1520.long	0x00ededed,0x7b007b7b
1521.long	0x00e7e7e7,0xf900f9f9
1522.long	0x003b3b3b,0xce00cece
1523.long	0x00fefefe,0xbf00bfbf
1524.long	0x007f7f7f,0xdf00dfdf
1525.long	0x00c5c5c5,0x71007171
1526.long	0x00a4a4a4,0x29002929
1527.long	0x00373737,0xcd00cdcd
1528.long	0x00b1b1b1,0x6c006c6c
1529.long	0x004c4c4c,0x13001313
1530.long	0x00919191,0x64006464
1531.long	0x006e6e6e,0x9b009b9b
1532.long	0x008d8d8d,0x63006363
1533.long	0x00767676,0x9d009d9d
1534.long	0x00030303,0xc000c0c0
1535.long	0x002d2d2d,0x4b004b4b
1536.long	0x00dedede,0xb700b7b7
1537.long	0x00969696,0xa500a5a5
1538.long	0x00262626,0x89008989
1539.long	0x007d7d7d,0x5f005f5f
1540.long	0x00c6c6c6,0xb100b1b1
1541.long	0x005c5c5c,0x17001717
1542.long	0x00d3d3d3,0xf400f4f4
1543.long	0x00f2f2f2,0xbc00bcbc
1544.long	0x004f4f4f,0xd300d3d3
1545.long	0x00191919,0x46004646
1546.long	0x003f3f3f,0xcf00cfcf
1547.long	0x00dcdcdc,0x37003737
1548.long	0x00797979,0x5e005e5e
1549.long	0x001d1d1d,0x47004747
1550.long	0x00525252,0x94009494
1551.long	0x00ebebeb,0xfa00fafa
1552.long	0x00f3f3f3,0xfc00fcfc
1553.long	0x006d6d6d,0x5b005b5b
1554.long	0x005e5e5e,0x97009797
1555.long	0x00fbfbfb,0xfe00fefe
1556.long	0x00696969,0x5a005a5a
1557.long	0x00b2b2b2,0xac00acac
1558.long	0x00f0f0f0,0x3c003c3c
1559.long	0x00313131,0x4c004c4c
1560.long	0x000c0c0c,0x03000303
1561.long	0x00d4d4d4,0x35003535
1562.long	0x00cfcfcf,0xf300f3f3
1563.long	0x008c8c8c,0x23002323
1564.long	0x00e2e2e2,0xb800b8b8
1565.long	0x00757575,0x5d005d5d
1566.long	0x00a9a9a9,0x6a006a6a
1567.long	0x004a4a4a,0x92009292
1568.long	0x00575757,0xd500d5d5
1569.long	0x00848484,0x21002121
1570.long	0x00111111,0x44004444
1571.long	0x00454545,0x51005151
1572.long	0x001b1b1b,0xc600c6c6
1573.long	0x00f5f5f5,0x7d007d7d
1574.long	0x00e4e4e4,0x39003939
1575.long	0x000e0e0e,0x83008383
1576.long	0x00737373,0xdc00dcdc
1577.long	0x00aaaaaa,0xaa00aaaa
1578.long	0x00f1f1f1,0x7c007c7c
1579.long	0x00dddddd,0x77007777
1580.long	0x00595959,0x56005656
1581.long	0x00141414,0x05000505
1582.long	0x006c6c6c,0x1b001b1b
1583.long	0x00929292,0xa400a4a4
1584.long	0x00545454,0x15001515
1585.long	0x00d0d0d0,0x34003434
1586.long	0x00787878,0x1e001e1e
1587.long	0x00707070,0x1c001c1c
1588.long	0x00e3e3e3,0xf800f8f8
1589.long	0x00494949,0x52005252
1590.long	0x00808080,0x20002020
1591.long	0x00505050,0x14001414
1592.long	0x00a7a7a7,0xe900e9e9
1593.long	0x00f6f6f6,0xbd00bdbd
1594.long	0x00777777,0xdd00dddd
1595.long	0x00939393,0xe400e4e4
1596.long	0x00868686,0xa100a1a1
1597.long	0x00838383,0xe000e0e0
1598.long	0x002a2a2a,0x8a008a8a
1599.long	0x00c7c7c7,0xf100f1f1
1600.long	0x005b5b5b,0xd600d6d6
1601.long	0x00e9e9e9,0x7a007a7a
1602.long	0x00eeeeee,0xbb00bbbb
1603.long	0x008f8f8f,0xe300e3e3
1604.long	0x00010101,0x40004040
1605.long	0x003d3d3d,0x4f004f4f
1606.globl	Camellia_cbc_encrypt
1607.type	Camellia_cbc_encrypt,@function
1608.align	16
1609Camellia_cbc_encrypt:
1610	cmpq	$0,%rdx
1611	je	.Lcbc_abort
1612	pushq	%rbx
1613	pushq	%rbp
1614	pushq	%r12
1615	pushq	%r13
1616	pushq	%r14
1617	pushq	%r15
1618.Lcbc_prologue:
1619
1620	movq	%rsp,%rbp
1621	subq	$64,%rsp
1622	andq	$-64,%rsp
1623
1624
1625
1626	leaq	-64-63(%rcx),%r10
1627	subq	%rsp,%r10
1628	negq	%r10
1629	andq	$0x3C0,%r10
1630	subq	%r10,%rsp
1631
1632
1633	movq	%rdi,%r12
1634	movq	%rsi,%r13
1635	movq	%r8,%rbx
1636	movq	%rcx,%r14
1637	movl	272(%rcx),%r15d
1638
1639	movq	%r8,40(%rsp)
1640	movq	%rbp,48(%rsp)
1641
1642.Lcbc_body:
1643	leaq	.LCamellia_SBOX(%rip),%rbp
1644
1645	movl	$32,%ecx
1646.align	4
1647.Lcbc_prefetch_sbox:
1648	movq	0(%rbp),%rax
1649	movq	32(%rbp),%rsi
1650	movq	64(%rbp),%rdi
1651	movq	96(%rbp),%r11
1652	leaq	128(%rbp),%rbp
1653	loop	.Lcbc_prefetch_sbox
1654	subq	$4096,%rbp
1655	shlq	$6,%r15
1656	movq	%rdx,%rcx
1657	leaq	(%r14,%r15,1),%r15
1658
1659	cmpl	$0,%r9d
1660	je	.LCBC_DECRYPT
1661
1662	andq	$-16,%rdx
1663	andq	$15,%rcx
1664	leaq	(%r12,%rdx,1),%rdx
1665	movq	%r14,0(%rsp)
1666	movq	%rdx,8(%rsp)
1667	movq	%rcx,16(%rsp)
1668
1669	cmpq	%r12,%rdx
1670	movl	0(%rbx),%r8d
1671	movl	4(%rbx),%r9d
1672	movl	8(%rbx),%r10d
1673	movl	12(%rbx),%r11d
1674	je	.Lcbc_enc_tail
1675	jmp	.Lcbc_eloop
1676
1677.align	16
1678.Lcbc_eloop:
1679	xorl	0(%r12),%r8d
1680	xorl	4(%r12),%r9d
1681	xorl	8(%r12),%r10d
1682	bswapl	%r8d
1683	xorl	12(%r12),%r11d
1684	bswapl	%r9d
1685	bswapl	%r10d
1686	bswapl	%r11d
1687
1688	call	_x86_64_Camellia_encrypt
1689
1690	movq	0(%rsp),%r14
1691	bswapl	%r8d
1692	movq	8(%rsp),%rdx
1693	bswapl	%r9d
1694	movq	16(%rsp),%rcx
1695	bswapl	%r10d
1696	movl	%r8d,0(%r13)
1697	bswapl	%r11d
1698	movl	%r9d,4(%r13)
1699	movl	%r10d,8(%r13)
1700	leaq	16(%r12),%r12
1701	movl	%r11d,12(%r13)
1702	cmpq	%rdx,%r12
1703	leaq	16(%r13),%r13
1704	jne	.Lcbc_eloop
1705
1706	cmpq	$0,%rcx
1707	jne	.Lcbc_enc_tail
1708
1709	movq	40(%rsp),%r13
1710	movl	%r8d,0(%r13)
1711	movl	%r9d,4(%r13)
1712	movl	%r10d,8(%r13)
1713	movl	%r11d,12(%r13)
1714	jmp	.Lcbc_done
1715
1716.align	16
1717.Lcbc_enc_tail:
1718	xorq	%rax,%rax
1719	movq	%rax,0+24(%rsp)
1720	movq	%rax,8+24(%rsp)
1721	movq	%rax,16(%rsp)
1722
1723.Lcbc_enc_pushf:
1724	pushfq
1725	cld
1726	movq	%r12,%rsi
1727	leaq	8+24(%rsp),%rdi
1728.long	0x9066A4F3
1729	popfq
1730.Lcbc_enc_popf:
1731
1732	leaq	24(%rsp),%r12
1733	leaq	16+24(%rsp),%rax
1734	movq	%rax,8(%rsp)
1735	jmp	.Lcbc_eloop
1736
1737.align	16
1738.LCBC_DECRYPT:
1739	xchgq	%r14,%r15
1740	addq	$15,%rdx
1741	andq	$15,%rcx
1742	andq	$-16,%rdx
1743	movq	%r14,0(%rsp)
1744	leaq	(%r12,%rdx,1),%rdx
1745	movq	%rdx,8(%rsp)
1746	movq	%rcx,16(%rsp)
1747
1748	movq	(%rbx),%rax
1749	movq	8(%rbx),%rbx
1750	jmp	.Lcbc_dloop
1751.align	16
1752.Lcbc_dloop:
1753	movl	0(%r12),%r8d
1754	movl	4(%r12),%r9d
1755	movl	8(%r12),%r10d
1756	bswapl	%r8d
1757	movl	12(%r12),%r11d
1758	bswapl	%r9d
1759	movq	%rax,0+24(%rsp)
1760	bswapl	%r10d
1761	movq	%rbx,8+24(%rsp)
1762	bswapl	%r11d
1763
1764	call	_x86_64_Camellia_decrypt
1765
1766	movq	0(%rsp),%r14
1767	movq	8(%rsp),%rdx
1768	movq	16(%rsp),%rcx
1769
1770	bswapl	%r8d
1771	movq	(%r12),%rax
1772	bswapl	%r9d
1773	movq	8(%r12),%rbx
1774	bswapl	%r10d
1775	xorl	0+24(%rsp),%r8d
1776	bswapl	%r11d
1777	xorl	4+24(%rsp),%r9d
1778	xorl	8+24(%rsp),%r10d
1779	leaq	16(%r12),%r12
1780	xorl	12+24(%rsp),%r11d
1781	cmpq	%rdx,%r12
1782	je	.Lcbc_ddone
1783
1784	movl	%r8d,0(%r13)
1785	movl	%r9d,4(%r13)
1786	movl	%r10d,8(%r13)
1787	movl	%r11d,12(%r13)
1788
1789	leaq	16(%r13),%r13
1790	jmp	.Lcbc_dloop
1791
1792.align	16
1793.Lcbc_ddone:
1794	movq	40(%rsp),%rdx
1795	cmpq	$0,%rcx
1796	jne	.Lcbc_dec_tail
1797
1798	movl	%r8d,0(%r13)
1799	movl	%r9d,4(%r13)
1800	movl	%r10d,8(%r13)
1801	movl	%r11d,12(%r13)
1802
1803	movq	%rax,(%rdx)
1804	movq	%rbx,8(%rdx)
1805	jmp	.Lcbc_done
1806.align	16
1807.Lcbc_dec_tail:
1808	movl	%r8d,0+24(%rsp)
1809	movl	%r9d,4+24(%rsp)
1810	movl	%r10d,8+24(%rsp)
1811	movl	%r11d,12+24(%rsp)
1812
1813.Lcbc_dec_pushf:
1814	pushfq
1815	cld
1816	leaq	8+24(%rsp),%rsi
1817	leaq	(%r13),%rdi
1818.long	0x9066A4F3
1819	popfq
1820.Lcbc_dec_popf:
1821
1822	movq	%rax,(%rdx)
1823	movq	%rbx,8(%rdx)
1824	jmp	.Lcbc_done
1825
1826.align	16
1827.Lcbc_done:
1828	movq	48(%rsp),%rcx
1829	movq	0(%rcx),%r15
1830	movq	8(%rcx),%r14
1831	movq	16(%rcx),%r13
1832	movq	24(%rcx),%r12
1833	movq	32(%rcx),%rbp
1834	movq	40(%rcx),%rbx
1835	leaq	48(%rcx),%rsp
1836.Lcbc_abort:
1837	.byte	0xf3,0xc3
1838.size	Camellia_cbc_encrypt,.-Camellia_cbc_encrypt
1839
1840.byte	67,97,109,101,108,108,105,97,32,102,111,114,32,120,56,54,95,54,52,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
1841