Function at 0x140101200
Capabilities:
Hash data via wincrypt
Hash data with md5
Initialize hashing via wincrypt

Disassembly:
mov qword [rsp + 8], rcx
push rsi
push rdi
push r14
sub rsp, 0x70
mov qword [rsp + 0x58], 0xfffffffffffffffe
mov qword [rsp + 0x98], rbx
mov rdi, r8
mov rbx, rdx
cmp qword [0x14020bd68], 0
jne 0x14010127f
mov edx, MsiPreviewDialogW
lea rcx, [0x140181848]
call qword [sym.imp.MSVCR120.dll_strrchr]
test rax, rax
je 0x14010124a
inc rax
jmp 0x140101251
lea rax, [0x140181848]
mov rdx, rax
lea rcx, [0x14020c428]
call fcn.140005ff0
shl rax, 0x34
mov ecx, dword [0x14020bd70]
or rcx, rax
movabs rax, 0x42500000000
or rax, rcx
jmp 0x1401014ae
mov rax, qword [r8]
mov qword [r8 + 8], rax
cmp qword [rdx + 0x10], 0
je 0x140101493
xor r14d, r14d
mov qword [rsp + 0x40], r14
lea rax, [rsp + 0x40]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
mov edx, 0x8003
mov rcx, qword [0x14020bd68]
call qword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
jne 0x1401012e4
call fcn.1401011c0
mov rbx, rax
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, eax
or rbx, rcx
movabs rax, 0x62500000000
or rax, rbx
jmp 0x1401014ae
mov rsi, qword [rsp + 0x40]
mov ecx, 0x18
call qword [sym.imp.MSVCR120.dll_void____ptr64___cdecl_operator_new_unsigned_long_long_unsigned___int64__]
mov qword [rsp + 0x50], rax
test rax, rax
je 0x140101323
lea rcx, vtable.appv::utility::scope_guard_func.0
mov qword [rax], rcx
lea rcx, vtable.appv::utility::scope_guard_func_impl_class_std::_Bind_1__int__int____cdecl__const__unsigned_long_long_unsigned___int64____unsigned_long_long_unsigned___int64_____ptr64__.0
mov qword [rax], rcx
mov rcx, qword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov qword [rax + 8], rcx
mov qword [rax + 0x10], rsi
jmp 0x140101326
mov rax, r14
mov qword [rsp + 0x48], rax
mov rax, qword [rbx + 0x10]
mov qword [rsp + 0x50], rax
mov ecx, 0xffffffff
cmp rax, rcx
jbe 0x140101357
mov dword [rsp + 0x30], 1
lea rdx, [0x1401faff0]
lea rcx, [rsp + 0x30]
call sub.MSVCR120.dll__CxxThrowException
mov dword [rsp + 0x38], eax
mov ecx, eax
add rcx, rcx
mov qword [rsp + 0x60], rcx
mov rax, rcx
shr rax, 0x20
test eax, eax
je 0x140101389
mov dword [rsp + 0x34], 1
lea rdx, [0x1401faff0]
lea rcx, [rsp + 0x34]
call sub.MSVCR120.dll__CxxThrowException
mov dword [rsp + 0x38], ecx
cmp qword [rbx + 0x18], 8
jb 0x140101397
mov rbx, qword [rbx]
xor r9d, r9d
mov r8d, ecx
mov rdx, rbx
mov rcx, qword [rsp + 0x40]
call qword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
jne 0x1401013e1
call fcn.1401011c0
mov rbx, rax
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, eax
or rbx, rcx
movabs rax, 0x72500000000
or rbx, rax
lea rcx, [rsp + 0x48]
call fcn.140014fd0
mov rax, rbx
jmp 0x1401014ae
mov dword [rsp + 0x90], r14d
mov dword [rsp + 0xa8], 4
mov dword [rsp + 0x20], r14d
lea r9, [rsp + 0xa8]
lea r8, [rsp + 0x90]
mov edx, 4
mov rcx, qword [rsp + 0x40]
call qword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
test eax, eax
jne 0x14010144c
call fcn.1401011c0
mov rbx, rax
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, eax
or rbx, rcx
movabs rax, 0x82500000000
or rbx, rax
lea rcx, [rsp + 0x48]
call fcn.140014fd0
mov rax, rbx
jmp 0x1401014ae
mov edx, dword [rsp + 0x90]
mov rcx, rdi
call fcn.140038740
cmp dword [rsp + 0x90], 0
jbe 0x140101489
mov dword [rsp + 0x20], r14d
lea r9, [rsp + 0x90]
mov r8, qword [rdi]
mov edx, 2
mov rcx, qword [rsp + 0x40]
call qword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
test eax, eax
je 0x14010141d
lea rcx, [rsp + 0x48]
call fcn.140014fd0
movabs rax, 0x8000000000
jmp 0x1401014ae
mov rbx, qword [rsp + 0x98]
add rsp, 0x70
pop r14
pop rdi
pop rsi
ret