CmpReserveRollbackPacketSpace

INT64 __fastcall CmpReserveRollbackPacketSpace(UINT64 *a1, UINT64 a2){
  _CHILD_LIST *v2; 
  int v4; 
  unsigned int v5; 
  int v6; 
  UINT8 *v7; 
  UINT64 v8; 
  struct _PRIVILEGE_SET *v9; 
  v4 = *(_DWORD *)a1;
  v5 = 0;
  if( *((_DWORD *)a1 + 1) - v4 < (unsigned int)a2 )
  {
    v6 = v4 + a2;
    CmpAllocateTransientPoolWithTag((_HHIVE *)1, 8i64 * (unsigned int)(v4 + a2), 0x36344D43ui64, v2);
    v8 = (UINT64)v7;
    if( v7 )
    {
      memmove(v7, (UINT8 *)a1[1], 8i64 * *(unsigned int *)a1);
      memset(v8 + 8i64 * *(unsigned int *)a1, 0i64);
      v9 = (struct _PRIVILEGE_SET *)a1[1];
      if( v9 )
        CmSiFreeMemory(v9);
      a1[1] = v8;
      *((_DWORD *)a1 + 1) = v6;
    }
    else
    {
      return(unsigned int)-1073741670;
    }
  }
  return v5;
}

Referenced by:

CmSnapshotRMTxArray
CmpSnapshotTxOwnerArrayToRollbackPacket