SymCryptWipeAsm

VOID __stdcall SymCryptWipeAsm(PVOID pbData, _SIZE_T cbData){
  bool v2; 
  unsigned __int64 i; 
  unsigned int v4; 
  __int64 v5; 

  if( *(_QWORD *)&cbData < 0x10ui64 )
  {
    if( (unsigned int)cbData < 8 )
    {
      if( (unsigned int)cbData < 4 )
      {
        if( (unsigned int)cbData < 2 )
        {
          if( cbData )
            *(_BYTE *)pbData = 0;
        }
        else
        {
          *(_WORD *)pbData = 0;
          *(_WORD *)((char *)pbData + *(_QWORD *)&cbData - 2) = 0;
        }
      }
      else
      {
        *(_DWORD *)pbData = 0;
        *(_DWORD *)((char *)pbData + *(_QWORD *)&cbData - 4) = 0;
      }
    }
    else
    {
      *(_QWORD *)pbData = 0i64;
      *(_QWORD *)((char *)pbData + *(_QWORD *)&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,
             *(_QWORD *)&cbData -= v5,
             *(_QWORD *)&cbData < 0x10ui64) )
  {
    *(_QWORD *)((char *)pbData + *(_QWORD *)&cbData - 16) = 0i64;
    *(_QWORD *)((char *)pbData + *(_QWORD *)&cbData - 8) = 0i64;
  }
  else
  {
    *(_OWORD *)pbData = 0i64;
    if( (cbData & 0x10) != 0 )
      pbData = (char *)pbData + 16;
    v2 = *(_QWORD *)&cbData < 0x20ui64;
    for( i = *(_QWORD *)&cbData - 32i64; !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