RawCleanup

__int64 __fastcall RawCleanup(PFSRTL_ADVANCED_FCB_HEADER AdvancedHeader, PIRP Irp, __int64 a3){
  _FAST_MUTEX *p_PagingIoResource; 
  char v7; 
  void *v8; 
  p_PagingIoResource = (_FAST_MUTEX *)&AdvancedHeader[2].PagingIoResource;
  v7 = 0;
  ExAcquireFastMutex((FAST_MUTEX *)&AdvancedHeader[2].PagingIoResource);
  IoRemoveLinkShareAccessEx(*(_QWORD *)(a3 + 48), (_DWORD *)&AdvancedHeader[1].Resource + 1, 0i64, 0);
  v8 = *(void **)(a3 + 48);
  if( v8 == *(void **)&AdvancedHeader[2].NodeTypeCode )
  {
    *(_DWORD *)&AdvancedHeader[1].NodeTypeCode &= ~1u;
    v7 = 1;
    *(_QWORD *)&AdvancedHeader[2].NodeTypeCode = 0i64;
    v8 = *(void **)(a3 + 48);
  }
  if( v8 == AdvancedHeader[1].ReservedContext )
  {
    AdvancedHeader[1].ReservedContext = 0i64;
    RawInitiateDeleteVolume((INT64)AdvancedHeader, 1i64, 0i64);
  }
  KeReleaseGuardedMutex(p_PagingIoResource);
  if( v7 )
    FsRtlNotifyVolumeEvent(*(_FILE_OBJECT **)(a3 + 48), 5ui64);
  *((_DWORD *)Irp + 12) = 0;
  IofCompleteRequest(Irp, 1);
  return 0i64;
}

Referenced by:

RawDispatch