4756 lines
93 KiB
ArmAsm
4756 lines
93 KiB
ArmAsm
/* $FreeBSD$ */
|
|
/* Do not modify. This file is auto-generated from cmll-x86.pl. */
|
|
#ifdef PIC
|
|
.file "cmll-x86.S"
|
|
.text
|
|
.globl Camellia_EncryptBlock_Rounds
|
|
.type Camellia_EncryptBlock_Rounds,@function
|
|
.align 16
|
|
Camellia_EncryptBlock_Rounds:
|
|
.L_Camellia_EncryptBlock_Rounds_begin:
|
|
pushl %ebp
|
|
pushl %ebx
|
|
pushl %esi
|
|
pushl %edi
|
|
movl 20(%esp),%eax
|
|
movl 24(%esp),%esi
|
|
movl 28(%esp),%edi
|
|
movl %esp,%ebx
|
|
subl $28,%esp
|
|
andl $-64,%esp
|
|
leal -127(%edi),%ecx
|
|
subl %esp,%ecx
|
|
negl %ecx
|
|
andl $960,%ecx
|
|
subl %ecx,%esp
|
|
addl $4,%esp
|
|
shll $6,%eax
|
|
leal (%edi,%eax,1),%eax
|
|
movl %ebx,20(%esp)
|
|
movl %eax,16(%esp)
|
|
call .L000pic_point
|
|
.L000pic_point:
|
|
popl %ebp
|
|
leal .LCamellia_SBOX-.L000pic_point(%ebp),%ebp
|
|
movl (%esi),%eax
|
|
movl 4(%esi),%ebx
|
|
movl 8(%esi),%ecx
|
|
bswap %eax
|
|
movl 12(%esi),%edx
|
|
bswap %ebx
|
|
bswap %ecx
|
|
bswap %edx
|
|
call _x86_Camellia_encrypt
|
|
movl 20(%esp),%esp
|
|
bswap %eax
|
|
movl 32(%esp),%esi
|
|
bswap %ebx
|
|
bswap %ecx
|
|
bswap %edx
|
|
movl %eax,(%esi)
|
|
movl %ebx,4(%esi)
|
|
movl %ecx,8(%esi)
|
|
movl %edx,12(%esi)
|
|
popl %edi
|
|
popl %esi
|
|
popl %ebx
|
|
popl %ebp
|
|
ret
|
|
.size Camellia_EncryptBlock_Rounds,.-.L_Camellia_EncryptBlock_Rounds_begin
|
|
.globl Camellia_EncryptBlock
|
|
.type Camellia_EncryptBlock,@function
|
|
.align 16
|
|
Camellia_EncryptBlock:
|
|
.L_Camellia_EncryptBlock_begin:
|
|
movl $128,%eax
|
|
subl 4(%esp),%eax
|
|
movl $3,%eax
|
|
adcl $0,%eax
|
|
movl %eax,4(%esp)
|
|
jmp .L_Camellia_EncryptBlock_Rounds_begin
|
|
.size Camellia_EncryptBlock,.-.L_Camellia_EncryptBlock_begin
|
|
.globl Camellia_encrypt
|
|
.type Camellia_encrypt,@function
|
|
.align 16
|
|
Camellia_encrypt:
|
|
.L_Camellia_encrypt_begin:
|
|
pushl %ebp
|
|
pushl %ebx
|
|
pushl %esi
|
|
pushl %edi
|
|
movl 20(%esp),%esi
|
|
movl 28(%esp),%edi
|
|
movl %esp,%ebx
|
|
subl $28,%esp
|
|
andl $-64,%esp
|
|
movl 272(%edi),%eax
|
|
leal -127(%edi),%ecx
|
|
subl %esp,%ecx
|
|
negl %ecx
|
|
andl $960,%ecx
|
|
subl %ecx,%esp
|
|
addl $4,%esp
|
|
shll $6,%eax
|
|
leal (%edi,%eax,1),%eax
|
|
movl %ebx,20(%esp)
|
|
movl %eax,16(%esp)
|
|
call .L001pic_point
|
|
.L001pic_point:
|
|
popl %ebp
|
|
leal .LCamellia_SBOX-.L001pic_point(%ebp),%ebp
|
|
movl (%esi),%eax
|
|
movl 4(%esi),%ebx
|
|
movl 8(%esi),%ecx
|
|
bswap %eax
|
|
movl 12(%esi),%edx
|
|
bswap %ebx
|
|
bswap %ecx
|
|
bswap %edx
|
|
call _x86_Camellia_encrypt
|
|
movl 20(%esp),%esp
|
|
bswap %eax
|
|
movl 24(%esp),%esi
|
|
bswap %ebx
|
|
bswap %ecx
|
|
bswap %edx
|
|
movl %eax,(%esi)
|
|
movl %ebx,4(%esi)
|
|
movl %ecx,8(%esi)
|
|
movl %edx,12(%esi)
|
|
popl %edi
|
|
popl %esi
|
|
popl %ebx
|
|
popl %ebp
|
|
ret
|
|
.size Camellia_encrypt,.-.L_Camellia_encrypt_begin
|
|
.type _x86_Camellia_encrypt,@function
|
|
.align 16
|
|
_x86_Camellia_encrypt:
|
|
xorl (%edi),%eax
|
|
xorl 4(%edi),%ebx
|
|
xorl 8(%edi),%ecx
|
|
xorl 12(%edi),%edx
|
|
movl 16(%edi),%esi
|
|
movl %eax,4(%esp)
|
|
movl %ebx,8(%esp)
|
|
movl %ecx,12(%esp)
|
|
movl %edx,16(%esp)
|
|
.align 16
|
|
.L002loop:
|
|
xorl %esi,%eax
|
|
xorl 20(%edi),%ebx
|
|
movzbl %ah,%esi
|
|
movl 2052(%ebp,%esi,8),%edx
|
|
movzbl %al,%esi
|
|
xorl 4(%ebp,%esi,8),%edx
|
|
shrl $16,%eax
|
|
movzbl %bl,%esi
|
|
movl (%ebp,%esi,8),%ecx
|
|
movzbl %ah,%esi
|
|
xorl (%ebp,%esi,8),%edx
|
|
movzbl %bh,%esi
|
|
xorl 4(%ebp,%esi,8),%ecx
|
|
shrl $16,%ebx
|
|
movzbl %al,%eax
|
|
xorl 2048(%ebp,%eax,8),%edx
|
|
movzbl %bh,%esi
|
|
movl 16(%esp),%eax
|
|
xorl %edx,%ecx
|
|
rorl $8,%edx
|
|
xorl 2048(%ebp,%esi,8),%ecx
|
|
movzbl %bl,%esi
|
|
movl 12(%esp),%ebx
|
|
xorl %eax,%edx
|
|
xorl 2052(%ebp,%esi,8),%ecx
|
|
movl 24(%edi),%esi
|
|
xorl %ecx,%edx
|
|
movl %edx,16(%esp)
|
|
xorl %ebx,%ecx
|
|
movl %ecx,12(%esp)
|
|
xorl %esi,%ecx
|
|
xorl 28(%edi),%edx
|
|
movzbl %ch,%esi
|
|
movl 2052(%ebp,%esi,8),%ebx
|
|
movzbl %cl,%esi
|
|
xorl 4(%ebp,%esi,8),%ebx
|
|
shrl $16,%ecx
|
|
movzbl %dl,%esi
|
|
movl (%ebp,%esi,8),%eax
|
|
movzbl %ch,%esi
|
|
xorl (%ebp,%esi,8),%ebx
|
|
movzbl %dh,%esi
|
|
xorl 4(%ebp,%esi,8),%eax
|
|
shrl $16,%edx
|
|
movzbl %cl,%ecx
|
|
xorl 2048(%ebp,%ecx,8),%ebx
|
|
movzbl %dh,%esi
|
|
movl 8(%esp),%ecx
|
|
xorl %ebx,%eax
|
|
rorl $8,%ebx
|
|
xorl 2048(%ebp,%esi,8),%eax
|
|
movzbl %dl,%esi
|
|
movl 4(%esp),%edx
|
|
xorl %ecx,%ebx
|
|
xorl 2052(%ebp,%esi,8),%eax
|
|
movl 32(%edi),%esi
|
|
xorl %eax,%ebx
|
|
movl %ebx,8(%esp)
|
|
xorl %edx,%eax
|
|
movl %eax,4(%esp)
|
|
xorl %esi,%eax
|
|
xorl 36(%edi),%ebx
|
|
movzbl %ah,%esi
|
|
movl 2052(%ebp,%esi,8),%edx
|
|
movzbl %al,%esi
|
|
xorl 4(%ebp,%esi,8),%edx
|
|
shrl $16,%eax
|
|
movzbl %bl,%esi
|
|
movl (%ebp,%esi,8),%ecx
|
|
movzbl %ah,%esi
|
|
xorl (%ebp,%esi,8),%edx
|
|
movzbl %bh,%esi
|
|
xorl 4(%ebp,%esi,8),%ecx
|
|
shrl $16,%ebx
|
|
movzbl %al,%eax
|
|
xorl 2048(%ebp,%eax,8),%edx
|
|
movzbl %bh,%esi
|
|
movl 16(%esp),%eax
|
|
xorl %edx,%ecx
|
|
rorl $8,%edx
|
|
xorl 2048(%ebp,%esi,8),%ecx
|
|
movzbl %bl,%esi
|
|
movl 12(%esp),%ebx
|
|
xorl %eax,%edx
|
|
xorl 2052(%ebp,%esi,8),%ecx
|
|
movl 40(%edi),%esi
|
|
xorl %ecx,%edx
|
|
movl %edx,16(%esp)
|
|
xorl %ebx,%ecx
|
|
movl %ecx,12(%esp)
|
|
xorl %esi,%ecx
|
|
xorl 44(%edi),%edx
|
|
movzbl %ch,%esi
|
|
movl 2052(%ebp,%esi,8),%ebx
|
|
movzbl %cl,%esi
|
|
xorl 4(%ebp,%esi,8),%ebx
|
|
shrl $16,%ecx
|
|
movzbl %dl,%esi
|
|
movl (%ebp,%esi,8),%eax
|
|
movzbl %ch,%esi
|
|
xorl (%ebp,%esi,8),%ebx
|
|
movzbl %dh,%esi
|
|
xorl 4(%ebp,%esi,8),%eax
|
|
shrl $16,%edx
|
|
movzbl %cl,%ecx
|
|
xorl 2048(%ebp,%ecx,8),%ebx
|
|
movzbl %dh,%esi
|
|
movl 8(%esp),%ecx
|
|
xorl %ebx,%eax
|
|
rorl $8,%ebx
|
|
xorl 2048(%ebp,%esi,8),%eax
|
|
movzbl %dl,%esi
|
|
movl 4(%esp),%edx
|
|
xorl %ecx,%ebx
|
|
xorl 2052(%ebp,%esi,8),%eax
|
|
movl 48(%edi),%esi
|
|
xorl %eax,%ebx
|
|
movl %ebx,8(%esp)
|
|
xorl %edx,%eax
|
|
movl %eax,4(%esp)
|
|
xorl %esi,%eax
|
|
xorl 52(%edi),%ebx
|
|
movzbl %ah,%esi
|
|
movl 2052(%ebp,%esi,8),%edx
|
|
movzbl %al,%esi
|
|
xorl 4(%ebp,%esi,8),%edx
|
|
shrl $16,%eax
|
|
movzbl %bl,%esi
|
|
movl (%ebp,%esi,8),%ecx
|
|
movzbl %ah,%esi
|
|
xorl (%ebp,%esi,8),%edx
|
|
movzbl %bh,%esi
|
|
xorl 4(%ebp,%esi,8),%ecx
|
|
shrl $16,%ebx
|
|
movzbl %al,%eax
|
|
xorl 2048(%ebp,%eax,8),%edx
|
|
movzbl %bh,%esi
|
|
movl 16(%esp),%eax
|
|
xorl %edx,%ecx
|
|
rorl $8,%edx
|
|
xorl 2048(%ebp,%esi,8),%ecx
|
|
movzbl %bl,%esi
|
|
movl 12(%esp),%ebx
|
|
xorl %eax,%edx
|
|
xorl 2052(%ebp,%esi,8),%ecx
|
|
movl 56(%edi),%esi
|
|
xorl %ecx,%edx
|
|
movl %edx,16(%esp)
|
|
xorl %ebx,%ecx
|
|
movl %ecx,12(%esp)
|
|
xorl %esi,%ecx
|
|
xorl 60(%edi),%edx
|
|
movzbl %ch,%esi
|
|
movl 2052(%ebp,%esi,8),%ebx
|
|
movzbl %cl,%esi
|
|
xorl 4(%ebp,%esi,8),%ebx
|
|
shrl $16,%ecx
|
|
movzbl %dl,%esi
|
|
movl (%ebp,%esi,8),%eax
|
|
movzbl %ch,%esi
|
|
xorl (%ebp,%esi,8),%ebx
|
|
movzbl %dh,%esi
|
|
xorl 4(%ebp,%esi,8),%eax
|
|
shrl $16,%edx
|
|
movzbl %cl,%ecx
|
|
xorl 2048(%ebp,%ecx,8),%ebx
|
|
movzbl %dh,%esi
|
|
movl 8(%esp),%ecx
|
|
xorl %ebx,%eax
|
|
rorl $8,%ebx
|
|
xorl 2048(%ebp,%esi,8),%eax
|
|
movzbl %dl,%esi
|
|
movl 4(%esp),%edx
|
|
xorl %ecx,%ebx
|
|
xorl 2052(%ebp,%esi,8),%eax
|
|
movl 64(%edi),%esi
|
|
xorl %eax,%ebx
|
|
movl %ebx,8(%esp)
|
|
xorl %edx,%eax
|
|
movl %eax,4(%esp)
|
|
addl $64,%edi
|
|
cmpl 20(%esp),%edi
|
|
je .L003done
|
|
andl %eax,%esi
|
|
movl 16(%esp),%edx
|
|
roll $1,%esi
|
|
movl %edx,%ecx
|
|
xorl %esi,%ebx
|
|
orl 12(%edi),%ecx
|
|
movl %ebx,8(%esp)
|
|
xorl 12(%esp),%ecx
|
|
movl 4(%edi),%esi
|
|
movl %ecx,12(%esp)
|
|
orl %ebx,%esi
|
|
andl 8(%edi),%ecx
|
|
xorl %esi,%eax
|
|
roll $1,%ecx
|
|
movl %eax,4(%esp)
|
|
xorl %ecx,%edx
|
|
movl 16(%edi),%esi
|
|
movl %edx,16(%esp)
|
|
jmp .L002loop
|
|
.align 8
|
|
.L003done:
|
|
movl %eax,%ecx
|
|
movl %ebx,%edx
|
|
movl 12(%esp),%eax
|
|
movl 16(%esp),%ebx
|
|
xorl %esi,%eax
|
|
xorl 4(%edi),%ebx
|
|
xorl 8(%edi),%ecx
|
|
xorl 12(%edi),%edx
|
|
ret
|
|
.size _x86_Camellia_encrypt,.-_x86_Camellia_encrypt
|
|
.globl Camellia_DecryptBlock_Rounds
|
|
.type Camellia_DecryptBlock_Rounds,@function
|
|
.align 16
|
|
Camellia_DecryptBlock_Rounds:
|
|
.L_Camellia_DecryptBlock_Rounds_begin:
|
|
pushl %ebp
|
|
pushl %ebx
|
|
pushl %esi
|
|
pushl %edi
|
|
movl 20(%esp),%eax
|
|
movl 24(%esp),%esi
|
|
movl 28(%esp),%edi
|
|
movl %esp,%ebx
|
|
subl $28,%esp
|
|
andl $-64,%esp
|
|
leal -127(%edi),%ecx
|
|
subl %esp,%ecx
|
|
negl %ecx
|
|
andl $960,%ecx
|
|
subl %ecx,%esp
|
|
addl $4,%esp
|
|
shll $6,%eax
|
|
movl %edi,16(%esp)
|
|
leal (%edi,%eax,1),%edi
|
|
movl %ebx,20(%esp)
|
|
call .L004pic_point
|
|
.L004pic_point:
|
|
popl %ebp
|
|
leal .LCamellia_SBOX-.L004pic_point(%ebp),%ebp
|
|
movl (%esi),%eax
|
|
movl 4(%esi),%ebx
|
|
movl 8(%esi),%ecx
|
|
bswap %eax
|
|
movl 12(%esi),%edx
|
|
bswap %ebx
|
|
bswap %ecx
|
|
bswap %edx
|
|
call _x86_Camellia_decrypt
|
|
movl 20(%esp),%esp
|
|
bswap %eax
|
|
movl 32(%esp),%esi
|
|
bswap %ebx
|
|
bswap %ecx
|
|
bswap %edx
|
|
movl %eax,(%esi)
|
|
movl %ebx,4(%esi)
|
|
movl %ecx,8(%esi)
|
|
movl %edx,12(%esi)
|
|
popl %edi
|
|
popl %esi
|
|
popl %ebx
|
|
popl %ebp
|
|
ret
|
|
.size Camellia_DecryptBlock_Rounds,.-.L_Camellia_DecryptBlock_Rounds_begin
|
|
.globl Camellia_DecryptBlock
|
|
.type Camellia_DecryptBlock,@function
|
|
.align 16
|
|
Camellia_DecryptBlock:
|
|
.L_Camellia_DecryptBlock_begin:
|
|
movl $128,%eax
|
|
subl 4(%esp),%eax
|
|
movl $3,%eax
|
|
adcl $0,%eax
|
|
movl %eax,4(%esp)
|
|
jmp .L_Camellia_DecryptBlock_Rounds_begin
|
|
.size Camellia_DecryptBlock,.-.L_Camellia_DecryptBlock_begin
|
|
.globl Camellia_decrypt
|
|
.type Camellia_decrypt,@function
|
|
.align 16
|
|
Camellia_decrypt:
|
|
.L_Camellia_decrypt_begin:
|
|
pushl %ebp
|
|
pushl %ebx
|
|
pushl %esi
|
|
pushl %edi
|
|
movl 20(%esp),%esi
|
|
movl 28(%esp),%edi
|
|
movl %esp,%ebx
|
|
subl $28,%esp
|
|
andl $-64,%esp
|
|
movl 272(%edi),%eax
|
|
leal -127(%edi),%ecx
|
|
subl %esp,%ecx
|
|
negl %ecx
|
|
andl $960,%ecx
|
|
subl %ecx,%esp
|
|
addl $4,%esp
|
|
shll $6,%eax
|
|
movl %edi,16(%esp)
|
|
leal (%edi,%eax,1),%edi
|
|
movl %ebx,20(%esp)
|
|
call .L005pic_point
|
|
.L005pic_point:
|
|
popl %ebp
|
|
leal .LCamellia_SBOX-.L005pic_point(%ebp),%ebp
|
|
movl (%esi),%eax
|
|
movl 4(%esi),%ebx
|
|
movl 8(%esi),%ecx
|
|
bswap %eax
|
|
movl 12(%esi),%edx
|
|
bswap %ebx
|
|
bswap %ecx
|
|
bswap %edx
|
|
call _x86_Camellia_decrypt
|
|
movl 20(%esp),%esp
|
|
bswap %eax
|
|
movl 24(%esp),%esi
|
|
bswap %ebx
|
|
bswap %ecx
|
|
bswap %edx
|
|
movl %eax,(%esi)
|
|
movl %ebx,4(%esi)
|
|
movl %ecx,8(%esi)
|
|
movl %edx,12(%esi)
|
|
popl %edi
|
|
popl %esi
|
|
popl %ebx
|
|
popl %ebp
|
|
ret
|
|
.size Camellia_decrypt,.-.L_Camellia_decrypt_begin
|
|
.type _x86_Camellia_decrypt,@function
|
|
.align 16
|
|
_x86_Camellia_decrypt:
|
|
xorl (%edi),%eax
|
|
xorl 4(%edi),%ebx
|
|
xorl 8(%edi),%ecx
|
|
xorl 12(%edi),%edx
|
|
movl -8(%edi),%esi
|
|
movl %eax,4(%esp)
|
|
movl %ebx,8(%esp)
|
|
movl %ecx,12(%esp)
|
|
movl %edx,16(%esp)
|
|
.align 16
|
|
.L006loop:
|
|
xorl %esi,%eax
|
|
xorl -4(%edi),%ebx
|
|
movzbl %ah,%esi
|
|
movl 2052(%ebp,%esi,8),%edx
|
|
movzbl %al,%esi
|
|
xorl 4(%ebp,%esi,8),%edx
|
|
shrl $16,%eax
|
|
movzbl %bl,%esi
|
|
movl (%ebp,%esi,8),%ecx
|
|
movzbl %ah,%esi
|
|
xorl (%ebp,%esi,8),%edx
|
|
movzbl %bh,%esi
|
|
xorl 4(%ebp,%esi,8),%ecx
|
|
shrl $16,%ebx
|
|
movzbl %al,%eax
|
|
xorl 2048(%ebp,%eax,8),%edx
|
|
movzbl %bh,%esi
|
|
movl 16(%esp),%eax
|
|
xorl %edx,%ecx
|
|
rorl $8,%edx
|
|
xorl 2048(%ebp,%esi,8),%ecx
|
|
movzbl %bl,%esi
|
|
movl 12(%esp),%ebx
|
|
xorl %eax,%edx
|
|
xorl 2052(%ebp,%esi,8),%ecx
|
|
movl -16(%edi),%esi
|
|
xorl %ecx,%edx
|
|
movl %edx,16(%esp)
|
|
xorl %ebx,%ecx
|
|
movl %ecx,12(%esp)
|
|
xorl %esi,%ecx
|
|
xorl -12(%edi),%edx
|
|
movzbl %ch,%esi
|
|
movl 2052(%ebp,%esi,8),%ebx
|
|
movzbl %cl,%esi
|
|
xorl 4(%ebp,%esi,8),%ebx
|
|
shrl $16,%ecx
|
|
movzbl %dl,%esi
|
|
movl (%ebp,%esi,8),%eax
|
|
movzbl %ch,%esi
|
|
xorl (%ebp,%esi,8),%ebx
|
|
movzbl %dh,%esi
|
|
xorl 4(%ebp,%esi,8),%eax
|
|
shrl $16,%edx
|
|
movzbl %cl,%ecx
|
|
xorl 2048(%ebp,%ecx,8),%ebx
|
|
movzbl %dh,%esi
|
|
movl 8(%esp),%ecx
|
|
xorl %ebx,%eax
|
|
rorl $8,%ebx
|
|
xorl 2048(%ebp,%esi,8),%eax
|
|
movzbl %dl,%esi
|
|
movl 4(%esp),%edx
|
|
xorl %ecx,%ebx
|
|
xorl 2052(%ebp,%esi,8),%eax
|
|
movl -24(%edi),%esi
|
|
xorl %eax,%ebx
|
|
movl %ebx,8(%esp)
|
|
xorl %edx,%eax
|
|
movl %eax,4(%esp)
|
|
xorl %esi,%eax
|
|
xorl -20(%edi),%ebx
|
|
movzbl %ah,%esi
|
|
movl 2052(%ebp,%esi,8),%edx
|
|
movzbl %al,%esi
|
|
xorl 4(%ebp,%esi,8),%edx
|
|
shrl $16,%eax
|
|
movzbl %bl,%esi
|
|
movl (%ebp,%esi,8),%ecx
|
|
movzbl %ah,%esi
|
|
xorl (%ebp,%esi,8),%edx
|
|
movzbl %bh,%esi
|
|
xorl 4(%ebp,%esi,8),%ecx
|
|
shrl $16,%ebx
|
|
movzbl %al,%eax
|
|
xorl 2048(%ebp,%eax,8),%edx
|
|
movzbl %bh,%esi
|
|
movl 16(%esp),%eax
|
|
xorl %edx,%ecx
|
|
rorl $8,%edx
|
|
xorl 2048(%ebp,%esi,8),%ecx
|
|
movzbl %bl,%esi
|
|
movl 12(%esp),%ebx
|
|
xorl %eax,%edx
|
|
xorl 2052(%ebp,%esi,8),%ecx
|
|
movl -32(%edi),%esi
|
|
xorl %ecx,%edx
|
|
movl %edx,16(%esp)
|
|
xorl %ebx,%ecx
|
|
movl %ecx,12(%esp)
|
|
xorl %esi,%ecx
|
|
xorl -28(%edi),%edx
|
|
movzbl %ch,%esi
|
|
movl 2052(%ebp,%esi,8),%ebx
|
|
movzbl %cl,%esi
|
|
xorl 4(%ebp,%esi,8),%ebx
|
|
shrl $16,%ecx
|
|
movzbl %dl,%esi
|
|
movl (%ebp,%esi,8),%eax
|
|
movzbl %ch,%esi
|
|
xorl (%ebp,%esi,8),%ebx
|
|
movzbl %dh,%esi
|
|
xorl 4(%ebp,%esi,8),%eax
|
|
shrl $16,%edx
|
|
movzbl %cl,%ecx
|
|
xorl 2048(%ebp,%ecx,8),%ebx
|
|
movzbl %dh,%esi
|
|
movl 8(%esp),%ecx
|
|
xorl %ebx,%eax
|
|
rorl $8,%ebx
|
|
xorl 2048(%ebp,%esi,8),%eax
|
|
movzbl %dl,%esi
|
|
movl 4(%esp),%edx
|
|
xorl %ecx,%ebx
|
|
xorl 2052(%ebp,%esi,8),%eax
|
|
movl -40(%edi),%esi
|
|
xorl %eax,%ebx
|
|
movl %ebx,8(%esp)
|
|
xorl %edx,%eax
|
|
movl %eax,4(%esp)
|
|
xorl %esi,%eax
|
|
xorl -36(%edi),%ebx
|
|
movzbl %ah,%esi
|
|
movl 2052(%ebp,%esi,8),%edx
|
|
movzbl %al,%esi
|
|
xorl 4(%ebp,%esi,8),%edx
|
|
shrl $16,%eax
|
|
movzbl %bl,%esi
|
|
movl (%ebp,%esi,8),%ecx
|
|
movzbl %ah,%esi
|
|
xorl (%ebp,%esi,8),%edx
|
|
movzbl %bh,%esi
|
|
xorl 4(%ebp,%esi,8),%ecx
|
|
shrl $16,%ebx
|
|
movzbl %al,%eax
|
|
xorl 2048(%ebp,%eax,8),%edx
|
|
movzbl %bh,%esi
|
|
movl 16(%esp),%eax
|
|
xorl %edx,%ecx
|
|
rorl $8,%edx
|
|
xorl 2048(%ebp,%esi,8),%ecx
|
|
movzbl %bl,%esi
|
|
movl 12(%esp),%ebx
|
|
xorl %eax,%edx
|
|
xorl 2052(%ebp,%esi,8),%ecx
|
|
movl -48(%edi),%esi
|
|
xorl %ecx,%edx
|
|
movl %edx,16(%esp)
|
|
xorl %ebx,%ecx
|
|
movl %ecx,12(%esp)
|
|
xorl %esi,%ecx
|
|
xorl -44(%edi),%edx
|
|
movzbl %ch,%esi
|
|
movl 2052(%ebp,%esi,8),%ebx
|
|
movzbl %cl,%esi
|
|
xorl 4(%ebp,%esi,8),%ebx
|
|
shrl $16,%ecx
|
|
movzbl %dl,%esi
|
|
movl (%ebp,%esi,8),%eax
|
|
movzbl %ch,%esi
|
|
xorl (%ebp,%esi,8),%ebx
|
|
movzbl %dh,%esi
|
|
xorl 4(%ebp,%esi,8),%eax
|
|
shrl $16,%edx
|
|
movzbl %cl,%ecx
|
|
xorl 2048(%ebp,%ecx,8),%ebx
|
|
movzbl %dh,%esi
|
|
movl 8(%esp),%ecx
|
|
xorl %ebx,%eax
|
|
rorl $8,%ebx
|
|
xorl 2048(%ebp,%esi,8),%eax
|
|
movzbl %dl,%esi
|
|
movl 4(%esp),%edx
|
|
xorl %ecx,%ebx
|
|
xorl 2052(%ebp,%esi,8),%eax
|
|
movl -56(%edi),%esi
|
|
xorl %eax,%ebx
|
|
movl %ebx,8(%esp)
|
|
xorl %edx,%eax
|
|
movl %eax,4(%esp)
|
|
subl $64,%edi
|
|
cmpl 20(%esp),%edi
|
|
je .L007done
|
|
andl %eax,%esi
|
|
movl 16(%esp),%edx
|
|
roll $1,%esi
|
|
movl %edx,%ecx
|
|
xorl %esi,%ebx
|
|
orl 4(%edi),%ecx
|
|
movl %ebx,8(%esp)
|
|
xorl 12(%esp),%ecx
|
|
movl 12(%edi),%esi
|
|
movl %ecx,12(%esp)
|
|
orl %ebx,%esi
|
|
andl (%edi),%ecx
|
|
xorl %esi,%eax
|
|
roll $1,%ecx
|
|
movl %eax,4(%esp)
|
|
xorl %ecx,%edx
|
|
movl -8(%edi),%esi
|
|
movl %edx,16(%esp)
|
|
jmp .L006loop
|
|
.align 8
|
|
.L007done:
|
|
movl %eax,%ecx
|
|
movl %ebx,%edx
|
|
movl 12(%esp),%eax
|
|
movl 16(%esp),%ebx
|
|
xorl %esi,%ecx
|
|
xorl 12(%edi),%edx
|
|
xorl (%edi),%eax
|
|
xorl 4(%edi),%ebx
|
|
ret
|
|
.size _x86_Camellia_decrypt,.-_x86_Camellia_decrypt
|
|
.globl Camellia_Ekeygen
|
|
.type Camellia_Ekeygen,@function
|
|
.align 16
|
|
Camellia_Ekeygen:
|
|
.L_Camellia_Ekeygen_begin:
|
|
pushl %ebp
|
|
pushl %ebx
|
|
pushl %esi
|
|
pushl %edi
|
|
subl $16,%esp
|
|
movl 36(%esp),%ebp
|
|
movl 40(%esp),%esi
|
|
movl 44(%esp),%edi
|
|
movl (%esi),%eax
|
|
movl 4(%esi),%ebx
|
|
movl 8(%esi),%ecx
|
|
movl 12(%esi),%edx
|
|
bswap %eax
|
|
bswap %ebx
|
|
bswap %ecx
|
|
bswap %edx
|
|
movl %eax,(%edi)
|
|
movl %ebx,4(%edi)
|
|
movl %ecx,8(%edi)
|
|
movl %edx,12(%edi)
|
|
cmpl $128,%ebp
|
|
je .L0081st128
|
|
movl 16(%esi),%eax
|
|
movl 20(%esi),%ebx
|
|
cmpl $192,%ebp
|
|
je .L0091st192
|
|
movl 24(%esi),%ecx
|
|
movl 28(%esi),%edx
|
|
jmp .L0101st256
|
|
.align 4
|
|
.L0091st192:
|
|
movl %eax,%ecx
|
|
movl %ebx,%edx
|
|
notl %ecx
|
|
notl %edx
|
|
.align 4
|
|
.L0101st256:
|
|
bswap %eax
|
|
bswap %ebx
|
|
bswap %ecx
|
|
bswap %edx
|
|
movl %eax,32(%edi)
|
|
movl %ebx,36(%edi)
|
|
movl %ecx,40(%edi)
|
|
movl %edx,44(%edi)
|
|
xorl (%edi),%eax
|
|
xorl 4(%edi),%ebx
|
|
xorl 8(%edi),%ecx
|
|
xorl 12(%edi),%edx
|
|
.align 4
|
|
.L0081st128:
|
|
call .L011pic_point
|
|
.L011pic_point:
|
|
popl %ebp
|
|
leal .LCamellia_SBOX-.L011pic_point(%ebp),%ebp
|
|
leal .LCamellia_SIGMA-.LCamellia_SBOX(%ebp),%edi
|
|
movl (%edi),%esi
|
|
movl %eax,(%esp)
|
|
movl %ebx,4(%esp)
|
|
movl %ecx,8(%esp)
|
|
movl %edx,12(%esp)
|
|
xorl %esi,%eax
|
|
xorl 4(%edi),%ebx
|
|
movzbl %ah,%esi
|
|
movl 2052(%ebp,%esi,8),%edx
|
|
movzbl %al,%esi
|
|
xorl 4(%ebp,%esi,8),%edx
|
|
shrl $16,%eax
|
|
movzbl %bl,%esi
|
|
movl (%ebp,%esi,8),%ecx
|
|
movzbl %ah,%esi
|
|
xorl (%ebp,%esi,8),%edx
|
|
movzbl %bh,%esi
|
|
xorl 4(%ebp,%esi,8),%ecx
|
|
shrl $16,%ebx
|
|
movzbl %al,%eax
|
|
xorl 2048(%ebp,%eax,8),%edx
|
|
movzbl %bh,%esi
|
|
movl 12(%esp),%eax
|
|
xorl %edx,%ecx
|
|
rorl $8,%edx
|
|
xorl 2048(%ebp,%esi,8),%ecx
|
|
movzbl %bl,%esi
|
|
movl 8(%esp),%ebx
|
|
xorl %eax,%edx
|
|
xorl 2052(%ebp,%esi,8),%ecx
|
|
movl 8(%edi),%esi
|
|
xorl %ecx,%edx
|
|
movl %edx,12(%esp)
|
|
xorl %ebx,%ecx
|
|
movl %ecx,8(%esp)
|
|
xorl %esi,%ecx
|
|
xorl 12(%edi),%edx
|
|
movzbl %ch,%esi
|
|
movl 2052(%ebp,%esi,8),%ebx
|
|
movzbl %cl,%esi
|
|
xorl 4(%ebp,%esi,8),%ebx
|
|
shrl $16,%ecx
|
|
movzbl %dl,%esi
|
|
movl (%ebp,%esi,8),%eax
|
|
movzbl %ch,%esi
|
|
xorl (%ebp,%esi,8),%ebx
|
|
movzbl %dh,%esi
|
|
xorl 4(%ebp,%esi,8),%eax
|
|
shrl $16,%edx
|
|
movzbl %cl,%ecx
|
|
xorl 2048(%ebp,%ecx,8),%ebx
|
|
movzbl %dh,%esi
|
|
movl 4(%esp),%ecx
|
|
xorl %ebx,%eax
|
|
rorl $8,%ebx
|
|
xorl 2048(%ebp,%esi,8),%eax
|
|
movzbl %dl,%esi
|
|
movl (%esp),%edx
|
|
xorl %ecx,%ebx
|
|
xorl 2052(%ebp,%esi,8),%eax
|
|
movl 16(%edi),%esi
|
|
xorl %eax,%ebx
|
|
movl %ebx,4(%esp)
|
|
xorl %edx,%eax
|
|
movl %eax,(%esp)
|
|
movl 8(%esp),%ecx
|
|
movl 12(%esp),%edx
|
|
movl 44(%esp),%esi
|
|
xorl (%esi),%eax
|
|
xorl 4(%esi),%ebx
|
|
xorl 8(%esi),%ecx
|
|
xorl 12(%esi),%edx
|
|
movl 16(%edi),%esi
|
|
movl %eax,(%esp)
|
|
movl %ebx,4(%esp)
|
|
movl %ecx,8(%esp)
|
|
movl %edx,12(%esp)
|
|
xorl %esi,%eax
|
|
xorl 20(%edi),%ebx
|
|
movzbl %ah,%esi
|
|
movl 2052(%ebp,%esi,8),%edx
|
|
movzbl %al,%esi
|
|
xorl 4(%ebp,%esi,8),%edx
|
|
shrl $16,%eax
|
|
movzbl %bl,%esi
|
|
movl (%ebp,%esi,8),%ecx
|
|
movzbl %ah,%esi
|
|
xorl (%ebp,%esi,8),%edx
|
|
movzbl %bh,%esi
|
|
xorl 4(%ebp,%esi,8),%ecx
|
|
shrl $16,%ebx
|
|
movzbl %al,%eax
|
|
xorl 2048(%ebp,%eax,8),%edx
|
|
movzbl %bh,%esi
|
|
movl 12(%esp),%eax
|
|
xorl %edx,%ecx
|
|
rorl $8,%edx
|
|
xorl 2048(%ebp,%esi,8),%ecx
|
|
movzbl %bl,%esi
|
|
movl 8(%esp),%ebx
|
|
xorl %eax,%edx
|
|
xorl 2052(%ebp,%esi,8),%ecx
|
|
movl 24(%edi),%esi
|
|
xorl %ecx,%edx
|
|
movl %edx,12(%esp)
|
|
xorl %ebx,%ecx
|
|
movl %ecx,8(%esp)
|
|
xorl %esi,%ecx
|
|
xorl 28(%edi),%edx
|
|
movzbl %ch,%esi
|
|
movl 2052(%ebp,%esi,8),%ebx
|
|
movzbl %cl,%esi
|
|
xorl 4(%ebp,%esi,8),%ebx
|
|
shrl $16,%ecx
|
|
movzbl %dl,%esi
|
|
movl (%ebp,%esi,8),%eax
|
|
movzbl %ch,%esi
|
|
xorl (%ebp,%esi,8),%ebx
|
|
movzbl %dh,%esi
|
|
xorl 4(%ebp,%esi,8),%eax
|
|
shrl $16,%edx
|
|
movzbl %cl,%ecx
|
|
xorl 2048(%ebp,%ecx,8),%ebx
|
|
movzbl %dh,%esi
|
|
movl 4(%esp),%ecx
|
|
xorl %ebx,%eax
|
|
rorl $8,%ebx
|
|
xorl 2048(%ebp,%esi,8),%eax
|
|
movzbl %dl,%esi
|
|
movl (%esp),%edx
|
|
xorl %ecx,%ebx
|
|
xorl 2052(%ebp,%esi,8),%eax
|
|
movl 32(%edi),%esi
|
|
xorl %eax,%ebx
|
|
movl %ebx,4(%esp)
|
|
xorl %edx,%eax
|
|
movl %eax,(%esp)
|
|
movl 8(%esp),%ecx
|
|
movl 12(%esp),%edx
|
|
movl 36(%esp),%esi
|
|
cmpl $128,%esi
|
|
jne .L0122nd256
|
|
movl 44(%esp),%edi
|
|
leal 128(%edi),%edi
|
|
movl %eax,-112(%edi)
|
|
movl %ebx,-108(%edi)
|
|
movl %ecx,-104(%edi)
|
|
movl %edx,-100(%edi)
|
|
movl %eax,%ebp
|
|
shll $15,%eax
|
|
movl %ebx,%esi
|
|
shrl $17,%esi
|
|
shll $15,%ebx
|
|
orl %esi,%eax
|
|
movl %ecx,%esi
|
|
shll $15,%ecx
|
|
movl %eax,-80(%edi)
|
|
shrl $17,%esi
|
|
orl %esi,%ebx
|
|
shrl $17,%ebp
|
|
movl %edx,%esi
|
|
shrl $17,%esi
|
|
movl %ebx,-76(%edi)
|
|
shll $15,%edx
|
|
orl %esi,%ecx
|
|
orl %ebp,%edx
|
|
movl %ecx,-72(%edi)
|
|
movl %edx,-68(%edi)
|
|
movl %eax,%ebp
|
|
shll $15,%eax
|
|
movl %ebx,%esi
|
|
shrl $17,%esi
|
|
shll $15,%ebx
|
|
orl %esi,%eax
|
|
movl %ecx,%esi
|
|
shll $15,%ecx
|
|
movl %eax,-64(%edi)
|
|
shrl $17,%esi
|
|
orl %esi,%ebx
|
|
shrl $17,%ebp
|
|
movl %edx,%esi
|
|
shrl $17,%esi
|
|
movl %ebx,-60(%edi)
|
|
shll $15,%edx
|
|
orl %esi,%ecx
|
|
orl %ebp,%edx
|
|
movl %ecx,-56(%edi)
|
|
movl %edx,-52(%edi)
|
|
movl %eax,%ebp
|
|
shll $15,%eax
|
|
movl %ebx,%esi
|
|
shrl $17,%esi
|
|
shll $15,%ebx
|
|
orl %esi,%eax
|
|
movl %ecx,%esi
|
|
shll $15,%ecx
|
|
movl %eax,-32(%edi)
|
|
shrl $17,%esi
|
|
orl %esi,%ebx
|
|
shrl $17,%ebp
|
|
movl %edx,%esi
|
|
shrl $17,%esi
|
|
movl %ebx,-28(%edi)
|
|
shll $15,%edx
|
|
orl %esi,%ecx
|
|
orl %ebp,%edx
|
|
movl %eax,%ebp
|
|
shll $15,%eax
|
|
movl %ebx,%esi
|
|
shrl $17,%esi
|
|
shll $15,%ebx
|
|
orl %esi,%eax
|
|
movl %ecx,%esi
|
|
shll $15,%ecx
|
|
movl %eax,-16(%edi)
|
|
shrl $17,%esi
|
|
orl %esi,%ebx
|
|
shrl $17,%ebp
|
|
movl %edx,%esi
|
|
shrl $17,%esi
|
|
movl %ebx,-12(%edi)
|
|
shll $15,%edx
|
|
orl %esi,%ecx
|
|
orl %ebp,%edx
|
|
movl %ecx,-8(%edi)
|
|
movl %edx,-4(%edi)
|
|
movl %ebx,%ebp
|
|
shll $2,%ebx
|
|
movl %ecx,%esi
|
|
shrl $30,%esi
|
|
shll $2,%ecx
|
|
orl %esi,%ebx
|
|
movl %edx,%esi
|
|
shll $2,%edx
|
|
movl %ebx,32(%edi)
|
|
shrl $30,%esi
|
|
orl %esi,%ecx
|
|
shrl $30,%ebp
|
|
movl %eax,%esi
|
|
shrl $30,%esi
|
|
movl %ecx,36(%edi)
|
|
shll $2,%eax
|
|
orl %esi,%edx
|
|
orl %ebp,%eax
|
|
movl %edx,40(%edi)
|
|
movl %eax,44(%edi)
|
|
movl %ebx,%ebp
|
|
shll $17,%ebx
|
|
movl %ecx,%esi
|
|
shrl $15,%esi
|
|
shll $17,%ecx
|
|
orl %esi,%ebx
|
|
movl %edx,%esi
|
|
shll $17,%edx
|
|
movl %ebx,64(%edi)
|
|
shrl $15,%esi
|
|
orl %esi,%ecx
|
|
shrl $15,%ebp
|
|
movl %eax,%esi
|
|
shrl $15,%esi
|
|
movl %ecx,68(%edi)
|
|
shll $17,%eax
|
|
orl %esi,%edx
|
|
orl %ebp,%eax
|
|
movl %edx,72(%edi)
|
|
movl %eax,76(%edi)
|
|
movl -128(%edi),%ebx
|
|
movl -124(%edi),%ecx
|
|
movl -120(%edi),%edx
|
|
movl -116(%edi),%eax
|
|
movl %ebx,%ebp
|
|
shll $15,%ebx
|
|
movl %ecx,%esi
|
|
shrl $17,%esi
|
|
shll $15,%ecx
|
|
orl %esi,%ebx
|
|
movl %edx,%esi
|
|
shll $15,%edx
|
|
movl %ebx,-96(%edi)
|
|
shrl $17,%esi
|
|
orl %esi,%ecx
|
|
shrl $17,%ebp
|
|
movl %eax,%esi
|
|
shrl $17,%esi
|
|
movl %ecx,-92(%edi)
|
|
shll $15,%eax
|
|
orl %esi,%edx
|
|
orl %ebp,%eax
|
|
movl %edx,-88(%edi)
|
|
movl %eax,-84(%edi)
|
|
movl %ebx,%ebp
|
|
shll $30,%ebx
|
|
movl %ecx,%esi
|
|
shrl $2,%esi
|
|
shll $30,%ecx
|
|
orl %esi,%ebx
|
|
movl %edx,%esi
|
|
shll $30,%edx
|
|
movl %ebx,-48(%edi)
|
|
shrl $2,%esi
|
|
orl %esi,%ecx
|
|
shrl $2,%ebp
|
|
movl %eax,%esi
|
|
shrl $2,%esi
|
|
movl %ecx,-44(%edi)
|
|
shll $30,%eax
|
|
orl %esi,%edx
|
|
orl %ebp,%eax
|
|
movl %edx,-40(%edi)
|
|
movl %eax,-36(%edi)
|
|
movl %ebx,%ebp
|
|
shll $15,%ebx
|
|
movl %ecx,%esi
|
|
shrl $17,%esi
|
|
shll $15,%ecx
|
|
orl %esi,%ebx
|
|
movl %edx,%esi
|
|
shll $15,%edx
|
|
shrl $17,%esi
|
|
orl %esi,%ecx
|
|
shrl $17,%ebp
|
|
movl %eax,%esi
|
|
shrl $17,%esi
|
|
shll $15,%eax
|
|
orl %esi,%edx
|
|
orl %ebp,%eax
|
|
movl %edx,-24(%edi)
|
|
movl %eax,-20(%edi)
|
|
movl %ebx,%ebp
|
|
shll $17,%ebx
|
|
movl %ecx,%esi
|
|
shrl $15,%esi
|
|
shll $17,%ecx
|
|
orl %esi,%ebx
|
|
movl %edx,%esi
|
|
shll $17,%edx
|
|
movl %ebx,(%edi)
|
|
shrl $15,%esi
|
|
orl %esi,%ecx
|
|
shrl $15,%ebp
|
|
movl %eax,%esi
|
|
shrl $15,%esi
|
|
movl %ecx,4(%edi)
|
|
shll $17,%eax
|
|
orl %esi,%edx
|
|
orl %ebp,%eax
|
|
movl %edx,8(%edi)
|
|
movl %eax,12(%edi)
|
|
movl %ebx,%ebp
|
|
shll $17,%ebx
|
|
movl %ecx,%esi
|
|
shrl $15,%esi
|
|
shll $17,%ecx
|
|
orl %esi,%ebx
|
|
movl %edx,%esi
|
|
shll $17,%edx
|
|
movl %ebx,16(%edi)
|
|
shrl $15,%esi
|
|
orl %esi,%ecx
|
|
shrl $15,%ebp
|
|
movl %eax,%esi
|
|
shrl $15,%esi
|
|
movl %ecx,20(%edi)
|
|
shll $17,%eax
|
|
orl %esi,%edx
|
|
orl %ebp,%eax
|
|
movl %edx,24(%edi)
|
|
movl %eax,28(%edi)
|
|
movl %ebx,%ebp
|
|
shll $17,%ebx
|
|
movl %ecx,%esi
|
|
shrl $15,%esi
|
|
shll $17,%ecx
|
|
orl %esi,%ebx
|
|
movl %edx,%esi
|
|
shll $17,%edx
|
|
movl %ebx,48(%edi)
|
|
shrl $15,%esi
|
|
orl %esi,%ecx
|
|
shrl $15,%ebp
|
|
movl %eax,%esi
|
|
shrl $15,%esi
|
|
movl %ecx,52(%edi)
|
|
shll $17,%eax
|
|
orl %esi,%edx
|
|
orl %ebp,%eax
|
|
movl %edx,56(%edi)
|
|
movl %eax,60(%edi)
|
|
movl $3,%eax
|
|
jmp .L013done
|
|
.align 16
|
|
.L0122nd256:
|
|
movl 44(%esp),%esi
|
|
movl %eax,48(%esi)
|
|
movl %ebx,52(%esi)
|
|
movl %ecx,56(%esi)
|
|
movl %edx,60(%esi)
|
|
xorl 32(%esi),%eax
|
|
xorl 36(%esi),%ebx
|
|
xorl 40(%esi),%ecx
|
|
xorl 44(%esi),%edx
|
|
movl 32(%edi),%esi
|
|
movl %eax,(%esp)
|
|
movl %ebx,4(%esp)
|
|
movl %ecx,8(%esp)
|
|
movl %edx,12(%esp)
|
|
xorl %esi,%eax
|
|
xorl 36(%edi),%ebx
|
|
movzbl %ah,%esi
|
|
movl 2052(%ebp,%esi,8),%edx
|
|
movzbl %al,%esi
|
|
xorl 4(%ebp,%esi,8),%edx
|
|
shrl $16,%eax
|
|
movzbl %bl,%esi
|
|
movl (%ebp,%esi,8),%ecx
|
|
movzbl %ah,%esi
|
|
xorl (%ebp,%esi,8),%edx
|
|
movzbl %bh,%esi
|
|
xorl 4(%ebp,%esi,8),%ecx
|
|
shrl $16,%ebx
|
|
movzbl %al,%eax
|
|
xorl 2048(%ebp,%eax,8),%edx
|
|
movzbl %bh,%esi
|
|
movl 12(%esp),%eax
|
|
xorl %edx,%ecx
|
|
rorl $8,%edx
|
|
xorl 2048(%ebp,%esi,8),%ecx
|
|
movzbl %bl,%esi
|
|
movl 8(%esp),%ebx
|
|
xorl %eax,%edx
|
|
xorl 2052(%ebp,%esi,8),%ecx
|
|
movl 40(%edi),%esi
|
|
xorl %ecx,%edx
|
|
movl %edx,12(%esp)
|
|
xorl %ebx,%ecx
|
|
movl %ecx,8(%esp)
|
|
xorl %esi,%ecx
|
|
xorl 44(%edi),%edx
|
|
movzbl %ch,%esi
|
|
movl 2052(%ebp,%esi,8),%ebx
|
|
movzbl %cl,%esi
|
|
xorl 4(%ebp,%esi,8),%ebx
|
|
shrl $16,%ecx
|
|
movzbl %dl,%esi
|
|
movl (%ebp,%esi,8),%eax
|
|
movzbl %ch,%esi
|
|
xorl (%ebp,%esi,8),%ebx
|
|
movzbl %dh,%esi
|
|
xorl 4(%ebp,%esi,8),%eax
|
|
shrl $16,%edx
|
|
movzbl %cl,%ecx
|
|
xorl 2048(%ebp,%ecx,8),%ebx
|
|
movzbl %dh,%esi
|
|
movl 4(%esp),%ecx
|
|
xorl %ebx,%eax
|
|
rorl $8,%ebx
|
|
xorl 2048(%ebp,%esi,8),%eax
|
|
movzbl %dl,%esi
|
|
movl (%esp),%edx
|
|
xorl %ecx,%ebx
|
|
xorl 2052(%ebp,%esi,8),%eax
|
|
movl 48(%edi),%esi
|
|
xorl %eax,%ebx
|
|
movl %ebx,4(%esp)
|
|
xorl %edx,%eax
|
|
movl %eax,(%esp)
|
|
movl 8(%esp),%ecx
|
|
movl 12(%esp),%edx
|
|
movl 44(%esp),%edi
|
|
leal 128(%edi),%edi
|
|
movl %eax,-112(%edi)
|
|
movl %ebx,-108(%edi)
|
|
movl %ecx,-104(%edi)
|
|
movl %edx,-100(%edi)
|
|
movl %eax,%ebp
|
|
shll $30,%eax
|
|
movl %ebx,%esi
|
|
shrl $2,%esi
|
|
shll $30,%ebx
|
|
orl %esi,%eax
|
|
movl %ecx,%esi
|
|
shll $30,%ecx
|
|
movl %eax,-48(%edi)
|
|
shrl $2,%esi
|
|
orl %esi,%ebx
|
|
shrl $2,%ebp
|
|
movl %edx,%esi
|
|
shrl $2,%esi
|
|
movl %ebx,-44(%edi)
|
|
shll $30,%edx
|
|
orl %esi,%ecx
|
|
orl %ebp,%edx
|
|
movl %ecx,-40(%edi)
|
|
movl %edx,-36(%edi)
|
|
movl %eax,%ebp
|
|
shll $30,%eax
|
|
movl %ebx,%esi
|
|
shrl $2,%esi
|
|
shll $30,%ebx
|
|
orl %esi,%eax
|
|
movl %ecx,%esi
|
|
shll $30,%ecx
|
|
movl %eax,32(%edi)
|
|
shrl $2,%esi
|
|
orl %esi,%ebx
|
|
shrl $2,%ebp
|
|
movl %edx,%esi
|
|
shrl $2,%esi
|
|
movl %ebx,36(%edi)
|
|
shll $30,%edx
|
|
orl %esi,%ecx
|
|
orl %ebp,%edx
|
|
movl %ecx,40(%edi)
|
|
movl %edx,44(%edi)
|
|
movl %ebx,%ebp
|
|
shll $19,%ebx
|
|
movl %ecx,%esi
|
|
shrl $13,%esi
|
|
shll $19,%ecx
|
|
orl %esi,%ebx
|
|
movl %edx,%esi
|
|
shll $19,%edx
|
|
movl %ebx,128(%edi)
|
|
shrl $13,%esi
|
|
orl %esi,%ecx
|
|
shrl $13,%ebp
|
|
movl %eax,%esi
|
|
shrl $13,%esi
|
|
movl %ecx,132(%edi)
|
|
shll $19,%eax
|
|
orl %esi,%edx
|
|
orl %ebp,%eax
|
|
movl %edx,136(%edi)
|
|
movl %eax,140(%edi)
|
|
movl -96(%edi),%ebx
|
|
movl -92(%edi),%ecx
|
|
movl -88(%edi),%edx
|
|
movl -84(%edi),%eax
|
|
movl %ebx,%ebp
|
|
shll $15,%ebx
|
|
movl %ecx,%esi
|
|
shrl $17,%esi
|
|
shll $15,%ecx
|
|
orl %esi,%ebx
|
|
movl %edx,%esi
|
|
shll $15,%edx
|
|
movl %ebx,-96(%edi)
|
|
shrl $17,%esi
|
|
orl %esi,%ecx
|
|
shrl $17,%ebp
|
|
movl %eax,%esi
|
|
shrl $17,%esi
|
|
movl %ecx,-92(%edi)
|
|
shll $15,%eax
|
|
orl %esi,%edx
|
|
orl %ebp,%eax
|
|
movl %edx,-88(%edi)
|
|
movl %eax,-84(%edi)
|
|
movl %ebx,%ebp
|
|
shll $15,%ebx
|
|
movl %ecx,%esi
|
|
shrl $17,%esi
|
|
shll $15,%ecx
|
|
orl %esi,%ebx
|
|
movl %edx,%esi
|
|
shll $15,%edx
|
|
movl %ebx,-64(%edi)
|
|
shrl $17,%esi
|
|
orl %esi,%ecx
|
|
shrl $17,%ebp
|
|
movl %eax,%esi
|
|
shrl $17,%esi
|
|
movl %ecx,-60(%edi)
|
|
shll $15,%eax
|
|
orl %esi,%edx
|
|
orl %ebp,%eax
|
|
movl %edx,-56(%edi)
|
|
movl %eax,-52(%edi)
|
|
movl %ebx,%ebp
|
|
shll $30,%ebx
|
|
movl %ecx,%esi
|
|
shrl $2,%esi
|
|
shll $30,%ecx
|
|
orl %esi,%ebx
|
|
movl %edx,%esi
|
|
shll $30,%edx
|
|
movl %ebx,16(%edi)
|
|
shrl $2,%esi
|
|
orl %esi,%ecx
|
|
shrl $2,%ebp
|
|
movl %eax,%esi
|
|
shrl $2,%esi
|
|
movl %ecx,20(%edi)
|
|
shll $30,%eax
|
|
orl %esi,%edx
|
|
orl %ebp,%eax
|
|
movl %edx,24(%edi)
|
|
movl %eax,28(%edi)
|
|
movl %ecx,%ebp
|
|
shll $2,%ecx
|
|
movl %edx,%esi
|
|
shrl $30,%esi
|
|
shll $2,%edx
|
|
orl %esi,%ecx
|
|
movl %eax,%esi
|
|
shll $2,%eax
|
|
movl %ecx,80(%edi)
|
|
shrl $30,%esi
|
|
orl %esi,%edx
|
|
shrl $30,%ebp
|
|
movl %ebx,%esi
|
|
shrl $30,%esi
|
|
movl %edx,84(%edi)
|
|
shll $2,%ebx
|
|
orl %esi,%eax
|
|
orl %ebp,%ebx
|
|
movl %eax,88(%edi)
|
|
movl %ebx,92(%edi)
|
|
movl -80(%edi),%ecx
|
|
movl -76(%edi),%edx
|
|
movl -72(%edi),%eax
|
|
movl -68(%edi),%ebx
|
|
movl %ecx,%ebp
|
|
shll $15,%ecx
|
|
movl %edx,%esi
|
|
shrl $17,%esi
|
|
shll $15,%edx
|
|
orl %esi,%ecx
|
|
movl %eax,%esi
|
|
shll $15,%eax
|
|
movl %ecx,-80(%edi)
|
|
shrl $17,%esi
|
|
orl %esi,%edx
|
|
shrl $17,%ebp
|
|
movl %ebx,%esi
|
|
shrl $17,%esi
|
|
movl %edx,-76(%edi)
|
|
shll $15,%ebx
|
|
orl %esi,%eax
|
|
orl %ebp,%ebx
|
|
movl %eax,-72(%edi)
|
|
movl %ebx,-68(%edi)
|
|
movl %ecx,%ebp
|
|
shll $30,%ecx
|
|
movl %edx,%esi
|
|
shrl $2,%esi
|
|
shll $30,%edx
|
|
orl %esi,%ecx
|
|
movl %eax,%esi
|
|
shll $30,%eax
|
|
movl %ecx,-16(%edi)
|
|
shrl $2,%esi
|
|
orl %esi,%edx
|
|
shrl $2,%ebp
|
|
movl %ebx,%esi
|
|
shrl $2,%esi
|
|
movl %edx,-12(%edi)
|
|
shll $30,%ebx
|
|
orl %esi,%eax
|
|
orl %ebp,%ebx
|
|
movl %eax,-8(%edi)
|
|
movl %ebx,-4(%edi)
|
|
movl %edx,64(%edi)
|
|
movl %eax,68(%edi)
|
|
movl %ebx,72(%edi)
|
|
movl %ecx,76(%edi)
|
|
movl %edx,%ebp
|
|
shll $17,%edx
|
|
movl %eax,%esi
|
|
shrl $15,%esi
|
|
shll $17,%eax
|
|
orl %esi,%edx
|
|
movl %ebx,%esi
|
|
shll $17,%ebx
|
|
movl %edx,96(%edi)
|
|
shrl $15,%esi
|
|
orl %esi,%eax
|
|
shrl $15,%ebp
|
|
movl %ecx,%esi
|
|
shrl $15,%esi
|
|
movl %eax,100(%edi)
|
|
shll $17,%ecx
|
|
orl %esi,%ebx
|
|
orl %ebp,%ecx
|
|
movl %ebx,104(%edi)
|
|
movl %ecx,108(%edi)
|
|
movl -128(%edi),%edx
|
|
movl -124(%edi),%eax
|
|
movl -120(%edi),%ebx
|
|
movl -116(%edi),%ecx
|
|
movl %eax,%ebp
|
|
shll $13,%eax
|
|
movl %ebx,%esi
|
|
shrl $19,%esi
|
|
shll $13,%ebx
|
|
orl %esi,%eax
|
|
movl %ecx,%esi
|
|
shll $13,%ecx
|
|
movl %eax,-32(%edi)
|
|
shrl $19,%esi
|
|
orl %esi,%ebx
|
|
shrl $19,%ebp
|
|
movl %edx,%esi
|
|
shrl $19,%esi
|
|
movl %ebx,-28(%edi)
|
|
shll $13,%edx
|
|
orl %esi,%ecx
|
|
orl %ebp,%edx
|
|
movl %ecx,-24(%edi)
|
|
movl %edx,-20(%edi)
|
|
movl %eax,%ebp
|
|
shll $15,%eax
|
|
movl %ebx,%esi
|
|
shrl $17,%esi
|
|
shll $15,%ebx
|
|
orl %esi,%eax
|
|
movl %ecx,%esi
|
|
shll $15,%ecx
|
|
movl %eax,(%edi)
|
|
shrl $17,%esi
|
|
orl %esi,%ebx
|
|
shrl $17,%ebp
|
|
movl %edx,%esi
|
|
shrl $17,%esi
|
|
movl %ebx,4(%edi)
|
|
shll $15,%edx
|
|
orl %esi,%ecx
|
|
orl %ebp,%edx
|
|
movl %ecx,8(%edi)
|
|
movl %edx,12(%edi)
|
|
movl %eax,%ebp
|
|
shll $17,%eax
|
|
movl %ebx,%esi
|
|
shrl $15,%esi
|
|
shll $17,%ebx
|
|
orl %esi,%eax
|
|
movl %ecx,%esi
|
|
shll $17,%ecx
|
|
movl %eax,48(%edi)
|
|
shrl $15,%esi
|
|
orl %esi,%ebx
|
|
shrl $15,%ebp
|
|
movl %edx,%esi
|
|
shrl $15,%esi
|
|
movl %ebx,52(%edi)
|
|
shll $17,%edx
|
|
orl %esi,%ecx
|
|
orl %ebp,%edx
|
|
movl %ecx,56(%edi)
|
|
movl %edx,60(%edi)
|
|
movl %ebx,%ebp
|
|
shll $2,%ebx
|
|
movl %ecx,%esi
|
|
shrl $30,%esi
|
|
shll $2,%ecx
|
|
orl %esi,%ebx
|
|
movl %edx,%esi
|
|
shll $2,%edx
|
|
movl %ebx,112(%edi)
|
|
shrl $30,%esi
|
|
orl %esi,%ecx
|
|
shrl $30,%ebp
|
|
movl %eax,%esi
|
|
shrl $30,%esi
|
|
movl %ecx,116(%edi)
|
|
shll $2,%eax
|
|
orl %esi,%edx
|
|
orl %ebp,%eax
|
|
movl %edx,120(%edi)
|
|
movl %eax,124(%edi)
|
|
movl $4,%eax
|
|
.L013done:
|
|
leal 144(%edi),%edx
|
|
addl $16,%esp
|
|
popl %edi
|
|
popl %esi
|
|
popl %ebx
|
|
popl %ebp
|
|
ret
|
|
.size Camellia_Ekeygen,.-.L_Camellia_Ekeygen_begin
|
|
.globl private_Camellia_set_key
|
|
.type private_Camellia_set_key,@function
|
|
.align 16
|
|
private_Camellia_set_key:
|
|
.L_private_Camellia_set_key_begin:
|
|
pushl %ebx
|
|
movl 8(%esp),%ecx
|
|
movl 12(%esp),%ebx
|
|
movl 16(%esp),%edx
|
|
movl $-1,%eax
|
|
testl %ecx,%ecx
|
|
jz .L014done
|
|
testl %edx,%edx
|
|
jz .L014done
|
|
movl $-2,%eax
|
|
cmpl $256,%ebx
|
|
je .L015arg_ok
|
|
cmpl $192,%ebx
|
|
je .L015arg_ok
|
|
cmpl $128,%ebx
|
|
jne .L014done
|
|
.align 4
|
|
.L015arg_ok:
|
|
pushl %edx
|
|
pushl %ecx
|
|
pushl %ebx
|
|
call .L_Camellia_Ekeygen_begin
|
|
addl $12,%esp
|
|
movl %eax,(%edx)
|
|
xorl %eax,%eax
|
|
.align 4
|
|
.L014done:
|
|
popl %ebx
|
|
ret
|
|
.size private_Camellia_set_key,.-.L_private_Camellia_set_key_begin
|
|
.align 64
|
|
.LCamellia_SIGMA:
|
|
.long 2694735487,1003262091,3061508184,1286239154,3337565999,3914302142,1426019237,4057165596,283453434,3731369245,2958461122,3018244605,0,0,0,0
|
|
.align 64
|
|
.LCamellia_SBOX:
|
|
.long 1886416896,1886388336
|
|
.long 2189591040,741081132
|
|
.long 741092352,3014852787
|
|
.long 3974949888,3233808576
|
|
.long 3014898432,3840147684
|
|
.long 656877312,1465319511
|
|
.long 3233857536,3941204202
|
|
.long 3857048832,2930639022
|
|
.long 3840205824,589496355
|
|
.long 2240120064,1802174571
|
|
.long 1465341696,1162149957
|
|
.long 892679424,2779054245
|
|
.long 3941263872,3991732461
|
|
.long 202116096,1330577487
|
|
.long 2930683392,488439837
|
|
.long 1094795520,2459041938
|
|
.long 589505280,2256928902
|
|
.long 4025478912,2947481775
|
|
.long 1802201856,2088501372
|
|
.long 2475922176,522125343
|
|
.long 1162167552,1044250686
|
|
.long 421075200,3705405660
|
|
.long 2779096320,1583218782
|
|
.long 555819264,185270283
|
|
.long 3991792896,2795896998
|
|
.long 235802112,960036921
|
|
.long 1330597632,3587506389
|
|
.long 1313754624,1566376029
|
|
.long 488447232,3654877401
|
|
.long 1701143808,1515847770
|
|
.long 2459079168,1364262993
|
|
.long 3183328512,1819017324
|
|
.long 2256963072,2341142667
|
|
.long 3099113472,2593783962
|
|
.long 2947526400,4227531003
|
|
.long 2408550144,2964324528
|
|
.long 2088532992,1953759348
|
|
.long 3958106880,724238379
|
|
.long 522133248,4042260720
|
|
.long 3469659648,2223243396
|
|
.long 1044266496,3755933919
|
|
.long 808464384,3419078859
|
|
.long 3705461760,875823156
|
|
.long 1600085760,1987444854
|
|
.long 1583242752,1835860077
|
|
.long 3318072576,2846425257
|
|
.long 185273088,3520135377
|
|
.long 437918208,67371012
|
|
.long 2795939328,336855060
|
|
.long 3789676800,976879674
|
|
.long 960051456,3739091166
|
|
.long 3402287616,286326801
|
|
.long 3587560704,842137650
|
|
.long 1195853568,2627469468
|
|
.long 1566399744,1397948499
|
|
.long 1027423488,4075946226
|
|
.long 3654932736,4278059262
|
|
.long 16843008,3486449871
|
|
.long 1515870720,3284336835
|
|
.long 3604403712,2054815866
|
|
.long 1364283648,606339108
|
|
.long 1448498688,3907518696
|
|
.long 1819044864,1616904288
|
|
.long 1296911616,1768489065
|
|
.long 2341178112,2863268010
|
|
.long 218959104,2694840480
|
|
.long 2593823232,2711683233
|
|
.long 1717986816,1650589794
|
|
.long 4227595008,1414791252
|
|
.long 3435973632,505282590
|
|
.long 2964369408,3772776672
|
|
.long 757935360,1684275300
|
|
.long 1953788928,269484048
|
|
.long 303174144,0
|
|
.long 724249344,2745368739
|
|
.long 538976256,1970602101
|
|
.long 4042321920,2324299914
|
|
.long 2981212416,3873833190
|
|
.long 2223277056,151584777
|
|
.long 2576980224,3722248413
|
|
.long 3755990784,2273771655
|
|
.long 1280068608,2206400643
|
|
.long 3419130624,3452764365
|
|
.long 3267543552,2425356432
|
|
.long 875836416,1936916595
|
|
.long 2122219008,4143317238
|
|
.long 1987474944,2644312221
|
|
.long 84215040,3216965823
|
|
.long 1835887872,1381105746
|
|
.long 3082270464,3638034648
|
|
.long 2846468352,3368550600
|
|
.long 825307392,3334865094
|
|
.long 3520188672,2172715137
|
|
.long 387389184,1869545583
|
|
.long 67372032,320012307
|
|
.long 3621246720,1667432547
|
|
.long 336860160,3924361449
|
|
.long 1482184704,2812739751
|
|
.long 976894464,2677997727
|
|
.long 1633771776,3166437564
|
|
.long 3739147776,690552873
|
|
.long 454761216,4193845497
|
|
.long 286331136,791609391
|
|
.long 471604224,3031695540
|
|
.long 842150400,2021130360
|
|
.long 252645120,101056518
|
|
.long 2627509248,3890675943
|
|
.long 370546176,1903231089
|
|
.long 1397969664,3570663636
|
|
.long 404232192,2880110763
|
|
.long 4076007936,2290614408
|
|
.long 572662272,2374828173
|
|
.long 4278124032,1920073842
|
|
.long 1145324544,3115909305
|
|
.long 3486502656,4177002744
|
|
.long 2998055424,2896953516
|
|
.long 3284386560,909508662
|
|
.long 3048584448,707395626
|
|
.long 2054846976,1010565180
|
|
.long 2442236160,4059103473
|
|
.long 606348288,1077936192
|
|
.long 134744064,3553820883
|
|
.long 3907577856,3149594811
|
|
.long 2829625344,1128464451
|
|
.long 1616928768,353697813
|
|
.long 4244438016,2913796269
|
|
.long 1768515840,2004287607
|
|
.long 1347440640,2155872384
|
|
.long 2863311360,2189557890
|
|
.long 3503345664,3974889708
|
|
.long 2694881280,656867367
|
|
.long 2105376000,3856990437
|
|
.long 2711724288,2240086149
|
|
.long 2307492096,892665909
|
|
.long 1650614784,202113036
|
|
.long 2543294208,1094778945
|
|
.long 1414812672,4025417967
|
|
.long 1532713728,2475884691
|
|
.long 505290240,421068825
|
|
.long 2509608192,555810849
|
|
.long 3772833792,235798542
|
|
.long 4294967040,1313734734
|
|
.long 1684300800,1701118053
|
|
.long 3537031680,3183280317
|
|
.long 269488128,3099066552
|
|
.long 3301229568,2408513679
|
|
.long 0,3958046955
|
|
.long 1212696576,3469607118
|
|
.long 2745410304,808452144
|
|
.long 4160222976,1600061535
|
|
.long 1970631936,3318022341
|
|
.long 3688618752,437911578
|
|
.long 2324335104,3789619425
|
|
.long 50529024,3402236106
|
|
.long 3873891840,1195835463
|
|
.long 3671775744,1027407933
|
|
.long 151587072,16842753
|
|
.long 1061109504,3604349142
|
|
.long 3722304768,1448476758
|
|
.long 2492765184,1296891981
|
|
.long 2273806080,218955789
|
|
.long 1549556736,1717960806
|
|
.long 2206434048,3435921612
|
|
.long 33686016,757923885
|
|
.long 3452816640,303169554
|
|
.long 1246382592,538968096
|
|
.long 2425393152,2981167281
|
|
.long 858993408,2576941209
|
|
.long 1936945920,1280049228
|
|
.long 1734829824,3267494082
|
|
.long 4143379968,2122186878
|
|
.long 4092850944,84213765
|
|
.long 2644352256,3082223799
|
|
.long 2139062016,825294897
|
|
.long 3217014528,387383319
|
|
.long 3806519808,3621191895
|
|
.long 1381126656,1482162264
|
|
.long 2610666240,1633747041
|
|
.long 3638089728,454754331
|
|
.long 640034304,471597084
|
|
.long 3368601600,252641295
|
|
.long 926365440,370540566
|
|
.long 3334915584,404226072
|
|
.long 993737472,572653602
|
|
.long 2172748032,1145307204
|
|
.long 2526451200,2998010034
|
|
.long 1869573888,3048538293
|
|
.long 1263225600,2442199185
|
|
.long 320017152,134742024
|
|
.long 3200171520,2829582504
|
|
.long 1667457792,4244373756
|
|
.long 774778368,1347420240
|
|
.long 3924420864,3503292624
|
|
.long 2038003968,2105344125
|
|
.long 2812782336,2307457161
|
|
.long 2358021120,2543255703
|
|
.long 2678038272,1532690523
|
|
.long 1852730880,2509570197
|
|
.long 3166485504,4294902015
|
|
.long 2391707136,3536978130
|
|
.long 690563328,3301179588
|
|
.long 4126536960,1212678216
|
|
.long 4193908992,4160159991
|
|
.long 3065427456,3688562907
|
|
.long 791621376,50528259
|
|
.long 4261281024,3671720154
|
|
.long 3031741440,1061093439
|
|
.long 1499027712,2492727444
|
|
.long 2021160960,1549533276
|
|
.long 2560137216,33685506
|
|
.long 101058048,1246363722
|
|
.long 1785358848,858980403
|
|
.long 3890734848,1734803559
|
|
.long 1179010560,4092788979
|
|
.long 1903259904,2139029631
|
|
.long 3132799488,3806462178
|
|
.long 3570717696,2610626715
|
|
.long 623191296,640024614
|
|
.long 2880154368,926351415
|
|
.long 1111638528,993722427
|
|
.long 2290649088,2526412950
|
|
.long 2728567296,1263206475
|
|
.long 2374864128,3200123070
|
|
.long 4210752000,774766638
|
|
.long 1920102912,2037973113
|
|
.long 117901056,2357985420
|
|
.long 3115956480,1852702830
|
|
.long 1431655680,2391670926
|
|
.long 4177065984,4126474485
|
|
.long 4008635904,3065381046
|
|
.long 2896997376,4261216509
|
|
.long 168430080,1499005017
|
|
.long 909522432,2560098456
|
|
.long 1229539584,1785331818
|
|
.long 707406336,1178992710
|
|
.long 1751672832,3132752058
|
|
.long 1010580480,623181861
|
|
.long 943208448,1111621698
|
|
.long 4059164928,2728525986
|
|
.long 2762253312,4210688250
|
|
.long 1077952512,117899271
|
|
.long 673720320,1431634005
|
|
.long 3553874688,4008575214
|
|
.long 2071689984,168427530
|
|
.long 3149642496,1229520969
|
|
.long 3385444608,1751646312
|
|
.long 1128481536,943194168
|
|
.long 3250700544,2762211492
|
|
.long 353703168,673710120
|
|
.long 3823362816,2071658619
|
|
.long 2913840384,3385393353
|
|
.long 4109693952,3250651329
|
|
.long 2004317952,3823304931
|
|
.long 3351758592,4109631732
|
|
.long 2155905024,3351707847
|
|
.long 2661195264,2661154974
|
|
.long 14737632,939538488
|
|
.long 328965,1090535745
|
|
.long 5789784,369104406
|
|
.long 14277081,1979741814
|
|
.long 6776679,3640711641
|
|
.long 5131854,2466288531
|
|
.long 8487297,1610637408
|
|
.long 13355979,4060148466
|
|
.long 13224393,1912631922
|
|
.long 723723,3254829762
|
|
.long 11447982,2868947883
|
|
.long 6974058,2583730842
|
|
.long 14013909,1962964341
|
|
.long 1579032,100664838
|
|
.long 6118749,1459640151
|
|
.long 8553090,2684395680
|
|
.long 4605510,2432733585
|
|
.long 14671839,4144035831
|
|
.long 14079702,3036722613
|
|
.long 2565927,3372272073
|
|
.long 9079434,2717950626
|
|
.long 3289650,2348846220
|
|
.long 4934475,3523269330
|
|
.long 4342338,2415956112
|
|
.long 14408667,4127258358
|
|
.long 1842204,117442311
|
|
.long 10395294,2801837991
|
|
.long 10263708,654321447
|
|
.long 3815994,2382401166
|
|
.long 13290186,2986390194
|
|
.long 2434341,1224755529
|
|
.long 8092539,3724599006
|
|
.long 855309,1124090691
|
|
.long 7434609,1543527516
|
|
.long 6250335,3607156695
|
|
.long 2039583,3338717127
|
|
.long 16316664,1040203326
|
|
.long 14145495,4110480885
|
|
.long 4079166,2399178639
|
|
.long 10329501,1728079719
|
|
.long 8158332,520101663
|
|
.long 6316128,402659352
|
|
.long 12171705,1845522030
|
|
.long 12500670,2936057775
|
|
.long 12369084,788541231
|
|
.long 9145227,3791708898
|
|
.long 1447446,2231403909
|
|
.long 3421236,218107149
|
|
.long 5066061,1392530259
|
|
.long 12829635,4026593520
|
|
.long 7500402,2617285788
|
|
.long 9803157,1694524773
|
|
.long 11250603,3925928682
|
|
.long 9342606,2734728099
|
|
.long 12237498,2919280302
|
|
.long 8026746,2650840734
|
|
.long 11776947,3959483628
|
|
.long 131586,2147516544
|
|
.long 11842740,754986285
|
|
.long 11382189,1795189611
|
|
.long 10658466,2818615464
|
|
.long 11316396,721431339
|
|
.long 14211288,905983542
|
|
.long 10132122,2785060518
|
|
.long 1513239,3305162181
|
|
.long 1710618,2248181382
|
|
.long 3487029,1291865421
|
|
.long 13421772,855651123
|
|
.long 16250871,4244700669
|
|
.long 10066329,1711302246
|
|
.long 6381921,1476417624
|
|
.long 5921370,2516620950
|
|
.long 15263976,973093434
|
|
.long 2368548,150997257
|
|
.long 5658198,2499843477
|
|
.long 4210752,268439568
|
|
.long 14803425,2013296760
|
|
.long 6513507,3623934168
|
|
.long 592137,1107313218
|
|
.long 3355443,3422604492
|
|
.long 12566463,4009816047
|
|
.long 10000536,637543974
|
|
.long 9934743,3842041317
|
|
.long 8750469,1627414881
|
|
.long 6842472,436214298
|
|
.long 16579836,1056980799
|
|
.long 15527148,989870907
|
|
.long 657930,2181071490
|
|
.long 14342874,3053500086
|
|
.long 7303023,3674266587
|
|
.long 5460819,3556824276
|
|
.long 6447714,2550175896
|
|
.long 10724259,3892373736
|
|
.long 3026478,2332068747
|
|
.long 526344,33554946
|
|
.long 11513775,3942706155
|
|
.long 2631720,167774730
|
|
.long 11579568,738208812
|
|
.long 7631988,486546717
|
|
.long 12763842,2952835248
|
|
.long 12434877,1862299503
|
|
.long 3552822,2365623693
|
|
.long 2236962,2281736328
|
|
.long 3684408,234884622
|
|
.long 6579300,419436825
|
|
.long 1973790,2264958855
|
|
.long 3750201,1308642894
|
|
.long 2894892,184552203
|
|
.long 10921638,2835392937
|
|
.long 3158064,201329676
|
|
.long 15066597,2030074233
|
|
.long 4473924,285217041
|
|
.long 16645629,2130739071
|
|
.long 8947848,570434082
|
|
.long 10461087,3875596263
|
|
.long 6645093,1493195097
|
|
.long 8882055,3774931425
|
|
.long 7039851,3657489114
|
|
.long 16053492,1023425853
|
|
.long 2302755,3355494600
|
|
.long 4737096,301994514
|
|
.long 1052688,67109892
|
|
.long 13750737,1946186868
|
|
.long 5329233,1409307732
|
|
.long 12632256,805318704
|
|
.long 16382457,2113961598
|
|
.long 13816530,3019945140
|
|
.long 10526880,671098920
|
|
.long 5592405,1426085205
|
|
.long 10592673,1744857192
|
|
.long 4276545,1342197840
|
|
.long 16448250,3187719870
|
|
.long 4408131,3489714384
|
|
.long 1250067,3288384708
|
|
.long 12895428,822096177
|
|
.long 3092271,3405827019
|
|
.long 11053224,704653866
|
|
.long 11974326,2902502829
|
|
.long 3947580,251662095
|
|
.long 2829099,3389049546
|
|
.long 12698049,1879076976
|
|
.long 16777215,4278255615
|
|
.long 13158600,838873650
|
|
.long 10855845,1761634665
|
|
.long 2105376,134219784
|
|
.long 9013641,1644192354
|
|
.long 0,0
|
|
.long 9474192,603989028
|
|
.long 4671303,3506491857
|
|
.long 15724527,4211145723
|
|
.long 15395562,3120609978
|
|
.long 12040119,3976261101
|
|
.long 1381653,1157645637
|
|
.long 394758,2164294017
|
|
.long 13487565,1929409395
|
|
.long 11908533,1828744557
|
|
.long 1184274,2214626436
|
|
.long 8289918,2667618207
|
|
.long 12303291,3993038574
|
|
.long 2697513,1241533002
|
|
.long 986895,3271607235
|
|
.long 12105912,771763758
|
|
.long 460551,3238052289
|
|
.long 263172,16777473
|
|
.long 10197915,3858818790
|
|
.long 9737364,620766501
|
|
.long 2171169,1207978056
|
|
.long 6710886,2566953369
|
|
.long 15132390,3103832505
|
|
.long 13553358,3003167667
|
|
.long 15592941,2063629179
|
|
.long 15198183,4177590777
|
|
.long 3881787,3456159438
|
|
.long 16711422,3204497343
|
|
.long 8355711,3741376479
|
|
.long 12961221,1895854449
|
|
.long 10790052,687876393
|
|
.long 3618615,3439381965
|
|
.long 11645361,1811967084
|
|
.long 5000268,318771987
|
|
.long 9539985,1677747300
|
|
.long 7237230,2600508315
|
|
.long 9276813,1660969827
|
|
.long 7763574,2634063261
|
|
.long 197379,3221274816
|
|
.long 2960685,1258310475
|
|
.long 14606046,3070277559
|
|
.long 9868950,2768283045
|
|
.long 2500134,2298513801
|
|
.long 8224125,1593859935
|
|
.long 13027014,2969612721
|
|
.long 6052956,385881879
|
|
.long 13882323,4093703412
|
|
.long 15921906,3154164924
|
|
.long 5197647,3540046803
|
|
.long 1644825,1174423110
|
|
.long 4144959,3472936911
|
|
.long 14474460,922761015
|
|
.long 7960953,1577082462
|
|
.long 1907997,1191200583
|
|
.long 5395026,2483066004
|
|
.long 15461355,4194368250
|
|
.long 15987699,4227923196
|
|
.long 7171437,1526750043
|
|
.long 6184542,2533398423
|
|
.long 16514043,4261478142
|
|
.long 6908265,1509972570
|
|
.long 11711154,2885725356
|
|
.long 15790320,1006648380
|
|
.long 3223857,1275087948
|
|
.long 789516,50332419
|
|
.long 13948116,889206069
|
|
.long 13619151,4076925939
|
|
.long 9211020,587211555
|
|
.long 14869218,3087055032
|
|
.long 7697781,1560304989
|
|
.long 11119017,1778412138
|
|
.long 4868682,2449511058
|
|
.long 5723991,3573601749
|
|
.long 8684676,553656609
|
|
.long 1118481,1140868164
|
|
.long 4539717,1358975313
|
|
.long 1776411,3321939654
|
|
.long 16119285,2097184125
|
|
.long 15000804,956315961
|
|
.long 921102,2197848963
|
|
.long 7566195,3691044060
|
|
.long 11184810,2852170410
|
|
.long 15856113,2080406652
|
|
.long 14540253,1996519287
|
|
.long 5855577,1442862678
|
|
.long 1315860,83887365
|
|
.long 7105644,452991771
|
|
.long 9605778,2751505572
|
|
.long 5526612,352326933
|
|
.long 13684944,872428596
|
|
.long 7895160,503324190
|
|
.long 7368816,469769244
|
|
.long 14935011,4160813304
|
|
.long 4802889,1375752786
|
|
.long 8421504,536879136
|
|
.long 5263440,335549460
|
|
.long 10987431,3909151209
|
|
.long 16185078,3170942397
|
|
.long 7829367,3707821533
|
|
.long 9671571,3825263844
|
|
.long 8816262,2701173153
|
|
.long 8618883,3758153952
|
|
.long 2763306,2315291274
|
|
.long 13092807,4043370993
|
|
.long 5987163,3590379222
|
|
.long 15329769,2046851706
|
|
.long 15658734,3137387451
|
|
.long 9408399,3808486371
|
|
.long 65793,1073758272
|
|
.long 4013373,1325420367
|
|
.globl Camellia_cbc_encrypt
|
|
.type Camellia_cbc_encrypt,@function
|
|
.align 16
|
|
Camellia_cbc_encrypt:
|
|
.L_Camellia_cbc_encrypt_begin:
|
|
pushl %ebp
|
|
pushl %ebx
|
|
pushl %esi
|
|
pushl %edi
|
|
movl 28(%esp),%ecx
|
|
cmpl $0,%ecx
|
|
je .L016enc_out
|
|
pushfl
|
|
cld
|
|
movl 24(%esp),%eax
|
|
movl 28(%esp),%ebx
|
|
movl 36(%esp),%edx
|
|
movl 40(%esp),%ebp
|
|
leal -64(%esp),%esi
|
|
andl $-64,%esi
|
|
leal -127(%edx),%edi
|
|
subl %esi,%edi
|
|
negl %edi
|
|
andl $960,%edi
|
|
subl %edi,%esi
|
|
movl 44(%esp),%edi
|
|
xchgl %esi,%esp
|
|
addl $4,%esp
|
|
movl %esi,20(%esp)
|
|
movl %eax,24(%esp)
|
|
movl %ebx,28(%esp)
|
|
movl %ecx,32(%esp)
|
|
movl %edx,36(%esp)
|
|
movl %ebp,40(%esp)
|
|
call .L017pic_point
|
|
.L017pic_point:
|
|
popl %ebp
|
|
leal .LCamellia_SBOX-.L017pic_point(%ebp),%ebp
|
|
movl $32,%esi
|
|
.align 4
|
|
.L018prefetch_sbox:
|
|
movl (%ebp),%eax
|
|
movl 32(%ebp),%ebx
|
|
movl 64(%ebp),%ecx
|
|
movl 96(%ebp),%edx
|
|
leal 128(%ebp),%ebp
|
|
decl %esi
|
|
jnz .L018prefetch_sbox
|
|
movl 36(%esp),%eax
|
|
subl $4096,%ebp
|
|
movl 24(%esp),%esi
|
|
movl 272(%eax),%edx
|
|
cmpl $0,%edi
|
|
je .L019DECRYPT
|
|
movl 32(%esp),%ecx
|
|
movl 40(%esp),%edi
|
|
shll $6,%edx
|
|
leal (%eax,%edx,1),%edx
|
|
movl %edx,16(%esp)
|
|
testl $4294967280,%ecx
|
|
jz .L020enc_tail
|
|
movl (%edi),%eax
|
|
movl 4(%edi),%ebx
|
|
.align 4
|
|
.L021enc_loop:
|
|
movl 8(%edi),%ecx
|
|
movl 12(%edi),%edx
|
|
xorl (%esi),%eax
|
|
xorl 4(%esi),%ebx
|
|
xorl 8(%esi),%ecx
|
|
bswap %eax
|
|
xorl 12(%esi),%edx
|
|
bswap %ebx
|
|
movl 36(%esp),%edi
|
|
bswap %ecx
|
|
bswap %edx
|
|
call _x86_Camellia_encrypt
|
|
movl 24(%esp),%esi
|
|
movl 28(%esp),%edi
|
|
bswap %eax
|
|
bswap %ebx
|
|
bswap %ecx
|
|
movl %eax,(%edi)
|
|
bswap %edx
|
|
movl %ebx,4(%edi)
|
|
movl %ecx,8(%edi)
|
|
movl %edx,12(%edi)
|
|
movl 32(%esp),%ecx
|
|
leal 16(%esi),%esi
|
|
movl %esi,24(%esp)
|
|
leal 16(%edi),%edx
|
|
movl %edx,28(%esp)
|
|
subl $16,%ecx
|
|
testl $4294967280,%ecx
|
|
movl %ecx,32(%esp)
|
|
jnz .L021enc_loop
|
|
testl $15,%ecx
|
|
jnz .L020enc_tail
|
|
movl 40(%esp),%esi
|
|
movl 8(%edi),%ecx
|
|
movl 12(%edi),%edx
|
|
movl %eax,(%esi)
|
|
movl %ebx,4(%esi)
|
|
movl %ecx,8(%esi)
|
|
movl %edx,12(%esi)
|
|
movl 20(%esp),%esp
|
|
popfl
|
|
.L016enc_out:
|
|
popl %edi
|
|
popl %esi
|
|
popl %ebx
|
|
popl %ebp
|
|
ret
|
|
pushfl
|
|
.align 4
|
|
.L020enc_tail:
|
|
movl %edi,%eax
|
|
movl 28(%esp),%edi
|
|
pushl %eax
|
|
movl $16,%ebx
|
|
subl %ecx,%ebx
|
|
cmpl %esi,%edi
|
|
je .L022enc_in_place
|
|
.align 4
|
|
.long 2767451785
|
|
jmp .L023enc_skip_in_place
|
|
.L022enc_in_place:
|
|
leal (%edi,%ecx,1),%edi
|
|
.L023enc_skip_in_place:
|
|
movl %ebx,%ecx
|
|
xorl %eax,%eax
|
|
.align 4
|
|
.long 2868115081
|
|
popl %edi
|
|
movl 28(%esp),%esi
|
|
movl (%edi),%eax
|
|
movl 4(%edi),%ebx
|
|
movl $16,32(%esp)
|
|
jmp .L021enc_loop
|
|
.align 16
|
|
.L019DECRYPT:
|
|
shll $6,%edx
|
|
leal (%eax,%edx,1),%edx
|
|
movl %eax,16(%esp)
|
|
movl %edx,36(%esp)
|
|
cmpl 28(%esp),%esi
|
|
je .L024dec_in_place
|
|
movl 40(%esp),%edi
|
|
movl %edi,44(%esp)
|
|
.align 4
|
|
.L025dec_loop:
|
|
movl (%esi),%eax
|
|
movl 4(%esi),%ebx
|
|
movl 8(%esi),%ecx
|
|
bswap %eax
|
|
movl 12(%esi),%edx
|
|
bswap %ebx
|
|
movl 36(%esp),%edi
|
|
bswap %ecx
|
|
bswap %edx
|
|
call _x86_Camellia_decrypt
|
|
movl 44(%esp),%edi
|
|
movl 32(%esp),%esi
|
|
bswap %eax
|
|
bswap %ebx
|
|
bswap %ecx
|
|
xorl (%edi),%eax
|
|
bswap %edx
|
|
xorl 4(%edi),%ebx
|
|
xorl 8(%edi),%ecx
|
|
xorl 12(%edi),%edx
|
|
subl $16,%esi
|
|
jc .L026dec_partial
|
|
movl %esi,32(%esp)
|
|
movl 24(%esp),%esi
|
|
movl 28(%esp),%edi
|
|
movl %eax,(%edi)
|
|
movl %ebx,4(%edi)
|
|
movl %ecx,8(%edi)
|
|
movl %edx,12(%edi)
|
|
movl %esi,44(%esp)
|
|
leal 16(%esi),%esi
|
|
movl %esi,24(%esp)
|
|
leal 16(%edi),%edi
|
|
movl %edi,28(%esp)
|
|
jnz .L025dec_loop
|
|
movl 44(%esp),%edi
|
|
.L027dec_end:
|
|
movl 40(%esp),%esi
|
|
movl (%edi),%eax
|
|
movl 4(%edi),%ebx
|
|
movl 8(%edi),%ecx
|
|
movl 12(%edi),%edx
|
|
movl %eax,(%esi)
|
|
movl %ebx,4(%esi)
|
|
movl %ecx,8(%esi)
|
|
movl %edx,12(%esi)
|
|
jmp .L028dec_out
|
|
.align 4
|
|
.L026dec_partial:
|
|
leal 44(%esp),%edi
|
|
movl %eax,(%edi)
|
|
movl %ebx,4(%edi)
|
|
movl %ecx,8(%edi)
|
|
movl %edx,12(%edi)
|
|
leal 16(%esi),%ecx
|
|
movl %edi,%esi
|
|
movl 28(%esp),%edi
|
|
.long 2767451785
|
|
movl 24(%esp),%edi
|
|
jmp .L027dec_end
|
|
.align 4
|
|
.L024dec_in_place:
|
|
.L029dec_in_place_loop:
|
|
leal 44(%esp),%edi
|
|
movl (%esi),%eax
|
|
movl 4(%esi),%ebx
|
|
movl 8(%esi),%ecx
|
|
movl 12(%esi),%edx
|
|
movl %eax,(%edi)
|
|
movl %ebx,4(%edi)
|
|
movl %ecx,8(%edi)
|
|
bswap %eax
|
|
movl %edx,12(%edi)
|
|
bswap %ebx
|
|
movl 36(%esp),%edi
|
|
bswap %ecx
|
|
bswap %edx
|
|
call _x86_Camellia_decrypt
|
|
movl 40(%esp),%edi
|
|
movl 28(%esp),%esi
|
|
bswap %eax
|
|
bswap %ebx
|
|
bswap %ecx
|
|
xorl (%edi),%eax
|
|
bswap %edx
|
|
xorl 4(%edi),%ebx
|
|
xorl 8(%edi),%ecx
|
|
xorl 12(%edi),%edx
|
|
movl %eax,(%esi)
|
|
movl %ebx,4(%esi)
|
|
movl %ecx,8(%esi)
|
|
movl %edx,12(%esi)
|
|
leal 16(%esi),%esi
|
|
movl %esi,28(%esp)
|
|
leal 44(%esp),%esi
|
|
movl (%esi),%eax
|
|
movl 4(%esi),%ebx
|
|
movl 8(%esi),%ecx
|
|
movl 12(%esi),%edx
|
|
movl %eax,(%edi)
|
|
movl %ebx,4(%edi)
|
|
movl %ecx,8(%edi)
|
|
movl %edx,12(%edi)
|
|
movl 24(%esp),%esi
|
|
leal 16(%esi),%esi
|
|
movl %esi,24(%esp)
|
|
movl 32(%esp),%ecx
|
|
subl $16,%ecx
|
|
jc .L030dec_in_place_partial
|
|
movl %ecx,32(%esp)
|
|
jnz .L029dec_in_place_loop
|
|
jmp .L028dec_out
|
|
.align 4
|
|
.L030dec_in_place_partial:
|
|
movl 28(%esp),%edi
|
|
leal 44(%esp),%esi
|
|
leal (%edi,%ecx,1),%edi
|
|
leal 16(%esi,%ecx,1),%esi
|
|
negl %ecx
|
|
.long 2767451785
|
|
.align 4
|
|
.L028dec_out:
|
|
movl 20(%esp),%esp
|
|
popfl
|
|
popl %edi
|
|
popl %esi
|
|
popl %ebx
|
|
popl %ebp
|
|
ret
|
|
.size Camellia_cbc_encrypt,.-.L_Camellia_cbc_encrypt_begin
|
|
.byte 67,97,109,101,108,108,105,97,32,102,111,114,32,120,56,54
|
|
.byte 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
|
|
.byte 115,108,46,111,114,103,62,0
|
|
#else
|
|
.file "cmll-x86.S"
|
|
.text
|
|
.globl Camellia_EncryptBlock_Rounds
|
|
.type Camellia_EncryptBlock_Rounds,@function
|
|
.align 16
|
|
Camellia_EncryptBlock_Rounds:
|
|
.L_Camellia_EncryptBlock_Rounds_begin:
|
|
pushl %ebp
|
|
pushl %ebx
|
|
pushl %esi
|
|
pushl %edi
|
|
movl 20(%esp),%eax
|
|
movl 24(%esp),%esi
|
|
movl 28(%esp),%edi
|
|
movl %esp,%ebx
|
|
subl $28,%esp
|
|
andl $-64,%esp
|
|
leal -127(%edi),%ecx
|
|
subl %esp,%ecx
|
|
negl %ecx
|
|
andl $960,%ecx
|
|
subl %ecx,%esp
|
|
addl $4,%esp
|
|
shll $6,%eax
|
|
leal (%edi,%eax,1),%eax
|
|
movl %ebx,20(%esp)
|
|
movl %eax,16(%esp)
|
|
call .L000pic_point
|
|
.L000pic_point:
|
|
popl %ebp
|
|
leal .LCamellia_SBOX-.L000pic_point(%ebp),%ebp
|
|
movl (%esi),%eax
|
|
movl 4(%esi),%ebx
|
|
movl 8(%esi),%ecx
|
|
bswap %eax
|
|
movl 12(%esi),%edx
|
|
bswap %ebx
|
|
bswap %ecx
|
|
bswap %edx
|
|
call _x86_Camellia_encrypt
|
|
movl 20(%esp),%esp
|
|
bswap %eax
|
|
movl 32(%esp),%esi
|
|
bswap %ebx
|
|
bswap %ecx
|
|
bswap %edx
|
|
movl %eax,(%esi)
|
|
movl %ebx,4(%esi)
|
|
movl %ecx,8(%esi)
|
|
movl %edx,12(%esi)
|
|
popl %edi
|
|
popl %esi
|
|
popl %ebx
|
|
popl %ebp
|
|
ret
|
|
.size Camellia_EncryptBlock_Rounds,.-.L_Camellia_EncryptBlock_Rounds_begin
|
|
.globl Camellia_EncryptBlock
|
|
.type Camellia_EncryptBlock,@function
|
|
.align 16
|
|
Camellia_EncryptBlock:
|
|
.L_Camellia_EncryptBlock_begin:
|
|
movl $128,%eax
|
|
subl 4(%esp),%eax
|
|
movl $3,%eax
|
|
adcl $0,%eax
|
|
movl %eax,4(%esp)
|
|
jmp .L_Camellia_EncryptBlock_Rounds_begin
|
|
.size Camellia_EncryptBlock,.-.L_Camellia_EncryptBlock_begin
|
|
.globl Camellia_encrypt
|
|
.type Camellia_encrypt,@function
|
|
.align 16
|
|
Camellia_encrypt:
|
|
.L_Camellia_encrypt_begin:
|
|
pushl %ebp
|
|
pushl %ebx
|
|
pushl %esi
|
|
pushl %edi
|
|
movl 20(%esp),%esi
|
|
movl 28(%esp),%edi
|
|
movl %esp,%ebx
|
|
subl $28,%esp
|
|
andl $-64,%esp
|
|
movl 272(%edi),%eax
|
|
leal -127(%edi),%ecx
|
|
subl %esp,%ecx
|
|
negl %ecx
|
|
andl $960,%ecx
|
|
subl %ecx,%esp
|
|
addl $4,%esp
|
|
shll $6,%eax
|
|
leal (%edi,%eax,1),%eax
|
|
movl %ebx,20(%esp)
|
|
movl %eax,16(%esp)
|
|
call .L001pic_point
|
|
.L001pic_point:
|
|
popl %ebp
|
|
leal .LCamellia_SBOX-.L001pic_point(%ebp),%ebp
|
|
movl (%esi),%eax
|
|
movl 4(%esi),%ebx
|
|
movl 8(%esi),%ecx
|
|
bswap %eax
|
|
movl 12(%esi),%edx
|
|
bswap %ebx
|
|
bswap %ecx
|
|
bswap %edx
|
|
call _x86_Camellia_encrypt
|
|
movl 20(%esp),%esp
|
|
bswap %eax
|
|
movl 24(%esp),%esi
|
|
bswap %ebx
|
|
bswap %ecx
|
|
bswap %edx
|
|
movl %eax,(%esi)
|
|
movl %ebx,4(%esi)
|
|
movl %ecx,8(%esi)
|
|
movl %edx,12(%esi)
|
|
popl %edi
|
|
popl %esi
|
|
popl %ebx
|
|
popl %ebp
|
|
ret
|
|
.size Camellia_encrypt,.-.L_Camellia_encrypt_begin
|
|
.type _x86_Camellia_encrypt,@function
|
|
.align 16
|
|
_x86_Camellia_encrypt:
|
|
xorl (%edi),%eax
|
|
xorl 4(%edi),%ebx
|
|
xorl 8(%edi),%ecx
|
|
xorl 12(%edi),%edx
|
|
movl 16(%edi),%esi
|
|
movl %eax,4(%esp)
|
|
movl %ebx,8(%esp)
|
|
movl %ecx,12(%esp)
|
|
movl %edx,16(%esp)
|
|
.align 16
|
|
.L002loop:
|
|
xorl %esi,%eax
|
|
xorl 20(%edi),%ebx
|
|
movzbl %ah,%esi
|
|
movl 2052(%ebp,%esi,8),%edx
|
|
movzbl %al,%esi
|
|
xorl 4(%ebp,%esi,8),%edx
|
|
shrl $16,%eax
|
|
movzbl %bl,%esi
|
|
movl (%ebp,%esi,8),%ecx
|
|
movzbl %ah,%esi
|
|
xorl (%ebp,%esi,8),%edx
|
|
movzbl %bh,%esi
|
|
xorl 4(%ebp,%esi,8),%ecx
|
|
shrl $16,%ebx
|
|
movzbl %al,%eax
|
|
xorl 2048(%ebp,%eax,8),%edx
|
|
movzbl %bh,%esi
|
|
movl 16(%esp),%eax
|
|
xorl %edx,%ecx
|
|
rorl $8,%edx
|
|
xorl 2048(%ebp,%esi,8),%ecx
|
|
movzbl %bl,%esi
|
|
movl 12(%esp),%ebx
|
|
xorl %eax,%edx
|
|
xorl 2052(%ebp,%esi,8),%ecx
|
|
movl 24(%edi),%esi
|
|
xorl %ecx,%edx
|
|
movl %edx,16(%esp)
|
|
xorl %ebx,%ecx
|
|
movl %ecx,12(%esp)
|
|
xorl %esi,%ecx
|
|
xorl 28(%edi),%edx
|
|
movzbl %ch,%esi
|
|
movl 2052(%ebp,%esi,8),%ebx
|
|
movzbl %cl,%esi
|
|
xorl 4(%ebp,%esi,8),%ebx
|
|
shrl $16,%ecx
|
|
movzbl %dl,%esi
|
|
movl (%ebp,%esi,8),%eax
|
|
movzbl %ch,%esi
|
|
xorl (%ebp,%esi,8),%ebx
|
|
movzbl %dh,%esi
|
|
xorl 4(%ebp,%esi,8),%eax
|
|
shrl $16,%edx
|
|
movzbl %cl,%ecx
|
|
xorl 2048(%ebp,%ecx,8),%ebx
|
|
movzbl %dh,%esi
|
|
movl 8(%esp),%ecx
|
|
xorl %ebx,%eax
|
|
rorl $8,%ebx
|
|
xorl 2048(%ebp,%esi,8),%eax
|
|
movzbl %dl,%esi
|
|
movl 4(%esp),%edx
|
|
xorl %ecx,%ebx
|
|
xorl 2052(%ebp,%esi,8),%eax
|
|
movl 32(%edi),%esi
|
|
xorl %eax,%ebx
|
|
movl %ebx,8(%esp)
|
|
xorl %edx,%eax
|
|
movl %eax,4(%esp)
|
|
xorl %esi,%eax
|
|
xorl 36(%edi),%ebx
|
|
movzbl %ah,%esi
|
|
movl 2052(%ebp,%esi,8),%edx
|
|
movzbl %al,%esi
|
|
xorl 4(%ebp,%esi,8),%edx
|
|
shrl $16,%eax
|
|
movzbl %bl,%esi
|
|
movl (%ebp,%esi,8),%ecx
|
|
movzbl %ah,%esi
|
|
xorl (%ebp,%esi,8),%edx
|
|
movzbl %bh,%esi
|
|
xorl 4(%ebp,%esi,8),%ecx
|
|
shrl $16,%ebx
|
|
movzbl %al,%eax
|
|
xorl 2048(%ebp,%eax,8),%edx
|
|
movzbl %bh,%esi
|
|
movl 16(%esp),%eax
|
|
xorl %edx,%ecx
|
|
rorl $8,%edx
|
|
xorl 2048(%ebp,%esi,8),%ecx
|
|
movzbl %bl,%esi
|
|
movl 12(%esp),%ebx
|
|
xorl %eax,%edx
|
|
xorl 2052(%ebp,%esi,8),%ecx
|
|
movl 40(%edi),%esi
|
|
xorl %ecx,%edx
|
|
movl %edx,16(%esp)
|
|
xorl %ebx,%ecx
|
|
movl %ecx,12(%esp)
|
|
xorl %esi,%ecx
|
|
xorl 44(%edi),%edx
|
|
movzbl %ch,%esi
|
|
movl 2052(%ebp,%esi,8),%ebx
|
|
movzbl %cl,%esi
|
|
xorl 4(%ebp,%esi,8),%ebx
|
|
shrl $16,%ecx
|
|
movzbl %dl,%esi
|
|
movl (%ebp,%esi,8),%eax
|
|
movzbl %ch,%esi
|
|
xorl (%ebp,%esi,8),%ebx
|
|
movzbl %dh,%esi
|
|
xorl 4(%ebp,%esi,8),%eax
|
|
shrl $16,%edx
|
|
movzbl %cl,%ecx
|
|
xorl 2048(%ebp,%ecx,8),%ebx
|
|
movzbl %dh,%esi
|
|
movl 8(%esp),%ecx
|
|
xorl %ebx,%eax
|
|
rorl $8,%ebx
|
|
xorl 2048(%ebp,%esi,8),%eax
|
|
movzbl %dl,%esi
|
|
movl 4(%esp),%edx
|
|
xorl %ecx,%ebx
|
|
xorl 2052(%ebp,%esi,8),%eax
|
|
movl 48(%edi),%esi
|
|
xorl %eax,%ebx
|
|
movl %ebx,8(%esp)
|
|
xorl %edx,%eax
|
|
movl %eax,4(%esp)
|
|
xorl %esi,%eax
|
|
xorl 52(%edi),%ebx
|
|
movzbl %ah,%esi
|
|
movl 2052(%ebp,%esi,8),%edx
|
|
movzbl %al,%esi
|
|
xorl 4(%ebp,%esi,8),%edx
|
|
shrl $16,%eax
|
|
movzbl %bl,%esi
|
|
movl (%ebp,%esi,8),%ecx
|
|
movzbl %ah,%esi
|
|
xorl (%ebp,%esi,8),%edx
|
|
movzbl %bh,%esi
|
|
xorl 4(%ebp,%esi,8),%ecx
|
|
shrl $16,%ebx
|
|
movzbl %al,%eax
|
|
xorl 2048(%ebp,%eax,8),%edx
|
|
movzbl %bh,%esi
|
|
movl 16(%esp),%eax
|
|
xorl %edx,%ecx
|
|
rorl $8,%edx
|
|
xorl 2048(%ebp,%esi,8),%ecx
|
|
movzbl %bl,%esi
|
|
movl 12(%esp),%ebx
|
|
xorl %eax,%edx
|
|
xorl 2052(%ebp,%esi,8),%ecx
|
|
movl 56(%edi),%esi
|
|
xorl %ecx,%edx
|
|
movl %edx,16(%esp)
|
|
xorl %ebx,%ecx
|
|
movl %ecx,12(%esp)
|
|
xorl %esi,%ecx
|
|
xorl 60(%edi),%edx
|
|
movzbl %ch,%esi
|
|
movl 2052(%ebp,%esi,8),%ebx
|
|
movzbl %cl,%esi
|
|
xorl 4(%ebp,%esi,8),%ebx
|
|
shrl $16,%ecx
|
|
movzbl %dl,%esi
|
|
movl (%ebp,%esi,8),%eax
|
|
movzbl %ch,%esi
|
|
xorl (%ebp,%esi,8),%ebx
|
|
movzbl %dh,%esi
|
|
xorl 4(%ebp,%esi,8),%eax
|
|
shrl $16,%edx
|
|
movzbl %cl,%ecx
|
|
xorl 2048(%ebp,%ecx,8),%ebx
|
|
movzbl %dh,%esi
|
|
movl 8(%esp),%ecx
|
|
xorl %ebx,%eax
|
|
rorl $8,%ebx
|
|
xorl 2048(%ebp,%esi,8),%eax
|
|
movzbl %dl,%esi
|
|
movl 4(%esp),%edx
|
|
xorl %ecx,%ebx
|
|
xorl 2052(%ebp,%esi,8),%eax
|
|
movl 64(%edi),%esi
|
|
xorl %eax,%ebx
|
|
movl %ebx,8(%esp)
|
|
xorl %edx,%eax
|
|
movl %eax,4(%esp)
|
|
addl $64,%edi
|
|
cmpl 20(%esp),%edi
|
|
je .L003done
|
|
andl %eax,%esi
|
|
movl 16(%esp),%edx
|
|
roll $1,%esi
|
|
movl %edx,%ecx
|
|
xorl %esi,%ebx
|
|
orl 12(%edi),%ecx
|
|
movl %ebx,8(%esp)
|
|
xorl 12(%esp),%ecx
|
|
movl 4(%edi),%esi
|
|
movl %ecx,12(%esp)
|
|
orl %ebx,%esi
|
|
andl 8(%edi),%ecx
|
|
xorl %esi,%eax
|
|
roll $1,%ecx
|
|
movl %eax,4(%esp)
|
|
xorl %ecx,%edx
|
|
movl 16(%edi),%esi
|
|
movl %edx,16(%esp)
|
|
jmp .L002loop
|
|
.align 8
|
|
.L003done:
|
|
movl %eax,%ecx
|
|
movl %ebx,%edx
|
|
movl 12(%esp),%eax
|
|
movl 16(%esp),%ebx
|
|
xorl %esi,%eax
|
|
xorl 4(%edi),%ebx
|
|
xorl 8(%edi),%ecx
|
|
xorl 12(%edi),%edx
|
|
ret
|
|
.size _x86_Camellia_encrypt,.-_x86_Camellia_encrypt
|
|
.globl Camellia_DecryptBlock_Rounds
|
|
.type Camellia_DecryptBlock_Rounds,@function
|
|
.align 16
|
|
Camellia_DecryptBlock_Rounds:
|
|
.L_Camellia_DecryptBlock_Rounds_begin:
|
|
pushl %ebp
|
|
pushl %ebx
|
|
pushl %esi
|
|
pushl %edi
|
|
movl 20(%esp),%eax
|
|
movl 24(%esp),%esi
|
|
movl 28(%esp),%edi
|
|
movl %esp,%ebx
|
|
subl $28,%esp
|
|
andl $-64,%esp
|
|
leal -127(%edi),%ecx
|
|
subl %esp,%ecx
|
|
negl %ecx
|
|
andl $960,%ecx
|
|
subl %ecx,%esp
|
|
addl $4,%esp
|
|
shll $6,%eax
|
|
movl %edi,16(%esp)
|
|
leal (%edi,%eax,1),%edi
|
|
movl %ebx,20(%esp)
|
|
call .L004pic_point
|
|
.L004pic_point:
|
|
popl %ebp
|
|
leal .LCamellia_SBOX-.L004pic_point(%ebp),%ebp
|
|
movl (%esi),%eax
|
|
movl 4(%esi),%ebx
|
|
movl 8(%esi),%ecx
|
|
bswap %eax
|
|
movl 12(%esi),%edx
|
|
bswap %ebx
|
|
bswap %ecx
|
|
bswap %edx
|
|
call _x86_Camellia_decrypt
|
|
movl 20(%esp),%esp
|
|
bswap %eax
|
|
movl 32(%esp),%esi
|
|
bswap %ebx
|
|
bswap %ecx
|
|
bswap %edx
|
|
movl %eax,(%esi)
|
|
movl %ebx,4(%esi)
|
|
movl %ecx,8(%esi)
|
|
movl %edx,12(%esi)
|
|
popl %edi
|
|
popl %esi
|
|
popl %ebx
|
|
popl %ebp
|
|
ret
|
|
.size Camellia_DecryptBlock_Rounds,.-.L_Camellia_DecryptBlock_Rounds_begin
|
|
.globl Camellia_DecryptBlock
|
|
.type Camellia_DecryptBlock,@function
|
|
.align 16
|
|
Camellia_DecryptBlock:
|
|
.L_Camellia_DecryptBlock_begin:
|
|
movl $128,%eax
|
|
subl 4(%esp),%eax
|
|
movl $3,%eax
|
|
adcl $0,%eax
|
|
movl %eax,4(%esp)
|
|
jmp .L_Camellia_DecryptBlock_Rounds_begin
|
|
.size Camellia_DecryptBlock,.-.L_Camellia_DecryptBlock_begin
|
|
.globl Camellia_decrypt
|
|
.type Camellia_decrypt,@function
|
|
.align 16
|
|
Camellia_decrypt:
|
|
.L_Camellia_decrypt_begin:
|
|
pushl %ebp
|
|
pushl %ebx
|
|
pushl %esi
|
|
pushl %edi
|
|
movl 20(%esp),%esi
|
|
movl 28(%esp),%edi
|
|
movl %esp,%ebx
|
|
subl $28,%esp
|
|
andl $-64,%esp
|
|
movl 272(%edi),%eax
|
|
leal -127(%edi),%ecx
|
|
subl %esp,%ecx
|
|
negl %ecx
|
|
andl $960,%ecx
|
|
subl %ecx,%esp
|
|
addl $4,%esp
|
|
shll $6,%eax
|
|
movl %edi,16(%esp)
|
|
leal (%edi,%eax,1),%edi
|
|
movl %ebx,20(%esp)
|
|
call .L005pic_point
|
|
.L005pic_point:
|
|
popl %ebp
|
|
leal .LCamellia_SBOX-.L005pic_point(%ebp),%ebp
|
|
movl (%esi),%eax
|
|
movl 4(%esi),%ebx
|
|
movl 8(%esi),%ecx
|
|
bswap %eax
|
|
movl 12(%esi),%edx
|
|
bswap %ebx
|
|
bswap %ecx
|
|
bswap %edx
|
|
call _x86_Camellia_decrypt
|
|
movl 20(%esp),%esp
|
|
bswap %eax
|
|
movl 24(%esp),%esi
|
|
bswap %ebx
|
|
bswap %ecx
|
|
bswap %edx
|
|
movl %eax,(%esi)
|
|
movl %ebx,4(%esi)
|
|
movl %ecx,8(%esi)
|
|
movl %edx,12(%esi)
|
|
popl %edi
|
|
popl %esi
|
|
popl %ebx
|
|
popl %ebp
|
|
ret
|
|
.size Camellia_decrypt,.-.L_Camellia_decrypt_begin
|
|
.type _x86_Camellia_decrypt,@function
|
|
.align 16
|
|
_x86_Camellia_decrypt:
|
|
xorl (%edi),%eax
|
|
xorl 4(%edi),%ebx
|
|
xorl 8(%edi),%ecx
|
|
xorl 12(%edi),%edx
|
|
movl -8(%edi),%esi
|
|
movl %eax,4(%esp)
|
|
movl %ebx,8(%esp)
|
|
movl %ecx,12(%esp)
|
|
movl %edx,16(%esp)
|
|
.align 16
|
|
.L006loop:
|
|
xorl %esi,%eax
|
|
xorl -4(%edi),%ebx
|
|
movzbl %ah,%esi
|
|
movl 2052(%ebp,%esi,8),%edx
|
|
movzbl %al,%esi
|
|
xorl 4(%ebp,%esi,8),%edx
|
|
shrl $16,%eax
|
|
movzbl %bl,%esi
|
|
movl (%ebp,%esi,8),%ecx
|
|
movzbl %ah,%esi
|
|
xorl (%ebp,%esi,8),%edx
|
|
movzbl %bh,%esi
|
|
xorl 4(%ebp,%esi,8),%ecx
|
|
shrl $16,%ebx
|
|
movzbl %al,%eax
|
|
xorl 2048(%ebp,%eax,8),%edx
|
|
movzbl %bh,%esi
|
|
movl 16(%esp),%eax
|
|
xorl %edx,%ecx
|
|
rorl $8,%edx
|
|
xorl 2048(%ebp,%esi,8),%ecx
|
|
movzbl %bl,%esi
|
|
movl 12(%esp),%ebx
|
|
xorl %eax,%edx
|
|
xorl 2052(%ebp,%esi,8),%ecx
|
|
movl -16(%edi),%esi
|
|
xorl %ecx,%edx
|
|
movl %edx,16(%esp)
|
|
xorl %ebx,%ecx
|
|
movl %ecx,12(%esp)
|
|
xorl %esi,%ecx
|
|
xorl -12(%edi),%edx
|
|
movzbl %ch,%esi
|
|
movl 2052(%ebp,%esi,8),%ebx
|
|
movzbl %cl,%esi
|
|
xorl 4(%ebp,%esi,8),%ebx
|
|
shrl $16,%ecx
|
|
movzbl %dl,%esi
|
|
movl (%ebp,%esi,8),%eax
|
|
movzbl %ch,%esi
|
|
xorl (%ebp,%esi,8),%ebx
|
|
movzbl %dh,%esi
|
|
xorl 4(%ebp,%esi,8),%eax
|
|
shrl $16,%edx
|
|
movzbl %cl,%ecx
|
|
xorl 2048(%ebp,%ecx,8),%ebx
|
|
movzbl %dh,%esi
|
|
movl 8(%esp),%ecx
|
|
xorl %ebx,%eax
|
|
rorl $8,%ebx
|
|
xorl 2048(%ebp,%esi,8),%eax
|
|
movzbl %dl,%esi
|
|
movl 4(%esp),%edx
|
|
xorl %ecx,%ebx
|
|
xorl 2052(%ebp,%esi,8),%eax
|
|
movl -24(%edi),%esi
|
|
xorl %eax,%ebx
|
|
movl %ebx,8(%esp)
|
|
xorl %edx,%eax
|
|
movl %eax,4(%esp)
|
|
xorl %esi,%eax
|
|
xorl -20(%edi),%ebx
|
|
movzbl %ah,%esi
|
|
movl 2052(%ebp,%esi,8),%edx
|
|
movzbl %al,%esi
|
|
xorl 4(%ebp,%esi,8),%edx
|
|
shrl $16,%eax
|
|
movzbl %bl,%esi
|
|
movl (%ebp,%esi,8),%ecx
|
|
movzbl %ah,%esi
|
|
xorl (%ebp,%esi,8),%edx
|
|
movzbl %bh,%esi
|
|
xorl 4(%ebp,%esi,8),%ecx
|
|
shrl $16,%ebx
|
|
movzbl %al,%eax
|
|
xorl 2048(%ebp,%eax,8),%edx
|
|
movzbl %bh,%esi
|
|
movl 16(%esp),%eax
|
|
xorl %edx,%ecx
|
|
rorl $8,%edx
|
|
xorl 2048(%ebp,%esi,8),%ecx
|
|
movzbl %bl,%esi
|
|
movl 12(%esp),%ebx
|
|
xorl %eax,%edx
|
|
xorl 2052(%ebp,%esi,8),%ecx
|
|
movl -32(%edi),%esi
|
|
xorl %ecx,%edx
|
|
movl %edx,16(%esp)
|
|
xorl %ebx,%ecx
|
|
movl %ecx,12(%esp)
|
|
xorl %esi,%ecx
|
|
xorl -28(%edi),%edx
|
|
movzbl %ch,%esi
|
|
movl 2052(%ebp,%esi,8),%ebx
|
|
movzbl %cl,%esi
|
|
xorl 4(%ebp,%esi,8),%ebx
|
|
shrl $16,%ecx
|
|
movzbl %dl,%esi
|
|
movl (%ebp,%esi,8),%eax
|
|
movzbl %ch,%esi
|
|
xorl (%ebp,%esi,8),%ebx
|
|
movzbl %dh,%esi
|
|
xorl 4(%ebp,%esi,8),%eax
|
|
shrl $16,%edx
|
|
movzbl %cl,%ecx
|
|
xorl 2048(%ebp,%ecx,8),%ebx
|
|
movzbl %dh,%esi
|
|
movl 8(%esp),%ecx
|
|
xorl %ebx,%eax
|
|
rorl $8,%ebx
|
|
xorl 2048(%ebp,%esi,8),%eax
|
|
movzbl %dl,%esi
|
|
movl 4(%esp),%edx
|
|
xorl %ecx,%ebx
|
|
xorl 2052(%ebp,%esi,8),%eax
|
|
movl -40(%edi),%esi
|
|
xorl %eax,%ebx
|
|
movl %ebx,8(%esp)
|
|
xorl %edx,%eax
|
|
movl %eax,4(%esp)
|
|
xorl %esi,%eax
|
|
xorl -36(%edi),%ebx
|
|
movzbl %ah,%esi
|
|
movl 2052(%ebp,%esi,8),%edx
|
|
movzbl %al,%esi
|
|
xorl 4(%ebp,%esi,8),%edx
|
|
shrl $16,%eax
|
|
movzbl %bl,%esi
|
|
movl (%ebp,%esi,8),%ecx
|
|
movzbl %ah,%esi
|
|
xorl (%ebp,%esi,8),%edx
|
|
movzbl %bh,%esi
|
|
xorl 4(%ebp,%esi,8),%ecx
|
|
shrl $16,%ebx
|
|
movzbl %al,%eax
|
|
xorl 2048(%ebp,%eax,8),%edx
|
|
movzbl %bh,%esi
|
|
movl 16(%esp),%eax
|
|
xorl %edx,%ecx
|
|
rorl $8,%edx
|
|
xorl 2048(%ebp,%esi,8),%ecx
|
|
movzbl %bl,%esi
|
|
movl 12(%esp),%ebx
|
|
xorl %eax,%edx
|
|
xorl 2052(%ebp,%esi,8),%ecx
|
|
movl -48(%edi),%esi
|
|
xorl %ecx,%edx
|
|
movl %edx,16(%esp)
|
|
xorl %ebx,%ecx
|
|
movl %ecx,12(%esp)
|
|
xorl %esi,%ecx
|
|
xorl -44(%edi),%edx
|
|
movzbl %ch,%esi
|
|
movl 2052(%ebp,%esi,8),%ebx
|
|
movzbl %cl,%esi
|
|
xorl 4(%ebp,%esi,8),%ebx
|
|
shrl $16,%ecx
|
|
movzbl %dl,%esi
|
|
movl (%ebp,%esi,8),%eax
|
|
movzbl %ch,%esi
|
|
xorl (%ebp,%esi,8),%ebx
|
|
movzbl %dh,%esi
|
|
xorl 4(%ebp,%esi,8),%eax
|
|
shrl $16,%edx
|
|
movzbl %cl,%ecx
|
|
xorl 2048(%ebp,%ecx,8),%ebx
|
|
movzbl %dh,%esi
|
|
movl 8(%esp),%ecx
|
|
xorl %ebx,%eax
|
|
rorl $8,%ebx
|
|
xorl 2048(%ebp,%esi,8),%eax
|
|
movzbl %dl,%esi
|
|
movl 4(%esp),%edx
|
|
xorl %ecx,%ebx
|
|
xorl 2052(%ebp,%esi,8),%eax
|
|
movl -56(%edi),%esi
|
|
xorl %eax,%ebx
|
|
movl %ebx,8(%esp)
|
|
xorl %edx,%eax
|
|
movl %eax,4(%esp)
|
|
subl $64,%edi
|
|
cmpl 20(%esp),%edi
|
|
je .L007done
|
|
andl %eax,%esi
|
|
movl 16(%esp),%edx
|
|
roll $1,%esi
|
|
movl %edx,%ecx
|
|
xorl %esi,%ebx
|
|
orl 4(%edi),%ecx
|
|
movl %ebx,8(%esp)
|
|
xorl 12(%esp),%ecx
|
|
movl 12(%edi),%esi
|
|
movl %ecx,12(%esp)
|
|
orl %ebx,%esi
|
|
andl (%edi),%ecx
|
|
xorl %esi,%eax
|
|
roll $1,%ecx
|
|
movl %eax,4(%esp)
|
|
xorl %ecx,%edx
|
|
movl -8(%edi),%esi
|
|
movl %edx,16(%esp)
|
|
jmp .L006loop
|
|
.align 8
|
|
.L007done:
|
|
movl %eax,%ecx
|
|
movl %ebx,%edx
|
|
movl 12(%esp),%eax
|
|
movl 16(%esp),%ebx
|
|
xorl %esi,%ecx
|
|
xorl 12(%edi),%edx
|
|
xorl (%edi),%eax
|
|
xorl 4(%edi),%ebx
|
|
ret
|
|
.size _x86_Camellia_decrypt,.-_x86_Camellia_decrypt
|
|
.globl Camellia_Ekeygen
|
|
.type Camellia_Ekeygen,@function
|
|
.align 16
|
|
Camellia_Ekeygen:
|
|
.L_Camellia_Ekeygen_begin:
|
|
pushl %ebp
|
|
pushl %ebx
|
|
pushl %esi
|
|
pushl %edi
|
|
subl $16,%esp
|
|
movl 36(%esp),%ebp
|
|
movl 40(%esp),%esi
|
|
movl 44(%esp),%edi
|
|
movl (%esi),%eax
|
|
movl 4(%esi),%ebx
|
|
movl 8(%esi),%ecx
|
|
movl 12(%esi),%edx
|
|
bswap %eax
|
|
bswap %ebx
|
|
bswap %ecx
|
|
bswap %edx
|
|
movl %eax,(%edi)
|
|
movl %ebx,4(%edi)
|
|
movl %ecx,8(%edi)
|
|
movl %edx,12(%edi)
|
|
cmpl $128,%ebp
|
|
je .L0081st128
|
|
movl 16(%esi),%eax
|
|
movl 20(%esi),%ebx
|
|
cmpl $192,%ebp
|
|
je .L0091st192
|
|
movl 24(%esi),%ecx
|
|
movl 28(%esi),%edx
|
|
jmp .L0101st256
|
|
.align 4
|
|
.L0091st192:
|
|
movl %eax,%ecx
|
|
movl %ebx,%edx
|
|
notl %ecx
|
|
notl %edx
|
|
.align 4
|
|
.L0101st256:
|
|
bswap %eax
|
|
bswap %ebx
|
|
bswap %ecx
|
|
bswap %edx
|
|
movl %eax,32(%edi)
|
|
movl %ebx,36(%edi)
|
|
movl %ecx,40(%edi)
|
|
movl %edx,44(%edi)
|
|
xorl (%edi),%eax
|
|
xorl 4(%edi),%ebx
|
|
xorl 8(%edi),%ecx
|
|
xorl 12(%edi),%edx
|
|
.align 4
|
|
.L0081st128:
|
|
call .L011pic_point
|
|
.L011pic_point:
|
|
popl %ebp
|
|
leal .LCamellia_SBOX-.L011pic_point(%ebp),%ebp
|
|
leal .LCamellia_SIGMA-.LCamellia_SBOX(%ebp),%edi
|
|
movl (%edi),%esi
|
|
movl %eax,(%esp)
|
|
movl %ebx,4(%esp)
|
|
movl %ecx,8(%esp)
|
|
movl %edx,12(%esp)
|
|
xorl %esi,%eax
|
|
xorl 4(%edi),%ebx
|
|
movzbl %ah,%esi
|
|
movl 2052(%ebp,%esi,8),%edx
|
|
movzbl %al,%esi
|
|
xorl 4(%ebp,%esi,8),%edx
|
|
shrl $16,%eax
|
|
movzbl %bl,%esi
|
|
movl (%ebp,%esi,8),%ecx
|
|
movzbl %ah,%esi
|
|
xorl (%ebp,%esi,8),%edx
|
|
movzbl %bh,%esi
|
|
xorl 4(%ebp,%esi,8),%ecx
|
|
shrl $16,%ebx
|
|
movzbl %al,%eax
|
|
xorl 2048(%ebp,%eax,8),%edx
|
|
movzbl %bh,%esi
|
|
movl 12(%esp),%eax
|
|
xorl %edx,%ecx
|
|
rorl $8,%edx
|
|
xorl 2048(%ebp,%esi,8),%ecx
|
|
movzbl %bl,%esi
|
|
movl 8(%esp),%ebx
|
|
xorl %eax,%edx
|
|
xorl 2052(%ebp,%esi,8),%ecx
|
|
movl 8(%edi),%esi
|
|
xorl %ecx,%edx
|
|
movl %edx,12(%esp)
|
|
xorl %ebx,%ecx
|
|
movl %ecx,8(%esp)
|
|
xorl %esi,%ecx
|
|
xorl 12(%edi),%edx
|
|
movzbl %ch,%esi
|
|
movl 2052(%ebp,%esi,8),%ebx
|
|
movzbl %cl,%esi
|
|
xorl 4(%ebp,%esi,8),%ebx
|
|
shrl $16,%ecx
|
|
movzbl %dl,%esi
|
|
movl (%ebp,%esi,8),%eax
|
|
movzbl %ch,%esi
|
|
xorl (%ebp,%esi,8),%ebx
|
|
movzbl %dh,%esi
|
|
xorl 4(%ebp,%esi,8),%eax
|
|
shrl $16,%edx
|
|
movzbl %cl,%ecx
|
|
xorl 2048(%ebp,%ecx,8),%ebx
|
|
movzbl %dh,%esi
|
|
movl 4(%esp),%ecx
|
|
xorl %ebx,%eax
|
|
rorl $8,%ebx
|
|
xorl 2048(%ebp,%esi,8),%eax
|
|
movzbl %dl,%esi
|
|
movl (%esp),%edx
|
|
xorl %ecx,%ebx
|
|
xorl 2052(%ebp,%esi,8),%eax
|
|
movl 16(%edi),%esi
|
|
xorl %eax,%ebx
|
|
movl %ebx,4(%esp)
|
|
xorl %edx,%eax
|
|
movl %eax,(%esp)
|
|
movl 8(%esp),%ecx
|
|
movl 12(%esp),%edx
|
|
movl 44(%esp),%esi
|
|
xorl (%esi),%eax
|
|
xorl 4(%esi),%ebx
|
|
xorl 8(%esi),%ecx
|
|
xorl 12(%esi),%edx
|
|
movl 16(%edi),%esi
|
|
movl %eax,(%esp)
|
|
movl %ebx,4(%esp)
|
|
movl %ecx,8(%esp)
|
|
movl %edx,12(%esp)
|
|
xorl %esi,%eax
|
|
xorl 20(%edi),%ebx
|
|
movzbl %ah,%esi
|
|
movl 2052(%ebp,%esi,8),%edx
|
|
movzbl %al,%esi
|
|
xorl 4(%ebp,%esi,8),%edx
|
|
shrl $16,%eax
|
|
movzbl %bl,%esi
|
|
movl (%ebp,%esi,8),%ecx
|
|
movzbl %ah,%esi
|
|
xorl (%ebp,%esi,8),%edx
|
|
movzbl %bh,%esi
|
|
xorl 4(%ebp,%esi,8),%ecx
|
|
shrl $16,%ebx
|
|
movzbl %al,%eax
|
|
xorl 2048(%ebp,%eax,8),%edx
|
|
movzbl %bh,%esi
|
|
movl 12(%esp),%eax
|
|
xorl %edx,%ecx
|
|
rorl $8,%edx
|
|
xorl 2048(%ebp,%esi,8),%ecx
|
|
movzbl %bl,%esi
|
|
movl 8(%esp),%ebx
|
|
xorl %eax,%edx
|
|
xorl 2052(%ebp,%esi,8),%ecx
|
|
movl 24(%edi),%esi
|
|
xorl %ecx,%edx
|
|
movl %edx,12(%esp)
|
|
xorl %ebx,%ecx
|
|
movl %ecx,8(%esp)
|
|
xorl %esi,%ecx
|
|
xorl 28(%edi),%edx
|
|
movzbl %ch,%esi
|
|
movl 2052(%ebp,%esi,8),%ebx
|
|
movzbl %cl,%esi
|
|
xorl 4(%ebp,%esi,8),%ebx
|
|
shrl $16,%ecx
|
|
movzbl %dl,%esi
|
|
movl (%ebp,%esi,8),%eax
|
|
movzbl %ch,%esi
|
|
xorl (%ebp,%esi,8),%ebx
|
|
movzbl %dh,%esi
|
|
xorl 4(%ebp,%esi,8),%eax
|
|
shrl $16,%edx
|
|
movzbl %cl,%ecx
|
|
xorl 2048(%ebp,%ecx,8),%ebx
|
|
movzbl %dh,%esi
|
|
movl 4(%esp),%ecx
|
|
xorl %ebx,%eax
|
|
rorl $8,%ebx
|
|
xorl 2048(%ebp,%esi,8),%eax
|
|
movzbl %dl,%esi
|
|
movl (%esp),%edx
|
|
xorl %ecx,%ebx
|
|
xorl 2052(%ebp,%esi,8),%eax
|
|
movl 32(%edi),%esi
|
|
xorl %eax,%ebx
|
|
movl %ebx,4(%esp)
|
|
xorl %edx,%eax
|
|
movl %eax,(%esp)
|
|
movl 8(%esp),%ecx
|
|
movl 12(%esp),%edx
|
|
movl 36(%esp),%esi
|
|
cmpl $128,%esi
|
|
jne .L0122nd256
|
|
movl 44(%esp),%edi
|
|
leal 128(%edi),%edi
|
|
movl %eax,-112(%edi)
|
|
movl %ebx,-108(%edi)
|
|
movl %ecx,-104(%edi)
|
|
movl %edx,-100(%edi)
|
|
movl %eax,%ebp
|
|
shll $15,%eax
|
|
movl %ebx,%esi
|
|
shrl $17,%esi
|
|
shll $15,%ebx
|
|
orl %esi,%eax
|
|
movl %ecx,%esi
|
|
shll $15,%ecx
|
|
movl %eax,-80(%edi)
|
|
shrl $17,%esi
|
|
orl %esi,%ebx
|
|
shrl $17,%ebp
|
|
movl %edx,%esi
|
|
shrl $17,%esi
|
|
movl %ebx,-76(%edi)
|
|
shll $15,%edx
|
|
orl %esi,%ecx
|
|
orl %ebp,%edx
|
|
movl %ecx,-72(%edi)
|
|
movl %edx,-68(%edi)
|
|
movl %eax,%ebp
|
|
shll $15,%eax
|
|
movl %ebx,%esi
|
|
shrl $17,%esi
|
|
shll $15,%ebx
|
|
orl %esi,%eax
|
|
movl %ecx,%esi
|
|
shll $15,%ecx
|
|
movl %eax,-64(%edi)
|
|
shrl $17,%esi
|
|
orl %esi,%ebx
|
|
shrl $17,%ebp
|
|
movl %edx,%esi
|
|
shrl $17,%esi
|
|
movl %ebx,-60(%edi)
|
|
shll $15,%edx
|
|
orl %esi,%ecx
|
|
orl %ebp,%edx
|
|
movl %ecx,-56(%edi)
|
|
movl %edx,-52(%edi)
|
|
movl %eax,%ebp
|
|
shll $15,%eax
|
|
movl %ebx,%esi
|
|
shrl $17,%esi
|
|
shll $15,%ebx
|
|
orl %esi,%eax
|
|
movl %ecx,%esi
|
|
shll $15,%ecx
|
|
movl %eax,-32(%edi)
|
|
shrl $17,%esi
|
|
orl %esi,%ebx
|
|
shrl $17,%ebp
|
|
movl %edx,%esi
|
|
shrl $17,%esi
|
|
movl %ebx,-28(%edi)
|
|
shll $15,%edx
|
|
orl %esi,%ecx
|
|
orl %ebp,%edx
|
|
movl %eax,%ebp
|
|
shll $15,%eax
|
|
movl %ebx,%esi
|
|
shrl $17,%esi
|
|
shll $15,%ebx
|
|
orl %esi,%eax
|
|
movl %ecx,%esi
|
|
shll $15,%ecx
|
|
movl %eax,-16(%edi)
|
|
shrl $17,%esi
|
|
orl %esi,%ebx
|
|
shrl $17,%ebp
|
|
movl %edx,%esi
|
|
shrl $17,%esi
|
|
movl %ebx,-12(%edi)
|
|
shll $15,%edx
|
|
orl %esi,%ecx
|
|
orl %ebp,%edx
|
|
movl %ecx,-8(%edi)
|
|
movl %edx,-4(%edi)
|
|
movl %ebx,%ebp
|
|
shll $2,%ebx
|
|
movl %ecx,%esi
|
|
shrl $30,%esi
|
|
shll $2,%ecx
|
|
orl %esi,%ebx
|
|
movl %edx,%esi
|
|
shll $2,%edx
|
|
movl %ebx,32(%edi)
|
|
shrl $30,%esi
|
|
orl %esi,%ecx
|
|
shrl $30,%ebp
|
|
movl %eax,%esi
|
|
shrl $30,%esi
|
|
movl %ecx,36(%edi)
|
|
shll $2,%eax
|
|
orl %esi,%edx
|
|
orl %ebp,%eax
|
|
movl %edx,40(%edi)
|
|
movl %eax,44(%edi)
|
|
movl %ebx,%ebp
|
|
shll $17,%ebx
|
|
movl %ecx,%esi
|
|
shrl $15,%esi
|
|
shll $17,%ecx
|
|
orl %esi,%ebx
|
|
movl %edx,%esi
|
|
shll $17,%edx
|
|
movl %ebx,64(%edi)
|
|
shrl $15,%esi
|
|
orl %esi,%ecx
|
|
shrl $15,%ebp
|
|
movl %eax,%esi
|
|
shrl $15,%esi
|
|
movl %ecx,68(%edi)
|
|
shll $17,%eax
|
|
orl %esi,%edx
|
|
orl %ebp,%eax
|
|
movl %edx,72(%edi)
|
|
movl %eax,76(%edi)
|
|
movl -128(%edi),%ebx
|
|
movl -124(%edi),%ecx
|
|
movl -120(%edi),%edx
|
|
movl -116(%edi),%eax
|
|
movl %ebx,%ebp
|
|
shll $15,%ebx
|
|
movl %ecx,%esi
|
|
shrl $17,%esi
|
|
shll $15,%ecx
|
|
orl %esi,%ebx
|
|
movl %edx,%esi
|
|
shll $15,%edx
|
|
movl %ebx,-96(%edi)
|
|
shrl $17,%esi
|
|
orl %esi,%ecx
|
|
shrl $17,%ebp
|
|
movl %eax,%esi
|
|
shrl $17,%esi
|
|
movl %ecx,-92(%edi)
|
|
shll $15,%eax
|
|
orl %esi,%edx
|
|
orl %ebp,%eax
|
|
movl %edx,-88(%edi)
|
|
movl %eax,-84(%edi)
|
|
movl %ebx,%ebp
|
|
shll $30,%ebx
|
|
movl %ecx,%esi
|
|
shrl $2,%esi
|
|
shll $30,%ecx
|
|
orl %esi,%ebx
|
|
movl %edx,%esi
|
|
shll $30,%edx
|
|
movl %ebx,-48(%edi)
|
|
shrl $2,%esi
|
|
orl %esi,%ecx
|
|
shrl $2,%ebp
|
|
movl %eax,%esi
|
|
shrl $2,%esi
|
|
movl %ecx,-44(%edi)
|
|
shll $30,%eax
|
|
orl %esi,%edx
|
|
orl %ebp,%eax
|
|
movl %edx,-40(%edi)
|
|
movl %eax,-36(%edi)
|
|
movl %ebx,%ebp
|
|
shll $15,%ebx
|
|
movl %ecx,%esi
|
|
shrl $17,%esi
|
|
shll $15,%ecx
|
|
orl %esi,%ebx
|
|
movl %edx,%esi
|
|
shll $15,%edx
|
|
shrl $17,%esi
|
|
orl %esi,%ecx
|
|
shrl $17,%ebp
|
|
movl %eax,%esi
|
|
shrl $17,%esi
|
|
shll $15,%eax
|
|
orl %esi,%edx
|
|
orl %ebp,%eax
|
|
movl %edx,-24(%edi)
|
|
movl %eax,-20(%edi)
|
|
movl %ebx,%ebp
|
|
shll $17,%ebx
|
|
movl %ecx,%esi
|
|
shrl $15,%esi
|
|
shll $17,%ecx
|
|
orl %esi,%ebx
|
|
movl %edx,%esi
|
|
shll $17,%edx
|
|
movl %ebx,(%edi)
|
|
shrl $15,%esi
|
|
orl %esi,%ecx
|
|
shrl $15,%ebp
|
|
movl %eax,%esi
|
|
shrl $15,%esi
|
|
movl %ecx,4(%edi)
|
|
shll $17,%eax
|
|
orl %esi,%edx
|
|
orl %ebp,%eax
|
|
movl %edx,8(%edi)
|
|
movl %eax,12(%edi)
|
|
movl %ebx,%ebp
|
|
shll $17,%ebx
|
|
movl %ecx,%esi
|
|
shrl $15,%esi
|
|
shll $17,%ecx
|
|
orl %esi,%ebx
|
|
movl %edx,%esi
|
|
shll $17,%edx
|
|
movl %ebx,16(%edi)
|
|
shrl $15,%esi
|
|
orl %esi,%ecx
|
|
shrl $15,%ebp
|
|
movl %eax,%esi
|
|
shrl $15,%esi
|
|
movl %ecx,20(%edi)
|
|
shll $17,%eax
|
|
orl %esi,%edx
|
|
orl %ebp,%eax
|
|
movl %edx,24(%edi)
|
|
movl %eax,28(%edi)
|
|
movl %ebx,%ebp
|
|
shll $17,%ebx
|
|
movl %ecx,%esi
|
|
shrl $15,%esi
|
|
shll $17,%ecx
|
|
orl %esi,%ebx
|
|
movl %edx,%esi
|
|
shll $17,%edx
|
|
movl %ebx,48(%edi)
|
|
shrl $15,%esi
|
|
orl %esi,%ecx
|
|
shrl $15,%ebp
|
|
movl %eax,%esi
|
|
shrl $15,%esi
|
|
movl %ecx,52(%edi)
|
|
shll $17,%eax
|
|
orl %esi,%edx
|
|
orl %ebp,%eax
|
|
movl %edx,56(%edi)
|
|
movl %eax,60(%edi)
|
|
movl $3,%eax
|
|
jmp .L013done
|
|
.align 16
|
|
.L0122nd256:
|
|
movl 44(%esp),%esi
|
|
movl %eax,48(%esi)
|
|
movl %ebx,52(%esi)
|
|
movl %ecx,56(%esi)
|
|
movl %edx,60(%esi)
|
|
xorl 32(%esi),%eax
|
|
xorl 36(%esi),%ebx
|
|
xorl 40(%esi),%ecx
|
|
xorl 44(%esi),%edx
|
|
movl 32(%edi),%esi
|
|
movl %eax,(%esp)
|
|
movl %ebx,4(%esp)
|
|
movl %ecx,8(%esp)
|
|
movl %edx,12(%esp)
|
|
xorl %esi,%eax
|
|
xorl 36(%edi),%ebx
|
|
movzbl %ah,%esi
|
|
movl 2052(%ebp,%esi,8),%edx
|
|
movzbl %al,%esi
|
|
xorl 4(%ebp,%esi,8),%edx
|
|
shrl $16,%eax
|
|
movzbl %bl,%esi
|
|
movl (%ebp,%esi,8),%ecx
|
|
movzbl %ah,%esi
|
|
xorl (%ebp,%esi,8),%edx
|
|
movzbl %bh,%esi
|
|
xorl 4(%ebp,%esi,8),%ecx
|
|
shrl $16,%ebx
|
|
movzbl %al,%eax
|
|
xorl 2048(%ebp,%eax,8),%edx
|
|
movzbl %bh,%esi
|
|
movl 12(%esp),%eax
|
|
xorl %edx,%ecx
|
|
rorl $8,%edx
|
|
xorl 2048(%ebp,%esi,8),%ecx
|
|
movzbl %bl,%esi
|
|
movl 8(%esp),%ebx
|
|
xorl %eax,%edx
|
|
xorl 2052(%ebp,%esi,8),%ecx
|
|
movl 40(%edi),%esi
|
|
xorl %ecx,%edx
|
|
movl %edx,12(%esp)
|
|
xorl %ebx,%ecx
|
|
movl %ecx,8(%esp)
|
|
xorl %esi,%ecx
|
|
xorl 44(%edi),%edx
|
|
movzbl %ch,%esi
|
|
movl 2052(%ebp,%esi,8),%ebx
|
|
movzbl %cl,%esi
|
|
xorl 4(%ebp,%esi,8),%ebx
|
|
shrl $16,%ecx
|
|
movzbl %dl,%esi
|
|
movl (%ebp,%esi,8),%eax
|
|
movzbl %ch,%esi
|
|
xorl (%ebp,%esi,8),%ebx
|
|
movzbl %dh,%esi
|
|
xorl 4(%ebp,%esi,8),%eax
|
|
shrl $16,%edx
|
|
movzbl %cl,%ecx
|
|
xorl 2048(%ebp,%ecx,8),%ebx
|
|
movzbl %dh,%esi
|
|
movl 4(%esp),%ecx
|
|
xorl %ebx,%eax
|
|
rorl $8,%ebx
|
|
xorl 2048(%ebp,%esi,8),%eax
|
|
movzbl %dl,%esi
|
|
movl (%esp),%edx
|
|
xorl %ecx,%ebx
|
|
xorl 2052(%ebp,%esi,8),%eax
|
|
movl 48(%edi),%esi
|
|
xorl %eax,%ebx
|
|
movl %ebx,4(%esp)
|
|
xorl %edx,%eax
|
|
movl %eax,(%esp)
|
|
movl 8(%esp),%ecx
|
|
movl 12(%esp),%edx
|
|
movl 44(%esp),%edi
|
|
leal 128(%edi),%edi
|
|
movl %eax,-112(%edi)
|
|
movl %ebx,-108(%edi)
|
|
movl %ecx,-104(%edi)
|
|
movl %edx,-100(%edi)
|
|
movl %eax,%ebp
|
|
shll $30,%eax
|
|
movl %ebx,%esi
|
|
shrl $2,%esi
|
|
shll $30,%ebx
|
|
orl %esi,%eax
|
|
movl %ecx,%esi
|
|
shll $30,%ecx
|
|
movl %eax,-48(%edi)
|
|
shrl $2,%esi
|
|
orl %esi,%ebx
|
|
shrl $2,%ebp
|
|
movl %edx,%esi
|
|
shrl $2,%esi
|
|
movl %ebx,-44(%edi)
|
|
shll $30,%edx
|
|
orl %esi,%ecx
|
|
orl %ebp,%edx
|
|
movl %ecx,-40(%edi)
|
|
movl %edx,-36(%edi)
|
|
movl %eax,%ebp
|
|
shll $30,%eax
|
|
movl %ebx,%esi
|
|
shrl $2,%esi
|
|
shll $30,%ebx
|
|
orl %esi,%eax
|
|
movl %ecx,%esi
|
|
shll $30,%ecx
|
|
movl %eax,32(%edi)
|
|
shrl $2,%esi
|
|
orl %esi,%ebx
|
|
shrl $2,%ebp
|
|
movl %edx,%esi
|
|
shrl $2,%esi
|
|
movl %ebx,36(%edi)
|
|
shll $30,%edx
|
|
orl %esi,%ecx
|
|
orl %ebp,%edx
|
|
movl %ecx,40(%edi)
|
|
movl %edx,44(%edi)
|
|
movl %ebx,%ebp
|
|
shll $19,%ebx
|
|
movl %ecx,%esi
|
|
shrl $13,%esi
|
|
shll $19,%ecx
|
|
orl %esi,%ebx
|
|
movl %edx,%esi
|
|
shll $19,%edx
|
|
movl %ebx,128(%edi)
|
|
shrl $13,%esi
|
|
orl %esi,%ecx
|
|
shrl $13,%ebp
|
|
movl %eax,%esi
|
|
shrl $13,%esi
|
|
movl %ecx,132(%edi)
|
|
shll $19,%eax
|
|
orl %esi,%edx
|
|
orl %ebp,%eax
|
|
movl %edx,136(%edi)
|
|
movl %eax,140(%edi)
|
|
movl -96(%edi),%ebx
|
|
movl -92(%edi),%ecx
|
|
movl -88(%edi),%edx
|
|
movl -84(%edi),%eax
|
|
movl %ebx,%ebp
|
|
shll $15,%ebx
|
|
movl %ecx,%esi
|
|
shrl $17,%esi
|
|
shll $15,%ecx
|
|
orl %esi,%ebx
|
|
movl %edx,%esi
|
|
shll $15,%edx
|
|
movl %ebx,-96(%edi)
|
|
shrl $17,%esi
|
|
orl %esi,%ecx
|
|
shrl $17,%ebp
|
|
movl %eax,%esi
|
|
shrl $17,%esi
|
|
movl %ecx,-92(%edi)
|
|
shll $15,%eax
|
|
orl %esi,%edx
|
|
orl %ebp,%eax
|
|
movl %edx,-88(%edi)
|
|
movl %eax,-84(%edi)
|
|
movl %ebx,%ebp
|
|
shll $15,%ebx
|
|
movl %ecx,%esi
|
|
shrl $17,%esi
|
|
shll $15,%ecx
|
|
orl %esi,%ebx
|
|
movl %edx,%esi
|
|
shll $15,%edx
|
|
movl %ebx,-64(%edi)
|
|
shrl $17,%esi
|
|
orl %esi,%ecx
|
|
shrl $17,%ebp
|
|
movl %eax,%esi
|
|
shrl $17,%esi
|
|
movl %ecx,-60(%edi)
|
|
shll $15,%eax
|
|
orl %esi,%edx
|
|
orl %ebp,%eax
|
|
movl %edx,-56(%edi)
|
|
movl %eax,-52(%edi)
|
|
movl %ebx,%ebp
|
|
shll $30,%ebx
|
|
movl %ecx,%esi
|
|
shrl $2,%esi
|
|
shll $30,%ecx
|
|
orl %esi,%ebx
|
|
movl %edx,%esi
|
|
shll $30,%edx
|
|
movl %ebx,16(%edi)
|
|
shrl $2,%esi
|
|
orl %esi,%ecx
|
|
shrl $2,%ebp
|
|
movl %eax,%esi
|
|
shrl $2,%esi
|
|
movl %ecx,20(%edi)
|
|
shll $30,%eax
|
|
orl %esi,%edx
|
|
orl %ebp,%eax
|
|
movl %edx,24(%edi)
|
|
movl %eax,28(%edi)
|
|
movl %ecx,%ebp
|
|
shll $2,%ecx
|
|
movl %edx,%esi
|
|
shrl $30,%esi
|
|
shll $2,%edx
|
|
orl %esi,%ecx
|
|
movl %eax,%esi
|
|
shll $2,%eax
|
|
movl %ecx,80(%edi)
|
|
shrl $30,%esi
|
|
orl %esi,%edx
|
|
shrl $30,%ebp
|
|
movl %ebx,%esi
|
|
shrl $30,%esi
|
|
movl %edx,84(%edi)
|
|
shll $2,%ebx
|
|
orl %esi,%eax
|
|
orl %ebp,%ebx
|
|
movl %eax,88(%edi)
|
|
movl %ebx,92(%edi)
|
|
movl -80(%edi),%ecx
|
|
movl -76(%edi),%edx
|
|
movl -72(%edi),%eax
|
|
movl -68(%edi),%ebx
|
|
movl %ecx,%ebp
|
|
shll $15,%ecx
|
|
movl %edx,%esi
|
|
shrl $17,%esi
|
|
shll $15,%edx
|
|
orl %esi,%ecx
|
|
movl %eax,%esi
|
|
shll $15,%eax
|
|
movl %ecx,-80(%edi)
|
|
shrl $17,%esi
|
|
orl %esi,%edx
|
|
shrl $17,%ebp
|
|
movl %ebx,%esi
|
|
shrl $17,%esi
|
|
movl %edx,-76(%edi)
|
|
shll $15,%ebx
|
|
orl %esi,%eax
|
|
orl %ebp,%ebx
|
|
movl %eax,-72(%edi)
|
|
movl %ebx,-68(%edi)
|
|
movl %ecx,%ebp
|
|
shll $30,%ecx
|
|
movl %edx,%esi
|
|
shrl $2,%esi
|
|
shll $30,%edx
|
|
orl %esi,%ecx
|
|
movl %eax,%esi
|
|
shll $30,%eax
|
|
movl %ecx,-16(%edi)
|
|
shrl $2,%esi
|
|
orl %esi,%edx
|
|
shrl $2,%ebp
|
|
movl %ebx,%esi
|
|
shrl $2,%esi
|
|
movl %edx,-12(%edi)
|
|
shll $30,%ebx
|
|
orl %esi,%eax
|
|
orl %ebp,%ebx
|
|
movl %eax,-8(%edi)
|
|
movl %ebx,-4(%edi)
|
|
movl %edx,64(%edi)
|
|
movl %eax,68(%edi)
|
|
movl %ebx,72(%edi)
|
|
movl %ecx,76(%edi)
|
|
movl %edx,%ebp
|
|
shll $17,%edx
|
|
movl %eax,%esi
|
|
shrl $15,%esi
|
|
shll $17,%eax
|
|
orl %esi,%edx
|
|
movl %ebx,%esi
|
|
shll $17,%ebx
|
|
movl %edx,96(%edi)
|
|
shrl $15,%esi
|
|
orl %esi,%eax
|
|
shrl $15,%ebp
|
|
movl %ecx,%esi
|
|
shrl $15,%esi
|
|
movl %eax,100(%edi)
|
|
shll $17,%ecx
|
|
orl %esi,%ebx
|
|
orl %ebp,%ecx
|
|
movl %ebx,104(%edi)
|
|
movl %ecx,108(%edi)
|
|
movl -128(%edi),%edx
|
|
movl -124(%edi),%eax
|
|
movl -120(%edi),%ebx
|
|
movl -116(%edi),%ecx
|
|
movl %eax,%ebp
|
|
shll $13,%eax
|
|
movl %ebx,%esi
|
|
shrl $19,%esi
|
|
shll $13,%ebx
|
|
orl %esi,%eax
|
|
movl %ecx,%esi
|
|
shll $13,%ecx
|
|
movl %eax,-32(%edi)
|
|
shrl $19,%esi
|
|
orl %esi,%ebx
|
|
shrl $19,%ebp
|
|
movl %edx,%esi
|
|
shrl $19,%esi
|
|
movl %ebx,-28(%edi)
|
|
shll $13,%edx
|
|
orl %esi,%ecx
|
|
orl %ebp,%edx
|
|
movl %ecx,-24(%edi)
|
|
movl %edx,-20(%edi)
|
|
movl %eax,%ebp
|
|
shll $15,%eax
|
|
movl %ebx,%esi
|
|
shrl $17,%esi
|
|
shll $15,%ebx
|
|
orl %esi,%eax
|
|
movl %ecx,%esi
|
|
shll $15,%ecx
|
|
movl %eax,(%edi)
|
|
shrl $17,%esi
|
|
orl %esi,%ebx
|
|
shrl $17,%ebp
|
|
movl %edx,%esi
|
|
shrl $17,%esi
|
|
movl %ebx,4(%edi)
|
|
shll $15,%edx
|
|
orl %esi,%ecx
|
|
orl %ebp,%edx
|
|
movl %ecx,8(%edi)
|
|
movl %edx,12(%edi)
|
|
movl %eax,%ebp
|
|
shll $17,%eax
|
|
movl %ebx,%esi
|
|
shrl $15,%esi
|
|
shll $17,%ebx
|
|
orl %esi,%eax
|
|
movl %ecx,%esi
|
|
shll $17,%ecx
|
|
movl %eax,48(%edi)
|
|
shrl $15,%esi
|
|
orl %esi,%ebx
|
|
shrl $15,%ebp
|
|
movl %edx,%esi
|
|
shrl $15,%esi
|
|
movl %ebx,52(%edi)
|
|
shll $17,%edx
|
|
orl %esi,%ecx
|
|
orl %ebp,%edx
|
|
movl %ecx,56(%edi)
|
|
movl %edx,60(%edi)
|
|
movl %ebx,%ebp
|
|
shll $2,%ebx
|
|
movl %ecx,%esi
|
|
shrl $30,%esi
|
|
shll $2,%ecx
|
|
orl %esi,%ebx
|
|
movl %edx,%esi
|
|
shll $2,%edx
|
|
movl %ebx,112(%edi)
|
|
shrl $30,%esi
|
|
orl %esi,%ecx
|
|
shrl $30,%ebp
|
|
movl %eax,%esi
|
|
shrl $30,%esi
|
|
movl %ecx,116(%edi)
|
|
shll $2,%eax
|
|
orl %esi,%edx
|
|
orl %ebp,%eax
|
|
movl %edx,120(%edi)
|
|
movl %eax,124(%edi)
|
|
movl $4,%eax
|
|
.L013done:
|
|
leal 144(%edi),%edx
|
|
addl $16,%esp
|
|
popl %edi
|
|
popl %esi
|
|
popl %ebx
|
|
popl %ebp
|
|
ret
|
|
.size Camellia_Ekeygen,.-.L_Camellia_Ekeygen_begin
|
|
.globl private_Camellia_set_key
|
|
.type private_Camellia_set_key,@function
|
|
.align 16
|
|
private_Camellia_set_key:
|
|
.L_private_Camellia_set_key_begin:
|
|
pushl %ebx
|
|
movl 8(%esp),%ecx
|
|
movl 12(%esp),%ebx
|
|
movl 16(%esp),%edx
|
|
movl $-1,%eax
|
|
testl %ecx,%ecx
|
|
jz .L014done
|
|
testl %edx,%edx
|
|
jz .L014done
|
|
movl $-2,%eax
|
|
cmpl $256,%ebx
|
|
je .L015arg_ok
|
|
cmpl $192,%ebx
|
|
je .L015arg_ok
|
|
cmpl $128,%ebx
|
|
jne .L014done
|
|
.align 4
|
|
.L015arg_ok:
|
|
pushl %edx
|
|
pushl %ecx
|
|
pushl %ebx
|
|
call .L_Camellia_Ekeygen_begin
|
|
addl $12,%esp
|
|
movl %eax,(%edx)
|
|
xorl %eax,%eax
|
|
.align 4
|
|
.L014done:
|
|
popl %ebx
|
|
ret
|
|
.size private_Camellia_set_key,.-.L_private_Camellia_set_key_begin
|
|
.align 64
|
|
.LCamellia_SIGMA:
|
|
.long 2694735487,1003262091,3061508184,1286239154,3337565999,3914302142,1426019237,4057165596,283453434,3731369245,2958461122,3018244605,0,0,0,0
|
|
.align 64
|
|
.LCamellia_SBOX:
|
|
.long 1886416896,1886388336
|
|
.long 2189591040,741081132
|
|
.long 741092352,3014852787
|
|
.long 3974949888,3233808576
|
|
.long 3014898432,3840147684
|
|
.long 656877312,1465319511
|
|
.long 3233857536,3941204202
|
|
.long 3857048832,2930639022
|
|
.long 3840205824,589496355
|
|
.long 2240120064,1802174571
|
|
.long 1465341696,1162149957
|
|
.long 892679424,2779054245
|
|
.long 3941263872,3991732461
|
|
.long 202116096,1330577487
|
|
.long 2930683392,488439837
|
|
.long 1094795520,2459041938
|
|
.long 589505280,2256928902
|
|
.long 4025478912,2947481775
|
|
.long 1802201856,2088501372
|
|
.long 2475922176,522125343
|
|
.long 1162167552,1044250686
|
|
.long 421075200,3705405660
|
|
.long 2779096320,1583218782
|
|
.long 555819264,185270283
|
|
.long 3991792896,2795896998
|
|
.long 235802112,960036921
|
|
.long 1330597632,3587506389
|
|
.long 1313754624,1566376029
|
|
.long 488447232,3654877401
|
|
.long 1701143808,1515847770
|
|
.long 2459079168,1364262993
|
|
.long 3183328512,1819017324
|
|
.long 2256963072,2341142667
|
|
.long 3099113472,2593783962
|
|
.long 2947526400,4227531003
|
|
.long 2408550144,2964324528
|
|
.long 2088532992,1953759348
|
|
.long 3958106880,724238379
|
|
.long 522133248,4042260720
|
|
.long 3469659648,2223243396
|
|
.long 1044266496,3755933919
|
|
.long 808464384,3419078859
|
|
.long 3705461760,875823156
|
|
.long 1600085760,1987444854
|
|
.long 1583242752,1835860077
|
|
.long 3318072576,2846425257
|
|
.long 185273088,3520135377
|
|
.long 437918208,67371012
|
|
.long 2795939328,336855060
|
|
.long 3789676800,976879674
|
|
.long 960051456,3739091166
|
|
.long 3402287616,286326801
|
|
.long 3587560704,842137650
|
|
.long 1195853568,2627469468
|
|
.long 1566399744,1397948499
|
|
.long 1027423488,4075946226
|
|
.long 3654932736,4278059262
|
|
.long 16843008,3486449871
|
|
.long 1515870720,3284336835
|
|
.long 3604403712,2054815866
|
|
.long 1364283648,606339108
|
|
.long 1448498688,3907518696
|
|
.long 1819044864,1616904288
|
|
.long 1296911616,1768489065
|
|
.long 2341178112,2863268010
|
|
.long 218959104,2694840480
|
|
.long 2593823232,2711683233
|
|
.long 1717986816,1650589794
|
|
.long 4227595008,1414791252
|
|
.long 3435973632,505282590
|
|
.long 2964369408,3772776672
|
|
.long 757935360,1684275300
|
|
.long 1953788928,269484048
|
|
.long 303174144,0
|
|
.long 724249344,2745368739
|
|
.long 538976256,1970602101
|
|
.long 4042321920,2324299914
|
|
.long 2981212416,3873833190
|
|
.long 2223277056,151584777
|
|
.long 2576980224,3722248413
|
|
.long 3755990784,2273771655
|
|
.long 1280068608,2206400643
|
|
.long 3419130624,3452764365
|
|
.long 3267543552,2425356432
|
|
.long 875836416,1936916595
|
|
.long 2122219008,4143317238
|
|
.long 1987474944,2644312221
|
|
.long 84215040,3216965823
|
|
.long 1835887872,1381105746
|
|
.long 3082270464,3638034648
|
|
.long 2846468352,3368550600
|
|
.long 825307392,3334865094
|
|
.long 3520188672,2172715137
|
|
.long 387389184,1869545583
|
|
.long 67372032,320012307
|
|
.long 3621246720,1667432547
|
|
.long 336860160,3924361449
|
|
.long 1482184704,2812739751
|
|
.long 976894464,2677997727
|
|
.long 1633771776,3166437564
|
|
.long 3739147776,690552873
|
|
.long 454761216,4193845497
|
|
.long 286331136,791609391
|
|
.long 471604224,3031695540
|
|
.long 842150400,2021130360
|
|
.long 252645120,101056518
|
|
.long 2627509248,3890675943
|
|
.long 370546176,1903231089
|
|
.long 1397969664,3570663636
|
|
.long 404232192,2880110763
|
|
.long 4076007936,2290614408
|
|
.long 572662272,2374828173
|
|
.long 4278124032,1920073842
|
|
.long 1145324544,3115909305
|
|
.long 3486502656,4177002744
|
|
.long 2998055424,2896953516
|
|
.long 3284386560,909508662
|
|
.long 3048584448,707395626
|
|
.long 2054846976,1010565180
|
|
.long 2442236160,4059103473
|
|
.long 606348288,1077936192
|
|
.long 134744064,3553820883
|
|
.long 3907577856,3149594811
|
|
.long 2829625344,1128464451
|
|
.long 1616928768,353697813
|
|
.long 4244438016,2913796269
|
|
.long 1768515840,2004287607
|
|
.long 1347440640,2155872384
|
|
.long 2863311360,2189557890
|
|
.long 3503345664,3974889708
|
|
.long 2694881280,656867367
|
|
.long 2105376000,3856990437
|
|
.long 2711724288,2240086149
|
|
.long 2307492096,892665909
|
|
.long 1650614784,202113036
|
|
.long 2543294208,1094778945
|
|
.long 1414812672,4025417967
|
|
.long 1532713728,2475884691
|
|
.long 505290240,421068825
|
|
.long 2509608192,555810849
|
|
.long 3772833792,235798542
|
|
.long 4294967040,1313734734
|
|
.long 1684300800,1701118053
|
|
.long 3537031680,3183280317
|
|
.long 269488128,3099066552
|
|
.long 3301229568,2408513679
|
|
.long 0,3958046955
|
|
.long 1212696576,3469607118
|
|
.long 2745410304,808452144
|
|
.long 4160222976,1600061535
|
|
.long 1970631936,3318022341
|
|
.long 3688618752,437911578
|
|
.long 2324335104,3789619425
|
|
.long 50529024,3402236106
|
|
.long 3873891840,1195835463
|
|
.long 3671775744,1027407933
|
|
.long 151587072,16842753
|
|
.long 1061109504,3604349142
|
|
.long 3722304768,1448476758
|
|
.long 2492765184,1296891981
|
|
.long 2273806080,218955789
|
|
.long 1549556736,1717960806
|
|
.long 2206434048,3435921612
|
|
.long 33686016,757923885
|
|
.long 3452816640,303169554
|
|
.long 1246382592,538968096
|
|
.long 2425393152,2981167281
|
|
.long 858993408,2576941209
|
|
.long 1936945920,1280049228
|
|
.long 1734829824,3267494082
|
|
.long 4143379968,2122186878
|
|
.long 4092850944,84213765
|
|
.long 2644352256,3082223799
|
|
.long 2139062016,825294897
|
|
.long 3217014528,387383319
|
|
.long 3806519808,3621191895
|
|
.long 1381126656,1482162264
|
|
.long 2610666240,1633747041
|
|
.long 3638089728,454754331
|
|
.long 640034304,471597084
|
|
.long 3368601600,252641295
|
|
.long 926365440,370540566
|
|
.long 3334915584,404226072
|
|
.long 993737472,572653602
|
|
.long 2172748032,1145307204
|
|
.long 2526451200,2998010034
|
|
.long 1869573888,3048538293
|
|
.long 1263225600,2442199185
|
|
.long 320017152,134742024
|
|
.long 3200171520,2829582504
|
|
.long 1667457792,4244373756
|
|
.long 774778368,1347420240
|
|
.long 3924420864,3503292624
|
|
.long 2038003968,2105344125
|
|
.long 2812782336,2307457161
|
|
.long 2358021120,2543255703
|
|
.long 2678038272,1532690523
|
|
.long 1852730880,2509570197
|
|
.long 3166485504,4294902015
|
|
.long 2391707136,3536978130
|
|
.long 690563328,3301179588
|
|
.long 4126536960,1212678216
|
|
.long 4193908992,4160159991
|
|
.long 3065427456,3688562907
|
|
.long 791621376,50528259
|
|
.long 4261281024,3671720154
|
|
.long 3031741440,1061093439
|
|
.long 1499027712,2492727444
|
|
.long 2021160960,1549533276
|
|
.long 2560137216,33685506
|
|
.long 101058048,1246363722
|
|
.long 1785358848,858980403
|
|
.long 3890734848,1734803559
|
|
.long 1179010560,4092788979
|
|
.long 1903259904,2139029631
|
|
.long 3132799488,3806462178
|
|
.long 3570717696,2610626715
|
|
.long 623191296,640024614
|
|
.long 2880154368,926351415
|
|
.long 1111638528,993722427
|
|
.long 2290649088,2526412950
|
|
.long 2728567296,1263206475
|
|
.long 2374864128,3200123070
|
|
.long 4210752000,774766638
|
|
.long 1920102912,2037973113
|
|
.long 117901056,2357985420
|
|
.long 3115956480,1852702830
|
|
.long 1431655680,2391670926
|
|
.long 4177065984,4126474485
|
|
.long 4008635904,3065381046
|
|
.long 2896997376,4261216509
|
|
.long 168430080,1499005017
|
|
.long 909522432,2560098456
|
|
.long 1229539584,1785331818
|
|
.long 707406336,1178992710
|
|
.long 1751672832,3132752058
|
|
.long 1010580480,623181861
|
|
.long 943208448,1111621698
|
|
.long 4059164928,2728525986
|
|
.long 2762253312,4210688250
|
|
.long 1077952512,117899271
|
|
.long 673720320,1431634005
|
|
.long 3553874688,4008575214
|
|
.long 2071689984,168427530
|
|
.long 3149642496,1229520969
|
|
.long 3385444608,1751646312
|
|
.long 1128481536,943194168
|
|
.long 3250700544,2762211492
|
|
.long 353703168,673710120
|
|
.long 3823362816,2071658619
|
|
.long 2913840384,3385393353
|
|
.long 4109693952,3250651329
|
|
.long 2004317952,3823304931
|
|
.long 3351758592,4109631732
|
|
.long 2155905024,3351707847
|
|
.long 2661195264,2661154974
|
|
.long 14737632,939538488
|
|
.long 328965,1090535745
|
|
.long 5789784,369104406
|
|
.long 14277081,1979741814
|
|
.long 6776679,3640711641
|
|
.long 5131854,2466288531
|
|
.long 8487297,1610637408
|
|
.long 13355979,4060148466
|
|
.long 13224393,1912631922
|
|
.long 723723,3254829762
|
|
.long 11447982,2868947883
|
|
.long 6974058,2583730842
|
|
.long 14013909,1962964341
|
|
.long 1579032,100664838
|
|
.long 6118749,1459640151
|
|
.long 8553090,2684395680
|
|
.long 4605510,2432733585
|
|
.long 14671839,4144035831
|
|
.long 14079702,3036722613
|
|
.long 2565927,3372272073
|
|
.long 9079434,2717950626
|
|
.long 3289650,2348846220
|
|
.long 4934475,3523269330
|
|
.long 4342338,2415956112
|
|
.long 14408667,4127258358
|
|
.long 1842204,117442311
|
|
.long 10395294,2801837991
|
|
.long 10263708,654321447
|
|
.long 3815994,2382401166
|
|
.long 13290186,2986390194
|
|
.long 2434341,1224755529
|
|
.long 8092539,3724599006
|
|
.long 855309,1124090691
|
|
.long 7434609,1543527516
|
|
.long 6250335,3607156695
|
|
.long 2039583,3338717127
|
|
.long 16316664,1040203326
|
|
.long 14145495,4110480885
|
|
.long 4079166,2399178639
|
|
.long 10329501,1728079719
|
|
.long 8158332,520101663
|
|
.long 6316128,402659352
|
|
.long 12171705,1845522030
|
|
.long 12500670,2936057775
|
|
.long 12369084,788541231
|
|
.long 9145227,3791708898
|
|
.long 1447446,2231403909
|
|
.long 3421236,218107149
|
|
.long 5066061,1392530259
|
|
.long 12829635,4026593520
|
|
.long 7500402,2617285788
|
|
.long 9803157,1694524773
|
|
.long 11250603,3925928682
|
|
.long 9342606,2734728099
|
|
.long 12237498,2919280302
|
|
.long 8026746,2650840734
|
|
.long 11776947,3959483628
|
|
.long 131586,2147516544
|
|
.long 11842740,754986285
|
|
.long 11382189,1795189611
|
|
.long 10658466,2818615464
|
|
.long 11316396,721431339
|
|
.long 14211288,905983542
|
|
.long 10132122,2785060518
|
|
.long 1513239,3305162181
|
|
.long 1710618,2248181382
|
|
.long 3487029,1291865421
|
|
.long 13421772,855651123
|
|
.long 16250871,4244700669
|
|
.long 10066329,1711302246
|
|
.long 6381921,1476417624
|
|
.long 5921370,2516620950
|
|
.long 15263976,973093434
|
|
.long 2368548,150997257
|
|
.long 5658198,2499843477
|
|
.long 4210752,268439568
|
|
.long 14803425,2013296760
|
|
.long 6513507,3623934168
|
|
.long 592137,1107313218
|
|
.long 3355443,3422604492
|
|
.long 12566463,4009816047
|
|
.long 10000536,637543974
|
|
.long 9934743,3842041317
|
|
.long 8750469,1627414881
|
|
.long 6842472,436214298
|
|
.long 16579836,1056980799
|
|
.long 15527148,989870907
|
|
.long 657930,2181071490
|
|
.long 14342874,3053500086
|
|
.long 7303023,3674266587
|
|
.long 5460819,3556824276
|
|
.long 6447714,2550175896
|
|
.long 10724259,3892373736
|
|
.long 3026478,2332068747
|
|
.long 526344,33554946
|
|
.long 11513775,3942706155
|
|
.long 2631720,167774730
|
|
.long 11579568,738208812
|
|
.long 7631988,486546717
|
|
.long 12763842,2952835248
|
|
.long 12434877,1862299503
|
|
.long 3552822,2365623693
|
|
.long 2236962,2281736328
|
|
.long 3684408,234884622
|
|
.long 6579300,419436825
|
|
.long 1973790,2264958855
|
|
.long 3750201,1308642894
|
|
.long 2894892,184552203
|
|
.long 10921638,2835392937
|
|
.long 3158064,201329676
|
|
.long 15066597,2030074233
|
|
.long 4473924,285217041
|
|
.long 16645629,2130739071
|
|
.long 8947848,570434082
|
|
.long 10461087,3875596263
|
|
.long 6645093,1493195097
|
|
.long 8882055,3774931425
|
|
.long 7039851,3657489114
|
|
.long 16053492,1023425853
|
|
.long 2302755,3355494600
|
|
.long 4737096,301994514
|
|
.long 1052688,67109892
|
|
.long 13750737,1946186868
|
|
.long 5329233,1409307732
|
|
.long 12632256,805318704
|
|
.long 16382457,2113961598
|
|
.long 13816530,3019945140
|
|
.long 10526880,671098920
|
|
.long 5592405,1426085205
|
|
.long 10592673,1744857192
|
|
.long 4276545,1342197840
|
|
.long 16448250,3187719870
|
|
.long 4408131,3489714384
|
|
.long 1250067,3288384708
|
|
.long 12895428,822096177
|
|
.long 3092271,3405827019
|
|
.long 11053224,704653866
|
|
.long 11974326,2902502829
|
|
.long 3947580,251662095
|
|
.long 2829099,3389049546
|
|
.long 12698049,1879076976
|
|
.long 16777215,4278255615
|
|
.long 13158600,838873650
|
|
.long 10855845,1761634665
|
|
.long 2105376,134219784
|
|
.long 9013641,1644192354
|
|
.long 0,0
|
|
.long 9474192,603989028
|
|
.long 4671303,3506491857
|
|
.long 15724527,4211145723
|
|
.long 15395562,3120609978
|
|
.long 12040119,3976261101
|
|
.long 1381653,1157645637
|
|
.long 394758,2164294017
|
|
.long 13487565,1929409395
|
|
.long 11908533,1828744557
|
|
.long 1184274,2214626436
|
|
.long 8289918,2667618207
|
|
.long 12303291,3993038574
|
|
.long 2697513,1241533002
|
|
.long 986895,3271607235
|
|
.long 12105912,771763758
|
|
.long 460551,3238052289
|
|
.long 263172,16777473
|
|
.long 10197915,3858818790
|
|
.long 9737364,620766501
|
|
.long 2171169,1207978056
|
|
.long 6710886,2566953369
|
|
.long 15132390,3103832505
|
|
.long 13553358,3003167667
|
|
.long 15592941,2063629179
|
|
.long 15198183,4177590777
|
|
.long 3881787,3456159438
|
|
.long 16711422,3204497343
|
|
.long 8355711,3741376479
|
|
.long 12961221,1895854449
|
|
.long 10790052,687876393
|
|
.long 3618615,3439381965
|
|
.long 11645361,1811967084
|
|
.long 5000268,318771987
|
|
.long 9539985,1677747300
|
|
.long 7237230,2600508315
|
|
.long 9276813,1660969827
|
|
.long 7763574,2634063261
|
|
.long 197379,3221274816
|
|
.long 2960685,1258310475
|
|
.long 14606046,3070277559
|
|
.long 9868950,2768283045
|
|
.long 2500134,2298513801
|
|
.long 8224125,1593859935
|
|
.long 13027014,2969612721
|
|
.long 6052956,385881879
|
|
.long 13882323,4093703412
|
|
.long 15921906,3154164924
|
|
.long 5197647,3540046803
|
|
.long 1644825,1174423110
|
|
.long 4144959,3472936911
|
|
.long 14474460,922761015
|
|
.long 7960953,1577082462
|
|
.long 1907997,1191200583
|
|
.long 5395026,2483066004
|
|
.long 15461355,4194368250
|
|
.long 15987699,4227923196
|
|
.long 7171437,1526750043
|
|
.long 6184542,2533398423
|
|
.long 16514043,4261478142
|
|
.long 6908265,1509972570
|
|
.long 11711154,2885725356
|
|
.long 15790320,1006648380
|
|
.long 3223857,1275087948
|
|
.long 789516,50332419
|
|
.long 13948116,889206069
|
|
.long 13619151,4076925939
|
|
.long 9211020,587211555
|
|
.long 14869218,3087055032
|
|
.long 7697781,1560304989
|
|
.long 11119017,1778412138
|
|
.long 4868682,2449511058
|
|
.long 5723991,3573601749
|
|
.long 8684676,553656609
|
|
.long 1118481,1140868164
|
|
.long 4539717,1358975313
|
|
.long 1776411,3321939654
|
|
.long 16119285,2097184125
|
|
.long 15000804,956315961
|
|
.long 921102,2197848963
|
|
.long 7566195,3691044060
|
|
.long 11184810,2852170410
|
|
.long 15856113,2080406652
|
|
.long 14540253,1996519287
|
|
.long 5855577,1442862678
|
|
.long 1315860,83887365
|
|
.long 7105644,452991771
|
|
.long 9605778,2751505572
|
|
.long 5526612,352326933
|
|
.long 13684944,872428596
|
|
.long 7895160,503324190
|
|
.long 7368816,469769244
|
|
.long 14935011,4160813304
|
|
.long 4802889,1375752786
|
|
.long 8421504,536879136
|
|
.long 5263440,335549460
|
|
.long 10987431,3909151209
|
|
.long 16185078,3170942397
|
|
.long 7829367,3707821533
|
|
.long 9671571,3825263844
|
|
.long 8816262,2701173153
|
|
.long 8618883,3758153952
|
|
.long 2763306,2315291274
|
|
.long 13092807,4043370993
|
|
.long 5987163,3590379222
|
|
.long 15329769,2046851706
|
|
.long 15658734,3137387451
|
|
.long 9408399,3808486371
|
|
.long 65793,1073758272
|
|
.long 4013373,1325420367
|
|
.globl Camellia_cbc_encrypt
|
|
.type Camellia_cbc_encrypt,@function
|
|
.align 16
|
|
Camellia_cbc_encrypt:
|
|
.L_Camellia_cbc_encrypt_begin:
|
|
pushl %ebp
|
|
pushl %ebx
|
|
pushl %esi
|
|
pushl %edi
|
|
movl 28(%esp),%ecx
|
|
cmpl $0,%ecx
|
|
je .L016enc_out
|
|
pushfl
|
|
cld
|
|
movl 24(%esp),%eax
|
|
movl 28(%esp),%ebx
|
|
movl 36(%esp),%edx
|
|
movl 40(%esp),%ebp
|
|
leal -64(%esp),%esi
|
|
andl $-64,%esi
|
|
leal -127(%edx),%edi
|
|
subl %esi,%edi
|
|
negl %edi
|
|
andl $960,%edi
|
|
subl %edi,%esi
|
|
movl 44(%esp),%edi
|
|
xchgl %esi,%esp
|
|
addl $4,%esp
|
|
movl %esi,20(%esp)
|
|
movl %eax,24(%esp)
|
|
movl %ebx,28(%esp)
|
|
movl %ecx,32(%esp)
|
|
movl %edx,36(%esp)
|
|
movl %ebp,40(%esp)
|
|
call .L017pic_point
|
|
.L017pic_point:
|
|
popl %ebp
|
|
leal .LCamellia_SBOX-.L017pic_point(%ebp),%ebp
|
|
movl $32,%esi
|
|
.align 4
|
|
.L018prefetch_sbox:
|
|
movl (%ebp),%eax
|
|
movl 32(%ebp),%ebx
|
|
movl 64(%ebp),%ecx
|
|
movl 96(%ebp),%edx
|
|
leal 128(%ebp),%ebp
|
|
decl %esi
|
|
jnz .L018prefetch_sbox
|
|
movl 36(%esp),%eax
|
|
subl $4096,%ebp
|
|
movl 24(%esp),%esi
|
|
movl 272(%eax),%edx
|
|
cmpl $0,%edi
|
|
je .L019DECRYPT
|
|
movl 32(%esp),%ecx
|
|
movl 40(%esp),%edi
|
|
shll $6,%edx
|
|
leal (%eax,%edx,1),%edx
|
|
movl %edx,16(%esp)
|
|
testl $4294967280,%ecx
|
|
jz .L020enc_tail
|
|
movl (%edi),%eax
|
|
movl 4(%edi),%ebx
|
|
.align 4
|
|
.L021enc_loop:
|
|
movl 8(%edi),%ecx
|
|
movl 12(%edi),%edx
|
|
xorl (%esi),%eax
|
|
xorl 4(%esi),%ebx
|
|
xorl 8(%esi),%ecx
|
|
bswap %eax
|
|
xorl 12(%esi),%edx
|
|
bswap %ebx
|
|
movl 36(%esp),%edi
|
|
bswap %ecx
|
|
bswap %edx
|
|
call _x86_Camellia_encrypt
|
|
movl 24(%esp),%esi
|
|
movl 28(%esp),%edi
|
|
bswap %eax
|
|
bswap %ebx
|
|
bswap %ecx
|
|
movl %eax,(%edi)
|
|
bswap %edx
|
|
movl %ebx,4(%edi)
|
|
movl %ecx,8(%edi)
|
|
movl %edx,12(%edi)
|
|
movl 32(%esp),%ecx
|
|
leal 16(%esi),%esi
|
|
movl %esi,24(%esp)
|
|
leal 16(%edi),%edx
|
|
movl %edx,28(%esp)
|
|
subl $16,%ecx
|
|
testl $4294967280,%ecx
|
|
movl %ecx,32(%esp)
|
|
jnz .L021enc_loop
|
|
testl $15,%ecx
|
|
jnz .L020enc_tail
|
|
movl 40(%esp),%esi
|
|
movl 8(%edi),%ecx
|
|
movl 12(%edi),%edx
|
|
movl %eax,(%esi)
|
|
movl %ebx,4(%esi)
|
|
movl %ecx,8(%esi)
|
|
movl %edx,12(%esi)
|
|
movl 20(%esp),%esp
|
|
popfl
|
|
.L016enc_out:
|
|
popl %edi
|
|
popl %esi
|
|
popl %ebx
|
|
popl %ebp
|
|
ret
|
|
pushfl
|
|
.align 4
|
|
.L020enc_tail:
|
|
movl %edi,%eax
|
|
movl 28(%esp),%edi
|
|
pushl %eax
|
|
movl $16,%ebx
|
|
subl %ecx,%ebx
|
|
cmpl %esi,%edi
|
|
je .L022enc_in_place
|
|
.align 4
|
|
.long 2767451785
|
|
jmp .L023enc_skip_in_place
|
|
.L022enc_in_place:
|
|
leal (%edi,%ecx,1),%edi
|
|
.L023enc_skip_in_place:
|
|
movl %ebx,%ecx
|
|
xorl %eax,%eax
|
|
.align 4
|
|
.long 2868115081
|
|
popl %edi
|
|
movl 28(%esp),%esi
|
|
movl (%edi),%eax
|
|
movl 4(%edi),%ebx
|
|
movl $16,32(%esp)
|
|
jmp .L021enc_loop
|
|
.align 16
|
|
.L019DECRYPT:
|
|
shll $6,%edx
|
|
leal (%eax,%edx,1),%edx
|
|
movl %eax,16(%esp)
|
|
movl %edx,36(%esp)
|
|
cmpl 28(%esp),%esi
|
|
je .L024dec_in_place
|
|
movl 40(%esp),%edi
|
|
movl %edi,44(%esp)
|
|
.align 4
|
|
.L025dec_loop:
|
|
movl (%esi),%eax
|
|
movl 4(%esi),%ebx
|
|
movl 8(%esi),%ecx
|
|
bswap %eax
|
|
movl 12(%esi),%edx
|
|
bswap %ebx
|
|
movl 36(%esp),%edi
|
|
bswap %ecx
|
|
bswap %edx
|
|
call _x86_Camellia_decrypt
|
|
movl 44(%esp),%edi
|
|
movl 32(%esp),%esi
|
|
bswap %eax
|
|
bswap %ebx
|
|
bswap %ecx
|
|
xorl (%edi),%eax
|
|
bswap %edx
|
|
xorl 4(%edi),%ebx
|
|
xorl 8(%edi),%ecx
|
|
xorl 12(%edi),%edx
|
|
subl $16,%esi
|
|
jc .L026dec_partial
|
|
movl %esi,32(%esp)
|
|
movl 24(%esp),%esi
|
|
movl 28(%esp),%edi
|
|
movl %eax,(%edi)
|
|
movl %ebx,4(%edi)
|
|
movl %ecx,8(%edi)
|
|
movl %edx,12(%edi)
|
|
movl %esi,44(%esp)
|
|
leal 16(%esi),%esi
|
|
movl %esi,24(%esp)
|
|
leal 16(%edi),%edi
|
|
movl %edi,28(%esp)
|
|
jnz .L025dec_loop
|
|
movl 44(%esp),%edi
|
|
.L027dec_end:
|
|
movl 40(%esp),%esi
|
|
movl (%edi),%eax
|
|
movl 4(%edi),%ebx
|
|
movl 8(%edi),%ecx
|
|
movl 12(%edi),%edx
|
|
movl %eax,(%esi)
|
|
movl %ebx,4(%esi)
|
|
movl %ecx,8(%esi)
|
|
movl %edx,12(%esi)
|
|
jmp .L028dec_out
|
|
.align 4
|
|
.L026dec_partial:
|
|
leal 44(%esp),%edi
|
|
movl %eax,(%edi)
|
|
movl %ebx,4(%edi)
|
|
movl %ecx,8(%edi)
|
|
movl %edx,12(%edi)
|
|
leal 16(%esi),%ecx
|
|
movl %edi,%esi
|
|
movl 28(%esp),%edi
|
|
.long 2767451785
|
|
movl 24(%esp),%edi
|
|
jmp .L027dec_end
|
|
.align 4
|
|
.L024dec_in_place:
|
|
.L029dec_in_place_loop:
|
|
leal 44(%esp),%edi
|
|
movl (%esi),%eax
|
|
movl 4(%esi),%ebx
|
|
movl 8(%esi),%ecx
|
|
movl 12(%esi),%edx
|
|
movl %eax,(%edi)
|
|
movl %ebx,4(%edi)
|
|
movl %ecx,8(%edi)
|
|
bswap %eax
|
|
movl %edx,12(%edi)
|
|
bswap %ebx
|
|
movl 36(%esp),%edi
|
|
bswap %ecx
|
|
bswap %edx
|
|
call _x86_Camellia_decrypt
|
|
movl 40(%esp),%edi
|
|
movl 28(%esp),%esi
|
|
bswap %eax
|
|
bswap %ebx
|
|
bswap %ecx
|
|
xorl (%edi),%eax
|
|
bswap %edx
|
|
xorl 4(%edi),%ebx
|
|
xorl 8(%edi),%ecx
|
|
xorl 12(%edi),%edx
|
|
movl %eax,(%esi)
|
|
movl %ebx,4(%esi)
|
|
movl %ecx,8(%esi)
|
|
movl %edx,12(%esi)
|
|
leal 16(%esi),%esi
|
|
movl %esi,28(%esp)
|
|
leal 44(%esp),%esi
|
|
movl (%esi),%eax
|
|
movl 4(%esi),%ebx
|
|
movl 8(%esi),%ecx
|
|
movl 12(%esi),%edx
|
|
movl %eax,(%edi)
|
|
movl %ebx,4(%edi)
|
|
movl %ecx,8(%edi)
|
|
movl %edx,12(%edi)
|
|
movl 24(%esp),%esi
|
|
leal 16(%esi),%esi
|
|
movl %esi,24(%esp)
|
|
movl 32(%esp),%ecx
|
|
subl $16,%ecx
|
|
jc .L030dec_in_place_partial
|
|
movl %ecx,32(%esp)
|
|
jnz .L029dec_in_place_loop
|
|
jmp .L028dec_out
|
|
.align 4
|
|
.L030dec_in_place_partial:
|
|
movl 28(%esp),%edi
|
|
leal 44(%esp),%esi
|
|
leal (%edi,%ecx,1),%edi
|
|
leal 16(%esi,%ecx,1),%esi
|
|
negl %ecx
|
|
.long 2767451785
|
|
.align 4
|
|
.L028dec_out:
|
|
movl 20(%esp),%esp
|
|
popfl
|
|
popl %edi
|
|
popl %esi
|
|
popl %ebx
|
|
popl %ebp
|
|
ret
|
|
.size Camellia_cbc_encrypt,.-.L_Camellia_cbc_encrypt_begin
|
|
.byte 67,97,109,101,108,108,105,97,32,102,111,114,32,120,56,54
|
|
.byte 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
|
|
.byte 115,108,46,111,114,103,62,0
|
|
#endif
|