Function at 0x46345a
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
lea ebp, [esp - 0x70]
sub esp, 0xd4
push edi
mov edi, ecx
mov eax, dword [edi + 0x58]
cmp eax, 0xffffffff
jne 0x463475
lea eax, [edi + 0x6c]
jmp 0x463482
mov ecx, dword [0x47a51c]
imul eax, eax, 0x48
lea eax, [eax + ecx + 0x50]
test eax, eax
jne 0x46348b
and dword [ebp + 0x6c], eax
jmp 0x463491
mov eax, dword [eax + 4]
mov dword [ebp + 0x6c], eax
call dword [sym.imp.USER32.dll_GetCapture]
test eax, eax
jne 0x463a60
push eax
call dword [sym.imp.USER32.dll_GetDC]
test eax, eax
mov dword [ebp + 0x58], eax
je 0x463a60
mov eax, dword [0x47a51c]
add eax, 8
jne 0x4634bf
xor eax, eax
jmp 0x4634c2
mov eax, dword [eax + 4]
push ebx
push esi
push eax
call dword [sym.imp.USER32.dll_SetFocus]
cmp dword [edi + 0x58], 0xffffffff
mov esi, dword [sym.imp.USER32.dll_CopyRect]
mov ebx, dword [sym.imp.USER32.dll_OffsetRect]
jne 0x4635ae
lea eax, [ebp + 0x40]
push eax
push dword [ebp + 0x6c]
call dword [sym.imp.USER32.dll_GetWindowRect]
lea eax, [ebp + 0x40]
push eax
lea eax, [ebp - 8]
push eax
call esi
mov eax, dword [edi]
push 8
push 0xffffffffffffffff
lea ecx, [ebp + 0x50]
push ecx
mov ecx, edi
call dword [eax + 0x10]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov edx, dword [ebp + 0x7c]
lea eax, [eax + edx + 0xa]
push eax
mov eax, dword [ebp + 0x78]
lea ecx, [ecx + eax + 0xe]
push ecx
push edx
push eax
lea eax, [ebp + 0x18]
push eax
call dword [sym.imp.USER32.dll_SetRect]
mov eax, dword [0x47b4b4]
cdq
push 0xfffffffffffffffb
sub eax, edx
pop ecx
sar eax, 1
sub ecx, eax
push ecx
push 0xfffffffffffffff9
pop eax
sub eax, dword [0x47b4b0]
push eax
lea eax, [ebp + 0x18]
push eax
call ebx
lea eax, [ebp + 0x18]
push eax
lea eax, [ebp - 0x30]
push eax
call esi
lea ecx, [ebp + 0x50]
mov eax, dword [edi]
push 0x10
push 0xffffffffffffffff
push ecx
mov ecx, edi
call dword [eax + 0x10]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov edx, dword [ebp + 0x7c]
lea eax, [eax + edx + 0xa]
push eax
mov eax, dword [ebp + 0x78]
lea ecx, [ecx + eax + 0xe]
push ecx
push edx
push eax
lea eax, [ebp + 8]
push eax
call dword [sym.imp.USER32.dll_SetRect]
push 0xfffffffffffffffb
pop eax
sub eax, dword [0x47b4b4]
push eax
mov eax, dword [0x47b4b0]
cdq
push 0xfffffffffffffff9
sub eax, edx
pop ecx
sar eax, 1
sub ecx, eax
push ecx
lea eax, [ebp + 8]
push eax
call ebx
lea eax, [ebp + 8]
push eax
lea eax, [ebp - 0x20]
jmp 0x463752
mov eax, dword [edi + 4]
lea ecx, [ebp + 0x40]
push ecx
push eax
call dword [sym.imp.USER32.dll_GetWindowRect]
push 5
push 7
lea eax, [ebp + 0x40]
push eax
call dword [sym.imp.USER32.dll_InflateRect]
lea eax, [ebp - 8]
push eax
call dword [sym.imp.USER32.dll_SetRectEmpty]
push 0x180
push 0
push 0x80c00000
lea eax, [ebp - 8]
push eax
call dword [sym.imp.USER32.dll_AdjustWindowRectEx]
mov eax, dword [edi]
push 4
push 0xffffffffffffffff
lea ecx, [ebp + 0x50]
push ecx
mov ecx, edi
call dword [eax + 0x10]
mov ecx, dword [eax]
mov edx, dword [ebp + 4]
mov eax, dword [eax + 4]
sub edx, dword [ebp - 4]
add edx, dword [ebp + 0x44]
lea eax, [edx + eax + 0xa]
push eax
mov eax, dword [ebp]
sub eax, dword [ebp - 8]
add eax, dword [ebp + 0x40]
lea eax, [eax + ecx + 0xe]
push eax
push dword [ebp + 0x44]
lea eax, [ebp - 8]
push dword [ebp + 0x40]
push eax
call dword [sym.imp.USER32.dll_SetRect]
mov eax, dword [edi + 0x58]
sub eax, 0
je 0x4636a1
dec eax
je 0x46363f
dec eax
je 0x4636a1
dec eax
jne 0x463755
lea eax, [ebp + 0x40]
push eax
lea eax, [ebp + 0x18]
push eax
call esi
mov eax, dword [edi]
push 8
push 0xffffffffffffffff
lea ecx, [ebp + 0x50]
push ecx
mov ecx, edi
call dword [eax + 0x10]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov edx, dword [ebp + 0x7c]
lea eax, [eax + edx + 0xa]
push eax
mov eax, dword [ebp + 0x78]
lea ecx, [ecx + eax + 0xe]
push ecx
push edx
push eax
lea eax, [ebp - 0x30]
push eax
call dword [sym.imp.USER32.dll_SetRect]
mov eax, dword [0x47b4b4]
cdq
push 0xfffffffffffffffb
sub eax, edx
pop ecx
sar eax, 1
sub ecx, eax
push ecx
push 0xfffffffffffffff9
pop eax
sub eax, dword [0x47b4b0]
push eax
lea eax, [ebp - 0x30]
push eax
call ebx
lea ecx, [ebp - 0x10]
jmp 0x463555
lea eax, [ebp + 0x40]
push eax
lea eax, [ebp + 8]
push eax
call esi
mov eax, dword [edi]
push 0x10
push 0xffffffffffffffff
lea ecx, [ebp + 0x38]
push ecx
mov ecx, edi
call dword [eax + 0x10]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov edx, dword [ebp + 0x7c]
lea eax, [eax + edx + 0xa]
push eax
mov eax, dword [ebp + 0x78]
lea ecx, [ecx + eax + 0xe]
push ecx
push edx
push eax
lea eax, [ebp - 0x20]
push eax
call dword [sym.imp.USER32.dll_SetRect]
push 0xfffffffffffffffb
pop eax
sub eax, dword [0x47b4b4]
push eax
mov eax, dword [0x47b4b0]
cdq
push 0xfffffffffffffff9
sub eax, edx
pop ecx
sar eax, 1
sub ecx, eax
push ecx
lea eax, [ebp - 0x20]
push eax
call ebx
mov eax, dword [edi]
push 8
push 0xffffffffffffffff
lea ecx, [ebp - 0x64]
push ecx
mov ecx, edi
call dword [eax + 0x10]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov edx, dword [ebp + 0x7c]
lea eax, [eax + edx + 0xa]
push eax
mov eax, dword [ebp + 0x78]
lea ecx, [ecx + eax + 0xe]
push ecx
push edx
push eax
lea eax, [ebp + 0x18]
push eax
call dword [sym.imp.USER32.dll_SetRect]
mov eax, dword [0x47b4b4]
cdq
push 0xfffffffffffffffb
sub eax, edx
pop ecx
sar eax, 1
sub ecx, eax
push ecx
push 0xfffffffffffffff9
pop eax
sub eax, dword [0x47b4b0]
push eax
lea eax, [ebp + 0x18]
push eax
call ebx
lea eax, [ebp + 0x18]
push eax
lea eax, [ebp - 0x30]
push eax
call esi
mov eax, dword [ebp + 0x78]
and dword [ebp - 0xc], 0
mov dword [ebp + 0x50], eax
mov eax, dword [ebp + 0x7c]
mov dword [ebp + 0x54], eax
lea eax, [ebp + 0x40]
push eax
lea eax, [ebp + 0x28]
push eax
call esi
lea eax, [ebp + 0x28]
push eax
lea eax, [ebp - 0x40]
push eax
call esi
push dword [ebp + 0x6c]
xor eax, eax
inc eax
mov dword [ebp + 0x64], eax
mov dword [ebp + 0x68], eax
mov dword [ebp + 0x5c], eax
mov dword [ebp + 0x60], eax
call dword [sym.imp.USER32.dll_SetCapture]
push dword [ebp + 0x60]
lea eax, [ebp + 0x40]
push dword [ebp + 0x5c]
push 0
push dword [ebp + 0x68]
push dword [ebp + 0x64]
push eax
push dword [ebp + 0x58]
call fcn.00454e41
jmp 0x4638f7
mov eax, dword [ebp - 0x58]
sub eax, 0x1f
je 0x463938
sub eax, 0xe1
je 0x4638f1
sub eax, 0x100
je 0x4637e5
dec eax
dec eax
je 0x463917
lea eax, [ebp - 0x5c]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageA]
jmp 0x4638f7
mov eax, dword [ebp - 0x50]
movsx ecx, ax
shr eax, 0x10
movsx eax, ax
mov dword [ebp + 0x7c], eax
lea eax, [ebp + 0x78]
push eax
push dword [ebp + 0x6c]
mov dword [ebp + 0x78], ecx
call dword [sym.imp.USER32.dll_ClientToScreen]
push 0x12
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jge 0x463817
or dword [ebp + 0x3c], 0xffffffff
jmp 0x46382b
push dword [ebp + 0x7c]
mov ecx, dword [0x47a51c]
push dword [ebp + 0x78]
call fcn.00461962
mov dword [ebp + 0x3c], eax
push dword [ebp + 0x3c]
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x14]
test eax, eax
jne 0x46383d
or dword [ebp + 0x3c], 0xffffffff
mov eax, dword [ebp + 0x3c]
sub eax, 0
je 0x463886
dec eax
je 0x463874
dec eax
je 0x463886
dec eax
je 0x463874
push 3
pop eax
mov dword [ebp + 0x68], eax
mov dword [ebp + 0x64], eax
lea eax, [ebp - 8]
push eax
lea eax, [ebp + 0x28]
push eax
call esi
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp + 0x18]
push eax
call esi
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp + 8]
jmp 0x4638a0
xor eax, eax
inc eax
mov dword [ebp + 0x68], eax
mov dword [ebp + 0x64], eax
lea eax, [ebp + 0x18]
push eax
lea eax, [ebp + 0x28]
jmp 0x463868
xor eax, eax
inc eax
mov dword [ebp + 0x68], eax
mov dword [ebp + 0x64], eax
lea eax, [ebp + 8]
push eax
lea eax, [ebp + 0x28]
push eax
call esi
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp + 0x18]
push eax
call esi
mov eax, dword [ebp + 0x7c]
sub eax, dword [ebp + 0x54]
push eax
mov eax, dword [ebp + 0x78]
sub eax, dword [ebp + 0x50]
push eax
lea eax, [ebp + 0x28]
push eax
call ebx
push dword [ebp + 0x60]
lea eax, [ebp - 0x40]
push dword [ebp + 0x5c]
push eax
push dword [ebp + 0x68]
lea eax, [ebp + 0x28]
push dword [ebp + 0x64]
push eax
push dword [ebp + 0x58]
call fcn.00454e41
lea eax, [ebp + 0x28]
push eax
lea eax, [ebp - 0x40]
push eax
call esi
push 8
lea eax, [ebp + 0x64]
push eax
lea eax, [ebp + 0x5c]
push eax
call sub.MSVCR80.dll_memcpy
add esp, 0xc
jmp 0x4638f7
cmp dword [ebp - 0x54], 0x1b
je 0x463938
xor eax, eax
push eax
push eax
push eax
lea eax, [ebp - 0x5c]
push eax
call dword [sym.imp.USER32.dll_GetMessageA]
call dword [sym.imp.USER32.dll_GetCapture]
cmp dword [ebp + 0x6c], eax
je 0x4637b0
jmp 0x46393f
mov eax, dword [ebp - 0x50]
movsx ecx, ax
shr eax, 0x10
movsx eax, ax
mov dword [ebp + 0x7c], eax
lea eax, [ebp + 0x78]
push eax
push dword [ebp + 0x6c]
mov dword [ebp + 0x78], ecx
call dword [sym.imp.USER32.dll_ClientToScreen]
jmp 0x46393f
mov dword [ebp - 0xc], 1
push dword [ebp + 0x60]
xor ebx, ebx
push dword [ebp + 0x5c]
lea eax, [ebp - 0x40]
push ebx
push dword [ebp + 0x60]
push dword [ebp + 0x5c]
push eax
push dword [ebp + 0x58]
call fcn.00454e41
push dword [ebp + 0x58]
push ebx
call dword [sym.imp.USER32.dll_ReleaseDC]
call dword [sym.imp.USER32.dll_ReleaseCapture]
cmp dword [ebp - 0xc], ebx
jne 0x463a5e
push 0x12
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jge 0x463985
or esi, 0xffffffff
jmp 0x463998
push dword [ebp + 0x7c]
mov ecx, dword [0x47a51c]
push dword [ebp + 0x78]
call fcn.00461962
mov esi, eax
mov eax, dword [edi]
push esi
mov ecx, edi
call dword [eax + 0x14]
test eax, eax
jne 0x4639a7
or esi, 0xffffffff
cmp esi, 0xffffffff
je 0x463a26
mov eax, esi
sub eax, ebx
je 0x4639c6
dec eax
je 0x4639bb
dec eax
je 0x4639c6
dec eax
jne 0x4639cf
mov eax, dword [ebp + 0x28]
add eax, 7
mov dword [ebp + 0x78], eax
jmp 0x4639cf
mov eax, dword [ebp + 0x2c]
add eax, 5
mov dword [ebp + 0x7c], eax
mov ecx, dword [0x47a51c]
mov eax, esi
imul eax, eax, 0x48
lea eax, [eax + ecx + 0x50]
cmp eax, ebx
jne 0x4639e6
xor eax, eax
jmp 0x4639e9
mov eax, dword [eax + 4]
lea ecx, [ebp + 0x78]
push ecx
push eax
call dword [sym.imp.USER32.dll_ScreenToClient]
cmp dword [edi + 0xfc], ebx
je 0x463a13
call fcn.0041ab3b
test eax, eax
je 0x463a13
call fcn.0041ab3b
test eax, eax
je 0x463a5e
cmp esi, 1
je 0x463a5e
mov ecx, dword [0x47a51c]
lea eax, [ebp + 0x78]
push eax
push esi
push edi
call fcn.00463222
jmp 0x463a59
cmp dword [edi + 0x58], 0xffffffff
mov ecx, dword [ebp + 0x28]
mov edx, dword [ebp + 0x2c]
lea eax, [edi + 0x64]
mov dword [eax], ecx
mov dword [edi + 0x68], edx
jne 0x463a4c
push 0x15
push ebx
push ebx
push edx
push ecx
push ebx
push dword [ebp + 0x6c]
call dword [sym.imp.USER32.dll_SetWindowPos]
jmp 0x463a5e
mov ecx, dword [0x47a524]
push eax
push edi
call fcn.004630b8
call fcn.0041b2b1
pop esi
pop ebx
pop edi
add ebp, 0x70
leave
ret 8