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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x18
mov edx, dword [ebp + 0xc]
movsx edi, byte [edx + 0xb]
test edi, edi
jns 0x5385e9
mov edi, dword [edx + 4]
mov edx, dword [edx]
mov eax, edi
mov dword [ebp - 0x1c], edx
mov esi, edi
mov dword [ebp - 0x18], edi
cmp edi, 4
jb 0x538626
mov eax, dword [ebp - 0x18]
mov esi, eax
mov edx, dword [ebp - 0x1c]
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
add edx, 4
add esi, 0xfffffffc
cmp esi, 3
ja 0x538600
mov ebx, dword [ebp + 8]
jmp dword [esi*4 + 0x5387dc]
movzx esi, byte [edx + 1]
shl esi, 8
xor eax, esi
movzx edx, byte [edx]
xor edx, eax
imul eax, edx, 0x5bd1e995
mov edi, dword [ecx + 4]
xor esi, esi
test edi, edi
jne 0x538666
mov dword [ebx], esi
mov eax, ebx
add esp, 0x18
pop esi
pop edi
pop ebx
pop ebp
ret 8
movzx esi, byte [edx + 2]
shl esi, 0x10
xor eax, esi
jmp case.0x538629.2
mov edx, eax
shr edx, 0xd
xor edx, eax
imul eax, edx, 0x5bd1e995
mov ebx, eax
shr ebx, 0xf
xor ebx, eax
mov edx, edi
shr edx, 1
and edx, 0x55555555
mov eax, edi
sub eax, edx
mov edx, eax
and edx, 0x33333333
shr eax, 2
and eax, 0x33333333
add eax, edx
mov edx, eax
shr edx, 4
add edx, eax
and edx, 0xf0f0f0f
imul eax, edx, 0x1010101
shr eax, 0x18
mov dword [ebp - 0x24], eax
cmp eax, 1
mov dword [ebp - 0x14], edi
ja 0x5387c3
lea edx, [edi - 1]
and edx, ebx
mov edi, ebx
mov eax, dword [ecx]
mov eax, dword [eax + edx*4]
test eax, eax
mov ebx, dword [ebp + 8]
je 0x53864d
mov eax, dword [eax]
mov dword [ebp - 0x10], eax
test eax, eax
je 0x53864d
cmp dword [ebp - 0x24], 2
mov dword [ebp - 0x20], edx
jae 0x538737
dec dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
mov eax, dword [edx + 4]
cmp eax, edi
jne 0x538777
movsx eax, byte [edx + 0x13]
mov ecx, eax
test eax, eax
jns 0x538706
mov ecx, dword [edx + 0xc]
cmp ecx, dword [ebp - 0x18]
jne 0x538783
test al, al
js 0x538714
lea eax, [edx + 8]
jmp 0x538717
mov eax, dword [edx + 8]
push dword [ebp - 0x18]
push dword [ebp - 0x1c]
push eax
call fcn.00652bcd
add esp, 0xc
test eax, eax
mov ebx, dword [ebp + 8]
mov edx, dword [ebp - 0x10]
jne 0x538783
mov esi, edx
jmp 0x53864d
mov edx, dword [ebp - 0x10]
mov eax, dword [edx + 4]
cmp eax, edi
jne 0x538795
movsx eax, byte [edx + 0x13]
mov ecx, eax
test eax, eax
jns 0x53874e
mov ecx, dword [edx + 0xc]
cmp ecx, dword [ebp - 0x18]
jne 0x5387ac
test al, al
js 0x53875c
lea eax, [edx + 8]
jmp 0x53875f
mov eax, dword [edx + 8]
push dword [ebp - 0x18]
push dword [ebp - 0x1c]
push eax
call fcn.00652bcd
add esp, 0xc
test eax, eax
mov edx, dword [ebp - 0x10]
je 0x538730
jmp 0x5387ac
and eax, dword [ebp - 0x14]
cmp eax, dword [ebp - 0x20]
jne 0x53864d
mov edx, dword [edx]
mov dword [ebp - 0x10], edx
test edx, edx
jne 0x5386ef
jmp 0x53864d
cmp eax, dword [ebp - 0x14]
jb 0x5387a1
xor edx, edx
div dword [ebp - 0x14]
mov eax, edx
cmp eax, dword [ebp - 0x20]
mov ebx, dword [ebp + 8]
mov edx, dword [ebp - 0x10]
jne 0x5387bc
mov edx, dword [edx]
xor esi, esi
mov dword [ebp - 0x10], edx
test edx, edx
jne 0x538737
jmp 0x53864d
xor esi, esi
jmp 0x53864d
mov edx, ebx
cmp ebx, edi
mov edi, ebx
jb 0x5386c6
mov eax, edi
xor edx, edx
div dword [ebp - 0x14]
jmp 0x5386c6