Function at 0x1801597e0
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
push rsi
push rdi
push r14
sub rsp, 0x30
mov edi, dword [rdx + 8]
mov r14, rdx
mov rbx, rcx
test edi, edi
jne 0x18015981b
mov rax, qword [rcx + 0x10]
xor ebp, ebp
mov qword [rcx], rax
mov rax, qword [rcx + 0x28]
mov qword [rcx + 8], rax
mov dword [rcx + 0x1c], ebp
mov dword [rcx + 0x34], ebp
jmp 0x180159ab2
mov qword [rsp + 0x50], r15
mov dword [rcx + 0x1c], edi
cmp edi, dword [rcx + 0x20]
jbe 0x180159833
mov edx, edi
add rcx, 0x10
call fcn.1801552f0
mov dword [rbx + 0x34], edi
cmp edi, dword [rbx + 0x38]
jbe 0x180159846
mov edx, edi
lea rcx, [rbx + 0x28]
call fcn.1801552f0
mov rcx, qword [rbx + 0x10]
xor ebp, ebp
mov rax, qword [rbx + 0x28]
mov qword [rbx], rcx
mov qword [rbx + 8], rax
mov byte [rbx + 0x40], 0
cmp edi, 0x20
jae 0x1801598d7
movups xmm0, xmmword [r14]
mov r10d, 1
mov dword [rcx], ebp
mov esi, edi
movaps xmmword [rsp + 0x20], xmm0
cmp edi, r10d
je 0x1801598ce
mov r11, qword [rsp + 0x20]
nop dword [rax]
mov rax, qword [rbx]
mov ecx, r10d
mov edi, r10d
mov dword [rax + rdi*4], r10d
test r10d, r10d
je 0x1801598c6
mov rdx, qword [rbx]
lea r8d, [rcx - 1]
mov r9d, dword [rdx + r8*4]
movss xmm0, dword [r11 + r9*4]
comiss xmm0, dword [r11 + rdi*4]
jbe 0x1801598bb
mov eax, ecx
mov ecx, r8d
mov dword [rdx + rax*4], r9d
test r8d, r8d
jne 0x180159892
mov rdx, qword [rbx]
cmp r10d, ecx
je 0x1801598c6
mov eax, ecx
mov dword [rdx + rax*4], r10d
inc r10d
cmp r10d, esi
jne 0x180159880
mov byte [rbx + 0x40], 1
jmp 0x180159aad
mov rdx, qword [r14]
mov r10d, edi
movdqa xmm2, xmmword [0x180171710]
mov r15d, 8
and r10d, 0xfffffff0
mov r9d, r15d
mov r8d, ebp
nop word [rax + rax]
mov eax, r8d
add r8d, 0x10
movdqu xmm0, xmmword [rdx + rax*4]
movdqa xmm1, xmm0
psrad xmm1, 0x1f
orps xmm1, xmm2
xorps xmm1, xmm0
movdqu xmmword [rdx + rax*4], xmm1
lea eax, [r9 - 4]
movdqu xmm0, xmmword [rdx + rax*4]
movdqa xmm1, xmm0
psrad xmm1, 0x1f
orps xmm1, xmm2
xorps xmm1, xmm0
movdqu xmmword [rdx + rax*4], xmm1
mov eax, r9d
movdqu xmm0, xmmword [rdx + rax*4]
movdqa xmm1, xmm0
psrad xmm1, 0x1f
orps xmm1, xmm2
xorps xmm1, xmm0
movdqu xmmword [rdx + rax*4], xmm1
lea eax, [r9 + 4]
add r9d, 0x10
movdqu xmm0, xmmword [rdx + rax*4]
movdqa xmm1, xmm0
psrad xmm1, 0x1f
orps xmm1, xmm2
xorps xmm1, xmm0
movdqu xmmword [rdx + rax*4], xmm1
cmp r8d, r10d
jb 0x180159900
mov rsi, rdx
cmp r8d, edi
jae 0x1801599b8
mov eax, edi
lea rdx, [r8*4]
sub eax, r8d
mov r8d, eax
nop word [rax + rax]
mov ecx, dword [rdx + rsi]
lea rdx, [rdx + 4]
sar ecx, 0x1f
bts ecx, 0x1f
xor dword [rdx + rsi - 4], ecx
sub r8, 1
jne 0x1801599a0
mov qword [rsp + 0x20], rsi
lea rdx, [rsp + 0x20]
mov dword [rsp + 0x28], edi
mov rcx, rbx
movaps xmm0, xmmword [rsp + 0x20]
movdqa xmmword [rsp + 0x20], xmm0
call fcn.180148800
movdqa xmm2, xmmword [0x1801750b0]
mov r9d, edi
movdqa xmm3, xmmword [0x180171710]
and edi, 0xfffffff0
nop
movdqu xmm0, xmmword [rsi + rbp*4]
lea eax, [r15 - 4]
movdqa xmm1, xmm0
psrld xmm1, 0x1f
psubd xmm1, xmm2
orps xmm1, xmm3
xorps xmm1, xmm0
movdqu xmmword [rsi + rbp*4], xmm1
add ebp, 0x10
movdqu xmm0, xmmword [rsi + rax*4]
movdqa xmm1, xmm0
psrld xmm1, 0x1f
psubd xmm1, xmm2
orps xmm1, xmm3
xorps xmm1, xmm0
movdqu xmmword [rsi + rax*4], xmm1
mov eax, r15d
movdqu xmm0, xmmword [rsi + rax*4]
movdqa xmm1, xmm0
psrld xmm1, 0x1f
psubd xmm1, xmm2
orps xmm1, xmm3
xorps xmm1, xmm0
movdqu xmmword [rsi + rax*4], xmm1
lea eax, [r15 + 4]
add r15d, 0x10
movdqu xmm0, xmmword [rsi + rax*4]
movdqa xmm1, xmm0
psrld xmm1, 0x1f
psubd xmm1, xmm2
orps xmm1, xmm3
xorps xmm1, xmm0
movdqu xmmword [rsi + rax*4], xmm1
cmp ebp, edi
jb 0x1801599f0
cmp ebp, r9d
jae 0x180159aad
mov r8, qword [r14]
lea rdx, [rbp*4]
sub r9d, ebp
mov ecx, dword [rdx + r8]
lea rdx, [rdx + 4]
shr ecx, 0x1f
dec ecx
bts ecx, 0x1f
xor dword [rdx + r8 - 4], ecx
sub r9, 1
jne 0x180159a91
mov r15, qword [rsp + 0x50]
mov rbx, qword [rsp + 0x58]
mov rbp, qword [rsp + 0x60]
add rsp, 0x30
pop r14
pop rdi
pop rsi
ret