Function at 0x4ade90
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [esp + 4]
sub esp, 0xc
cmp dword [esp + 0x18], 0
xorps xmm0, xmm0
push ebx
push esi
movups xmmword [eax], xmm0
push edi
movups xmmword [eax + 0x10], xmm0
jbe 0x4ae099
lea ecx, [eax + 0x10]
mov eax, dword [esp + 0x24]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x20]
push ebp
nop
movups xmm1, xmmword [ecx]
movd edx, xmm1
movaps xmm0, xmm1
psrldq xmm0, 4
mov ecx, edx
shr ecx, 6
xor ecx, edx
and ecx, 0xcc00cc
mov esi, ecx
shl esi, 6
xor esi, ecx
xor esi, edx
mov ecx, esi
shr ecx, 0xc
xor ecx, esi
and ecx, 0xf0f0
mov edx, ecx
shl edx, 0xc
xor edx, ecx
xor edx, esi
mov dword [esp + 0x10], edx
movd edx, xmm0
movaps xmm0, xmm1
psrldq xmm0, 8
psrldq xmm1, 0xc
mov ecx, edx
shr ecx, 6
xor ecx, edx
and ecx, 0xcc00cc
mov esi, ecx
shl esi, 6
xor esi, ecx
xor esi, edx
mov ecx, esi
shr ecx, 0xc
xor ecx, esi
and ecx, 0xf0f0
mov edx, ecx
shl edx, 0xc
xor edx, ecx
movd ecx, xmm0
xor edx, esi
mov dword [esp + 0x28], edx
mov edx, ecx
shr edx, 6
xor edx, ecx
and edx, 0xcc00cc
mov esi, edx
shl esi, 6
xor esi, ecx
xor esi, edx
mov ecx, esi
shr ecx, 0xc
xor ecx, esi
and ecx, 0xf0f0
mov edx, ecx
shl edx, 0xc
xor edx, ecx
movd ecx, xmm1
xor edx, esi
mov dword [esp + 0x14], edx
mov edx, ecx
shr edx, 6
xor edx, ecx
and edx, 0xcc00cc
mov esi, edx
shl esi, 6
xor esi, ecx
xor esi, edx
mov edx, dword [esp + 0x14]
mov ecx, esi
shr ecx, 0xc
xor ecx, esi
and ecx, 0xf0f0
mov ebx, ecx
shl ebx, 0xc
xor ebx, ecx
movzx ecx, dl
xor ebx, esi
movzx edi, bl
shl edi, 8
or edi, ecx
mov ebp, dword [esp + 0x10]
mov ecx, dword [esp + 0x28]
movzx ecx, cl
shl edi, 8
or edi, ecx
shr ebp, 8
mov ecx, dword [esp + 0x10]
movzx ecx, cl
shl edi, 8
or edi, ecx
mov ecx, ebx
shr ecx, 8
movzx esi, cl
mov ecx, edx
shr ecx, 8
movzx ecx, cl
shl esi, 8
or esi, ecx
mov ecx, dword [esp + 0x28]
shr ecx, 8
movzx ecx, cl
shl esi, 8
or esi, ecx
mov ecx, dword [esp + 0x10]
shr ecx, 8
movzx ecx, cl
shl esi, 8
or esi, ecx
mov ecx, ebx
shr ecx, 0x10
and ebx, 0xff000000
movzx edx, cl
mov ecx, dword [esp + 0x14]
shr ecx, 0x10
movzx ecx, cl
shl edx, 8
or edx, ecx
mov ecx, dword [esp + 0x28]
shr ecx, 0x10
movzx ecx, cl
shl edx, 8
or edx, ecx
mov ecx, dword [esp + 0x10]
shr ecx, 0x10
movzx ecx, cl
shl edx, 8
or edx, ecx
mov ecx, dword [esp + 0x28]
and ecx, 0xff00ffff
or ecx, ebp
shr ecx, 8
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x14]
and ecx, 0xff0000ff
or dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x28]
shr ecx, 8
or ecx, ebx
mov ebx, dword [esp + 0x18]
mov dword [ebx + 8], ecx
mov ecx, dword [esp + 0x24]
mov dword [ebx - 0x10], edi
add ecx, 0x10
mov dword [ebx - 8], esi
mov dword [ebx], edx
add ebx, 4
mov dword [esp + 0x24], ecx
mov dword [esp + 0x18], ebx
sub eax, 1
jne 0x4adec0
mov eax, dword [esp + 0x20]
pop ebp
mov esi, dword [eax]
lea ebx, [eax + 0x10]
mov edi, dword [eax + 4]
shr esi, 1
xor esi, edi
and esi, 0x55555555
xor edi, esi
mov dword [eax + 4], edi
mov edi, dword [eax + 0xc]
lea ecx, [esi + esi]
mov esi, dword [eax + 8]
xor dword [eax], ecx
shr esi, 1
xor esi, edi
and esi, 0x55555555
xor edi, esi
mov dword [eax + 0xc], edi
mov edi, dword [eax + 0x14]
lea ecx, [esi + esi]
mov esi, dword [ebx]
xor dword [eax + 8], ecx
shr esi, 1
xor esi, edi
and esi, 0x55555555
xor edi, esi
mov dword [eax + 0x14], edi
mov edi, dword [eax + 0x1c]
lea ecx, [esi + esi]
mov esi, dword [eax + 0x18]
xor dword [ebx], ecx
shr esi, 1
xor esi, edi
and esi, 0x55555555
lea ecx, [esi + esi]
xor dword [eax + 0x18], ecx
xor edi, esi
mov dword [eax + 0x1c], edi
pop edi
pop esi
pop ebx
add esp, 0xc
ret