Function at 0x180199710
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]
mov eax, r9d
or eax, r8d
mov rbp, r9
mov r12, r8
mov r13d, edx
mov rdi, rcx
test al, 3
jne 0x180199a2f
mov qword [rsp + 0x28], rbx
test r13, 0xfffffffffffffffc
je 0x18019983b
nop dword [rax]
mov ebx, dword [r12]
lea eax, [rsi + 1]
add r13d, 0xfffffffc
movzx r9d, al
add r12, 4
add rbp, 4
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 eax, 8
or r11d, eax
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 eax, 0x10
or r11d, eax
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
lea eax, [rcx + rdx]
mov dword [rdi + rsi*4 + 8], ecx
movzx ecx, al
mov eax, dword [rdi + rcx*4 + 8]
shl eax, 0x18
or eax, r11d
xor eax, ebx
mov dword [rbp - 4], eax
mov eax, r13d
test rax, 0xfffffffffffffffc
jne 0x180199750
test r13d, r13d
je 0x180199a18
xor r11d, r11d
mov qword [rsp + 0x30], r14
mov r14d, dword [r12]
or r12d, 0xffffffff
mov edx, r13d
mov ecx, 4
sub cl, r13b
and edx, 3
mov qword [rsp + 0x38], r15
mov r15d, dword [rbp]
shl cl, 3
mov ebx, r11d
shr r12d, cl
dec rdx
cmp rdx, 6
ja case.default.0x180199892
lea rcx, [0x180000000]
mov eax, dword [rcx + rdx*4 + 0x199e1c]
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
mov ecx, ebx
movzx edx, al
mov eax, dword [rdi + rdx*4 + 8]
shl eax, cl
or r11d, eax
add ebx, 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
mov ecx, ebx
movzx edx, al
mov eax, dword [rdi + rdx*4 + 8]
shl eax, cl
or r11d, eax
add ebx, 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
mov ecx, ebx
movzx edx, al
mov eax, dword [rdi + rdx*4 + 8]
shl eax, cl
or r11d, eax
add ebx, 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
mov ecx, ebx
movzx edx, al
mov eax, dword [rdi + rdx*4 + 8]
shl eax, cl
or r11d, eax
add ebx, 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
mov ecx, ebx
movzx edx, al
mov eax, dword [rdi + rdx*4 + 8]
shl eax, cl
or r11d, eax
add ebx, 8
lea eax, [rsi + 1]
mov ecx, ebx
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 eax, cl
or r11d, eax
xor r11d, r14d
mov r14, qword [rsp + 0x30]
and r11d, r12d
not r12d
and r12d, r15d
mov r15, qword [rsp + 0x38]
or r11d, r12d
mov dword [rbp], r11d
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 r11d, r13d
shr r11d, 3
test r11d, r11d
je 0x180199c05
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]
dec r11d
mov byte [rbp - 1], al
jne 0x180199a40
and r13d, 7
je 0x180199e0a
lea eax, [rsi + 1]
inc rbp
inc r12
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]
dec r13d
mov byte [rbp - 1], al
je 0x180199e0a
nop word [rax + rax]
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]
dec r13d
mov byte [rbp], al
je 0x180199e0a
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]
dec r13d
mov byte [rbp + 1], al
je 0x180199e0a
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]
dec r13d
mov byte [rbp + 2], al
je 0x180199e0a
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]
dec r13d
mov byte [rbp + 3], al
je 0x180199e0a
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]
dec r13d
mov byte [rbp + 4], al
je 0x180199e0a
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]
dec r13d
mov byte [rbp + 5], al
je 0x180199e0a
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]
dec r13d
mov byte [rbp - 1], al
jne 0x180199c60
mov rbp, qword [rsp + 0x40]
mov dword [rdi + 4], r10d
mov dword [rdi], esi
pop r13
pop r12
pop rdi
pop rsi
ret