Function at 0x1401a3578
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x80
mov rdi, rcx
movaps xmmword [rsp + 0x70], xmm6
mov ecx, dword [rcx + 4]
sub ecx, 1
je 0x1401a35cf
cmp ecx, 1
je 0x1401a35b6
mov eax, 0xc004d203
jmp 0x1401a3cc4
movaps xmm0, xmmword [rdx]
mov rcx, rdi
lea rdx, [rbp - 0x20]
movdqa xmmword [rbp - 0x20], xmm0
call fcn.1401ac900
jmp 0x1401a3cc4
movaps xmm6, xmmword [rdx]
xor ebx, ebx
movq rax, xmm6
test rax, rax
je 0x1401a3cac
test r8d, r8d
je 0x1401a3cac
cmp r8d, 0x10
je 0x1401a35fb
mov ecx, 0xc004d201
jmp 0x1401a3cb1
mov esi, 0xb0
cmp qword [rdi + 0x18], rbx
jne 0x1401a3620
mov ecx, esi
call fcn.14019c8f4
mov qword [rdi + 0x18], rax
test rax, rax
jne 0x1401a3620
mov ecx, 0x8007000e
jmp 0x1401a3cb1
cmp qword [rdi + 0x20], rbx
jne 0x1401a3636
mov ecx, esi
call fcn.14019c8f4
mov qword [rdi + 0x20], rax
test rax, rax
je 0x1401a3616
mov rax, qword [rdi + 0x20]
lea rdx, [rbp - 0x20]
mov qword [rbp - 0x30], rax
lea rcx, [rbp - 0x30]
mov dword [rbp - 0x28], ebx
mov r8d, 4
movaps xmm0, xmmword [rbp - 0x30]
movdqa xmmword [rbp - 0x30], xmm0
movdqa xmmword [rbp - 0x20], xmm6
call fcn.1401a3310
mov rax, qword [rdi + 0x20]
mov r15d, SafeArrayGetElement
mov r14, qword [0x140605860]
mov qword [rbp - 0x30], rax
mov dword [rbp - 0x28], ebx
movaps xmm0, xmmword [rbp - 0x30]
movdqa xmmword [rbp - 0x30], xmm0
lea rax, [r14 + 0x2200]
mov r12d, dword [rbp - 0x28]
mov r13, qword [rbp - 0x30]
mov dword [rbp - 0x60], r12d
mov qword [rbp - 0x50], rax
mov dword [rbp + 0x58], r15d
mov qword [rbp - 0x40], 0xa
mov edx, r12d
mov rcx, r13
call fcn.14019cbe0
movzx ebx, al
lea edx, [r15 - 0x12]
mov rcx, r13
ror ebx, 8
call fcn.14019cbe0
movzx edi, al
lea edx, [r15 - 0x11]
add edi, ebx
mov rcx, r13
ror edi, 8
call fcn.14019cbe0
movzx ebx, al
lea edx, [r15 - 0x10]
add ebx, edi
mov rcx, r13
ror ebx, 8
call fcn.14019cbe0
movzx esi, al
lea edx, [r15 - 7]
add esi, ebx
mov rcx, r13
ror esi, 8
call fcn.14019cbe0
movzx ebx, al
lea edx, [r15 - 6]
mov rcx, r13
ror ebx, 8
call fcn.14019cbe0
movzx edi, al
lea edx, [r15 - 5]
add edi, ebx
mov rcx, r13
ror edi, 8
call fcn.14019cbe0
movzx ebx, al
lea edx, [r15 - 4]
add ebx, edi
mov rcx, r13
ror ebx, 8
call fcn.14019cbe0
mov r9d, 0xffffff00
movzx edx, al
mov rax, qword [rbp - 0x50]
add edx, ebx
ror edx, 8
movzx ecx, dl
and edx, r9d
movzx r8d, byte [rcx + r14 + 0x100]
or r8d, edx
rol r8d, 0x18
movzx ecx, r8b
and r8d, r9d
movzx edx, byte [rcx + r14 + 0x100]
or edx, r8d
rol edx, 0x18
movzx ecx, dl
and edx, r9d
movzx r8d, byte [rcx + r14 + 0x100]
or r8d, edx
rol r8d, 0x18
movzx ecx, r8b
and r8d, r9d
movzx ebx, byte [rcx + r14 + 0x100]
lea r14d, [r15 - 3]
or ebx, r8d
mov edx, r14d
xor ebx, esi
mov rcx, r13
xor ebx, dword [rax]
mov r8b, bl
call fcn.14019ccd0
shr ebx, 8
add r15d, 0xfffffffe
mov r8b, bl
mov edx, r15d
mov rcx, r13
call fcn.14019ccd0
shr ebx, 8
mov esi, dword [rbp + 0x58]
mov r8b, bl
mov rcx, r13
lea r12d, [rsi - 1]
mov edx, r12d
call fcn.14019ccd0
shr ebx, 8
mov edx, esi
mov r8b, bl
mov rcx, r13
call fcn.14019ccd0
lea edx, [rsi - 0xf]
mov rcx, r13
call fcn.14019cbe0
movzx ebx, al
lea edx, [rsi - 0xe]
mov rcx, r13
ror ebx, 8
call fcn.14019cbe0
movzx edi, al
lea edx, [rsi - 0xd]
add edi, ebx
mov rcx, r13
ror edi, 8
call fcn.14019cbe0
movzx ebx, al
lea edx, [rsi - 0xc]
add ebx, edi
mov rcx, r13
ror ebx, 8
call fcn.14019cbe0
movzx esi, al
mov edx, r14d
add esi, ebx
mov rcx, r13
ror esi, 8
call fcn.14019cbe0
movzx ebx, al
mov edx, r15d
mov rcx, r13
ror ebx, 8
call fcn.14019cbe0
movzx edi, al
mov edx, r12d
add edi, ebx
mov rcx, r13
ror edi, 8
call fcn.14019cbe0
mov edx, dword [rbp + 0x58]
mov rcx, r13
movzx ebx, al
add ebx, edi
ror ebx, 8
call fcn.14019cbe0
movzx edi, al
mov rcx, r13
add edi, ebx
mov ebx, dword [rbp + 0x58]
ror edi, 8
xor edi, esi
mov r8b, dil
lea r14d, [rbx + 1]
mov edx, r14d
call fcn.14019ccd0
shr edi, 8
lea r15d, [rbx + 2]
mov r8b, dil
mov edx, r15d
mov rcx, r13
call fcn.14019ccd0
shr edi, 8
lea r12d, [rbx + 3]
mov r8b, dil
mov edx, r12d
mov rcx, r13
call fcn.14019ccd0
mov rsi, qword [rbp - 0x30]
lea r13d, [rbx + 4]
shr edi, 8
mov edx, r13d
mov r8b, dil
mov rcx, rsi
call fcn.14019ccd0
lea edx, [rbx - 0xb]
mov rcx, rsi
call fcn.14019cbe0
mov edx, dword [rbp + 0x58]
mov rcx, rsi
movzx ebx, al
add edx, 0xfffffff6
ror ebx, 8
call fcn.14019cbe0
mov edx, dword [rbp + 0x58]
mov rcx, rsi
movzx edi, al
add edx, 0xfffffff7
add edi, ebx
ror edi, 8
call fcn.14019cbe0
mov edx, dword [rbp + 0x58]
mov rcx, rsi
movzx ebx, al
add edx, 0xfffffff8
add ebx, edi
ror ebx, 8
call fcn.14019cbe0
movzx esi, al
mov edx, r14d
mov r14, qword [rbp - 0x30]
add esi, ebx
mov rcx, r14
ror esi, 8
call fcn.14019cbe0
movzx ebx, al
mov edx, r15d
mov rcx, r14
ror ebx, 8
call fcn.14019cbe0
movzx edi, al
mov edx, r12d
add edi, ebx
mov rcx, r14
ror edi, 8
call fcn.14019cbe0
movzx ebx, al
mov edx, r13d
add ebx, edi
mov rcx, r14
ror ebx, 8
call fcn.14019cbe0
movzx edi, al
add edi, ebx
mov ebx, dword [rbp + 0x58]
ror edi, 8
xor edi, esi
mov rsi, qword [rbp - 0x30]
mov r8b, dil
mov rcx, rsi
lea r14d, [rbx + 5]
mov edx, r14d
call fcn.14019ccd0
shr edi, 8
lea r15d, [rbx + 6]
mov r8b, dil
mov edx, r15d
mov rcx, rsi
call fcn.14019ccd0
shr edi, 8
lea r12d, [rbx + 7]
mov r8b, dil
mov edx, r12d
mov rcx, rsi
call fcn.14019ccd0
lea r13d, [rbx + 8]
shr edi, 8
mov r8b, dil
mov edx, r13d
mov rcx, rsi
call fcn.14019ccd0
lea edx, [rbx - 7]
mov rcx, rsi
call fcn.14019cbe0
mov edx, dword [rbp + 0x58]
mov rcx, rsi
movzx ebx, al
add edx, 0xfffffffa
ror ebx, 8
call fcn.14019cbe0
mov edx, dword [rbp + 0x58]
mov rcx, rsi
movzx edi, al
add edx, 0xfffffffb
add edi, ebx
ror edi, 8
call fcn.14019cbe0
mov edx, dword [rbp + 0x58]
mov rcx, rsi
movzx ebx, al
add edx, 0xfffffffc
add ebx, edi
ror ebx, 8
call fcn.14019cbe0
movzx esi, al
mov edx, r14d
mov r14, qword [rbp - 0x30]
add esi, ebx
mov rcx, r14
ror esi, 8
call fcn.14019cbe0
movzx ebx, al
mov edx, r15d
mov rcx, r14
ror ebx, 8
call fcn.14019cbe0
movzx edi, al
mov edx, r12d
add edi, ebx
mov rcx, r14
ror edi, 8
call fcn.14019cbe0
movzx ebx, al
mov edx, r13d
add ebx, edi
mov rcx, r14
ror ebx, 8
mov r13, r14
call fcn.14019cbe0
mov r15d, dword [rbp + 0x58]
mov rcx, r14
movzx edi, al
add edi, ebx
ror edi, 8
xor edi, esi
lea edx, [r15 + 9]
mov r8b, dil
call fcn.14019ccd0
shr edi, 8
lea edx, [r15 + 0xa]
mov r8b, dil
mov rcx, r14
call fcn.14019ccd0
shr edi, 8
lea edx, [r15 + 0xb]
mov r8b, dil
mov rcx, r14
call fcn.14019ccd0
shr edi, 8
lea edx, [r15 + 0xc]
mov r8b, dil
mov rcx, r14
call fcn.14019ccd0
mov r12d, dword [rbp - 0x60]
add r15d, 0x10
add qword [rbp - 0x50], 4
add r12d, 0x10
sub qword [rbp - 0x40], 1
mov r14, qword [0x140605860]
mov dword [rbp - 0x60], r12d
mov dword [rbp + 0x58], r15d
jne 0x1401a36a6
mov rbx, qword [rbp + 0x40]
xor r15d, r15d
mov dword [rbp - 0x38], r15d
mov rax, qword [rbx + 0x18]
lea r13d, [r15 + 0xb]
mov qword [rbp - 0x40], rax
movaps xmm0, xmmword [rbp - 0x40]
movdqa xmmword [rbp - 0x20], xmm0
mov r14d, dword [rbp - 0x18]
mov rax, qword [rbp - 0x20]
mov edi, r14d
mov qword [rbp - 0x50], rax
mov esi, r12d
mov rax, qword [rbp - 0x30]
mov ebx, reloc.OLEAUT32.dll_SafeArrayGetDim
mov qword [rbp - 0x40], rax
mov dword [rbp - 0x48], r14d
mov dword [rbp - 0x38], r12d
movaps xmm1, xmmword [rbp - 0x40]
inc esi
movaps xmm2, xmmword [rbp - 0x50]
movdqa xmm0, xmm1
psrldq xmm0, 8
inc edi
movd r9d, xmm0
movq r8, xmm1
movdqa xmm0, xmm2
mov dword [rbp - 0x38], esi
psrldq xmm0, 8
movq rcx, xmm2
movd edx, xmm0
mov dword [rbp - 0x48], edi
call fcn.14019cc74
sub rbx, 1
jne 0x1401a3b3d
add r14d, 0x10
add r12d, 0xfffffff0
sub r13, 1
jne 0x1401a3b1a
mov rbx, qword [rbp + 0x40]
mov r13d, SafeArrayUnaccessData
mov r15, qword [0x140605860]
mov r12, qword [rbx + 0x18]
lea edx, [r13 - 2]
mov rcx, r12
call fcn.14019cbe0
movzx ebx, al
lea edx, [r13 - 1]
mov rcx, r12
ror ebx, 8
call fcn.14019cbe0
movzx edi, al
mov edx, r13d
add edi, ebx
mov rcx, r12
ror edi, 8
call fcn.14019cbe0
movzx ebx, al
lea edx, [r13 + 1]
add ebx, edi
mov rcx, r12
ror ebx, 8
call fcn.14019cbe0
movzx eax, al
lea edx, [r13 - 2]
add eax, ebx
ror eax, 8
mov r9d, eax
shr rax, 8
movzx eax, al
movzx r8d, byte [rax + r15 + 0x100]
mov eax, r9d
shr rax, 0x10
movzx eax, al
mov ebx, dword [r15 + r8*4 + 0xa00]
movzx ecx, byte [rax + r15 + 0x100]
mov eax, r9d
shr rax, 0x18
xor ebx, dword [r15 + rcx*4 + 0x600]
movzx ecx, byte [rax + r15 + 0x100]
movzx eax, r9b
xor ebx, dword [r15 + rcx*4 + 0x200]
movzx ecx, byte [rax + r15 + 0x100]
xor ebx, dword [r15 + rcx*4 + 0xe00]
mov rcx, r12
mov r8b, bl
call fcn.14019ccd0
shr ebx, 8
lea edx, [r13 - 1]
mov r8b, bl
mov rcx, r12
call fcn.14019ccd0
shr ebx, 8
mov edx, r13d
mov r8b, bl
mov rcx, r12
call fcn.14019ccd0
shr ebx, 8
lea edx, [r13 + 1]
mov r8b, bl
mov rcx, r12
call fcn.14019ccd0
add r13d, 4
cmp r13d, 0xa2
jb 0x1401a3ba2
xor r15d, r15d
jmp 0x1401a3cb9
mov ecx, 0x80070057
mov r15d, ecx
call fcn.14003e600
mov ecx, r15d
call fcn.14006a86c
mov eax, r15d
mov rbx, qword [rsp + 0xc8]
movaps xmm6, xmmword [rsp + 0x70]
add rsp, 0x80
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret