MiInitializeImageHeaderPage

VOID __stdcall MiInitializeImageHeaderPage(UINT64 PageFrameNumber, UINT64 SizeOfHeaders){
  char *v4; 
  _MMPFN *v5; 
  UINT8 v6; 
  UINT64 SpinCount; 

  v6 = 0;
  v4 = (char *)MiMapPageInHyperSpaceWorker(PageFrameNumber, &v6, 0x80000000ui64);
  memset(&v4[SizeOfHeaders], 0i64, 4096 - SizeOfHeaders);
  MiUnmapPageInHyperSpaceWorker(v4, 2u, 0x80000000ui64);
  if( (SizeOfHeaders & 0x1FF) != 0 )
  {
    v5 = &MmGetPfnDb()[PageFrameNumber];
    LODWORD(SpinCount) = 0;
    while( _interlockedbittestandset64((volatile signed __int32 *)&v5->u2, 0x3Fui64) )
    {
      do
        KeYieldProcessorEx(&SpinCount);
      while( v5->u2._bf_0 < 0 );
    }
    *((_BYTE *)&v5->u3 + 2) |= 0x10u;
    _InterlockedAnd64(&v5->u2.Lock, 0x7FFFFFFFFFFFFFFFui64);
  }
  __writecr8(v6);
}

Referenced by:

MiCreateImageFileMap