Function at 0x18007aa80
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x18], r8
push rbp
push rsi
push rdi
push r12
push r13
sub rsp, 0x30
mov r12, qword [rsp + 0x98]
mov rdi, rcx
mov r13d, dword [rsp + 0x90]
mov ecx, r9d
mov ebp, edx
call fcn.180051a70
mov esi, eax
test eax, eax
js 0x18007ad84
mov qword [rsp + 0x60], rbx
mov edx, 0xff
mov qword [rsp + 0x68], r14
mov qword [rsp + 0x78], r15
lea r15d, [r13 - 1]
and r15d, 7
mov ecx, r15d
shl edx, cl
test byte [rdi], dl
jne 0x18007ad70
lea ecx, [rbp - 1]
test r15d, r15d
lea rbx, [rdi + 1]
cmovne ecx, ebp
cmovne rbx, rdi
mov ebp, ecx
sub ebp, eax
sub ebp, 1
jns 0x18007ab04
mov eax, 0xffffff16
jmp 0x18007ad75
mov r14d, dword [rsp + 0x88]
cmp r14d, 0xffffffff
jne 0x18007ab29
mov r14d, esi
cmp r13d, 0x400
jne 0x18007ab3c
cmp esi, 0x40
jne 0x18007ab3c
lea r14d, [rsi - 2]
jmp 0x18007ab3c
cmp r14d, esi
jg 0x18007ac42
cmp r14d, 0xffffffff
jl 0x18007ac42
lea eax, [r14 + 1]
cmp ebp, eax
jl 0x18007ac42
lea eax, [rcx - 1]
cmp byte [rax + rbx], 0xbc
jne 0x18007ad70
movsxd r13, ebp
mov rcx, r13
call fcn.18004b0c0
mov rdi, rax
test rax, rax
jne 0x18007ab70
lea eax, [rdi - 0x7d]
jmp 0x18007ad75
mov ecx, dword [rsp + 0x80]
lea rdx, [rbx + r13]
sub ecx, 1
je 0x18007abba
sub ecx, 1
je 0x18007abb3
sub ecx, 1
je 0x18007abac
cmp ecx, 0x17
je 0x18007aba5
mov rcx, rdi
mov r12d, 0xffffff53
call fcn.18004b0a0
mov eax, r12d
jmp 0x18007ad75
mov ecx, 4
jmp 0x18007abbf
mov ecx, 8
jmp 0x18007abbf
mov ecx, 7
jmp 0x18007abbf
mov ecx, 6
mov r9, rdi
mov qword [rsp + 0x28], r12
mov r8d, esi
mov dword [rsp + 0x20], ebp
call fcn.180079580
mov r12d, eax
test eax, eax
je 0x18007abea
mov rcx, rdi
call fcn.18004b0a0
mov eax, r12d
jmp 0x18007ad75
mov eax, 1
xor edx, edx
mov ecx, r15d
shl al, cl
dec al
and byte [rdi], al
and byte [rbx], al
mov eax, ebp
sub eax, r14d
dec eax
movsxd r9, eax
test eax, eax
jle 0x18007ac2c
mov r8, rdi
mov rcx, rbx
sub r8, rbx
movzx eax, byte [rcx]
cmp byte [r8 + rcx], al
jne 0x18007ac3a
inc rcx
inc edx
mov rax, rcx
sub rax, rbx
cmp rax, r9
jl 0x18007ac13
movsxd rcx, edx
movzx eax, byte [rbx + rcx]
xor al, 1
cmp byte [rcx + rdi], al
je 0x18007ac4c
mov rcx, rdi
call fcn.18004b0a0
mov eax, 0xffffff06
jmp 0x18007ad75
inc edx
mov r8d, ebp
sub r8d, edx
mov r9d, edx
cmp edx, ebp
jge 0x18007ad20
cmp r8d, 0x40
jb 0x18007ad20
movsxd r10, edx
lea eax, [rbp - 1]
movsxd rdx, eax
lea rcx, [rbx + r10]
lea rax, [rdx + rdi]
lea r11, [rbx + rdx]
lea r15, [r10 + rdi]
cmp rcx, rax
ja 0x18007ac90
cmp r11, r15
jae 0x18007ad20
and r8d, 0x8000003f
jge 0x18007aca3
dec r8d
or r8d, 0xffffffc0
inc r8d
sub ebp, r8d
lea rcx, [rbx + 0x10]
mov rdx, rdi
movsxd r11, ebp
add rcx, r10
sub rdx, rbx
mov r8, 0xfffffffffffffff0
sub r8, rbx
movdqu xmm0, xmmword [rcx - 0x10]
add r9d, 0x40
movdqu xmm1, xmmword [rcx + rdx - 0x10]
movdqu xmm2, xmmword [rcx + rdx]
lea rcx, [rcx + 0x40]
pxor xmm1, xmm0
lea rax, [rcx + r8]
movdqu xmmword [rcx - 0x50], xmm1
movdqu xmm0, xmmword [rcx - 0x40]
movdqu xmm1, xmmword [rdx + rcx - 0x30]
pxor xmm2, xmm0
movdqu xmmword [rcx - 0x40], xmm2
movdqu xmm0, xmmword [rcx - 0x30]
pxor xmm1, xmm0
movdqu xmmword [rcx - 0x30], xmm1
movdqu xmm0, xmmword [rcx - 0x20]
movdqu xmm1, xmmword [rdx + rcx - 0x20]
pxor xmm1, xmm0
movdqu xmmword [rcx - 0x20], xmm1
cmp rax, r11
jl 0x18007acc0
movsxd rcx, r9d
cmp rcx, r13
jge 0x18007ad51
mov r8, rdi
lea rax, [rbx + rcx]
sub r8, rbx
mov rdx, r13
sub rdx, rcx
nop dword [rax + rax]
movzx ecx, byte [r8 + rax]
xor byte [rax], cl
lea rax, [rax + 1]
sub rdx, 1
jne 0x18007ad40
mov rcx, rdi
call fcn.18004b0a0
movsxd rax, r14d
sub rbx, rax
mov rax, qword [rsp + 0x70]
add rbx, r13
mov qword [rax], rbx
lea eax, [rsi + r14]
jmp 0x18007ad75
mov eax, 0xffffff3f
mov r14, qword [rsp + 0x68]
mov rbx, qword [rsp + 0x60]
mov r15, qword [rsp + 0x78]
add rsp, 0x30
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret