SymCryptWipeAsm
VOID __stdcall SymCryptWipeAsm(PVOID pbData, SIZE_T cbData){
bool v2;
SIZE_T i;
unsigned int v4;
__int64 v5;
if( cbData < 0x10 )
{
if( (unsigned int)cbData < 8 )
{
if( (unsigned int)cbData < 4 )
{
if( (unsigned int)cbData < 2 )
{
if( (_DWORD)cbData )
*(_BYTE *)pbData = 0;
}
else
{
*(_WORD *)pbData = 0;
*(_WORD *)((char *)pbData + cbData - 2) = 0;
}
}
else
{
*(_DWORD *)pbData = 0;
*(_DWORD *)((char *)pbData + cbData - 4) = 0;
}
}
else
{
*(_QWORD *)pbData = 0i64;
*(_QWORD *)((char *)pbData + cbData - 8) = 0i64;
}
}
else if( ((unsigned __int8)pbData & 0xF) != 0
&& (*(_QWORD *)pbData = 0i64,
*((_QWORD *)pbData + 1) = 0i64,
v5 = -(int)pbData & 0xF,
pbData = (char *)pbData + v5,
cbData -= v5,
cbData < 0x10) )
{
*(_QWORD *)((char *)pbData + cbData - 16) = 0i64;
*(_QWORD *)((char *)pbData + cbData - 8) = 0i64;
}
else
{
*(_OWORD *)pbData = 0i64;
if( (cbData & 0x10) != 0 )
pbData = (char *)pbData + 16;
v2 = cbData < 0x20;
for( i = cbData - 32; !v2; i -= 32i64 )
{
*(_OWORD *)pbData = 0i64;
*((_OWORD *)pbData + 1) = 0i64;
pbData = (char *)pbData + 32;
v2 = i < 0x20;
}
v4 = i & 0xF;
if( v4 )
{
*(_QWORD *)((char *)pbData + v4 - 16) = 0i64;
*(_QWORD *)((char *)pbData + v4 - 8) = 0i64;
}
}
}Referenced by:
SymCryptWipe