#include <perms.h>

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

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

  //     2    %switch jim(0:3)

  int JIM_index;
  int JIM_line;
  char *JIM_file;
  static const void *JIM[4] = {&&case_JIM_missing, &&case_JIM_missing, &&case_JIM_2, &&case_JIM_missing};

  //     3
  //     4  jim(2):

case_JIM_2:;

//     5    -> fred

  goto U_1000;

  //     6
  //     7  fred:

U_1000:;

//     8    ->jim(2)

  JIM_line = __LINE__;
  JIM_file = __FILE__;
  JIM_index = 2;
  goto case_JIM_dispatch;

  //     9
  //    10  eof:

U_1001:;

//    11  %endofprogram

  _imp_stop(0);
  return 0;

case_JIM_dispatch:
  if (JIM_index < 0 || JIM_index > 3)
    _imp_signalf(6, 3, JIM_index, "->JIM(%d) out of bounds at %s line %d", JIM_index, JIM_file, JIM_line);
  goto *JIM[JIM_index - 0];

case_JIM_missing:
  _imp_signalf(8, 2, JIM_index, "switch jump to undefined label JIM(%d): at %s line %d", JIM_index, JIM_file, JIM_line);
end_0:;
}