Revision 0d9153dc34ee2dcf0821e3f21e825fc5bb8895b4 authored by Santiago Zanella-Beguelin on 11 December 2019, 17:46:08 UTC, committed by Santiago Zanella-Beguelin on 12 December 2019, 10:33:01 UTC
1 parent 7405f78
Raw File
aes-i686.asm
.686p
.model flat
.code
.XMM
ALIGN 16
_KeyExpansionStdcall@12 proc
  mov eax, dword ptr [esp + 4]
  movdqu xmm1, xmmword ptr [eax + 0]
  mov eax, dword ptr [esp + 8]
  movdqu xmmword ptr [eax + 0], xmm1
  aeskeygenassist xmm2, xmm1, 1
  pshufd xmm2, xmm2, 255
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  pxor xmm1, xmm2
  movdqu xmmword ptr [eax + 16], xmm1
  aeskeygenassist xmm2, xmm1, 2
  pshufd xmm2, xmm2, 255
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  pxor xmm1, xmm2
  movdqu xmmword ptr [eax + 32], xmm1
  aeskeygenassist xmm2, xmm1, 4
  pshufd xmm2, xmm2, 255
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  pxor xmm1, xmm2
  movdqu xmmword ptr [eax + 48], xmm1
  aeskeygenassist xmm2, xmm1, 8
  pshufd xmm2, xmm2, 255
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  pxor xmm1, xmm2
  movdqu xmmword ptr [eax + 64], xmm1
  aeskeygenassist xmm2, xmm1, 16
  pshufd xmm2, xmm2, 255
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  pxor xmm1, xmm2
  movdqu xmmword ptr [eax + 80], xmm1
  aeskeygenassist xmm2, xmm1, 32
  pshufd xmm2, xmm2, 255
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  pxor xmm1, xmm2
  movdqu xmmword ptr [eax + 96], xmm1
  aeskeygenassist xmm2, xmm1, 64
  pshufd xmm2, xmm2, 255
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  pxor xmm1, xmm2
  movdqu xmmword ptr [eax + 112], xmm1
  aeskeygenassist xmm2, xmm1, 128
  pshufd xmm2, xmm2, 255
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  pxor xmm1, xmm2
  movdqu xmmword ptr [eax + 128], xmm1
  aeskeygenassist xmm2, xmm1, 27
  pshufd xmm2, xmm2, 255
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  pxor xmm1, xmm2
  movdqu xmmword ptr [eax + 144], xmm1
  aeskeygenassist xmm2, xmm1, 54
  pshufd xmm2, xmm2, 255
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  pxor xmm1, xmm2
  movdqu xmmword ptr [eax + 160], xmm1
  xor eax, eax
  pxor xmm1, xmm1
  pxor xmm2, xmm2
  pxor xmm3, xmm3
  ret 12
_KeyExpansionStdcall@12 endp
ALIGN 16
_KeyExpansionAndInversionStdcall@12 proc
  mov eax, dword ptr [esp + 4]
  movdqu xmm1, xmmword ptr [eax + 0]
  mov eax, dword ptr [esp + 8]
  movdqu xmmword ptr [eax + 0], xmm1
  aeskeygenassist xmm2, xmm1, 1
  pshufd xmm2, xmm2, 255
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  pxor xmm1, xmm2
  movdqu xmmword ptr [eax + 16], xmm1
  aeskeygenassist xmm2, xmm1, 2
  pshufd xmm2, xmm2, 255
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  pxor xmm1, xmm2
  movdqu xmmword ptr [eax + 32], xmm1
  aeskeygenassist xmm2, xmm1, 4
  pshufd xmm2, xmm2, 255
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  pxor xmm1, xmm2
  movdqu xmmword ptr [eax + 48], xmm1
  aeskeygenassist xmm2, xmm1, 8
  pshufd xmm2, xmm2, 255
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  pxor xmm1, xmm2
  movdqu xmmword ptr [eax + 64], xmm1
  aeskeygenassist xmm2, xmm1, 16
  pshufd xmm2, xmm2, 255
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  pxor xmm1, xmm2
  movdqu xmmword ptr [eax + 80], xmm1
  aeskeygenassist xmm2, xmm1, 32
  pshufd xmm2, xmm2, 255
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  pxor xmm1, xmm2
  movdqu xmmword ptr [eax + 96], xmm1
  aeskeygenassist xmm2, xmm1, 64
  pshufd xmm2, xmm2, 255
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  pxor xmm1, xmm2
  movdqu xmmword ptr [eax + 112], xmm1
  aeskeygenassist xmm2, xmm1, 128
  pshufd xmm2, xmm2, 255
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  pxor xmm1, xmm2
  movdqu xmmword ptr [eax + 128], xmm1
  aeskeygenassist xmm2, xmm1, 27
  pshufd xmm2, xmm2, 255
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  pxor xmm1, xmm2
  movdqu xmmword ptr [eax + 144], xmm1
  aeskeygenassist xmm2, xmm1, 54
  pshufd xmm2, xmm2, 255
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  vpslldq xmm3, xmm1, 4
  pxor xmm1, xmm3
  pxor xmm1, xmm2
  movdqu xmmword ptr [eax + 160], xmm1
  movdqu xmm1, xmmword ptr [eax + 16]
  aesimc xmm1, xmm1
  movdqu xmmword ptr [eax + 16], xmm1
  movdqu xmm1, xmmword ptr [eax + 32]
  aesimc xmm1, xmm1
  movdqu xmmword ptr [eax + 32], xmm1
  movdqu xmm1, xmmword ptr [eax + 48]
  aesimc xmm1, xmm1
  movdqu xmmword ptr [eax + 48], xmm1
  movdqu xmm1, xmmword ptr [eax + 64]
  aesimc xmm1, xmm1
  movdqu xmmword ptr [eax + 64], xmm1
  movdqu xmm1, xmmword ptr [eax + 80]
  aesimc xmm1, xmm1
  movdqu xmmword ptr [eax + 80], xmm1
  movdqu xmm1, xmmword ptr [eax + 96]
  aesimc xmm1, xmm1
  movdqu xmmword ptr [eax + 96], xmm1
  movdqu xmm1, xmmword ptr [eax + 112]
  aesimc xmm1, xmm1
  movdqu xmmword ptr [eax + 112], xmm1
  movdqu xmm1, xmmword ptr [eax + 128]
  aesimc xmm1, xmm1
  movdqu xmmword ptr [eax + 128], xmm1
  movdqu xmm1, xmmword ptr [eax + 144]
  aesimc xmm1, xmm1
  movdqu xmmword ptr [eax + 144], xmm1
  xor eax, eax
  pxor xmm1, xmm1
  pxor xmm2, xmm2
  pxor xmm3, xmm3
  ret 12
_KeyExpansionAndInversionStdcall@12 endp
ALIGN 16
_AES128EncryptOneBlockStdcall@16 proc
  mov eax, dword ptr [esp + 8]
  movdqu xmm0, xmmword ptr [eax + 0]
  mov eax, dword ptr [esp + 12]
  movdqu xmm2, xmmword ptr [eax + 0]
  pxor xmm0, xmm2
  movdqu xmm2, xmmword ptr [eax + 16]
  aesenc xmm0, xmm2
  movdqu xmm2, xmmword ptr [eax + 32]
  aesenc xmm0, xmm2
  movdqu xmm2, xmmword ptr [eax + 48]
  aesenc xmm0, xmm2
  movdqu xmm2, xmmword ptr [eax + 64]
  aesenc xmm0, xmm2
  movdqu xmm2, xmmword ptr [eax + 80]
  aesenc xmm0, xmm2
  movdqu xmm2, xmmword ptr [eax + 96]
  aesenc xmm0, xmm2
  movdqu xmm2, xmmword ptr [eax + 112]
  aesenc xmm0, xmm2
  movdqu xmm2, xmmword ptr [eax + 128]
  aesenc xmm0, xmm2
  movdqu xmm2, xmmword ptr [eax + 144]
  aesenc xmm0, xmm2
  movdqu xmm2, xmmword ptr [eax + 160]
  aesenclast xmm0, xmm2
  pxor xmm2, xmm2
  mov eax, dword ptr [esp + 4]
  movdqu xmmword ptr [eax + 0], xmm0
  ret 16
_AES128EncryptOneBlockStdcall@16 endp
ALIGN 16
_AES128EncryptOneBlock proc
  movdqu xmm2, xmmword ptr [eax + 0]
  pxor xmm0, xmm2
  movdqu xmm2, xmmword ptr [eax + 16]
  aesenc xmm0, xmm2
  movdqu xmm2, xmmword ptr [eax + 32]
  aesenc xmm0, xmm2
  movdqu xmm2, xmmword ptr [eax + 48]
  aesenc xmm0, xmm2
  movdqu xmm2, xmmword ptr [eax + 64]
  aesenc xmm0, xmm2
  movdqu xmm2, xmmword ptr [eax + 80]
  aesenc xmm0, xmm2
  movdqu xmm2, xmmword ptr [eax + 96]
  aesenc xmm0, xmm2
  movdqu xmm2, xmmword ptr [eax + 112]
  aesenc xmm0, xmm2
  movdqu xmm2, xmmword ptr [eax + 128]
  aesenc xmm0, xmm2
  movdqu xmm2, xmmword ptr [eax + 144]
  aesenc xmm0, xmm2
  movdqu xmm2, xmmword ptr [eax + 160]
  aesenclast xmm0, xmm2
  pxor xmm2, xmm2
  ret 8
_AES128EncryptOneBlock endp
ALIGN 16
_AES128DecryptOneBlock proc
  movdqu xmm2, xmmword ptr [eax + 160]
  pxor xmm0, xmm2
  movdqu xmm2, xmmword ptr [eax + 144]
  aesdec xmm0, xmm2
  movdqu xmm2, xmmword ptr [eax + 128]
  aesdec xmm0, xmm2
  movdqu xmm2, xmmword ptr [eax + 112]
  aesdec xmm0, xmm2
  movdqu xmm2, xmmword ptr [eax + 96]
  aesdec xmm0, xmm2
  movdqu xmm2, xmmword ptr [eax + 80]
  aesdec xmm0, xmm2
  movdqu xmm2, xmmword ptr [eax + 64]
  aesdec xmm0, xmm2
  movdqu xmm2, xmmword ptr [eax + 48]
  aesdec xmm0, xmm2
  movdqu xmm2, xmmword ptr [eax + 32]
  aesdec xmm0, xmm2
  movdqu xmm2, xmmword ptr [eax + 16]
  aesdec xmm0, xmm2
  movdqu xmm2, xmmword ptr [eax + 0]
  aesdeclast xmm0, xmm2
  pxor xmm2, xmm2
  ret 8
_AES128DecryptOneBlock endp
end
back to top