MiInitializeSections

VOID __stdcall MiInitializeSections(_MI_PARTITION *Partition){
  _BYTE *v2; 
  __int64 v3; 

  v2 = Partition->Segments.gapB0;
  *((_QWORD *)v2 + 5) = v2 + 32;
  *((_QWORD *)v2 + 4) = v2 + 32;
  *((_QWORD *)v2 + 7) = v2 + 48;
  *((_QWORD *)v2 + 6) = v2 + 48;
  *((_QWORD *)v2 + 9) = v2 + 64;
  *((_QWORD *)v2 + 8) = v2 + 64;
  KeInitializeSemaphore((PRKSEMAPHORE)v2, 0, 0x7FFFFFFF);
  Partition->Segments.DeleteOnCloseList.Blink = &Partition->Segments.DeleteOnCloseList;
  Partition->Segments.DeleteOnCloseList.Flink = &Partition->Segments.DeleteOnCloseList;
  Partition->Segments.UnusedSegmentList.Blink = &Partition->Segments.UnusedSegmentList;
  Partition->Segments.UnusedSegmentList.Flink = &Partition->Segments.UnusedSegmentList;
  Partition->Segments.UnusedSubsectionList.Blink = &Partition->Segments.UnusedSubsectionList;
  Partition->Segments.UnusedSubsectionList.Flink = &Partition->Segments.UnusedSubsectionList;
  KeInitializeEvent((INT64)&Partition->Segments.gap20[24], 0, 0);
  Partition->Segments.DeleteSubsectionList[0].Blink = Partition->Segments.DeleteSubsectionList;
  Partition->Segments.DeleteSubsectionList[0].Flink = Partition->Segments.DeleteSubsectionList;
  KeInitializeEvent((INT64)Partition->Segments.gap20, 0, 0);
  KeInitializeEvent((INT64)&Partition->Segments.DeleteSubsectionList[1], 1, 0);
  KeInitializeTimerEx((INT64)&Partition->Segments.DeleteOnCloseTimer, 1);
  KeInitializeEvent((INT64)Partition->Segments.gap1D0, 0, 0);
  InitializeSListHead(&Partition->Segments.CloneProtosSListHead);
  Partition->Segments.AttemptForCantExtend.RequestedExpansionSize = 1i64;
  Partition->Segments.AttemptForCantExtend.Segment = 0i64;
  Partition->Segments.AttemptForCantExtend.ActualExpansion = 0i64;
  Partition->Segments.AttemptForCantExtend.InProgress = 0;
  v3 = Partition->Segments.AttemptForCantExtend.u1.Flags._bf_3 & 0xFD;
  Partition->Segments.AttemptForCantExtend.Partition = Partition;
  Partition->Segments.AttemptForCantExtend.u1.Flags.PageFileNumber = -1;
  Partition->Segments.AttemptForCantExtend.u1.Flags._bf_3 = v3 | 4;
  KeInitializeEvent((INT64)Partition->Segments.AttemptForCantExtend.gap30, 0, 0);
}

Referenced by:

MiInitNucleus
MiInitializePartition