#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 %begin
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 2 %integer i
int I;
// 3 %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};
// 4 i = 'b'
I = 98;
// 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:;
}