Function at 0x60c670
Capabilities:
Log keystrokes via polling

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x66a728
push eax
mov dword fs:[0], esp
sub esp, 0x54
push ebx
push ebp
push esi
mov esi, ecx
push edi
mov eax, dword [esi + 4]
test eax, eax
jne 0x60c69c
xor eax, eax
jmp 0x60ca00
mov ecx, esi
call fcn.0060c570
mov ebx, eax
test ebx, ebx
je 0x60ca00
mov ecx, dword [esi + 4]
call fcn.0060ad60
test eax, eax
mov dword [esp + 0x20], eax
je 0x60ca00
mov ecx, dword [esi + 4]
call fcn.0060b5e0
mov edi, dword [esp + 0x78]
mov dword [esp + 0x24], eax
mov ecx, edi
call fcn.004a6c30
or ebp, 0xffffffff
cmp eax, 0xe
jne 0x60c8f0
mov eax, dword [esp + 0x74]
cmp eax, 5
ja case.0x60c6f1.3
jmp dword [eax*4 + 0x60ca18]
lea eax, [esp + 0x78]
mov ecx, edi
push eax
call fcn.004a7ac0
mov ecx, dword [esi + 4]
push eax
mov dword [esp + 0x70], 1
mov edx, dword [ecx + 0x10]
push edx
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
and al, 1
push eax
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setl al
push eax
push 1
call fcn.0055a0e0
add esp, 0x14
lea ecx, [esp + 0x78]
mov dword [esp + 0x6c], ebp
call fcn.00498970
jmp 0x60c8ff
lea ecx, [esp + 0x74]
push ecx
mov ecx, edi
call fcn.004a7ac0
mov edx, dword [esi + 4]
push eax
mov dword [esp + 0x70], 2
mov eax, dword [edx + 0x10]
push eax
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
and al, 1
push eax
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setl cl
push ecx
push 2
call fcn.0055a0e0
add esp, 0x14
lea ecx, [esp + 0x74]
mov dword [esp + 0x6c], ebp
call fcn.00498970
jmp 0x60c8ff
lea edx, [esp + 0x10]
mov ecx, edi
push edx
call fcn.004a7ac0
push eax
mov eax, dword [esi + 4]
mov dword [esp + 0x70], 3
mov ecx, dword [eax + 0x10]
push ecx
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
and al, 1
push eax
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setl dl
push edx
push 3
call fcn.0055a0e0
add esp, 0x14
lea ecx, [esp + 0x10]
mov dword [esp + 0x6c], ebp
call fcn.00498970
jmp 0x60c8ff
lea eax, [esp + 0x14]
mov ecx, edi
push eax
call fcn.004a7ac0
mov ecx, dword [esi + 4]
push eax
mov dword [esp + 0x70], 4
mov edx, dword [ecx + 0x10]
push edx
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
and al, 1
push eax
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setl al
push eax
push 4
call fcn.0055a0e0
add esp, 0x14
lea ecx, [esp + 0x14]
mov dword [esp + 0x6c], ebp
call fcn.00498970
jmp 0x60c8ff
lea ecx, [esp + 0x18]
push ecx
mov ecx, edi
call fcn.004a7ac0
mov edx, dword [esi + 4]
push eax
mov dword [esp + 0x70], 5
mov eax, dword [edx + 0x10]
push eax
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
and al, 1
push eax
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setl cl
push ecx
push 5
call fcn.0055a0e0
add esp, 0x14
lea ecx, [esp + 0x18]
mov dword [esp + 0x6c], ebp
call fcn.00498970
jmp 0x60c8ff
lea edx, [esp + 0x1c]
mov ecx, edi
push edx
call fcn.004a7ac0
push eax
mov eax, dword [esi + 4]
mov dword [esp + 0x70], 0
mov ecx, dword [eax + 0x10]
push ecx
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
and al, 1
push eax
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setl dl
push edx
push 1
call fcn.0055a0e0
add esp, 0x14
lea ecx, [esp + 0x1c]
mov dword [esp + 0x6c], ebp
call fcn.00498970
jmp 0x60c8ff
mov ecx, dword [esi + 4]
mov eax, dword [ebx]
push edi
mov edx, dword [ecx + 0x10]
mov ecx, ebx
push edx
call dword [eax + 0x20]
mov eax, dword [esp + 0x20]
mov ecx, esi
push eax
push ebx
call fcn.0060ca50
test eax, eax
je 0x60ca00
mov ecx, esi
call fcn.0060ca30
test eax, eax
je 0x60ca00
mov ecx, edi
call fcn.004a6c30
cmp eax, 9
je 0x60c95a
cmp eax, 0xe
jne 0x60c9fb
mov ecx, dword [esi + 4]
call fcn.0060b5e0
cmp eax, dword [esp + 0x24]
je 0x60c9fb
mov ecx, dword [esi + 4]
mov edx, dword [ecx]
call dword [edx + 0xa8]
jmp 0x60c9fb
push 4
lea ecx, [esp + 0x54]
mov dword [esp + 0x24], edi
call fcn.0049a090
lea eax, [esp + 0x50]
lea ecx, [esp + 0x20]
push eax
mov dword [esp + 0x70], 6
call fcn.004a74e0
push 4
lea ecx, [esp + 0x40]
call fcn.0049a090
push 4
lea ecx, [esp + 0x2c]
mov byte [esp + 0x70], 7
call fcn.0049a090
mov edx, dword [ebx]
lea eax, [esp + 0x28]
lea ecx, [esp + 0x50]
push eax
push ecx
mov ecx, ebx
mov byte [esp + 0x74], 8
call dword [edx + 0x7c]
mov edx, dword [ebx]
lea eax, [esp + 0x3c]
lea ecx, [esp + 0x28]
push eax
push ecx
mov ecx, ebx
call dword [edx + 0x6c]
push 0xfffffffffffffffe
lea edx, [esp + 0x40]
push 0xfffffffffffffffe
push edx
call fcn.0055d360
add esp, 0xc
lea ecx, [esp + 0x28]
mov byte [esp + 0x6c], 7
call fcn.0049a0b0
lea ecx, [esp + 0x3c]
mov byte [esp + 0x6c], 6
call fcn.0049a0b0
lea ecx, [esp + 0x50]
mov dword [esp + 0x6c], ebp
call fcn.0049a0b0
mov eax, 1
mov ecx, dword [esp + 0x64]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x60
ret 8