Function at 0x4a0980
Capabilities:
Encrypt data using aes
Reference aes constants

Disassembly:
push ebp
mov ebp, esp
push ebx
and esp, 0xfffffff0
sub esp, 0x10
movdqa xmm3, xmmword [eax + 0x10]
pshufd xmm0, xmm3, 0x55
movdqa xmm2, xmmword [eax]
movd eax, xmm0
movdqa xmm5, xmm2
movaps xmmword [edx], xmm2
movd edx, xmm0
shr eax, 0x18
pslldq xmm5, 4
movaps xmmword [ecx], xmm3
movzx ecx, dl
movzx edx, dh
movzx eax, byte [eax + str.cw]
movzx ecx, byte [ecx + str.cw]
movzx edx, byte [edx + str.cw]
shl eax, 0x18
or eax, ecx
movd ecx, xmm0
shl edx, 8
pshufd xmm0, xmm3, 0xff
shr ecx, 0x10
movzx ecx, cl
movzx ecx, byte [ecx + str.cw]
shl ecx, 0x10
or eax, ecx
movd ecx, xmm0
or eax, edx
movd edx, xmm0
movzx ebx, cl
movzx ecx, ch
shr edx, 0x18
movzx ebx, byte [ebx + str.cw]
movzx ecx, byte [ecx + str.cw]
movzx edx, byte [edx + str.cw]
shl ecx, 8
shl edx, 0x18
or edx, ebx
movd ebx, xmm0
shr ebx, 0x10
movzx ebx, bl
movzx ebx, byte [ebx + str.cw]
shl ebx, 0x10
or edx, ebx
or edx, ecx
mov ecx, eax
ror ecx, 8
mov dword [esp + 4], edx
xor ecx, 1
movd xmm1, dword [esp + 4]
mov dword [esp + 0xc], ecx
mov ecx, edx
ror ecx, 8
movd xmm7, dword [esp + 0xc]
xor ecx, 1
mov dword [esp + 8], ecx
movd xmm6, dword [esp + 8]
mov dword [esp + 8], eax
punpckldq xmm1, xmm6
movd xmm6, dword [esp + 8]
punpckldq xmm6, xmm7
movdqa xmm7, xmm5
pslldq xmm7, 4
pxor xmm5, xmm7
punpcklqdq xmm6, xmm1
movdqa xmm0, xmm7
pxor xmm5, xmm2
pslldq xmm0, 4
pshufd xmm6, xmm6, 0xff
movdqa xmm2, xmm3
pxor xmm5, xmm0
pslldq xmm2, 4
pxor xmm5, xmm6
pshufd xmm1, xmm5, 0x55
movdqa xmm0, xmm5
movd eax, xmm1
movd edx, xmm1
shr eax, 0x18
movzx ecx, dl
movzx edx, dh
movzx eax, byte [eax + str.cw]
movzx ecx, byte [ecx + str.cw]
movzx edx, byte [edx + str.cw]
shl eax, 0x18
or eax, ecx
movd ecx, xmm1
shl edx, 8
pshufd xmm1, xmm5, 0xff
shr ecx, 0x10
movdqa xmm5, xmm2
movzx ecx, cl
movzx ecx, byte [ecx + str.cw]
pslldq xmm5, 4
pxor xmm2, xmm5
pxor xmm2, xmm3
shl ecx, 0x10
or eax, ecx
movd ecx, xmm1
or eax, edx
movd edx, xmm1
movzx ebx, cl
movzx ecx, ch
shr edx, 0x18
movzx ebx, byte [ebx + str.cw]
movzx ecx, byte [ecx + str.cw]
movzx edx, byte [edx + str.cw]
shl edx, 0x18
or edx, ebx
movd ebx, xmm1
shl ecx, 8
shr ebx, 0x10
movzx ebx, bl
movzx ebx, byte [ebx + str.cw]
shl ebx, 0x10
or edx, ebx
mov ebx, eax
or edx, ecx
ror ebx, 8
mov dword [esp + 0xc], ebx
mov ebx, edx
ror ebx, 8
mov dword [esp + 8], ebx
mov dword [esp + 4], edx
movd xmm7, dword [esp + 8]
mov dword [esp + 8], eax
movd xmm6, dword [esp + 4]
mov eax, dword [ebp + 8]
movd xmm1, dword [esp + 8]
punpckldq xmm6, xmm7
movd xmm7, dword [esp + 0xc]
movaps xmmword [eax], xmm0
punpckldq xmm1, xmm7
mov eax, dword [ebp + 0xc]
punpcklqdq xmm1, xmm6
pshufd xmm4, xmm1, 0xaa
movdqa xmm1, xmm5
pslldq xmm1, 4
pxor xmm2, xmm1
pxor xmm2, xmm4
movdqa xmm4, xmm0
movdqa xmm1, xmm2
pslldq xmm4, 4
movaps xmmword [eax], xmm2
pshufd xmm2, xmm2, 0x55
movd eax, xmm2
movd edx, xmm2
shr eax, 0x18
movzx ecx, dl
movzx edx, dh
movzx eax, byte [eax + str.cw]
movzx ecx, byte [ecx + str.cw]
movzx edx, byte [edx + str.cw]
shl eax, 0x18
or eax, ecx
movd ecx, xmm2
shl edx, 8
pshufd xmm2, xmm1, 0xff
shr ecx, 0x10
movzx ecx, cl
movzx ecx, byte [ecx + str.cw]
shl ecx, 0x10
or eax, ecx
movd ecx, xmm2
or eax, edx
movd edx, xmm2
movzx ebx, cl
movzx ecx, ch
shr edx, 0x18
movzx ebx, byte [ebx + str.cw]
movzx ecx, byte [ecx + str.cw]
movzx edx, byte [edx + str.cw]
shl ecx, 8
shl edx, 0x18
or edx, ebx
movd ebx, xmm2
shr ebx, 0x10
movzx ebx, bl
movzx ebx, byte [ebx + str.cw]
shl ebx, 0x10
or edx, ebx
or edx, ecx
mov ecx, eax
ror ecx, 8
mov dword [esp + 4], edx
xor ecx, 2
movd xmm2, dword [esp + 4]
mov dword [esp + 0xc], ecx
mov ecx, edx
ror ecx, 8
xor ecx, 2
mov dword [esp + 8], ecx
movd xmm6, dword [esp + 8]
mov dword [esp + 8], eax
movd xmm5, dword [esp + 8]
punpckldq xmm2, xmm6
movd xmm6, dword [esp + 0xc]
punpckldq xmm5, xmm6
movdqa xmm7, xmm5
punpcklqdq xmm7, xmm2
movdqa xmm2, xmm4
pslldq xmm2, 4
movdqa xmm3, xmm2
pxor xmm2, xmm4
pshufd xmm5, xmm7, 0xff
pslldq xmm3, 4
movdqa xmm4, xmm2
pxor xmm4, xmm3
movdqa xmm3, xmm1
pxor xmm4, xmm5
pslldq xmm3, 4
pxor xmm4, xmm0
pshufd xmm0, xmm4, 0x55
movdqa xmm5, xmm4
movd eax, xmm0
movd edx, xmm0
shr eax, 0x18
movzx ecx, dl
movzx edx, dh
movzx eax, byte [eax + str.cw]
movzx ecx, byte [ecx + str.cw]
movzx edx, byte [edx + str.cw]
shl eax, 0x18
or eax, ecx
movd ecx, xmm0
pshufd xmm0, xmm4, 0xff
shr ecx, 0x10
movzx ecx, cl
movzx ecx, byte [ecx + str.cw]
shl ecx, 0x10
shl edx, 8
or eax, ecx
movd ecx, xmm0
or eax, edx
movd edx, xmm0
movzx ebx, cl
movzx ecx, ch
shr edx, 0x18
movzx ebx, byte [ebx + str.cw]
movzx edx, byte [edx + str.cw]
shl edx, 0x18
or edx, ebx
movd ebx, xmm0
shr ebx, 0x10
movzx ebx, bl
movzx ebx, byte [ebx + str.cw]
movzx ecx, byte [ecx + str.cw]
shl ebx, 0x10
shl ecx, 8
or edx, ebx
mov ebx, eax
or edx, ecx
ror ebx, 8
mov dword [esp + 0xc], ebx
mov ebx, edx
mov dword [esp + 4], edx
ror ebx, 8
movd xmm0, dword [esp + 4]
mov dword [esp + 8], ebx
movd xmm6, dword [esp + 8]
mov dword [esp + 8], eax
movd xmm2, dword [esp + 8]
mov eax, dword [ebp + 0x10]
punpckldq xmm0, xmm6
movd xmm6, dword [esp + 0xc]
punpckldq xmm2, xmm6
movaps xmmword [eax], xmm5
mov eax, dword [ebp + 0x14]
movdqa xmm7, xmm2
punpcklqdq xmm7, xmm0
movdqa xmm0, xmm3
pslldq xmm0, 4
movdqa xmm4, xmm0
pxor xmm0, xmm3
pshufd xmm2, xmm7, 0xaa
pslldq xmm4, 4
movdqa xmm3, xmm0
pxor xmm3, xmm4
pxor xmm3, xmm2
pxor xmm3, xmm1
pshufd xmm0, xmm3, 0x55
movaps xmmword [eax], xmm3
movdqa xmm2, xmm3
movd eax, xmm0
movd edx, xmm0
shr eax, 0x18
movzx ecx, dl
movzx edx, dh
movzx eax, byte [eax + str.cw]
movzx ecx, byte [ecx + str.cw]
movzx edx, byte [edx + str.cw]
shl eax, 0x18
or eax, ecx
movd ecx, xmm0
shl edx, 8
pshufd xmm0, xmm3, 0xff
shr ecx, 0x10
movzx ecx, cl
movzx ecx, byte [ecx + str.cw]
shl ecx, 0x10
or eax, ecx
movd ecx, xmm0
or eax, edx
movd edx, xmm0
movzx ebx, cl
movzx ecx, ch
shr edx, 0x18
movzx ebx, byte [ebx + str.cw]
movzx ecx, byte [ecx + str.cw]
movzx edx, byte [edx + str.cw]
shl ecx, 8
shl edx, 0x18
or edx, ebx
movd ebx, xmm0
shr ebx, 0x10
movzx ebx, bl
movzx ebx, byte [ebx + str.cw]
shl ebx, 0x10
or edx, ebx
or edx, ecx
mov ecx, eax
ror ecx, 8
mov dword [esp + 4], edx
xor ecx, 4
movd xmm0, dword [esp + 4]
mov dword [esp + 0xc], ecx
mov ecx, edx
ror ecx, 8
movd xmm6, dword [esp + 0xc]
xor ecx, 4
mov dword [esp + 8], ecx
movd xmm7, dword [esp + 8]
mov dword [esp + 8], eax
movd xmm4, dword [esp + 8]
punpckldq xmm0, xmm7
punpckldq xmm4, xmm6
movdqa xmm1, xmm4
punpcklqdq xmm1, xmm0
movdqa xmm0, xmm5
pshufd xmm4, xmm1, 0xff
pslldq xmm0, 4
movdqa xmm1, xmm0
pslldq xmm1, 4
movdqa xmm3, xmm1
pxor xmm1, xmm0
pslldq xmm3, 4
pxor xmm1, xmm3
movdqa xmm0, xmm1
movdqa xmm1, xmm2
pxor xmm0, xmm4
pslldq xmm1, 4
movdqa xmm4, xmm0
pxor xmm4, xmm5
pshufd xmm0, xmm4, 0x55
movd eax, xmm0
movd edx, xmm0
shr eax, 0x18
movzx ecx, dl
movzx edx, dh
movzx eax, byte [eax + str.cw]
movzx ecx, byte [ecx + str.cw]
shl eax, 0x18
or eax, ecx
movd ecx, xmm0
pshufd xmm0, xmm4, 0xff
shr ecx, 0x10
movzx ecx, cl
movzx ecx, byte [ecx + str.cw]
movzx edx, byte [edx + str.cw]
shl ecx, 0x10
shl edx, 8
or eax, ecx
movd ecx, xmm0
or eax, edx
movd edx, xmm0
movzx ebx, cl
movzx ecx, ch
shr edx, 0x18
movzx ebx, byte [ebx + str.cw]
movzx ecx, byte [ecx + str.cw]
movzx edx, byte [edx + str.cw]
shl ecx, 8
shl edx, 0x18
or edx, ebx
movd ebx, xmm0
shr ebx, 0x10
movzx ebx, bl
movzx ebx, byte [ebx + str.cw]
shl ebx, 0x10
or edx, ebx
mov ebx, eax
or edx, ecx
ror ebx, 8
mov dword [esp + 0xc], ebx
mov ebx, edx
mov dword [esp + 4], edx
ror ebx, 8
movd xmm6, dword [esp + 0xc]
mov dword [esp + 8], ebx
movd xmm0, dword [esp + 4]
movd xmm7, dword [esp + 8]
mov dword [esp + 8], eax
movd xmm3, dword [esp + 8]
mov eax, dword [ebp + 0x18]
punpckldq xmm0, xmm7
punpckldq xmm3, xmm6
movaps xmmword [eax], xmm4
mov eax, dword [ebp + 0x1c]
movdqa xmm7, xmm3
punpcklqdq xmm7, xmm0
movdqa xmm0, xmm1
pslldq xmm0, 4
movdqa xmm5, xmm0
pxor xmm0, xmm1
pshufd xmm3, xmm7, 0xaa
pslldq xmm5, 4
movdqa xmm1, xmm0
pxor xmm1, xmm5
pxor xmm1, xmm3
movdqa xmm3, xmm1
pxor xmm3, xmm2
pshufd xmm0, xmm3, 0x55
movaps xmmword [eax], xmm3
movd eax, xmm0
movd edx, xmm0
shr eax, 0x18
movzx ecx, dl
movzx edx, dh
movzx eax, byte [eax + str.cw]
movzx ecx, byte [ecx + str.cw]
movzx edx, byte [edx + str.cw]
shl eax, 0x18
or eax, ecx
movd ecx, xmm0
shl edx, 8
pshufd xmm0, xmm3, 0xff
shr ecx, 0x10
movzx ecx, cl
movzx ecx, byte [ecx + str.cw]
shl ecx, 0x10
or eax, ecx
movd ecx, xmm0
or eax, edx
movd edx, xmm0
movzx ebx, cl
movzx ecx, ch
shr edx, 0x18
movzx ebx, byte [ebx + str.cw]
movzx ecx, byte [ecx + str.cw]
movzx edx, byte [edx + str.cw]
shl edx, 0x18
or edx, ebx
movd ebx, xmm0
shr ebx, 0x10
movzx ebx, bl
movzx ebx, byte [ebx + str.cw]
shl ebx, 0x10
shl ecx, 8
or edx, ebx
or edx, ecx
mov ecx, eax
ror ecx, 8
mov dword [esp + 4], edx
xor ecx, 8
movd xmm0, dword [esp + 4]
mov dword [esp + 0xc], ecx
mov ecx, edx
ror ecx, 8
xor ecx, 8
mov dword [esp + 8], ecx
movd xmm7, dword [esp + 8]
mov dword [esp + 8], eax
movd xmm2, dword [esp + 8]
movd xmm6, dword [esp + 0xc]
punpckldq xmm0, xmm7
punpckldq xmm2, xmm6
punpcklqdq xmm2, xmm0
movdqa xmm0, xmm4
pslldq xmm0, 4
movdqa xmm1, xmm0
pshufd xmm2, xmm2, 0xff
pslldq xmm1, 4
movdqa xmm5, xmm1
pxor xmm1, xmm0
pslldq xmm5, 4
pxor xmm1, xmm5
movdqa xmm0, xmm1
pxor xmm0, xmm2
pxor xmm0, xmm4
movdqa xmm4, xmm3
pshufd xmm1, xmm0, 0x55
pslldq xmm4, 4
movd eax, xmm1
movd edx, xmm1
shr eax, 0x18
movzx ecx, dl
movzx edx, dh
movzx eax, byte [eax + str.cw]
movzx ecx, byte [ecx + str.cw]
movzx edx, byte [edx + str.cw]
shl eax, 0x18
or eax, ecx
movd ecx, xmm1
shl edx, 8
pshufd xmm1, xmm0, 0xff
shr ecx, 0x10
movzx ecx, cl
movzx ecx, byte [ecx + str.cw]
shl ecx, 0x10
or eax, ecx
movd ecx, xmm1
or eax, edx
movd edx, xmm1
movzx ebx, cl
movzx ecx, ch
shr edx, 0x18
movzx ebx, byte [ebx + str.cw]
movzx ecx, byte [ecx + str.cw]
movzx edx, byte [edx + str.cw]
shl ecx, 8
shl edx, 0x18
or edx, ebx
movd ebx, xmm1
shr ebx, 0x10
movzx ebx, bl
movzx ebx, byte [ebx + str.cw]
shl ebx, 0x10
or edx, ebx
mov ebx, eax
or edx, ecx
ror ebx, 8
mov dword [esp + 0xc], ebx
mov ebx, edx
mov dword [esp + 4], edx
ror ebx, 8
movd xmm1, dword [esp + 4]
mov dword [esp + 8], ebx
movd xmm6, dword [esp + 0xc]
movd xmm7, dword [esp + 8]
mov dword [esp + 8], eax
movd xmm2, dword [esp + 8]
mov eax, dword [ebp + 0x20]
punpckldq xmm1, xmm7
punpckldq xmm2, xmm6
movaps xmmword [eax], xmm0
mov eax, dword [ebp + 0x24]
punpcklqdq xmm2, xmm1
movdqa xmm1, xmm4
pslldq xmm1, 4
movdqa xmm5, xmm1
pxor xmm1, xmm4
pshufd xmm2, xmm2, 0xaa
pslldq xmm5, 4
pxor xmm1, xmm5
pxor xmm1, xmm2
pxor xmm1, xmm3
movaps xmmword [eax], xmm1
mov ebx, dword [ebp - 4]
leave
ret