PnprMmConstruct
INT64 __stdcall PnprMmConstruct(PNP_REPLACE_MEMORY_LIST *MemoryList, LIST_ENTRY *MemoryMapList){
int v2;
int v3;
_LIST_ENTRY *Flink;
_LIST_ENTRY *v7;
UINT64 v8;
int v9;
int v10;
_LIST_ENTRY *Blink;
_LIST_ENTRY *v12;
int v13;
v2 = 0;
v3 = 0;
if( MemoryList->Count )
{
while( 1 )
{
v2 = PnprMmAddRange(MemoryMapList, MemoryList->Ranges[v3].Address, (LARGE_INTEGER)MemoryList->Ranges[v3].Length);
if( v2 < 0 )
break;
if( ++v3 >= MemoryList->Count )
goto LABEL_4;
}
v8 = PnprContext;
v9 = *(_DWORD *)(PnprContext + 20984);
if( !v9 )
v9 = 4496;
*(_DWORD *)(PnprContext + 20984) = v9;
v10 = *(_DWORD *)(v8 + 20988);
if( !v10 )
v10 = 1;
LABEL_19:
*(_DWORD *)(v8 + 20988) = v10;
}
else
{
LABEL_4:
Flink = MemoryMapList->Flink;
v7 = 0i64;
while( Flink != MemoryMapList )
{
Blink = Flink[1].Blink;
if( !Blink || (v12 = Flink[1].Flink, v12 < v7) )
{
v8 = PnprContext;
v2 = -1073741811;
v13 = *(_DWORD *)(PnprContext + 20984);
if( !v13 )
v13 = 4517;
*(_DWORD *)(PnprContext + 20984) = v13;
v10 = *(_DWORD *)(v8 + 20988);
if( !v10 )
v10 = 6;
goto LABEL_19;
}
Flink = Flink->Flink;
v7 = (_LIST_ENTRY *)((char *)Blink + (_QWORD)v12);
}
}
if( v2 < 0 )
PnprMmFree(MemoryMapList);
return(unsigned int)v2;
}Referenced by:
No references.