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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
mov eax, dword [ebp + 0xc]
cdq
and edx, 0xf
add eax, edx
mov edx, dword [ebp + 8]
push ebx
sar eax, 4
push esi
mov ecx, eax
push edi
mov edi, dword [ebp + 0x10]
shl ecx, 4
neg eax
mov ebx, edi
lea esi, [ecx + edx]
mov dword [ebp - 8], ebx
mov dword [ebp + 0x10], edi
mov dword [ebp - 4], edi
mov dword [ebp - 0x14], esi
je 0x405808
mov ecx, eax
shl ecx, 4
neg eax
lea esi, [ecx + esi + 8]
mov dword [ebp + 8], eax
mov eax, dword [esi]
mov ebx, dword [esi - 4]
mov dword [ebp - 0xc], eax
mov eax, dword [esi + 4]
mov dword [ebp - 0x10], eax
mov eax, dword [esi - 8]
imul eax, eax, 0x239b961b
push 0xf
push eax
call fcn.004040d4
imul eax, eax, 0xab0e9789
xor eax, edi
push 0x13
push eax
call fcn.004040d4
imul ebx, ebx, 0xab0e9789
add eax, dword [ebp - 8]
push 0x10
imul eax, eax, 5
add eax, 0x561ccd1b
push ebx
mov edi, eax
call fcn.004040d4
imul eax, eax, 0x38b34ae5
xor eax, dword [ebp - 8]
push 0x11
push eax
call fcn.004040d4
add eax, dword [ebp + 0x10]
push 0x11
imul eax, eax, 5
add eax, 0xbcaa747
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0xc]
imul eax, eax, 0x38b34ae5
push eax
call fcn.004040d4
imul eax, eax, 0xa1e38b93
xor eax, dword [ebp + 0x10]
push 0xf
push eax
call fcn.004040d4
add eax, dword [ebp - 4]
push 0x12
imul eax, eax, 5
sub eax, 0x6932e3cb
mov dword [ebp + 0x10], eax
mov eax, dword [ebp - 0x10]
imul eax, eax, 0xa1e38b93
push eax
call fcn.004040d4
imul eax, eax, 0x239b961b
xor eax, dword [ebp - 4]
push 0xd
push eax
call fcn.004040d4
add eax, edi
imul eax, eax, 5
add eax, 0x32ac3b17
add esp, 0x40
add esi, 0x10
dec dword [ebp + 8]
mov dword [ebp - 4], eax
jne 0x40572b
mov ebx, dword [ebp - 8]
mov esi, dword [ebp - 0x14]
mov eax, dword [ebp + 0xc]
xor edx, edx
and dword [ebp + 8], edx
and dword [ebp - 8], edx
and eax, 0xf
xor ecx, ecx
dec eax
cmp eax, 0xe
ja case.default.0x405822
jmp dword [eax*4 + 0x4059d8]
movzx ecx, byte [esi + 0xe]
shl ecx, 0x10
jmp 0x405835
mov ecx, dword [ebp - 8]
xor eax, eax
mov ah, byte [esi + 0xd]
xor ecx, eax
jmp 0x405841
mov ecx, dword [ebp - 8]
movzx eax, byte [esi + 0xc]
xor eax, ecx
imul eax, eax, 0xa1e38b93
push 0x12
push eax
call fcn.004040d4
imul eax, eax, 0x239b961b
xor dword [ebp - 4], eax
pop ecx
pop ecx
movzx ecx, byte [esi + 0xb]
shl ecx, 0x18
jmp 0x40586c
mov ecx, dword [ebp + 8]
movzx eax, byte [esi + 0xa]
shl eax, 0x10
xor ecx, eax
jmp 0x40587a
mov ecx, dword [ebp + 8]
xor eax, eax
mov ah, byte [esi + 9]
xor ecx, eax
jmp 0x405886
mov ecx, dword [ebp + 8]
movzx eax, byte [esi + 8]
xor eax, ecx
imul eax, eax, 0x38b34ae5
push 0x11
push eax
call fcn.004040d4
imul eax, eax, 0xa1e38b93
xor dword [ebp + 0x10], eax
pop ecx
pop ecx
movzx edx, byte [esi + 7]
shl edx, 0x18
movzx eax, byte [esi + 6]
shl eax, 0x10
xor edx, eax
xor eax, eax
mov ah, byte [esi + 5]
xor edx, eax
movzx eax, byte [esi + 4]
xor eax, edx
imul eax, eax, 0xab0e9789
push 0x10
push eax
call fcn.004040d4
imul eax, eax, 0x38b34ae5
pop ecx
pop ecx
xor ebx, eax
movzx ecx, byte [esi + 3]
shl ecx, 0x18
movzx eax, byte [esi + 2]
shl eax, 0x10
xor ecx, eax
xor eax, eax
mov ah, byte [esi + 1]
xor ecx, eax
movzx eax, byte [esi]
xor eax, ecx
imul eax, eax, 0x239b961b
push 0xf
push eax
call fcn.004040d4
imul eax, eax, 0xab0e9789
pop ecx
pop ecx
xor edi, eax
mov eax, dword [ebp + 0xc]
xor dword [ebp - 4], eax
xor dword [ebp + 0x10], eax
xor edi, eax
add edi, dword [ebp - 4]
xor ebx, eax
add edi, dword [ebp + 0x10]
add edi, ebx
mov eax, edi
mov ecx, eax
shr ecx, 0x10
xor ecx, eax
imul ecx, ecx, 0x85ebca6b
lea edx, [ebx + eax]
mov edi, ecx
shr edi, 0xd
xor edi, ecx
mov ecx, edx
imul edi, edi, 0xc2b2ae35
shr ecx, 0x10
xor ecx, edx
imul ecx, ecx, 0x85ebca6b
mov edx, ecx
shr edx, 0xd
xor edx, ecx
imul edx, edx, 0xc2b2ae35
mov ecx, edx
shr ecx, 0x10
xor ecx, edx
mov edx, dword [ebp + 0x10]
lea esi, [edx + eax]
mov edx, esi
shr edx, 0x10
xor edx, esi
imul edx, edx, 0x85ebca6b
mov esi, edx
shr esi, 0xd
xor esi, edx
imul esi, esi, 0xc2b2ae35
mov edx, esi
shr edx, 0x10
xor edx, esi
mov esi, dword [ebp - 4]
add esi, eax
mov eax, esi
shr eax, 0x10
xor eax, esi
imul eax, eax, 0x85ebca6b
mov ebx, eax
shr ebx, 0xd
xor ebx, eax
imul ebx, ebx, 0xc2b2ae35
mov eax, edi
shr eax, 0x10
mov esi, ebx
xor eax, edi
mov edi, dword [ebp + 0x14]
shr esi, 0x10
xor esi, ebx
add eax, esi
add eax, edx
add eax, ecx
add ecx, eax
add edx, eax
add esi, eax
mov dword [edi + 0xc], esi
mov dword [edi], eax
mov dword [edi + 4], ecx
mov dword [edi + 8], edx
pop edi
pop esi
pop ebx
leave
ret