ImpersonateLoggedOnUser (void * handle)
{
  unsigned int D.9239;
  int D.9240;
  gboolean D.9243;
  unsigned int D.9244;
  _Bool D.9245;
  uid_t token;

  token = (uid_t) handle;
  D.9239 = getuid ();
  D.9240 = setresuid (4294967295, token, D.9239);
  if (D.9240 < 0) goto <D.9241>; else goto <D.9242>;
  <D.9241>:
  D.9243 = 0;
  return D.9243;
  <D.9242>:
  D.9244 = geteuid ();
  D.9245 = D.9244 == token;
  D.9243 = (gboolean) D.9245;
  return D.9243;
}


RevertToSelf ()
{
  int D.9247;
  gboolean D.9250;
  unsigned int suid.0;
  int D.9252;
  unsigned int D.9255;
  _Bool D.9256;
  uid_t ruid;
  uid_t euid;
  uid_t suid;

  try
    {
      suid = 4294967295;
      D.9247 = getresuid (&ruid, &euid, &suid);
      if (D.9247 < 0) goto <D.9248>; else goto <D.9249>;
      <D.9248>:
      D.9250 = 0;
      return D.9250;
      <D.9249>:
      suid.0 = suid;
      D.9252 = setresuid (4294967295, suid.0, 4294967295);
      if (D.9252 < 0) goto <D.9253>; else goto <D.9254>;
      <D.9253>:
      D.9250 = 0;
      return D.9250;
      <D.9254>:
      D.9255 = geteuid ();
      suid.0 = suid;
      D.9256 = D.9255 == suid.0;
      D.9250 = (gboolean) D.9256;
      return D.9250;
    }
  finally
    {
      ruid = {CLOBBER};
      euid = {CLOBBER};
      suid = {CLOBBER};
    }
}


