MiAllocateDriverPage

NTSTATUS __stdcall MiAllocateDriverPage(){
  int v0; 
  __int64 v1; 
  char v2; 
  char v3; 
  ULONG_PTR *v4; 
  UINT64 v5; 
  INT64 v6; 
  __int64 v7; 
  __int16 v8; 
  unsigned int NextPageColor; 
  UINT64 i; 
  UINT64 v11; 
  UINT64 SizeInPages; 
  UINT64 PreferredNode; 
  UINT64 Flags; 
  UINT64 *StartingPfn; 
  __int64 v17; 
  _MI_COLOR_BASE ColorBase[4]; 
  UINT64 v19; 

  LODWORD(v19) = 0;
  v3 = v2;
  v4 = (ULONG_PTR *)v1;
  *(_OWORD *)ColorBase = 0i64;
  v17 = -1i64;
  if( !(unsigned int)MiUseSlabAllocatorForDriverPage(v1, v0, &v19)
    || (LODWORD(SizeInPages) = 0,
        LODWORD(v7) = MiGetSlabPage(v6, v5, (unsigned int)v19, (INT64 *)0xFFFFFFFFFFFFFFFFi64, SizeInPages),
        v17 = v7,
        v7 == -1) )
  {
    if( (v3 & 1) != 0 )
    {
LABEL_4:
      LODWORD(v7) = -1;
    }
    else
    {
      LODWORD(StartingPfn) = 0x20000000;
      LODWORD(Flags) = 0x80000000;
      LODWORD(PreferredNode) = 0x80000000;
      if( MiFindContiguousPages(
             (_MI_PARTITION *)v4,
             0i64,
             HighestPfn,
             0i64,
             1ui64,
             MiCached,
             PreferredNode,
             Flags,
             StartingPfn) < 0 )
      {
        HighestPfn = -1i64;
        MiInitializePageColorBase(0i64, 0i64, ColorBase);
        NextPageColor = MiGetNextPageColor((INT64)ColorBase);
        for( i = NextPageColor; ; i = NextPageColor )
        {
          LODWORD(v7) = MiGetPage(v4, i, 0i64);
          if( v7 != -1 )
            break;
          if( KeGetCurrentIrql() == 2 )
            goto LABEL_4;
          MiWaitForFreePage((_MI_PARTITION *)v4, v11);
        }
      }
      else
      {
        v8 = ++qword_140C4CA80;
        if( v4 == (ULONG_PTR *)&Irp )
        {
          if( (v8 & 0x1FF) != 0 )
            HighestPfn = v17 - 1;
          else
            HighestPfn = -1i64;
        }
        MiPreInitializeSystemImagePage(&MmGetPfnDb()[v17]);
        LODWORD(v7) = v17;
      }
    }
  }
  return v7;
}

Referenced by:

MiFillPerSessionProtos
MiHandleBootImage
MiLockCode
MiMakeDriverPagesPrivate
MiPrivateFixup