#include <perms.h>

//          Edinburgh IMP77 Compiler - Version 8.4
//
//     1  %begin

int main(int argc, char **argv) { /*%begin*/
  _imp_initialise(argc, argv);

  //     2    %integer i, j, k, l;

  int I;
  int J;
  int K;
  int L;

  //     3    %integername p, q

  int *P;
  int *Q;

  //     4
  //     5    i = 20; j = 25; k = 21; l = 27;

  I = 20;
  J = 25;
  K = 21;
  L = 27;

  //     6    p == j; q == l;

  P = (int *)/*?*/ &J;
  Q = (int *)/*?*/ &L;

  //     7    %cycle

L_0001:;

//     8      i = j; p = q

  I = J;
  *P = *Q;

  //     9    %repeat %until k=3 %or (i=p %and l=1)

  if (K == 3) goto L_0002;
  if (I != *P) goto L_0003;
  if (L == 1) goto L_0002;
L_0003:;
  goto L_0001;
L_0002:;

//    10  %endofprogram

  _imp_stop(0);
  return 0;
end_0:;
}