Function at 0x40b3ab
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff74
push ebx
push esi
mov esi, edx
mov dword [ebp - 0x64], eax
mov ebx, dword [ebp - 0x64]
mov ebx, dword [ebx + 0xee]
mov eax, dword [ebx + 0x44]
mov dword [ebp - 0x7c], eax
mov eax, dword [ebx + 0x48]
mov dword [ebp - 0x78], eax
mov eax, dword [ebx + 0x6c]
mov dword [ebp - 0x74], eax
mov eax, dword [ebx + 0x70]
mov dword [ebp - 0x70], eax
push ebp
call fcn.0040b24c
pop ecx
push 0x11
call sub.user32.dll_GetAsyncKeyState
test ax, ax
jge 0x40b420
mov eax, dword [esi]
add eax, 0xffffffdf
cmp eax, 7
ja case.default.0x40b42e
jmp dword [eax*4 + 0x40b359]
dec dword [ebp - 0x70]
jmp case.default.0x40b42e
inc dword [ebp - 0x70]
jmp case.default.0x40b42e
mov eax, dword [ebp - 0x64]
call fcn.0040aeb4
test ah, 0x10
jne case.default.0x40b42e
mov eax, dword [ebp - 0x68]
sub dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x68]
sub dword [ebp - 0x74], eax
jmp case.default.0x40b42e
mov eax, dword [ebp - 0x64]
call fcn.0040aeb4
test ah, 0x10
jne case.default.0x40b42e
mov eax, dword [ebp - 0x68]
add dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x68]
add dword [ebp - 0x74], eax
jmp case.default.0x40b42e
mov eax, dword [ebp - 0x64]
call fcn.0040af20
mov dword [ebp - 0x78], eax
jmp case.default.0x40b42e
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x78], eax
jmp case.default.0x40b42e
mov eax, dword [ebp - 0x64]
call fcn.0040ae90
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x64]
call fcn.0040ae9c
mov dword [ebp - 0x78], eax
jmp case.default.0x40b42e
mov eax, dword [ebp - 0x64]
call fcn.0040ae58
dec eax
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x64]
call fcn.0040aed0
dec eax
mov dword [ebp - 0x78], eax
jmp case.default.0x40b42e
mov eax, dword [esi]
add eax, 0xffffffdf
cmp eax, 7
ja case.default.0x40b42e
jmp dword [eax*4 + 0x40b435]
dec dword [ebp - 0x78]
jmp case.default.0x40b42e
inc dword [ebp - 0x78]
jmp case.default.0x40b42e
test byte [ebx + 0x5d], 0x10
je 0x40b46a
dec dword [ebp - 0x78]
jmp case.default.0x40b42e
dec dword [ebp - 0x7c]
jmp case.default.0x40b42e
test byte [ebx + 0x5d], 0x10
je 0x40b47a
inc dword [ebp - 0x78]
jmp case.default.0x40b42e
inc dword [ebp - 0x7c]
jmp case.default.0x40b42e
mov eax, dword [ebp - 0x6c]
add dword [ebp - 0x78], eax
mov eax, dword [ebp - 0x6c]
add dword [ebp - 0x70], eax
jmp case.default.0x40b42e
mov eax, dword [ebp - 0x6c]
sub dword [ebp - 0x78], eax
mov eax, dword [ebp - 0x6c]
sub dword [ebp - 0x70], eax
jmp case.default.0x40b42e
test byte [ebx + 0x5d], 0x10
je 0x40b4a9
mov eax, dword [ebx + 0x58]
mov dword [ebp - 0x78], eax
jmp case.default.0x40b42e
mov eax, dword [ebx + 0x54]
mov dword [ebp - 0x7c], eax
jmp case.default.0x40b42e
test byte [ebx + 0x5d], 0x10
je 0x40b4c0
mov eax, dword [ebx + 0x60]
dec eax
mov dword [ebp - 0x78], eax
jmp case.default.0x40b42e
mov eax, dword [ebx + 0x38]
dec eax
mov dword [ebp - 0x7c], eax
mov eax, dword [ebx + 0x38]
dec eax
mov dword [ebp - 0x84], eax
mov eax, dword [ebx + 0x60]
dec eax
mov dword [ebp - 0x80], eax
lea eax, [ebp - 0x8c]
push eax
lea ecx, [ebp - 0x60]
lea edx, [ebp - 0x84]
mov eax, dword [ebp - 0x64]
call fcn.0040a530
mov eax, dword [ebp - 0x8c]
mov dword [ebp - 0x84], eax
mov eax, dword [ebp - 0x88]
mov dword [ebp - 0x80], eax
mov eax, dword [ebp - 0x84]
push eax
mov eax, dword [ebp - 0x80]
push eax
lea eax, [ebp - 0x74]
mov ecx, dword [ebx + 0x58]
mov edx, dword [ebx + 0x54]
call fcn.0040b2bc
mov eax, dword [ebp - 0x64]
call fcn.0040aea8
cmp eax, dword [ebp - 0x74]
jne 0x40b538
mov eax, dword [ebp - 0x64]
call fcn.0040af20
cmp eax, dword [ebp - 0x70]
je 0x40b546
mov eax, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x70]
mov edx, dword [ebp - 0x74]
call fcn.0040c4fc
mov eax, dword [ebx + 0x38]
dec eax
push eax
mov eax, dword [ebx + 0x60]
dec eax
push eax
lea eax, [ebp - 0x7c]
mov ecx, dword [ebx + 0x58]
mov edx, dword [ebx + 0x54]
call fcn.0040b2bc
mov esi, dword [ebp - 0x7c]
cmp esi, dword [ebx + 0x44]
jne 0x40b56e
mov eax, dword [ebp - 0x78]
cmp eax, dword [ebx + 0x48]
je 0x40b58b
push 0x10
call sub.user32.dll_GetAsyncKeyState
test ax, ax
setl al
xor al, 1
push eax
mov eax, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x78]
mov edx, esi
call fcn.0040adec
pop esi
pop ebx
mov esp, ebp
pop ebp
ret