HeadlessTerminalAddResources

INT64 __fastcall HeadlessTerminalAddResources(
        _CM_RESOURCE_LIST *Resources,
        UINT64 ResourceListSize,
        UINT8 TranslatedList,
        _CM_RESOURCE_LIST **NewList,
        UINT64 *NewListSize){
  UINT64 v8; 
  INT64 result; 
  _CM_RESOURCE_LIST *PoolWithTag; 
  _CM_RESOURCE_LIST *v11; 
  LARGE_INTEGER v12; 
  v12.QuadPart = 0i64;
  v8 = (unsigned int)ResourceListSize;
  if( !HeadlessGlobals || (HeadlessGlobals[6] & 0x1000) != 0 )
  {
    *NewList = 0i64;
    result = 0i64;
LABEL_3:
    *(_DWORD *)NewListSize = 0;
    return result;
  }
  *(_DWORD *)NewListSize = ResourceListSize + 36;
  if( (int)ResourceListSize + 36 < (unsigned int)ResourceListSize
    || (PoolWithTag = (_CM_RESOURCE_LIST *)ExAllocatePoolWithTag(
                                             PagedPool,
                                             (unsigned int)(ResourceListSize + 36),
                                             0x736C6448ui64),
        *NewList = PoolWithTag,
        (v11 = PoolWithTag) == 0i64) )
  {
    result = 3221225626i64;
    goto LABEL_3;
  }
  memmove((UINT8 *)PoolWithTag, (UINT8 *)Resources, v8);
  if( TranslatedList )
  {
    HalTranslateBusAddress(0i64, 0i64, (MEMORY_CACHING_TYPE *)HeadlessGlobals[8]);
    v11 = *NewList;
  }
  else
  {
    v12.QuadPart = HeadlessGlobals[8];
  }
  ++*(_DWORD *)v11;
  *(_QWORD *)((char *)v11 + v8) = 1i64;
  *(_DWORD *)((char *)v11 + v8 + 12) = 1;
  *(_DWORD *)((char *)v11 + v8 + 8) = 0;
  *(_DWORD *)((char *)v11 + v8 + 16) = 66049;
  *(LARGE_INTEGER *)((char *)v11 + v8 + 20) = v12;
  result = 0i64;
  *(_DWORD *)((char *)v11 + v8 + 28) = 8;
  return result;
}

Referenced by:

IoReportHalResourceUsage