ImpersonateLoggedOnUser (void * handle)
{
  long int handle.0;
  unsigned int D.10106;
  int D.10107;
  gboolean D.10110;
  unsigned int D.10111;
  _Bool D.10112;
  uid_t token;

  handle.0 = (long int) handle;
  token = (uid_t) handle.0;
  D.10106 = getuid ();
  D.10107 = setresuid (4294967295, token, D.10106);
  if (D.10107 < 0) goto <D.10108>; else goto <D.10109>;
  <D.10108>:
  D.10110 = 0;
  return D.10110;
  <D.10109>:
  D.10111 = geteuid ();
  D.10112 = D.10111 == token;
  D.10110 = (gboolean) D.10112;
  return D.10110;
}


RevertToSelf ()
{
  int D.10114;
  gboolean D.10117;
  unsigned int suid.1;
  int D.10119;
  unsigned int D.10122;
  _Bool D.10123;
  uid_t ruid;
  uid_t euid;
  uid_t suid;

  try
    {
      suid = 4294967295;
      D.10114 = getresuid (&ruid, &euid, &suid);
      if (D.10114 < 0) goto <D.10115>; else goto <D.10116>;
      <D.10115>:
      D.10117 = 0;
      return D.10117;
      <D.10116>:
      suid.1 = suid;
      D.10119 = setresuid (4294967295, suid.1, 4294967295);
      if (D.10119 < 0) goto <D.10120>; else goto <D.10121>;
      <D.10120>:
      D.10117 = 0;
      return D.10117;
      <D.10121>:
      D.10122 = geteuid ();
      suid.1 = suid;
      D.10123 = D.10122 == suid.1;
      D.10117 = (gboolean) D.10123;
      return D.10117;
    }
  finally
    {
      ruid = {CLOBBER};
      euid = {CLOBBER};
      suid = {CLOBBER};
    }
}


