Function at 0x40e224
Capabilities:
Hash data via wincrypt
Hash data with md5
Initialize hashing via wincrypt
Read file on windows

Disassembly:
push 0x43c
mov eax, 0x41ade3
call fcn.00417a7d
mov ebx, dword [ebp + 8]
lea ecx, [ebp - 0x438]
mov esi, dword [ebp + 0xc]
mov dword [ebp - 0x448], ebx
call dword [sym.imp.Qt5Core.dll_public:_void___thiscall_QString::constructor_void_]
xor edi, edi
mov ecx, esi
mov dword [ebp - 4], edi
call dword [sym.imp.Qt5Core.dll_public:_unsigned_short_int_const____thiscall_QString::utf16_void_const]
mov dword [ebp - 0x43c], edi
mov esi, str.0123456789abcdef
mov dword [ebp - 0x440], edi
mov dword [ebp - 0x444], edi
lea edi, [ebp - 0x34]
mov dword [ebp - 0x448], 0x10
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
xor edi, edi
push edi
push 0x8000000
push 3
push edi
push 1
push SysReAllocString
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
cmp esi, 0xffffffff
jne 0x40e2a7
push edi
jmp 0x40e36d
push 0xf0000000
push 1
push edi
push edi
lea eax, [ebp - 0x43c]
push eax
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextW]
test eax, eax
jne 0x40e2ca
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x40e2a1
lea eax, [ebp - 0x440]
push eax
push edi
push edi
push 0x8003
push dword [ebp - 0x43c]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
jne 0x40e2fe
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push edi
push dword [ebp - 0x43c]
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
jmp 0x40e2a1
push edi
mov edi, dword [sym.imp.KERNEL32.dll_ReadFile]
jmp 0x40e331
cmp dword [ebp - 0x444], 0
push 0
je 0x40e38b
push dword [ebp - 0x444]
lea eax, [ebp - 0x434]
push eax
push dword [ebp - 0x440]
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
push 0
test eax, eax
je 0x40e34c
lea eax, [ebp - 0x444]
push eax
push 0x400
lea eax, [ebp - 0x434]
push eax
push esi
call edi
test eax, eax
jne 0x40e307
push eax
push dword [ebp - 0x43c]
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
push dword [ebp - 0x440]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0
mov ecx, ebx
call dword [sym.imp.Qt5Core.dll_public:_void___thiscall_QString::constructor_char_const__]
lea ecx, [ebp - 0x438]
call dword [sym.imp.Qt5Core.dll_public:_void___thiscall_QString::destructor_void_]
mov eax, ebx
call fcn.00417a2c
ret 8
lea eax, [ebp - 0x448]
push eax
lea eax, [ebp - 0x20]
push eax
push 2
push dword [ebp - 0x440]
call dword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
test eax, eax
je 0x40e3ef
xor edi, edi
cmp dword [ebp - 0x448], edi
jbe 0x40e3ef
movzx eax, byte [ebp + edi - 0x20]
lea ecx, [ebp - 0x438]
shr eax, 4
movzx eax, byte [ebp + eax - 0x34]
push eax
call dword [sym.imp.Qt5Core.dll_public:_class_QString____thiscall_QString::operator_char_]
movzx eax, byte [ebp + edi - 0x20]
lea ecx, [ebp - 0x438]
and eax, 0xf
movzx eax, byte [ebp + eax - 0x34]
push eax
call dword [sym.imp.Qt5Core.dll_public:_class_QString____thiscall_QString::operator_char_]
inc edi
cmp edi, dword [ebp - 0x448]
jb 0x40e3b2
push dword [ebp - 0x440]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
push 0
push dword [ebp - 0x43c]
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea eax, [ebp - 0x438]
mov ecx, ebx
push eax
call dword [sym.imp.Qt5Core.dll_public:_void___thiscall_QString::constructor_class_QString__]
jmp 0x40e375