Function at 0x4c4150
Capabilities:
Encode data using xor
Hash data using murmur2

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x1c
mov edi, dword [ebp + 0xc]
movzx edx, byte [edi + 0xb]
test dl, dl
mov dword [ebp - 0x14], ecx
jns 0x4c416e
mov ecx, dword [edi + 4]
mov edi, dword [edi]
jmp 0x4c4172
mov eax, edx
mov ecx, edx
mov eax, ecx
mov edx, edi
mov ebx, ecx
cmp ecx, 4
mov dword [ebp - 0x24], ecx
jb 0x4c41fd
lea ebx, [ecx - 4]
test bl, 4
jne 0x4c41aa
imul eax, dword [edi], 0x5bd1e995
mov edx, eax
shr edx, 0x18
xor edx, eax
imul edx, edx, 0x5bd1e995
imul eax, ecx, 0x5bd1e995
xor eax, edx
lea edx, [edi + 4]
mov esi, ebx
jmp 0x4c41b0
mov esi, ecx
mov edx, edi
mov eax, ecx
cmp ebx, 4
jb 0x4c41fd
mov ecx, edi
imul edi, dword [edx], 0x5bd1e995
mov ebx, edi
shr ebx, 0x18
xor ebx, edi
imul edi, ebx, 0x5bd1e995
imul eax, eax, 0x5bd1e995
xor eax, edi
imul edi, dword [edx + 4], 0x5bd1e995
mov ebx, edi
shr ebx, 0x18
xor ebx, edi
imul edi, ebx, 0x5bd1e995
imul eax, eax, 0x5bd1e995
xor eax, edi
add edx, 8
add esi, 0xfffffff8
cmp esi, 3
ja 0x4c41b7
mov ebx, esi
mov edi, ecx
cmp ebx, 1
je 0x4c4211
cmp ebx, 2
je 0x4c421f
cmp ebx, 3
je 0x4c4216
mov ecx, dword [ebp - 0x14]
jmp 0x4c4236
mov ecx, dword [ebp - 0x14]
jmp 0x4c422b
movzx esi, byte [edx + 2]
shl esi, 0x10
xor eax, esi
mov ecx, dword [ebp - 0x14]
movzx esi, byte [edx + 1]
shl esi, 8
xor eax, esi
movzx edx, byte [edx]
xor edx, eax
imul eax, edx, 0x5bd1e995
mov edx, dword [ecx + 4]
xor esi, esi
test edx, edx
jne 0x4c424e
mov eax, dword [ebp + 8]
mov dword [eax], esi
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret 8
mov dword [ebp - 0x20], edi
mov edi, edx
mov edx, eax
shr edx, 0xd
xor edx, eax
imul eax, edx, 0x5bd1e995
mov edx, eax
shr edx, 0xf
xor edx, eax
mov dword [ebp - 0x1c], edx
mov eax, edi
shr eax, 1
and eax, 0x55555555
mov dword [ebp - 0x10], edi
mov edx, edi
sub edx, eax
mov eax, 0x33333333
mov edi, edx
and edi, eax
shr edx, 2
and edx, eax
add edx, edi
mov eax, edx
shr eax, 4
add eax, edx
and eax, 0xf0f0f0f
imul eax, eax, 0x1010101
shr eax, 0x18
mov dword [ebp - 0x28], eax
cmp eax, 1
ja 0x4c4371
mov eax, dword [ebp - 0x10]
dec eax
and eax, dword [ebp - 0x1c]
mov dword [ebp - 0x18], eax
mov eax, dword [ecx]
mov ecx, dword [ebp - 0x18]
mov eax, dword [eax + ecx*4]
test eax, eax
je 0x4c423f
mov eax, dword [eax]
test eax, eax
je 0x4c423f
mov ebx, eax
mov eax, dword [ebp - 0x10]
dec eax
mov dword [ebp - 0x14], eax
mov edi, dword [ebp - 0x20]
mov eax, dword [ebx + 4]
cmp eax, dword [ebp - 0x1c]
jne 0x4c4324
movzx eax, byte [ebx + 0x13]
mov ecx, eax
test al, al
jns 0x4c42f0
mov ecx, dword [ebx + 0xc]
cmp ecx, dword [ebp - 0x24]
jne 0x4c4332
lea ecx, [ebx + 8]
mov edx, dword [ecx]
test al, al
cmovs ecx, edx
js 0x4c4351
test al, al
je 0x4c436a
mov ecx, dword [ebp - 0x20]
cmp byte [ecx], dl
jne 0x4c4332
dec eax
xor ecx, ecx
cmp eax, ecx
je 0x4c436a
mov dl, byte [ebx + ecx + 9]
lea esi, [ecx + 1]
cmp dl, byte [edi + ecx + 1]
mov ecx, esi
je 0x4c430f
jmp 0x4c4332
cmp dword [ebp - 0x28], 1
ja 0x4c4343
and eax, dword [ebp - 0x14]
cmp eax, dword [ebp - 0x18]
jne 0x4c4392
mov eax, ebx
mov eax, dword [ebx]
xor esi, esi
mov ebx, eax
test eax, eax
jne 0x4c42db
jmp 0x4c423f
cmp eax, dword [ebp - 0x10]
jb 0x4c432d
xor edx, edx
div dword [ebp - 0x10]
mov eax, edx
jmp 0x4c432d
cmp dword [ebp - 0x24], 0
je 0x4c436a
push dword [ebp - 0x24]
push dword [ebp - 0x20]
push ecx
call fcn.004cf0db
add esp, 0xc
test eax, eax
jne 0x4c4332
mov esi, ebx
jmp 0x4c423f
mov eax, dword [ebp - 0x1c]
mov edx, eax
mov dword [ebp - 0x18], eax
cmp eax, dword [ebp - 0x10]
jb 0x4c42b5
mov eax, dword [ebp - 0x1c]
xor edx, edx
div dword [ebp - 0x10]
mov dword [ebp - 0x18], edx
jmp 0x4c42b5
xor esi, esi
jmp 0x4c423f