Function at 0x401000
Capabilities:
Encrypt data using chaskey
Hash data using murmur3

Disassembly:
xor ecx, edi
call sub.user32.dll_GetInputState
or ecx, esi
cmp eax, 0xfffffeff
jne 0x4010a1
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.user32.dll_LoadKeyboardLayoutA
call sub.user32.dll_LoadKeyboardLayoutA
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.user32.dll_LoadKeyboardLayoutA
call sub.user32.dll_LoadKeyboardLayoutA
call sub.user32.dll_LoadKeyboardLayoutA
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.user32.dll_LoadKeyboardLayoutA
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.user32.dll_LoadKeyboardLayoutA
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.user32.dll_LoadKeyboardLayoutA
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.user32.dll_LoadKeyboardLayoutA
call sub.user32.dll_LoadKeyboardLayoutA
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.user32.dll_LoadKeyboardLayoutA
call sub.user32.dll_LoadKeyboardLayoutA
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.user32.dll_LoadKeyboardLayoutA
call sub.ole32.dll_ReadFmtUserTypeStg
ret
or ecx, edi
add ecx, 0x37f74fcd
add ebx, 0x37f7ee39
call sub.user32.dll_GetMessageExtraInfo
xor edi, 0x37f88e09
and ecx, edi
inc esi
xor ebx, 0x37fa0e92
sub esi, edi
or edi, ecx
cmp eax, 0xffffff12
jne 0x401150
call sub.user32.dll_LoadKeyboardLayoutA
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.user32.dll_LoadKeyboardLayoutA
call sub.user32.dll_LoadKeyboardLayoutA
call sub.user32.dll_LoadKeyboardLayoutA
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.user32.dll_LoadKeyboardLayoutA
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.user32.dll_LoadKeyboardLayoutA
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.user32.dll_LoadKeyboardLayoutA
call sub.user32.dll_LoadKeyboardLayoutA
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.user32.dll_LoadKeyboardLayoutA
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.user32.dll_LoadKeyboardLayoutA
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.user32.dll_LoadKeyboardLayoutA
ret
mov ebx, esi
or edi, ecx
call sub.user32.dll_GetMessageExtraInfo
xor esi, ecx
sub edi, 0x38007a84
add ebx, edi
xor edi, ecx
or edi, esi
xor esi, edi
bswap esi
cmp eax, 0xfffffee2
jne 0x4011cc
call sub.user32.dll_LoadKeyboardLayoutA
call sub.user32.dll_LoadKeyboardLayoutA
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.user32.dll_LoadKeyboardLayoutA
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.user32.dll_LoadKeyboardLayoutA
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.user32.dll_LoadKeyboardLayoutA
call sub.user32.dll_LoadKeyboardLayoutA
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.user32.dll_LoadKeyboardLayoutA
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.user32.dll_LoadKeyboardLayoutA
ret
xor ecx, edi
xchg edi, ebx
xor esi, ebx
xor edi, esi
call sub.user32.dll_GetMessageExtraInfo
sub ebx, edi
bswap esi
add esi, 0x3808d757
dec esi
mov ecx, edi
mov edi, 0x380a1589
sub ecx, esi
or edi, ebx
cmp eax, 0xfffffedc
jne 0x40128c
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.user32.dll_LoadKeyboardLayoutA
call sub.user32.dll_LoadKeyboardLayoutA
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.user32.dll_LoadKeyboardLayoutA
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.user32.dll_LoadKeyboardLayoutA
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.user32.dll_LoadKeyboardLayoutA
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.user32.dll_LoadKeyboardLayoutA
call sub.user32.dll_LoadKeyboardLayoutA
call sub.user32.dll_LoadKeyboardLayoutA
call sub.user32.dll_LoadKeyboardLayoutA
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.user32.dll_LoadKeyboardLayoutA
call sub.user32.dll_LoadKeyboardLayoutA
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.user32.dll_LoadKeyboardLayoutA
call sub.user32.dll_LoadKeyboardLayoutA
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.user32.dll_LoadKeyboardLayoutA
call sub.user32.dll_LoadKeyboardLayoutA
call sub.user32.dll_LoadKeyboardLayoutA
call sub.user32.dll_LoadKeyboardLayoutA
call sub.ole32.dll_ReadFmtUserTypeStg
call sub.ole32.dll_ReadFmtUserTypeStg
ret
jmp 0x494349
add ecx, esi
and esi, ecx
shl edi, 0x1f
add edi, ecx
sub esi, ecx
shl ecx, 8
add ecx, 0x399be82a
and esi, 0x399c543f
jmp 0x494969
jmp loc.0049a7c5
push 0x39a51255
xchg ecx, ebx
or ecx, edx
or edx, esi
shl edx, 0x14
add ebx, edx
sub edx, ecx
sub edx, 0x3fa6523a
add esi, edx
jmp 0x496920
call edi
and ecx, ebx
and esi, ecx
xor edx, 0x40ac4f86
and ecx, esi
jmp 0x495910
push 0x39a7282f
and ebx, 0x40bf4c86
xchg esi, ecx
or ebx, ecx
xchg edx, ebx
and ecx, edx
xor ecx, esi
not esi
xor edx, ecx
sub ebx, ecx
jmp 0x496c51
mov edi, 0x2774562b
xor edx, ebx
xor esi, edx
xchg ebx, edx
and edx, esi
jmp 0x494516
push 0x39a6d2c9
xchg ebx, ecx
xchg ebx, esi
shl ebx, 0x14
jmp 0x495193
pop edi
nop
nop
sub ecx, ebx
sub ebx, edx
shl edx, 2
inc ebx
xor ebx, ecx
mov edx, ecx
xchg esi, ecx
jmp 0x49520f
mov edi, 0x2774562b
dec ecx
xor ecx, esi
xchg ebx, edx
sub ecx, ebx
jmp 0x49696e
call fcn.00494a19
dec esi
bswap edx
and edx, esi
add ebx, esi
sub edx, ecx
bswap edx
sub ebx, esi
xor edx, ecx
xor edx, ebx
jmp 0x4950f1
push 0x39a77c1a
add ebx, esi
xchg esi, ebx
and ebx, esi
or ecx, esi
xchg esi, ebx
xor ebx, esi
or ecx, edx
neg esi
and ecx, ebx
bswap edx
xchg ebx, ecx
xor ebx, ecx
xor ebx, 0x449f11c1
jmp 0x4951fd