Function at 0x4470e0
Capabilities:
Hash data with md5
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x128
mov eax, dword [0x47f060]
xor eax, ebp
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
push ebx
push esi
push edi
push 0x46cdf4
push eax
lea eax, [ebp - 0x120]
push eax
mov dword [ebp - 0x124], ecx
mov dword [ebp - 0x120], 0
call dword [sym.imp.MSVCR110.dll__wfopen_s]
add esp, 0xc
test eax, eax
jne 0x447172
mov eax, dword [ebp - 0x120]
test eax, eax
je 0x447172
mov esi, dword [sym.imp.MSVCR110.dll_fseek]
push 2
push 0
push eax
call esi
push dword [ebp - 0x120]
call dword [sym.imp.MSVCR110.dll_ftell]
mov ebx, eax
push ebx
call fcn.00451f28
push ebx
mov edi, eax
push 0
push edi
call sub.MSVCR110.dll_memset
add esp, 0x20
test edi, edi
jne 0x44718d
push dword [ebp - 0x120]
call dword [sym.imp.MSVCR110.dll_fclose]
add esp, 4
xor al, al
lea esp, [ebp - 0x134]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.00452076
mov esp, ebp
pop ebp
ret 0xc
push 0
push 0
push dword [ebp - 0x120]
call esi
push dword [ebp - 0x120]
push ebx
push 1
push edi
call dword [sym.imp.MSVCR110.dll_fread]
add esp, 0x1c
push dword [ebp - 0x120]
cmp eax, ebx
je 0x4471c8
call dword [sym.imp.MSVCR110.dll_fclose]
push edi
call dword [sym.imp.MSVCR110.dll_void___cdecl_operator_delete_void__]
add esp, 8
jmp 0x447172
mov esi, dword [sym.imp.MSVCR110.dll_fclose]
call esi
add esp, 4
lea eax, [ebp - 0x18]
push eax
xorps xmm0, xmm0
push ebx
push edi
lea ecx, [ebp - 0x11c]
movq qword [ebp - 0x10c], xmm0
mov dword [ebp - 0x11c], 0x67452301
mov dword [ebp - 0x118], 0xefcdab89
mov dword [ebp - 0x114], 0x98badcfe
mov dword [ebp - 0x110], 0x10325476
mov byte [ebp - 0x18], 0
movq qword [ebp - 0x17], xmm0
mov dword [ebp - 0xf], 0
mov word [ebp - 0xb], 0
mov byte [ebp - 9], 0
call fcn.0044c2c0
push edi
call dword [sym.imp.MSVCR110.dll_void___cdecl_operator_delete___void__]
push dword [ebp - 0x120]
call esi
push 0x7f
lea eax, [ebp - 0x9b]
push 0
push eax
mov byte [ebp - 0x9c], 0
call sub.MSVCR110.dll_memset
mov ebx, dword [sym.imp.MSVCR110.dll_sprintf_s]
add esp, 0x14
xor edi, edi
xor esi, esi
movzx eax, byte [ebp + edi - 0x18]
push eax
mov eax, 0x80
sub eax, esi
push str._02x
push eax
lea eax, [ebp - 0x9c]
add eax, esi
push eax
call ebx
add esi, 2
add esp, 0x10
lea edi, [edi + 1]
cmp esi, 0x20
jl 0x447264
lea ecx, [ebp - 0x9c]
lea edx, [ecx + 1]
lea esp, [esp]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4472a0
sub ecx, edx
lea edi, [ecx + 1]
cmp edi, 0x3fffffff
jg 0x4472e4
lea eax, [edi + edi]
call fcn.004527a0
mov esi, esp
test esi, esi
je 0x4472e4
push edi
push esi
xor eax, eax
push 0xffffffffffffffff
mov word [esi], ax
lea eax, [ebp - 0x9c]
push eax
push 0
push 3
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
neg eax
sbb eax, eax
and eax, esi
jmp 0x4472e6
xor eax, eax
push eax
lea ecx, [ebp - 0xb4]
call fcn.00406d00
cmp dword [ebp - 0xa0], 8
push ecx
lea eax, [ebp - 0xb4]
cmovae eax, dword [ebp - 0xb4]
push eax
push ecx
mov ecx, dword [ebp - 0x124]
mov edx, 0x82
call fcn.00406e00
cmp dword [ebp - 0xa0], 8
jb 0x447331
push dword [ebp - 0xb4]
call dword [sym.imp.MSVCR110.dll_void___cdecl_operator_delete_void__]
add esp, 4
mov al, 1
jmp 0x447174