MiLimitLoaderBlockHighMemory
VOID __stdcall MiLimitLoaderBlockHighMemory(_LOADER_PARAMETER_BLOCK *LoaderBlock, UINT64 HighestPhysicalPage){
_LIST_ENTRY *p_MemoryDescriptorListHead;
_LIST_ENTRY *Flink;
unsigned __int64 v4;
__int64 v6;
_LIST_ENTRY *Blink;
unsigned __int64 Flink_low;
__int64 v9;
_LIST_ENTRY *v10;
_LIST_ENTRY *v11;
p_MemoryDescriptorListHead = &LoaderBlock->MemoryDescriptorListHead;
Flink = LoaderBlock->MemoryDescriptorListHead.Flink;
v4 = (unsigned __int64)KeFeatureBits & 0x2000000000i64;
while( Flink != p_MemoryDescriptorListHead )
{
Flink_low = LODWORD(Flink[1].Flink);
if( v4 )
goto LABEL_7;
if( (_DWORD)Flink_low != 38 )
{
if( (_DWORD)Flink_low == 39 )
{
Flink_low = 2i64;
LODWORD(Flink[1].Flink) = 2;
}
LABEL_7:
if( (unsigned int)(Flink_low - 30) <= 2 || (_DWORD)Flink_low == 6 )
goto LABEL_4;
goto LABEL_9;
}
Flink_low = 24i64;
LODWORD(Flink[1].Flink) = 24;
LABEL_9:
if( (unsigned int)Flink_low > 0x28 || (v6 = 0x1C400C00008i64, !_bittest64(&v6, Flink_low)) )
{
Blink = Flink[1].Blink;
if( (unsigned __int64)Blink + (unsigned __int64)Flink[2].Flink > HighestPhysicalPage )
{
if( (unsigned int)Flink_low > 0x23 || (v9 = 0xA01000134i64, !_bittest64(&v9, Flink_low)) )
KeBugCheckEx(0x1Au, (PVOID)0x3030308, (PVOID)HighestPhysicalPage, Blink, Flink[2].Flink);
if( (unsigned __int64)Blink < HighestPhysicalPage )
{
Flink[2].Flink = (_LIST_ENTRY *)(HighestPhysicalPage - (_QWORD)Blink);
}
else
{
v10 = Flink->Flink;
if( Flink->Flink->Blink != Flink || (v11 = Flink->Blink, v11->Flink != Flink) )
__fastfail(3u);
v11->Flink = v10;
v10->Blink = v11;
}
}
}
LABEL_4:
Flink = Flink->Flink;
}
}Referenced by:
MiMemoryLicense