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.