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

Disassembly:
mov qword [rsp + 0x18], rbx
mov qword [rsp + 0x20], rbp
mov qword [rsp + 0x10], rdx
push rsi
push rdi
push r12
push r13
push r14
push r15
mov r12d, dword [rcx + 0x204]
mov ebp, dword [rcx + 0x208]
mov r14d, dword [rcx + 0x20c]
mov r15d, dword [rdx + 0xc]
xor ebp, dword [rdx + 4]
xor r14d, dword [rdx + 8]
mov r13d, r12d
mov dword [rsp + 0x38], r12d
mov rdi, rcx
xor r13d, dword [rdx]
xor r15d, dword [rcx + 0x210]
mov esi, 8
mov r12, 0xfffffffffffffffe
nop dword [rax]
lea rax, [r12 - 2]
mov edx, r15d
and eax, 3
rol edx, 0xb
mov r8d, dword [rdi + rax*4 + 0x204]
add edx, r14d
xor edx, r8d
mov eax, edx
shr eax, 0x10
movzx eax, al
movzx r9d, byte [rax + rdi + 0x104]
mov eax, edx
shr eax, 0x18
movzx ecx, byte [rax + rdi + 0x104]
mov eax, edx
shr eax, 8
shl ecx, 8
movzx eax, al
or r9d, ecx
movzx ecx, dl
movzx eax, byte [rax + rdi + 0x104]
shl r9d, 8
mov edx, r14d
or r9d, eax
movzx eax, byte [rcx + rdi + 0x104]
shl r9d, 8
or r9d, eax
xor r9d, r13d
ror edx, 0xf
xor edx, r15d
add edx, r8d
lea r8, [r12 - 1]
mov eax, edx
and r8d, 3
shr eax, 0x10
movzx eax, al
movzx r10d, byte [rax + rdi + 0x104]
mov eax, edx
shr eax, 0x18
movzx ecx, byte [rax + rdi + 0x104]
mov eax, edx
shr eax, 8
shl ecx, 8
movzx eax, al
or r10d, ecx
movzx ecx, dl
movzx eax, byte [rax + rdi + 0x104]
shl r10d, 8
or r10d, eax
movzx eax, byte [rcx + rdi + 0x104]
shl r10d, 8
or r10d, eax
xor r10d, ebp
mov edx, r10d
rol edx, 0xb
add edx, r9d
xor edx, dword [rdi + r8*4 + 0x204]
mov eax, edx
shr eax, 0x10
movzx eax, al
movzx r11d, byte [rax + rdi + 0x104]
mov eax, edx
shr eax, 0x18
movzx ecx, byte [rax + rdi + 0x104]
mov eax, edx
shr eax, 8
shl ecx, 8
or r11d, ecx
movzx ecx, dl
movzx eax, al
movzx eax, byte [rax + rdi + 0x104]
shl r11d, 8
mov edx, r9d
or r11d, eax
movzx eax, byte [rcx + rdi + 0x104]
shl r11d, 8
or r11d, eax
xor r11d, r14d
ror edx, 0xf
xor edx, r10d
add edx, dword [rdi + r8*4 + 0x204]
mov eax, edx
mov r8, r12
shr eax, 0x10
and r8d, 3
movzx eax, al
movzx ebx, byte [rax + rdi + 0x104]
mov eax, edx
shr eax, 0x18
movzx ecx, byte [rax + rdi + 0x104]
mov eax, edx
shr eax, 8
shl ecx, 8
movzx eax, al
or ebx, ecx
movzx ecx, dl
movzx eax, byte [rax + rdi + 0x104]
shl ebx, 8
or ebx, eax
movzx eax, byte [rcx + rdi + 0x104]
shl ebx, 8
or ebx, eax
xor ebx, r15d
mov edx, ebx
rol edx, 0xb
add edx, r11d
xor edx, dword [rdi + r8*4 + 0x204]
mov eax, edx
shr eax, 0x10
movzx eax, al
movzx r13d, byte [rax + rdi + 0x104]
mov eax, edx
shr eax, 0x18
movzx ecx, byte [rax + rdi + 0x104]
mov eax, edx
shr eax, 8
shl ecx, 8
movzx eax, al
or r13d, ecx
movzx ecx, dl
movzx eax, byte [rax + rdi + 0x104]
shl r13d, 8
mov edx, r11d
or r13d, eax
movzx eax, byte [rcx + rdi + 0x104]
shl r13d, 8
or r13d, eax
xor r13d, r9d
ror edx, 0xf
xor edx, ebx
add edx, dword [rdi + r8*4 + 0x204]
lea r8, [r12 + 1]
mov eax, edx
and r8d, 3
shr eax, 0x10
movzx eax, al
movzx ebp, byte [rax + rdi + 0x104]
mov eax, edx
shr eax, 0x18
movzx ecx, byte [rax + rdi + 0x104]
mov eax, edx
shr eax, 8
shl ecx, 8
or ebp, ecx
movzx eax, al
movzx ecx, dl
movzx eax, byte [rax + rdi + 0x104]
shl ebp, 8
or ebp, eax
movzx eax, byte [rcx + rdi + 0x104]
shl ebp, 8
or ebp, eax
xor ebp, r10d
mov edx, ebp
rol edx, 0xb
add edx, r13d
xor edx, dword [rdi + r8*4 + 0x204]
mov eax, edx
shr eax, 0x10
movzx eax, al
movzx r14d, byte [rax + rdi + 0x104]
mov eax, edx
shr eax, 0x18
add r12, 4
movzx ecx, byte [rax + rdi + 0x104]
mov eax, edx
shr eax, 8
shl ecx, 8
movzx eax, al
or r14d, ecx
movzx ecx, dl
movzx eax, byte [rax + rdi + 0x104]
shl r14d, 8
mov edx, r13d
or r14d, eax
movzx eax, byte [rcx + rdi + 0x104]
shl r14d, 8
or r14d, eax
xor r14d, r11d
ror edx, 0xf
xor edx, ebp
add edx, dword [rdi + r8*4 + 0x204]
mov eax, edx
shr eax, 0x10
movzx eax, al
movzx r15d, byte [rax + rdi + 0x104]
mov eax, edx
shr eax, 0x18
movzx ecx, byte [rax + rdi + 0x104]
mov eax, edx
shr eax, 8
shl ecx, 8
or r15d, ecx
movzx eax, al
movzx ecx, dl
movzx eax, byte [rax + rdi + 0x104]
shl r15d, 8
or r15d, eax
movzx eax, byte [rcx + rdi + 0x104]
shl r15d, 8
or r15d, eax
xor r15d, ebx
sub rsi, 1
jne 0x180051e30
mov rsi, qword [rsp + 0x40]
mov r12d, dword [rsp + 0x38]
mov edx, 4
xor r12d, r14d
lea rcx, [rsi + 1]
lea r8, [0x180108790]
mov dword [rsi], r12d
mov eax, dword [rdi + 0x208]
xor eax, r15d
mov dword [rsi + 4], eax
mov eax, dword [rdi + 0x20c]
xor eax, r13d
mov dword [rsi + 8], eax
xor ebp, dword [rdi + 0x210]
mov dword [rsi + 0xc], ebp
nop word [rax + rax]
movzx eax, byte [rcx - 1]
add rcx, 4
mov eax, dword [r8 + rax*4]
xor dword [rdi + 0x204], eax
movzx eax, byte [rcx - 4]
mov eax, dword [r8 + rax*4]
xor dword [rdi + 0x208], eax
movzx eax, byte [rcx - 3]
mov eax, dword [r8 + rax*4]
xor dword [rdi + 0x20c], eax
movzx eax, byte [rcx - 2]
mov eax, dword [r8 + rax*4]
xor dword [rdi + 0x210], eax
sub rdx, 1
jne 0x1800521a0
mov rbx, qword [rsp + 0x48]
mov rbp, qword [rsp + 0x50]
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
ret