Function at 0x14012fde0
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x20], rbp
push rsi
push rdi
push r12
push r13
mov esi, dword [rcx]
mov r10d, dword [rcx + 4]
movzx eax, r8b
or al, r9b
mov rbp, r9
mov r12, r8
test al, 7
mov r13, rdx
mov rdi, rcx
jne 0x1401301ea
test rdx, 0xfffffffffffffff8
mov qword [rsp + 0x28], rbx
je 0x14012ffe2
nop
mov rbx, qword [r12]
lea eax, [rsi + 1]
movzx r9d, al
mov edx, dword [rdi + r9*4 + 8]
lea eax, [rdx + r10]
movzx r10d, al
mov ecx, dword [rdi + r10*4 + 8]
mov dword [rdi + r10*4 + 8], edx
mov dword [rdi + r9*4 + 8], ecx
lea eax, [rcx + rdx]
movzx ecx, al
lea eax, [r9 + 1]
mov r11d, dword [rdi + rcx*4 + 8]
movzx r9d, al
mov edx, dword [rdi + r9*4 + 8]
lea eax, [rdx + r10]
movzx r10d, al
mov ecx, dword [rdi + r10*4 + 8]
mov dword [rdi + r10*4 + 8], edx
mov dword [rdi + r9*4 + 8], ecx
lea eax, [rcx + rdx]
movzx ecx, al
mov eax, dword [rdi + rcx*4 + 8]
shl rax, 8
or r11, rax
lea eax, [r9 + 1]
movzx r9d, al
mov edx, dword [rdi + r9*4 + 8]
lea eax, [rdx + r10]
movzx r10d, al
mov ecx, dword [rdi + r10*4 + 8]
mov dword [rdi + r10*4 + 8], edx
mov dword [rdi + r9*4 + 8], ecx
lea eax, [rcx + rdx]
movzx ecx, al
mov eax, dword [rdi + rcx*4 + 8]
shl rax, 0x10
or r11, rax
lea eax, [r9 + 1]
movzx r9d, al
mov edx, dword [rdi + r9*4 + 8]
lea eax, [rdx + r10]
movzx r10d, al
mov ecx, dword [rdi + r10*4 + 8]
mov dword [rdi + r10*4 + 8], edx
mov dword [rdi + r9*4 + 8], ecx
lea eax, [rcx + rdx]
movzx ecx, al
mov eax, dword [rdi + rcx*4 + 8]
shl rax, 0x18
or r11, rax
lea eax, [r9 + 1]
movzx r9d, al
mov edx, dword [rdi + r9*4 + 8]
lea eax, [rdx + r10]
movzx r10d, al
mov ecx, dword [rdi + r10*4 + 8]
mov dword [rdi + r10*4 + 8], edx
mov dword [rdi + r9*4 + 8], ecx
lea eax, [rcx + rdx]
movzx ecx, al
mov eax, dword [rdi + rcx*4 + 8]
shl rax, 0x20
or r11, rax
lea eax, [r9 + 1]
movzx r9d, al
mov edx, dword [rdi + r9*4 + 8]
lea eax, [rdx + r10]
movzx r10d, al
mov ecx, dword [rdi + r10*4 + 8]
mov dword [rdi + r10*4 + 8], edx
mov dword [rdi + r9*4 + 8], ecx
lea eax, [rcx + rdx]
movzx ecx, al
mov eax, dword [rdi + rcx*4 + 8]
shl rax, 0x28
or r11, rax
lea eax, [r9 + 1]
movzx r9d, al
mov edx, dword [rdi + r9*4 + 8]
lea eax, [rdx + r10]
movzx r10d, al
sub r13, 8
add rbp, 8
mov ecx, dword [rdi + r10*4 + 8]
mov dword [rdi + r10*4 + 8], edx
add r12, 8
mov dword [rdi + r9*4 + 8], ecx
lea eax, [rcx + rdx]
movzx ecx, al
mov eax, dword [rdi + rcx*4 + 8]
shl rax, 0x30
or r11, rax
lea eax, [r9 + 1]
movzx esi, al
mov edx, dword [rdi + rsi*4 + 8]
lea eax, [rdx + r10]
movzx r10d, al
mov ecx, dword [rdi + r10*4 + 8]
mov dword [rdi + r10*4 + 8], edx
mov dword [rdi + rsi*4 + 8], ecx
lea eax, [rcx + rdx]
movzx ecx, al
mov eax, dword [rdi + rcx*4 + 8]
shl rax, 0x38
or rax, r11
xor rax, rbx
test r13, 0xfffffffffffffff8
mov qword [rbp - 8], rax
jne 0x14012fe20
test r13, r13
je 0x1401301d3
mov eax, 8
mov qword [rsp + 0x30], r14
mov r14, qword [r12]
sub al, r13b
or r12, 0xffffffffffffffff
xor r11d, r11d
mov cl, al
mov al, r13b
mov qword [rsp + 0x38], r15
mov r15, qword [rbp]
and eax, 7
shl cl, 3
add rax, 0xffffffffffffffff
shr r12, cl
mov rbx, r11
cmp rax, 6
ja case.default.0x14013003c
lea rcx, [0x140000000]
mov eax, dword [rcx + rax*4 + 0x1305e8]
add rax, rcx
jmp rax
lea eax, [rsi + 1]
mov ebx, 8
movzx esi, al
mov edx, dword [rdi + rsi*4 + 8]
lea eax, [rdx + r10]
movzx r10d, al
mov ecx, dword [rdi + r10*4 + 8]
mov dword [rdi + r10*4 + 8], edx
mov dword [rdi + rsi*4 + 8], ecx
lea eax, [rcx + rdx]
movzx ecx, al
mov r11d, dword [rdi + rcx*4 + 8]
lea eax, [rsi + 1]
movzx esi, al
mov edx, dword [rdi + rsi*4 + 8]
lea eax, [rdx + r10]
movzx r10d, al
mov ecx, dword [rdi + r10*4 + 8]
mov dword [rdi + r10*4 + 8], edx
lea eax, [rcx + rdx]
mov dword [rdi + rsi*4 + 8], ecx
movzx ecx, al
mov eax, dword [rdi + rcx*4 + 8]
mov rcx, rbx
shl rax, cl
or r11, rax
add rbx, 8
lea eax, [rsi + 1]
movzx esi, al
mov edx, dword [rdi + rsi*4 + 8]
lea eax, [rdx + r10]
movzx r10d, al
mov ecx, dword [rdi + r10*4 + 8]
mov dword [rdi + r10*4 + 8], edx
lea eax, [rcx + rdx]
mov dword [rdi + rsi*4 + 8], ecx
movzx ecx, al
mov eax, dword [rdi + rcx*4 + 8]
mov rcx, rbx
shl rax, cl
or r11, rax
add rbx, 8
lea eax, [rsi + 1]
movzx esi, al
mov edx, dword [rdi + rsi*4 + 8]
lea eax, [rdx + r10]
movzx r10d, al
mov ecx, dword [rdi + r10*4 + 8]
mov dword [rdi + r10*4 + 8], edx
lea eax, [rcx + rdx]
mov dword [rdi + rsi*4 + 8], ecx
movzx ecx, al
mov eax, dword [rdi + rcx*4 + 8]
mov rcx, rbx
shl rax, cl
or r11, rax
add rbx, 8
lea eax, [rsi + 1]
movzx esi, al
mov edx, dword [rdi + rsi*4 + 8]
lea eax, [rdx + r10]
movzx r10d, al
mov ecx, dword [rdi + r10*4 + 8]
mov dword [rdi + r10*4 + 8], edx
lea eax, [rcx + rdx]
mov dword [rdi + rsi*4 + 8], ecx
movzx ecx, al
mov eax, dword [rdi + rcx*4 + 8]
mov rcx, rbx
shl rax, cl
or r11, rax
add rbx, 8
lea eax, [rsi + 1]
movzx esi, al
mov edx, dword [rdi + rsi*4 + 8]
lea eax, [rdx + r10]
movzx r10d, al
mov ecx, dword [rdi + r10*4 + 8]
mov dword [rdi + r10*4 + 8], edx
lea eax, [rcx + rdx]
mov dword [rdi + rsi*4 + 8], ecx
movzx ecx, al
mov eax, dword [rdi + rcx*4 + 8]
mov rcx, rbx
shl rax, cl
or r11, rax
add rbx, 8
lea eax, [rsi + 1]
mov rcx, rbx
movzx esi, al
mov r8d, dword [rdi + rsi*4 + 8]
lea eax, [r8 + r10]
movzx r10d, al
mov edx, dword [rdi + r10*4 + 8]
mov dword [rdi + r10*4 + 8], r8d
lea eax, [rdx + r8]
mov dword [rdi + rsi*4 + 8], edx
movzx edx, al
mov eax, dword [rdi + rdx*4 + 8]
shl rax, cl
or r11, rax
xor r11, r14
mov r14, qword [rsp + 0x30]
and r11, r12
not r12
and r12, r15
mov r15, qword [rsp + 0x38]
or r11, r12
mov qword [rbp], r11
mov rbx, qword [rsp + 0x28]
mov dword [rdi + 4], r10d
mov dword [rdi], esi
mov rbp, qword [rsp + 0x40]
pop r13
pop r12
pop rdi
pop rsi
ret
mov r11, rdx
shr r11, 3
je 0x1401303c6
nop
nop
nop
lea eax, [rsi + 1]
movzx r9d, al
mov r8d, dword [rdi + r9*4 + 8]
lea eax, [r8 + r10]
movzx r10d, al
mov eax, dword [rdi + r10*4 + 8]
mov dword [rdi + r9*4 + 8], eax
mov dword [rdi + r10*4 + 8], r8d
add eax, r8d
movzx ecx, al
movzx eax, byte [rdi + rcx*4 + 8]
xor al, byte [r12]
mov byte [rbp], al
lea eax, [r9 + 1]
movzx r9d, al
mov r8d, dword [rdi + r9*4 + 8]
lea eax, [r8 + r10]
movzx r10d, al
mov eax, dword [rdi + r10*4 + 8]
mov dword [rdi + r9*4 + 8], eax
mov dword [rdi + r10*4 + 8], r8d
add eax, r8d
movzx ecx, al
movzx eax, byte [rdi + rcx*4 + 8]
xor al, byte [r12 + 1]
mov byte [rbp + 1], al
lea eax, [r9 + 1]
movzx r9d, al
mov r8d, dword [rdi + r9*4 + 8]
lea eax, [r8 + r10]
movzx r10d, al
mov eax, dword [rdi + r10*4 + 8]
mov dword [rdi + r9*4 + 8], eax
mov dword [rdi + r10*4 + 8], r8d
add eax, r8d
movzx ecx, al
movzx eax, byte [rdi + rcx*4 + 8]
xor al, byte [r12 + 2]
mov byte [rbp + 2], al
lea eax, [r9 + 1]
movzx r9d, al
mov r8d, dword [rdi + r9*4 + 8]
lea eax, [r8 + r10]
movzx r10d, al
mov eax, dword [rdi + r10*4 + 8]
mov dword [rdi + r9*4 + 8], eax
mov dword [rdi + r10*4 + 8], r8d
add eax, r8d
movzx ecx, al
movzx eax, byte [rdi + rcx*4 + 8]
xor al, byte [r12 + 3]
mov byte [rbp + 3], al
lea eax, [r9 + 1]
movzx r9d, al
mov r8d, dword [rdi + r9*4 + 8]
lea eax, [r8 + r10]
movzx r10d, al
mov eax, dword [rdi + r10*4 + 8]
mov dword [rdi + r9*4 + 8], eax
add eax, r8d
mov dword [rdi + r10*4 + 8], r8d
movzx ecx, al
movzx eax, byte [rdi + rcx*4 + 8]
xor al, byte [r12 + 4]
mov byte [rbp + 4], al
lea eax, [r9 + 1]
movzx r9d, al
mov r8d, dword [rdi + r9*4 + 8]
lea eax, [r8 + r10]
movzx r10d, al
mov eax, dword [rdi + r10*4 + 8]
mov dword [rdi + r9*4 + 8], eax
add eax, r8d
mov dword [rdi + r10*4 + 8], r8d
movzx ecx, al
movzx eax, byte [rdi + rcx*4 + 8]
xor al, byte [r12 + 5]
mov byte [rbp + 5], al
lea eax, [r9 + 1]
movzx r9d, al
mov r8d, dword [rdi + r9*4 + 8]
lea eax, [r8 + r10]
add rbp, 8
add r12, 8
movzx r10d, al
mov eax, dword [rdi + r10*4 + 8]
mov dword [rdi + r9*4 + 8], eax
add eax, r8d
mov dword [rdi + r10*4 + 8], r8d
movzx ecx, al
movzx eax, byte [rdi + rcx*4 + 8]
xor al, byte [r12 - 2]
mov byte [rbp - 2], al
lea eax, [r9 + 1]
movzx esi, al
mov r8d, dword [rdi + rsi*4 + 8]
lea eax, [r8 + r10]
movzx r10d, al
mov eax, dword [rdi + r10*4 + 8]
mov dword [rdi + rsi*4 + 8], eax
add eax, r8d
mov dword [rdi + r10*4 + 8], r8d
movzx ecx, al
movzx eax, byte [rdi + rcx*4 + 8]
xor al, byte [r12 - 1]
sub r11, 1
mov byte [rbp - 1], al
jne 0x140130200
mov r9b, dl
and r9d, 7
je 0x1401305d5
lea eax, [rsi + 1]
add rbp, 1
add r12, 1
movzx esi, al
mov r8d, dword [rdi + rsi*4 + 8]
lea eax, [r8 + r10]
movzx r10d, al
mov eax, dword [rdi + r10*4 + 8]
mov dword [rdi + rsi*4 + 8], eax
add eax, r8d
mov dword [rdi + r10*4 + 8], r8d
movzx ecx, al
movzx eax, byte [rdi + rcx*4 + 8]
xor al, byte [r12 - 1]
sub r9, 1
mov byte [rbp - 1], al
je 0x1401305d5
nop
nop
lea eax, [rsi + 1]
movzx esi, al
mov r8d, dword [rdi + rsi*4 + 8]
lea eax, [r8 + r10]
movzx r10d, al
mov eax, dword [rdi + r10*4 + 8]
mov dword [rdi + rsi*4 + 8], eax
add eax, r8d
mov dword [rdi + r10*4 + 8], r8d
movzx ecx, al
movzx eax, byte [rdi + rcx*4 + 8]
xor al, byte [r12]
sub r9, 1
mov byte [rbp], al
je 0x1401305d5
lea eax, [rsi + 1]
movzx esi, al
mov r8d, dword [rdi + rsi*4 + 8]
lea eax, [r8 + r10]
movzx r10d, al
mov eax, dword [rdi + r10*4 + 8]
mov dword [rdi + rsi*4 + 8], eax
add eax, r8d
mov dword [rdi + r10*4 + 8], r8d
movzx ecx, al
movzx eax, byte [rdi + rcx*4 + 8]
xor al, byte [r12 + 1]
sub r9, 1
mov byte [rbp + 1], al
je 0x1401305d5
lea eax, [rsi + 1]
movzx esi, al
mov r8d, dword [rdi + rsi*4 + 8]
lea eax, [r8 + r10]
movzx r10d, al
mov eax, dword [rdi + r10*4 + 8]
mov dword [rdi + rsi*4 + 8], eax
add eax, r8d
mov dword [rdi + r10*4 + 8], r8d
movzx ecx, al
movzx eax, byte [rdi + rcx*4 + 8]
xor al, byte [r12 + 2]
sub r9, 1
mov byte [rbp + 2], al
je 0x1401305d5
lea eax, [rsi + 1]
movzx esi, al
mov r8d, dword [rdi + rsi*4 + 8]
lea eax, [r8 + r10]
movzx r10d, al
mov eax, dword [rdi + r10*4 + 8]
mov dword [rdi + rsi*4 + 8], eax
add eax, r8d
mov dword [rdi + r10*4 + 8], r8d
movzx ecx, al
movzx eax, byte [rdi + rcx*4 + 8]
xor al, byte [r12 + 3]
sub r9, 1
mov byte [rbp + 3], al
je 0x1401305d5
lea eax, [rsi + 1]
movzx esi, al
mov r8d, dword [rdi + rsi*4 + 8]
lea eax, [r8 + r10]
movzx r10d, al
mov eax, dword [rdi + r10*4 + 8]
mov dword [rdi + rsi*4 + 8], eax
add eax, r8d
mov dword [rdi + r10*4 + 8], r8d
movzx ecx, al
movzx eax, byte [rdi + rcx*4 + 8]
xor al, byte [r12 + 4]
sub r9, 1
mov byte [rbp + 4], al
je 0x1401305d5
lea eax, [rsi + 1]
movzx esi, al
mov r8d, dword [rdi + rsi*4 + 8]
lea eax, [r8 + r10]
movzx r10d, al
mov eax, dword [rdi + r10*4 + 8]
mov dword [rdi + rsi*4 + 8], eax
add eax, r8d
mov dword [rdi + r10*4 + 8], r8d
movzx ecx, al
movzx eax, byte [rdi + rcx*4 + 8]
xor al, byte [r12 + 5]
sub r9, 1
mov byte [rbp + 5], al
je 0x1401305d5
lea eax, [rsi + 1]
add rbp, 7
add r12, 7
movzx esi, al
mov r8d, dword [rdi + rsi*4 + 8]
lea eax, [r8 + r10]
movzx r10d, al
mov eax, dword [rdi + r10*4 + 8]
mov dword [rdi + rsi*4 + 8], eax
add eax, r8d
mov dword [rdi + r10*4 + 8], r8d
movzx ecx, al
movzx eax, byte [rdi + rcx*4 + 8]
xor al, byte [r12 - 1]
sub r9, 1
mov byte [rbp - 1], al
jne 0x140130420
mov rbp, qword [rsp + 0x40]
mov dword [rdi + 4], r10d
mov dword [rdi], esi
pop r13
pop r12
pop rdi
pop rsi
ret