Function at 0x401130
Capabilities:
Check if file exists
Create new key via cryptacquirecontext
Hash data via wincrypt
Hash data with md5
Initialize hashing via wincrypt
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x49c
mov eax, dword [0x41501c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
cmp dword [ebp + 8], 0
je 0x401165
cmp dword [ebp + 0xc], 0
je 0x401165
cmp dword [ebp + 0x10], 0
jle 0x401165
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x40116c
xor eax, eax
jmp 0x4013d2
mov dword [ebp - 0x64], 0
mov dword [ebp - 8], 0
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x5c], 0
mov byte [ebp - 0x498], 0
push 0x3ff
push 0
lea ecx, [ebp - 0x497]
push ecx
call fcn.00405360
add esp, 0xc
mov dword [ebp - 4], 0
mov byte [ebp - 0x98], 0
xor edx, edx
mov dword [ebp - 0x97], edx
mov dword [ebp - 0x93], edx
mov dword [ebp - 0x8f], edx
mov word [ebp - 0x8b], dx
mov byte [ebp - 0x89], dl
mov dword [ebp - 0xc], 0x10
xor eax, eax
mov word [ebp - 0x58], ax
push 0x40
push 0
lea ecx, [ebp - 0x56]
push ecx
call fcn.00405360
add esp, 0xc
mov ecx, 8
mov esi, str.0123456789ABCDEF
lea edi, [ebp - 0x88]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
push 0xf0000000
push 1
push 0
push 0
lea edx, [ebp - 8]
push edx
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextW]
test eax, eax
jne 0x401228
jmp 0x401397
lea eax, [ebp - 0x60]
push eax
push 0
push 0
push 0x8003
mov ecx, dword [ebp - 8]
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
jne 0x40124d
jmp 0x401397
push 0
push 0
push 3
push 0
push 1
push 0x80000000
mov edx, dword [ebp + 8]
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x5c], eax
cmp dword [ebp - 0x5c], 0xffffffff
jne 0x401279
jmp 0x401397
mov eax, 1
test eax, eax
je 0x4012db
push 0
lea ecx, [ebp - 4]
push ecx
push 0x400
lea edx, [ebp - 0x498]
push edx
mov eax, dword [ebp - 0x5c]
push eax
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x4012ac
jmp 0x401397
cmp dword [ebp - 4], 0
jne 0x4012b4
jmp 0x4012db
push 1
mov ecx, dword [ebp - 4]
push ecx
lea edx, [ebp - 0x498]
push edx
mov eax, dword [ebp - 0x60]
push eax
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
jne 0x4012d9
jmp 0x401397
jmp 0x401279
push 0
lea ecx, [ebp - 0xc]
push ecx
lea edx, [ebp - 0x98]
push edx
push 2
mov eax, dword [ebp - 0x60]
push eax
call dword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
test eax, eax
jne 0x401302
jmp 0x401397
mov dword [ebp - 0x49c], 0
jmp 0x40131d
mov ecx, dword [ebp - 0x49c]
add ecx, 1
mov dword [ebp - 0x49c], ecx
cmp dword [ebp - 0x49c], 0x10
jge 0x401374
mov edx, dword [ebp - 0x49c]
movzx eax, byte [ebp + edx - 0x98]
sar eax, 4
mov ecx, dword [ebp - 0x49c]
shl ecx, 1
mov dx, word [ebp + eax*2 - 0x88]
mov word [ebp + ecx*2 - 0x58], dx
mov eax, dword [ebp - 0x49c]
movzx ecx, byte [ebp + eax - 0x98]
and ecx, 0xf
mov edx, dword [ebp - 0x49c]
shl edx, 1
mov ax, word [ebp + ecx*2 - 0x88]
mov word [ebp + edx*2 - 0x56], ax
jmp 0x40130e
lea ecx, [ebp - 0x58]
push ecx
mov edx, dword [ebp + 0x10]
push edx
mov eax, dword [ebp + 0xc]
push eax
call fcn.004041b4
add esp, 0xc
test eax, eax
je 0x401390
jmp 0x401397
mov dword [ebp - 0x64], 1
cmp dword [ebp - 0x5c], 0
je 0x4013ad
cmp dword [ebp - 0x5c], 0xffffffff
je 0x4013ad
mov ecx, dword [ebp - 0x5c]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebp - 0x60], 0
je 0x4013bd
mov edx, dword [ebp - 0x60]
push edx
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
cmp dword [ebp - 8], 0
je 0x4013cf
push 0
mov eax, dword [ebp - 8]
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov eax, dword [ebp - 0x64]
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0040418f
mov esp, ebp
pop ebp
ret