IopCombineCmResourceList

CM_RESOURCE_LIST *__stdcall IopCombineCmResourceList(CM_RESOURCE_LIST *ResourceListA, CM_RESOURCE_LIST *ResourceListB){
  CM_RESOURCE_LIST *v5; 
  __int64 v6; 
  int v7; 
  unsigned int v8; 
  UINT8 *PoolWithTag; 
  if( !ResourceListA )
    return ResourceListB;
  if( !ResourceListB )
    return ResourceListA;
  v5 = 0i64;
  v6 = (unsigned int)PnpDetermineResourceListSize(ResourceListA);
  v7 = PnpDetermineResourceListSize(ResourceListB);
  if( (_DWORD)v6 && v7 )
  {
    v8 = v7 - 4;
    PoolWithTag = (UINT8 *)ExAllocatePoolWithTag(PagedPool, (unsigned int)(v7 - 4 + v6), 0x20207050ui64);
    v5 = (CM_RESOURCE_LIST *)PoolWithTag;
    if( PoolWithTag )
    {
      memmove(PoolWithTag, (UINT8 *)ResourceListA, (unsigned int)v6);
      memmove((UINT8 *)v5 + v6, (UINT8 *)ResourceListB + 4, v8);
      *(_DWORD *)v5 += *(_DWORD *)ResourceListB;
    }
  }
  return v5;
}

Referenced by:

IopAllocateLegacyBootResources