Function at 0x40f420
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x465768
mov eax, dword fs:[0]
push eax
push ecx
push ebx
push esi
push edi
mov eax, dword [0x48600c]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
cmp byte [ebx + 4], 0
je 0x40f6a7
mov esi, dword [ebp + 8]
cmp esi, 0x25
jne 0x40f482
mov eax, dword [ebx + 0x138]
test eax, eax
jle 0x40f46b
dec eax
mov dword [ebx + 0x138], eax
cmp dword [ebx + 0x12c], eax
jle 0x40f60a
mov dword [ebx + 0x12c], eax
jmp 0x40f60a
cmp esi, 0x27
jne 0x40f4aa
mov eax, dword [ebx + 0x130]
mov ecx, dword [ebx + 0x138]
cmp ecx, dword [eax - 0xc]
jge 0x40f60a
lea eax, [ecx + 1]
mov dword [ebx + 0x138], eax
jmp 0x40f60a
cmp esi, 0x2e
jne 0x40f4ee
cmp dword [ebx + 0x150], 0
lea ecx, [ebx - 0x54]
jle 0x40f4c5
call fcn.004102b0
jmp 0x40f60a
mov eax, dword [ecx + 0x184]
lea edx, [ecx + 0x184]
mov ecx, dword [ecx + 0x18c]
cmp dword [eax - 0xc], ecx
jle 0x40f60a
push ecx
push ecx
mov ecx, edx
call fcn.00411410
jmp 0x40f60a
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
je 0x40f60a
cmp esi, 0x43
jne 0x40f54e
mov edx, dword [ebx + 0x150]
test edx, edx
jle 0x40f60a
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.00411300
mov dword [ebp - 4], 0
mov esi, dword [ebp - 0x10]
push esi
call sym.Install_rocket.exe_int___cdecl_SetClipboard_wchar_t_const__
add esp, 4
jmp 0x40f595
cmp esi, 0x58
jne 0x40f5b6
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.00411300
mov dword [ebp - 4], 1
mov esi, dword [ebp - 0x10]
push esi
call sym.Install_rocket.exe_int___cdecl_SetClipboard_wchar_t_const__
add esp, 4
lea ecx, [ebx - 0x54]
call fcn.004102b0
mov dword [ebp - 4], 0xffffffff
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x40f60a
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x40f60a
cmp esi, 0x56
jne 0x40f5c5
lea ecx, [ebx - 0x54]
call fcn.0040f240
jmp 0x40f60a
cmp esi, 0x41
jne 0x40f60a
mov eax, dword [ebx + 0x130]
lea ecx, [ebx - 0x54]
cmp dword [eax - 0xc], 0
je 0x40f60a
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 0x40f60a
cmp dword [ecx + 0x1a4], eax
je 0x40f60a
push 0
mov dword [ecx + 0x1a4], eax
call fcn.004050f0
lea edi, [ebx - 0x54]
push 0
mov ecx, edi
call fcn.004050f0
mov ecx, edi
call fcn.0040ec80
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.00411300
lea eax, [ebp - 0x10]
mov dword [ebp - 4], 2
push eax
mov ecx, edi
call fcn.0040e650
add eax, dword [ebx + 0x13c]
mov esi, dword [ebx - 0x48]
add esi, eax
call sym.Install_rocket.exe_public:_static_class_CNsApp____cdecl_CNsApp::Instance_void_
mov dword [eax + 0x3a4], esi
push dword [ebx - 0x28]
call sym.Install_rocket.exe_public:_static_class_CNsApp____cdecl_CNsApp::Instance_void_
mov ecx, eax
call sym.Install_rocket.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 0x40f6a7
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