Function at 0x10029b90
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x101ad878
mov eax, dword fs:[0]
push eax
sub esp, 0x3c
push ebx
push esi
push edi
mov eax, dword [0x1021ae44]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
cmp dword [edi + 0x284], 0
je 0x1002a094
call fcn.1004f78f
mov ecx, dword [eax + 4]
call fcn.1004bb8f
xor esi, esi
mov dword [ebp - 4], 0
mov dword [ebp - 0x18], esi
cmp dword [ebp + 0x18], esi
je 0x10029bf9
push dword [edi + 0x20]
call dword [sym.imp.USER32.dll_GetDC]
push eax
call fcn.10042672
mov esi, eax
mov dword [ebp - 0x18], eax
movaps xmm0, xmmword [0x101f7bf0]
push dword [edi + 0x20]
movups xmmword [ebp - 0x48], xmm0
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x10029c3f
push ecx
push 0
lea eax, [ebp - 0x38]
mov ecx, edi
push eax
call fcn.1002c230
lea ecx, [ebp - 0x48]
cmp ecx, eax
je 0x10029c3f
mov ecx, dword [eax + 4]
mov edx, dword [eax]
mov dword [ebp - 0x1c], ecx
mov ecx, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x10], edx
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x14], eax
jmp 0x10029c57
mov eax, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x40]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x20], ecx
mov ecx, dword [ebp - 0x44]
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x10], eax
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x24], ebx
test ebx, ebx
js 0x10029c6f
mov eax, dword [edi + 0x2c8]
cmp ebx, eax
cmovl ebx, eax
mov dword [ebp - 0x24], ebx
mov ecx, dword [ebp + 0x10]
mov dword [ebp + 0x10], ecx
test ecx, ecx
js 0x10029c87
mov eax, dword [edi + 0x2c8]
cmp ecx, eax
cmovl ecx, eax
mov dword [ebp + 0x10], ecx
mov eax, dword [ebp + 0xc]
mov dword [edi + 0x140], 0xffffffff
mov dword [edi + 0x144], 0xffffffff
mov dword [ebp + 0xc], eax
test eax, eax
js 0x10029cc5
mov edx, dword [edi + 0x2d0]
cmp eax, edx
jge 0x10029cc5
movsx ecx, ax
shr eax, 0x10
cwde
mov dword [edi + 0x140], ecx
mov dword [edi + 0x144], eax
mov dword [ebp + 0xc], edx
mov ecx, dword [ebp + 0x14]
mov dword [ebp + 8], ecx
test ecx, ecx
js 0x10029cdd
mov eax, dword [edi + 0x2d0]
cmp ecx, eax
cmovl ecx, eax
mov dword [ebp + 8], ecx
cmp dword [ebp + 0x1c], 0
je 0x10029f59
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
movzx eax, ax
shr eax, 0xf
mov dword [edi + 0xec], eax
mov ecx, dword [edi + 0x580]
mov eax, ecx
neg eax
sbb eax, eax
mov dword [ebp + 0x14], eax
test ecx, ecx
je 0x10029e23
lea eax, [edi + 0x574]
nop dword [eax + eax]
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x30], 0xffffffff
push ecx
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x2c], 0xffffffff
push ecx
lea ecx, [ebp + 0x14]
push ecx
mov ecx, eax
call fcn.10034ce0
mov eax, dword [ebp - 0x30]
test eax, eax
js 0x10029e02
cmp eax, dword [edi + 0x2c4]
jge 0x10029e02
mov esi, dword [ebp - 0x2c]
test esi, esi
js 0x10029e02
cmp esi, dword [edi + 0x2cc]
jge 0x10029e02
push esi
push eax
mov ecx, edi
call fcn.10011240
mov ecx, eax
test ecx, ecx
je 0x10029d83
mov eax, dword [ecx]
call dword [eax + 0x48]
and eax, 0xfffffffd
mov ecx, edi
push eax
push esi
push dword [ebp - 0x30]
call fcn.1002ed30
mov eax, dword [ebp - 0x30]
cmp ebx, eax
jg 0x10029da8
cmp eax, dword [ebp + 0x10]
jg 0x10029da8
cmp dword [ebp + 0xc], esi
jg 0x10029da8
cmp esi, dword [ebp + 8]
jle 0x10029e10
cmp dword [ebp - 0x10], 0
jl 0x10029e10
mov ecx, dword [ebp - 0x1c]
test ecx, ecx
js 0x10029e10
mov edx, dword [ebp - 0x20]
test edx, edx
js 0x10029e10
cmp dword [ebp - 0x14], 0
jl 0x10029e10
cmp dword [ebp - 0x10], edx
jg 0x10029e10
cmp ecx, dword [ebp - 0x14]
jg 0x10029e10
cmp eax, dword [ebp - 0x10]
jl 0x10029e10
cmp eax, edx
jg 0x10029e10
cmp esi, ecx
jl 0x10029e10
cmp esi, dword [ebp - 0x14]
jg 0x10029e10
cmp dword [ebp + 0x18], 0
je 0x10029df7
mov ecx, dword [ebp - 0x18]
test ecx, ecx
je 0x10029df7
push ecx
push esi
push eax
mov ecx, edi
call fcn.10029670
jmp 0x10029e10
push esi
push eax
mov ecx, edi
call fcn.1002f960
jmp 0x10029e10
push dword [ebp - 0x28]
lea ecx, [edi + 0x574]
call fcn.10034bf0
cmp dword [ebp + 0x14], 0
lea eax, [edi + 0x574]
jne 0x10029d20
mov esi, dword [ebp - 0x18]
mov eax, dword [edi + 0x278]
test dword [edi + 0x274], eax
jne 0x10029f56
test ebx, ebx
js 0x1002a07c
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp + 8]
test edx, edx
js 0x10029f5f
test eax, eax
js 0x10029f5f
test ecx, ecx
js 0x10029f5f
mov ecx, dword [edi + 0x59c]
mov eax, ecx
neg eax
sbb eax, eax
mov dword [ebp + 0x14], eax
test ecx, ecx
je 0x10029fdc
lea eax, [ebp - 0x30]
mov dword [ebp - 0x30], 0xffffffff
push eax
lea eax, [ebp - 0x28]
mov dword [ebp - 0x2c], 0xffffffff
push eax
lea eax, [ebp + 0x14]
push eax
lea ecx, [edi + 0x590]
call fcn.10034ce0
mov eax, dword [ebp - 0x30]
test eax, eax
js 0x10029f46
cmp eax, dword [edi + 0x2c4]
jge 0x10029f46
mov esi, dword [ebp - 0x2c]
test esi, esi
js 0x10029f46
cmp esi, dword [edi + 0x2cc]
jge 0x10029f46
push esi
push eax
mov ecx, edi
call fcn.10011240
mov ecx, eax
test ecx, ecx
je 0x10029edc
mov eax, dword [ecx]
call dword [eax + 0x48]
or eax, 2
mov ecx, edi
push eax
push esi
push dword [ebp - 0x30]
call fcn.1002ed30
cmp dword [ebp - 0x10], 0
jl 0x10029f46
mov ecx, dword [ebp - 0x1c]
test ecx, ecx
js 0x10029f46
mov edx, dword [ebp - 0x20]
test edx, edx
js 0x10029f46
mov eax, dword [ebp - 0x14]
test eax, eax
js 0x10029f46
cmp dword [ebp - 0x10], edx
jg 0x10029f46
cmp ecx, eax
jg 0x10029f46
mov eax, dword [ebp - 0x30]
cmp eax, dword [ebp - 0x10]
jl 0x10029f46
cmp eax, edx
jg 0x10029f46
cmp esi, ecx
jl 0x10029f46
cmp esi, dword [ebp - 0x14]
jg 0x10029f46
cmp dword [ebp + 0x18], 0
je 0x10029f3d
mov ecx, dword [ebp - 0x18]
test ecx, ecx
je 0x10029f3d
push ecx
push esi
push eax
mov ecx, edi
call fcn.10029670
jmp 0x10029f46
push esi
push eax
mov ecx, edi
call fcn.1002f960
cmp dword [ebp + 0x14], 0
jne 0x10029e75
mov ebx, dword [ebp - 0x24]
mov esi, dword [ebp - 0x18]
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 0x10]
test ebx, ebx
js 0x1002a07c
test edx, edx
js 0x1002a07c
test eax, eax
js 0x1002a07c
test ecx, ecx
js 0x1002a07c
cmp eax, dword [edi + 0x2c4]
jge 0x1002a07c
cmp ecx, dword [edi + 0x2cc]
jge 0x1002a07c
cmp ebx, eax
jg 0x1002a07c
cmp edx, ecx
jg 0x1002a07c
mov esi, edx
nop dword [eax]
push esi
push ebx
mov ecx, edi
call fcn.1002f660
mov ecx, dword [ebp + 0x1c]
cmp ecx, eax
je 0x1002a062
push esi
test ecx, ecx
mov ecx, edi
push ebx
je 0x10029fee
call fcn.10011240
mov ecx, eax
test ecx, ecx
jne 0x10029fe4
or eax, 2
jmp 0x1002a001
mov ecx, dword [ebp + 8]
jmp 0x10029f5c
mov eax, dword [ecx]
call dword [eax + 0x48]
or eax, 2
jmp 0x1002a001
call fcn.10011240
mov ecx, eax
test ecx, ecx
je 0x10029ffe
mov eax, dword [ecx]
call dword [eax + 0x48]
and eax, 0xfffffffd
push eax
push esi
push ebx
mov ecx, edi
call fcn.1002ed30
cmp dword [ebp - 0x10], 0
jl 0x1002a062
mov eax, dword [ebp - 0x1c]
test eax, eax
js 0x1002a062
mov ecx, dword [ebp - 0x20]
test ecx, ecx
js 0x1002a062
mov edx, dword [ebp - 0x14]
test edx, edx
js 0x1002a062
cmp dword [ebp - 0x10], ecx
jg 0x1002a062
cmp eax, edx
jg 0x1002a062
cmp ebx, dword [ebp - 0x10]
jl 0x1002a062
cmp ebx, ecx
jg 0x1002a062
cmp esi, eax
jl 0x1002a062
cmp esi, edx
jg 0x1002a062
cmp dword [ebp + 0x18], 0
je 0x1002a059
mov eax, dword [ebp - 0x18]
test eax, eax
je 0x1002a059
push eax
push esi
push ebx
mov ecx, edi
call fcn.10029670
jmp 0x1002a062
push esi
push ebx
mov ecx, edi
call fcn.1002f960
inc esi
cmp esi, dword [ebp + 8]
jle 0x10029fb0
mov edx, dword [ebp + 0xc]
inc ebx
cmp ebx, dword [ebp + 0x10]
jle 0x10029fa7
mov esi, dword [ebp - 0x18]
test esi, esi
je 0x1002a08c
push dword [esi + 4]
push dword [edi + 0x20]
call dword [sym.imp.USER32.dll_ReleaseDC]
lea ecx, [ebp + 0x1b]
call fcn.10024d00
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18