#include <perms.h>

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

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

  //     2
  //     3    %real x, r

  float X;
  float R;

  //     4
  //     5    %integer i

  int I;

  //     6    %realname rn

  float *RN;

  //     7    %realarray rra(0:9)

  float RRA[10];

  //     8    %realnamearray rna(0:9)

  float *RNA[10];

  //     9    %realnamearrayname rnan

  float **RNAN;

  //    10    %realmap rm(%integer i); %result == r; %end

  float *RM(int I)
  {

    return /*?*/ &R;
  } /* end of RM */

  // ?I unused
  //    11    %realmap rm2(%integer i); %result == rn; %end

  float *RM2(int I)
  {

    return RN;
  } /* end of RM2 */

  // ?I unused
  //    12    %realmap rm3(%integer i); %result == rra(i); %end

  float *RM3(int I)
  {

    return /*?*/ &RRA[I];
  } /* end of RM3 */

  //    13    %realmap rm4(%integer i); %result == rna(i); %end

  float *RM4(int I)
  {

    return RNA[I];
  } /* end of RM4 */

  //    14    %realmap rm5(%integer i); %result == rnan(i); %end

  float *RM5(int I)
  {

    return [/*BUG*/ 0];
  } /* end of RM5 */

  //    15    rn == r

  RN = (float *)/*?*/ &R;

  //    16    x = r

  X = R;

  //    17    r = x

  R = X;

  //    18    x = rn

  X = *RN;

  //    19    rn = x

  *RN = X;

  //    20    x = rra(i)

  X = RRA[I];

  //    21    rra(i) = x

  RRA[I] = X;

  //    22    rn == rra(i)

  RN = (float *)/*?*/ &RRA[I];

  //    23    x = rra(i)

  X = RRA[I];

  //    24    rn == rna(i)

  RN = (float *)RNA[I];

  //    25    rna(i) = x

  *RNA[I] = X;

  //    26    x = rna(i)

  X = *RNA[I];

  //    27    rnan == rna

  RNAN = (float *)RNA;

  //    28    rn == rnan(i)

  RN = (float *)[/*BUG*/ 0];

  //    29    rnan(i) = x

  *[/*BUG*/ 0] = X;

  //    30    x = rnan(i)

  X = *[/*BUG*/ 0];

  //    31    x = rm(i)

  X = *RM(I);

  //    32    rn == rm(i)

  RN = (float *)RM(I);

  //    33    rm(i) = x

  *RM(I) = X;

  //    34  %endofprogram

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