Function at 0x549480
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [esp + 4]
sub esp, 0xc
xorps xmm0, xmm0
push esi
push edi
xor edi, edi
movups xmmword [eax], xmm0
movups xmmword [eax + 0x10], xmm0
cmp dword [esp + 0x20], edi
jbe 0x54968c
lea ecx, [eax + 0x10]
mov eax, dword [esp + 0x20]
push ebx
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x20]
push ebp
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 0x5494b0
mov eax, dword [esp + 0x20]
pop ebp
pop ebx
mov edi, dword [eax]
mov esi, dword [eax + 4]
mov edx, edi
shr edx, 1
xor edx, esi
and edx, 0x55555555
xor esi, edx
mov dword [eax + 4], esi
mov esi, dword [eax + 8]
shr esi, 1
lea ecx, [edx + edx]
xor ecx, edi
mov edi, dword [eax + 0xc]
xor esi, edi
mov dword [eax], ecx
and esi, 0x55555555
xor edi, esi
mov dword [eax + 0xc], edi
mov edi, dword [eax + 0x14]
lea ecx, [esi + esi]
mov esi, dword [eax + 0x10]
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 [eax + 0x10], 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
add esp, 0xc
ret