Function at 0x1801ffa90
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x20], r9
mov qword [rsp + 8], rcx
push rdi
push r12
push r14
push r15
sub rsp, 0x78
mov rcx, r9
mov r15, r9
mov r12, r8
mov rdi, rdx
xor r14d, r14d
call fcn.18018f5e0
mov rcx, r15
call fcn.18018f500
mov r15, rax
mov qword [rsp + 0x40], rax
test rax, rax
je 0x1801fff26
mov qword [rsp + 0xa8], rbx
mov rbx, qword [rsp + 0xb8]
mov rcx, rbx
call fcn.18018f500
mov qword [rsp + 0x28], rax
test rax, rax
je 0x1801fff1e
mov rcx, rbx
mov qword [rsp + 0x68], rsi
call fcn.18018f500
mov rsi, rax
mov qword [rsp + 0x48], rax
test rax, rax
je 0x1801fff19
mov rcx, rbx
call fcn.18018f500
mov rbx, rax
mov qword [rsp + 0x30], rax
test rax, rax
je 0x1801fff19
mov r8, r12
mov rdx, rdi
mov rcx, rsi
call fcn.1801ff570
test eax, eax
je 0x1801fff19
cmp dword [rsi + 8], r14d
je 0x1801fff19
mov rdx, r12
mov rcx, rbx
call fcn.180189c40
test rax, rax
je 0x1801fff19
mov rcx, rsi
mov qword [rsp + 0x70], rbp
mov qword [rsp + 0x60], r13
call fcn.180189ee0
mov rcx, rbx
mov ebp, eax
call fcn.180189ee0
movsxd r13, dword [r12 + 8]
mov dword [rsp + 0x20], eax
cmp r13d, dword [rsi + 0xc]
jg 0x1801ffb93
mov rax, rsi
jmp 0x1801ffb9e
mov edx, r13d
mov rcx, rsi
call fcn.18018a410
test rax, rax
je 0x1801fff0f
movsxd rax, dword [rsi + 8]
mov rbx, qword [rsi]
mov rcx, r13
cmp rax, r13
jge 0x1801ffbc1
lea rdi, [rbx + rax*4]
sub rcx, rax
xor eax, eax
rep stosd dword [rdi], eax
mov dword [rsi + 8], r13d
cmp r13d, dword [r15 + 0xc]
jg 0x1801ffbd0
mov rax, r15
jmp 0x1801ffbdb
mov edx, r13d
mov rcx, r15
call fcn.18018a410
test rax, rax
je 0x1801fff0f
mov rsi, qword [r15]
mov eax, 1
mov dword [rsi], eax
cmp r13d, eax
jle 0x1801ffc02
lea eax, [r13 - 1]
lea rdi, [rsi + 4]
movsxd rcx, eax
xor eax, eax
rep stosd dword [rdi], eax
mov r8, qword [rsp + 0x28]
mov dword [r15 + 8], r13d
cmp r13d, dword [r8 + 0xc]
jg 0x1801ffc16
mov rax, r8
jmp 0x1801ffc26
mov edx, r13d
mov rcx, r8
call fcn.18018a410
mov r8, qword [rsp + 0x28]
test rax, rax
je 0x1801fff0f
mov r11, qword [r8]
mov qword [rsp + 0x38], r11
test r13d, r13d
jle 0x1801ffc46
mov rdi, r11
xor eax, eax
mov rcx, r13
rep stosd dword [rdi], eax
mov rdx, qword [rsp + 0x30]
mov dword [r8 + 8], r13d
mov r15, qword [rdx]
mov qword [rsp + 0x50], r15
test ebp, ebp
je 0x1801ffd1a
nop
mov edi, dword [rbx]
test dil, 1
jne 0x1801ffd06
mov eax, dword [rsi]
mov rcx, qword [r12]
mov r15, r14
mov edx, dword [rcx]
mov r9d, eax
lea ecx, [r13 - 1]
and r9d, 1
movsxd r10, ecx
neg r9d
and edx, r9d
xor eax, edx
test ecx, ecx
jle 0x1801ffcf2
mov r11, rbx
mov r14, 0xfffffffffffffffc
lea r8, [rsi + 4]
sub r11, rsi
sub r14, rsi
mov r15, r10
nop dword [rax + rax]
mov ecx, dword [r11 + r8]
shr edi, 1
shr eax, 1
shl ecx, 0x1f
lea r8, [r8 + 4]
or ecx, edi
mov edi, dword [r11 + r8 - 4]
mov dword [r11 + r8 - 8], ecx
mov rdx, qword [r12]
add rdx, r14
mov edx, dword [rdx + r8]
and edx, r9d
xor edx, dword [r8 - 4]
mov ecx, edx
shl ecx, 0x1f
or ecx, eax
mov eax, edx
mov dword [r8 - 8], ecx
dec r10
jne 0x1801ffcb0
xor r14d, r14d
shr edi, 1
shr eax, 1
mov dword [rbx + r15*4], edi
mov dword [rsi + r15*4], eax
dec ebp
jne 0x1801ffc60
mov r11, qword [rsp + 0x38]
mov r15, qword [rsp + 0x50]
mov rdx, qword [rsp + 0x30]
mov r8, qword [rsp + 0x28]
cmp ebp, 0x20
jg 0x1801ffd32
mov eax, dword [rbx]
test eax, eax
je 0x1801fff0f
cmp eax, 1
je 0x1801ffec7
mov ecx, dword [rsp + 0x20]
cmp ebp, ecx
jge 0x1801ffd74
mov rax, qword [rsp + 0x48]
mov rdi, qword [rsp + 0x40]
mov rbx, r15
mov r15, qword [rax]
mov rsi, r11
mov r11, qword [rdi]
mov dword [rsp + 0x20], ebp
mov qword [rsp + 0x48], rdx
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x50], r15
mov qword [rsp + 0x38], r11
mov ebp, ecx
mov qword [rsp + 0x40], r8
mov qword [rsp + 0x28], rdi
mov r10, r14
test r13d, r13d
jle 0x1801ffe26
cmp r13d, 4
jb 0x1801ffe26
lea eax, [r13 - 1]
mov edx, r14d
movsxd rcx, eax
lea r9, [r11 + rcx*4]
lea rax, [rsi + rcx*4]
cmp rsi, r9
ja 0x1801ffdaa
cmp rax, r11
jae 0x1801ffe26
lea rdi, [rbx + rcx*4]
cmp rsi, rdi
ja 0x1801ffdb8
cmp rax, rbx
jae 0x1801ffe26
lea r8, [r15 + rcx*4]
cmp rsi, r8
ja 0x1801ffdc6
cmp rax, r15
jae 0x1801ffe26
cmp rbx, r9
ja 0x1801ffdd0
cmp rdi, r11
jae 0x1801ffe26
cmp rbx, r8
ja 0x1801ffdda
cmp rdi, r15
jae 0x1801ffe26
mov eax, r13d
and eax, 0x80000003
jge 0x1801ffdeb
dec eax
or eax, 0xfffffffc
inc eax
mov ecx, r13d
sub ecx, eax
movsxd rax, edx
add edx, 4
add r10, 4
movdqu xmm0, xmmword [rbx + rax*4]
movdqu xmm1, xmmword [r15 + rax*4]
pxor xmm1, xmm0
movdqu xmmword [rbx + rax*4], xmm1
movdqu xmm1, xmmword [r11 + rax*4]
movdqu xmm0, xmmword [rsi + rax*4]
pxor xmm1, xmm0
movdqu xmmword [rsi + rax*4], xmm1
cmp edx, ecx
jl 0x1801ffdf0
cmp r10, r13
jge 0x1801ffe69
mov rdi, r15
mov r8, r11
mov r9, rsi
mov rdx, r13
sub rdi, rbx
sub r8, rbx
sub r9, rbx
lea rcx, [rbx + r10*4]
sub rdx, r10
nop word [rax + rax]
mov eax, dword [rdi + rcx]
lea rcx, [rcx + 4]
xor dword [rcx - 4], eax
mov eax, dword [r8 + rcx - 4]
xor dword [r9 + rcx - 4], eax
dec rdx
jne 0x1801ffe50
mov rdx, qword [rsp + 0x30]
mov r8, qword [rsp + 0x28]
cmp ebp, dword [rsp + 0x20]
jne 0x1801ffc57
lea eax, [rbp - 1]
cdq
and edx, 0x1f
add eax, edx
sar eax, 5
movsxd rdi, eax
mov rax, rdi
mov ecx, dword [rbx + rdi*4]
test ecx, ecx
jne 0x1801ffea8
test rax, rax
je 0x1801ffea8
mov ecx, dword [rbx + rax*4 - 4]
dec rax
dec edi
test ecx, ecx
je 0x1801ffe96
call fcn.180189f20
mov r11, qword [rsp + 0x38]
mov rdx, qword [rsp + 0x30]
mov r8, qword [rsp + 0x28]
shl edi, 5
lea ebp, [rdi + rax]
jmp 0x1801ffc57
mov rdi, qword [rsp + 0x40]
mov edx, dword [rdi + 8]
test edx, edx
jle 0x1801ffef3
lea eax, [rdx - 1]
movsxd rcx, eax
mov rax, qword [rdi]
lea rcx, [rax + rcx*4]
mov eax, dword [rcx]
lea rcx, [rcx - 4]
test eax, eax
jne 0x1801ffef0
dec edx
test edx, edx
jg 0x1801ffee0
mov dword [rdi + 8], edx
mov rcx, qword [rsp + 0xa0]
mov rdx, rdi
call fcn.180189c40
test rax, rax
mov eax, 1
cmovne r14d, eax
mov rbp, qword [rsp + 0x70]
mov r13, qword [rsp + 0x60]
mov rsi, qword [rsp + 0x68]
mov rbx, qword [rsp + 0xa8]
mov rcx, qword [rsp + 0xb8]
call fcn.18018f440
mov eax, r14d
add rsp, 0x78
pop r15
pop r14
pop r12
pop rdi
ret