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