Function at 0x4609cb76
Capabilities:
Log keystrokes via polling

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x68
mov eax, dword [0x460ec018]
xor eax, ebp
mov dword [ebp - 8], eax
push ebx
push esi
mov ebx, ecx
mov ecx, dword [ebp + 8]
movzx esi, cx
push edi
mov dword [ebp - 0x20], esi
lea eax, [esi - 0x10]
cmp eax, 2
ja 0x4609cbb5
mov edx, dword [ebp + 0xc]
call fcn.4609ab18
or word [0x460ec784], ax
xor eax, eax
inc eax
jmp 0x4609d24f
push 0x12
pop edx
mov ecx, 0xc0
call fcn.460e8ecc
push 0x11
pop edx
push 0x30
pop ecx
mov dword [ebp - 0x2c], eax
call fcn.460e8ecc
push 0x10
pop edx
push 3
pop ecx
mov dword [ebp - 0x14], eax
call fcn.460e8ecc
mov edx, eax
xor edi, edi
mov dword [ebp - 0x10], edx
mov dword [ebp - 0x18], edi
test dword [ebp - 0x14], edx
je 0x4609cbf9
mov eax, 0x8000
or word [0x460ec784], ax
xor ecx, ecx
inc ecx
mov dword [ebp - 0x24], ecx
test byte [ebx + 0x6c], cl
je 0x4609ccb6
call fcn.460e3c11
mov ecx, dword [0x460ec780]
call fcn.460e8e51
xor edx, edx
sub eax, 0x4e7
inc edx
cmp eax, edx
ja 0x4609cc8c
mov eax, 0xf7ff
and word [ebx + 0x64], ax
mov dword [ebp - 0x1c], eax
test byte [ebx + 0x60], dl
je 0x4609cc8c
push 0xd
and ecx, 0x3ff
pop eax
cmp cx, ax
jne 0x4609cc8c
push 0x14
call dword [sym.imp.USER32.dll_GetKeyState]
movzx ecx, ax
xor edx, edx
inc edx
mov eax, ecx
and eax, edx
mov edx, dword [ebp - 0x10]
xor eax, edx
je 0x4609cc6d
test cl, cl
js 0x4609cc6d
lea eax, [esi - 0x41]
mov ecx, 0x800
cmp eax, 0x19
jbe 0x4609cc6f
mov ecx, edi
mov ax, word [ebx + 0x64]
and ax, word [ebp - 0x1c]
or ax, cx
mov word [ebx + 0x64], ax
test eax, 0x800
je 0x4609cc8f
xor ecx, ecx
call fcn.460e3c4e
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp + 8]
push 8
pop ecx
cmp ax, cx
jne 0x4609ccb9
test edx, edx
je 0x4609ccb9
xor ecx, ecx
inc ecx
cmp dword [0x460ec72c], ecx
jne 0x4609ccb9
mov dword [0x460ec77c], ecx
xor eax, eax
jmp 0x4609d24f
mov eax, dword [ebp + 8]
test dword [ebx + 0x60], 0x200
mov ecx, ebx
je 0x4609cd00
cmp ax, 0x1b
jne 0x4609ccef
call fcn.4609c978
test eax, eax
jne 0x4609ccaf
lea eax, [ebp - 0x28]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
push 3
push edi
push dword [ebp - 0x24]
mov ecx, ebx
push dword [ebp - 0x28]
call fcn.4609c22a
jmp 0x4609ccaf
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push eax
call fcn.4609d2c7
jmp 0x4609d24f
call fcn.4609e4bf
mov ecx, eax
mov dword [ebp - 0xc], ecx
test ecx, ecx
jne 0x4609cd18
mov eax, 0x8007000e
jmp 0x4609d24f
mov edx, dword [ebp - 0x14]
test edx, edx
je 0x4609ce81
push dword [ebp + 0x10]
mov ecx, ebx
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.4609d2c7
test eax, eax
je 0x4609ccaf
cmp dword [ebp - 0x2c], edi
jne 0x4609cbad
mov ecx, dword [ebp - 0x10]
test ecx, ecx
jne 0x4609ce0b
cmp esi, 0x31
jb 0x4609ce0b
push 0x35
pop edx
cmp esi, 0x32
jbe 0x4609cdda
cmp esi, edx
je 0x4609cdda
push 0x4a
pop eax
push 0x45
pop edx
cmp esi, edx
je 0x4609cd82
cmp esi, eax
je 0x4609cd82
cmp esi, 0x4c
je 0x4609cd82
push 0x52
pop eax
cmp esi, eax
jne 0x4609ce0b
xor eax, eax
inc eax
test byte [ebx + 0x60], al
je 0x4609d24f
push eax
push dword [ebp + 0xc]
mov ecx, ebx
push esi
push 0x100
call fcn.4609e0d7
test eax, eax
je 0x4609cbad
mov eax, dword [ebp + 8]
push 0x45
pop ecx
cmp ax, cx
jne 0x4609cdb8
mov byte [ebp - 0x54], 3
jmp 0x4609cdd4
push 0x4a
pop ecx
cmp ax, cx
jne 0x4609cdc6
mov byte [ebp - 0x54], 4
jmp 0x4609cdd4
push 0x52
pop ecx
cmp ax, cx
sete al
inc al
mov byte [ebp - 0x54], al
push 8
pop eax
push eax
jmp 0x4609cdf9
lea eax, [esi - 0x30]
mov byte [ebp - 0x42], 5
imul eax, eax, 0x14
mov dword [ebp - 0x48], eax
cmp word [ebp + 8], dx
jne 0x4609cdf4
mov dword [ebp - 0x48], 0x1e
push 0x100
push dword [ebp + 0x10]
mov ecx, dword [ebp - 0xc]
lea eax, [ebp - 0x64]
push eax
call fcn.460d1c14
mov ecx, dword [ebp - 0x10]
cmp esi, 0x59
ja 0x4609cf37
je 0x4609ceea
cmp esi, 0x41
ja 0x4609ce61
je 0x4609cfe7
push 9
pop edx
cmp esi, edx
je 0x4609ce4e
cmp esi, 0xc
je 0x4609cfe7
cmp esi, 0x11
je 0x4609ce7b
cmp esi, 0x36
jne 0x4609ce7b
test ecx, ecx
je 0x4609ce7b
push 3
pop eax
mov dword [ebp - 0x18], eax
jmp 0x4609cf0e
push dword [ebp + 0x10]
mov ecx, ebx
push dword [ebp + 0xc]
push edx
call fcn.4609d5be
jmp 0x4609d24f
mov eax, esi
sub eax, 0x43
je 0x4609d056
sub eax, 0x13
je 0x4609d022
dec eax
sub eax, 1
je 0x4609ced4
mov edx, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
mov ax, word [ecx + 0x42]
xor ax, word [ebp - 0x10]
and ax, word [ebp - 0x24]
xor word [ecx + 0x42], ax
push 0x25
pop eax
cmp esi, eax
jbe 0x4609d0e4
mov eax, esi
sub eax, 0x26
je 0x4609d0d9
sub eax, 1
je 0x4609d20c
sub eax, 1
je 0x4609d0ce
sub eax, 5
je 0x4609d01d
sub eax, 1
jne 0x4609d092
cmp dword [ebp - 0x10], edi
je 0x4609d063
push dword [ebp + 0x10]
push edi
push edi
push 0x300
mov ecx, ebx
call fcn.4609d262
mov eax, dword [ebp - 0x18]
jmp 0x4609cf0b
cmp dword [ebx + 0x30], edi
je 0x4609cf09
test byte [ebx + 0x60], 4
jne 0x4609cf09
test dword [ebx + 0x60], 0x100000
je 0x4609cf09
push edi
push dword [ebx + 0x30]
mov ecx, ebx
call fcn.460a0d3b
mov eax, edi
push 9
pop edx
test eax, eax
je 0x4609ccaf
mov eax, dword [0x460ec780]
and eax, 0x3ff
cmp ax, dx
jne 0x4609ce7b
mov eax, dword [ebp - 0x18]
mov word [0x460ec778], ax
jmp 0x4609ccaf
mov eax, esi
sub eax, 0x5a
je 0x4609cff4
sub eax, 0xb
je 0x4609cfe7
sub eax, 0x55
je 0x4609cfe3
sub eax, 1
je 0x4609cf92
sub eax, 1
je 0x4609cf8e
sub eax, 4
je 0x4609cf82
sub eax, 0x1e
jne 0x4609ce7b
test ecx, ecx
je 0x4609cf7a
inc eax
xor word [0x460eca3c], ax
jmp 0x4609cf09
push 2
pop eax
mov dword [ebp - 0x18], eax
jmp 0x4609cf0b
mov eax, ecx
neg eax
sbb eax, eax
and eax, 3
inc eax
jmp 0x4609cf7d
push 6
jmp 0x4609cf7c
mov ecx, dword [ebp - 0xc]
lea edx, [ebp - 0x1c]
push edx
push ecx
mov eax, dword [ecx]
mov esi, dword [eax + 0x48]
mov ecx, esi
call dword [0x460ed508]
call esi
mov ecx, dword [ebp - 0x1c]
test ecx, ecx
je 0x4609cfdb
mov eax, dword [ecx]
push 0xff676982
push ecx
mov esi, dword [eax + 0xdc]
mov ecx, esi
call dword [0x460ed508]
call esi
mov eax, dword [ebp - 0x1c]
push eax
mov ecx, dword [eax]
mov esi, dword [ecx + 8]
mov ecx, esi
call dword [0x460ed508]
call esi
mov esi, dword [ebp - 0x20]
jmp 0x4609cf09
push 5
jmp 0x4609cf7c
mov ecx, dword [ebp - 0xc]
call fcn.460cf264
jmp 0x4609cf09
cmp dword [ebx + 0x2c], edi
je 0x4609cf09
test byte [ebx + 0x60], 4
jne 0x4609cf09
test dword [ebx + 0x60], 0x100000
je 0x4609cf09
push edi
push dword [ebx + 0x2c]
jmp 0x4609cf02
cmp dword [ebp - 0x10], edi
je 0x4609d052
xor eax, eax
mov ecx, ebx
inc eax
push eax
push edi
push edi
push 0x302
call fcn.4609e0d7
test eax, eax
je 0x4609cee5
push edi
push dword [ebp + 0x10]
mov ecx, ebx
push edi
push edi
push dword [ebp - 0xc]
push edi
call fcn.460a0dfd
jmp 0x4609cee5
test edx, edx
je 0x4609d0ae
push edi
push edi
push edi
push 0x301
jmp 0x4609cede
xor esi, esi
mov ecx, ebx
inc esi
push esi
push dword [ebp + 0xc]
push 0x2e
push 0x100
call fcn.4609e0d7
test eax, eax
je 0x4609d08b
push dword [ebp + 0x10]
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
push eax
call fcn.460d1465
mov edi, esi
jmp 0x4609d23f
sub eax, 0x51
jne 0x4609cbad
test byte [ebx + 0x60], 4
mov ecx, ebx
je 0x4609d1e2
call fcn.460a006f
jmp 0x4609d0c4
mov ecx, dword [ebx + 0x60]
test cl, 4
jne 0x4609d0c4
mov eax, ecx
not eax
xor eax, ecx
and eax, 0x40
xor eax, ecx
mov dword [ebx + 0x60], eax
xor eax, eax
lea edi, [eax + 1]
jmp 0x4609d23f
push edx
call fcn.460cfafa
jmp 0x4609d23d
push edx
call fcn.460cf8ef
jmp 0x4609d23d
je 0x4609d20c
push 8
pop eax
sub esi, eax
je 0x4609d09b
dec esi
sub esi, 1
je 0x4609d170
sub esi, 3
je 0x4609d170
sub esi, 0x14
je 0x4609d14d
sub esi, 1
je 0x4609d12a
sub esi, 1
je 0x4609d11f
sub esi, 1
jne 0x4609cbad
push edx
call fcn.460cfe80
jmp 0x4609d23d
push edx
call fcn.460cff60
jmp 0x4609d23d
xor eax, eax
inc eax
test byte [ebx + 0x66], al
je 0x4609d142
mov eax, dword [ebx + 0x24]
test dword [eax + 0x20], 0x20000
je 0x4609d23f
push edx
call fcn.460d015e
jmp 0x4609d23d
xor eax, eax
inc eax
test byte [ebx + 0x66], al
je 0x4609d165
mov eax, dword [ebx + 0x24]
test dword [eax + 0x20], 0x20000
je 0x4609d23f
push edx
call fcn.460d0092
jmp 0x4609d23d
test dword [ebx + 0x60], 0x80000
jne 0x4609d23f
mov eax, dword [ebx + 0x24]
test dword [eax + 0x20], 0x20000
jne 0x4609d195
mov ecx, ebx
call fcn.460a006f
jmp 0x4609cbad
push ecx
push edi
mov ecx, ebx
call fcn.4609aa0b
xor eax, eax
mov ecx, ebx
inc eax
push eax
push dword [ebp + 0xc]
push 0xd
pop eax
push eax
push 0x102
call fcn.4609e0d7
test eax, eax
je 0x4609d0c4
cmp dword [ebp - 0x10], edi
je 0x4609d1cf
xor eax, eax
inc eax
test byte [ebx + 0x60], al
je 0x4609d1cf
push 0xb
pop eax
jmp 0x4609d1d1
mov eax, edi
mov ecx, dword [ebp - 0xc]
push eax
push dword [ebp + 0x10]
call fcn.460d1133
jmp 0x4609d0c4
xor eax, eax
inc eax
push eax
push dword [ebp + 0xc]
push 8
pop eax
push eax
push 0x100
call fcn.4609e0d7
test eax, eax
je 0x4609d23f
push dword [ebp + 0x10]
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
push eax
call fcn.460d154a
jmp 0x4609d23d
call fcn.460d1957
push 0x25
pop edx
movzx ecx, word [eax + 2]
xor eax, eax
inc eax
and ecx, eax
xor eax, eax
cmp word [ebp + 8], dx
sete al
cmp ecx, eax
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
push eax
je 0x4609d238
call fcn.460cf714
jmp 0x4609d23d
call fcn.460cf7ff
mov edi, eax
neg edi
sbb edi, edi
and edi, 0xfffbfdff
lea eax, [edi + 0x40201]
mov ecx, dword [ebp - 8]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.460ea320
mov esp, ebp
pop ebp
ret 0xc