#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 %begin
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 2 %switch test1, test2 ( -1 : 1 )
int TEST1_index;
int TEST1_line;
char *TEST1_file;
static const void *TEST1[3] = {&&case_TEST1_missing, &&case_TEST1_0, &&case_TEST1_missing};
int TEST2_index;
int TEST2_line;
char *TEST2_file;
static const void *TEST2[3] = {&&case_TEST2_M1, &&case_TEST2_default, &&case_TEST2_1};
// 3 %integer i = 0
int I;
I = 0;
// 4 test1(0):
case_TEST1_0:;
// 5 ->test2(i)
TEST2_line = __LINE__;
TEST2_file = __FILE__;
TEST2_index = I;
goto case_TEST2_dispatch;
// 6 test2(*):
case_TEST2_default:;
// 7 test2(1):
case_TEST2_1:;
// 8 test2(-1):
case_TEST2_M1:;
// 9 %endofprogram
_imp_stop(0);
return 0;
case_TEST1_dispatch:
if (TEST1_index < -1 || TEST1_index > 1)
_imp_signalf(6, 3, TEST1_index, "->TEST1(%d) out of bounds at %s line %d", TEST1_index, TEST1_file, TEST1_line);
goto *TEST1[TEST1_index - -1];
case_TEST1_missing:
_imp_signalf(8, 2, TEST1_index, "switch jump to undefined label TEST1(%d): at %s line %d", TEST1_index, TEST1_file,
TEST1_line);
case_TEST2_dispatch:
if (TEST2_index < -1 || TEST2_index > 1)
_imp_signalf(6, 3, TEST2_index, "->TEST2(%d) out of bounds at %s line %d", TEST2_index, TEST2_file, TEST2_line);
goto *TEST2[TEST2_index - -1];
end_0:;
}