Function at 0x4b8690
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 0x4b86a9
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 0x4b86e6
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 0x4b86c0
mov ebx, dword [ebp + 8]
jmp dword [esi*4 + 0x4b889c]
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 0x4b8726
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.0x4b86e9.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 0x4b8883
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 0x4b870d
mov eax, dword [eax]
mov dword [ebp - 0x10], eax
test eax, eax
je 0x4b870d
cmp dword [ebp - 0x24], 2
mov dword [ebp - 0x20], edx
jae 0x4b87f7
dec dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
mov eax, dword [edx + 4]
cmp eax, edi
jne 0x4b8837
movsx eax, byte [edx + 0x13]
mov ecx, eax
test eax, eax
jns 0x4b87c6
mov ecx, dword [edx + 0xc]
cmp ecx, dword [ebp - 0x18]
jne 0x4b8843
test al, al
jns 0x4b87d4
mov eax, dword [edx + 8]
jmp 0x4b87d7
lea eax, [edx + 8]
push dword [ebp - 0x18]
push dword [ebp - 0x1c]
push eax
call fcn.005c7efd
add esp, 0xc
test eax, eax
mov ebx, dword [ebp + 8]
mov edx, dword [ebp - 0x10]
jne 0x4b8843
mov esi, edx
jmp 0x4b870d
mov edx, dword [ebp - 0x10]
mov eax, dword [edx + 4]
cmp eax, edi
jne 0x4b8855
movsx eax, byte [edx + 0x13]
mov ecx, eax
test eax, eax
jns 0x4b880e
mov ecx, dword [edx + 0xc]
cmp ecx, dword [ebp - 0x18]
jne 0x4b886c
test al, al
jns 0x4b881c
mov eax, dword [edx + 8]
jmp 0x4b881f
lea eax, [edx + 8]
push dword [ebp - 0x18]
push dword [ebp - 0x1c]
push eax
call fcn.005c7efd
add esp, 0xc
test eax, eax
mov edx, dword [ebp - 0x10]
je 0x4b87f0
jmp 0x4b886c
and eax, dword [ebp - 0x14]
cmp eax, dword [ebp - 0x20]
jne 0x4b870d
mov edx, dword [edx]
mov dword [ebp - 0x10], edx
test edx, edx
jne 0x4b87af
jmp 0x4b870d
cmp eax, dword [ebp - 0x14]
jb 0x4b8861
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 0x4b887c
mov edx, dword [edx]
xor esi, esi
mov dword [ebp - 0x10], edx
test edx, edx
jne 0x4b87f7
jmp 0x4b870d
xor esi, esi
jmp 0x4b870d
mov edx, ebx
cmp ebx, edi
mov edi, ebx
jb 0x4b8786
mov eax, edi
xor edx, edx
div dword [ebp - 0x14]
jmp 0x4b8786