Function at 0x1400049f0
Capabilities:
Hash data via bcrypt

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
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 [r8 + 0x18]
test byte [r9 + 8], 1
je 0x140004afb
test rdx, rdx
jne 0x140004a85
cmp qword [r8 + 0x48], rdx
lea rdx, [0x14005d198]
je 0x140004a85
mov rdx, qword [r8 + 0x38]
xor r9d, r9d
xor r8d, r8d
lea rcx, [rbp - 0x21]
call qword [sym.imp.bcrypt.dll_BCryptOpenAlgorithmProvider]
test eax, eax
jns 0x140004ae7
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 0x140004ad6
lea rcx, [rbp - 0x11]
mov rax, qword [rbp - 0x11]
call qword [rax + 0x18]
mov qword [rbp + 7], r14
mov qword [rbp + 0x17], r14
mov qword [rbp + 0xf], r14
jmp 0x140004ecb
mov dword [rsp + 0x30], r14d
mov dword [rsp + 0x28], r14d
mov qword [rsp + 0x20], r14
jmp 0x140004b94
test rdx, rdx
jne 0x140004b11
cmp qword [r8 + 0x48], rdx
lea rdx, [0x14005d198]
je 0x140004b11
mov rdx, qword [r8 + 0x38]
mov r9d, 8
xor r8d, r8d
lea rcx, [rbp - 0x21]
call qword [sym.imp.bcrypt.dll_BCryptOpenAlgorithmProvider]
test eax, eax
jns 0x140004b76
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 0x140004b65
lea rcx, [rbp - 0x11]
mov rax, qword [rbp - 0x11]
call qword [rax + 0x18]
mov qword [rbp + 7], r14
mov qword [rbp + 0x17], r14
mov qword [rbp + 0xf], r14
jmp 0x140004ecb
mov rcx, qword [rbx + 0x28]
test rcx, rcx
mov rax, r14
je 0x140004b86
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 0x140004c06
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 0x140004bf5
lea rcx, [rbp - 0x11]
mov rax, qword [rbp - 0x11]
call qword [rax + 0x18]
mov qword [rbp + 7], r14
mov qword [rbp + 0x17], r14
mov qword [rbp + 0xf], r14
jmp 0x140004ecb
mov rax, qword [rsi + 0x28]
test rax, rax
mov rdx, r14
je 0x140004c16
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 0x140004c8e
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 0x140004c7d
lea rcx, [rbp - 0x11]
mov rax, qword [rbp - 0x11]
call qword [rax + 0x18]
mov qword [rbp + 7], r14
mov qword [rbp + 0x17], r14
mov qword [rbp + 0xf], r14
jmp 0x140004ecb
mov dword [rsp + 0x28], r14d
lea rax, [rbp - 0x25]
mov qword [rsp + 0x20], rax
mov r9d, 4
lea r8, [rbp + 0x7f]
lea rdx, str.HashDigestLength
mov rcx, qword [rbp - 0x21]
call qword [sym.imp.bcrypt.dll_BCryptGetProperty]
test eax, eax
jns 0x140004d1f
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 0x140004d0e
lea rcx, [rbp - 0x11]
mov rax, qword [rbp - 0x11]
call qword [rax + 0x18]
mov qword [rbp + 7], r14
mov qword [rbp + 0x17], r14
mov qword [rbp + 0xf], r14
jmp 0x140004ecb
movsxd rsi, dword [rbp + 0x7f]
mov rcx, qword [rbp + 7]
test rcx, rcx
je 0x140004dbf
mov r8, qword [rbp + 0x17]
cmp rsi, r8
je 0x140004df0
test rsi, rsi
jne 0x140004d67
mov rdx, rcx
lea rcx, [rbp - 0x11]
mov rax, qword [rbp - 0x11]
call qword [rax + 0x18]
mov rcx, r14
mov qword [rbp + 7], rcx
mov r8, r14
mov qword [rbp + 0x17], r14
mov qword [rbp + 0xf], r14
jmp 0x140004df0
mov rbx, qword [rbp + 0x1f]
test rbx, rbx
cmovle rbx, r13
mov rax, qword [rbp + 0xf]
cmp rax, rsi
jl 0x140004d8c
sub rax, rsi
cmp rax, rbx
jg 0x140004d8c
mov r8, rsi
mov qword [rbp + 0x17], rsi
jmp 0x140004df0
mov rax, rsi
cqo
idiv rbx
sub rbx, rdx
add rbx, rsi
mov r8, rbx
mov rdx, rcx
lea rcx, [rbp - 0x11]
mov rax, qword [rbp - 0x11]
call qword [rax + 0x10]
mov rcx, rax
mov qword [rbp + 7], rax
mov qword [rbp + 0xf], rbx
mov r8, rsi
mov qword [rbp + 0x17], rsi
jmp 0x140004df0
test rsi, rsi
je 0x140004dec
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]
jmp 0x140004dab
mov r8, qword [rbp + 0x17]
xor edx, edx
call fcn.1400388e0
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 0x140004e7d
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 0x140004e6f
lea rcx, [rbp - 0x11]
mov rax, qword [rbp - 0x11]
call qword [rax + 0x18]
mov qword [rbp + 7], r14
mov qword [rbp + 0x17], r14
mov qword [rbp + 0xf], r14
jmp 0x140004ecb
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.1400040a0
nop
mov dword [rbp - 0x29], 1
mov qword [rbp - 0x11], r12
mov rdx, qword [rbp + 7]
test rdx, rdx
je 0x140004ebf
lea rcx, [rbp - 0x11]
mov rax, qword [rbp - 0x11]
call qword [rax + 0x18]
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