transitive_closure (unsigned int * R, int n)
{
  int D.3345;
  int D.3346;
  unsigned int D.3347;
  unsigned int D.3348;
  unsigned int D.3349;
  int i.0;
  int D.3351;
  unsigned int D.3352;
  unsigned int D.3353;
  unsigned int rowsize.1;
  unsigned int D.3357;
  unsigned int * rp.2;
  unsigned int D.3359;
  unsigned int * rowj.3;
  unsigned int * rowj.4;
  unsigned int D.3362;
  unsigned int D.3363;
  register int rowsize;
  register unsigned int i;
  register unsigned int * rowj;
  register unsigned int * rp;
  register unsigned int * rend;
  register unsigned int * ccol;
  register unsigned int * relend;
  register unsigned int * cword;
  register unsigned int * rowi;

  D.3345 = n + 31;
  rowsize = D.3345 / 32;
  D.3346 = n * rowsize;
  D.3347 = (unsigned int) D.3346;
  D.3348 = D.3347 * 4;
  relend = R + D.3348;
  cword = R;
  i = 0;
  rowi = R;
  goto <D.3331>;
  <D.3330>:
  ccol = cword;
  rowj = R;
  goto <D.3328>;
  <D.3327>:
  D.3349 = *ccol;
  i.0 = (int) i;
  D.3351 = 1 << i.0;
  D.3352 = (unsigned int) D.3351;
  D.3353 = D.3349 & D.3352;
  if (D.3353 != 0) goto <D.3354>; else goto <D.3355>;
  <D.3354>:
  rp = rowi;
  rowsize.1 = (unsigned int) rowsize;
  D.3357 = rowsize.1 * 4;
  rend = rowj + D.3357;
  goto <D.3325>;
  <D.3324>:
  rp.2 = rp;
  rp = rp.2 + 4;
  D.3359 = *rp.2;
  rowj.3 = rowj;
  rowj = rowj.3 + 4;
  rowj.4 = rowj.3;
  D.3362 = *rowj.4;
  D.3363 = D.3362 | D.3359;
  *rowj.4 = D.3363;
  <D.3325>:
  if (rowj < rend) goto <D.3324>; else goto <D.3326>;
  <D.3326>:
  goto <D.3364>;
  <D.3355>:
  rowsize.1 = (unsigned int) rowsize;
  D.3357 = rowsize.1 * 4;
  rowj = rowj + D.3357;
  <D.3364>:
  rowsize.1 = (unsigned int) rowsize;
  D.3357 = rowsize.1 * 4;
  ccol = ccol + D.3357;
  <D.3328>:
  if (rowj < relend) goto <D.3327>; else goto <D.3329>;
  <D.3329>:
  i = i + 1;
  if (i > 31) goto <D.3365>; else goto <D.3366>;
  <D.3365>:
  i = 0;
  cword = cword + 4;
  <D.3366>:
  rowsize.1 = (unsigned int) rowsize;
  D.3357 = rowsize.1 * 4;
  rowi = rowi + D.3357;
  <D.3331>:
  if (rowi < relend) goto <D.3330>; else goto <D.3332>;
  <D.3332>:
}


reflexive_transitive_closure (unsigned int * R, int n)
{
  int D.3367;
  int D.3368;
  unsigned int D.3369;
  unsigned int D.3370;
  unsigned int D.3371;
  int i.5;
  int D.3373;
  unsigned int D.3374;
  unsigned int D.3375;
  unsigned int rowsize.6;
  unsigned int D.3379;
  register int rowsize;
  register unsigned int i;
  register unsigned int * rp;
  register unsigned int * relend;

  transitive_closure (R, n);
  D.3367 = n + 31;
  rowsize = D.3367 / 32;
  D.3368 = n * rowsize;
  D.3369 = (unsigned int) D.3368;
  D.3370 = D.3369 * 4;
  relend = R + D.3370;
  i = 0;
  rp = R;
  goto <D.3342>;
  <D.3341>:
  D.3371 = *rp;
  i.5 = (int) i;
  D.3373 = 1 << i.5;
  D.3374 = (unsigned int) D.3373;
  D.3375 = D.3371 | D.3374;
  *rp = D.3375;
  i = i + 1;
  if (i > 31) goto <D.3376>; else goto <D.3377>;
  <D.3376>:
  i = 0;
  rp = rp + 4;
  <D.3377>:
  rowsize.6 = (unsigned int) rowsize;
  D.3379 = rowsize.6 * 4;
  rp = rp + D.3379;
  <D.3342>:
  if (rp < relend) goto <D.3341>; else goto <D.3343>;
  <D.3343>:
}


