Function at 0x100147e0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
cmp byte [0x10166420], 0
push ebx
push esi
mov ebx, 0x56e210
je 0x10014860
push edi
push 0xffffffffffffffff
call ebx
push 0xffffffffffffffff
mov esi, eax
call ebx
add esp, 8
movzx edx, byte [eax + 0x718]
lea ecx, [edx*8]
sub ecx, edx
mov edi, dword [esi + ecx*4 + 0x5a0]
lea eax, [edi - 0x16]
cmp eax, 0x14
ja 0x1001485f
push 0xffffffffffffffff
call ebx
push 0xffffffffffffffff
mov esi, eax
call ebx
add esp, 8
movzx edx, byte [eax + 0x718]
lea ecx, [edx*8]
sub ecx, edx
cmp dword [esi + ecx*4 + 0x5a8], 1
jne 0x1001485f
push 0xffffffffffffffff
call ebx
add esp, 4
mov edx, 0x5e6080
mov ecx, eax
push 0
push 0
push edi
call edx
pop edi
cmp byte [0x10166421], 0
je 0x1001495d
cmp byte [0x10166422], 0
je 0x100148a6
mov eax, dword [0x1016621c]
mov ecx, dword [0x101668a0]
push 2
mov esi, dword [eax + 4]
add esi, 0x168e0
push esi
call fcn.100123f0
sub esp, 8
mov edx, 0x100a4410
mov ecx, esi
push 2
call fcn.10011f70
add esp, 0xc
cmp byte [0x10166423], 0
je 0x100148df
mov eax, dword [0x1016621c]
mov ecx, dword [0x101668a0]
push 2
mov esi, dword [eax + 4]
add esi, 0x16fa0
push esi
call fcn.100123f0
sub esp, 8
mov edx, 0x100a4410
mov ecx, esi
push 2
call fcn.10011f70
add esp, 0xc
cmp byte [0x10166425], 0
je 0x10014918
mov eax, dword [0x1016621c]
mov ecx, dword [0x101668a0]
push 2
mov esi, dword [eax + 4]
add esi, 0x15530
push esi
call fcn.100123f0
sub esp, 8
mov edx, 0x100a4410
mov ecx, esi
push 2
call fcn.10011f70
add esp, 0xc
cmp byte [0x10166424], 0
je 0x10014951
mov eax, dword [0x1016621c]
mov ecx, dword [0x101668a0]
push 2
mov esi, dword [eax + 4]
add esi, 0x15f40
push esi
call fcn.100123f0
sub esp, 8
mov edx, 0x100a4410
mov ecx, esi
push 2
call fcn.10011f70
add esp, 0xc
mov byte [0x10166909], 1
jmp 0x100149e4
cmp byte [0x10166909], 0
je 0x100149e4
mov eax, dword [0x1016621c]
sub esp, 8
mov edx, 0x100a4414
mov ecx, dword [eax + 4]
push 2
add ecx, 0x168e0
call fcn.10011f70
mov eax, dword [0x1016621c]
add esp, 4
mov edx, 0x100a4418
mov ecx, dword [eax + 4]
push 2
add ecx, 0x16fa0
call fcn.10011f70
mov eax, dword [0x1016621c]
add esp, 4
mov edx, 0x100a441c
mov ecx, dword [eax + 4]
push 2
add ecx, 0x15530
call fcn.10011f70
mov eax, dword [0x1016621c]
add esp, 4
mov edx, 0x100a4420
mov ecx, dword [eax + 4]
push 2
add ecx, 0x15f40
call fcn.10011f70
add esp, 0xc
mov byte [0x10166909], 0
call fcn.10014c80
cmp byte [0x1016642c], 0
je 0x10014a21
mov ecx, dword [0x101668a0]
push 1
push 0x58e1d9
call fcn.100123f0
sub esp, 8
mov edx, 0x100a45b4
mov ecx, 0x58e1d9
push 1
call fcn.10011f70
mov byte [0x10166908], 1
jmp 0x10014a45
cmp byte [0x10166908], 0
je 0x10014a48
sub esp, 8
mov edx, 0x100a45b8
mov ecx, 0x58e1d9
push 1
call fcn.10011f70
mov byte [0x10166908], 0
add esp, 0xc
cmp byte [0x1016642d], 0
je 0x10014a6a
mov ecx, dword [0x101668a0]
push 5
push 0x8d610f
call fcn.100123f0
mov edx, 0x100a45bc
jmp 0x10014a6f
mov edx, 0x100a45c4
sub esp, 8
mov ecx, 0x8d610f
push 5
call fcn.10011f70
add esp, 0xc
cmp byte [0x10166430], 0
je 0x10014b14
mov eax, dword [0x1016621c]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 0x22]
cmp byte [eax + 0x1c], 0
jge 0x10014abb
push 0xffffffffffffffff
call ebx
add esp, 4
cmp byte [eax + 0x718], 2
jne 0x10014abb
mov dword [0x10166904], 1
jmp 0x10014b14
mov eax, dword [0x10166904]
cmp eax, 2
jne 0x10014ae7
push 0xffffffffffffffff
call ebx
add esp, 4
mov edx, 0x5e61f0
mov ecx, eax
push dword [0x10166900]
call edx
mov dword [0x10166904], 0
jmp 0x10014b14
cmp eax, 1
jne 0x10014b14
push 0xffffffffffffffff
call ebx
push 0xffffffffffffffff
movzx eax, byte [eax + 0x718]
mov dword [0x10166900], eax
call ebx
add esp, 8
mov dword [0x10166904], 2
mov byte [eax + 0x718], 0
cmp byte [0x10166431], 0
je 0x10014c6d
mov eax, dword [0x1016621c]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 0x22]
cmp byte [eax + 0x165], 0x18
jne 0x10014c6d
push 0xffffffffffffffff
call ebx
push 0xffffffffffffffff
mov esi, eax
call ebx
add esp, 8
movzx edx, byte [eax + 0x718]
lea ecx, [edx*8]
sub ecx, edx
cmp dword [esi + ecx*4 + 0x5a8], 0
je 0x10014c63
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 1
call esi
test ax, ax
je 0x10014c63
push 2
call esi
test ax, ax
je 0x10014c63
mov eax, dword [0x101661e4]
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount64]
mov byte [ebp - 4], 1
mov ecx, dword [ebp - 4]
mov dword [eax + 0x188], 0
mov dword [eax + 0x18c], ecx
call esi
sub eax, dword [0x101668f8]
sbb edx, dword [0x101668fc]
cmp edx, dword [0x101668f4]
jb 0x10014c6d
ja 0x10014bce
cmp eax, dword [0x101668f0]
jbe 0x10014c6d
call esi
mov esi, dword [0x101668e8]
mov dword [0x101668f8], eax
mov eax, esi
mov dword [0x101668fc], edx
sub eax, 0
je 0x10014c28
sub eax, 1
jne 0x10014c55
mov ecx, dword [0x101661e4]
mov byte [ebp - 4], 1
mov eax, dword [ebp - 4]
mov byte [ebp - 4], 1
mov dword [ecx + 0x134], eax
mov eax, dword [ebp - 4]
mov dword [ecx + 0x130], 0
mov dword [ecx + 0x190], 0xff
mov dword [ecx + 0x194], eax
mov eax, dword [0x10166434]
jmp 0x10014c49
mov eax, dword [0x101661e4]
mov byte [ebp - 4], 1
mov ecx, dword [ebp - 4]
mov dword [eax + 0x188], 0xff
mov dword [eax + 0x18c], ecx
mov eax, dword [0x10166438]
cdq
mov dword [0x101668f4], edx
mov dword [0x101668f0], eax
mov eax, esi
inc esi
mov dword [0x101668e8], esi
cmp eax, 1
jle 0x10014c6d
mov dword [0x101668e8], 0
pop esi
pop ebx
mov esp, ebp
pop ebp
ret