Function at 0x100a9bf
Capabilities:
Hide graphical window
Log keystrokes
Log keystrokes via polling

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x9c
mov eax, dword [0x1038008]
xor eax, ebp
mov dword [ebp - 4], eax
cmp dword [ebp + 0xc], 0x106
mov eax, dword [ebp + 8]
mov dword [ebp - 0x98], eax
mov eax, dword [ebp + 0x18]
mov dword [ebp - 0x9c], eax
je 0x100d2d8
cmp dword [ebp + 0xc], 0x107
je 0x100d2d8
movzx eax, word [ebp + 0x10]
push ebx
push esi
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push edi
push 0x11
mov dword [ebp - 0x94], eax
call esi
movzx edi, ax
mov ebx, 0x8000
and edi, ebx
cmp word [ebp - 0x94], 0x1b
je 0x100d2f2
test dword [ebp + 0x14], 0x20000000
je 0x100aaa0
cmp word [ebp - 0x94], 0xd
je 0x100d339
push 0x11
call esi
test bx, ax
jne 0x100aa79
cmp word [ebp - 0x94], 0x20
je 0x100d47c
cmp word [ebp - 0x94], 0x1b
je 0x100d48e
cmp word [ebp - 0x94], 9
je 0x100d497
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp - 0x98]
call fcn.0100a37b
xor eax, eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0100158a
leave
ret 0x14
cmp word [ebp - 0x94], 0xd
jne 0x100aa79
jmp 0x100d32d
mov eax, dword [ebp + 0x14]
shr eax, 0x10
movzx eax, al
push 1
push eax
call dword [sym.imp.USER32.dll_MapVirtualKeyW]
movzx eax, ax
jmp 0x100aa04
test edi, edi
je 0x100aa2f
push 0x12
call esi
mov ecx, ebx
test cx, ax
jne 0x100aa2f
push 0x10
call esi
mov ecx, ebx
test cx, ax
jne 0x100aa2f
test byte [0x10382ca], 0x40
jne 0x100aa2f
xor eax, eax
inc eax
jmp 0x100aa8f
test byte [0x10382f8], 2
jmp 0x100d483
test edi, edi
jne 0x100aa46
test byte [0x10382ca], 8
jne 0x100aa46
test byte [ebp + 0xc], 1
jne 0x100aa8d
test dword [0x10382cc], 0x10000000
je 0x100d3cd
push 0x1000
call dword [sym.imp.USER32.dll_GetSystemMetrics]
test eax, eax
jne 0x100d3cd
cmp word [0x10382f8], ax
jne 0x100d39c
call fcn.0102196e
xor eax, eax
push 4
push dword [0x1038260]
inc eax
mov word [0x10382f8], ax
call fcn.01020562
jmp 0x100aa8d
call fcn.01021b67
push 0
push dword [0x1038260]
mov eax, 0xfffe
and word [0x10382f8], ax
call fcn.01020562
push 9
push dword [0x1038260]
call dword [sym.imp.USER32.dll_ShowWindow]
jmp 0x100aa8d
mov eax, dword [0x10382b0]
lea edx, [eax + 2]
mov cx, word [eax]
inc eax
inc eax
test cx, cx
jne 0x100d3d5
sub eax, edx
sar eax, 1
lea esi, [eax + 1]
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
lea ecx, [esi + esi]
push ecx
push dword [0x1038030]
push dword [eax + 0x18]
call dword [sym.imp.ntdll.dll_RtlAllocateHeap]
mov edi, eax
xor ebx, ebx
cmp edi, ebx
je 0x100aa8d
push dword [0x10382b0]
push esi
push edi
call fcn.01005512
call fcn.01001505
mov eax, dword [ebp - 0x9c]
mov dword [eax], ebx
push 0x46
lea eax, [ebp - 0x90]
push eax
push 0x1007
push dword [0x1038040]
call dword [sym.imp.USER32.dll_LoadStringW]
inc dword [0x1038e68]
push ebx
push edi
lea eax, [ebp - 0x90]
push eax
push dword [ebp - 0x98]
call dword [sym.imp.USER32.dll_MessageBoxW]
mov eax, dword fs:[0x18]
dec dword [0x1038e68]
mov eax, dword [eax + 0x30]
push edi
push ebx
push dword [eax + 0x18]
call dword [sym.imp.ntdll.dll_RtlFreeHeap]
jmp 0x100aa8d
test byte [0x10382ca], 4
jne 0x100aa79
jmp 0x100d325
test byte [0x10382ca], 2
jmp 0x100d483
test byte [0x10382ca], 1
jmp 0x100d483