Function at 0x7831d76e
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x4c
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
push edi
mov esi, ecx
call sym.MFC80U.DLL_Ordinal_5210
test eax, eax
je 0x7831d791
xor eax, eax
inc eax
jmp 0x7831d98e
mov edi, dword [edi + 4]
mov eax, esi
call fcn.783169c4
test byte [esi + 0x80], 0x20
mov dword [esp + 0x1c], eax
mov ebx, 0x201
jne 0x7831d7bd
cmp edi, ebx
je 0x7831d7bd
cmp edi, 0x202
jne 0x7831d933
cmp edi, 0x200
jb 0x7831d7cd
cmp edi, 0x209
jbe 0x7831d7dc
lea eax, [edi - 0xa0]
cmp eax, 9
ja 0x7831d933
call sym.MFC80U.DLL_Ordinal_1080
mov dword [esp + 0x18], eax
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x14]
mov eax, dword [eax + 0x18]
mov dword [esp + 0x24], eax
lea eax, [esp + 0x20]
push eax
push dword [esi + 0x20]
mov dword [esp + 0x28], ecx
call dword [sym.imp.USER32.dll_ScreenToClient]
push 0x30
lea eax, [esp + 0x2c]
push 0
push eax
call sub.MSVCR80.dll_memset
mov eax, dword [esi]
add esp, 0xc
lea ecx, [esp + 0x28]
push ecx
push dword [esp + 0x28]
mov ecx, esi
push dword [esp + 0x28]
mov dword [esp + 0x34], 0x28
call dword [eax + 0x74]
cmp dword [esp + 0x4c], 0xffffffff
mov dword [esp + 0x10], eax
je 0x7831d847
push dword [esp + 0x4c]
call dword [sym.imp.MSVCR80.dll_free]
pop ecx
cmp edi, ebx
jne 0x7831d85f
test dword [esp + 0x2c], 0x80000000
je 0x7831d85f
mov dword [esp + 0x14], 1
jmp 0x7831d883
and dword [esp + 0x14], 0
cmp edi, ebx
je 0x7831d883
push 1
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jge 0x7831d883
mov eax, dword [esp + 0x18]
mov eax, dword [eax + 0x94]
mov dword [esp + 0x10], eax
cmp dword [esp + 0x10], 0
jl 0x7831d8f7
cmp dword [esp + 0x14], 0
jne 0x7831d8f7
cmp edi, 0x202
jne 0x7831d8b1
mov eax, dword [esi]
push 0xffffffffffffffff
mov ecx, esi
call dword [eax + 0x16c]
push 0xc8
push 0xe001
jmp 0x7831d8de
test byte [esi + 0x7c], 8
jne 0x7831d8e7
push 1
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jl 0x7831d8e7
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
cmp eax, dword [ecx + 0x94]
je 0x7831d925
push 0x12c
push 0xe000
mov ecx, esi
call sym.MFC80U.DLL_Ordinal_5508
jmp 0x7831d925
push dword [esp + 0x10]
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x16c]
jmp 0x7831d925
push 1
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jge 0x7831d90b
cmp dword [esp + 0x14], 0
je 0x7831d925
mov eax, dword [esi]
push 0xffffffffffffffff
mov ecx, esi
call dword [eax + 0x16c]
push 0xe001
push dword [esi + 0x20]
call dword [sym.imp.USER32.dll_KillTimer]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
mov dword [ecx + 0x94], eax
mov ecx, esi
call sym.MFC80U.DLL_Ordinal_3688
test eax, eax
je 0x7831d944
cmp dword [eax + 0x68], 0
jne 0x7831d98c
cmp dword [esp + 0x1c], 0
je 0x7831d973
mov edi, dword [esp + 0x1c]
push dword [ebp + 8]
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x108]
test eax, eax
jne 0x7831d789
mov ecx, edi
call sym.MFC80U.DLL_Ordinal_3079
test eax, eax
mov dword [esp + 0x1c], eax
jne 0x7831d94b
push dword [esi + 0x20]
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x7831d98c
push dword [ebp + 8]
mov ecx, esi
call sym.MFC80U.DLL_Ordinal_5197
jmp 0x7831d98e
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4