Function at 0x4681b0
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 esi, dword [ebp + 0xc]
mov dword [ebp - 0x18], ecx
movzx edx, byte [esi + 0xb]
mov ecx, dword [esi + 4]
mov eax, dword [esi]
test dl, dl
mov dword [ebp - 0x20], edx
lea edx, [esi + edx]
lea edi, [eax + ecx]
mov dword [ebp - 0x10], ecx
cmovs edx, edi
cmovs esi, eax
sub edx, esi
cmp edx, 4
jb 0x468296
lea ecx, [edx - 4]
mov edi, esi
mov eax, edx
mov dword [ebp - 0x14], ecx
nop word cs:[eax + eax]
nop dword [eax + eax]
imul ebx, dword [edi], 0x5bd1e995
imul eax, eax, 0x5bd1e995
add edx, 0xfffffffc
add edi, 4
mov ecx, ebx
shr ecx, 0x18
xor ecx, ebx
imul ecx, ecx, 0x5bd1e995
xor eax, ecx
cmp edx, 3
ja 0x468200
mov edx, dword [ebp - 0x14]
mov ecx, edx
and ecx, 0xfffffffc
lea edi, [esi + ecx + 4]
sub edx, ecx
cmp edx, 1
je 0x468255
cmp edx, 2
je 0x46824c
cmp edx, 3
jne 0x468260
movzx ecx, byte [edi + 2]
shl ecx, 0x10
xor eax, ecx
movzx ecx, byte [edi + 1]
shl ecx, 8
xor eax, ecx
movzx ecx, byte [edi]
xor ecx, eax
imul eax, ecx, 0x5bd1e995
mov ecx, eax
shr ecx, 0xd
xor ecx, eax
imul eax, ecx, 0x5bd1e995
mov ecx, dword [ebp - 0x18]
mov edi, eax
shr edi, 0xf
xor edi, eax
mov ecx, dword [ecx + 4]
test ecx, ecx
mov dword [ebp - 0x14], ecx
je 0x4682a1
lea ebx, [ecx - 1]
test ebx, ecx
je 0x4682a6
cmp edi, ecx
mov edx, edi
jb 0x4682aa
mov eax, edi
xor edx, edx
div ecx
jmp 0x4682aa
mov eax, edx
mov edi, esi
cmp edx, 1
jne 0x468239
jmp 0x468255
jmp 0x46838d
mov edx, edi
and edx, ebx
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x1c], edx
mov eax, dword [eax]
mov eax, dword [eax + edx*4]
test eax, eax
je 0x46838d
mov dword [ebp - 0x24], ebx
mov ebx, dword [eax]
test ebx, ebx
je 0x46838d
mov edx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x10]
test dl, dl
cmovns eax, edx
mov dword [ebp - 0x10], eax
nop dword [eax + eax]
mov eax, dword [ebx + 4]
cmp eax, edi
je 0x46830d
mov edx, dword [ebp - 0x24]
test edx, ecx
je 0x468302
cmp eax, ecx
jb 0x468304
xor edx, edx
div ecx
mov eax, edx
cmp eax, dword [ebp - 0x1c]
je 0x46830d
jmp 0x46838d
and eax, edx
cmp eax, dword [ebp - 0x1c]
jne 0x46838d
movzx eax, byte [ebx + 0x13]
test al, al
mov ecx, eax
jns 0x46831a
mov ecx, dword [ebx + 0xc]
cmp ecx, dword [ebp - 0x10]
jne 0x468380
lea ecx, [ebx + 8]
test al, al
mov edx, dword [ecx]
cmovs ecx, edx
js 0x468358
cmp dword [ebp - 0x10], 0
je 0x468489
cmp byte [esi], dl
jne 0x468380
dec eax
xor ecx, ecx
nop dword [eax]
cmp eax, ecx
je 0x468489
movzx edx, byte [ebx + ecx + 9]
cmp dl, byte [esi + ecx + 1]
lea ecx, [ecx + 1]
je 0x468340
jmp 0x468380
mov eax, dword [ebp - 0x10]
test eax, eax
je 0x468489
push eax
push esi
push ecx
call fcn.00497e9d
add esp, 0xc
test eax, eax
je 0x468489
nop word cs:[eax + eax]
mov ebx, dword [ebx]
mov ecx, dword [ebp - 0x14]
test ebx, ebx
jne 0x4682e0
mov esi, dword [ebp + 0x10]
push 0x14
call fcn.004955e6
add esp, 4
mov ebx, eax
lea ecx, [eax + 8]
push esi
call fcn.0041ec0e
mov esi, dword [ebp - 0x18]
mov dword [ebx + 4], edi
mov dword [ebx], 0
movq xmm2, qword [0x4c2298]
mov ecx, dword [ebp - 0x14]
mov eax, dword [esi + 0xc]
movss xmm1, dword [esi + 0x10]
inc eax
test ecx, ecx
movd xmm0, eax
por xmm0, xmm2
subsd xmm0, xmm2
cvtsd2ss xmm0, xmm0
je 0x468400
movd xmm3, ecx
por xmm3, xmm2
subsd xmm3, xmm2
xorps xmm2, xmm2
cvtsd2ss xmm2, xmm3
mulss xmm2, xmm1
ucomiss xmm0, xmm2
ja 0x468400
mov edi, dword [ebp + 8]
mov edx, dword [ebp - 0x1c]
jmp 0x46849c
divss xmm0, xmm1
mov dword [ebp - 0x10], edi
cvtss2sd xmm0, xmm0
sub esp, 8
movsd qword [esp], xmm0
mov edi, ecx
call fcn.004a8dc0
add esp, 8
fstp dword [ebp - 0x28]
movss xmm1, dword [0x4c22a0]
mov edx, 1
movss xmm0, dword [ebp - 0x28]
movaps xmm2, xmm0
cvttss2si eax, xmm0
subss xmm2, xmm1
cvttss2si ecx, xmm2
xor ecx, 0x80000000
ucomiss xmm0, xmm1
cmovae eax, ecx
lea ecx, [edi + edi]
cmp edi, 3
jb 0x468462
lea esi, [edi - 1]
xor edx, edx
test esi, edi
mov esi, dword [ebp - 0x18]
setne dl
or edx, ecx
mov ecx, esi
cmp edx, eax
cmovb edx, eax
push edx
call fcn.0043ef90
mov ecx, dword [esi + 4]
lea edx, [ecx - 1]
mov dword [ebp - 0x14], ecx
test edx, ecx
je 0x468490
mov eax, dword [ebp - 0x10]
cmp eax, ecx
jae 0x468495
mov edx, eax
jmp 0x468499
mov edi, dword [ebp + 8]
xor eax, eax
jmp 0x4684e8
and edx, dword [ebp - 0x10]
jmp 0x468499
xor edx, edx
div ecx
mov edi, dword [ebp + 8]
mov ecx, dword [esi]
mov eax, dword [ecx + edx*4]
test eax, eax
je 0x4684ab
mov ecx, dword [eax]
mov dword [ebx], ecx
jmp 0x4684e1
mov eax, dword [esi + 8]
mov dword [ebx], eax
lea eax, [esi + 8]
mov dword [esi + 8], ebx
mov dword [ecx + edx*4], eax
mov eax, dword [ebx]
test eax, eax
je 0x4684e3
mov edx, dword [ebp - 0x14]
mov eax, dword [eax + 4]
lea ecx, [edx - 1]
test ecx, edx
je 0x4684da
cmp eax, edx
jb 0x4684dc
mov ecx, edx
xor edx, edx
div ecx
mov eax, edx
jmp 0x4684dc
and eax, ecx
shl eax, 2
add eax, dword [esi]
mov dword [eax], ebx
inc dword [esi + 0xc]
mov al, 1
mov dword [edi], ebx
mov byte [edi + 4], al
mov eax, edi
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret 0xc