ImpersonateLoggedOnUser (void * handle)
{
  unsigned int D.11851;
  int D.11852;
  gboolean D.11855;
  unsigned int D.11856;
  _Bool D.11857;
  uid_t token;

  token = (uid_t) handle;
  D.11851 = getuid ();
  D.11852 = setresuid (4294967295, token, D.11851);
  if (D.11852 < 0) goto <D.11853>; else goto <D.11854>;
  <D.11853>:
  D.11855 = 0;
  return D.11855;
  <D.11854>:
  D.11856 = geteuid ();
  D.11857 = D.11856 == token;
  D.11855 = (gboolean) D.11857;
  return D.11855;
}


RevertToSelf ()
{
  int D.11859;
  gboolean D.11862;
  unsigned int suid.0;
  int D.11864;
  unsigned int D.11867;
  _Bool D.11868;
  uid_t ruid;
  uid_t euid;
  uid_t suid;

  try
    {
      suid = 4294967295;
      D.11859 = getresuid (&ruid, &euid, &suid);
      if (D.11859 < 0) goto <D.11860>; else goto <D.11861>;
      <D.11860>:
      D.11862 = 0;
      return D.11862;
      <D.11861>:
      suid.0 = suid;
      D.11864 = setresuid (4294967295, suid.0, 4294967295);
      if (D.11864 < 0) goto <D.11865>; else goto <D.11866>;
      <D.11865>:
      D.11862 = 0;
      return D.11862;
      <D.11866>:
      D.11867 = geteuid ();
      suid.0 = suid;
      D.11868 = D.11867 == suid.0;
      D.11862 = (gboolean) D.11868;
      return D.11862;
    }
  finally
    {
      ruid = {CLOBBER};
      euid = {CLOBBER};
      suid = {CLOBBER};
    }
}


