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

Disassembly:
mov eax, dword [esp + 4]
sub esp, 0x810
push ebx
push ebp
push esi
push edi
push 0x41131c
push eax
call fcn.0040797b
mov esi, eax
add esp, 8
test esi, esi
jne 0x4053af
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x810
ret
push 2
push 0
push esi
call fcn.004078cf
push 1
push 0xfffffffffffffffa
push esi
call fcn.004078cf
push esi
push 1
lea ecx, [esp + 0x3c]
push 2
push ecx
call fcn.004077e7
mov edx, dword [esp + 0x44]
mov eax, 0xfffffffe
and edx, 0xffff
push 1
sub eax, edx
push eax
push esi
call fcn.004078cf
push esi
call fcn.0040768f
mov ecx, dword [esp + 0x54]
push esi
and ecx, 0xffff
lea edx, [esp + 0x45c]
push ecx
push 1
push edx
mov ebp, eax
call fcn.004077e7
add esp, 0x48
push 0
push 0
push esi
call fcn.004078cf
mov edi, dword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
add esp, 0xc
lea eax, [esp + 0x10]
push 0xf0000000
push 1
push str.Microsoft_Base_Cryptographic_Provider_v1.0
push 0
push eax
call edi
test eax, eax
jne 0x40546c
push 0xf0000008
push 1
push str.Microsoft_Base_Cryptographic_Provider_v1.0
lea ecx, [esp + 0x1c]
push eax
push ecx
call edi
test eax, eax
jne 0x40546c
push esi
call fcn.00407639
add esp, 4
xor al, al
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x810
ret
mov eax, dword [esp + 0x10]
lea edx, [esp + 0x14]
push edx
push 0
push 0
push 0x8003
push eax
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
jne 0x4054ac
push esi
call fcn.00407639
mov ecx, dword [esp + 0x14]
add esp, 4
push 0
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x810
ret
xor bl, bl
mov edi, 0x400
cmp ebp, edi
jge 0x4054bb
mov edi, ebp
mov bl, 1
push esi
push edi
lea edx, [esp + 0x28]
push 1
push edx
call fcn.004077e7
mov ecx, dword [esp + 0x24]
add esp, 0x10
lea eax, [esp + 0x20]
push 0
push edi
push eax
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
je 0x40553e
sub ebp, edi
test bl, bl
je 0x4054ae
push esi
call fcn.00407639
mov edx, dword [esp + 0x14]
add esp, 4
lea ecx, [esp + 0x18]
mov dword [esp + 0x18], 0
push ecx
push 0
push 0
push 0x54
push 0x411260
push edx
call dword [sym.imp.ADVAPI32.dll_CryptImportKey]
test eax, eax
jne 0x40556c
mov eax, dword [esp + 0x14]
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov ecx, dword [esp + 0x10]
push 0
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x810
ret
push esi
call fcn.00407639
mov edx, dword [esp + 0x18]
add esp, 4
push edx
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov eax, dword [esp + 0x10]
push 0
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x810
ret
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
push 0
push str.ReflexiveArcade_DLL_Signature
and eax, 0xffff
push edx
mov edx, dword [esp + 0x20]
lea ecx, [esp + 0x42c]
push eax
push ecx
push edx
call dword [sym.imp.ADVAPI32.dll_CryptVerifySignatureA]
test eax, eax
mov eax, dword [esp + 0x18]
push eax
jne 0x4055c9
call dword [sym.imp.ADVAPI32.dll_CryptDestroyKey]
mov ecx, dword [esp + 0x14]
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov edx, dword [esp + 0x10]
push 0
push edx
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x810
ret
call dword [sym.imp.ADVAPI32.dll_CryptDestroyKey]
mov ecx, dword [esp + 0x14]
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov edx, dword [esp + 0x10]
push 0
push edx
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
pop edi
pop esi
pop ebp
mov al, 1
pop ebx
add esp, 0x810
ret