IopCombineCmResourceList

_CM_RESOURCE_LIST *__stdcall IopCombineCmResourceList(VOID *ResourceListA, _CM_RESOURCE_LIST *ResourceListB){
  _CM_RESOURCE_LIST *v5; 
  __int64 v6; 
  int v7; 
  size_t v8; 
  VOID **PoolWithTag; 

  if( !ResourceListA )
    return ResourceListB;
  if( !ResourceListB )
    return(_CM_RESOURCE_LIST *)ResourceListA;
  v5 = 0i64;
  v6 = (unsigned int)PnpDetermineResourceListSize(ResourceListA);
  v7 = PnpDetermineResourceListSize(ResourceListB);
  if( (_DWORD)v6 && v7 )
  {
    v8 = v7 - 4;
    PoolWithTag = ExAllocatePoolWithTag(1ui64, (unsigned int)(v7 - 4 + v6), 538996816i64);
    v5 = (_CM_RESOURCE_LIST *)PoolWithTag;
    if( PoolWithTag )
    {
      memmove(PoolWithTag, ResourceListA, v6);
      memmove((char *)v5 + v6, ResourceListB->List, v8);
      v5->Count += ResourceListB->Count;
    }
  }
  return v5;
}

Referenced by:

IopAllocateLegacyBootResources