CcUnpinData

VOID __stdcall CcUnpinData(VOID *Bcb){
  void *v1; 
  UINT8 v2; 
  VOID *v3; 
  char *i; 

  v1 = Bcb;
  if( ((unsigned __int8)Bcb & 1) != 0 )
  {
    v2 = 1;
    Bcb = (VOID *)((unsigned __int64)Bcb & 0xFFFFFFFFFFFFFFFEui64);
LABEL_3:
    CcUnpinFileDataEx(Bcb, v2, UNPIN);
    return;
  }
  if( *(_WORD *)Bcb != 762 )
  {
    v2 = 0;
    goto LABEL_3;
  }
  v3 = (VOID *)*((_QWORD *)Bcb + 2);
  for( i = (char *)Bcb + 16; v3; i += 8 )
  {
    CcUnpinData(v3);
    v3 = (VOID *)*((_QWORD *)i + 1);
  }
  ExFreePoolWithTag(v1, 0);
}

Referenced by:

CcPinMappedData
CcPinRead
CcPreparePinWrite
CcUnpinData
CcUnpinDataForThread