#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 %begin
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 2 %switch middle,right,left(1:3)
int MIDDLE_index;
int MIDDLE_line;
char *MIDDLE_file;
static const void *MIDDLE[3] = {&&case_MIDDLE_1, &&case_MIDDLE_2, &&case_MIDDLE_missing};
int RIGHT_index;
int RIGHT_line;
char *RIGHT_file;
static const void *RIGHT[3] = {&&case_RIGHT_1, &&case_RIGHT_2, &&case_RIGHT_3};
int LEFT_index;
int LEFT_line;
char *LEFT_file;
static const void *LEFT[3] = {&&case_LEFT_1, &&case_LEFT_default, &&case_LEFT_default};
// 3
// 4 ->middle(3)
MIDDLE_line = __LINE__;
MIDDLE_file = __FILE__;
MIDDLE_index = 3;
goto case_MIDDLE_dispatch;
// 5
// 6 left(1):
case_LEFT_1:;
// 7 middle(1):
case_MIDDLE_1:;
// 8 middle(2):
case_MIDDLE_2:;
// 9 right(1):
case_RIGHT_1:;
// 10 right(2):
case_RIGHT_2:;
// 11 right(3):
case_RIGHT_3:;
// 12 left(*):
case_LEFT_default:;
// 13
// 14 %endofprogram
_imp_stop(0);
return 0;
case_MIDDLE_dispatch:
if (MIDDLE_index < 1 || MIDDLE_index > 3)
_imp_signalf(6, 3, MIDDLE_index, "->MIDDLE(%d) out of bounds at %s line %d", MIDDLE_index, MIDDLE_file,
MIDDLE_line);
goto *MIDDLE[MIDDLE_index - 1];
case_MIDDLE_missing:
_imp_signalf(8, 2, MIDDLE_index, "switch jump to undefined label MIDDLE(%d): at %s line %d", MIDDLE_index,
MIDDLE_file, MIDDLE_line);
case_RIGHT_dispatch:
if (RIGHT_index < 1 || RIGHT_index > 3)
_imp_signalf(6, 3, RIGHT_index, "->RIGHT(%d) out of bounds at %s line %d", RIGHT_index, RIGHT_file, RIGHT_line);
goto *RIGHT[RIGHT_index - 1];
case_LEFT_dispatch:
if (LEFT_index < 1 || LEFT_index > 3)
_imp_signalf(6, 3, LEFT_index, "->LEFT(%d) out of bounds at %s line %d", LEFT_index, LEFT_file, LEFT_line);
goto *LEFT[LEFT_index - 1];
end_0:;
}