Function at 0x7831c5e3
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x783ac163
mov eax, dword fs:[0]
push eax
sub esp, 0x88
push ebx
push esi
push edi
mov eax, dword [0x783c8018]
xor eax, esp
push eax
lea eax, [esp + 0x98]
mov dword fs:[0], eax
mov dword [esp + 0x14], ecx
mov esi, dword [ebp + 8]
mov ebx, dword [esi + 4]
cmp ebx, 0x200
je 0x7831c64b
cmp ebx, 0xa0
je 0x7831c64b
cmp ebx, 0x202
je 0x7831c64b
cmp ebx, 0x205
je 0x7831c64b
cmp ebx, 0x208
jne 0x7831c9a7
mov edi, dword [sym.imp.USER32.dll_GetKeyState]
push 1
call edi
test ax, ax
jl 0x7831c9a7
push 2
call edi
test ax, ax
jl 0x7831c9a7
push 4
call edi
test ax, ax
jl 0x7831c9a7
call sym.MFC80U.DLL_Ordinal_1080
push dword [esi]
mov edi, eax
mov dword [esp + 0x24], edi
jmp 0x7831c699
test word [eax + 0x3c], 0x401
jne 0x7831c6a2
push dword [eax + 0x20]
call dword [sym.imp.USER32.dll_GetParent]
push eax
call sym.MFC80U.DLL_Ordinal_2366
test eax, eax
jne 0x7831c687
cmp eax, dword [esp + 0x14]
je 0x7831c6c2
test eax, eax
jne 0x7831ca7d
and dword [edi + 0x88], eax
or dword [edi + 0x8c], 0xffffffff
jmp 0x7831ca7d
mov ebx, dword [edi + 0x84]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x18], ebx
call sym.MFC80U.DLL_Ordinal_3080
test ebx, ebx
mov dword [esp + 0x1c], eax
je 0x7831c70e
mov eax, ebx
call fcn.783169c4
cmp eax, dword [esp + 0x1c]
je 0x7831c70a
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x68]
mov eax, dword [ebx]
push 1
mov ecx, ebx
call dword [eax + 4]
and dword [edi + 0x84], 0
and dword [esp + 0x18], 0
mov ebx, dword [esp + 0x18]
test ebx, ebx
jne 0x7831c77d
push 0x70
call sym.MFC80U.DLL_Ordinal_762
pop ecx
mov dword [esp + 0x24], eax
xor esi, esi
cmp eax, esi
mov dword [esp + 0xa0], esi
je 0x7831c730
mov ecx, eax
call sym.MFC80U.DLL_Ordinal_563
mov esi, eax
or dword [esp + 0xa0], 0xffffffff
mov eax, dword [esi]
push 1
push dword [esp + 0x20]
mov ecx, esi
mov dword [esp + 0x20], esi
call dword [eax + 0x13c]
test eax, eax
jne 0x7831c75e
mov eax, dword [esi]
push 1
mov ecx, esi
call dword [eax + 4]
jmp 0x7831ca7d
push 0
push 0
push 0x401
push dword [esi + 0x20]
call dword [sym.imp.USER32.dll_SendMessageW]
mov ebx, dword [esp + 0x18]
mov dword [edi + 0x84], esi
mov esi, dword [ebp + 8]
push 0x30
lea eax, [esp + 0x68]
push 0
push eax
call sub.MSVCR80.dll_memset
mov eax, dword [esi + 0x14]
mov dword [esp + 0x38], eax
mov eax, dword [esi + 0x18]
mov dword [esp + 0x3c], eax
add esp, 0xc
lea eax, [esp + 0x2c]
push eax
mov eax, dword [esp + 0x18]
push dword [eax + 0x20]
call dword [sym.imp.USER32.dll_ScreenToClient]
push 0x30
lea eax, [esp + 0x38]
push 0
push eax
call sub.MSVCR80.dll_memset
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx]
add esp, 0xc
lea edx, [esp + 0x34]
push edx
push dword [esp + 0x34]
mov dword [esp + 0x3c], 0x28
push dword [esp + 0x34]
call dword [eax + 0x74]
mov edx, dword [esp + 0x14]
mov ecx, eax
inc ecx
neg ecx
sbb ecx, ecx
and ecx, edx
cmp dword [edi + 0x8c], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x1c], ecx
jne 0x7831c850
cmp dword [edi + 0x88], ecx
jne 0x7831c850
test word [edx + 0x3c], 0x400
je 0x7831c83a
lea eax, [esp + 0x24]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
movzx eax, word [esp + 0x28]
movzx ecx, word [esp + 0x24]
shl eax, 0x10
or eax, ecx
push eax
push 0
push 0x412
push dword [ebx + 0x20]
call dword [sym.imp.USER32.dll_SendMessageW]
jmp 0x7831c96a
cmp eax, 0xffffffff
je 0x7831c96a
push ebx
mov ebx, esi
call fcn.7831c55a
jmp 0x7831c96a
cmp eax, 0xffffffff
je 0x7831c990
mov eax, dword [esp + 0x38]
push 0xc
pop ecx
lea esi, [esp + 0x34]
lea edi, [esp + 0x64]
rep movsd dword es:[edi], dword [esi]
and eax, 0x3fffffff
mov edi, 0x400
mov ecx, edx
test dword [ecx + 0x3c], edi
mov dword [esp + 0x68], eax
je 0x7831c886
or eax, 0x20
mov dword [esp + 0x68], eax
mov esi, dword [sym.imp.USER32.dll_SendMessageW]
lea eax, [esp + 0x64]
push eax
push 0
push 0x432
push dword [ebx + 0x20]
call esi
test dword [esp + 0x38], 0x40000000
jne 0x7831c8b4
mov ecx, dword [esp + 0x14]
call sym.MFC80U.DLL_Ordinal_3975
test eax, eax
je 0x7831c8f1
push 0
push 1
push 0x401
push dword [ebx + 0x20]
call esi
mov eax, dword [esp + 0x14]
test dword [eax + 0x3c], edi
je 0x7831c8dc
lea eax, [esp + 0x64]
push eax
push 1
push 0x411
push dword [ebx + 0x20]
call esi
push 0x213
xor eax, eax
push eax
push eax
push eax
push eax
push eax
push dword [ebx + 0x20]
call dword [sym.imp.USER32.dll_SetWindowPos]
mov esi, dword [ebp + 8]
push ebx
mov ebx, esi
call fcn.7831c55a
mov edi, dword [esp + 0x20]
mov eax, dword [edi + 0x90]
xor esi, esi
cmp eax, esi
je 0x7831c925
cmp dword [eax], 0x28
jb 0x7831c925
push eax
mov eax, dword [esp + 0x1c]
push esi
push 0x433
push dword [eax + 0x20]
call dword [sym.imp.USER32.dll_SendMessageW]
cmp dword [edi + 0x90], esi
mov eax, dword [esp + 0x1c]
mov dword [edi + 0x88], eax
mov eax, dword [esp + 0x24]
mov dword [edi + 0x8c], eax
jne 0x7831c95b
push 0x30
call sym.MFC80U.DLL_Ordinal_762
pop ecx
push 0x30
push esi
push eax
mov dword [edi + 0x90], eax
call sub.MSVCR80.dll_memset
add esp, 0xc
mov edi, dword [edi + 0x90]
push 0xc
pop ecx
lea esi, [esp + 0x34]
rep movsd dword es:[edi], dword [esi]
cmp dword [esp + 0x58], 0xffffffff
je 0x7831ca7d
cmp dword [esp + 0x54], 0
jne 0x7831ca7d
push dword [esp + 0x58]
call dword [sym.imp.MSVCR80.dll_free]
pop ecx
jmp 0x7831ca7d
push 0
push 0
push 0x401
push dword [ebx + 0x20]
call dword [sym.imp.USER32.dll_SendMessageW]
jmp 0x7831c8f4
mov eax, dword [esp + 0x14]
mov edi, 0x401
test dword [eax + 0x3c], edi
je 0x7831ca7d
push dword [esi]
jmp 0x7831c9d2
cmp eax, dword [esp + 0x14]
je 0x7831c9e5
test dword [eax + 0x3c], edi
jne 0x7831c9db
push dword [eax + 0x20]
call dword [sym.imp.USER32.dll_GetParent]
push eax
call sym.MFC80U.DLL_Ordinal_2366
test eax, eax
jne 0x7831c9bd
cmp eax, dword [esp + 0x14]
jne 0x7831ca7d
cmp ebx, 0x100
jb 0x7831c9f5
cmp ebx, 0x109
jbe 0x7831ca00
lea eax, [ebx - 0x104]
cmp eax, 3
ja 0x7831ca05
xor eax, eax
inc eax
jmp 0x7831ca07
xor eax, eax
mov ecx, dword [esp + 0x14]
test word [ecx + 0x3c], 0x400
jne 0x7831ca7d
test eax, eax
jne 0x7831ca77
cmp ebx, 0x201
je 0x7831ca77
cmp ebx, 0x203
je 0x7831ca77
cmp ebx, 0x204
je 0x7831ca77
cmp ebx, 0x206
je 0x7831ca77
cmp ebx, 0x207
je 0x7831ca77
cmp ebx, 0x209
je 0x7831ca77
cmp ebx, 0xa1
je 0x7831ca77
cmp ebx, 0xa3
je 0x7831ca77
cmp ebx, 0xa4
je 0x7831ca77
cmp ebx, 0xa6
je 0x7831ca77
cmp ebx, 0xa7
je 0x7831ca77
cmp ebx, 0xa9
jne 0x7831ca7d
push eax
call sym.MFC80U.DLL_Ordinal_1368
mov ecx, dword [esp + 0x98]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4