Function at 0x40ae30
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x108
mov eax, dword [0x4c822c]
xor eax, esp
mov dword [esp + 0x104], eax
push esi
or esi, 0xffffffff
cmp byte [esp + 0x118], 0
push edi
mov edi, dword [esp + 0x114]
je 0x40ae81
cmp dword [0x4c4028], 0
je 0x40ae6c
cmp byte [edi + 0xa0], 1
jne 0x40ae81
mov eax, dword [esp + 0x124]
shr eax, 0x10
test eax, 0x4000
jne 0x40b27b
push ebx
push ebp
call fcn.00409ba0
mov ebx, dword [esp + 0x128]
mov dword [0x4c402c], eax
lea eax, [ebx - 0x10]
cmp eax, 0x6b
ja case.0x40aea7.19
movzx eax, byte [eax + 0x40b330]
jmp dword [eax*4 + 0x40b2c8]
mov esi, 1
jmp 0x40b155
mov esi, 2
jmp 0x40b155
mov esi, 3
jmp 0x40b155
mov esi, 4
jmp 0x40b155
mov esi, 5
jmp 0x40b155
mov esi, 6
jmp 0x40b155
mov esi, 7
jmp 0x40b155
mov esi, 8
jmp 0x40b155
mov esi, 9
jmp 0x40b155
mov esi, 0xa
jmp 0x40b155
mov esi, 0xb
jmp 0x40b155
mov esi, 0xc
jmp 0x40b155
mov esi, 0x68
jmp 0x40b155
mov esi, 0x69
jmp 0x40b155
mov esi, 0x6a
jmp 0x40b155
mov esi, 0x6b
jmp 0x40b155
mov esi, 0x64
jmp 0x40b155
mov esi, 0x65
jmp 0x40b155
mov esi, 0x66
jmp 0x40b155
mov esi, 0x67
jmp 0x40b155
mov esi, 0x6c
jmp 0x40b155
cmp byte [0x4cd3d8], 0
mov ebx, 0xffffff00
mov ebp, dword [sym.imp.USER32.dll_GetKeyState]
jne 0x40afb2
push 0xa2
call ebp
test bx, ax
je 0x40afa9
mov byte [0x4cd3d8], 1
jmp 0x40afc5
cmp byte [0x4cd3d8], 0
je 0x40afca
push 0xa2
call ebp
test bx, ax
jne 0x40afca
mov byte [0x4cd3d8], 0
mov esi, 0x72
cmp byte [0x4cd3db], 0
jne 0x40affd
push 0xa3
call ebp
test bx, ax
je 0x40aff0
mov esi, 0x73
mov byte [0x4cd3db], 1
jmp 0x40b155
cmp byte [0x4cd3db], 0
je 0x40b14c
push 0xa3
call ebp
test bx, ax
jne 0x40b14c
mov esi, 0x73
mov byte [0x4cd3db], 0
jmp 0x40b155
cmp byte [0x4cd3d9], 0
mov ebx, 0xffffff00
mov ebp, dword [sym.imp.USER32.dll_GetKeyState]
jne 0x40b050
push 0xa0
call ebp
test bx, ax
je 0x40b047
mov byte [0x4cd3d9], 1
jmp 0x40b063
cmp byte [0x4cd3d9], 0
je 0x40b068
push 0xa0
call ebp
test bx, ax
jne 0x40b068
mov byte [0x4cd3d9], 0
mov esi, 0x70
cmp byte [0x4cd3dc], 0
jne 0x40b09b
push 0xa1
call ebp
test bx, ax
je 0x40b08e
mov esi, 0x71
mov byte [0x4cd3dc], 1
jmp 0x40b155
cmp byte [0x4cd3dc], 0
je 0x40b14c
push 0xa1
call ebp
test bx, ax
jne 0x40b14c
mov esi, 0x71
mov byte [0x4cd3dc], 0
jmp 0x40b155
cmp byte [0x4cd3da], 0
mov ebx, 0xffffff00
mov ebp, dword [sym.imp.USER32.dll_GetKeyState]
jne 0x40b0ee
push 0xa4
call ebp
test bx, ax
je 0x40b0e5
mov byte [0x4cd3da], 1
jmp 0x40b101
cmp byte [0x4cd3da], 0
je 0x40b106
push 0xa4
call ebp
test bx, ax
jne 0x40b106
mov byte [0x4cd3da], 0
mov esi, 0x74
cmp byte [0x4cd3dd], 0
jne 0x40b132
push 0xa5
call ebp
test bx, ax
je 0x40b129
mov esi, 0x75
mov byte [0x4cd3dd], 1
jmp 0x40b155
cmp byte [0x4cd3dd], 0
je 0x40b14c
push 0xa5
call ebp
test bx, ax
jne 0x40b14c
mov esi, 0x75
mov byte [0x4cd3dd], 0
jmp 0x40b155
cmp esi, 0xffffffff
je 0x40b25a
cmp byte [esp + 0x124], 0
je 0x40b187
mov ebx, dword [edi + 0xbc]
test ebx, ebx
je 0x40b25a
push edi
call fcn.00407610
push dword [edi + 0x9c]
push dword [edi + 0x98]
push esi
call ebx
jmp 0x40b257
mov ebx, dword [edi + 0xc0]
test ebx, ebx
je 0x40b25a
push edi
call fcn.00407610
push dword [edi + 0x9c]
push dword [edi + 0x98]
push esi
call ebx
jmp 0x40b257
cmp byte [esp + 0x124], 0
je 0x40b1dd
mov esi, dword [edi + 0xb4]
test esi, esi
je 0x40b25a
push edi
call fcn.00407610
push dword [edi + 0x9c]
push dword [edi + 0x98]
push 0x7f
jmp 0x40b255
mov esi, dword [edi + 0xb8]
test esi, esi
je 0x40b25a
push edi
call fcn.00407610
push dword [edi + 0x9c]
push dword [edi + 0x98]
push 0x7f
jmp 0x40b255
cmp byte [esp + 0x124], 0
jne 0x40b25a
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.USER32.dll_GetKeyboardState]
push 0
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x1c]
push eax
push 0
push ebx
call dword [sym.imp.USER32.dll_ToAscii]
cmp eax, 1
jne 0x40b238
movzx ebx, word [esp + 0x10]
mov dword [esp + 0x128], ebx
mov esi, dword [edi + 0xb8]
test esi, esi
je 0x40b25a
push edi
call fcn.00407610
push dword [edi + 0x9c]
push dword [edi + 0x98]
push ebx
call esi
add esp, 0x10
mov eax, dword [esp + 0x120]
mov dword [0x4c402c], 0xffffffff
pop ebp
pop ebx
cmp eax, 0x104
je 0x40b297
cmp eax, 0x105
je 0x40b297
pop edi
mov eax, 1
pop esi
mov ecx, dword [esp + 0x104]
xor ecx, esp
call fcn.0041598b
add esp, 0x108
ret
push dword [esp + 0x124]
push dword [esp + 0x124]
push eax
push dword [edi + 0xc]
call dword [sym.imp.USER32.dll_DefWindowProcA]
mov ecx, dword [esp + 0x10c]
pop edi
pop esi
xor ecx, esp
call fcn.0041598b
add esp, 0x108
ret