Function at 0x140001510
Capabilities:
Receive data
Receive data on socket
Send data
Send data on socket

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x128
lea rbp, [rsp + 0x80]
movaps xmmword [rbp + 0x90], xmm6
mov qword [rbp + 0x88], 0xfffffffffffffffe
mov rdi, rcx
mov ecx, 0xffe3
mov edx, 1
call fcn.140004e40
mov qword [rbp + 0x30], rax
test rax, rax
je 0x140001ae6
mov r12, qword [rdi + 0x30]
mov r13, qword [rdi + 0x20]
mov rsi, qword [rdi + 0x28]
lea rax, [rsi + 0x10]
mov qword [rbp + 0x78], rax
movzx eax, word [rdi]
mov word [rbp + 0x3c], ax
mov eax, dword [rdi + 2]
mov qword [rbp - 0x40], rdi
movzx ecx, word [rdi + 6]
rol cx, 8
mov word [rbp + 0x3e], cx
bswap eax
mov dword [rbp - 0x14], eax
lea rbx, [rsi + 0x1c]
xorps xmm6, xmm6
lea r15, [rbp - 0x10]
lea rdi, [rbp + 0x40]
jmp 0x14000160f
lea rax, [rbp - 0x48]
mov qword [rbp - 0x10], rax
lea rax, [fcn.140024160]
mov qword [rbp - 8], rax
mov rax, qword [rbp - 0x40]
mov qword [rbp], rax
lea rax, [0x14001f0c0]
mov qword [rbp + 8], rax
lea rax, str.Forwarded__bytes_to
mov qword [rbp + 0x40], rax
mov qword [rbp + 0x48], 3
mov qword [rbp + 0x60], 0
mov qword [rbp + 0x50], r15
mov qword [rbp + 0x58], 2
mov rcx, rdi
call fcn.14000a480
mov r8d, dword [rbp + 0x80]
test r8b, r8b
je 0x140001850
mov rcx, qword [rbp + 0x78]
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov ecx, dword [r12 + 0x10]
xor edx, edx
call sub.KERNEL32.dll_WaitForSingleObject
test eax, eax
je 0x1400019a9
mov rcx, qword [r13 + 0x10]
movaps xmmword [rbp + 0x40], xmm6
mov dword [rbp - sendto], 0x10
mov qword [rsp + 0x28], r15
mov qword [rsp + 0x20], rdi
mov rdx, qword [rbp + 0x30]
mov r8d, 0xffe3
xor r9d, r9d
call sub.WS2_32.dll_recvfrom
mov r14d, eax
cmp eax, 0xffffffff
je 0x1400019de
movzx eax, word [rbp + 0x42]
mov edx, dword [rbp + 0x44]
rol ax, 8
movsxd rcx, r14d
mov qword [rbp - 0x48], rcx
mov word [rbp + 0x10], 0
mov dword [rbp + 0x12], edx
mov word [rbp + 0x16], ax
cmp r14d, 0xffe4
jae 0x140001ad3
mov rcx, qword [rbp + 0x78]
call qword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
mov rax, qword [0x140034050]
mov rax, qword [rax]
shl rax, 1
test rax, rax
je 0x1400016c0
call fcn.140025cc0
mov r8d, eax
xor r8b, 1
movzx eax, byte [rsi + 0x18]
test al, al
je 0x1400016cf
jmp 0x140001a9d
xor r8d, r8d
movzx eax, byte [rsi + 0x18]
test al, al
jne 0x140001a9d
movzx eax, word [rbx]
cmp ax, 2
jne 0x140001770
mov dword [rbp + 0x80], r8d
cmp r14d, 9
jne 0x1400017f0
mov rcx, qword [rbp + 0x30]
movzx eax, byte [rcx + 8]
mov rcx, qword [rcx]
movabs rdx, 0x434e5550454c4f48
xor rcx, rdx
xor rax, 0x48
or rax, rcx
jne 0x1400017f0
lea rax, [rbp + 0x10]
mov qword [rbp - 0x10], rax
lea rax, [0x14001f0c0]
mov qword [rbp - 8], rax
lea rax, str.HOLEPUNCH_message_received_from__v
mov qword [rbp + 0x40], rax
mov qword [rbp + 0x48], 2
mov qword [rbp + 0x60], 0
mov qword [rbp + 0x50], r15
mov qword [rbp + 0x58], 1
mov rcx, rdi
call fcn.14000a480
movdqu xmm0, xmmword [rbp + 0x10]
movdqu xmm1, xmmword [rbp + 0x20]
movdqu xmmword [rbx + 0x10], xmm1
movdqu xmmword [rbx], xmm0
jmp 0x1400015f5
movzx ecx, word [rbp + 0x10]
lea rdx, [rbp + 0x12]
movdqu xmm0, xmmword [rdx]
movdqa xmmword [rbp + 0x40], xmm0
movzx edx, word [rdx + 0x10]
mov word [rbp + 0x50], dx
cmp cx, 2
je 0x1400015fc
cmp cx, ax
jne 0x1400015fc
test ax, ax
je 0x14000189f
movdqu xmm0, xmmword [rbp + 0x42]
movdqu xmm1, xmmword [rsi + 0x20]
pcmpeqb xmm1, xmm0
pmovmskb eax, xmm1
cmp eax, 0xffff
jne 0x1400015fc
movzx eax, word [rsi + 0x38]
cmp word [rbp + 0x2c], ax
jne 0x1400015fc
mov eax, dword [rbp + 0x24]
cmp eax, dword [rsi + 0x30]
jne 0x1400015fc
mov eax, dword [rbp + 0x28]
cmp eax, dword [rsi + 0x34]
jne 0x1400015fc
jmp 0x1400018b9
lea rax, [rbp + 0x10]
mov qword [rbp - 0x10], rax
lea rax, [0x14001f0c0]
mov qword [rbp - 8], rax
lea rax, str.Invalid_HOLEPUNCH_message_from
mov qword [rbp + 0x40], rax
mov qword [rbp + 0x48], 2
mov qword [rbp + 0x60], 0
mov qword [rbp + 0x50], r15
mov qword [rbp + 0x58], 1
mov rcx, rdi
call fcn.14000a480
cmp byte [rbp + 0x80], 0
je 0x14000187d
mov rcx, qword [rbp + 0x78]
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
jmp 0x14000160f
mov rax, qword [0x140034050]
mov rax, qword [rax]
shl rax, 1
test rax, rax
je 0x140001605
call fcn.140025cc0
test al, al
jne 0x140001605
mov byte [rsi + 0x18], 1
jmp 0x140001605
mov rax, qword [0x140034050]
mov rax, qword [rax]
shl rax, 1
test rax, rax
je 0x14000183b
call fcn.140025cc0
test al, al
jne 0x14000183b
mov byte [rsi + 0x18], 1
jmp 0x14000183b
mov eax, dword [rbp + 0x40]
cmp eax, dword [rsi + 0x1e]
jne 0x1400015fc
movzx eax, word [rbp + 0x44]
cmp ax, word [rsi + 0x22]
jne 0x1400015fc
mov dword [rbp + 0x80], r8d
cmp word [rbp + 0x3c], 0
jne 0x140001af7
mov rcx, qword [r13 + 0x10]
mov word [rbp - 0x10], 2
movzx eax, word [rbp + 0x3e]
mov word [rbp - 0xe], ax
mov eax, dword [rbp - 0x14]
mov dword [rbp - 0xc], eax
mov qword [rbp - 8], 0
mov qword [rsp + 0x20], r15
mov dword [rsp + 0x28], sendto
mov rdx, qword [rbp + 0x30]
mov r8d, r14d
xor r9d, r9d
call sub.WS2_32.dll_sendto
cmp eax, 0xffffffff
jne 0x1400015a0
mov edx, sendto
lea rcx, [0x1400274ce]
call fcn.14001c2c0
test rax, rax
je 0x1400015a0
mov qword [rbp - 0x28], rax
mov qword [rbp - 0x20], rdx
lea rax, [rbp - 0x28]
mov qword [rbp - 0x10], rax
lea rax, [0x140002fe0]
mov qword [rbp - 8], rax
lea rax, str.Failed_to_send_data:
mov qword [rbp + 0x40], rax
mov qword [rbp + 0x48], 2
mov qword [rbp + 0x60], 0
mov qword [rbp + 0x50], r15
mov qword [rbp + 0x58], 1
mov rcx, rdi
call fcn.14000a5e0
mov rcx, qword [rbp - 0x28]
mov rax, qword [rbp - 0x20]
mov qword [rbp - 0x30], rcx
mov qword [rbp - 0x38], rax
call qword [rax]
mov rax, qword [rbp - 0x38]
mov rdx, qword [rax + 8]
test rdx, rdx
je 0x1400015f5
mov r8, qword [rax + 0x10]
mov rcx, qword [rbp - 0x30]
call fcn.140004e20
jmp 0x1400015f5
lea rax, [0x1400275a8]
mov qword [rbp + 0x40], rax
mov qword [rbp + 0x48], 1
lea rax, [0x140027400]
mov qword [rbp + 0x50], rax
pxor xmm0, xmm0
movdqu xmmword [rbp + 0x58], xmm0
lea rcx, [rbp + 0x40]
call fcn.14000a480
jmp 0x140001a6c
lea rcx, [0x1400274b8]
mov edx, socket
call fcn.14001c2c0
mov qword [rbp + 0x10], rax
mov qword [rbp + 0x18], rdx
lea rax, [rbp + 0x10]
mov qword [rbp - 0x10], rax
lea rax, [0x140002fe0]
mov qword [rbp - 8], rax
lea rax, str.Failed_to_receive_data:__n
mov qword [rbp + 0x40], rax
mov qword [rbp + 0x48], 2
mov qword [rbp + 0x60], 0
mov qword [rbp + 0x50], r15
mov qword [rbp + 0x58], 1
lea rcx, [rbp + 0x40]
call fcn.14000a5e0
mov rcx, qword [rbp + 0x10]
mov rax, qword [rbp + 0x18]
mov qword [rbp + 0x80], rcx
mov qword [rbp + 0x78], rax
call qword [rax]
mov rax, qword [rbp + 0x78]
mov rdx, qword [rax + 8]
test rdx, rdx
je 0x140001a6c
mov r8, qword [rax + 0x10]
mov rcx, qword [rbp + 0x80]
call fcn.140004e20
mov edx, 0xffe3
mov r8d, 1
mov rcx, qword [rbp + 0x30]
call fcn.140004e20
xor eax, eax
movaps xmm6, xmmword [rbp + 0x90]
add rsp, 0x128
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
mov rax, qword [rbp + 0x78]
mov qword [rbp + 0x40], rax
mov byte [rbp + 0x48], r8b
lea rax, str.src_Relay_relay.rs
mov qword [rsp + 0x20], rax
lea rcx, [0x140027400]
lea r9, fcn.140001050
lea r8, [rbp + 0x40]
mov edx, 0x2b
call fcn.1400268f0
jmp 0x140001b2e
lea r8, str.src_Relay_relay.rs
mov edx, 0xffe3
call fcn.140026a10
jmp 0x140001b2e
mov ecx, 1
mov edx, 0xffe3
call fcn.1400264a0
ud2
lea rax, [0x140027508]
mov qword [rbp + 0x40], rax
mov qword [rbp + 0x48], 1
lea rax, [0x140027400]
mov qword [rbp + 0x50], rax
pxor xmm0, xmm0
movdqu xmmword [rbp + 0x58], xmm0
lea rdx, str.src_Relay_relay.rs
lea rcx, [rbp + 0x40]
call fcn.140026520
ud2