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

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x278
mov r13, r8
mov rbp, rdx
mov rdi, rcx
mov rax, qword [0x1401890e0]
cmp rax, 2
jne 0x1400a72cd
movzx eax, byte [0x1401890e9]
test al, al
je 0x1400a72e1
mov qword [rsp + 0x48], rbp
mov qword [rsp + 0x50], r13
mov qword [rsp + 0x58], rdi
lea rdx, str.127.0.0.1:0testserver:_pre_connect_with_error
lea rcx, [rsp + 0x70]
mov r8d, 0xb
call fcn.14006dbe0
mov rax, qword [rsp + 0x70]
mov qword [rsp + 0x40], rax
test rax, rax
je 0x1400a7455
mov rax, qword [rsp + 0x78]
mov qword [rsp + 0x30], rax
mov rdi, qword [rsp + 0x80]
mov rbp, qword [rsp + 0x88]
cmp rdi, rbp
je 0x1400a744d
xor r15d, r15d
jmp 0x1400a696d
mov rcx, qword [0x140228110]
xor edx, edx
mov r8, rbx
call sub.kernel32.dll_HeapFree
dec r12
mov rcx, qword [0x140228110]
xor edx, edx
mov r8, r12
call sub.kernel32.dll_HeapFree
nop word cs:[rax + rax]
add rdi, 0x20
cmp rdi, rbp
je 0x1400a744d
movzx ebx, word [rdi]
cmp bx, 2
je 0x1400a744d
mov r12, r15
mov r14d, dword [rdi + 0x14]
mov esi, dword [rdi + 0x18]
movzx r13d, word [rdi + 0x1c]
movzx eax, word [rdi + 0x12]
mov word [rsp + 0x180], ax
movups xmm0, xmmword [rdi + 2]
movaps xmmword [rsp + 0x170], xmm0
mov rax, qword [0x1402280f0]
cmp rax, 3
jne 0x1400a6aca
lea rcx, [rsp + 0x70]
mov edx, ebx
call fcn.140075870
cmp qword [rsp + 0x70], 0
mov r15, qword [rsp + 0x78]
je 0x1400a69e0
test r12, r12
jne 0x1400a6a7f
jmp 0x1400a6960
test bx, bx
je 0x1400a69f9
mov r8d, 0x1c
mov ax, 0x17
movups xmm0, xmmword [rsp + 0x172]
jmp 0x1400a6a17
movzx r13d, word [rsp + 0x174]
mov r14d, dword [rsp + 0x170]
mov r8d, 0x10
mov ax, 2
xorps xmm0, xmm0
rol r13w, 8
mov word [rsp + 0x70], ax
mov word [rsp + 0x72], r13w
mov dword [rsp + 0x74], r14d
movups xmmword [rsp + 0x78], xmm0
mov dword [rsp + 0x88], esi
mov rcx, r15
lea rdx, [rsp + 0x70]
call sub.ws2_32.dll_bind
cmp eax, 0xffffffff
je 0x1400a6a5c
mov rcx, r15
mov edx, pe_nt_image_headers64
call sub.ws2_32.dll_listen
cmp eax, 0xffffffff
jne 0x1400a6ad4
call sub.ws2_32.dll_WSAGetLastError
mov ebx, eax
shl rbx, 0x20
or rbx, 2
mov rcx, r15
call sub.ws2_32.dll_closesocket
mov r15, rbx
test r12, r12
je 0x1400a6960
mov eax, r12d
and eax, 3
lea rcx, [rax - 2]
cmp rcx, 2
jb 0x1400a6960
test rax, rax
je 0x1400a6960
mov rbx, qword [r12 - 1]
mov rsi, qword [r12 + 7]
mov rcx, rbx
call qword [rsi]
cmp qword [rsi + 8], 0
je 0x1400a693e
cmp qword [rsi + 0x10], 0x11
jb 0x1400a692d
mov rbx, qword [rbx - 8]
jmp 0x1400a692d
call fcn.14006c870
jmp 0x1400a69b2
cmp qword [rsp + 0x30], 0
je 0x1400a6aef
mov rcx, qword [0x140228110]
xor edx, edx
mov r8, qword [rsp + 0x40]
call sub.kernel32.dll_HeapFree
test r12, r12
je 0x1400a6b51
mov eax, r12d
and eax, 3
lea rcx, [rax - 2]
cmp rcx, 2
jb 0x1400a6b51
test rax, rax
je 0x1400a6b51
lea rbx, [r12 - 1]
mov r14, qword [r12 - 1]
mov rsi, qword [r12 + 7]
mov rcx, r14
call qword [rsi]
cmp qword [rsi + 8], 0
je 0x1400a6b40
cmp qword [rsi + 0x10], 0x11
jb 0x1400a6b2f
mov r14, qword [r14 - 8]
mov rcx, qword [0x140228110]
xor edx, edx
mov r8, r14
call sub.kernel32.dll_HeapFree
mov rcx, qword [0x140228110]
xor edx, edx
mov r8, rbx
call sub.kernel32.dll_HeapFree
xorps xmm0, xmm0
movaps xmmword [rsp + 0xe0], xmm0
movaps xmmword [rsp + 0xd0], xmm0
movaps xmmword [rsp + 0xc0], xmm0
movaps xmmword [rsp + 0xb0], xmm0
movaps xmmword [rsp + 0xa0], xmm0
movaps xmmword [rsp + 0x90], xmm0
movaps xmmword [rsp + 0x80], xmm0
movaps xmmword [rsp + 0x70], xmm0
mov dword [rsp + 0x170], pe_nt_image_headers64
lea rdx, [rsp + 0x70]
lea r8, [rsp + 0x170]
mov rcx, r15
call sub.ws2_32.dll_getsockname
cmp eax, 0xffffffff
je 0x1400a746c
mov eax, dword [rsp + 0x170]
movzx ecx, word [rsp + 0x70]
cmp ecx, 2
je 0x1400a6bde
cmp ecx, 0x17
jne 0x1400a7455
cmp eax, 0x1b
ja 0x1400a6be7
jmp 0x1400a7455
cmp eax, 0xf
jbe 0x1400a7455
movzx eax, word [rsp + 0x72]
rol ax, 8
mov word [rsp + 0x2e], ax
movzx eax, byte [0x140228121]
mov rcx, qword [0x140228110]
test rcx, rcx
jne 0x1400a6c20
call sub.kernel32.dll_GetProcessHeap
test rax, rax
je 0x1400a7455
mov rcx, rax
mov qword [0x140228110], rax
mov r8d, 0x18
xor edx, edx
call sub.kernel32.dll_HeapAlloc
test rax, rax
je 0x1400a7455
mov rdi, rax
mov qword [rax], 1
mov qword [rax + 8], 1
mov byte [rax + 0x10], 0
lock inc qword [rax]
jle 0x1400a7455
call fcn.140065c00
mov r13, rax
movzx eax, byte [0x140228121]
mov rcx, qword [0x140228110]
test rcx, rcx
jne 0x1400a6c89
call sub.kernel32.dll_GetProcessHeap
test rax, rax
je 0x1400a7455
mov rcx, rax
mov qword [0x140228110], rax
mov r8d, 0x30
xor edx, edx
call sub.kernel32.dll_HeapAlloc
test rax, rax
je 0x1400a7455
mov r12, rax
mov qword [rax], 1
mov qword [rax + 8], 1
mov qword [rax + 0x18], 0
mov rax, qword [0x140228060]
mov rcx, rax
inc rcx
je 0x1400a7455
lock cmpxchg qword [0x140228060], rcx
jne 0x1400a6cc0
mov qword [r12 + 0x10], rcx
mov byte [r12 + 0x28], 0
lock inc qword [r12]
jle 0x1400a7455
movzx eax, byte [0x140228121]
mov rcx, qword [0x140228110]
test rcx, rcx
jne 0x1400a6d18
call sub.kernel32.dll_GetProcessHeap
test rax, rax
je 0x1400a7455
mov rcx, rax
mov qword [0x140228110], rax
mov r8d, 0x30
xor edx, edx
call sub.kernel32.dll_HeapAlloc
test rax, rax
je 0x1400a7455
mov rbp, rax
mov qword [rax], 1
mov qword [rax + 8], 1
xorps xmm0, xmm0
movups xmmword [rax + 0x10], xmm0
mov qword [rsp + 0x70], rax
lock inc qword [rax]
jle 0x1400a7455
movzx eax, byte [0x140228070]
test al, al
je 0x1400a6db1
mov byte [0x140228070], 1
call fcn.14006aed0
test rax, rax
je 0x1400a7455
mov rbx, qword [rax]
mov qword [rax], 0
test rbx, rbx
je 0x1400a6db1
lock inc qword [rbx]
jle 0x1400a7455
mov byte [0x140228070], 1
call fcn.14006aed0
test rax, rax
je 0x1400a74a1
mov rcx, qword [rax]
mov qword [rax], rbx
test rcx, rcx
jne 0x1400a6de6
jmp 0x1400a6df1
movzx eax, byte [0x140228070]
test al, al
je 0x1400a72b4
mov byte [0x140228070], 1
call fcn.14006aed0
test rax, rax
je 0x1400a7455
mov rcx, qword [rax]
mov qword [rax], 0
xor ebx, ebx
test rcx, rcx
je 0x1400a6df1
lock dec qword [rcx]
jne 0x1400a6df1
call fcn.1400a8110
mov rsi, qword [rsp + 0x70]
mov rcx, qword [rsi + 0x10]
test rcx, rcx
je 0x1400a6e0a
lock inc qword [rcx + 0x18]
jle 0x1400a7494
movzx eax, byte [0x140228121]
mov rcx, qword [0x140228110]
test rcx, rcx
jne 0x1400a6e35
call sub.kernel32.dll_GetProcessHeap
test rax, rax
je 0x1400a7455
mov rcx, rax
mov qword [0x140228110], rax
mov r8d, 0x30
xor edx, edx
call sub.kernel32.dll_HeapAlloc
test rax, rax
je 0x1400a7455
mov qword [rax], r12
mov qword [rax + 8], rbp
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], r15
mov qword [rax + 0x20], rdi
lea rcx, [0x1400a3840]
mov qword [rax + 0x28], rcx
lea r8, [0x1401e4e50]
mov rcx, r13
mov rdx, rax
call fcn.14006b830
test rax, rax
jne 0x1400a7473
mov qword [rsp + 0x70], r12
mov qword [rsp + 0x78], rsi
mov qword [rsp + 0x80], rdx
mov rcx, rdx
call sub.kernel32.dll_CloseHandle
lock dec qword [r12]
jne 0x1400a6eaf
mov rcx, qword [rsp + 0x70]
call fcn.140066d40
mov qword [rsp + 0x30], rdi
mov rax, qword [rsp + 0x78]
lock dec qword [rax]
jne 0x1400a6ec9
lea rcx, [rsp + 0x78]
call fcn.1400a8260
lea rdi, [rsp + 0x2e]
lea r13, [0x1400174c0]
lea r14, [0x1401e4ba0]
lea rsi, [rsp + 0x60]
lea r15, [rsp + 0x170]
lea r12, [rsp + 0x70]
lea rbp, [0x14019048c]
jmp 0x1400a6f28
mov rcx, qword [0x140228110]
xor edx, edx
mov r8, r13
call sub.kernel32.dll_HeapFree
dec rbx
mov rcx, qword [0x140228110]
xor edx, edx
mov r8, rbx
call sub.kernel32.dll_HeapFree
lea rdi, [rsp + 0x2e]
lea r13, [0x1400174c0]
mov qword [rsp + 0x60], rdi
mov qword [rsp + 0x68], r13
mov qword [rsp + 0x70], r14
mov qword [rsp + 0x78], 1
mov qword [rsp + 0x90], 0
mov qword [rsp + 0x80], rsi
mov qword [rsp + 0x88], 1
mov rcx, r15
mov rdx, r12
call fcn.1400048a0
mov rcx, r12
mov rdx, r15
call fcn.1400a0680
cmp qword [rsp + 0x70], 0
je case.default.0x1400a6f99
mov rax, qword [rsp + 0x78]
mov qword [rsp + 0x38], rax
mov ecx, eax
and ecx, 3
movsxd rcx, dword [rbp + rcx*4]
add rcx, rbp
jmp rcx
movzx eax, byte [rax + 0x10]
jmp 0x1400a6fb4
cmp al, 2
jne 0x1400a6fdb
xor ecx, ecx
mov edx, 0x5f5e100
call fcn.14006daf0
jmp 0x1400a702e
lea rax, [rsp + 0x38]
mov qword [rsp + 0x60], rax
lea rax, [fcn.14006a550]
mov qword [rsp + 0x68], rax
lea rax, [0x1401e4c20]
mov qword [rsp + 0x70], rax
mov qword [rsp + 0x78], 2
mov qword [rsp + 0x90], 0
mov qword [rsp + 0x80], rsi
mov qword [rsp + 0x88], 1
mov rcx, r12
call fcn.140076d20
mov rbx, qword [rsp + 0x38]
mov eax, ebx
and eax, 3
lea rcx, [rax - 2]
cmp rcx, 2
jb 0x1400a6f28
test rax, rax
je 0x1400a6f28
mov r13, qword [rbx - 1]
mov rdi, qword [rbx + 7]
mov rcx, r13
call qword [rdi]
cmp qword [rdi + 8], 0
je 0x1400a6f08
cmp qword [rdi + 0x10], 0x11
jb 0x1400a6ef7
mov r13, qword [r13 - 8]
jmp 0x1400a6ef7
mov rcx, qword [rsp + 0x78]
call sub.ws2_32.dll_closesocket
movzx esi, word [rsp + 0x2e]
lea rcx, [rsp + 0x70]
call fcn.14009ed40
movzx eax, byte [0x140228121]
mov rcx, qword [0x140228110]
test rcx, rcx
je 0x1400a7201
mov rdi, qword [rsp + 0x58]
mov r13, qword [rsp + 0x50]
mov rbp, qword [rsp + 0x48]
mov r14, qword [rsp + 0x30]
jmp 0x1400a722d
call sub.kernel32.dll_GetProcessHeap
test rax, rax
mov rdi, qword [rsp + 0x58]
mov r13, qword [rsp + 0x50]
mov rbp, qword [rsp + 0x48]
mov r14, qword [rsp + 0x30]
je 0x1400a7455
mov rcx, rax
mov qword [0x140228110], rax
mov r8d, 0x20
xor edx, edx
call sub.kernel32.dll_HeapAlloc
test rax, rax
je 0x1400a7455
mov rbx, rax
mov qword [rax], 1
mov qword [rax + 8], 1
mov qword [rax + 0x10], r14
mov word [rax + 0x18], si
mov rax, qword [rsp + 0x148]
lock dec qword [rax]
jne 0x1400a7280
mov rcx, qword [rsp + 0x148]
mov rdx, qword [rsp + 0x150]
call fcn.1400a7cd0
mov qword [rsp + 0x148], rbx
lea rax, [0x1401e6810]
mov qword [rsp + 0x150], rax
lea rbx, [rsp + 0x170]
lea rdx, [rsp + 0x70]
mov r8d, 0x100
mov rcx, rbx
call sub.msvcrt.dll_memcpy
jmp 0x1400a72ee
xor ebx, ebx
mov rsi, qword [rsp + 0x70]
mov rcx, qword [rsi + 0x10]
test rcx, rcx
jne 0x1400a6dff
jmp 0x1400a6e0a
call fcn.1400a8690
movzx eax, byte [0x1401890e9]
test al, al
jne 0x1400a68cc
lea rbx, [rsp + 0x70]
mov rcx, rbx
call fcn.14009ed40
mov rcx, rbx
call fcn.14009d0d0
mov r14, rax
mov r15, rdx
mov qword [rsp + 0x70], rax
mov qword [rsp + 0x78], rdx
lock inc qword [rax]
jle 0x1400a7455
lock inc qword [r15]
jle 0x1400a7455
movzx eax, byte [0x140228121]
mov rcx, qword [0x140228110]
test rcx, rcx
jne 0x1400a7345
call sub.kernel32.dll_GetProcessHeap
test rax, rax
je 0x1400a7455
mov rcx, rax
mov qword [0x140228110], rax
mov r8d, 3
xor edx, edx
call sub.kernel32.dll_HeapAlloc
test rax, rax
je 0x1400a7455
mov rbx, rax
mov byte [rax + 2], 0x54
mov word [rax], 0x4547
test r13, r13
je 0x1400a73b4
js 0x1400a7455
movzx eax, byte [0x140228121]
mov rcx, qword [0x140228110]
test rcx, rcx
jne 0x1400a739d
call sub.kernel32.dll_GetProcessHeap
test rax, rax
je 0x1400a7455
mov rcx, rax
mov qword [0x140228110], rax
xor edx, edx
mov r8, r13
call sub.kernel32.dll_HeapAlloc
mov r12, rax
test rax, rax
jne 0x1400a73ba
jmp 0x1400a7455
mov r12d, 1
mov rcx, r12
mov rdx, rbp
mov r8, r13
call sub.msvcrt.dll_memcpy
mov qword [rdi + 0x58], r14
mov qword [rdi + 0x60], r15
mov qword [rdi], 3
mov qword [rdi + 8], rbx
mov qword [rdi + 0x10], 3
mov qword [rdi + 0x18], r13
mov qword [rdi + 0x20], r12
mov qword [rdi + 0x28], r13
mov qword [rdi + 0x30], 0
mov qword [rdi + 0x38], 8
mov qword [rdi + 0x40], 0
mov dword [rdi + 0x50], 0x3b9aca00
mov rax, qword [rsp + 0x70]
lock dec qword [rax]
jne 0x1400a7423
lea rcx, [rsp + 0x70]
call fcn.1400a8160
mov rax, qword [rsp + 0x78]
lock dec qword [rax]
jne 0x1400a7438
lea rcx, [rsp + 0x78]
call fcn.1400a7d50
nop
add rsp, 0x278
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
cmp qword [rsp + 0x30], 0
jne 0x1400a7457
ud2
mov rcx, qword [0x140228110]
xor edx, edx
mov r8, qword [rsp + 0x40]
call sub.kernel32.dll_HeapFree
ud2
call sub.ws2_32.dll_WSAGetLastError
ud2
lock dec qword [rsi]
jne 0x1400a7483
lea rcx, [rsp + 0x70]
call fcn.1400a8260
lock dec qword [r12]
jne 0x1400a7455
mov rcx, r12
call fcn.140066d40
ud2
add rcx, 0x10
xor edx, edx
call fcn.1400768f0
ud2
lock dec qword [rbx]
jne 0x1400a7455
mov rcx, rbx
call fcn.140066f90
ud2