Function at 0x463550
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x18
push esi
mov esi, ecx
mov eax, dword [esi + 0x3c]
cmp dword [eax + 0x87c], 1
jne 0x46383b
mov edx, dword [esi + 0x1c]
push ebx
lea ecx, [esp + 0x10]
push edi
push ecx
push edx
call dword [sym.imp.USER32.dll_GetWindowRect]
mov edi, dword [sym.imp.USER32.dll_GetKeyState]
push 0x11
xor ebx, ebx
call edi
test ah, 0x80
je 0x46358d
mov ebx, 1
push 0x10
call edi
test ah, 0x80
je 0x463599
or ebx, 2
mov eax, dword [esi + 0xf8]
test eax, eax
je 0x4635bb
test ebx, ebx
jne 0x4635bb
mov eax, dword [esi + 0x110]
mov dword [esi + 0x108], ebx
neg eax
mov dword [esi + 0x110], eax
lea ecx, [esp + 0xc]
mov dword [esi + 0xf8], ebx
push ecx
call dword [sym.imp.USER32.dll_GetCursorPos]
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
push edx
lea ecx, [esp + 0x18]
push eax
push ecx
call dword [sym.imp.USER32.dll_PtInRect]
mov ecx, dword [esi + 0xa8]
mov dword [esi + 0x100], eax
test ecx, ecx
jne 0x4635ff
mov ecx, dword [esi + 0xc0]
test ecx, ecx
jne 0x4635ff
xor edx, edx
jmp 0x463604
mov edx, 1
and edx, eax
mov eax, dword [esi + 0x108]
test eax, eax
mov dword [esi + 0x100], edx
je 0x46361d
dec eax
mov dword [esi + 0x108], eax
mov eax, dword [esi + 0x108]
test eax, eax
jne 0x4637d8
mov ecx, dword [esi + 0x3c]
cmp dword [ecx + 0x87c], 1
jne 0x4637d8
mov edi, dword [esi + 0x114]
test edi, edi
jne 0x4636e7
test edx, edx
je 0x4636c2
test bl, 1
je 0x4636c2
mov ebx, dword [0x60bd18]
xor edx, edx
cmp ebx, 0xffffffff
je 0x463691
mov edi, dword [esi + 0xcc]
mov eax, ebx
mov ecx, 0x60bd18
cmp eax, edi
je 0x46367e
mov eax, dword [ecx + 4]
add ecx, 4
inc edx
cmp eax, 0xffffffff
jne 0x46366c
jmp 0x463691
mov eax, dword [edx*4 + 0x60bd1c]
mov dword [esi + 0xcc], eax
mov ebx, dword [0x60bd18]
cmp dword [edx*4 + 0x60bd18], 0xffffffff
je 0x4636a4
cmp dword [esi + 0xcc], 0xffffffff
jne 0x4636aa
mov dword [esi + 0xcc], ebx
mov ecx, dword [esi + 0x1c]
push 0
push 0
push ecx
mov dword [esi + 0x108], 0xa
call dword [sym.imp.USER32.dll_InvalidateRect]
mov eax, dword [esi + 0x104]
test eax, eax
je 0x4637d8
mov edx, dword [esi + 0x1c]
push 0
push 0
mov dword [esi + 0x104], 0
push edx
jmp 0x4637d2
mov eax, dword [esi + 0x118]
cmp edi, dword [ecx + eax*4 + 0xb94]
jne 0x463756
lea eax, [eax + eax*2]
mov ecx, dword [ecx + eax*4 + 0xc14]
push ecx
call fcn.004f4ee0
mov dword [esi + 0x114], eax
mov eax, dword [esi + 0x124]
add esp, 4
test eax, eax
jne 0x463750
mov ecx, dword [esi + 0x3c]
mov eax, dword [ecx + 0xaf4]
cmp eax, 1
jne 0x463733
mov dword [esi + 0x120], 0x21
jmp 0x463756
cmp eax, 2
jne 0x463744
mov dword [esi + 0x120], 0x19
jmp 0x463756
mov dword [esi + 0x120], 0x32
jmp 0x463756
mov dword [esi + 0x120], eax
test ebx, ebx
je 0x4637d8
mov ecx, dword [esi + 0x120]
mov eax, ecx
test bl, 1
cdq
je 0x46377a
and edx, 7
add eax, edx
sar eax, 3
sub ecx, eax
mov dword [esi + 0x120], ecx
jmp 0x46378a
and edx, 7
add eax, edx
sar eax, 3
add eax, ecx
mov dword [esi + 0x120], eax
mov ecx, dword [esi + 0x120]
mov eax, 0x10
cmp ecx, eax
jge 0x46379f
mov dword [esi + 0x120], eax
mov ecx, dword [esi + 0x120]
mov eax, 0x64
cmp ecx, eax
jle 0x4637b4
mov dword [esi + 0x120], eax
mov edx, dword [esi + 0x120]
push 0
mov dword [esi + 0x124], edx
mov eax, dword [esi + 0x1c]
push 0
mov dword [esi + 0x108], 4
push eax
call dword [sym.imp.USER32.dll_InvalidateRect]
mov eax, dword [esi + 0xc0]
pop edi
test eax, eax
pop ebx
je 0x46383b
mov eax, dword [0x64fda8]
cmp eax, 2
jge 0x4637f7
inc eax
mov dword [0x64fda8], eax
cmp eax, 2
jne 0x463811
mov ecx, dword [esi + 0x1c]
push 0
push 0
push ecx
call dword [sym.imp.USER32.dll_InvalidateRect]
mov dword [0x64fda8], 3
mov edx, dword [0x64fdac]
mov eax, dword [esi + 0x100]
cmp edx, eax
je 0x46382f
mov eax, dword [esi + 0x1c]
push 0
push 0
push eax
call dword [sym.imp.USER32.dll_InvalidateRect]
mov ecx, dword [esi + 0x100]
mov dword [0x64fdac], ecx
pop esi
add esp, 0x18
ret