Function at 0x140021ccd
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 8], rdi
mov qword [rsp + 0x10], rsi
mov rax, rsp
mov rdi, rcx
mov rsi, rdx
mov rdx, r8
mov rcx, r9
mov r8, qword [rsp + 0x28]
mov r9, qword [rsp + 0x30]
cmp rdx, 0
je 0x140021fb0
push rbx
push rbp
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x40
and rsp, 0xffffffffffffffc0
lea r10, [rcx - 0x7f]
sub r10, rsp
neg r10
and r10, 0x3c0
sub rsp, r10
mov r12, rdi
mov r13, rsi
mov rbx, r8
mov r14, rcx
mov r15d, dword [rcx + 0x110]
mov qword [rsp + 0x28], r8
mov qword [rsp + 0x30], rbp
lea rbp, [0x140020cc0]
mov ecx, 0x20
nop
mov rax, qword [rbp]
mov rsi, qword [rbp + 0x20]
mov rdi, qword [rbp + 0x40]
mov r11, qword [rbp + 0x60]
lea rbp, [rbp + 0x80]
loop 0x140021d40
sub rbp, 0x1000
shl r15, 6
mov rcx, rdx
lea r15, [r14 + r15]
cmp r9d, 0
je 0x140021e70
and rdx, 0xfffffffffffffff0
and rcx, 0xf
lea rdx, [r12 + rdx]
mov qword [rsp], r14
mov qword [rsp + 8], rdx
mov qword [rsp + 0x10], rcx
cmp rdx, r12
mov r8d, dword [rbx]
mov r9d, dword [rbx + 4]
mov r10d, dword [rbx + 8]
mov r11d, dword [rbx + 0xc]
je 0x140021e30
jmp 0x140021db0
xor r8d, dword [r12]
xor r9d, dword [r12 + 4]
xor r10d, dword [r12 + 8]
bswap r8d
xor r11d, dword [r12 + 0xc]
bswap r9d
bswap r10d
bswap r11d
call fcn.14001fe40
mov r14, qword [rsp]
bswap r8d
mov rdx, qword [rsp + 8]
bswap r9d
mov rcx, qword [rsp + 0x10]
bswap r10d
mov dword [r13], r8d
bswap r11d
mov dword [r13 + 4], r9d
mov dword [r13 + 8], r10d
lea r12, [r12 + 0x10]
mov dword [r13 + 0xc], r11d
cmp r12, rdx
lea r13, [r13 + 0x10]
jne 0x140021db0
cmp rcx, 0
jne 0x140021e30
mov r13, qword [rsp + 0x28]
mov dword [r13], r8d
mov dword [r13 + 4], r9d
mov dword [r13 + 8], r10d
mov dword [r13 + 0xc], r11d
jmp 0x140021f90
xor rax, rax
mov qword [rsp + 0x18], rax
mov qword [rsp + 0x20], rax
mov qword [rsp + 0x10], rax
pushfq
cld
mov rsi, r12
lea rdi, [rsp + 0x20]
rep movsb byte [rdi], byte [rsi]
nop
popfq
lea r12, [rsp + 0x18]
lea rax, [rsp + 0x28]
mov qword [rsp + 8], rax
jmp 0x140021db0
xchg r14, r15
add rdx, 0xf
and rcx, 0xf
and rdx, 0xfffffffffffffff0
mov qword [rsp], r14
lea rdx, [r12 + rdx]
mov qword [rsp + 8], rdx
mov qword [rsp + 0x10], rcx
mov rax, qword [rbx]
mov rbx, qword [rbx + 8]
jmp 0x140021ea0
mov r8d, dword [r12]
mov r9d, dword [r12 + 4]
mov r10d, dword [r12 + 8]
bswap r8d
mov r11d, dword [r12 + 0xc]
bswap r9d
mov qword [rsp + 0x18], rax
bswap r10d
mov qword [rsp + 0x20], rbx
bswap r11d
call fcn.1400201d0
mov r14, qword [rsp]
mov rdx, qword [rsp + 8]
mov rcx, qword [rsp + 0x10]
bswap r8d
mov rax, qword [r12]
bswap r9d
mov rbx, qword [r12 + 8]
bswap r10d
xor r8d, dword [rsp + 0x18]
bswap r11d
xor r9d, dword [rsp + 0x1c]
xor r10d, dword [rsp + 0x20]
lea r12, [r12 + 0x10]
xor r11d, dword [rsp + 0x24]
cmp r12, rdx
je 0x140021f30
mov dword [r13], r8d
mov dword [r13 + 4], r9d
mov dword [r13 + 8], r10d
mov dword [r13 + 0xc], r11d
lea r13, [r13 + 0x10]
jmp 0x140021ea0
mov rdx, qword [rsp + 0x28]
cmp rcx, 0
jne 0x140021f60
mov dword [r13], r8d
mov dword [r13 + 4], r9d
mov dword [r13 + 8], r10d
mov dword [r13 + 0xc], r11d
mov qword [rdx], rax
mov qword [rdx + 8], rbx
jmp 0x140021f90
mov dword [rsp + 0x18], r8d
mov dword [rsp + 0x1c], r9d
mov dword [rsp + 0x20], r10d
mov dword [rsp + 0x24], r11d
pushfq
cld
lea rsi, [rsp + 0x20]
lea rdi, [r13]
rep movsb byte [rdi], byte [rsi]
nop
popfq
mov qword [rdx], rax
mov qword [rdx + 8], rbx
jmp 0x140021f90
mov rcx, qword [rsp + 0x30]
mov r15, qword [rcx]
mov r14, qword [rcx + 8]
mov r13, qword [rcx + 0x10]
mov r12, qword [rcx + 0x18]
mov rbp, qword [rcx + 0x20]
mov rbx, qword [rcx + 0x28]
lea rsp, [rcx + 0x30]
mov rdi, qword [rsp + 8]
mov rsi, qword [rsp + 0x10]
repz ret