AlpcpReleaseMessageAttributesOnCancel

void __fastcall AlpcpReleaseMessageAttributesOnCancel(__int64 a1, int a2){
  void *v4; 
  ULONG_PTR v5; 
  void *v6; 
  unsigned __int64 v7; 
  v4 = *(void **)(a1 + 136);
  if( v4 )
  {
    AlpcpDereferenceBlobEx(v4, 1i64);
    *(_QWORD *)(a1 + 136) = 0i64;
  }
  v5 = *(_QWORD *)(a1 + 144);
  if( v5 && (!a2 || (*(_DWORD *)(a1 + 40) & 0x4000) == 0) )
  {
    AlpcpReleaseViewAttribute(v5);
    *(_QWORD *)(a1 + 144) = 0i64;
  }
  v6 = *(void **)(a1 + 152);
  if( v6 )
  {
    AlpcpDereferenceBlobEx(v6, 1i64);
    *(_QWORD *)(a1 + 152) = 0i64;
  }
  v7 = *(_QWORD *)(a1 + 160);
  if( (v7 & 1) != 0 )
  {
    if( v7 >= 4 && (v7 & 2) != 0 )
      HalPutDmaAdapter((PADAPTER_OBJECT)(v7 & 0xFFFFFFFFFFFFFFFCui64));
    *(_QWORD *)(a1 + 160) = 0i64;
  }
}

Referenced by:

AlpcpCancelMessage
AlpcpCancelMessagesByRequestor