Function at 0x1003b610
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
cmp byte [0x100fa7e0], 0
push ebx
push esi
mov ebx, 0x56e210
je 0x1003b690
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 0x1003b68f
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 0x1003b68f
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 [0x100fa7e1], 0
je 0x1003b78d
cmp byte [0x100fa7e2], 0
je 0x1003b6d6
mov eax, dword [0x100fa5cc]
mov ecx, dword [0x100fac38]
push 2
mov esi, dword [eax + 4]
add esi, 0x168e0
push esi
call fcn.1003ac00
sub esp, 8
mov edx, 0x100e6968
mov ecx, esi
push 2
call fcn.1003a8a0
add esp, 0xc
cmp byte [0x100fa7e3], 0
je 0x1003b70f
mov eax, dword [0x100fa5cc]
mov ecx, dword [0x100fac38]
push 2
mov esi, dword [eax + 4]
add esi, 0x16fa0
push esi
call fcn.1003ac00
sub esp, 8
mov edx, 0x100e6968
mov ecx, esi
push 2
call fcn.1003a8a0
add esp, 0xc
cmp byte [0x100fa7e5], 0
je 0x1003b748
mov eax, dword [0x100fa5cc]
mov ecx, dword [0x100fac38]
push 2
mov esi, dword [eax + 4]
add esi, 0x15530
push esi
call fcn.1003ac00
sub esp, 8
mov edx, 0x100e6968
mov ecx, esi
push 2
call fcn.1003a8a0
add esp, 0xc
cmp byte [0x100fa7e4], 0
je 0x1003b781
mov eax, dword [0x100fa5cc]
mov ecx, dword [0x100fac38]
push 2
mov esi, dword [eax + 4]
add esi, 0x15f40
push esi
call fcn.1003ac00
sub esp, 8
mov edx, 0x100e6968
mov ecx, esi
push 2
call fcn.1003a8a0
add esp, 0xc
mov byte [0x100fad30], 1
jmp 0x1003b814
cmp byte [0x100fad30], 0
je 0x1003b814
mov eax, dword [0x100fa5cc]
sub esp, 8
mov edx, 0x100e6970
mov ecx, dword [eax + 4]
push 2
add ecx, 0x168e0
call fcn.1003a8a0
mov eax, dword [0x100fa5cc]
add esp, 4
mov edx, 0x100e696c
mov ecx, dword [eax + 4]
push 2
add ecx, 0x16fa0
call fcn.1003a8a0
mov eax, dword [0x100fa5cc]
add esp, 4
mov edx, 0x100e6978
mov ecx, dword [eax + 4]
push 2
add ecx, 0x15530
call fcn.1003a8a0
mov eax, dword [0x100fa5cc]
add esp, 4
mov edx, 0x100e6974
mov ecx, dword [eax + 4]
push 2
add ecx, 0x15f40
call fcn.1003a8a0
add esp, 0xc
mov byte [0x100fad30], 0
call fcn.1003bab0
cmp byte [0x100fa7ec], 0
je 0x1003b851
mov ecx, dword [0x100fac38]
push 1
push 0x58e1d9
call fcn.1003ac00
sub esp, 8
mov edx, 0x100e6afc
mov ecx, 0x58e1d9
push 1
call fcn.1003a8a0
mov byte [0x100fad24], 1
jmp 0x1003b875
cmp byte [0x100fad24], 0
je 0x1003b878
sub esp, 8
mov edx, 0x100e6b18
mov ecx, 0x58e1d9
push 1
call fcn.1003a8a0
mov byte [0x100fad24], 0
add esp, 0xc
cmp byte [0x100fa7ed], 0
je 0x1003b89a
mov ecx, dword [0x100fac38]
push 5
push 0x8d610f
call fcn.1003ac00
mov edx, 0x100e6b10
jmp 0x1003b89f
mov edx, 0x100e6b1c
sub esp, 8
mov ecx, 0x8d610f
push 5
call fcn.1003a8a0
add esp, 0xc
cmp byte [0x100fa7f0], 0
je 0x1003b94a
mov eax, dword [0x100fa5cc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0x2f3a]
cmp byte [eax + 0x9c], 0
jge 0x1003b8f1
push 0xffffffffffffffff
call ebx
add esp, 4
cmp byte [eax + 0x718], 2
jne 0x1003b8f1
mov dword [0x100fad40], 1
jmp 0x1003b94a
mov eax, dword [0x100fad40]
cmp eax, 2
jne 0x1003b91d
push 0xffffffffffffffff
call ebx
add esp, 4
mov edx, 0x5e61f0
mov ecx, eax
push dword [0x100fad20]
call edx
mov dword [0x100fad40], 0
jmp 0x1003b94a
cmp eax, 1
jne 0x1003b94a
push 0xffffffffffffffff
call ebx
push 0xffffffffffffffff
movzx eax, byte [eax + 0x718]
mov dword [0x100fad20], eax
call ebx
add esp, 8
mov dword [0x100fad40], 2
mov byte [eax + 0x718], 0
cmp byte [0x100fa7f1], 0
je 0x1003baa6
mov eax, dword [0x100fa5cc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0x2f3a]
cmp byte [eax + 0x188], 0x18
jne 0x1003baa6
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 0x1003ba9c
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 1
call esi
test ax, ax
je 0x1003ba9c
push 2
call esi
test ax, ax
je 0x1003ba9c
mov eax, dword [0x100fa594]
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 [0x100fad38]
sbb edx, dword [0x100fad3c]
cmp edx, dword [0x100fad2c]
jb 0x1003baa6
ja 0x1003ba07
cmp eax, dword [0x100fad28]
jbe 0x1003baa6
call esi
mov esi, dword [0x100fad44]
mov dword [0x100fad38], eax
mov eax, esi
mov dword [0x100fad3c], edx
sub eax, 0
je 0x1003ba61
sub eax, 1
jne 0x1003ba8e
mov ecx, dword [0x100fa594]
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 [0x100fa7f4]
jmp 0x1003ba82
mov eax, dword [0x100fa594]
mov byte [ebp - 4], 1
mov ecx, dword [ebp - 4]
mov dword [eax + 0x188], 0xff
mov dword [eax + 0x18c], ecx
mov eax, dword [0x100fa7f8]
cdq
mov dword [0x100fad2c], edx
mov dword [0x100fad28], eax
mov eax, esi
inc esi
mov dword [0x100fad44], esi
cmp eax, 1
jle 0x1003baa6
mov dword [0x100fad44], 0
pop esi
pop ebx
mov esp, ebp
pop ebp
ret