Function at 0x1401ac52c
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x20], r9
mov dword [rsp + 0x18], r8d
mov qword [rsp + 0x10], rdx
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x78
and qword [rbp - 0x48], 0
mov rax, rdx
cmp byte [rcx + 8], 0
mov r15, rcx
jne 0x1401ac570
mov edi, 0xc004d101
mov ecx, edi
call fcn.14003e510
jmp 0x1401ac74d
test rax, rax
jne 0x1401ac57e
mov ecx, 0x80070057
mov edi, ecx
jmp 0x1401ac566
mov rax, qword [rcx]
mov r14d, dword [rax + 0x10]
mov eax, dword [rbp + 0x68]
inc eax
add eax, r14d
cmp r8d, eax
jb 0x1401ac575
mov esi, r8d
mov dword [rbp + 0x48], r14d
sub esi, r14d
dec esi
mov dword [rbp + 0x70], esi
lea ecx, [r14 + rsi]
add ecx, r14d
add ecx, esi
call fcn.1400b74d4
mov rdx, rax
lea rcx, [rbp - 0x48]
call fcn.14003be24
mov rbx, qword [rbp - 0x48]
test rbx, rbx
jne 0x1401ac5cb
mov edi, 0x8007000e
jmp 0x1401ac564
mov ecx, esi
lea rax, [rsi + rbx]
mov qword [rbp - 0x38], rcx
lea r13, [r14 + rsi]
mov r12d, esi
lea r8, [rbp + 0x78]
add r12, r14
mov qword [rbp - 0x40], rax
add r12, rcx
mov dword [rbp + 0x78], esi
mov rcx, qword [r15]
mov r9, rbx
mov rdx, rbx
add r12, rbx
add r13, rbx
call fcn.1401ac93c
mov edi, eax
test eax, eax
jns 0x1401ac60e
mov ecx, eax
jmp 0x1401ac566
mov rax, qword [r15]
mov edi, dword [rbp + 0x58]
mov ecx, dword [rax + 0x10]
add ecx, ecx
sub edi, ecx
mov ecx, dword [rbp + 0x78]
sub edi, dword [rbp + 0x68]
sub edi, 2
je 0x1401ac636
mov r8d, edi
add rcx, rbx
xor edx, edx
call fcn.14001bade
mov ecx, dword [rbp + 0x78]
mov r8d, dword [rbp + 0x68]
add ecx, edi
mov rdx, qword [rbp + 0x60]
mov byte [rcx + rbx], 1
inc ecx
add rcx, rbx
call sub.msvcrt.dll_memcpy
mov rax, qword [rbp - 0x40]
lea rcx, [rbp - 0x30]
and dword [rbp - 0x28], 0
mov qword [rbp - 0x30], rax
call fcn.14019bdac
and dword [rbp - 0x10], 0
lea rcx, [rbp - 0x18]
mov qword [rbp - 0x18], rax
mov edx, r14d
movaps xmm0, xmmword [rbp - 0x18]
movdqa xmmword [rbp - 0x18], xmm0
call fcn.14019e734
mov edi, eax
test eax, eax
js 0x1401ac607
mov r9, qword [rbp - 0x40]
lea r8, [rbp + 0x70]
mov rcx, qword [r15]
mov rdx, r13
mov dword [rsp + 0x28], esi
mov dword [rsp + 0x20], r14d
call fcn.1401ac778
mov edi, eax
test eax, eax
js 0x1401ac607
test esi, esi
je 0x1401ac6c8
mov rcx, rbx
mov edx, esi
sub r13, rbx
mov al, byte [r13 + rcx]
xor byte [rcx], al
inc rcx
sub rdx, 1
jne 0x1401ac6b8
mov rcx, qword [r15]
lea r8, [rbp + 0x48]
mov r9, rbx
mov rdx, r12
mov eax, dword [rcx + 0x10]
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x20], esi
call fcn.1401ac778
mov edi, eax
test eax, eax
js 0x1401ac607
mov r14d, dword [rbp + 0x48]
test r14d, r14d
je 0x1401ac717
mov rbx, qword [rbp - 0x40]
mov rcx, r12
sub rbx, r12
mov edx, r14d
mov al, byte [rbx + rcx]
xor byte [rcx], al
inc rcx
sub rdx, 1
jne 0x1401ac705
mov rbx, qword [rbp - 0x48]
lea eax, [r14 + rsi]
cmp dword [rbp + 0x58], eax
jbe 0x1401ac575
mov rsi, qword [rbp + 0x50]
mov r8, r14
mov rdx, r12
lea rcx, [rsi + 1]
mov byte [rsi], 0
call sub.msvcrt.dll_memcpy
mov r8, qword [rbp - 0x38]
lea ecx, [r14 + 1]
add rcx, rsi
mov rdx, rbx
call sub.msvcrt.dll_memcpy
mov ecx, edi
call fcn.14006a5bc
lea rcx, [rbp - 0x48]
call fcn.14003b77c
mov eax, edi
add rsp, 0x78
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret