Function at 0x408820
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x44
mov eax, dword [0x4394c8]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
push str.InvokerHelperBackend:_Enter_Loop_and_Unblock
mov edi, ecx
push 0x64
push edi
call fcn.00409df0
add esp, 0xc
cmp byte [edi + 5], 0
jne 0x4089fa
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 2
mov byte [edi + 6], 1
call esi
movzx ebx, ax
push 1
shr ebx, 0xf
call esi
shr eax, 0xf
and eax, 0xffffff01
and bl, 1
mov ebx, dword [sym.imp.USER32.dll_SendInput]
mov dword [ebp - 0x40], eax
je 0x4088d9
push str.CInvokerHelperBackend::EnterLoopAndUnblock:_Right_mouse_button_already_pressed_
push 0xc8
push edi
mov byte [edi + 6], 0
call fcn.00409df0
xor eax, eax
add esp, 0xc
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x3c], eax
lea eax, [ebp - 0x3c]
push 0x1c
push eax
push 1
mov dword [ebp - 0x2c], 0x10
call ebx
test eax, eax
jne 0x4088d6
push str.CInvokerHelperBackend::EnterLoopAndUnblock::Release:_Resetting_right_mouse_button_failed_
push 0xc8
push edi
call fcn.00409df0
add esp, 0xc
mov eax, dword [ebp - 0x40]
test al, al
je 0x408936
push str.CInvokerHelperBackend::EnterLoopAndUnblock:_Left_mouse_button_already_pressed_
push 0xc8
push edi
mov byte [edi + 6], 1
call fcn.00409df0
xor eax, eax
add esp, 0xc
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x3c], eax
lea eax, [ebp - 0x3c]
push 0x1c
push eax
push 1
mov dword [ebp - 0x2c], 4
call ebx
test eax, eax
jne 0x408936
push str.CInvokerHelperBackend::EnterLoopAndUnblock::Release:_Resetting_left_mouse_button_failed_
push 0xc8
push edi
call fcn.00409df0
add esp, 0xc
mov esi, dword [sym.imp.KERNEL32.dll_Sleep]
push 0xf
call esi
xor eax, eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], eax
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], eax
mov dword [ebp - 0x20], eax
movzx eax, byte [edi + 6]
neg eax
push 0x1c
sbb eax, eax
and eax, 0xfffffffa
add eax, 8
mov dword [ebp - 0x10], eax
lea eax, [ebp - 0x20]
push eax
push 1
call ebx
test eax, eax
jne 0x40898c
push str.CInvokerHelperBackend::EnterLoopAndUnblock:_Mouse_down_failed
push 0xc8
push edi
call fcn.00409df0
add esp, 0xc
push 1
call esi
xor eax, eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x14], eax
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], eax
mov dword [ebp - 0x20], eax
lea eax, [ebp - 0x20]
push 0x1c
push eax
push 1
mov dword [ebp - 0x10], 1
mov dword [ebp - 0x1c], 0xa
mov dword [ebp - 0x18], 0xa
call ebx
test eax, eax
jne 0x4089e0
push str.CInvokerHelperBackend::EnterLoopAndUnblock:_Mouse_move_failed
push 0xc8
push edi
call fcn.00409df0
add esp, 0xc
push str.CInvokerHelperBackend::EnterLoopAndUnblock_loop_entered
push 0x64
push edi
mov byte [edi + 5], 1
call fcn.00409df0
add esp, 0xc
push 1
call esi
jmp 0x408a0d
push str.CInvokerHelperBackend::EnterLoopAndUnblock:_Missing_release_of_mouse_
push 0xc8
push edi
call fcn.00409df0
add esp, 0xc
cmp byte [edi + 4], 0
je 0x408a46
push str.CInvokerHelperBackend::Unblock
push 0x64
push edi
call fcn.00409df0
add esp, 0xc
push 0
call dword [sym.imp.USER32.dll_BlockInput]
test eax, eax
jne 0x408a42
push str.InvokerHelperBackend:_Could_not_Unblock_Input_
push 0xc8
push edi
call fcn.00409df0
add esp, 0xc
mov byte [edi + 4], 0
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00416cb0
mov esp, ebp
pop ebp
ret