Function at 0x1402d3050
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x20], rbx
mov dword [rsp + 0x10], edx
push rsi
push rdi
push r12
push r14
push r15
sub rsp, 0x50
mov r14d, dword [rsp + 0xa0]
xor r12d, r12d
movsxd rbx, r9d
mov rdi, r8
mov rsi, rcx
mov r15d, r12d
test edx, edx
jle 0x1402d349a
test r9d, r9d
jle 0x1402d349a
cmp ebx, r14d
jg 0x1402d347d
cmp r14d, 0xb
jl 0x1402d347d
mov qword [rsp + 0x80], rbp
lea rdx, [0x14042f6d5]
movsxd rbp, r14d
xor r8d, r8d
mov rcx, rbp
mov qword [rsp + 0x40], rbp
call fcn.1401d4a50
mov r10, rax
test rax, rax
jne 0x1402d3108
lea r9, [0x14042f6d5]
mov dword [rsp + 0x20], r12d
lea edx, [rax + 0x72]
lea ecx, [rax + 4]
lea r8d, [r12 + 0x41]
call fcn.1401f3210
lea eax, [r12 - 1]
mov rbp, qword [rsp + 0x80]
mov rbx, qword [rsp + 0x98]
add rsp, 0x50
pop r15
pop r14
pop r12
pop rdi
pop rsi
ret
add rdi, rbx
mov qword [rsp + 0x90], r13
add r10, rbp
mov rdx, r14
nop dword [rax]
mov eax, ebx
lea ecx, [rbx - 1]
not eax
shr ecx, 0x1f
shr eax, 0x1f
mov r8, r10
and ecx, eax
dec r10
dec ecx
mov eax, ecx
and eax, 1
sub ebx, eax
mov eax, ecx
and eax, 1
sub rdi, rax
movzx eax, byte [rdi]
and al, cl
mov byte [r10], al
sub rdx, 1
jne 0x1402d3120
movzx ebp, byte [r8]
lea r11d, [rdx + 2]
xor ebp, 2
movzx eax, al
dec ebp
lea rbx, [r10 + 2]
dec eax
shr ebp, 0x1f
shr eax, 0x1f
neg ebp
neg eax
xor r9d, r9d
and ebp, eax
mov r8d, 0xffffffff
mov dword [rsp + 0x30], ebp
mov r12d, ebp
not r12d
mov dword [rsp + 0x34], r12d
mov eax, dword [rsp + 0x30]
mov r13d, dword [rsp + 0x34]
and r13d, 0x6b
xor edi, edi
nop dword [rax]
movzx edx, byte [rbx]
lea rbx, [rbx + 1]
dec edx
shr edx, 0x1f
neg edx
and r8d, edx
or r9d, edx
mov dword [rsp + 0x34], r8d
not r8d
mov dword [rsp + 0x30], r8d
mov r8d, r9d
mov ecx, dword [rsp + 0x34]
not r8d
mov eax, dword [rsp + 0x30]
and ecx, r11d
and r15d, eax
inc r11d
or r15d, ecx
mov eax, r8d
movzx ecx, byte [rbx - 1]
and eax, 1
xor ecx, 3
add eax, edi
dec ecx
shr ecx, 0x1f
neg ecx
or ecx, r9d
mov edi, ecx
and edi, eax
cmp r11d, r14d
jl 0x1402d31a0
mov r9d, dword [rsp + 0x88]
lea eax, [r15 - 0xa]
or eax, r15d
mov r11d, 1
xor eax, r15d
shr eax, 0x1f
dec eax
and ebp, eax
mov eax, ebp
mov ecx, ebp
or eax, r12d
not ecx
mov dword [rsp + 0x34], eax
mov r12d, r14d
not eax
sub r12d, r15d
mov dword [rsp + 0x30], eax
dec r12d
mov eax, dword [rsp + 0x34]
mov edx, dword [rsp + 0x30]
and eax, r13d
and edx, 0x71
lea r13d, [r14 - 0xb]
or edx, eax
lea eax, [rdi - 8]
or eax, edi
xor eax, edi
shr eax, 0x1f
neg eax
and ebp, eax
mov eax, ebp
or eax, ecx
mov ecx, r9d
mov dword [rsp + 0x34], eax
sub ecx, r12d
xor ecx, r12d
not eax
mov dword [rsp + 0x30], eax
mov eax, dword [rsp + 0x34]
mov r8d, dword [rsp + 0x30]
and eax, edx
and r8d, 0x73
mov edx, ebp
or r8d, eax
not edx
mov eax, r12d
xor eax, r9d
or ecx, eax
xor ecx, r9d
shr ecx, 0x1f
dec ecx
and ebp, ecx
mov ecx, r13d
sub ecx, r9d
mov eax, ebp
or eax, edx
xor ecx, r9d
mov dword [rsp + 0x88], eax
not eax
mov dword [rsp + 0x34], eax
mov eax, dword [rsp + 0x88]
mov r15d, dword [rsp + 0x34]
and eax, r8d
and r15d, 0x6d
or r15d, eax
mov eax, r13d
xor eax, r9d
mov dword [rsp + 0x38], r15d
or ecx, eax
xor ecx, r13d
shr ecx, 0x1f
neg ecx
mov dword [rsp + 0x88], ecx
not ecx
mov dword [rsp + 0x34], ecx
mov eax, dword [rsp + 0x88]
mov ecx, dword [rsp + 0x34]
and eax, r13d
and ecx, r9d
or ecx, eax
mov dword [rsp + 0x30], ecx
cmp r13d, r11d
jle 0x1402d33a1
mov r15d, r14d
sub r15d, r12d
add r15d, 0xfffffff5
nop word [rax + rax]
mov eax, r15d
and eax, r11d
lea ecx, [rax - 1]
not eax
shr eax, 0x1f
shr ecx, 0x1f
and ecx, eax
mov eax, r14d
sub eax, r11d
dec ecx
movsxd r8, eax
cmp r8, 0xb
jle 0x1402d3390
movzx ebx, cl
lea rax, [r10 + 0xb]
mov r9d, ebx
movsxd rdi, r11d
not r9d
add r8, 0xfffffffffffffff5
nop dword [rax + rax]
mov dword [rsp + 0x88], ebx
lea rax, [rax + 1]
mov dword [rsp + 0x34], r9d
mov ecx, dword [rsp + 0x88]
movzx edx, byte [rdi + rax - 1]
and dl, cl
mov ecx, dword [rsp + 0x34]
and cl, byte [rax - 1]
or cl, dl
mov byte [rax - 1], cl
sub r8, 1
jne 0x1402d3360
add r11d, r11d
cmp r11d, r13d
jl 0x1402d3320
mov ecx, dword [rsp + 0x30]
mov r15d, dword [rsp + 0x38]
mov r13, qword [rsp + 0x90]
xor r9d, r9d
movsxd rbx, ecx
test ecx, ecx
jle 0x1402d341b
mov r11d, r12d
mov rdi, r10
shr r11d, 0x1f
sub rdi, rsi
mov edx, r9d
lea rsi, [rsi + 1]
sub edx, r12d
mov ecx, r9d
shr ecx, 0x1f
movzx eax, r11b
xor al, cl
shr edx, 0x1f
xor dl, r11b
inc r9d
or dl, al
movzx eax, bpl
xor dl, cl
neg dl
movzx ecx, dl
and ecx, eax
mov dword [rsp + 0x88], ecx
not ecx
mov dword [rsp + 0x38], ecx
mov eax, dword [rsp + 0x88]
movzx ecx, byte [rdi + rsi + 0xa]
and cl, al
mov eax, dword [rsp + 0x38]
and al, byte [rsi - 1]
or al, cl
mov byte [rsi - 1], al
sub rbx, 1
jne 0x1402d33c0
mov rdx, qword [rsp + 0x40]
lea r8, [0x14042f6d5]
xor r9d, r9d
mov rcx, r10
call fcn.1401d4c20
mov edx, WSACleanup
mov dword [rsp + 0x20], 0
lea r9, [0x14042f6d5]
mov r8d, r15d
lea ecx, [rdx - 0x6e]
call fcn.1401f3210
mov ecx, ebp
and ecx, 1
call fcn.1401f4060
mov dword [rsp + 0x88], ebp
not ebp
mov dword [rsp + 0x38], ebp
mov ecx, dword [rsp + 0x88]
mov eax, dword [rsp + 0x38]
and ecx, r12d
or eax, ecx
jmp 0x1402d30eb
mov edx, WSACleanup
mov dword [rsp + 0x20], r12d
lea r9, [0x14042f6d5]
lea ecx, [rdx - 0x6e]
lea r8d, [rdx - 3]
call fcn.1401f3210
mov eax, 0xffffffff
jmp 0x1402d30f3