#include <perms.h>

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

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

  //     2    %byteinteger bi1

  unsigned char BI1;

  //     3    %shortinteger si1

  short int SI1;

  //     4    %integer i1

  int I1;

  //     5    %longinteger li1

  long int LI1;

  //     6    %real r1

  float R1;

  //     7    %longreal lr1

  double LR1;

  //     8    %string (15) s15 1

  _imp_string15 S151;

  //     9    %string (255) s255 1

  _imp_string255 S2551;

  //    10
  //    11    %byteinteger bi

  unsigned char BI;

  //    12    %shortinteger si

  short int SI;

  //    13    %integer i

  int I;

  //    14    %longinteger li

  long int LI;

  //    15    %real r

  float R;

  //    16    %longreal lr

  double LR;

  //    17    %string (15) s15

  _imp_string15 S15;

  //    18    %string (255) s255

  _imp_string255 S255;

  //    19
  //    20    %byteinteger bi2

  unsigned char BI2;

  //    21    %shortinteger si2

  short int SI2;

  //    22    %integer i2

  int I2;

  //    23    %longinteger li2

  long int LI2;

  //    24    %real r2

  float R2;

  //    25    %longreal lr2

  double LR2;

  //    26    %string (15) s15 2

  _imp_string15 S152;

  //    27    %string (255) s255 2

  _imp_string255 S2552;

  //    28
  //    29    bi <- bi1

  BI = (unsigned char)(BI1);

  //    30    bi <- si1

  BI = (unsigned char)(SI1);

  //    31    bi <- i1

  BI = (unsigned char)(I1);

  //    32    bi <- li1

  BI = (unsigned char)(LI1);

  //    33
  //    34    si <- bi1

  SI = (short int)(BI1);

  //    35    si <- si1

  SI = (short int)(SI1);

  //    36    si <- i1

  SI = (short int)(I1);

  //    37    si <- li1

  SI = (short int)(LI1);

  //    38
  //    39    i <- bi1

  I = (int)(BI1);

  //    40    i <- si1

  I = (int)(SI1);

  //    41    i <- i1

  I = (int)(I1);

  //    42    i <- li1

  I = (int)(LI1);

  //    43
  //    44    li <- bi1

  LI = (long long int)(BI1);

  //    45    li <- si1

  LI = (long long int)(SI1);

  //    46    li <- i1

  LI = (long long int)(I1);

  //    47    li <- li1

  LI = (long long int)(LI1);

  //    48
  //    49    r <- bi1

  R = (float)(BI1);

  //    50    r <- si1

  R = (float)(SI1);

  //    51    r <- i1

  R = (float)(I1);

  //    52    r <- li1

  R = (float)(LI1);

  //    53    r <- r1

  R = (float)(R1);

  //    54    r <- lr1

  R = (float)(LR1);

  //    55
  //    56    lr <- bi1

  LR = (double)(BI1);

  //    57    lr <- si1

  LR = (double)(SI1);

  //    58    lr <- i1

  LR = (double)(I1);

  //    59    lr <- li1

  LR = (double)(LI1);

  //    60    lr <- r1

  LR = (double)(R1);

  //    61    lr <- lr1

  LR = (double)(LR1);

  //    62
  //    63    s15 <- s15 2

  _imp_strncpy(/*?*/ &S15, ({
                 __typeof__(_imp_string15) tmp; /*C*/
                 tmp = S152;
                 (void *)&tmp;
               }),
               /*max:*/ 15);

  //    64    s15 <- s255 2

  _imp_strncpy(/*?*/ &S15, ({
                 __typeof__(_imp_string255) tmp; /*C*/
                 tmp = S2552;
                 (void *)&tmp;
               }),
               /*max:*/ 15);

  /* truncated copy of no more than 15 chars */
  if (*_imp_LENGTH((_imp_string *)/*?*/ &S15) > 15) *_imp_LENGTH((_imp_string *)/*?*/ &S15) = 15;

    //    65    s255 <- s15 2

  _imp_strncpy(/*?*/ &S255, ({
                 __typeof__(_imp_string15) tmp; /*C*/
                 tmp = S152;
                 (void *)&tmp;
               }),
               /*max:*/ 255);

  //    66    s255 <- s255 2

  _imp_strncpy(/*?*/ &S255, ({
                 __typeof__(_imp_string255) tmp; /*C*/
                 tmp = S2552;
                 (void *)&tmp;
               }),
               /*max:*/ 255);

  //    67
  //    68  %endofprogram

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