Function at 0x415d4e
Capabilities:
Create tcp socket
Create udp socket

Disassembly:
sub esp, 0xf4
push ebx
push ebp
push esi
push edi
mov edi, ecx
xor eax, eax
lea ecx, [esp + 0x3c]
mov byte [esp + 0x17], al
call fcn.0042274f
lea ecx, [esp + 0x48]
call fcn.0040fdf4
xor ebx, ebx
lea ecx, [esp + 0x48]
mov dword [esp + 0x48], 0x4076b4
mov dword [esp + 0x50], ebx
call fcn.0040b257
mov ebp, dword [esp + 0x50]
lea eax, [edi + 0x118]
mov dword [esp + 0x20], eax
mov ecx, 0x405161
lea eax, [edi + 0x108]
mov byte [esp + 0x30], bl
mov dword [esp + 0x18], ecx
mov dword [esp + 0x28], eax
mov esi, dword [eax]
mov eax, dword [ecx + 3]
mov dword [esp + 0x1c], eax
test esi, esi
je 0x415e09
lea eax, [esp + 0x24]
push eax
lea eax, [esp + 0x58]
push eax
push 0x1008
push 0xffff
push dword [esi + 4]
mov dword [esp + 0x38], 4
call dword [sym.imp.WS2_32.dll_getsockopt]
test eax, eax
jne 0x415dfa
lea eax, [esp + 0x54]
push eax
push dword [esi + 8]
call dword [sym.imp.KERNEL32.dll_GetHandleInformation]
test eax, eax
jne 0x41602d
push dword [esp + 0x30]
mov ecx, edi
call fcn.00415d1d
mov ecx, dword [esp + 0x18]
mov bl, byte [ecx - 1]
call fcn.00417012
mov cl, bl
call fcn.0041731f
push 6
mov esi, eax
push 1
push esi
call dword [sym.imp.WS2_32.dll_socket]
push 0x11
push 2
mov ebx, eax
push esi
mov dword [esp + 0x30], ebx
call dword [sym.imp.WS2_32.dll_socket]
mov esi, eax
or eax, 0xffffffff
cmp ebx, eax
je 0x415e47
cmp esi, eax
je 0x415e47
mov bl, 1
jmp 0x415e4b
xor eax, eax
mov bl, al
push dword [esp + 0x24]
call dword [sym.imp.WS2_32.dll_closesocket]
push esi
call dword [sym.imp.WS2_32.dll_closesocket]
test bl, bl
jne 0x415e81
mov eax, dword [esp + 0x1c]
xor ecx, ecx
cmp word [esp + eax + 0x3c], cx
je 0x41602d
inc bl
mov word [esp + eax + 0x3c], cx
mov byte [esp + 0x17], bl
jmp 0x416031
push 0x14
xor eax, eax
push eax
push dword [0x4420ec]
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
test eax, eax
je 0x415eb0
mov edx, dword [esp + 0x18]
movzx ecx, byte [edx]
push ecx
movzx ecx, byte [edx - 1]
push ecx
mov ecx, eax
call fcn.004170c6
mov ebx, eax
xor eax, eax
jmp 0x415eb4
xor eax, eax
mov ebx, eax
test ebx, ebx
je 0x41602d
mov byte [esp + 0x38], al
test ebp, ebp
je 0x415ef5
mov eax, dword [ebp]
lea ecx, [esp + 0x2c]
push ecx
push ebp
call dword [eax + 0x30]
test eax, eax
jne 0x415ef5
or ecx, 0xffffffff
cmp word [esp + 0x2c], cx
sete al
test al, al
jne 0x415ef5
mov eax, dword [ebp]
push ecx
push ebp
call dword [eax + 0x34]
neg eax
sbb al, al
inc al
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x1c]
movzx ecx, word [esp + eax + 0x3c]
mov eax, 0x2710
cmp cx, ax
jb 0x415f20
mov eax, 0x7530
cmp cx, ax
ja 0x415f20
push 0x14
push ecx
mov ecx, ebx
call fcn.00417539
test al, al
jne 0x415f7e
sub esp, 0x10
mov ecx, ebx
call fcn.00417580
mov ecx, ebx
test al, al
jne 0x415f3b
mov eax, dword [ebx]
push 1
call dword [eax]
jmp 0x41602d
xor eax, eax
mov esi, eax
lea eax, [esp + 0x80]
push eax
call fcn.00417371
test al, al
je 0x415f70
movzx eax, word [esp + 0x80]
dec eax
dec eax
je 0x415f61
sub eax, 0x15
jne 0x415f69
movzx esi, word [esp + 0x82]
rol si, 8
movzx esi, si
mov eax, dword [esp + 0x1c]
mov byte [esp + 0x17], 1
mov word [esp + eax + 0x3c], si
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x20]
mov dword [eax], ebx
mov ebx, dword [esp + 0x1c]
mov ax, word [esp + ebx + 0x3c]
mov word [ecx], ax
test ebp, ebp
je 0x41602d
mov eax, dword [ebp]
lea ecx, [esp + 0x34]
push ecx
push ebp
call dword [eax + 0x28]
test eax, eax
jne 0x415fc5
or edx, 0xffffffff
cmp word [esp + 0x34], dx
sete al
cmp al, 1
jne 0x415fc5
mov eax, dword [ebp]
xor ecx, ecx
push ecx
push ebp
call dword [eax + 0x2c]
mov eax, dword [esp + 0x18]
movzx eax, byte [eax]
dec eax
je 0x415fd9
dec eax
jne 0x41601c
push 0x70
pop ecx
push 0x11
jmp 0x415fde
push 0x6f
pop ecx
push 6
pop esi
lea edx, [esp + 0x58]
call fcn.0041c8a9
movzx eax, word [esp + ebx + 0x3c]
push eax
lea eax, [esp + 0x5c]
push eax
lea eax, [esp + 0x70]
push 0xc
push eax
call fcn.00434140
add esp, 0x10
test eax, eax
jle 0x41601c
movzx eax, word [esp + ebx + 0x3c]
push ecx
push esi
push eax
lea eax, [esp + 0x74]
push eax
lea ecx, [esp + 0x58]
call fcn.0040b369
cmp byte [esp + 0x38], 0
je 0x41602d
mov eax, dword [ebp]
xor ecx, ecx
push ecx
push ebp
call dword [eax + 0x34]
mov bl, byte [esp + 0x17]
mov dl, byte [esp + 0x30]
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x18]
add dword [esp + 0x20], 2
inc dl
add eax, 4
add ecx, 8
mov byte [esp + 0x30], dl
mov dword [esp + 0x28], eax
mov dword [esp + 0x18], ecx
cmp dl, 4
jb 0x415dae
test ebp, ebp
je 0x416070
mov eax, dword [ebp]
push ebp
call dword [eax + 8]
xor eax, eax
mov dword [esp + 0x50], eax
mov eax, dword [edi + 0x19c]
mov ecx, edi
mov dword [edi + 0x120], eax
mov byte [edi + 0x138], 1
call fcn.00416110
test al, al
je 0x4160a8
movzx ecx, byte [edi + 0x138]
mov eax, dword [edi + 0x15c]
mov dword [edi + ecx*4 + 0x120], eax
inc byte [edi + 0x138]
push 4
pop edx
lea esi, [edi + 0x108]
mov eax, dword [esi]
test eax, eax
je 0x4160ce
movzx ecx, byte [edi + 0x138]
mov eax, dword [eax + 8]
mov dword [edi + ecx*4 + 0x120], eax
inc byte [edi + 0x138]
add esi, 4
dec edx
jne 0x4160b1
cmp bl, 1
jne 0x4160fc
push 0xc
lea eax, [esp + 0x40]
push eax
lea eax, [esp + 0x60]
push eax
call dword [sym.imp.msvcrt.dll_memcpy]
add esp, 0xc
lea edx, [esp + 0x58]
push 0xc
push 0x65
pop ecx
call fcn.00422443
lea ecx, [esp + 0x48]
call fcn.0040b235
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xf4
ret