Function at 0x438956
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x60
mov dword [ebp - 0x58], ecx
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
movsx eax, ax
and eax, 0x8000
neg eax
sbb eax, eax
neg eax
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
je 0x43899c
cmp dword [ebp + 8], 0x61
je 0x43898a
cmp dword [ebp + 8], 0x41
jne 0x43899c
mov ecx, dword [ebp - 0x58]
call fcn.00436326
mov eax, 1
jmp 0x438be9
cmp dword [ebp + 8], 0x28
je 0x4389a8
cmp dword [ebp + 8], 0x27
jne 0x4389ef
mov ecx, dword [ebp - 0x58]
call fcn.00420050
mov ecx, dword [ebp - 0x58]
mov edx, dword [ecx + 0xe8]
add edx, 1
cmp eax, edx
jg 0x4389ca
mov eax, 1
jmp 0x438be9
push 0
push 1
push 1
mov eax, dword [ebp - 0x58]
mov ecx, dword [eax + 0xe8]
add ecx, 1
push ecx
mov ecx, dword [ebp - 0x58]
call fcn.00436647
mov eax, 1
jmp 0x438be9
cmp dword [ebp + 8], 0x26
je 0x4389fb
cmp dword [ebp + 8], 0x25
jne 0x438a3a
mov edx, dword [ebp - 0x58]
mov eax, dword [edx + 0xe8]
sub eax, 1
test eax, eax
jge 0x438a15
mov eax, 1
jmp 0x438be9
push 0
push 1
push 1
mov ecx, dword [ebp - 0x58]
mov edx, dword [ecx + 0xe8]
sub edx, 1
push edx
mov ecx, dword [ebp - 0x58]
call fcn.00436647
mov eax, 1
jmp 0x438be9
cmp dword [ebp + 8], 0x21
jne 0x438ae6
mov eax, dword [ebp - 0x58]
mov ecx, dword [eax + 0xe8]
mov dword [ebp - 0x28], ecx
push 0x17
lea edx, [ebp - 0x24]
push edx
push 1
mov ecx, dword [ebp - 0x58]
call fcn.00440655
mov eax, dword [ebp - 0x18]
cmp eax, dword [ebp - 0x14]
jg 0x438a72
mov eax, 1
jmp 0x438be9
mov dword [ebp - 8], 0
mov ecx, dword [ebp - 0x58]
cmp dword [ecx + 0xdc], 0
jle 0x438a96
mov ecx, dword [ebp - 0x58]
mov eax, dword [ebp - 0x14]
xor edx, edx
div dword [ecx + 0xdc]
mov dword [ebp - 8], eax
mov edx, dword [ebp - 0x58]
mov eax, dword [edx + 0xe8]
sub eax, dword [ebp - 8]
add eax, 1
test eax, eax
jle 0x438abd
mov ecx, dword [ebp - 0x58]
mov edx, dword [ecx + 0xe8]
sub edx, dword [ebp - 8]
add edx, 1
mov dword [ebp - 0x5c], edx
jmp 0x438ac4
mov dword [ebp - 0x5c], 0
mov eax, dword [ebp - 0x5c]
mov dword [ebp - 0x2c], eax
push 0
push 1
push 1
mov ecx, dword [ebp - 0x2c]
push ecx
mov ecx, dword [ebp - 0x58]
call fcn.00436647
mov eax, 1
jmp 0x438be9
cmp dword [ebp + 8], 0x22
jne 0x438ba3
mov edx, dword [ebp - 0x58]
mov eax, dword [edx + 0xe8]
mov dword [ebp - 0x50], eax
push 0x17
lea ecx, [ebp - 0x4c]
push ecx
push 1
mov ecx, dword [ebp - 0x58]
call fcn.00440655
mov edx, dword [ebp - 0x40]
cmp edx, dword [ebp - 0x3c]
jg 0x438b1e
mov eax, 1
jmp 0x438be9
mov dword [ebp - 0x30], 0
mov eax, dword [ebp - 0x58]
cmp dword [eax + 0xdc], 0
jle 0x438b42
mov ecx, dword [ebp - 0x58]
mov eax, dword [ebp - 0x3c]
xor edx, edx
div dword [ecx + 0xdc]
mov dword [ebp - 0x30], eax
mov ecx, dword [ebp - 0x58]
call fcn.00420050
sub eax, 1
mov edx, dword [ebp - 0x58]
mov ecx, dword [edx + 0xe8]
mov edx, dword [ebp - 0x30]
lea ecx, [ecx + edx - 1]
cmp eax, ecx
jge 0x438b71
mov ecx, dword [ebp - 0x58]
call fcn.00420050
sub eax, 1
mov dword [ebp - 0x60], eax
jmp 0x438b84
mov edx, dword [ebp - 0x58]
mov eax, dword [edx + 0xe8]
mov ecx, dword [ebp - 0x30]
lea edx, [eax + ecx - 1]
mov dword [ebp - 0x60], edx
mov eax, dword [ebp - 0x60]
mov dword [ebp - 0x54], eax
push 0
push 1
push 1
mov ecx, dword [ebp - 0x54]
push ecx
mov ecx, dword [ebp - 0x58]
call fcn.00436647
mov eax, 1
jmp 0x438be9
cmp dword [ebp + 8], 0x24
jne 0x438bc0
push 0
push 1
push 1
push 0
mov ecx, dword [ebp - 0x58]
call fcn.00436647
mov eax, 1
jmp 0x438be9
cmp dword [ebp + 8], 0x23
jne 0x438be7
push 0
push 1
push 1
mov ecx, dword [ebp - 0x58]
call fcn.00420050
sub eax, 1
push eax
mov ecx, dword [ebp - 0x58]
call fcn.00436647
mov eax, 1
jmp 0x438be9
xor eax, eax
mov esp, ebp
pop ebp
ret 4