ImpersonateLoggedOnUser (void * handle)
{
  long int handle.0;
  unsigned int D.9588;
  int D.9589;
  gboolean D.9592;
  unsigned int D.9593;
  _Bool D.9594;
  uid_t token;

  handle.0 = (long int) handle;
  token = (uid_t) handle.0;
  D.9588 = getuid ();
  D.9589 = setresuid (4294967295, token, D.9588);
  if (D.9589 < 0) goto <D.9590>; else goto <D.9591>;
  <D.9590>:
  D.9592 = 0;
  return D.9592;
  <D.9591>:
  D.9593 = geteuid ();
  D.9594 = D.9593 == token;
  D.9592 = (gboolean) D.9594;
  return D.9592;
}


RevertToSelf ()
{
  int D.9596;
  gboolean D.9599;
  unsigned int suid.1;
  int D.9601;
  unsigned int D.9604;
  _Bool D.9605;
  uid_t ruid;
  uid_t euid;
  uid_t suid;

  try
    {
      suid = 4294967295;
      D.9596 = getresuid (&ruid, &euid, &suid);
      if (D.9596 < 0) goto <D.9597>; else goto <D.9598>;
      <D.9597>:
      D.9599 = 0;
      return D.9599;
      <D.9598>:
      suid.1 = suid;
      D.9601 = setresuid (4294967295, suid.1, 4294967295);
      if (D.9601 < 0) goto <D.9602>; else goto <D.9603>;
      <D.9602>:
      D.9599 = 0;
      return D.9599;
      <D.9603>:
      D.9604 = geteuid ();
      suid.1 = suid;
      D.9605 = D.9604 == suid.1;
      D.9599 = (gboolean) D.9605;
      return D.9599;
    }
  finally
    {
      ruid = {CLOBBER};
      euid = {CLOBBER};
      suid = {CLOBBER};
    }
}


