Function at 0x10016920
Capabilities:
Log keystrokes via polling

Disassembly:
call dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp byte [0x101db4ab], 0
je 0x10016b2a
mov ecx, eax
sub ecx, dword [0x101db4a4]
cmp ecx, 0x64
jb 0x10016b2a
push ebx
push esi
push dword [0x10094134]
mov dword [0x101db4a4], eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
movzx ebx, ax
shr ebx, 0xf
push 0x1b
and bl, 1
call esi
shr eax, 0xf
test al, 1
je 0x1001697b
pop esi
mov byte [0x101db4ab], 0
pop ebx
ret
push dword [0x10094124]
call esi
shr eax, 0xf
test al, 1
je 0x10016a00
mov ecx, dword [0x101f4420]
mov esi, dword [ecx]
mov eax, esi
cmp eax, ecx
je 0x100169af
nop dword [eax + eax]
mov edx, dword [eax + 8]
cmp byte [edx + 0x5c], 0
jne 0x100169c6
mov eax, dword [eax]
cmp eax, ecx
jne 0x100169a0
cmp dword [0x101f4424], 0
je 0x10016b28
mov eax, dword [esi + 8]
pop esi
pop ebx
mov byte [eax + 0x5c], 1
ret
test bl, bl
jne 0x100169d3
mov byte [edx + 0x5c], bl
mov ecx, dword [0x101f4420]
mov eax, dword [eax]
cmp eax, ecx
jne 0x100169db
mov eax, dword [ecx]
mov esi, dword [eax + 8]
test bl, bl
jne 0x100169e9
mov byte [esi + 0x5c], 1
pop esi
pop ebx
ret
mov dword [eax + 8], edx
mov ecx, dword [0x101f4420]
cmp eax, dword [ecx]
cmove eax, ecx
mov eax, dword [eax + 4]
mov dword [eax + 8], esi
pop esi
pop ebx
ret
push dword [str.WS__b_t]
call esi
shr eax, 0xf
test al, 1
je 0x10016a6e
mov edx, dword [0x101f4420]
mov esi, dword [edx]
mov eax, esi
cmp eax, edx
je 0x100169af
nop dword [eax]
mov ecx, dword [eax + 8]
cmp byte [ecx + 0x5c], 0
jne 0x10016a34
mov eax, dword [eax]
cmp eax, edx
jne 0x10016a20
jmp 0x100169af
test bl, bl
jne 0x10016a41
mov byte [ecx + 0x5c], bl
mov edx, dword [0x101f4420]
cmp eax, dword [edx]
cmove eax, edx
mov eax, dword [eax + 4]
mov edx, dword [eax + 8]
test bl, bl
jne 0x10016a57
pop esi
mov byte [edx + 0x5c], 1
pop ebx
ret
mov dword [eax + 8], ecx
mov eax, dword [eax]
mov ecx, dword [0x101f4420]
cmp eax, ecx
jne 0x10016a68
mov eax, dword [ecx]
pop esi
mov dword [eax + 8], edx
pop ebx
ret
push dword [0x1009412c]
call esi
shr eax, 0xf
test al, 1
je 0x10016adb
mov edx, dword [0x101f4420]
mov esi, dword [edx]
mov eax, esi
cmp eax, edx
je 0x10016b28
nop
mov ecx, dword [eax + 8]
cmp byte [ecx + 0x5c], 0
jne 0x10016aa2
mov eax, dword [eax]
cmp eax, edx
jne 0x10016a90
pop esi
pop ebx
ret
cmp eax, esi
je 0x10016aab
mov ecx, dword [eax + 4]
jmp 0x10016ab1
mov ecx, dword [eax]
cmp ecx, edx
je 0x10016ab8
mov ecx, dword [ecx + 8]
mov byte [ecx + 0x5c], 1
mov edx, dword [eax + 4]
mov ecx, dword [eax]
push 0xc
push eax
mov dword [edx], ecx
mov edx, dword [eax]
mov ecx, dword [eax + 4]
mov dword [edx + 4], ecx
dec dword [0x101f4424]
call fcn.1004d7a1
add esp, 8
pop esi
pop ebx
ret
push dword [0x10094130]
call esi
shr eax, 0xf
test al, 1
je 0x10016b28
call dword [0x101db674]
mov esi, eax
test esi, esi
je 0x10016b28
mov edx, dword [0x101f4420]
mov ecx, dword [edx]
cmp ecx, edx
je 0x10016b28
mov eax, dword [ecx + 8]
cmp byte [eax + 0x5c], 0
jne 0x10016b14
mov ecx, dword [ecx]
cmp ecx, edx
jne 0x10016b02
pop esi
pop ebx
ret
push dword [eax]
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x150]
mov ecx, eax
call dword [sym.imp.Common.dll_public:_void___thiscall_CShip::set_target_struct_IObjRW__]
pop esi
pop ebx
ret