Function at 0x421e10
Capabilities:
Get local ipv4 addresses
Get socket information
Set socket configuration

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x48
mov eax, dword [0x46759c]
xor eax, ebp
mov dword [ebp - 0x20], eax
push esi
push edi
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x48]
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x10], 1
mov dword [ebp - 0x14], 1
mov dword [ebp - 0x18], 0x10
cmp dword [ebp - 0x14], 0
je 0x422044
push 0
lea edx, [ebp - 8]
push edx
mov eax, dword [ebp - 0x1c]
push eax
call fcn.004200f0
add esp, 0xc
mov dword [ebp - 0x1c], eax
cmp dword [ebp - 0x1c], 0
je 0x422044
lea ecx, [ebp - 0x48]
push ecx
lea edx, [ebp - 8]
push edx
call fcn.004220d0
add esp, 8
test eax, eax
jne 0x421eb5
push str._IP_ADDRESS:_PORT_sr_
mov eax, dword [ebp - 8]
push eax
mov ecx, dword [ebp - 4]
push ecx
push 0x466b94
push str._s:__.s:_invalid_port_spec._Expecting_list_of:__s
mov edx, dword [ebp + 8]
push edx
call fcn.00421d00
add esp, 4
push eax
call fcn.0041f500
add esp, 0x18
mov dword [ebp - 0x14], 0
jmp 0x42203f
mov eax, dword [ebp - 0x24]
and eax, 1
je 0x421eec
mov ecx, dword [ebp + 8]
cmp dword [ecx + 4], 0
jne 0x421eec
push str.Cannot_add_SSL_socket__is__ssl_certificate_option_set_
mov edx, dword [ebp + 8]
push edx
call fcn.00421d00
add esp, 4
push eax
call fcn.0041f500
add esp, 8
mov dword [ebp - 0x14], 0
jmp 0x42203f
push 6
push 1
movzx eax, word [ebp - 0x44]
push eax
call sub.WS2_32.dll_socket
mov dword [ebp - 0x48], eax
cmp dword [ebp - 0x48], 0xffffffff
je 0x421f4f
push 4
lea ecx, [ebp - 0x10]
push ecx
push 4
push 0xffff
mov edx, dword [ebp - 0x48]
push edx
call sub.WS2_32.dll_setsockopt
test eax, eax
jne 0x421f4f
movzx eax, word [ebp - 0x44]
sub eax, 2
neg eax
sbb eax, eax
and eax, 0
add eax, 0x10
push eax
lea ecx, [ebp - 0x44]
push ecx
mov edx, dword [ebp - 0x48]
push edx
call sub.WS2_32.dll_bind
test eax, eax
jne 0x421f4f
push 5
mov eax, dword [ebp - 0x48]
push eax
call sub.WS2_32.dll_listen
test eax, eax
je 0x421fa3
call fcn.00438f06
mov ecx, dword [eax]
push ecx
call fcn.004379b7
add esp, 4
push eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
mov edx, dword [ebp - 8]
push edx
mov eax, dword [ebp - 4]
push eax
push str.set_ports_option
push str._s:_cannot_bind_to__.s:__d___s_
mov ecx, dword [ebp + 8]
push ecx
call fcn.00421d00
add esp, 4
push eax
call fcn.0041f500
add esp, 0x1c
mov edx, dword [ebp - 0x48]
push edx
call sub.WS2_32.dll_closesocket
mov dword [ebp - 0x14], 0
jmp 0x42203f
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0xa0]
add ecx, 1
imul ecx, ecx, 0x28
push ecx
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x9c]
push eax
call fcn.00438e17
add esp, 8
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0
jne 0x421fe0
mov ecx, dword [ebp - 0x48]
push ecx
call sub.WS2_32.dll_closesocket
mov dword [ebp - 0x14], 0
jmp 0x42203f
lea edx, [ebp - 0x18]
push edx
lea eax, [ebp - 0x44]
push eax
mov ecx, dword [ebp - 0x48]
push ecx
call sub.WS2_32.dll_getsockname
mov edx, dword [ebp - 0x48]
push edx
call fcn.00421030
add esp, 4
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0xc]
mov dword [eax + 0x9c], ecx
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0xa0]
imul eax, eax, 0x28
mov ecx, dword [ebp + 8]
mov edi, dword [ecx + 0x9c]
add edi, eax
mov ecx, 0xa
lea esi, [ebp - 0x48]
rep movsd dword es:[edi], dword [esi]
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0xa0]
add eax, 1
mov ecx, dword [ebp + 8]
mov dword [ecx + 0xa0], eax
jmp 0x421e40
cmp dword [ebp - 0x14], 0
jne 0x422056
mov edx, dword [ebp + 8]
push edx
call fcn.00422070
add esp, 4
mov eax, dword [ebp - 0x14]
pop edi
pop esi
mov ecx, dword [ebp - 0x20]
xor ecx, ebp
call fcn.004320d5
mov esp, ebp
pop ebp
ret