Function at 0x403770
Capabilities:
Execute command
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x188
lea eax, [ebp - 8]
mov dword [ebp - 0x134], esp
mov dword [ebp - 0x13c], eax
lea eax, [ebp - 0x15c]
mov dword [ebp - 0x144], sym.___gxx_personality_sj0
mov dword [ebp - 0x140], 0x4e0d70
mov dword [ebp - 0x138], 0x403c9a
mov dword [esp], eax
call dbg._Unwind_SjLj_Register
mov dword [esp], str.color_F0
mov dword [ebp - 0x158], 0xffffffff
call sym._system
mov dword [esp], 0x4e6199
call sym._system
lea eax, [ebp - 0x114]
mov dword [ebp - 0x174], eax
lea eax, [ebp - 0x104]
mov dword [ebp - 0x168], eax
lea eax, [ebp - 0x90]
mov dword [ebp - 0x170], eax
mov dword [esp + 4], 0
mov dword [esp], 0
mov dword [ebp - 0x158], 0xffffffff
call sym.gto_int__int_
mov dword [esp], 0x1b
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
sub esp, 4
test ax, ax
js 0x403c7c
mov eax, dword [ebp - 0x174]
mov byte [ebp - 0x114], 0
mov dword [ebp - 0x118], 0
mov ecx, dword [ebp - 0x170]
mov dword [ebp - 0x11c], eax
call fcn.004d3000
xor eax, eax
mov edx, dword [0x4eee68]
mov dword [ebp - 0x90], 0x4f0b9c
mov word [ebp - 0x1c], ax
mov eax, dword [0x4eee64]
mov dword [ebp - 0x20], 0
mov ecx, dword [ebp - 0x168]
mov dword [ebp - 0x104], eax
mov eax, dword [eax - 0xc]
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x10], 0
mov dword [ebp - 0xc], 0
mov dword [ebp + eax - 0x104], edx
mov eax, dword [0x4eee64]
mov dword [ebp - 0x100], 0
add ecx, dword [eax - 0xc]
mov dword [esp], 0
mov dword [ebp - 0x158], 6
call method.std::basic_ios_char__std::char_traits_char___.init_std::basic_streambuf_char__std::char_traits_char____
mov eax, dword [0x4eee6c]
sub esp, 4
mov dword [ebp - 0xfc], eax
mov eax, dword [eax - 0xc]
lea ecx, [ebp + eax - 0xfc]
mov eax, dword [0x4eee70]
mov dword [ecx], eax
mov dword [esp], 0
mov dword [ebp - 0x158], 4
call method.std::basic_ios_char__std::char_traits_char___.init_std::basic_streambuf_char__std::char_traits_char____
mov eax, dword [0x4eee60]
mov edx, dword [0x4eee74]
sub esp, 4
lea ecx, [ebp - 0xf8]
mov eax, dword [eax - 0xc]
mov dword [ebp + eax - 0x104], edx
mov dword [ebp - fcn.00498850], 0x4eff48
mov dword [ebp - 0x90], 0x4eff70
mov dword [ebp - 0xfc], 0x4eff5c
mov dword [ebp - 0x158], 2
call fcn.004946e0
lea eax, [ebp - 0xf8]
mov dword [esp], eax
mov ecx, dword [ebp - 0x170]
mov dword [ebp - 0x158], 3
call method.std::basic_ios_char__std::char_traits_char___.init_std::basic_streambuf_char__std::char_traits_char____
sub esp, 4
lea ecx, [ebp - 0xf8]
mov dword [esp + 4], 0x18
mov dword [esp], str.DataWhiteList.VirusDat
call method.std::basic_filebuf_char__std::char_traits_char___.open_char_const__std::_Ios_Openmode_
mov edx, dword [ebp - 0x104]
mov ecx, dword [ebp - 0x168]
sub esp, 8
add ecx, dword [edx - 0xc]
test eax, eax
je 0x403c69
mov dword [esp], 0
mov dword [ebp - 0x158], 3
call method.std::basic_ios_char__std::char_traits_char___.clear_std::_Ios_Iostate_
mov eax, dword [ebp - 0x104]
sub esp, 4
mov eax, dword [eax - 0xc]
mov eax, dword [ebp + eax - 0x88]
mov dword [ebp - 0x160], eax
test eax, eax
je 0x403c86
mov dword [ebp - 0x164], 0
jmp 0x403a58
movsx eax, byte [eax + 0x27]
mov dword [esp + 8], eax
lea eax, [ebp - 0x11c]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x168]
mov dword [esp], eax
mov dword [ebp - 0x158], 1
call method.std::basic_istream_char__std::char_traits_char____std::getline_char__std::char_traits_char___std.allocator_char____std::basic_istream_char__std::char_traits_char_____std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___
mov edx, dword [eax]
mov edx, dword [edx - 0xc]
test byte [eax + edx + 0x14], 5
jne 0x403b69
test byte [ebp - 0x164], 1
je 0x403aaf
mov eax, dword [ebp - 0x104]
add dword [ebp - 0x164], 1
mov eax, dword [eax - 0xc]
mov eax, dword [ebp + eax - 0x88]
mov dword [ebp - 0x160], eax
test eax, eax
je 0x403c86
mov eax, dword [ebp - 0x160]
cmp byte [eax + 0x1c], 0
jne 0x4039f0
mov dword [ebp - 0x158], 1
mov ecx, dword [ebp - 0x160]
call method.std::ctype_char_._M_widen_init___const
mov eax, dword [ebp - 0x160]
mov eax, dword [eax]
mov edx, dword [eax + 0x18]
mov eax, 0xa
cmp edx, method.std::ctype_char_.do_widen_char__const
je 0x4039f4
mov dword [esp], 0xa
mov ecx, dword [ebp - 0x160]
call edx
sub esp, 4
movsx eax, al
jmp 0x4039f4
mov eax, dword [ebp - 0x118]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x11c]
mov dword [esp], 0x4e57a0
mov dword [esp + 4], eax
call method.std::basic_ostream_char__std::char_traits_char____std::__ostream_insert_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const__int_
mov ecx, eax
mov dword [ebp - 0x16c], eax
mov eax, dword [eax]
mov eax, dword [eax - 0xc]
mov eax, dword [ecx + eax + 0x7c]
mov dword [ebp - 0x160], eax
test eax, eax
je 0x403c95
mov eax, dword [ebp - 0x160]
cmp byte [eax + 0x1c], 0
je 0x403b25
movsx eax, byte [eax + 0x27]
mov dword [esp], eax
mov ecx, dword [ebp - 0x16c]
mov dword [ebp - 0x158], 1
call method.std::ostream.put_char_
sub esp, 4
mov ecx, eax
call method.std::ostream.flush__
jmp 0x403a33
mov dword [ebp - 0x158], 1
mov ecx, dword [ebp - 0x160]
call method.std::ctype_char_._M_widen_init___const
mov eax, dword [ebp - 0x160]
mov eax, dword [eax]
mov edx, dword [eax + 0x18]
mov eax, 0xa
cmp edx, method.std::ctype_char_.do_widen_char__const
je 0x403afe
mov dword [esp], 0xa
mov ecx, dword [ebp - 0x160]
call edx
sub esp, 4
movsx eax, al
jmp 0x403afe
mov dword [esp], 0x14
mov dword [ebp - 0x158], 1
call dword [sym.imp.KERNEL32.dll_Sleep]
mov dword [ebp - 0x90], 0x4eff70
sub esp, 4
lea ecx, [ebp - 0xf8]
mov dword [ebp - 0xf8], 0x4efec4
mov dword [ebp - 0x158], 5
mov dword [ebp - fcn.00498850], 0x4eff48
mov dword [ebp - 0xfc], 0x4eff5c
call method.std::basic_filebuf_char__std::char_traits_char___.close__
lea ecx, [ebp - 0xd4]
call method.std::__basic_file_char_.__basic_file__
lea ecx, [ebp - 0xdc]
mov dword [ebp - 0xf8], vtable.c_streambufIwSt11char_traitsIwEE.0
call fcn.004b5850
mov eax, dword [0x4eee60]
mov edx, dword [0x4eee74]
mov ecx, dword [ebp - 0x170]
mov eax, dword [eax - 0xc]
mov dword [ebp + eax - 0x104], edx
mov eax, dword [0x4eee6c]
mov edx, dword [0x4eee70]
mov dword [ebp - 0xfc], eax
mov eax, dword [eax - 0xc]
mov dword [ebp + eax - 0xfc], edx
mov eax, dword [0x4eee64]
mov edx, dword [0x4eee68]
mov dword [ebp - 0x104], eax
mov eax, dword [eax - 0xc]
mov dword [ebp + eax - 0x104], edx
mov dword [ebp - 0x100], 0
mov dword [ebp - 0x90], 0x4f0b9c
call method.std::ios_base.ios_base__
mov eax, dword [ebp - 0x11c]
cmp eax, dword [ebp - 0x174]
je 0x4037fa
mov dword [esp], eax
call sym.operator_delete_void_
jmp 0x4037fa
mov eax, dword [ecx + 0x14]
or eax, 4
mov dword [esp], eax
call method.std::basic_ios_char__std::char_traits_char___.clear_std::_Ios_Iostate_
jmp 0x4039c0
call sym.GetInput__
jmp 0x403831
mov dword [ebp - 0x158], 1
call method.std.__throw_bad_cast__
call method.std.__throw_bad_cast__
add ebp, 8
cmp dword [ebp - 0x158], 5
mov eax, dword [ebp - 0x154]
ja case.default.0x403cb2
mov edx, dword [ebp - 0x158]
jmp dword [edx*4 + 0x4e61b8]
ud2
mov dword [ebp - 0x160], eax
mov dword [ebp - 0x90], fcn.004d4fd0
lea ecx, [ebp - 0x90]
call method.std::ios_base.ios_base__
jmp 0x403ce9
lea ecx, [ebp - 0x104]
mov dword [ebp - 0x160], eax
call fcn.00498850
mov eax, dword [ebp - 0x11c]
lea edx, [ebp - 0x114]
cmp eax, edx
je 0x403d01
mov dword [esp], eax
call sym.operator_delete_void_
mov eax, dword [ebp - 0x160]
mov dword [esp], eax
mov dword [ebp - 0x158], 0xffffffff
call dbg._Unwind_SjLj_Resume
mov dword [ebp - 0x160], eax
jmp 0x403d32
lea ecx, [ebp - 0xf8]
mov dword [ebp - 0x160], eax
call fcn.00494c00
mov eax, dword [0x4eee60]
mov edx, dword [0x4eee74]
mov eax, dword [eax - 0xc]
mov dword [ebp + eax - 0x104], edx
mov eax, dword [0x4eee6c]
mov edx, dword [0x4eee70]
mov dword [ebp - 0xfc], eax
mov eax, dword [eax - 0xc]
mov dword [ebp + eax - 0xfc], edx
mov eax, dword [0x4eee64]
mov edx, dword [0x4eee68]
mov dword [ebp - 0x104], eax
mov eax, dword [eax - 0xc]
mov dword [ebp + eax - 0x104], edx
mov dword [ebp - 0x100], 0
jmp 0x403cc1
mov dword [ebp - 0x160], eax
jmp 0x403d62
mov dword [esp], eax
call sym.___cxa_begin_catch
mov dword [ebp - 0x158], 0
call sym.___cxa_end_catch
lea eax, [ebp - 0x114]
mov dword [ebp - 0x174], eax
lea eax, [ebp - 0x104]
mov dword [ebp - 0x168], eax
lea eax, [ebp - 0x90]
mov dword [ebp - 0x170], eax
jmp 0x403bc0