Function at 0x5357e0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x58
movaps xmmword [rsp + 0x30], xmm6
movaps xmmword [rsp + 0x40], xmm7
mov esi, dword [r8 + 0x28]
mov qword [rsp + 0xa0], rcx
mov rdi, rdx
mov rbx, r8
test esi, esi
jne 0x535840
mov dword [rcx + 8], 0
mov eax, 1
movaps xmm6, xmmword [rsp + 0x30]
movaps xmm7, xmmword [rsp + 0x40]
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
lea r12d, [rsi + rsi]
mov rcx, rdi
mov edx, r12d
call fcn.00535610
test rax, rax
je 0x535ad0
mov eax, dword [rbx + 0x30]
mov r14, qword [rbx + 0x20]
xor dword [rdi + 0x10], eax
mov r15, qword [rdi]
mov r8d, dword [rdi + 8]
test r12d, r12d
jle 0x535960
lea eax, [r12 - 1]
cmp eax, 2
jbe 0x535b6f
mov edx, r12d
movd xmm3, r8d
pxor xmm4, xmm4
mov rax, r15
shr edx, 2
movdqa xmm2, xmmword [0x00932a60]
pshufd xmm6, xmm3, 0
movdqa xmm5, xmmword [0x00932a70]
shl rdx, 5
pxor xmm3, xmm3
add rdx, r15
nop word [rax + rax]
movdqa xmm0, xmm2
movdqa xmm7, xmm3
paddd xmm2, xmm5
add rax, 0x20
psubd xmm0, xmm6
psrld xmm0, 0x1f
movdqa xmm1, xmm0
punpckldq xmm0, xmm4
punpckhdq xmm1, xmm4
psubq xmm7, xmm1
movdqa xmm1, xmm7
movdqu xmm7, xmmword [rax - 0x10]
pand xmm1, xmm7
movdqa xmm7, xmm3
psubq xmm7, xmm0
movups xmmword [rax - 0x10], xmm1
movdqa xmm0, xmm7
movdqu xmm7, xmmword [rax - 0x20]
pand xmm0, xmm7
movups xmmword [rax - 0x20], xmm0
cmp rax, rdx
jne 0x5358b8
mov eax, r12d
and eax, 0xfffffffc
test r12b, 3
je 0x535960
mov edx, eax
movsxd r9, eax
add eax, 1
sub edx, r8d
shr edx, 0x1f
neg rdx
and qword [r15 + r9*8], rdx
cmp r12d, eax
jle 0x535960
mov edx, eax
movsxd r9, eax
add eax, 1
sub edx, r8d
shr edx, 0x1f
neg rdx
and qword [r15 + r9*8], rdx
cmp r12d, eax
jle 0x535960
movsxd rdx, eax
sub eax, r8d
shr eax, 0x1f
neg rax
and qword [r15 + rdx*8], rax
mov dword [rdi + 8], r12d
mov r12, qword [rbx + 0x50]
test esi, esi
jle 0x535b20
lea eax, [rsi - 1]
movsxd r10, esi
xor ebx, ebx
mov dword [rsp + 0x2c], eax
lea r13, [r10*8]
lea rbp, [r15 + rax*8 + 8]
mov qword [rsp + 0x20], rax
nop
mov r9, qword [r15]
mov r8d, esi
mov rdx, r14
mov rcx, r15
imul r9, r12
call fcn.00602dd0
mov r8, qword [r15 + r13]
xor edx, edx
add rax, rbx
add rax, r8
cmp r8, rax
mov qword [r15 + r13], rax
setne dl
or rbx, rdx
xor edx, edx
cmp r8, rax
setae dl
add r15, 8
and rbx, rdx
cmp r15, rbp
jne 0x535990
mov rcx, qword [rsp + 0xa0]
mov edx, esi
call fcn.00535610
test rax, rax
je 0x535ad0
mov rax, qword [rsp + 0xa0]
mov r12, qword [rdi]
mov r9d, esi
mov r8, r14
mov rcx, qword [rsp + 0xa0]
mov dword [rax + 8], esi
mov eax, dword [rdi + 0x10]
lea rdi, [r12 + r13]
mov rbp, qword [rcx]
mov rdx, rdi
mov dword [rcx + 0x10], eax
mov rcx, rbp
call fcn.006030d0
mov rcx, rbx
sub rcx, rax
lea rax, [r12 + r13 + 0x10]
cmp rbp, rax
lea rax, [rbp + 0x10]
setae dl
cmp rdi, rax
setae al
or dl, al
je 0x535ae0
cmp dword [rsp + 0x2c], 1
jbe 0x535ae0
mov edx, esi
movq xmm2, rcx
pxor xmm1, xmm1
xor eax, eax
shr edx, 1
punpcklqdq xmm2, xmm2
shl rdx, 4
nop dword [rax + rax]
movdqu xmm5, xmmword [rbp + rax]
movdqu xmm0, xmmword [rdi + rax]
pxor xmm0, xmm5
pand xmm0, xmm2
pxor xmm0, xmm5
movups xmmword [rbp + rax], xmm0
movups xmmword [rdi + rax], xmm1
add rax, 0x10
cmp rax, rdx
jne 0x535a68
mov eax, esi
and eax, 0xfffffffe
and esi, 1
je 0x535abe
shl rax, 3
add rdi, rax
add rax, rbp
mov rdx, qword [rax]
mov rbx, qword [rdi]
xor rbx, rdx
and rbx, rcx
xor rbx, rdx
mov qword [rax], rbx
mov qword [rdi], 0
mov eax, 1
jmp 0x53581c
xor eax, eax
jmp 0x53581c
xor eax, eax
nop word [rax + rax]
mov r8, qword [rbp + rax*8]
mov rdx, qword [rdi + rax*8]
xor rdx, r8
and rdx, rcx
xor rdx, r8
mov qword [rbp + rax*8], rdx
mov rdx, rax
mov qword [rdi + rax*8], 0
add rax, 1
cmp rdx, qword [rsp + 0x20]
jne 0x535ae8
jmp 0x535abe
mov rcx, qword [rsp + 0xa0]
mov edx, esi
call fcn.00535610
test rax, rax
je 0x535ad0
mov rax, qword [rsp + 0xa0]
movsxd rdx, esi
mov r9d, esi
mov r8, r14
mov rcx, qword [rsp + 0xa0]
mov dword [rax + 8], esi
mov eax, dword [rdi + 0x10]
mov dword [rcx + 0x10], eax
mov rax, qword [rdi]
mov rcx, qword [rcx]
lea rdx, [rax + rdx*8]
call fcn.006030d0
mov eax, 1
jmp 0x53581c
mov eax, r8d
neg eax
shr eax, 0x1f
neg rax
and qword [r15], rax
mov eax, 1
jmp 0x535936