Function at 0x407ec0
Capabilities:
Encode data using xor
Hash data using murmur3

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x408131
sub esp, 0x20
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x2c]
cmp byte [0xb3d870], 0
je 0x407f0a
mov dword [esp], ecx
mov ebx, dword [esp + 0x28]
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
call dbg.runtime.aeshash
mov ebx, dword [esp + 0xc]
mov dword [esp + 0x30], ebx
add esp, 0x20
ret
mov edx, dword [0xb3db30]
imul edx, eax
add edx, dword [esp + 0x28]
cmp eax, 0
jne 0x407f45
mov ebx, edx
shr ebx, 0x11
xor ebx, edx
imul ebx, ebx, 0x319bca41
mov ecx, ebx
shr ebx, 0xd
xor ebx, ecx
imul ebx, ebx, 0x8b421a21
mov ecx, ebx
shr ebx, 0x10
xor ebx, ecx
mov dword [esp + 0x30], ebx
add esp, 0x20
ret
cmp eax, 4
jae 0x407f85
movzx ebp, byte [ecx]
mov esi, ebp
xor esi, edx
mov edx, eax
shr edx, 1
mov ebx, ecx
add ebx, edx
movzx ebp, byte [ebx]
mov edx, ebp
shl edx, 8
xor edx, esi
dec eax
mov ebx, ecx
add ebx, eax
movzx ebp, byte [ebx]
mov ebx, ebp
shl ebx, 0x10
xor ebx, edx
imul ebx, ebx, 0xbce2d621
rol ebx, 0xf
imul ebx, ebx, 0xc70f85e1
mov edx, ebx
jmp 0x407f1c
cmp eax, 4
jne 0x407fa4
mov ebx, dword [ecx]
xor ebx, edx
imul ebx, ebx, 0xbce2d621
rol ebx, 0xf
imul ebx, ebx, 0xc70f85e1
mov edx, ebx
jmp 0x407f1c
cmp eax, 8
ja 0x407fdf
mov esi, edx
mov edx, dword [ecx]
xor edx, esi
imul edx, edx, 0xbce2d621
rol edx, 0xf
imul edx, edx, 0xc70f85e1
sub eax, 4
mov ebx, ecx
add ebx, eax
mov ebx, dword [ebx]
xor ebx, edx
imul ebx, ebx, 0xbce2d621
rol ebx, 0xf
imul ebx, ebx, 0xc70f85e1
mov edx, ebx
jmp 0x407f1c
cmp eax, 0x10
ja 0x408052
mov esi, dword [ecx]
xor esi, edx
imul esi, esi, 0xbce2d621
rol esi, 0xf
imul esi, esi, 0xc70f85e1
mov edx, 4
mov ebx, ecx
add ebx, edx
mov ebx, dword [ebx]
xor ebx, esi
imul ebx, ebx, 0xbce2d621
rol ebx, 0xf
imul ebx, ebx, 0xc70f85e1
mov esi, ebx
mov edx, eax
sub edx, 8
mov ebx, ecx
add ebx, edx
mov edx, dword [ebx]
xor edx, esi
imul edx, edx, 0xbce2d621
rol edx, 0xf
imul edx, edx, 0xc70f85e1
sub eax, 4
mov ebx, ecx
add ebx, eax
mov ebx, dword [ebx]
xor ebx, edx
imul ebx, ebx, 0xbce2d621
rol ebx, 0xf
imul ebx, ebx, 0xc70f85e1
mov edx, ebx
jmp 0x407f1c
mov dword [esp + 0x14], edx
mov edi, dword [0xb3db34]
imul edi, dword [esp + 0x28]
mov esi, dword [0xb3db38]
imul esi, dword [esp + 0x28]
mov edx, dword [0xb3db3c]
imul edx, dword [esp + 0x28]
cmp eax, 0x10
jb 0x408120
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x18], ebx
mov ebp, dword [ecx]
mov dword [esp + 0x10], ebp
mov ebx, dword [esp + 0x10]
xor ebx, dword [esp + 0x18]
imul ebx, ebx, 0xbce2d621
rol ebx, 0xf
imul ebx, ebx, 0xc70f85e1
mov dword [esp + 0x14], ebx
mov ebx, ecx
mov ecx, 4
add ebx, ecx
mov dword [esp + 0x1c], edi
mov edi, dword [ebx]
xor edi, dword [esp + 0x1c]
imul edi, edi, 0xc70f85e1
rol edi, 0xf
imul edi, edi, 0x319bca41
mov ecx, 4
add ebx, ecx
mov dword [esp + 0x18], esi
mov esi, dword [ebx]
xor esi, dword [esp + 0x18]
imul esi, esi, 0x319bca41
rol esi, 0xf
imul esi, esi, 0x8b421a21
mov ecx, 4
add ebx, ecx
mov dword [esp + 0x1c], edx
mov edx, dword [ebx]
xor edx, dword [esp + 0x1c]
imul edx, edx, 0x8b421a21
rol edx, 0xf
imul edx, edx, 0xbce2d621
mov ecx, 4
add ebx, ecx
mov ecx, ebx
sub eax, 0x10
cmp eax, 0x10
jae 0x408080
mov ebx, dword [esp + 0x14]
xor ebx, edi
xor ebx, esi
xor ebx, edx
mov edx, ebx
jmp 0x407f17
call dbg.runtime.morestack_noctxt
jmp dbg.runtime.memhash