Function at 0x41bc90
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x248
movzx eax, byte [ebp - 0x19]
sub eax, 3
or eax, 0x3d
movzx ecx, byte [ebp - 0x1b1]
add ecx, eax
mov byte [ebp - 0x1b1], cl
mov edx, dword [ebp - 0xec]
sub edx, dword [ebp + 0xc]
add edx, 0x2a
mov dword [ebp - 0x8c], edx
movzx eax, word [ebp - 0xd4]
xor eax, 0x1b
mov dword [0x42f050], eax
mov ecx, dword [ebp - 0x10c]
push ecx
mov edx, dword [ebp - 0xa4]
push edx
mov eax, dword [ebp - 0x120]
push eax
call fcn.0041c140
add esp, 0xc
and eax, dword [ebp - 0x10c]
movzx ecx, byte [ebp - 6]
xor eax, ecx
mov dword [ebp - 0xd8], eax
mov edx, dword [ebp + 8]
sub edx, 0xe
sub edx, dword [ebp - 0x120]
movzx eax, word [ebp - 0x118]
sub edx, eax
sub edx, dword [ebp - 0x230]
mov byte [ebp - 0x1a5], dl
movzx ecx, word [ebp - 0x1a4]
sub ecx, 0x28
sub ecx, dword [ebp - 0x1b0]
add ecx, 0x42
mov byte [ebp - 0x91], cl
mov edx, dword [ebp - 0xa4]
sub edx, 0x37
movzx eax, byte [ebp - 0x19]
movzx ecx, byte [ebp - 5]
lea eax, [eax + ecx + 0x41]
and edx, eax
mov byte [ebp - 7], dl
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0x14c], ecx
mov edx, dword [ebp - 0x1b0]
and edx, 0x10
movzx eax, byte [ebp - 0xe5]
or edx, eax
mov dword [ebp - 0xd8], edx
mov dword [ebp - 0x248], 0
jmp 0x41bd92
mov ecx, dword [ebp - 0x248]
add ecx, 1
mov dword [ebp - 0x248], ecx
cmp dword [ebp - 0x248], 5
jge 0x41be59
mov edx, dword [ebp - 0x120]
mov eax, dword [ebp - 0xc8]
lea ecx, [eax + edx - 0x25]
or ecx, 0xe
mov byte [ebp - 0x19], cl
mov edx, 0x4c
sub edx, dword [ebp - 0xfc]
mov dword [ebp - 0xa4], edx
mov eax, dword [ebp - 0xfc]
add eax, 5
mov ecx, dword [ebp - 0xfc]
add ecx, 0x6d
or eax, ecx
mov byte [ebp - 6], al
movzx edx, byte [ebp - 7]
mov dword [ebp + 8], edx
mov eax, 0x3a
sub eax, dword [ebp - 0xc8]
add eax, 0x4a
mov dword [ebp - 0x8c], eax
movzx ecx, word [ebp - 0xc0]
sub ecx, dword [ebp - 0xa4]
add ecx, dword [ebp - 0xc8]
movzx edx, word [ebp - 0x90]
add edx, 0x61
xor ecx, edx
mov byte [ebp - 5], cl
movzx eax, byte [ebp - 0x19]
sub eax, 0xd
sub eax, dword [ebp - 0x10c]
and eax, 0x94
mov byte [ebp - 0xed], al
mov ecx, dword [ebp - 0x120]
push ecx
push 0x36
push 0x11
call dword [sym.imp.GDI32.dll_LineTo]
add eax, 0x52
mov edx, dword [ebp - 0x10c]
add edx, 0x39
and eax, edx
mov byte [ebp - 0x19], al
jmp 0x41bd83
movzx eax, word [ebp - 0x100]
xor eax, 6
mov word [ebp - 0x100], ax
mov ecx, dword [ebp + 8]
sub ecx, dword [ebp - 0x240]
sub ecx, dword [ebp - 0xec]
sub ecx, 0x2f
and ecx, 0xe
mov byte [ebp - 0xe5], cl
mov edx, dword [0x42f04c]
add edx, 0x22
mov dword [0x42f04c], edx
movzx eax, byte [ebp - 0x11a]
movzx ecx, word [ebp - 0xb4]
sub ecx, dword [ebp - 0xa4]
xor eax, ecx
mov dword [ebp - 0x234], eax
cmp dword [ebp - 0xcc], 0x54
jl 0x41bedd
mov edx, 0x1c
sub edx, dword [ebp + 8]
add edx, 0x3a
sub edx, dword [ebp - 0x10c]
add edx, 0x10
mov byte [ebp - 0x106], dl
mov dword [ebp - 0x114], 0x27
mov dword [ebp - 0xc8], 0x2e
cmp dword [ebp + 8], 0x61
jle 0x41bf22
movzx eax, word [ebp - 0x118]
mov dword [ebp + 0xc], eax
mov ecx, dword [ebp - 0x120]
push ecx
mov edx, dword [ebp - 0x10c]
push edx
mov eax, dword [ebp + 0xc]
push eax
call dword [sym.imp.USER32.dll_GetKeyNameTextW]
mov ecx, dword [ebp - 0x240]
sub ecx, eax
xor ecx, 0x41
mov dword [ebp - 0xac], ecx
jmp 0x41bf48
mov edx, dword [ebp - 0xc8]
mov dword [ebp - 0xc8], edx
mov eax, dword [ebp - 0xb0]
mov ecx, dword [ebp - 0xc8]
lea edx, [ecx + eax + 0x99]
mov word [ebp - 0xc0], dx
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x164], eax
movzx ecx, byte [ebp - 0x105]
add ecx, 0x5e
sub ecx, dword [ebp - 0x120]
or ecx, 0x41
mov word [ebp - 0x90], cx
movzx edx, word [ebp - 0x18]
sub edx, dword [ebp - 4]
mov dword [ebp - 0x10c], edx
push 0x47
mov eax, dword [ebp - 0xc8]
push eax
push 0xa
push 0x55
call dword [sym.imp.USER32.dll_ChildWindowFromPointEx]
mov ecx, 0x48
sub ecx, eax
mov dword [ebp - 0xa4], ecx
mov edx, dword [ebp - 0xd8]
add edx, 0x3f
mov eax, dword [ebp - 0x10c]
add eax, dword [ebp - 0xa4]
and eax, dword [ebp - 0x120]
or edx, eax
mov byte [ebp - 0xc1], dl
mov ecx, 0x1d
sub ecx, dword [ebp - 0xa4]
mov dword [ebp - 0x10c], ecx
mov edx, dword [ebp + 8]
mov dword [ebp - 0x13c], edx
mov dword [ebp + 0xc], 0x59
mov dword [ebp + 8], 0x51
movzx eax, word [ebp - 0x1b8]
add eax, 0x17
sub eax, dword [ebp - 0xc8]
add eax, dword [ebp + 0xc]
mov word [ebp - 0x238], ax
push 0x27
push 0x56
call dword [sym.imp.GDI32.dll_SetMapperFlags]
mov ecx, dword [ebp - 0x10c]
sub ecx, eax
mov dword [ebp - 0x120], ecx
mov byte [ebp - 6], 0x36
mov eax, dword [ebp - 0xa4]
mov esp, ebp
pop ebp
ret