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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffffc
sub esp, 0x1c
mov ebx, ecx
mov edi, dword [ebp + 8]
movzx eax, byte [edi]
test al, 1
je 0x416af0
mov eax, dword [edi + 4]
mov edi, dword [edi + 8]
jmp 0x416af5
add edi, 2
shr eax, 1
lea esi, [eax + eax]
cmp esi, 4
mov dword [esp + 0x18], edi
mov dword [esp + 0x10], eax
jb 0x416b38
mov dword [esp], ebx
lea ebx, [eax + eax]
add ebx, 0xfffffffc
test bl, 4
jne 0x416b3e
mov ecx, eax
imul eax, dword [edi], 0x5bd1e995
mov edx, eax
shr edx, 0x18
xor edx, eax
imul edx, edx, 0x5bd1e995
imul ecx, ecx, 0xb7a3d32a
xor ecx, edx
lea edx, [edi + 4]
add esi, 0xfffffffc
jmp 0x416b42
mov ecx, esi
mov edx, edi
jmp 0x416b95
mov edx, edi
mov ecx, esi
cmp ebx, 4
mov ebx, dword [esp]
jb 0x416b95
nop word [eax + eax]
imul edi, dword [edx], 0x5bd1e995
mov ebx, edi
shr ebx, 0x18
xor ebx, edi
imul edi, ebx, 0x5bd1e995
imul eax, ecx, 0x5bd1e995
xor eax, edi
imul edi, dword [edx + 4], 0x5bd1e995
mov ebx, edi
shr ebx, 0x18
xor ebx, edi
imul edi, ebx, 0x5bd1e995
imul ecx, eax, 0x5bd1e995
xor ecx, edi
add edx, 8
add esi, 0xfffffff8
cmp esi, 3
ja 0x416b50
mov ebx, dword [esp]
cmp esi, 1
je 0x416bb6
cmp esi, 2
je 0x416bad
cmp esi, 3
jne 0x416bc1
movzx esi, byte [edx + 2]
shl esi, 0x10
xor ecx, esi
movzx esi, byte [edx + 1]
shl esi, 8
xor ecx, esi
movzx edx, byte [edx]
xor edx, ecx
imul ecx, edx, 0x5bd1e995
mov esi, dword [ebx + 4]
xor eax, eax
test esi, esi
je 0x416cfb
mov edx, ecx
shr edx, 0xd
xor edx, ecx
imul eax, edx, 0x5bd1e995
mov edi, eax
shr edi, 0xf
xor edi, eax
mov eax, esi
shr eax, 1
and eax, 0x55555555
mov edx, esi
sub edx, eax
mov eax, edx
and eax, 0x33333333
shr edx, 2
and edx, 0x33333333
add edx, eax
mov eax, edx
shr eax, 4
add eax, edx
and eax, 0xf0f0f0f
imul eax, eax, 0x1010101
shr eax, 0x18
mov dword [esp + 0x14], eax
cmp eax, 1
ja 0x416c26
lea edx, [esi - 1]
and edx, edi
jmp 0x416c32
mov edx, edi
cmp edi, esi
jb 0x416c32
mov eax, edi
xor edx, edx
div esi
mov eax, dword [ebx]
mov eax, dword [eax + edx*4]
test eax, eax
je 0x416cf9
mov dword [esp + 0xc], edx
mov dword [esp + 4], esi
mov ebx, dword [eax]
test ebx, ebx
mov eax, 0
je 0x416cfb
mov eax, dword [esp + 4]
add eax, 0xffffffff
mov dword [esp + 8], eax
mov ecx, dword [esp + 0x10]
mov dword [esp], edi
jmp 0x416c83
and eax, dword [esp + 8]
cmp eax, dword [esp + 0xc]
jne 0x416cf9
mov ebx, dword [ebx]
test ebx, ebx
mov edi, dword [esp]
je 0x416cf9
mov eax, dword [ebx + 4]
cmp eax, edi
jne 0x416ca0
movzx eax, byte [ebx + 8]
test al, 1
je 0x416cc0
mov edx, dword [ebx + 0xc]
cmp edx, ecx
jne 0x416c7a
jmp 0x416cc8
cmp dword [esp + 0x14], 1
jbe 0x416c70
mov esi, dword [esp + 4]
cmp eax, esi
jb 0x416c74
xor edx, edx
div esi
mov eax, edx
jmp 0x416c74
mov edx, eax
shr edx, 1
cmp edx, ecx
jne 0x416c7a
test ecx, ecx
je 0x416cf5
test al, 1
je 0x416cd5
mov eax, dword [ebx + 0x10]
jmp 0x416cdb
lea eax, [ebx + 8]
add eax, 2
xor edx, edx
nop dword [eax]
movzx edi, word [eax + edx*2]
mov esi, dword [esp + 0x18]
cmp di, word [esi + edx*2]
jne 0x416c7a
add edx, 1
cmp ecx, edx
jne 0x416ce0
mov eax, ebx
jmp 0x416cfb
xor eax, eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 4