Function at 0x4107c0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4ac758
mov eax, dword fs:[0]
push eax
push ecx
push ebx
push esi
push edi
mov eax, dword [0x4ec00c]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
cmp byte [ebx + 4], 0
je 0x410a47
mov esi, dword [ebp + 8]
cmp esi, 0x25
jne 0x410822
mov eax, dword [ebx + 0x138]
test eax, eax
jle 0x41080b
dec eax
mov dword [ebx + 0x138], eax
cmp dword [ebx + 0x12c], eax
jle 0x4109aa
mov dword [ebx + 0x12c], eax
jmp 0x4109aa
cmp esi, 0x27
jne 0x41084a
mov eax, dword [ebx + 0x130]
mov ecx, dword [ebx + 0x138]
cmp ecx, dword [eax - 0xc]
jge 0x4109aa
lea eax, [ecx + 1]
mov dword [ebx + 0x138], eax
jmp 0x4109aa
cmp esi, 0x2e
jne 0x41088e
cmp dword [ebx + 0x150], 0
lea ecx, [ebx - 0x54]
jle 0x410865
call fcn.00411650
jmp 0x4109aa
mov eax, dword [ecx + 0x184]
lea edx, [ecx + 0x184]
mov ecx, dword [ecx + 0x18c]
cmp dword [eax - 0xc], ecx
jle 0x4109aa
push ecx
push ecx
mov ecx, edx
call fcn.004127c0
jmp 0x4109aa
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
je 0x4109aa
cmp esi, 0x43
jne 0x4108ee
mov edx, dword [ebx + 0x150]
test edx, edx
jle 0x4109aa
mov eax, dword [ebx + 0x138]
mov ecx, dword [ebx + 0x14c]
cmp ecx, eax
push edx
cmovge ecx, eax
lea eax, [ebp - 0x10]
push ecx
push eax
lea ecx, [ebx + 0x130]
call fcn.004126b0
mov dword [ebp - 4], 0
mov esi, dword [ebp - 0x10]
push esi
call sym.Install_adv.exe_int___cdecl_SetClipboard_wchar_t_const__
add esp, 4
jmp 0x410935
cmp esi, 0x58
jne 0x410956
mov eax, dword [ebx + 0x138]
mov ecx, dword [ebx + 0x14c]
cmp ecx, eax
push dword [ebx + 0x150]
cmovge ecx, eax
lea eax, [ebp - 0x10]
push ecx
push eax
lea ecx, [ebx + 0x130]
call fcn.004126b0
mov dword [ebp - 4], 1
mov esi, dword [ebp - 0x10]
push esi
call sym.Install_adv.exe_int___cdecl_SetClipboard_wchar_t_const__
add esp, 4
lea ecx, [ebx - 0x54]
call fcn.00411650
mov dword [ebp - 4], 0xffffffff
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x4109aa
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x4109aa
cmp esi, 0x56
jne 0x410965
lea ecx, [ebx - 0x54]
call fcn.004105e0
jmp 0x4109aa
cmp esi, 0x41
jne 0x4109aa
mov eax, dword [ebx + 0x130]
lea ecx, [ebx - 0x54]
cmp dword [eax - 0xc], 0
je 0x4109aa
mov dword [ecx + 0x1a0], 0
mov eax, dword [eax - 0xc]
mov dword [ecx + 0x18c], eax
cdq
xor eax, edx
sub eax, edx
test eax, eax
jle 0x4109aa
cmp dword [ecx + 0x1a4], eax
je 0x4109aa
push 0
mov dword [ecx + 0x1a4], eax
call fcn.00405170
lea edi, [ebx - 0x54]
push 0
mov ecx, edi
call fcn.00405170
mov ecx, edi
call fcn.00410020
mov ecx, dword [ebx + 0x12c]
mov eax, dword [ebx + 0x138]
sub eax, ecx
push eax
push ecx
lea eax, [ebp - 0x10]
push eax
lea ecx, [ebx + 0x130]
call fcn.004126b0
lea eax, [ebp - 0x10]
mov dword [ebp - 4], 2
push eax
mov ecx, edi
call fcn.0040f9f0
add eax, dword [ebx + 0x13c]
mov esi, dword [ebx - 0x48]
add esi, eax
call sym.Install_adv.exe_public:_static_class_CNsApp____cdecl_CNsApp::Instance_void_
mov dword [eax + 0x3a4], esi
push dword [ebx - 0x28]
call sym.Install_adv.exe_public:_static_class_CNsApp____cdecl_CNsApp::Instance_void_
mov ecx, eax
call sym.Install_adv.exe_public:_void___thiscall_CNsApp::DrawCaret_struct_HWND____
push edi
push dword [ebp + 8]
push 0xfb9
push dword [ebx - 0x28]
call dword [sym.imp.USER32.dll_PostMessageW]
mov dword [ebp - 4], 0xffffffff
or eax, 0xffffffff
mov edx, dword [ebp - 0x10]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x410a47
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8