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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x18
mov eax, dword [0x43d00c]
mov esi, dword [ebp + 8]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
call fcn.0041f7d0
add esp, 4
test eax, eax
je 0x40f169
mov edi, eax
movzx eax, word [esi + eax*2 - 2]
cmp ax, 0x5c
je 0x40efca
cmp ax, 0x2f
jne 0x40efcb
dec edi
xor ecx, ecx
lea eax, [edi + 2]
dec ecx
add eax, eax
cmovb eax, ecx
push eax
call fcn.00411d49
add esp, 4
mov ebx, eax
lea eax, [edi + edi + 4]
xor esi, esi
push eax
push esi
push ebx
call fcn.00414930
add esp, 0xc
lea eax, [edi + 1]
push eax
push dword [ebp + 8]
push ebx
call fcn.0041fc49
add esp, 0xc
mov dword [ebp - 0x24], ebx
push ebx
call fcn.0041cf1a
add esp, 4
lea ebx, [ebp - 0x14]
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x18], esi
mov dword [ebx], esi
push 0xf0000000
push 1
push esi
push esi
push ebx
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
test eax, eax
je 0x40f0e2
lea eax, [ebp - 0x18]
push eax
push esi
push esi
push 0x8003
push dword [ebp - 0x14]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
je 0x40f10d
add edi, edi
push 0
push edi
mov esi, dword [ebp - 0x24]
push esi
push dword [ebp - 0x18]
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
je 0x40f114
mov eax, 4
lea ecx, [ebp - 0x1c]
lea edx, [ebp - 0x20]
mov dword [ecx], eax
push 0
push ecx
push edx
push eax
push dword [ebp - 0x18]
call dword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
test eax, eax
je 0x40f118
mov edi, dword [ebp - 0x20]
push edi
call fcn.00411d49
add esp, 4
xor ebx, ebx
mov esi, eax
push edi
push ebx
push eax
call fcn.00414930
add esp, 0xc
push ebx
lea eax, [ebp - 0x20]
push eax
mov edi, esi
push esi
push 2
push dword [ebp - 0x18]
call dword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
test eax, eax
je 0x40f10f
mov eax, dword [ebp - 0x18]
test eax, eax
je 0x40f0ca
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov eax, dword [ebp - 0x14]
mov esi, dword [ebp - 0x24]
xor ebx, ebx
inc ebx
test eax, eax
je 0x40f11a
push 0
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
jmp 0x40f11a
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x80090016
jne 0x40f10d
mov eax, ebx
xor ebx, ebx
push 0xf0000008
push 1
push ebx
push ebx
push eax
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
test eax, eax
jne 0x40f031
jmp 0x40f10f
xor ebx, ebx
mov esi, dword [ebp - 0x24]
jmp 0x40f11a
xor ebx, ebx
jmp 0x40f11a
xor ebx, ebx
push esi
call fcn.00411d52
add esp, 4
test ebx, ebx
je 0x40f169
mov esi, dword [ebp + 0xc]
push 0x104
push 0x4384a8
push esi
call fcn.0041fc49
add esp, 0xc
cmp dword [ebp - 0x20], 0
je 0x40f16d
add esi, 0x48
xor ebx, ebx
movzx eax, byte [edi + ebx]
push eax
push str._.2x
push esi
call dword [sym.imp.USER32.dll_wsprintfW]
mov eax, edi
add esp, 0xc
inc ebx
add esi, 4
cmp ebx, dword [ebp - 0x20]
jb 0x40f148
jmp 0x40f173
xor esi, esi
jmp 0x40f17f
mov eax, edi
test edi, edi
je 0x40f17c
push eax
call fcn.00411d52
add esp, 4
xor esi, esi
inc esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00412591
mov eax, esi
add esp, 0x18
pop esi
pop edi
pop ebx
pop ebp
ret