Function at 0x1800204bc
Capabilities:
Hash data via bcrypt

Disassembly:
mov qword [rsp + 8], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x80
mov rax, qword [0x1800240b0]
xor rax, rsp
mov qword [rbp - 0x10], rax
movups xmm0, xmmword [0x180020750]
xor ebx, ebx
xor eax, eax
mov qword [r9], rax
mov dword [rbp - 0x28], r8d
mov r13, rdx
mov r12, r9
mov qword [r9 + 8], rax
lea r8, [0x180020760]
movdqu xmmword [rbp - 0x20], xmm0
lea rdx, [0x1800207a0]
lea rcx, [rbp - 0x38]
xor r9d, r9d
mov qword [rbp - 0x38], rbx
mov qword [rbp - 0x30], rbx
mov dword [rbp - 0x40], ebx
mov dword [rbp - 0x3c], ebx
mov r14d, ebx
mov esi, ebx
call qword [sym.imp.bcrypt.dll_BCryptOpenAlgorithmProvider]
lea r15d, [rbx + 0x10]
mov edi, eax
test eax, eax
js 0x1800205f2
mov rcx, qword [rbp - 0x38]
lea rax, [rbp - 0x3c]
lea r9d, [rbx + 4]
lea r8, [rbp - 0x40]
lea rdx, [0x1800207b0]
mov dword [rsp + 0x28], ebx
mov qword [rsp + 0x20], rax
call qword [sym.imp.bcrypt.dll_BCryptGetProperty]
mov edi, eax
test eax, eax
js 0x1800205f2
mov ecx, dword [rbp - 0x40]
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new_unsigned_long_long_unsigned___int64__]
test rax, rax
mov r14, rax
mov eax, 0xc0000017
cmove edi, eax
test edi, edi
js 0x1800205f4
mov r9d, dword [rbp - 0x40]
mov rcx, qword [rbp - 0x38]
mov dword [rsp + 0x30], ebx
lea rdx, [rbp - 0x30]
mov r8, r14
mov dword [rsp + 0x28], ebx
mov qword [rsp + 0x20], rbx
call qword [sym.imp.bcrypt.dll_BCryptCreateHash]
mov edi, eax
test eax, eax
js 0x1800205f2
mov rcx, qword [rbp - 0x30]
lea rdx, [rbp - 0x20]
xor r9d, r9d
mov r8d, r15d
mov dword [rbp - 0x20], 0x8d10593d
mov dword [rbp - 0x1c], 0x344fc519
call qword [sym.imp.bcrypt.dll_BCryptHashData]
mov edi, eax
test eax, eax
js 0x1800205f2
mov r8d, dword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
xor r9d, r9d
mov rdx, r13
call qword [sym.imp.bcrypt.dll_BCryptHashData]
mov edi, eax
test edi, edi
jne 0x18002063a
mov rcx, qword [rbp - 0x38]
lea rax, [rbp - 0x3c]
lea r8, [rbp - 0x40]
lea rdx, [0x1800207d0]
mov r9d, 4
mov dword [rsp + 0x28], ebx
mov qword [rsp + 0x20], rax
call qword [sym.imp.bcrypt.dll_BCryptGetProperty]
mov edi, eax
test eax, eax
jne 0x18002063a
mov ecx, dword [rbp - 0x40]
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new_unsigned_long_long_unsigned___int64__]
mov rsi, rax
test rax, rax
jne 0x180020642
mov edi, 0xc0000017
test edi, edi
js 0x1800206e0
mov r8d, dword [rbp - 0x40]
mov rcx, qword [rbp - 0x30]
xor r9d, r9d
mov rdx, rsi
call qword [sym.imp.bcrypt.dll_BCryptFinishHash]
mov edi, eax
test eax, eax
js 0x1800206e0
cmp dword [rbp - 0x40], r15d
jae 0x18002066a
mov r15d, dword [rbp - 0x40]
mov r8, r15
mov rdx, rsi
mov rcx, r12
call sub.msvcrt.dll_memcpy
mov ecx, dword [r12]
mov edx, ecx
mov eax, ecx
shr eax, 0x10
and edx, 0xff0000
or edx, eax
mov eax, ecx
and ecx, 0xff00
shl eax, 0x10
shr edx, 8
or eax, ecx
mov ecx, 0xfff
shl eax, 8
or edx, eax
movzx eax, word [r12 + 4]
rol ax, 8
mov dword [r12], edx
mov word [r12 + 4], ax
movzx eax, word [r12 + 6]
rol ax, 8
and ax, cx
mov ecx, 0x5000
or ax, cx
mov word [r12 + 6], ax
and byte [r12 + 8], 0x3f
or byte [r12 + 8], 0x80
mov rcx, qword [rbp - 0x30]
test rcx, rcx
je 0x1800206ef
call qword [sym.imp.bcrypt.dll_BCryptDestroyHash]
mov rcx, qword [rbp - 0x38]
test rcx, rcx
je 0x180020700
xor edx, edx
call qword [sym.imp.bcrypt.dll_BCryptCloseAlgorithmProvider]
test r14, r14
je 0x18002070e
mov rcx, r14
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete_void____ptr64_]
test rsi, rsi
je 0x18002071c
mov rcx, rsi
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete_void____ptr64_]
test edi, edi
jns 0x180020726
bts edi, 0x1c
mov ebx, edi
mov eax, ebx
mov rcx, qword [rbp - 0x10]
xor rcx, rsp
call fcn.180001ac0
mov rbx, qword [rsp + 0xc0]
add rsp, 0x80
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret