Function at 0x140196d3c
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, 0x68
xor edi, edi
mov rax, rdx
mov r14, rcx
cmp byte [rcx + 8], dil
jne 0x140196d7d
mov ebx, 0xc004d101
mov ecx, ebx
call fcn.14007ab24
jmp 0x140196f60
test rax, rax
jne 0x140196d8b
mov ecx, 0x80070057
mov ebx, ecx
jmp 0x140196d73
mov rax, qword [rcx]
mov r13d, dword [rbp + 0x68]
mov esi, dword [rax + 0x10]
lea eax, [r13 + 1]
add eax, esi
cmp r8d, eax
jb 0x140196d82
mov r15d, r8d
mov dword [rbp + 0x48], esi
sub r15d, esi
dec r15d
mov dword [rbp + 0x70], r15d
lea eax, [r15 + rsi]
lea ebx, [rax + rax]
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov r8d, ebx
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
mov rdi, rax
test rax, rax
jne 0x140196dda
mov ebx, 0x8007000e
jmp 0x140196d71
mov edx, r15d
lea rcx, [rax + rsi]
add rcx, rdx
mov r12d, r15d
add r12, rsi
mov qword [rbp - 0x38], rcx
mov rcx, qword [r14]
lea r8, [rbp + 0x78]
add r12, rdx
mov dword [rbp + 0x78], r15d
mov rdx, rdi
mov r9, rdi
add r12, rdi
call fcn.1401968c8
mov ebx, eax
test eax, eax
jns 0x140196e17
mov ecx, eax
jmp 0x140196d73
mov rax, qword [r14]
mov ebx, dword [rbp + 0x58]
mov ecx, dword [rax + 0x10]
add ecx, ecx
sub ebx, ecx
sub ebx, r13d
sub ebx, 2
je 0x140196e3c
mov ecx, dword [rbp + 0x78]
xor edx, edx
add rcx, rdi
mov r8d, ebx
call sub.msvcrt.dll_memset
mov ecx, dword [rbp + 0x78]
mov r8, r13
mov rdx, qword [rbp + 0x60]
add ecx, ebx
mov byte [rcx + rdi], 1
inc ecx
add rcx, rdi
call sub.msvcrt.dll_memcpy
and dword [rbp - 0x28], 0
mov r13d, r15d
add r13, rdi
mov qword [rbp - 0x30], r13
jne 0x140196e6a
xor eax, eax
jmp 0x140196e7a
mov rax, qword [0x140438658]
mov ecx, dword [rax]
lea rax, [rbp - 0x30]
add rax, rcx
and dword [rbp - 0x10], 0
lea rcx, [rbp - 0x18]
mov qword [rbp - 0x18], rax
mov edx, esi
movaps xmm0, xmmword [rbp - 0x18]
movdqa xmmword [rbp - 0x18], xmm0
call fcn.140188804
mov ebx, eax
test eax, eax
js 0x140196e10
mov rcx, qword [r14]
lea r8, [rbp + 0x70]
mov dword [rsp + 0x28], r15d
mov r9, r13
mov dword [rsp + 0x20], esi
mov rsi, qword [rbp - 0x38]
mov rdx, rsi
call fcn.140196970
mov ebx, eax
test eax, eax
js 0x140196e10
test r15d, r15d
je 0x140196ee5
mov rcx, rdi
mov edx, r15d
sub rsi, rdi
mov al, byte [rsi + rcx]
xor byte [rcx], al
inc rcx
sub rdx, 1
jne 0x140196ed7
mov rcx, qword [r14]
lea r8, [rbp + 0x48]
mov r9, rdi
mov rdx, r12
mov eax, dword [rcx + 0x10]
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x20], r15d
call fcn.140196970
mov ebx, eax
test eax, eax
js 0x140196e10
mov esi, dword [rbp + 0x48]
test esi, esi
je 0x140196f2b
mov rcx, r12
sub r13, r12
mov edx, esi
mov al, byte [rcx + r13]
xor byte [rcx], al
inc rcx
sub rdx, 1
jne 0x140196f1c
lea eax, [rsi + r15]
cmp dword [rbp + 0x58], eax
jbe 0x140196d82
mov r14, qword [rbp + 0x50]
mov r8, rsi
mov rdx, r12
lea rcx, [r14 + 1]
mov byte [r14], 0
call sub.msvcrt.dll_memcpy
lea ecx, [rsi + 1]
mov r8d, r15d
add rcx, r14
mov rdx, rdi
call sub.msvcrt.dll_memcpy
mov ecx, ebx
call fcn.14007ab44
test rdi, rdi
je 0x140196f80
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov r8, rdi
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov eax, ebx
add rsp, 0x68
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret