Function at 0x460afede
Capabilities:
Log keystrokes via polling

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x1c
mov eax, dword [0x460ec018]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, dword [ebp + 0xc]
mov ebx, 0x100
movsx eax, si
mov dword [ebp - 0x14], eax
mov eax, esi
push edi
mov edi, ecx
shr eax, 0x10
cwde
mov dword [ebp - 0x10], eax
test dword [edi + 0x5c], ebx
je 0x460b0026
cmp dword [edi + 0x60], 8
jne 0x460b0026
lea eax, [ebp - 0x14]
push eax
call fcn.460ae578
test eax, eax
jne 0x460b0026
mov eax, dword [edi]
lea ecx, [ebp - 0x14]
and dword [edi + 0x5c], 0xfffffbff
push ecx
mov esi, dword [eax + 0x54]
mov ecx, esi
call dword [0x460ed508]
mov ecx, edi
call esi
movzx ecx, word [ebp - 0x10]
xor ebx, ebx
movzx eax, word [ebp - 0x14]
mov edx, 0x84
shl ecx, 0x10
or ecx, eax
push ecx
mov ecx, dword [edi + 8]
push ebx
call fcn.460e77d1
cmp eax, 7
jne 0x460affcf
mov eax, dword [edi + 0x5c]
test eax, 0x100
je 0x460aff93
and eax, 0xfffffeff
mov dword [edi + 0x5c], eax
mov eax, dword [edi]
push ebx
mov esi, dword [eax + 0x44]
mov ecx, esi
call dword [0x460ed508]
mov ecx, edi
call esi
movzx ecx, word [ebp - 0x10]
mov edx, 0xa1
movzx eax, word [ebp - 0x14]
shl ecx, 0x10
or ecx, eax
push ecx
mov ecx, dword [edi + 8]
push 7
call fcn.460e77d1
mov eax, dword [edi]
push 1
mov esi, dword [eax + 0x44]
mov ecx, esi
call dword [0x460ed508]
mov ecx, edi
call esi
or dword [edi + 0x5c], 0x100
jmp 0x460b022f
mov ecx, dword [edi + 0x4c0]
mov eax, dword [edi + 0xa8]
mov dword [ecx + 0xb4], eax
xor eax, eax
mov dword [ecx + 0xb8], ebx
mov ecx, dword [edi + 0xa8]
cmp ecx, 0xffffffff
push ecx
setne al
dec eax
push ecx
and eax, 0xfffffffb
add eax, 0xd
push eax
push ecx
push ecx
mov ecx, edi
call fcn.460b0c84
push ebx
push 3
mov ecx, edi
call fcn.460b0244
mov ecx, dword [edi + 0xc]
mov edx, 0x402
push ebx
push ebx
call fcn.460e77d1
jmp 0x460b022f
lea eax, [ebp - 0x14]
mov ecx, edi
push eax
call fcn.460ae5bb
mov dword [ebp - 8], eax
cmp eax, 0xffffffff
jg 0x460b0045
and dword [edi + 0x5c], 0xfffffbff
jmp 0x460b022f
push 0x40
pop ecx
or dword [edi + 0x5c], ecx
mov eax, dword [edi + 0x5c]
test eax, 0x400
je 0x460b0074
and eax, 0xfffffbff
mov dword [edi + 0x5c], eax
test cl, cl
je 0x460b022f
push 2
push esi
mov ecx, edi
call fcn.460afbfc
jmp 0x460b022f
test ebx, eax
jne 0x460b00a9
mov eax, dword [edi]
push 1
mov esi, dword [eax + 0x44]
mov ecx, esi
call dword [0x460ed508]
mov ecx, edi
call esi
mov eax, dword [edi]
or dword [edi + 0x5c], ebx
push 0xfa
push 0x713c
mov esi, dword [eax + 0x38]
mov ecx, esi
call dword [0x460ed508]
mov ecx, edi
call esi
xor ebx, ebx
cmp dword [edi + 0x60], 3
jne 0x460b00d7
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
test ax, ax
push 0x11
setne bl
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
test ax, ax
je 0x460b00d7
or ebx, 2
mov eax, dword [ebp - 8]
xor esi, esi
mov ecx, dword [edi + 0xa0]
mov dword [ebp - 0x18], eax
mov dword [ebp - 0xc], ecx
sub ebx, esi
je 0x460b01ea
sub ebx, 1
je 0x460b01a8
sub ebx, 1
je 0x460b0190
sub ebx, 1
jne 0x460b01f2
cmp ecx, 0xffffffff
jne 0x460b0122
mov ecx, dword [edi + 0xa8]
test ecx, ecx
jns 0x460b011c
mov ecx, eax
mov dword [edi + 0xa0], ecx
mov ecx, dword [edi + 0xa4]
mov edx, dword [edi + 0xa0]
cmp ecx, edx
je 0x460b0154
xor eax, eax
cmp ecx, edx
push 0
setg al
push 0
push 0
lea eax, [eax*2 - 1]
add eax, edx
push eax
push ecx
mov ecx, edi
call fcn.460b0c84
mov eax, dword [ebp - 8]
cmp dword [edi + 0xa8], esi
jl 0x460b0169
or dword [edi + 0xa8], 0xffffffff
mov dword [edi + 0xa0], eax
push dword [edi + 0xa0]
mov ecx, edi
call fcn.460a750a
neg eax
sbb esi, esi
mov eax, dword [edi + 0xa0]
mov dword [ebp - 0x1c], eax
neg esi
mov eax, dword [ebp - 8]
add esi, 4
mov ecx, dword [ebp - 0x1c]
jmp 0x460b01f4
push eax
mov ecx, edi
call fcn.460a750a
neg eax
sbb esi, esi
mov eax, dword [ebp - 8]
add esi, 7
mov edx, eax
mov ecx, eax
jmp 0x460b01f7
push 0xd
pop esi
push ecx
mov ecx, edi
call fcn.460a750a
mov ecx, dword [edi + 0xa0]
mov edx, eax
mov eax, dword [ebp - 8]
neg edx
sbb edx, edx
inc edx
cmp ecx, 0xffffffff
jne 0x460b01cd
push 0xf
pop esi
jmp 0x460b01a2
cmp ecx, eax
jle 0x460b01d5
sub ecx, edx
jmp 0x460b01f4
jge 0x460b01db
add ecx, edx
jmp 0x460b01f4
test edx, edx
je 0x460b01f2
and dword [ebp - 0x18], 0
xor ecx, ecx
push 8
pop esi
jmp 0x460b01f4
cmp dword [edi + 0x60], 2
jne 0x460b01c8
jmp 0x460b0190
mov ecx, eax
mov edx, dword [ebp - 0xc]
push edx
push eax
push esi
push ecx
push dword [ebp - 0x18]
mov ecx, edi
call fcn.460b0c84
test eax, eax
je 0x460b022f
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
mov ecx, dword [ebp - 4]
xor eax, eax
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.460ea320
mov esp, ebp
pop ebp
ret 8