Function at 0x5009401c
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x2c
push ebx
push ebp
xor ebp, ebp
push esi
xor ebx, ebx
inc ebp
cmp dword [esp + 0x40], ebx
push edi
mov edi, ecx
je 0x50094277
cmp dword [esp + 0x40], ebx
push ebp
push ebp
jne 0x50094049
push ebx
push ebp
push ebx
call fcn.50272bbe
jmp 0x50094442
push ebp
push ebp
push ebx
call fcn.50272bbe
push ebp
lea eax, [esp + 0x14]
push eax
mov ecx, edi
mov dword [esp + 0x4c], ebp
call fcn.50272bbe
mov ecx, edi
call fcn.5010c3a4
push eax
call dword [sym.imp.USER32.dll_SetCapture]
mov esi, dword [sym.imp.USER32.dll_PeekMessageA]
push ebp
push 0x20a
push 0x200
push ebx
lea eax, [esp + 0x30]
push eax
call esi
test eax, eax
jne 0x5009412c
push ebp
mov eax, 0x215
push eax
push eax
push ebx
lea eax, [esp + 0x30]
push eax
call esi
test eax, eax
jne 0x5009412c
push ebp
mov eax, 0xa0
push eax
push eax
push ebx
lea eax, [esp + 0x30]
push eax
call esi
test eax, eax
jne 0x5009412c
push ebp
mov eax, 0xa1
push eax
push eax
push ebx
lea eax, [esp + 0x30]
push eax
call esi
test eax, eax
jne 0x5009412c
push ebp
mov eax, 0xa2
push eax
push eax
push ebx
lea eax, [esp + 0x30]
push eax
call esi
test eax, eax
jne 0x5009412c
push ebx
push 0xa5
push 0xa4
push ebx
lea eax, [esp + 0x30]
push eax
call esi
test eax, eax
jne 0x5009412c
push ebx
mov eax, 0x202
push eax
push eax
push ebx
lea eax, [esp + 0x30]
push eax
call esi
test eax, eax
jne 0x5009412c
push ebp
push 0x1f
push 0x1f
push ebx
lea eax, [esp + 0x30]
push eax
call esi
test eax, eax
jne 0x5009412c
call dword [sym.imp.USER32.dll_WaitMessage]
jmp 0x50094076
mov eax, dword [esp + 0x24]
cmp eax, 0xa4
je 0x50094255
cmp eax, 0xa5
je 0x50094255
cmp eax, 0xa2
je 0x50094154
cmp eax, 0x202
jne 0x50094158
mov dword [esp + 0x44], ebx
call dword [sym.imp.USER32.dll_GetMessagePos]
mov dword [esp + 0x40], eax
movsx ecx, word [esp + 0x42]
movsx eax, ax
push ecx
push eax
lea eax, [esp + 0x18]
push eax
call dword [sym.imp.USER32.dll_PtInRect]
cmp eax, ebx
mov dword [esp + 0x40], eax
jne 0x500941dd
cmp dword [esp + 0x44], ebx
jne 0x500941dd
xor ecx, ecx
xor eax, eax
push ebp
push ecx
push eax
push ebp
push ebx
mov ecx, edi
call fcn.50272bbe
push ebp
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jl 0x500941a7
cmp dword [esp + 0x40], ebx
jne 0x500941ed
cmp dword [esp + 0x40], ebx
jne 0x50094076
cmp dword [esp + 0x44], ebx
jne 0x50094076
mov ecx, edi
call fcn.5010c3a4
mov esi, eax
call dword [sym.imp.USER32.dll_GetCapture]
cmp eax, esi
jne 0x50094442
call dword [sym.imp.USER32.dll_ReleaseCapture]
jmp 0x50094442
cmp eax, ebx
mov ecx, ebp
je 0x50094187
cmp dword [esp + 0x44], ebx
je 0x50094187
mov eax, ebp
jmp 0x50094189
mov ecx, edi
call fcn.5010c3a4
mov esi, eax
call dword [sym.imp.USER32.dll_GetCapture]
cmp eax, esi
jne 0x50094206
call dword [sym.imp.USER32.dll_ReleaseCapture]
mov ecx, edi
call fcn.5008e63e
test eax, eax
je 0x5009422e
push ebx
call fcn.501172fa
test eax, eax
je 0x5009422e
push edi
push ebx
push ebx
call fcn.501172fa
mov ecx, eax
call fcn.50272bbe
and dword [edi + 0x18], 0xfffffffe
push ebx
push ebp
mov ecx, edi
call fcn.500939c8
test byte [edi + 0xde], 0x20
je 0x50094442
push 0x10400
mov ecx, edi
call fcn.50272bbe
jmp 0x50094442
mov ecx, edi
call fcn.5010c3a4
mov esi, eax
call dword [sym.imp.USER32.dll_GetCapture]
cmp eax, esi
jne 0x5009426e
call dword [sym.imp.USER32.dll_ReleaseCapture]
push ebx
push ebx
mov ecx, edi
jmp 0x5009403c
mov dword [esp + 0x44], ebp
call fcn.50272bbe
mov ecx, edi
mov byte [0x50296928], al
call fcn.5010c3a4
push eax
call dword [sym.imp.USER32.dll_SetFocus]
mov ecx, edi
call fcn.5010c3a4
push eax
call dword [sym.imp.USER32.dll_SetCapture]
push ebp
push ebp
push ebx
mov ecx, edi
call fcn.50272bbe
push ebp
lea eax, [esp + 0x14]
push eax
mov ecx, edi
call fcn.50272bbe
mov esi, dword [sym.imp.USER32.dll_PeekMessageA]
push ebp
push 0x20a
push 0x200
push ebx
lea eax, [esp + 0x30]
push eax
call esi
test eax, eax
jne 0x50094302
push ebp
mov eax, 0x215
push eax
push eax
push ebx
lea eax, [esp + 0x30]
push eax
call esi
test eax, eax
jne 0x50094302
push ebp
push 0x1f
push 0x1f
push ebx
lea eax, [esp + 0x30]
push eax
call esi
test eax, eax
jne 0x50094302
call dword [sym.imp.USER32.dll_WaitMessage]
jmp 0x500942b8
call dword [sym.imp.USER32.dll_GetCapture]
cmp dword [esp + 0x24], 0x1f
mov esi, eax
je 0x5009441b
mov ecx, edi
call fcn.5010c3a4
cmp eax, esi
jne 0x5009441b
call dword [sym.imp.USER32.dll_GetMessagePos]
mov dword [esp + 0x40], eax
movsx ecx, word [esp + 0x42]
movsx eax, ax
push ecx
push eax
lea eax, [esp + 0x18]
push eax
call dword [sym.imp.USER32.dll_PtInRect]
push ebp
mov esi, eax
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jge 0x5009436e
cmp esi, dword [esp + 0x44]
je 0x500942b8
push ebx
push esi
push ebx
mov ecx, edi
mov dword [esp + 0x50], esi
call fcn.50272bbe
jmp 0x500942b8
call dword [sym.imp.USER32.dll_ReleaseCapture]
cmp dword [esp + 0x44], ebx
je 0x50094384
push ebx
push ebx
push ebx
mov ecx, edi
call fcn.50272bbe
cmp esi, ebx
je 0x5009443c
cmp dword [0x5029a8bc], ebx
mov dword [esp + 0x44], ebx
je 0x500943d3
lea eax, [esp + 0x44]
push eax
mov ecx, edi
call fcn.50093075
mov esi, dword [esp + 0x44]
cmp esi, ebx
je 0x500943d3
mov ecx, dword [0x5029a8bc]
push ebp
call fcn.501ad5e3
lea ecx, [esi + 0xc]
cmp ecx, eax
jne 0x500943cd
mov ecx, dword [0x5029a8bc]
push ebp
push ebx
push ebp
call fcn.501ad57f
mov eax, dword [esi]
push esi
call dword [eax + 8]
mov ecx, edi
call fcn.5008e63e
test eax, eax
je 0x500943fb
push ebx
call fcn.501172fa
test eax, eax
je 0x500943fb
push edi
push ebx
push ebx
call fcn.501172fa
mov ecx, eax
call fcn.50272bbe
and dword [edi + 0x18], 0xfffffffe
push ebx
push ebp
mov ecx, edi
call fcn.500939c8
test byte [edi + 0xde], 0x20
je 0x5009443c
push 0x10400
mov ecx, edi
call fcn.50272bbe
jmp 0x5009443c
mov ecx, edi
call fcn.5010c3a4
cmp eax, esi
jne 0x5009442c
call dword [sym.imp.USER32.dll_ReleaseCapture]
cmp dword [esp + 0x44], ebx
je 0x5009443c
push ebx
push ebx
push ebx
mov ecx, edi
call fcn.50272bbe
mov byte [0x50296928], bl
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x2c
ret 8