Function at 0x437b86
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffb4
push ebx
push esi
mov esi, dword [ebp + 0xc]
mov ebx, dword [ebp + 8]
mov eax, 0x487938
call fcn.00471130
cmp dword [ebx + 0x9e], 0
jne 0x437bb8
xor eax, eax
mov edx, dword [ebp - 0x38]
mov dword fs:[0], edx
jmp 0x437e9a
mov eax, dword [esi + 4]
cmp eax, 0x58
jg 0x437be9
je 0x437de6
sub eax, 0x2d
je 0x437d6e
dec eax
je 0x437c09
sub eax, 0x15
je 0x437e20
sub eax, 0x13
je 0x437e58
jmp 0x437e8e
sub eax, 0x63
je 0x437e20
sub eax, 0x13
je 0x437e58
sub eax, 2
je 0x437de6
jmp 0x437e8e
push 0x10
call sub.USER32.DLL_GetKeyState
test ah, 0x80
je 0x437c19
mov al, 1
jmp 0x437c1b
xor eax, eax
test al, al
je 0x437c29
mov dword [ebx + 0x96], 1
push ebx
lea eax, [ebp - 0x48]
push eax
call fcn.0043dd87
add esp, 8
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x44]
mov dword [ebp - 0x3c], eax
mov word [ebp - 0x28], 8
push 8
push ebx
lea eax, [ebp - 0xc]
push eax
call fcn.0043cedf
add esp, 8
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 0x18]
push eax
call fcn.0043f0fc
add esp, 0xc
mov byte [ebp - 0x49], 8
lea eax, [ebp - 0x40]
push eax
push 2
lea eax, [ebp - 0x49]
push eax
lea eax, [ebp - 0x18]
push eax
push dword [ebx + 0x9e]
mov eax, dword [ebx + 0x9e]
mov eax, dword [eax]
call dword [eax + 4]
add esp, 0x14
cmp eax, 2
jne 0x437d06
push 0x10
call sub.USER32.DLL_GetKeyState
test ah, 0x80
je 0x437ca2
mov al, 1
jmp 0x437ca4
xor eax, eax
test al, al
jne 0x437cb1
cmp dword [esi + 8], 0x300
jne 0x437cb8
push ebx
call fcn.0043df17
pop ecx
lea eax, [ebp - 0x18]
push eax
push ebx
call fcn.0043e09e
add esp, 8
push dword [ebp - 0x3c]
push dword [ebp - 0x40]
push ebx
call fcn.0043de0b
add esp, 0xc
mov eax, 1
push eax
push 2
lea eax, [ebp - 0x18]
push eax
call fcn.0043f246
add esp, 8
push 2
lea eax, [ebp - 0xc]
push eax
call fcn.0043f246
add esp, 8
pop eax
mov edx, dword [ebp - 0x38]
mov dword fs:[0], edx
jmp 0x437e9a
test eax, eax
jne 0x437d3c
mov eax, 1
push eax
push 2
lea eax, [ebp - 0x18]
push eax
call fcn.0043f246
add esp, 8
push 2
lea eax, [ebp - 0xc]
push eax
call fcn.0043f246
add esp, 8
pop eax
mov edx, dword [ebp - 0x38]
mov dword fs:[0], edx
jmp 0x437e9a
mov eax, 1
push eax
push 2
lea eax, [ebp - 0x18]
push eax
call fcn.0043f246
add esp, 8
push 2
lea eax, [ebp - 0xc]
push eax
call fcn.0043f246
add esp, 8
pop eax
mov edx, dword [ebp - 0x38]
mov dword fs:[0], edx
jmp 0x437e9a
push 0x10
call sub.USER32.DLL_GetKeyState
test ah, 0x80
je 0x437d7e
mov al, 1
jmp 0x437d80
xor eax, eax
test al, al
je 0x437da7
mov dword [ebx + 0x96], 1
push esi
push ebx
call fcn.00437ebc
add esp, 8
mov edx, dword [ebp - 0x38]
mov dword fs:[0], edx
jmp 0x437e9a
push 0x11
call sub.USER32.DLL_GetKeyState
test ah, 0x80
je 0x437db7
mov al, 1
jmp 0x437db9
xor eax, eax
test al, al
je 0x437e8e
mov dword [ebx + 0x96], 1
push ebx
call fcn.0043df17
pop ecx
mov eax, 1
mov edx, dword [ebp - 0x38]
mov dword fs:[0], edx
jmp 0x437e9a
push 0x11
call sub.USER32.DLL_GetKeyState
test ah, 0x80
je 0x437df6
mov al, 1
jmp 0x437df8
xor eax, eax
test al, al
je 0x437e8e
mov dword [ebx + 0x96], 1
push esi
push ebx
call fcn.00437ea0
add esp, 8
mov edx, dword [ebp - 0x38]
mov dword fs:[0], edx
jmp 0x437e9a
push 0x11
call sub.USER32.DLL_GetKeyState
test ah, 0x80
je 0x437e30
mov al, 1
jmp 0x437e32
xor eax, eax
test al, al
je 0x437e8e
mov dword [ebx + 0x96], 1
push ebx
call fcn.0043df17
pop ecx
mov eax, 1
mov edx, dword [ebp - 0x38]
mov dword fs:[0], edx
jmp 0x437e9a
push 0x11
call sub.USER32.DLL_GetKeyState
test ah, 0x80
je 0x437e68
mov al, 1
jmp 0x437e6a
xor eax, eax
test al, al
je 0x437e8e
mov dword [ebx + 0x96], 1
push esi
push ebx
call fcn.00437ebc
add esp, 8
mov edx, dword [ebp - 0x38]
mov dword fs:[0], edx
jmp 0x437e9a
xor eax, eax
mov edx, dword [ebp - 0x38]
mov dword fs:[0], edx
pop esi
pop ebx
mov esp, ebp
pop ebp
ret