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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x20
mov dword [ebp - 0x14], ecx
mov edi, dword [ebp + 0xc]
movzx ebx, byte [edi + 0xb]
test bl, bl
jns 0x489b5c
mov ebx, dword [edi + 4]
mov edi, dword [edi]
mov eax, ebx
mov ecx, edi
mov edx, ebx
mov dword [ebp - 0x1c], ebx
cmp ebx, 4
jb 0x489b97
mov eax, dword [ebp - 0x1c]
mov edx, eax
mov ecx, edi
imul esi, dword [ecx], 0x5bd1e995
mov ebx, esi
shr ebx, 0x18
xor ebx, esi
imul esi, ebx, 0x5bd1e995
imul eax, eax, 0x5bd1e995
xor eax, esi
add ecx, 4
add edx, 0xfffffffc
cmp edx, 3
ja 0x489b71
cmp edx, 1
je 0x489bb8
cmp edx, 2
je 0x489baf
cmp edx, 3
jne 0x489bc3
movzx edx, byte [ecx + 2]
shl edx, 0x10
xor eax, edx
movzx edx, byte [ecx + 1]
shl edx, 8
xor eax, edx
movzx ecx, byte [ecx]
xor ecx, eax
imul eax, ecx, 0x5bd1e995
mov ecx, eax
shr ecx, 0xd
xor ecx, eax
imul eax, ecx, 0x5bd1e995
mov esi, eax
shr esi, 0xf
xor esi, eax
mov eax, dword [ebp - 0x14]
mov ebx, dword [eax + 4]
test ebx, ebx
mov dword [ebp - 0x10], esi
je 0x489ce1
mov ecx, ebx
shr ecx, 1
and ecx, 0x55555555
mov eax, ebx
sub eax, ecx
mov ecx, 0x33333333
mov edx, eax
and edx, ecx
shr eax, 2
and eax, ecx
add eax, edx
mov ecx, eax
shr ecx, 4
add ecx, eax
and ecx, 0xf0f0f0f
imul eax, ecx, 0x1010101
shr eax, 0x18
mov dword [ebp - 0x28], eax
cmp eax, 1
ja 0x489ddb
lea ecx, [ebx - 1]
and ecx, esi
mov eax, dword [ebp - 0x14]
mov eax, dword [eax]
mov eax, dword [eax + ecx*4]
test eax, eax
mov dword [ebp - 0x18], ecx
je 0x489ce7
mov esi, dword [eax]
test esi, esi
je 0x489ce7
lea eax, [ebx - 1]
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x24], ebx
mov eax, dword [esi + 4]
cmp eax, dword [ebp - 0x10]
je 0x489c68
cmp dword [ebp - 0x28], 1
ja 0x489ca5
and eax, dword [ebp - 0x20]
cmp eax, ecx
jne 0x489ce7
movzx ecx, byte [esi + 0x13]
mov eax, ecx
test cl, cl
jns 0x489c75
mov eax, dword [esi + 0xc]
cmp eax, dword [ebp - 0x1c]
jne 0x489ccf
lea eax, [esi + 8]
mov edx, dword [eax]
test cl, cl
cmovs eax, edx
js 0x489cb1
xor ebx, ebx
test ecx, ecx
je 0x489d79
dec ecx
cmp dl, byte [edi + ebx]
jne 0x489ccf
cmp ecx, ebx
je 0x489e52
mov dl, byte [esi + ebx + 9]
inc ebx
jmp 0x489c91
cmp eax, ebx
jb 0x489c64
xor edx, edx
div ebx
mov eax, edx
jmp 0x489c64
mov ecx, dword [ebp - 0x1c]
test ecx, ecx
je 0x489e52
push ecx
push edi
push eax
call fcn.0044e58d
add esp, 0xc
test eax, eax
je 0x489e52
mov esi, dword [esi]
test esi, esi
mov ebx, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x18]
jne 0x489c53
jmp 0x489ce7
xor eax, eax
dec eax
mov dword [ebp - 0x18], eax
mov edi, dword [ebp + 0x10]
push 0x18
call fcn.0044c095
add esp, 4
mov esi, eax
mov eax, dword [edi + 8]
mov dword [esi + 0x10], eax
movsd xmm0, qword [edi]
movsd qword [esi + 8], xmm0
xor eax, eax
mov dword [edi + 8], eax
mov dword [edi], eax
mov dword [edi + 4], eax
mov ecx, dword [edi + 0xc]
mov dword [esi + 0x14], ecx
mov ecx, dword [ebp - 0x10]
mov dword [esi + 4], ecx
mov dword [esi], eax
mov edi, dword [ebp - 0x14]
mov eax, dword [edi + 0xc]
inc eax
movd xmm0, eax
movq xmm1, qword [0x4a83d0]
por xmm0, xmm1
subsd xmm0, xmm1
cvtsd2ss xmm0, xmm0
movd xmm2, ebx
por xmm2, xmm1
subsd xmm2, xmm1
cvtsd2ss xmm2, xmm2
movss xmm1, dword [edi + 0x10]
mulss xmm2, xmm1
ucomiss xmm0, xmm2
ja 0x489d8b
test ebx, ebx
je 0x489d8b
mov edx, dword [ebp - 0x18]
mov eax, dword [edi]
mov ecx, dword [eax + edx*4]
test ecx, ecx
je 0x489df2
mov eax, dword [ecx]
mov dword [esi], eax
mov dword [ecx], esi
inc dword [edi + 0xc]
mov bl, 1
mov eax, dword [ebp + 8]
mov dword [eax], esi
mov byte [eax + 4], bl
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret 0xc
divss xmm0, xmm1
cvtss2sd xmm0, xmm0
sub esp, 8
movsd qword [esp], xmm0
call fcn.004713f0
add esp, 8
fstp dword [ebp - 0x2c]
movss xmm0, dword [ebp - 0x2c]
cvttss2si ecx, xmm0
mov edx, ecx
sar edx, 0x1f
subss xmm0, dword [0x4a9390]
cvttss2si eax, xmm0
and eax, edx
or eax, ecx
lea ecx, [ebx + ebx]
cmp ebx, 3
jb 0x489e20
lea edi, [ebx - 1]
xor edx, edx
test ebx, edi
mov edi, dword [ebp - 0x14]
setne dl
jmp 0x489e23
mov ecx, esi
cmp esi, ebx
jb 0x489c2d
mov eax, esi
xor edx, edx
div ebx
mov ecx, edx
jmp 0x489c2d
mov ecx, dword [edi + 8]
mov dword [esi], ecx
lea ecx, [edi + 8]
mov dword [edi + 8], esi
mov dword [eax + edx*4], ecx
mov eax, dword [esi]
test eax, eax
je 0x489d74
mov eax, dword [eax + 4]
lea ecx, [ebx - 1]
test ebx, ecx
jne 0x489e62
and eax, ecx
mov ecx, dword [edi]
mov dword [ecx + eax*4], esi
jmp 0x489d74
xor edx, edx
inc edx
or edx, ecx
cmp edx, eax
cmovb edx, eax
mov ecx, edi
push edx
call fcn.0041d020
mov ebx, dword [edi + 4]
lea edx, [ebx - 1]
test ebx, edx
jne 0x489e44
and edx, dword [ebp - 0x10]
jmp 0x489d61
mov eax, dword [ebp - 0x10]
cmp eax, ebx
jae 0x489e59
mov edx, eax
jmp 0x489d61
xor ebx, ebx
jmp 0x489d79
xor edx, edx
div ebx
jmp 0x489d61
cmp eax, ebx
jb 0x489e16
xor edx, edx
div ebx
mov eax, edx
jmp 0x489e16