Function at 0x140aa7ce4
Capabilities:
Encode data using xor

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rsi
mov qword [rax + 0x20], rdi
mov dword [rax + 0x18], r8d
push rbp
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x60
mov rsi, r9
mov eax, r8d
mov r12, rdx
mov rdi, rcx
mov r15, qword [rbp + 0x50]
mov r14, qword [r15]
xor r13d, r13d
test r14, r14
jne 0x140aa7d33
lea edx, [r14 + 6]
mov rcx, r12
call fcn.140194bd4
jmp 0x140aa7f51
cmp eax, 8
jge 0x140aa7d3f
mov edx, 7
jmp 0x140aa7d26
mov rdx, qword [r9 + 0x10]
cmp rdx, 0x7d
jbe 0x140aa7d50
mov edx, 8
jmp 0x140aa7d26
mov bl, byte [rcx + 9]
and al, 0xf
mov ecx, 0x80
or al, cl
mov byte [rbp - 0x40], al
movzx eax, r13b
test bl, bl
cmove eax, ecx
or al, dl
mov byte [rbp - 0x3f], al
add r14, 0x50
lea r13, [r14 + 0x18]
cmp rdx, qword [r14 + 0x10]
ja 0x140aa7d92
mov qword [r14 + 0x10], rdx
mov rax, r14
cmp qword [r13], 0xf
jbe 0x140aa7d8c
mov rax, qword [r14]
mov byte [rax + rdx], 0
jmp 0x140aa7da1
sub rdx, qword [r14 + 0x10]
xor r8d, r8d
mov rcx, r14
call fcn.140162a20
test bl, bl
jne 0x140aa7e87
mov rcx, qword [rdi + 0x98]
call fcn.140aa8378
mov ebx, eax
xor eax, eax
mov qword [rbp - 0x38], rax
mov dword [rbp - 0x30], eax
mov rdx, qword [rsi + 0x10]
lea rcx, [rbp - 0x38]
call fcn.14019342c
movsxd rcx, eax
mov dword [rbp + rcx - 0x38], ebx
mov rdi, qword [r15]
lea r8, [rbp - 0x38]
lea rdx, [rbp - 0x40]
lea rcx, [rbp - 0x28]
call fcn.1401934ec
nop
lea rcx, [rdi + 0x10]
mov rdx, rax
call fcn.140155f5c
nop
mov rdx, qword [rbp - 0x10]
cmp rdx, 0xf
jbe 0x140aa7e31
inc rdx
mov rcx, qword [rbp - 0x28]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140aa7e2c
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140aa7fab
call fcn.140cba258
mov dword [rbp + 0x50], ebx
cmp qword [r13], 0xf
jbe 0x140aa7e3e
mov r14, qword [r14]
mov rcx, rsi
cmp qword [rsi + 0x18], 0xf
jbe 0x140aa7e4b
mov rcx, qword [rsi]
mov rax, qword [rsi + 0x10]
add rax, rcx
cmp qword [rsi + 0x18], 0xf
jbe 0x140aa7e5c
mov rsi, qword [rsi]
xor edx, edx
cmp rsi, rax
je 0x140aa7f30
sub r14, rsi
mov cl, byte [rbp + rdx + 0x50]
xor cl, byte [rsi]
mov byte [r14 + rsi], cl
inc rdx
and edx, 3
inc rsi
cmp rsi, rax
jne 0x140aa7e6a
jmp 0x140aa7f30
xor eax, eax
mov qword [rbp - 0x38], rax
mov dword [rbp - 0x30], eax
mov rdx, qword [rsi + 0x10]
lea rcx, [rbp - 0x38]
call fcn.14019342c
mov rbx, qword [r15]
lea r8, [rbp - 0x38]
lea rdx, [rbp - 0x40]
lea rcx, [rbp - 0x28]
call fcn.1401934ec
nop
lea rcx, [rbx + 0x10]
mov rdx, rax
call fcn.140155f5c
nop
mov rdx, qword [rbp - 0x10]
cmp rdx, 0xf
jbe 0x140aa7efa
inc rdx
mov rcx, qword [rbp - 0x28]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140aa7ef5
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140aa7fa5
call fcn.140cba258
cmp qword [r13], 0xf
jbe 0x140aa7f04
mov r14, qword [r14]
mov rcx, rsi
cmp qword [rsi + 0x18], 0xf
jbe 0x140aa7f11
mov rcx, qword [rsi]
mov r8, qword [rsi + 0x10]
add r8, rcx
cmp qword [rsi + 0x18], 0xf
jbe 0x140aa7f22
mov rsi, qword [rsi]
sub r8, rsi
mov rdx, rsi
mov rcx, r14
call fcn.140cfb740
mov rax, qword [r15]
mov ecx, dword [rbp + 0x40]
mov dword [rax + 0x70], ecx
mov rax, qword [r15]
mov byte [rax + 0x74], 1
and dword [r12], 0
lea rax, [0x140f4cfc0]
mov qword [r12 + 8], rax
mov rdi, qword [r15 + 8]
test rdi, rdi
je 0x140aa7f84
or ebx, 0xffffffff
mov eax, ebx
lock xadd dword [rdi + 8], eax
add eax, ebx
jne 0x140aa7f84
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax]
mov eax, ebx
lock xadd dword [rdi + 0xc], eax
add eax, ebx
jne 0x140aa7f84
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + reloc.WS2_32.dll_htonl]
mov rax, r12
lea r11, [rsp + 0x60]
mov rbx, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x38]
mov rdi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret
call fcn.140cd6fcc
nop
call fcn.140cd6fcc
int3