Function at 0x77df64
Capabilities:
Log keystrokes via input method manager
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff98
push ebx
mov byte [ebp - 0x12], cl
mov byte [ebp - 0x11], dl
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
call fcn.00779930
cmp byte [ebp - 0x12], 0
je 0x77df8e
mov eax, dword [ebp - 4]
or byte [eax + 0xa2], 0x40
jmp 0x77df98
mov eax, dword [ebp - 4]
and byte [eax + 0xa2], 0xbf
mov eax, dword [ebp - 4]
or byte [eax + 0xa2], 1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xb4]
call fcn.00490574
call fcn.00774f4c
xor eax, eax
push ebp
push 0x77e735
push dword fs:[eax]
mov dword fs:[eax], esp
xor eax, eax
push ebp
push 0x77e6e5
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
mov dword [ebp - 0x10], eax
mov byte [ebp - 0xc], 0
mov byte [ebp - 0xb], 0
mov eax, dword [ebp + 8]
mov dword [ebp - 8], eax
cmp byte [ebp - 0x11], 0
je 0x77e04a
call sub.user32.dll_GetMessagePos
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x58]
lea edx, [ebp - 0x54]
call fcn.00408e50
lea edx, [ebp - 0x54]
lea ecx, [ebp - 0x1b]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x9c]
call fcn.0077947c
mov eax, dword [ebp - 0x17]
push eax
lea eax, [ebp - 0x10]
push eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x9c]
mov ecx, dword [ebp - 0x1b]
mov dl, byte [0x77e744]
mov ebx, dword [eax]
call dword [ebx + 0x24]
cmp byte [ebp - 0xb], 0
je 0x77e046
call fcn.00404d64
call fcn.00404d64
jmp 0x77e73c
mov byte [ebp - 0xc], 0
mov eax, dword [ebp - 4]
test byte [eax + 0xa2], 0x40
je 0x77e061
mov dl, byte [ebp + 0x10]
mov eax, dword [ebp - 4]
call fcn.0077a354
mov byte [ebp - 0x13], 1
jmp 0x77e6c0
cmp byte [ebp - 0x13], 0
jne 0x77e075
call sub.user32.dll_WaitMessage
mov byte [ebp - 0x13], 0
jmp 0x77e69c
mov eax, dword [ebp - 0x48]
sub eax, 0x201
je 0x77e091
sub eax, 3
jne 0x77e18a
lea edx, [ebp - 0x1b]
mov eax, dword [ebp - 0x40]
call fcn.00408e50
lea eax, [ebp - 0x1b]
push eax
mov eax, dword [ebp - 0x4c]
push eax
call sub.user32.dll_ClientToScreen
lea eax, [ebp - 0x1b]
mov dl, 1
call fcn.004883c8
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x20]
mov edx, dword [0x774db0]
call fcn.004045ac
test al, al
je 0x77e0e1
mov eax, dword [ebp - 0x20]
mov edx, dword [eax + 0x214]
mov eax, dword [ebp - 4]
call fcn.007797f8
test al, al
jne 0x77e18a
mov eax, dword [ebp - 4]
cmp byte [eax + 0x60], 0
jne 0x77e130
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xb4]
cmp eax, dword [ebp - 0x20]
jne 0x77e130
lea ecx, [ebp - 0x54]
lea edx, [ebp - 0x1b]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xb4]
call fcn.00489688
push dword [ebp - 0x50]
push dword [ebp - 0x54]
lea edx, [ebp - 0x68]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xb4]
mov ecx, dword [eax]
call dword [ecx + 0x44]
lea eax, [ebp - 0x68]
push eax
call sub.user32.dll_PtInRect
test eax, eax
jne 0x77e13f
call fcn.00404d64
call fcn.00404d64
jmp 0x77e73c
cmp dword [ebp - 0x48], 0x201
jne 0x77e18a
push ebp
lea eax, [ebp - 0x1b]
mov dl, 1
call fcn.0077d950
pop ecx
mov eax, dword [ebp - 4]
cmp dword [eax + 0x9c], 0
je 0x77e17b
mov eax, dword [ebp - 4]
cmp byte [eax + 0x78], 0
je 0x77e17b
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x9c]
mov eax, dword [eax + 0x18]
test byte [eax + 0x60], 0x10
je 0x77e18a
call fcn.00404d64
call fcn.00404d64
jmp 0x77e73c
push 3
push 0
push 0
push 0
lea eax, [ebp - 0x4c]
push eax
call sub.user32.dll_PeekMessageA
test eax, eax
je 0x77e69c
mov eax, dword [ebp - 0x48]
cmp eax, 0x113
jg 0x77e1cb
je 0x77e38f
sub eax, 0x7b
je case.0x77e417.512
add eax, 0xffffff7b
sub eax, 9
jb 0x77e1e9
jmp 0x77e654
sub eax, 0x118
je case.0x77e417.512
add eax, 0xffffff18
sub eax, 0xb
jb 0x77e400
jmp 0x77e654
mov eax, dword [0x829d34]
mov eax, dword [eax]
call fcn.004abbd8
push 1
call sub.user32.dll_GetKeyState
test ax, ax
jl 0x77e217
cmp byte [ebp + 0xc], 0
je 0x77e213
push 2
call sub.user32.dll_GetKeyState
test ax, ax
jl 0x77e217
xor eax, eax
jmp 0x77e219
mov al, 1
mov byte [ebp - 0x26], al
mov eax, dword [ebp - 0x48]
sub eax, 0x100
je 0x77e23e
sub eax, 2
je 0x77e2b2
sub eax, 2
je 0x77e23e
sub eax, 2
je 0x77e2b2
jmp case.0x77e417.512
cmp dword [ebp - 0x44], 0xe5
jne 0x77e253
mov eax, dword [ebp - 0x4c]
push eax
call sub.imm32.dll_ImmGetVirtualKey
mov dword [ebp - 0x44], eax
cmp byte [ebp - 0x26], 0
je 0x77e263
cmp dword [ebp - 0x44], 0x70
jne case.0x77e417.512
mov ax, word [ebp - 0x44]
mov word [ebp - 0x28], ax
push ebp
mov eax, dword [ebp - 0x40]
call fcn.004a1d80
push eax
push ebp
call fcn.0077d880
pop ecx
lea edx, [ebp - 0x28]
pop ecx
call fcn.0077dc3c
pop ecx
test al, al
je 0x77e299
call fcn.00404d64
call fcn.00404d64
jmp 0x77e73c
cmp word [ebp - 0x28], 0
je case.0x77e417.512
lea eax, [ebp - 0x4c]
push eax
call sub.user32.dll_TranslateMessage
jmp case.0x77e417.512
cmp byte [ebp - 0x26], 0
jne case.0x77e417.512
push ebp
call fcn.0077d880
pop ecx
mov dword [ebp - 0x24], eax
push 0
lea eax, [ebp - 0x25]
push eax
mov ecx, dword [ebp - 0x44]
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + 0x9c]
mov eax, dword [ebp - 0x24]
call fcn.0077ce84
mov dword [ebp - 0x30], eax
cmp dword [ebp - 0x30], 0
jne 0x77e345
mov eax, dword [ebp - 0x44]
sub eax, 0x20
je 0x77e2f6
sub eax, 0xd
jne 0x77e339
mov eax, dword [ebp - 4]
cmp byte [eax + 0x60], 0
jne 0x77e339
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp - 4]
jne 0x77e339
call sub.user32.dll_GetActiveWindow
test eax, eax
je 0x77e339
mov eax, dword [ebp - 8]
mov byte [eax], 2
call sub.user32.dll_GetActiveWindow
mov edx, dword [ebp - 8]
mov dword [edx + 4], eax
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0x44]
mov dword [eax + 8], edx
call fcn.00404d64
call fcn.00404d64
jmp 0x77e73c
push 0
call sub.user32.dll_MessageBeep
jmp case.0x77e417.512
mov edx, dword [ebp - 0x30]
mov eax, dword [ebp - 0x24]
call fcn.0077a494
cmp byte [ebp - 0x25], 0
je 0x77e382
mov word [ebp - 0x28], 0xd
push ebp
lea edx, [ebp - 0x28]
mov cl, byte [0x77e744]
mov eax, dword [ebp - 0x24]
call fcn.0077dc3c
pop ecx
test al, al
je 0x77e382
call fcn.00404d64
call fcn.00404d64
jmp 0x77e73c
mov eax, dword [ebp - 0x24]
call fcn.0077d7d4
jmp case.0x77e417.512
mov eax, dword [ebp - 0x4c]
call fcn.004869a8
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], 0
je 0x77e3f2
mov eax, dword [ebp - 0x20]
mov edx, dword [0x774db0]
call fcn.004045ac
test al, al
je 0x77e3f2
cmp dword [ebp - 0x44], 0x2328
jl 0x77e3f2
cmp dword [ebp - 0x44], 0x232b
jg 0x77e3f2
mov eax, dword [ebp - 0x20]
cmp dword [eax + 0x214], 0
je case.0x77e417.512
push ebp
mov edx, dword [ebp - 0x44]
sub edx, 0x2328
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x214]
call fcn.0077ded0
pop ecx
jmp case.0x77e417.512
lea eax, [ebp - 0x4c]
push eax
call sub.user32.dll_DispatchMessageA
jmp case.0x77e417.512
mov eax, dword [ebp - 0x48]
add eax, 0xfffffe00
cmp eax, 0xa
ja case.0x77e417.512
mov al, byte [eax + 0x77e41e]
jmp dword [eax*4 + 0x77e429]
mov eax, dword [ebp - 0x38]
cmp eax, dword [0x8309fc]
jne 0x77e453
mov eax, dword [ebp - 0x34]
cmp eax, dword [0x830a00]
je 0x77e46c
mov eax, dword [ebp - 0x38]
mov dword [0x8309fc], eax
mov eax, dword [ebp - 0x34]
mov dword [0x830a00], eax
push ebp
call fcn.0077dcf0
pop ecx
push ebp
lea edx, [ebp - 0x30]
lea eax, [ebp - 0x24]
call fcn.0077db54
pop ecx
test al, al
je case.0x77e417.512
lea ecx, [ebp - 0x1b]
lea edx, [ebp - 0x38]
mov eax, dword [ebp - 0x30]
call fcn.0077947c
lea eax, [ebp - 0x10]
push eax
mov ecx, dword [ebp - 0x17]
mov edx, dword [ebp - 0x1b]
mov eax, dword [ebp - 0x30]
mov ebx, dword [eax]
call dword [ebx + 0x28]
jmp case.0x77e417.512
push ebp
lea edx, [ebp - 0x30]
lea eax, [ebp - 0x24]
call fcn.0077db54
pop ecx
test al, al
je case.0x77e417.512
lea ecx, [ebp - 0x1b]
lea edx, [ebp - 0x38]
mov eax, dword [ebp - 0x30]
call fcn.0077947c
mov eax, dword [ebp - 0x17]
push eax
lea eax, [ebp - 0x10]
push eax
movsx edx, word [ebp - 0x42]
mov ecx, dword [ebp - 0x1b]
mov eax, dword [ebp - 0x30]
mov ebx, dword [eax]
call dword [ebx + 0x30]
jmp case.0x77e417.512
cmp dword [ebp - 0x48], 0x204
setne al
or al, byte [ebp + 0xc]
je case.0x77e417.512
mov eax, dword [0x829d34]
mov eax, dword [eax]
call fcn.004abbd8
mov byte [ebp - 0xc], 0
mov eax, dword [ebp - 4]
and byte [eax + 0xa2], 0xef
push ebp
lea eax, [ebp - 0x38]
mov dl, 1
call fcn.0077d950
pop ecx
push ebp
lea edx, [ebp - 0x30]
lea eax, [ebp - 0x24]
call fcn.0077db54
pop ecx
test al, al
je case.0x77e417.512
cmp dword [ebp - 0x48], 0x203
je 0x77e546
mov al, byte [0x77e744]
mov byte [ebp - 0x29], al
jmp 0x77e54e
mov al, byte [0x77e748]
mov byte [ebp - 0x29], al
lea ecx, [ebp - 0x1b]
lea edx, [ebp - 0x38]
mov eax, dword [ebp - 0x30]
call fcn.0077947c
mov eax, dword [ebp - 0x17]
push eax
lea eax, [ebp - 0x10]
push eax
mov ecx, dword [ebp - 0x1b]
mov dl, byte [ebp - 0x29]
mov eax, dword [ebp - 0x30]
mov ebx, dword [eax]
call dword [ebx + 0x24]
cmp byte [ebp - 0xb], 0
je 0x77e587
call fcn.00404d64
call fcn.00404d64
jmp 0x77e73c
call sub.user32.dll_GetMessagePos
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x58]
lea edx, [ebp - 0x54]
call fcn.00408e50
mov eax, dword [ebp - 0x54]
mov dword [0x8309fc], eax
mov eax, dword [ebp - 0x50]
mov dword [0x830a00], eax
jmp case.0x77e417.512
cmp dword [ebp - 0x48], 0x202
sete al
or al, byte [ebp + 0xc]
je case.0x77e417.512
push ebp
lea eax, [ebp - 0x38]
xor edx, edx
call fcn.0077d950
pop ecx
push ebp
lea edx, [ebp - 0x30]
lea eax, [ebp - 0x24]
call fcn.0077db54
pop ecx
test al, al
jne 0x77e61f
cmp dword [ebp - 0x24], 0
je 0x77e5f8
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp - 4]
jne case.0x77e417.512
mov eax, dword [ebp - 4]
cmp byte [eax + 0x61], 0
je case.0x77e417.512
mov eax, dword [ebp - 4]
test byte [eax + 0xa2], 0x10
jne 0x77e613
call fcn.00404d64
call fcn.00404d64
jmp 0x77e73c
mov eax, dword [ebp - 4]
and byte [eax + 0xa2], 0xef
jmp case.0x77e417.512
lea ecx, [ebp - 0x1b]
lea edx, [ebp - 0x38]
mov eax, dword [ebp - 0x30]
call fcn.0077947c
lea eax, [ebp - 0x10]
push eax
mov ecx, dword [ebp - 0x17]
mov edx, dword [ebp - 0x1b]
mov eax, dword [ebp - 0x30]
mov ebx, dword [eax]
call dword [ebx + 0x2c]
cmp byte [ebp - 0xb], 0
je case.0x77e417.512
call fcn.00404d64
call fcn.00404d64
jmp 0x77e73c
lea eax, [ebp - 0x4c]
push eax
call sub.user32.dll_DispatchMessageA
cmp dword [0x8309fc], 0x80000000
jne 0x77e695
call sub.user32.dll_GetMessagePos
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x58]
lea edx, [ebp - 0x54]
call fcn.00408e50
mov eax, dword [ebp - 0x54]
mov dword [0x8309fc], eax
mov eax, dword [ebp - 0x50]
mov dword [0x830a00], eax
push ebp
call fcn.0077dcf0
pop ecx
push ebp
call fcn.0077de1c
pop ecx
push ebp
call fcn.0077dc20
pop ecx
test al, al
je 0x77e6c0
push 0
push 0
push 0
push 0
lea eax, [ebp - 0x4c]
push eax
call sub.user32.dll_PeekMessageA
test eax, eax
jne 0x77e07e
push ebp
call fcn.0077dc20
pop ecx
test al, al
jne 0x77e06a
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x77e6ec
mov eax, dword [ebp - 4]
call fcn.0077d160
ret
pop ebx
mov esp, ebp
pop ebp
ret 0xc