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

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffa4
push ebx
push esi
mov ebx, ecx
mov dword [ebp - 4], edx
mov dword [ebp - 8], eax
mov eax, dword [ebp - 4]
mov byte [eax + 0x70], 0
mov eax, dword [ebp - 4]
call fcn.00765928
xor eax, eax
push ebp
push 0x769e33
push dword fs:[eax]
mov dword fs:[eax], esp
xor eax, eax
push ebp
push 0x769ddb
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 8]
mov eax, dword [eax + 8]
mov edx, dword [ebp - 4]
mov dword [edx + 0x58], eax
mov byte [ebp - 0xd], 0
test bl, bl
je 0x769780
lea eax, [ebp - 0x4c]
call fcn.0075953c
lea edx, [ebp - 0x4c]
lea ecx, [ebp - 0x18]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xcc]
call fcn.00765414
mov eax, dword [ebp - 0x14]
push eax
lea eax, [ebp - 0xd]
push eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xcc]
mov ecx, dword [ebp - 0x18]
movzx edx, word [0x769e44]
mov ebx, dword [eax]
call dword [ebx + 0x30]
mov eax, dword [ebp - 4]
call fcn.00768db4
test al, al
je 0x76977a
call fcn.00407e80
call fcn.00407e80
jmp 0x769e3a
mov byte [ebp - 0xd], 0
jmp 0x7697b0
cmp byte [ebp + 0x10], 0
je 0x7697b0
movzx edx, byte [ebp + 0xc]
xor dl, 1
mov eax, dword [ebp - 4]
call fcn.00768e28
mov eax, dword [ebp - 4]
call fcn.00768db4
test al, al
je 0x7697b0
call fcn.00407e80
call fcn.00407e80
jmp 0x769e3a
call sub.user32.dll_GetActiveWindow
mov dword [ebp - 0xc], eax
jmp 0x769db6
call fcn.00759934
push 0
push 0
push 0
push 0
lea eax, [ebp - 0x44]
push eax
call sub.user32.dll_PeekMessageW
test eax, eax
jne 0x769801
call fcn.007596f4
test al, al
je 0x7697f7
push 0x4ff
push 1
push 0
push 0
push 0
call sub.user32.dll_MsgWaitForMultipleObjects
jmp 0x769db6
call sub.user32.dll_WaitMessage
jmp 0x769db6
mov eax, dword [ebp - 0x40]
sub eax, 0x201
je 0x769814
sub eax, 3
jne 0x7698fd
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x14], eax
lea eax, [ebp - 0x18]
mov dl, 1
call fcn.0050f828
mov ebx, eax
mov eax, ebx
mov edx, dword [0x760588]
call fcn.00406c20
test al, al
je 0x769853
mov edx, dword [ebx + 0x29c]
mov eax, dword [ebp - 4]
call fcn.0076583c
test al, al
jne 0x7698fd
mov eax, dword [ebp - 4]
cmp byte [eax + 0x90], 0
jne 0x7698a0
mov eax, dword [ebp - 4]
cmp ebx, dword [eax + 0xe0]
jne 0x7698a0
lea ecx, [ebp - 0x4c]
lea edx, [ebp - 0x18]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
call fcn.005110b8
lea eax, [ebp - 0x4c]
push eax
lea edx, [ebp - 0x5c]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
mov ecx, dword [eax]
call dword [ecx + 0x60]
lea eax, [ebp - 0x5c]
pop edx
call fcn.0040e10c
test al, al
jne 0x7698af
call fcn.00407e80
call fcn.00407e80
jmp 0x769e3a
cmp dword [ebp - 0x40], 0x201
jne 0x7698fd
push ebp
lea eax, [ebp - 0x18]
mov dl, 1
call fcn.00769334
pop ecx
mov eax, dword [ebp - 4]
cmp dword [eax + 0xcc], 0
je 0x7698ee
mov eax, dword [ebp - 4]
cmp byte [eax + 0xa8], 0
je 0x7698ee
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xcc]
mov eax, dword [eax + 0x1c]
test byte [eax + 0x70], 0x10
je 0x7698fd
call fcn.00407e80
call fcn.00407e80
jmp 0x769e3a
push 3
mov esi, dword [ebp - 0x40]
push esi
push esi
push 0
lea eax, [ebp - 0x44]
push eax
call sub.user32.dll_PeekMessageW
test eax, eax
je 0x769db6
mov eax, dword [ebp - 0x40]
cmp eax, 0x113
jg 0x769948
je 0x769aff
sub eax, 0x4d
je case.0x769b7a.518
sub eax, 0x2e
je case.0x769b7a.518
add eax, 0xffffff7b
sub eax, 0xa
jb 0x769966
jmp 0x769d5f
sub eax, 0x118
je case.0x769b7a.518
add eax, 0xffffff18
sub eax, 0xf
jb 0x769b62
jmp 0x769d5f
mov eax, dword [0x9f20c8]
mov eax, dword [eax]
call fcn.005eaf10
push 1
call sub.user32.dll_GetKeyState
test ax, ax
jl 0x769994
cmp byte [ebp + 8], 0
je 0x769990
push 2
call sub.user32.dll_GetKeyState
test ax, ax
jl 0x769994
xor eax, eax
jmp 0x769996
mov al, 1
mov byte [ebp - 0x20], al
mov eax, dword [ebp - 0x40]
sub eax, 0x100
je 0x7699bb
sub eax, 2
je 0x769a30
sub eax, 2
je 0x7699bb
sub eax, 2
je 0x769a30
jmp case.0x769b7a.518
cmp dword [ebp - 0x3c], 0xe5
jne 0x7699d0
mov eax, dword [ebp - 0x44]
push eax
call sub.imm32.dll_ImmGetVirtualKey
mov dword [ebp - 0x3c], eax
movzx eax, word [ebp - 0x3c]
mov word [ebp - 0x22], ax
cmp byte [ebp - 0x20], 0
je 0x7699e9
cmp word [ebp - 0x22], 0x70
jne case.0x769b7a.518
push ebp
mov eax, dword [ebp - 0x38]
call fcn.005ddbe0
push eax
push ebp
call fcn.007692f8
pop ecx
lea edx, [ebp - 0x22]
pop ecx
call fcn.0076942c
pop ecx
test al, al
je 0x769a17
call fcn.00407e80
call fcn.00407e80
jmp 0x769e3a
cmp word [ebp - 0x22], 0
je case.0x769b7a.518
lea eax, [ebp - 0x44]
push eax
call sub.user32.dll_TranslateMessage
jmp case.0x769b7a.518
cmp byte [ebp - 0x20], 0
jne case.0x769b7a.518
movzx eax, word [ebp - 0x3c]
mov word [ebp - 0x22], ax
push ebp
call fcn.007692f8
pop ecx
mov dword [ebp - 0x1c], eax
movzx eax, word [ebp - 0x22]
mov word [ebp - 0x1e], ax
push 0
lea eax, [ebp - 0x1f]
push eax
mov eax, dword [ebp - 0x1c]
mov edx, dword [eax + 0xcc]
movzx ecx, word [ebp - 0x1e]
mov eax, dword [ebp - 0x1c]
call fcn.007688a4
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x28], 0
jne 0x769ad3
movzx eax, word [ebp - 0x22]
sub ax, 0x20
je 0x769a88
sub ax, 0xd
jne 0x769ac7
mov eax, dword [ebp - 4]
cmp byte [eax + 0x90], 0
jne 0x769ac7
mov eax, dword [ebp - 0x1c]
cmp eax, dword [ebp - 4]
jne 0x769ac7
call sub.user32.dll_GetActiveWindow
test eax, eax
je 0x769ac7
call sub.user32.dll_GetActiveWindow
mov edx, eax
movzx ecx, word [ebp - 0x22]
mov eax, dword [ebp - 4]
call fcn.00768e0c
call fcn.00407e80
call fcn.00407e80
jmp 0x769e3a
push 0
call sub.user32.dll_MessageBeep
jmp case.0x769b7a.518
mov edx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x1c]
call fcn.00766370
mov eax, dword [ebp - 0x1c]
call fcn.00768f74
cmp byte [ebp - 0x1f], 0
je case.0x769b7a.518
mov dl, 1
mov eax, dword [ebp - 0x1c]
call fcn.00768e28
jmp case.0x769b7a.518
mov eax, dword [ebp - 0x44]
call fcn.0050dcb4
mov ebx, eax
test ebx, ebx
je 0x769b54
mov eax, ebx
mov edx, dword [0x760588]
call fcn.00406c20
test al, al
je 0x769b54
cmp dword [ebp - 0x3c], 0x2328
jb 0x769b54
cmp dword [ebp - 0x3c], 0x232b
ja 0x769b54
cmp dword [ebx + 0x29c], 0
je case.0x769b7a.518
movzx edx, byte [ebp - 0x3c]
sub dl, 0x28
mov eax, dword [ebx + 0x29c]
call fcn.00769664
jmp case.0x769b7a.518
lea eax, [ebp - 0x44]
push eax
call sub.user32.dll_DispatchMessageW
jmp case.0x769b7a.518
mov eax, dword [ebp - 0x40]
add eax, 0xfffffe00
cmp eax, 0xa
ja case.0x769b7a.518
movzx eax, byte [eax + 0x769b81]
jmp dword [eax*4 + 0x769b8c]
mov eax, dword [ebp - 0x30]
cmp eax, dword [0x9faa68]
jne 0x769bba
mov eax, dword [ebp - 0x2c]
cmp eax, dword [0x9faa6c]
je case.0x769b7a.518
mov eax, dword [ebp - 0x30]
mov dword [0x9faa68], eax
mov eax, dword [ebp - 0x2c]
mov dword [0x9faa6c], eax
push ebp
call fcn.007694d4
pop ecx
jmp case.0x769b7a.518
push ebp
lea edx, [ebp - 0x28]
lea eax, [ebp - 0x1c]
call fcn.00769384
pop ecx
test al, al
je case.0x769b7a.518
lea ecx, [ebp - 0x18]
lea edx, [ebp - 0x30]
mov eax, dword [ebp - 0x28]
call fcn.00765414
mov eax, dword [ebp - 0x14]
push eax
mov edx, dword [ebp - 0x3c]
shr edx, 0x10
movsx edx, dx
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x28]
mov ebx, dword [eax]
call dword [ebx + 0x3c]
jmp case.0x769b7a.518
cmp dword [ebp - 0x40], 0x204
setne al
or al, byte [ebp + 8]
je case.0x769b7a.518
mov eax, dword [0x9f20c8]
mov eax, dword [eax]
call fcn.005eaf10
mov byte [ebp - 0xd], 0
mov eax, dword [ebp - 4]
and byte [eax + 0xd3], 0xef
push ebp
lea eax, [ebp - 0x30]
mov dl, 1
call fcn.00769334
pop ecx
push ebp
lea edx, [ebp - 0x28]
lea eax, [ebp - 0x1c]
call fcn.00769384
pop ecx
test al, al
je case.0x769b7a.518
cmp dword [ebp - 0x40], 0x203
je 0x769c7c
movzx eax, word [0x769e44]
mov word [ebp - 0x24], ax
jmp 0x769c87
movzx eax, word [0x769e48]
mov word [ebp - 0x24], ax
lea ecx, [ebp - 0x18]
lea edx, [ebp - 0x30]
mov eax, dword [ebp - 0x28]
call fcn.00765414
mov eax, dword [ebp - 0x14]
push eax
lea eax, [ebp - 0xd]
push eax
mov ecx, dword [ebp - 0x18]
movzx edx, word [ebp - 0x24]
mov eax, dword [ebp - 0x28]
mov ebx, dword [eax]
call dword [ebx + 0x30]
lea eax, [ebp - 0x4c]
call fcn.0075953c
mov eax, dword [ebp - 0x4c]
mov dword [0x9faa68], eax
mov eax, dword [ebp - 0x48]
mov dword [0x9faa6c], eax
jmp case.0x769b7a.518
cmp dword [ebp - 0x40], 0x202
sete al
or al, byte [ebp + 8]
je case.0x769b7a.518
push ebp
lea eax, [ebp - 0x30]
xor edx, edx
call fcn.00769334
pop ecx
push ebp
lea edx, [ebp - 0x28]
lea eax, [ebp - 0x1c]
call fcn.00769384
pop ecx
test al, al
jne 0x769d3c
cmp dword [ebp - 0x1c], 0
je 0x769d15
mov eax, dword [ebp - 0x1c]
cmp eax, dword [ebp - 4]
jne case.0x769b7a.518
mov eax, dword [ebp - 4]
cmp byte [eax + 0x91], 0
je case.0x769b7a.518
mov eax, dword [ebp - 4]
test byte [eax + 0xd3], 0x10
jne 0x769d30
call fcn.00407e80
call fcn.00407e80
jmp 0x769e3a
mov eax, dword [ebp - 4]
and byte [eax + 0xd3], 0xef
jmp case.0x769b7a.518
lea ecx, [ebp - 0x18]
lea edx, [ebp - 0x30]
mov eax, dword [ebp - 0x28]
call fcn.00765414
movzx eax, byte [ebp - 0xd]
push eax
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x28]
mov ebx, dword [eax]
call dword [ebx + 0x38]
jmp case.0x769b7a.518
lea eax, [ebp - 0x44]
push eax
call sub.user32.dll_DispatchMessageW
push ebp
call fcn.007693f4
pop ecx
test al, al
jne 0x769d82
call fcn.00407e80
call fcn.00407e80
jmp 0x769e3a
cmp dword [0x9faa68], 0x80000000
jne 0x769daf
lea eax, [ebp - 0x4c]
call fcn.0075953c
mov eax, dword [ebp - 0x4c]
mov dword [0x9faa68], eax
mov eax, dword [ebp - 0x48]
mov dword [0x9faa6c], eax
push ebp
call fcn.007694d4
pop ecx
push ebp
call fcn.007695d8
pop ecx
push ebp
call fcn.007693f4
pop ecx
test al, al
jne 0x7697bd
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x769de2
mov eax, dword [ebp - 4]
call fcn.00768b38
ret
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc