ImpersonateLoggedOnUser (void * handle)
{
  unsigned int D.9269;
  int D.9270;
  gboolean D.9273;
  unsigned int D.9274;
  _Bool D.9275;
  uid_t token;

  token = (uid_t) handle;
  D.9269 = getuid ();
  D.9270 = setresuid (4294967295, token, D.9269);
  if (D.9270 < 0) goto <D.9271>; else goto <D.9272>;
  <D.9271>:
  D.9273 = 0;
  return D.9273;
  <D.9272>:
  D.9274 = geteuid ();
  D.9275 = D.9274 == token;
  D.9273 = (gboolean) D.9275;
  return D.9273;
}


RevertToSelf ()
{
  int D.9277;
  gboolean D.9280;
  unsigned int suid.0;
  int D.9282;
  unsigned int D.9285;
  _Bool D.9286;
  uid_t ruid;
  uid_t euid;
  uid_t suid;

  try
    {
      suid = 4294967295;
      D.9277 = getresuid (&ruid, &euid, &suid);
      if (D.9277 < 0) goto <D.9278>; else goto <D.9279>;
      <D.9278>:
      D.9280 = 0;
      return D.9280;
      <D.9279>:
      suid.0 = suid;
      D.9282 = setresuid (4294967295, suid.0, 4294967295);
      if (D.9282 < 0) goto <D.9283>; else goto <D.9284>;
      <D.9283>:
      D.9280 = 0;
      return D.9280;
      <D.9284>:
      D.9285 = geteuid ();
      suid.0 = suid;
      D.9286 = D.9285 == suid.0;
      D.9280 = (gboolean) D.9286;
      return D.9280;
    }
  finally
    {
      ruid = {CLOBBER};
      euid = {CLOBBER};
      suid = {CLOBBER};
    }
}


