Function at 0x4a1020
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 [0x578e6c], 2
push ebx
push esi
push edi
jl 0x4a15d0
mov eax, 1
xor ecx, ecx
movd xmm1, eax
lea edx, [ecx + 0x19]
mov eax, 5
movaps xmmword [esp + 0x50], xmm1
lea esi, [ecx + 7]
lea edi, [ecx + 2]
lea ebx, [ecx + 8]
movd xmm2, eax
mov eax, 6
movaps xmmword [esp + 0x70], xmm2
movd xmm5, eax
movaps xmmword [esp + 0x80], xmm5
nop dword [eax]
movzx eax, word [ecx + 0x524378]
movd xmm0, eax
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 [0x523560]
xorps xmm4, xmm7
movaps xmm1, xmm6
andps xmm1, xmm0
movq xmm0, xmm5
psrld xmm3, xmm0
movq xmm0, qword [0x523550]
movaps xmm5, xmm6
movaps xmm2, xmm3
andps xmm2, xmm0
movq xmm0, qword [0x520b80]
andps xmm3, xmm0
movq xmm0, qword [0x523550]
andps xmm5, xmm0
movq xmm0, qword [0x520b80]
andps xmm6, xmm0
movd xmm0, esi
movups xmmword [esp + 0x60], xmm1
movups xmmword [esp + 0x40], xmm6
movaps xmm6, xmm7
movaps xmm7, xmm4
psrld xmm6, xmm0
movq xmm0, qword [esp + 0x50]
pslld xmm7, xmm0
movd xmm0, edx
xorps xmm7, xmmword [esp + 0x20]
pslld xmm7, xmm0
movq xmm0, qword [0x5235b0]
pmulld xmm1, xmm0
xorps xmm7, xmm1
movq xmm0, xmm0
movaps xmm1, xmm2
pmulld xmm1, xmm0
movq xmm0, qword [0x5235b0]
xorps xmm7, xmm1
movaps xmm1, xmm3
pmulld xmm1, xmm0
xorps xmm7, xmm1
movq xmm0, xmm0
movaps xmm1, xmm5
pmulld xmm1, xmm0
movq xmm0, qword [0x5235b0]
xorps xmm7, xmm1
movaps xmm1, xmmword [esp + 0x40]
pmulld xmm1, xmm0
xorps xmm7, xmm1
movq xmm0, xmm0
movaps xmm1, xmm6
pmulld xmm1, xmm0
movd xmm0, edi
xorps xmm7, xmm1
movaps xmm1, xmmword [esp + 0x60]
pslld xmm4, xmm0
movd xmm0, ebx
xorps xmm4, xmmword [esp + 0x20]
pslld xmm4, xmm0
movaps xmm0, xmmword [0x523580]
movq xmm0, xmm0
pmulld xmm1, xmm0
xorps xmm4, xmm1
movaps xmm1, xmmword [0x523580]
movq xmm0, xmm1
pmulld xmm2, xmm0
movq xmm0, xmm1
xorps xmm4, xmm2
pmulld xmm3, xmm0
movq xmm0, xmm1
xorps xmm4, xmm3
movaps xmm1, xmm5
pmulld xmm1, xmm0
movaps xmm0, xmmword [0x523580]
xorps xmm4, xmm1
movaps xmm1, xmmword [esp + 0x40]
movq xmm0, xmm0
pmulld xmm1, xmm0
movaps xmm2, xmmword [esp + 0x20]
xorps xmm4, xmm1
movups xmm3, xmmword [esp + 0x60]
mov eax, 3
orps xmm7, xmm4
movaps xmm4, xmmword [0x523590]
movaps xmm1, xmm3
movd xmm0, eax
mov eax, 0x10
pslld xmm2, xmm0
xorps xmm2, xmmword [esp + 0x20]
movd xmm0, eax
mov eax, 0x20
pslld xmm2, xmm0
movq xmm0, xmm4
pmulld xmm1, xmm0
xorps xmm2, xmm1
movq xmm0, xmm4
movaps xmm1, xmm5
pmulld xmm1, xmm0
xorps xmm2, xmm1
movq xmm0, xmm4
movups xmm4, xmmword [esp + 0x40]
movaps xmm1, xmm4
pmulld xmm1, xmm0
xorps xmm2, xmm1
movd xmm0, edi
orps xmm7, xmm2
movaps xmm2, xmmword [esp + 0x20]
movaps xmm1, xmm2
pslld xmm1, xmm0
movq xmm0, qword [esp + 0x50]
xorps xmm1, xmm2
pslld xmm1, xmm0
movq xmm0, qword [0x523570]
pmulld xmm3, xmm0
xorps xmm1, xmm3
movaps xmm3, xmmword [0x523570]
movq xmm0, xmm3
pmulld xmm5, xmm0
xorps xmm1, xmm5
movq xmm0, xmm3
pmulld xmm4, xmm0
xorps xmm1, xmm4
movq xmm0, xmm3
pmulld xmm6, xmm0
xorps xmm1, xmm6
movd xmm0, eax
movzx eax, word [ecx + 0x52437a]
xorps xmm1, xmm2
orps xmm1, xmm7
orps xmm7, xmm2
pmovzxdq xmm1, xmm1
psllq xmm1, xmm0
pmovzxdq xmm0, xmm7
orps xmm1, xmm0
movaps xmm7, xmmword [0x520b80]
movd xmm0, eax
movups xmmword [ecx*8 + 0x576d00], 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 [0x523560]
xorps xmm5, xmm1
andps xmm0, xmm2
movups xmmword [esp + 0x60], xmm0
movq xmm0, qword [esp + 0x80]
movups xmmword [esp + 0x40], xmm1
psrld xmm1, xmm0
movaps xmm0, xmmword [0x523550]
movq xmm3, xmm0
andps xmm3, xmm1
movq xmm6, xmm0
movq xmm4, xmm7
andps xmm4, xmm1
movd xmm0, esi
andps xmm6, xmm2
movaps xmm1, xmm5
movq xmm7, xmm7
andps xmm7, xmm2
movaps xmm2, xmmword [esp + 0x40]
psrld xmm2, xmm0
movq xmm0, qword [esp + 0x50]
pslld xmm1, xmm0
movd xmm0, edx
xorps xmm1, xmmword [esp + 0x40]
pslld xmm1, xmm0
movq xmm0, qword [0x5235b0]
movups xmmword [esp + 0x20], xmm1
movaps xmm1, xmmword [esp + 0x60]
pmulld xmm1, xmm0
movups xmm0, xmmword [esp + 0x20]
movups xmmword [esp + 0x90], xmm2
xorps xmm0, xmm1
movaps xmm1, xmm3
movups xmmword [esp + 0x20], xmm0
movq xmm0, qword [0x5235b0]
pmulld xmm1, xmm0
movups xmm0, xmmword [esp + 0x20]
xorps xmm0, xmm1
movaps xmm1, xmm4
movups xmmword [esp + 0x20], xmm0
movq xmm0, qword [0x5235b0]
pmulld xmm1, xmm0
movups xmm0, xmmword [esp + 0x20]
xorps xmm0, xmm1
movaps xmm1, xmm6
movups xmmword [esp + 0x20], xmm0
movq xmm0, qword [0x5235b0]
pmulld xmm1, xmm0
movups xmm0, xmmword [esp + 0x20]
xorps xmm0, xmm1
movaps xmm1, xmm7
movups xmmword [esp + 0x20], xmm0
movq xmm0, qword [0x5235b0]
pmulld xmm1, xmm0
movups xmm0, xmmword [esp + 0x20]
xorps xmm0, xmm1
movaps xmm1, xmm2
movaps xmm2, xmmword [0x523580]
movups xmmword [esp + 0x20], xmm0
movq xmm0, qword [0x5235b0]
pmulld xmm1, xmm0
movups xmm0, xmmword [esp + 0x20]
xorps xmm0, xmm1
movaps xmm1, xmmword [esp + 0x60]
movups xmmword [esp + 0x20], xmm0
movd xmm0, edi
pslld xmm5, xmm0
movd xmm0, ebx
xorps xmm5, xmmword [esp + 0x40]
pslld xmm5, xmm0
movq xmm0, xmm2
pmulld xmm1, xmm0
xorps xmm5, xmm1
movq xmm0, xmm2
pmulld xmm3, xmm0
xorps xmm5, xmm3
movq xmm0, xmm2
movups xmm3, xmmword [esp + 0x20]
pmulld xmm4, xmm0
movq xmm0, xmm2
xorps xmm5, xmm4
movaps xmm1, xmm6
pmulld xmm1, xmm0
xorps xmm5, xmm1
movq xmm0, xmm2
movaps xmm1, xmm7
pmulld xmm1, xmm0
xorps xmm5, xmm1
orps xmm3, xmm5
movups xmm5, xmmword [esp + 0x40]
movaps xmm2, xmm5
movups xmm4, xmmword [esp + 0x60]
mov eax, 3
movaps xmm1, xmm4
movd xmm0, eax
mov eax, 0x10
pslld xmm2, xmm0
xorps xmm2, xmm5
movd xmm0, eax
mov eax, 0x20
pslld xmm2, xmm0
movq xmm0, qword [0x523590]
pmulld xmm1, xmm0
xorps xmm2, xmm1
movq xmm0, xmm0
movaps xmm1, xmm6
pmulld xmm1, xmm0
movq xmm0, qword [0x523590]
xorps xmm2, xmm1
movaps xmm1, xmm7
pmulld xmm1, xmm0
xorps xmm2, xmm1
movd xmm0, edi
movaps xmm1, xmm5
orps xmm3, xmm2
movaps xmm2, xmmword [0x523570]
pslld xmm1, xmm0
movq xmm0, qword [esp + 0x50]
xorps xmm1, xmm5
pslld xmm1, xmm0
movq xmm0, xmm2
pmulld xmm4, xmm0
movq xmm0, xmm2
xorps xmm1, xmm4
pmulld xmm6, xmm0
movq xmm0, xmm2
xorps xmm1, xmm6
pmulld xmm7, xmm0
movq xmm0, xmm2
xorps xmm1, xmm7
movups xmm2, xmmword [esp + 0x90]
pmulld xmm2, xmm0
xorps xmm1, xmm2
movd xmm0, eax
movaps xmm2, xmmword [esp + 0x70]
xorps xmm1, xmm5
orps xmm1, xmm3
orps xmm3, xmm5
movaps xmm5, xmmword [esp + 0x80]
pmovzxdq xmm1, xmm1
psllq xmm1, xmm0
pmovzxdq xmm0, xmm3
orps xmm1, xmm0
movups xmmword [ecx*8 + 0x576d10], xmm1
add ecx, 4
movaps xmm1, xmmword [esp + 0x50]
cmp ecx, 0x100
jl 0x4a1080
mov byte [0x577501], 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
movzx esi, byte [eax + 0x524378]
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 + 0x576d00], ecx
mov dword [eax*8 + 0x576d04], edx
inc eax
cmp eax, 0x100
jl 0x4a15d0
pop edi
pop esi
mov byte [0x577501], 1
pop ebx
mov esp, ebp
pop ebp
ret