PspDeleteServerSiloGlobals

void __fastcall PspDeleteServerSiloGlobals(PVOID P){
  void *v2; 
  struct _DMA_ADAPTER *v3; 
  void *v4; 
  struct _DMA_ADAPTER *v5; 
  void *v6; 
  void *v7; 
  struct _KEVENT *v8; 
  DbgkCleanupServerSiloState((INT64)P + 968);
  ObCleanupSiloState((VOID **)P);
  SeRmCleanupSiloState((char *)P + 784);
  ExWnfCleanupServerSiloState((INT64)P + 912);
  v2 = (void *)*((_QWORD *)P + 108);
  if( v2 )
  {
    EtwDeleteSiloState(v2);
    *((_QWORD *)P + 108) = 0i64;
  }
  if( *((_QWORD *)P + 137) )
  {
    RtlFreeAnsiString((_UNICODE_STRING *)P + 68);
    *((_QWORD *)P + 137) = 0i64;
  }
  v3 = (struct _DMA_ADAPTER *)*((_QWORD *)P + 129);
  if( v3 )
  {
    HalPutDmaAdapter(v3);
    *((_QWORD *)P + 129) = 0i64;
  }
  v4 = (void *)*((_QWORD *)P + 130);
  if( v4 )
  {
    MmUnmapViewInSystemSpace(v4);
    *((_QWORD *)P + 130) = 0i64;
  }
  PspDeleteProtectedProcessParameters((INT64)P);
  if( *((_QWORD *)P + 142) )
  {
    MmUnmapViewInSystemSpace(*((PVOID *)P + 141));
    v5 = (struct _DMA_ADAPTER *)*((_QWORD *)P + 142);
    *((_QWORD *)P + 141) = 0i64;
    HalPutDmaAdapter(v5);
    *((_QWORD *)P + 142) = 0i64;
  }
  v6 = (void *)*((_QWORD *)P + 113);
  if( v6 )
  {
    ExpDeleteSiloState(v6);
    *((_QWORD *)P + 113) = 0i64;
  }
  v7 = (void *)*((_QWORD *)P + 132);
  if( v7 )
  {
    ZwClose(v7);
    *((_QWORD *)P + 132) = 0i64;
  }
  v8 = (struct _KEVENT *)*((_QWORD *)P + 140);
  if( v8 )
  {
    KeSetEvent(v8, 0);
    ObfDereferenceObjectWithTag(*((PVOID *)P + 140), 0x65446953ui64);
    *((_QWORD *)P + 140) = 0i64;
  }
  if( *((_BYTE *)P + 1049) )
    ExFreePoolWithTag(*((PVOID *)P + 133), 0);
  ExFreePoolWithTag(P, 0x476C6953u);
}

Referenced by:

PspConvertSiloToServerSilo
PspDeleteSilo