Function at 0x460af534
Capabilities:
Log keystrokes via polling

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x14
mov eax, dword [0x460ec018]
xor eax, esp
mov dword [esp + 0x10], eax
push ebx
push esi
push edi
mov edi, ecx
test byte [edi + 0x5c], 0x40
jne 0x460af911
cmp dword [edi + 0x9c], 0
mov ebx, dword [ebp + 8]
jne 0x460af56e
cmp ebx, 0x73
jne 0x460af911
and dword [esp + 0x10], 0
cmp dword [edi + 0x60], 3
jne 0x460af589
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
mov dword [esp + 0x10], eax
cmp dword [ebp + 0x10], 0
jne 0x460af592
or ebx, 0xffffffff
mov eax, dword [edi]
push 0x713c
mov esi, dword [eax + 0x3c]
mov ecx, esi
call dword [0x460ed508]
mov ecx, edi
call esi
test ebx, ebx
jns 0x460af630
mov edx, dword [ebp + 8]
cmp edx, 0x24
ja 0x460af6fb
je 0x460af62e
mov eax, edx
sub eax, 0xd
je 0x460af78c
sub eax, 0xe
je 0x460af78c
sub eax, 5
je 0x460af6db
sub eax, 1
je 0x460af61d
sub eax, 1
je 0x460af5fa
sub eax, 1
jne 0x460af911
mov ebx, dword [edi + 0x9c]
dec ebx
jmp 0x460af785
mov ebx, dword [edi + 0x98]
mov eax, dword [edi + 0x9c]
dec ebx
add ebx, dword [edi + 0xa4]
cmp ebx, eax
jl 0x460af785
lea ebx, [eax - 1]
jmp 0x460af785
mov ebx, dword [edi + 0xa4]
sub ebx, dword [edi + 0x98]
add ebx, 1
jns 0x460af630
xor ebx, ebx
xor eax, eax
lea edx, [esp + 0x18]
cmp dword [edi + 0xa4], ebx
push edx
setg al
mov dword [esp + 0x18], eax
mov eax, dword [edi + 0x10]
add eax, 8
push eax
mov ecx, dword [eax]
mov esi, dword [ecx + 0x48]
mov ecx, esi
call dword [0x460ed508]
call esi
cmp dword [edi + 0x60], 2
jne 0x460af87d
cmp dword [ebp + 8], 0x20
mov ecx, edi
jne 0x460af86a
push ebx
call fcn.460a750a
push ebx
mov ecx, edi
mov dword [esp + 0x14], eax
call fcn.460a750a
neg eax
mov ecx, edi
push 0
push ebx
sbb eax, eax
add eax, 5
push eax
push ebx
push ebx
call fcn.460b0c84
test eax, eax
je 0x460af8da
mov eax, dword [edi]
mov ecx, 0x8005
or dword [edi + 0x5c], 0x1000
push 0
mov dword [edi + 0x64], ecx
mov esi, dword [eax + 0x98]
push ecx
mov ecx, esi
call dword [0x460ed508]
mov ecx, edi
call esi
cmp dword [esp + 0x10], 0
je 0x460af8da
mov dword [edi + 0x64], 0x8008
jmp 0x460af8da
mov ebx, dword [edi + 0xa4]
test ebx, ebx
jns 0x460af630
cmp dword [edi + 0x9c], 0
jne 0x460af785
jmp 0x460af911
cmp edx, 0x73
ja 0x460af7fe
je 0x460af78c
cmp edx, 0x26
jbe 0x460af775
cmp edx, 0x28
jbe 0x460af75f
cmp edx, 0x6f
jne 0x460af911
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
test ax, ax
je 0x460af911
cmp dword [edi + 0x60], 3
jne 0x460af911
mov eax, dword [edi + 0x9c]
xor ebx, ebx
push ebx
push ebx
push 1
dec eax
mov ecx, edi
push eax
push ebx
call fcn.460b0c84
mov eax, dword [edi]
mov esi, dword [eax + 0x98]
jmp 0x460af856
mov ebx, dword [edi + 0x9c]
mov eax, dword [edi + 0xa4]
dec ebx
cmp eax, ebx
jge 0x460af785
lea ebx, [eax + 1]
jmp 0x460af785
mov ebx, dword [edi + 0xa4]
test ebx, ebx
jg 0x460af5f4
xor ebx, ebx
test ebx, ebx
jmp 0x460af62c
cmp dword [edi + 0x60], 8
jne 0x460af911
cmp edx, 0xd
jne 0x460af7a3
mov esi, dword [edi + 0xa4]
jmp 0x460af7a9
mov esi, dword [edi + 0xa8]
mov ecx, dword [edi + 0x4c0]
xor eax, eax
cmp edx, 0xd
push esi
sete al
mov dword [ecx + 0xb8], eax
xor eax, eax
cmp esi, 0xffffffff
mov dword [ecx + 0xb4], esi
push esi
setne al
mov ecx, edi
dec eax
and eax, 0xfffffffb
add eax, 0xd
push eax
push esi
push esi
call fcn.460b0c84
xor ebx, ebx
mov ecx, edi
push ebx
push 3
call fcn.460b0244
mov ecx, dword [edi + 0xc]
mov edx, 0x402
push ebx
push ebx
call fcn.460e77d1
jmp 0x460af911
sub edx, 0xbf
je 0x460af71d
sub edx, 0x1d
jne 0x460af911
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
test ax, ax
je 0x460af911
cmp dword [edi + 0x60], 3
jne 0x460af911
mov eax, dword [edi + 0xa4]
xor ebx, ebx
or dword [edi + 0xa0], 0xffffffff
mov ecx, edi
push ebx
push ebx
push 9
push eax
push eax
call fcn.460b0c84
mov ecx, dword [edi]
mov esi, dword [ecx + 0x98]
push ebx
push 1
mov ecx, esi
call dword [0x460ed508]
mov ecx, edi
call esi
jmp 0x460af911
push 1
push ebx
push 0
call fcn.460ae3ab
mov dword [edi + 0x64], 0x8005
jmp 0x460af8da
cmp dword [esp + 0x10], 0
je 0x460af8ae
cmp dword [edi + 0x60], 3
jne 0x460af8ae
or dword [edi + 0xa8], 0xffffffff
cmp dword [edi + 0xa0], 0
jge 0x460af8a0
mov dword [edi + 0xa0], ebx
push 0
push ebx
push 0xd
push ebx
push dword [edi + 0xa0]
jmp 0x460af8d3
mov eax, dword [edi + 0xa4]
cmp eax, ebx
jne 0x460af8cd
push eax
mov ecx, edi
call fcn.460a750a
test eax, eax
je 0x460af8cd
mov ecx, edi
call fcn.460aee10
jmp 0x460af911
push ebx
push ebx
push 0xf
push ebx
push ebx
mov ecx, edi
call fcn.460b0c84
mov ecx, edi
call fcn.460aee10
push dword [esp + 0x14]
mov ecx, edi
push ebx
call fcn.460b0a98
mov eax, dword [edi]
push 0
push 1
mov esi, dword [eax + 0x98]
mov ecx, esi
call dword [0x460ed508]
mov ecx, edi
call esi
mov eax, dword [edi + 0xa4]
mov dword [edi + 0xa8], eax
mov ecx, dword [esp + 0x1c]
xor eax, eax
pop edi
pop esi
pop ebx
xor ecx, esp
inc eax
call fcn.460ea320
mov esp, ebp
pop ebp
ret 0xc