对以下代码片段进行逆向工程以编写其功能的描述。
这个函数接受两个整数作为参数，x 和 y。如果 x 和 y 都等于 0，则返回 0；如果 x 或 y 等于 0，它将返回 1；否则，如果 x 和 y 都不等于 0，它将返回 x 和 y 的和。
int mystery_function(int x, int y)
{
  if (x == 0 && y == 0)
    return 0;
  else if (x == 0 || y == 0)
    return 1;
  else 
    return x + y;
}