#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 %begin
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 2 %switch toplevel(0:1)
int TOPLEVEL_index;
int TOPLEVEL_line;
char *TOPLEVEL_file;
static const void *TOPLEVEL[2] = {&&case_TOPLEVEL_0, &&case_TOPLEVEL_missing};
// 3 toplevel(0):
case_TOPLEVEL_0:;
// 4 %begin
{ /*%begin*/
// 5
// 6 %routine another
void ANOTHER(void) {
// 7 %switch in a routine(-3:7)
int INAROUTINE_index;
int INAROUTINE_line;
char *INAROUTINE_file;
static const void *INAROUTINE[11] = {
&&case_INAROUTINE_missing, &&case_INAROUTINE_missing, &&case_INAROUTINE_missing, &&case_INAROUTINE_missing,
&&case_INAROUTINE_missing, &&case_INAROUTINE_missing, &&case_INAROUTINE_missing, &&case_INAROUTINE_missing,
&&case_INAROUTINE_missing, &&case_INAROUTINE_missing, &&case_INAROUTINE_missing};
// 8
// 9 ->in a routine (-1)
INAROUTINE_line = __LINE__;
INAROUTINE_file = __FILE__;
INAROUTINE_index = -1;
goto case_INAROUTINE_dispatch;
// 10
// 11 in a routine(5):
case_INAROUTINE_5:;
// 12 %end
return;
case_INAROUTINE_dispatch:
if (INAROUTINE_index < -3 || INAROUTINE_index > 7)
_imp_signalf(6, 3, INAROUTINE_index, "->INAROUTINE(%d) out of bounds at %s line %d", INAROUTINE_index,
INAROUTINE_file, INAROUTINE_line);
goto *INAROUTINE[INAROUTINE_index - -3];
case_INAROUTINE_missing:
_imp_signalf(8, 2, INAROUTINE_index, "switch jump to undefined label INAROUTINE(%d): at %s line %d",
INAROUTINE_index, INAROUTINE_file, INAROUTINE_line);
} /* end of ANOTHER */
// 13
// 14 %switch sw(0:9)
int SW_index;
int SW_line;
char *SW_file;
static const void *SW[10] = {&&case_SW_missing, &&case_SW_missing, &&case_SW_missing, &&case_SW_missing,
&&case_SW_4, &&case_SW_missing, &&case_SW_missing, &&case_SW_missing,
&&case_SW_missing, &&case_SW_missing};
// 15
// 16 ->sw(34)
SW_line = __LINE__;
SW_file = __FILE__;
SW_index = 34;
goto case_SW_dispatch;
// 17
// 18 sw(4):
case_SW_4:;
// 19 %stop
_imp_stop(0);
// 20 %end
case_SW_dispatch:
if (SW_index < 0 || SW_index > 9)
_imp_signalf(6, 3, SW_index, "->SW(%d) out of bounds at %s line %d", SW_index, SW_file, SW_line);
goto *SW[SW_index - 0];
case_SW_missing:
_imp_signalf(8, 2, SW_index, "switch jump to undefined label SW(%d): at %s line %d", SW_index, SW_file, SW_line);
end_1000:;
}
// ?ANOTHER unused
// 21
// 22 %endofprogram
_imp_stop(0);
return 0;
case_TOPLEVEL_dispatch:
if (TOPLEVEL_index < 0 || TOPLEVEL_index > 1)
_imp_signalf(6, 3, TOPLEVEL_index, "->TOPLEVEL(%d) out of bounds at %s line %d", TOPLEVEL_index, TOPLEVEL_file,
TOPLEVEL_line);
goto *TOPLEVEL[TOPLEVEL_index - 0];
case_TOPLEVEL_missing:
_imp_signalf(8, 2, TOPLEVEL_index, "switch jump to undefined label TOPLEVEL(%d): at %s line %d", TOPLEVEL_index,
TOPLEVEL_file, TOPLEVEL_line);
end_0:;
}