Function at 0x14009ddfc
Capabilities:
Encode data using xor

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbp
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
push r12
push r13
push r14
push r15
mov esi, dword [rcx]
mov al, r8b
mov r10d, dword [rcx + 4]
or al, r9b
mov r14, r9
mov r15, r8
mov rbp, rdx
mov rdi, rcx
test al, 7
je 0x14009e1de
mov rbx, rdx
mov r12d, 1
shr rbx, 3
test rbx, rbx
je 0x14009e023
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
add eax, r8d
mov dword [rdi + r10*4 + 8], r8d
movzx ecx, al
mov al, byte [rdi + rcx*4 + 8]
xor al, byte [r15]
add r15, r12
mov byte [r14], al
lea eax, [r9 + 1]
movzx r9d, al
add r14, r12
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
mov al, byte [rdi + rcx*4 + 8]
xor al, byte [r15]
add r15, r12
mov byte [r14], al
lea eax, [r9 + 1]
movzx r9d, al
add r14, r12
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
mov al, byte [rdi + rcx*4 + 8]
xor al, byte [r15]
add r15, r12
mov byte [r14], al
lea eax, [r9 + 1]
movzx r9d, al
add r14, r12
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
mov al, byte [rdi + rcx*4 + 8]
xor al, byte [r15]
add r15, r12
mov byte [r14], al
lea eax, [r9 + 1]
movzx r9d, al
add r14, r12
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
mov al, byte [rdi + rcx*4 + 8]
xor al, byte [r15]
mov byte [r14], al
lea eax, [r9 + 1]
movzx r9d, al
add r14, r12
add r15, r12
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
mov al, byte [rdi + rcx*4 + 8]
xor al, byte [r15]
add r15, r12
mov byte [r14], al
add r14, r12
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
mov al, byte [rdi + rcx*4 + 8]
xor al, byte [r15]
add r15, r12
mov byte [r14], al
add r14, r12
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
mov al, byte [rdi + rcx*4 + 8]
xor al, byte [r15]
add r15, r12
mov byte [r14], al
add r14, r12
sub rbx, r12
jne 0x14009de4d
and ebp, 7
jmp 0x14009e555
mov rbx, qword [r15]
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]
movzx r9d, al
mov r11d, dword [rdi + rcx*4 + 8]
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
add r15, 8
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, 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
mov qword [r14], rax
add r14, 8
sub rbp, 8
test rbp, 0xfffffffffffffff8
jne 0x14009e02b
xor r11d, r11d
test rbp, rbp
je 0x14009e597
mov r12, qword [r15]
lea ecx, [r11 + 8]
mov r13, qword [r14]
sub cl, bpl
shl cl, 3
or r15, 0xffffffffffffffff
shr r15, cl
and ebp, 7
mov ebx, r11d
sub rbp, 1
je 0x14009e393
sub rbp, 1
je 0x14009e35c
sub rbp, 1
je 0x14009e325
sub rbp, 1
je 0x14009e2ee
sub rbp, 1
je 0x14009e2b7
sub rbp, 1
je 0x14009e280
cmp rbp, 1
jne 0x14009e3c8
lea eax, [rsi + 1]
movzx esi, al
lea ebx, [rbp + 7]
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
mov dword [rdi + rsi*4 + 8], ecx
lea eax, [rcx + rdx]
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
mov dword [rdi + rsi*4 + 8], ecx
lea eax, [rcx + rdx]
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
mov dword [rdi + rsi*4 + 8], ecx
lea eax, [rcx + rdx]
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
mov dword [rdi + rsi*4 + 8], ecx
lea eax, [rcx + rdx]
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
mov dword [rdi + rsi*4 + 8], ecx
lea eax, [rcx + rdx]
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
mov dword [rdi + rsi*4 + 8], edx
lea eax, [r8 + rdx]
movzx edx, al
mov eax, dword [rdi + rdx*4 + 8]
shl rax, cl
or r11, rax
xor r11, r12
and r11, r15
not r15
and r15, r13
or r11, r15
mov qword [r14], r11
jmp 0x14009e597
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
mov al, byte [rdi + rcx*4 + 8]
xor al, byte [r15]
add r15, r12
mov byte [r14], al
add r14, r12
sub rbp, r12
je 0x14009e597
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
mov al, byte [rdi + rcx*4 + 8]
xor al, byte [r15]
add r15, r12
mov byte [r14], al
add r14, r12
sub rbp, r12
je 0x14009e597
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
mov al, byte [rdi + rcx*4 + 8]
xor al, byte [r15]
add r15, r12
mov byte [r14], al
add r14, r12
sub rbp, r12
je 0x14009e597
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
mov al, byte [rdi + rcx*4 + 8]
xor al, byte [r15]
add r15, r12
mov byte [r14], al
add r14, r12
sub rbp, r12
je 0x14009e597
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
mov al, byte [rdi + rcx*4 + 8]
xor al, byte [r15]
add r15, r12
mov byte [r14], al
add r14, r12
sub rbp, r12
je 0x14009e597
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
mov al, byte [rdi + rcx*4 + 8]
xor al, byte [r15]
add r15, r12
mov byte [r14], al
add r14, r12
sub rbp, r12
je 0x14009e597
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
mov al, byte [rdi + rcx*4 + 8]
xor al, byte [r15]
add r15, r12
mov byte [r14], al
add r14, r12
sub rbp, r12
jne 0x14009e3df
mov dword [rdi], esi
mov dword [rdi + 4], r10d
mov rbx, qword [rsp + 0x28]
mov rbp, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
mov rdi, qword [rsp + 0x40]
pop r15
pop r14
pop r13
pop r12
ret