Function at 0x10029850
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push edi
mov edi, dword [0x101c93a8]
test edi, edi
je 0x10029b76
mov ecx, edi
call fcn.10010b00
test al, al
jne 0x10029b76
cmp byte [0x101cf569], al
je 0x10029b76
mov eax, dword fs:[0x2c]
mov ecx, dword [0x101cf110]
push ebx
push esi
mov esi, dword [eax + ecx*4]
mov eax, dword [0x102b9498]
cmp eax, dword [esi + 4]
jle 0x100298d2
push 0x102b9498
call fcn.10121ee8
add esp, 4
cmp dword [0x102b9498], 0xffffffff
jne 0x100298d2
push 0x102b9498
mov dword [0x102b9490], 0
mov dword [0x102b948c], 0x101a70b4
call fcn.10121e9e
add esp, 4
cmp byte [0x101cf74d], 0
mov ebx, dword [sym.imp.USER32.dll_GetAsyncKeyState]
jne 0x10029917
cmp byte [0x101cf74f], 0
jne 0x10029917
cmp byte [0x101cf74c], 0
jne 0x10029917
mov eax, dword [0x102b948c]
mov eax, dword [eax]
test eax, eax
jne 0x10029905
mov dword [0x102b9490], eax
jmp 0x10029917
push eax
call ebx
shr eax, 0xf
and al, 1
movzx eax, al
mov dword [0x102b9490], eax
jne 0x1002992d
cmp byte [0x101cf58a], 0
jne 0x1002992d
cmp byte [0x101cf74e], 0
je 0x100299c6
mov eax, dword [0x101cf750]
cmp eax, dword [0x101a70b8]
jge 0x100299c6
cmp byte [0x101cf6f4], 0
mov byte [0x101cf74e], 1
je 0x100299cd
mov al, 1
mov byte [0x101cf6f5], al
mov eax, dword [0x102b949c]
cmp eax, dword [esi + 4]
jle 0x10029999
push 0x102b949c
call fcn.10121ee8
add esp, 4
cmp dword [0x102b949c], 0xffffffff
jne 0x10029999
push 0x102b949c
mov dword [0x102b94b0], 0
mov dword [0x102b94ac], 0x101a70c0
call fcn.10121e9e
add esp, 4
cmp byte [0x101cf74e], 0
jne 0x100299f3
cmp byte [0x101cf74f], 0
jne 0x100299f3
cmp byte [0x101cf74c], 0
jne 0x100299f3
mov eax, dword [0x102b94ac]
mov eax, dword [eax]
test eax, eax
jne 0x100299e1
mov dword [0x102b94b0], eax
jmp 0x100299f3
mov byte [0x101cf74e], 0
cmp byte [0x101cf6f5], 0
jne 0x1002994e
xor al, al
jmp 0x10029950
push eax
call ebx
shr eax, 0xf
and al, 1
movzx eax, al
mov dword [0x102b94b0], eax
jne 0x100299fc
cmp byte [0x101cf74d], 0
je 0x10029a09
cmp dword [0x101cf750], 0
je 0x10029a09
mov al, 1
jmp 0x10029a0b
xor al, al
mov byte [0x101cf74d], al
mov eax, dword [0x102b94a8]
cmp eax, dword [esi + 4]
jle 0x10029a54
push 0x102b94a8
call fcn.10121ee8
add esp, 4
cmp dword [0x102b94a8], 0xffffffff
jne 0x10029a54
push 0x102b94a8
mov dword [0x102b94a4], 0
mov dword [0x102b94a0], 0x101a70c4
call fcn.10121e9e
add esp, 4
cmp byte [0x101cf74d], 0
jne 0x10029b38
cmp byte [0x101cf74e], 0
jne 0x10029b38
cmp byte [0x101cf74c], 0
jne 0x10029b38
cmp dword [0x101cf6f8], 0
je 0x10029a91
cmp byte [0x101cf6e6], 0
jne 0x10029b38
cmp byte [0x101cf550], 0
jne 0x10029b38
mov esi, dword [ebp + 8]
test esi, esi
je 0x10029b38
mov eax, dword [0x101cf6ec]
sub eax, 0
je 0x10029ae3
sub eax, 2
je 0x10029abd
sub eax, 1
jmp 0x10029b05
mov eax, dword [0x102b94a0]
mov eax, dword [eax]
test eax, eax
jne 0x10029acf
mov dword [0x102b94a4], eax
jmp 0x10029b07
push eax
call ebx
shr eax, 0xf
and al, 1
movzx eax, al
mov dword [0x102b94a4], eax
jne 0x10029b38
jmp 0x10029b07
mov eax, dword [0x102b94a0]
mov eax, dword [eax]
test eax, eax
jne 0x10029af5
mov dword [0x102b94a4], eax
jmp 0x10029b38
push eax
call ebx
shr eax, 0xf
and al, 1
movzx eax, al
mov dword [0x102b94a4], eax
je 0x10029b38
cmp byte [0x101cf589], 0
jne 0x10029b1f
cmp dword [0x101cf6b4], 3
jne 0x10029b38
test byte [esi + 0x24], 1
je 0x10029b38
cmp byte [0x101cf6e5], 0
je 0x10029b31
mov ecx, edi
call fcn.10010d70
jmp 0x10029b33
mov al, 1
mov byte [0x101cf74f], al
mov al, byte [0x101cf6e4]
mov byte [0x101cf74c], al
pop esi
pop ebx
test al, al
je 0x10029b58
mov word [0x101cf74d], 0
mov byte [0x101cf74f], 0
mov al, byte [0x101cf74f]
mov byte [0x101cf550], al
mov al, byte [0x101cf74d]
mov byte [0x101cf6f6], al
mov al, byte [0x101cf74e]
mov byte [0x101cf588], al
pop edi
pop ebp
ret 4