ImpersonateLoggedOnUser (void * handle)
{
  long int handle.0;
  unsigned int D.9764;
  int D.9765;
  gboolean D.9768;
  unsigned int D.9769;
  _Bool D.9770;
  uid_t token;

  handle.0 = (long int) handle;
  token = (uid_t) handle.0;
  D.9764 = getuid ();
  D.9765 = setresuid (4294967295, token, D.9764);
  if (D.9765 < 0) goto <D.9766>; else goto <D.9767>;
  <D.9766>:
  D.9768 = 0;
  return D.9768;
  <D.9767>:
  D.9769 = geteuid ();
  D.9770 = D.9769 == token;
  D.9768 = (gboolean) D.9770;
  return D.9768;
}


RevertToSelf ()
{
  int D.9772;
  gboolean D.9775;
  unsigned int suid.1;
  int D.9777;
  unsigned int D.9780;
  _Bool D.9781;
  uid_t ruid;
  uid_t euid;
  uid_t suid;

  try
    {
      suid = 4294967295;
      D.9772 = getresuid (&ruid, &euid, &suid);
      if (D.9772 < 0) goto <D.9773>; else goto <D.9774>;
      <D.9773>:
      D.9775 = 0;
      return D.9775;
      <D.9774>:
      suid.1 = suid;
      D.9777 = setresuid (4294967295, suid.1, 4294967295);
      if (D.9777 < 0) goto <D.9778>; else goto <D.9779>;
      <D.9778>:
      D.9775 = 0;
      return D.9775;
      <D.9779>:
      D.9780 = geteuid ();
      suid.1 = suid;
      D.9781 = D.9780 == suid.1;
      D.9775 = (gboolean) D.9781;
      return D.9775;
    }
  finally
    {
      ruid = {CLOBBER};
      euid = {CLOBBER};
      suid = {CLOBBER};
    }
}


