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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x42139d
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.00407230
mov edi, eax
test edi, edi
je 0x407f4c
mov eax, dword [edi]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x422284]
mov ecx, edi
call esi
add eax, 0x10
mov dword [ebp - 0xdc], eax
mov dword [ebp - 4], 1
call fcn.00407230
mov edi, eax
test edi, edi
je 0x407f56
mov eax, dword [edi]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x422284]
mov ecx, edi
call esi
add eax, 0x10
mov dword [ebp - 0xd8], eax
mov dword [ebp - 4], 2
call fcn.00407230
mov edi, eax
test edi, edi
je 0x407f60
mov eax, dword [edi]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x422284]
mov ecx, edi
call esi
add eax, 0x10
mov dword [ebp - 0xd4], eax
mov dword [ebp - 4], 3
call fcn.00407230
mov edi, eax
test edi, edi
je 0x407f6a
mov eax, dword [edi]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x422284]
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.00407540
mov byte [ebp - 0x13e], 1
mov byte [ebp - 0x13d], 1
mov byte [ebp - 4], 6
call fcn.00407230
mov edi, eax
test edi, edi
je 0x407f74
mov eax, dword [edi]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x422284]
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.00406b90
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 0x407f7e
mov ecx, dword [ebp - 0xc4]
mov eax, dword [ebp - 0x13c]
mov dword [ebp - 0xc4], eax
test ecx, ecx
je 0x407a7a
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.00406b90
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 0x407fa0
mov ecx, dword [ebp - 0xbc]
mov eax, dword [ebp - 0x13c]
mov dword [ebp - 0xbc], eax
test ecx, ecx
je 0x407ae3
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.0040a410
lea ecx, [ebp - 0x138]
call fcn.0040a480
lea edx, [ebp - 0xcc]
lea ecx, [ebp - 0xe0]
call fcn.0040ae80
mov eax, dword [ebp - 0xcc]
lea ecx, [eax - 0x10]
mov dword [ebp - 0x158], ecx
mov ecx, dword [eax - 0xc]
test ecx, ecx
je 0x407c7f
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 0x407fc8
xor esi, esi
cmp byte [ebp + esi*8 - 0xb4], 0
je 0x407cbb
mov eax, dword [ebp + esi*8 - 0xb8]
mov eax, dword [eax]
mov ecx, dword [eax - 0xc]
test ecx, ecx
je 0x407cbb
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 0x407fc8
inc esi
cmp esi, 0x12
jb 0x407c81
xor edi, edi
lea esi, [ebp - 0x24]
cmp byte [esi + 4], 0
je 0x407cf7
cmp dword [ebp - 0x138], 0
jne 0x407cf7
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 0x407fc8
inc edi
add esi, 0xc
cmp edi, 2
jb 0x407cc6
cmp byte [ebp - 0x13d], 0
jne 0x407d58
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0xc0]
call fcn.00406cc0
mov ecx, dword [ebp - 0x1c]
mov eax, dword [eax]
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x150], xmm0
test ecx, ecx
je 0x407d58
mov edx, dword [ebp - 0x14]
mov eax, ecx
sub edx, ecx
cmp edx, 0x1000
jb 0x407d4e
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x407ff0
push edx
push ecx
call fcn.0040f24e
add esp, 8
cmp byte [ebp - 0x13e], 0
jne 0x407dce
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0xc8]
call fcn.00406cc0
mov ecx, dword [ebp - 0x1c]
mov eax, dword [eax]
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x168], xmm0
test ecx, ecx
je 0x407dd1
mov edx, dword [ebp - 0x14]
mov eax, ecx
sub edx, ecx
cmp edx, 0x1000
jb 0x407da6
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x407ff5
push edx
push ecx
call fcn.0040f24e
movups xmm0, xmmword [ebp - 0x168]
add esp, 8
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0
jmp 0x407dd1
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 0x407df6
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov eax, dword [ebp - 0xc0]
test eax, eax
je 0x407e09
push 0
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov eax, dword [ebp - 0xc4]
test eax, eax
je 0x407e1a
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov eax, dword [ebp - 0xc8]
test eax, eax
je 0x407e2d
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 0x407e5d
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x422284]
mov ecx, edi
call esi
or esi, 0xffffffff
lea ecx, [ebp - 0x138]
call fcn.00408100
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 0x407e9b
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x422284]
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 0x407ece
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x422284]
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 0x407f01
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x422284]
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 0x407f2f
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x422284]
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.0040ed1d
mov esp, ebp
pop ebp
ret
push 0x80004005
call fcn.00407070
push 0x80004005
call fcn.00407070
push 0x80004005
call fcn.00407070
push 0x80004005
call fcn.00407070
push 0x80004005
call fcn.00407070
push str.Unable_to_create_hash_context_
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea ecx, [ebp - 0x20]
call fcn.00405b20
push 0x42a650
lea eax, [ebp - 0x20]
push eax
call fcn.004106aa
push str.Unable_to_create_hash_context_
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea ecx, [ebp - 0x168]
call fcn.00405b20
push 0x42a650
lea eax, [ebp - 0x168]
push eax
call fcn.004106aa
push str.Unable_to_update_hash_context_
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea ecx, [ebp - 0x150]
call fcn.00405b20
push 0x42a650
lea eax, [ebp - 0x150]
push eax
call fcn.004106aa
call fcn.004131d8
call fcn.004131d8
int3