Function at 0x4a2bc0
Capabilities:
Initialize hashing via wincrypt

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5f5d37
mov eax, dword fs:[0]
push eax
sub esp, 0x51c
mov eax, dword [0x6baac0]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
lea ecx, [ebp - 0x2a4]
mov esi, dword [ebp + 0x20]
xorps xmm0, xmm0
mov edi, dword [ebp + 0x1c]
mov ebx, dword [ebp + 0x10]
push str.msPadAndSignHash
push esi
mov dword [ebp - 0x51c], eax
mov dword [ebp - 0x528], edi
movq qword [ebp - 0x2a4], xmm0
mov dword [ebp - 0x29c], 0
call fcn.00430cc0
mov dword [ebp - 4], 0
test ebx, ebx
je 0x4a300d
mov eax, dword [ebp + 0x14]
test eax, eax
je 0x4a300d
cmp eax, 0x80
ja 0x4a300d
push eax
lea eax, [ebp - 0x90]
push ebx
push eax
call fcn.0040f660
push 0x74
lea eax, [ebp - 0x400]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0x18
lea ecx, [ebp - 0x400]
call fcn.00420e20
mov ebx, dword [ebp + 0xc]
lea eax, [ebp - 0x400]
push eax
push ebx
mov byte [ebp - 4], 1
call fcn.004842d0
add esp, 8
lea eax, [ebp - 0x400]
mov ecx, esi
push eax
push str.hashAlg
call fcn.004317e0
mov ecx, edi
call fcn.004132b0
mov ecx, dword [ebp - 0x51c]
push esi
call fcn.004709c0
mov edi, eax
test edi, edi
jne 0x4a2cde
mov eax, dword [esi]
mov ecx, esi
push str.Failed_to_get_MsCertificate.
call dword [eax + 0x14]
lea ecx, [ebp - 0x400]
xor bl, bl
call fcn.00420e70
jmp 0x4a300f
push 0x74
lea eax, [ebp - 0x38c]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
lea ecx, [ebp - 0x38c]
call fcn.00420e20
push 0x74
lea eax, [ebp - 0x318]
mov byte [ebp - 4], 2
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
lea ecx, [ebp - 0x318]
call fcn.00420e20
push esi
lea eax, [ebp - 0x38c]
mov byte [ebp - 4], 3
push eax
mov ecx, edi
call fcn.004cd370
lea eax, [ebp - 0x38c]
mov ecx, esi
push eax
push str.cert_key_container
call fcn.004317e0
push esi
lea eax, [ebp - 0x318]
mov ecx, edi
push eax
call fcn.004cd090
lea eax, [ebp - 0x318]
mov ecx, esi
push eax
push str.cert_def_provider
call fcn.004317e0
push esi
push 0
mov ecx, edi
call fcn.004ccee0
test eax, eax
jne 0x4a2d7b
xor bl, bl
jmp 0x4a2fea
mov ecx, eax
call fcn.00401c90
push 0x118
mov dword [ebp - 0x520], eax
lea eax, [ebp - 0x518]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
lea ecx, [ebp - 0x518]
call fcn.00407810
mov ecx, dword [ebp - 0x51c]
lea eax, [ebp - 0x518]
push esi
push eax
mov byte [ebp - 4], 4
call fcn.00470dc0
test al, al
je 0x4a2e55
lea ecx, [ebp - 0x518]
call fcn.00408d50
add edi, 0x18
mov dword [ebp - 0x524], eax
push edi
lea ecx, [ebp - 0x518]
call fcn.00408ca0
test al, al
jne 0x4a2e55
push esi
push 0
push dword [ebp - 0x524]
push 0x21
push dword [ebp - 0x520]
call fcn.004e37b0
add esp, 0x14
test eax, eax
jne 0x4a2e47
mov eax, dword [esi]
mov ecx, esi
push str.CryptSetProvParam_failed.
call dword [eax + 0x14]
mov eax, dword [esi]
mov ecx, esi
push str.Failed_to_set_the_smartcard_PIN.__2_
call dword [eax + 0x14]
mov ecx, esi
call fcn.00431cd0
mov eax, dword [esi]
mov ecx, esi
push str.Incorrect_Smartcard_PIN
call dword [eax + 0x18]
mov eax, dword [ebp - 0x51c]
cmp byte [eax + 0x150], 0
jne 0x4a2f8a
lea eax, [ebp - 0x518]
mov ecx, edi
push eax
call fcn.00408760
cmp ebx, 0x10
jne 0x4a2e61
mov edi, 0x8008
jmp 0x4a2e6c
push ebx
call fcn.004a1410
add esp, 4
mov edi, eax
lea eax, [ebp - 0x294]
push eax
push 0
push 0
push edi
push dword [ebp - 0x520]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
jne 0x4a2ebc
push ebx
push str.hashAlg
mov ecx, esi
call fcn.00431470
push edi
push str.algId
mov ecx, esi
call fcn.00431470
mov ecx, esi
call fcn.00431cd0
mov eax, dword [esi]
mov ecx, esi
push str.Failed_to_create_HCRYPTHASH
call dword [eax + 0x14]
xor bl, bl
jmp 0x4a2fdf
push 0
lea eax, [ebp - 0x90]
push eax
push 2
push dword [ebp - 0x294]
call dword [sym.imp.ADVAPI32.dll_CryptSetHashParam]
test eax, eax
jne 0x4a2efd
mov ecx, esi
call fcn.00431cd0
push dword [ebp - 0x294]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov eax, dword [esi]
mov ecx, esi
push str.Failed_to_CryptSetHashParam
call dword [eax + 0x14]
xor bl, bl
jmp 0x4a2fdf
cmp byte [ebp + 0x18], 0
mov eax, 1
mov edi, str.AT_SIGNATURE
lea ebx, [eax + 1]
je 0x4a2f1a
mov eax, ebx
mov edi, str.AT_KEYEXCHANGE
lea ebx, [eax - 1]
lea ecx, [ebp - 0x298]
mov dword [ebp - 0x298], 0x200
push ecx
lea ecx, [ebp - 0x290]
push ecx
push 0
push 0
push eax
push dword [ebp - 0x294]
call dword [sym.imp.ADVAPI32.dll_CryptSignHashA]
test eax, eax
jne 0x4a2f8e
lea eax, [ebp - 0x298]
push eax
lea eax, [ebp - 0x290]
push eax
push 0
push 0
push ebx
push dword [ebp - 0x294]
call dword [sym.imp.ADVAPI32.dll_CryptSignHashA]
test eax, eax
jne 0x4a2f8e
mov ecx, esi
call fcn.00431cd0
push dword [ebp - 0x294]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov eax, dword [esi]
mov ecx, esi
push edi
push str.failedToSignWith
call dword [eax + 0x2c]
xor bl, bl
jmp 0x4a2fdf
cmp byte [esi + 0xad], 0
je 0x4a2fa9
push dword [ebp - 0x298]
mov ecx, esi
push str.cryptSigSize
call fcn.00431470
push dword [ebp - 0x298]
mov ecx, dword [ebp - 0x528]
lea eax, [ebp - 0x290]
push eax
call fcn.00412010
mov ecx, dword [ebp - 0x528]
call fcn.00415ad0
mov eax, dword [ebp - 0x294]
test eax, eax
je 0x4a2fdd
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov bl, 1
lea ecx, [ebp - 0x518]
call fcn.004078a0
lea ecx, [ebp - 0x318]
call fcn.00420e70
lea ecx, [ebp - 0x38c]
call fcn.00420e70
lea ecx, [ebp - 0x400]
call fcn.00420e70
jmp 0x4a300f
xor bl, bl
lea ecx, [ebp - 0x2a4]
call fcn.00430db0
mov al, bl
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.005ebe04
mov esp, ebp
pop ebp
ret