#include <perms.h>

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

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

  //     2    %routine true

  void TRUE(void) {
    //     3    %end

    return;
  } /* end of TRUE */

  //     4    %integer a,b,c,d,e,f,g,h

  int A;
  int B;
  int C;
  int D;
  int E;
  int F;
  int G;
  int H;

  //     5
  //     6    ! conditionals
  //     7    true %if a = b

  if (A != B) goto L_0001;
  TRUE();
L_0001:;

//     8    %comment   true %if a = b
//     9    true %if a < b %or b < c

  if (A < B) goto L_0002;
  if (B >= C) goto L_0003;
L_0002:;
  TRUE();
L_0003:;

//    10    %comment   true %if a < b %or b < c
//    11    true %if a < b %and b < c

  if (A >= B) goto L_0004;
  if (B >= C) goto L_0004;
  TRUE();
L_0004:;

//    12    %comment   true %if a < b %and b < c
//    13    true %if a < b < c

  {
    // Double-sided test on B (Part I)
    int tmp;
    if (A >= (tmp = B)) goto L_0005;
    // Double-sided test on B (Part II)
    if (tmp >= C) goto L_0005;
  }
  TRUE();
L_0005:;

//    14    %comment   true %if a < b < c
//    15    true %if a < b %and (a < b %or b < c)

  if (A >= B) goto L_0006;
  if (A < B) goto L_0007;
  if (B >= C) goto L_0006;
L_0007:;
  TRUE();
L_0006:;

//    16    %comment   true %if a < b %and (a < b %or b < c)
//    17    true %if a < b %and ((a < b %and b < c) %or b < c)

  if (A >= B) goto L_0008;
  if (A >= B) goto L_0009;
  if (B < C) goto L_000A;
L_0009:;
  if (B >= C) goto L_0008;
L_000A:;
  TRUE();
L_0008:;

//    18    %comment   true %if a < b %and ((a < b %and b < c) %or b < c)
//    19    true %if a < b %or ((a < b %or b < c) %and b < c)

  if (A < B) goto L_000B;
  if (A < B) goto L_000C;
  if (B >= C) goto L_000D;
L_000C:;
  if (B >= C) goto L_000D;
L_000B:;
  TRUE();
L_000D:;

//    20    %comment   true %if a < b %or ((a < b %or b < c) %and b < c)
//    21
//    22    true %unless a = b

  if (A == B) goto L_000E;
  TRUE();
L_000E:;

//    23    %comment   true %unless a = b
//    24    true %unless a < b %or b < c

  if (A < B) goto L_000F;
  if (B < C) goto L_000F;
  TRUE();
L_000F:;

//    25    %comment   true %unless a < b %or b < c
//    26    true %unless a < b %and b < c

  if (A >= B) goto L_0010;
  if (B < C) goto L_0011;
L_0010:;
  TRUE();
L_0011:;

//    27    %comment   true %unless a < b %and b < c
//    28    true %unless a < b < c

  {
    // Double-sided test on B (Part I)
    int tmp;
    if (A >= (tmp = B)) goto L_0012;
    // Double-sided test on B (Part II)
    if (tmp < C) goto L_0013;
  }
L_0012:;
  TRUE();
L_0013:;

//    29    %comment   true %unless a < b < c
//    30    true %unless a < b %and (a < b %or b < c)

  if (A >= B) goto L_0014;
  if (A < B) goto L_0015;
  if (B < C) goto L_0015;
L_0014:;
  TRUE();
L_0015:;

//    31    %comment   true %unless a < b %and (a < b %or b < c)
//    32    true %unless a < b %and ((a < b %and b < c) %or b < c)

  if (A >= B) goto L_0016;
  if (A >= B) goto L_0017;
  if (B < C) goto L_0018;
L_0017:;
  if (B < C) goto L_0018;
L_0016:;
  TRUE();
L_0018:;

//    33    %comment   true %unless a < b %and ((a < b %and b < c) %or b < c)
//    34    true %unless a < b %or ((a < b %or b < c) %and b < c)

  if (A < B) goto L_0019;
  if (A < B) goto L_001A;
  if (B >= C) goto L_001B;
L_001A:;
  if (B < C) goto L_0019;
L_001B:;
  TRUE();
L_0019:;

//    35    %comment   true %unless a < b %or ((a < b %or b < c) %and b < c)
//    36
//    37    true %while a = b

L_001C:;
  if (A != B) goto L_001D;
  TRUE();
  goto L_001C;
L_001D:;

//    38    %comment   true %while a = b
//    39    true %while a < b %or b < c

L_001E:;
  if (A < B) goto L_001F;
  if (B >= C) goto L_0020;
L_001F:;
  TRUE();
  goto L_001E;
L_0020:;

//    40    %comment   true %while a < b %or b < c
//    41    true %while a < b %and b < c

L_0021:;
  if (A >= B) goto L_0022;
  if (B >= C) goto L_0022;
  TRUE();
  goto L_0021;
L_0022:;

//    42    %comment   true %while a < b %and b < c
//    43    true %while a < b < c

L_0023:;
  {
    // Double-sided test on B (Part I)
    int tmp;
    if (A >= (tmp = B)) goto L_0024;
    // Double-sided test on B (Part II)
    if (tmp >= C) goto L_0024;
  }
  TRUE();
  goto L_0023;
L_0024:;

//    44    %comment   true %while a < b < c
//    45    true %while a < b %and (a < b %or b < c)

L_0025:;
  if (A >= B) goto L_0026;
  if (A < B) goto L_0027;
  if (B >= C) goto L_0026;
L_0027:;
  TRUE();
  goto L_0025;
L_0026:;

//    46    %comment   true %while a < b %and (a < b %or b < c)
//    47    true %while a < b %and ((a < b %and b < c) %or b < c)

L_0028:;
  if (A >= B) goto L_0029;
  if (A >= B) goto L_002A;
  if (B < C) goto L_002B;
L_002A:;
  if (B >= C) goto L_0029;
L_002B:;
  TRUE();
  goto L_0028;
L_0029:;

//    48    %comment   true %while a < b %and ((a < b %and b < c) %or b < c)
//    49    true %while a < b %or ((a < b %or b < c) %and b < c)

L_002C:;
  if (A < B) goto L_002D;
  if (A < B) goto L_002E;
  if (B >= C) goto L_002F;
L_002E:;
  if (B >= C) goto L_002F;
L_002D:;
  TRUE();
  goto L_002C;
L_002F:;

//    50    %comment   true %while a < b %or ((a < b %or b < c) %and b < c)
//    51
//    52    true %until a = b

L_0030:;
  TRUE();
  if (A == B) goto L_0031;
  goto L_0030;
L_0031:;

//    53    %comment   true %until a = b
//    54    true %until a < b %or b < c

L_0032:;
  TRUE();
  if (A < B) goto L_0033;
  if (B < C) goto L_0033;
  goto L_0032;
L_0033:;

//    55    %comment   true %until a < b %or b < c
//    56    true %until a < b %and b < c

L_0034:;
  TRUE();
  if (A >= B) goto L_0035;
  if (B < C) goto L_0036;
L_0035:;
  goto L_0034;
L_0036:;

//    57    %comment   true %until a < b %and b < c
//    58    true %until a < b < c

L_0037:;
  TRUE();
  {
    // Double-sided test on B (Part I)
    int tmp;
    if (A >= (tmp = B)) goto L_0038;
    // Double-sided test on B (Part II)
    if (tmp < C) goto L_0039;
  }
L_0038:;
  goto L_0037;
L_0039:;

//    59    %comment   true %until a < b < c
//    60    true %until a < b %and (a < b %or b < c)

L_003A:;
  TRUE();
  if (A >= B) goto L_003B;
  if (A < B) goto L_003C;
  if (B < C) goto L_003C;
L_003B:;
  goto L_003A;
L_003C:;

//    61    %comment   true %until a < b %and (a < b %or b < c)
//    62    true %until a < b %and ((a < b %and b < c) %or b < c)

L_003D:;
  TRUE();
  if (A >= B) goto L_003E;
  if (A >= B) goto L_003F;
  if (B < C) goto L_0040;
L_003F:;
  if (B < C) goto L_0040;
L_003E:;
  goto L_003D;
L_0040:;

//    63    %comment   true %until a < b %and ((a < b %and b < c) %or b < c)
//    64    true %until a < b %or ((a < b %or b < c) %and b < c)

L_0041:;
  TRUE();
  if (A < B) goto L_0042;
  if (A < B) goto L_0043;
  if (B >= C) goto L_0044;
L_0043:;
  if (B < C) goto L_0042;
L_0044:;
  goto L_0041;
L_0042:;

//    65    %comment   true %until a < b %or ((a < b %or b < c) %and b < c)
//    66
//    67    ! conditionals
//    68    true %if %not a = b

  if (A == B) goto L_0045;
  TRUE();
L_0045:;

//    69    %comment   true %if %not a = b
//    70    true %if %not ( a < b %or b < c)

  if (A < B) goto L_0046;
  if (B < C) goto L_0046;
  TRUE();
L_0046:;

//    71    %comment   true %if %not ( a < b %or b < c)
//    72    true %if %not ( a < b %and b < c)

  if (A >= B) goto L_0047;
  if (B < C) goto L_0048;
L_0047:;
  TRUE();
L_0048:;

//    73    %comment   true %if %not ( a < b %and b < c)
//    74    true %if %not ( a < b < c)

  {
    // Double-sided test on B (Part I)
    int tmp;
    if (A >= (tmp = B)) goto L_0049;
    // Double-sided test on B (Part II)
    if (tmp < C) goto L_004A;
  }
L_0049:;
  TRUE();
L_004A:;

//    75    %comment   true %if %not ( a < b < c)
//    76    true %if %not ( a < b %and (a < b %or b < c))

  if (A >= B) goto L_004B;
  if (A < B) goto L_004C;
  if (B < C) goto L_004C;
L_004B:;
  TRUE();
L_004C:;

//    77    %comment   true %if %not ( a < b %and (a < b %or b < c))
//    78    true %if %not ( a < b %and ((a < b %and b < c) %or b < c))

  if (A >= B) goto L_004D;
  if (A >= B) goto L_004E;
  if (B < C) goto L_004F;
L_004E:;
  if (B < C) goto L_004F;
L_004D:;
  TRUE();
L_004F:;

//    79    %comment   true %if %not ( a < b %and ((a < b %and b < c) %or b < c))
//    80    true %if %not ( a < b %or ((a < b %or b < c) %and b < c))

  if (A < B) goto L_0050;
  if (A < B) goto L_0051;
  if (B >= C) goto L_0052;
L_0051:;
  if (B < C) goto L_0050;
L_0052:;
  TRUE();
L_0050:;

//    81    %comment   true %if %not ( a < b %or ((a < b %or b < c) %and b < c))
//    82
//    83    true %unless %not a = b

  if (A != B) goto L_0053;
  TRUE();
L_0053:;

//    84    %comment   true %unless %not a = b
//    85    true %unless %not ( a < b %or b < c)

  if (A < B) goto L_0054;
  if (B >= C) goto L_0055;
L_0054:;
  TRUE();
L_0055:;

//    86    %comment   true %unless %not ( a < b %or b < c)
//    87    true %unless %not ( a < b %and b < c)

  if (A >= B) goto L_0056;
  if (B >= C) goto L_0056;
  TRUE();
L_0056:;

//    88    %comment   true %unless %not ( a < b %and b < c)
//    89    true %unless %not ( a < b < c)

  {
    // Double-sided test on B (Part I)
    int tmp;
    if (A >= (tmp = B)) goto L_0057;
    // Double-sided test on B (Part II)
    if (tmp >= C) goto L_0057;
  }
  TRUE();
L_0057:;

//    90    %comment   true %unless %not ( a < b < c)
//    91    true %unless %not ( a < b %and (a < b %or b < c))

  if (A >= B) goto L_0058;
  if (A < B) goto L_0059;
  if (B >= C) goto L_0058;
L_0059:;
  TRUE();
L_0058:;

//    92    %comment   true %unless %not ( a < b %and (a < b %or b < c))
//    93    true %unless %not ( a < b %and ((a < b %and b < c) %or b < c))

  if (A >= B) goto L_005A;
  if (A >= B) goto L_005B;
  if (B < C) goto L_005C;
L_005B:;
  if (B >= C) goto L_005A;
L_005C:;
  TRUE();
L_005A:;

//    94    %comment   true %unless %not ( a < b %and ((a < b %and b < c) %or b < c))
//    95    true %unless %not ( a < b %or ((a < b %or b < c) %and b < c))

  if (A < B) goto L_005D;
  if (A < B) goto L_005E;
  if (B >= C) goto L_005F;
L_005E:;
  if (B >= C) goto L_005F;
L_005D:;
  TRUE();
L_005F:;

//    96    %comment   true %unless %not ( a < b %or ((a < b %or b < c) %and b < c))
//    97
//    98    true %while %not a = b

L_0060:;
  if (A == B) goto L_0061;
  TRUE();
  goto L_0060;
L_0061:;

//    99    %comment   true %while %not a = b
//   100    true %while %not ( a < b %or b < c)

L_0062:;
  if (A < B) goto L_0063;
  if (B < C) goto L_0063;
  TRUE();
  goto L_0062;
L_0063:;

//   101    %comment   true %while %not ( a < b %or b < c)
//   102    true %while %not ( a < b %and b < c)

L_0064:;
  if (A >= B) goto L_0065;
  if (B < C) goto L_0066;
L_0065:;
  TRUE();
  goto L_0064;
L_0066:;

//   103    %comment   true %while %not ( a < b %and b < c)
//   104    true %while %not ( a < b < c)

L_0067:;
  {
    // Double-sided test on B (Part I)
    int tmp;
    if (A >= (tmp = B)) goto L_0068;
    // Double-sided test on B (Part II)
    if (tmp < C) goto L_0069;
  }
L_0068:;
  TRUE();
  goto L_0067;
L_0069:;

//   105    %comment   true %while %not ( a < b < c)
//   106    true %while %not ( a < b %and (a < b %or b < c))

L_006A:;
  if (A >= B) goto L_006B;
  if (A < B) goto L_006C;
  if (B < C) goto L_006C;
L_006B:;
  TRUE();
  goto L_006A;
L_006C:;

//   107    %comment   true %while %not ( a < b %and (a < b %or b < c))
//   108    true %while %not ( a < b %and ((a < b %and b < c) %or b < c))

L_006D:;
  if (A >= B) goto L_006E;
  if (A >= B) goto L_006F;
  if (B < C) goto L_0070;
L_006F:;
  if (B < C) goto L_0070;
L_006E:;
  TRUE();
  goto L_006D;
L_0070:;

//   109    %comment   true %while %not ( a < b %and ((a < b %and b < c) %or b < c))
//   110    true %while %not ( a < b %or ((a < b %or b < c) %and b < c))

L_0071:;
  if (A < B) goto L_0072;
  if (A < B) goto L_0073;
  if (B >= C) goto L_0074;
L_0073:;
  if (B < C) goto L_0072;
L_0074:;
  TRUE();
  goto L_0071;
L_0072:;

//   111    %comment   true %while %not ( a < b %or ((a < b %or b < c) %and b < c))
//   112
//   113    true %until %not a = b

L_0075:;
  TRUE();
  if (A != B) goto L_0076;
  goto L_0075;
L_0076:;

//   114    %comment   true %until %not a = b
//   115    true %until %not ( a < b %or b < c)

L_0077:;
  TRUE();
  if (A < B) goto L_0078;
  if (B >= C) goto L_0079;
L_0078:;
  goto L_0077;
L_0079:;

//   116    %comment   true %until %not ( a < b %or b < c)
//   117    true %until %not ( a < b %and b < c)

L_007A:;
  TRUE();
  if (A >= B) goto L_007B;
  if (B >= C) goto L_007B;
  goto L_007A;
L_007B:;

//   118    %comment   true %until %not ( a < b %and b < c)
//   119    true %until %not ( a < b < c)

L_007C:;
  TRUE();
  {
    // Double-sided test on B (Part I)
    int tmp;
    if (A >= (tmp = B)) goto L_007D;
    // Double-sided test on B (Part II)
    if (tmp >= C) goto L_007D;
  }
  goto L_007C;
L_007D:;

//   120    %comment   true %until %not ( a < b < c)
//   121    true %until %not ( a < b %and (a < b %or b < c))

L_007E:;
  TRUE();
  if (A >= B) goto L_007F;
  if (A < B) goto L_0080;
  if (B >= C) goto L_007F;
L_0080:;
  goto L_007E;
L_007F:;

//   122    %comment   true %until %not ( a < b %and (a < b %or b < c))
//   123    true %until %not ( a < b %and ((a < b %and b < c) %or b < c))

L_0081:;
  TRUE();
  if (A >= B) goto L_0082;
  if (A >= B) goto L_0083;
  if (B < C) goto L_0084;
L_0083:;
  if (B >= C) goto L_0082;
L_0084:;
  goto L_0081;
L_0082:;

//   124    %comment   true %until %not ( a < b %and ((a < b %and b < c) %or b < c))
//   125    true %until %not ( a < b %or ((a < b %or b < c) %and b < c))

L_0085:;
  TRUE();
  if (A < B) goto L_0086;
  if (A < B) goto L_0087;
  if (B >= C) goto L_0088;
L_0087:;
  if (B >= C) goto L_0088;
L_0086:;
  goto L_0085;
L_0088:;

//   126    %comment   true %until %not ( a < b %or ((a < b %or b < c) %and b < c))
//   127
//   128  %endofprogram

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