Function at 0x4a14c0
Capabilities:
Initialize hashing via wincrypt

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5f5bec
mov eax, dword fs:[0]
push eax
sub esp, 0x448
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 - 0x2b4]
mov esi, dword [ebp + 0x1c]
xorps xmm0, xmm0
mov ebx, dword [ebp + 0xc]
push str.msCalcSslCertVerify
mov dword [ebp - 0x44c], eax
mov eax, dword [ebp + 0x18]
push esi
mov dword [ebp - 0x450], ebx
mov dword [ebp - 0x448], eax
movq qword [ebp - 0x2b4], xmm0
mov dword [ebp - 0x2ac], 0
call fcn.00430cc0
mov dword [ebp - 4], 0
test ebx, ebx
je 0x4a15f6
mov ebx, dword [ebp + 0x10]
test ebx, ebx
je 0x4a15f6
cmp ebx, 0x80
ja 0x4a15f6
cmp byte [esi + 0xad], 0
mov edi, dword [ebp + 0x14]
je 0x4a15b8
push 0x74
lea eax, [ebp - 0x328]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
lea ecx, [ebp - 0x328]
call fcn.00420e20
lea eax, [ebp - 0x328]
mov byte [ebp - 4], 1
push eax
push edi
call fcn.004842d0
add esp, 8
lea eax, [ebp - 0x328]
mov ecx, esi
push eax
push str.hashAlg
call fcn.004317e0
lea ecx, [ebp - 0x328]
mov byte [ebp - 4], 0
call fcn.00420e70
push esi
call fcn.004e39b0
add esp, 4
test al, al
je 0x4a1986
mov ecx, dword [ebp - 0x448]
call fcn.004132b0
mov ecx, dword [ebp - 0x44c]
push esi
call fcn.004709c0
mov dword [ebp - 0x454], eax
test eax, eax
jne 0x4a1621
mov eax, dword [esi]
mov ecx, esi
push str.Failed_to_get_MsCertificate.
call dword [eax + 0x14]
xor bl, bl
lea ecx, [ebp - 0x2b4]
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
push esi
lea ecx, [ebp - 0x298]
mov dword [ebp - 0x298], 0
push ecx
mov ecx, eax
call fcn.004ce3f0
push esi
push dword [ebp - 0x298]
mov dword [ebp - 0x444], eax
call fcn.004a1460
add esp, 8
cmp dword [ebp - 0x444], 0
je 0x4a1986
cmp dword [ebp - 0x298], 0xffffffff
je 0x4a1986
push 0x118
lea eax, [ebp - 0x440]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
lea ecx, [ebp - 0x440]
call fcn.00407810
mov ebx, dword [ebp - 0x44c]
lea eax, [ebp - 0x440]
push esi
push eax
mov ecx, ebx
mov byte [ebp - 4], 2
call fcn.00470dc0
test al, al
je 0x4a1799
mov eax, dword [ebp - 0x454]
lea ecx, [ebp - 0x440]
add eax, 0x18
push eax
mov dword [ebp - 0x454], eax
call fcn.00408ca0
test al, al
jne 0x4a1799
push str.setSmartCardPin
xorps xmm0, xmm0
mov dword [ebp - 0x2a0], 0
push esi
lea ecx, [ebp - 0x2a8]
movq qword [ebp - 0x2a8], xmm0
call fcn.00430cc0
mov eax, dword [esi]
mov ecx, esi
push str.setting_smart_card_pin..
mov byte [ebp - 4], 3
call dword [eax + 0x18]
lea ecx, [ebp - 0x440]
call fcn.00408d50
push esi
push 0
push eax
push 0x21
push dword [ebp - 0x444]
call fcn.004e37b0
add esp, 0x14
test eax, eax
jne 0x4a1778
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.__4_
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]
cmp byte [ebx + 0x150], 0
je 0x4a1778
lea ecx, [ebp - 0x2a8]
call fcn.00430db0
lea ecx, [ebp - 0x440]
xor bl, bl
call fcn.004078a0
jmp 0x4a15f8
mov ecx, dword [ebp - 0x454]
lea eax, [ebp - 0x440]
push eax
call fcn.00408760
lea ecx, [ebp - 0x2a8]
mov byte [ebp - 4], 2
call fcn.00430db0
cmp edi, 0x10
jne 0x4a17a5
mov ebx, 0x8008
jmp 0x4a17d7
cmp edi, 7
jne 0x4a17b1
mov ebx, 0x800c
jmp 0x4a17d7
cmp edi, 2
jne 0x4a17bd
mov ebx, 0x800d
jmp 0x4a17d7
cmp edi, 3
jne 0x4a17c9
mov ebx, 0x800e
jmp 0x4a17d7
xor ebx, ebx
cmp edi, 5
setne bl
add ebx, 0x8003
cmp dword [ebp + 0x10], 0x24
mov eax, 0x8008
cmove ebx, eax
lea eax, [ebp - 0x294]
push eax
push 0
push 0
push ebx
push dword [ebp - 0x444]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
jne 0x4a1866
push edi
push str.hashAlg
mov ecx, esi
call fcn.00431470
push ebx
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]
push dword [ebp - 0x444]
call fcn.004d0cb0
mov edi, eax
add esp, 4
test edi, edi
je 0x4a1915
push esi
mov ecx, edi
call fcn.004d0e90
mov edx, dword [edi]
mov ecx, edi
push 1
call dword [edx]
lea ecx, [ebp - 0x440]
xor bl, bl
call fcn.004078a0
jmp 0x4a15f8
push dword [ebp + 0x10]
lea eax, [ebp - 0x90]
push dword [ebp - 0x450]
push eax
call fcn.0040f660
add esp, 0xc
lea eax, [ebp - 0x90]
push 0
push eax
push 2
push dword [ebp - 0x294]
call dword [sym.imp.ADVAPI32.dll_CryptSetHashParam]
test eax, eax
jne 0x4a18ca
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]
lea ecx, [ebp - 0x440]
xor bl, bl
call fcn.004078a0
jmp 0x4a15f8
lea eax, [ebp - 0x29c]
mov dword [ebp - 0x29c], 0x200
push eax
lea eax, [ebp - 0x290]
push eax
xor eax, eax
test edi, edi
sete al
push eax
push 0
push dword [ebp - 0x298]
push dword [ebp - 0x294]
call dword [sym.imp.ADVAPI32.dll_CryptSignHashA]
test eax, eax
jne 0x4a1927
mov ecx, esi
call fcn.00431cd0
push dword [ebp - 0x294]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
lea ecx, [ebp - 0x440]
xor bl, bl
call fcn.004078a0
jmp 0x4a15f8
cmp byte [esi + 0xad], 0
je 0x4a1942
push dword [ebp - 0x29c]
mov ecx, esi
push str.cryptSigSize
call fcn.00431470
push dword [ebp - 0x29c]
mov ebx, dword [ebp - 0x448]
lea eax, [ebp - 0x290]
push eax
mov ecx, ebx
call fcn.00412010
mov ecx, ebx
call fcn.00415ad0
mov eax, dword [ebp - 0x294]
test eax, eax
je 0x4a1974
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
lea ecx, [ebp - 0x440]
mov bl, 1
call fcn.004078a0
jmp 0x4a15f8
push esi
push dword [ebp - 0x448]
push 1
push ebx
push dword [ebp - 0x450]
push edi
push dword [ebp - 0x44c]
call fcn.004a2bc0
add esp, 0x1c
mov bl, al
jmp 0x4a15f8