Function at 0x410900
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x472f48
mov eax, dword fs:[0]
push eax
push ecx
push ebx
push esi
push edi
mov eax, dword [0x49c00c]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
cmp byte [ebx + 4], 0
je 0x410b51
mov eax, dword [ebx + 0x130]
lea esi, [ebx + 0x130]
movzx edi, word [ebp + 8]
mov eax, dword [eax - 0xc]
cmp eax, dword [ebx + 0x15c]
jl 0x41095f
cmp edi, 8
je 0x41095f
cmp dword [ebx + 0x150], 0
je 0x410b51
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
jne 0x410b51
cmp edi, 9
je 0x410b51
cmp edi, 0xd
jne 0x4109ab
lea eax, [ebx - 0x54]
push eax
push 0
push 0xfcd
push dword [ebx - 0x28]
call dword [sym.imp.USER32.dll_PostMessageW]
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
cmp edi, 8
jne 0x4109f5
cmp dword [ebx + 0x150], 0
jle 0x4109c6
lea ecx, [ebx - 0x54]
call fcn.00411600
jmp 0x410a9f
mov eax, dword [esi]
cmp dword [eax - 0xc], 0
jle 0x410a9f
mov eax, dword [ebx + 0x138]
test eax, eax
jle 0x410a9f
push ecx
dec eax
mov ecx, esi
push eax
call fcn.00412650
dec dword [ebx + 0x138]
jmp 0x410a9f
cmp dword [ebx + 0x150], 0
jle 0x410a06
lea ecx, [ebx - 0x54]
call fcn.00411600
mov eax, dword [esi]
mov ecx, dword [ebx + 0x138]
mov edx, dword [eax - 0xc]
cmp edx, ecx
jne 0x410a1f
push edi
mov ecx, esi
call fcn.00412720
jmp 0x410a99
xor eax, eax
test ecx, ecx
cmovns eax, ecx
mov ecx, edx
cmp eax, edx
cmovle ecx, eax
add edx, 1
mov dword [ebp - 0x10], ecx
mov dword [ebp + 8], edx
js 0x410b65
mov eax, dword [esi]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
sub eax, edx
or eax, ecx
jge 0x410a5a
push edx
mov ecx, esi
call fcn.00409bc0
mov edx, dword [ebp + 8]
mov ecx, dword [esi]
mov eax, edx
mov edx, dword [ebp - 0x10]
sub eax, edx
add eax, eax
push eax
lea esi, [ecx + edx*2]
push esi
push eax
lea eax, [esi + 2]
push eax
call fcn.0040dbd0
mov ecx, dword [ebp + 8]
add esp, 0x10
mov word [esi], di
lea esi, [ebx + 0x130]
mov eax, dword [esi]
cmp ecx, dword [eax - 8]
jg 0x410b65
mov dword [eax - 0xc], ecx
xor edx, edx
mov eax, dword [esi]
mov word [eax + ecx*2], dx
inc dword [ebx + 0x138]
lea edi, [ebx - 0x54]
mov ecx, edi
call fcn.0040fea0
mov edx, dword [ebx + 0x12c]
mov ecx, esi
mov eax, dword [ebx + 0x138]
sub eax, edx
push eax
push edx
lea eax, [ebp + 8]
push eax
call fcn.00412580
lea eax, [ebp + 8]
mov dword [ebp - 4], 0
push eax
mov ecx, edi
call fcn.0040f8b0
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_
push 0
mov ecx, edi
mov dword [eax + 0x3a4], esi
call fcn.004051b0
push edi
push 0
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 + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x410b51
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x410b6f
mov eax, dword [ecx + 4]
push 0
push dword [eax + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
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
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
push 0x80070057
call fcn.0040a610
call esi
jmp 0x410b51