Function at 0x140091a90
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push r12
push r14
push r15
sub rsp, 0x30
mov rax, qword [rcx + 8]
xor edi, edi
mov r12, rdx
mov r15, rcx
mov r14d, edi
mov esi, edi
cmp rax, 0x40
jb 0x140091d1c
mov rcx, qword [rcx]
mov edx, 0x5a4d
cmp word [rcx], dx
jne 0x140091d1c
mov edx, dword [rcx + 0x3c]
add rax, 4
cmp rdx, rax
ja 0x140091d1c
cmp edx, 4
jb 0x140091d1c
mov qword [rsp + 0x50], rbx
lea rbx, [rcx - 4]
add rbx, rdx
add rcx, 0x40
cmp rbx, rcx
jb 0x140091b22
nop
cmp dword [rbx], 0x68636952
lea rax, [rbx - 4]
je 0x140091b19
mov rbx, rax
cmp rax, rcx
jae 0x140091b00
jmp 0x140091d17
mov esi, dword [rbx + 4]
mov r14, rbx
mov rbx, rax
movaps xmmword [rsp + 0x20], xmm6
movd xmm6, esi
pshufd xmm6, xmm6, 0
test esi, esi
je 0x140091d12
cmp rbx, rcx
jb 0x140091d12
mov eax, esi
xor eax, dword [rbx]
cmp eax, 0x536e6144
je 0x140091b5a
sub rbx, 4
cmp rbx, rcx
jae 0x140091b41
jmp 0x140091d12
sub r14, rbx
mov qword [rsp + 0x58], rbp
and r14, 0xfffffffffffffffc
mov rcx, r14
call fcn.14007c870
mov rbp, rax
test rax, rax
je 0x140091d0d
mov r8, r14
mov rdx, rbx
mov rcx, rax
call sub.VCRUNTIME140.dll_memcpy
sub rbx, qword [r15]
lea r8, str.rich_signature.offset
mov rdx, qword [r15 + 0x20]
lea rcx, [r12 + rbx]
call fcn.14007e1a0
mov rdx, qword [r15 + 0x20]
lea r8, str.rich_signature.length
mov rcx, r14
call fcn.14007e1a0
mov rdx, qword [r15 + 0x20]
lea r8, str.rich_signature.key
mov ecx, esi
call fcn.14007e1a0
mov rcx, r14
call fcn.14007c870
mov rbx, rax
test rax, rax
jne 0x140091bdc
mov rcx, rbp
jmp 0x140091d08
mov r8, r14
mov rdx, rbp
mov rcx, rbx
call sub.VCRUNTIME140.dll_memcpy
mov rcx, r14
lea rdx, [r14 + rbx]
shr rcx, 2
mov rax, rbx
cmp rbx, rdx
mov r8, rdi
cmova rcx, rdi
test rcx, rcx
je 0x140091c50
cmp rcx, 0x10
jb 0x140091c50
and rcx, 0xfffffffffffffff0
movdqu xmm0, xmmword [rax]
add r8, 0x10
xorps xmm0, xmm6
movdqu xmmword [rax], xmm0
movdqu xmm0, xmmword [rax + 0x10]
xorps xmm0, xmm6
movdqu xmmword [rax + 0x10], xmm0
movdqu xmm0, xmmword [rax + 0x20]
xorps xmm0, xmm6
movdqu xmmword [rax + 0x20], xmm0
movdqu xmm0, xmmword [rax + 0x30]
xorps xmm0, xmm6
movdqu xmmword [rax + 0x30], xmm0
add rax, 0x40
cmp r8, rcx
jb 0x140091c11
cmp rax, rdx
jae 0x140091c60
xor dword [rax], esi
add rax, 4
cmp rax, rdx
jb 0x140091c55
mov r8, qword [r15 + 0x20]
lea r9, str.rich_signature.raw_data
mov rdx, r14
mov rcx, rbp
call fcn.14007e220
mov rcx, rbp
call fcn.14007c7f0
mov r8, qword [r15 + 0x20]
lea r9, str.rich_signature.clear_data
mov rdx, r14
mov rcx, rbx
call fcn.14007e220
add r14, 0xfffffffffffffff0
shr r14, 3
lea rbp, [r14*4]
mov rcx, rbp
call fcn.14007c870
mov rsi, rax
test rax, rax
jne 0x140091cb9
mov rcx, rbx
jmp 0x140091d08
test r14, r14
je 0x140091ce7
mov rcx, rsi
lea r8, [rbx + 0x10]
nop word [rax + rax]
mov eax, dword [r8]
lea r8, [r8 + 8]
inc edi
mov dword [rcx], eax
movsxd rax, edi
lea rcx, [rcx + 4]
cmp rax, r14
jl 0x140091cd0
mov r8, qword [r15 + 0x20]
lea r9, str.rich_signature.version_data
mov rdx, rbp
mov rcx, rsi
call fcn.14007e220
mov rcx, rbx
call fcn.14007c7f0
mov rcx, rsi
call fcn.14007c7f0
mov rbp, qword [rsp + 0x58]
movaps xmm6, xmmword [rsp + 0x20]
mov rbx, qword [rsp + 0x50]
mov rsi, qword [rsp + 0x60]
mov rdi, qword [rsp + 0x68]
add rsp, 0x30
pop r15
pop r14
pop r12
ret