PipGrowDeviceObjectList

VOID __stdcall PipGrowDeviceObjectList(_DEVICE_OBJECT_LIST **List){
  unsigned int *v1; 
  _DEVICE_OBJECT_LIST *DeviceObjectList; 
  unsigned int i; 
  UINT64 MatchAllKeyword; 
  EVENT_FILTER_DESCRIPTOR *v6; 
  void *savedregs; 
  UINT64 MatchAnyKeyword; 
  int Level; 
  UINT64 ControlCode; 
  _DEVICE_OBJECT_LIST *v11; 
  v1 = (unsigned int *)*List;
  ControlCode = 0i64;
  Level = 0;
  LODWORD(MatchAnyKeyword) = 0;
  DeviceObjectList = PiAllocateDeviceObjectList((_PNP_DEVICE_DELETE_TYPE)v1[3], 2 * v1[1]);
  v11 = DeviceObjectList;
  if( DeviceObjectList )
  {
    for( i = 0; i < *v1; ++i )
    {
      PipDeviceObjectListElementAt(v1, i, &ControlCode, &Level, (int *)&MatchAnyKeyword);
      PipDeviceObjectListAdd(
        (GUID *)&v11,
        ControlCode,
        Level,
        (unsigned int)MatchAnyKeyword,
        MatchAllKeyword,
        v6,
        savedregs);
    }
    PiClearDeviceObjectList(v1);
    ExFreePoolWithTag(v1, 0);
    DeviceObjectList = v11;
  }
  *List = DeviceObjectList;
}

Referenced by:

PipDeviceObjectListAdd