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

Disassembly:
push 0xffffffffffffffff
push 0x4ec948
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 [0x51d154]
cmp eax, ebx
jne 0x4a1f08
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x54]
cmp eax, ecx
mov esi, eax
mov dword [esp + 0x28], esi
jne 0x4a1efb
cmp ecx, ebx
jne 0x4a1ee1
push 0x4fbb2c
push str.DEVI
push 0x51d2a0
call fcn.004203b8
add esp, 0xc
cmp dword [esp + 0x58], ebx
jne 0x4a1efb
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 0x4a1f18
cmp eax, 3
je 0x4a1f18
mov eax, 3
mov dword [esp + 0x14], eax
mov ecx, 1
jmp 0x4a1f1c
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 [0x51d154]
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 0x4a1ff9
cmp dword [esp + 0x58], ebx
je 0x4a1fb9
mov eax, dword [esp + 0x30]
cmp eax, ebx
je 0x4a1f8e
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 0x4a1fa1
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 0x4a1fd9
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 0x4a211a
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov dword [esp + 0x34], ebx
jmp 0x4a211a
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 0x4a204e
cmp dword [esp + 0x58], ebx
lea ecx, [esp + 0x30]
je 0x4a210d
call fcn.004a1df0
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 0x4a2023
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 0x4a2023
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 0x4a2023
push 0x10
lea edx, [esp + 0x3c]
push edx
push 3
push str.PrivateHash
push str.SoftwareMicrosoftWindowsCurrentVersionSetup
push SysReAllocStringLen
call fcn.00444820
add esp, 0x18
lea ecx, [esp + 0x30]
mov dword [esp + 0x50], 0xffffffff
call fcn.004a1df0
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.00444820
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.00444820
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.00444820
add esp, 0x48
cmp esi, ebx
mov dword [esp + 0x20], eax
je 0x4a219e
mov edi, 7
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebp, eax
cmp dword [esp + 0x20], ebx
jne 0x4a21d6
cmp esi, ebx
mov eax, dword [esp + 0x58]
je 0x4a21c9
cmp eax, ebx
jne 0x4a2206
push 0x4fb9c4
push str.DEVI
push 0x51d2a0
call fcn.004203b8
add esp, 0xc
jmp 0x4a2206
cmp eax, ebx
jne 0x4a2206
push ebp
push edi
push 0x4fb9b4
jmp 0x4a21f4
cmp esi, ebx
je 0x4a21e7
mov edi, 7
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebp, eax
cmp dword [esp + 0x58], ebx
jne 0x4a2206
push ebp
push edi
push str.Err_
push 0x4fb978
push 0x51d2a0
call fcn.004203b8
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