MiCheckLargePageOk

UINT64 __stdcall MiCheckLargePageOk(_LOADER_PARAMETER_BLOCK *LoaderBlock){
  INT64 v1; 
  ULONG_PTR v2; 
  unsigned int i; 
  void *v5; 
  int v6; 
  unsigned int v7; 
  __int64 v8; 
  void *v9; 
  ULONG_PTR SectionAlignment; 
  _QWORD *v11; 
  int v12; 
  void *v13; 
  int v15; 
  v1 = *((_QWORD *)LoaderBlock + 2);
  LODWORD(v2) = 0;
  for( i = 0; i < 2; ++i )
  {
    v5 = *(void **)(v1 + 48);
    v6 = MI_IS_PHYSICAL_ADDRESS(v5);
    v7 = v2 + 1;
    if( !v6 )
      v7 = v2;
    v8 = (__int64)v5 + *(unsigned int *)(v1 + 64);
    v2 = v7;
    if( i )
    {
      MxHalDataTableEntry = v1;
      PsHalImageBase = v5;
      PsHalImageEnd = v8;
    }
    else
    {
      qword_140D57720 = v1;
      PsNtosImageBase = (ULONG_PTR)v5;
      PsNtosImageEnd = v8;
    }
    v1 = *(_QWORD *)v1;
  }
  v9 = *(void **)(*((_QWORD *)LoaderBlock + 2) + 48i64);
  qword_140C4CA58 = *((_QWORD *)LoaderBlock + 2);
  SectionAlignment = RtlImageNtHeader(v9)->OptionalHeader.SectionAlignment;
  if( (_DWORD)SectionAlignment != 4096 )
    KeBugCheckEx(0x1Au, 0x3030207ui64, (ULONG_PTR)LoaderBlock, SectionAlignment, 0i64);
  MiVerifyLargeSectionLayout(v9);
  if( !(_DWORD)v2 )
    return 0i64;
  if( (_DWORD)v2 != 1 )
    KeBugCheckEx(0x1Au, 0x3030203ui64, (ULONG_PTR)LoaderBlock, v2, 0i64);
  v11 = (_QWORD *)*((_QWORD *)LoaderBlock + 2);
  v12 = 0;
  do
  {
    v13 = (void *)v11[6];
    if( (unsigned int)MI_IS_PHYSICAL_ADDRESS(v13) != 1 )
    {
      v15 = MI_IS_PHYSICAL_ADDRESS(v13);
      KeBugCheckEx(0x1Au, 0x3030204ui64, (ULONG_PTR)LoaderBlock, (ULONG_PTR)v13, v15);
    }
    if( (void *)(((unsigned __int64)v13 + 0x1FFFFF) & 0xFFFFFFFFFFE00000ui64) != v13 )
      KeBugCheckEx(0x1Au, 0x3030206ui64, (ULONG_PTR)LoaderBlock, (ULONG_PTR)v13, 0i64);
    MiCheckLargePageSystemImage(LoaderBlock);
    v11 = (_QWORD *)*v11;
    ++v12;
  }
  while( !v12 );
  MiFlags |= 4u;
  return 1i64;
}

Referenced by:

MiInitNucleus