SecureDump_Init
INT64 __fastcall SecureDump_Init(){
int v0;
v0 = 0;
if( SecureDmpEncryptionContext == 1 )
{
if( !DWORD1(xmmword_140C4C598) )
{
byte_140C4C594 = 0;
LABEL_4:
SecureDmpEncryptionContext = 2;
goto LABEL_5;
}
byte_140C4C594 = 1;
v0 = SecureDump_SymmetricEncryptionSetup();
if( v0 >= 0 )
{
v0 = SecureDump_EncryptSymmetricKeyWithPublicKey();
if( v0 >= 0 )
{
dword_140C4C5E0 = (*((_DWORD *)dwFlags + 1) + pcbResult + 8279) & 0xFFFFF000;
goto LABEL_4;
}
}
}
LABEL_5:
switch( SecureDmpEncryptionContext )
{
case 3:
v0 = -1073741823;
break;
case 2:
return 0i64;
case 0:
return 3221225488i64;
default:
if( v0 < 0 )
{
byte_140C4C594 = 0;
if( hAlgorithm )
{
BCryptCloseAlgorithmProvider(hAlgorithm);
hAlgorithm = 0i64;
}
if( hObject )
{
BCryptDestroyKey(hObject);
hObject = 0i64;
}
if( qword_140C4C5B8 )
{
ExFreePoolWithTag(qword_140C4C5B8, 0);
qword_140C4C5B8 = 0i64;
}
if( *((_QWORD *)dwFlags + 1) )
{
ExFreePoolWithTag(*(&dwFlags + 1), 0);
*((_QWORD *)dwFlags + 1) = 0i64;
}
if( *((_QWORD *)&xmmword_140C4C598 + 1) )
{
ExFreePoolWithTag(*((PVOID *)&xmmword_140C4C598 + 1), 0);
*((_QWORD *)&xmmword_140C4C598 + 1) = 0i64;
}
SecureDmpEncryptionContext = 3;
}
break;
}
return(unsigned int)v0;
}Referenced by:
IopInitCrashDumpDuringSysInit