Function at 0x401901
Capabilities:
Set console window title

Disassembly:
push rsi
push rbx
sub rsp, 0x1a8
call sym.__main
lea rcx, str.PG3D_Injector_by_Dari
call qword [sym.imp.KERNEL32.dll_SetConsoleTitleA]
lea rsi, [rsp + 0x90]
mov r8d, 0x104
mov rdx, rsi
mov ecx, 0
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea rbx, [rsp + 0x70]
lea r8, [rsp + 0x19f]
mov rdx, rsi
mov rcx, rbx
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.basic_string_char_const__std::allocator_char__const_
mov r9d, 2
mov r8, 0xffffffffffffffff
lea rdx, [0x0041d1f0]
mov rcx, rbx
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.find_last_of_char_const__unsigned_long_long__unsigned_long_long__const
mov r9, rax
lea rcx, [rsp + 0x30]
mov r8d, 0
mov rdx, rbx
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.substr_unsigned_long_long__unsigned_long_long__const
lea rbx, [rsp + 0x30]
lea rcx, [rsp + 0x70]
mov rdx, rbx
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.operator_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____
mov rcx, qword [rsp + 0x30]
add rbx, 0x10
cmp rcx, rbx
je 0x4019a7
call sym.operator_delete_void_
lea rcx, [rsp + 0x30]
lea rax, [rcx + 0x10]
mov qword [rsp + 0x30], rax
mov rdx, qword [rsp + 0x70]
mov r9d, 0
mov r8, rdx
add r8, qword [rsp + 0x78]
call dbg.void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char*>(char*, char*, std::forward_iterator_tag)
movabs rax, 0x7fffffffffffffff
cmp qword [rsp + 0x38], rax
je 0x4019f7
lea rcx, [rsp + 0x30]
mov r8d, 1
lea rdx, [0x0041d208]
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_append_char_const__unsigned_long_long_
jmp 0x401a39
lea rcx, [0x0041d1f3]
call method.std.__throw_length_error_char_const_
mov rbx, rax
mov rcx, qword [rsp + 0x30]
lea rax, [rsp + 0x40]
cmp rcx, rax
je 0x401a1a
call sym.operator_delete_void_
mov rcx, qword [rsp + 0x70]
lea rax, [rsp + 0x80]
cmp rcx, rax
je 0x401a31
call sym.operator_delete_void_
mov rcx, rbx
call dbg._Unwind_Resume
movabs rax, 0x7fffffffffffffff
sub rax, qword [rsp + 0x38]
cmp rax, 0xd
jbe 0x401a67
lea rcx, [rsp + 0x30]
mov r8d, 0xe
lea rdx, str.AsteroidPC.dll
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_append_char_const__unsigned_long_long_
jmp 0x401a8c
lea rcx, [0x0041d1f3]
call method.std.__throw_length_error_char_const_
mov rbx, rax
mov rcx, qword [rsp + 0x30]
lea rax, [rsp + 0x40]
cmp rcx, rax
je 0x401a1a
call sym.operator_delete_void_
jmp 0x401a1a
lea rdx, [rsp + 0x60]
mov qword [rsp + 0x50], rdx
mov rcx, qword [rax]
lea rdx, [rax + 0x10]
cmp rcx, rdx
je 0x401ae8
mov qword [rsp + 0x50], rcx
mov rcx, qword [rax + 0x10]
mov qword [rsp + 0x60], rcx
mov rcx, qword [rax + 8]
mov qword [rsp + 0x58], rcx
mov qword [rax], rdx
mov qword [rax + 8], 0
mov byte [rax + 0x10], 0
mov rcx, qword [rsp + 0x30]
lea rax, [rsp + 0x40]
cmp rcx, rax
je 0x401adc
call sym.operator_delete_void_
lea rcx, [rsp + 0x50]
call dbg.fileExists(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
jmp 0x401af4
movdqu xmm0, xmmword [rax + 0x10]
movaps xmmword [rsp + 0x60], xmm0
jmp 0x401ab0
test al, al
je 0x401b06
lea rcx, str.Checking_if_Pixel_Gun_3D_is_already_running...
call dbg.void show<(ConsoleColor)11>(char const*)
jmp 0x401b40
lea rcx, str.DLL_file_not_found.
call dbg.void show<(ConsoleColor)12>(char const*)
lea rdx, str.AsteroidPC.dll
lea rcx, str._s__n
call sym.printf
lea rcx, str.Ensure_that_the_DLL_is_in_the_same_folder_as_the_injector.
call dbg.void show<(ConsoleColor)11>(char const*)
mov ecx, 0xa
call dbg.countdown(int)
jmp 0x401c8a
lea rcx, str.Pixel_Gun_3D.exe
call dbg.GetProcessID(char const*)
mov ebx, eax
test eax, eax
jne 0x401bb7
lea rcx, str.Pixel_Gun_3D_not_found._Launching_the_game...
call dbg.void show<(ConsoleColor)14>(char const*)
call dbg.launchGame()
jmp 0x401ba9
mov qword [rsp + 0x20], 2
mov dword [rsp + 0x28], 0
jmp 0x401b88
cmp eax, 0xffffffff
jne 0x401b97
call qword [sym.imp.msvcrt.dll__errno]
cmp dword [rax], 4
jne 0x401b97
lea rcx, [rsp + 0x20]
mov rdx, rcx
call sym.nanosleep
jmp 0x401b78
lea rcx, str.Pixel_Gun_3D.exe
call dbg.GetProcessID(char const*)
mov ebx, eax
test eax, eax
jne 0x401bb7
lea rcx, str.Waiting_for_Pixel_Gun_3D_to_start...
call dbg.void show<(ConsoleColor)14>(char const*)
jmp 0x401b65
lea rcx, str.Pixel_Gun_3D_process_found_
call dbg.void show<(ConsoleColor)11>(char const*)
mov r8d, ebx
mov edx, 0
mov ecx, 0x1f0fff
call qword [sym.imp.KERNEL32.dll_OpenProcess]
mov rbx, rax
test rax, rax
je 0x401bed
lea rdx, [rsp + 0x50]
mov rcx, rax
call dbg.injectDLL(void*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
jmp 0x401c08
lea rcx, str.Error_opening_Pixel_Gun_3D_process.
call dbg.void show<(ConsoleColor)12>(char const*)
mov ecx, 0xa
call dbg.countdown(int)
jmp 0x401c91
test al, al
je 0x401c1a
lea rcx, str.DLL_injected_successfully.
call dbg.void show<(ConsoleColor)11>(char const*)
jmp 0x401c3b
lea rcx, str.DLL_injection_failed.
call dbg.void show<(ConsoleColor)12>(char const*)
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, 0xa
call dbg.countdown(int)
jmp 0x401c98
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, 0xa
call dbg.countdown(int)
mov ebx, 0
mov rcx, qword [rsp + 0x50]
lea rax, [rsp + 0x60]
cmp rcx, rax
je 0x401c67
call sym.operator_delete_void_
mov rcx, qword [rsp + 0x70]
lea rax, [rsp + 0x80]
cmp rcx, rax
je 0x401c7e
call sym.operator_delete_void_
mov eax, ebx
add rsp, 0x1a8
pop rbx
pop rsi
ret
mov ebx, 1
jmp 0x401c53
mov ebx, 1
jmp 0x401c53
mov ebx, 1
jmp 0x401c53