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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x454
push ebx
push esi
push edi
mov esi, str.0123456789abcdef
mov dword [ebp - 0x14], edx
lea edi, [ebp - 0x50]
mov dword [ebp - 0x10], 0x10
xor eax, eax
mov ebx, ecx
xor ecx, ecx
movsd dword es:[edi], dword [esi]
push 0xf
mov dword [ebp - 8], ecx
mov dword [ebp - 4], ecx
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0xc], ecx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
lea edi, [ebp - 0x2c]
stosd dword es:[edi], eax
pop esi
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov eax, edx
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x18], esi
mov byte [ebp - 0x2c], cl
cmp dword [edx + 0x14], esi
jbe 0x401231
mov eax, dword [edx]
push ecx
push 0x8000000
push 3
push ecx
push 1
push 0x80000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
cmp esi, 0xffffffff
jne 0x401289
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cerr]
mov edx, str.Erro_ao_abrir_o_arquivo:
push 0x401fda
call fcn.00401e1c
mov edx, dword [ebp - 0x14]
push ecx
mov ecx, eax
call fcn.00401fc1
pop ecx
mov ecx, eax
call dword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char_______cdecl___class_std::basic_ostream_char__struct_std::char_traits_char_____]
push 0x405260
mov ecx, ebx
call fcn.00401a3c
jmp 0x40143f
push 0xf0000000
push 1
xor edi, edi
lea eax, [ebp - 8]
push edi
push edi
push eax
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
test eax, eax
jne 0x4012ca
push 0x401fda
push ecx
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cerr]
mov edx, str.Erro_ao_adquirir_o_contexto_criptogr
call fcn.00401e1c
pop ecx
mov ecx, eax
call dword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char_______cdecl___class_std::basic_ostream_char__struct_std::char_traits_char_____]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x401278
lea eax, [ebp - 4]
push eax
push edi
push edi
push 0x8003
push dword [ebp - 8]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
jne 0x401317
push 0x401fda
push ecx
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cerr]
mov edx, str.Erro_ao_criar_o_hash_MD5.
call fcn.00401e1c
pop ecx
mov ecx, eax
call dword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char_______cdecl___class_std::basic_ostream_char__struct_std::char_traits_char_____]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push edi
push dword [ebp - 8]
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
jmp 0x401278
push edi
mov edi, dword [sym.imp.KERNEL32.dll_ReadFile]
jmp 0x401341
cmp dword [ebp - 0xc], 0
jbe 0x401358
push 0
push dword [ebp - 0xc]
lea eax, [ebp - 0x450]
push eax
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
je 0x4013b0
push 0
lea eax, [ebp - 0xc]
push eax
push 0x400
lea eax, [ebp - 0x450]
push eax
push esi
call edi
test eax, eax
jne 0x401320
push 0
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x3c]
push eax
push 2
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
test eax, eax
je 0x4013e8
xor edi, edi
cmp dword [ebp - 0x10], edi
jbe 0x401407
movzx eax, byte [ebp + edi - 0x3c]
lea ecx, [ebp - 0x2c]
shr eax, 4
movzx eax, byte [ebp + eax - 0x50]
push eax
call fcn.0040199a
movzx eax, byte [ebp + edi - 0x3c]
lea ecx, [ebp - 0x2c]
and eax, 0xf
movzx eax, byte [ebp + eax - 0x50]
push eax
call fcn.0040199a
inc edi
cmp edi, dword [ebp - 0x10]
jb 0x40137c
jmp 0x401407
push 0x401fda
push ecx
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cerr]
mov edx, str.Erro_ao_adicionar_dados_ao_hash.
call fcn.00401e1c
pop ecx
mov ecx, eax
call dword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char_______cdecl___class_std::basic_ostream_char__struct_std::char_traits_char_____]
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
push 0
push dword [ebp - 8]
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
jmp 0x4012c1
push 0x401fda
push ecx
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cerr]
mov edx, str.Erro_ao_obter_o_valor_do_hash.
call fcn.00401e1c
pop ecx
mov ecx, eax
call dword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char_______cdecl___class_std::basic_ostream_char__struct_std::char_traits_char_____]
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
push 0
push dword [ebp - 8]
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea eax, [ebp - 0x2c]
mov ecx, ebx
push eax
call fcn.00401a03
cmp dword [ebp - 0x18], 0xf
jbe 0x40143f
push dword [ebp - 0x18]
mov edx, dword [ebp - 0x2c]
call fcn.00401d45
pop ecx
pop edi
pop esi
mov eax, ebx
pop ebx
leave
ret