Function at 0x14006f690
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x2f8
mov rax, qword [0x1400f5980]
xor rax, rsp
mov qword [rsp + 0x2f0], rax
mov r15d, 0xffffff53
test rcx, rcx
je 0x14006fac6
mov r14d, r8d
mov esi, dword [rsp + 0x370]
mov eax, dword [rsp + 0x360]
or eax, r8d
or eax, esi
js 0x14006fac6
mov rbp, r9
mov r12, rdx
mov rdi, rcx
mov r13d, dword [rsp + 0x378]
mov eax, dword [rsp + 0x368]
cmp eax, 2
mov ebx, 1
cmovge ebx, eax
mov ecx, r13d
call fcn.140058000
mov ecx, eax
call fcn.140058010
mov dword [rsp + 0x38], eax
test eax, eax
js 0x14006fac6
mov r8d, dword [rsp + 0x388]
mov rdx, qword [rsp + 0x380]
lea rcx, [rsp + 0x80]
call fcn.14004d740
mov r15d, eax
test eax, eax
jne 0x14006fac6
lea rcx, [rsp + 0x80]
mov edx, r13d
mov r8, r12
mov r9d, r14d
call fcn.14004cf40
mov r15d, eax
test eax, eax
jne 0x14006fab9
test esi, esi
je 0x14006fab9
mov eax, 1
lea r12, [rsp + 0x80]
lea r13, [rsp + 0x7f]
mov qword [rsp + 0x40], rbp
jmp 0x14006f7b0
mov rcx, qword [rsp + 0x48]
add rdi, rcx
mov eax, dword [rsp + 0x30]
inc eax
sub esi, ecx
mov rbp, qword [rsp + 0x40]
lea r12, [rsp + 0x80]
lea r13, [rsp + 0x7f]
je 0x14006faed
mov dword [rsp + 0x30], eax
mov rcx, r12
mov rdx, rbp
mov r8d, dword [rsp + 0x360]
call fcn.14004d360
test eax, eax
jne 0x14006fab6
mov r14d, ebx
mov ebx, dword [rsp + 0x30]
mov eax, ebx
shr eax, 0x18
mov byte [rsp + 0x7f], al
mov rcx, r12
mov rdx, r13
mov r8d, 1
call fcn.14004d360
test eax, eax
jne 0x14006fab6
mov eax, ebx
shr eax, 0x10
mov byte [rsp + 0x7f], al
mov rcx, r12
mov rdx, r13
mov r8d, 1
call fcn.14004d360
test eax, eax
jne 0x14006fab6
mov byte [rsp + 0x7f], bh
mov rcx, r12
mov rdx, r13
mov r8d, 1
call fcn.14004d360
test eax, eax
jne 0x14006fab6
mov byte [rsp + 0x7f], bl
mov rcx, r12
mov rdx, r13
mov r8d, 1
call fcn.14004d360
test eax, eax
jne 0x14006fab6
mov rcx, r12
lea rbx, [rsp + 0x2b0]
mov rdx, rbx
call fcn.14004d4f0
test eax, eax
jne 0x14006fab6
mov ebp, dword [rsp + 0x38]
cmp esi, ebp
cmovb ebp, esi
mov r15d, ebp
movsxd r8, ebp
mov rcx, rdi
mov rdx, rbx
mov qword [rsp + 0x48], r8
call fcn.1400ca7f0
mov ebx, r14d
cmp r14d, 2
jb 0x14006f788
mov ecx, r15d
shr ecx, 3
cmp r15d, 8
setb al
mov edx, r15d
and edx, 7
mov qword [rsp + 0x68], rcx
dec ecx
mov qword [rsp + 0x70], rcx
lea r14, [rcx + 1]
test dil, 7
setne cl
mov dword [rsp + 0x34], edx
cmove r15d, edx
mov dword [rsp + 0x3c], r15d
or cl, al
mov byte [rsp + 0x2f], cl
mov qword [rsp + 0x60], r14
and r14, 0xfffffffffffffffc
lea rax, [rdi + r14*8]
mov qword [rsp + 0x58], rax
lea rax, [rsp + r14*8]
add rax, 0x2b0
mov qword [rsp + 0x50], rax
mov r13d, 1
jmp 0x14006f91c
inc r13d
cmp r13d, ebx
je 0x14006f788
lea r12, [rsp + 0x80]
mov rcx, r12
lea rbp, [rsp + 0x2b0]
mov rdx, rbp
mov r8d, dword [rsp + 0x38]
call fcn.14004d360
test eax, eax
jne 0x14006fab6
mov rcx, r12
mov rdx, rbp
call fcn.14004d4f0
test eax, eax
jne 0x14006fab6
mov rax, rdi
mov rcx, rbp
mov r8d, dword [rsp + 0x3c]
cmp byte [rsp + 0x2f], 0
jne 0x14006f9ff
xor edx, edx
mov rax, rdi
mov rcx, rbp
cmp dword [rsp + 0x70], 3
jb 0x14006f9c4
xor eax, eax
nop
movups xmm0, xmmword [rdi + rax*8]
movups xmm1, xmmword [rdi + rax*8 + 0x10]
xorps xmm0, xmmword [rsp + rax*8 + 0x2b0]
xorps xmm1, xmmword [rsp + rax*8 + 0x2c0]
movups xmmword [rdi + rax*8], xmm0
movups xmmword [rdi + rax*8 + 0x10], xmm1
add rax, 4
cmp r14, rax
jne 0x14006f980
mov rax, qword [rsp + 0x58]
mov rcx, qword [rsp + 0x50]
mov edx, r14d
mov r8d, dword [rsp + 0x34]
cmp qword [rsp + 0x60], r14
je 0x14006f9ff
mov r8, qword [rsp + 0x68]
sub r8d, edx
xor edx, edx
xor r9d, r9d
nop word cs:[rax + rax]
mov r10, qword [rcx + r9*8]
xor qword [rax + r9*8], r10
inc r9
add rdx, 0xfffffffffffffff8
cmp r8d, r9d
jne 0x14006f9e0
sub rax, rdx
sub rcx, rdx
mov r8d, dword [rsp + 0x34]
test r8d, r8d
je 0x14006f910
mov edx, r8d
cmp r8d, 8
jae 0x14006fa19
xor r8d, r8d
jmp 0x14006faa0
cmp r8d, 0x20
jae 0x14006fa24
xor r8d, r8d
jmp 0x14006fa6e
mov r8d, edx
and r8d, 0xffffffe0
xor r9d, r9d
nop
movups xmm0, xmmword [rcx + r9]
movups xmm1, xmmword [rcx + r9 + 0x10]
movups xmm2, xmmword [rax + r9]
xorps xmm2, xmm0
movups xmm0, xmmword [rax + r9 + 0x10]
xorps xmm0, xmm1
movups xmmword [rax + r9], xmm2
movups xmmword [rax + r9 + 0x10], xmm0
add r9, 0x20
cmp r8, r9
jne 0x14006fa30
cmp r8, rdx
je 0x14006f910
test dl, 0x18
je 0x14006faa0
mov r9, r8
mov r8d, edx
and r8d, 0xfffffff8
nop dword [rax + rax]
mov r10, qword [rcx + r9]
xor qword [rax + r9], r10
add r9, 8
cmp r8, r9
jne 0x14006fa80
cmp r8, rdx
je 0x14006f910
nop word [rax + rax]
movzx r9d, byte [rcx + r8]
xor byte [rax + r8], r9b
inc r8
cmp rdx, r8
jne 0x14006faa0
jmp 0x14006f910
mov r15d, eax
lea rcx, [rsp + 0x80]
call fcn.14004d320
mov rcx, qword [rsp + 0x2f0]
xor rcx, rsp
call fcn.14009adb0
mov eax, r15d
add rsp, 0x2f8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
xor r15d, r15d
jmp 0x14006fab9