Function at 0x10029af0
Capabilities:
Log keystrokes
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x10063f85
mov eax, dword fs:[0]
push eax
sub esp, 0x38
mov eax, dword [0x1007f054]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
cmp byte [0x10084e17], 0
je 0x10029dd3
mov ebx, dword [sym.imp.USER32.dll_GetKeyState]
xor edi, edi
mov esi, 0x8000
mov ecx, edi
call fcn.10022060
mov eax, dword [0x10084e5c]
mov ecx, dword [0x10084e60]
cmp eax, ecx
je 0x10029d61
nop
cmp dword [eax], edi
je 0x10029b5b
add eax, 4
cmp eax, ecx
jne 0x10029b50
cmp eax, ecx
je 0x10029d61
push 0x14
call ebx
test ax, ax
jne 0x10029b88
push 0xa0
call ebx
test si, ax
jne 0x10029b88
push 0xa1
call ebx
mov byte [ebp - 0x41], 0
test si, ax
je 0x10029b8c
mov byte [ebp - 0x41], 1
push 2
push edi
call dword [sym.imp.USER32.dll_MapVirtualKeyA]
movsx esi, al
push esi
call fcn.1004aadd
movsx ecx, al
movzx eax, cl
shl cx, 8
mov dword [ebp - 0x40], 0
or cx, ax
mov word [ebp - 0x40], 0
mov dword [ebp - 0x2c], 0xf
mov dword [ebp - 0x30], 1
mov byte [ebp - 0x40], cl
push esi
mov dword [ebp - 4], 0
call fcn.1004aaad
movsx ecx, al
mov ebx, 0xf
movzx eax, cl
add esp, 8
shl cx, 8
mov dword [ebp - 0x28], 0
or cx, ax
mov word [ebp - 0x28], 0
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x18], 1
mov byte [ebp - 0x28], cl
mov byte [ebp - 4], 1
mov esi, dword [ebp - 0x28]
cmp edi, 8
jne 0x10029c43
mov eax, dword [0x1007fc68]
test eax, eax
je 0x10029cd9
cmp dword [0x1007fc6c], 0x10
lea ecx, [eax - 1]
mov eax, 0x1007fc58
mov dword [0x1007fc68], ecx
cmovae eax, dword [0x1007fc58]
mov byte [eax + ecx], 0
jmp 0x10029cd9
cmp dword [0x1007fc84], 0x10
lea eax, [ebp - 0x28]
mov edx, dword [0x1007fc80]
mov ecx, 0x1007fc70
cmovae ecx, dword [0x1007fc70]
push 1
push eax
push ecx
call fcn.10025440
add esp, 0xc
cmp eax, 0xffffffff
je 0x10029c79
cmp byte [0x10084e2c], 0
je 0x10029ca6
cmp dword [0x1007fc3c], 0x10
lea eax, [ebp - 0x28]
mov edx, dword [0x1007fc38]
mov ecx, 0x1007fc28
cmovae ecx, dword [0x1007fc28]
push 1
push eax
push ecx
call fcn.10025440
add esp, 0xc
cmp eax, 0xffffffff
je 0x10029cd9
cmp dword [0x1007fc68], 0x50
jae 0x10029cd9
cmp byte [ebp - 0x41], 0
lea ecx, [ebp - 0x28]
lea eax, [ebp - 0x40]
cmove eax, ecx
cmp dword [eax + 0x14], 0x10
mov ecx, dword [eax + 0x10]
jb 0x10029cc7
mov eax, dword [eax]
push ecx
push eax
mov ecx, 0x1007fc58
call fcn.10009860
mov ebx, dword [ebp - 0x14]
mov esi, dword [ebp - 0x28]
cmp byte [0x10084e2d], 0
je 0x10029ce7
call fcn.1002a250
mov byte [ebp - 4], 0
cmp ebx, 0x10
jb 0x10029d1b
lea ecx, [ebx + 1]
mov eax, esi
cmp ecx, 0x1000
jb 0x10029d11
mov esi, dword [esi - 4]
add ecx, 0x23
sub eax, esi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10029def
push ecx
push esi
call fcn.1003b38b
add esp, 8
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x2c]
cmp edx, 0x10
jb 0x10029d56
mov ecx, dword [ebp - 0x40]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x10029d4c
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10029def
push edx
push ecx
call fcn.1003b38b
add esp, 8
mov ebx, dword [sym.imp.USER32.dll_GetKeyState]
mov esi, 0x8000
inc edi
cmp edi, 0xc8
jl 0x10029b35
mov ecx, 0xd
call fcn.10022060
mov eax, dword [0x10084e5c]
mov ecx, dword [0x10084e60]
cmp eax, ecx
je 0x10029dd3
cmp dword [eax], 0xd
je 0x10029d95
add eax, 4
cmp eax, ecx
jne 0x10029d87
jmp 0x10029dd3
cmp eax, ecx
je 0x10029dd3
cmp byte [0x10084e2d], 0
jne 0x10029da7
call fcn.1002a250
push 0
push 0x10072cfb
mov ecx, 0x1007fc58
mov dword [0x10084e24], 0
mov dword [0x10084e28], 0
call fcn.10009770
mov byte [0x10084e17], 0
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.1003b02a
mov esp, ebp
pop ebp
ret
call fcn.100485a9
int3