Function at 0x18009dba0
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x18], r8
push rbx
push rdi
push r14
push r15
sub rsp, 0x38
mov rax, qword [rcx + 0x10]
mov rbx, r9
mov r14, r8
mov rdi, rdx
mov r15, rcx
cmp qword [rcx + 8], rax
jne 0x18009dbca
call fcn.1800331f0
mov qword [rsp + 0x30], rsi
cmp rbx, 2
jb 0x18009ddaf
mov qword [rsp + 0x68], rbp
mov qword [rsp + 0x28], r12
mov r12, rbx
shr r12, 1
imul rax, r12, 0xfffffffffffffffe
mov qword [rsp + 0x20], r13
add rbx, rax
mov qword [rsp + 0x60], r12
mov qword [rsp + 0x78], rbx
nop
mov r11d, dword [rdi]
mov r12d, 8
mov esi, dword [rdi + 4]
mov ebx, dword [rdi + 8]
mov ebp, dword [rdi + 0xc]
mov r14, qword [r15 + 0x20]
mov r13, qword [r15 + 8]
add r14, 4
bswap r11d
bswap esi
bswap ebx
bswap ebp
nop word [rax + rax]
xor r11d, dword [r14 - 4]
xor ebx, dword [r14 - 4]
lea r14, [r14 + 8]
mov eax, r11d
shr rax, 0x10
movzx edx, al
mov eax, r11d
shr eax, 0x18
movzx ecx, al
mov eax, r11d
shr rax, 8
mov r8d, dword [r13 + rdx*4 + 0x400]
add r8d, dword [r13 + rcx*4]
movzx ecx, al
movzx eax, r11b
add eax, 0x300
xor r8d, dword [r13 + rcx*4 + 0x800]
add r8d, dword [r13 + rax*4]
mov eax, ebx
xor r8d, dword [r14 - 8]
shr eax, 0x10
xor esi, r8d
movzx edx, al
mov eax, ebx
shr eax, 0x18
movzx ecx, al
mov eax, ebx
shr eax, 8
mov r8d, dword [r13 + rdx*4 + 0x400]
add r8d, dword [r13 + rcx*4]
movzx ecx, al
movzx eax, bl
add eax, 0x300
xor r8d, dword [r13 + rcx*4 + 0x800]
add r8d, dword [r13 + rax*4]
mov eax, esi
xor r8d, dword [r14 - 8]
shr eax, 0x10
xor ebp, r8d
movzx edx, al
mov eax, esi
shr eax, 0x18
movzx ecx, al
mov eax, esi
shr eax, 8
mov r8d, dword [r13 + rdx*4 + 0x400]
add r8d, dword [r13 + rcx*4]
movzx ecx, al
movzx eax, sil
add eax, 0x300
xor r8d, dword [r13 + rcx*4 + 0x800]
add r8d, dword [r13 + rax*4]
mov eax, ebp
shr eax, 0x10
xor r11d, r8d
movzx edx, al
mov eax, ebp
shr eax, 0x18
movzx ecx, al
mov eax, ebp
shr eax, 8
mov r8d, dword [r13 + rdx*4 + 0x400]
add r8d, dword [r13 + rcx*4]
movzx ecx, al
movzx eax, bpl
add eax, 0x300
xor r8d, dword [r13 + rcx*4 + 0x800]
add r8d, dword [r13 + rax*4]
xor ebx, r8d
sub r12, 1
jne 0x18009dc30
mov r13, qword [r15 + 0x20]
add rdi, 0x10
mov r14, qword [rsp + 0x70]
mov edx, dword [r13 + 0x40]
mov r8d, edx
mov eax, dword [r13 + 0x44]
xor r8d, ebx
mov ecx, eax
xor edx, r11d
xor ecx, ebp
xor eax, esi
bswap ecx
bswap r8d
bswap eax
bswap edx
mov dword [r14 + 8], ecx
mov dword [r14 + 0xc], r8d
mov dword [r14], eax
mov dword [r14 + 4], edx
add r14, 0x10
sub qword [rsp + 0x60], 1
mov qword [rsp + 0x70], r14
jne 0x18009dc00
mov rbx, qword [rsp + 0x78]
mov r13, qword [rsp + 0x20]
mov r12, qword [rsp + 0x28]
mov rbp, qword [rsp + 0x68]
test rbx, rbx
je 0x18009de7c
mov eax, dword [rdi]
xor ebx, ebx
mov r11d, dword [rdi + 4]
mov rsi, qword [r15 + 0x20]
mov rdi, qword [r15 + 8]
bswap eax
bswap r11d
nop dword [rax]
xor eax, dword [rsi + rbx*4]
mov ecx, eax
shr rcx, 0x10
movzx r8d, cl
mov ecx, eax
shr ecx, 0x18
movzx edx, cl
mov ecx, eax
shr rcx, 8
mov r9d, dword [rdi + r8*4 + 0x400]
add r9d, dword [rdi + rdx*4]
movzx edx, cl
movzx ecx, al
add ecx, 0x300
xor r9d, dword [rdi + rdx*4 + 0x800]
add r9d, dword [rdi + rcx*4]
xor r9d, dword [rsi + rbx*4 + 4]
add rbx, 2
xor r11d, r9d
mov ecx, r11d
shr ecx, 0x10
movzx r8d, cl
mov ecx, r11d
shr ecx, 0x18
movzx edx, cl
mov ecx, r11d
shr ecx, 8
mov r9d, dword [rdi + r8*4 + 0x400]
add r9d, dword [rdi + rdx*4]
movzx edx, cl
movzx ecx, r11b
add ecx, 0x300
xor r9d, dword [rdi + rdx*4 + 0x800]
add r9d, dword [rdi + rcx*4]
xor eax, r9d
cmp rbx, 0x10
jne 0x18009ddd0
mov ecx, dword [rsi + 0x40]
xor ecx, eax
mov eax, dword [rsi + 0x44]
xor eax, r11d
bswap eax
bswap ecx
mov dword [r14], eax
mov dword [r14 + 4], ecx
mov rsi, qword [rsp + 0x30]
add rsp, 0x38
pop r15
pop r14
pop rdi
pop rbx
ret