172c33676SMaxim Ag#include "x86_arch.h"
272c33676SMaxim Ag.text
372c33676SMaxim Ag
472c33676SMaxim Ag
572c33676SMaxim Ag.globl	Camellia_EncryptBlock
672c33676SMaxim Ag.type	Camellia_EncryptBlock,@function
772c33676SMaxim Ag.align	16
872c33676SMaxim AgCamellia_EncryptBlock:
972c33676SMaxim Ag	movl	$128,%eax
1072c33676SMaxim Ag	subl	%edi,%eax
1172c33676SMaxim Ag	movl	$3,%edi
1272c33676SMaxim Ag	adcl	$0,%edi
1372c33676SMaxim Ag	jmp	.Lenc_rounds
1472c33676SMaxim Ag.size	Camellia_EncryptBlock,.-Camellia_EncryptBlock
1572c33676SMaxim Ag
1672c33676SMaxim Ag.globl	Camellia_EncryptBlock_Rounds
1772c33676SMaxim Ag.type	Camellia_EncryptBlock_Rounds,@function
1872c33676SMaxim Ag.align	16
1972c33676SMaxim Ag.Lenc_rounds:
2072c33676SMaxim AgCamellia_EncryptBlock_Rounds:
2172c33676SMaxim Ag	pushq	%rbx
2272c33676SMaxim Ag	pushq	%rbp
2372c33676SMaxim Ag	pushq	%r13
2472c33676SMaxim Ag	pushq	%r14
2572c33676SMaxim Ag	pushq	%r15
2672c33676SMaxim Ag.Lenc_prologue:
2772c33676SMaxim Ag
2872c33676SMaxim Ag
2972c33676SMaxim Ag	movq	%rcx,%r13
3072c33676SMaxim Ag	movq	%rdx,%r14
3172c33676SMaxim Ag
3272c33676SMaxim Ag	shll	$6,%edi
3372c33676SMaxim Ag	leaq	.LCamellia_SBOX(%rip),%rbp
3472c33676SMaxim Ag	leaq	(%r14,%rdi,1),%r15
3572c33676SMaxim Ag
3672c33676SMaxim Ag	movl	0(%rsi),%r8d
3772c33676SMaxim Ag	movl	4(%rsi),%r9d
3872c33676SMaxim Ag	movl	8(%rsi),%r10d
3972c33676SMaxim Ag	bswapl	%r8d
4072c33676SMaxim Ag	movl	12(%rsi),%r11d
4172c33676SMaxim Ag	bswapl	%r9d
4272c33676SMaxim Ag	bswapl	%r10d
4372c33676SMaxim Ag	bswapl	%r11d
4472c33676SMaxim Ag
4572c33676SMaxim Ag	call	_x86_64_Camellia_encrypt
4672c33676SMaxim Ag
4772c33676SMaxim Ag	bswapl	%r8d
4872c33676SMaxim Ag	bswapl	%r9d
4972c33676SMaxim Ag	bswapl	%r10d
5072c33676SMaxim Ag	movl	%r8d,0(%r13)
5172c33676SMaxim Ag	bswapl	%r11d
5272c33676SMaxim Ag	movl	%r9d,4(%r13)
5372c33676SMaxim Ag	movl	%r10d,8(%r13)
5472c33676SMaxim Ag	movl	%r11d,12(%r13)
5572c33676SMaxim Ag
5672c33676SMaxim Ag	movq	0(%rsp),%r15
5772c33676SMaxim Ag	movq	8(%rsp),%r14
5872c33676SMaxim Ag	movq	16(%rsp),%r13
5972c33676SMaxim Ag	movq	24(%rsp),%rbp
6072c33676SMaxim Ag	movq	32(%rsp),%rbx
6172c33676SMaxim Ag	leaq	40(%rsp),%rsp
6272c33676SMaxim Ag.Lenc_epilogue:
6372c33676SMaxim Ag	retq
6472c33676SMaxim Ag.size	Camellia_EncryptBlock_Rounds,.-Camellia_EncryptBlock_Rounds
6572c33676SMaxim Ag
6672c33676SMaxim Ag.type	_x86_64_Camellia_encrypt,@function
6772c33676SMaxim Ag.align	16
6872c33676SMaxim Ag_x86_64_Camellia_encrypt:
6972c33676SMaxim Ag	xorl	0(%r14),%r9d
7072c33676SMaxim Ag	xorl	4(%r14),%r8d
7172c33676SMaxim Ag	xorl	8(%r14),%r11d
7272c33676SMaxim Ag	xorl	12(%r14),%r10d
7372c33676SMaxim Ag.align	16
7472c33676SMaxim Ag.Leloop:
7572c33676SMaxim Ag	movl	16(%r14),%ebx
7672c33676SMaxim Ag	movl	20(%r14),%eax
7772c33676SMaxim Ag
7872c33676SMaxim Ag	xorl	%r8d,%eax
7972c33676SMaxim Ag	xorl	%r9d,%ebx
8072c33676SMaxim Ag	movzbl	%ah,%esi
8172c33676SMaxim Ag	movzbl	%bl,%edi
8272c33676SMaxim Ag	movl	2052(%rbp,%rsi,8),%edx
8372c33676SMaxim Ag	movl	0(%rbp,%rdi,8),%ecx
8472c33676SMaxim Ag	movzbl	%al,%esi
8572c33676SMaxim Ag	shrl	$16,%eax
8672c33676SMaxim Ag	movzbl	%bh,%edi
8772c33676SMaxim Ag	xorl	4(%rbp,%rsi,8),%edx
8872c33676SMaxim Ag	shrl	$16,%ebx
8972c33676SMaxim Ag	xorl	4(%rbp,%rdi,8),%ecx
9072c33676SMaxim Ag	movzbl	%ah,%esi
9172c33676SMaxim Ag	movzbl	%bl,%edi
9272c33676SMaxim Ag	xorl	0(%rbp,%rsi,8),%edx
9372c33676SMaxim Ag	xorl	2052(%rbp,%rdi,8),%ecx
9472c33676SMaxim Ag	movzbl	%al,%esi
9572c33676SMaxim Ag	movzbl	%bh,%edi
9672c33676SMaxim Ag	xorl	2048(%rbp,%rsi,8),%edx
9772c33676SMaxim Ag	xorl	2048(%rbp,%rdi,8),%ecx
9872c33676SMaxim Ag	movl	24(%r14),%ebx
9972c33676SMaxim Ag	movl	28(%r14),%eax
10072c33676SMaxim Ag	xorl	%edx,%ecx
10172c33676SMaxim Ag	rorl	$8,%edx
10272c33676SMaxim Ag	xorl	%ecx,%r10d
10372c33676SMaxim Ag	xorl	%ecx,%r11d
10472c33676SMaxim Ag	xorl	%edx,%r11d
10572c33676SMaxim Ag	xorl	%r10d,%eax
10672c33676SMaxim Ag	xorl	%r11d,%ebx
10772c33676SMaxim Ag	movzbl	%ah,%esi
10872c33676SMaxim Ag	movzbl	%bl,%edi
10972c33676SMaxim Ag	movl	2052(%rbp,%rsi,8),%edx
11072c33676SMaxim Ag	movl	0(%rbp,%rdi,8),%ecx
11172c33676SMaxim Ag	movzbl	%al,%esi
11272c33676SMaxim Ag	shrl	$16,%eax
11372c33676SMaxim Ag	movzbl	%bh,%edi
11472c33676SMaxim Ag	xorl	4(%rbp,%rsi,8),%edx
11572c33676SMaxim Ag	shrl	$16,%ebx
11672c33676SMaxim Ag	xorl	4(%rbp,%rdi,8),%ecx
11772c33676SMaxim Ag	movzbl	%ah,%esi
11872c33676SMaxim Ag	movzbl	%bl,%edi
11972c33676SMaxim Ag	xorl	0(%rbp,%rsi,8),%edx
12072c33676SMaxim Ag	xorl	2052(%rbp,%rdi,8),%ecx
12172c33676SMaxim Ag	movzbl	%al,%esi
12272c33676SMaxim Ag	movzbl	%bh,%edi
12372c33676SMaxim Ag	xorl	2048(%rbp,%rsi,8),%edx
12472c33676SMaxim Ag	xorl	2048(%rbp,%rdi,8),%ecx
12572c33676SMaxim Ag	movl	32(%r14),%ebx
12672c33676SMaxim Ag	movl	36(%r14),%eax
12772c33676SMaxim Ag	xorl	%edx,%ecx
12872c33676SMaxim Ag	rorl	$8,%edx
12972c33676SMaxim Ag	xorl	%ecx,%r8d
13072c33676SMaxim Ag	xorl	%ecx,%r9d
13172c33676SMaxim Ag	xorl	%edx,%r9d
13272c33676SMaxim Ag	xorl	%r8d,%eax
13372c33676SMaxim Ag	xorl	%r9d,%ebx
13472c33676SMaxim Ag	movzbl	%ah,%esi
13572c33676SMaxim Ag	movzbl	%bl,%edi
13672c33676SMaxim Ag	movl	2052(%rbp,%rsi,8),%edx
13772c33676SMaxim Ag	movl	0(%rbp,%rdi,8),%ecx
13872c33676SMaxim Ag	movzbl	%al,%esi
13972c33676SMaxim Ag	shrl	$16,%eax
14072c33676SMaxim Ag	movzbl	%bh,%edi
14172c33676SMaxim Ag	xorl	4(%rbp,%rsi,8),%edx
14272c33676SMaxim Ag	shrl	$16,%ebx
14372c33676SMaxim Ag	xorl	4(%rbp,%rdi,8),%ecx
14472c33676SMaxim Ag	movzbl	%ah,%esi
14572c33676SMaxim Ag	movzbl	%bl,%edi
14672c33676SMaxim Ag	xorl	0(%rbp,%rsi,8),%edx
14772c33676SMaxim Ag	xorl	2052(%rbp,%rdi,8),%ecx
14872c33676SMaxim Ag	movzbl	%al,%esi
14972c33676SMaxim Ag	movzbl	%bh,%edi
15072c33676SMaxim Ag	xorl	2048(%rbp,%rsi,8),%edx
15172c33676SMaxim Ag	xorl	2048(%rbp,%rdi,8),%ecx
15272c33676SMaxim Ag	movl	40(%r14),%ebx
15372c33676SMaxim Ag	movl	44(%r14),%eax
15472c33676SMaxim Ag	xorl	%edx,%ecx
15572c33676SMaxim Ag	rorl	$8,%edx
15672c33676SMaxim Ag	xorl	%ecx,%r10d
15772c33676SMaxim Ag	xorl	%ecx,%r11d
15872c33676SMaxim Ag	xorl	%edx,%r11d
15972c33676SMaxim Ag	xorl	%r10d,%eax
16072c33676SMaxim Ag	xorl	%r11d,%ebx
16172c33676SMaxim Ag	movzbl	%ah,%esi
16272c33676SMaxim Ag	movzbl	%bl,%edi
16372c33676SMaxim Ag	movl	2052(%rbp,%rsi,8),%edx
16472c33676SMaxim Ag	movl	0(%rbp,%rdi,8),%ecx
16572c33676SMaxim Ag	movzbl	%al,%esi
16672c33676SMaxim Ag	shrl	$16,%eax
16772c33676SMaxim Ag	movzbl	%bh,%edi
16872c33676SMaxim Ag	xorl	4(%rbp,%rsi,8),%edx
16972c33676SMaxim Ag	shrl	$16,%ebx
17072c33676SMaxim Ag	xorl	4(%rbp,%rdi,8),%ecx
17172c33676SMaxim Ag	movzbl	%ah,%esi
17272c33676SMaxim Ag	movzbl	%bl,%edi
17372c33676SMaxim Ag	xorl	0(%rbp,%rsi,8),%edx
17472c33676SMaxim Ag	xorl	2052(%rbp,%rdi,8),%ecx
17572c33676SMaxim Ag	movzbl	%al,%esi
17672c33676SMaxim Ag	movzbl	%bh,%edi
17772c33676SMaxim Ag	xorl	2048(%rbp,%rsi,8),%edx
17872c33676SMaxim Ag	xorl	2048(%rbp,%rdi,8),%ecx
17972c33676SMaxim Ag	movl	48(%r14),%ebx
18072c33676SMaxim Ag	movl	52(%r14),%eax
18172c33676SMaxim Ag	xorl	%edx,%ecx
18272c33676SMaxim Ag	rorl	$8,%edx
18372c33676SMaxim Ag	xorl	%ecx,%r8d
18472c33676SMaxim Ag	xorl	%ecx,%r9d
18572c33676SMaxim Ag	xorl	%edx,%r9d
18672c33676SMaxim Ag	xorl	%r8d,%eax
18772c33676SMaxim Ag	xorl	%r9d,%ebx
18872c33676SMaxim Ag	movzbl	%ah,%esi
18972c33676SMaxim Ag	movzbl	%bl,%edi
19072c33676SMaxim Ag	movl	2052(%rbp,%rsi,8),%edx
19172c33676SMaxim Ag	movl	0(%rbp,%rdi,8),%ecx
19272c33676SMaxim Ag	movzbl	%al,%esi
19372c33676SMaxim Ag	shrl	$16,%eax
19472c33676SMaxim Ag	movzbl	%bh,%edi
19572c33676SMaxim Ag	xorl	4(%rbp,%rsi,8),%edx
19672c33676SMaxim Ag	shrl	$16,%ebx
19772c33676SMaxim Ag	xorl	4(%rbp,%rdi,8),%ecx
19872c33676SMaxim Ag	movzbl	%ah,%esi
19972c33676SMaxim Ag	movzbl	%bl,%edi
20072c33676SMaxim Ag	xorl	0(%rbp,%rsi,8),%edx
20172c33676SMaxim Ag	xorl	2052(%rbp,%rdi,8),%ecx
20272c33676SMaxim Ag	movzbl	%al,%esi
20372c33676SMaxim Ag	movzbl	%bh,%edi
20472c33676SMaxim Ag	xorl	2048(%rbp,%rsi,8),%edx
20572c33676SMaxim Ag	xorl	2048(%rbp,%rdi,8),%ecx
20672c33676SMaxim Ag	movl	56(%r14),%ebx
20772c33676SMaxim Ag	movl	60(%r14),%eax
20872c33676SMaxim Ag	xorl	%edx,%ecx
20972c33676SMaxim Ag	rorl	$8,%edx
21072c33676SMaxim Ag	xorl	%ecx,%r10d
21172c33676SMaxim Ag	xorl	%ecx,%r11d
21272c33676SMaxim Ag	xorl	%edx,%r11d
21372c33676SMaxim Ag	xorl	%r10d,%eax
21472c33676SMaxim Ag	xorl	%r11d,%ebx
21572c33676SMaxim Ag	movzbl	%ah,%esi
21672c33676SMaxim Ag	movzbl	%bl,%edi
21772c33676SMaxim Ag	movl	2052(%rbp,%rsi,8),%edx
21872c33676SMaxim Ag	movl	0(%rbp,%rdi,8),%ecx
21972c33676SMaxim Ag	movzbl	%al,%esi
22072c33676SMaxim Ag	shrl	$16,%eax
22172c33676SMaxim Ag	movzbl	%bh,%edi
22272c33676SMaxim Ag	xorl	4(%rbp,%rsi,8),%edx
22372c33676SMaxim Ag	shrl	$16,%ebx
22472c33676SMaxim Ag	xorl	4(%rbp,%rdi,8),%ecx
22572c33676SMaxim Ag	movzbl	%ah,%esi
22672c33676SMaxim Ag	movzbl	%bl,%edi
22772c33676SMaxim Ag	xorl	0(%rbp,%rsi,8),%edx
22872c33676SMaxim Ag	xorl	2052(%rbp,%rdi,8),%ecx
22972c33676SMaxim Ag	movzbl	%al,%esi
23072c33676SMaxim Ag	movzbl	%bh,%edi
23172c33676SMaxim Ag	xorl	2048(%rbp,%rsi,8),%edx
23272c33676SMaxim Ag	xorl	2048(%rbp,%rdi,8),%ecx
23372c33676SMaxim Ag	movl	64(%r14),%ebx
23472c33676SMaxim Ag	movl	68(%r14),%eax
23572c33676SMaxim Ag	xorl	%edx,%ecx
23672c33676SMaxim Ag	rorl	$8,%edx
23772c33676SMaxim Ag	xorl	%ecx,%r8d
23872c33676SMaxim Ag	xorl	%ecx,%r9d
23972c33676SMaxim Ag	xorl	%edx,%r9d
24072c33676SMaxim Ag	leaq	64(%r14),%r14
24172c33676SMaxim Ag	cmpq	%r15,%r14
24272c33676SMaxim Ag	movl	8(%r14),%edx
24372c33676SMaxim Ag	movl	12(%r14),%ecx
24472c33676SMaxim Ag	je	.Ledone
24572c33676SMaxim Ag
24672c33676SMaxim Ag	andl	%r8d,%eax
24772c33676SMaxim Ag	orl	%r11d,%edx
24872c33676SMaxim Ag	roll	$1,%eax
24972c33676SMaxim Ag	xorl	%edx,%r10d
25072c33676SMaxim Ag	xorl	%eax,%r9d
25172c33676SMaxim Ag	andl	%r10d,%ecx
25272c33676SMaxim Ag	orl	%r9d,%ebx
25372c33676SMaxim Ag	roll	$1,%ecx
25472c33676SMaxim Ag	xorl	%ebx,%r8d
25572c33676SMaxim Ag	xorl	%ecx,%r11d
25672c33676SMaxim Ag	jmp	.Leloop
25772c33676SMaxim Ag
25872c33676SMaxim Ag.align	16
25972c33676SMaxim Ag.Ledone:
26072c33676SMaxim Ag	xorl	%r10d,%eax
26172c33676SMaxim Ag	xorl	%r11d,%ebx
26272c33676SMaxim Ag	xorl	%r8d,%ecx
26372c33676SMaxim Ag	xorl	%r9d,%edx
26472c33676SMaxim Ag
26572c33676SMaxim Ag	movl	%eax,%r8d
26672c33676SMaxim Ag	movl	%ebx,%r9d
26772c33676SMaxim Ag	movl	%ecx,%r10d
26872c33676SMaxim Ag	movl	%edx,%r11d
26972c33676SMaxim Ag
27072c33676SMaxim Ag	retq
27172c33676SMaxim Ag.size	_x86_64_Camellia_encrypt,.-_x86_64_Camellia_encrypt
27272c33676SMaxim Ag
27372c33676SMaxim Ag
27472c33676SMaxim Ag.globl	Camellia_DecryptBlock
27572c33676SMaxim Ag.type	Camellia_DecryptBlock,@function
27672c33676SMaxim Ag.align	16
27772c33676SMaxim AgCamellia_DecryptBlock:
27872c33676SMaxim Ag	movl	$128,%eax
27972c33676SMaxim Ag	subl	%edi,%eax
28072c33676SMaxim Ag	movl	$3,%edi
28172c33676SMaxim Ag	adcl	$0,%edi
28272c33676SMaxim Ag	jmp	.Ldec_rounds
28372c33676SMaxim Ag.size	Camellia_DecryptBlock,.-Camellia_DecryptBlock
28472c33676SMaxim Ag
28572c33676SMaxim Ag.globl	Camellia_DecryptBlock_Rounds
28672c33676SMaxim Ag.type	Camellia_DecryptBlock_Rounds,@function
28772c33676SMaxim Ag.align	16
28872c33676SMaxim Ag.Ldec_rounds:
28972c33676SMaxim AgCamellia_DecryptBlock_Rounds:
29072c33676SMaxim Ag	pushq	%rbx
29172c33676SMaxim Ag	pushq	%rbp
29272c33676SMaxim Ag	pushq	%r13
29372c33676SMaxim Ag	pushq	%r14
29472c33676SMaxim Ag	pushq	%r15
29572c33676SMaxim Ag.Ldec_prologue:
29672c33676SMaxim Ag
29772c33676SMaxim Ag
29872c33676SMaxim Ag	movq	%rcx,%r13
29972c33676SMaxim Ag	movq	%rdx,%r15
30072c33676SMaxim Ag
30172c33676SMaxim Ag	shll	$6,%edi
30272c33676SMaxim Ag	leaq	.LCamellia_SBOX(%rip),%rbp
30372c33676SMaxim Ag	leaq	(%r15,%rdi,1),%r14
30472c33676SMaxim Ag
30572c33676SMaxim Ag	movl	0(%rsi),%r8d
30672c33676SMaxim Ag	movl	4(%rsi),%r9d
30772c33676SMaxim Ag	movl	8(%rsi),%r10d
30872c33676SMaxim Ag	bswapl	%r8d
30972c33676SMaxim Ag	movl	12(%rsi),%r11d
31072c33676SMaxim Ag	bswapl	%r9d
31172c33676SMaxim Ag	bswapl	%r10d
31272c33676SMaxim Ag	bswapl	%r11d
31372c33676SMaxim Ag
31472c33676SMaxim Ag	call	_x86_64_Camellia_decrypt
31572c33676SMaxim Ag
31672c33676SMaxim Ag	bswapl	%r8d
31772c33676SMaxim Ag	bswapl	%r9d
31872c33676SMaxim Ag	bswapl	%r10d
31972c33676SMaxim Ag	movl	%r8d,0(%r13)
32072c33676SMaxim Ag	bswapl	%r11d
32172c33676SMaxim Ag	movl	%r9d,4(%r13)
32272c33676SMaxim Ag	movl	%r10d,8(%r13)
32372c33676SMaxim Ag	movl	%r11d,12(%r13)
32472c33676SMaxim Ag
32572c33676SMaxim Ag	movq	0(%rsp),%r15
32672c33676SMaxim Ag	movq	8(%rsp),%r14
32772c33676SMaxim Ag	movq	16(%rsp),%r13
32872c33676SMaxim Ag	movq	24(%rsp),%rbp
32972c33676SMaxim Ag	movq	32(%rsp),%rbx
33072c33676SMaxim Ag	leaq	40(%rsp),%rsp
33172c33676SMaxim Ag.Ldec_epilogue:
33272c33676SMaxim Ag	retq
33372c33676SMaxim Ag.size	Camellia_DecryptBlock_Rounds,.-Camellia_DecryptBlock_Rounds
33472c33676SMaxim Ag
33572c33676SMaxim Ag.type	_x86_64_Camellia_decrypt,@function
33672c33676SMaxim Ag.align	16
33772c33676SMaxim Ag_x86_64_Camellia_decrypt:
33872c33676SMaxim Ag	xorl	0(%r14),%r9d
33972c33676SMaxim Ag	xorl	4(%r14),%r8d
34072c33676SMaxim Ag	xorl	8(%r14),%r11d
34172c33676SMaxim Ag	xorl	12(%r14),%r10d
34272c33676SMaxim Ag.align	16
34372c33676SMaxim Ag.Ldloop:
34472c33676SMaxim Ag	movl	-8(%r14),%ebx
34572c33676SMaxim Ag	movl	-4(%r14),%eax
34672c33676SMaxim Ag
34772c33676SMaxim Ag	xorl	%r8d,%eax
34872c33676SMaxim Ag	xorl	%r9d,%ebx
34972c33676SMaxim Ag	movzbl	%ah,%esi
35072c33676SMaxim Ag	movzbl	%bl,%edi
35172c33676SMaxim Ag	movl	2052(%rbp,%rsi,8),%edx
35272c33676SMaxim Ag	movl	0(%rbp,%rdi,8),%ecx
35372c33676SMaxim Ag	movzbl	%al,%esi
35472c33676SMaxim Ag	shrl	$16,%eax
35572c33676SMaxim Ag	movzbl	%bh,%edi
35672c33676SMaxim Ag	xorl	4(%rbp,%rsi,8),%edx
35772c33676SMaxim Ag	shrl	$16,%ebx
35872c33676SMaxim Ag	xorl	4(%rbp,%rdi,8),%ecx
35972c33676SMaxim Ag	movzbl	%ah,%esi
36072c33676SMaxim Ag	movzbl	%bl,%edi
36172c33676SMaxim Ag	xorl	0(%rbp,%rsi,8),%edx
36272c33676SMaxim Ag	xorl	2052(%rbp,%rdi,8),%ecx
36372c33676SMaxim Ag	movzbl	%al,%esi
36472c33676SMaxim Ag	movzbl	%bh,%edi
36572c33676SMaxim Ag	xorl	2048(%rbp,%rsi,8),%edx
36672c33676SMaxim Ag	xorl	2048(%rbp,%rdi,8),%ecx
36772c33676SMaxim Ag	movl	-16(%r14),%ebx
36872c33676SMaxim Ag	movl	-12(%r14),%eax
36972c33676SMaxim Ag	xorl	%edx,%ecx
37072c33676SMaxim Ag	rorl	$8,%edx
37172c33676SMaxim Ag	xorl	%ecx,%r10d
37272c33676SMaxim Ag	xorl	%ecx,%r11d
37372c33676SMaxim Ag	xorl	%edx,%r11d
37472c33676SMaxim Ag	xorl	%r10d,%eax
37572c33676SMaxim Ag	xorl	%r11d,%ebx
37672c33676SMaxim Ag	movzbl	%ah,%esi
37772c33676SMaxim Ag	movzbl	%bl,%edi
37872c33676SMaxim Ag	movl	2052(%rbp,%rsi,8),%edx
37972c33676SMaxim Ag	movl	0(%rbp,%rdi,8),%ecx
38072c33676SMaxim Ag	movzbl	%al,%esi
38172c33676SMaxim Ag	shrl	$16,%eax
38272c33676SMaxim Ag	movzbl	%bh,%edi
38372c33676SMaxim Ag	xorl	4(%rbp,%rsi,8),%edx
38472c33676SMaxim Ag	shrl	$16,%ebx
38572c33676SMaxim Ag	xorl	4(%rbp,%rdi,8),%ecx
38672c33676SMaxim Ag	movzbl	%ah,%esi
38772c33676SMaxim Ag	movzbl	%bl,%edi
38872c33676SMaxim Ag	xorl	0(%rbp,%rsi,8),%edx
38972c33676SMaxim Ag	xorl	2052(%rbp,%rdi,8),%ecx
39072c33676SMaxim Ag	movzbl	%al,%esi
39172c33676SMaxim Ag	movzbl	%bh,%edi
39272c33676SMaxim Ag	xorl	2048(%rbp,%rsi,8),%edx
39372c33676SMaxim Ag	xorl	2048(%rbp,%rdi,8),%ecx
39472c33676SMaxim Ag	movl	-24(%r14),%ebx
39572c33676SMaxim Ag	movl	-20(%r14),%eax
39672c33676SMaxim Ag	xorl	%edx,%ecx
39772c33676SMaxim Ag	rorl	$8,%edx
39872c33676SMaxim Ag	xorl	%ecx,%r8d
39972c33676SMaxim Ag	xorl	%ecx,%r9d
40072c33676SMaxim Ag	xorl	%edx,%r9d
40172c33676SMaxim Ag	xorl	%r8d,%eax
40272c33676SMaxim Ag	xorl	%r9d,%ebx
40372c33676SMaxim Ag	movzbl	%ah,%esi
40472c33676SMaxim Ag	movzbl	%bl,%edi
40572c33676SMaxim Ag	movl	2052(%rbp,%rsi,8),%edx
40672c33676SMaxim Ag	movl	0(%rbp,%rdi,8),%ecx
40772c33676SMaxim Ag	movzbl	%al,%esi
40872c33676SMaxim Ag	shrl	$16,%eax
40972c33676SMaxim Ag	movzbl	%bh,%edi
41072c33676SMaxim Ag	xorl	4(%rbp,%rsi,8),%edx
41172c33676SMaxim Ag	shrl	$16,%ebx
41272c33676SMaxim Ag	xorl	4(%rbp,%rdi,8),%ecx
41372c33676SMaxim Ag	movzbl	%ah,%esi
41472c33676SMaxim Ag	movzbl	%bl,%edi
41572c33676SMaxim Ag	xorl	0(%rbp,%rsi,8),%edx
41672c33676SMaxim Ag	xorl	2052(%rbp,%rdi,8),%ecx
41772c33676SMaxim Ag	movzbl	%al,%esi
41872c33676SMaxim Ag	movzbl	%bh,%edi
41972c33676SMaxim Ag	xorl	2048(%rbp,%rsi,8),%edx
42072c33676SMaxim Ag	xorl	2048(%rbp,%rdi,8),%ecx
42172c33676SMaxim Ag	movl	-32(%r14),%ebx
42272c33676SMaxim Ag	movl	-28(%r14),%eax
42372c33676SMaxim Ag	xorl	%edx,%ecx
42472c33676SMaxim Ag	rorl	$8,%edx
42572c33676SMaxim Ag	xorl	%ecx,%r10d
42672c33676SMaxim Ag	xorl	%ecx,%r11d
42772c33676SMaxim Ag	xorl	%edx,%r11d
42872c33676SMaxim Ag	xorl	%r10d,%eax
42972c33676SMaxim Ag	xorl	%r11d,%ebx
43072c33676SMaxim Ag	movzbl	%ah,%esi
43172c33676SMaxim Ag	movzbl	%bl,%edi
43272c33676SMaxim Ag	movl	2052(%rbp,%rsi,8),%edx
43372c33676SMaxim Ag	movl	0(%rbp,%rdi,8),%ecx
43472c33676SMaxim Ag	movzbl	%al,%esi
43572c33676SMaxim Ag	shrl	$16,%eax
43672c33676SMaxim Ag	movzbl	%bh,%edi
43772c33676SMaxim Ag	xorl	4(%rbp,%rsi,8),%edx
43872c33676SMaxim Ag	shrl	$16,%ebx
43972c33676SMaxim Ag	xorl	4(%rbp,%rdi,8),%ecx
44072c33676SMaxim Ag	movzbl	%ah,%esi
44172c33676SMaxim Ag	movzbl	%bl,%edi
44272c33676SMaxim Ag	xorl	0(%rbp,%rsi,8),%edx
44372c33676SMaxim Ag	xorl	2052(%rbp,%rdi,8),%ecx
44472c33676SMaxim Ag	movzbl	%al,%esi
44572c33676SMaxim Ag	movzbl	%bh,%edi
44672c33676SMaxim Ag	xorl	2048(%rbp,%rsi,8),%edx
44772c33676SMaxim Ag	xorl	2048(%rbp,%rdi,8),%ecx
44872c33676SMaxim Ag	movl	-40(%r14),%ebx
44972c33676SMaxim Ag	movl	-36(%r14),%eax
45072c33676SMaxim Ag	xorl	%edx,%ecx
45172c33676SMaxim Ag	rorl	$8,%edx
45272c33676SMaxim Ag	xorl	%ecx,%r8d
45372c33676SMaxim Ag	xorl	%ecx,%r9d
45472c33676SMaxim Ag	xorl	%edx,%r9d
45572c33676SMaxim Ag	xorl	%r8d,%eax
45672c33676SMaxim Ag	xorl	%r9d,%ebx
45772c33676SMaxim Ag	movzbl	%ah,%esi
45872c33676SMaxim Ag	movzbl	%bl,%edi
45972c33676SMaxim Ag	movl	2052(%rbp,%rsi,8),%edx
46072c33676SMaxim Ag	movl	0(%rbp,%rdi,8),%ecx
46172c33676SMaxim Ag	movzbl	%al,%esi
46272c33676SMaxim Ag	shrl	$16,%eax
46372c33676SMaxim Ag	movzbl	%bh,%edi
46472c33676SMaxim Ag	xorl	4(%rbp,%rsi,8),%edx
46572c33676SMaxim Ag	shrl	$16,%ebx
46672c33676SMaxim Ag	xorl	4(%rbp,%rdi,8),%ecx
46772c33676SMaxim Ag	movzbl	%ah,%esi
46872c33676SMaxim Ag	movzbl	%bl,%edi
46972c33676SMaxim Ag	xorl	0(%rbp,%rsi,8),%edx
47072c33676SMaxim Ag	xorl	2052(%rbp,%rdi,8),%ecx
47172c33676SMaxim Ag	movzbl	%al,%esi
47272c33676SMaxim Ag	movzbl	%bh,%edi
47372c33676SMaxim Ag	xorl	2048(%rbp,%rsi,8),%edx
47472c33676SMaxim Ag	xorl	2048(%rbp,%rdi,8),%ecx
47572c33676SMaxim Ag	movl	-48(%r14),%ebx
47672c33676SMaxim Ag	movl	-44(%r14),%eax
47772c33676SMaxim Ag	xorl	%edx,%ecx
47872c33676SMaxim Ag	rorl	$8,%edx
47972c33676SMaxim Ag	xorl	%ecx,%r10d
48072c33676SMaxim Ag	xorl	%ecx,%r11d
48172c33676SMaxim Ag	xorl	%edx,%r11d
48272c33676SMaxim Ag	xorl	%r10d,%eax
48372c33676SMaxim Ag	xorl	%r11d,%ebx
48472c33676SMaxim Ag	movzbl	%ah,%esi
48572c33676SMaxim Ag	movzbl	%bl,%edi
48672c33676SMaxim Ag	movl	2052(%rbp,%rsi,8),%edx
48772c33676SMaxim Ag	movl	0(%rbp,%rdi,8),%ecx
48872c33676SMaxim Ag	movzbl	%al,%esi
48972c33676SMaxim Ag	shrl	$16,%eax
49072c33676SMaxim Ag	movzbl	%bh,%edi
49172c33676SMaxim Ag	xorl	4(%rbp,%rsi,8),%edx
49272c33676SMaxim Ag	shrl	$16,%ebx
49372c33676SMaxim Ag	xorl	4(%rbp,%rdi,8),%ecx
49472c33676SMaxim Ag	movzbl	%ah,%esi
49572c33676SMaxim Ag	movzbl	%bl,%edi
49672c33676SMaxim Ag	xorl	0(%rbp,%rsi,8),%edx
49772c33676SMaxim Ag	xorl	2052(%rbp,%rdi,8),%ecx
49872c33676SMaxim Ag	movzbl	%al,%esi
49972c33676SMaxim Ag	movzbl	%bh,%edi
50072c33676SMaxim Ag	xorl	2048(%rbp,%rsi,8),%edx
50172c33676SMaxim Ag	xorl	2048(%rbp,%rdi,8),%ecx
50272c33676SMaxim Ag	movl	-56(%r14),%ebx
50372c33676SMaxim Ag	movl	-52(%r14),%eax
50472c33676SMaxim Ag	xorl	%edx,%ecx
50572c33676SMaxim Ag	rorl	$8,%edx
50672c33676SMaxim Ag	xorl	%ecx,%r8d
50772c33676SMaxim Ag	xorl	%ecx,%r9d
50872c33676SMaxim Ag	xorl	%edx,%r9d
50972c33676SMaxim Ag	leaq	-64(%r14),%r14
51072c33676SMaxim Ag	cmpq	%r15,%r14
51172c33676SMaxim Ag	movl	0(%r14),%edx
51272c33676SMaxim Ag	movl	4(%r14),%ecx
51372c33676SMaxim Ag	je	.Lddone
51472c33676SMaxim Ag
51572c33676SMaxim Ag	andl	%r8d,%eax
51672c33676SMaxim Ag	orl	%r11d,%edx
51772c33676SMaxim Ag	roll	$1,%eax
51872c33676SMaxim Ag	xorl	%edx,%r10d
51972c33676SMaxim Ag	xorl	%eax,%r9d
52072c33676SMaxim Ag	andl	%r10d,%ecx
52172c33676SMaxim Ag	orl	%r9d,%ebx
52272c33676SMaxim Ag	roll	$1,%ecx
52372c33676SMaxim Ag	xorl	%ebx,%r8d
52472c33676SMaxim Ag	xorl	%ecx,%r11d
52572c33676SMaxim Ag
52672c33676SMaxim Ag	jmp	.Ldloop
52772c33676SMaxim Ag
52872c33676SMaxim Ag.align	16
52972c33676SMaxim Ag.Lddone:
53072c33676SMaxim Ag	xorl	%r10d,%ecx
53172c33676SMaxim Ag	xorl	%r11d,%edx
53272c33676SMaxim Ag	xorl	%r8d,%eax
53372c33676SMaxim Ag	xorl	%r9d,%ebx
53472c33676SMaxim Ag
53572c33676SMaxim Ag	movl	%ecx,%r8d
53672c33676SMaxim Ag	movl	%edx,%r9d
53772c33676SMaxim Ag	movl	%eax,%r10d
53872c33676SMaxim Ag	movl	%ebx,%r11d
53972c33676SMaxim Ag
54072c33676SMaxim Ag	retq
54172c33676SMaxim Ag.size	_x86_64_Camellia_decrypt,.-_x86_64_Camellia_decrypt
54272c33676SMaxim Ag.globl	Camellia_Ekeygen
54372c33676SMaxim Ag.type	Camellia_Ekeygen,@function
54472c33676SMaxim Ag.align	16
54572c33676SMaxim AgCamellia_Ekeygen:
54672c33676SMaxim Ag	pushq	%rbx
54772c33676SMaxim Ag	pushq	%rbp
54872c33676SMaxim Ag	pushq	%r13
54972c33676SMaxim Ag	pushq	%r14
55072c33676SMaxim Ag	pushq	%r15
55172c33676SMaxim Ag.Lkey_prologue:
55272c33676SMaxim Ag
55372c33676SMaxim Ag	movq	%rdi,%r15
55472c33676SMaxim Ag	movq	%rdx,%r13
55572c33676SMaxim Ag
55672c33676SMaxim Ag	movl	0(%rsi),%r8d
55772c33676SMaxim Ag	movl	4(%rsi),%r9d
55872c33676SMaxim Ag	movl	8(%rsi),%r10d
55972c33676SMaxim Ag	movl	12(%rsi),%r11d
56072c33676SMaxim Ag
56172c33676SMaxim Ag	bswapl	%r8d
56272c33676SMaxim Ag	bswapl	%r9d
56372c33676SMaxim Ag	bswapl	%r10d
56472c33676SMaxim Ag	bswapl	%r11d
56572c33676SMaxim Ag	movl	%r9d,0(%r13)
56672c33676SMaxim Ag	movl	%r8d,4(%r13)
56772c33676SMaxim Ag	movl	%r11d,8(%r13)
56872c33676SMaxim Ag	movl	%r10d,12(%r13)
56972c33676SMaxim Ag	cmpq	$128,%r15
57072c33676SMaxim Ag	je	.L1st128
57172c33676SMaxim Ag
57272c33676SMaxim Ag	movl	16(%rsi),%r8d
57372c33676SMaxim Ag	movl	20(%rsi),%r9d
57472c33676SMaxim Ag	cmpq	$192,%r15
57572c33676SMaxim Ag	je	.L1st192
57672c33676SMaxim Ag	movl	24(%rsi),%r10d
57772c33676SMaxim Ag	movl	28(%rsi),%r11d
57872c33676SMaxim Ag	jmp	.L1st256
57972c33676SMaxim Ag.L1st192:
58072c33676SMaxim Ag	movl	%r8d,%r10d
58172c33676SMaxim Ag	movl	%r9d,%r11d
58272c33676SMaxim Ag	notl	%r10d
58372c33676SMaxim Ag	notl	%r11d
58472c33676SMaxim Ag.L1st256:
58572c33676SMaxim Ag	bswapl	%r8d
58672c33676SMaxim Ag	bswapl	%r9d
58772c33676SMaxim Ag	bswapl	%r10d
58872c33676SMaxim Ag	bswapl	%r11d
58972c33676SMaxim Ag	movl	%r9d,32(%r13)
59072c33676SMaxim Ag	movl	%r8d,36(%r13)
59172c33676SMaxim Ag	movl	%r11d,40(%r13)
59272c33676SMaxim Ag	movl	%r10d,44(%r13)
59372c33676SMaxim Ag	xorl	0(%r13),%r9d
59472c33676SMaxim Ag	xorl	4(%r13),%r8d
59572c33676SMaxim Ag	xorl	8(%r13),%r11d
59672c33676SMaxim Ag	xorl	12(%r13),%r10d
59772c33676SMaxim Ag
59872c33676SMaxim Ag.L1st128:
59972c33676SMaxim Ag	leaq	.LCamellia_SIGMA(%rip),%r14
60072c33676SMaxim Ag	leaq	.LCamellia_SBOX(%rip),%rbp
60172c33676SMaxim Ag
60272c33676SMaxim Ag	movl	0(%r14),%ebx
60372c33676SMaxim Ag	movl	4(%r14),%eax
60472c33676SMaxim Ag	xorl	%r8d,%eax
60572c33676SMaxim Ag	xorl	%r9d,%ebx
60672c33676SMaxim Ag	movzbl	%ah,%esi
60772c33676SMaxim Ag	movzbl	%bl,%edi
60872c33676SMaxim Ag	movl	2052(%rbp,%rsi,8),%edx
60972c33676SMaxim Ag	movl	0(%rbp,%rdi,8),%ecx
61072c33676SMaxim Ag	movzbl	%al,%esi
61172c33676SMaxim Ag	shrl	$16,%eax
61272c33676SMaxim Ag	movzbl	%bh,%edi
61372c33676SMaxim Ag	xorl	4(%rbp,%rsi,8),%edx
61472c33676SMaxim Ag	shrl	$16,%ebx
61572c33676SMaxim Ag	xorl	4(%rbp,%rdi,8),%ecx
61672c33676SMaxim Ag	movzbl	%ah,%esi
61772c33676SMaxim Ag	movzbl	%bl,%edi
61872c33676SMaxim Ag	xorl	0(%rbp,%rsi,8),%edx
61972c33676SMaxim Ag	xorl	2052(%rbp,%rdi,8),%ecx
62072c33676SMaxim Ag	movzbl	%al,%esi
62172c33676SMaxim Ag	movzbl	%bh,%edi
62272c33676SMaxim Ag	xorl	2048(%rbp,%rsi,8),%edx
62372c33676SMaxim Ag	xorl	2048(%rbp,%rdi,8),%ecx
62472c33676SMaxim Ag	movl	8(%r14),%ebx
62572c33676SMaxim Ag	movl	12(%r14),%eax
62672c33676SMaxim Ag	xorl	%edx,%ecx
62772c33676SMaxim Ag	rorl	$8,%edx
62872c33676SMaxim Ag	xorl	%ecx,%r10d
62972c33676SMaxim Ag	xorl	%ecx,%r11d
63072c33676SMaxim Ag	xorl	%edx,%r11d
63172c33676SMaxim Ag	xorl	%r10d,%eax
63272c33676SMaxim Ag	xorl	%r11d,%ebx
63372c33676SMaxim Ag	movzbl	%ah,%esi
63472c33676SMaxim Ag	movzbl	%bl,%edi
63572c33676SMaxim Ag	movl	2052(%rbp,%rsi,8),%edx
63672c33676SMaxim Ag	movl	0(%rbp,%rdi,8),%ecx
63772c33676SMaxim Ag	movzbl	%al,%esi
63872c33676SMaxim Ag	shrl	$16,%eax
63972c33676SMaxim Ag	movzbl	%bh,%edi
64072c33676SMaxim Ag	xorl	4(%rbp,%rsi,8),%edx
64172c33676SMaxim Ag	shrl	$16,%ebx
64272c33676SMaxim Ag	xorl	4(%rbp,%rdi,8),%ecx
64372c33676SMaxim Ag	movzbl	%ah,%esi
64472c33676SMaxim Ag	movzbl	%bl,%edi
64572c33676SMaxim Ag	xorl	0(%rbp,%rsi,8),%edx
64672c33676SMaxim Ag	xorl	2052(%rbp,%rdi,8),%ecx
64772c33676SMaxim Ag	movzbl	%al,%esi
64872c33676SMaxim Ag	movzbl	%bh,%edi
64972c33676SMaxim Ag	xorl	2048(%rbp,%rsi,8),%edx
65072c33676SMaxim Ag	xorl	2048(%rbp,%rdi,8),%ecx
65172c33676SMaxim Ag	movl	16(%r14),%ebx
65272c33676SMaxim Ag	movl	20(%r14),%eax
65372c33676SMaxim Ag	xorl	%edx,%ecx
65472c33676SMaxim Ag	rorl	$8,%edx
65572c33676SMaxim Ag	xorl	%ecx,%r8d
65672c33676SMaxim Ag	xorl	%ecx,%r9d
65772c33676SMaxim Ag	xorl	%edx,%r9d
65872c33676SMaxim Ag	xorl	0(%r13),%r9d
65972c33676SMaxim Ag	xorl	4(%r13),%r8d
66072c33676SMaxim Ag	xorl	8(%r13),%r11d
66172c33676SMaxim Ag	xorl	12(%r13),%r10d
66272c33676SMaxim Ag	xorl	%r8d,%eax
66372c33676SMaxim Ag	xorl	%r9d,%ebx
66472c33676SMaxim Ag	movzbl	%ah,%esi
66572c33676SMaxim Ag	movzbl	%bl,%edi
66672c33676SMaxim Ag	movl	2052(%rbp,%rsi,8),%edx
66772c33676SMaxim Ag	movl	0(%rbp,%rdi,8),%ecx
66872c33676SMaxim Ag	movzbl	%al,%esi
66972c33676SMaxim Ag	shrl	$16,%eax
67072c33676SMaxim Ag	movzbl	%bh,%edi
67172c33676SMaxim Ag	xorl	4(%rbp,%rsi,8),%edx
67272c33676SMaxim Ag	shrl	$16,%ebx
67372c33676SMaxim Ag	xorl	4(%rbp,%rdi,8),%ecx
67472c33676SMaxim Ag	movzbl	%ah,%esi
67572c33676SMaxim Ag	movzbl	%bl,%edi
67672c33676SMaxim Ag	xorl	0(%rbp,%rsi,8),%edx
67772c33676SMaxim Ag	xorl	2052(%rbp,%rdi,8),%ecx
67872c33676SMaxim Ag	movzbl	%al,%esi
67972c33676SMaxim Ag	movzbl	%bh,%edi
68072c33676SMaxim Ag	xorl	2048(%rbp,%rsi,8),%edx
68172c33676SMaxim Ag	xorl	2048(%rbp,%rdi,8),%ecx
68272c33676SMaxim Ag	movl	24(%r14),%ebx
68372c33676SMaxim Ag	movl	28(%r14),%eax
68472c33676SMaxim Ag	xorl	%edx,%ecx
68572c33676SMaxim Ag	rorl	$8,%edx
68672c33676SMaxim Ag	xorl	%ecx,%r10d
68772c33676SMaxim Ag	xorl	%ecx,%r11d
68872c33676SMaxim Ag	xorl	%edx,%r11d
68972c33676SMaxim Ag	xorl	%r10d,%eax
69072c33676SMaxim Ag	xorl	%r11d,%ebx
69172c33676SMaxim Ag	movzbl	%ah,%esi
69272c33676SMaxim Ag	movzbl	%bl,%edi
69372c33676SMaxim Ag	movl	2052(%rbp,%rsi,8),%edx
69472c33676SMaxim Ag	movl	0(%rbp,%rdi,8),%ecx
69572c33676SMaxim Ag	movzbl	%al,%esi
69672c33676SMaxim Ag	shrl	$16,%eax
69772c33676SMaxim Ag	movzbl	%bh,%edi
69872c33676SMaxim Ag	xorl	4(%rbp,%rsi,8),%edx
69972c33676SMaxim Ag	shrl	$16,%ebx
70072c33676SMaxim Ag	xorl	4(%rbp,%rdi,8),%ecx
70172c33676SMaxim Ag	movzbl	%ah,%esi
70272c33676SMaxim Ag	movzbl	%bl,%edi
70372c33676SMaxim Ag	xorl	0(%rbp,%rsi,8),%edx
70472c33676SMaxim Ag	xorl	2052(%rbp,%rdi,8),%ecx
70572c33676SMaxim Ag	movzbl	%al,%esi
70672c33676SMaxim Ag	movzbl	%bh,%edi
70772c33676SMaxim Ag	xorl	2048(%rbp,%rsi,8),%edx
70872c33676SMaxim Ag	xorl	2048(%rbp,%rdi,8),%ecx
70972c33676SMaxim Ag	movl	32(%r14),%ebx
71072c33676SMaxim Ag	movl	36(%r14),%eax
71172c33676SMaxim Ag	xorl	%edx,%ecx
71272c33676SMaxim Ag	rorl	$8,%edx
71372c33676SMaxim Ag	xorl	%ecx,%r8d
71472c33676SMaxim Ag	xorl	%ecx,%r9d
71572c33676SMaxim Ag	xorl	%edx,%r9d
71672c33676SMaxim Ag	cmpq	$128,%r15
71772c33676SMaxim Ag	jne	.L2nd256
71872c33676SMaxim Ag
71972c33676SMaxim Ag	leaq	128(%r13),%r13
72072c33676SMaxim Ag	shlq	$32,%r8
72172c33676SMaxim Ag	shlq	$32,%r10
72272c33676SMaxim Ag	orq	%r9,%r8
72372c33676SMaxim Ag	orq	%r11,%r10
72472c33676SMaxim Ag	movq	-128(%r13),%rax
72572c33676SMaxim Ag	movq	-120(%r13),%rbx
72672c33676SMaxim Ag	movq	%r8,-112(%r13)
72772c33676SMaxim Ag	movq	%r10,-104(%r13)
72872c33676SMaxim Ag	movq	%rax,%r11
72972c33676SMaxim Ag	shlq	$15,%rax
73072c33676SMaxim Ag	movq	%rbx,%r9
73172c33676SMaxim Ag	shrq	$49,%r9
73272c33676SMaxim Ag	shrq	$49,%r11
73372c33676SMaxim Ag	orq	%r9,%rax
73472c33676SMaxim Ag	shlq	$15,%rbx
73572c33676SMaxim Ag	orq	%r11,%rbx
73672c33676SMaxim Ag	movq	%rax,-96(%r13)
73772c33676SMaxim Ag	movq	%rbx,-88(%r13)
73872c33676SMaxim Ag	movq	%r8,%r11
73972c33676SMaxim Ag	shlq	$15,%r8
74072c33676SMaxim Ag	movq	%r10,%r9
74172c33676SMaxim Ag	shrq	$49,%r9
74272c33676SMaxim Ag	shrq	$49,%r11
74372c33676SMaxim Ag	orq	%r9,%r8
74472c33676SMaxim Ag	shlq	$15,%r10
74572c33676SMaxim Ag	orq	%r11,%r10
74672c33676SMaxim Ag	movq	%r8,-80(%r13)
74772c33676SMaxim Ag	movq	%r10,-72(%r13)
74872c33676SMaxim Ag	movq	%r8,%r11
74972c33676SMaxim Ag	shlq	$15,%r8
75072c33676SMaxim Ag	movq	%r10,%r9
75172c33676SMaxim Ag	shrq	$49,%r9
75272c33676SMaxim Ag	shrq	$49,%r11
75372c33676SMaxim Ag	orq	%r9,%r8
75472c33676SMaxim Ag	shlq	$15,%r10
75572c33676SMaxim Ag	orq	%r11,%r10
75672c33676SMaxim Ag	movq	%r8,-64(%r13)
75772c33676SMaxim Ag	movq	%r10,-56(%r13)
75872c33676SMaxim Ag	movq	%rax,%r11
75972c33676SMaxim Ag	shlq	$30,%rax
76072c33676SMaxim Ag	movq	%rbx,%r9
76172c33676SMaxim Ag	shrq	$34,%r9
76272c33676SMaxim Ag	shrq	$34,%r11
76372c33676SMaxim Ag	orq	%r9,%rax
76472c33676SMaxim Ag	shlq	$30,%rbx
76572c33676SMaxim Ag	orq	%r11,%rbx
76672c33676SMaxim Ag	movq	%rax,-48(%r13)
76772c33676SMaxim Ag	movq	%rbx,-40(%r13)
76872c33676SMaxim Ag	movq	%r8,%r11
76972c33676SMaxim Ag	shlq	$15,%r8
77072c33676SMaxim Ag	movq	%r10,%r9
77172c33676SMaxim Ag	shrq	$49,%r9
77272c33676SMaxim Ag	shrq	$49,%r11
77372c33676SMaxim Ag	orq	%r9,%r8
77472c33676SMaxim Ag	shlq	$15,%r10
77572c33676SMaxim Ag	orq	%r11,%r10
77672c33676SMaxim Ag	movq	%r8,-32(%r13)
77772c33676SMaxim Ag	movq	%rax,%r11
77872c33676SMaxim Ag	shlq	$15,%rax
77972c33676SMaxim Ag	movq	%rbx,%r9
78072c33676SMaxim Ag	shrq	$49,%r9
78172c33676SMaxim Ag	shrq	$49,%r11
78272c33676SMaxim Ag	orq	%r9,%rax
78372c33676SMaxim Ag	shlq	$15,%rbx
78472c33676SMaxim Ag	orq	%r11,%rbx
78572c33676SMaxim Ag	movq	%rbx,-24(%r13)
78672c33676SMaxim Ag	movq	%r8,%r11
78772c33676SMaxim Ag	shlq	$15,%r8
78872c33676SMaxim Ag	movq	%r10,%r9
78972c33676SMaxim Ag	shrq	$49,%r9
79072c33676SMaxim Ag	shrq	$49,%r11
79172c33676SMaxim Ag	orq	%r9,%r8
79272c33676SMaxim Ag	shlq	$15,%r10
79372c33676SMaxim Ag	orq	%r11,%r10
79472c33676SMaxim Ag	movq	%r8,-16(%r13)
79572c33676SMaxim Ag	movq	%r10,-8(%r13)
79672c33676SMaxim Ag	movq	%rax,%r11
79772c33676SMaxim Ag	shlq	$17,%rax
79872c33676SMaxim Ag	movq	%rbx,%r9
79972c33676SMaxim Ag	shrq	$47,%r9
80072c33676SMaxim Ag	shrq	$47,%r11
80172c33676SMaxim Ag	orq	%r9,%rax
80272c33676SMaxim Ag	shlq	$17,%rbx
80372c33676SMaxim Ag	orq	%r11,%rbx
80472c33676SMaxim Ag	movq	%rax,0(%r13)
80572c33676SMaxim Ag	movq	%rbx,8(%r13)
80672c33676SMaxim Ag	movq	%rax,%r11
80772c33676SMaxim Ag	shlq	$17,%rax
80872c33676SMaxim Ag	movq	%rbx,%r9
80972c33676SMaxim Ag	shrq	$47,%r9
81072c33676SMaxim Ag	shrq	$47,%r11
81172c33676SMaxim Ag	orq	%r9,%rax
81272c33676SMaxim Ag	shlq	$17,%rbx
81372c33676SMaxim Ag	orq	%r11,%rbx
81472c33676SMaxim Ag	movq	%rax,16(%r13)
81572c33676SMaxim Ag	movq	%rbx,24(%r13)
81672c33676SMaxim Ag	movq	%r8,%r11
81772c33676SMaxim Ag	shlq	$34,%r8
81872c33676SMaxim Ag	movq	%r10,%r9
81972c33676SMaxim Ag	shrq	$30,%r9
82072c33676SMaxim Ag	shrq	$30,%r11
82172c33676SMaxim Ag	orq	%r9,%r8
82272c33676SMaxim Ag	shlq	$34,%r10
82372c33676SMaxim Ag	orq	%r11,%r10
82472c33676SMaxim Ag	movq	%r8,32(%r13)
82572c33676SMaxim Ag	movq	%r10,40(%r13)
82672c33676SMaxim Ag	movq	%rax,%r11
82772c33676SMaxim Ag	shlq	$17,%rax
82872c33676SMaxim Ag	movq	%rbx,%r9
82972c33676SMaxim Ag	shrq	$47,%r9
83072c33676SMaxim Ag	shrq	$47,%r11
83172c33676SMaxim Ag	orq	%r9,%rax
83272c33676SMaxim Ag	shlq	$17,%rbx
83372c33676SMaxim Ag	orq	%r11,%rbx
83472c33676SMaxim Ag	movq	%rax,48(%r13)
83572c33676SMaxim Ag	movq	%rbx,56(%r13)
83672c33676SMaxim Ag	movq	%r8,%r11
83772c33676SMaxim Ag	shlq	$17,%r8
83872c33676SMaxim Ag	movq	%r10,%r9
83972c33676SMaxim Ag	shrq	$47,%r9
84072c33676SMaxim Ag	shrq	$47,%r11
84172c33676SMaxim Ag	orq	%r9,%r8
84272c33676SMaxim Ag	shlq	$17,%r10
84372c33676SMaxim Ag	orq	%r11,%r10
84472c33676SMaxim Ag	movq	%r8,64(%r13)
84572c33676SMaxim Ag	movq	%r10,72(%r13)
84672c33676SMaxim Ag	movl	$3,%eax
84772c33676SMaxim Ag	jmp	.Ldone
84872c33676SMaxim Ag.align	16
84972c33676SMaxim Ag.L2nd256:
85072c33676SMaxim Ag	movl	%r9d,48(%r13)
85172c33676SMaxim Ag	movl	%r8d,52(%r13)
85272c33676SMaxim Ag	movl	%r11d,56(%r13)
85372c33676SMaxim Ag	movl	%r10d,60(%r13)
85472c33676SMaxim Ag	xorl	32(%r13),%r9d
85572c33676SMaxim Ag	xorl	36(%r13),%r8d
85672c33676SMaxim Ag	xorl	40(%r13),%r11d
85772c33676SMaxim Ag	xorl	44(%r13),%r10d
85872c33676SMaxim Ag	xorl	%r8d,%eax
85972c33676SMaxim Ag	xorl	%r9d,%ebx
86072c33676SMaxim Ag	movzbl	%ah,%esi
86172c33676SMaxim Ag	movzbl	%bl,%edi
86272c33676SMaxim Ag	movl	2052(%rbp,%rsi,8),%edx
86372c33676SMaxim Ag	movl	0(%rbp,%rdi,8),%ecx
86472c33676SMaxim Ag	movzbl	%al,%esi
86572c33676SMaxim Ag	shrl	$16,%eax
86672c33676SMaxim Ag	movzbl	%bh,%edi
86772c33676SMaxim Ag	xorl	4(%rbp,%rsi,8),%edx
86872c33676SMaxim Ag	shrl	$16,%ebx
86972c33676SMaxim Ag	xorl	4(%rbp,%rdi,8),%ecx
87072c33676SMaxim Ag	movzbl	%ah,%esi
87172c33676SMaxim Ag	movzbl	%bl,%edi
87272c33676SMaxim Ag	xorl	0(%rbp,%rsi,8),%edx
87372c33676SMaxim Ag	xorl	2052(%rbp,%rdi,8),%ecx
87472c33676SMaxim Ag	movzbl	%al,%esi
87572c33676SMaxim Ag	movzbl	%bh,%edi
87672c33676SMaxim Ag	xorl	2048(%rbp,%rsi,8),%edx
87772c33676SMaxim Ag	xorl	2048(%rbp,%rdi,8),%ecx
87872c33676SMaxim Ag	movl	40(%r14),%ebx
87972c33676SMaxim Ag	movl	44(%r14),%eax
88072c33676SMaxim Ag	xorl	%edx,%ecx
88172c33676SMaxim Ag	rorl	$8,%edx
88272c33676SMaxim Ag	xorl	%ecx,%r10d
88372c33676SMaxim Ag	xorl	%ecx,%r11d
88472c33676SMaxim Ag	xorl	%edx,%r11d
88572c33676SMaxim Ag	xorl	%r10d,%eax
88672c33676SMaxim Ag	xorl	%r11d,%ebx
88772c33676SMaxim Ag	movzbl	%ah,%esi
88872c33676SMaxim Ag	movzbl	%bl,%edi
88972c33676SMaxim Ag	movl	2052(%rbp,%rsi,8),%edx
89072c33676SMaxim Ag	movl	0(%rbp,%rdi,8),%ecx
89172c33676SMaxim Ag	movzbl	%al,%esi
89272c33676SMaxim Ag	shrl	$16,%eax
89372c33676SMaxim Ag	movzbl	%bh,%edi
89472c33676SMaxim Ag	xorl	4(%rbp,%rsi,8),%edx
89572c33676SMaxim Ag	shrl	$16,%ebx
89672c33676SMaxim Ag	xorl	4(%rbp,%rdi,8),%ecx
89772c33676SMaxim Ag	movzbl	%ah,%esi
89872c33676SMaxim Ag	movzbl	%bl,%edi
89972c33676SMaxim Ag	xorl	0(%rbp,%rsi,8),%edx
90072c33676SMaxim Ag	xorl	2052(%rbp,%rdi,8),%ecx
90172c33676SMaxim Ag	movzbl	%al,%esi
90272c33676SMaxim Ag	movzbl	%bh,%edi
90372c33676SMaxim Ag	xorl	2048(%rbp,%rsi,8),%edx
90472c33676SMaxim Ag	xorl	2048(%rbp,%rdi,8),%ecx
90572c33676SMaxim Ag	movl	48(%r14),%ebx
90672c33676SMaxim Ag	movl	52(%r14),%eax
90772c33676SMaxim Ag	xorl	%edx,%ecx
90872c33676SMaxim Ag	rorl	$8,%edx
90972c33676SMaxim Ag	xorl	%ecx,%r8d
91072c33676SMaxim Ag	xorl	%ecx,%r9d
91172c33676SMaxim Ag	xorl	%edx,%r9d
91272c33676SMaxim Ag	movq	0(%r13),%rax
91372c33676SMaxim Ag	movq	8(%r13),%rbx
91472c33676SMaxim Ag	movq	32(%r13),%rcx
91572c33676SMaxim Ag	movq	40(%r13),%rdx
91672c33676SMaxim Ag	movq	48(%r13),%r14
91772c33676SMaxim Ag	movq	56(%r13),%r15
91872c33676SMaxim Ag	leaq	128(%r13),%r13
91972c33676SMaxim Ag	shlq	$32,%r8
92072c33676SMaxim Ag	shlq	$32,%r10
92172c33676SMaxim Ag	orq	%r9,%r8
92272c33676SMaxim Ag	orq	%r11,%r10
92372c33676SMaxim Ag	movq	%r8,-112(%r13)
92472c33676SMaxim Ag	movq	%r10,-104(%r13)
92572c33676SMaxim Ag	movq	%rcx,%r11
92672c33676SMaxim Ag	shlq	$15,%rcx
92772c33676SMaxim Ag	movq	%rdx,%r9
92872c33676SMaxim Ag	shrq	$49,%r9
92972c33676SMaxim Ag	shrq	$49,%r11
93072c33676SMaxim Ag	orq	%r9,%rcx
93172c33676SMaxim Ag	shlq	$15,%rdx
93272c33676SMaxim Ag	orq	%r11,%rdx
93372c33676SMaxim Ag	movq	%rcx,-96(%r13)
93472c33676SMaxim Ag	movq	%rdx,-88(%r13)
93572c33676SMaxim Ag	movq	%r14,%r11
93672c33676SMaxim Ag	shlq	$15,%r14
93772c33676SMaxim Ag	movq	%r15,%r9
93872c33676SMaxim Ag	shrq	$49,%r9
93972c33676SMaxim Ag	shrq	$49,%r11
94072c33676SMaxim Ag	orq	%r9,%r14
94172c33676SMaxim Ag	shlq	$15,%r15
94272c33676SMaxim Ag	orq	%r11,%r15
94372c33676SMaxim Ag	movq	%r14,-80(%r13)
94472c33676SMaxim Ag	movq	%r15,-72(%r13)
94572c33676SMaxim Ag	movq	%rcx,%r11
94672c33676SMaxim Ag	shlq	$15,%rcx
94772c33676SMaxim Ag	movq	%rdx,%r9
94872c33676SMaxim Ag	shrq	$49,%r9
94972c33676SMaxim Ag	shrq	$49,%r11
95072c33676SMaxim Ag	orq	%r9,%rcx
95172c33676SMaxim Ag	shlq	$15,%rdx
95272c33676SMaxim Ag	orq	%r11,%rdx
95372c33676SMaxim Ag	movq	%rcx,-64(%r13)
95472c33676SMaxim Ag	movq	%rdx,-56(%r13)
95572c33676SMaxim Ag	movq	%r8,%r11
95672c33676SMaxim Ag	shlq	$30,%r8
95772c33676SMaxim Ag	movq	%r10,%r9
95872c33676SMaxim Ag	shrq	$34,%r9
95972c33676SMaxim Ag	shrq	$34,%r11
96072c33676SMaxim Ag	orq	%r9,%r8
96172c33676SMaxim Ag	shlq	$30,%r10
96272c33676SMaxim Ag	orq	%r11,%r10
96372c33676SMaxim Ag	movq	%r8,-48(%r13)
96472c33676SMaxim Ag	movq	%r10,-40(%r13)
96572c33676SMaxim Ag	movq	%rax,%r11
96672c33676SMaxim Ag	shlq	$45,%rax
96772c33676SMaxim Ag	movq	%rbx,%r9
96872c33676SMaxim Ag	shrq	$19,%r9
96972c33676SMaxim Ag	shrq	$19,%r11
97072c33676SMaxim Ag	orq	%r9,%rax
97172c33676SMaxim Ag	shlq	$45,%rbx
97272c33676SMaxim Ag	orq	%r11,%rbx
97372c33676SMaxim Ag	movq	%rax,-32(%r13)
97472c33676SMaxim Ag	movq	%rbx,-24(%r13)
97572c33676SMaxim Ag	movq	%r14,%r11
97672c33676SMaxim Ag	shlq	$30,%r14
97772c33676SMaxim Ag	movq	%r15,%r9
97872c33676SMaxim Ag	shrq	$34,%r9
97972c33676SMaxim Ag	shrq	$34,%r11
98072c33676SMaxim Ag	orq	%r9,%r14
98172c33676SMaxim Ag	shlq	$30,%r15
98272c33676SMaxim Ag	orq	%r11,%r15
98372c33676SMaxim Ag	movq	%r14,-16(%r13)
98472c33676SMaxim Ag	movq	%r15,-8(%r13)
98572c33676SMaxim Ag	movq	%rax,%r11
98672c33676SMaxim Ag	shlq	$15,%rax
98772c33676SMaxim Ag	movq	%rbx,%r9
98872c33676SMaxim Ag	shrq	$49,%r9
98972c33676SMaxim Ag	shrq	$49,%r11
99072c33676SMaxim Ag	orq	%r9,%rax
99172c33676SMaxim Ag	shlq	$15,%rbx
99272c33676SMaxim Ag	orq	%r11,%rbx
99372c33676SMaxim Ag	movq	%rax,0(%r13)
99472c33676SMaxim Ag	movq	%rbx,8(%r13)
99572c33676SMaxim Ag	movq	%rcx,%r11
99672c33676SMaxim Ag	shlq	$30,%rcx
99772c33676SMaxim Ag	movq	%rdx,%r9
99872c33676SMaxim Ag	shrq	$34,%r9
99972c33676SMaxim Ag	shrq	$34,%r11
100072c33676SMaxim Ag	orq	%r9,%rcx
100172c33676SMaxim Ag	shlq	$30,%rdx
100272c33676SMaxim Ag	orq	%r11,%rdx
100372c33676SMaxim Ag	movq	%rcx,16(%r13)
100472c33676SMaxim Ag	movq	%rdx,24(%r13)
100572c33676SMaxim Ag	movq	%r8,%r11
100672c33676SMaxim Ag	shlq	$30,%r8
100772c33676SMaxim Ag	movq	%r10,%r9
100872c33676SMaxim Ag	shrq	$34,%r9
100972c33676SMaxim Ag	shrq	$34,%r11
101072c33676SMaxim Ag	orq	%r9,%r8
101172c33676SMaxim Ag	shlq	$30,%r10
101272c33676SMaxim Ag	orq	%r11,%r10
101372c33676SMaxim Ag	movq	%r8,32(%r13)
101472c33676SMaxim Ag	movq	%r10,40(%r13)
101572c33676SMaxim Ag	movq	%rax,%r11
101672c33676SMaxim Ag	shlq	$17,%rax
101772c33676SMaxim Ag	movq	%rbx,%r9
101872c33676SMaxim Ag	shrq	$47,%r9
101972c33676SMaxim Ag	shrq	$47,%r11
102072c33676SMaxim Ag	orq	%r9,%rax
102172c33676SMaxim Ag	shlq	$17,%rbx
102272c33676SMaxim Ag	orq	%r11,%rbx
102372c33676SMaxim Ag	movq	%rax,48(%r13)
102472c33676SMaxim Ag	movq	%rbx,56(%r13)
102572c33676SMaxim Ag	movq	%r14,%r11
102672c33676SMaxim Ag	shlq	$32,%r14
102772c33676SMaxim Ag	movq	%r15,%r9
102872c33676SMaxim Ag	shrq	$32,%r9
102972c33676SMaxim Ag	shrq	$32,%r11
103072c33676SMaxim Ag	orq	%r9,%r14
103172c33676SMaxim Ag	shlq	$32,%r15
103272c33676SMaxim Ag	orq	%r11,%r15
103372c33676SMaxim Ag	movq	%r14,64(%r13)
103472c33676SMaxim Ag	movq	%r15,72(%r13)
103572c33676SMaxim Ag	movq	%rcx,%r11
103672c33676SMaxim Ag	shlq	$34,%rcx
103772c33676SMaxim Ag	movq	%rdx,%r9
103872c33676SMaxim Ag	shrq	$30,%r9
103972c33676SMaxim Ag	shrq	$30,%r11
104072c33676SMaxim Ag	orq	%r9,%rcx
104172c33676SMaxim Ag	shlq	$34,%rdx
104272c33676SMaxim Ag	orq	%r11,%rdx
104372c33676SMaxim Ag	movq	%rcx,80(%r13)
104472c33676SMaxim Ag	movq	%rdx,88(%r13)
104572c33676SMaxim Ag	movq	%r14,%r11
104672c33676SMaxim Ag	shlq	$17,%r14
104772c33676SMaxim Ag	movq	%r15,%r9
104872c33676SMaxim Ag	shrq	$47,%r9
104972c33676SMaxim Ag	shrq	$47,%r11
105072c33676SMaxim Ag	orq	%r9,%r14
105172c33676SMaxim Ag	shlq	$17,%r15
105272c33676SMaxim Ag	orq	%r11,%r15
105372c33676SMaxim Ag	movq	%r14,96(%r13)
105472c33676SMaxim Ag	movq	%r15,104(%r13)
105572c33676SMaxim Ag	movq	%rax,%r11
105672c33676SMaxim Ag	shlq	$34,%rax
105772c33676SMaxim Ag	movq	%rbx,%r9
105872c33676SMaxim Ag	shrq	$30,%r9
105972c33676SMaxim Ag	shrq	$30,%r11
106072c33676SMaxim Ag	orq	%r9,%rax
106172c33676SMaxim Ag	shlq	$34,%rbx
106272c33676SMaxim Ag	orq	%r11,%rbx
106372c33676SMaxim Ag	movq	%rax,112(%r13)
106472c33676SMaxim Ag	movq	%rbx,120(%r13)
106572c33676SMaxim Ag	movq	%r8,%r11
106672c33676SMaxim Ag	shlq	$51,%r8
106772c33676SMaxim Ag	movq	%r10,%r9
106872c33676SMaxim Ag	shrq	$13,%r9
106972c33676SMaxim Ag	shrq	$13,%r11
107072c33676SMaxim Ag	orq	%r9,%r8
107172c33676SMaxim Ag	shlq	$51,%r10
107272c33676SMaxim Ag	orq	%r11,%r10
107372c33676SMaxim Ag	movq	%r8,128(%r13)
107472c33676SMaxim Ag	movq	%r10,136(%r13)
107572c33676SMaxim Ag	movl	$4,%eax
107672c33676SMaxim Ag.Ldone:
107772c33676SMaxim Ag	movq	0(%rsp),%r15
107872c33676SMaxim Ag	movq	8(%rsp),%r14
107972c33676SMaxim Ag	movq	16(%rsp),%r13
108072c33676SMaxim Ag	movq	24(%rsp),%rbp
108172c33676SMaxim Ag	movq	32(%rsp),%rbx
108272c33676SMaxim Ag	leaq	40(%rsp),%rsp
108372c33676SMaxim Ag.Lkey_epilogue:
108472c33676SMaxim Ag	retq
108572c33676SMaxim Ag.size	Camellia_Ekeygen,.-Camellia_Ekeygen
108672c33676SMaxim Ag.align	64
108772c33676SMaxim Ag.LCamellia_SIGMA:
108872c33676SMaxim Ag.long	0x3bcc908b, 0xa09e667f, 0x4caa73b2, 0xb67ae858
108972c33676SMaxim Ag.long	0xe94f82be, 0xc6ef372f, 0xf1d36f1c, 0x54ff53a5
109072c33676SMaxim Ag.long	0xde682d1d, 0x10e527fa, 0xb3e6c1fd, 0xb05688c2
109172c33676SMaxim Ag.long	0,          0,          0,          0
109272c33676SMaxim Ag.LCamellia_SBOX:
109372c33676SMaxim Ag.long	0x70707000,0x70700070
109472c33676SMaxim Ag.long	0x82828200,0x2c2c002c
109572c33676SMaxim Ag.long	0x2c2c2c00,0xb3b300b3
109672c33676SMaxim Ag.long	0xececec00,0xc0c000c0
109772c33676SMaxim Ag.long	0xb3b3b300,0xe4e400e4
109872c33676SMaxim Ag.long	0x27272700,0x57570057
109972c33676SMaxim Ag.long	0xc0c0c000,0xeaea00ea
110072c33676SMaxim Ag.long	0xe5e5e500,0xaeae00ae
110172c33676SMaxim Ag.long	0xe4e4e400,0x23230023
110272c33676SMaxim Ag.long	0x85858500,0x6b6b006b
110372c33676SMaxim Ag.long	0x57575700,0x45450045
110472c33676SMaxim Ag.long	0x35353500,0xa5a500a5
110572c33676SMaxim Ag.long	0xeaeaea00,0xeded00ed
110672c33676SMaxim Ag.long	0x0c0c0c00,0x4f4f004f
110772c33676SMaxim Ag.long	0xaeaeae00,0x1d1d001d
110872c33676SMaxim Ag.long	0x41414100,0x92920092
110972c33676SMaxim Ag.long	0x23232300,0x86860086
111072c33676SMaxim Ag.long	0xefefef00,0xafaf00af
111172c33676SMaxim Ag.long	0x6b6b6b00,0x7c7c007c
111272c33676SMaxim Ag.long	0x93939300,0x1f1f001f
111372c33676SMaxim Ag.long	0x45454500,0x3e3e003e
111472c33676SMaxim Ag.long	0x19191900,0xdcdc00dc
111572c33676SMaxim Ag.long	0xa5a5a500,0x5e5e005e
111672c33676SMaxim Ag.long	0x21212100,0x0b0b000b
111772c33676SMaxim Ag.long	0xededed00,0xa6a600a6
111872c33676SMaxim Ag.long	0x0e0e0e00,0x39390039
111972c33676SMaxim Ag.long	0x4f4f4f00,0xd5d500d5
112072c33676SMaxim Ag.long	0x4e4e4e00,0x5d5d005d
112172c33676SMaxim Ag.long	0x1d1d1d00,0xd9d900d9
112272c33676SMaxim Ag.long	0x65656500,0x5a5a005a
112372c33676SMaxim Ag.long	0x92929200,0x51510051
112472c33676SMaxim Ag.long	0xbdbdbd00,0x6c6c006c
112572c33676SMaxim Ag.long	0x86868600,0x8b8b008b
112672c33676SMaxim Ag.long	0xb8b8b800,0x9a9a009a
112772c33676SMaxim Ag.long	0xafafaf00,0xfbfb00fb
112872c33676SMaxim Ag.long	0x8f8f8f00,0xb0b000b0
112972c33676SMaxim Ag.long	0x7c7c7c00,0x74740074
113072c33676SMaxim Ag.long	0xebebeb00,0x2b2b002b
113172c33676SMaxim Ag.long	0x1f1f1f00,0xf0f000f0
113272c33676SMaxim Ag.long	0xcecece00,0x84840084
113372c33676SMaxim Ag.long	0x3e3e3e00,0xdfdf00df
113472c33676SMaxim Ag.long	0x30303000,0xcbcb00cb
113572c33676SMaxim Ag.long	0xdcdcdc00,0x34340034
113672c33676SMaxim Ag.long	0x5f5f5f00,0x76760076
113772c33676SMaxim Ag.long	0x5e5e5e00,0x6d6d006d
113872c33676SMaxim Ag.long	0xc5c5c500,0xa9a900a9
113972c33676SMaxim Ag.long	0x0b0b0b00,0xd1d100d1
114072c33676SMaxim Ag.long	0x1a1a1a00,0x04040004
114172c33676SMaxim Ag.long	0xa6a6a600,0x14140014
114272c33676SMaxim Ag.long	0xe1e1e100,0x3a3a003a
114372c33676SMaxim Ag.long	0x39393900,0xdede00de
114472c33676SMaxim Ag.long	0xcacaca00,0x11110011
114572c33676SMaxim Ag.long	0xd5d5d500,0x32320032
114672c33676SMaxim Ag.long	0x47474700,0x9c9c009c
114772c33676SMaxim Ag.long	0x5d5d5d00,0x53530053
114872c33676SMaxim Ag.long	0x3d3d3d00,0xf2f200f2
114972c33676SMaxim Ag.long	0xd9d9d900,0xfefe00fe
115072c33676SMaxim Ag.long	0x01010100,0xcfcf00cf
115172c33676SMaxim Ag.long	0x5a5a5a00,0xc3c300c3
115272c33676SMaxim Ag.long	0xd6d6d600,0x7a7a007a
115372c33676SMaxim Ag.long	0x51515100,0x24240024
115472c33676SMaxim Ag.long	0x56565600,0xe8e800e8
115572c33676SMaxim Ag.long	0x6c6c6c00,0x60600060
115672c33676SMaxim Ag.long	0x4d4d4d00,0x69690069
115772c33676SMaxim Ag.long	0x8b8b8b00,0xaaaa00aa
115872c33676SMaxim Ag.long	0x0d0d0d00,0xa0a000a0
115972c33676SMaxim Ag.long	0x9a9a9a00,0xa1a100a1
116072c33676SMaxim Ag.long	0x66666600,0x62620062
116172c33676SMaxim Ag.long	0xfbfbfb00,0x54540054
116272c33676SMaxim Ag.long	0xcccccc00,0x1e1e001e
116372c33676SMaxim Ag.long	0xb0b0b000,0xe0e000e0
116472c33676SMaxim Ag.long	0x2d2d2d00,0x64640064
116572c33676SMaxim Ag.long	0x74747400,0x10100010
116672c33676SMaxim Ag.long	0x12121200,0x00000000
116772c33676SMaxim Ag.long	0x2b2b2b00,0xa3a300a3
116872c33676SMaxim Ag.long	0x20202000,0x75750075
116972c33676SMaxim Ag.long	0xf0f0f000,0x8a8a008a
117072c33676SMaxim Ag.long	0xb1b1b100,0xe6e600e6
117172c33676SMaxim Ag.long	0x84848400,0x09090009
117272c33676SMaxim Ag.long	0x99999900,0xdddd00dd
117372c33676SMaxim Ag.long	0xdfdfdf00,0x87870087
117472c33676SMaxim Ag.long	0x4c4c4c00,0x83830083
117572c33676SMaxim Ag.long	0xcbcbcb00,0xcdcd00cd
117672c33676SMaxim Ag.long	0xc2c2c200,0x90900090
117772c33676SMaxim Ag.long	0x34343400,0x73730073
117872c33676SMaxim Ag.long	0x7e7e7e00,0xf6f600f6
117972c33676SMaxim Ag.long	0x76767600,0x9d9d009d
118072c33676SMaxim Ag.long	0x05050500,0xbfbf00bf
118172c33676SMaxim Ag.long	0x6d6d6d00,0x52520052
118272c33676SMaxim Ag.long	0xb7b7b700,0xd8d800d8
118372c33676SMaxim Ag.long	0xa9a9a900,0xc8c800c8
118472c33676SMaxim Ag.long	0x31313100,0xc6c600c6
118572c33676SMaxim Ag.long	0xd1d1d100,0x81810081
118672c33676SMaxim Ag.long	0x17171700,0x6f6f006f
118772c33676SMaxim Ag.long	0x04040400,0x13130013
118872c33676SMaxim Ag.long	0xd7d7d700,0x63630063
118972c33676SMaxim Ag.long	0x14141400,0xe9e900e9
119072c33676SMaxim Ag.long	0x58585800,0xa7a700a7
119172c33676SMaxim Ag.long	0x3a3a3a00,0x9f9f009f
119272c33676SMaxim Ag.long	0x61616100,0xbcbc00bc
119372c33676SMaxim Ag.long	0xdedede00,0x29290029
119472c33676SMaxim Ag.long	0x1b1b1b00,0xf9f900f9
119572c33676SMaxim Ag.long	0x11111100,0x2f2f002f
119672c33676SMaxim Ag.long	0x1c1c1c00,0xb4b400b4
119772c33676SMaxim Ag.long	0x32323200,0x78780078
119872c33676SMaxim Ag.long	0x0f0f0f00,0x06060006
119972c33676SMaxim Ag.long	0x9c9c9c00,0xe7e700e7
120072c33676SMaxim Ag.long	0x16161600,0x71710071
120172c33676SMaxim Ag.long	0x53535300,0xd4d400d4
120272c33676SMaxim Ag.long	0x18181800,0xabab00ab
120372c33676SMaxim Ag.long	0xf2f2f200,0x88880088
120472c33676SMaxim Ag.long	0x22222200,0x8d8d008d
120572c33676SMaxim Ag.long	0xfefefe00,0x72720072
120672c33676SMaxim Ag.long	0x44444400,0xb9b900b9
120772c33676SMaxim Ag.long	0xcfcfcf00,0xf8f800f8
120872c33676SMaxim Ag.long	0xb2b2b200,0xacac00ac
120972c33676SMaxim Ag.long	0xc3c3c300,0x36360036
121072c33676SMaxim Ag.long	0xb5b5b500,0x2a2a002a
121172c33676SMaxim Ag.long	0x7a7a7a00,0x3c3c003c
121272c33676SMaxim Ag.long	0x91919100,0xf1f100f1
121372c33676SMaxim Ag.long	0x24242400,0x40400040
121472c33676SMaxim Ag.long	0x08080800,0xd3d300d3
121572c33676SMaxim Ag.long	0xe8e8e800,0xbbbb00bb
121672c33676SMaxim Ag.long	0xa8a8a800,0x43430043
121772c33676SMaxim Ag.long	0x60606000,0x15150015
121872c33676SMaxim Ag.long	0xfcfcfc00,0xadad00ad
121972c33676SMaxim Ag.long	0x69696900,0x77770077
122072c33676SMaxim Ag.long	0x50505000,0x80800080
122172c33676SMaxim Ag.long	0xaaaaaa00,0x82820082
122272c33676SMaxim Ag.long	0xd0d0d000,0xecec00ec
122372c33676SMaxim Ag.long	0xa0a0a000,0x27270027
122472c33676SMaxim Ag.long	0x7d7d7d00,0xe5e500e5
122572c33676SMaxim Ag.long	0xa1a1a100,0x85850085
122672c33676SMaxim Ag.long	0x89898900,0x35350035
122772c33676SMaxim Ag.long	0x62626200,0x0c0c000c
122872c33676SMaxim Ag.long	0x97979700,0x41410041
122972c33676SMaxim Ag.long	0x54545400,0xefef00ef
123072c33676SMaxim Ag.long	0x5b5b5b00,0x93930093
123172c33676SMaxim Ag.long	0x1e1e1e00,0x19190019
123272c33676SMaxim Ag.long	0x95959500,0x21210021
123372c33676SMaxim Ag.long	0xe0e0e000,0x0e0e000e
123472c33676SMaxim Ag.long	0xffffff00,0x4e4e004e
123572c33676SMaxim Ag.long	0x64646400,0x65650065
123672c33676SMaxim Ag.long	0xd2d2d200,0xbdbd00bd
123772c33676SMaxim Ag.long	0x10101000,0xb8b800b8
123872c33676SMaxim Ag.long	0xc4c4c400,0x8f8f008f
123972c33676SMaxim Ag.long	0x00000000,0xebeb00eb
124072c33676SMaxim Ag.long	0x48484800,0xcece00ce
124172c33676SMaxim Ag.long	0xa3a3a300,0x30300030
124272c33676SMaxim Ag.long	0xf7f7f700,0x5f5f005f
124372c33676SMaxim Ag.long	0x75757500,0xc5c500c5
124472c33676SMaxim Ag.long	0xdbdbdb00,0x1a1a001a
124572c33676SMaxim Ag.long	0x8a8a8a00,0xe1e100e1
124672c33676SMaxim Ag.long	0x03030300,0xcaca00ca
124772c33676SMaxim Ag.long	0xe6e6e600,0x47470047
124872c33676SMaxim Ag.long	0xdadada00,0x3d3d003d
124972c33676SMaxim Ag.long	0x09090900,0x01010001
125072c33676SMaxim Ag.long	0x3f3f3f00,0xd6d600d6
125172c33676SMaxim Ag.long	0xdddddd00,0x56560056
125272c33676SMaxim Ag.long	0x94949400,0x4d4d004d
125372c33676SMaxim Ag.long	0x87878700,0x0d0d000d
125472c33676SMaxim Ag.long	0x5c5c5c00,0x66660066
125572c33676SMaxim Ag.long	0x83838300,0xcccc00cc
125672c33676SMaxim Ag.long	0x02020200,0x2d2d002d
125772c33676SMaxim Ag.long	0xcdcdcd00,0x12120012
125872c33676SMaxim Ag.long	0x4a4a4a00,0x20200020
125972c33676SMaxim Ag.long	0x90909000,0xb1b100b1
126072c33676SMaxim Ag.long	0x33333300,0x99990099
126172c33676SMaxim Ag.long	0x73737300,0x4c4c004c
126272c33676SMaxim Ag.long	0x67676700,0xc2c200c2
126372c33676SMaxim Ag.long	0xf6f6f600,0x7e7e007e
126472c33676SMaxim Ag.long	0xf3f3f300,0x05050005
126572c33676SMaxim Ag.long	0x9d9d9d00,0xb7b700b7
126672c33676SMaxim Ag.long	0x7f7f7f00,0x31310031
126772c33676SMaxim Ag.long	0xbfbfbf00,0x17170017
126872c33676SMaxim Ag.long	0xe2e2e200,0xd7d700d7
126972c33676SMaxim Ag.long	0x52525200,0x58580058
127072c33676SMaxim Ag.long	0x9b9b9b00,0x61610061
127172c33676SMaxim Ag.long	0xd8d8d800,0x1b1b001b
127272c33676SMaxim Ag.long	0x26262600,0x1c1c001c
127372c33676SMaxim Ag.long	0xc8c8c800,0x0f0f000f
127472c33676SMaxim Ag.long	0x37373700,0x16160016
127572c33676SMaxim Ag.long	0xc6c6c600,0x18180018
127672c33676SMaxim Ag.long	0x3b3b3b00,0x22220022
127772c33676SMaxim Ag.long	0x81818100,0x44440044
127872c33676SMaxim Ag.long	0x96969600,0xb2b200b2
127972c33676SMaxim Ag.long	0x6f6f6f00,0xb5b500b5
128072c33676SMaxim Ag.long	0x4b4b4b00,0x91910091
128172c33676SMaxim Ag.long	0x13131300,0x08080008
128272c33676SMaxim Ag.long	0xbebebe00,0xa8a800a8
128372c33676SMaxim Ag.long	0x63636300,0xfcfc00fc
128472c33676SMaxim Ag.long	0x2e2e2e00,0x50500050
128572c33676SMaxim Ag.long	0xe9e9e900,0xd0d000d0
128672c33676SMaxim Ag.long	0x79797900,0x7d7d007d
128772c33676SMaxim Ag.long	0xa7a7a700,0x89890089
128872c33676SMaxim Ag.long	0x8c8c8c00,0x97970097
128972c33676SMaxim Ag.long	0x9f9f9f00,0x5b5b005b
129072c33676SMaxim Ag.long	0x6e6e6e00,0x95950095
129172c33676SMaxim Ag.long	0xbcbcbc00,0xffff00ff
129272c33676SMaxim Ag.long	0x8e8e8e00,0xd2d200d2
129372c33676SMaxim Ag.long	0x29292900,0xc4c400c4
129472c33676SMaxim Ag.long	0xf5f5f500,0x48480048
129572c33676SMaxim Ag.long	0xf9f9f900,0xf7f700f7
129672c33676SMaxim Ag.long	0xb6b6b600,0xdbdb00db
129772c33676SMaxim Ag.long	0x2f2f2f00,0x03030003
129872c33676SMaxim Ag.long	0xfdfdfd00,0xdada00da
129972c33676SMaxim Ag.long	0xb4b4b400,0x3f3f003f
130072c33676SMaxim Ag.long	0x59595900,0x94940094
130172c33676SMaxim Ag.long	0x78787800,0x5c5c005c
130272c33676SMaxim Ag.long	0x98989800,0x02020002
130372c33676SMaxim Ag.long	0x06060600,0x4a4a004a
130472c33676SMaxim Ag.long	0x6a6a6a00,0x33330033
130572c33676SMaxim Ag.long	0xe7e7e700,0x67670067
130672c33676SMaxim Ag.long	0x46464600,0xf3f300f3
130772c33676SMaxim Ag.long	0x71717100,0x7f7f007f
130872c33676SMaxim Ag.long	0xbababa00,0xe2e200e2
130972c33676SMaxim Ag.long	0xd4d4d400,0x9b9b009b
131072c33676SMaxim Ag.long	0x25252500,0x26260026
131172c33676SMaxim Ag.long	0xababab00,0x37370037
131272c33676SMaxim Ag.long	0x42424200,0x3b3b003b
131372c33676SMaxim Ag.long	0x88888800,0x96960096
131472c33676SMaxim Ag.long	0xa2a2a200,0x4b4b004b
131572c33676SMaxim Ag.long	0x8d8d8d00,0xbebe00be
131672c33676SMaxim Ag.long	0xfafafa00,0x2e2e002e
131772c33676SMaxim Ag.long	0x72727200,0x79790079
131872c33676SMaxim Ag.long	0x07070700,0x8c8c008c
131972c33676SMaxim Ag.long	0xb9b9b900,0x6e6e006e
132072c33676SMaxim Ag.long	0x55555500,0x8e8e008e
132172c33676SMaxim Ag.long	0xf8f8f800,0xf5f500f5
132272c33676SMaxim Ag.long	0xeeeeee00,0xb6b600b6
132372c33676SMaxim Ag.long	0xacacac00,0xfdfd00fd
132472c33676SMaxim Ag.long	0x0a0a0a00,0x59590059
132572c33676SMaxim Ag.long	0x36363600,0x98980098
132672c33676SMaxim Ag.long	0x49494900,0x6a6a006a
132772c33676SMaxim Ag.long	0x2a2a2a00,0x46460046
132872c33676SMaxim Ag.long	0x68686800,0xbaba00ba
132972c33676SMaxim Ag.long	0x3c3c3c00,0x25250025
133072c33676SMaxim Ag.long	0x38383800,0x42420042
133172c33676SMaxim Ag.long	0xf1f1f100,0xa2a200a2
133272c33676SMaxim Ag.long	0xa4a4a400,0xfafa00fa
133372c33676SMaxim Ag.long	0x40404000,0x07070007
133472c33676SMaxim Ag.long	0x28282800,0x55550055
133572c33676SMaxim Ag.long	0xd3d3d300,0xeeee00ee
133672c33676SMaxim Ag.long	0x7b7b7b00,0x0a0a000a
133772c33676SMaxim Ag.long	0xbbbbbb00,0x49490049
133872c33676SMaxim Ag.long	0xc9c9c900,0x68680068
133972c33676SMaxim Ag.long	0x43434300,0x38380038
134072c33676SMaxim Ag.long	0xc1c1c100,0xa4a400a4
134172c33676SMaxim Ag.long	0x15151500,0x28280028
134272c33676SMaxim Ag.long	0xe3e3e300,0x7b7b007b
134372c33676SMaxim Ag.long	0xadadad00,0xc9c900c9
134472c33676SMaxim Ag.long	0xf4f4f400,0xc1c100c1
134572c33676SMaxim Ag.long	0x77777700,0xe3e300e3
134672c33676SMaxim Ag.long	0xc7c7c700,0xf4f400f4
134772c33676SMaxim Ag.long	0x80808000,0xc7c700c7
134872c33676SMaxim Ag.long	0x9e9e9e00,0x9e9e009e
134972c33676SMaxim Ag.long	0x00e0e0e0,0x38003838
135072c33676SMaxim Ag.long	0x00050505,0x41004141
135172c33676SMaxim Ag.long	0x00585858,0x16001616
135272c33676SMaxim Ag.long	0x00d9d9d9,0x76007676
135372c33676SMaxim Ag.long	0x00676767,0xd900d9d9
135472c33676SMaxim Ag.long	0x004e4e4e,0x93009393
135572c33676SMaxim Ag.long	0x00818181,0x60006060
135672c33676SMaxim Ag.long	0x00cbcbcb,0xf200f2f2
135772c33676SMaxim Ag.long	0x00c9c9c9,0x72007272
135872c33676SMaxim Ag.long	0x000b0b0b,0xc200c2c2
135972c33676SMaxim Ag.long	0x00aeaeae,0xab00abab
136072c33676SMaxim Ag.long	0x006a6a6a,0x9a009a9a
136172c33676SMaxim Ag.long	0x00d5d5d5,0x75007575
136272c33676SMaxim Ag.long	0x00181818,0x06000606
136372c33676SMaxim Ag.long	0x005d5d5d,0x57005757
136472c33676SMaxim Ag.long	0x00828282,0xa000a0a0
136572c33676SMaxim Ag.long	0x00464646,0x91009191
136672c33676SMaxim Ag.long	0x00dfdfdf,0xf700f7f7
136772c33676SMaxim Ag.long	0x00d6d6d6,0xb500b5b5
136872c33676SMaxim Ag.long	0x00272727,0xc900c9c9
136972c33676SMaxim Ag.long	0x008a8a8a,0xa200a2a2
137072c33676SMaxim Ag.long	0x00323232,0x8c008c8c
137172c33676SMaxim Ag.long	0x004b4b4b,0xd200d2d2
137272c33676SMaxim Ag.long	0x00424242,0x90009090
137372c33676SMaxim Ag.long	0x00dbdbdb,0xf600f6f6
137472c33676SMaxim Ag.long	0x001c1c1c,0x07000707
137572c33676SMaxim Ag.long	0x009e9e9e,0xa700a7a7
137672c33676SMaxim Ag.long	0x009c9c9c,0x27002727
137772c33676SMaxim Ag.long	0x003a3a3a,0x8e008e8e
137872c33676SMaxim Ag.long	0x00cacaca,0xb200b2b2
137972c33676SMaxim Ag.long	0x00252525,0x49004949
138072c33676SMaxim Ag.long	0x007b7b7b,0xde00dede
138172c33676SMaxim Ag.long	0x000d0d0d,0x43004343
138272c33676SMaxim Ag.long	0x00717171,0x5c005c5c
138372c33676SMaxim Ag.long	0x005f5f5f,0xd700d7d7
138472c33676SMaxim Ag.long	0x001f1f1f,0xc700c7c7
138572c33676SMaxim Ag.long	0x00f8f8f8,0x3e003e3e
138672c33676SMaxim Ag.long	0x00d7d7d7,0xf500f5f5
138772c33676SMaxim Ag.long	0x003e3e3e,0x8f008f8f
138872c33676SMaxim Ag.long	0x009d9d9d,0x67006767
138972c33676SMaxim Ag.long	0x007c7c7c,0x1f001f1f
139072c33676SMaxim Ag.long	0x00606060,0x18001818
139172c33676SMaxim Ag.long	0x00b9b9b9,0x6e006e6e
139272c33676SMaxim Ag.long	0x00bebebe,0xaf00afaf
139372c33676SMaxim Ag.long	0x00bcbcbc,0x2f002f2f
139472c33676SMaxim Ag.long	0x008b8b8b,0xe200e2e2
139572c33676SMaxim Ag.long	0x00161616,0x85008585
139672c33676SMaxim Ag.long	0x00343434,0x0d000d0d
139772c33676SMaxim Ag.long	0x004d4d4d,0x53005353
139872c33676SMaxim Ag.long	0x00c3c3c3,0xf000f0f0
139972c33676SMaxim Ag.long	0x00727272,0x9c009c9c
140072c33676SMaxim Ag.long	0x00959595,0x65006565
140172c33676SMaxim Ag.long	0x00ababab,0xea00eaea
140272c33676SMaxim Ag.long	0x008e8e8e,0xa300a3a3
140372c33676SMaxim Ag.long	0x00bababa,0xae00aeae
140472c33676SMaxim Ag.long	0x007a7a7a,0x9e009e9e
140572c33676SMaxim Ag.long	0x00b3b3b3,0xec00ecec
140672c33676SMaxim Ag.long	0x00020202,0x80008080
140772c33676SMaxim Ag.long	0x00b4b4b4,0x2d002d2d
140872c33676SMaxim Ag.long	0x00adadad,0x6b006b6b
140972c33676SMaxim Ag.long	0x00a2a2a2,0xa800a8a8
141072c33676SMaxim Ag.long	0x00acacac,0x2b002b2b
141172c33676SMaxim Ag.long	0x00d8d8d8,0x36003636
141272c33676SMaxim Ag.long	0x009a9a9a,0xa600a6a6
141372c33676SMaxim Ag.long	0x00171717,0xc500c5c5
141472c33676SMaxim Ag.long	0x001a1a1a,0x86008686
141572c33676SMaxim Ag.long	0x00353535,0x4d004d4d
141672c33676SMaxim Ag.long	0x00cccccc,0x33003333
141772c33676SMaxim Ag.long	0x00f7f7f7,0xfd00fdfd
141872c33676SMaxim Ag.long	0x00999999,0x66006666
141972c33676SMaxim Ag.long	0x00616161,0x58005858
142072c33676SMaxim Ag.long	0x005a5a5a,0x96009696
142172c33676SMaxim Ag.long	0x00e8e8e8,0x3a003a3a
142272c33676SMaxim Ag.long	0x00242424,0x09000909
142372c33676SMaxim Ag.long	0x00565656,0x95009595
142472c33676SMaxim Ag.long	0x00404040,0x10001010
142572c33676SMaxim Ag.long	0x00e1e1e1,0x78007878
142672c33676SMaxim Ag.long	0x00636363,0xd800d8d8
142772c33676SMaxim Ag.long	0x00090909,0x42004242
142872c33676SMaxim Ag.long	0x00333333,0xcc00cccc
142972c33676SMaxim Ag.long	0x00bfbfbf,0xef00efef
143072c33676SMaxim Ag.long	0x00989898,0x26002626
143172c33676SMaxim Ag.long	0x00979797,0xe500e5e5
143272c33676SMaxim Ag.long	0x00858585,0x61006161
143372c33676SMaxim Ag.long	0x00686868,0x1a001a1a
143472c33676SMaxim Ag.long	0x00fcfcfc,0x3f003f3f
143572c33676SMaxim Ag.long	0x00ececec,0x3b003b3b
143672c33676SMaxim Ag.long	0x000a0a0a,0x82008282
143772c33676SMaxim Ag.long	0x00dadada,0xb600b6b6
143872c33676SMaxim Ag.long	0x006f6f6f,0xdb00dbdb
143972c33676SMaxim Ag.long	0x00535353,0xd400d4d4
144072c33676SMaxim Ag.long	0x00626262,0x98009898
144172c33676SMaxim Ag.long	0x00a3a3a3,0xe800e8e8
144272c33676SMaxim Ag.long	0x002e2e2e,0x8b008b8b
144372c33676SMaxim Ag.long	0x00080808,0x02000202
144472c33676SMaxim Ag.long	0x00afafaf,0xeb00ebeb
144572c33676SMaxim Ag.long	0x00282828,0x0a000a0a
144672c33676SMaxim Ag.long	0x00b0b0b0,0x2c002c2c
144772c33676SMaxim Ag.long	0x00747474,0x1d001d1d
144872c33676SMaxim Ag.long	0x00c2c2c2,0xb000b0b0
144972c33676SMaxim Ag.long	0x00bdbdbd,0x6f006f6f
145072c33676SMaxim Ag.long	0x00363636,0x8d008d8d
145172c33676SMaxim Ag.long	0x00222222,0x88008888
145272c33676SMaxim Ag.long	0x00383838,0x0e000e0e
145372c33676SMaxim Ag.long	0x00646464,0x19001919
145472c33676SMaxim Ag.long	0x001e1e1e,0x87008787
145572c33676SMaxim Ag.long	0x00393939,0x4e004e4e
145672c33676SMaxim Ag.long	0x002c2c2c,0x0b000b0b
145772c33676SMaxim Ag.long	0x00a6a6a6,0xa900a9a9
145872c33676SMaxim Ag.long	0x00303030,0x0c000c0c
145972c33676SMaxim Ag.long	0x00e5e5e5,0x79007979
146072c33676SMaxim Ag.long	0x00444444,0x11001111
146172c33676SMaxim Ag.long	0x00fdfdfd,0x7f007f7f
146272c33676SMaxim Ag.long	0x00888888,0x22002222
146372c33676SMaxim Ag.long	0x009f9f9f,0xe700e7e7
146472c33676SMaxim Ag.long	0x00656565,0x59005959
146572c33676SMaxim Ag.long	0x00878787,0xe100e1e1
146672c33676SMaxim Ag.long	0x006b6b6b,0xda00dada
146772c33676SMaxim Ag.long	0x00f4f4f4,0x3d003d3d
146872c33676SMaxim Ag.long	0x00232323,0xc800c8c8
146972c33676SMaxim Ag.long	0x00484848,0x12001212
147072c33676SMaxim Ag.long	0x00101010,0x04000404
147172c33676SMaxim Ag.long	0x00d1d1d1,0x74007474
147272c33676SMaxim Ag.long	0x00515151,0x54005454
147372c33676SMaxim Ag.long	0x00c0c0c0,0x30003030
147472c33676SMaxim Ag.long	0x00f9f9f9,0x7e007e7e
147572c33676SMaxim Ag.long	0x00d2d2d2,0xb400b4b4
147672c33676SMaxim Ag.long	0x00a0a0a0,0x28002828
147772c33676SMaxim Ag.long	0x00555555,0x55005555
147872c33676SMaxim Ag.long	0x00a1a1a1,0x68006868
147972c33676SMaxim Ag.long	0x00414141,0x50005050
148072c33676SMaxim Ag.long	0x00fafafa,0xbe00bebe
148172c33676SMaxim Ag.long	0x00434343,0xd000d0d0
148272c33676SMaxim Ag.long	0x00131313,0xc400c4c4
148372c33676SMaxim Ag.long	0x00c4c4c4,0x31003131
148472c33676SMaxim Ag.long	0x002f2f2f,0xcb00cbcb
148572c33676SMaxim Ag.long	0x00a8a8a8,0x2a002a2a
148672c33676SMaxim Ag.long	0x00b6b6b6,0xad00adad
148772c33676SMaxim Ag.long	0x003c3c3c,0x0f000f0f
148872c33676SMaxim Ag.long	0x002b2b2b,0xca00caca
148972c33676SMaxim Ag.long	0x00c1c1c1,0x70007070
149072c33676SMaxim Ag.long	0x00ffffff,0xff00ffff
149172c33676SMaxim Ag.long	0x00c8c8c8,0x32003232
149272c33676SMaxim Ag.long	0x00a5a5a5,0x69006969
149372c33676SMaxim Ag.long	0x00202020,0x08000808
149472c33676SMaxim Ag.long	0x00898989,0x62006262
149572c33676SMaxim Ag.long	0x00000000,0x00000000
149672c33676SMaxim Ag.long	0x00909090,0x24002424
149772c33676SMaxim Ag.long	0x00474747,0xd100d1d1
149872c33676SMaxim Ag.long	0x00efefef,0xfb00fbfb
149972c33676SMaxim Ag.long	0x00eaeaea,0xba00baba
150072c33676SMaxim Ag.long	0x00b7b7b7,0xed00eded
150172c33676SMaxim Ag.long	0x00151515,0x45004545
150272c33676SMaxim Ag.long	0x00060606,0x81008181
150372c33676SMaxim Ag.long	0x00cdcdcd,0x73007373
150472c33676SMaxim Ag.long	0x00b5b5b5,0x6d006d6d
150572c33676SMaxim Ag.long	0x00121212,0x84008484
150672c33676SMaxim Ag.long	0x007e7e7e,0x9f009f9f
150772c33676SMaxim Ag.long	0x00bbbbbb,0xee00eeee
150872c33676SMaxim Ag.long	0x00292929,0x4a004a4a
150972c33676SMaxim Ag.long	0x000f0f0f,0xc300c3c3
151072c33676SMaxim Ag.long	0x00b8b8b8,0x2e002e2e
151172c33676SMaxim Ag.long	0x00070707,0xc100c1c1
151272c33676SMaxim Ag.long	0x00040404,0x01000101
151372c33676SMaxim Ag.long	0x009b9b9b,0xe600e6e6
151472c33676SMaxim Ag.long	0x00949494,0x25002525
151572c33676SMaxim Ag.long	0x00212121,0x48004848
151672c33676SMaxim Ag.long	0x00666666,0x99009999
151772c33676SMaxim Ag.long	0x00e6e6e6,0xb900b9b9
151872c33676SMaxim Ag.long	0x00cecece,0xb300b3b3
151972c33676SMaxim Ag.long	0x00ededed,0x7b007b7b
152072c33676SMaxim Ag.long	0x00e7e7e7,0xf900f9f9
152172c33676SMaxim Ag.long	0x003b3b3b,0xce00cece
152272c33676SMaxim Ag.long	0x00fefefe,0xbf00bfbf
152372c33676SMaxim Ag.long	0x007f7f7f,0xdf00dfdf
152472c33676SMaxim Ag.long	0x00c5c5c5,0x71007171
152572c33676SMaxim Ag.long	0x00a4a4a4,0x29002929
152672c33676SMaxim Ag.long	0x00373737,0xcd00cdcd
152772c33676SMaxim Ag.long	0x00b1b1b1,0x6c006c6c
152872c33676SMaxim Ag.long	0x004c4c4c,0x13001313
152972c33676SMaxim Ag.long	0x00919191,0x64006464
153072c33676SMaxim Ag.long	0x006e6e6e,0x9b009b9b
153172c33676SMaxim Ag.long	0x008d8d8d,0x63006363
153272c33676SMaxim Ag.long	0x00767676,0x9d009d9d
153372c33676SMaxim Ag.long	0x00030303,0xc000c0c0
153472c33676SMaxim Ag.long	0x002d2d2d,0x4b004b4b
153572c33676SMaxim Ag.long	0x00dedede,0xb700b7b7
153672c33676SMaxim Ag.long	0x00969696,0xa500a5a5
153772c33676SMaxim Ag.long	0x00262626,0x89008989
153872c33676SMaxim Ag.long	0x007d7d7d,0x5f005f5f
153972c33676SMaxim Ag.long	0x00c6c6c6,0xb100b1b1
154072c33676SMaxim Ag.long	0x005c5c5c,0x17001717
154172c33676SMaxim Ag.long	0x00d3d3d3,0xf400f4f4
154272c33676SMaxim Ag.long	0x00f2f2f2,0xbc00bcbc
154372c33676SMaxim Ag.long	0x004f4f4f,0xd300d3d3
154472c33676SMaxim Ag.long	0x00191919,0x46004646
154572c33676SMaxim Ag.long	0x003f3f3f,0xcf00cfcf
154672c33676SMaxim Ag.long	0x00dcdcdc,0x37003737
154772c33676SMaxim Ag.long	0x00797979,0x5e005e5e
154872c33676SMaxim Ag.long	0x001d1d1d,0x47004747
154972c33676SMaxim Ag.long	0x00525252,0x94009494
155072c33676SMaxim Ag.long	0x00ebebeb,0xfa00fafa
155172c33676SMaxim Ag.long	0x00f3f3f3,0xfc00fcfc
155272c33676SMaxim Ag.long	0x006d6d6d,0x5b005b5b
155372c33676SMaxim Ag.long	0x005e5e5e,0x97009797
155472c33676SMaxim Ag.long	0x00fbfbfb,0xfe00fefe
155572c33676SMaxim Ag.long	0x00696969,0x5a005a5a
155672c33676SMaxim Ag.long	0x00b2b2b2,0xac00acac
155772c33676SMaxim Ag.long	0x00f0f0f0,0x3c003c3c
155872c33676SMaxim Ag.long	0x00313131,0x4c004c4c
155972c33676SMaxim Ag.long	0x000c0c0c,0x03000303
156072c33676SMaxim Ag.long	0x00d4d4d4,0x35003535
156172c33676SMaxim Ag.long	0x00cfcfcf,0xf300f3f3
156272c33676SMaxim Ag.long	0x008c8c8c,0x23002323
156372c33676SMaxim Ag.long	0x00e2e2e2,0xb800b8b8
156472c33676SMaxim Ag.long	0x00757575,0x5d005d5d
156572c33676SMaxim Ag.long	0x00a9a9a9,0x6a006a6a
156672c33676SMaxim Ag.long	0x004a4a4a,0x92009292
156772c33676SMaxim Ag.long	0x00575757,0xd500d5d5
156872c33676SMaxim Ag.long	0x00848484,0x21002121
156972c33676SMaxim Ag.long	0x00111111,0x44004444
157072c33676SMaxim Ag.long	0x00454545,0x51005151
157172c33676SMaxim Ag.long	0x001b1b1b,0xc600c6c6
157272c33676SMaxim Ag.long	0x00f5f5f5,0x7d007d7d
157372c33676SMaxim Ag.long	0x00e4e4e4,0x39003939
157472c33676SMaxim Ag.long	0x000e0e0e,0x83008383
157572c33676SMaxim Ag.long	0x00737373,0xdc00dcdc
157672c33676SMaxim Ag.long	0x00aaaaaa,0xaa00aaaa
157772c33676SMaxim Ag.long	0x00f1f1f1,0x7c007c7c
157872c33676SMaxim Ag.long	0x00dddddd,0x77007777
157972c33676SMaxim Ag.long	0x00595959,0x56005656
158072c33676SMaxim Ag.long	0x00141414,0x05000505
158172c33676SMaxim Ag.long	0x006c6c6c,0x1b001b1b
158272c33676SMaxim Ag.long	0x00929292,0xa400a4a4
158372c33676SMaxim Ag.long	0x00545454,0x15001515
158472c33676SMaxim Ag.long	0x00d0d0d0,0x34003434
158572c33676SMaxim Ag.long	0x00787878,0x1e001e1e
158672c33676SMaxim Ag.long	0x00707070,0x1c001c1c
158772c33676SMaxim Ag.long	0x00e3e3e3,0xf800f8f8
158872c33676SMaxim Ag.long	0x00494949,0x52005252
158972c33676SMaxim Ag.long	0x00808080,0x20002020
159072c33676SMaxim Ag.long	0x00505050,0x14001414
159172c33676SMaxim Ag.long	0x00a7a7a7,0xe900e9e9
159272c33676SMaxim Ag.long	0x00f6f6f6,0xbd00bdbd
159372c33676SMaxim Ag.long	0x00777777,0xdd00dddd
159472c33676SMaxim Ag.long	0x00939393,0xe400e4e4
159572c33676SMaxim Ag.long	0x00868686,0xa100a1a1
159672c33676SMaxim Ag.long	0x00838383,0xe000e0e0
159772c33676SMaxim Ag.long	0x002a2a2a,0x8a008a8a
159872c33676SMaxim Ag.long	0x00c7c7c7,0xf100f1f1
159972c33676SMaxim Ag.long	0x005b5b5b,0xd600d6d6
160072c33676SMaxim Ag.long	0x00e9e9e9,0x7a007a7a
160172c33676SMaxim Ag.long	0x00eeeeee,0xbb00bbbb
160272c33676SMaxim Ag.long	0x008f8f8f,0xe300e3e3
160372c33676SMaxim Ag.long	0x00010101,0x40004040
160472c33676SMaxim Ag.long	0x003d3d3d,0x4f004f4f
160572c33676SMaxim Ag.globl	Camellia_cbc_encrypt
160672c33676SMaxim Ag.type	Camellia_cbc_encrypt,@function
160772c33676SMaxim Ag.align	16
160872c33676SMaxim AgCamellia_cbc_encrypt:
160972c33676SMaxim Ag	cmpq	$0,%rdx
161072c33676SMaxim Ag	je	.Lcbc_abort
161172c33676SMaxim Ag	pushq	%rbx
161272c33676SMaxim Ag	pushq	%rbp
161372c33676SMaxim Ag	pushq	%r12
161472c33676SMaxim Ag	pushq	%r13
161572c33676SMaxim Ag	pushq	%r14
161672c33676SMaxim Ag	pushq	%r15
161772c33676SMaxim Ag.Lcbc_prologue:
161872c33676SMaxim Ag
161972c33676SMaxim Ag	movq	%rsp,%rbp
162072c33676SMaxim Ag	subq	$64,%rsp
162172c33676SMaxim Ag	andq	$-64,%rsp
162272c33676SMaxim Ag
162372c33676SMaxim Ag
162472c33676SMaxim Ag
162572c33676SMaxim Ag	leaq	-64-63(%rcx),%r10
162672c33676SMaxim Ag	subq	%rsp,%r10
162772c33676SMaxim Ag	negq	%r10
162872c33676SMaxim Ag	andq	$960,%r10
162972c33676SMaxim Ag	subq	%r10,%rsp
163072c33676SMaxim Ag
163172c33676SMaxim Ag
163272c33676SMaxim Ag	movq	%rdi,%r12
163372c33676SMaxim Ag	movq	%rsi,%r13
163472c33676SMaxim Ag	movq	%r8,%rbx
163572c33676SMaxim Ag	movq	%rcx,%r14
163672c33676SMaxim Ag	movl	272(%rcx),%r15d
163772c33676SMaxim Ag
163872c33676SMaxim Ag	movq	%r8,40(%rsp)
163972c33676SMaxim Ag	movq	%rbp,48(%rsp)
164072c33676SMaxim Ag
164172c33676SMaxim Ag.Lcbc_body:
164272c33676SMaxim Ag	leaq	.LCamellia_SBOX(%rip),%rbp
164372c33676SMaxim Ag
164472c33676SMaxim Ag	movl	$32,%ecx
164572c33676SMaxim Ag.align	4
164672c33676SMaxim Ag.Lcbc_prefetch_sbox:
164772c33676SMaxim Ag	movq	0(%rbp),%rax
164872c33676SMaxim Ag	movq	32(%rbp),%rsi
164972c33676SMaxim Ag	movq	64(%rbp),%rdi
165072c33676SMaxim Ag	movq	96(%rbp),%r11
165172c33676SMaxim Ag	leaq	128(%rbp),%rbp
165272c33676SMaxim Ag	loop	.Lcbc_prefetch_sbox
165372c33676SMaxim Ag	subq	$4096,%rbp
165472c33676SMaxim Ag	shlq	$6,%r15
165572c33676SMaxim Ag	movq	%rdx,%rcx
165672c33676SMaxim Ag	leaq	(%r14,%r15,1),%r15
165772c33676SMaxim Ag
165872c33676SMaxim Ag	cmpl	$0,%r9d
165972c33676SMaxim Ag	je	.LCBC_DECRYPT
166072c33676SMaxim Ag
166172c33676SMaxim Ag	andq	$-16,%rdx
166272c33676SMaxim Ag	andq	$15,%rcx
166372c33676SMaxim Ag	leaq	(%r12,%rdx,1),%rdx
166472c33676SMaxim Ag	movq	%r14,0(%rsp)
166572c33676SMaxim Ag	movq	%rdx,8(%rsp)
166672c33676SMaxim Ag	movq	%rcx,16(%rsp)
166772c33676SMaxim Ag
166872c33676SMaxim Ag	cmpq	%r12,%rdx
166972c33676SMaxim Ag	movl	0(%rbx),%r8d
167072c33676SMaxim Ag	movl	4(%rbx),%r9d
167172c33676SMaxim Ag	movl	8(%rbx),%r10d
167272c33676SMaxim Ag	movl	12(%rbx),%r11d
167372c33676SMaxim Ag	je	.Lcbc_enc_tail
167472c33676SMaxim Ag	jmp	.Lcbc_eloop
167572c33676SMaxim Ag
167672c33676SMaxim Ag.align	16
167772c33676SMaxim Ag.Lcbc_eloop:
167872c33676SMaxim Ag	xorl	0(%r12),%r8d
167972c33676SMaxim Ag	xorl	4(%r12),%r9d
168072c33676SMaxim Ag	xorl	8(%r12),%r10d
168172c33676SMaxim Ag	bswapl	%r8d
168272c33676SMaxim Ag	xorl	12(%r12),%r11d
168372c33676SMaxim Ag	bswapl	%r9d
168472c33676SMaxim Ag	bswapl	%r10d
168572c33676SMaxim Ag	bswapl	%r11d
168672c33676SMaxim Ag
168772c33676SMaxim Ag	call	_x86_64_Camellia_encrypt
168872c33676SMaxim Ag
168972c33676SMaxim Ag	movq	0(%rsp),%r14
169072c33676SMaxim Ag	bswapl	%r8d
169172c33676SMaxim Ag	movq	8(%rsp),%rdx
169272c33676SMaxim Ag	bswapl	%r9d
169372c33676SMaxim Ag	movq	16(%rsp),%rcx
169472c33676SMaxim Ag	bswapl	%r10d
169572c33676SMaxim Ag	movl	%r8d,0(%r13)
169672c33676SMaxim Ag	bswapl	%r11d
169772c33676SMaxim Ag	movl	%r9d,4(%r13)
169872c33676SMaxim Ag	movl	%r10d,8(%r13)
169972c33676SMaxim Ag	leaq	16(%r12),%r12
170072c33676SMaxim Ag	movl	%r11d,12(%r13)
170172c33676SMaxim Ag	cmpq	%rdx,%r12
170272c33676SMaxim Ag	leaq	16(%r13),%r13
170372c33676SMaxim Ag	jne	.Lcbc_eloop
170472c33676SMaxim Ag
170572c33676SMaxim Ag	cmpq	$0,%rcx
170672c33676SMaxim Ag	jne	.Lcbc_enc_tail
170772c33676SMaxim Ag
170872c33676SMaxim Ag	movq	40(%rsp),%r13
170972c33676SMaxim Ag	movl	%r8d,0(%r13)
171072c33676SMaxim Ag	movl	%r9d,4(%r13)
171172c33676SMaxim Ag	movl	%r10d,8(%r13)
171272c33676SMaxim Ag	movl	%r11d,12(%r13)
171372c33676SMaxim Ag	jmp	.Lcbc_done
171472c33676SMaxim Ag
171572c33676SMaxim Ag.align	16
171672c33676SMaxim Ag.Lcbc_enc_tail:
171772c33676SMaxim Ag	xorq	%rax,%rax
171872c33676SMaxim Ag	movq	%rax,0+24(%rsp)
171972c33676SMaxim Ag	movq	%rax,8+24(%rsp)
172072c33676SMaxim Ag	movq	%rax,16(%rsp)
172172c33676SMaxim Ag
172272c33676SMaxim Ag.Lcbc_enc_pushf:
172372c33676SMaxim Ag	pushfq
172472c33676SMaxim Ag	cld
172572c33676SMaxim Ag	movq	%r12,%rsi
172672c33676SMaxim Ag	leaq	8+24(%rsp),%rdi
172772c33676SMaxim Ag.long	0x9066A4F3
172872c33676SMaxim Ag	popfq
172972c33676SMaxim Ag.Lcbc_enc_popf:
173072c33676SMaxim Ag
173172c33676SMaxim Ag	leaq	24(%rsp),%r12
173272c33676SMaxim Ag	leaq	16+24(%rsp),%rax
173372c33676SMaxim Ag	movq	%rax,8(%rsp)
173472c33676SMaxim Ag	jmp	.Lcbc_eloop
173572c33676SMaxim Ag
173672c33676SMaxim Ag.align	16
173772c33676SMaxim Ag.LCBC_DECRYPT:
173872c33676SMaxim Ag	xchgq	%r14,%r15
173972c33676SMaxim Ag	addq	$15,%rdx
174072c33676SMaxim Ag	andq	$15,%rcx
174172c33676SMaxim Ag	andq	$-16,%rdx
174272c33676SMaxim Ag	movq	%r14,0(%rsp)
174372c33676SMaxim Ag	leaq	(%r12,%rdx,1),%rdx
174472c33676SMaxim Ag	movq	%rdx,8(%rsp)
174572c33676SMaxim Ag	movq	%rcx,16(%rsp)
174672c33676SMaxim Ag
174772c33676SMaxim Ag	movq	(%rbx),%rax
174872c33676SMaxim Ag	movq	8(%rbx),%rbx
174972c33676SMaxim Ag	jmp	.Lcbc_dloop
175072c33676SMaxim Ag.align	16
175172c33676SMaxim Ag.Lcbc_dloop:
175272c33676SMaxim Ag	movl	0(%r12),%r8d
175372c33676SMaxim Ag	movl	4(%r12),%r9d
175472c33676SMaxim Ag	movl	8(%r12),%r10d
175572c33676SMaxim Ag	bswapl	%r8d
175672c33676SMaxim Ag	movl	12(%r12),%r11d
175772c33676SMaxim Ag	bswapl	%r9d
175872c33676SMaxim Ag	movq	%rax,0+24(%rsp)
175972c33676SMaxim Ag	bswapl	%r10d
176072c33676SMaxim Ag	movq	%rbx,8+24(%rsp)
176172c33676SMaxim Ag	bswapl	%r11d
176272c33676SMaxim Ag
176372c33676SMaxim Ag	call	_x86_64_Camellia_decrypt
176472c33676SMaxim Ag
176572c33676SMaxim Ag	movq	0(%rsp),%r14
176672c33676SMaxim Ag	movq	8(%rsp),%rdx
176772c33676SMaxim Ag	movq	16(%rsp),%rcx
176872c33676SMaxim Ag
176972c33676SMaxim Ag	bswapl	%r8d
177072c33676SMaxim Ag	movq	(%r12),%rax
177172c33676SMaxim Ag	bswapl	%r9d
177272c33676SMaxim Ag	movq	8(%r12),%rbx
177372c33676SMaxim Ag	bswapl	%r10d
177472c33676SMaxim Ag	xorl	0+24(%rsp),%r8d
177572c33676SMaxim Ag	bswapl	%r11d
177672c33676SMaxim Ag	xorl	4+24(%rsp),%r9d
177772c33676SMaxim Ag	xorl	8+24(%rsp),%r10d
177872c33676SMaxim Ag	leaq	16(%r12),%r12
177972c33676SMaxim Ag	xorl	12+24(%rsp),%r11d
178072c33676SMaxim Ag	cmpq	%rdx,%r12
178172c33676SMaxim Ag	je	.Lcbc_ddone
178272c33676SMaxim Ag
178372c33676SMaxim Ag	movl	%r8d,0(%r13)
178472c33676SMaxim Ag	movl	%r9d,4(%r13)
178572c33676SMaxim Ag	movl	%r10d,8(%r13)
178672c33676SMaxim Ag	movl	%r11d,12(%r13)
178772c33676SMaxim Ag
178872c33676SMaxim Ag	leaq	16(%r13),%r13
178972c33676SMaxim Ag	jmp	.Lcbc_dloop
179072c33676SMaxim Ag
179172c33676SMaxim Ag.align	16
179272c33676SMaxim Ag.Lcbc_ddone:
179372c33676SMaxim Ag	movq	40(%rsp),%rdx
179472c33676SMaxim Ag	cmpq	$0,%rcx
179572c33676SMaxim Ag	jne	.Lcbc_dec_tail
179672c33676SMaxim Ag
179772c33676SMaxim Ag	movl	%r8d,0(%r13)
179872c33676SMaxim Ag	movl	%r9d,4(%r13)
179972c33676SMaxim Ag	movl	%r10d,8(%r13)
180072c33676SMaxim Ag	movl	%r11d,12(%r13)
180172c33676SMaxim Ag
180272c33676SMaxim Ag	movq	%rax,(%rdx)
180372c33676SMaxim Ag	movq	%rbx,8(%rdx)
180472c33676SMaxim Ag	jmp	.Lcbc_done
180572c33676SMaxim Ag.align	16
180672c33676SMaxim Ag.Lcbc_dec_tail:
180772c33676SMaxim Ag	movl	%r8d,0+24(%rsp)
180872c33676SMaxim Ag	movl	%r9d,4+24(%rsp)
180972c33676SMaxim Ag	movl	%r10d,8+24(%rsp)
181072c33676SMaxim Ag	movl	%r11d,12+24(%rsp)
181172c33676SMaxim Ag
181272c33676SMaxim Ag.Lcbc_dec_pushf:
181372c33676SMaxim Ag	pushfq
181472c33676SMaxim Ag	cld
181572c33676SMaxim Ag	leaq	8+24(%rsp),%rsi
181672c33676SMaxim Ag	leaq	(%r13),%rdi
181772c33676SMaxim Ag.long	0x9066A4F3
181872c33676SMaxim Ag	popfq
181972c33676SMaxim Ag.Lcbc_dec_popf:
182072c33676SMaxim Ag
182172c33676SMaxim Ag	movq	%rax,(%rdx)
182272c33676SMaxim Ag	movq	%rbx,8(%rdx)
182372c33676SMaxim Ag	jmp	.Lcbc_done
182472c33676SMaxim Ag
182572c33676SMaxim Ag.align	16
182672c33676SMaxim Ag.Lcbc_done:
182772c33676SMaxim Ag	movq	48(%rsp),%rcx
182872c33676SMaxim Ag	movq	0(%rcx),%r15
182972c33676SMaxim Ag	movq	8(%rcx),%r14
183072c33676SMaxim Ag	movq	16(%rcx),%r13
183172c33676SMaxim Ag	movq	24(%rcx),%r12
183272c33676SMaxim Ag	movq	32(%rcx),%rbp
183372c33676SMaxim Ag	movq	40(%rcx),%rbx
183472c33676SMaxim Ag	leaq	48(%rcx),%rsp
183572c33676SMaxim Ag.Lcbc_abort:
183672c33676SMaxim Ag	retq
183772c33676SMaxim Ag.size	Camellia_cbc_encrypt,.-Camellia_cbc_encrypt
183872c33676SMaxim Ag
183972c33676SMaxim Ag.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
184072c33676SMaxim Ag#if defined(HAVE_GNU_STACK)
184172c33676SMaxim Ag.section .note.GNU-stack,"",%progbits
184272c33676SMaxim Ag#endif
1843