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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x421b7d
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.00407ce0
mov edi, eax
test edi, edi
je 0x4089fc
mov eax, dword [edi]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x422280]
mov ecx, edi
call esi
add eax, 0x10
mov dword [ebp - 0xdc], eax
mov dword [ebp - 4], 1
call fcn.00407ce0
mov edi, eax
test edi, edi
je 0x408a06
mov eax, dword [edi]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x422280]
mov ecx, edi
call esi
add eax, 0x10
mov dword [ebp - 0xd8], eax
mov dword [ebp - 4], 2
call fcn.00407ce0
mov edi, eax
test edi, edi
je 0x408a10
mov eax, dword [edi]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x422280]
mov ecx, edi
call esi
add eax, 0x10
mov dword [ebp - 0xd4], eax
mov dword [ebp - 4], 3
call fcn.00407ce0
mov edi, eax
test edi, edi
je 0x408a1a
mov eax, dword [edi]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x422280]
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.00407ff0
mov byte [ebp - 0x13e], 1
mov byte [ebp - 0x13d], 1
mov byte [ebp - 4], 6
call fcn.00407ce0
mov edi, eax
test edi, edi
je 0x408a24
mov eax, dword [edi]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x422280]
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.00407530
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 0x408a2e
mov ecx, dword [ebp - 0xc4]
mov eax, dword [ebp - 0x13c]
mov dword [ebp - 0xc4], eax
test ecx, ecx
je 0x40852a
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.00407530
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 0x408a50
mov ecx, dword [ebp - 0xbc]
mov eax, dword [ebp - 0x13c]
mov dword [ebp - 0xbc], eax
test ecx, ecx
je 0x408593
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.0040aea0
lea ecx, [ebp - 0x138]
call fcn.0040af10
lea edx, [ebp - 0xcc]
lea ecx, [ebp - 0xe0]
call fcn.0040b910
mov eax, dword [ebp - 0xcc]
lea ecx, [eax - 0x10]
mov dword [ebp - 0x158], ecx
mov ecx, dword [eax - 0xc]
test ecx, ecx
je 0x40872f
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 0x408a78
xor esi, esi
cmp byte [ebp + esi*8 - 0xb4], 0
je 0x40876b
mov eax, dword [ebp + esi*8 - 0xb8]
mov eax, dword [eax]
mov ecx, dword [eax - 0xc]
test ecx, ecx
je 0x40876b
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 0x408a78
inc esi
cmp esi, 0x12
jb 0x408731
xor edi, edi
lea esi, [ebp - 0x24]
cmp byte [esi + 4], 0
je 0x4087a7
cmp dword [ebp - 0x138], 0
jne 0x4087a7
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 0x408a78
inc edi
add esi, 0xc
cmp edi, 2
jb 0x408776
cmp byte [ebp - 0x13d], 0
jne 0x408808
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0xc0]
call fcn.00407660
mov ecx, dword [ebp - 0x1c]
mov eax, dword [eax]
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x150], xmm0
test ecx, ecx
je 0x408808
mov edx, dword [ebp - 0x14]
mov eax, ecx
sub edx, ecx
cmp edx, 0x1000
jb 0x4087fe
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x408aa0
push edx
push ecx
call fcn.0041008e
add esp, 8
cmp byte [ebp - 0x13e], 0
jne 0x40887e
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0xc8]
call fcn.00407660
mov ecx, dword [ebp - 0x1c]
mov eax, dword [eax]
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x168], xmm0
test ecx, ecx
je 0x408881
mov edx, dword [ebp - 0x14]
mov eax, ecx
sub edx, ecx
cmp edx, 0x1000
jb 0x408856
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x408aa5
push edx
push ecx
call fcn.0041008e
movups xmm0, xmmword [ebp - 0x168]
add esp, 8
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0
jmp 0x408881
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 0x4088a6
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov eax, dword [ebp - 0xc0]
test eax, eax
je 0x4088b9
push 0
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov eax, dword [ebp - 0xc4]
test eax, eax
je 0x4088ca
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov eax, dword [ebp - 0xc8]
test eax, eax
je 0x4088dd
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 0x40890d
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x422280]
mov ecx, edi
call esi
or esi, 0xffffffff
lea ecx, [ebp - 0x138]
call fcn.00408bb0
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 0x40894b
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x422280]
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 0x40897e
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x422280]
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 0x4089b1
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x422280]
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 0x4089df
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x422280]
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.0040fb5d
mov esp, ebp
pop ebp
ret
push 0x80004005
call fcn.00407b20
push 0x80004005
call fcn.00407b20
push 0x80004005
call fcn.00407b20
push 0x80004005
call fcn.00407b20
push 0x80004005
call fcn.00407b20
push str.Unable_to_create_hash_context_
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea ecx, [ebp - 0x20]
call fcn.004064d0
push 0x42a688
lea eax, [ebp - 0x20]
push eax
call fcn.0041158a
push str.Unable_to_create_hash_context_
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea ecx, [ebp - 0x168]
call fcn.004064d0
push 0x42a688
lea eax, [ebp - 0x168]
push eax
call fcn.0041158a
push str.Unable_to_update_hash_context_
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea ecx, [ebp - 0x150]
call fcn.004064d0
push 0x42a688
lea eax, [ebp - 0x150]
push eax
call fcn.0041158a
call fcn.004138b0
call fcn.004138b0
int3