Function at 0x140001210
Capabilities:
Create udp socket
Encode data using base64
Encrypt data using salsa20 or chacha
Initialize winsock library
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, 0x328
lea rbp, [rsp + 0x80]
vmovaps xmmword [rbp + 0x290], xmm6
mov qword [rbp + 0x288], 0xfffffffffffffffe
test ecx, ecx
jle 0x140001276
lea rbx, [0x1400233f0]
mov rsi, rdx
mov r14d, ecx
xor edi, edi
nop word cs:[rax + rax]
mov r8, qword [rsi + rdi*8]
mov rcx, rbx
mov edx, edi
call fcn.140001df0
inc rdi
cmp r14, rdi
jne 0x140001260
lea rcx, [0x140037bc0]
lea rdx, [0x140037be0]
call fcn.1400095c0
vpxor xmm0, xmm0, xmm0
vmovdqa xmmword [rbp - 0x50], xmm0
mov qword [rbp - 0x40], 0
mov qword [rbp - 0x38], recvfrom
lea rsi, [rbp - 0x50]
mov edx, 0x2c
mov r9d, 0x2c
mov byte [rsp + 0x20], 0
mov rcx, rsi
call fcn.140002340
cmp qword [rbp - 0x38], 0x10
mov rax, rsi
jb 0x1400012cc
mov rax, qword [rbp - 0x50]
movzx edx, byte [0x140037bc0]
lea rcx, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_
shr edx, 2
movzx edx, byte [rdx + rcx]
mov byte [rax], dl
mov edx, dword [0x140037bc0]
movzx r8d, byte [0x140037bc1]
shl edx, 4
shr r8d, 4
and edx, 0x30
or r8d, edx
movzx edx, byte [r8 + rcx]
mov byte [rax + 1], dl
movzx edx, byte [0x140037bc1]
movzx r8d, byte [0x140037bc2]
and edx, 0xf
shr r8d, 6
lea edx, [r8 + rdx*4]
movzx edx, byte [rdx + rcx]
mov byte [rax + 2], dl
movzx edx, byte [0x140037bc2]
and edx, 0x3f
movzx edx, byte [rdx + rcx]
mov byte [rax + 3], dl
movzx edx, byte [0x140037bc3]
mov r8d, edx
shr r8d, 2
shl edx, 4
movzx r8d, byte [r8 + rcx]
and edx, 0x30
mov byte [rax + 4], r8b
movzx r8d, byte [0x140037bc4]
mov r9d, r8d
shr r9d, 4
and r8d, 0xf
or r9d, edx
movzx edx, byte [r9 + rcx]
mov byte [rax + 5], dl
movzx edx, byte [0x140037bc5]
mov r9d, edx
shr r9d, 6
and edx, 0x3f
lea r8d, [r9 + r8*4]
movzx r8d, byte [r8 + rcx]
mov byte [rax + 6], r8b
movzx edx, byte [rdx + rcx]
mov byte [rax + 7], dl
movzx edx, byte [0x140037bc6]
mov r8d, edx
shr r8d, 2
shl edx, 4
movzx r8d, byte [r8 + rcx]
and edx, 0x30
mov byte [rax + 8], r8b
movzx r8d, byte [0x140037bc7]
mov r9d, r8d
shr r9d, 4
and r8d, 0xf
or r9d, edx
movzx edx, byte [r9 + rcx]
mov byte [rax + 9], dl
movzx edx, byte [0x140037bc8]
mov r9d, edx
shr r9d, 6
and edx, 0x3f
lea r8d, [r9 + r8*4]
movzx r8d, byte [r8 + rcx]
mov byte [rax + 0xa], r8b
movzx edx, byte [rdx + rcx]
mov byte [rax + 0xb], dl
movzx edx, byte [0x140037bc9]
mov r8d, edx
shr r8d, 2
shl edx, 4
movzx r8d, byte [r8 + rcx]
and edx, 0x30
mov byte [rax + 0xc], r8b
movzx r8d, byte [0x140037bca]
mov r9d, r8d
shr r9d, 4
and r8d, 0xf
or r9d, edx
movzx edx, byte [r9 + rcx]
mov byte [rax + 0xd], dl
movzx edx, byte [0x140037bcb]
mov r9d, edx
shr r9d, 6
and edx, 0x3f
lea r8d, [r9 + r8*4]
movzx r8d, byte [r8 + rcx]
mov byte [rax + 0xe], r8b
movzx edx, byte [rdx + rcx]
mov byte [rax + 0xf], dl
movzx edx, byte [0x140037bcc]
mov r8d, edx
shr r8d, 2
shl edx, 4
movzx r8d, byte [r8 + rcx]
and edx, 0x30
mov byte [rax + 0x10], r8b
movzx r8d, byte [0x140037bcd]
mov r9d, r8d
shr r9d, 4
and r8d, 0xf
or r9d, edx
movzx edx, byte [r9 + rcx]
mov byte [rax + 0x11], dl
movzx edx, byte [0x140037bce]
mov r9d, edx
shr r9d, 6
and edx, 0x3f
lea r8d, [r9 + r8*4]
movzx r8d, byte [r8 + rcx]
mov byte [rax + 0x12], r8b
movzx edx, byte [rdx + rcx]
mov byte [rax + 0x13], dl
movzx edx, byte [0x140037bcf]
mov r8d, edx
shr r8d, 2
shl edx, 4
movzx r8d, byte [r8 + rcx]
and edx, 0x30
mov byte [rax + 0x14], r8b
movzx r8d, byte [0x140037bd0]
mov r9d, r8d
shr r9d, 4
and r8d, 0xf
or r9d, edx
movzx edx, byte [r9 + rcx]
mov byte [rax + 0x15], dl
movzx edx, byte [0x140037bd1]
mov r9d, edx
shr r9d, 6
and edx, 0x3f
lea r8d, [r9 + r8*4]
movzx r8d, byte [r8 + rcx]
mov byte [rax + 0x16], r8b
movzx edx, byte [rdx + rcx]
mov byte [rax + 0x17], dl
movzx edx, byte [0x140037bd2]
mov r8d, edx
shr r8d, 2
shl edx, 4
movzx r8d, byte [r8 + rcx]
and edx, 0x30
mov byte [rax + 0x18], r8b
movzx r8d, byte [0x140037bd3]
mov r9d, r8d
shr r9d, 4
and r8d, 0xf
or r9d, edx
movzx edx, byte [r9 + rcx]
mov byte [rax + 0x19], dl
movzx edx, byte [0x140037bd4]
mov r9d, edx
shr r9d, 6
and edx, 0x3f
lea r8d, [r9 + r8*4]
movzx r8d, byte [r8 + rcx]
mov byte [rax + 0x1a], r8b
movzx edx, byte [rdx + rcx]
mov byte [rax + 0x1b], dl
movzx edx, byte [0x140037bd5]
mov r8d, edx
shr r8d, 2
shl edx, 4
movzx r8d, byte [r8 + rcx]
and edx, 0x30
mov byte [rax + 0x1c], r8b
movzx r8d, byte [0x140037bd6]
shr r8d, 4
or r8d, edx
movzx edx, byte [r8 + rcx]
mov byte [rax + 0x1d], dl
movzx edx, byte [0x140037bd6]
movzx r8d, byte [0x140037bd7]
and edx, 0xf
shr r8d, 6
lea edx, [r8 + rdx*4]
movzx edx, byte [rdx + rcx]
mov byte [rax + 0x1e], dl
movzx edx, byte [0x140037bd7]
and edx, 0x3f
movzx edx, byte [rdx + rcx]
mov byte [rax + 0x1f], dl
movzx edx, byte [0x140037bd8]
mov r8d, edx
shr r8d, 2
shl edx, 4
movzx r8d, byte [r8 + rcx]
and edx, 0x30
mov byte [rax + 0x20], r8b
movzx r8d, byte [0x140037bd9]
shr r8d, 4
or r8d, edx
movzx edx, byte [r8 + rcx]
mov byte [rax + 0x21], dl
movzx edx, byte [0x140037bd9]
movzx r8d, byte [0x140037bda]
and edx, 0xf
shr r8d, 6
lea edx, [r8 + rdx*4]
movzx edx, byte [rdx + rcx]
mov byte [rax + 0x22], dl
movzx edx, byte [0x140037bda]
and edx, 0x3f
movzx edx, byte [rdx + rcx]
mov byte [rax + 0x23], dl
movzx edx, byte [0x140037bdb]
shr edx, 2
movzx edx, byte [rdx + rcx]
mov byte [rax + 0x24], dl
movzx edx, byte [0x140037bdb]
movzx r8d, byte [0x140037bdc]
shl edx, 4
shr r8d, 4
and edx, 0x30
or r8d, edx
movzx edx, byte [r8 + rcx]
mov byte [rax + 0x25], dl
mov edx, dword [0x140037bdc]
movzx r8d, byte [0x140037bdd]
and edx, 0xf
shr r8d, 6
lea edx, [r8 + rdx*4]
movzx edx, byte [rdx + rcx]
mov byte [rax + 0x26], dl
movzx edx, byte [0x140037bdd]
and edx, 0x3f
movzx edx, byte [rdx + rcx]
mov byte [rax + 0x27], dl
movzx edx, byte [0x140037bde]
shr edx, 2
movzx edx, byte [rdx + rcx]
mov byte [rax + 0x28], dl
movzx edx, byte [0x140037bde]
movzx r8d, byte [0x140037bdf]
shl edx, 4
shr r8d, 4
and edx, 0x30
or r8d, edx
movzx edx, byte [r8 + rcx]
mov byte [rax + 0x29], dl
movzx edx, byte [0x140037bdf]
and edx, 0xf
movzx ecx, byte [rcx + rdx*4]
mov byte [rax + 0x2a], cl
mov byte [rax + 0x2b], 0x3d
cmp qword [rbp - 0x38], 0x10
jb 0x1400016ff
mov rsi, qword [rbp - 0x50]
lea rcx, str.Server_public_key:__s_n
mov rdx, rsi
call fcn.140001df0
mov rax, qword [rbp - 0x38]
cmp rax, 0x10
jb 0x14000174d
mov rcx, qword [rbp - 0x50]
lea rdx, [rax + 1]
cmp rdx, 0x1000
jb 0x140001748
mov r8, qword [rcx - 8]
add rcx, 0xfffffffffffffff8
sub rcx, r8
cmp rcx, 0x20
jae 0x140001cfd
add rax, 0x28
mov rcx, r8
mov rdx, rax
call fcn.14000d090
lea rdx, [rbp - 0x50]
mov cx, 0x202
call qword [sym.imp.WS2_32.dll_WSAStartup]
test eax, eax
je 0x140001780
vmovaps xmm6, xmmword [rbp + 0x290]
mov eax, 1
add rsp, 0x328
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
mov ecx, 2
mov edx, 2
mov r8d, reloc.WS2_32.dll_recvfrom
call qword [sym.imp.WS2_32.dll_socket]
cmp rax, 0xffffffffffffffff
je 0x14000175f
mov cx, 0xc353
mov word [rbp + 0x274], 2
mov rsi, rax
mov dword [rbp + 0x278], 0
call qword [sym.imp.WS2_32.dll_htons]
lea rdx, [rbp + 0x274]
mov r8d, recvfrom
mov rcx, rsi
mov word [rbp + 0x276], ax
call qword [sym.imp.WS2_32.dll_bind]
cmp eax, 0xffffffff
je 0x14000175f
lea rcx, str.Server_available_on_port_50003
call fcn.140010aec
vmovaps xmm6, xmmword [str.expand_32_byte_k]
mov r15, qword [sym.imp.WS2_32.dll_recvfrom]
lea r13, [rbp + 0x284]
lea r14, [rbp + 0x150]
lea rdi, [0x140037c20]
jmp 0x140001872
lea rcx, [0x140057bf8]
lea r8, [rbp + 0x1a0]
vzeroupper
call fcn.140001ee0
vmovdqu ymm0, ymmword [0x140037bc0]
movabs rax, 0x527aded13e9b2c45
mov qword [rsp + 0x20], r14
mov rcx, rsi
lea rdx, [0x140047c10]
mov r8d, 0x28
mov qword [0x140047c10], rax
mov eax, dword [rbp + 0x284]
mov dword [rsp + 0x28], eax
vmovdqu ymmword [0x140047c18], ymm0
xor r9d, r9d
vzeroupper
call qword [sym.imp.WS2_32.dll_sendto]
mov r8d, 0xffe3
mov dword [rbp + 0x284], socket
mov qword [rsp + 0x28], r13
mov qword [rsp + 0x20], r14
mov rcx, rsi
mov rdx, rdi
xor r9d, r9d
vzeroupper
call r15
lea ecx, [rax + 1]
cmp ecx, 0x21
jb 0x140001872
mov rcx, qword [0x140057c00]
cmp eax, 0x28
jne 0x1400019e0
movabs rdx, 0x527aded13e9b2c45
cmp qword [0x140037c20], rdx
jne 0x1400019e0
mov rax, qword [0x140057bf8]
cmp rax, rcx
je 0x140001900
nop word cs:[rax + rax]
vmovdqu ymm0, ymmword [rax]
vpxor ymm0, ymm0, ymmword [0x140037c28]
vptest ymm0, ymm0
je 0x140001826
add rax, 0x54
cmp rax, rcx
jne 0x1400018e0
lea rbx, [rbp + 0x160]
lea rdx, [0x140037c28]
lea r8, [0x140037be0]
mov rcx, rbx
vzeroupper
call fcn.140009320
lea r12, [rbp + 0x1a0]
mov rcx, r12
call fcn.14000bb90
mov r8d, 0x20
mov rcx, r12
mov rdx, rbx
call fcn.14000c8f0
test al, al
je 0x140001957
lea rcx, [rbp + 0x1a0]
lea rdx, [rbp + 0x160]
call fcn.14000cad0
vmovdqu ymm0, ymmword [0x140037c28]
vmovups ymm2, ymmword [rbp + 0x160]
vmovups ymm1, ymmword [rbp + 0x174]
mov rdx, qword [0x140057c00]
lea rax, [rbp + 0x1c0]
vmovdqu ymmword [rbp + 0x1a0], ymm0
vmovups ymmword [rax + 0x14], ymm1
vmovups ymmword [rax], ymm2
cmp rdx, qword [0x140057c08]
je 0x140001810
vmovdqu ymm0, ymmword [rbp + 0x1a0]
vmovups ymm1, ymmword [rbp + 0x1c0]
vmovups ymm2, ymmword [rbp + 0x1d4]
vmovups ymmword [rdx + 0x34], ymm2
vmovups ymmword [rdx + 0x20], ymm1
vmovdqu ymmword [rdx], ymm0
add rdx, 0x54
mov qword [0x140057c00], rdx
jmp 0x140001826
cmp eax, 0x28
mov r8d, 0
mov rdx, rdi
cmove rdx, r8
mov r8, qword [0x140057bf8]
sub rcx, r8
je 0x140001872
sar rcx, 2
movabs r9, 0xcf3cf3cf3cf3cf3d
movsxd rbx, eax
mov r12, r8
imul rcx, r9
cmp rcx, 1
adc rcx, 0
vmovdqu ymm0, ymmword [r12]
vpxor ymm0, ymm0, ymmword [rdx]
vptest ymm0, ymm0
je 0x140001a3f
add r12, 0x54
dec rcx
jne 0x140001a20
jmp 0x140001872
test r8, r8
je 0x140001872
lea rax, [rbx - 0x21]
cmp rax, 0xffc2
ja 0x140001b26
add rbx, 0xffffffffffffffe0
lea rcx, [0x140047c10]
lea rdx, [0x140037c40]
mov r8, rbx
vzeroupper
call fcn.1400210b0
mov rax, qword [r12 + 0x4c]
vmovups xmmword [rbp + 0x1e8], xmm6
lea rdx, [0x140047c10]
mov r8, rbx
mov ecx, dword [r12 + 0x20]
mov dword [rbp + 0x1f8], ecx
mov ecx, dword [r12 + 0x24]
mov dword [rbp + 0x1fc], ecx
mov ecx, dword [r12 + 0x28]
mov dword [rbp + 0x200], ecx
mov ecx, dword [r12 + 0x2c]
mov dword [rbp + 0x204], ecx
mov ecx, dword [r12 + 0x30]
mov dword [rbp + 0x208], ecx
mov ecx, dword [r12 + 0x34]
mov dword [rbp + 0x20c], ecx
mov ecx, dword [r12 + 0x38]
mov dword [rbp + 0x210], ecx
mov ecx, dword [r12 + 0x3c]
mov dword [rbp + 0x214], ecx
mov dword [rbp + 0x218], eax
shr rax, 0x20
lea rcx, [rbp + 0x1a0]
add eax, dword [r12 + 0x40]
mov dword [rbp + 0x21c], eax
mov eax, dword [r12 + 0x44]
mov dword [rbp + 0x220], eax
mov eax, dword [r12 + 0x48]
mov dword [rbp + 0x224], eax
mov qword [rbp + 0x1e0], 0x40
call fcn.140002500
vzeroupper
call fcn.14000dcec
mov rbx, rax
call fcn.14000dcd0
cmp rbx, 0x989680
jne 0x140001c79
imul rax, rax, 0x64
movabs rcx, 0x431bde82d7b634db
imul rcx
lea rcx, str.Received_:_time0__lld__time1__lld__up__lldms_n
mov r8, rdx
shr r8, 0x3f
sar rdx, 0x12
add r8, rdx
mov qword [0x140047c18], r8
mov r9, r8
mov rdx, qword [0x140047c10]
sub r9, rdx
call fcn.140001df0
vmovdqu ymm0, ymmword [0x140037bc0]
vmovaps xmm1, xmmword [0x140047c10]
mov r8d, recvfrom
lea rdx, [0x140037c40]
vmovdqu ymmword [0x140037c20], ymm0
vmovaps xmmword [0x140037c40], xmm1
mov rax, qword [r12 + 0x4c]
vmovups xmmword [rbp + 0x1e8], xmm6
mov ecx, dword [r12 + 0x20]
mov dword [rbp + 0x1f8], ecx
mov ecx, dword [r12 + 0x24]
mov dword [rbp + 0x1fc], ecx
mov ecx, dword [r12 + 0x28]
mov dword [rbp + 0x200], ecx
mov ecx, dword [r12 + 0x2c]
mov dword [rbp + 0x204], ecx
mov ecx, dword [r12 + 0x30]
mov dword [rbp + 0x208], ecx
mov ecx, dword [r12 + 0x34]
mov dword [rbp + 0x20c], ecx
mov ecx, dword [r12 + 0x38]
mov dword [rbp + 0x210], ecx
mov ecx, dword [r12 + 0x3c]
mov dword [rbp + 0x214], ecx
mov dword [rbp + 0x218], eax
shr rax, 0x20
lea rcx, [rbp + 0x1a0]
add eax, dword [r12 + 0x40]
mov dword [rbp + 0x21c], eax
mov eax, dword [r12 + 0x44]
mov dword [rbp + 0x220], eax
mov eax, dword [r12 + 0x48]
mov dword [rbp + 0x224], eax
mov qword [rbp + 0x1e0], 0x40
vzeroupper
call fcn.140002500
mov eax, dword [rbp + 0x284]
mov r8d, 0x30
mov qword [rsp + 0x20], r14
mov rcx, rsi
mov rdx, rdi
mov dword [rsp + 0x28], eax
jmp 0x140001866
cmp rbx, 0x16e3600
jne 0x140001cdd
movabs r9, 0xb2f4fc0794908cf3
mov rcx, rax
imul r9
add rdx, rcx
mov rax, rdx
shr rax, 0x3f
sar rdx, 0x18
add rdx, rax
imul rax, rdx, 0x16e3600
imul r8, rdx, 0x3b9aca00
sub rcx, rax
imul rcx, rcx, 0x3b9aca00
mov rax, rcx
imul r9
mov rax, rdx
add rax, rcx
mov rcx, rax
shr rcx, 0x3f
sar rax, 0x18
add rax, rcx
add rax, r8
jmp 0x140001b47
cqo
idiv rbx
imul rcx, rax, 0x3b9aca00
imul rax, rdx, 0x3b9aca00
cqo
idiv rbx
add rax, rcx
jmp 0x140001b47
call fcn.14001098c
int3