Function at 0x4d5237
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
mov edx, dword [ebp + 0xc]
push ebx
mov ebx, dword [ebp + 8]
push esi
and dword [ebp - 4], 0
push edi
movzx eax, byte [ebx + 0xf]
mov edi, eax
and eax, 0xf
add eax, eax
and edi, 0xfffffff0
push 0xe
mov ecx, dword [edx + eax*8]
mov esi, dword [edx + eax*8 + 8]
mov dword [ebp - 0x10], ecx
mov ecx, dword [edx + eax*8 + 4]
mov edx, dword [edx + eax*8 + 0xc]
mov eax, esi
and eax, 0xf
mov dword [ebp - 0x18], edx
shrd esi, edx, 4
shr edx, 4
mov eax, dword [eax*4 + 0x5f0a90]
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x10]
shrd eax, ecx, 4
xor dword [ebp - 4], eax
mov eax, dword [ebp - 4]
shr ecx, 4
xor dword [ebp - 8], ecx
mov ecx, dword [ebp + 0xc]
xor eax, dword [edi + ecx]
mov dword [ebp - 4], eax
mov eax, dword [ebp - 8]
xor eax, dword [edi + ecx + 4]
xor ecx, ecx
mov dword [ebp - 8], eax
or ecx, esi
mov eax, dword [ebp - 0x10]
shl eax, 0x1c
or eax, edx
mov edx, dword [ebp + 0xc]
pop esi
mov dword [ebp - 0x14], esi
xor ecx, dword [edi + edx + 8]
xor eax, dword [edi + edx + 0xc]
mov dword [ebp - 0x10], eax
mov eax, ecx
mov dword [ebp - 0xc], ecx
movzx ecx, byte [esi + ebx]
and eax, 0xf
mov ebx, dword [ebp - 4]
mov edi, ecx
and ecx, 0xf
xor esi, esi
shl ecx, 4
and edi, 0xfffffff0
mov edx, dword [eax*4 + 0x5f0a90]
mov eax, ebx
shl ebx, 0x1c
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp - 8]
shrd eax, ecx, 4
mov dword [ebp - 4], ebx
mov ebx, dword [ebp - 0x10]
xor esi, eax
shrd dword [ebp - 0xc], ebx, 4
mov eax, dword [ebp + 0xc]
shr ecx, 4
xor edx, ecx
mov dword [ebp - 8], ecx
mov ecx, dword [ebp - 0x18]
shr ebx, 4
or dword [ebp - 4], ebx
mov ebx, dword [ebp + 0xc]
xor edx, dword [ecx + eax + 4]
xor esi, dword [ecx + eax]
xor eax, eax
or eax, dword [ebp - 0xc]
xor eax, dword [ecx + ebx + 8]
mov ebx, dword [ebp - 4]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp + 0xc]
xor ebx, dword [ecx + eax + 0xc]
mov eax, dword [ebp - 0x18]
mov ecx, ebx
mov dword [ebp - 0xc], eax
xor ebx, ebx
and eax, 0xf
mov dword [ebp - 0x18], ecx
mov eax, dword [eax*4 + 0x5f0a90]
mov dword [ebp - 8], eax
mov eax, esi
shrd eax, edx, 4
shl esi, 0x1c
xor ebx, eax
shr edx, 4
mov eax, dword [ebp - 8]
xor eax, edx
mov dword [ebp - 4], ebx
mov edx, ebx
mov ebx, dword [ebp + 0xc]
xor eax, dword [edi + ebx + 4]
xor edx, dword [edi + ebx]
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0xc]
shrd eax, ecx, 4
mov dword [ebp - 0x1c], edx
xor eax, dword [edi + ebx + 8]
shr ecx, 4
or ecx, esi
mov dword [ebp - 4], edx
xor ecx, dword [edi + ebx + 0xc]
mov esi, dword [ebp - 0x14]
mov ebx, dword [ebp + 8]
sub esi, 1
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x14], esi
jns 0x4d52ce
mov esi, dword [ebp - 8]
mov eax, esi
shr eax, 0x18
mov byte [ebx], al
mov eax, esi
shr eax, 0x10
mov byte [ebx + 1], al
mov eax, esi
shr eax, 8
mov byte [ebx + 2], al
mov eax, esi
mov byte [ebx + 3], al
mov eax, edx
shr eax, 0x18
mov byte [ebx + 4], al
mov eax, edx
shr eax, 0x10
mov byte [ebx + 5], al
mov eax, edx
shr eax, 8
mov byte [ebx + 6], al
mov eax, ecx
shr eax, 0x18
mov byte [ebx + 8], al
mov eax, ecx
shr eax, 0x10
mov byte [ebx + 9], al
mov eax, ecx
shr eax, 8
mov byte [ebx + 0xa], al
mov byte [ebx + 0xb], cl
mov ecx, dword [ebp - 0xc]
mov eax, ecx
shr eax, 0x18
mov byte [ebx + 0xc], al
mov eax, ecx
shr eax, 0x10
mov byte [ebx + 0xd], al
mov eax, ecx
pop edi
shr eax, 8
pop esi
mov byte [ebx + 7], dl
mov byte [ebx + 0xe], al
mov byte [ebx + 0xf], cl
pop ebx
leave
ret