Function at 0x462570
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x579378
mov eax, dword fs:[0]
push eax
sub esp, 0x90
push esi
mov eax, dword [0x5eabd8]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x98], ecx
mov eax, dword [ebp - 0x98]
cmp dword [eax + 0x14c], 0
jne 0x4625e3
mov ecx, dword [ebp - 0x98]
cmp dword [ecx + 0x150], 0
je 0x4625e3
mov edx, dword [ebp - 0x98]
mov dword [edx + 0x14c], 1
mov eax, dword [ebp - 0x98]
mov edx, dword [eax]
mov ecx, dword [ebp - 0x98]
mov eax, dword [edx + 0x180]
call eax
mov ecx, dword [ebp - 0x98]
cmp dword [ecx + 0x154], 0
je 0x46260d
mov edx, dword [ebp - 0x98]
mov dword [edx + 0x154], 0
mov ecx, dword [ebp - 0x98]
call fcn.00463700
mov eax, dword [ebp + 8]
mov dword [ebp - 0x9c], eax
cmp dword [ebp - 0x9c], 0xa1
ja 0x462665
cmp dword [ebp - 0x9c], 0xa1
je 0x462932
mov ecx, dword [ebp - 0x9c]
sub ecx, 2
mov dword [ebp - 0x9c], ecx
cmp dword [ebp - 0x9c], 0x83
ja case.0x462691.1
mov edx, dword [ebp - 0x9c]
movzx eax, byte [edx + 0x462e04]
jmp dword [eax*4 + 0x462df0]
mov ecx, dword [ebp - 0x9c]
sub ecx, 0xa2
mov dword [ebp - 0x9c], ecx
cmp dword [ebp - 0x9c], 0x71
ja case.0x462691.1
mov edx, dword [ebp - 0x9c]
movzx eax, byte [edx + 0x462e98]
jmp dword [eax*4 + 0x462e88]
mov ecx, dword [ebp - 0x98]
cmp dword [ecx + 0x158], 0
je 0x4626cf
mov edx, dword [ebp - 0x98]
mov eax, dword [edx + 0x158]
push eax
mov ecx, dword [ebp - 0x98]
call fcn.00463d20
mov ecx, dword [ebp - 0x98]
mov dword [ecx + 0x158], 0
jmp case.0x462691.1
mov edx, dword [ebp + 0x10]
push edx
mov eax, dword [ebp + 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
mov ecx, dword [ebp - 0x98]
call fcn.004e47d0
mov dword [ebp - 0x14], eax
mov ecx, dword [ebp - 0x98]
call fcn.004636c0
test eax, eax
je 0x462769
mov edx, dword [ebp + 0x10]
mov dword [ebp - 0x18], edx
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x18]
mov esi, dword [eax + 8]
sub esi, dword [ecx]
mov ecx, dword [ebp - 0x98]
call fcn.004636a0
cmp esi, eax
jle 0x46275e
mov ecx, dword [ebp - 0x98]
call fcn.004636e0
test eax, eax
jne 0x462747
mov ecx, dword [ebp - 0x98]
call fcn.004636a0
mov edx, dword [ebp - 0x18]
mov ecx, dword [edx + 8]
sub ecx, eax
mov edx, dword [ebp - 0x18]
mov dword [edx + 8], ecx
jmp 0x46275c
mov ecx, dword [ebp - 0x98]
call fcn.004636a0
mov ecx, dword [ebp - 0x18]
add eax, dword [ecx]
mov edx, dword [ebp - 0x18]
mov dword [edx], eax
jmp 0x462769
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x18]
mov edx, dword [ecx]
mov dword [eax + 8], edx
mov eax, dword [ebp - 0x14]
jmp 0x462ddd
mov eax, dword [ebp + 0x10]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
mov ecx, dword [ebp - 0x98]
call fcn.004e47d0
mov dword [ebp - 0x1c], eax
mov ecx, dword [ebp - 0x98]
call fcn.004636c0
test eax, eax
je 0x4628de
mov eax, dword [ebp - 0x98]
push eax
lea ecx, [ebp - 0x30]
call fcn.0047fa24
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x40]
call fcn.00435d80
lea ecx, [ebp - 0x40]
call fcn.00435d80
push eax
mov ecx, dword [ebp - 0x98]
call fcn.0042ec00
lea ecx, [ebp - 0x40]
call fcn.00435d80
push eax
mov ecx, dword [ebp - 0x98]
call fcn.0047f63a
lea ecx, [ebp - 0x50]
push ecx
mov ecx, dword [ebp - 0x98]
call fcn.00463c10
lea ecx, [ebp - 0x40]
call fcn.00435d80
mov edx, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp - 0x6c], edx
mov dword [ebp - 0x68], eax
mov ecx, dword [ebp - 0x68]
push ecx
mov edx, dword [ebp - 0x6c]
push edx
lea ecx, [ebp - 0x50]
call fcn.00462f40
mov eax, dword [ebp - 0x98]
mov ecx, dword [ebp - 0x98]
mov edx, dword [eax + 0x144]
and edx, dword [ecx + 0x148]
push edx
sub esp, 0x10
mov eax, esp
mov ecx, dword [ebp - 0x50]
mov dword [eax], ecx
mov edx, dword [ebp - 0x4c]
mov dword [eax + 4], edx
mov ecx, dword [ebp - 0x48]
mov dword [eax + 8], ecx
mov edx, dword [ebp - 0x44]
mov dword [eax + 0xc], edx
lea eax, [ebp - 0x30]
push eax
lea ecx, [ebp - 0x7c]
push ecx
mov edx, dword [ebp - 0x98]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x98]
mov edx, dword [eax + 0x184]
call edx
mov ecx, dword [eax]
mov dword [ebp - 0x50], ecx
mov edx, dword [eax + 4]
mov dword [ebp - 0x4c], edx
mov ecx, dword [eax + 8]
mov dword [ebp - 0x48], ecx
mov edx, dword [eax + 0xc]
mov dword [ebp - 0x44], edx
mov eax, dword [ebp - 0x98]
mov ecx, dword [ebp - 0x98]
mov edx, dword [eax + 0x144]
and edx, dword [ecx + 0x148]
push edx
sub esp, 0x10
mov eax, esp
mov ecx, dword [ebp - 0x50]
mov dword [eax], ecx
mov edx, dword [ebp - 0x4c]
mov dword [eax + 4], edx
mov ecx, dword [ebp - 0x48]
mov dword [eax + 8], ecx
mov edx, dword [ebp - 0x44]
mov dword [eax + 0xc], edx
lea eax, [ebp - 0x30]
push eax
mov ecx, dword [ebp - 0x98]
mov edx, dword [ecx]
mov ecx, dword [ebp - 0x98]
mov eax, dword [edx + 0x188]
call eax
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x30]
call fcn.0047fa78
mov eax, dword [ebp - 0x1c]
jmp 0x462ddd
mov ecx, dword [ebp + 0x10]
shr ecx, 0x10
and ecx, 0xffff
movsx edx, cx
push edx
mov eax, dword [ebp + 0x10]
and eax, 0xffff
movsx ecx, ax
push ecx
lea ecx, [ebp - 0x84]
call fcn.0042eab0
mov edx, dword [eax + 4]
push edx
mov eax, dword [eax]
push eax
mov ecx, dword [ebp - 0x98]
call fcn.00463b90
test eax, eax
je 0x46292d
mov eax, 0x12
jmp 0x462ddd
jmp case.0x462691.1
mov ecx, dword [ebp + 0x10]
push ecx
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
mov ecx, dword [ebp - 0x98]
call fcn.004e47d0
mov dword [ebp - 0x54], eax
mov ecx, dword [ebp - 0x98]
call fcn.0047b64e
test eax, eax
je 0x46296d
mov ecx, dword [ebp - 0x98]
call fcn.0047b4d0
and eax, 0x800
je 0x462975
mov eax, dword [ebp - 0x54]
jmp 0x462ddd
mov ecx, dword [ebp + 0x10]
shr ecx, 0x10
and ecx, 0xffff
movsx edx, cx
push edx
mov eax, dword [ebp + 0x10]
and eax, 0xffff
movsx ecx, ax
push ecx
lea ecx, [ebp - 0x8c]
call fcn.0042eab0
mov edx, dword [eax + 4]
push edx
mov eax, dword [eax]
push eax
mov ecx, dword [ebp - 0x98]
call fcn.00463b90
test eax, eax
je 0x462a09
mov ecx, dword [ebp - 0x98]
mov dword [ecx + 0x144], 1
mov edx, dword [ebp - 0x98]
mov dword [edx + 0x148], 1
push 0x401
push 0
push 0
mov ecx, dword [ebp - 0x98]
call fcn.0044d7f0
push 0
push 0xc8
push 0xe3
mov ecx, dword [ebp - 0x98]
call fcn.00463cf0
mov ecx, dword [ebp - 0x98]
mov dword [ecx + 0x158], eax
mov eax, dword [ebp - 0x54]
jmp 0x462ddd
mov eax, dword [ebp + 0x10]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
mov ecx, dword [ebp - 0x98]
call fcn.004e47d0
mov dword [ebp - 0x58], eax
mov eax, dword [ebp + 0x10]
shr eax, 0x10
and eax, 0xffff
movsx ecx, ax
push ecx
mov edx, dword [ebp + 0x10]
and edx, 0xffff
movsx eax, dx
push eax
lea ecx, [ebp - 0x94]
call fcn.0042eab0
mov ecx, dword [eax + 4]
push ecx
mov edx, dword [eax]
push edx
mov ecx, dword [ebp - 0x98]
call fcn.00463b90
test eax, eax
je 0x462b00
mov eax, dword [ebp - 0x98]
cmp dword [eax + 0x144], 0
je 0x462b00
mov ecx, dword [ebp - 0x98]
mov dword [ecx + 0x144], 0
mov edx, dword [ebp - 0x98]
mov dword [edx + 0x148], 0
mov eax, dword [ebp - 0x98]
cmp dword [eax + 0x158], 0
je 0x462ad6
mov ecx, dword [ebp - 0x98]
mov edx, dword [ecx + 0x158]
push edx
mov ecx, dword [ebp - 0x98]
call fcn.00463d20
mov eax, dword [ebp - 0x98]
mov dword [eax + 0x158], 0
push 0x401
push 0
push 0
mov ecx, dword [ebp - 0x98]
call fcn.0044d7f0
mov ecx, dword [ebp - 0x98]
mov edx, dword [ecx]
mov ecx, dword [ebp - 0x98]
mov eax, dword [edx + 0x17c]
call eax
mov eax, dword [ebp - 0x58]
jmp 0x462ddd
mov ecx, dword [ebp - 0x98]
call fcn.0047b64e
test eax, eax
je 0x462b29
mov ecx, dword [ebp - 0x98]
call fcn.0047b4d0
and eax, 0x800
je 0x462b2e
jmp case.0x462691.1
mov ecx, dword [ebp - 0x98]
call fcn.00463740
cmp dword [ebp + 0xc], eax
jne 0x462c63
mov dword [ebp - 0x5c], 1
mov ecx, dword [ebp - 0x98]
mov edx, dword [ecx + 0x164]
and edx, 1
je 0x462b70
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
xor ecx, ecx
test eax, eax
setl cl
and ecx, dword [ebp - 0x5c]
mov dword [ebp - 0x5c], ecx
mov edx, dword [ebp - 0x98]
mov eax, dword [edx + 0x164]
and eax, 2
je 0x462b99
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
movsx ecx, ax
xor edx, edx
test ecx, ecx
setl dl
and edx, dword [ebp - 0x5c]
mov dword [ebp - 0x5c], edx
mov eax, dword [ebp - 0x98]
mov ecx, dword [eax + 0x164]
and ecx, 4
je 0x462bc2
push 0x12
call dword [sym.imp.USER32.dll_GetKeyState]
movsx edx, ax
xor eax, eax
test edx, edx
setl al
and eax, dword [ebp - 0x5c]
mov dword [ebp - 0x5c], eax
cmp dword [ebp - 0x5c], 0
je 0x462c63
mov ecx, dword [ebp - 0x98]
cmp dword [ecx + 0x144], 0
je 0x462c46
mov edx, dword [ebp - 0x98]
mov dword [edx + 0x144], 0
mov eax, dword [ebp - 0x98]
mov dword [eax + 0x148], 0
mov ecx, dword [ebp - 0x98]
cmp dword [ecx + 0x158], 0
je 0x462c32
mov edx, dword [ebp - 0x98]
mov eax, dword [edx + 0x158]
push eax
mov ecx, dword [ebp - 0x98]
call fcn.00463d20
mov ecx, dword [ebp - 0x98]
mov dword [ecx + 0x158], 0
push 0x401
push 0
push 0
mov ecx, dword [ebp - 0x98]
call fcn.0044d7f0
mov edx, dword [ebp - 0x98]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x98]
mov edx, dword [eax + 0x17c]
call edx
xor eax, eax
jmp 0x462ddd
jmp case.0x462691.1
mov eax, dword [ebp - 0x98]
mov ecx, dword [ebp + 0xc]
cmp ecx, dword [eax + 0x158]
jne case.0x462691.1
mov edx, dword [ebp - 0x98]
cmp dword [edx + 0x144], 0
je 0x462da6
push 1
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
test eax, eax
jge 0x462d4b
lea ecx, [ebp - 0x64]
call fcn.00435d80
lea ecx, [ebp - 0x64]
push ecx
call dword [sym.imp.USER32.dll_GetCursorPos]
mov edx, dword [ebp - 0x60]
push edx
mov eax, dword [ebp - 0x64]
push eax
mov ecx, dword [ebp - 0x98]
call fcn.00463b90
test eax, eax
je 0x462cff
mov ecx, dword [ebp - 0x98]
cmp dword [ecx + 0x148], 0
jne 0x462cff
mov edx, dword [ebp - 0x98]
mov dword [edx + 0x148], 1
push 0x401
push 0
push 0
mov ecx, dword [ebp - 0x98]
call fcn.0044d7f0
jmp 0x462d49
mov eax, dword [ebp - 0x60]
push eax
mov ecx, dword [ebp - 0x64]
push ecx
mov ecx, dword [ebp - 0x98]
call fcn.00463b90
test eax, eax
jne 0x462d49
mov edx, dword [ebp - 0x98]
cmp dword [edx + 0x148], 0
je 0x462d49
mov eax, dword [ebp - 0x98]
mov dword [eax + 0x148], 0
push 0x401
push 0
push 0
mov ecx, dword [ebp - 0x98]
call fcn.0044d7f0
jmp 0x462da6
mov ecx, dword [ebp - 0x98]
mov dword [ecx + 0x144], 0
mov edx, dword [ebp - 0x98]
cmp dword [edx + 0x158], 0
je 0x462d92
mov eax, dword [ebp - 0x98]
mov ecx, dword [eax + 0x158]
push ecx
mov ecx, dword [ebp - 0x98]
call fcn.00463d20
mov edx, dword [ebp - 0x98]
mov dword [edx + 0x158], 0
push 0x401
push 0
push 0
mov ecx, dword [ebp - 0x98]
call fcn.0044d7f0
xor eax, eax
jmp 0x462ddd
mov eax, dword [ebp + 0x10]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
mov ecx, dword [ebp - 0x98]
call fcn.004e47d0
mov dword [ebp - 0x10], eax
cmp dword [ebp + 8], 1
jne 0x462dda
mov eax, dword [ebp - 0x98]
mov dword [eax + 0x150], 1
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret 0xc