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

Disassembly:
push 0xffffffffffffffff
push 0x4e5a98
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x38
mov ecx, dword [esp + 0x48]
xor eax, eax
push ebx
mov dword [esp + 0x2d], eax
mov dword [esp + 0x31], eax
push esi
push edi
mov dword [esp + 0x3d], eax
mov word [esp + 0x41], ax
xor edx, edx
mov byte [esp + 0x43], al
mov word [esp + 0xd], dx
lea eax, [esp + 0x10]
push eax
mov dword [esp + 0x58], ecx
lea ecx, [esp + 0x24]
push ecx
mov byte [esp + 0x17], dl
lea edx, [esp + 0x1c]
push edx
push str.Policy
xor ebx, ebx
push str.SOFTWAREMicrosoftDriver_Signing
mov edi, 4
push SysReAllocStringLen
mov byte [esp + 0x4c], bl
mov dword [esp + 0x3c], ebx
mov byte [esp + 0x24], bl
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x40], 0xffffffff
mov dword [esp + 0x38], ebx
mov dword [esp + 0x28], edi
call dword [0x519004]
cmp eax, ebx
jne 0x444738
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x54]
cmp eax, ecx
mov esi, eax
mov dword [esp + 0x28], esi
jne 0x44472b
cmp ecx, ebx
jne 0x444711
push 0x4f4804
push str.DEVI
push 0x519150
call fcn.0041e97e
add esp, 0xc
cmp dword [esp + 0x58], ebx
jne 0x44472b
pop edi
mov eax, esi
pop esi
pop ebx
mov ecx, dword [esp + 0x38]
mov dword fs:[0], ecx
add esp, 0x44
ret
mov eax, dword [esp + 0x14]
cmp eax, edi
je 0x444748
cmp eax, 3
je 0x444748
mov eax, 3
mov dword [esp + 0x14], eax
mov ecx, 1
jmp 0x44474c
mov ecx, dword [esp + 0x10]
push ebp
mov dword [esp + 0x20], eax
lea eax, [esp + 0x14]
push eax
mov dword [esp + 0x20], ecx
lea ecx, [esp + 0x2c]
push ecx
lea edx, [esp + 0x20]
push edx
push str.seed
push str.SystemWPAPnP
push SysReAllocStringLen
mov dword [esp + 0x2c], edi
call dword [0x519004]
mov dword [esp + 0x30], ebx
mov dword [esp + 0x34], ebx
push ebx
push 1
push ebx
push ebx
lea eax, [esp + 0x40]
push eax
mov dword [esp + 0x64], ebx
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextW]
mov esi, eax
cmp esi, ebx
mov edi, 1
jne 0x444829
cmp dword [esp + 0x58], ebx
je 0x4447e9
mov eax, dword [esp + 0x30]
cmp eax, ebx
je 0x4447be
push ebx
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov eax, dword [esp + 0x34]
cmp eax, ebx
mov dword [esp + 0x30], ebx
je 0x4447d1
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
pop ebp
pop edi
pop esi
mov eax, 1
pop ebx
mov ecx, dword [esp + 0x38]
mov dword fs:[0], ecx
add esp, 0x44
ret
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebp, eax
mov eax, dword [esp + 0x30]
cmp eax, ebx
mov dword [esp + 0x50], 0xffffffff
je 0x444809
push ebx
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov eax, dword [esp + 0x34]
cmp eax, ebx
mov dword [esp + 0x30], ebx
je 0x44494a
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov dword [esp + 0x34], ebx
jmp 0x44494a
mov edx, dword [esp + 0x30]
lea ecx, [esp + 0x34]
push ecx
push ebx
push ebx
push 0x8003
push edx
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
mov esi, eax
mov edi, 2
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, ebx
mov ebp, eax
jne 0x44487e
cmp dword [esp + 0x58], ebx
lea ecx, [esp + 0x30]
je 0x44493d
call fcn.00444620
pop ebp
pop edi
pop esi
mov eax, 1
pop ebx
mov ecx, dword [esp + 0x38]
mov dword fs:[0], ecx
add esp, 0x44
ret
mov edx, dword [esp + 0x34]
mov al, byte [esp + 0x58]
push ebx
push 4
lea ecx, [esp + 0x18]
push ecx
push edx
mov byte [esp + 0x20], bl
mov byte [esp + 0x21], al
mov byte [esp + 0x22], bl
mov byte [esp + 0x23], bl
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
mov esi, eax
mov edi, 3
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, ebx
mov ebp, eax
je 0x444853
mov ecx, dword [esp + 0x34]
push ebx
push 4
lea eax, [esp + 0x30]
push eax
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
mov esi, eax
mov edi, 4
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, ebx
mov ebp, eax
je 0x444853
mov ecx, dword [esp + 0x34]
push ebx
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x40]
push eax
push 2
push ecx
mov dword [esp + 0x28], 0x10
call dword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
mov esi, eax
mov edi, 5
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, ebx
mov ebp, eax
je 0x444853
push 0x10
lea edx, [esp + 0x3c]
push edx
push 3
push str.PrivateHash
push str.SoftwareMicrosoftWindowsCurrentVersionSetup
push SysReAllocStringLen
call fcn.004402a0
add esp, 0x18
lea ecx, [esp + 0x30]
mov dword [esp + 0x50], 0xffffffff
call fcn.00444620
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
push eax
lea ecx, [esp + 0x5c]
push ecx
push edx
push str.Policy
push str.SoftwareMicrosoftDriver_Signing
push SysReAllocStringLen
call fcn.004402a0
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x38]
push eax
lea ecx, [esp + 0x74]
push ecx
push edx
push str.Policy
push str.SoftwareMicrosoftNon_Driver_Signing
push SysReAllocStringLen
call fcn.004402a0
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x50]
push eax
lea ecx, [esp + 0x8c]
push ecx
push edx
push str.Policy
push str.SoftwareMicrosoftDriver_Signing
push SysReAllocStringLen
call fcn.004402a0
add esp, 0x48
cmp esi, ebx
mov dword [esp + 0x20], eax
je 0x4449ce
mov edi, 7
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebp, eax
cmp dword [esp + 0x20], ebx
jne 0x444a06
cmp esi, ebx
mov eax, dword [esp + 0x58]
je 0x4449f9
cmp eax, ebx
jne 0x444a36
push 0x4f469c
push str.DEVI
push 0x519150
call fcn.0041e97e
add esp, 0xc
jmp 0x444a36
cmp eax, ebx
jne 0x444a36
push ebp
push edi
push 0x4f468c
jmp 0x444a24
cmp esi, ebx
je 0x444a17
mov edi, 7
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebp, eax
cmp dword [esp + 0x58], ebx
jne 0x444a36
push ebp
push edi
push str.Err_
push 0x4f4650
push 0x519150
call fcn.0041e97e
add esp, 0x14
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x2c]
pop ebp
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
add esp, 0x44
ret