Function at 0x1004f776
Capabilities:
Hash data via wincrypt
Initialize hashing via wincrypt
Read file on windows

Disassembly:
push ebp
sub esp, 0x414
lea ebp, [esp - 4]
mov eax, dword [0x10086038]
xor eax, ebp
mov dword [ebp + 0x414], eax
push 0x28
mov eax, 0x10052288
call fcn.100514bc
mov eax, dword [ebp + 0x424]
mov dword [ebp - 0x20], eax
lea eax, [ebp - 0x34]
xor ebx, ebx
push eax
mov dword [ebp - 4], ebx
call sym.PCBRhelper.dll_public:_static_class_ATL::CStringT_wchar_t__class_StrTraitMFC_DLL_wchar_t__class_ATL::ChTraitsCRT_wchar_t______cdecl_CSystweakApp::GetAppIdentifierUniqueKey_void_
pop ecx
mov eax, dword [ebp + 0x428]
sub eax, 0x8003
mov byte [ebp - 4], 1
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x24], ebx
je 0x1004f7d9
dec eax
mov dword [ebp - 0x10], 0x14
je 0x1004f7e0
mov dword [ebp - 0x10], 0x10
push dword [ebp - 0x10]
call sub.mfc90u.dll_new__
pop ecx
mov esi, str.0123456789abcdef
lea edi, [ebp + 0x400]
movsd dword es:[edi], dword [esi]
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 SysReAllocString
push dword [ebp + 0x420]
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x1c], ebx
movsb byte es:[edi], byte [esi]
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov edi, eax
mov dword [ebp - 0x2c], edi
cmp edi, 0xffffffff
jne 0x1004f869
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
lea ecx, [ebp - 0x34]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
lea ecx, [ebp + 0x420]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x414]
xor ecx, ebp
call fcn.10050724
add ebp, 0x418
leave
ret 0xc
push 0xf0000000
push 1
push ebx
push ebx
lea eax, [ebp - 0x14]
push eax
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextW]
test eax, eax
jne 0x1004f891
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x1004f82d
lea eax, [ebp - 0x18]
push eax
push ebx
push ebx
push dword [ebp + 0x428]
push dword [ebp - 0x14]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
jne 0x1004f8c8
call dword [sym.imp.KERNEL32.dll_GetLastError]
push edi
mov esi, eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push ebx
push dword [ebp - 0x14]
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
jmp 0x1004f82d
push ebx
lea eax, [ebp - 0x24]
push eax
push 0x400
lea eax, [ebp]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_ReadFile]
cmp dword [ebp - 0x24], ebx
je 0x1004f91b
cmp eax, ebx
je 0x1004f8fb
push ebx
push dword [ebp - 0x24]
lea eax, [ebp]
push eax
push dword [ebp - 0x18]
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
jne 0x1004f8c8
call dword [sym.imp.KERNEL32.dll_GetLastError]
push ebx
push dword [ebp - 0x14]
mov esi, eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
push dword [ebp - 0x18]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
jmp 0x1004f888
cmp eax, ebx
je 0x1004f8fb
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x20]
mov dword [ebp - 0x1c], eax
call dword [sym.imp.mfc90u.dll_ATL::CSimpleStringT_wchar_t_1_::Empty]
mov edi, dword [ebp - 0x30]
push ebx
lea eax, [ebp - 0x1c]
push eax
push edi
push 2
push dword [ebp - 0x18]
call dword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
test eax, eax
je 0x1004f9bf
xor esi, esi
cmp dword [ebp - 0x1c], ebx
jbe 0x1004f9aa
lea ecx, [ebp - 0x10]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_class]
mov byte [ebp - 4], 2
movzx eax, byte [esi + edi]
mov ecx, eax
and ecx, 0xf
movsx ecx, byte [ebp + ecx + 0x400]
shr eax, 4
movsx eax, byte [ebp + eax + 0x400]
push ecx
push eax
lea eax, [ebp - 0x10]
push str._c_c
push eax
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::Format]
mov ecx, dword [ebp - 0x20]
add esp, 0x10
lea eax, [ebp - 0x10]
push eax
call dword [0x10061c98]
lea ecx, [ebp - 0x10]
mov byte [ebp - 4], 1
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
inc esi
cmp esi, dword [ebp - 0x1c]
jb 0x1004f94d
mov ecx, dword [ebp - 0x20]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::MakeUpper]
mov ecx, dword [ebp - 0x20]
push eax
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::operator_2]
jmp 0x1004f9c8
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x28], eax
push dword [ebp - 0x18]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
push ebx
push dword [ebp - 0x14]
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
push dword [ebp - 0x2c]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp edi, ebx
je 0x1004f9ef
push edi
call sub.mfc90u.dll_delete__
pop ecx
mov esi, dword [ebp - 0x28]
jmp 0x1004f82d