#include <perms.h>

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

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

  //     2    %switch lab('a':'d')

  int LAB_index;
  int LAB_line;
  char *LAB_file;
  static const void *LAB[4] = {&&case_LAB_97, &&case_LAB_missing, &&case_LAB_99, &&case_LAB_100};

  //     3    %integer i

  int I;

  //     4    i = 'c'

  I = 99;

  //     5    ->lab(i)

  LAB_line = __LINE__;
  LAB_file = __FILE__;
  LAB_index = I;
  goto case_LAB_dispatch;

  //     6  lab('a'):

case_LAB_97:;

//     7  lab('c'):

case_LAB_99:;

//     8  lab('d'): %stop

case_LAB_100:;
  _imp_stop(0);

  //     9  %endofprogram


case_LAB_dispatch:
  if (LAB_index < 97 || LAB_index > 100)
    _imp_signalf(6, 3, LAB_index, "->LAB(%d) out of bounds at %s line %d", LAB_index, LAB_file, LAB_line);
  goto *LAB[LAB_index - 97];

case_LAB_missing:
  _imp_signalf(8, 2, LAB_index, "switch jump to undefined label LAB(%d): at %s line %d", LAB_index, LAB_file, LAB_line);
end_0:;
}