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

Disassembly:
mov rax, rsp
sub rsp, 0x28
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbp
mov qword [rax + 0x18], rsi
mov qword [rax - 8], r12
mov qword [rax - 0x10], r13
mov qword [rax - 0x18], r14
mov r14d, dword [rcx]
mov qword [rax - 0x20], r15
lea r15, [0x00400000]
mov r13, rdx
lea eax, [r14*8 + 4]
mov ebx, dword [rcx + rax*4 + 0xc]
mov r10d, dword [rcx + rax*4]
lea rbp, [rcx + rax*4]
xor ebx, dword [r8 + 0xc]
xor r10d, dword [r8]
mov ecx, dword [rbp + 8]
xor ecx, dword [r8 + 8]
mov r9d, dword [rbp + 4]
sub rbp, 0x20
xor r9d, dword [r8 + 4]
mov r11d, ecx
mov eax, ecx
shr rax, 0x10
mov r8d, r9d
movzx edx, al
mov rax, rbx
mov r9d, dword [r15 + rdx*4 + 0x10aed0]
shr rax, 8
movzx ecx, al
mov rax, r8
xor r9d, dword [r15 + rcx*4 + 0x10aad0]
shr rax, 0x18
xor r9d, dword [r15 + rax*4 + 0x10b2d0]
movzx eax, r10b
xor r9d, dword [r15 + rax*4 + 0x10a6d0]
mov rax, r10
xor r9d, dword [rbp + 0x10]
shr rax, 8
movzx edx, al
mov rax, rbx
mov r12d, dword [r15 + rdx*4 + 0x10aad0]
shr rax, 0x10
movzx ecx, al
mov rax, r11
xor r12d, dword [r15 + rcx*4 + 0x10aed0]
shr rax, 0x18
xor r12d, dword [r15 + rax*4 + 0x10b2d0]
movzx eax, r8b
xor r12d, dword [r15 + rax*4 + 0x10a6d0]
mov rax, r8
shr r8, 0x10
xor r12d, dword [rbp + 0x14]
shr rax, 8
movzx edx, al
mov rax, r10
shr r10, 0x18
mov edx, dword [r15 + rdx*4 + 0x10aad0]
shr rax, 0x10
movzx ecx, al
mov rax, rbx
xor edx, dword [r15 + rcx*4 + 0x10aed0]
shr rax, 0x18
movzx ecx, r8b
xor edx, dword [r15 + rax*4 + 0x10b2d0]
mov esi, dword [r15 + rcx*4 + 0x10aed0]
movzx eax, r11b
xor edx, dword [r15 + rax*4 + 0x10a6d0]
shr r11, 8
xor edx, dword [rbp + 0x18]
movzx eax, r11b
xor esi, dword [r15 + rax*4 + 0x10aad0]
movzx eax, bl
xor esi, dword [r15 + r10*4 + 0x10b2d0]
xor esi, dword [r15 + rax*4 + 0x10a6d0]
xor esi, dword [rbp + 0x1c]
add r14d, 0xffffffff
je 0x4cafb9
mov qword [rsp + 0x48], rdi
nop
nop
nop
mov r11d, edx
mov eax, edx
mov edi, r9d
shr rax, 0x10
mov r10d, r12d
sub rbp, 0x20
movzx edx, al
mov rax, rsi
shr r10, 0x10
mov ebx, dword [r15 + rdx*4 + 0x10aed0]
shr rax, 8
movzx ecx, al
mov eax, r12d
xor ebx, dword [r15 + rcx*4 + 0x10aad0]
shr rax, 0x18
xor ebx, dword [r15 + rax*4 + 0x10b2d0]
movzx eax, r9b
xor ebx, dword [r15 + rax*4 + 0x10a6d0]
mov eax, r9d
xor ebx, dword [rbp + 0x20]
shr rax, 8
movzx edx, al
mov rax, rsi
mov r9d, dword [r15 + rdx*4 + 0x10aad0]
shr rax, 0x10
movzx ecx, al
mov rax, r11
xor r9d, dword [r15 + rcx*4 + 0x10aed0]
shr rax, 0x18
xor r9d, dword [r15 + rax*4 + 0x10b2d0]
movzx eax, r12b
xor r9d, dword [r15 + rax*4 + 0x10a6d0]
mov eax, r12d
xor r9d, dword [rbp + 0x24]
shr rax, 8
movzx edx, al
mov rax, rdi
shr rdi, 0x18
mov r8d, dword [r15 + rdx*4 + 0x10aad0]
shr rax, 0x10
movzx ecx, al
mov rax, rsi
xor r8d, dword [r15 + rcx*4 + 0x10aed0]
shr rax, 0x18
movzx ecx, r10b
xor r8d, dword [r15 + rax*4 + 0x10b2d0]
mov edx, dword [r15 + rcx*4 + 0x10aed0]
movzx eax, r11b
xor r8d, dword [r15 + rax*4 + 0x10a6d0]
shr r11, 8
xor r8d, dword [rbp + 0x28]
movzx eax, r11b
mov r11d, ebx
xor edx, dword [r15 + rax*4 + 0x10aad0]
movzx eax, sil
mov r10d, r8d
xor edx, dword [r15 + rdi*4 + 0x10b2d0]
mov r8d, r9d
xor edx, dword [r15 + rax*4 + 0x10a6d0]
mov rax, r10
xor edx, dword [rbp + 0x2c]
shr rax, 0x10
mov edi, edx
movzx edx, al
mov r9d, dword [r15 + rdx*4 + 0x10aed0]
mov rax, rdi
shr rax, 8
movzx ecx, al
mov rax, r8
xor r9d, dword [r15 + rcx*4 + 0x10aad0]
shr rax, 0x18
xor r9d, dword [r15 + rax*4 + 0x10b2d0]
movzx eax, bl
xor r9d, dword [r15 + rax*4 + 0x10a6d0]
mov eax, ebx
xor r9d, dword [rbp + 0x10]
shr rax, 8
movzx edx, al
mov rax, rdi
shr rax, 0x10
movzx ecx, al
mov r12d, dword [r15 + rdx*4 + 0x10aad0]
mov rax, r10
shr r11, 0x18
xor r12d, dword [r15 + rcx*4 + 0x10aed0]
shr rax, 0x18
xor r12d, dword [r15 + rax*4 + 0x10b2d0]
movzx eax, r8b
xor r12d, dword [r15 + rax*4 + 0x10a6d0]
mov rax, r8
shr r8, 0x10
xor r12d, dword [rbp + 0x14]
shr rax, 8
movzx edx, al
mov eax, ebx
mov edx, dword [r15 + rdx*4 + 0x10aad0]
shr rax, 0x10
movzx ecx, al
mov rax, rdi
xor edx, dword [r15 + rcx*4 + 0x10aed0]
shr rax, 0x18
movzx ecx, r8b
xor edx, dword [r15 + rax*4 + 0x10b2d0]
mov esi, dword [r15 + rcx*4 + 0x10aed0]
movzx eax, r10b
xor edx, dword [r15 + rax*4 + 0x10a6d0]
shr r10, 8
xor edx, dword [rbp + 0x18]
movzx eax, r10b
xor esi, dword [r15 + rax*4 + 0x10aad0]
movzx eax, dil
xor esi, dword [r15 + r11*4 + 0x10b2d0]
xor esi, dword [r15 + rax*4 + 0x10a6d0]
xor esi, dword [rbp + 0x1c]
add r14d, 0xffffffff
jne 0x4cad90
mov rdi, qword [rsp + 0x48]
mov r10d, edx
mov eax, r12d
mov r8d, r12d
shr rax, 0x18
shr r8, 0x10
movzx edx, byte [rax + r15 + 0x10b6d0]
mov rax, r10
shr rax, 0x10
shl edx, 8
movzx ecx, al
movzx eax, byte [rcx + r15 + 0x10b6d0]
or edx, eax
mov eax, esi
shr rax, 8
shl edx, 8
movzx ecx, al
movzx eax, byte [rcx + r15 + 0x10b6d0]
or edx, eax
movzx eax, r9b
movzx eax, byte [rax + r15 + 0x10b6d0]
shl edx, 8
or edx, eax
mov eax, esi
xor edx, dword [rbp]
shr rax, 0x10
movzx ecx, al
mov dword [r13], edx
mov rax, r10
movzx edx, byte [rcx + r15 + 0x10b6d0]
shr rax, 0x18
movzx eax, byte [rax + r15 + 0x10b6d0]
shl eax, 8
or edx, eax
mov rax, r9
shr rax, 8
shl edx, 8
movzx ecx, al
movzx eax, byte [rcx + r15 + 0x10b6d0]
or edx, eax
movzx eax, r12b
movzx eax, byte [rax + r15 + 0x10b6d0]
shl edx, 8
or edx, eax
mov rax, r9
shr r9, 0x18
xor edx, dword [rbp + 4]
shr rax, 0x10
mov dword [r13 + 4], edx
movzx ecx, al
mov eax, esi
movzx edx, byte [rcx + r15 + 0x10b6d0]
shr rax, 0x18
movzx eax, byte [rax + r15 + 0x10b6d0]
shl eax, 8
or edx, eax
mov eax, r12d
shr rax, 8
shl edx, 8
movzx ecx, al
movzx eax, byte [rcx + r15 + 0x10b6d0]
or edx, eax
movzx eax, r10b
shr r10, 8
movzx eax, byte [rax + r15 + 0x10b6d0]
shl edx, 8
or edx, eax
movzx eax, r8b
xor edx, dword [rbp + 8]
mov dword [r13 + 8], edx
movzx edx, byte [rax + r15 + 0x10b6d0]
movzx eax, byte [r9 + r15 + 0x10b6d0]
shl eax, 8
or edx, eax
movzx eax, r10b
movzx eax, byte [rax + r15 + 0x10b6d0]
shl edx, 8
or edx, eax
movzx eax, sil
movzx eax, byte [rax + r15 + 0x10b6d0]
shl edx, 8
or edx, eax
xor edx, dword [rbp + 0xc]
mov r15, qword [rsp + 8]
mov r14, qword [rsp + 0x10]
mov r12, qword [rsp + 0x20]
mov rsi, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x38]
mov rbx, qword [rsp + 0x30]
mov dword [r13 + 0xc], edx
mov r13, qword [rsp + 0x18]
add rsp, 0x28
ret