Function at 0x40a714
Capabilities:
Hash data using sha1
Hash data using sha1 via wincrypt
Hash data via wincrypt
Initialize hashing via wincrypt
Read file on windows

Disassembly:
push ebp
lea ebp, [esp - 0x7ec]
sub esp, 0x86c
mov eax, dword [0x41228c]
xor eax, ebp
mov dword [ebp + 0x7e8], eax
mov eax, dword [ebp + 0x7f4]
push ebx
push esi
push edi
mov esi, str.0123456789abcdef
lea edi, [ebp + 0x7d4]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x80], eax
mov eax, dword [ebp + 0x7f8]
xor ebx, ebx
mov dword [ebp - 0x7c], eax
movsb byte es:[edi], byte [esi]
mov dword [ebp - 0x74], ebx
mov dword [ebp - 0x78], ebx
mov dword [ebp - 0x70], ebx
call fcn.0040a6c1
test al, al
jne 0x40a782
call dword [sym.imp.kernel32.dll_GetLastError]
push eax
push str.GetCryptContext_failed_with__d
call fcn.0040a0af
pop ecx
pop ecx
push 0x19
jmp 0x40a8f2
lea eax, [ebp - 0x70]
push eax
push ebx
push ebx
push 0x8004
push dword [0x412664]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
jne 0x40a7b7
call dword [sym.imp.kernel32.dll_GetLastError]
push eax
push str.CryptCreateHash_failed_with:__d_n
call fcn.0040a0af
pop ecx
pop ecx
push 0x1a
jmp 0x40a8f2
mov esi, dword [sym.imp.kernel32.dll_ReadFile]
mov edi, 0x800
jmp 0x40a7de
cmp dword [ebp - 0x74], ebx
je 0x40a819
push ebx
push dword [ebp - 0x74]
lea eax, [ebp - 0x6c]
push eax
push dword [ebp - 0x70]
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
je 0x40a7f3
push ebx
lea eax, [ebp - 0x74]
push eax
push edi
lea eax, [ebp - 0x6c]
push eax
push dword [ebp - 0x80]
call esi
cmp eax, ebx
jne 0x40a7c4
jmp 0x40a81d
call dword [sym.imp.kernel32.dll_GetLastError]
push eax
push str.CryptHashData_failed_with:__d_n
call fcn.0040a0af
pop ecx
pop ecx
push 0x1b
pop esi
push dword [ebp - 0x70]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov eax, esi
jmp 0x40a8f3
cmp eax, ebx
jne 0x40a834
call dword [sym.imp.kernel32.dll_GetLastError]
push eax
push str.VerifySHA1_ReadFile_failed_with:__d_n
call fcn.0040a0af
pop ecx
pop ecx
push 0x1c
jmp 0x40a808
push ebx
lea eax, [ebp - 0x78]
push eax
lea eax, [ebp + 0x794]
push eax
push 2
push dword [ebp - 0x70]
mov dword [ebp - 0x78], 0x14
call dword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
test eax, eax
je 0x40a8d4
xor ecx, ecx
mov byte [ebp + 0x7a8], bl
cmp dword [ebp - 0x78], ebx
jbe 0x40a895
movzx eax, byte [ebp + ecx + 0x794]
mov edx, eax
shr edx, 4
mov dl, byte [ebp + edx + 0x7d4]
and eax, 0xf
mov al, byte [ebp + eax + 0x7d4]
mov byte [ebp + ecx*2 + 0x7a8], dl
mov byte [ebp + ecx*2 + 0x7a9], al
inc ecx
cmp ecx, dword [ebp - 0x78]
jb 0x40a863
push dword [ebp - 0x7c]
lea eax, [ebp + 0x7a8]
push eax
mov byte [ebp + 0x7d0], bl
call dword [sym.imp.MSVCR100.dll__stricmp]
pop ecx
pop ecx
test eax, eax
je 0x40a8c7
push dword [ebp - 0x7c]
push str.VerifySHA1_check_failure_with_expected__s_n
call fcn.0040a0af
pop ecx
pop ecx
push 8
jmp 0x40a808
push dword [ebp - 0x70]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
xor eax, eax
jmp 0x40a8f3
call dword [sym.imp.kernel32.dll_GetLastError]
push eax
push str.CryptGetHashParam_failed_with:__d_n
call fcn.0040a0af
pop ecx
pop ecx
push dword [ebp - 0x70]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
push 0x18
pop eax
mov ecx, dword [ebp + 0x7e8]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0040b376
add ebp, 0x7ec
leave
ret