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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4219dd
mov eax, dword fs:[0]
push eax
sub esp, 0x15c
mov eax, dword [0x42c00c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x154], ecx
mov dword [ebp - 4], 0
call fcn.00407950
mov edi, eax
test edi, edi
je 0x40866c
mov eax, dword [edi]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x42227c]
mov ecx, edi
call esi
add eax, 0x10
mov dword [ebp - 0xdc], eax
mov dword [ebp - 4], 1
call fcn.00407950
mov edi, eax
test edi, edi
je 0x408676
mov eax, dword [edi]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x42227c]
mov ecx, edi
call esi
add eax, 0x10
mov dword [ebp - 0xd8], eax
mov dword [ebp - 4], 2
call fcn.00407950
mov edi, eax
test edi, edi
je 0x408680
mov eax, dword [edi]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x42227c]
mov ecx, edi
call esi
add eax, 0x10
mov dword [ebp - 0xd4], eax
mov dword [ebp - 4], 3
call fcn.00407950
mov edi, eax
test edi, edi
je 0x40868a
mov eax, dword [edi]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x42227c]
mov ecx, edi
call esi
add eax, 0x10
mov dword [ebp - 0xe0], 0
mov dword [ebp - 0xd0], eax
lea ecx, [ebp - 0x138]
mov dword [ebp - 4], 4
call fcn.00407c60
mov byte [ebp - 0x13e], 1
mov byte [ebp - 0x13d], 1
mov byte [ebp - 4], 6
call fcn.00407950
mov edi, eax
test edi, edi
je 0x408694
mov eax, dword [edi]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x42227c]
mov ecx, edi
call esi
add eax, 0x10
mov dword [ebp - 0xcc], eax
xorps xmm0, xmm0
mov byte [ebp - 4], 7
lea ecx, [ebp - 0xc8]
movlpd qword [ebp - 0xc8], xmm0
movups xmmword [ebp - 0x150], xmm0
call fcn.004072b0
mov dword [ebp - 0xc4], 0
lea eax, [ebp - 0x13c]
mov byte [ebp - 4], 8
push eax
push 0
push 0
push 0x8003
push dword [ebp - 0xc8]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
je 0x40869e
mov ecx, dword [ebp - 0xc4]
mov eax, dword [ebp - 0x13c]
mov dword [ebp - 0xc4], eax
test ecx, ecx
je 0x40819a
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
xorps xmm0, xmm0
mov byte [ebp - 4], 9
lea ecx, [ebp - 0xc0]
movlpd qword [ebp - 0xc0], xmm0
call fcn.004072b0
mov dword [ebp - 0xbc], 0
lea eax, [ebp - 0x13c]
mov byte [ebp - 4], 0xa
push eax
push 0
push 0
push 0x8003
push dword [ebp - 0xc0]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
je 0x4086c0
mov ecx, dword [ebp - 0xbc]
mov eax, dword [ebp - 0x13c]
mov dword [ebp - 0xbc], eax
test ecx, ecx
je 0x408203
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov byte [ebp - 4], 0xb
lea eax, [ebp - 0xdc]
mov dword [ebp - 0xb8], eax
lea ecx, [ebp - 0xe0]
lea eax, [ebp - 0xd8]
mov byte [ebp - 0xb4], 0
mov dword [ebp - 0xb0], eax
lea eax, [ebp - 0xd4]
mov dword [ebp - 0xa8], eax
lea eax, [ebp - 0xd0]
mov dword [ebp - 0xa0], eax
lea eax, [ebp - 0x134]
mov dword [ebp - 0x98], eax
lea eax, [ebp - 0x120]
mov dword [ebp - 0x90], eax
lea eax, [ebp - 0x11c]
mov dword [ebp - 0x88], eax
lea eax, [ebp - 0x118]
mov dword [ebp - 0x80], eax
lea eax, [ebp - 0x114]
mov dword [ebp - 0x78], eax
lea eax, [ebp - 0x108]
mov dword [ebp - 0x70], eax
lea eax, [ebp - 0x104]
mov dword [ebp - 0x68], eax
lea eax, [ebp - 0x100]
mov dword [ebp - 0x60], eax
lea eax, [ebp - 0xfc]
mov dword [ebp - 0x58], eax
lea eax, [ebp - 0xf8]
mov dword [ebp - 0x50], eax
lea eax, [ebp - 0xf4]
mov dword [ebp - 0x48], eax
lea eax, [ebp - 0xf0]
mov dword [ebp - 0x40], eax
lea eax, [ebp - 0xec]
mov dword [ebp - 0x38], eax
lea eax, [ebp - 0xe8]
mov dword [ebp - 0x30], eax
lea eax, [ebp - 0x130]
mov dword [ebp - 0x28], eax
lea eax, [ebp - 0x110]
mov byte [ebp - 0xac], 0
mov byte [ebp - 0xa4], 0
mov byte [ebp - 0x9c], 0
mov byte [ebp - 0x94], 1
mov byte [ebp - 0x8c], 1
mov byte [ebp - 0x84], 1
mov byte [ebp - 0x7c], 1
mov byte [ebp - 0x74], 1
mov byte [ebp - 0x6c], 1
mov byte [ebp - 0x64], 1
mov byte [ebp - 0x5c], 1
mov byte [ebp - 0x54], 1
mov byte [ebp - 0x4c], 1
mov byte [ebp - 0x44], 1
mov byte [ebp - 0x3c], 1
mov byte [ebp - 0x34], 1
mov byte [ebp - 0x2c], 1
mov dword [ebp - 0x24], 0x10
mov byte [ebp - 0x20], 1
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], 8
mov byte [ebp - 0x14], 1
call fcn.0040ab10
lea ecx, [ebp - 0x138]
call fcn.0040ab80
lea edx, [ebp - 0xcc]
lea ecx, [ebp - 0xe0]
call fcn.0040b580
mov eax, dword [ebp - 0xcc]
lea ecx, [eax - 0x10]
mov dword [ebp - 0x158], ecx
mov ecx, dword [eax - 0xc]
test ecx, ecx
je 0x40839f
push 0
push ecx
push eax
push dword [ebp - 0xc4]
mov byte [ebp - 0x13e], 0
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
je 0x4086e8
xor esi, esi
cmp byte [ebp + esi*8 - 0xb4], 0
je 0x4083db
mov eax, dword [ebp + esi*8 - 0xb8]
mov eax, dword [eax]
mov ecx, dword [eax - 0xc]
test ecx, ecx
je 0x4083db
push 0
push ecx
push eax
push dword [ebp - 0xbc]
xor dl, dl
mov byte [ebp - 0x13d], dl
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
je 0x4086e8
inc esi
cmp esi, 0x12
jb 0x4083a1
xor edi, edi
lea esi, [ebp - 0x24]
cmp byte [esi + 4], 0
je 0x408417
cmp dword [ebp - 0x138], 0
jne 0x408417
push 0
push dword [esi]
mov byte [ebp - 0x13d], 0
push dword [esi - 4]
push dword [ebp - 0xbc]
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
je 0x4086e8
inc edi
add esi, 0xc
cmp edi, 2
jb 0x4083e6
cmp byte [ebp - 0x13d], 0
jne 0x408478
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0xc0]
call fcn.004073e0
mov ecx, dword [ebp - 0x1c]
mov eax, dword [eax]
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x150], xmm0
test ecx, ecx
je 0x408478
mov edx, dword [ebp - 0x14]
mov eax, ecx
sub edx, ecx
cmp edx, 0x1000
jb 0x40846e
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x408710
push edx
push ecx
call fcn.0040f81e
add esp, 8
cmp byte [ebp - 0x13e], 0
jne 0x4084ee
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0xc8]
call fcn.004073e0
mov ecx, dword [ebp - 0x1c]
mov eax, dword [eax]
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x168], xmm0
test ecx, ecx
je 0x4084f1
mov edx, dword [ebp - 0x14]
mov eax, ecx
sub edx, ecx
cmp edx, 0x1000
jb 0x4084c6
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x408715
push edx
push ecx
call fcn.0040f81e
movups xmm0, xmmword [ebp - 0x168]
add esp, 8
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0
jmp 0x4084f1
xorps xmm0, xmm0
mov eax, dword [ebp - 0x154]
movups xmmword [eax], xmm0
movups xmm0, xmmword [ebp - 0x150]
movups xmmword [eax + 0x10], xmm0
mov eax, dword [ebp - 0xbc]
test eax, eax
je 0x408516
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov eax, dword [ebp - 0xc0]
test eax, eax
je 0x408529
push 0
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov eax, dword [ebp - 0xc4]
test eax, eax
je 0x40853a
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov eax, dword [ebp - 0xc8]
test eax, eax
je 0x40854d
push 0
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov ecx, dword [ebp - 0x158]
or esi, 0xffffffff
mov byte [ebp - 4], 0xc
mov eax, esi
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x40857d
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x42227c]
mov ecx, edi
call esi
or esi, 0xffffffff
lea ecx, [ebp - 0x138]
call fcn.00408820
mov ecx, dword [ebp - 0xd0]
add ecx, 0xfffffff0
mov dword [ebp - 4], 0xd
mov eax, esi
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x4085bb
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x42227c]
mov ecx, edi
call esi
or esi, 0xffffffff
mov ecx, dword [ebp - 0xd4]
add ecx, 0xfffffff0
mov dword [ebp - 4], 0xe
mov eax, esi
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x4085ee
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x42227c]
mov ecx, edi
call esi
or esi, 0xffffffff
mov ecx, dword [ebp - 0xd8]
add ecx, 0xfffffff0
mov dword [ebp - 4], 0xf
mov eax, esi
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x408621
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x42227c]
mov ecx, edi
call esi
or esi, 0xffffffff
mov ecx, dword [ebp - 0xdc]
add ecx, 0xfffffff0
mov dword [ebp - 4], 0x10
lock xadd dword [ecx + 0xc], esi
dec esi
test esi, esi
jg 0x40864f
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x42227c]
mov ecx, edi
call esi
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0040f2ed
mov esp, ebp
pop ebp
ret
push 0x80004005
call fcn.00407790
push 0x80004005
call fcn.00407790
push 0x80004005
call fcn.00407790
push 0x80004005
call fcn.00407790
push 0x80004005
call fcn.00407790
push str.Unable_to_create_hash_context_
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea ecx, [ebp - 0x20]
call fcn.00406250
push 0x42a6f8
lea eax, [ebp - 0x20]
push eax
call fcn.00410c7a
push str.Unable_to_create_hash_context_
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea ecx, [ebp - 0x168]
call fcn.00406250
push 0x42a6f8
lea eax, [ebp - 0x168]
push eax
call fcn.00410c7a
push str.Unable_to_update_hash_context_
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea ecx, [ebp - 0x150]
call fcn.00406250
push 0x42a6f8
lea eax, [ebp - 0x150]
push eax
call fcn.00410c7a
call fcn.00412f88
call fcn.00412f88
int3