Function at 0x18000354c
Capabilities:
Create new key via cryptacquirecontext
Encode data using xor
Initialize hashing via wincrypt

Disassembly:
mov rax, rsp
mov qword [rax + 0x20], rbx
mov dword [rax + 0x18], r8d
mov qword [rax + 0x10], rdx
mov dword [rax + 8], ecx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x70
mov rdi, r9
mov ebx, ecx
xor r14d, r14d
lea rcx, [rbp - 0x18]
lea r9d, [r14 + 0x18]
xor r8d, r8d
xor edx, edx
mov dword [rsp + 0x20], 0xf0000000
call qword [sym.imp.ADVAPI32.dll_CryptAcquireContextW]
test eax, eax
je 0x18000377d
mov rcx, qword [rbp - 0x18]
lea rax, [rbp - 0x20]
xor r9d, r9d
xor r8d, r8d
mov edx, ebx
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
je 0x180003771
mov rcx, qword [rbp - 0x20]
and dword [rsp + 0x20], r14d
lea r9, [rbp - 0x30]
lea edx, [r14 + 2]
xor r8d, r8d
call qword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
test eax, eax
je 0x180003767
mov ebx, dword [rbp + 0x60]
lea esi, [r14 + 0x40]
lea rdx, [rbx + 4]
mov ecx, esi
mov qword [rbp - 0x10], rbx
call qword [sym.imp.KERNEL32.dll_LocalAlloc]
mov r12, rax
mov qword [rbp - 8], rax
test rax, rax
je 0x180003767
mov edx, dword [rbp - 0x30]
mov ecx, esi
call qword [sym.imp.KERNEL32.dll_LocalAlloc]
mov r15, rax
test rax, rax
je 0x18000375e
mov edx, dword [rbp - 0x30]
mov ecx, esi
call qword [sym.imp.KERNEL32.dll_LocalAlloc]
mov rsi, rax
test rax, rax
je 0x180003755
mov r8d, ebx
mov rdx, rdi
mov rcx, r12
mov r14d, 1
call fcn.18005bdd0
mov r13d, dword [rbp + 0x78]
mov eax, r14d
mov dword [rbp - 0x2c], eax
test r13d, r13d
je 0x18000374c
lea edx, [rbx + 4]
mov dword [rbp - 0x28], edx
bswap eax
mov rcx, qword [rbp - 0x10]
mov r8d, dword [rbp + 0x50]
mov dword [rcx + r12], eax
mov eax, dword [rbp - 0x30]
mov ecx, dword [rbp + 0x40]
mov dword [rsp + 0x30], eax
mov qword [rsp + 0x28], rsi
mov dword [rsp + 0x20], edx
mov rdx, qword [rbp + 0x48]
mov r9, r12
call fcn.1800033c0
mov r8d, dword [rbp - 0x30]
mov rdx, rsi
mov rcx, r15
call fcn.18005bdd0
mov eax, dword [rbp + 0x68]
mov edi, dword [rbp - 0x30]
cmp eax, r14d
jbe 0x180003714
mov r12d, dword [rbp + 0x40]
mov r13d, dword [rbp + 0x50]
lea ebx, [rax - 1]
mov rdx, qword [rbp + 0x48]
mov dword [rsp + 0x30], edi
mov r9, rsi
mov r8d, r13d
mov ecx, r12d
mov qword [rsp + 0x28], rsi
mov dword [rsp + 0x20], edi
call fcn.1800033c0
mov edi, dword [rbp - 0x30]
xor edx, edx
test edi, edi
je 0x1800036ed
mov al, byte [rdx + rsi]
xor byte [rdx + r15], al
mov edi, dword [rbp - 0x30]
add edx, r14d
cmp edx, edi
jb 0x1800036dc
cmp dword [rbp + 0x80], 0
je 0x180003707
mov r8d, edi
mov rdx, r15
mov rcx, rsi
call fcn.18005bdd0
mov edi, dword [rbp - 0x30]
sub rbx, r14
jne 0x1800036b4
mov r12, qword [rbp - 8]
mov r13d, dword [rbp + 0x78]
mov rcx, qword [rbp + 0x70]
cmp r13d, edi
mov rdx, r15
cmovb edi, r13d
mov r8d, edi
mov ebx, edi
call fcn.18005bdd0
mov eax, dword [rbp - 0x2c]
add qword [rbp + 0x70], rbx
mov edx, dword [rbp - 0x28]
sub r13d, edi
add eax, r14d
mov dword [rbp - 0x2c], eax
mov dword [rbp + 0x78], r13d
test r13d, r13d
jne 0x180003662
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_LocalFree]
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_LocalFree]
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_LocalFree]
mov rcx, qword [rbp - 0x20]
call qword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov rcx, qword [rbp - 0x18]
xor edx, edx
call qword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov eax, r14d
mov rbx, qword [rsp + 0xc8]
add rsp, 0x70
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret