MiFreePrivateFixupEntryForSystemImage

LIST_ENTRY *__fastcall MiFreePrivateFixupEntryForSystemImage(VOID *ImageBaseAddress, UINT64 ActualFree){
  PVOID *p_Flink; 
  int v4; 
  KIRQL v5; 
  LIST_ENTRY *v6; 
  unsigned __int64 v7; 
  _LIST_ENTRY *Flink; 
  _LIST_ENTRY *Blink; 
  p_Flink = 0i64;
  v4 = ActualFree;
  v5 = ExAcquireSpinLockExclusive(&dword_140C4CA24);
  v6 = (LIST_ENTRY *)qword_140C4CA00;
  v7 = v5;
  while( v6 != (LIST_ENTRY *)&qword_140C4CA00 )
  {
    p_Flink = (PVOID *)&v6->Flink;
    if( ImageBaseAddress == v6[1].Flink )
    {
      if( !v4 )
      {
        ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)&dword_140C4CA24);
        __writecr8(v7);
        return v6;
      }
      Flink = v6->Flink;
      Blink = v6->Blink;
      if( v6->Flink->Blink != v6 || Blink->Flink != v6 )
        __fastfail(3u);
      Blink->Flink = Flink;
      Flink->Blink = Blink;
      break;
    }
    v6 = v6->Flink;
  }
  ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)&dword_140C4CA24);
  __writecr8(v7);
  if( v4 )
  {
    if( v6 == (LIST_ENTRY *)&qword_140C4CA00 )
      KeBugCheckEx(0x1Au, 0x1011ui64, (ULONG_PTR)ImageBaseAddress, 0i64, 0i64);
    ExFreePoolWithTag(p_Flink[5], 0);
    ExFreePoolWithTag(p_Flink, 0);
  }
  return 0i64;
}

Referenced by:

MiCountSystemImageCommitment
MiGetSystemAddressForImage
MiUnloadSystemImage