#include <perms.h>

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

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

  //     2     %integer %name i, t1

  int *I;
  int *T1;

  //     3     %string (10) %name s, t2

  _imp_string10 *S;
  _imp_string10 *T2;

  //     4     ! De-Morgan failure:
  //     5     %unless t1 == i %and t2 == s %then printstring("BUG1 FOUND")

  if (_imp_ADDR((void *)(T1)) != _imp_ADDR((void *)(I))) goto L_0001;

  if (_imp_ADDR((void *)(T2)) == _imp_ADDR((void *)(S))) goto L_0002;

L_0001:;
  _imp_PRINTSTRING(_imp_str_literal("BUG1 FOUND"));
L_0002:;

//     6     %if t1 ## i %and t2 ## s %then printstring("BUG2 FOUND")

  if (_imp_ADDR((void *)(T1)) == _imp_ADDR((void *)(I))) goto L_0003;

  if (_imp_ADDR((void *)(T2)) == _imp_ADDR((void *)(S))) goto L_0003;

  _imp_PRINTSTRING(_imp_str_literal("BUG2 FOUND"));
L_0003:;

//     7  %end %of %program

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