Function at 0x4dc164
Capabilities:
Generate random numbers via winapi
Hash data via wincrypt
Initialize hashing via wincrypt

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x60
mov eax, dword [0x5184d0]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
mov dword [ebp - 0x5c], eax
xor edi, edi
mov eax, dword [ebp + 0x10]
mov esi, edx
push 0x40
mov dword [ebp - 0x60], eax
lea eax, [ebp - 0x44]
push edi
push eax
mov dword [ebp - 0x4c], ecx
call sub.msvcrt.dll_memset
add esp, 0xc
mov dword [ebp - 0x50], edi
mov dword [ebp - 0x48], edi
mov ebx, edi
mov dword [ebp - 0x54], ebx
cmp esi, 2
je 0x4dc1e1
cmp esi, 1
je 0x4dc1e1
mov ecx, dword [ebp - 0x4c]
lea eax, [ebp - 0x54]
push eax
mov edx, esi
call fcn.004dc019
mov esi, eax
test esi, esi
je 0x4dc1d8
push esi
push 0x83b01a4
call dword [sym.imp.certcli.dll_Ordinal_357]
mov ebx, dword [ebp - 0x54]
jmp 0x4dc321
mov ebx, dword [ebp - 0x54]
push 2
mov dword [ebp - 0x4c], ebx
pop esi
lea eax, [ebp - 0x48]
push eax
push 0
push 0
push dword [ebp + 0xc]
push dword [ebp - 0x4c]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
jne 0x4dc211
call fcn.004c73cc
mov esi, eax
push esi
push 0x84601a4
call dword [sym.imp.certcli.dll_Ordinal_357]
jmp 0x4dc321
lea eax, [ebp - 0x44]
push eax
push 0x40
push dword [ebp - 0x4c]
call dword [sym.imp.ADVAPI32.dll_CryptGenRandom]
test eax, eax
jne 0x4dc233
call fcn.004c73cc
mov esi, eax
push esi
push 0x84c01a4
jmp 0x4dc206
push 0
push 0x40
lea eax, [ebp - 0x44]
push eax
push dword [ebp - 0x48]
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
jne 0x4dc257
call fcn.004c73cc
mov esi, eax
push esi
push 0x85101a4
jmp 0x4dc206
lea eax, [ebp - 0x58]
push eax
xor eax, eax
push eax
push eax
push eax
push esi
push dword [ebp - 0x48]
call dword [sym.imp.ADVAPI32.dll_CryptSignHashW]
test eax, eax
jne 0x4dc27d
call fcn.004c73cc
mov esi, eax
push esi
push 0x85701a4
jmp 0x4dc206
push dword [ebp - 0x58]
push 0
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
mov edi, eax
test edi, edi
jne 0x4dc29e
mov esi, 0x8007000e
push esi
push 0x85d01a4
jmp 0x4dc206
lea eax, [ebp - 0x58]
push eax
push edi
push 0
push 0
push esi
push dword [ebp - 0x48]
call dword [sym.imp.ADVAPI32.dll_CryptSignHashW]
test eax, eax
jne 0x4dc2c7
call fcn.004c73cc
mov esi, eax
push esi
push 0x86201a4
jmp 0x4dc206
lea eax, [ebp - 0x50]
push eax
push dword [ebp - 0x5c]
push 1
push dword [ebp - 0x4c]
call dword [sym.imp.CRYPT32.dll_CryptImportPublicKeyInfo]
test eax, eax
jne 0x4dc2ef
call fcn.004c73cc
mov esi, eax
push esi
push 0x86d01a4
jmp 0x4dc206
mov esi, dword [ebp - 0x60]
xor eax, eax
push eax
push eax
push dword [ebp - 0x50]
mov dword [esi], eax
push dword [ebp - 0x58]
push edi
push dword [ebp - 0x48]
call dword [sym.imp.ADVAPI32.dll_CryptVerifySignatureW]
test eax, eax
jne 0x4dc31f
call fcn.004c73cc
push eax
push 0x87401a4
mov dword [esi], eax
call dword [sym.imp.certcli.dll_Ordinal_357]
xor esi, esi
cmp dword [ebp - 0x48], 0
je 0x4dc330
push dword [ebp - 0x48]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
cmp dword [ebp - 0x50], 0
je 0x4dc33f
push dword [ebp - 0x50]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyKey]
test edi, edi
je 0x4dc34a
push edi
call dword [sym.imp.KERNEL32.dll_LocalFree]
test ebx, ebx
je 0x4dc357
push 0
push ebx
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov ecx, dword [ebp - 4]
mov eax, esi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.005036b0
leave
ret 0xc