Function at 0x1007b814
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 [0x10112038]
xor eax, ebp
mov dword [ebp + 0x414], eax
push 0x28
mov eax, 0x10091701
call fcn.1008f84a
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.ASOHelper.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 0x1007b877
dec eax
mov dword [ebp - 0x10], 0x14
je 0x1007b87e
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 SysReAllocStringLen
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 0x1007b907
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.1008e7ae
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 0x1007b92f
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x1007b8cb
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 0x1007b966
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 0x1007b8cb
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 0x1007b9b9
cmp eax, ebx
je 0x1007b999
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 0x1007b966
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 0x1007b926
cmp eax, ebx
je 0x1007b999
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 0x1007ba5d
xor esi, esi
cmp dword [ebp - 0x1c], ebx
jbe 0x1007ba48
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 [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::operator]
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 0x1007b9eb
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_3]
jmp 0x1007ba66
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 0x1007ba8d
push edi
call sub.mfc90u.dll_delete__
pop ecx
mov esi, dword [ebp - 0x28]
jmp 0x1007b8cb