Function at 0x407474
Capabilities:
Encode data using xor

Disassembly:
push ebx
push esi
push edi
push ebp
add esp, 0xfffffff0
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
mov dword [esp], eax
mov edi, dword [esp + 4]
mov edi, dword [edi]
mov ebp, dword [esp + 8]
mov ebp, dword [ebp]
mov eax, edi
and eax, 0xf0f0f0f
mov edx, ebp
shr edx, 4
and edx, 0xf0f0f0f
xor eax, edx
xor edi, eax
shl eax, 4
xor ebp, eax
mov eax, ebp
and eax, 0xffff
mov edx, edi
shr edx, 0x10
xor eax, edx
mov edx, eax
shl edx, 0x10
xor edi, edx
xor ebp, eax
mov eax, edi
and eax, 0x33333333
mov edx, ebp
shr edx, 2
and edx, 0x33333333
xor eax, edx
xor edi, eax
shl eax, 2
xor ebp, eax
mov eax, ebp
and eax, 0xff00ff
mov edx, edi
shr edx, 8
and edx, 0xff00ff
xor eax, edx
mov edx, eax
shl edx, 8
xor edi, edx
xor ebp, eax
mov eax, edi
and eax, 0x55555555
mov edx, ebp
shr edx, 1
and edx, 0x55555555
xor eax, edx
xor edi, eax
add eax, eax
xor ebp, eax
mov eax, edi
add eax, eax
shr edi, 0x1f
or eax, edi
mov edi, eax
mov eax, ebp
add eax, eax
shr ebp, 0x1f
or eax, ebp
mov ebp, eax
mov byte [esp + 0xc], 8
mov edx, dword [esp]
mov eax, dword [edx]
xor eax, edi
mov esi, dword [edx + 4]
xor esi, edi
mov ecx, esi
shr ecx, 4
shl esi, 0x1c
or ecx, esi
mov esi, ecx
mov ecx, eax
shr ecx, 8
and ecx, 0x3f
mov ecx, dword [ecx*4 + 0x40f31c]
mov ebx, esi
shr ebx, 8
and ebx, 0x3f
or ecx, dword [ebx*4 + 0x40f41c]
mov ebx, eax
shr ebx, 0x10
and ebx, 0x3f
or ecx, dword [ebx*4 + 0x40f51c]
mov ebx, esi
shr ebx, 0x10
and ebx, 0x3f
or ecx, dword [ebx*4 + 0x40f61c]
mov ebx, eax
shr ebx, 0x18
and ebx, 0x3f
or ecx, dword [ebx*4 + 0x40f71c]
mov ebx, esi
shr ebx, 0x18
and ebx, 0x3f
or ecx, dword [ebx*4 + 0x40f81c]
and esi, 0x3f
or ecx, dword [esi*4 + 0x40f21c]
and eax, 0x3f
or ecx, dword [eax*4 + 0x40f11c]
xor ebp, ecx
mov eax, dword [edx + 8]
xor eax, ebp
mov esi, dword [edx + 0xc]
xor esi, ebp
mov ecx, esi
shr ecx, 4
shl esi, 0x1c
or ecx, esi
mov esi, ecx
mov ecx, eax
shr ecx, 8
and ecx, 0x3f
mov ecx, dword [ecx*4 + 0x40f31c]
mov ebx, esi
shr ebx, 8
and ebx, 0x3f
or ecx, dword [ebx*4 + 0x40f41c]
mov ebx, eax
shr ebx, 0x10
and ebx, 0x3f
or ecx, dword [ebx*4 + 0x40f51c]
mov ebx, esi
shr ebx, 0x10
and ebx, 0x3f
or ecx, dword [ebx*4 + 0x40f61c]
mov ebx, eax
shr ebx, 0x18
and ebx, 0x3f
or ecx, dword [ebx*4 + 0x40f71c]
mov ebx, esi
shr ebx, 0x18
and ebx, 0x3f
or ecx, dword [ebx*4 + 0x40f81c]
and esi, 0x3f
or ecx, dword [esi*4 + 0x40f21c]
and eax, 0x3f
or ecx, dword [eax*4 + 0x40f11c]
xor edi, ecx
add edx, 0x10
dec byte [esp + 0xc]
jne 0x407534
mov eax, ebp
shr eax, 1
shl ebp, 0x1f
or eax, ebp
mov ebp, eax
mov eax, edi
shr eax, 1
shl edi, 0x1f
or eax, edi
mov edi, eax
mov eax, ebp
and eax, 0x55555555
mov edx, edi
shr edx, 1
and edx, 0x55555555
xor eax, edx
xor ebp, eax
add eax, eax
xor edi, eax
mov eax, edi
and eax, 0xff00ff
mov edx, ebp
shr edx, 8
and edx, 0xff00ff
xor eax, edx
mov edx, eax
shl edx, 8
xor ebp, edx
xor edi, eax
mov eax, ebp
and eax, 0x33333333
mov edx, edi
shr edx, 2
and edx, 0x33333333
xor eax, edx
xor ebp, eax
shl eax, 2
xor edi, eax
mov eax, edi
and eax, 0xffff
mov edx, ebp
shr edx, 0x10
xor eax, edx
xor edi, eax
shl eax, 0x10
xor ebp, eax
mov eax, ebp
and eax, 0xf0f0f0f
mov edx, edi
shr edx, 4
and edx, 0xf0f0f0f
xor eax, edx
xor ebp, eax
mov edx, dword [esp + 4]
mov dword [edx], ebp
shl eax, 4
xor edi, eax
mov eax, dword [esp + 8]
mov dword [eax], edi
add esp, 0x10
pop ebp
pop edi
pop esi
pop ebx
ret