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