Function at 0x408400
Capabilities:
Encode data using xor
Encrypt data using aes
Reference aes constants

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x94
xor eax, eax
cmp dword [0x584b60], 2
push ebx
push esi
push edi
jl 0x408a00
lea edx, [eax + 0x19]
xor ecx, ecx
mov eax, 5
lea esi, [ecx + 7]
movd xmm2, eax
lea edi, [ecx + 8]
mov eax, 6
movaps xmmword [esp + 0x70], xmm2
lea ebx, [ecx + 3]
movd xmm5, eax
mov eax, 1
movaps xmmword [esp + 0x80], xmm5
movd xmm1, eax
movaps xmmword [esp + 0x50], xmm1
nop dword [eax]
movzx eax, word [ecx + 0x55e7b8]
movd xmm0, eax
mov eax, 2
pmovzxbd xmm7, xmm0
movq xmm0, xmm1
movaps xmmword [esp + 0x20], xmm7
movaps xmm4, xmm7
movaps xmm6, xmm7
pslld xmm4, xmm0
movq xmm0, xmm2
movaps xmm3, xmm7
psrld xmm6, xmm0
movq xmm0, qword [0x55ede0]
pxor xmm4, xmm7
movaps xmm1, xmm6
pand xmm1, xmm0
movq xmm0, xmm5
psrld xmm3, xmm0
movq xmm0, qword [0x55edd0]
movaps xmm5, xmm6
movaps xmm2, xmm3
pand xmm2, xmm0
movq xmm0, qword [0x55edc0]
pand xmm3, xmm0
movq xmm0, qword [0x55edd0]
pand xmm5, xmm0
movq xmm0, qword [0x55edc0]
pand xmm6, xmm0
movd xmm0, esi
movups xmmword [esp + 0x40], xmm6
movaps xmm6, xmm7
movaps xmm7, xmm4
psrld xmm6, xmm0
movq xmm0, qword [esp + 0x50]
pslld xmm7, xmm0
movups xmmword [esp + 0x60], xmm1
pxor xmm7, xmmword [esp + 0x20]
movd xmm0, edx
pslld xmm7, xmm0
movq xmm0, qword [0x55ee30]
pmulld xmm1, xmm0
pxor xmm7, xmm1
movq xmm0, xmm0
movaps xmm1, xmm2
pmulld xmm1, xmm0
movq xmm0, qword [0x55ee30]
pxor xmm7, xmm1
movaps xmm1, xmm3
pmulld xmm1, xmm0
pxor xmm7, xmm1
movq xmm0, xmm0
movaps xmm1, xmm5
pmulld xmm1, xmm0
movq xmm0, qword [0x55ee30]
pxor xmm7, xmm1
movaps xmm1, xmmword [esp + 0x40]
pmulld xmm1, xmm0
pxor xmm7, xmm1
movq xmm0, xmm0
movaps xmm1, xmm6
pmulld xmm1, xmm0
movd xmm0, eax
pxor xmm7, xmm1
movaps xmm1, xmmword [esp + 0x60]
pslld xmm4, xmm0
movd xmm0, edi
pxor xmm4, xmmword [esp + 0x20]
pslld xmm4, xmm0
movaps xmm0, xmmword [0x55ee00]
movq xmm0, xmm0
pmulld xmm1, xmm0
pxor xmm4, xmm1
movaps xmm1, xmmword [0x55ee00]
movq xmm0, xmm1
pmulld xmm2, xmm0
movq xmm0, xmm1
pxor xmm4, xmm2
pmulld xmm3, xmm0
movq xmm0, xmm1
pxor xmm4, xmm3
movaps xmm1, xmm5
pmulld xmm1, xmm0
movaps xmm0, xmmword [0x55ee00]
pxor xmm4, xmm1
movaps xmm1, xmmword [esp + 0x40]
movq xmm0, xmm0
pmulld xmm1, xmm0
movaps xmm2, xmmword [esp + 0x20]
pxor xmm4, xmm1
movups xmm3, xmmword [esp + 0x60]
mov eax, 0x10
movd xmm0, ebx
por xmm7, xmm4
movaps xmm4, xmmword [0x55ee10]
movaps xmm1, xmm3
pslld xmm2, xmm0
movd xmm0, eax
mov eax, 2
pxor xmm2, xmmword [esp + 0x20]
pslld xmm2, xmm0
movq xmm0, xmm4
pmulld xmm1, xmm0
pxor xmm2, xmm1
movq xmm0, xmm4
movaps xmm1, xmm5
pmulld xmm1, xmm0
pxor xmm2, xmm1
movq xmm0, xmm4
movups xmm4, xmmword [esp + 0x40]
movaps xmm1, xmm4
pmulld xmm1, xmm0
pxor xmm2, xmm1
movd xmm0, eax
por xmm7, xmm2
mov eax, 0x20
movaps xmm2, xmmword [esp + 0x20]
movaps xmm1, xmm2
pslld xmm1, xmm0
movq xmm0, qword [esp + 0x50]
pxor xmm1, xmm2
pslld xmm1, xmm0
movq xmm0, qword [0x55edf0]
pmulld xmm3, xmm0
pxor xmm1, xmm3
movaps xmm3, xmmword [0x55edf0]
movq xmm0, xmm3
pmulld xmm5, xmm0
pxor xmm1, xmm5
movq xmm0, xmm3
pmulld xmm4, xmm0
pxor xmm1, xmm4
movq xmm0, xmm3
pmulld xmm6, xmm0
pxor xmm1, xmm6
movd xmm0, eax
movzx eax, word [ecx + 0x55e7ba]
pxor xmm1, xmm2
por xmm1, xmm7
por xmm7, xmm2
pmovzxdq xmm1, xmm1
psllq xmm1, xmm0
pmovzxdq xmm0, xmm7
por xmm1, xmm0
movd xmm0, eax
movups xmmword [ecx*8 + 0x589058], xmm1
pmovzxbd xmm1, xmm0
movq xmm0, qword [esp + 0x50]
movaps xmm5, xmm1
pslld xmm5, xmm0
movq xmm0, qword [esp + 0x70]
movaps xmm2, xmm1
psrld xmm2, xmm0
movq xmm0, qword [0x55ede0]
pxor xmm5, xmm1
pand xmm0, xmm2
movups xmmword [esp + 0x60], xmm0
movq xmm0, qword [esp + 0x80]
movups xmmword [esp + 0x40], xmm1
psrld xmm1, xmm0
movaps xmm0, xmmword [0x55edd0]
movq xmm3, xmm0
pand xmm3, xmm1
movaps xmm7, xmmword [0x55edc0]
movq xmm6, xmm0
movq xmm4, xmm7
movd xmm0, esi
pand xmm4, xmm1
pand xmm6, xmm2
movaps xmm1, xmm5
movq xmm7, xmm7
pand xmm7, xmm2
mov eax, 2
movaps xmm2, xmmword [esp + 0x40]
psrld xmm2, xmm0
movq xmm0, qword [esp + 0x50]
pslld xmm1, xmm0
movd xmm0, edx
pxor xmm1, xmmword [esp + 0x40]
pslld xmm1, xmm0
movq xmm0, qword [0x55ee30]
movups xmmword [esp + 0x20], xmm1
movaps xmm1, xmmword [esp + 0x60]
pmulld xmm1, xmm0
movups xmm0, xmmword [esp + 0x20]
movups xmmword [esp + 0x90], xmm2
pxor xmm0, xmm1
movaps xmm1, xmm3
movups xmmword [esp + 0x20], xmm0
movq xmm0, qword [0x55ee30]
pmulld xmm1, xmm0
movups xmm0, xmmword [esp + 0x20]
pxor xmm0, xmm1
movaps xmm1, xmm4
movups xmmword [esp + 0x20], xmm0
movq xmm0, qword [0x55ee30]
pmulld xmm1, xmm0
movups xmm0, xmmword [esp + 0x20]
pxor xmm0, xmm1
movaps xmm1, xmm6
movups xmmword [esp + 0x20], xmm0
movq xmm0, qword [0x55ee30]
pmulld xmm1, xmm0
movups xmm0, xmmword [esp + 0x20]
pxor xmm0, xmm1
movaps xmm1, xmm7
movups xmmword [esp + 0x20], xmm0
movq xmm0, qword [0x55ee30]
pmulld xmm1, xmm0
movups xmm0, xmmword [esp + 0x20]
pxor xmm0, xmm1
movaps xmm1, xmm2
movaps xmm2, xmmword [0x55ee00]
movups xmmword [esp + 0x20], xmm0
movq xmm0, qword [0x55ee30]
pmulld xmm1, xmm0
movups xmm0, xmmword [esp + 0x20]
pxor xmm0, xmm1
movaps xmm1, xmmword [esp + 0x60]
movups xmmword [esp + 0x20], xmm0
movd xmm0, eax
pslld xmm5, xmm0
movd xmm0, edi
pxor xmm5, xmmword [esp + 0x40]
pslld xmm5, xmm0
movq xmm0, xmm2
pmulld xmm1, xmm0
pxor xmm5, xmm1
movq xmm0, xmm2
pmulld xmm3, xmm0
pxor xmm5, xmm3
movq xmm0, xmm2
movups xmm3, xmmword [esp + 0x20]
pmulld xmm4, xmm0
movq xmm0, xmm2
movaps xmm1, xmm6
pmulld xmm1, xmm0
pxor xmm5, xmm4
movq xmm0, xmm2
pxor xmm5, xmm1
movaps xmm1, xmm7
pmulld xmm1, xmm0
pxor xmm5, xmm1
por xmm3, xmm5
movups xmm5, xmmword [esp + 0x40]
mov eax, 0x10
movups xmm4, xmmword [esp + 0x60]
movaps xmm2, xmm5
movd xmm0, ebx
pslld xmm2, xmm0
movd xmm0, eax
movaps xmm1, xmm4
pxor xmm2, xmm5
mov eax, 2
pslld xmm2, xmm0
movq xmm0, qword [0x55ee10]
pmulld xmm1, xmm0
pxor xmm2, xmm1
movq xmm0, xmm0
movaps xmm1, xmm6
pmulld xmm1, xmm0
movq xmm0, qword [0x55ee10]
pxor xmm2, xmm1
movaps xmm1, xmm7
pmulld xmm1, xmm0
pxor xmm2, xmm1
movd xmm0, eax
movaps xmm1, xmm5
por xmm3, xmm2
movaps xmm2, xmmword [0x55edf0]
mov eax, 0x20
pslld xmm1, xmm0
movq xmm0, qword [esp + 0x50]
pxor xmm1, xmm5
pslld xmm1, xmm0
movq xmm0, xmm2
pmulld xmm4, xmm0
movq xmm0, xmm2
pxor xmm1, xmm4
pmulld xmm6, xmm0
movq xmm0, xmm2
pxor xmm1, xmm6
pmulld xmm7, xmm0
movq xmm0, xmm2
pxor xmm1, xmm7
movups xmm2, xmmword [esp + 0x90]
pmulld xmm2, xmm0
pxor xmm1, xmm2
movd xmm0, eax
movaps xmm2, xmmword [esp + 0x70]
pxor xmm1, xmm5
por xmm1, xmm3
por xmm3, xmm5
movaps xmm5, xmmword [esp + 0x80]
pmovzxdq xmm1, xmm1
psllq xmm1, xmm0
pmovzxdq xmm0, xmm3
por xmm1, xmm0
movups xmmword [ecx*8 + 0x589068], xmm1
add ecx, 4
movaps xmm1, xmmword [esp + 0x50]
cmp ecx, 0x100
jl 0x408460
mov byte [0x589859], 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
movzx esi, byte [eax + 0x55e7b8]
mov ebx, esi
mov dword [esp + 0x14], esi
shr ebx, 5
mov edi, esi
mov ecx, ebx
shr edi, 6
and ecx, 4
lea edx, [esi + esi]
mov dword [esp + 0x1c], ecx
xor edx, esi
mov ecx, ebx
mov esi, edi
and ecx, 2
and ebx, 1
mov dword [esp + 0x3c], ecx
and edi, 1
lea ecx, [edx + edx]
mov dword [esp + 0x18], ebx
xor ecx, dword [esp + 0x14]
and esi, 2
mov ebx, dword [esp + 0x14]
shl ecx, 0x19
mov dword [esp + 0x10], ecx
shr ebx, 7
imul ecx, ebx, 0x1b000000
shl edx, 2
xor edx, dword [esp + 0x14]
shl edx, 8
xor dword [esp + 0x10], ecx
imul ecx, dword [esp + 0x18], 0x1b000000
xor dword [esp + 0x10], ecx
imul ecx, dword [esp + 0x3c], 0x1b000000
xor dword [esp + 0x10], ecx
imul ecx, edi, 0x1b000000
xor dword [esp + 0x10], ecx
imul ecx, esi, 0x1b000000
xor dword [esp + 0x10], ecx
imul ecx, dword [esp + 0x1c], 0x1b000000
xor dword [esp + 0x10], ecx
imul ecx, dword [esp + 0x18], 0x11b00
xor edx, ecx
imul ecx, dword [esp + 0x3c], 0x11b00
xor edx, ecx
imul ecx, edi, 0x11b00
mov edi, dword [esp + 0x10]
xor edx, ecx
imul ecx, esi, 0x11b00
xor edx, ecx
imul ecx, dword [esp + 0x1c], 0x11b00
xor edx, ecx
mov ecx, dword [esp + 0x14]
or edi, edx
lea edx, [ecx*8]
xor edx, ecx
imul ecx, dword [esp + 0x18], 0x11b0000
shl edx, 0x10
xor edx, ecx
imul ecx, dword [esp + 0x3c], 0x11b0000
xor edx, ecx
imul ecx, dword [esp + 0x1c], 0x11b0000
xor edx, ecx
mov ecx, dword [esp + 0x14]
or edi, edx
lea edx, [ecx*4]
xor edx, ecx
imul ecx, ebx, 0x11b
mov ebx, dword [esp + 0x14]
add edx, edx
xor edx, ecx
imul ecx, dword [esp + 0x18], 0x11b
xor edx, ecx
imul ecx, dword [esp + 0x3c], 0x11b
xor edx, ecx
imul ecx, dword [esp + 0x1c], 0x11b
xor edx, ecx
xor ecx, ecx
xor edx, ebx
or ebx, edi
or edx, edi
or ecx, ebx
mov dword [eax*8 + 0x589058], ecx
mov dword [eax*8 + 0x58905c], edx
inc eax
cmp eax, 0x100
jl 0x408a00
pop edi
pop esi
mov byte [0x589859], 1
pop ebx
mov esp, ebp
pop ebp
ret