Function at 0x180013090
Capabilities:
Hash data via bcrypt

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], r8
mov qword [rsp + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x27]
sub rsp, 0x90
mov rbx, r9
mov rsi, rdx
mov rdi, rcx
xor r14d, r14d
mov dword [rbp - 0x29], r14d
lea rax, vtable.CVolCommonBaseWithMemManager.0
mov qword [rbp - 0x11], rax
lea r15, vtable.CVolObject.0
mov qword [rbp - 0x11], r15
mov qword [rbp - 9], r14
mov qword [rbp - 1], r14
lea r12, vtable.CVolMem.0
mov qword [rbp - 0x11], r12
mov qword [rbp + 7], r14
mov qword [rbp + 0x17], r14
mov qword [rbp + 0xf], r14
mov r13d, 0x40
mov qword [rbp + 0x1f], r13
mov rdx, qword [0x180114088]
test byte [r9 + 8], 1
je 0x1800131a8
test rdx, rdx
jne 0x180013132
lea rdx, [0x1800f7c64]
cmp qword [0x1801140b8], r14
cmovne rdx, qword [0x1801140a8]
xor r9d, r9d
xor r8d, r8d
lea rcx, [rbp - 0x21]
call qword [sym.imp.bcrypt.dll_BCryptOpenAlgorithmProvider]
test eax, eax
jns 0x180013194
mov qword [rdi], r15
mov qword [rdi + 8], r14
mov qword [rdi + 0x10], r14
mov qword [rdi], r12
mov qword [rdi + 0x18], r14
mov qword [rdi + 0x28], r14
mov qword [rdi + 0x20], r14
mov qword [rdi + 0x30], r13
mov dword [rbp - 0x29], 1
mov qword [rbp - 0x11], r12
mov rdx, qword [rbp + 7]
test rdx, rdx
je 0x180013183
lea rcx, [rbp - 0x11]
mov rax, qword [rbp - 0x11]
call qword [rax + Ordinal_26]
mov qword [rbp + 7], r14
mov qword [rbp + 0x17], r14
mov qword [rbp + 0xf], r14
jmp 0x18001350a
mov dword [rsp + 0x30], r14d
mov dword [rsp + 0x28], r14d
mov qword [rsp + 0x20], r14
jmp 0x180013247
test rdx, rdx
jne 0x1800131c4
lea rdx, [0x1800f7c64]
cmp qword [0x1801140b8], 0
cmovne rdx, qword [0x1801140a8]
mov r9d, 8
xor r8d, r8d
lea rcx, [rbp - 0x21]
call qword [sym.imp.bcrypt.dll_BCryptOpenAlgorithmProvider]
test eax, eax
jns 0x180013229
mov qword [rdi], r15
mov qword [rdi + 8], r14
mov qword [rdi + 0x10], r14
mov qword [rdi], r12
mov qword [rdi + 0x18], r14
mov qword [rdi + 0x28], r14
mov qword [rdi + 0x20], r14
mov qword [rdi + 0x30], r13
mov dword [rbp - 0x29], 1
mov qword [rbp - 0x11], r12
mov rdx, qword [rbp + 7]
test rdx, rdx
je 0x180013218
lea rcx, [rbp - 0x11]
mov rax, qword [rbp - 0x11]
call qword [rax + Ordinal_26]
mov qword [rbp + 7], r14
mov qword [rbp + 0x17], r14
mov qword [rbp + 0xf], r14
jmp 0x18001350a
mov rcx, qword [rbx + 0x28]
test rcx, rcx
mov rax, r14
je 0x180013239
mov rax, qword [rbx + 0x18]
mov dword [rsp + 0x30], r14d
mov dword [rsp + 0x28], ecx
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
lea rdx, [rbp - 0x19]
mov rcx, qword [rbp - 0x21]
call qword [sym.imp.bcrypt.dll_BCryptCreateHash]
test eax, eax
jns 0x1800132b9
xor edx, edx
mov rcx, qword [rbp - 0x21]
call qword [sym.imp.bcrypt.dll_BCryptCloseAlgorithmProvider]
mov qword [rdi], r15
mov qword [rdi + 8], r14
mov qword [rdi + 0x10], r14
mov qword [rdi], r12
mov qword [rdi + 0x18], r14
mov qword [rdi + 0x28], r14
mov qword [rdi + 0x20], r14
mov qword [rdi + 0x30], r13
mov dword [rbp - 0x29], 1
mov qword [rbp - 0x11], r12
mov rdx, qword [rbp + 7]
test rdx, rdx
je 0x1800132a8
lea rcx, [rbp - 0x11]
mov rax, qword [rbp - 0x11]
call qword [rax + Ordinal_26]
mov qword [rbp + 7], r14
mov qword [rbp + 0x17], r14
mov qword [rbp + 0xf], r14
jmp 0x18001350a
mov rax, qword [rsi + 0x28]
test rax, rax
mov rdx, r14
je 0x1800132c9
mov rdx, qword [rsi + 0x18]
xor r9d, r9d
mov r8d, eax
mov rcx, qword [rbp - 0x19]
call qword [sym.imp.bcrypt.dll_BCryptHashData]
test eax, eax
jns 0x180013341
mov rcx, qword [rbp - 0x19]
call qword [sym.imp.bcrypt.dll_BCryptDestroyHash]
xor edx, edx
mov rcx, qword [rbp - 0x21]
call qword [sym.imp.bcrypt.dll_BCryptCloseAlgorithmProvider]
mov qword [rdi], r15
mov qword [rdi + 8], r14
mov qword [rdi + 0x10], r14
mov qword [rdi], r12
mov qword [rdi + 0x18], r14
mov qword [rdi + 0x28], r14
mov qword [rdi + 0x20], r14
mov qword [rdi + 0x30], r13
mov dword [rbp - 0x29], 1
mov qword [rbp - 0x11], r12
mov rdx, qword [rbp + 7]
test rdx, rdx
je 0x180013330
lea rcx, [rbp - 0x11]
mov rax, qword [rbp - 0x11]
call qword [rax + Ordinal_26]
mov qword [rbp + 7], r14
mov qword [rbp + 0x17], r14
mov qword [rbp + 0xf], r14
jmp 0x18001350a
mov dword [rsp + 0x28], r14d
lea rax, [rbp + 0x7f]
mov qword [rsp + 0x20], rax
mov r9d, 4
lea r8, [rbp + 0x77]
lea rdx, str.HashDigestLength
mov rcx, qword [rbp - 0x21]
call qword [sym.imp.bcrypt.dll_BCryptGetProperty]
test eax, eax
jns 0x1800133d2
mov rcx, qword [rbp - 0x19]
call qword [sym.imp.bcrypt.dll_BCryptDestroyHash]
xor edx, edx
mov rcx, qword [rbp - 0x21]
call qword [sym.imp.bcrypt.dll_BCryptCloseAlgorithmProvider]
mov qword [rdi], r15
mov qword [rdi + 8], r14
mov qword [rdi + 0x10], r14
mov qword [rdi], r12
mov qword [rdi + 0x18], r14
mov qword [rdi + 0x28], r14
mov qword [rdi + 0x20], r14
mov qword [rdi + 0x30], r13
mov dword [rbp - 0x29], 1
mov qword [rbp - 0x11], r12
mov rdx, qword [rbp + 7]
test rdx, rdx
je 0x1800133c1
lea rcx, [rbp - 0x11]
mov rax, qword [rbp - 0x11]
call qword [rax + Ordinal_26]
mov qword [rbp + 7], r14
mov qword [rbp + 0x17], r14
mov qword [rbp + 0xf], r14
jmp 0x18001350a
movsxd rsi, dword [rbp + 0x77]
mov rax, qword [rbp + 7]
test rax, rax
je 0x1800133f1
mov rdx, rsi
lea rcx, [rbp - 0x11]
call fcn.1800418f0
mov rax, qword [rbp + 7]
jmp 0x180013428
test rsi, rsi
je 0x180013428
mov rbx, qword [rbp + 0x1f]
test rbx, rbx
cmovle rbx, r13
mov rax, rsi
cqo
idiv rbx
sub rbx, rdx
add rbx, rsi
mov rdx, rbx
lea rcx, [rbp - 0x11]
mov rax, qword [rbp - 0x11]
call qword [rax]
mov qword [rbp + 7], rax
mov qword [rbp + 0xf], rbx
mov qword [rbp + 0x17], rsi
mov r8, qword [rbp + 0x17]
xor edx, edx
mov rcx, rax
call fcn.18009db60
mov rdx, qword [rbp + 7]
mov rax, qword [rbp + 0x17]
test rax, rax
cmove rdx, r14
xor r9d, r9d
mov r8d, eax
mov rcx, qword [rbp - 0x19]
call qword [sym.imp.bcrypt.dll_BCryptFinishHash]
mov ebx, eax
mov rcx, qword [rbp - 0x19]
call qword [sym.imp.bcrypt.dll_BCryptDestroyHash]
xor edx, edx
mov rcx, qword [rbp - 0x21]
call qword [sym.imp.bcrypt.dll_BCryptCloseAlgorithmProvider]
mov qword [rdi], r15
mov qword [rdi + 8], r14
mov qword [rdi + 0x10], r14
test ebx, ebx
jns 0x1800134bc
mov qword [rdi], r12
mov qword [rdi + 0x18], r14
mov qword [rdi + 0x28], r14
mov qword [rdi + 0x20], r14
mov qword [rdi + 0x30], r13
mov dword [rbp - 0x29], 1
mov qword [rbp - 0x11], r12
mov rdx, qword [rbp + 7]
test rdx, rdx
je 0x1800134ae
lea rcx, [rbp - 0x11]
mov rax, qword [rbp - 0x11]
call qword [rax + Ordinal_26]
mov qword [rbp + 7], r14
mov qword [rbp + 0x17], r14
mov qword [rbp + 0xf], r14
jmp 0x18001350a
mov qword [rdi], r12
mov qword [rdi + 0x18], r14
mov qword [rdi + 0x28], r14
mov qword [rdi + 0x20], r14
mov qword [rdi + 0x30], r13
mov qword [rdi], r12
lea rdx, [rbp - 0x11]
mov rcx, rdi
call fcn.180003f00
nop
mov dword [rbp - 0x29], 1
mov qword [rbp - 0x11], r12
mov rdx, qword [rbp + 7]
test rdx, rdx
je 0x1800134fe
lea rcx, [rbp - 0x11]
mov rax, qword [rbp - 0x11]
call qword [rax + Ordinal_26]
mov qword [rbp + 7], r14
mov qword [rbp + 0x17], r14
mov qword [rbp + 0xf], r14
mov qword [rbp - 0x11], r15
mov rax, rdi
mov rbx, qword [rsp + 0xd8]
add rsp, 0x90
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret