Function at 0x412008
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, 0x440
mov eax, dword [0x4412dc]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov eax, dword [ebp + 8]
push edi
mov esi, str.0123456789abcdef
lea edi, [ebp - 0x18]
movsd dword es:[edi], dword [esi]
xor ebx, ebx
push ebx
movsd dword es:[edi], dword [esi]
push 0x8000000
push 3
movsd dword es:[edi], dword [esi]
push ebx
push 1
movsd dword es:[edi], dword [esi]
push 0x80000000
push eax
mov dword [ebp - 0x42c], eax
mov dword [ebp - 0x430], ebx
mov dword [ebp - 0x434], ebx
mov dword [ebp - 0x43c], ebx
mov dword [ebp - 0x438], ebx
movsb byte es:[edi], byte [esi]
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
mov dword [ebp - 0x440], esi
cmp esi, 0xffffffff
jne 0x41209d
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push dword [ebp - 0x42c]
push str.Error_opening_file__s_nError:__d_n
call fcn.0041c219
add esp, 0xc
xor eax, eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00419542
leave
ret
push 0xf0000000
push 1
push ebx
push ebx
lea eax, [ebp - 0x430]
push eax
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextW]
test eax, eax
jne 0x4120d3
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.CryptAcquireContext_failed:__d_n
call fcn.0041c219
pop ecx
pop ecx
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x41208c
lea eax, [ebp - 0x434]
push eax
push ebx
push ebx
push 0x8003
push dword [ebp - 0x430]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
jne 0x41211d
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.CryptAcquireContext_failed:__d_n
call fcn.0041c219
pop ecx
pop ecx
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push ebx
push dword [ebp - 0x430]
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
jmp 0x41208c
push ebx
lea eax, [ebp - 0x43c]
push eax
mov edi, 0x400
push edi
lea eax, [ebp - 0x428]
push eax
push esi
mov esi, dword [sym.imp.KERNEL32.dll_ReadFile]
jmp 0x412177
cmp dword [ebp - 0x43c], ebx
je 0x4121b6
push ebx
push dword [ebp - 0x43c]
lea eax, [ebp - 0x428]
push eax
push dword [ebp - 0x434]
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
je 0x41217f
push ebx
lea eax, [ebp - 0x43c]
push eax
push edi
lea eax, [ebp - 0x428]
push eax
push dword [ebp - 0x440]
call esi
cmp eax, ebx
jne 0x41213b
jmp 0x4121ba
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.CryptHashData_failed:__d_n
call fcn.0041c219
pop ecx
pop ecx
push ebx
push dword [ebp - 0x430]
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
push dword [ebp - 0x434]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
push dword [ebp - 0x440]
jmp 0x4120cb
cmp eax, ebx
jne 0x4121f9
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.ReadFile_failed:__d_n
call fcn.0041c219
pop ecx
pop ecx
push ebx
push dword [ebp - 0x430]
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
push dword [ebp - 0x434]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
push dword [ebp - 0x440]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, ebx
jmp 0x41208e
push ebx
lea eax, [ebp - 0x438]
push eax
lea eax, [ebp - 0x28]
push eax
push 2
push dword [ebp - 0x434]
mov dword [ebp - 0x438], 0x10
call dword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
test eax, eax
je 0x4122b9
push dword [ebp - 0x42c]
push str.MD5_hash_of_file__s_is:
call fcn.0041c219
pop ecx
pop ecx
mov dword [ebp - 0x42c], ebx
cmp dword [ebp - 0x438], ebx
jbe 0x4122ad
mov edi, 0x444e98
mov esi, dword [ebp - 0x42c]
lea esi, [ebp + esi - 0x28]
movzx eax, byte [esi]
mov ecx, eax
and ecx, 0xf
movsx ecx, byte [ebp + ecx - 0x18]
shr eax, 4
movsx eax, byte [ebp + eax - 0x18]
push ecx
push eax
push str._c_c
call fcn.0041c219
movzx eax, byte [esi]
mov ecx, eax
shr ecx, 4
movsx cx, byte [ebp + ecx - 0x18]
and eax, 0xf
movsx ax, byte [ebp + eax - 0x18]
mov word [edi], cx
mov word [edi + 2], ax
add esp, 0xc
add edi, 4
inc dword [ebp - 0x42c]
mov eax, dword [ebp - 0x42c]
cmp eax, dword [ebp - 0x438]
jb 0x41224a
push 0x43b01c
call fcn.0041c219
jmp 0x4122cb
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.CryptGetHashParam_failed:__d_n
call fcn.0041c219
pop ecx
pop ecx
push dword [ebp - 0x434]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
push ebx
push dword [ebp - 0x430]
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov ebx, 0x444e98
jmp 0x4121e6