Function at 0x180008c40
Capabilities:
Encode data using add xor sub operations
Encode data using xor

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x18], rbp
mov qword [rsp + 0x20], rsi
mov qword [rsp + 0x10], rdx
push rdi
push r12
push r13
push r14
push r15
mov r13d, dword [rdx]
mov ebp, dword [rcx + 0x10a8]
mov r12d, dword [rcx + 0x10ac]
mov r14d, dword [rdx + 0xc]
xor r13d, dword [rcx + 0x10a4]
xor ebp, dword [rdx + 4]
xor r12d, dword [rdx + 8]
xor r14d, dword [rcx + 0x10b0]
mov rdi, rcx
mov esi, 8
mov r15, 0xfffffffffffffffe
nop word [rax + rax]
lea rax, [r15 - 2]
mov edx, r14d
and eax, 3
rol edx, 0xb
mov r8d, dword [rdi + rax*4 + 0x10a4]
add edx, r12d
xor edx, r8d
mov eax, edx
shr eax, 0x10
movzx eax, al
movzx r9d, byte [rax + rdi + 0xfa4]
mov eax, edx
shr eax, 0x18
movzx ecx, byte [rax + rdi + 0xfa4]
mov eax, edx
shr eax, 8
shl ecx, 8
movzx eax, al
or r9d, ecx
movzx ecx, dl
movzx eax, byte [rax + rdi + 0xfa4]
shl r9d, 8
mov edx, r12d
or r9d, eax
movzx eax, byte [rcx + rdi + 0xfa4]
shl r9d, 8
or r9d, eax
xor r9d, r13d
ror edx, 0xf
xor edx, r14d
add edx, r8d
lea r8, [r15 - 1]
mov eax, edx
and r8d, 3
shr eax, 0x10
movzx eax, al
movzx r10d, byte [rax + rdi + 0xfa4]
mov eax, edx
shr eax, 0x18
movzx ecx, byte [rax + rdi + 0xfa4]
mov eax, edx
shr eax, 8
shl ecx, 8
movzx eax, al
or r10d, ecx
movzx ecx, dl
movzx eax, byte [rax + rdi + 0xfa4]
shl r10d, 8
or r10d, eax
movzx eax, byte [rcx + rdi + 0xfa4]
shl r10d, 8
or r10d, eax
xor r10d, ebp
mov edx, r10d
rol edx, 0xb
add edx, r9d
xor edx, dword [rdi + r8*4 + 0x10a4]
mov eax, edx
shr eax, 0x10
movzx eax, al
movzx r11d, byte [rax + rdi + 0xfa4]
mov eax, edx
shr eax, 0x18
movzx ecx, byte [rax + rdi + 0xfa4]
mov eax, edx
shr eax, 8
shl ecx, 8
or r11d, ecx
movzx ecx, dl
movzx eax, al
movzx eax, byte [rax + rdi + 0xfa4]
shl r11d, 8
mov edx, r9d
or r11d, eax
movzx eax, byte [rcx + rdi + 0xfa4]
shl r11d, 8
or r11d, eax
xor r11d, r12d
ror edx, 0xf
xor edx, r10d
add edx, dword [rdi + r8*4 + 0x10a4]
mov eax, edx
mov r8, r15
shr eax, 0x10
and r8d, 3
movzx eax, al
movzx ebx, byte [rax + rdi + 0xfa4]
mov eax, edx
shr eax, 0x18
movzx ecx, byte [rax + rdi + 0xfa4]
mov eax, edx
shr eax, 8
shl ecx, 8
movzx eax, al
or ebx, ecx
movzx ecx, dl
movzx eax, byte [rax + rdi + 0xfa4]
shl ebx, 8
or ebx, eax
movzx eax, byte [rcx + rdi + 0xfa4]
shl ebx, 8
or ebx, eax
xor ebx, r14d
mov edx, ebx
rol edx, 0xb
add edx, r11d
xor edx, dword [rdi + r8*4 + 0x10a4]
mov eax, edx
shr eax, 0x10
movzx eax, al
movzx r13d, byte [rax + rdi + 0xfa4]
mov eax, edx
shr eax, 0x18
movzx ecx, byte [rax + rdi + 0xfa4]
mov eax, edx
shr eax, 8
shl ecx, 8
movzx eax, al
or r13d, ecx
movzx ecx, dl
movzx eax, byte [rax + rdi + 0xfa4]
shl r13d, 8
mov edx, r11d
or r13d, eax
movzx eax, byte [rcx + rdi + 0xfa4]
shl r13d, 8
or r13d, eax
xor r13d, r9d
ror edx, 0xf
xor edx, ebx
add edx, dword [rdi + r8*4 + 0x10a4]
lea r8, [r15 + 1]
mov eax, edx
and r8d, 3
shr eax, 0x10
movzx eax, al
movzx ebp, byte [rax + rdi + 0xfa4]
mov eax, edx
shr eax, 0x18
movzx ecx, byte [rax + rdi + 0xfa4]
mov eax, edx
shr eax, 8
shl ecx, 8
or ebp, ecx
movzx eax, al
movzx ecx, dl
movzx eax, byte [rax + rdi + 0xfa4]
shl ebp, 8
or ebp, eax
movzx eax, byte [rcx + rdi + 0xfa4]
shl ebp, 8
or ebp, eax
xor ebp, r10d
mov edx, ebp
rol edx, 0xb
add edx, r13d
xor edx, dword [rdi + r8*4 + 0x10a4]
mov eax, edx
shr eax, 0x10
movzx eax, al
movzx r12d, byte [rax + rdi + 0xfa4]
mov eax, edx
shr eax, 0x18
add r15, 4
movzx ecx, byte [rax + rdi + 0xfa4]
mov eax, edx
shr eax, 8
shl ecx, 8
movzx eax, al
or r12d, ecx
movzx ecx, dl
movzx eax, byte [rax + rdi + 0xfa4]
shl r12d, 8
mov edx, r13d
or r12d, eax
movzx eax, byte [rcx + rdi + 0xfa4]
shl r12d, 8
or r12d, eax
xor r12d, r11d
ror edx, 0xf
xor edx, ebp
add edx, dword [rdi + r8*4 + 0x10a4]
mov eax, edx
shr eax, 0x10
movzx eax, al
movzx r14d, byte [rax + rdi + 0xfa4]
mov eax, edx
shr eax, 0x18
movzx ecx, byte [rax + rdi + 0xfa4]
mov eax, edx
shr eax, 8
shl ecx, 8
or r14d, ecx
movzx eax, al
movzx ecx, dl
movzx eax, byte [rax + rdi + 0xfa4]
shl r14d, 8
or r14d, eax
movzx eax, byte [rcx + rdi + 0xfa4]
shl r14d, 8
or r14d, eax
xor r14d, ebx
sub rsi, 1
jne 0x180008ca0
mov rsi, qword [rsp + 0x38]
xor r12d, dword [rdi + 0x10a4]
mov r8d, 4
mov dword [rsi], r12d
mov eax, dword [rdi + 0x10a8]
lea rdx, [rsi + 1]
xor eax, r14d
mov dword [rsi + 4], eax
mov eax, dword [rdi + 0x10ac]
xor eax, r13d
mov dword [rsi + 8], eax
xor ebp, dword [rdi + 0x10b0]
mov dword [rsi + 0xc], ebp
nop dword [rax]
movzx eax, byte [rdx - 1]
add rdx, 4
mov ecx, dword [rdi + rax*4 + 0xba4]
xor dword [rdi + 0x10a4], ecx
movzx eax, byte [rdx - 4]
mov ecx, dword [rdi + rax*4 + 0xba4]
xor dword [rdi + 0x10a8], ecx
movzx eax, byte [rdx - 3]
mov ecx, dword [rdi + rax*4 + 0xba4]
xor dword [rdi + 0x10ac], ecx
movzx eax, byte [rdx - 2]
mov ecx, dword [rdi + rax*4 + 0xba4]
xor dword [rdi + 0x10b0], ecx
sub r8, 1
jne 0x180009000
mov rbx, qword [rsp + 0x30]
mov rbp, qword [rsp + 0x40]
mov rsi, qword [rsp + 0x48]
pop r15
pop r14
pop r13
pop r12
pop rdi
ret