Function at 0x664270
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffbc
push ebx
push esi
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x20]
call fcn.004ee618
mov dword [ebp - 0x28], eax
xor edx, edx
push ebp
push 0x6647a7
push dword fs:[edx]
mov dword fs:[edx], esp
mov eax, dword [ebp - 0x24]
mov eax, dword [eax]
mov edx, eax
cmp edx, 0x101
jg 0x6642c5
je 0x6644b0
sub edx, 7
je 0x6642ee
dec edx
je 0x664304
sub edx, 0xf8
je 0x664493
jmp 0x6645bf
sub edx, 0x102
je 0x664476
add edx, 0xfffffffe
sub edx, 2
jb 0x6644cd
sub edx, 0xfe
je 0x66440e
jmp 0x6645bf
mov eax, dword [ebp - 0x20]
call fcn.00663b40
mov si, 0xffe7
call fcn.0040440c
jmp 0x6645bf
mov eax, dword [ebp - 0x20]
call fcn.00663b40
mov dword [ebp - 0x34], eax
xor eax, eax
push ebp
push 0x664407
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x20]
cmp byte [eax + 0x2c], 0
je 0x66434a
push ebp
call fcn.0066422c
pop ecx
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
mov edx, dword [eax]
call dword [edx + 0x178]
call fcn.00404b54
call fcn.00404b54
jmp 0x6647ae
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
mov edx, dword [0x635e1c]
call fcn.0040439c
test al, al
je 0x6643ed
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
call fcn.004a0e60
mov ebx, eax
call sub.user32.dll_GetFocus
cmp ebx, eax
jne 0x664388
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
call fcn.004a0e60
mov ebx, eax
jmp 0x664395
call sub.user32.dll_GetFocus
push eax
call sub.user32.dll_GetParent
mov ebx, eax
mov eax, ebx
call fcn.00494558
mov edx, dword [0x635e1c]
call fcn.0040439c
test al, al
jne 0x6643b3
push ebx
call sub.user32.dll_GetParent
mov ebx, eax
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
call fcn.004a0e60
cmp ebx, eax
je 0x6643ed
push ebp
call fcn.0066422c
pop ecx
push ebp
call fcn.00664200
pop ecx
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
mov edx, dword [eax]
call dword [edx + 0x178]
call fcn.00404b54
call fcn.00404b54
jmp 0x6647ae
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x6645bf
mov eax, dword [ebp - 0x34]
mov si, 0xffe6
call fcn.0040440c
ret
lea edx, [ebp - 0x30]
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 8]
call fcn.00408ee8
push 1
lea eax, [ebp - 0x30]
push eax
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
call fcn.004a0e60
push eax
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x30]
push eax
call sub.user32.dll_MapWindowPoints
mov dx, word [ebp - 0x2c]
mov ax, word [ebp - 0x30]
call fcn.00408f5c
push eax
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 4]
push eax
mov eax, dword [ebp - 0x24]
mov eax, dword [eax]
push eax
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
call fcn.004a0e60
push eax
call sub.user32.dll_SendMessageA
mov edx, dword [ebp - 0x24]
mov dword [edx + 0xc], eax
call fcn.00404b54
jmp 0x6647ae
mov edx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x20]
call fcn.00663d08
test al, al
je 0x6645bf
call fcn.00404b54
jmp 0x6647ae
mov edx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x20]
call fcn.00663cd8
test al, al
je 0x6645bf
call fcn.00404b54
jmp 0x6647ae
mov edx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x20]
call fcn.00663d38
test al, al
je 0x6645bf
call fcn.00404b54
jmp 0x6647ae
mov edx, dword [ebp - 0x24]
cmp eax, 0x104
jne 0x6644df
mov eax, dword [ebp - 0x20]
inc dword [eax + 0x34]
jmp 0x6644fa
mov eax, dword [ebp - 0x20]
cmp dword [eax + 0x34], 0
je 0x6644f0
mov eax, dword [ebp - 0x20]
dec dword [eax + 0x34]
jmp 0x6644fa
call fcn.00404b54
jmp 0x6647ae
push 0x12
call sub.user32.dll_GetAsyncKeyState
test ax, ax
jl 0x6645bf
mov eax, dword [ebp - 0x24]
cmp dword [eax + 4], 0x12
jne 0x664522
mov eax, dword [ebp - 0x24]
cmp dword [eax], 0x105
jne 0x6645bf
mov eax, dword [ebp - 0x20]
xor edx, edx
mov dword [eax + 0x34], edx
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
mov edx, dword [eax]
call dword [edx + 0x178]
mov eax, dword [ebp - 0x24]
cmp dword [eax + 4], 0x79
jne 0x664557
push 0x10
call sub.user32.dll_GetAsyncKeyState
test ax, ax
jge 0x664557
call fcn.00404b54
jmp 0x6647ae
mov eax, dword [ebp - 0x24]
cmp dword [eax + 4], 0x12
jne 0x664567
mov byte [0x74e881], 1
mov byte [0x74e882], 1
xor eax, eax
push ebp
push 0x6645b8
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 8]
push eax
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 4]
push eax
push 0
call fcn.00640b10
dec eax
jne 0x6645a3
call fcn.00404b54
call fcn.00404b54
jmp 0x6647ae
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x6645bf
mov byte [0x74e882], 0
ret
mov eax, dword [ebp - 0x28]
cmp dword [eax + 4], 0
jne 0x6645d2
call fcn.00404b54
jmp 0x6647ae
mov eax, dword [ebp - 0x24]
cmp dword [eax], 0x100
jne 0x664686
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 4]
sub eax, 9
je 0x664643
sub eax, 4
je 0x6645fa
sub eax, 0xe
jne 0x66467a
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
xor edx, edx
mov ecx, dword [eax]
call dword [ecx + 0x144]
push ebp
call fcn.00664200
pop ecx
mov eax, dword [ebp - 0x24]
cmp dword [eax + 4], 0x1b
jne 0x664630
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
mov edx, dword [ebp - 0x20]
mov ecx, dword [eax]
call dword [ecx + 0x154]
jmp 0x664791
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
mov edx, dword [eax]
call dword [edx + 0x178]
jmp 0x664791
push ebp
call fcn.00664200
pop ecx
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 8]
push eax
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 4]
push eax
mov eax, dword [ebp - 0x24]
mov eax, dword [eax]
push eax
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
call fcn.004a0e60
push eax
call sub.user32.dll_SendMessageA
mov edx, dword [ebp - 0x24]
mov dword [edx + 0xc], eax
jmp 0x664791
push ebp
call fcn.0066422c
pop ecx
jmp 0x664791
mov eax, dword [ebp - 0x24]
mov eax, dword [eax]
cmp eax, 0x200
jb 0x664729
mov edx, dword [ebp - 0x24]
cmp eax, 0x20a
ja 0x664729
lea edx, [ebp - 0x30]
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 8]
call fcn.00408ee8
push 1
lea eax, [ebp - 0x30]
push eax
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
call fcn.004a0e60
push eax
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x30]
push eax
call sub.user32.dll_MapWindowPoints
call sub.user32.dll_GetCapture
mov edx, dword [ebp - 0x20]
cmp eax, dword [edx + 0x30]
je 0x664729
push dword [ebp - 0x2c]
push dword [ebp - 0x30]
lea edx, [ebp - 0x44]
mov eax, dword [ebp - 0x20]
call fcn.00663b48
lea eax, [ebp - 0x44]
push eax
call sub.user32.dll_PtInRect
test eax, eax
jne 0x664729
push dword [ebp - 0x2c]
push dword [ebp - 0x30]
lea ecx, [ebp - 0x44]
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
mov edx, dword [ebp - 0x20]
call fcn.0065507c
lea eax, [ebp - 0x44]
push eax
call sub.user32.dll_PtInRect
test eax, eax
je 0x664729
call fcn.00404b54
jmp 0x6647ae
mov eax, dword [ebp - 0x24]
cmp dword [eax], 2
jne 0x66473e
xor edx, edx
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax]
call dword [ecx + 0xcc]
mov eax, dword [ebp - 0x24]
cmp dword [eax], 0x104
jne 0x664752
mov eax, dword [ebp - 0x24]
cmp dword [eax + 4], 0x12
je 0x664759
push ebp
call fcn.0066422c
pop ecx
mov eax, dword [ebp - 0x24]
cmp dword [eax], 2
jne 0x664791
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x38]
push eax
push 0xfffffffffffffffc
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x30]
push eax
call sub.user32.dll_SetWindowLongA
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x28]
call fcn.00435aa4
mov eax, dword [ebp - 0x20]
xor edx, edx
mov dword [eax + 0x28], edx
mov eax, dword [ebp - 0x20]
xor edx, edx
mov dword [eax + 0x30], edx
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x6647ae
mov eax, dword [ebp - 0x28]
call fcn.004ee630
ret
pop esi
pop ebx
mov esp, ebp
pop ebp
ret