#include <perms.h>

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

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

  //     2    %ownintegerarray hex(0:1) = x'12', x'ab'

  static int HEX[2] = {18, 171};

  //     3    %integer i

  int I;

  //     4    %switch fred(0:255)

  int FRED_index;
  int FRED_line;
  char *FRED_file;
  static const void *FRED[256] = {
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_171,     &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing, &&case_FRED_missing,
      &&case_FRED_missing};

  //     5    ->fred(x'ab')

  FRED_line = __LINE__;
  FRED_file = __FILE__;
  FRED_index = 171;
  goto case_FRED_dispatch;

  //     6  fred(x'ab'):

case_FRED_171:;

//     7    i = x'ab'

  I = 171;

  //     8  %endofprogram

  _imp_stop(0);
  return 0;

case_FRED_dispatch:
  if (FRED_index < 0 || FRED_index > 255)
    _imp_signalf(6, 3, FRED_index, "->FRED(%d) out of bounds at %s line %d", FRED_index, FRED_file, FRED_line);
  goto *FRED[FRED_index - 0];

case_FRED_missing:
  _imp_signalf(8, 2, FRED_index, "switch jump to undefined label FRED(%d): at %s line %d", FRED_index, FRED_file,
               FRED_line);
end_0:;
}