MiInitializeNonPagedPool

NTSTATUS __stdcall MiInitializeNonPagedPool(){
  VOID *v0; 
  _MMSUPPORT_INSTANCE *AnyMultiplexedVm; 
  struct _KPRCB *CurrentPrcb; 
  unsigned __int64 v3; 
  unsigned __int64 v4; 
  unsigned int v5; 
  __int64 v6; 
  unsigned __int64 v7; 
  unsigned int v8; 
  __int64 v9; 
  unsigned __int64 v10; 
  unsigned __int64 v11; 
  unsigned __int64 v12; 
  UINT64 v13; 
  __int64 v14; 
  __int64 v15; 
  char *v16; 
  _RTL_BITMAP *v17; 
  VOID *v18; 
  UINT8 v19; 
  INT64 v20; 
  unsigned __int64 v21; 
  __int64 v22; 
  _MMPFN *v23; 
  INT64 v25; 

  AnyMultiplexedVm = MiGetAnyMultiplexedVm(MiWorkingSetTypeNonPagedPool, v0);
  if( !MiInitializeSystemWorkingSetList(
          (ULONG_PTR *)&Irp.Core.PartitionId,
          AnyMultiplexedVm,
          WorkingSetTypeNonPagedPool,
          0i64) )
    return 0;
  CurrentPrcb = KeGetCurrentPrcb();
  v3 = CurrentPrcb->KeSystemCalls ^ CurrentPrcb->InterruptTime ^ KUSER_SHARED_DATA.SystemTime.High1Time ^ __rdtsc() ^ ((unsigned __int64)KUSER_SHARED_DATA.SystemTime.LowPart << 32);
  v4 = (unsigned __int64)(unsigned int)ExGenRandom(ExGenRandomDomainKernel) << 32;
  v5 = ExGenRandom(ExGenRandomDomainKernel);
  v6 = *(&stru_140C4DB30 + 923);
  v7 = v4 | v5;
  v8 = 0;
  v9 = v7 ^ v3;
  if( !v9 )
    v9 = 1i64;
  *(&stru_140C4DB30 + 539) = v9;
  v10 = (unsigned __int64)MmPfnDatabase + 4096 * MxPfnAllocation;
  v11 = ((_DWORD)MmPfnDatabase + ((_DWORD)MxPfnAllocation << 12)) & 0x1FFFFF;
  *(&stru_140C4DB30 + 552) = 0x100000000i64;
  v12 = (0x200000 - v11) & -(__int64)(v11 != 0);
  v13 = (0x800000ui64 / (unsigned __int16)KeNumberNodes) << 21;
  if( KeNumberNodes )
  {
    do
    {
      v14 = *(&stru_140C4DB30 + 22);
      v15 = 176i64 * v8;
      v16 = (char *)(v13 * v8 + v6);
      *(_QWORD *)(v15 + *(&stru_140C4DB30 + 22) + 160) = v16;
      *(_QWORD *)(v15 + v14 + 168) = &v16[v13];
      if( !MiBuildDynamicRegion((_RTL_BITMAP *)(v15 + *(&stru_140C4DB30 + 22) + 64i64), v16, v13) )
        return 0;
    }
    while( ++v8 < (unsigned __int16)KeNumberNodes );
  }
  v17 = (_RTL_BITMAP *)MiSystemVaToDynamicBitmap(15i64);
  if( !MiBuildDynamicRegion(v17, v18, 0x8000000000ui64) )
    return 0;
  if( v12 )
  {
    LODWORD(v20) = MI_READ_PTE_LOCK_FREE((INT64)MmGetPdeBase() + ((v10 >> 18) & 0x3FFFFFF8));
    v25 = v20;
    if( (v20 & 0x80u) != 0i64 )
    {
      LODWORD(v21) = MI_READ_PTE_LOCK_FREE((INT64)&v25);
      v22 = (v21 >> 12) & 0xFFFFFFFFFi64;
      v23 = &MmGetPfnDb()[v22];
      if( (v23->u4._bf_0 & 0x1000000000i64) != 0 )
        MiConvertEntireLargePageToSmall((_KQUEUE *)v23, 1, 0, (_LARGE_INTEGER *)6, 0i64, 0i64);
      MiAddExpansionNonPagedPool(v22 + (v11 >> 12), v12 >> 12);
    }
  }
  MiInitializeNonPagedPoolThresholds(v19);
  return 1;
}

Referenced by:

MiInitNucleus