MiInitializeNonPagedPool

UINT64 __fastcall MiInitializeNonPagedPool(){
  CHAR *AnyMultiplexedVm; 
  struct _KPRCB *CurrentPrcb; 
  unsigned __int64 v2; 
  unsigned __int64 v3; 
  unsigned int v4; 
  __int64 v5; 
  unsigned __int64 v6; 
  unsigned int v7; 
  __int64 v8; 
  unsigned __int64 v9; 
  unsigned __int64 v10; 
  unsigned __int64 v11; 
  UINT64 v12; 
  PSLIST_HEADER v13; 
  __int64 v14; 
  char *v15; 
  INT64 *v16; 
  PVOID v17; 
  UINT8 v18; 
  unsigned __int64 v19; 
  KQUEUE *v20; 
  INT64 v22; 
  AnyMultiplexedVm = MiGetAnyMultiplexedVm(5i64);
  if( !(unsigned int)MiInitializeSystemWorkingSetList(&MiSystemPartition, (INT64)AnyMultiplexedVm, 7i64, 0i64) )
    return 0i64;
  CurrentPrcb = KeGetCurrentPrcb();
  v2 = *((unsigned int *)CurrentPrcb + 2894) ^ *((unsigned int *)CurrentPrcb + 8100) ^ KUSER_SHARED_DATA.SystemTime.High1Time ^ __rdtsc() ^ ((unsigned __int64)KUSER_SHARED_DATA.SystemTime.LowPart << 32);
  v3 = (unsigned __int64)(unsigned int)ExGenRandom(0i64) << 32;
  v4 = ExGenRandom(0i64);
  v5 = qword_140C4F808[0];
  v6 = v3 | v4;
  v7 = 0;
  v8 = v6 ^ v2;
  if( !v8 )
    v8 = 1i64;
  qword_140C4EC08 = v8;
  v9 = MmPfnDatabase + (MxPfnAllocation << 12);
  v10 = ((_DWORD)MmPfnDatabase + ((_DWORD)MxPfnAllocation << 12)) & 0x1FFFFF;
  qword_140C4EC70 = 0x100000000i64;
  v11 = (0x200000 - v10) & -(__int64)(v10 != 0);
  v12 = (0x800000ui64 / (unsigned __int16)KeNumberNodes) << 21;
  if( KeNumberNodes )
  {
    do
    {
      v13 = SListHead;
      v14 = 176i64 * v7;
      v15 = (char *)(v12 * v7 + v5);
      *(_QWORD *)((char *)SListHead + v14 + 160) = v15;
      *(_QWORD *)((char *)v13 + v14 + 168) = &v15[v12];
      if( !MiBuildDynamicRegion((RTL_BITMAP *)((char *)SListHead + v14 + 64), v15, v12) )
        return 0i64;
    }
    while( ++v7 < (unsigned __int16)KeNumberNodes );
  }
  v16 = MiSystemVaToDynamicBitmap(15i64);
  if( !MiBuildDynamicRegion((RTL_BITMAP *)v16, v17, 0x8000000000ui64) )
    return 0i64;
  if( v11 )
  {
    v22 = MI_READ_PTE_LOCK_FREE((INT64)MmGetPdeBase() + ((v9 >> 18) & 0x3FFFFFF8));
    if( (v22 & 0x80u) != 0i64 )
    {
      v19 = ((unsigned __int64)MI_READ_PTE_LOCK_FREE((INT64)&v22) >> 12) & 0xFFFFFFFFFi64;
      v20 = (KQUEUE *)((char *)MmGetPfnDb() + 48 * v19);
      if( (*(_QWORD *)&v20->CurrentCount & 0x1000000000i64) != 0 )
        MiConvertEntireLargePageToSmall(v20, 1, 0, (LARGE_INTEGER *)6, 0i64, 0i64);
      MiAddExpansionNonPagedPool(v19 + (v10 >> 12), v11 >> 12);
    }
  }
  MiInitializeNonPagedPoolThresholds(v18);
  return 1i64;
}

Referenced by:

MiInitNucleus