ExpDeleteSiloState

NTSTATUS __stdcall ExpDeleteSiloState(PVOID P){
  void *v2; 
  VOID *v3; 
  VOID *v4; 
  _EX_RUNDOWN_REF *v5; 
  PVOID *v6; 
  PVOID Pa; 

  v2 = *(void **)P;
  if( v2 )
  {
    ExFreePoolWithTag(v2, 0x69534C53u);
    *(_QWORD *)P = 0i64;
  }
  v3 = (VOID *)*((_QWORD *)P + 2);
  if( v3 )
  {
    ObfDereferenceObjectWithTag(v3, 0x746C6644ui64);
    *((_QWORD *)P + 2) = 0i64;
  }
  v4 = (VOID *)*((_QWORD *)P + 5854);
  if( v4 )
  {
    MmUnmapViewInSystemSpace(v4);
    *((_QWORD *)P + 5854) = 0i64;
  }
  v5 = (_EX_RUNDOWN_REF *)*((_QWORD *)P + 5856);
  if( v5 )
  {
    ExWaitForCallBacks(v5);
    SC_ENV::Free(*((void **)P + 5856));
    *((_QWORD *)P + 5856) = 0i64;
  }
  v6 = (PVOID *)*((_QWORD *)P + 5877);
  if( v6 )
  {
    Pa = *v6;
    if( (int)sub_14061BF48((__int64 *)&Pa) >= 0 )
      ExFreePoolWithTag(Pa, 0x20534C53u);
    ExFreePoolWithTag(*((PVOID *)P + 5877), 0x20534C53u);
    *((_QWORD *)P + 5877) = 0i64;
  }
  return(unsigned int)ExFreePoolWithTag(P, 0x69534C53u);
}

Referenced by:

PspDeleteServerSiloGlobals