Function at 0x408b10
Capabilities:
Log keystrokes

Disassembly:
push ebp
sub esp, 0xb8
mov eax, dword [esp + 0xc4]
mov dword [esp + 0x2c], ecx
lea edx, [esp + 0x4c]
mov ecx, dword [esp + 0xd8]
mov dword [esp + 0x64], 0x445710
mov dword [esp], edx
mov dword [esp + 0x68], 0x4468e2
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0xd0]
mov dword [esp + 0x48], ecx
lea ecx, [esp + 0xb0]
mov dword [esp + 0x70], 0x4091b3
mov dword [esp + 0x74], esp
mov dword [esp + 0x28], eax
mov dword [esp + 0x6c], ecx
call fcn.004286e0
mov eax, dword [esp + 0x28]
mov dword [esp + 0x50], 0xffffffff
mov ecx, eax
mov edx, eax
and ecx, 8
and edx, 1
mov word [esp + 0x34], cx
mov ecx, eax
mov word [esp + 0x3c], dx
and ecx, 2
mov word [esp + 0x3a], cx
mov ecx, eax
and ax, 0x100
and ecx, 0x10
mov word [esp + 0x3e], ax
mov word [esp + 0x30], cx
call fcn.00417600
test al, al
jne 0x408ea3
mov byte [esp + 0x44], 0
mov eax, dword [esp + 0x2c]
cmp byte [eax + 0x97], 0
je 0x408bdd
movzx eax, word [esp + 0x40]
sub eax, 0x23
cmp ax, 5
jbe 0x408d84
xor edx, edx
cmp word [esp + 0x34], 0
mov word [esp + 0x28], dx
jne 0x409112
cmp word [esp + 0x3a], 0
jne 0x409030
cmp word [esp + 0x3c], 0
jne 0x40907a
cmp word [esp + 0x30], 0
jne 0x4090cf
movzx ecx, word [esp + 0x3e]
movzx edx, word [esp + 0x40]
or word [esp + 0x28], cx
movzx eax, word [esp + 0x28]
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x2c]
cmp byte [eax + 0x97], 0
jne 0x408d50
mov eax, dword [esp + 0x44]
mov dword [esp + 4], 1
mov dword [esp + 0x50], 0xffffffff
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xc8]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 8], eax
mov eax, dword [esp + 0xc0]
mov dword [esp], eax
call fcn.00408a30
mov eax, dword [esp + 0x44]
mov dword [esp + 4], 0
mov dword [esp + 0x50], 0xffffffff
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xcc]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 8], eax
mov eax, dword [esp + 0xc0]
mov dword [esp], eax
call fcn.00408a30
movzx edx, word [esp + 0x28]
mov eax, edx
and ah, 0xfe
cmp word [esp + 0x3e], 0
cmove eax, edx
cmp word [esp + 0x30], 0
mov word [esp + 0x28], ax
jne 0x408f53
cmp word [esp + 0x3c], 0
jne 0x408f9d
cmp word [esp + 0x3a], 0
jne 0x408fed
cmp word [esp + 0x34], 0
je 0x408d35
mov eax, dword [esp + 0x28]
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x11
mov dword [esp + 4], 0
mov dword [esp + 0x50], 0xffffffff
and eax, 0xfff7
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xc0]
mov dword [esp], eax
call fcn.00408950
lea eax, [esp + 0x4c]
mov dword [esp], eax
call fcn.00428750
add esp, 0xb8
pop ebp
ret 0x1c
movzx eax, word [esp + 0x48]
mov dword [esp + 4], edx
mov dword [esp + 0x50], 0xffffffff
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xd4]
mov dword [esp + 8], eax
mov eax, dword [esp + 0xc0]
mov dword [esp], eax
call fcn.0040a700
jmp 0x408c7b
test byte [esp + 0x28], 0x1b
jne 0x408bdd
mov eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x50], 0xffffffff
mov dword [esp], eax
call fcn.00407520
sub esp, 4
cmp byte [esp + 0x44], 0
jne 0x4091a2
mov eax, dword [esp + 0x2c]
mov eax, dword [eax]
mov ecx, dword [eax]
movzx eax, word [esp + 0x40]
mov dword [esp + 4], 0
mov dword [esp + 0x50], 0xffffffff
mov dword [esp + 0x30], ecx
mov dword [esp + 0x28], eax
mov dword [esp], eax
mov eax, dword [sym.imp.USER32.dll_MapVirtualKeyW]
mov dword [esp + 0x34], eax
call eax
mov edx, eax
sub esp, 8
shl edx, 0x10
mov ebp, dword [esp + 0x30]
mov dword [esp + 4], 0x100
or edx, 1
cmp eax, 0x100
mov eax, 1
cmovb eax, edx
mov dword [esp + 0x50], 0xffffffff
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x28]
mov dword [esp], ebp
mov dword [esp + 8], eax
mov eax, dword [sym.imp.USER32.dll_SendMessageW]
mov ebp, eax
mov dword [esp + 0x30], eax
call ebp
sub esp, 0x10
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x34]
mov eax, dword [edx]
mov edx, dword [eax]
mov eax, dword [esp + 0x28]
mov dword [esp + 4], 0
mov dword [esp + 0x2c], edx
mov dword [esp], eax
call ecx
mov edx, eax
sub esp, 8
shl edx, 0x10
mov dword [esp + 4], 0x101
mov dword [esp + 0x50], 0xffffffff
or edx, 0xc0000001
cmp eax, 0x100
mov eax, 0xc0000001
cmovb eax, edx
mov edx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x30]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x28]
mov dword [esp], edx
mov dword [esp + 8], eax
call ebp
sub esp, 0x10
jmp 0x408d35
movzx eax, byte [0x452020]
test al, al
je 0x409160
movzx eax, byte [0x452028]
mov byte [esp + 0x44], al
cmp byte [esp + 0x44], 0
je 0x408bb9
movzx eax, word [esp + 0x40]
lea ecx, [esp + 0x98]
mov dword [esp + 0x50], 0xffffffff
mov word [esp + 0x8c], ax
mov eax, dword [esp + 0xc8]
mov dword [esp + 0x90], eax
movzx eax, word [esp + 0x28]
mov word [esp + 0x94], ax
lea eax, [esp + 0x8c]
mov dword [esp], eax
call fcn.0040e790
sub esp, 4
mov eax, dword [esp + 0x98]
mov dword [esp], str.keypress:__s
mov dword [esp + 0x50], 2
mov dword [esp + 4], eax
call fcn.004168d0
mov eax, dword [esp + 0x98]
lea edx, [esp + 0xa0]
cmp eax, edx
je 0x408bbe
mov dword [esp], eax
call fcn.00444a10
jmp 0x408bbe
and word [esp + 0x28], 0xffef
mov dword [esp + 0xc], 0
movzx eax, word [esp + 0x28]
mov dword [esp + 8], 0x10
mov dword [esp + 4], 0
mov dword [esp + 0x50], 0xffffffff
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xc0]
mov dword [esp], eax
call fcn.00408950
cmp word [esp + 0x3c], 0
je 0x408ce5
and word [esp + 0x28], 0xfffe
mov dword [esp + 0xc], 0
movzx eax, word [esp + 0x28]
mov dword [esp + 8], 0x12
mov dword [esp + 4], 0
mov dword [esp + 0x50], 0xffffffff
or ah, 1
movzx eax, ax
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xc0]
mov dword [esp], eax
call fcn.00408950
cmp word [esp + 0x3a], 0
je 0x408cf1
and word [esp + 0x28], 0xfffd
mov dword [esp + 0xc], 0
movzx eax, word [esp + 0x28]
mov dword [esp + 8], 0x12
mov dword [esp + 4], 0
mov dword [esp + 0x50], 0xffffffff
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xc0]
mov dword [esp], eax
call fcn.00408950
jmp 0x408cf1
or word [esp + 0x28], 2
mov dword [esp + 0xc], 0
movzx eax, word [esp + 0x28]
mov dword [esp + 8], 0x12
mov dword [esp + 4], 1
mov dword [esp + 0x50], 0xffffffff
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xc0]
mov dword [esp], eax
call fcn.00408950
cmp word [esp + 0x3c], 0
je 0x408c08
movzx eax, word [esp + 0x28]
mov ecx, dword [esp + 0xc0]
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x12
mov dword [esp + 4], 1
mov dword [esp + 0x50], 0xffffffff
mov dword [esp], ecx
mov edx, eax
or ax, 0x101
movzx eax, ax
or edx, 1
mov dword [esp + 0x10], eax
mov word [esp + 0x28], dx
call fcn.00408950
cmp word [esp + 0x30], 0
je 0x408c14
or word [esp + 0x28], 0x10
mov dword [esp + 0xc], 0
movzx eax, word [esp + 0x28]
mov dword [esp + 8], 0x10
mov dword [esp + 4], 1
mov dword [esp + 0x50], 0xffffffff
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xc0]
mov dword [esp], eax
call fcn.00408950
jmp 0x408c14
mov eax, dword [esp + 0xc0]
mov dword [esp + 0x10], 8
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x11
mov dword [esp + 4], 1
mov dword [esp + 0x50], 0xffffffff
mov dword [esp], eax
call fcn.00408950
mov eax, 8
mov word [esp + 0x28], ax
jmp 0x408bf0
mov dword [esp], 0x452020
call fcn.00445290
test eax, eax
je 0x408eb2
mov dword [esp], str.input
mov dword [esp + 0x50], 1
call fcn.00416ce0
mov dword [esp], 0x452020
mov byte [esp + 0x44], al
mov byte [0x452028], al
call fcn.00445450
jmp 0x408ebd
mov dword [esp], str.sending_keypress_to_console_HWND
call fcn.004168d0
jmp 0x408db8