Function at 0x14004c7a0
Capabilities:
Get local ipv4 addresses
Get socket information

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x6f8
xor r8d, r8d
mov r13, qword [rcx + 0x18]
mov rdi, qword [rcx + 0x838]
mov qword [rsp + 0x60], r13
mov r12, rcx
mov esi, edx
mov qword [rsp + 0x90], 0xffffffffffffffff
mov qword [rsp + 0xa0], 0
mov qword [rsp + 0xa8], 0
mov qword [rsp + 0xb0], 0
mov qword [rsp + 0xb8], 0
mov qword [rsp + 0xc0], 0
mov dword [rsp + 0xc8], 0
mov word [rsp + 0xcc], r8w
mov byte [rsp + 0xce], 0
mov qword [rsp + 0x98], 0
test rdi, rdi
je 0x14004ca00
mov rcx, rdi
call sym.strlen
mov rbp, rax
cmp rax, 1
jbe 0x14004ca00
movzx ebx, byte [rdi]
cmp bl, 0x5b
je 0x14004cdb8
mov edx, 0x3a
mov rcx, rdi
call sym.strchr
mov r14, rax
cmp bl, 0x3a
je 0x14004c9f0
test rax, rax
je 0x14004ce30
mov rbp, rax
lea r8, [rsp + 0x168]
mov rdx, rdi
mov ecx, 0x17
sub rbp, rdi
call sym.Curl_inet_pton
cmp eax, 1
je 0x14004c914
mov rcx, r14
mov edx, 0x3a
call sym.strchr
mov r14, rax
test rax, rax
je 0x14004c914
mov r8d, 0xa
xor edx, edx
lea rcx, [r14 + 1]
call sym.strtoul
mov ecx, eax
call sym.curlx_ultous
mov edx, 0x2d
mov rcx, r14
mov ebx, eax
mov word [rsp + 0x4e], ax
call sym.strchr
mov word [rsp + 0x4c], bx
test rax, rax
je 0x14004c922
lea rcx, [rax + 1]
mov r8d, 0xa
xor edx, edx
call sym.strtoul
mov ecx, eax
call sym.curlx_ultous
mov word [rsp + 0x4c], ax
cmp bx, ax
jbe 0x14004c922
xor edx, edx
xor ecx, ecx
mov word [rsp + 0x4c], dx
mov word [rsp + 0x4e], cx
test rbp, rbp
je 0x14004ca0e
cmp rbp, 0x31
jbe 0x14004ce48
cmp qword [rsp + 0x98], 0
je 0x14004cce0
lea rax, [rsp + 0x98]
mov qword [rsp + 0x50], rax
nop dword [rax]
mov rdx, qword [rsp + 0x50]
mov rcx, r12
mov r14d, 0x1e
call sym.Curl_resolv_unlink
mov r13, qword [r12 + 0x18]
movzx eax, byte [r13 + 0x75e]
test al, al
je 0x14004c9b0
test byte [r12 + 0xa47], 0x10
je 0x14004c9b0
mov rdx, qword [r12 + 0x1270]
test rdx, rdx
je 0x14004c99d
mov r8d, dword [rdx + 8]
test r8d, r8d
jle 0x14004c9b0
mov rdx, qword [0x140171ad0]
mov ecx, dword [rdx + 8]
test ecx, ecx
jg 0x14004d210
nop
mov byte [r13 + 0x75e], 0
mov r8, qword [rsp + 0x90]
cmp r8, 0xffffffffffffffff
je 0x14004c9d3
mov rdx, qword [rsp + 0x60]
mov rcx, r12
call sym.Curl_socket_close
mov eax, r14d
add rsp, 0x6f8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
test rax, rax
jne 0x14004d1c8
nop dword [rax]
xor eax, eax
mov word [rsp + 0x4c], ax
xor eax, eax
mov word [rsp + 0x4e], ax
mov rcx, qword [r13 + 0x238]
lea rdx, [rsp + 0x160]
mov dword [rsp + 0x8c], pe_nt_image_headers64
lea r8, [rsp + 0x8c]
call qword [sym.imp.WS2_32.dll_getsockname]
test eax, eax
jne 0x14004cc90
movzx ecx, word [rsp + 0x160]
lea rbx, [rsp + 0x2e0]
cmp cx, 0x17
je 0x14004cc70
lea rdx, [rsp + 0x164]
mov r9d, 0x401
mov r8, rbx
call sym.Curl_inet_ntop
test rax, rax
je 0x14004ccbd
xor ebp, ebp
xor r9d, r9d
xor r8d, r8d
mov rdx, rbx
mov rcx, r12
lea rax, [rsp + 0x98]
mov qword [rsp + 0x20], rax
mov qword [rsp + 0x50], rax
call sym.Curl_resolv
cmp eax, 1
je 0x14004cda0
mov rax, qword [rsp + 0x98]
test rax, rax
je 0x14004cd78
mov r15, qword [rax]
lea rax, [rsp + 0x90]
mov qword [rsp + 0x68], rax
test r15, r15
je 0x14004cd78
mov rax, qword [rsp + 0x68]
xor r8d, r8d
mov rdx, r15
mov rcx, r12
movzx r9d, byte [r13 + 0x796]
mov qword [rsp + 0x20], rax
call sym.Curl_socket_open
test eax, eax
jne 0x14004cde0
test byte [r12 + 0xa47], 0x10
je 0x14004cb56
mov rax, qword [r12 + 0x1270]
test rax, rax
je 0x14004cb16
mov eax, dword [rax + 8]
test eax, eax
jle 0x14004cb56
mov rax, qword [0x140171ad0]
mov eax, dword [rax + 8]
test eax, eax
jle 0x14004cb56
mov rax, qword [r12 + 0x18]
lea r8, [0x140161ecd]
test rax, rax
je 0x14004cb47
movzx edx, byte [rax + 0x75e]
lea rax, [0x140163240]
mov r8, qword [rax + rdx*8]
lea rdx, str.__s__ftp_state_use_port____opened_socket
mov rcx, r12
call sym.Curl_trc_ftp
mov rdx, qword [r15 + 0x20]
movsxd r8, dword [r15 + 0x10]
lea r14, [rsp + 0x160]
mov rcx, r14
call sym.memcpy
mov eax, dword [r15 + 0x10]
movzx edi, word [rsp + 0x4c]
mov dword [rsp + 0x8c], eax
movzx eax, word [rsp + 0x4e]
cmp ax, di
ja 0x14004cd0e
mov ebx, eax
lea rax, [rsp + 0x8c]
mov qword [rsp + 0x58], rax
movzx edi, bx
mov ecx, edi
call qword [sym.imp.WS2_32.dll_htons]
mov r8d, dword [rsp + 0x8c]
mov rcx, qword [rsp + 0x90]
mov rdx, r14
mov word [rsp + 0x162], ax
call qword [sym.imp.WS2_32.dll_bind]
test eax, eax
je 0x14004cef0
call qword [sym.imp.WS2_32.dll_WSAGetLastError]
cmp eax, 0x2741
jne 0x14004ccf0
test bpl, bpl
je 0x14004ccf0
test byte [r12 + 0xa47], 0x10
je 0x14004cc35
mov rax, qword [r12 + 0x1270]
test rax, rax
je 0x14004cc08
mov eax, dword [rax + 8]
test eax, eax
jle 0x14004cc35
lea rdx, [rsp + 0x1e0]
mov r8d, 0x100
mov ecx, 0x2741
call sym.Curl_strerror
mov r8d, edi
lea rdx, str.bind_port_hu__on_non_local_address_failed:__s
mov rcx, r12
mov r9, rax
call sym.Curl_infof
mov rcx, qword [r13 + 0x238]
mov r8, qword [rsp + 0x58]
mov rdx, r14
mov dword [rsp + 0x8c], pe_nt_image_headers64
call qword [sym.imp.WS2_32.dll_getsockname]
test eax, eax
jne 0x14004cd30
movzx ebx, word [rsp + 0x4e]
xor ebp, ebp
jmp 0x14004cb9b
lea rdx, [rsp + 0x168]
mov r9d, 0x401
mov r8, rbx
mov ecx, 0x17
call sym.Curl_inet_ntop
jmp 0x14004ca6e
call qword [sym.imp.WS2_32.dll_WSAGetLastError]
lea rdx, [rsp + 0x1e0]
mov r8d, 0x100
mov ecx, eax
call sym.Curl_strerror
lea rdx, str.getsockname___failed:__s
mov rcx, r12
mov r8, rax
call sym.Curl_failf
lea rax, [rsp + 0x98]
cmp qword [rsp + 0x98], 0
mov qword [rsp + 0x50], rax
jne 0x14004c958
nop dword [rax]
mov r13, qword [r12 + 0x18]
mov r14d, 0x1e
jmp 0x14004c970
cmp eax, 0x2740
je 0x14004cd00
cmp eax, 0xd
jne 0x14004d3c0
add ebx, 1
cmp bx, word [rsp + 0x4c]
jbe 0x14004cb9b
lea rdx, str.bind___failed__we_ran_out_of_ports
mov rcx, r12
call sym.Curl_failf
cmp qword [rsp + 0x98], 0
jne 0x14004c958
jmp 0x14004cce0
call qword [sym.imp.WS2_32.dll_WSAGetLastError]
lea rdx, [rsp + 0x1e0]
mov r8d, 0x100
mov ecx, eax
call sym.Curl_strerror
lea rdx, str.getsockname___failed:__s
mov rcx, r12
mov r8, rax
call sym.Curl_failf
cmp qword [rsp + 0x98], 0
jne 0x14004c958
jmp 0x14004cce0
mov r8, rbx
lea rdx, str.failed_to_resolve_the_address_provided_to_PORT:__s
mov rcx, r12
call sym.Curl_failf
cmp qword [rsp + 0x98], 0
jne 0x14004c958
jmp 0x14004cce0
mov rdx, qword [rsp + 0x50]
mov rcx, r12
call sym.Curl_resolver_wait_resolv
jmp 0x14004caa5
add rdi, 1
mov edx, 0x5d
mov rcx, rdi
call sym.strchr
mov r14, rax
test rax, rax
je 0x14004ca00
mov rbp, rax
sub rbp, rdi
jmp 0x14004c8a7
call qword [sym.imp.WS2_32.dll_WSAGetLastError]
mov r15, qword [r15 + 0x28]
test r15, r15
jne 0x14004cacf
mov ecx, eax
lea rdx, [rsp + 0x1e0]
mov r8d, 0x100
call sym.Curl_strerror
lea rdx, str.socket_failure:__s
mov rcx, r12
mov r8, rax
call sym.Curl_failf
cmp qword [rsp + 0x98], 0
jne 0x14004c958
jmp 0x14004cce0
cmp rbp, 0x31
ja 0x14004cce5
xor eax, eax
xor edx, edx
mov word [rsp + 0x4e], ax
mov word [rsp + 0x4c], dx
lea rbx, [rsp + 0xd0]
mov ecx, ebp
mov rax, rdi
mov r8, rbx
cmp ebp, 8
jae 0x14004d380
xor edx, edx
test cl, 4
jne 0x14004d200
test cl, 2
jne 0x14004d1e8
and ecx, 1
jne 0x14004d1d8
mov rax, qword [r13 + 0x50]
mov byte [rsp + rbp + 0xd0], 0
lea rdi, [rsp + 0x2e0]
mov ebp, dword [r13 + 0x78c]
lea rcx, [rax + 0x10]
call sym.Curl_ipv6_scope
mov r9, rbx
mov r8d, ebp
mov edx, eax
mov rax, qword [r13 + 0x50]
mov qword [rsp + 0x20], rdi
mov qword [rsp + 0x28], 0x401
mov ecx, dword [rax]
call sym.Curl_if2ip
cmp eax, 1
je 0x14004d3fe
cmp eax, 2
je 0x14004d3b0
test eax, eax
jne 0x14004ca0e
mov ebp, 1
jmp 0x14004ca79
mov dword [rsp + 0x8c], pe_nt_image_headers64
mov rcx, qword [rsp + 0x90]
lea r8, [rsp + 0x8c]
mov rdx, r14
call qword [sym.imp.WS2_32.dll_getsockname]
test eax, eax
jne 0x14004cd30
test byte [r12 + 0xa47], 0x10
je 0x14004cf80
mov rax, qword [r12 + 0x1270]
test rax, rax
je 0x14004cf3d
mov r14d, dword [rax + 8]
test r14d, r14d
jle 0x14004cf80
mov rax, qword [0x140171ad0]
mov ebp, dword [rax + 8]
test ebp, ebp
jle 0x14004cf80
mov rax, qword [r12 + 0x18]
lea r8, [0x140161ecd]
test rax, rax
je 0x14004cf6e
movzx edx, byte [rax + 0x75e]
lea rax, [0x140163240]
mov r8, qword [rax + rdx*8]
mov r9d, edi
lea rdx, str.__s__ftp_state_use_port____socket_bound_to_port__d
mov rcx, r12
call sym.Curl_trc_ftp
mov rcx, qword [rsp + 0x90]
mov edx, 1
call qword [sym.imp.WS2_32.dll_listen]
mov ebp, eax
test eax, eax
jne 0x14004d418
test byte [r12 + 0xa47], 0x10
je 0x14004d001
mov rax, qword [r12 + 0x1270]
test rax, rax
je 0x14004cfbc
mov ebx, dword [rax + 8]
test ebx, ebx
jle 0x14004d001
mov rax, qword [0x140171ad0]
mov r11d, dword [rax + 8]
test r11d, r11d
jle 0x14004d001
mov rax, qword [r12 + 0x18]
lea r8, [0x140161ecd]
test rax, rax
je 0x14004cfef
movzx edx, byte [rax + 0x75e]
lea rax, [0x140163240]
mov r8, qword [rax + rdx*8]
mov r9d, edi
lea rdx, str.__s__ftp_state_use_port____listening_on__d
mov rcx, r12
call sym.Curl_trc_ftp
lea rbx, [rsp + 0xa0]
mov r8d, 0x2f
mov rcx, r15
mov rdx, rbx
call sym.Curl_printable_address
mov eax, dword [r13 + 0x3b8]
and eax, 0x10800
cmp eax, 0x800
je 0x14004d236
cmp esi, 2
je 0x14004d0b0
mov r14, qword [sym.imp.WS2_32.dll_ntohs]
movzx edx, byte [r13 + 0x3ba]
movzx eax, word [rsp + 0x160]
mov rdi, r14
test esi, esi
jne 0x14004d059
test dl, 1
je 0x14004d0a9
cmp esi, 1
je 0x14004d250
cmp ax, 2
je 0x14004d2e0
cmp ax, 0x17
jne 0x14004d248
movzx ecx, word [rsp + 0x162]
call rdi
test esi, esi
je 0x14004d2f3
add esi, 1
cmp esi, 2
je 0x14004d0b0
movzx eax, word [rsp + 0x160]
movzx edx, byte [r13 + 0x3ba]
test esi, esi
jne 0x14004d059
test dl, 1
jne 0x14004d059
mov esi, 1
jmp 0x14004d050
mov ebp, 2
mov rbx, qword [r12 + 0x18]
mov dword [r13 + 0x750], ebp
movzx eax, byte [rbx + 0x75e]
cmp al, 0x1c
je 0x14004d120
test byte [r12 + 0xa47], 0x10
je 0x14004d120
mov rdx, qword [r12 + 0x1270]
test rdx, rdx
je 0x14004d0ed
mov r10d, dword [rdx + 8]
test r10d, r10d
jle 0x14004d120
mov rdx, qword [0x140171ad0]
mov r9d, dword [rdx + 8]
test r9d, r9d
jle 0x14004d120
lea rdx, [0x140163240]
lea r9, [0x140162369]
mov rcx, r12
mov r8, qword [rdx + rax*8]
lea rdx, str.__s_______s_
call sym.Curl_trc_ftp
nop
mov byte [rbx + 0x75e], 0x1c
mov r9, qword [rsp + 0x68]
mov rdx, r13
mov rcx, r12
mov r8d, 1
call sym.Curl_conn_tcp_listen_set
mov r14d, eax
test eax, eax
jne 0x14004d360
cmp qword [rsp + 0x98], 0
mov qword [rsp + 0x90], 0xffffffffffffffff
jne 0x14004d494
test byte [r13 + 0x3ba], 2
je 0x14004d17c
test byte [r12 + 0xa45], 0x10
jne 0x14004d2b0
mov rax, qword [r12 + 0x18]
lea rcx, [rsp + 0x70]
mov rdx, r12
mov r8d, 0xa
and byte [rax + 0x3b9], 0xef
call sym.Curl_pgrsTime
mov edx, dword [r12 + 0x6f4]
mov eax, 0xea60
mov rcx, r12
mov r8d, 0xd
test edx, edx
cmove rdx, rax
call sym.Curl_expire
jmp 0x14004c9b8
xor ebp, ebp
xor edi, edi
jmp 0x14004c8bc
movzx eax, byte [rax + rdx]
mov byte [r8 + rdx], al
jmp 0x14004ce7e
movzx r9d, word [rax + rdx]
mov word [r8 + rdx], r9w
add rdx, 2
jmp 0x14004ce75
mov edx, dword [rax]
mov dword [r8], edx
mov edx, 4
jmp 0x14004ce6c
lea rdx, [0x140163240]
lea r9, [0x140161fb6]
mov rcx, r12
mov r8, qword [rdx + rax*8]
lea rdx, str.__s_______s_
call sym.Curl_trc_ftp
jmp 0x14004c9b0
or byte [r13 + 0x3ba], 1
jmp 0x14004d031
add esi, 1
jmp 0x14004d050
cmp ax, 2
jne 0x14004d0b0
movzx ecx, word [rsp + 0x162]
lea rsi, [rsp + 0x110]
call qword [sym.imp.WS2_32.dll_ntohs]
mov rcx, rsi
mov edx, eax
movzx eax, byte [rsp + 0xa0]
test al, al
jne 0x14004d2a6
jmp 0x14004d423
mov byte [rcx], al
movzx eax, byte [rbx + 1]
add rbx, 1
add rcx, 1
test al, al
je 0x14004d423
cmp al, 0x2e
jne 0x14004d290
mov byte [rcx], 0x2c
jmp 0x14004d292
mov edx, 1
mov rcx, r13
call sym.Curl_conn_is_ssl
test al, al
jne 0x14004d17c
mov r8d, 1
mov rdx, r13
mov rcx, r12
call sym.Curl_ssl_cfilter_add
mov r14d, eax
jmp 0x14004d17c
movzx ecx, word [rsp + 0x162]
call r14
test esi, esi
jne 0x14004d088
xor edx, edx
movzx eax, ax
mov qword [rsp + 0x28], rbx
mov rcx, r12
cmp word [rsp + 0x160], 2
mov dword [rsp + 0x30], eax
lea r10, [r13 + 0x650]
lea r9, str.EPRT
setne dl
lea r8, str._s__d_s_hu
add edx, 1
mov dword [rsp + 0x20], edx
mov rdx, r10
call sym.Curl_pp_sendf
mov r14d, eax
test eax, eax
je 0x14004d0b5
mov ecx, eax
call sym.curl_easy_strerror
lea rdx, str.Failure_sending_EPRT_command:__s
mov rcx, r12
mov r8, rax
call sym.Curl_failf
nop dword [rax + rax]
cmp qword [rsp + 0x98], 0
jne 0x14004d4a6
mov r13, qword [r12 + 0x18]
jmp 0x14004c970
mov r9d, ebp
xor eax, eax
and r9d, 0xfffffff8
mov edx, eax
add eax, 8
mov r8, qword [rdi + rdx]
mov qword [rbx + rdx], r8
cmp eax, r9d
jb 0x14004d389
lea r8, [rbx + rax]
add rax, rdi
jmp 0x14004ce61
mov ebp, 1
mov rbx, rdi
jmp 0x14004ca79
lea rdx, [rsp + 0x1e0]
mov r8d, 0x100
mov ecx, eax
call sym.Curl_strerror
mov r8d, edi
lea rdx, str.bind_port_hu__failed:__s
mov rcx, r12
mov r9, rax
call sym.Curl_failf
cmp qword [rsp + 0x98], 0
jne 0x14004c958
jmp 0x14004cce0
cmp qword [rsp + 0x98], 0
je 0x14004cce0
jmp 0x14004c944
call qword [sym.imp.WS2_32.dll_WSAGetLastError]
jmp 0x14004cdf3
movzx eax, dh
movzx edx, dl
mov byte [rcx], 0
mov ebp, 1
mov dword [rsp + 0x20], edx
mov r9d, eax
lea r8, str.__d__d
mov edx, 0x14
call sym.curl_msnprintf
mov qword [rsp + 0x20], rsi
mov rcx, r12
lea rdx, [r13 + 0x650]
lea r9, str.PORT
lea r8, [0x140162340]
call sym.Curl_pp_sendf
mov r14d, eax
test eax, eax
je 0x14004d0b5
mov ecx, eax
call sym.curl_easy_strerror
lea rdx, str.Failure_sending_PORT_command:__s
mov rcx, r12
mov r8, rax
call sym.Curl_failf
jmp 0x14004d360
mov rdx, qword [rsp + 0x50]
mov rcx, r12
call sym.Curl_resolv_unlink
jmp 0x14004d163
mov rdx, qword [rsp + 0x50]
mov rcx, r12
call sym.Curl_resolv_unlink
mov r13, qword [r12 + 0x18]
jmp 0x14004c970