Function at 0x6602c2c2
Capabilities:
Log keystrokes via polling

Disassembly:
sub dword [esp + 4], 0x18
sub dword [esp + 4], 0x18
push ebp
mov ebp, esp
sub esp, 0x40
push ebx
push esi
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push edi
mov edi, dword [ebp + 0xc]
push 9
pop ecx
xor edx, edx
lea eax, [edi - 0x200]
mov ebx, 0xff
cmp eax, ecx
mov dword [ebp - 4], edx
mov dword [ebp - 8], ebx
ja case.default.0x6602c2ee
jmp dword [eax*4 + 0x6602fd30]
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x28]
mov ecx, dword [ecx]
mov cl, byte [ecx + 0x37]
cmp cl, 0x1d
jae 0x6603703a
push edx
push eax
push dword [eax + 0x3c]
call fcn.6602c460
push 2
mov dword [ebp - 4], 0xa
call esi
test ax, ax
jl 0x66037048
and dword [ebp - 0x10], 0
push 4
call esi
test ax, ax
jl 0x66037054
and dword [ebp + 0xc], 0
push 1
call esi
xor ecx, ecx
push 9
test ax, ax
setl cl
or ecx, dword [ebp + 0xc]
or ecx, dword [ebp - 0x10]
mov dword [ebp - 0xc], ecx
pop ecx
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 4]
mov eax, dword [eax + 0x28]
movzx edx, byte [edx + eax + 0xec]
mov dword [ebp + 0xc], edx
mov edx, dword [ebp - 8]
cmp edx, ebx
jne 0x6603706c
cmp dword [ebp + 0xc], ebx
je 0x6603707c
mov eax, dword [ebp - 4]
and dword [ebp - 0x10], 0
sub eax, ecx
je 0x6603717e
dec eax
dec eax
je 0x660370cb
xor eax, eax
cmp dword [ebp + 0xc], ebx
je 0x6602c44c
cmp dword [ebp - 4], 1
je 0x6602c43d
push 0x11
call esi
test ax, ax
jl 0x660371aa
xor ebx, ebx
push 0x12
call esi
test ax, ax
jl 0x660371b2
xor edi, edi
push 0x10
call esi
push dword [ebp + 8]
xor ecx, ecx
test ax, ax
setl cl
or ecx, edi
or ecx, ebx
mov dword [ebp - 4], ecx
call fcn.6602a468
mov esi, dword [ebp + 0x14]
mov ecx, dword [0x6610e6fc]
mov edi, eax
movsx eax, si
imul ecx, eax
mov dword [ebp + 0x14], ecx
push ecx
fild dword [ebp + 0x14]
fstp dword [esp]
push edi
call fcn.6602a489
shr esi, 0x10
movsx eax, si
fstp dword [ebp - 0x14]
imul eax, dword [0x6610e6f8]
mov dword [ebp + 0x14], eax
push ecx
fild dword [ebp + 0x14]
fstp dword [esp]
push edi
call fcn.6602a4d8
lea eax, [ebp - 0xc]
mov dword [ebp - 0x34], eax
lea eax, [ebp - 4]
fstp dword [ebp - 0x18]
mov dword [ebp - 0x38], eax
lea eax, [ebp - 0x14]
mov dword [ebp - 0x3c], eax
lea eax, [ebp - 0x18]
mov dword [ebp - 0x40], eax
lea eax, [ebp - 0x40]
push eax
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.66022982
test eax, eax
jne 0x6602c459
cmp dword [ebp - 0x10], eax
jne 0x660371ba
pop edi
pop esi
pop ebx
leave
ret 0x10
mov dword [ebp - 4], ecx
mov dword [ebp - 8], edx
lea eax, [edi - 0x1ff]
shr eax, 1
mov dword [ebp - 0xc], eax
jmp case.default.0x6602c2ee
mov dword [ebp - 4], 0xb
mov dword [ebp - 8], edx
jmp 0x66037024
cmp cl, 0x1f
ja 0x6602c309
jmp 0x6602c313
mov dword [ebp - 0x10], 2
jmp 0x6602c32b
mov dword [ebp + 0xc], 4
jmp 0x6602c33c
mov dword [ebp - 4], 1
jmp case.default.0x6602c2ee
movzx edx, byte [edx + eax + 0xec]
mov dword [ebp - 8], edx
jmp 0x6602c373
cmp dword [ebp - 4], 1
jne 0x660370b2
test byte [eax + 0x2a], 0x40
jne 0x660370b2
mov edx, dword [eax]
cmp edx, 0x6610dfe0
je 0x660370b2
cmp edx, 0x6610df08
je 0x660370b2
add edi, 0xfffffdff
mov dword [ebp - 4], ecx
shr edi, 1
mov dword [ebp - 0xc], edi
movzx eax, byte [eax + 0xf5]
mov dword [ebp + 0xc], eax
cmp dword [ebp + 0xc], ebx
jne 0x6602c37c
cmp dword [ebp - 8], ebx
jne 0x6602c37c
xor eax, eax
jmp 0x6602c459
mov eax, dword [ebp + 8]
push dword [eax + 0x30]
call fcn.660221ba
cmp eax, dword [ebp + 8]
jne 0x6602c393
push 1
call esi
test ax, ax
jl 0x66037105
push 4
call esi
test ax, ax
jl 0x66037105
push 2
call esi
test ax, ax
jl 0x66037105
mov eax, dword [ebp + 8]
push dword [eax + 0x30]
call fcn.6606efb4
cmp dword [ebp - 8], ebx
je 0x6602c393
movsx eax, word [ebp + 0x14]
mov edi, dword [ebp + 8]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp + 0x14]
shr eax, 0x10
movsx eax, ax
mov dword [ebp - 0x18], eax
mov eax, dword [edi + 0x28]
mov eax, dword [eax]
cmp byte [eax + 0x37], 0x11
jne 0x6603714e
push edi
call fcn.6606e5b1
test eax, eax
je 0x6603714e
mov ecx, dword [edi + 0x3c]
test ecx, ecx
je 0x6603714e
lea edx, [ebp - 0x1c]
push 1
push edx
push ecx
push eax
call dword [sym.imp.USER32.dll_MapWindowPoints]
lea eax, [ebp - 0x1c]
push eax
push edi
call fcn.6606ed4a
push 1
push 1
push dword [edi + 0x30]
push dword [ebp - 0x18]
push dword [ebp - 0x1c]
call fcn.6602c055
cmp edi, eax
jne 0x6602c393
mov dword [ebp - 0x10], 1
jmp 0x6602c393
push 1
call esi
test ax, ax
jl 0x6603719d
push 4
call esi
test ax, ax
jl 0x6603719d
push 2
call esi
test ax, ax
jge 0x6602c393
push dword [ebp + 8]
call fcn.6606eef6
jmp 0x6602c393
push 2
pop ebx
jmp 0x6602c3b7
push 4
pop edi
jmp 0x6602c3c6
lea eax, [ebp - 0x40]
push eax
push dword [ebp - 8]
push dword [ebp + 8]
call fcn.66022982
jmp 0x6602c459
mov eax, dword [esp + 4]
push 0
add eax, 0xffffffe4
push eax
call fcn.66079a4c
neg eax
sbb eax, eax
and eax, 0x7fffbffb
add eax, 0x80004005
ret 4
sub dword [esp + 4], 0x18
jmp fcn.66023cde
sub dword [esp + 4], 0x1c
jmp fcn.66023cde
sub dword [esp + 4], 0x1c
jmp fcn.66023ca8
sub dword [esp + 4], 0x1c
jmp fcn.66026080
sub dword [esp + 4], 0x20
jmp fcn.66023cde
sub dword [esp + 4], 0x20
jmp fcn.66023ca8
sub dword [esp + 4], 0x20
jmp fcn.66026080
mov eax, dword [esp + 8]
neg eax
sbb eax, eax
and eax, 0x800a0175
ret 8