Function at 0x4539e0
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 0x453ac6
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 0x453a30
mov edx, dword [ebp - 0x14]
mov ecx, edx
and ecx, 0xfffffffc
lea edi, [esi + ecx + 4]
sub edx, ecx
cmp edx, 1
je 0x453a85
cmp edx, 2
je 0x453a7c
cmp edx, 3
jne 0x453a90
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 0x453ad1
lea ebx, [ecx - 1]
test ebx, ecx
je 0x453ad6
cmp edi, ecx
mov edx, edi
jb 0x453ada
mov eax, edi
xor edx, edx
div ecx
jmp 0x453ada
mov eax, edx
mov edi, esi
cmp edx, 1
jne 0x453a69
jmp 0x453a85
jmp 0x453bbd
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 0x453bbd
mov dword [ebp - 0x24], ebx
mov ebx, dword [eax]
test ebx, ebx
je 0x453bbd
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 0x453b3d
mov edx, dword [ebp - 0x24]
test edx, ecx
je 0x453b32
cmp eax, ecx
jb 0x453b34
xor edx, edx
div ecx
mov eax, edx
cmp eax, dword [ebp - 0x1c]
je 0x453b3d
jmp 0x453bbd
and eax, edx
cmp eax, dword [ebp - 0x1c]
jne 0x453bbd
movzx eax, byte [ebx + 0x13]
test al, al
mov ecx, eax
jns 0x453b4a
mov ecx, dword [ebx + 0xc]
cmp ecx, dword [ebp - 0x10]
jne 0x453bb0
lea ecx, [ebx + 8]
test al, al
mov edx, dword [ecx]
cmovs ecx, edx
js 0x453b88
cmp dword [ebp - 0x10], 0
je 0x453cb9
cmp byte [esi], dl
jne 0x453bb0
dec eax
xor ecx, ecx
nop dword [eax]
cmp eax, ecx
je 0x453cb9
movzx edx, byte [ebx + ecx + 9]
cmp dl, byte [esi + ecx + 1]
lea ecx, [ecx + 1]
je 0x453b70
jmp 0x453bb0
mov eax, dword [ebp - 0x10]
test eax, eax
je 0x453cb9
push eax
push esi
push ecx
call fcn.0045baed
add esp, 0xc
test eax, eax
je 0x453cb9
nop word cs:[eax + eax]
mov ebx, dword [ebx]
mov ecx, dword [ebp - 0x14]
test ebx, ebx
jne 0x453b10
mov esi, dword [ebp + 0x10]
push 0x14
call fcn.00459168
add esp, 4
mov ebx, eax
lea ecx, [eax + 8]
push esi
call fcn.00419c8e
mov esi, dword [ebp - 0x18]
mov dword [ebx + 4], edi
mov dword [ebx], 0
movq xmm2, qword [0x4834f0]
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 0x453c30
movd xmm3, ecx
por xmm3, xmm2
subsd xmm3, xmm2
xorps xmm2, xmm2
cvtsd2ss xmm2, xmm3
mulss xmm2, xmm1
ucomiss xmm0, xmm2
ja 0x453c30
mov edi, dword [ebp + 8]
mov edx, dword [ebp - 0x1c]
jmp 0x453ccc
divss xmm0, xmm1
mov dword [ebp - 0x10], edi
cvtss2sd xmm0, xmm0
sub esp, 8
movsd qword [esp], xmm0
mov edi, ecx
call fcn.0046d080
add esp, 8
fstp dword [ebp - 0x28]
movss xmm1, dword [0x483878]
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 0x453c92
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.004468d0
mov ecx, dword [esi + 4]
lea edx, [ecx - 1]
mov dword [ebp - 0x14], ecx
test edx, ecx
je 0x453cc0
mov eax, dword [ebp - 0x10]
cmp eax, ecx
jae 0x453cc5
mov edx, eax
jmp 0x453cc9
mov edi, dword [ebp + 8]
xor eax, eax
jmp 0x453d18
and edx, dword [ebp - 0x10]
jmp 0x453cc9
xor edx, edx
div ecx
mov edi, dword [ebp + 8]
mov ecx, dword [esi]
mov eax, dword [ecx + edx*4]
test eax, eax
je 0x453cdb
mov ecx, dword [eax]
mov dword [ebx], ecx
jmp 0x453d11
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 0x453d13
mov edx, dword [ebp - 0x14]
mov eax, dword [eax + 4]
lea ecx, [edx - 1]
test ecx, edx
je 0x453d0a
cmp eax, edx
jb 0x453d0c
mov ecx, edx
xor edx, edx
div ecx
mov eax, edx
jmp 0x453d0c
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