Function at 0x1800c1e88
Capabilities:
Encode data using xor

Disassembly:
mov rax, rsp
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x5f]
sub rsp, 0xa0
mov qword [rbp + 0x27], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rsi
mov qword [rax + 0x18], rdi
mov dword [rbp - 0x19], 0x2e
mov esi, 0x41
mov word [rbp - 0x15], si
lea eax, [rsi + 1]
mov word [rbp - 0x13], ax
lea eax, [rsi + 0xa]
mov word [rbp - 0x11], ax
lea eax, [rsi - 0x24]
mov word [rbp - 0xf], ax
lea eax, [rsi - 0x25]
mov word [rbp - 0xd], ax
xor eax, eax
mov word [rbp - 0xb], ax
movzx eax, word [rbp - 0x15]
xor edi, edi
mov edx, edi
lea ebx, [rsi - 0x40]
lea r15d, [rsi - 0x3c]
movzx eax, word [rbp + rdx*2 - 0x15]
mov ecx, dword [rbp - 0x19]
xor cx, ax
mov word [rbp + rdx*2 - 0x15], cx
add rdx, rbx
cmp rdx, r15
jb 0x1800c1ef4
mov word [rbp - 0xb], di
lea rcx, [rbp - 0x15]
call fcn.1801a9150
nop
xor edx, edx
lea r8d, [rdx + 0xc]
lea rcx, [rbp - 0x15]
call qword [sym.imp.VCRUNTIME140.dll_memset]
mov eax, 0x73
mov word [rbp - 9], ax
lea r13d, [rax - 3]
mov word [rbp - 7], r13w
lea eax, [r13 - 7]
mov word [rbp - 5], ax
lea eax, [r13 - 0xb]
mov word [rbp - 3], ax
lea eax, [r13 + 9]
mov word [rbp - 1], ax
lea eax, [r13 + 8]
mov word [rbp + 1], ax
lea eax, [r13 - 0x39]
mov word [rbp + 3], ax
lea eax, [r13 - 0x3a]
mov word [rbp + 5], ax
mov word [rbp + 7], di
movzx eax, word [rbp - 9]
mov rcx, rdi
lea r12d, [r13 - 0x6c]
movzx eax, word [rbp + rcx*2 - 9]
sub ax, r12w
mov word [rbp + rcx*2 - 9], ax
add rcx, rbx
cmp rcx, 8
jb 0x1800c1f7b
lea rcx, [rbp - 9]
call fcn.1801a9150
nop
mov r14d, 0x12
mov r8d, r14d
xor edx, edx
lea rcx, [rbp - 9]
call qword [sym.imp.VCRUNTIME140.dll_memset]
mov dword [rbp - 0x49], 0x29
mov eax, dword [rbp - 0x49]
xor ax, si
mov word [rbp - 0x45], ax
mov eax, dword [rbp - 0x49]
add ax, bx
xor ax, 0x64
mov word [rbp - 0x43], ax
mov eax, dword [rbp - 0x49]
add ax, 2
xor ax, 0x76
mov word [rbp - 0x41], ax
mov eax, dword [rbp - 0x49]
add ax, 3
xor ax, 0x61
mov word [rbp - 0x3f], ax
mov eax, dword [rbp - 0x49]
add ax, r12w
xor ax, r13w
mov word [rbp - 0x3d], ax
mov eax, dword [rbp - 0x49]
add ax, r15w
xor ax, 0x69
mov word [rbp - 0x3b], ax
mov eax, dword [rbp - 0x49]
add ax, 6
xor ax, 0x33
mov word [rbp - 0x39], ax
mov eax, dword [rbp - 0x49]
add ax, 7
xor ax, 0x32
mov word [rbp - 0x37], ax
xor eax, eax
mov word [rbp - 0x35], ax
movzx eax, word [rbp - 0x45]
mov rdx, rdi
movzx eax, word [rbp + rdx*2 - 0x45]
mov ecx, dword [rbp - 0x49]
add cx, dx
xor cx, ax
mov word [rbp + rdx*2 - 0x45], cx
add rdx, rbx
cmp rdx, 8
jb 0x1800c2037
mov word [rbp - 0x35], di
lea rcx, [rbp - 0x45]
call fcn.1801a9150
nop
mov r8, r14
xor edx, edx
lea rcx, [rbp - 0x45]
call qword [sym.imp.VCRUNTIME140.dll_memset]
mov dword [rbp + 0xb], 0x20
mov eax, 0x4e
mov word [rbp + 0xf], ax
mov eax, 0x45
mov word [rbp + 0x11], ax
mov eax, 0x54
mov word [rbp + 0x13], ax
mov word [rbp + 0x15], si
mov eax, 0x50
mov word [rbp + 0x17], ax
mov eax, 0x49
mov word [rbp + 0x19], ax
mov eax, 0x13
mov word [rbp + 0x1b], ax
mov word [rbp + 0x1d], r14w
xor eax, eax
mov word [rbp + 0x1f], ax
movzx eax, word [rbp + 0xf]
mov rdx, rdi
movzx eax, word [rbp + rdx*2 + 0xf]
mov ecx, dword [rbp + 0xb]
xor cx, ax
mov word [rbp + rdx*2 + 0xf], cx
add rdx, rbx
cmp rdx, 8
jb 0x1800c20c3
mov word [rbp + 0x1f], di
lea rcx, [rbp + 0xf]
call fcn.1801a9150
nop
mov r8, r14
xor edx, edx
lea rcx, [rbp + 0xf]
call qword [sym.imp.VCRUNTIME140.dll_memset]
mov dword [rbp - 0x31], r12d
mov eax, dword [rbp - 0x31]
xor ax, 0x73
mov word [rbp - 0x2d], ax
mov eax, dword [rbp - 0x31]
add ax, bx
xor ax, 0x65
mov word [rbp - 0x2b], ax
mov eax, dword [rbp - 0x31]
add ax, 2
xor ax, 0x74
mov word [rbp - 0x29], ax
mov eax, dword [rbp - 0x31]
add ax, 3
xor ax, 0x75
mov word [rbp - 0x27], ax
mov eax, dword [rbp - 0x31]
add ax, r12w
xor ax, r13w
mov word [rbp - 0x25], ax
mov eax, dword [rbp - 0x31]
add ax, r15w
xor ax, 0x61
mov word [rbp - 0x23], ax
mov eax, dword [rbp - 0x31]
add ax, 6
xor ax, r13w
mov word [rbp - 0x21], ax
mov eax, dword [rbp - 0x31]
add ax, 7
xor ax, 0x69
mov word [rbp - 0x1f], ax
xor eax, eax
mov word [rbp - 0x1d], ax
movzx eax, word [rbp - 0x2d]
mov rdx, rdi
movzx eax, word [rbp + rdx*2 - 0x2d]
mov ecx, dword [rbp - 0x31]
add cx, dx
xor cx, ax
mov word [rbp + rdx*2 - 0x2d], cx
add rdx, rbx
cmp rdx, 8
jb 0x1800c217d
mov word [rbp - 0x1d], di
lea rcx, [rbp - 0x2d]
call fcn.1801a9150
nop
mov r8, r14
xor edx, edx
lea rcx, [rbp - 0x2d]
call qword [sym.imp.VCRUNTIME140.dll_memset]
lea r11, [rsp + 0xa0]
mov rbx, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x38]
mov rdi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret