Function at 0x405860
Capabilities:
Hide graphical window
Log keystrokes via polling
Terminate process

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x78
mov eax, dword [0x41a040]
xor eax, esp
mov dword [esp + 0x74], eax
push esi
push edi
mov edi, dword [ebp + 8]
push 5
call dword [sym.imp.KERNEL32.dll_GetConsoleWindow]
push eax
call dword [sym.imp.USER32.dll_ShowWindow]
call dword [sym.imp.KERNEL32.dll_AllocConsole]
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.col_n
call fcn.00406860
mov esi, dword [sym.imp.USER32.dll_LoadIconA]
push 0x6b
push edi
mov dword [esp + 0x28], 0x30
mov dword [esp + 0x2c], 3
mov dword [esp + 0x30], 0x406000
mov dword [esp + 0x34], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], edi
call esi
push 0x7f00
push 0
mov dword [esp + 0x40], eax
call dword [sym.imp.USER32.dll_LoadCursorA]
push 0x6c
push dword [esp + 0x38]
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], 6
mov dword [esp + 0x4c], 0x6d
mov dword [esp + 0x50], str.workspace
call esi
mov dword [esp + 0x4c], eax
lea eax, [esp + 0x20]
push eax
call dword [sym.imp.USER32.dll_RegisterClassExA]
test ax, ax
je 0x405bf9
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetWindowRect]
push 0
push edi
push 0
push 0
push dword [esp + 0x2c]
push dword [esp + 0x2c]
push dword [esp + 0x2c]
push dword [esp + 0x2c]
push 0x80000000
push str.workspace
push str.workspace
push 0x40000
call dword [sym.imp.USER32.dll_CreateWindowExA]
mov esi, eax
mov dword [0x41bc94], esi
test esi, esi
je 0x405bf9
push 0x20
call dword [sym.imp.d3d9.dll_Direct3DCreate9]
mov ecx, eax
mov dword [0x41d4a4], ecx
test ecx, ecx
je 0x405bb9
push 0x41d4a0
push 0x41d468
push 0x40
xorps xmm0, xmm0
mov dword [0x41d47c], 0
push esi
push 1
movlpd qword [0x41d468], xmm0
movlpd qword [0x41d474], xmm0
mov dword [0x41d484], 0
movlpd qword [0x41d494], xmm0
mov dword [0x41d488], 1
mov dword [0x41d480], 1
mov dword [0x41d470], 0
mov dword [0x41d48c], 1
mov dword [0x41d490], 0x50
mov dword [0x41d49c], 1
mov eax, dword [ecx]
push 0
push ecx
call dword [eax + 0x40]
test eax, eax
js 0x405bb3
push 0xa
push dword [0x41bc94]
call dword [sym.imp.USER32.dll_ShowWindow]
push dword [0x41bc94]
call dword [sym.imp.USER32.dll_UpdateWindow]
mov esi, dword [sym.imp.USER32.dll_PeekMessageA]
xorps xmm0, xmm0
movaps xmmword [esp + 0x50], xmm0
movq qword [esp + 0x60], xmm0
mov dword [esp + 0x68], 0
nop dword [eax]
push 1
push 0
push 0
push 0
lea eax, [esp + 0x60]
push eax
call esi
test eax, eax
je 0x405a7e
lea eax, [esp + 0x50]
push eax
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [esp + 0x50]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageA]
jmp 0x405b5e
mov eax, dword [0x41d4a0]
push 0
push 7
push eax
mov ecx, dword [eax]
call dword [ecx + 0xe4]
mov eax, dword [0x41d4a0]
push 0
push 0x1b
push eax
mov ecx, dword [eax]
call dword [ecx + 0xe4]
mov eax, dword [0x41d4a0]
push 0
push 0xae
push eax
mov ecx, dword [eax]
call dword [ecx + 0xe4]
mov eax, dword [0x41d4a0]
push 0
mov ecx, dword [eax]
push ecx
mov dword [esp], 0x3f800000
push 0x14141414
push 3
push 0
push 0
push eax
call dword [ecx + 0xac]
mov eax, dword [0x41d4a0]
push eax
mov ecx, dword [eax]
call dword [ecx + 0xa4]
test eax, eax
js 0x405b21
sub esp, 0x28
mov eax, esp
mov dword [eax], vtable.std::_Func_impl_no_alloc_class__int___cdecl_main_struct_HINSTANCE_____struct_HINSTANCE_____wchar_t___int_::_19::_lambda_1___void___.0
mov dword [eax + 0x24], eax
call fcn.00405c40
add esp, 0x28
push 0x23
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x405bab
mov eax, dword [0x41d4a0]
push eax
mov ecx, dword [eax]
call dword [ecx + 0xa8]
mov ecx, dword [0x41d4a0]
push 0
push 0
push 0
mov eax, dword [ecx]
push 0
push ecx
call dword [eax + 0x44]
cmp eax, 0x88760868
jne 0x405b5e
mov eax, dword [0x41d4a0]
push eax
mov ecx, dword [eax]
call dword [ecx + 0xc]
cmp eax, 0x88760869
jne 0x405b5e
mov eax, dword [0x41d4a0]
push 0x41d468
push eax
mov ecx, dword [eax]
call dword [ecx + 0x40]
cmp dword [esp + 0x54], 0x12
jne 0x405a50
mov ecx, dword [0x41d4a0]
test ecx, ecx
je 0x405b83
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
mov dword [0x41d4a0], 0
mov ecx, dword [0x41d4a4]
test ecx, ecx
je 0x405b9d
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
mov dword [0x41d4a4], 0
push dword [0x41bc94]
call dword [sym.imp.USER32.dll_DestroyWindow]
jmp 0x405bed
push 0xffffffffffffffff
call dword [sym.imp.KERNEL32.dll_ExitProcess]
mov ecx, dword [0x41d4a4]
mov edx, dword [0x41d4a0]
test edx, edx
je 0x405bd9
mov eax, dword [edx]
push edx
call dword [eax + 8]
mov ecx, dword [0x41d4a4]
mov dword [0x41d4a0], 0
test ecx, ecx
je 0x405bed
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
mov dword [0x41d4a4], 0
push edi
push str.workspace
call dword [sym.imp.USER32.dll_UnregisterClassA]
mov ecx, dword [esp + 0x7c]
xor eax, eax
pop edi
pop esi
xor ecx, esp
call fcn.00411d5d
mov esp, ebp
pop ebp
ret