Function at 0x404541
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
movzx eax, byte [0x417034]
sub eax, 0x33
mov byte [0x417024], al
mov eax, dword [0x417028]
sub eax, 0x6b2108a5
mov dword [0x417030], eax
movzx eax, byte [0x417034]
movzx eax, al
add ax, 0x2962
mov word [0x41702c], ax
mov dword [esp + 4], 0
mov dword [esp], 0xd6d8
call fcn.00402242
mov dword [ebp - 0x10], eax
mov eax, dword [0x417030]
or eax, 0xfffffff3
mov byte [0x41702e], al
movzx eax, byte [0x417024]
movzx eax, al
and eax, 0x3be9c45c
mov dword [0x417028], eax
movzx eax, byte [0x417025]
mov edx, 0x26
imul eax, edx
mov byte [0x417026], al
movzx eax, byte [0x417025]
add eax, 0x77
mov byte [0x417025], al
movzx eax, byte [0x417024]
sub eax, 0x17
mov byte [0x417025], al
mov dword [esp + 4], 0
mov dword [esp], 0x12cc8
call fcn.00402242
mov dword [ebp - 0x14], eax
movzx eax, byte [0x41702e]
movzx eax, al
add ax, 0x5c7f
mov word [0x41702c], ax
movzx eax, word [0x41702c]
imul ax, ax, 0x7cfa
mov word [0x41702c], ax
movzx eax, byte [0x417024]
movzx eax, al
xor eax, 0x21391033
mov dword [0x417030], eax
mov dword [ebp - 0xc], 0x25
mov eax, dword [0x417030]
xor eax, 0xffffff9e
mov byte [0x417024], al
mov dword [esp + 4], 0
mov dword [esp], 0x94
mov eax, dword [sym.imp.USER32.dll_GetSystemMenu]
call eax
sub esp, 8
mov eax, dword [0x417028]
add eax, 0x33
mov byte [0x417034], al
movzx eax, word [0x41702c]
xor eax, 0xffffff8b
mov byte [0x417034], al
jmp 0x40481e
mov dword [esp], 0
mov eax, dword [sym.imp.USER32.dll_GetKeyboardState]
call eax
sub esp, 4
movzx eax, byte [0x41702e]
mov edx, 0x43
imul eax, edx
mov byte [0x417024], al
movzx eax, byte [0x417034]
add eax, 0x13
mov byte [0x417026], al
mov dword [esp], 0xa2
mov eax, dword [sym.imp.USER32.dll_GetSysColorBrush]
call eax
sub esp, 4
movzx eax, byte [0x417025]
sub eax, 7
mov byte [0x417026], al
movzx eax, byte [0x41702e]
movzx eax, al
add eax, 0x62168f3e
mov dword [0x417030], eax
movzx eax, byte [0x41702e]
movzx eax, al
sub eax, 0x6eb455a
mov dword [0x417028], eax
mov eax, dword [0x417030]
sub eax, 0x6024c928
mov dword [0x417030], eax
movzx eax, byte [0x417034]
movzx eax, al
and eax, 0xc9954f4
mov dword [0x417030], eax
mov dword [esp + 4], 0
mov dword [esp], 0xdd
mov eax, dword [sym.imp.USER32.dll_ReleaseDC]
call eax
sub esp, 8
mov eax, dword [ebp - 0xc]
imul eax, dword [ebp - 0x10]
mov edx, eax
mov eax, dword [ebp + 8]
movzx eax, byte [eax]
movzx eax, al
imul eax, dword [ebp - 0x14]
xor eax, edx
mov dword [ebp - 0xc], eax
movzx eax, byte [0x417025]
movzx eax, al
add eax, 0x42b6d3aa
mov dword [0x417030], eax
movzx eax, byte [0x417034]
add eax, 0x21
mov byte [0x417025], al
mov eax, dword [0x417030]
sub eax, 0x7b
mov byte [0x417034], al
mov eax, dword [0x417028]
xor eax, 0x531aa052
mov dword [0x417030], eax
mov dword [esp + 4], 0
mov dword [esp], 0x27
mov eax, dword [sym.imp.USER32.dll_GetSystemMenu]
call eax
sub esp, 8
add dword [ebp + 8], 1
movzx eax, byte [0x41702e]
movzx eax, al
and eax, 0x6b0bfc21
mov dword [0x417030], eax
movzx eax, word [0x41702c]
movzx eax, ax
and eax, 0x1624ec21
mov dword [0x417030], eax
mov eax, dword [0x417030]
add ax, 0x488c
mov word [0x41702c], ax
movzx eax, word [0x41702c]
and eax, 0xffffffdf
mov byte [0x417034], al
movzx eax, word [0x41702c]
sub ax, 0x9ca
mov word [0x41702c], ax
mov eax, dword [0x417028]
mov edx, 0x1e
imul eax, edx
mov byte [0x41702e], al
sub dword [ebp + 0xc], 1
cmp dword [ebp + 0xc], 0
jne 0x404682
movzx eax, byte [0x417034]
sub eax, 0x2c
mov byte [0x417025], al
mov eax, dword [0x417030]
mov edx, 0xffffffbf
imul eax, edx
mov byte [0x41702e], al
movzx eax, word [0x41702c]
or eax, 0xfffffff7
mov byte [0x417026], al
mov eax, dword [0x417030]
or eax, 0xffffff95
mov byte [0x417025], al
mov eax, dword [0x417028]
xor ax, 0x3145
mov word [0x41702c], ax
movzx eax, word [0x41702c]
mov edx, 0x66
imul eax, edx
mov byte [0x417024], al
movzx eax, byte [0x417034]
movzx eax, al
sub eax, 0x50b51167
mov dword [0x417028], eax
movzx eax, byte [0x417034]
movzx eax, al
or eax, 0x949bf4e0
mov dword [0x417030], eax
mov eax, dword [ebp - 0xc]
leave
ret