HvBufferCheckSum

UINT64 __stdcall HvBufferCheckSum(PVOID Buffer, UINT64 a2){
  int v2; 
  __int64 v3; 
  unsigned int v4; 
  int v5; 
  unsigned __int8 *v6; 
  _DWORD *v7; 
  __int64 v8; 
  unsigned int v9; 
  __int64 v11; 
  int v12; 
  v2 = 0;
  v3 = (unsigned int)a2 >> 2;
  v4 = a2 & 3;
  v5 = 0;
  v6 = (unsigned __int8 *)Buffer + 4 * v3;
  if( (unsigned int)v3 > 1 )
  {
    v7 = (char *)Buffer + 4;
    v8 = (unsigned int)(v3 - 1);
    do
    {
      v5 ^= *v7++;
      --v8;
    }
    while( v8 );
  }
  if( v4 )
  {
    v11 = v4;
    do
    {
      v12 = *v6++;
      v2 = v12 + (v2 << 8);
      --v11;
    }
    while( v11 );
  }
  v9 = v2 ^ v5;
  if( v9 == -1 )
    v9 = -2;
  if( !v9 )
    return 1;
  return v9;
}

Referenced by:

CmAddLogForAction
CmLogTmRmAction
CmpVerifyLogRecord