Function at 0x418586
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push edi
xor edi, edi
push 0x11
mov ebx, edi
mov dword [ebp - 4], edi
call esi
mov ecx, 0x8000
test cx, ax
je 0x4185a9
inc ebx
push 0x10
call esi
mov esi, dword [ebp + 0xc]
mov ecx, 0x8000
test cx, ax
je 0x4185ca
xor edx, edx
inc edx
test byte [esi + 0x20], 2
je 0x4185cd
mov ecx, edx
mov dword [ebp - 4], ecx
jmp 0x4185cf
xor edx, edx
inc edx
mov ecx, edi
mov eax, dword [ebp + 0x10]
cmp eax, 0x24
jg 0x41877c
je 0x418756
sub eax, 0xd
je 0x41871a
sub eax, 0x13
je 0x4186ff
dec eax
je 0x4186d8
dec eax
je 0x418673
dec eax
jne 0x41878a
test ebx, ebx
je 0x41860e
mov ecx, dword [esi + 4]
dec ecx
jmp 0x418628
mov eax, dword [esi + 0x60]
dec eax
push eax
push esi
push dword [ebp + 8]
call fcn.00417dad
mov ecx, eax
mov eax, dword [esi + 4]
cmp ecx, eax
jl 0x418628
lea ecx, [eax - 1]
test byte [esi + 0x20], 1
mov edx, dword [esi + 8]
jne 0x418637
lea edi, [edx - 1]
xor edx, edx
inc edx
mov eax, dword [ebp - 4]
push 1
test eax, eax
je 0x41864d
push edi
push ecx
push esi
push dword [ebp + 8]
call fcn.00418945
jmp 0x41865b
push edx
push 1
push edi
push ecx
push esi
push dword [ebp + 8]
call fcn.00417ea5
test ebx, ebx
je 0x41881d
push 1
push esi
push dword [ebp + 8]
call fcn.004184c0
jmp 0x41881d
mov eax, dword [esi + 0x60]
mov ebx, dword [ebp + 8]
cmp eax, 3
jle 0x418689
add eax, 0xfffffffd
push eax
push esi
push ebx
call fcn.004179a1
mov eax, dword [esi + 0x60]
dec eax
push eax
push esi
push ebx
call fcn.00417dad
mov ecx, eax
mov eax, dword [esi + 4]
cmp ecx, eax
jl 0x4186a1
lea ecx, [eax - 1]
test byte [esi + 0x20], 1
mov edx, dword [esi + 8]
jne 0x4186b0
lea edi, [edx - 1]
xor edx, edx
inc edx
mov eax, dword [ebp - 4]
push 1
test eax, eax
je 0x4186c7
push edi
push ecx
push esi
push ebx
call fcn.00418945
jmp 0x41881d
push edx
push 1
push edi
push ecx
push esi
push ebx
call fcn.00417ea5
jmp 0x41881d
push 3
pop eax
cmp dword [esi + 0x60], eax
jle 0x4186ed
sub eax, dword [esi + 0x60]
push eax
push esi
push dword [ebp + 8]
call fcn.004179a1
mov eax, dword [ebp - 4]
push eax
push esi
push dword [ebp + 8]
call fcn.00418bf5
jmp 0x41881d
cmp dword [esi + 0x98], edi
jne 0x41870f
push edi
push edx
push edi
jmp 0x418813
push edx
push edi
push edi
push edi
push edi
push esi
push dword [ebp + 8]
jmp 0x4186ce
cmp dword [esi + 0x98], edi
je 0x41881d
push edi
push esi
push dword [ebp + 8]
call fcn.004184c0
push dword [esi + 0x9c]
push dword [esi + 0x98]
push dword [esi + 0x94]
push dword [esi + 0x90]
push esi
push dword [ebp + 8]
call fcn.00417fad
jmp 0x41881d
test ebx, ebx
je 0x418769
mov eax, dword [esi + 0x6c]
neg eax
push eax
push esi
push dword [ebp + 8]
call fcn.004179a1
mov eax, dword [ebp - 4]
push eax
push esi
push dword [ebp + 8]
call fcn.00418bf5
push edi
jmp 0x418665
sub eax, 0x25
je 0x4187ef
dec eax
je 0x4187d2
dec eax
je 0x4187b6
dec eax
je 0x418791
mov eax, edx
jmp 0x41881f
test ebx, ebx
je 0x4187b0
push edx
push edi
push edi
push edi
push edi
push esi
push dword [ebp + 8]
call fcn.00417ea5
push 1
push esi
push dword [ebp + 8]
call fcn.004179a1
jmp 0x41881d
push ecx
push edx
push edi
push edx
jmp 0x418814
test byte [esi + 0x20], 1
je 0x4187cd
test ebx, ebx
je 0x4187c8
mov eax, dword [esi + 0x58]
sub eax, dword [esi + 0x5c]
jmp 0x418803
push dword [esi + 0x50]
jmp 0x418804
push ecx
push edx
push edx
jmp 0x418813
test ebx, ebx
je 0x4187e8
push edx
push edi
push edi
push edi
push edi
push esi
push dword [ebp + 8]
call fcn.00417ea5
push 0xffffffffffffffff
jmp 0x4187a5
push ecx
push edi
push edi
push 0xffffffffffffffff
jmp 0x418814
test byte [esi + 0x20], 1
je 0x41880f
test ebx, ebx
je 0x4187fe
mov eax, dword [esi + 0x70]
jmp 0x418801
mov eax, dword [esi + 0x50]
neg eax
push eax
push esi
push dword [ebp + 8]
call fcn.00417c8b
jmp 0x41881d
push ecx
push edi
push 0xffffffffffffffff
push edi
push esi
push dword [ebp + 8]
call fcn.00418b2b
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret 0xc