#line 1
#include <perms.h>

//          Edinburgh IMP77 Compiler - Version 8.4
//
//     1  ! File of externals followed by a main program.
//     2
//     3  %recordformat rf ( %integer i, %real r, %record (rf) %name next)  ;! Are record format vars in a sub-scope?  Or is it just that formats are in a different name space?

#line 3 "test-new/bigtest2.imp"
struct RF {
  union {
    struct {
#line 3 "test-new/bigtest2.imp"
      int I;
#line 3 "test-new/bigtest2.imp"
      float R;
#line 3 "test-new/bigtest2.imp"
      struct RF *NEXT;
#line 3 "test-new/bigtest2.imp"
    };
  };
};

//     4
//     5  ! owns and externals are simpler declarations
//     6  %externalinteger xi1

#line 6 "test-new/bigtest2.imp"
int XI1;

//     7  %externalintegername xin1

#line 7 "test-new/bigtest2.imp"
int *XIN1;

//     8  %externalreal xr1

#line 8 "test-new/bigtest2.imp"
float XR1;

//     9  %externalinteger xi2,xi3

#line 9 "test-new/bigtest2.imp"
int XI2;
#line 9 "test-new/bigtest2.imp"
int XI3;

//    10  %externalreal xcr1 = 3.1415

#line 10 "test-new/bigtest2.imp"
float XCR1 = 3.1415;

//    11  %externalrealarray xra1(0:9)

#line 11 "test-new/bigtest2.imp"
float XRA1[10];

//    12  %externalrealarrayname xran1

#line 12 "test-new/bigtest2.imp"
float *XRAN1;

//    13  %externallongreal xclr1 = 3.1415

#line 13 "test-new/bigtest2.imp"
double XCLR1 = 3.1415;

//    14  %externallongrealarray xlra1(0:9)

#line 14 "test-new/bigtest2.imp"
double XLRA1[10];

//    15  %externallongrealarrayname xlran1

#line 15 "test-new/bigtest2.imp"
double *XLRAN1;

//    16  %externalintegernamearray xina1(0:9)

#line 16 "test-new/bigtest2.imp"
int *XINA1[10];

//    17  %externalintegernamearrayname xinan1

#line 17 "test-new/bigtest2.imp"
int **XINAN1;

//    18  %externalstring(82) xs1

#line 18 "test-new/bigtest2.imp"
_imp_string82 XS1;

//    19  %externalstring(82)%name xsn1

#line 19 "test-new/bigtest2.imp"
_imp_string82 *XSN1;

//    20  %externalstring(82)%array xsa1(4:7)

#line 20 "test-new/bigtest2.imp"
_imp_string82 XSA1[4];

//    21  %externalstring(82)%arrayname xsan1

#line 21 "test-new/bigtest2.imp"
_imp_string82 *XSAN1;

//    22  %externalstring(82)%namearray xsna1(4:7)

#line 22 "test-new/bigtest2.imp"
_imp_string82 *XSNA1[4];

//    23  %externalstring(82)%namearrayname xsnan1

#line 23 "test-new/bigtest2.imp"
_imp_string82 **XSNAN1;

//    24  %externalrecord (rf) xrec1

#line 24 "test-new/bigtest2.imp"
struct RF XREC1;

//    25  %externalrecord (rf) %name xrecn1

#line 25 "test-new/bigtest2.imp"
struct RF *XRECN1;

//    26  %externalrecord (rf) %array xreca1(2:3)

#line 26 "test-new/bigtest2.imp"
struct RF XRECA1[2];

//    27  %externalrecord (rf) %array %name xrecan1

#line 27 "test-new/bigtest2.imp"
struct RF *XRECAN1;

//    28  %externalrecord (rf) %name %array xrecna1(2:3)

#line 28 "test-new/bigtest2.imp"
struct RF *XRECNA1[2];

//    29  %externalrecord (rf) %name %array %name xrecnan1

#line 29 "test-new/bigtest2.imp"
struct RF **XRECNAN1;

//    30
//    31  %externalintegerfn ifn1

#line 31 "test-new/bigtest2.imp"
int IFN1(void) {
  //    32    %result = xi1

#line 32 "test-new/bigtest2.imp"
  return XI1;

  //    33  %end

#line 33 "test-new/bigtest2.imp"
} /* end of IFN1 */

//    34
//    35  %externalintegermap imap1

#line 35 "test-new/bigtest2.imp"
int *IMAP1(void)
#line 35 "test-new/bigtest2.imp"
{

  //    36    %result == xi1

#line 36 "test-new/bigtest2.imp"
  return /*?*/ &XI1;

  //    37  %end

#line 37 "test-new/bigtest2.imp"
} /* end of IMAP1 */

//    38
//    39  %externalroutine rt1

#line 39 "test-new/bigtest2.imp"
void RT1(void) {
  //    40    %integer i1

#line 40 "test-new/bigtest2.imp"
  int I1;

  //    41    %routine rt1

#line 41 "test-new/bigtest2.imp"
  void RT1(void) {
    //    42    %end

#line 42 "test-new/bigtest2.imp"
    return;
#line 42 "test-new/bigtest2.imp"
  } /* end of RT1 */

  //    43  %end

#line 43 "test-new/bigtest2.imp"
  return;
#line 43 "test-new/bigtest2.imp"
} /* end of RT1 */

// ?RT1 unused
// ?I1 unused
//    44
//    45  %externalpredicate test1

#line 45 "test-new/bigtest2.imp"
int TEST1(void) {
  //    46    %true

#line 46 "test-new/bigtest2.imp"
  return 1 /*TRUE*/;

  //    47  %end

#line 47 "test-new/bigtest2.imp"
} /* end of TEST1 */

//    48
//    49  %externalroutine xrt1(%integer p1)

#line 49 "test-new/bigtest2.imp"
void XRT1(int P1) {
  //    50    %real r1

#line 50 "test-new/bigtest2.imp"
  float R1;

  //    51  %end

#line 51 "test-new/bigtest2.imp"
  return;
#line 51 "test-new/bigtest2.imp"
} /* end of XRT1 */

// ?R1 unused
// ?P1 unused
//    52
//    53  %externalroutine xr2(%integer p1, p2, p3, p4)

#line 53 "test-new/bigtest2.imp"
void XR2(int P1, int P2, int P3, int P4) {
  //    54    %real r1

#line 54 "test-new/bigtest2.imp"
  float R1;

  //    55  %end

#line 55 "test-new/bigtest2.imp"
  return;
#line 55 "test-new/bigtest2.imp"
} /* end of XR2 */

// ?R1 unused
// ?P4 unused
// ?P3 unused
// ?P2 unused
// ?P1 unused
//    56
//    57  %externalroutine xr3(%integer p1, p2, %real r1, r2)

#line 57 "test-new/bigtest2.imp"
void XR3(int P1, int P2, float R1, float R2) {
  //    58    %real r3

#line 58 "test-new/bigtest2.imp"
  float R3;

  //    59  %end

#line 59 "test-new/bigtest2.imp"
  return;
#line 59 "test-new/bigtest2.imp"
} /* end of XR3 */

// ?R3 unused
// ?R2 unused
// ?R1 unused
// ?P2 unused
// ?P1 unused
//    60
//    61  %begin

#line 61 "test-new/bigtest2.imp"
int main(int argc, char **argv) { /*%begin*/
#line 61 "test-new/bigtest2.imp"
  _imp_initialise(argc, argv);
#line 61 "test-new/bigtest2.imp"
  auto int *IMAP1(void)
#line 61 "test-new/bigtest2.imp"
      ;

  //    62    %integermapspec imap1
  //    63    %integer i1

#line 63 "test-new/bigtest2.imp"
  int I1;

  //    64    %integername in1

#line 64 "test-new/bigtest2.imp"
  int *IN1;

  //    65    %shortinteger si1

#line 65 "test-new/bigtest2.imp"
  short int SI1;

  //    66    %shortintegername sin1

#line 66 "test-new/bigtest2.imp"
  short int *SIN1;

  //    67    %byteinteger bi1

#line 67 "test-new/bigtest2.imp"
  unsigned char BI1;

  //    68    %byteintegername bin1

#line 68 "test-new/bigtest2.imp"
  unsigned char *BIN1;

  //    69    %real r1

#line 69 "test-new/bigtest2.imp"
  float R1;

  //    70    %realslong
  //    71    %real qr1

#line 71 "test-new/bigtest2.imp"
  double QR1;

  //    72    %realsnormal
  //    73    %constreal cr1 = 3.1415

#line 73 "test-new/bigtest2.imp"
  const float CR1 = 3.1415;

  //    74    %longreal lr1

#line 74 "test-new/bigtest2.imp"
  double LR1;

  //    75    %constlongreal clr1 = 3.1415

#line 75 "test-new/bigtest2.imp"
  const double CLR1 = 3.1415;

  //    76    %integerfn ifn1

#line 76 "test-new/bigtest2.imp"
  int IFN1(void) {
    //    77      %result = i1

#line 77 "test-new/bigtest2.imp"
    return I1;

    //    78    %end

#line 78 "test-new/bigtest2.imp"
  } /* end of IFN1 */

  //    79    %integermap imap1

#line 79 "test-new/bigtest2.imp"
  int *IMAP1(void)
#line 79 "test-new/bigtest2.imp"
  {

    //    80      %result == i1

#line 80 "test-new/bigtest2.imp"
    return /*?*/ &I1;

    //    81    %end

#line 81 "test-new/bigtest2.imp"
  } /* end of IMAP1 */

  //    82    %routine rt1

#line 82 "test-new/bigtest2.imp"
  void RT1(void) {
    //    83      %integer i1

#line 83 "test-new/bigtest2.imp"
    int I1;

    //    84      %integer local1

#line 84 "test-new/bigtest2.imp"
    int LOCAL1;

    //    85      %routine rt1

#line 85 "test-new/bigtest2.imp"
    void RT1(void) {
      //    86        %integer local1

#line 86 "test-new/bigtest2.imp"
      int LOCAL1;

      //    87        local1 = 1

#line 87 "test-new/bigtest2.imp"
      LOCAL1 = 1;

      //    88        i1 = 1

#line 88 "test-new/bigtest2.imp"
      I1 = 1;

      //    89      %end

#line 89 "test-new/bigtest2.imp"
      return;
#line 89 "test-new/bigtest2.imp"
    } /* end of RT1 */

    //    90      local1 = 2

#line 90 "test-new/bigtest2.imp"
    LOCAL1 = 2;

    //    91      i1 = 2

#line 91 "test-new/bigtest2.imp"
    I1 = 2;

    //    92    %end

#line 92 "test-new/bigtest2.imp"
    return;
#line 92 "test-new/bigtest2.imp"
  } /* end of RT1 */

  // ?RT1 unused
  //    93    %predicate test1

#line 93 "test-new/bigtest2.imp"
  int TEST1(void) {
    //    94      %false

#line 94 "test-new/bigtest2.imp"
    return 0 /*FALSE*/;

    //    95    %end

#line 95 "test-new/bigtest2.imp"
  } /* end of TEST1 */

  //    96    %realarray ra1, ra1b(0:9), ra2, ra2b(10:19)

#line 96 "test-new/bigtest2.imp"
  float RA1[10];
#line 96 "test-new/bigtest2.imp"
  float RA1B[10];
#line 96 "test-new/bigtest2.imp"
  float RA2[10];
#line 96 "test-new/bigtest2.imp"
  float RA2B[10];

  //    97    %realarrayname ran1, ran2

#line 97 "test-new/bigtest2.imp"
  float *RAN1;
#line 97 "test-new/bigtest2.imp"
  float *RAN2;

  //    98    %longrealarray lra1, lra1b(0:9), lra2, lra2b(10:19)

#line 98 "test-new/bigtest2.imp"
  double LRA1[10];
#line 98 "test-new/bigtest2.imp"
  double LRA1B[10];
#line 98 "test-new/bigtest2.imp"
  double LRA2[10];
#line 98 "test-new/bigtest2.imp"
  double LRA2B[10];

  //    99    %longrealarrayname lran1, lran2

#line 99 "test-new/bigtest2.imp"
  double *LRAN1;
#line 99 "test-new/bigtest2.imp"
  double *LRAN2;

  //   100    %integernamearray ina1, ina1b(0:9), ina2, ina2b(10:19)

#line 100 "test-new/bigtest2.imp"
  int *INA1[10];
#line 100 "test-new/bigtest2.imp"
  int *INA1B[10];
#line 100 "test-new/bigtest2.imp"
  int *INA2[10];
#line 100 "test-new/bigtest2.imp"
  int *INA2B[10];

  //   101    %integernamearrayname inan1, inan2

#line 101 "test-new/bigtest2.imp"
  int **INAN1;
#line 101 "test-new/bigtest2.imp"
  int **INAN2;

  //   102    %string(82) s1, s2

#line 102 "test-new/bigtest2.imp"
  _imp_string82 S1;
#line 102 "test-new/bigtest2.imp"
  _imp_string82 S2;

  //   103    %string(82)%name sn1, sn2

#line 103 "test-new/bigtest2.imp"
  _imp_string82 *SN1;
#line 103 "test-new/bigtest2.imp"
  _imp_string82 *SN2;

  //   104    %string(82)%array sa1, sa1b(4:7), sa2, sa2b(9:10), sa3(1:100)

#line 104 "test-new/bigtest2.imp"
  _imp_string82 SA1[4];
#line 104 "test-new/bigtest2.imp"
  _imp_string82 SA1B[4];
#line 104 "test-new/bigtest2.imp"
  _imp_string82 SA2[2];
#line 104 "test-new/bigtest2.imp"
  _imp_string82 SA2B[2];
#line 104 "test-new/bigtest2.imp"
  _imp_string82 SA3[100];

  //   105    %string(82)%arrayname san1, san2, san3

#line 105 "test-new/bigtest2.imp"
  _imp_string82 *SAN1;
#line 105 "test-new/bigtest2.imp"
  _imp_string82 *SAN2;
#line 105 "test-new/bigtest2.imp"
  _imp_string82 *SAN3;

  //   106    %string(82)%namearray sna1, sna2(4:7), sna3(1:2)

#line 106 "test-new/bigtest2.imp"
  _imp_string82 *SNA1[4];
#line 106 "test-new/bigtest2.imp"
  _imp_string82 *SNA2[4];
#line 106 "test-new/bigtest2.imp"
  _imp_string82 *SNA3[2];

  //   107    %string(82)%namearrayname snan1, snan2

#line 107 "test-new/bigtest2.imp"
  _imp_string82 **SNAN1;
#line 107 "test-new/bigtest2.imp"
  _imp_string82 **SNAN2;

  //   108    %record (rf) rec1, rec2

#line 108 "test-new/bigtest2.imp"
  struct RF REC1;
#line 108 "test-new/bigtest2.imp"
  struct RF REC2;

  //   109    %record (rf) %name recn1, recn2

#line 109 "test-new/bigtest2.imp"
  struct RF *RECN1;
#line 109 "test-new/bigtest2.imp"
  struct RF *RECN2;

  //   110    %record (rf) %array reca1,reca2(2:3),reca3(4:5)

#line 110 "test-new/bigtest2.imp"
  struct RF RECA1[2];
#line 110 "test-new/bigtest2.imp"
  struct RF RECA2[2];
#line 110 "test-new/bigtest2.imp"
  struct RF RECA3[2];

  //   111    %record (rf) %array %name recan1,recan2

#line 111 "test-new/bigtest2.imp"
  struct RF *RECAN1;
#line 111 "test-new/bigtest2.imp"
  struct RF *RECAN2;

  //   112    %record (rf) %name %array recna1,recna2(2:3),recna3(1:2)

#line 112 "test-new/bigtest2.imp"
  struct RF *RECNA1[2];
#line 112 "test-new/bigtest2.imp"
  struct RF *RECNA2[2];
#line 112 "test-new/bigtest2.imp"
  struct RF *RECNA3[2];

  //   113    %record (rf) %name %array %name recnan1,recnan2

#line 113 "test-new/bigtest2.imp"
  struct RF **RECNAN1;
#line 113 "test-new/bigtest2.imp"
  struct RF **RECNAN2;

  //   114
  //   115    ! owns and externals are simpler declarations
  //   116    %owninteger oi1

#line 116 "test-new/bigtest2.imp"
  static int OI1;

  //   117    %ownintegername oin1

#line 117 "test-new/bigtest2.imp"
  static int *OIN1;

  //   118    %ownreal or1

#line 118 "test-new/bigtest2.imp"
  static float OR1;

  //   119    %ownlongreal olr1

#line 119 "test-new/bigtest2.imp"
  static double OLR1;

  //   120    %owninteger oi2,oi3

#line 120 "test-new/bigtest2.imp"
  static int OI2;
#line 120 "test-new/bigtest2.imp"
  static int OI3;

  //   121    %ownreal ocr1 = 3.1415

#line 121 "test-new/bigtest2.imp"
  static float OCR1 = 3.1415;

  //   122    %ownlongreal oclr1 = 3.1415

#line 122 "test-new/bigtest2.imp"
  static double OCLR1 = 3.1415;

  //   123    %ownrealarray ora1(0:9)

#line 123 "test-new/bigtest2.imp"
  static float ORA1[10];

  //   124    %ownrealarrayname oran1

#line 124 "test-new/bigtest2.imp"
  static float *ORAN1;

  //   125    %ownlongrealarray olra1(0:9)

#line 125 "test-new/bigtest2.imp"
  static double OLRA1[10];

  //   126    %ownlongrealarrayname olran1

#line 126 "test-new/bigtest2.imp"
  static double *OLRAN1;

  //   127    %ownintegernamearray oina1(0:9)

#line 127 "test-new/bigtest2.imp"
  static int *OINA1[10];

  //   128    %ownintegernamearrayname oinan1

#line 128 "test-new/bigtest2.imp"
  static int **OINAN1;

  //   129    %ownstring(82) os1

#line 129 "test-new/bigtest2.imp"
  static _imp_string82 OS1;

  //   130    %ownstring(82)%name osn1

#line 130 "test-new/bigtest2.imp"
  static _imp_string82 *OSN1;

  //   131    %ownstring(82)%array osa1(4:7)

#line 131 "test-new/bigtest2.imp"
  static _imp_string82 OSA1[4];

  //   132    %ownstring(82)%arrayname osan1

#line 132 "test-new/bigtest2.imp"
  static _imp_string82 *OSAN1;

  //   133    %ownstring(82)%namearray osna1(4:7)

#line 133 "test-new/bigtest2.imp"
  static _imp_string82 *OSNA1[4];

  //   134    %ownstring(82)%namearrayname osnan1

#line 134 "test-new/bigtest2.imp"
  static _imp_string82 **OSNAN1;

  //   135    %ownrecord (rf) orec1

#line 135 "test-new/bigtest2.imp"
  static struct RF OREC1;

  //   136    %ownrecord (rf) %name orecn1

#line 136 "test-new/bigtest2.imp"
  static struct RF *ORECN1;

  //   137    %ownrecord (rf) %array oreca1(2:3)

#line 137 "test-new/bigtest2.imp"
  static struct RF ORECA1[2];

  //   138    %ownrecord (rf) %array %name orecan1

#line 138 "test-new/bigtest2.imp"
  static struct RF *ORECAN1;

  //   139    %ownrecord (rf) %name %array orecna1(2:3)

#line 139 "test-new/bigtest2.imp"
  static struct RF *ORECNA1[2];

  //   140    %ownrecord (rf) %name %array %name orecnan1

#line 140 "test-new/bigtest2.imp"
  static struct RF **ORECNAN1;

  //   141
  //   142    %switch sw1(0:255), sw2('a':'z')

#line 142 "test-new/bigtest2.imp"
  int SW1_index;
#line 142 "test-new/bigtest2.imp"
  int SW1_line;
#line 142 "test-new/bigtest2.imp"
  char *SW1_file;
#line 142 "test-new/bigtest2.imp"
  static const void *SW1[256] = {
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing, &&case_SW1_missing,
      &&case_SW1_missing};

#line 142 "test-new/bigtest2.imp"
  int SW2_index;
#line 142 "test-new/bigtest2.imp"
  int SW2_line;
#line 142 "test-new/bigtest2.imp"
  char *SW2_file;
#line 142 "test-new/bigtest2.imp"
  static const void *SW2[26] = {&&case_SW2_missing, &&case_SW2_missing, &&case_SW2_missing, &&case_SW2_missing,
                                &&case_SW2_missing, &&case_SW2_missing, &&case_SW2_missing, &&case_SW2_missing,
                                &&case_SW2_missing, &&case_SW2_missing, &&case_SW2_missing, &&case_SW2_missing,
                                &&case_SW2_missing, &&case_SW2_missing, &&case_SW2_missing, &&case_SW2_missing,
                                &&case_SW2_missing, &&case_SW2_missing, &&case_SW2_missing, &&case_SW2_missing,
                                &&case_SW2_missing, &&case_SW2_missing, &&case_SW2_missing, &&case_SW2_missing,
                                &&case_SW2_missing, &&case_SW2_missing};

  //   143
  //   144    %integer %array ia3, ia4(1:10), ia5(2:11,0:1,0:2)

#line 144 "test-new/bigtest2.imp"
  int IA3[10];
#line 144 "test-new/bigtest2.imp"
  int IA4[10];
#line 144 "test-new/bigtest2.imp"
  int IA5[10][2][3];

  //   145
  //   146    %integernamearray in3a1(2:11,0:1,0:2)

#line 146 "test-new/bigtest2.imp"
  int *IN3A1[10][2][3];

  //   147
  //   148    i1 = 1

#line 148 "test-new/bigtest2.imp"
  I1 = 1;

  //   149
  //   150    !!!!!!!!!!!!!!!!!!!
  //   151
  //   152    xi1 = 1

#line 152 "test-new/bigtest2.imp"
  XI1 = 1;

  //   153    xin1 == xi1

#line 153 "test-new/bigtest2.imp"
  XIN1 = (int *)/*?*/ &XI1;

  //   154    xin1 = 1

#line 154 "test-new/bigtest2.imp"
  *XIN1 = 1;

  //   155    xr1 = 3.1

#line 155 "test-new/bigtest2.imp"
  XR1 = 3.1;

  //   156    xi2 = xi3

#line 156 "test-new/bigtest2.imp"
  XI2 = XI3;

  //   157    xcr1 = 3.1415

#line 157 "test-new/bigtest2.imp"
  XCR1 = 3.1415;

  //   158    xra1(5) = xcr1

#line 158 "test-new/bigtest2.imp"
  XRA1[5] = XCR1;

  //   159    xran1 == xra1

#line 159 "test-new/bigtest2.imp"
  XRAN1 = (float *)XRA1;

  //   160    xclr1 = 3.1415

#line 160 "test-new/bigtest2.imp"
  XCLR1 = 3.1415;

  //   161    xlra1(2) = 3.1

#line 161 "test-new/bigtest2.imp"
  XLRA1[2] = 3.1;

  //   162    xlran1 == xlra1

#line 162 "test-new/bigtest2.imp"
  XLRAN1 = (double *)XLRA1;

  //   163    xlran1(2) = 3.2

#line 163 "test-new/bigtest2.imp"
  [/*BUG*/ 0] = 3.2;

  //   164    xina1(9) == xi1

#line 164 "test-new/bigtest2.imp"
  XINA1[9] = (int *)/*?*/ &XI1;

  //   165    xinan1 == xina1

#line 165 "test-new/bigtest2.imp"
  XINAN1 = (int *)XINA1;

  //   166
  //   167    %integer i

#line 167 "test-new/bigtest2.imp"
  int I;

  //   168    %real r

#line 168 "test-new/bigtest2.imp"
  float R;

  //   169    %name fred

#line 169 "test-new/bigtest2.imp"
  _imp_name *FRED;

  //   170    fred == i

#line 170 "test-new/bigtest2.imp"
  FRED = (*)/*?*/ &I;

  //   171    fred == r

#line 171 "test-new/bigtest2.imp"
  FRED = (*)/*?*/ &R;

  //   172
  //   173
  //   174    %begin

#line 174 "test-new/bigtest2.imp"
  { /*%begin*/

    //   175
    //   176      %integer i

#line 176 "test-new/bigtest2.imp"
    int I;

    //   177      %recordformat rf(%record (rf) %name next, %integer i)

#line 177 "test-new/bigtest2.imp"
    struct RF {
      union {
        struct {
#line 177 "test-new/bigtest2.imp"
          struct RF *NEXT;
#line 177 "test-new/bigtest2.imp"
          int I;
#line 177 "test-new/bigtest2.imp"
        };
      };
    };

    //   178
    //   179      %record (rf) rec

#line 179 "test-new/bigtest2.imp"
    struct RF REC;

    //   180      %record (rf) %name recn

#line 180 "test-new/bigtest2.imp"
    struct RF *RECN;

    //   181      %record (rf) %array ra(0:10)

#line 181 "test-new/bigtest2.imp"
    struct RF RA[11];

    //   182      %record (rf) %name %array rna(0:10)

#line 182 "test-new/bigtest2.imp"
    struct RF *RNA[11];

    //   183      %record (rf) %name %array %name rnan

#line 183 "test-new/bigtest2.imp"
    struct RF **RNAN;

    //   184      %record (rf) %map rm(%integer i);  %result == rec;  %end

#line 184 "test-new/bigtest2.imp"
    struct RF *RM(int I)
#line 184 "test-new/bigtest2.imp"
    {

#line 184 "test-new/bigtest2.imp"
      return /*?*/ &REC;
#line 184 "test-new/bigtest2.imp"
    } /* end of RM */

    // ?I unused
    //   185      %integer x

#line 185 "test-new/bigtest2.imp"
    int X;

    //   186      x = rec_i

#line 186 "test-new/bigtest2.imp"
    X =