Function at 0x1801e87e0
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x18], r8
mov qword [rsp + 8], rcx
push rbx
push rbp
push r12
push r14
mov eax, 0x38
call fcn.1803146e0
sub rsp, rax
mov qword [rsp + 0x78], rsi
mov r12, rdx
shl r12, 5
mov r14, r9
mov qword [rsp + 0x30], rdi
mov rbp, r8
mov rdi, qword [rsp + 0x88]
mov rbx, rcx
mov qword [rsp + 0x28], r13
mov r13, rdx
mov r10, rcx
mov rsi, r12
test r12, r12
je 0x1801e887f
mov r8, r12
nop word [rax + rax]
movzx eax, byte [r10]
lea r10, [r10 + 4]
mov dword [rdi], eax
movzx ecx, byte [r10 - 3]
shl ecx, 8
or ecx, eax
mov dword [rdi], ecx
movzx edx, byte [r10 - 2]
shl edx, 0x10
or edx, ecx
mov dword [rdi], edx
movzx eax, byte [r10 - 1]
shl eax, 0x18
or eax, edx
mov dword [rdi], eax
add rdi, 4
sub r8, 1
jne 0x1801e8840
mov rsi, r13
shl rsi, 5
mov qword [rsp + 0x20], r15
mov r15, r13
shl r15, 7
cmp rbp, 1
jbe 0x1801e88c1
lea rsi, [rbp - 1]
nop word [rax + rax]
mov rdx, rdi
mov r8, r13
sub rdx, r15
mov rcx, rdi
call fcn.1801e8670
add rdi, r15
sub rsi, 1
jne 0x1801e88a0
mov rsi, r13
shl rsi, 5
mov rdx, rbp
mov r8, r13
shl rdx, 7
mov rcx, r14
add rdx, 0xffffffffffffff80
imul rdx, r13
add rdx, qword [rsp + 0x88]
call fcn.1801e8670
xor ebp, ebp
cmp qword [rsp + 0x70], rbp
jbe 0x1801e8a32
mov rbx, qword [rsp + 0x70]
lea rax, [r14 - 0x40]
mov rdi, qword [rsp + 0x80]
add rax, r15
mov r12, qword [rsp + 0x88]
mov r15, rbx
mov qword [rsp + 0x68], rax
mov eax, dword [rax]
xor edx, edx
div rbx
mov r8, rbp
mov eax, edx
imul rax, r13
shl rax, 7
add rax, r12
test rsi, rsi
je 0x1801e8a09
cmp rsi, 0x10
jb 0x1801e89de
lea rcx, [rsi - 1]
lea rcx, [rax + rcx*4]
lea rdx, [rdi - 4]
lea rdx, [rdx + rsi*4]
cmp rdi, rcx
ja 0x1801e895c
cmp rdx, rax
jae 0x1801e89de
lea rcx, [r14 - 4]
lea rcx, [rcx + rsi*4]
cmp rdi, rcx
ja 0x1801e896e
cmp rdx, r14
jae 0x1801e89de
mov rdx, r14
lea rcx, [rdi + 0x10]
sub rdx, rdi
nop dword [rax + rax]
movdqu xmm0, xmmword [rax]
add r8, 0x10
lea rax, [rax + 0x40]
movdqu xmm1, xmmword [rdx + rcx - 0x10]
lea rcx, [rcx + 0x40]
xorps xmm1, xmm0
movdqu xmm0, xmmword [rdx + rcx - 0x40]
movdqu xmmword [rcx - 0x50], xmm1
movdqu xmm1, xmmword [rax - 0x30]
xorps xmm1, xmm0
movdqu xmm0, xmmword [rax - 0x20]
movdqu xmmword [rcx - 0x40], xmm1
movdqu xmm1, xmmword [rdx + rcx - 0x30]
xorps xmm1, xmm0
movdqu xmm0, xmmword [rax - 0x10]
movdqu xmmword [rcx - 0x30], xmm1
movdqu xmm1, xmmword [rdx + rcx - 0x20]
xorps xmm1, xmm0
movdqu xmmword [rcx - 0x20], xmm1
cmp r8, rsi
jb 0x1801e8980
jmp 0x1801e8a09
mov r9, r14
lea rdx, [rdi + r8*4]
sub r9, rdi
nop dword [rax + rax]
mov ecx, dword [r9 + rdx]
lea rdx, [rdx + 4]
xor ecx, dword [rax]
lea rax, [rax + 4]
inc r8
mov dword [rdx - 4], ecx
cmp r8, rsi
jb 0x1801e89f0
mov r8, r13
mov rdx, rdi
mov rcx, r14
call fcn.1801e8670
mov rax, qword [rsp + 0x68]
sub r15, 1
jne 0x1801e8914
mov rbx, qword [rsp + 0x60]
mov r12, r13
shl r12, 5
mov r15, qword [rsp + 0x20]
mov r13, qword [rsp + 0x28]
mov rdi, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x78]
test r12, r12
je 0x1801e8a78
nop dword [rax + rax]
mov ecx, dword [r14 + rbp*4]
mov eax, ecx
mov byte [rbx], cl
lea rbx, [rbx + 4]
shr eax, 8
inc rbp
mov byte [rbx - 3], al
mov eax, ecx
shr eax, 0x10
shr ecx, 0x18
mov byte [rbx - 2], al
mov byte [rbx - 1], cl
cmp rbp, r12
jb 0x1801e8a50
add rsp, 0x38
pop r14
pop r12
pop rbp
pop rbx
ret