CmpAddPointerToRollbackPacket

INT64 __fastcall CmpAddPointerToRollbackPacket(UINT64 *a1, INT64 a2){
  __int64 v4; 
  unsigned int v5; 
  unsigned int v6; 

  v4 = *(unsigned int *)a1;
  if( *((_DWORD *)a1 + 1) == (_DWORD)v4 )
  {
    return(unsigned int)-1073741670;
  }
  else
  {
    v5 = 0;
    v6 = 0;
    if( (_DWORD)v4 )
    {
      while( *(_QWORD *)(a1[1] + 8i64 * v6) != a2 )
      {
        if( ++v6 >= (unsigned int)v4 )
          goto LABEL_6;
      }
      return(unsigned int)-1073740008;
    }
    else
    {
LABEL_6:
      *(_QWORD *)(a1[1] + 8 * v4) = a2;
      ++*(_DWORD *)a1;
    }
  }
  return v5;
}

Referenced by:

CmpAddEnlistmentToRollbackPacket
CmpAddUoWToRollbackPacket