Function at 0x403960
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x491ec9
mov eax, dword fs:[0]
push eax
sub esp, 0x118
mov eax, dword [0x4c56f0]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov esi, dword [sym.imp.DuiLib.dll_public:_void___thiscall_DuiLib::CDuiString::constructor_char_const___int_]
push 0xffffffffffffffff
push 0x4a1520
lea ecx, [ebp - 0x98]
mov dword [ebp - 0x124], eax
call esi
push 0xffffffffffffffff
push 0x4a1520
lea ecx, [ebp - 0x54]
mov dword [ebp - 4], 0
call esi
mov eax, dword [ebp + 0xc]
add eax, 0xffffffd0
mov byte [ebp - 4], 1
cmp eax, 0x2a
ja case.0x4039d2.58
jmp dword [eax*4 + 0x403e2c]
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1c4c
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1c68
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push str.23456789EFGHIJKLNOPQRTUVWXYZ
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1d90
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1d94
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1d98
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1d9c
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1da0
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1da4
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1da8
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a16c4
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push str.BDMS
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1b6c
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a16d8
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1dac
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1db0
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1db4
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1db8
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1dbc
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1dc0
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1dc4
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1dc8
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a16dc
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1dcc
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1dd0
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1dd4
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1dd8
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1ddc
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a16e0
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1de0
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1de4
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1de8
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1dec
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1df0
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1df4
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1df8
jmp 0x403c19
mov esi, dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString_const____thiscall_DuiLib::CDuiString::operator_char_const__]
push 0x4a1520
lea ecx, [ebp - 0x98]
call esi
push 0x4a1520
lea ecx, [ebp - 0x54]
call esi
mov edi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 0x12
call edi
test ax, ax
jne 0x403c45
push 0xa4
call edi
test ax, ax
jne 0x403c45
push 0xa5
call edi
test ax, ax
je 0x403c52
push 0x4a1dfc
lea ecx, [ebp - 0x98]
call esi
push 0x11
call edi
mov ebx, dword [sym.imp.DuiLib.dll_public:_int___thiscall_DuiLib::CDuiString::Find_char_const___int_const]
test ax, ax
jne 0x403c79
push 0xa2
call edi
test ax, ax
jne 0x403c79
push 0xa3
call edi
test ax, ax
je 0x403ca2
push 0
push 0x4a1dfc
lea ecx, [ebp - 0x98]
call ebx
push str.Ctrl
lea ecx, [ebp - 0x98]
cmp eax, 0xffffffff
jle 0x403ca0
call dword [0x49d3ec]
jmp 0x403ca2
call esi
push 0x10
call edi
test ax, ax
jne 0x403cc3
push 0xa0
call edi
test ax, ax
jne 0x403cc3
push 0xa1
call edi
test ax, ax
je 0x403cec
push 0
push str.Ctrl
lea ecx, [ebp - 0x98]
call ebx
push str.Shift
lea ecx, [ebp - 0x98]
cmp eax, 0xffffffff
jle 0x403cea
call dword [0x49d3ec]
jmp 0x403cec
call esi
lea ecx, [ebp - 0x98]
call dword [sym.imp.DuiLib.dll_public:_bool___thiscall_DuiLib::CDuiString::IsEmpty_void_const]
lea ecx, [ebp - 0xdc]
test al, al
je 0x403d4c
push 0xffffffffffffffff
push 0x4a1dfc
call dword [sym.imp.DuiLib.dll_public:_void___thiscall_DuiLib::CDuiString::constructor_char_const___int_]
lea ecx, [ebp - 0x54]
push ecx
lea edx, [ebp - 0x120]
mov bl, 2
push edx
mov ecx, eax
mov byte [ebp - 4], bl
call dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString___thiscall_DuiLib::CDuiString::operator_class_DuiLib::CDuiString_const__]
push eax
lea ecx, [ebp - 0x54]
mov byte [ebp - 4], 3
call dword [0x49d3f0]
mov byte [ebp - 4], bl
mov esi, dword [sym.imp.DuiLib.dll_public:_void___thiscall_DuiLib::CDuiString::destructor_void_]
lea ecx, [ebp - 0x120]
call esi
mov byte [ebp - 4], 1
jmp 0x403d75
lea eax, [ebp - 0x54]
push eax
push ecx
lea ecx, [ebp - 0x98]
call dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CDuiString___thiscall_DuiLib::CDuiString::operator_class_DuiLib::CDuiString_const__]
push eax
lea ecx, [ebp - 0x54]
mov byte [ebp - 4], 4
call dword [0x49d3f0]
mov byte [ebp - 4], 1
mov esi, dword [sym.imp.DuiLib.dll_public:_void___thiscall_DuiLib::CDuiString::destructor_void_]
lea ecx, [ebp - 0xdc]
call esi
mov edi, dword [ebp - 0x124]
push str.eExit
lea ecx, [edi + 0x2c]
call dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CControlUI____thiscall_DuiLib::CPaintManagerUI::FindControl_char_const__const]
push str.eShowHide
lea ecx, [edi + 0x2c]
mov ebx, eax
call dword [sym.imp.DuiLib.dll_public:_class_DuiLib::CControlUI____thiscall_DuiLib::CPaintManagerUI::FindControl_char_const__const]
mov edi, eax
test ebx, ebx
je 0x403df3
test edi, edi
je 0x403df3
mov edx, dword [ebx]
mov eax, dword [edx + 0xe4]
mov ecx, ebx
call eax
test al, al
je 0x403dd0
mov edi, dword [ebx]
lea ecx, [ebp - 0x54]
call dword [sym.imp.DuiLib.dll_public:_char_const____thiscall_DuiLib::CDuiString::GetData_void_const]
mov edx, dword [edi + 0x2c]
push eax
mov ecx, ebx
call edx
jmp 0x403df3
mov eax, dword [edi]
mov edx, dword [eax + 0xe4]
mov ecx, edi
call edx
test al, al
je 0x403df3
mov ebx, dword [edi]
lea ecx, [ebp - 0x54]
call dword [sym.imp.DuiLib.dll_public:_char_const____thiscall_DuiLib::CDuiString::GetData_void_const]
push eax
mov eax, dword [ebx + 0x2c]
mov ecx, edi
call eax
lea ecx, [ebp - 0x54]
mov byte [ebp - 4], 0
call esi
lea ecx, [ebp - 0x98]
mov dword [ebp - 4], 0xffffffff
call esi
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0046eadd
mov esp, ebp
pop ebp
ret 8