home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / sa104os2.zip / SATHR104.ZIP / SATHER / BOOT / CS.COD / CODE5.C < prev    next >
C/C++ Source or Header  |  1995-02-15  |  290KB  |  10,241 lines

  1. /* C code generated by Sather 1.0 compiler */
  2.  
  3. #include "sather.h"
  4.  
  5. #include "strings.h"
  6.  
  7.  
  8.  
  9.  
  10. BOOL TRANS_is_array_s(TRANS self, SIG s_6017) {
  11.  BOOL noname6018 = ((BOOL) 0);
  12.  TP stp;
  13.  BOOL local0;
  14.  INT local1;
  15.  BOOL local2;
  16.  if ((s_6017==((SIG) NULL))) {
  17.   return FALSE;
  18.  }
  19.  stp = s_6017->tp;
  20.  if (stp==NULL) {
  21.  } else
  22.  switch (stp->header.tag) {
  23.   case TP_CLASS_tag:
  24.    if (IDENT_is_neq_IDE(((TP_CLASS) stp)->name_19, self->prog->ident_builtin->AREF_ident)) {
  25.     local0 = IDENT_is_neq_IDE(((TP_CLASS) stp)->name_19, self->prog->ident_builtin->AVAL_ident);
  26.    } else {
  27.     local0 = FALSE;
  28.    }
  29.    if (local0) {
  30.     return FALSE;
  31.    }
  32.    if ((((TP_CLASS) stp)->params==((ARRAYTP) NULL))) {
  33.     return FALSE;
  34.    }
  35.    local1 = ARRAYTP_size_INT(((TP_CLASS) stp)->params);
  36.    if ((local1!=1)) {
  37.     return FALSE;
  38.    }
  39.    if (IDENT_is_neq_IDE(s_6017->name_19, self->prog->ident_builtin->aget_ident)) {
  40.     local2 = IDENT_is_neq_IDE(s_6017->name_19, self->prog->ident_builtin->aset_ident);
  41.    } else {
  42.     local2 = FALSE;
  43.    }
  44.    if (local2) {
  45.     return FALSE;
  46.    }
  47.    return TRUE; break;
  48.   default: ;
  49.  }
  50.  return FALSE;
  51. }
  52.  
  53.  
  54. AM_ARR_EXPR AM_ARR_EXPR_crea(AM_ARR_EXPR self, SFILE_ID source_6019) {
  55.  AM_ARR_EXPR noname6020;
  56.  AM_ARR_EXPR r_6021;
  57.  AM_ARR_EXPR local0;
  58.  local0 = ((AM_ARR_EXPR) sbi_alloc(sizeof(struct AM_ARR_EXPR_struct), AM_ARR_EXPR_tag));
  59.  r_6021 = local0;
  60.  r_6021->source_38 = source_6019;
  61.  return r_6021;
  62. }
  63.  
  64.  
  65. AM_VARR_ASSIGN_EXPR AM_VARR_ASSIGN_E_6022(AM_VARR_ASSIGN_EXPR self, SFILE_ID source_6023) {
  66.  AM_VARR_ASSIGN_EXPR noname6024;
  67.  AM_VARR_ASSIGN_EXPR r_6025;
  68.  AM_VARR_ASSIGN_EXPR local0;
  69.  local0 = ((AM_VARR_ASSIGN_EXPR) sbi_alloc(sizeof(struct AM_VARR_ASSIGN_EXPR_struct), AM_VARR_ASSIGN_EXPR_tag));
  70.  r_6025 = local0;
  71.  r_6025->source_38 = source_6023;
  72.  return r_6025;
  73. }
  74.  
  75.  
  76. AM_STMT TRANS_transform__6026(TRANS self, ELT e_6027) {
  77.  AM_STMT noname6028;
  78.  TP est;
  79.  TP_CLASS stp = ((TP_CLASS) NULL);
  80.  AM_RETURN_STMT r_6029;
  81.  AM_ARR_EXPR aae;
  82.  AM_ASSIGN_STMT r_6030;
  83.  AM_ARR_EXPR aae_6031;
  84.  AM_RETURN_STMT r_6032;
  85.  AM_ARR_EXPR aae_6033;
  86.  AM_RETURN_STMT r_6034;
  87.  AM_VARR_ASSIGN_EXPR avae;
  88.  AM_RETURN_STMT local0;
  89.  TR_CLASS_ELT local1;
  90.  AM_ARR_EXPR local2;
  91.  TR_CLASS_ELT local3;
  92.  AM_ASSIGN_STMT local4;
  93.  TR_CLASS_ELT local5;
  94.  AM_ARR_EXPR local6;
  95.  TR_CLASS_ELT local7;
  96.  AM_RETURN_STMT local8;
  97.  TR_CLASS_ELT local9;
  98.  AM_ARR_EXPR local10;
  99.  TR_CLASS_ELT local11;
  100.  AM_RETURN_STMT local12;
  101.  TR_CLASS_ELT local13;
  102.  AM_VARR_ASSIGN_EXPR local14;
  103.  TR_CLASS_ELT local15;
  104.  est = e_6027->srcsig->tp;
  105.  if (est==NULL) {
  106.  } else
  107.  switch (est->header.tag) {
  108.   case TP_CLASS_tag:
  109.    stp = ((TP_CLASS) est); break;
  110.   default: ;
  111.    fprintf(stderr,"No applicable type in typecase ./trans.sa:337:14\n");
  112.    exit(16);
  113.  }
  114.  if (IDENT_is_eq_IDEN(stp->name_19, self->prog->ident_builtin->AREF_ident)) {
  115.   if (IDENT_is_eq_IDEN(e_6027->srcsig->name_19, self->prog->ident_builtin->aget_ident)) {
  116.    local0 = ((AM_RETURN_STMT) NULL);
  117.    local1 = e_6027->tr;
  118.    r_6029 = AM_RETURN_STMT_c(local0, (*TR_CLASS_ELT_sou[local1->header.tag+TR_CLASS_ELT_sou_offset])(local1));
  119.    local2 = ((AM_ARR_EXPR) NULL);
  120.    local3 = e_6027->tr;
  121.    aae = AM_ARR_EXPR_crea(local2, (*TR_CLASS_ELT_sou[local3->header.tag+TR_CLASS_ELT_sou_offset])(local3));
  122.    aae->ob = ((AM_EXPR) AM_ROUT_DEF_aget(self->cur_rout, 0));
  123.    aae->ind = ((AM_EXPR) AM_ROUT_DEF_aget(self->cur_rout, 1));
  124.    aae->tp_at = ARRAYTP_aget_INT_TP(stp->params, 0);
  125.    r_6029->val_16 = ((AM_EXPR) aae);
  126.    return ((AM_STMT) r_6029);
  127.   }
  128.   else {
  129.    local4 = ((AM_ASSIGN_STMT) NULL);
  130.    local5 = e_6027->tr;
  131.    r_6030 = AM_ASSIGN_STMT_c(local4, (*TR_CLASS_ELT_sou[local5->header.tag+TR_CLASS_ELT_sou_offset])(local5));
  132.    local6 = ((AM_ARR_EXPR) NULL);
  133.    local7 = e_6027->tr;
  134.    aae_6031 = AM_ARR_EXPR_crea(local6, (*TR_CLASS_ELT_sou[local7->header.tag+TR_CLASS_ELT_sou_offset])(local7));
  135.    aae_6031->ob = ((AM_EXPR) AM_ROUT_DEF_aget(self->cur_rout, 0));
  136.    aae_6031->ind = ((AM_EXPR) AM_ROUT_DEF_aget(self->cur_rout, 1));
  137.    aae_6031->tp_at = ARRAYTP_aget_INT_TP(stp->params, 0);
  138.    r_6030->dest = ((AM_EXPR) aae_6031);
  139.    r_6030->src_42 = ((AM_EXPR) AM_ROUT_DEF_aget(self->cur_rout, 2));
  140.    return ((AM_STMT) r_6030);
  141.   }
  142.  }
  143.  if (IDENT_is_eq_IDEN(e_6027->srcsig->name_19, self->prog->ident_builtin->aget_ident)) {
  144.   local8 = ((AM_RETURN_STMT) NULL);
  145.   local9 = e_6027->tr;
  146.   r_6032 = AM_RETURN_STMT_c(local8, (*TR_CLASS_ELT_sou[local9->header.tag+TR_CLASS_ELT_sou_offset])(local9));
  147.   local10 = ((AM_ARR_EXPR) NULL);
  148.   local11 = e_6027->tr;
  149.   aae_6033 = AM_ARR_EXPR_crea(local10, (*TR_CLASS_ELT_sou[local11->header.tag+TR_CLASS_ELT_sou_offset])(local11));
  150.   aae_6033->ob = ((AM_EXPR) AM_ROUT_DEF_aget(self->cur_rout, 0));
  151.   aae_6033->ind = ((AM_EXPR) AM_ROUT_DEF_aget(self->cur_rout, 1));
  152.   aae_6033->tp_at = ARRAYTP_aget_INT_TP(stp->params, 0);
  153.   r_6032->val_16 = ((AM_EXPR) aae_6033);
  154.   return ((AM_STMT) r_6032);
  155.  }
  156.  local12 = ((AM_RETURN_STMT) NULL);
  157.  local13 = e_6027->tr;
  158.  r_6034 = AM_RETURN_STMT_c(local12, (*TR_CLASS_ELT_sou[local13->header.tag+TR_CLASS_ELT_sou_offset])(local13));
  159.  local14 = ((AM_VARR_ASSIGN_EXPR) NULL);
  160.  local15 = e_6027->tr;
  161.  avae = AM_VARR_ASSIGN_E_6022(local14, (*TR_CLASS_ELT_sou[local15->header.tag+TR_CLASS_ELT_sou_offset])(local15));
  162.  avae->ob = ((AM_EXPR) AM_ROUT_DEF_aget(self->cur_rout, 0));
  163.  avae->ind = ((AM_EXPR) AM_ROUT_DEF_aget(self->cur_rout, 1));
  164.  avae->val_16 = ((AM_EXPR) AM_ROUT_DEF_aget(self->cur_rout, 2));
  165.  r_6034->val_16 = ((AM_EXPR) avae);
  166.  return ((AM_STMT) r_6034);
  167. }
  168.  
  169.  
  170. AM_STMT TRANS_transform__6035(TRANS self, TR_DEC_STMT s_6036) {
  171.  AM_STMT noname6037;
  172.  AM_LOCAL_EXPR l;
  173.  PROG local0;
  174.  STR local1;
  175.  STR local2;
  176.  TP local3;
  177.  STR local4;
  178.  AM_LOCAL_EXPR local5;
  179.  SFILE_ID local6;
  180.  IDENT local7;
  181.  l = TRANS_local_with(self, s_6036->name_19);
  182.  PROG_err_loc_PRO(self->prog, ((PROG_ERR) s_6036));
  183.  if ((!((l==((AM_LOCAL_EXPR) NULL))))) {
  184.   local0 = self->prog;
  185.   local1 = STR_plus_STR_STR(((STR) &Thislocalvariabl), l->name_19.str_4);
  186.   local2 = STR_plus_STR_STR(local1, ((STR) &name_6038));
  187.   local3 = l->tp_at;
  188.   local4 = STR_plus_STR_STR(local2, (*TP_str_STR[local3->header.tag+TP_str_STR_offset])(local3));
  189.   PROG_err_STR(local0, STR_plus_STR_STR(local4, ((STR) &whichhasthesamename)));
  190.   return ((AM_STMT) NULL);
  191.  }
  192.  local5 = ((AM_LOCAL_EXPR) NULL);
  193.  local6 = s_6036->source_38;
  194.  local7 = s_6036->name_19;
  195.  l = AM_LOCAL_EXPR_cr(local5, local6, local7, TRANS_tp_of_TR_T(self, s_6036->tp));
  196.  l->needs_init = TRUE;
  197.  TRANS_add_local_(self, l);
  198.  return ((AM_STMT) NULL);
  199. }
  200.  
  201.  
  202. AM_STMT TRANS_transform__6039(TRANS self, TR_ASSIGN_STMT s_6040) {
  203.  AM_STMT noname6041;
  204.  AM_LOCAL_EXPR l;
  205.  AM_ASSIGN_STMT r_6042 = ((AM_ASSIGN_STMT) NULL);
  206.  TR_EXPR rhs_6043;
  207.  BOOL local0;
  208.  PROG local1;
  209.  STR local2;
  210.  STR local3;
  211.  TP local4;
  212.  STR local5;
  213.  AM_EXPR local6;
  214.  if ((s_6040==((TR_ASSIGN_STMT) NULL))) {
  215.   local0 = TRUE;
  216.  } else {
  217.   local0 = (s_6040->lhs_expr==((TR_EXPR) NULL));
  218.  }
  219.  if (!(local0)) {
  220.   fprintf(stderr,"Violation of precondition ./trans.sa:477:28\n");
  221.   exit(16);
  222.  }
  223.  if ((s_6040==((TR_ASSIGN_STMT) NULL))) {
  224.   return ((AM_STMT) NULL);
  225.  }
  226.  l = TRANS_local_with(self, s_6040->name_19);
  227.  PROG_err_loc_PRO(self->prog, ((PROG_ERR) s_6040));
  228.  if ((!((l==((AM_LOCAL_EXPR) NULL))))) {
  229.   local1 = self->prog;
  230.   local2 = STR_plus_STR_STR(((STR) &Thislocalvariabl_6044), l->name_19.str_4);
  231.   local3 = STR_plus_STR_STR(local2, ((STR) &name_6045));
  232.   local4 = l->tp_at;
  233.   local5 = STR_plus_STR_STR(local3, (*TP_str_STR[local4->header.tag+TP_str_STR_offset])(local4));
  234.   PROG_err_STR(local1, STR_plus_STR_STR(local5, ((STR) &whichhasthesamen_6046)));
  235.   return ((AM_STMT) NULL);
  236.  }
  237.  l = AM_LOCAL_EXPR_cr(((AM_LOCAL_EXPR) NULL), s_6040->source_38, s_6040->name_19, ((TP) NULL));
  238.  if (self->in_protect_body) {
  239.   l->is_volatile = TRUE;
  240.  }
  241.  if ((!((s_6040->tp==((TR_TYPE_SPEC) NULL))))) {
  242.   l->tp_at = TRANS_tp_of_TR_T(self, s_6040->tp);
  243.   if ((l->tp_at==((TP) NULL))) {
  244.    PROG_err_loc_PRO(self->prog, ((PROG_ERR) s_6040));
  245.    PROG_err_STR(self->prog, ((STR) &CompilererrorTRA_6047));
  246.    return ((AM_STMT) NULL);
  247.   }
  248.   TRANS_add_local_(self, l);
  249.   r_6042 = AM_ASSIGN_STMT_c(((AM_ASSIGN_STMT) NULL), s_6040->source_38);
  250.   r_6042->dest = ((AM_EXPR) l);
  251.   r_6042->src_42 = TRANS_transform__5198(self, s_6040->rhs, l->tp_at);
  252.   if ((r_6042->src_42==((AM_EXPR) NULL))) {
  253.    return ((AM_STMT) NULL);
  254.   }
  255.   return ((AM_STMT) r_6042);
  256.  }
  257.  rhs_6043 = s_6040->rhs;
  258.  PROG_err_loc_PRO(self->prog, ((PROG_ERR) s_6040->rhs));
  259.  if (rhs_6043==NULL) {
  260.  } else
  261.  switch (rhs_6043->header.tag) {
  262.   case TR_VOID_EXPR_tag:
  263.    PROG_err_STR(self->prog, ((STR) &Therighthandside));
  264.    return ((AM_STMT) NULL); break;
  265.   case TR_CREATE_EXPR_tag:
  266.    if ((((TR_CREATE_EXPR) rhs_6043)->tp==((TR_TYPE_SPEC) NULL))) {
  267.     PROG_err_STR(self->prog, ((STR) &Creationexpressi_6048));
  268.     return ((AM_STMT) NULL);
  269.    } break;
  270.   case TR_ARRAY_EXPR_tag:
  271.    PROG_err_STR(self->prog, ((STR) &Therighthandside_6049));
  272.    return ((AM_STMT) NULL); break;
  273.   default: ;
  274.  }
  275.  r_6042 = AM_ASSIGN_STMT_c(((AM_ASSIGN_STMT) NULL), s_6040->source_38);
  276.  r_6042->dest = ((AM_EXPR) l);
  277.  r_6042->src_42 = TRANS_transform__5198(self, s_6040->rhs, ((TP) NULL));
  278.  if ((r_6042->src_42==((AM_EXPR) NULL))) {
  279.   l->tp_at = ((TP) self->prog->tp_builtin->dollar_ob);
  280.   TRANS_add_local_(self, l);
  281.   return ((AM_STMT) NULL);
  282.  }
  283.  local6 = r_6042->src_42;
  284.  l->tp_at = (*AM_EXPR_tp_TP[local6->header.tag+AM_EXPR_tp_TP_offset])(local6);
  285.  TRANS_add_local_(self, l);
  286.  return ((AM_STMT) r_6042);
  287. }
  288.  
  289.  
  290. AM_EXPR_STMT AM_EXPR_STMT_cre(AM_EXPR_STMT self, SFILE_ID source_6050) {
  291.  AM_EXPR_STMT noname6051;
  292.  AM_EXPR_STMT r_6052;
  293.  AM_EXPR_STMT local0;
  294.  local0 = ((AM_EXPR_STMT) sbi_alloc(sizeof(struct AM_EXPR_STMT_struct), AM_EXPR_STMT_tag));
  295.  r_6052 = local0;
  296.  r_6052->source_38 = source_6050;
  297.  return r_6052;
  298. }
  299.  
  300.  
  301. AM_STMT TRANS_transform__6053(TRANS self, TR_CALL_EXPR l, TR_ASSIGN_STMT s_6054) {
  302.  AM_STMT noname6055;
  303.  AM_EXPR_STMT r_6056;
  304.  TR_EXPR lst;
  305.  TR_EXPR local0;
  306.  TR_EXPR local1;
  307.  TR_EXPR local2;
  308.  TR_EXPR local3;
  309.  if (!(((l->is_array)==(TRUE)))) {
  310.   fprintf(stderr,"Violation of precondition ./trans.sa:524:30\n");
  311.   exit(16);
  312.  }
  313.  r_6056 = AM_EXPR_STMT_cre(((AM_EXPR_STMT) NULL), l->source_38);
  314.  l->name_19 = self->prog->ident_builtin->aset_ident;
  315.  l->is_array = FALSE;
  316.  if ((l->args_7==((TR_EXPR) NULL))) {
  317.   l->args_7 = s_6054->rhs;
  318.   r_6056->expr = TRANS_transform__5492(self, l, ((TP) NULL), FALSE);
  319.   l->args_7 = ((TR_EXPR) NULL);
  320.  }
  321.  else {
  322.   lst = l->args_7;
  323.   while (1) {
  324.    local0 = lst;
  325.    if (((*TR_EXPR_next_TR_EXPR[local0->header.tag+TR_EXPR_next_TR_EXPR_offset])(local0)==((TR_EXPR) NULL))) {
  326.     goto after_loop;
  327.    }
  328.    local1 = lst;
  329.    lst = (*TR_EXPR_next_TR_EXPR[local1->header.tag+TR_EXPR_next_TR_EXPR_offset])(local1);
  330.   }
  331.   after_loop: ;
  332.   local2 = lst;
  333.   (*TR_EXPR_next_TR__6058[local2->header.tag+TR_EXPR_next_TR__6058_offset])(local2, s_6054->rhs);
  334.   r_6056->expr = TRANS_transform__5492(self, l, ((TP) NULL), FALSE);
  335.   local3 = lst;
  336.   (*TR_EXPR_next_TR__6058[local3->header.tag+TR_EXPR_next_TR__6058_offset])(local3, ((TR_EXPR) NULL));
  337.  }
  338.  l->name_19 = IDENT_zero;
  339.  l->is_array = TRUE;
  340.  return ((AM_STMT) r_6056);
  341. }
  342.  
  343.  
  344. AM_STMT TRANS_transform__6059(TRANS self, AM_LOCAL_EXPR loc_6060, TR_ASSIGN_STMT s_6061) {
  345.  AM_STMT noname6062;
  346.  AM_ASSIGN_STMT r_6063;
  347.  if (loc_6060->no_assign) {
  348.   PROG_err_loc_PRO(self->prog, ((PROG_ERR) s_6061));
  349.   PROG_err_STR(self->prog, ((STR) &Itisillegaltoass));
  350.   return ((AM_STMT) NULL);
  351.  }
  352.  r_6063 = AM_ASSIGN_STMT_c(((AM_ASSIGN_STMT) NULL), s_6061->source_38);
  353.  r_6063->dest = ((AM_EXPR) loc_6060);
  354.  if (self->in_protect_body) {
  355.   loc_6060->is_volatile = TRUE;
  356.  }
  357.  r_6063->src_42 = TRANS_transform__5198(self, s_6061->rhs, loc_6060->tp_at);
  358.  if ((r_6063->src_42==((AM_EXPR) NULL))) {
  359.   return ((AM_STMT) NULL);
  360.  }
  361.  return ((AM_STMT) r_6063);
  362. }
  363.  
  364.  
  365. AM_STMT TRANS_transform__6064(TRANS self, TR_CALL_EXPR l, TR_ASSIGN_STMT s_6065) {
  366.  AM_STMT noname6066;
  367.  AM_LOCAL_EXPR loc_6067;
  368.  AM_EXPR_STMT r_6068;
  369.  BOOL local0;
  370.  if (!(((l->is_array)==(FALSE)))) {
  371.   fprintf(stderr,"Violation of precondition ./trans.sa:547:29\n");
  372.   exit(16);
  373.  }
  374.  if ((!((l->args_7==((TR_EXPR) NULL))))) {
  375.   PROG_err_loc_PRO(self->prog, ((PROG_ERR) l));
  376.   PROG_err_STR(self->prog, ((STR) &Itisillegaltoass_6069));
  377.   return ((AM_STMT) NULL);
  378.  }
  379.  if ((l->ob==((TR_EXPR) NULL))) {
  380.   local0 = (l->tp==((TR_TYPE_SPEC) NULL));
  381.  } else {
  382.   local0 = FALSE;
  383.  }
  384.  if (local0) {
  385.   loc_6067 = TRANS_local_with(self, l->name_19);
  386.   if ((!((loc_6067==((AM_LOCAL_EXPR) NULL))))) {
  387.    return TRANS_transform__6059(self, loc_6067, s_6065);
  388.   }
  389.  }
  390.  l->args_7 = s_6065->rhs;
  391.  r_6068 = AM_EXPR_STMT_cre(((AM_EXPR_STMT) NULL), l->source_38);
  392.  r_6068->expr = TRANS_transform__5492(self, l, ((TP) NULL), FALSE);
  393.  l->args_7 = ((TR_EXPR) NULL);
  394.  return ((AM_STMT) r_6068);
  395. }
  396.  
  397.  
  398. AM_STMT TRANS_transform__6070(TRANS self, TR_ASSIGN_STMT s_6071) {
  399.  AM_STMT noname6072;
  400.  TR_EXPR lhs_6073;
  401.  if ((s_6071->lhs_expr==((TR_EXPR) NULL))) {
  402.   return TRANS_transform__6039(self, s_6071);
  403.  }
  404.  lhs_6073 = s_6071->lhs_expr;
  405.  PROG_err_loc_PRO(self->prog, ((PROG_ERR) lhs_6073));
  406.  if (lhs_6073==NULL) {
  407.  } else
  408.  switch (lhs_6073->header.tag) {
  409.   case TR_CALL_EXPR_tag:
  410.    if (((TR_CALL_EXPR) lhs_6073)->is_array) {
  411.     return TRANS_transform__6053(self, ((TR_CALL_EXPR) lhs_6073), s_6071);
  412.    }
  413.    else {
  414.     return TRANS_transform__6064(self, ((TR_CALL_EXPR) lhs_6073), s_6071);
  415.    } break;
  416.   case TR_SELF_EXPR_tag:
  417.    PROG_err_STR(self->prog, ((STR) &Itisillegaltoass_6074)); break;
  418.   case TR_VOID_EXPR_tag:
  419.    PROG_err_STR(self->prog, ((STR) &Itisillegaltoass_6075)); break;
  420.   case TR_IS_VOID_EXPR_tag:
  421.    PROG_err_STR(self->prog, ((STR) &Itisillegaltoass_6076)); break;
  422.   case TR_ARRAY_EXPR_tag:
  423.    PROG_err_STR(self->prog, ((STR) &Itisillegaltoass_6077)); break;
  424.   case TR_CREATE_EXPR_tag:
  425.    PROG_err_STR(self->prog, ((STR) &Itisillegaltoass_6078)); break;
  426.   case TR_BOUND_CREATE_EXPR_tag:
  427.    PROG_err_STR(self->prog, ((STR) &Itisillegaltoass_6079)); break;
  428.   case TR_AND_EXPR_tag:
  429.    PROG_err_STR(self->prog, ((STR) &Itisillegaltoass_6080)); break;
  430.   case TR_OR_EXPR_tag:
  431.    PROG_err_STR(self->prog, ((STR) &Itisillegaltoass_6081)); break;
  432.   case TR_EXCEPT_EXPR_tag:
  433.    PROG_err_STR(self->prog, ((STR) &Itisillegaltoass_6082)); break;
  434.   case TR_NEW_EXPR_tag:
  435.    PROG_err_STR(self->prog, ((STR) &Itisillegaltoass_6083)); break;
  436.   case TR_INITIAL_EXPR_tag:
  437.    PROG_err_STR(self->prog, ((STR) &Itisillegaltoass_6084)); break;
  438.   case TR_BREAK_EXPR_tag:
  439.    PROG_err_STR(self->prog, ((STR) &Itisillegaltoass_6085)); break;
  440.   case TR_RESULT_EXPR_tag:
  441.    PROG_err_STR(self->prog, ((STR) &Itisillegaltoass_6086)); break;
  442.   case TR_BOOL_LIT_EXPR_tag:
  443.    PROG_err_STR(self->prog, ((STR) &Itisillegaltoass_6087)); break;
  444.   case TR_CHAR_LIT_EXPR_tag:
  445.    PROG_err_STR(self->prog, ((STR) &Itisillegaltoass_6088)); break;
  446.   case TR_STR_LIT_EXPR_tag:
  447.    PROG_err_STR(self->prog, ((STR) &Itisillegaltoass_6089)); break;
  448.   case TR_INT_LIT_EXPR_tag:
  449.    PROG_err_STR(self->prog, ((STR) &Itisillegaltoass_6090)); break;
  450.   case TR_FLT_LIT_EXPR_tag:
  451.    PROG_err_STR(self->prog, ((STR) &Itisillegaltoass_6091)); break;
  452.   default: ;
  453.    fprintf(stderr,"No applicable type in typecase ./trans.sa:433:14\n");
  454.    exit(16);
  455.  }
  456.  return ((AM_STMT) NULL);
  457. }
  458.  
  459.  
  460. AM_IF_STMT AM_IF_STMT_creat(AM_IF_STMT self, SFILE_ID source_6092) {
  461.  AM_IF_STMT noname6093;
  462.  AM_IF_STMT r_6094;
  463.  AM_IF_STMT local0;
  464.  local0 = ((AM_IF_STMT) sbi_alloc(sizeof(struct AM_IF_STMT_struct), AM_IF_STMT_tag));
  465.  r_6094 = local0;
  466.  r_6094->source_38 = source_6092;
  467.  return r_6094;
  468. }
  469.  
  470.  
  471. AM_STMT TRANS_transform__6095(TRANS self, TR_IF_STMT s_6096) {
  472.  AM_STMT noname6097;
  473.  AM_IF_STMT r_6098;
  474.  r_6098 = AM_IF_STMT_creat(((AM_IF_STMT) NULL), s_6096->source_38);
  475.  r_6098->test_40 = TRANS_transform__5198(self, s_6096->test_40, ((TP) self->prog->tp_builtin->bool_2));
  476.  if ((r_6098->test_40==((AM_EXPR) NULL))) {
  477.   return ((AM_STMT) NULL);
  478.  }
  479.  r_6098->if_true = TRANS_transform__6099(self, s_6096->then_part);
  480.  r_6098->if_false = TRANS_transform__6099(self, s_6096->else_part);
  481.  return ((AM_STMT) r_6098);
  482. }
  483.  
  484.  
  485. AM_LOOP_STMT AM_LOOP_STMT_cre(AM_LOOP_STMT self, SFILE_ID source_6100) {
  486.  AM_LOOP_STMT noname6101;
  487.  AM_LOOP_STMT r_6102;
  488.  AM_LOOP_STMT local0;
  489.  local0 = ((AM_LOOP_STMT) sbi_alloc(sizeof(struct AM_LOOP_STMT_struct), AM_LOOP_STMT_tag));
  490.  r_6102 = local0;
  491.  r_6102->source_38 = source_6100;
  492.  return r_6102;
  493. }
  494.  
  495.  
  496. AM_STMT TRANS_transform__6103(TRANS self, TR_LOOP_STMT s_6104) {
  497.  AM_STMT noname6105;
  498.  AM_LOOP_STMT ol;
  499.  AM_LOOP_STMT r_6106;
  500.  BOOL local0;
  501.  BOOL local1;
  502.  ol = self->cur_loop;
  503.  r_6106 = AM_LOOP_STMT_cre(((AM_LOOP_STMT) NULL), s_6104->source_38);
  504.  self->cur_loop = r_6106;
  505.  r_6106->body = TRANS_transform__6099(self, s_6104->body);
  506.  if ((!((ol==((AM_LOOP_STMT) NULL))))) {
  507.   local0 = (!((r_6106==((AM_LOOP_STMT) NULL))));
  508.  } else {
  509.   local0 = FALSE;
  510.  }
  511.  if (local0) {
  512.   if (ol->has_yield) {
  513.    local1 = TRUE;
  514.   } else {
  515.    local1 = r_6106->has_yield;
  516.   }
  517.   ol->has_yield = local1;
  518.  }
  519.  self->cur_loop = ol;
  520.  return ((AM_STMT) r_6106);
  521. }
  522.  
  523.  
  524. BOOL TRANS_is_iter_BOOL(TRANS self) {
  525.  BOOL noname6107 = ((BOOL) 0);
  526.  if ((self->cur_rout==((AM_ROUT_DEF) NULL))) {
  527.   return FALSE;
  528.  }
  529.  return AM_ROUT_DEF_is_i(self->cur_rout);
  530. }
  531.  
  532.  
  533. void TRANS_return_in_(TRANS self, TR_RETURN_STMT s_6108) {
  534.  PROG_err_loc_PRO(self->prog, ((PROG_ERR) s_6108));
  535.  PROG_err_STR(self->prog, ((STR) &returnstatements));
  536. }
  537.  
  538.  
  539. void TRANS_stmts_afte(TRANS self, TR_RETURN_STMT s_6109) {
  540.  PROG_err_loc_PRO(self->prog, ((PROG_ERR) s_6109));
  541.  PROG_err_STR(self->prog, ((STR) &Nostatementsmayf));
  542. }
  543.  
  544.  
  545. void TRANS_missing_re(TRANS self, TR_RETURN_STMT s_6110, TP tp_6111) {
  546.  PROG local0;
  547.  STR local1;
  548.  TP local2;
  549.  STR local3;
  550.  PROG_err_loc_PRO(self->prog, ((PROG_ERR) s_6110));
  551.  local0 = self->prog;
  552.  local1 = ((STR) &Areturnvalueoftype);
  553.  local2 = tp_6111;
  554.  local3 = STR_plus_STR_STR(local1, (*TP_str_STR[local2->header.tag+TP_str_STR_offset])(local2));
  555.  PROG_err_STR(local0, STR_plus_STR_STR(local3, ((STR) &mustbespecified)));
  556. }
  557.  
  558.  
  559. void TRANS_extra_retu(TRANS self, TR_RETURN_STMT s_6112, SIG sig_6113) {
  560.  PROG local0;
  561.  STR local1;
  562.  STR local2;
  563.  PROG_err_loc_PRO(self->prog, ((PROG_ERR) s_6112));
  564.  local0 = self->prog;
  565.  local1 = ((STR) &Noreturnvaluesho);
  566.  local2 = STR_plus_STR_STR(local1, SIG_str_STR(sig_6113));
  567.  PROG_err_STR(local0, STR_plus_STR_STR(local2, ((STR) &name_6114)));
  568. }
  569.  
  570.  
  571. AM_STMT TRANS_transform__6115(TRANS self, TR_RETURN_STMT s_6116) {
  572.  AM_STMT noname6117;
  573.  TP rtp;
  574.  AM_RETURN_STMT r_6118;
  575.  if (TRANS_is_iter_BOOL(self)) {
  576.   TRANS_return_in_(self, s_6116);
  577.   return ((AM_STMT) NULL);
  578.  }
  579.  if ((!((s_6116->next_8==((TR_STMT) NULL))))) {
  580.   TRANS_stmts_afte(self, s_6116);
  581.  }
  582.  rtp = self->cur_rout->sig_6->ret;
  583.  if ((s_6116->val_16==((TR_EXPR) NULL))) {
  584.   if ((!((rtp==((TP) NULL))))) {
  585.    TRANS_missing_re(self, s_6116, rtp);
  586.    return ((AM_STMT) NULL);
  587.   }
  588.   return ((AM_STMT) AM_RETURN_STMT_c(((AM_RETURN_STMT) NULL), s_6116->source_38));
  589.  }
  590.  if ((rtp==((TP) NULL))) {
  591.   TRANS_extra_retu(self, s_6116, self->cur_rout->sig_6);
  592.   return ((AM_STMT) NULL);
  593.  }
  594.  r_6118 = AM_RETURN_STMT_c(((AM_RETURN_STMT) NULL), s_6116->source_38);
  595.  r_6118->val_16 = TRANS_transform__5198(self, s_6116->val_16, rtp);
  596.  if ((r_6118->val_16==((AM_EXPR) NULL))) {
  597.   return ((AM_STMT) NULL);
  598.  }
  599.  return ((AM_STMT) r_6118);
  600. }
  601.  
  602.  
  603. void TRANS_yield_in_r(TRANS self, TR_YIELD_STMT s_6119) {
  604.  PROG_err_loc_PRO(self->prog, ((PROG_ERR) s_6119));
  605.  PROG_err_STR(self->prog, ((STR) &yieldstatementsm));
  606. }
  607.  
  608.  
  609. void TRANS_missing_yi(TRANS self, TR_YIELD_STMT s_6120, TP tp_6121) {
  610.  PROG local0;
  611.  STR local1;
  612.  TP local2;
  613.  STR local3;
  614.  PROG_err_loc_PRO(self->prog, ((PROG_ERR) s_6120));
  615.  local0 = self->prog;
  616.  local1 = ((STR) &Ayieldvalueoftype);
  617.  local2 = tp_6121;
  618.  local3 = STR_plus_STR_STR(local1, (*TP_str_STR[local2->header.tag+TP_str_STR_offset])(local2));
  619.  PROG_err_STR(local0, STR_plus_STR_STR(local3, ((STR) &mustbespecified_6122)));
  620. }
  621.  
  622.  
  623. AM_YIELD_STMT AM_YIELD_STMT_cr(AM_YIELD_STMT self, SFILE_ID source_6123) {
  624.  AM_YIELD_STMT noname6124;
  625.  AM_YIELD_STMT r_6125;
  626.  AM_YIELD_STMT local0;
  627.  local0 = ((AM_YIELD_STMT) sbi_alloc(sizeof(struct AM_YIELD_STMT_struct), AM_YIELD_STMT_tag));
  628.  r_6125 = local0;
  629.  r_6125->source_38 = source_6123;
  630.  return r_6125;
  631. }
  632.  
  633.  
  634. void TRANS_extra_yiel(TRANS self, TR_YIELD_STMT s_6126, SIG sig_6127) {
  635.  PROG local0;
  636.  STR local1;
  637.  STR local2;
  638.  PROG_err_loc_PRO(self->prog, ((PROG_ERR) s_6126));
  639.  local0 = self->prog;
  640.  local1 = ((STR) &Noyieldvalueshou);
  641.  local2 = STR_plus_STR_STR(local1, SIG_str_STR(sig_6127));
  642.  PROG_err_STR(local0, STR_plus_STR_STR(local2, ((STR) &name_6128)));
  643. }
  644.  
  645.  
  646. AM_STMT TRANS_transform__6129(TRANS self, TR_YIELD_STMT s_6130) {
  647.  AM_STMT noname6131;
  648.  TP rtp;
  649.  AM_YIELD_STMT y;
  650.  AM_YIELD_STMT r_6132;
  651.  if ((!(TRANS_is_iter_BOOL(self)))) {
  652.   TRANS_yield_in_r(self, s_6130);
  653.   return ((AM_STMT) NULL);
  654.  }
  655.  rtp = self->cur_rout->sig_6->ret;
  656.  if ((s_6130->val_16==((TR_EXPR) NULL))) {
  657.   if ((!((rtp==((TP) NULL))))) {
  658.    TRANS_missing_yi(self, s_6130, rtp);
  659.    return ((AM_STMT) NULL);
  660.   }
  661.   y = AM_YIELD_STMT_cr(((AM_YIELD_STMT) NULL), s_6130->source_38);
  662.   self->cur_yield_ind = (c_INT_plus_INT_INT_chk(self->cur_yield_ind,1));
  663.   y->ret = self->cur_yield_ind;
  664.   self->cur_rout->num_yields = (c_INT_plus_INT_INT_chk(self->cur_rout->num_yields,1));
  665.   if ((!((self->cur_loop==((AM_LOOP_STMT) NULL))))) {
  666.    self->cur_loop->has_yield = TRUE;
  667.   }
  668.   return ((AM_STMT) y);
  669.  }
  670.  if ((rtp==((TP) NULL))) {
  671.   TRANS_extra_yiel(self, s_6130, self->cur_rout->sig_6);
  672.   return ((AM_STMT) NULL);
  673.  }
  674.  r_6132 = AM_YIELD_STMT_cr(((AM_YIELD_STMT) NULL), s_6130->source_38);
  675.  r_6132->val_16 = TRANS_transform__5198(self, s_6130->val_16, rtp);
  676.  if ((r_6132->val_16==((AM_EXPR) NULL))) {
  677.   return ((AM_STMT) NULL);
  678.  }
  679.  self->cur_yield_ind = (c_INT_plus_INT_INT_chk(self->cur_yield_ind,1));
  680.  r_6132->ret = self->cur_yield_ind;
  681.  self->cur_rout->num_yields = (c_INT_plus_INT_INT_chk(self->cur_rout->num_yields,1));
  682.  if ((!((self->cur_loop==((AM_LOOP_STMT) NULL))))) {
  683.   self->cur_loop->has_yield = TRUE;
  684.  }
  685.  return ((AM_STMT) r_6132);
  686. }
  687.  
  688.  
  689. void TRANS_quit_in_ro(TRANS self, TR_QUIT_STMT s_6133) {
  690.  PROG_err_loc_PRO(self->prog, ((PROG_ERR) s_6133));
  691.  PROG_err_STR(self->prog, ((STR) &quitstatementsma));
  692. }
  693.  
  694.  
  695. void TRANS_stmts_afte_6134(TRANS self, TR_QUIT_STMT s_6135) {
  696.  PROG_err_loc_PRO(self->prog, ((PROG_ERR) s_6135));
  697.  PROG_err_STR(self->prog, ((STR) &Nostatementsmayf_6136));
  698. }
  699.  
  700.  
  701. AM_STMT TRANS_transform__6137(TRANS self, TR_QUIT_STMT s_6138) {
  702.  AM_STMT noname6139;
  703.  if ((!(TRANS_is_iter_BOOL(self)))) {
  704.   TRANS_quit_in_ro(self, s_6138);
  705.   return ((AM_STMT) NULL);
  706.  }
  707.  if ((!((s_6138->next_8==((TR_STMT) NULL))))) {
  708.   TRANS_stmts_afte_6134(self, s_6138);
  709.  }
  710.  return ((AM_STMT) AM_RETURN_STMT_c(((AM_RETURN_STMT) NULL), s_6138->source_38));
  711. }
  712.  
  713.  
  714. AM_CASE_STMT AM_CASE_STMT_cre(AM_CASE_STMT self, SFILE_ID source_6140) {
  715.  AM_CASE_STMT noname6141;
  716.  AM_CASE_STMT r_6142;
  717.  AM_CASE_STMT local0;
  718.  local0 = ((AM_CASE_STMT) sbi_alloc(sizeof(struct AM_CASE_STMT_struct), AM_CASE_STMT_tag));
  719.  r_6142 = local0;
  720.  r_6142->source_38 = source_6140;
  721.  return r_6142;
  722. }
  723.  
  724.  
  725. AM_CONST TRANS_const_to_s(TRANS self, AM_EXPR e_6143) {
  726.  AM_CONST noname6144;
  727.  if ((e_6143==((AM_EXPR) NULL))) {
  728.   return ((AM_CONST) NULL);
  729.  }
  730.  if (e_6143==NULL) {
  731.  } else
  732.  switch (e_6143->header.tag) {
  733.   case AM_CHAR_CONST_tag:
  734.    return ((AM_CONST) e_6143); break;
  735.   case AM_INT_CONST_tag:
  736.    return ((AM_CONST) e_6143); break;
  737.   case AM_GLOBAL_EXPR_tag:
  738.    return TRANS_const_to_s(self, ((AM_GLOBAL_EXPR) e_6143)->init); break;
  739.   default: ;
  740.  }
  741.  return ((AM_CONST) NULL);
  742. }
  743.  
  744.  
  745. BOOL FLISTAM_CONST_is(FLISTAM_CONST self) {
  746.  BOOL noname6145 = ((BOOL) 0);
  747.  INT local0;
  748.  local0 = FLISTAM_CONST_si(self);
  749.  return (local0==0);
  750.  if (!FLISTAM_CONST_in(self)) {
  751.   fprintf(stderr,"Failed invariant FLIST{$AM_CONST}::invariant:BOOL ../Library/flist.sa:113:11\n");
  752.   exit(16);
  753.  }
  754. }
  755.  
  756.  
  757. void FLISTAM_CONST_aclear(FLISTAM_CONST self) {
  758.  AM_CONST nil = ((AM_CONST) NULL);
  759.  FLISTAM_CONST noname6146;
  760.  if (!((!((self==((FLISTAM_CONST) NULL)))))) {
  761.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:43:9\n");
  762.   exit(16);
  763.  }
  764.  {
  765.   struct FLISTAM_CONST_as_6148_frame_struct temp6147_0;
  766.   FLISTAM_CONST_as_6148_frame 
  767.   noname6149 = &temp6147_0;
  768.   noname6149->state = 0;
  769.   while (1) {
  770.    if (noname6149->state == 0) {
  771.     noname6146 = self;
  772.     noname6149->arg0 = noname6146;
  773.    }
  774.    noname6149->arg1 = nil;
  775.    FLISTAM_CONST_as_6148(noname6149);
  776.    if (noname6149->state == -1) goto after_loop;
  777.    0 /* No return value from iter call */;
  778.   }
  779.  }
  780.  after_loop: ;
  781. }
  782.  
  783.  
  784. void FLISTAM_CONST_clear(FLISTAM_CONST self) {
  785.  if (FLISTAM_CONST_is(self)) {
  786.   return;
  787.  }
  788.  else {
  789.   FLISTAM_CONST_aclear(self);
  790.   self->loc_17 = 0;
  791.  }
  792.  if (!FLISTAM_CONST_in(self)) {
  793.   fprintf(stderr,"Failed invariant FLIST{$AM_CONST}::invariant:BOOL ../Library/flist.sa:117:8\n");
  794.   exit(16);
  795.  }
  796. }
  797.  
  798.  
  799. void FLISTAM_CONST_ar_6150(FLISTAM_CONST self, INT ind_6151, AM_CONST val_6152) {
  800.  BOOL local0;
  801.  INT local1;
  802.  INT local2;
  803.  if ((!((self==((FLISTAM_CONST) NULL))))) {
  804.   local1 = 0;
  805.   local2 = (self->asize);
  806.   local0 = INT_is_bet_INT_I(ind_6151, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  807.  } else {
  808.   local0 = FALSE;
  809.  }
  810.  if (!(local0)) {
  811.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  812.   exit(16);
  813.  }
  814.  if (ind_6151<0||ind_6151>=self->asize) {
  815.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  816.   exit(16);
  817.  }
  818.  self->arr_part[ind_6151] = val_6152;
  819. }
  820.  
  821.  
  822. void FLISTAM_CONST_as_6153(FLISTAM_CONST self, INT ind_6154, AM_CONST val_6155) {
  823.  BOOL local0;
  824.  INT local1;
  825.  if ((!((self==((FLISTAM_CONST) NULL))))) {
  826.   local1 = 0;
  827.   local0 = INT_is_bet_INT_I(ind_6154, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  828.  } else {
  829.   local0 = FALSE;
  830.  }
  831.  if (!(local0)) {
  832.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:73:7\n");
  833.   exit(16);
  834.  }
  835.  FLISTAM_CONST_ar_6150(self, ind_6154, val_6155);
  836.  if (!FLISTAM_CONST_in(self)) {
  837.   fprintf(stderr,"Failed invariant FLIST{$AM_CONST}::invariant:BOOL ../Library/flist.sa:73:7\n");
  838.   exit(16);
  839.  }
  840. }
  841.  
  842.  
  843. FLISTAM_CONST FLISTAM_CONST_pu(FLISTAM_CONST self, AM_CONST e_6156) {
  844.  FLISTAM_CONST noname6157;
  845.  FLISTAM_CONST r_6158 = ((FLISTAM_CONST) NULL);
  846.  FLISTAM_CONST noname6159;
  847.  FLISTAM_CONST noname6160;
  848.  FLISTAM_CONST local0;
  849.  INT local1;
  850.  FLISTAM_CONST local2;
  851.  INT local3;
  852.  AM_CONST local4;
  853.  INT local5;
  854.  if ((self==((FLISTAM_CONST) NULL))) {
  855.   local0 = ((FLISTAM_CONST) sbi_arr_alloc(sizeof(struct FLISTAM_CONST_struct), FLISTAM_CONST_tag, sizeof(AM_CONST) , 5));
  856.   local0->asize = 5;
  857.   r_6158 = local0;
  858.  }
  859.  else {
  860.   local1 = self->loc_17;
  861.   if ((local1<(self->asize))) {
  862.    r_6158 = self;
  863.   }
  864.   else {
  865.    local3 = 2;
  866.    local2 = ((FLISTAM_CONST) sbi_arr_alloc(sizeof(struct FLISTAM_CONST_struct), FLISTAM_CONST_tag, sizeof(AM_CONST) , (c_INT_times_INT_INT_chk(local3,(self->asize)))));
  867.    local2->asize = (c_INT_times_INT_INT_chk(local3,(self->asize)));
  868.    r_6158 = local2;
  869.    r_6158->loc_17 = self->loc_17;
  870.    {
  871.     struct FLISTAM_CONST_el_frame_struct temp6161_0;
  872.     FLISTAM_CONST_el_frame 
  873.     noname6162 = &temp6161_0;
  874.     struct FLISTAM_CONST_as_6148_frame_struct temp6161_1;
  875.     FLISTAM_CONST_as_6148_frame 
  876.     noname6163 = &temp6161_1;
  877.     noname6162->state = 0;
  878.     noname6163->state = 0;
  879.     while (1) {
  880.      if (noname6163->state == 0) {
  881.       noname6160 = r_6158;
  882.       noname6163->arg0 = noname6160;
  883.      }
  884.      if (noname6162->state == 0) {
  885.       noname6159 = self;
  886.       noname6162->arg0 = noname6159;
  887.      }
  888.      local4 = FLISTAM_CONST_el(noname6162);
  889.      if (noname6162->state == -1) goto after_loop;
  890.      noname6163->arg1 = local4;
  891.      FLISTAM_CONST_as_6148(noname6163);
  892.      if (noname6163->state == -1) goto after_loop;
  893.      0 /* No return value from iter call */;
  894.     }
  895.    }
  896.    after_loop: ;
  897.    FLISTAM_CONST_clear(self);
  898.   }
  899.  }
  900.  r_6158->loc_17 = (c_INT_plus_INT_INT_chk(r_6158->loc_17,1));
  901.  local5 = (c_INT_minus_INT_INT_chk(r_6158->loc_17,1));
  902.  FLISTAM_CONST_as_6153(r_6158, local5, e_6156);
  903.  return r_6158;
  904.  if (!FLISTAM_CONST_in(self)) {
  905.   fprintf(stderr,"Failed invariant FLIST{$AM_CONST}::invariant:BOOL ../Library/flist.sa:79:7\n");
  906.   exit(16);
  907.  }
  908. }
  909.  
  910.  
  911. BOOL FLISTFLISTAM_CON_6164(FLISTFLISTAM_CONST self) {
  912.  BOOL noname6165 = ((BOOL) 0);
  913.  INT local0;
  914.  local0 = FLISTFLISTAM_CON(self);
  915.  return (local0==0);
  916.  if (!FLISTFLISTAM_CON_3982(self)) {
  917.   fprintf(stderr,"Failed invariant FLIST{FLIST{$AM_CONST}}::invariant:BOOL ../Library/flist.sa:113:11\n");
  918.   exit(16);
  919.  }
  920. }
  921.  
  922.  
  923. void FLISTFLISTAM_CON_6166(FLISTFLISTAM_CONST self) {
  924.  FLISTAM_CONST nil = ((FLISTAM_CONST) NULL);
  925.  FLISTFLISTAM_CONST noname6167;
  926.  if (!((!((self==((FLISTFLISTAM_CONST) NULL)))))) {
  927.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:43:9\n");
  928.   exit(16);
  929.  }
  930.  {
  931.   struct FLISTFLISTAM_CON_6169_frame_struct temp6168_0;
  932.   FLISTFLISTAM_CON_6169_frame 
  933.   noname6170 = &temp6168_0;
  934.   noname6170->state = 0;
  935.   while (1) {
  936.    if (noname6170->state == 0) {
  937.     noname6167 = self;
  938.     noname6170->arg0 = noname6167;
  939.    }
  940.    noname6170->arg1 = nil;
  941.    FLISTFLISTAM_CON_6169(noname6170);
  942.    if (noname6170->state == -1) goto after_loop;
  943.    0 /* No return value from iter call */;
  944.   }
  945.  }
  946.  after_loop: ;
  947. }
  948.  
  949.  
  950. void FLISTFLISTAM_CON_6171(FLISTFLISTAM_CONST self) {
  951.  if (FLISTFLISTAM_CON_6164(self)) {
  952.   return;
  953.  }
  954.  else {
  955.   FLISTFLISTAM_CON_6166(self);
  956.   self->loc_17 = 0;
  957.  }
  958.  if (!FLISTFLISTAM_CON_3982(self)) {
  959.   fprintf(stderr,"Failed invariant FLIST{FLIST{$AM_CONST}}::invariant:BOOL ../Library/flist.sa:117:8\n");
  960.   exit(16);
  961.  }
  962. }
  963.  
  964.  
  965. void FLISTFLISTAM_CON_6172(FLISTFLISTAM_CONST self, INT ind_6173, FLISTAM_CONST val_6174) {
  966.  BOOL local0;
  967.  INT local1;
  968.  INT local2;
  969.  if ((!((self==((FLISTFLISTAM_CONST) NULL))))) {
  970.   local1 = 0;
  971.   local2 = (self->asize);
  972.   local0 = INT_is_bet_INT_I(ind_6173, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  973.  } else {
  974.   local0 = FALSE;
  975.  }
  976.  if (!(local0)) {
  977.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  978.   exit(16);
  979.  }
  980.  if (ind_6173<0||ind_6173>=self->asize) {
  981.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  982.   exit(16);
  983.  }
  984.  self->arr_part[ind_6173] = val_6174;
  985. }
  986.  
  987.  
  988. void FLISTFLISTAM_CON_6175(FLISTFLISTAM_CONST self, INT ind_6176, FLISTAM_CONST val_6177) {
  989.  BOOL local0;
  990.  INT local1;
  991.  if ((!((self==((FLISTFLISTAM_CONST) NULL))))) {
  992.   local1 = 0;
  993.   local0 = INT_is_bet_INT_I(ind_6176, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  994.  } else {
  995.   local0 = FALSE;
  996.  }
  997.  if (!(local0)) {
  998.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:73:7\n");
  999.   exit(16);
  1000.  }
  1001.  FLISTFLISTAM_CON_6172(self, ind_6176, val_6177);
  1002.  if (!FLISTFLISTAM_CON_3982(self)) {
  1003.   fprintf(stderr,"Failed invariant FLIST{FLIST{$AM_CONST}}::invariant:BOOL ../Library/flist.sa:73:7\n");
  1004.   exit(16);
  1005.  }
  1006. }
  1007.  
  1008.  
  1009. FLISTFLISTAM_CONST FLISTFLISTAM_CON_6178(FLISTFLISTAM_CONST self, FLISTAM_CONST e_6179) {
  1010.  FLISTFLISTAM_CONST noname6180;
  1011.  FLISTFLISTAM_CONST r_6181 = ((FLISTFLISTAM_CONST) NULL);
  1012.  FLISTFLISTAM_CONST noname6182;
  1013.  FLISTFLISTAM_CONST noname6183;
  1014.  FLISTFLISTAM_CONST local0;
  1015.  INT local1;
  1016.  FLISTFLISTAM_CONST local2;
  1017.  INT local3;
  1018.  FLISTAM_CONST local4;
  1019.  INT local5;
  1020.  if ((self==((FLISTFLISTAM_CONST) NULL))) {
  1021.   local0 = ((FLISTFLISTAM_CONST) sbi_arr_alloc(sizeof(struct FLISTFLISTAM_CONST_struct), FLISTFLISTAM_CONST_tag, sizeof(FLISTAM_CONST) , 5));
  1022.   local0->asize = 5;
  1023.   r_6181 = local0;
  1024.  }
  1025.  else {
  1026.   local1 = self->loc_17;
  1027.   if ((local1<(self->asize))) {
  1028.    r_6181 = self;
  1029.   }
  1030.   else {
  1031.    local3 = 2;
  1032.    local2 = ((FLISTFLISTAM_CONST) sbi_arr_alloc(sizeof(struct FLISTFLISTAM_CONST_struct), FLISTFLISTAM_CONST_tag, sizeof(FLISTAM_CONST) , (c_INT_times_INT_INT_chk(local3,(self->asize)))));
  1033.    local2->asize = (c_INT_times_INT_INT_chk(local3,(self->asize)));
  1034.    r_6181 = local2;
  1035.    r_6181->loc_17 = self->loc_17;
  1036.    {
  1037.     struct FLISTFLISTAM_CON_6185_frame_struct temp6184_0;
  1038.     FLISTFLISTAM_CON_6185_frame 
  1039.     noname6186 = &temp6184_0;
  1040.     struct FLISTFLISTAM_CON_6169_frame_struct temp6184_1;
  1041.     FLISTFLISTAM_CON_6169_frame 
  1042.     noname6187 = &temp6184_1;
  1043.     noname6186->state = 0;
  1044.     noname6187->state = 0;
  1045.     while (1) {
  1046.      if (noname6187->state == 0) {
  1047.       noname6183 = r_6181;
  1048.       noname6187->arg0 = noname6183;
  1049.      }
  1050.      if (noname6186->state == 0) {
  1051.       noname6182 = self;
  1052.       noname6186->arg0 = noname6182;
  1053.      }
  1054.      local4 = FLISTFLISTAM_CON_6185(noname6186);
  1055.      if (noname6186->state == -1) goto after_loop;
  1056.      noname6187->arg1 = local4;
  1057.      FLISTFLISTAM_CON_6169(noname6187);
  1058.      if (noname6187->state == -1) goto after_loop;
  1059.      0 /* No return value from iter call */;
  1060.     }
  1061.    }
  1062.    after_loop: ;
  1063.    FLISTFLISTAM_CON_6171(self);
  1064.   }
  1065.  }
  1066.  r_6181->loc_17 = (c_INT_plus_INT_INT_chk(r_6181->loc_17,1));
  1067.  local5 = (c_INT_minus_INT_INT_chk(r_6181->loc_17,1));
  1068.  FLISTFLISTAM_CON_6175(r_6181, local5, e_6179);
  1069.  return r_6181;
  1070.  if (!FLISTFLISTAM_CON_3982(self)) {
  1071.   fprintf(stderr,"Failed invariant FLIST{FLIST{$AM_CONST}}::invariant:BOOL ../Library/flist.sa:79:7\n");
  1072.   exit(16);
  1073.  }
  1074. }
  1075.  
  1076.  
  1077. INT FLISTAM_STMT_siz(FLISTAM_STMT self) {
  1078.  INT noname6188 = ((INT) 0);
  1079.  if ((self==((FLISTAM_STMT) NULL))) {
  1080.   return 0;
  1081.  }
  1082.  return self->loc_17;
  1083.  if (!FLISTAM_STMT_inv(self)) {
  1084.   fprintf(stderr,"Failed invariant FLIST{$AM_STMT}::invariant:BOOL ../Library/flist.sa:50:7\n");
  1085.   exit(16);
  1086.  }
  1087. }
  1088.  
  1089.  
  1090. BOOL FLISTAM_STMT_is_(FLISTAM_STMT self) {
  1091.  BOOL noname6189 = ((BOOL) 0);
  1092.  INT local0;
  1093.  local0 = FLISTAM_STMT_siz(self);
  1094.  return (local0==0);
  1095.  if (!FLISTAM_STMT_inv(self)) {
  1096.   fprintf(stderr,"Failed invariant FLIST{$AM_STMT}::invariant:BOOL ../Library/flist.sa:113:11\n");
  1097.   exit(16);
  1098.  }
  1099. }
  1100.  
  1101.  
  1102. void FLISTAM_STMT_aclear(FLISTAM_STMT self) {
  1103.  AM_STMT nil = ((AM_STMT) NULL);
  1104.  FLISTAM_STMT noname6190;
  1105.  if (!((!((self==((FLISTAM_STMT) NULL)))))) {
  1106.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:43:9\n");
  1107.   exit(16);
  1108.  }
  1109.  {
  1110.   struct FLISTAM_STMT_ase_frame_struct temp6191_0;
  1111.   FLISTAM_STMT_ase_frame 
  1112.   noname6192 = &temp6191_0;
  1113.   noname6192->state = 0;
  1114.   while (1) {
  1115.    if (noname6192->state == 0) {
  1116.     noname6190 = self;
  1117.     noname6192->arg0 = noname6190;
  1118.    }
  1119.    noname6192->arg1 = nil;
  1120.    FLISTAM_STMT_ase(noname6192);
  1121.    if (noname6192->state == -1) goto after_loop;
  1122.    0 /* No return value from iter call */;
  1123.   }
  1124.  }
  1125.  after_loop: ;
  1126. }
  1127.  
  1128.  
  1129. void FLISTAM_STMT_clear(FLISTAM_STMT self) {
  1130.  if (FLISTAM_STMT_is_(self)) {
  1131.   return;
  1132.  }
  1133.  else {
  1134.   FLISTAM_STMT_aclear(self);
  1135.   self->loc_17 = 0;
  1136.  }
  1137.  if (!FLISTAM_STMT_inv(self)) {
  1138.   fprintf(stderr,"Failed invariant FLIST{$AM_STMT}::invariant:BOOL ../Library/flist.sa:117:8\n");
  1139.   exit(16);
  1140.  }
  1141. }
  1142.  
  1143.  
  1144. void FLISTAM_STMT_are_6193(FLISTAM_STMT self, INT ind_6194, AM_STMT val_6195) {
  1145.  BOOL local0;
  1146.  INT local1;
  1147.  INT local2;
  1148.  if ((!((self==((FLISTAM_STMT) NULL))))) {
  1149.   local1 = 0;
  1150.   local2 = (self->asize);
  1151.   local0 = INT_is_bet_INT_I(ind_6194, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  1152.  } else {
  1153.   local0 = FALSE;
  1154.  }
  1155.  if (!(local0)) {
  1156.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  1157.   exit(16);
  1158.  }
  1159.  if (ind_6194<0||ind_6194>=self->asize) {
  1160.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  1161.   exit(16);
  1162.  }
  1163.  self->arr_part[ind_6194] = val_6195;
  1164. }
  1165.  
  1166.  
  1167. void FLISTAM_STMT_ase_6196(FLISTAM_STMT self, INT ind_6197, AM_STMT val_6198) {
  1168.  BOOL local0;
  1169.  INT local1;
  1170.  if ((!((self==((FLISTAM_STMT) NULL))))) {
  1171.   local1 = 0;
  1172.   local0 = INT_is_bet_INT_I(ind_6197, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  1173.  } else {
  1174.   local0 = FALSE;
  1175.  }
  1176.  if (!(local0)) {
  1177.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:73:7\n");
  1178.   exit(16);
  1179.  }
  1180.  FLISTAM_STMT_are_6193(self, ind_6197, val_6198);
  1181.  if (!FLISTAM_STMT_inv(self)) {
  1182.   fprintf(stderr,"Failed invariant FLIST{$AM_STMT}::invariant:BOOL ../Library/flist.sa:73:7\n");
  1183.   exit(16);
  1184.  }
  1185. }
  1186.  
  1187.  
  1188. FLISTAM_STMT FLISTAM_STMT_pus(FLISTAM_STMT self, AM_STMT e_6199) {
  1189.  FLISTAM_STMT noname6200;
  1190.  FLISTAM_STMT r_6201 = ((FLISTAM_STMT) NULL);
  1191.  FLISTAM_STMT noname6202;
  1192.  FLISTAM_STMT noname6203;
  1193.  FLISTAM_STMT local0;
  1194.  INT local1;
  1195.  FLISTAM_STMT local2;
  1196.  INT local3;
  1197.  AM_STMT local4;
  1198.  INT local5;
  1199.  if ((self==((FLISTAM_STMT) NULL))) {
  1200.   local0 = ((FLISTAM_STMT) sbi_arr_alloc(sizeof(struct FLISTAM_STMT_struct), FLISTAM_STMT_tag, sizeof(AM_STMT) , 5));
  1201.   local0->asize = 5;
  1202.   r_6201 = local0;
  1203.  }
  1204.  else {
  1205.   local1 = self->loc_17;
  1206.   if ((local1<(self->asize))) {
  1207.    r_6201 = self;
  1208.   }
  1209.   else {
  1210.    local3 = 2;
  1211.    local2 = ((FLISTAM_STMT) sbi_arr_alloc(sizeof(struct FLISTAM_STMT_struct), FLISTAM_STMT_tag, sizeof(AM_STMT) , (c_INT_times_INT_INT_chk(local3,(self->asize)))));
  1212.    local2->asize = (c_INT_times_INT_INT_chk(local3,(self->asize)));
  1213.    r_6201 = local2;
  1214.    r_6201->loc_17 = self->loc_17;
  1215.    {
  1216.     struct FLISTAM_STMT_elt_frame_struct temp6204_0;
  1217.     FLISTAM_STMT_elt_frame 
  1218.     noname6205 = &temp6204_0;
  1219.     struct FLISTAM_STMT_ase_frame_struct temp6204_1;
  1220.     FLISTAM_STMT_ase_frame 
  1221.     noname6206 = &temp6204_1;
  1222.     noname6205->state = 0;
  1223.     noname6206->state = 0;
  1224.     while (1) {
  1225.      if (noname6206->state == 0) {
  1226.       noname6203 = r_6201;
  1227.       noname6206->arg0 = noname6203;
  1228.      }
  1229.      if (noname6205->state == 0) {
  1230.       noname6202 = self;
  1231.       noname6205->arg0 = noname6202;
  1232.      }
  1233.      local4 = FLISTAM_STMT_elt(noname6205);
  1234.      if (noname6205->state == -1) goto after_loop;
  1235.      noname6206->arg1 = local4;
  1236.      FLISTAM_STMT_ase(noname6206);
  1237.      if (noname6206->state == -1) goto after_loop;
  1238.      0 /* No return value from iter call */;
  1239.     }
  1240.    }
  1241.    after_loop: ;
  1242.    FLISTAM_STMT_clear(self);
  1243.   }
  1244.  }
  1245.  r_6201->loc_17 = (c_INT_plus_INT_INT_chk(r_6201->loc_17,1));
  1246.  local5 = (c_INT_minus_INT_INT_chk(r_6201->loc_17,1));
  1247.  FLISTAM_STMT_ase_6196(r_6201, local5, e_6199);
  1248.  return r_6201;
  1249.  if (!FLISTAM_STMT_inv(self)) {
  1250.   fprintf(stderr,"Failed invariant FLIST{$AM_STMT}::invariant:BOOL ../Library/flist.sa:79:7\n");
  1251.   exit(16);
  1252.  }
  1253. }
  1254.  
  1255.  
  1256. FLISTAM_CONST FLISTFLISTAM_CON_6207(FLISTFLISTAM_CONST self) {
  1257.  FLISTAM_CONST noname6208;
  1258.  FLISTAM_CONST r_6209;
  1259.  INT local0;
  1260.  INT local1;
  1261.  local0 = FLISTFLISTAM_CON(self);
  1262.  if ((local0==0)) {
  1263.   return ((FLISTAM_CONST) NULL);
  1264.  }
  1265.  r_6209 = FLISTFLISTAM_CON_3988(self, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  1266.  local1 = (c_INT_minus_INT_INT_chk(self->loc_17,1));
  1267.  FLISTFLISTAM_CON_6175(self, local1, ((FLISTAM_CONST) NULL));
  1268.  self->loc_17 = (c_INT_minus_INT_INT_chk(self->loc_17,1));
  1269.  return r_6209;
  1270.  if (!FLISTFLISTAM_CON_3982(self)) {
  1271.   fprintf(stderr,"Failed invariant FLIST{FLIST{$AM_CONST}}::invariant:BOOL ../Library/flist.sa:90:6\n");
  1272.   exit(16);
  1273.  }
  1274. }
  1275.  
  1276.  
  1277. AM_STMT TRANS_transform__6210(TRANS self, TR_CASE_STMT s_6211, TR_CASE_WHEN cw, AM_LOCAL_EXPR l) {
  1278.  AM_STMT noname6212;
  1279.  AM_CASE_STMT r_6213;
  1280.  CALL_TP ct;
  1281.  AM_EXPR v_6214 = ((AM_EXPR) NULL);
  1282.  AM_CONST cv;
  1283.  AM_CASE_STMT r_6215;
  1284.  TR_STMT last_then;
  1285.  FLISTAM_CONST ls = ((FLISTAM_CONST) NULL);
  1286.  CALL_SIG cs;
  1287.  SIG sig_6216;
  1288.  AM_ROUT_CALL_EXPR arc;
  1289.  AM_IF_STMT r_6217;
  1290.  FLISTAM_STMT local0;
  1291.  FLISTAM_STMT local1;
  1292.  ARRAYCALL_TP local2;
  1293.  INT local3;
  1294.  AM_EXPR local4;
  1295.  TP local5;
  1296.  TR_EXPR local6;
  1297.  if ((cw==((TR_CASE_WHEN) NULL))) {
  1298.   if (s_6211->no_else) {
  1299.    r_6213 = AM_CASE_STMT_cre(((AM_CASE_STMT) NULL), s_6211->source_38);
  1300.    r_6213->test_40 = ((AM_EXPR) l);
  1301.    r_6213->no_else = TRUE;
  1302.    return ((AM_STMT) r_6213);
  1303.   }
  1304.   else {
  1305.    return TRANS_transform__6099(self, s_6211->else_part);
  1306.   }
  1307.  }
  1308.  PROG_err_loc_PRO(self->prog, ((PROG_ERR) cw));
  1309.  ct = TRANS_call_tp_of(self, cw->val_16);
  1310.  if ((ct==((CALL_TP) NULL))) {
  1311.   v_6214 = TRANS_transform__5198(self, cw->val_16, ((TP) NULL));
  1312.   if ((v_6214==((AM_EXPR) NULL))) {
  1313.    return ((AM_STMT) NULL);
  1314.   }
  1315.   cv = TRANS_const_to_s(self, v_6214);
  1316.   if ((!((cv==((AM_CONST) NULL))))) {
  1317.    r_6215 = AM_CASE_STMT_cre(((AM_CASE_STMT) NULL), cw->source_38);
  1318.    r_6215->test_40 = ((AM_EXPR) l);
  1319.    last_then = cw->then_part;
  1320.    ls = FLISTAM_CONST_pu(ls, cv);
  1321.    r_6215->tgts = FLISTFLISTAM_CON_6178(r_6215->tgts, ls);
  1322.    local0 = r_6215->stmts;
  1323.    r_6215->stmts = FLISTAM_STMT_pus(local0, TRANS_transform__6099(self, cw->then_part));
  1324.    while (1) {
  1325.     cw = cw->next_8;
  1326.     if ((cw==((TR_CASE_WHEN) NULL))) {
  1327.      if (s_6211->no_else) {
  1328.       r_6215->no_else = TRUE;
  1329.      }
  1330.      else {
  1331.       r_6215->else_stmts = TRANS_transform__6099(self, s_6211->else_part);
  1332.      }
  1333.      return ((AM_STMT) r_6215);
  1334.     }
  1335.     if ((!((TRANS_call_tp_of(self, cw->val_16)==((CALL_TP) NULL))))) {
  1336.      r_6215->else_stmts = TRANS_transform__6210(self, s_6211, cw, l);
  1337.      return ((AM_STMT) r_6215);
  1338.     }
  1339.     v_6214 = TRANS_transform__5198(self, cw->val_16, ((TP) NULL));
  1340.     if ((v_6214==((AM_EXPR) NULL))) {
  1341.      return ((AM_STMT) NULL);
  1342.     }
  1343.     cv = TRANS_const_to_s(self, v_6214);
  1344.     if ((!((cv==((AM_CONST) NULL))))) {
  1345.      if (c_SYS_ob_eq_OB_OB_BOOL(((OB) last_then),((OB) cw->then_part))) {
  1346.       ls = FLISTFLISTAM_CON_6207(r_6215->tgts);
  1347.       ls = FLISTAM_CONST_pu(ls, cv);
  1348.       r_6215->tgts = FLISTFLISTAM_CON_6178(r_6215->tgts, ls);
  1349.      }
  1350.      else {
  1351.       ls = ((FLISTAM_CONST) NULL);
  1352.       ls = FLISTAM_CONST_pu(ls, cv);
  1353.       r_6215->tgts = FLISTFLISTAM_CON_6178(r_6215->tgts, ls);
  1354.       local1 = r_6215->stmts;
  1355.       r_6215->stmts = FLISTAM_STMT_pus(local1, TRANS_transform__6099(self, cw->then_part));
  1356.      }
  1357.     }
  1358.     else {
  1359.      r_6215->else_stmts = TRANS_transform__6210(self, s_6211, cw, l);
  1360.      return ((AM_STMT) r_6215);
  1361.     }
  1362.    }
  1363.    after_loop: ;
  1364.   }
  1365.  }
  1366.  cs = CALL_SIG_create_(((CALL_SIG) NULL));
  1367.  cs->tp = l->tp_at;
  1368.  cs->name_19 = self->prog->ident_builtin->is_eq_ident;
  1369.  cs->has_ret = TRUE;
  1370.  cs->args_7 = ARRAYCALL_TP_cre(((ARRAYCALL_TP) NULL), 1);
  1371.  if ((!((ct==((CALL_TP) NULL))))) {
  1372.   ARRAYCALL_TP_ase(cs->args_7, 0, ct);
  1373.  }
  1374.  else {
  1375.   local2 = cs->args_7;
  1376.   local3 = 0;
  1377.   local4 = v_6214;
  1378.   ARRAYCALL_TP_ase(local2, local3, ((CALL_TP) (*AM_EXPR_tp_TP[local4->header.tag+AM_EXPR_tp_TP_offset])(local4)));
  1379.  }
  1380.  sig_6216 = CALL_SIG_lookup_(cs, TP_CLASS_is_eq_T(self->tp_con->same_34, cs->tp));
  1381.  if ((sig_6216==((SIG) NULL))) {
  1382.   return ((AM_STMT) NULL);
  1383.  }
  1384.  local5 = sig_6216->ret;
  1385.  if ((*TP_is_neq_TP_BOOL[local5->header.tag+TP_is_neq_TP_BOOL_offset])(local5, ((TP) self->prog->tp_builtin->bool_2))) {
  1386.   PROG_err_STR(self->prog, ((STR) &Theis_eqroutinec));
  1387.   return ((AM_STMT) NULL);
  1388.  }
  1389.  if ((v_6214==((AM_EXPR) NULL))) {
  1390.   local6 = cw->val_16;
  1391.   v_6214 = TRANS_transform__5198(self, local6, ARRAYTP_aget_INT_TP(sig_6216->args_7, 0));
  1392.  }
  1393.  if ((v_6214==((AM_EXPR) NULL))) {
  1394.   return ((AM_STMT) NULL);
  1395.  }
  1396.  arc = AM_ROUT_CALL_EXP_5400(((AM_ROUT_CALL_EXPR) NULL), 2, cw->source_38);
  1397.  arc->fun = sig_6216;
  1398.  AM_ROUT_CALL_EXP_5404(arc, 0, ((AM_EXPR) l));
  1399.  AM_ROUT_CALL_EXP_5404(arc, 1, v_6214);
  1400.  r_6217 = AM_IF_STMT_creat(((AM_IF_STMT) NULL), cw->source_38);
  1401.  r_6217->test_40 = TRANS_inline_AM_(self, arc);
  1402.  r_6217->if_true = TRANS_transform__6099(self, cw->then_part);
  1403.  r_6217->if_false = TRANS_transform__6210(self, s_6211, cw->next_8, l);
  1404.  return ((AM_STMT) r_6217);
  1405. }
  1406.  
  1407.  
  1408. AM_STMT TRANS_transform__6219(TRANS self, TR_CASE_STMT s_6220) {
  1409.  AM_STMT noname6221;
  1410.  AM_ASSIGN_STMT r_6222;
  1411.  AM_LOCAL_EXPR l;
  1412.  AM_LOCAL_EXPR local0;
  1413.  SFILE_ID local1;
  1414.  IDENT local2;
  1415.  AM_EXPR local3;
  1416.  if ((s_6220==((TR_CASE_STMT) NULL))) {
  1417.   return ((AM_STMT) NULL);
  1418.  }
  1419.  r_6222 = AM_ASSIGN_STMT_c(((AM_ASSIGN_STMT) NULL), s_6220->source_38);
  1420.  r_6222->src_42 = TRANS_transform__5198(self, s_6220->test_40, ((TP) NULL));
  1421.  if ((r_6222->src_42==((AM_EXPR) NULL))) {
  1422.   return ((AM_STMT) NULL);
  1423.  }
  1424.  local0 = ((AM_LOCAL_EXPR) NULL);
  1425.  local1 = s_6220->source_38;
  1426.  local2 = IDENT_zero;
  1427.  local3 = r_6222->src_42;
  1428.  l = AM_LOCAL_EXPR_cr(local0, local1, local2, (*AM_EXPR_tp_TP[local3->header.tag+AM_EXPR_tp_TP_offset])(local3));
  1429.  TRANS_add_local_(self, l);
  1430.  r_6222->dest = ((AM_EXPR) l);
  1431.  r_6222->next_8 = TRANS_transform__6210(self, s_6220, s_6220->when_part, l);
  1432.  return ((AM_STMT) r_6222);
  1433. }
  1434.  
  1435.  
  1436. void TRANS_typecase_l(TRANS self, TR_TYPECASE_STMT s_6223) {
  1437.  PROG local0;
  1438.  STR local1;
  1439.  PROG_err_loc_PRO(self->prog, ((PROG_ERR) s_6223));
  1440.  local0 = self->prog;
  1441.  local1 = STR_plus_STR_STR(((STR) &Thename), s_6223->name_19.str_4);
  1442.  PROG_err_STR(local0, STR_plus_STR_STR(local1, ((STR) &isntalocalvariable)));
  1443. }
  1444.  
  1445.  
  1446. BOOL AM_ROUT_DEF_loca(AM_ROUT_DEF self, AM_LOCAL_EXPR l) {
  1447.  BOOL noname6224 = ((BOOL) 0);
  1448.  INT i = ((INT) 0);
  1449.  BOOL local0;
  1450.  SYS local1;
  1451.  AM_LOCAL_EXPR local2;
  1452.  if ((!(AM_ROUT_DEF_is_i(self)))) {
  1453.   local0 = TRUE;
  1454.  } else {
  1455.   local0 = (self->sig_6->hot==((ARRAYBOOL) NULL));
  1456.  }
  1457.  if (local0) {
  1458.   return FALSE;
  1459.  }
  1460.  i = 0;
  1461.  while (1) {
  1462.   if ((i<(self->asize))) {
  1463.   }
  1464.   else {
  1465.    goto after_loop;
  1466.   }
  1467.   local1 = ((SYS) NULL);
  1468.   local2 = AM_ROUT_DEF_aget(self, i);
  1469.   if (c_SYS_ob_eq_OB_OB_BOOL(((OB) local2),((OB) l))) {
  1470.    return ARRAYBOOL_aget_I(self->sig_6->hot, i);
  1471.   }
  1472.   i = (c_INT_plus_INT_INT_chk(i,1));
  1473.  }
  1474.  after_loop: ;
  1475.  return FALSE;
  1476. }
  1477.  
  1478.  
  1479. void TRANS_typecase_h(TRANS self, TR_TYPECASE_STMT s_6226) {
  1480.  PROG local0;
  1481.  STR local1;
  1482.  PROG_err_loc_PRO(self->prog, ((PROG_ERR) s_6226));
  1483.  local0 = self->prog;
  1484.  local1 = STR_plus_STR_STR(((STR) &Thetypecasetestlocal), s_6226->name_19.str_4);
  1485.  PROG_err_STR(local0, STR_plus_STR_STR(local1, ((STR) &mustnotbeaargume)));
  1486. }
  1487.  
  1488.  
  1489. AM_TYPECASE_STMT AM_TYPECASE_STMT_6227(AM_TYPECASE_STMT self, SFILE_ID source_6228) {
  1490.  AM_TYPECASE_STMT noname6229;
  1491.  AM_TYPECASE_STMT r_6230;
  1492.  AM_TYPECASE_STMT local0;
  1493.  local0 = ((AM_TYPECASE_STMT) sbi_alloc(sizeof(struct AM_TYPECASE_STMT_struct), AM_TYPECASE_STMT_tag));
  1494.  r_6230 = local0;
  1495.  r_6230->source_38 = source_6228;
  1496.  return r_6230;
  1497. }
  1498.  
  1499.  
  1500. BOOL FLISTTP_is_empty(FLISTTP self) {
  1501.  BOOL noname6231 = ((BOOL) 0);
  1502.  INT local0;
  1503.  local0 = FLISTTP_size_INT(self);
  1504.  return (local0==0);
  1505.  if (!FLISTTP_invarian(self)) {
  1506.   fprintf(stderr,"Failed invariant FLIST{$TP}::invariant:BOOL ../Library/flist.sa:113:11\n");
  1507.   exit(16);
  1508.  }
  1509. }
  1510.  
  1511.  
  1512. void FLISTTP_aclear(FLISTTP self) {
  1513.  TP nil = ((TP) NULL);
  1514.  FLISTTP noname6232;
  1515.  if (!((!((self==((FLISTTP) NULL)))))) {
  1516.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:43:9\n");
  1517.   exit(16);
  1518.  }
  1519.  {
  1520.   struct FLISTTP_aset_TP_frame_struct temp6233_0;
  1521.   FLISTTP_aset_TP_frame 
  1522.   noname6234 = &temp6233_0;
  1523.   noname6234->state = 0;
  1524.   while (1) {
  1525.    if (noname6234->state == 0) {
  1526.     noname6232 = self;
  1527.     noname6234->arg0 = noname6232;
  1528.    }
  1529.    noname6234->arg1 = nil;
  1530.    FLISTTP_aset_TP(noname6234);
  1531.    if (noname6234->state == -1) goto after_loop;
  1532.    0 /* No return value from iter call */;
  1533.   }
  1534.  }
  1535.  after_loop: ;
  1536. }
  1537.  
  1538.  
  1539. void FLISTTP_clear(FLISTTP self) {
  1540.  if (FLISTTP_is_empty(self)) {
  1541.   return;
  1542.  }
  1543.  else {
  1544.   FLISTTP_aclear(self);
  1545.   self->loc_17 = 0;
  1546.  }
  1547.  if (!FLISTTP_invarian(self)) {
  1548.   fprintf(stderr,"Failed invariant FLIST{$TP}::invariant:BOOL ../Library/flist.sa:117:8\n");
  1549.   exit(16);
  1550.  }
  1551. }
  1552.  
  1553.  
  1554. void FLISTTP_aref_ase(FLISTTP self, INT ind_6235, TP val_6236) {
  1555.  BOOL local0;
  1556.  INT local1;
  1557.  INT local2;
  1558.  if ((!((self==((FLISTTP) NULL))))) {
  1559.   local1 = 0;
  1560.   local2 = (self->asize);
  1561.   local0 = INT_is_bet_INT_I(ind_6235, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  1562.  } else {
  1563.   local0 = FALSE;
  1564.  }
  1565.  if (!(local0)) {
  1566.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  1567.   exit(16);
  1568.  }
  1569.  if (ind_6235<0||ind_6235>=self->asize) {
  1570.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  1571.   exit(16);
  1572.  }
  1573.  self->arr_part[ind_6235] = val_6236;
  1574. }
  1575.  
  1576.  
  1577. void FLISTTP_aset_INT_TP(FLISTTP self, INT ind_6237, TP val_6238) {
  1578.  BOOL local0;
  1579.  INT local1;
  1580.  if ((!((self==((FLISTTP) NULL))))) {
  1581.   local1 = 0;
  1582.   local0 = INT_is_bet_INT_I(ind_6237, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  1583.  } else {
  1584.   local0 = FALSE;
  1585.  }
  1586.  if (!(local0)) {
  1587.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:73:7\n");
  1588.   exit(16);
  1589.  }
  1590.  FLISTTP_aref_ase(self, ind_6237, val_6238);
  1591.  if (!FLISTTP_invarian(self)) {
  1592.   fprintf(stderr,"Failed invariant FLIST{$TP}::invariant:BOOL ../Library/flist.sa:73:7\n");
  1593.   exit(16);
  1594.  }
  1595. }
  1596.  
  1597.  
  1598. FLISTTP FLISTTP_push_TP_(FLISTTP self, TP e_6239) {
  1599.  FLISTTP noname6240;
  1600.  FLISTTP r_6241 = ((FLISTTP) NULL);
  1601.  FLISTTP noname6242;
  1602.  FLISTTP noname6243;
  1603.  FLISTTP local0;
  1604.  INT local1;
  1605.  FLISTTP local2;
  1606.  INT local3;
  1607.  TP local4;
  1608.  INT local5;
  1609.  if ((self==((FLISTTP) NULL))) {
  1610.   local0 = ((FLISTTP) sbi_arr_alloc(sizeof(struct FLISTTP_struct), FLISTTP_tag, sizeof(TP) , 5));
  1611.   local0->asize = 5;
  1612.   r_6241 = local0;
  1613.  }
  1614.  else {
  1615.   local1 = self->loc_17;
  1616.   if ((local1<(self->asize))) {
  1617.    r_6241 = self;
  1618.   }
  1619.   else {
  1620.    local3 = 2;
  1621.    local2 = ((FLISTTP) sbi_arr_alloc(sizeof(struct FLISTTP_struct), FLISTTP_tag, sizeof(TP) , (c_INT_times_INT_INT_chk(local3,(self->asize)))));
  1622.    local2->asize = (c_INT_times_INT_INT_chk(local3,(self->asize)));
  1623.    r_6241 = local2;
  1624.    r_6241->loc_17 = self->loc_17;
  1625.    {
  1626.     struct FLISTTP_elt_TP_frame_struct temp6244_0;
  1627.     FLISTTP_elt_TP_frame 
  1628.     noname6245 = &temp6244_0;
  1629.     struct FLISTTP_aset_TP_frame_struct temp6244_1;
  1630.     FLISTTP_aset_TP_frame 
  1631.     noname6246 = &temp6244_1;
  1632.     noname6245->state = 0;
  1633.     noname6246->state = 0;
  1634.     while (1) {
  1635.      if (noname6246->state == 0) {
  1636.       noname6243 = r_6241;
  1637.       noname6246->arg0 = noname6243;
  1638.      }
  1639.      if (noname6245->state == 0) {
  1640.       noname6242 = self;
  1641.       noname6245->arg0 = noname6242;
  1642.      }
  1643.      local4 = FLISTTP_elt_TP(noname6245);
  1644.      if (noname6245->state == -1) goto after_loop;
  1645.      noname6246->arg1 = local4;
  1646.      FLISTTP_aset_TP(noname6246);
  1647.      if (noname6246->state == -1) goto after_loop;
  1648.      0 /* No return value from iter call */;
  1649.     }
  1650.    }
  1651.    after_loop: ;
  1652.    FLISTTP_clear(self);
  1653.   }
  1654.  }
  1655.  r_6241->loc_17 = (c_INT_plus_INT_INT_chk(r_6241->loc_17,1));
  1656.  local5 = (c_INT_minus_INT_INT_chk(r_6241->loc_17,1));
  1657.  FLISTTP_aset_INT_TP(r_6241, local5, e_6239);
  1658.  return r_6241;
  1659.  if (!FLISTTP_invarian(self)) {
  1660.   fprintf(stderr,"Failed invariant FLIST{$TP}::invariant:BOOL ../Library/flist.sa:79:7\n");
  1661.   exit(16);
  1662.  }
  1663. }
  1664.  
  1665.  
  1666. void TRANS_typecase_n(TRANS self, TR_TYPECASE_STMT s_6247) {
  1667.  PROG_err_loc_PRO(self->prog, ((PROG_ERR) s_6247));
  1668.  PROG_err_STR(self->prog, ((STR) &Therearenomatchi));
  1669. }
  1670.  
  1671.  
  1672. AM_STMT TRANS_transform__6248(TRANS self, TR_TYPECASE_STMT s_6249) {
  1673.  AM_STMT noname6250;
  1674.  AM_STMT res = ((AM_STMT) NULL);
  1675.  AM_LOCAL_EXPR l;
  1676.  BOOL ono_assign = ((BOOL) 0);
  1677.  TP ltp;
  1678.  AM_TYPECASE_STMT r_6251;
  1679.  TR_TYPECASE_WHEN wp;
  1680.  TP tp_6252;
  1681.  TR_TYPECASE_WHEN wp_6253;
  1682.  BOOL local0;
  1683.  TP local1;
  1684.  TP local2;
  1685.  BOOL local3;
  1686.  BOOL local4;
  1687.  TP local5;
  1688.  TP local6;
  1689.  TP local7;
  1690.  TP local8;
  1691.  FLISTAM_STMT local9;
  1692.  TP local10;
  1693.  l = TRANS_local_with(self, s_6249->name_19);
  1694.  if ((l==((AM_LOCAL_EXPR) NULL))) {
  1695.   TRANS_typecase_l(self, s_6249);
  1696.   return ((AM_STMT) NULL);
  1697.  }
  1698.  if (AM_ROUT_DEF_loca(self->cur_rout, l)) {
  1699.   TRANS_typecase_h(self, s_6249);
  1700.   return ((AM_STMT) NULL);
  1701.  }
  1702.  ono_assign = l->no_assign;
  1703.  l->no_assign = TRUE;
  1704.  ltp = l->tp_at;
  1705.  local1 = ltp;
  1706.  if ((*TP_is_abstract_BOOL[local1->header.tag+TP_is_abstract_BOOL_offset])(local1)) {
  1707.   local0 = TRUE;
  1708.  } else {
  1709.   local2 = ltp;
  1710.   local0 = (*TP_is_bound_BOOL[local2->header.tag+TP_is_bound_BOOL_offset])(local2);
  1711.  }
  1712.  if (local0) {
  1713.   r_6251 = AM_TYPECASE_STMT_6227(((AM_TYPECASE_STMT) NULL), s_6249->source_38);
  1714.   r_6251->test_40 = l;
  1715.   wp = s_6249->when_part;
  1716.   while (1) {
  1717.    if ((!((wp==((TR_TYPECASE_WHEN) NULL))))) {
  1718.    }
  1719.    else {
  1720.     goto after_loop;
  1721.    }
  1722.    tp_6252 = TRANS_tp_of_TR_T(self, wp->tp);
  1723.    local5 = tp_6252;
  1724.    if ((*TP_is_abstract_BOOL[local5->header.tag+TP_is_abstract_BOOL_offset])(local5)) {
  1725.     local4 = TRUE;
  1726.    } else {
  1727.     local6 = tp_6252;
  1728.     local4 = (*TP_is_bound_BOOL[local6->header.tag+TP_is_bound_BOOL_offset])(local6);
  1729.    }
  1730.    if (local4) {
  1731.     local3 = TRUE;
  1732.    } else {
  1733.     local7 = tp_6252;
  1734.     local3 = (*TP_is_subtype_TP[local7->header.tag+TP_is_subtype_TP_offset])(local7, ltp);
  1735.    }
  1736.    if (local3) {
  1737.     local8 = ltp;
  1738.     if ((*TP_is_subtype_TP[local8->header.tag+TP_is_subtype_TP_offset])(local8, tp_6252)) {
  1739.      if ((!(r_6251->has_void_stmts))) {
  1740.       r_6251->has_void_stmts = TRUE;
  1741.       r_6251->void_stmts = TRANS_transform__6099(self, wp->then_part);
  1742.      }
  1743.     }
  1744.     else {
  1745.      l->tp_at = tp_6252;
  1746.     }
  1747.     r_6251->tgts = FLISTTP_push_TP_(r_6251->tgts, tp_6252);
  1748.     local9 = r_6251->stmts;
  1749.     r_6251->stmts = FLISTAM_STMT_pus(local9, TRANS_transform__6099(self, wp->then_part));
  1750.     l->tp_at = ltp;
  1751.    }
  1752.    wp = wp->next_8;
  1753.   }
  1754.   after_loop: ;
  1755.   if (s_6249->no_else) {
  1756.    r_6251->no_else = TRUE;
  1757.   }
  1758.   else {
  1759.    r_6251->else_stmts = TRANS_transform__6099(self, s_6249->else_part);
  1760.   }
  1761.   if ((!(r_6251->has_void_stmts))) {
  1762.    r_6251->has_void_stmts = TRUE;
  1763.    r_6251->void_stmts = TRANS_transform__6099(self, s_6249->else_part);
  1764.   }
  1765.   res = ((AM_STMT) r_6251);
  1766.  }
  1767.  else {
  1768.   wp_6253 = s_6249->when_part;
  1769.   while (1) {
  1770.    if ((!((wp_6253==((TR_TYPECASE_WHEN) NULL))))) {
  1771.    }
  1772.    else {
  1773.     goto after_loop_6255;
  1774.    }
  1775.    local10 = ltp;
  1776.    if ((*TP_is_subtype_TP[local10->header.tag+TP_is_subtype_TP_offset])(local10, TRANS_tp_of_TR_T(self, wp_6253->tp))) {
  1777.     res = TRANS_transform__6099(self, wp_6253->then_part);
  1778.     l->no_assign = ono_assign;
  1779.     return res;
  1780.    }
  1781.    wp_6253 = wp_6253->next_8;
  1782.   }
  1783.   after_loop_6255: ;
  1784.   if (s_6249->no_else) {
  1785.    TRANS_typecase_n(self, s_6249);
  1786.    return res;
  1787.   }
  1788.   else {
  1789.    res = TRANS_transform__6099(self, s_6249->else_part);
  1790.   }
  1791.  }
  1792.  l->no_assign = ono_assign;
  1793.  return res;
  1794. }
  1795.  
  1796.  
  1797. AM_ASSERT_STMT AM_ASSERT_STMT_c(AM_ASSERT_STMT self, SFILE_ID source_6257) {
  1798.  AM_ASSERT_STMT noname6258;
  1799.  AM_ASSERT_STMT r_6259;
  1800.  AM_ASSERT_STMT local0;
  1801.  local0 = ((AM_ASSERT_STMT) sbi_alloc(sizeof(struct AM_ASSERT_STMT_struct), AM_ASSERT_STMT_tag));
  1802.  r_6259 = local0;
  1803.  r_6259->source_38 = source_6257;
  1804.  return r_6259;
  1805. }
  1806.  
  1807.  
  1808. AM_STMT TRANS_transform__6260(TRANS self, TR_ASSERT_STMT s_6261) {
  1809.  AM_STMT noname6262;
  1810.  AM_ASSERT_STMT r_6263;
  1811.  r_6263 = AM_ASSERT_STMT_c(((AM_ASSERT_STMT) NULL), s_6261->source_38);
  1812.  r_6263->test_40 = TRANS_transform__5198(self, s_6261->test_40, ((TP) self->prog->tp_builtin->bool_2));
  1813.  if ((r_6263->test_40==((AM_EXPR) NULL))) {
  1814.   return ((AM_STMT) NULL);
  1815.  }
  1816.  return ((AM_STMT) r_6263);
  1817. }
  1818.  
  1819.  
  1820. AM_PROTECT_STMT AM_PROTECT_STMT_(AM_PROTECT_STMT self, SFILE_ID source_6264) {
  1821.  AM_PROTECT_STMT noname6265;
  1822.  AM_PROTECT_STMT r_6266;
  1823.  AM_PROTECT_STMT local0;
  1824.  local0 = ((AM_PROTECT_STMT) sbi_alloc(sizeof(struct AM_PROTECT_STMT_struct), AM_PROTECT_STMT_tag));
  1825.  r_6266 = local0;
  1826.  r_6266->source_38 = source_6264;
  1827.  return r_6266;
  1828. }
  1829.  
  1830.  
  1831. AM_STMT TRANS_transform__6267(TRANS self, TR_PROTECT_STMT s_6268) {
  1832.  AM_STMT noname6269;
  1833.  AM_PROTECT_STMT r_6270;
  1834.  BOOL old_in_protect_body = ((BOOL) 0);
  1835.  TR_PROTECT_WHEN wp;
  1836.  TP tp_6271;
  1837.  TP oex_tp;
  1838.  BOOL old_in_protect_then = ((BOOL) 0);
  1839.  TP oex_tp_6272;
  1840.  BOOL old_in_protect_t_6273 = ((BOOL) 0);
  1841.  FLISTAM_STMT local0;
  1842.  r_6270 = AM_PROTECT_STMT_(((AM_PROTECT_STMT) NULL), s_6268->source_38);
  1843.  old_in_protect_body = self->in_protect_body;
  1844.  self->in_protect_body = TRUE;
  1845.  r_6270->body = TRANS_transform__6099(self, s_6268->stmts);
  1846.  self->in_protect_body = old_in_protect_body;
  1847.  wp = s_6268->when_part;
  1848.  while (1) {
  1849.   if ((!((wp==((TR_PROTECT_WHEN) NULL))))) {
  1850.   }
  1851.   else {
  1852.    goto after_loop;
  1853.   }
  1854.   tp_6271 = TRANS_tp_of_TR_T(self, wp->tp);
  1855.   oex_tp = self->ex_tp;
  1856.   self->ex_tp = tp_6271;
  1857.   old_in_protect_then = self->in_protect_then;
  1858.   self->in_protect_then = TRUE;
  1859.   r_6270->tgts = FLISTTP_push_TP_(r_6270->tgts, tp_6271);
  1860.   local0 = r_6270->stmts;
  1861.   r_6270->stmts = FLISTAM_STMT_pus(local0, TRANS_transform__6099(self, wp->then_part));
  1862.   self->in_protect_then = old_in_protect_then;
  1863.   self->ex_tp = oex_tp;
  1864.   wp = wp->next_8;
  1865.  }
  1866.  after_loop: ;
  1867.  if (s_6268->no_else) {
  1868.   r_6270->no_else = TRUE;
  1869.  }
  1870.  else {
  1871.   oex_tp_6272 = self->ex_tp;
  1872.   self->ex_tp = ((TP) self->prog->tp_builtin->dollar_ob);
  1873.   old_in_protect_t_6273 = self->in_protect_then;
  1874.   self->in_protect_then = TRUE;
  1875.   r_6270->else_stmts = TRANS_transform__6099(self, s_6268->else_part);
  1876.   self->in_protect_then = old_in_protect_t_6273;
  1877.   self->ex_tp = oex_tp_6272;
  1878.  }
  1879.  return ((AM_STMT) r_6270);
  1880. }
  1881.  
  1882.  
  1883. void TRANS_stmts_afte_6275(TRANS self, TR_RAISE_STMT s_6276) {
  1884.  PROG_err_loc_PRO(self->prog, ((PROG_ERR) s_6276));
  1885.  PROG_err_STR(self->prog, ((STR) &Nostatementsmayf_6277));
  1886. }
  1887.  
  1888.  
  1889. AM_RAISE_STMT AM_RAISE_STMT_cr(AM_RAISE_STMT self, SFILE_ID source_6278) {
  1890.  AM_RAISE_STMT noname6279;
  1891.  AM_RAISE_STMT r_6280;
  1892.  AM_RAISE_STMT local0;
  1893.  local0 = ((AM_RAISE_STMT) sbi_alloc(sizeof(struct AM_RAISE_STMT_struct), AM_RAISE_STMT_tag));
  1894.  r_6280 = local0;
  1895.  r_6280->source_38 = source_6278;
  1896.  return r_6280;
  1897. }
  1898.  
  1899.  
  1900. AM_STMT TRANS_transform__6281(TRANS self, TR_RAISE_STMT s_6282) {
  1901.  AM_STMT noname6283;
  1902.  AM_RAISE_STMT r_6284;
  1903.  if ((!((s_6282->next_8==((TR_STMT) NULL))))) {
  1904.   TRANS_stmts_afte_6275(self, s_6282);
  1905.  }
  1906.  r_6284 = AM_RAISE_STMT_cr(((AM_RAISE_STMT) NULL), s_6282->source_38);
  1907.  r_6284->val_16 = TRANS_transform__5198(self, s_6282->val_16, ((TP) NULL));
  1908.  if ((r_6284->val_16==((AM_EXPR) NULL))) {
  1909.   return ((AM_STMT) NULL);
  1910.  }
  1911.  return ((AM_STMT) r_6284);
  1912. }
  1913.  
  1914.  
  1915. void TRANS_break_not_(TRANS self, TR_EXPR_STMT s_6285) {
  1916.  PROG_err_loc_PRO(self->prog, ((PROG_ERR) s_6285));
  1917.  PROG_err_STR(self->prog, ((STR) &breakwhileandunt));
  1918. }
  1919.  
  1920.  
  1921. AM_BREAK_STMT AM_BREAK_STMT_cr(AM_BREAK_STMT self, SFILE_ID source_6286) {
  1922.  AM_BREAK_STMT noname6287;
  1923.  AM_BREAK_STMT r_6288;
  1924.  AM_BREAK_STMT local0;
  1925.  local0 = ((AM_BREAK_STMT) sbi_alloc(sizeof(struct AM_BREAK_STMT_struct), AM_BREAK_STMT_tag));
  1926.  r_6288 = local0;
  1927.  r_6288->source_38 = source_6286;
  1928.  return r_6288;
  1929. }
  1930.  
  1931.  
  1932. void TRANS_expr_stmt_(TRANS self, TR_EXPR_STMT s_6289) {
  1933.  PROG_err_loc_PRO(self->prog, ((PROG_ERR) s_6289));
  1934.  PROG_err_STR(self->prog, ((STR) &Expressionsuseda));
  1935. }
  1936.  
  1937.  
  1938. AM_STMT TRANS_transform__6290(TRANS self, TR_EXPR_STMT s_6291) {
  1939.  AM_STMT noname6292;
  1940.  TR_EXPR e_6293;
  1941.  AM_EXPR_STMT r_6294;
  1942.  e_6293 = s_6291->e;
  1943.  if (e_6293==NULL) {
  1944.   TRANS_expr_stmt_(self, s_6291);
  1945.  } else
  1946.  switch (e_6293->header.tag) {
  1947.   case TR_BREAK_EXPR_tag:
  1948.    if ((self->cur_loop==((AM_LOOP_STMT) NULL))) {
  1949.     TRANS_break_not_(self, s_6291);
  1950.     return ((AM_STMT) NULL);
  1951.    }
  1952.    return ((AM_STMT) AM_BREAK_STMT_cr(((AM_BREAK_STMT) NULL), s_6291->source_38)); break;
  1953.   case TR_CALL_EXPR_tag:
  1954.    r_6294 = AM_EXPR_STMT_cre(((AM_EXPR_STMT) NULL), s_6291->source_38);
  1955.    r_6294->expr = TRANS_transform__5492(self, ((TR_CALL_EXPR) e_6293), ((TP) NULL), FALSE);
  1956.    if ((r_6294->expr==((AM_EXPR) NULL))) {
  1957.     return ((AM_STMT) NULL);
  1958.    }
  1959.    return ((AM_STMT) r_6294); break;
  1960.   default: ;
  1961.    TRANS_expr_stmt_(self, s_6291);
  1962.  }
  1963.  return ((AM_STMT) NULL);
  1964. }
  1965.  
  1966.  
  1967. AM_STMT TRANS_transform__6295(TRANS self, TR_STMT s_6296) {
  1968.  AM_STMT noname6297;
  1969.  if ((s_6296==((TR_STMT) NULL))) {
  1970.   return ((AM_STMT) NULL);
  1971.  }
  1972.  if (s_6296==NULL) {
  1973.  } else
  1974.  switch (s_6296->header.tag) {
  1975.   case TR_DEC_STMT_tag:
  1976.    return TRANS_transform__6035(self, ((TR_DEC_STMT) s_6296)); break;
  1977.   case TR_ASSIGN_STMT_tag:
  1978.    return TRANS_transform__6070(self, ((TR_ASSIGN_STMT) s_6296)); break;
  1979.   case TR_IF_STMT_tag:
  1980.    return TRANS_transform__6095(self, ((TR_IF_STMT) s_6296)); break;
  1981.   case TR_LOOP_STMT_tag:
  1982.    return TRANS_transform__6103(self, ((TR_LOOP_STMT) s_6296)); break;
  1983.   case TR_RETURN_STMT_tag:
  1984.    return TRANS_transform__6115(self, ((TR_RETURN_STMT) s_6296)); break;
  1985.   case TR_YIELD_STMT_tag:
  1986.    return TRANS_transform__6129(self, ((TR_YIELD_STMT) s_6296)); break;
  1987.   case TR_QUIT_STMT_tag:
  1988.    return TRANS_transform__6137(self, ((TR_QUIT_STMT) s_6296)); break;
  1989.   case TR_CASE_STMT_tag:
  1990.    return TRANS_transform__6219(self, ((TR_CASE_STMT) s_6296)); break;
  1991.   case TR_TYPECASE_STMT_tag:
  1992.    return TRANS_transform__6248(self, ((TR_TYPECASE_STMT) s_6296)); break;
  1993.   case TR_ASSERT_STMT_tag:
  1994.    return TRANS_transform__6260(self, ((TR_ASSERT_STMT) s_6296)); break;
  1995.   case TR_PROTECT_STMT_tag:
  1996.    return TRANS_transform__6267(self, ((TR_PROTECT_STMT) s_6296)); break;
  1997.   case TR_RAISE_STMT_tag:
  1998.    return TRANS_transform__6281(self, ((TR_RAISE_STMT) s_6296)); break;
  1999.   case TR_EXPR_STMT_tag:
  2000.    return TRANS_transform__6290(self, ((TR_EXPR_STMT) s_6296)); break;
  2001.   default: ;
  2002.    fprintf(stderr,"No applicable type in typecase ./trans.sa:398:14\n");
  2003.    exit(16);
  2004.  }
  2005.  return ((AM_STMT) NULL);
  2006. }
  2007.  
  2008.  
  2009. AM_LOCAL_EXPR FLISTAM_LOCAL_EX_6298(FLISTAM_LOCAL_EXPR self) {
  2010.  AM_LOCAL_EXPR noname6299;
  2011.  AM_LOCAL_EXPR r_6300;
  2012.  INT local0;
  2013.  INT local1;
  2014.  local0 = FLISTAM_LOCAL_EX(self);
  2015.  if ((local0==0)) {
  2016.   return ((AM_LOCAL_EXPR) NULL);
  2017.  }
  2018.  r_6300 = FLISTAM_LOCAL_EX_3775(self, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  2019.  local1 = (c_INT_minus_INT_INT_chk(self->loc_17,1));
  2020.  FLISTAM_LOCAL_EX_5376(self, local1, ((AM_LOCAL_EXPR) NULL));
  2021.  self->loc_17 = (c_INT_minus_INT_INT_chk(self->loc_17,1));
  2022.  return r_6300;
  2023.  if (!FLISTAM_LOCAL_EX_3769(self)) {
  2024.   fprintf(stderr,"Failed invariant FLIST{AM_LOCAL_EXPR}::invariant:BOOL ../Library/flist.sa:90:6\n");
  2025.   exit(16);
  2026.  }
  2027. }
  2028.  
  2029.  
  2030. AM_STMT TRANS_transform__6099(TRANS self, TR_STMT s_6301) {
  2031.  AM_STMT noname6302;
  2032.  INT osize = ((INT) 0);
  2033.  AM_STMT r_6303 = ((AM_STMT) NULL);
  2034.  AM_LOCAL_EXPR ignore_6304;
  2035.  AM_STMT local0;
  2036.  TR_STMT local1;
  2037.  INT local2;
  2038.  if ((s_6301==((TR_STMT) NULL))) {
  2039.   return ((AM_STMT) NULL);
  2040.  }
  2041.  if ((!((self->active_locals==((FLISTAM_LOCAL_EXPR) NULL))))) {
  2042.   osize = FLISTAM_LOCAL_EX(self->active_locals);
  2043.  }
  2044.  while (1) {
  2045.   if ((!((s_6301==((TR_STMT) NULL))))) {
  2046.   }
  2047.   else {
  2048.    goto after_loop;
  2049.   }
  2050.   if ((r_6303==((AM_STMT) NULL))) {
  2051.    r_6303 = TRANS_transform__6295(self, s_6301);
  2052.   }
  2053.   else {
  2054.    local0 = r_6303;
  2055.    (*AM_STMT_append_A[local0->header.tag+AM_STMT_append_A_offset])(local0, TRANS_transform__6295(self, s_6301));
  2056.   }
  2057.   local1 = s_6301;
  2058.   s_6301 = (*TR_STMT_next_TR_STMT[local1->header.tag+TR_STMT_next_TR_STMT_offset])(local1);
  2059.  }
  2060.  after_loop: ;
  2061.  if ((!((self->active_locals==((FLISTAM_LOCAL_EXPR) NULL))))) {
  2062.   while (1) {
  2063.    local2 = FLISTAM_LOCAL_EX(self->active_locals);
  2064.    if ((local2>osize)) {
  2065.    }
  2066.    else {
  2067.     goto after_loop_6306;
  2068.    }
  2069.    ignore_6304 = FLISTAM_LOCAL_EX_6298(self->active_locals);
  2070.   }
  2071.   after_loop_6306: ;
  2072.  }
  2073.  return r_6303;
  2074. }
  2075.  
  2076.  
  2077. AM_ROUT_DEF TRANS_transform__6308(TRANS self, ELT e_6309, TR_ROUT_DEF tr_6310) {
  2078.  AM_ROUT_DEF noname6311;
  2079.  AM_ROUT_DEF r_6312;
  2080.  INT i = ((INT) 0);
  2081.  TR_ARG_DEC na;
  2082.  AM_LOCAL_EXPR l;
  2083.  AM_PRE_STMT pres = ((AM_PRE_STMT) NULL);
  2084.  AM_POST_STMT posts = ((AM_POST_STMT) NULL);
  2085.  AM_STMT code_6313 = ((AM_STMT) NULL);
  2086.  AM_INVARIANT_STMT inv = ((AM_INVARIANT_STMT) NULL);
  2087.  SIG isig;
  2088.  AM_ROUT_CALL_EXPR icall;
  2089.  AM_ROUT_DEF local0;
  2090.  INT local1;
  2091.  INT local2;
  2092.  INT local3;
  2093.  AM_LOCAL_EXPR local4;
  2094.  SFILE_ID local5;
  2095.  IDENT local6;
  2096.  AM_LOCAL_EXPR local7;
  2097.  SFILE_ID local8;
  2098.  IDENT local9;
  2099.  INT local10;
  2100.  AM_LOCAL_EXPR local11;
  2101.  SFILE_ID local12;
  2102.  IDENT local13;
  2103.  INT local14;
  2104.  BOOL local15;
  2105.  AM_STMT local16;
  2106.  AM_STMT local17;
  2107.  AM_STMT local18;
  2108.  AM_STMT local19;
  2109.  if (e_6309->sig_6->is_builtin) {
  2110.   if ((!(BE_built_in_whic(self->prog->back_end, e_6309->sig_6)))) {
  2111.    return ((AM_ROUT_DEF) NULL);
  2112.   }
  2113.  }
  2114.  if (ELT_is_invariant(e_6309)) {
  2115.   self->in_invariant = TRUE;
  2116.  }
  2117.  else {
  2118.   self->in_invariant = FALSE;
  2119.  }
  2120.  if (tr_6310->is_abstract) {
  2121.   if (e_6309->is_external) {
  2122.    return ((AM_ROUT_DEF) NULL);
  2123.   }
  2124.   else {
  2125.    PROG_err_loc_PRO(self->prog, ((PROG_ERR) tr_6310));
  2126.    PROG_err_STR(self->prog, ((STR) &CompilererrorTRA_6314));
  2127.    return ((AM_ROUT_DEF) NULL);
  2128.   }
  2129.  }
  2130.  TRANS_check_retu(self, tr_6310);
  2131.  local0 = ((AM_ROUT_DEF) NULL);
  2132.  local1 = 1;
  2133.  local2 = (c_INT_plus_INT_INT_chk(local1,ARRAYTP_size_INT(e_6309->sig_6->args_7)));
  2134.  r_6312 = AM_ROUT_DEF_crea(local0, local2, tr_6310->source_38);
  2135.  r_6312->srcsig = e_6309->srcsig;
  2136.  r_6312->sig_6 = e_6309->sig_6;
  2137.  if (e_6309->is_external) {
  2138.   r_6312->is_external = TRUE;
  2139.  }
  2140.  local3 = 0;
  2141.  local4 = ((AM_LOCAL_EXPR) NULL);
  2142.  local5 = tr_6310->source_38;
  2143.  local6 = self->prog->ident_builtin->self_ident;
  2144.  AM_ROUT_DEF_aset(r_6312, local3, AM_LOCAL_EXPR_cr(local4, local5, local6, ELT_tp_TP(e_6309)));
  2145.  if (SIG_has_ret_BOOL(e_6309->sig_6)) {
  2146.   local7 = ((AM_LOCAL_EXPR) NULL);
  2147.   local8 = tr_6310->source_38;
  2148.   local9 = IDENT_zero;
  2149.   r_6312->rres = AM_LOCAL_EXPR_cr(local7, local8, local9, ELT_ret_TP(e_6309));
  2150.   r_6312->locals_57 = FLISTAM_LOCAL_EX_5379(r_6312->locals_57, r_6312->rres);
  2151.  }
  2152.  i = 0;
  2153.  na = tr_6310->args_dec;
  2154.  local10 = TR_ARG_DEC_size_INT(na);
  2155.  if ((local10!=ARRAYTP_size_INT(e_6309->sig_6->args_7))) {
  2156.   PROG_err_loc_PRO(self->prog, ((PROG_ERR) tr_6310));
  2157.   PROG_err_STR(self->prog, ((STR) &CompilererrorTRA_6315));
  2158.   return ((AM_ROUT_DEF) NULL);
  2159.  }
  2160.  while (1) {
  2161.   if ((i<ARRAYTP_size_INT(e_6309->sig_6->args_7))) {
  2162.   }
  2163.   else {
  2164.    goto after_loop;
  2165.   }
  2166.   local11 = ((AM_LOCAL_EXPR) NULL);
  2167.   local12 = tr_6310->source_38;
  2168.   local13 = na->name_19;
  2169.   l = AM_LOCAL_EXPR_cr(local11, local12, local13, ARRAYTP_aget_INT_TP(e_6309->sig_6->args_7, i));
  2170.   local14 = (c_INT_plus_INT_INT_chk(i,1));
  2171.   AM_ROUT_DEF_aset(r_6312, local14, l);
  2172.   i = (c_INT_plus_INT_INT_chk(i,1));
  2173.   na = na->next_8;
  2174.  }
  2175.  after_loop: ;
  2176.  self->cur_rout = r_6312;
  2177.  if ((!((tr_6310->pre_e==((TR_EXPR) NULL))))) {
  2178.   self->in_pre = TRUE;
  2179.   pres = AM_PRE_STMT_crea(((AM_PRE_STMT) NULL), tr_6310->source_38);
  2180.   pres->tp = self->impl->tp;
  2181.   pres->test_40 = TRANS_transform__5198(self, tr_6310->pre_e, ((TP) self->prog->tp_builtin->bool_2));
  2182.   if ((pres->test_40==((AM_EXPR) NULL))) {
  2183.    pres = ((AM_PRE_STMT) NULL);
  2184.   }
  2185.   self->in_pre = FALSE;
  2186.  }
  2187.  if ((!((tr_6310->post_e==((TR_EXPR) NULL))))) {
  2188.   self->in_post = TRUE;
  2189.   posts = AM_POST_STMT_cre(((AM_POST_STMT) NULL), tr_6310->source_38);
  2190.   posts->tp = self->impl->tp;
  2191.   posts->test_40 = TRANS_transform__5198(self, tr_6310->post_e, ((TP) self->prog->tp_builtin->bool_2));
  2192.   if ((posts->test_40==((AM_EXPR) NULL))) {
  2193.    posts = ((AM_POST_STMT) NULL);
  2194.   }
  2195.   self->in_post = FALSE;
  2196.  }
  2197.  if (TRANS_is_array_s(self, e_6309->srcsig)) {
  2198.   code_6313 = TRANS_transform__6026(self, e_6309);
  2199.  }
  2200.  else {
  2201.   code_6313 = TRANS_transform__6099(self, tr_6310->stmts);
  2202.  }
  2203.  if ((!(e_6309->is_private))) {
  2204.   local15 = (!(self->in_invariant));
  2205.  } else {
  2206.   local15 = FALSE;
  2207.  }
  2208.  if (local15) {
  2209.   isig = IMPL_invariant_s(self->impl);
  2210.   if ((!((isig==((SIG) NULL))))) {
  2211.    inv = AM_INVARIANT_STM(((AM_INVARIANT_STMT) NULL), tr_6310->source_38);
  2212.    inv->sig_6 = isig;
  2213.    icall = AM_ROUT_CALL_EXP_5400(((AM_ROUT_CALL_EXPR) NULL), 1, tr_6310->source_38);
  2214.    icall->fun = isig;
  2215.    r_6312->calls_58 = FLISTAM_EXPR_pus(r_6312->calls_58, ((AM_EXPR) icall));
  2216.   }
  2217.  }
  2218.  r_6312->code_56 = self->init_stmts;
  2219.  if ((r_6312->code_56==((AM_STMT) NULL))) {
  2220.   r_6312->code_56 = ((AM_STMT) pres);
  2221.  }
  2222.  else {
  2223.   local16 = r_6312->code_56;
  2224.   (*AM_STMT_append_A[local16->header.tag+AM_STMT_append_A_offset])(local16, ((AM_STMT) pres));
  2225.  }
  2226.  if ((r_6312->code_56==((AM_STMT) NULL))) {
  2227.   r_6312->code_56 = code_6313;
  2228.  }
  2229.  else {
  2230.   local17 = r_6312->code_56;
  2231.   (*AM_STMT_append_A[local17->header.tag+AM_STMT_append_A_offset])(local17, code_6313);
  2232.  }
  2233.  if ((r_6312->code_56==((AM_STMT) NULL))) {
  2234.   r_6312->code_56 = ((AM_STMT) posts);
  2235.  }
  2236.  else {
  2237.   local18 = r_6312->code_56;
  2238.   (*AM_STMT_append_A[local18->header.tag+AM_STMT_append_A_offset])(local18, ((AM_STMT) posts));
  2239.  }
  2240.  if ((r_6312->code_56==((AM_STMT) NULL))) {
  2241.   r_6312->code_56 = ((AM_STMT) inv);
  2242.  }
  2243.  else {
  2244.   local19 = r_6312->code_56;
  2245.   (*AM_STMT_append_A[local19->header.tag+AM_STMT_append_A_offset])(local19, ((AM_STMT) inv));
  2246.  }
  2247.  return r_6312;
  2248. }
  2249.  
  2250.  
  2251. AM_ROUT_DEF TRANS_transform__6317(TRANS self, ELT e_6318) {
  2252.  AM_ROUT_DEF noname6319;
  2253.  TRANS t_6320;
  2254.  TR_CLASS_ELT tr_6321;
  2255.  AM_ROUT_DEF r_6322 = ((AM_ROUT_DEF) NULL);
  2256.  if (!((!((e_6318==((ELT) NULL)))))) {
  2257.   fprintf(stderr,"Violation of precondition ./trans.sa:89:16\n");
  2258.   exit(16);
  2259.  }
  2260.  t_6320 = TRANS_create_ELT(((TRANS) NULL), e_6318);
  2261.  if ((t_6320==((TRANS) NULL))) {
  2262.   return ((AM_ROUT_DEF) NULL);
  2263.  }
  2264.  tr_6321 = e_6318->tr;
  2265.  if (tr_6321==NULL) {
  2266.  } else
  2267.  switch (tr_6321->header.tag) {
  2268.   case TR_CONST_DEF_tag:
  2269.    r_6322 = TRANS_transform__5949(t_6320, e_6318, ((TR_CONST_DEF) tr_6321)); break;
  2270.   case TR_SHARED_DEF_tag:
  2271.    r_6322 = TRANS_transform__5967(t_6320, e_6318, ((TR_SHARED_DEF) tr_6321)); break;
  2272.   case TR_ATTR_DEF_tag:
  2273.    r_6322 = TRANS_transform__5984(t_6320, e_6318, ((TR_ATTR_DEF) tr_6321)); break;
  2274.   case TR_ROUT_DEF_tag:
  2275.    r_6322 = TRANS_transform__6308(t_6320, e_6318, ((TR_ROUT_DEF) tr_6321)); break;
  2276.   default: ;
  2277.    fprintf(stderr,"No applicable type in typecase ./trans.sa:97:14\n");
  2278.    exit(16);
  2279.  }
  2280.  return r_6322;
  2281. }
  2282.  
  2283.  
  2284. void INLINE_ATTR_READ_6323(INLINE_ATTR_READ self, INT routines_6324) {
  2285.  shared_INLINE_AT = routines_6324;
  2286. }
  2287.  
  2288.  
  2289. INLINE_ATTR_READ INLINE_ATTR_READ_6325(INLINE_ATTR_READ self, AM_ROUT_DEF am_6326) {
  2290.  INLINE_ATTR_READ noname6327;
  2291.  INLINE_ATTR_READ r_6328;
  2292.  AM_STMT stmt;
  2293.  AM_EXPR val_6329;
  2294.  INLINE_ATTR_READ local0;
  2295.  local0 = ((INLINE_ATTR_READ) sbi_alloc(sizeof(struct INLINE_ATTR_READ_struct), INLINE_ATTR_READ_tag));
  2296.  r_6328 = local0;
  2297.  r_6328->sig_6 = am_6326->sig_6;
  2298.  stmt = am_6326->code_56;
  2299.  if (stmt==NULL) {
  2300.  } else
  2301.  switch (stmt->header.tag) {
  2302.   case AM_RETURN_STMT_tag:
  2303.    val_6329 = ((AM_RETURN_STMT) stmt)->val_16;
  2304.    if (val_6329==NULL) {
  2305.    } else
  2306.    switch (val_6329->header.tag) {
  2307.     case AM_ATTR_EXPR_tag:
  2308.      r_6328->at = ((AM_ATTR_EXPR) val_6329)->at;
  2309.      r_6328->self_tp = ((AM_ATTR_EXPR) val_6329)->self_tp;
  2310.      r_6328->tp_at = ((AM_ATTR_EXPR) val_6329)->tp_at; break;
  2311.     default: ;
  2312.      fprintf(stderr,"No applicable type in typecase ./inline.sa:51:18\n");
  2313.      exit(16);
  2314.    } break;
  2315.   default: ;
  2316.    fprintf(stderr,"No applicable type in typecase ./inline.sa:49:16\n");
  2317.    exit(16);
  2318.  }
  2319.  INLINE_ATTR_READ_6323(self, (c_INT_plus_INT_INT_chk(shared_INLINE_AT,1)));
  2320.  return r_6328;
  2321. }
  2322.  
  2323.  
  2324. void INLINE_GLOBAL_RE(INLINE_GLOBAL_READ self, INT routines_6330) {
  2325.  shared_INLINE_GL = routines_6330;
  2326. }
  2327.  
  2328.  
  2329. INLINE_GLOBAL_READ INLINE_GLOBAL_RE_6331(INLINE_GLOBAL_READ self, AM_ROUT_DEF am_6332) {
  2330.  INLINE_GLOBAL_READ noname6333;
  2331.  INLINE_GLOBAL_READ r_6334;
  2332.  AM_STMT stmt;
  2333.  AM_EXPR val_6335;
  2334.  INLINE_GLOBAL_READ local0;
  2335.  local0 = ((INLINE_GLOBAL_READ) sbi_alloc(sizeof(struct INLINE_GLOBAL_READ_struct), INLINE_GLOBAL_READ_tag));
  2336.  r_6334 = local0;
  2337.  r_6334->sig_6 = am_6332->sig_6;
  2338.  stmt = am_6332->code_56;
  2339.  if (stmt==NULL) {
  2340.  } else
  2341.  switch (stmt->header.tag) {
  2342.   case AM_RETURN_STMT_tag:
  2343.    val_6335 = ((AM_RETURN_STMT) stmt)->val_16;
  2344.    if (val_6335==NULL) {
  2345.    } else
  2346.    switch (val_6335->header.tag) {
  2347.     case AM_GLOBAL_EXPR_tag:
  2348.      r_6334->age = ((AM_GLOBAL_EXPR) val_6335); break;
  2349.     default: ;
  2350.      fprintf(stderr,"No applicable type in typecase ./inline.sa:164:18\n");
  2351.      exit(16);
  2352.    } break;
  2353.   default: ;
  2354.    fprintf(stderr,"No applicable type in typecase ./inline.sa:162:16\n");
  2355.    exit(16);
  2356.  }
  2357.  INLINE_GLOBAL_RE(self, (c_INT_plus_INT_INT_chk(shared_INLINE_GL,1)));
  2358.  return r_6334;
  2359. }
  2360.  
  2361.  
  2362. void INLINE_ATTR_WRIT(INLINE_ATTR_WRITE self, INT routines_6336) {
  2363.  shared_INLINE_AT_6337 = routines_6336;
  2364. }
  2365.  
  2366.  
  2367. INLINE_ATTR_WRITE INLINE_ATTR_WRIT_6338(INLINE_ATTR_WRITE self, AM_ROUT_DEF am_6339) {
  2368.  INLINE_ATTR_WRITE noname6340;
  2369.  INLINE_ATTR_WRITE r_6341;
  2370.  AM_STMT stmt;
  2371.  AM_EXPR dest_6342;
  2372.  INLINE_ATTR_WRITE local0;
  2373.  local0 = ((INLINE_ATTR_WRITE) sbi_alloc(sizeof(struct INLINE_ATTR_WRITE_struct), INLINE_ATTR_WRITE_tag));
  2374.  r_6341 = local0;
  2375.  r_6341->sig_6 = am_6339->sig_6;
  2376.  stmt = am_6339->code_56;
  2377.  if (stmt==NULL) {
  2378.  } else
  2379.  switch (stmt->header.tag) {
  2380.   case AM_ASSIGN_STMT_tag:
  2381.    dest_6342 = ((AM_ASSIGN_STMT) stmt)->dest;
  2382.    if (dest_6342==NULL) {
  2383.    } else
  2384.    switch (dest_6342->header.tag) {
  2385.     case AM_ATTR_EXPR_tag:
  2386.      r_6341->self_tp = ((AM_ATTR_EXPR) dest_6342)->self_tp;
  2387.      r_6341->at = ((AM_ATTR_EXPR) dest_6342)->at;
  2388.      r_6341->tp_at = ((AM_ATTR_EXPR) dest_6342)->tp_at; break;
  2389.     default: ;
  2390.      fprintf(stderr,"No applicable type in typecase ./inline.sa:93:18\n");
  2391.      exit(16);
  2392.    } break;
  2393.   default: ;
  2394.    fprintf(stderr,"No applicable type in typecase ./inline.sa:91:16\n");
  2395.    exit(16);
  2396.  }
  2397.  INLINE_ATTR_WRIT(self, (c_INT_plus_INT_INT_chk(shared_INLINE_AT_6337,1)));
  2398.  return r_6341;
  2399. }
  2400.  
  2401.  
  2402. INLINE_TBL INLINE_TBL_test_(INLINE_TBL self, AM_ROUT_DEF am_6343) {
  2403.  INLINE_TBL noname6344;
  2404.  INLINE_TBL r_6345;
  2405.  AM_STMT stmts_6346;
  2406.  AM_EXPR val_6347;
  2407.  AM_EXPR dest_6348;
  2408.  AM_EXPR src_6349;
  2409.  BOOL local0;
  2410.  BOOL local1;
  2411.  SYS local2;
  2412.  AM_EXPR local3;
  2413.  BOOL local4;
  2414.  SYS local5;
  2415.  AM_EXPR local6;
  2416.  SYS local7;
  2417.  r_6345 = self;
  2418.  if ((!(am_6343->is_abstract))) {
  2419.   local1 = (!(am_6343->is_external));
  2420.  } else {
  2421.   local1 = FALSE;
  2422.  }
  2423.  if (local1) {
  2424.   local0 = (!((am_6343->code_56==((AM_STMT) NULL))));
  2425.  } else {
  2426.   local0 = FALSE;
  2427.  }
  2428.  if (local0) {
  2429.   stmts_6346 = am_6343->code_56;
  2430.   if (stmts_6346==NULL) {
  2431.   } else
  2432.   switch (stmts_6346->header.tag) {
  2433.    case AM_RETURN_STMT_tag:
  2434.     val_6347 = ((AM_RETURN_STMT) stmts_6346)->val_16;
  2435.     if (val_6347==NULL) {
  2436.     } else
  2437.     switch (val_6347->header.tag) {
  2438.      case AM_ATTR_EXPR_tag:
  2439.       local2 = ((SYS) NULL);
  2440.       local3 = ((AM_ATTR_EXPR) val_6347)->ob;
  2441.       if (c_SYS_ob_eq_OB_OB_BOOL(((OB) local3),((OB) AM_ROUT_DEF_aget(am_6343, 0)))) {
  2442.        r_6345 = INLINE_TBL_inser(r_6345, ((INLINE) INLINE_ATTR_READ_6325(((INLINE_ATTR_READ) NULL), am_6343)));
  2443.       } break;
  2444.      case AM_GLOBAL_EXPR_tag:
  2445.       r_6345 = INLINE_TBL_inser(r_6345, ((INLINE) INLINE_GLOBAL_RE_6331(((INLINE_GLOBAL_READ) NULL), am_6343))); break;
  2446.      default: ;
  2447.     } break;
  2448.    case AM_ASSIGN_STMT_tag:
  2449.     dest_6348 = ((AM_ASSIGN_STMT) stmts_6346)->dest;
  2450.     src_6349 = ((AM_ASSIGN_STMT) stmts_6346)->src_42;
  2451.     if (dest_6348==NULL) {
  2452.     } else
  2453.     switch (dest_6348->header.tag) {
  2454.      case AM_ATTR_EXPR_tag:
  2455.       local5 = ((SYS) NULL);
  2456.       local6 = ((AM_ATTR_EXPR) dest_6348)->ob;
  2457.       if (c_SYS_ob_eq_OB_OB_BOOL(((OB) local6),((OB) AM_ROUT_DEF_aget(am_6343, 0)))) {
  2458.        local7 = ((SYS) NULL);
  2459.        local4 = c_SYS_ob_eq_OB_OB_BOOL(((OB) src_6349),((OB) AM_ROUT_DEF_aget(am_6343, 1)));
  2460.       } else {
  2461.        local4 = FALSE;
  2462.       }
  2463.       if (local4) {
  2464.        r_6345 = INLINE_TBL_inser(r_6345, ((INLINE) INLINE_ATTR_WRIT_6338(((INLINE_ATTR_WRITE) NULL), am_6343)));
  2465.       } break;
  2466.      default: ;
  2467.     } break;
  2468.    default: ;
  2469.   }
  2470.  }
  2471.  return r_6345;
  2472.  if (!INLINE_TBL_invar(self)) {
  2473.   fprintf(stderr,"Failed invariant INLINE_TBL::invariant:BOOL ./inline.sa:327:18\n");
  2474.   exit(16);
  2475.  }
  2476. }
  2477.  
  2478.  
  2479. AM_EXPR FLISTAM_EXPR_are_6350(FLISTAM_EXPR self, INT ind_6351) {
  2480.  AM_EXPR noname6352;
  2481.  BOOL local0;
  2482.  INT local1;
  2483.  INT local2;
  2484.  if ((!((self==((FLISTAM_EXPR) NULL))))) {
  2485.   local1 = 0;
  2486.   local2 = (self->asize);
  2487.   local0 = INT_is_bet_INT_I(ind_6351, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  2488.  } else {
  2489.   local0 = FALSE;
  2490.  }
  2491.  if (!(local0)) {
  2492.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  2493.   exit(16);
  2494.  }
  2495.  if (ind_6351<0||ind_6351>=self->asize) {
  2496.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  2497.   exit(16);
  2498.  }
  2499.  return self->arr_part[ind_6351];
  2500. }
  2501.  
  2502.  
  2503. AM_EXPR FLISTAM_EXPR_age(FLISTAM_EXPR self, INT ind_6353) {
  2504.  AM_EXPR noname6354;
  2505.  BOOL local0;
  2506.  INT local1;
  2507.  if ((!((self==((FLISTAM_EXPR) NULL))))) {
  2508.   local1 = 0;
  2509.   local0 = INT_is_bet_INT_I(ind_6353, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  2510.  } else {
  2511.   local0 = FALSE;
  2512.  }
  2513.  if (!(local0)) {
  2514.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:68:7\n");
  2515.   exit(16);
  2516.  }
  2517.  return FLISTAM_EXPR_are_6350(self, ind_6353);
  2518.  if (!FLISTAM_EXPR_inv(self)) {
  2519.   fprintf(stderr,"Failed invariant FLIST{$AM_EXPR}::invariant:BOOL ../Library/flist.sa:68:7\n");
  2520.   exit(16);
  2521.  }
  2522. }
  2523.  
  2524.  
  2525. void PROG_AM_GENERATE_5472(PROG_AM_GENERATE self, SIG s_6355) {
  2526.  ELT elt_6356;
  2527.  AM_ROUT_DEF am_6357;
  2528.  INT i = ((INT) 0);
  2529.  AM_EXPR c_6358;
  2530.  TP local0;
  2531.  BOOL local1;
  2532.  OUT local2;
  2533.  OUT local3;
  2534.  OUT local4;
  2535.  OUT local5;
  2536.  if (!((!((s_6355==((SIG) NULL)))))) {
  2537.   fprintf(stderr,"Violation of precondition ./prog.sa:736:13\n");
  2538.   exit(16);
  2539.  }
  2540.  if ((!((SIG_TBL_sig_eq_t(self->sig_tbl, s_6355)==((SIG) NULL))))) {
  2541.   return;
  2542.  }
  2543.  local0 = s_6355->tp;
  2544.  if ((*TP_is_abstract_BOOL[local0->header.tag+TP_is_abstract_BOOL_offset])(local0)) {
  2545.   PROG_AM_GENERATE_5071(self, s_6355);
  2546.   return;
  2547.  }
  2548.  self->sig_tbl = SIG_TBL_insert_S(self->sig_tbl, s_6355);
  2549.  elt_6356 = ELT_TBL_elt_with(IMPL_TBL_impl_of(self->prog->impl_tbl, s_6355->tp)->elts, s_6355);
  2550.  if (elt_6356->is_external) {
  2551.   local1 = ELT_is_abstract_BOOL(elt_6356);
  2552.  } else {
  2553.   local1 = FALSE;
  2554.  }
  2555.  if (local1) {
  2556.   return;
  2557.  }
  2558.  if ((elt_6356==((ELT) NULL))) {
  2559.   return;
  2560.  }
  2561.  am_6357 = TRANS_transform__6317(((TRANS) NULL), elt_6356);
  2562.  if ((am_6357==((AM_ROUT_DEF) NULL))) {
  2563.   return;
  2564.  }
  2565.  self->inline_tbl = INLINE_TBL_test_(self->inline_tbl, am_6357);
  2566.  if (self->prog->show_am) {
  2567.   local2 = OUT_create_OUT(((OUT) NULL));
  2568.   local3 = OUT_plus_STR_OUT(local2, ((STR) &AMfor_6359));
  2569.   local4 = OUT_plus_STR_OUT(local3, SIG_str_STR(am_6357->sig_6));
  2570.   OUT_plus_STR(local4, ((STR) &name_6360));
  2571.   AM_OUT_AM_ROUT_D(((AM_OUT) NULL), am_6357);
  2572.   local5 = OUT_create_OUT(((OUT) NULL));
  2573.   OUT_plus_STR(local5, ((STR) &name_6361));
  2574.  }
  2575.  while (1) {
  2576.   if ((i<FLISTAM_EXPR_siz(am_6357->calls_58))) {
  2577.   }
  2578.   else {
  2579.    goto after_loop;
  2580.   }
  2581.   c_6358 = FLISTAM_EXPR_age(am_6357->calls_58, i);
  2582.   if (c_6358==NULL) {
  2583.   } else
  2584.   switch (c_6358->header.tag) {
  2585.    case AM_ROUT_CALL_EXPR_tag:
  2586.     if ((SIG_TBL_sig_eq_t(self->sig_tbl, ((AM_ROUT_CALL_EXPR) c_6358)->fun)==((SIG) NULL))) {
  2587.      self->sig_list = FLISTSIG_push_SI(self->sig_list, ((AM_ROUT_CALL_EXPR) c_6358)->fun);
  2588.     } break;
  2589.    case AM_ITER_CALL_EXPR_tag:
  2590.     if ((SIG_TBL_sig_eq_t(self->sig_tbl, ((AM_ITER_CALL_EXPR) c_6358)->fun)==((SIG) NULL))) {
  2591.      self->sig_list = FLISTSIG_push_SI(self->sig_list, ((AM_ITER_CALL_EXPR) c_6358)->fun);
  2592.     } break;
  2593.    case AM_BND_CREATE_EXPR_tag:
  2594.     if ((SIG_TBL_sig_eq_t(self->sig_tbl, ((AM_BND_CREATE_EXPR) c_6358)->fun)==((SIG) NULL))) {
  2595.      self->sig_list = FLISTSIG_push_SI(self->sig_list, ((AM_BND_CREATE_EXPR) c_6358)->fun);
  2596.     } break;
  2597.    default: ;
  2598.   }
  2599.   i = (c_INT_plus_INT_INT_chk(i,1));
  2600.  }
  2601.  after_loop: ;
  2602.  if ((!(self->prog->err_seen))) {
  2603.   PROG_output_am_r(self->prog, am_6357);
  2604.  }
  2605. }
  2606.  
  2607.  
  2608. void PROG_AM_GENERATE_6363(PROG_AM_GENERATE self) {
  2609.  TP_CLASS_TBL noname6364;
  2610.  TP_CLASS tp_6365;
  2611.  ELT_TBL et;
  2612.  SIG_TBL sig_tbl_6366;
  2613.  SIG_TBL noname6367;
  2614.  SIG sig_6368;
  2615.  ELT elt_6369;
  2616.  TP_CLASS local0;
  2617.  INT local1;
  2618.  SIG local2;
  2619.  {
  2620.   struct TP_CLASS_TBL_elt_161_frame_struct temp6370_0;
  2621.   TP_CLASS_TBL_elt_161_frame 
  2622.   noname6371 = &temp6370_0;
  2623.   noname6371->state = 0;
  2624.   while (1) {
  2625.    if (noname6371->state == 0) {
  2626.     noname6364 = self->prog->tp_tbl->class_tbl;
  2627.     noname6371->arg0 = noname6364;
  2628.    }
  2629.    local0 = TP_CLASS_TBL_elt_161(noname6371);
  2630.    if (noname6371->state == -1) goto after_loop;
  2631.    tp_6365 = local0;
  2632.    local1 = TP_CLASS_kind_INT(tp_6365);
  2633.    if ((local1==shared_TP_KIND_e)) {
  2634.     et = IMPL_TBL_impl_of(self->prog->impl_tbl, ((TP) tp_6365))->elts;
  2635.     sig_tbl_6366 = IFC_TBL_ifc_of_T(self->prog->ifc_tbl, ((TP) tp_6365))->sigs;
  2636.     {
  2637.      struct SIG_TBL_elt_SIG_frame_struct temp6373_0;
  2638.      SIG_TBL_elt_SIG_frame 
  2639.      noname6374 = &temp6373_0;
  2640.      noname6374->state = 0;
  2641.      while (1) {
  2642.       if (noname6374->state == 0) {
  2643.        noname6367 = sig_tbl_6366;
  2644.        noname6374->arg0 = noname6367;
  2645.       }
  2646.       local2 = SIG_TBL_elt_SIG(noname6374);
  2647.       if (noname6374->state == -1) goto after_loop_6372;
  2648.       sig_6368 = local2;
  2649.       elt_6369 = ELT_TBL_elt_with(et, sig_6368);
  2650.       if ((!(ELT_is_abstract_BOOL(elt_6369)))) {
  2651.        PROG_AM_GENERATE_5472(self, sig_6368);
  2652.       }
  2653.      }
  2654.     }
  2655.     after_loop_6372: ;
  2656.    }
  2657.   }
  2658.  }
  2659.  after_loop: ;
  2660. }
  2661.  
  2662.  
  2663. SIG FLISTSIG_aref_ag(FLISTSIG self, INT ind_6375) {
  2664.  SIG noname6376;
  2665.  BOOL local0;
  2666.  INT local1;
  2667.  INT local2;
  2668.  if ((!((self==((FLISTSIG) NULL))))) {
  2669.   local1 = 0;
  2670.   local2 = (self->asize);
  2671.   local0 = INT_is_bet_INT_I(ind_6375, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  2672.  } else {
  2673.   local0 = FALSE;
  2674.  }
  2675.  if (!(local0)) {
  2676.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  2677.   exit(16);
  2678.  }
  2679.  if (ind_6375<0||ind_6375>=self->asize) {
  2680.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  2681.   exit(16);
  2682.  }
  2683.  return self->arr_part[ind_6375];
  2684. }
  2685.  
  2686.  
  2687. SIG FLISTSIG_aget_IN(FLISTSIG self, INT ind_6377) {
  2688.  SIG noname6378;
  2689.  BOOL local0;
  2690.  INT local1;
  2691.  if ((!((self==((FLISTSIG) NULL))))) {
  2692.   local1 = 0;
  2693.   local0 = INT_is_bet_INT_I(ind_6377, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  2694.  } else {
  2695.   local0 = FALSE;
  2696.  }
  2697.  if (!(local0)) {
  2698.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:68:7\n");
  2699.   exit(16);
  2700.  }
  2701.  return FLISTSIG_aref_ag(self, ind_6377);
  2702.  if (!FLISTSIG_invaria(self)) {
  2703.   fprintf(stderr,"Failed invariant FLIST{SIG}::invariant:BOOL ../Library/flist.sa:68:7\n");
  2704.   exit(16);
  2705.  }
  2706. }
  2707.  
  2708.  
  2709. SIG FLISTSIG_pop_SIG(FLISTSIG self) {
  2710.  SIG noname6379;
  2711.  SIG r_6380;
  2712.  INT local0;
  2713.  INT local1;
  2714.  local0 = FLISTSIG_size_INT(self);
  2715.  if ((local0==0)) {
  2716.   return ((SIG) NULL);
  2717.  }
  2718.  r_6380 = FLISTSIG_aget_IN(self, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  2719.  local1 = (c_INT_minus_INT_INT_chk(self->loc_17,1));
  2720.  FLISTSIG_aset_IN(self, local1, ((SIG) NULL));
  2721.  self->loc_17 = (c_INT_minus_INT_INT_chk(self->loc_17,1));
  2722.  return r_6380;
  2723.  if (!FLISTSIG_invaria(self)) {
  2724.   fprintf(stderr,"Failed invariant FLIST{SIG}::invariant:BOOL ../Library/flist.sa:90:6\n");
  2725.   exit(16);
  2726.  }
  2727. }
  2728.  
  2729.  
  2730. void PROG_AM_GENERATE_6381(PROG_AM_GENERATE self) {
  2731.  SIG mn;
  2732.  SIG s_6382;
  2733.  OUT local0;
  2734.  OUT local1;
  2735.  OUT local2;
  2736.  OUT local3;
  2737.  OUT local4;
  2738.  OUT local5;
  2739.  mn = self->prog->prog_get_main->main_sig;
  2740.  if ((mn==((SIG) NULL))) {
  2741.   return;
  2742.  }
  2743.  if (self->prog->show_generated_sig) {
  2744.   local0 = OUT_create_OUT(((OUT) NULL));
  2745.   local1 = OUT_plus_STR_OUT(local0, ((STR) &Outputsig));
  2746.   local2 = OUT_plus_STR_OUT(local1, SIG_str_STR(mn));
  2747.   OUT_plus_STR(local2, ((STR) &name_6383));
  2748.  }
  2749.  PROG_AM_GENERATE_5472(self, mn);
  2750.  PROG_AM_GENERATE_6363(self);
  2751.  while (1) {
  2752.   if (FLISTSIG_is_empt(self->sig_list)) {
  2753.    goto after_loop;
  2754.   }
  2755.   s_6382 = FLISTSIG_pop_SIG(self->sig_list);
  2756.   if (self->prog->show_generated_sig) {
  2757.    local3 = OUT_create_OUT(((OUT) NULL));
  2758.    local4 = OUT_plus_STR_OUT(local3, ((STR) &Outputsig_6385));
  2759.    local5 = OUT_plus_STR_OUT(local4, SIG_str_STR(s_6382));
  2760.    OUT_plus_STR(local5, ((STR) &name_6386));
  2761.   }
  2762.   PROG_AM_GENERATE_5472(self, s_6382);
  2763.  }
  2764.  after_loop: ;
  2765. }
  2766.  
  2767.  
  2768. void PROG_do_am_gener(PROG self) {
  2769.  PROG_AM_GENERATE_6381(self->prog_am_generate);
  2770. }
  2771.  
  2772.  
  2773. BOOL BE_is_const_expr(BE self, AM_EXPR e_6387) {
  2774.  BOOL noname6388 = ((BOOL) 0);
  2775.  if ((e_6387==((AM_EXPR) NULL))) {
  2776.   return FALSE;
  2777.  }
  2778.  if (e_6387==NULL) {
  2779.  } else
  2780.  switch (e_6387->header.tag) {
  2781.   case AM_VOID_CONST_tag:
  2782.    return TRUE; break;
  2783.   case AM_BOOL_CONST_tag:
  2784.    return TRUE; break;
  2785.   case AM_CHAR_CONST_tag:
  2786.    return TRUE; break;
  2787.   case AM_STR_CONST_tag:
  2788.    return TRUE; break;
  2789.   case AM_INT_CONST_tag:
  2790.    return TRUE; break;
  2791.   default: ;
  2792.  }
  2793.  return FALSE;
  2794. }
  2795.  
  2796.  
  2797. void BE_emit_globals(BE self) {
  2798.  FLISTAM_GLOBAL_EXPR noname6389;
  2799.  AM_GLOBAL_EXPR age_6390;
  2800.  STR e_6391;
  2801.  AM_GLOBAL_EXPR local0;
  2802.  FILE_20 local1;
  2803.  FILE_20 local2;
  2804.  FILE_20 local3;
  2805.  FILE_20 local4;
  2806.  FILE_20 local5;
  2807.  FILE_20 local6;
  2808.  FILE_20 local7;
  2809.  STR local8;
  2810.  STR local9;
  2811.  STR local10;
  2812.  BOOL local11;
  2813.  BOOL local12;
  2814.  TP local13;
  2815.  FILE_20 local14;
  2816.  FILE_20 local15;
  2817.  FILE_20 local16;
  2818.  FILE_20 local17;
  2819.  FILE_20 local18;
  2820.  STR local19;
  2821.  STR local20;
  2822.  STR local21;
  2823.  STR local22;
  2824.  STR local23;
  2825.  STR local24;
  2826.  STR local25;
  2827.  STR local26;
  2828.  STR local27;
  2829.  STR local28;
  2830.  STR local29;
  2831.  STR local30;
  2832.  FILE_20 local31;
  2833.  FILE_20 local32;
  2834.  FILE_20 local33;
  2835.  FILE_20 local34;
  2836.  FILE_20 local35;
  2837.  FILE_20 local36;
  2838.  FILE_20 local37;
  2839.  STR local38;
  2840.  STR local39;
  2841.  STR local40;
  2842.  FILE_20 local41;
  2843.  STR local42;
  2844.  STR local43;
  2845.  STR local44;
  2846.  FILE_20 local45;
  2847.  FILE_20 local46;
  2848.  FILE_20 local47;
  2849.  FILE_20 local48;
  2850.  {
  2851.   struct FLISTAM_GLOBAL_E_5942_frame_struct temp6392_0;
  2852.   FLISTAM_GLOBAL_E_5942_frame 
  2853.   noname6393 = &temp6392_0;
  2854.   noname6393->state = 0;
  2855.   while (1) {
  2856.    if (noname6393->state == 0) {
  2857.     noname6389 = self->prog->global_tbl->top_sort;
  2858.     noname6393->arg0 = noname6389;
  2859.    }
  2860.    local0 = FLISTAM_GLOBAL_E_5942(noname6393);
  2861.    if (noname6393->state == -1) goto after_loop;
  2862.    age_6390 = local0;
  2863.    if (BE_is_const_expr(self, age_6390->init)) {
  2864.     FILE_plus_CHAR(self->globals_c, '\n');
  2865.     if (age_6390->is_const) {
  2866.      (fwrite(((STR) &const_6394)->arr_part,((STR) &const_6394)->asize,1,self->globals_h->fp));
  2867.     }
  2868.     e_6391 = BE_emit_expr_AM_(self, age_6390->init);
  2869.     if (age_6390->is_const) {
  2870.      (fwrite(((STR) &const_6395)->arr_part,((STR) &const_6395)->asize,1,self->globals_c->fp));
  2871.     }
  2872.     local1 = self->globals_c;
  2873.     local2 = FILE_plus_STR_FILE(local1, BE_mangle_OB_STR(self, ((OB) age_6390->tp_at)));
  2874.     local3 = FILE_plus_CHAR_FILE(local2, ' ');
  2875.     local4 = FILE_plus_STR_FILE(local3, BE_mangle_OB_STR(self, ((OB) age_6390)));
  2876.     local5 = FILE_plus_STR_FILE(local4, ((STR) &name_6396));
  2877.     local6 = FILE_plus_STR_FILE(local5, e_6391);
  2878.     FILE_plus_CHAR(local6, ';');
  2879.     local7 = self->globals_c;
  2880.     local8 = ((STR) &Const);
  2881.     local9 = STR_plus_STR_STR(local8, BE_mangle_OB_STR(self, ((OB) age_6390->class_tp)));
  2882.     local10 = STR_plus_STR_STR(local9, ((STR) &name_6397));
  2883.     BE_comment_FILE_STR(self, local7, STR_plus_STR_STR(local10, age_6390->name_19.str_4));
  2884.    }
  2885.    else {
  2886.     if ((!((age_6390->init==((AM_EXPR) NULL))))) {
  2887.      local11 = TRUE;
  2888.     } else {
  2889.      local13 = age_6390->tp_at;
  2890.      if ((*TP_is_value_BOOL[local13->header.tag+TP_is_value_BOOL_offset])(local13)) {
  2891.       local12 = (!(BE_is_built_in_t(self, age_6390->tp_at)));
  2892.      } else {
  2893.       local12 = FALSE;
  2894.      }
  2895.      local11 = local12;
  2896.     }
  2897.     if (local11) {
  2898.      local14 = FILE_plus_CHAR_FILE(self->globals_c, '\n');
  2899.      local15 = FILE_plus_STR_FILE(local14, BE_mangle_OB_STR(self, ((OB) age_6390->tp_at)));
  2900.      local16 = FILE_plus_CHAR_FILE(local15, ' ');
  2901.      local17 = FILE_plus_STR_FILE(local16, BE_mangle_OB_STR(self, ((OB) age_6390)));
  2902.      FILE_plus_CHAR(local17, ';');
  2903.      local18 = self->globals_c;
  2904.      local19 = ((STR) &Shared);
  2905.      local20 = STR_plus_STR_STR(local19, BE_mangle_OB_STR(self, ((OB) age_6390->class_tp)));
  2906.      local21 = STR_plus_STR_STR(local20, ((STR) &name_6398));
  2907.      BE_comment_FILE_STR(self, local18, STR_plus_STR_STR(local21, age_6390->name_19.str_4));
  2908.      local22 = ((STR) &Initializeshared);
  2909.      local23 = STR_plus_STR_STR(local22, BE_mangle_OB_STR(self, ((OB) age_6390->class_tp)));
  2910.      local24 = STR_plus_STR_STR(local23, ((STR) &name_6399));
  2911.      BE_comment_STR(self, STR_plus_STR_STR(local24, age_6390->name_19.str_4));
  2912.      if ((!((age_6390->init==((AM_EXPR) NULL))))) {
  2913.       local25 = BE_mangle_OB_STR(self, ((OB) age_6390));
  2914.       local26 = STR_plus_STR_STR(local25, ((STR) &name_6400));
  2915.       local27 = STR_plus_STR_STR(local26, BE_emit_expr_AM_(self, age_6390->init));
  2916.       BE_ndefer_STR(self, STR_plus_CHAR_STR(local27, ';'));
  2917.      }
  2918.      else {
  2919.       local28 = BE_mangle_OB_STR(self, ((OB) age_6390));
  2920.       local29 = STR_plus_STR_STR(local28, ((STR) &name_6401));
  2921.       local30 = STR_plus_STR_STR(local29, BE_default_init_(self, age_6390->tp_at));
  2922.       BE_ndefer_STR(self, STR_plus_CHAR_STR(local30, ';'));
  2923.      }
  2924.     }
  2925.     else {
  2926.      local31 = FILE_plus_CHAR_FILE(self->globals_c, '\n');
  2927.      local32 = FILE_plus_STR_FILE(local31, BE_mangle_OB_STR(self, ((OB) age_6390->tp_at)));
  2928.      local33 = FILE_plus_CHAR_FILE(local32, ' ');
  2929.      local34 = FILE_plus_STR_FILE(local33, BE_mangle_OB_STR(self, ((OB) age_6390)));
  2930.      local35 = FILE_plus_STR_FILE(local34, ((STR) &name_6402));
  2931.      local36 = FILE_plus_STR_FILE(local35, BE_default_init_(self, age_6390->tp_at));
  2932.      FILE_plus_CHAR(local36, ';');
  2933.      local37 = self->globals_c;
  2934.      local38 = ((STR) &Shared_6403);
  2935.      local39 = STR_plus_STR_STR(local38, BE_mangle_OB_STR(self, ((OB) age_6390->class_tp)));
  2936.      local40 = STR_plus_STR_STR(local39, ((STR) &name_6404));
  2937.      BE_comment_FILE_STR(self, local37, STR_plus_STR_STR(local40, age_6390->name_19.str_4));
  2938.     }
  2939.    }
  2940.    local41 = self->globals_h;
  2941.    local42 = ((STR) &Const_6405);
  2942.    local43 = STR_plus_STR_STR(local42, BE_mangle_OB_STR(self, ((OB) age_6390->class_tp)));
  2943.    local44 = STR_plus_STR_STR(local43, ((STR) &name_6406));
  2944.    BE_comment_FILE_STR(self, local41, STR_plus_STR_STR(local44, age_6390->name_19.str_4));
  2945.    (fwrite(((STR) &extern_6407)->arr_part,((STR) &extern_6407)->asize,1,self->globals_h->fp));
  2946.    local45 = self->globals_h;
  2947.    local46 = FILE_plus_STR_FILE(local45, BE_mangle_OB_STR(self, ((OB) age_6390->tp_at)));
  2948.    local47 = FILE_plus_CHAR_FILE(local46, ' ');
  2949.    local48 = FILE_plus_STR_FILE(local47, BE_mangle_OB_STR(self, ((OB) age_6390)));
  2950.    (fwrite(((STR) &name_6408)->arr_part,((STR) &name_6408)->asize,1,local48->fp));
  2951.   }
  2952.  }
  2953.  after_loop: ;
  2954. }
  2955.  
  2956.  
  2957. FILE_20 FILE_plus_FSTR_FILE(FILE_20 self, FSTR f_6409) {
  2958.  FILE_20 noname6410;
  2959.  if (!((!((self->fp==((EXT_OB) NULL)))))) {
  2960.   fprintf(stderr,"Violation of precondition ../Library/file.sa:169:7\n");
  2961.   exit(16);
  2962.  }
  2963.  FILE_plus_FSTR(self, f_6409);
  2964.  return self;
  2965. }
  2966.  
  2967.  
  2968. void BE_define_main_a(BE self) {
  2969.  STR main_tp;
  2970.  FSTR local0;
  2971.  STR local1;
  2972.  TP local2;
  2973.  STR local3;
  2974.  STR local4;
  2975.  STR local5;
  2976.  STR local6;
  2977.  STR local7;
  2978.  STR local8;
  2979.  STR local9;
  2980.  STR local10;
  2981.  FILE_20 local11;
  2982.  main_tp = BE_mangle_OB_STR(self, ((OB) self->main_sig->tp));
  2983.  FILE_plus_CHAR(self->code_c, '\n');
  2984.  BE_comment_FILE_STR(self, self->code_c, ((STR) &Definitionofmain));
  2985.  (fwrite(((STR) &intmainintargcch)->arr_part,((STR) &intmainintargcch)->asize,1,self->code_c->fp));
  2986.  local0 = FSTR_create_FSTR(((FSTR) NULL));
  2987.  self->routine_code = FSTR_plus_STR_FSTR(local0, ((STR) &name_6411));
  2988.  BE_in(self);
  2989.  BE_ndefer_STR(self, STR_plus_STR_STR(main_tp, ((STR) &main_ob_6412)));
  2990.  if ((!((self->main_sig->args_7==((ARRAYTP) NULL))))) {
  2991.   local1 = BE_mangle_OB_STR(self, ((OB) self->prog->tp_builtin->arr_of_str));
  2992.   BE_ndefer_STR(self, STR_plus_STR_STR(local1, ((STR) &main_args_6413)));
  2993.   BE_ndefer_STR(self, ((STR) &intijlength));
  2994.   BE_ndefer_STR(self, ((STR) &STRs));
  2995.  }
  2996.  BE_emit_globals(self);
  2997.  BE_ndefer_STR(self, ((STR) &main_ob_6414));
  2998.  local2 = self->main_sig->tp;
  2999.  if ((*TP_is_value_BOOL[local2->header.tag+TP_is_value_BOOL_offset])(local2)) {
  3000.   BE_defer_STR(self, STR_plus_STR_STR(main_tp, ((STR) &S_zero_6415)));
  3001.  }
  3002.  else {
  3003.   local3 = BE_allocate_TP_STR(self, self->main_sig->tp);
  3004.   BE_defer_STR(self, STR_plus_STR_STR(local3, ((STR) &name_6416)));
  3005.  }
  3006.  if ((!((self->main_sig->args_7==((ARRAYTP) NULL))))) {
  3007.   local4 = ((STR) &main_args_6417);
  3008.   local5 = STR_plus_STR_STR(local4, BE_array_allocat(self, ((TP) self->prog->tp_builtin->arr_of_str), ((STR) &argc_6418)));
  3009.   BE_ndefer_STR(self, STR_plus_STR_STR(local5, ((STR) &name_6419)));
  3010.   BE_ndefer_STR(self, ((STR) &main_argsasizeargc));
  3011.   BE_ndefer_STR(self, ((STR) &fori0iargci));
  3012.   BE_ndefer_STR(self, ((STR) &forlength0argvil));
  3013.   local6 = ((STR) &s_6420);
  3014.   local7 = STR_plus_STR_STR(local6, BE_array_allocat(self, ((TP) self->prog->tp_builtin->str_4), ((STR) &length_6421)));
  3015.   BE_ndefer_STR(self, STR_plus_STR_STR(local7, ((STR) &name_6422)));
  3016.   BE_ndefer_STR(self, ((STR) &sasizelength));
  3017.   BE_ndefer_STR(self, ((STR) &forj0jlengthjsar));
  3018.   BE_ndefer_STR(self, ((STR) &main_argsarr_partis));
  3019.   BE_ndefer_STR(self, ((STR) &name_6423));
  3020.  }
  3021.  if (self->prog->options_55->null_segfaults) {
  3022.   BE_ndefer_STR(self, ((STR) &signalSIGSEGVvoi));
  3023.  }
  3024.  BE_ndefer_STR(self, ((STR) &ifsetjmplast_pro_6424));
  3025.  BE_in(self);
  3026.  if ((!((self->main_sig->ret==((TP) NULL))))) {
  3027.   if ((!((self->main_sig->args_7==((ARRAYTP) NULL))))) {
  3028.    BE_ndefer_STR(self, ((STR) &returnsather_mai));
  3029.   }
  3030.   else {
  3031.    BE_ndefer_STR(self, ((STR) &returnsather_mai_6425));
  3032.   }
  3033.  }
  3034.  else {
  3035.   if ((!((self->main_sig->args_7==((ARRAYTP) NULL))))) {
  3036.    BE_ndefer_STR(self, ((STR) &sather_mainmain_));
  3037.   }
  3038.   else {
  3039.    BE_ndefer_STR(self, ((STR) &sather_mainmain__6426));
  3040.   }
  3041.  }
  3042.  BE_out(self);
  3043.  BE_ndefer_STR(self, ((STR) &else_6427));
  3044.  BE_in(self);
  3045.  local8 = ((STR) &ifexceptionheadertag);
  3046.  local9 = STR_plus_STR_STR(local8, BE_tag_for_TP_STR(self, ((TP) self->prog->tp_builtin->str_4)));
  3047.  local10 = STR_plus_STR_STR(local9, ((STR) &fprintfstderrUnc));
  3048.  BE_ndefer_STR(self, STR_plus_STR_STR(local10, ((STR) &STRexceptionarr_part)));
  3049.  BE_ndefer_STR(self, ((STR) &elsefprintfstder));
  3050.  BE_ndefer_STR(self, ((STR) &exit16_6428));
  3051.  BE_out(self);
  3052.  BE_ndefer_STR(self, ((STR) &name_6429));
  3053.  BE_out(self);
  3054.  local11 = FILE_plus_FSTR_FILE(self->code_c, self->routine_code);
  3055.  (fwrite(((STR) &name_6430)->arr_part,((STR) &name_6430)->asize,1,local11->fp));
  3056. }
  3057.  
  3058.  
  3059. AM_STR_CONST AM_STR_CONST_cre_6431(AM_STR_CONST self) {
  3060.  AM_STR_CONST noname6432;
  3061.  AM_STR_CONST local0;
  3062.  local0 = ((AM_STR_CONST) sbi_alloc(sizeof(struct AM_STR_CONST_struct), AM_STR_CONST_tag));
  3063.  return local0;
  3064. }
  3065.  
  3066.  
  3067. STR BE_value_compare(BE self, TP tp_6433, STR e1_6434, STR e2_6435) {
  3068.  STR noname6436;
  3069.  AM_OB_DEF aod;
  3070.  BOOL after_first = ((BOOL) 0);
  3071.  STR res;
  3072.  FMAPIDENTTP noname6437;
  3073.  TUPIDENTTP p = TUPIDENTTP_zero;
  3074.  STR key_6438;
  3075.  INT noname6439 = ((INT) 0);
  3076.  INT noname6440 = ((INT) 0);
  3077.  INT i = ((INT) 0);
  3078.  TP local0;
  3079.  STR local1;
  3080.  STR local2;
  3081.  STR local3;
  3082.  TUPIDENTTP local4;
  3083.  OB local5;
  3084.  TP local6;
  3085.  TP local7;
  3086.  STR local8;
  3087.  STR local9;
  3088.  STR local10;
  3089.  STR local11;
  3090.  STR local12;
  3091.  STR local13;
  3092.  STR local14;
  3093.  STR local15;
  3094.  STR local16;
  3095.  STR local17;
  3096.  STR local18;
  3097.  INT local19;
  3098.  INT local20;
  3099.  INT local21;
  3100.  INT local19e;
  3101.  STR local22;
  3102.  STR local23;
  3103.  STR local24;
  3104.  STR local25;
  3105.  STR local26;
  3106.  STR local27;
  3107.  STR local28;
  3108.  STR local29;
  3109.  local0 = tp_6433;
  3110.  if (!((*TP_is_value_BOOL[local0->header.tag+TP_is_value_BOOL_offset])(local0))) {
  3111.   fprintf(stderr,"Violation of precondition ./be.sa:2394:17\n");
  3112.   exit(16);
  3113.  }
  3114.  if (BE_is_built_in_t(self, tp_6433)) {
  3115.   local1 = STR_plus_STR_STR(((STR) &name_6441), e1_6434);
  3116.   local2 = STR_plus_STR_STR(local1, ((STR) &name_6442));
  3117.   local3 = STR_plus_STR_STR(local2, e2_6435);
  3118.   return STR_plus_STR_STR(local3, ((STR) &name_6443));
  3119.  }
  3120.  aod = PROG_am_ob_def_f(self->prog, tp_6433);
  3121.  after_first = FALSE;
  3122.  res = ((STR) &name_6444);
  3123.  if ((!((aod->at==((FMAPIDENTTP) NULL))))) {
  3124.   {
  3125.    struct FMAPIDENTTP_pair_frame_struct temp6445_0;
  3126.    FMAPIDENTTP_pair_frame 
  3127.    noname6446 = &temp6445_0;
  3128.    noname6446->state = 0;
  3129.    while (1) {
  3130.     if (noname6446->state == 0) {
  3131.      noname6437 = aod->at;
  3132.      noname6446->arg0 = noname6437;
  3133.     }
  3134.     local4 = FMAPIDENTTP_pair(noname6446);
  3135.     if (noname6446->state == -1) goto after_loop;
  3136.     p = local4;
  3137.     local5 = (OB)((IDENT_boxed) sbi_alloc(sizeof(struct IDENT_boxed_struct), IDENT_tag));
  3138.     ((IDENT_boxed) local5)->value_part = p.t1;
  3139.     key_6438 = BE_mangle_OB_STR(self, local5);
  3140.     if (after_first) {
  3141.      res = STR_plus_STR_STR(res, ((STR) &name_6447));
  3142.     }
  3143.     local6 = p.t2;
  3144.     if ((*TP_is_value_BOOL[local6->header.tag+TP_is_value_BOOL_offset])(local6)) {
  3145.      local7 = p.t2;
  3146.      local8 = STR_plus_CHAR_STR(e1_6434, '.');
  3147.      local9 = STR_plus_STR_STR(local8, key_6438);
  3148.      local10 = STR_plus_CHAR_STR(e2_6435, '.');
  3149.      res = STR_plus_STR_STR(res, BE_value_compare(self, local7, local9, STR_plus_STR_STR(local10, key_6438)));
  3150.     }
  3151.     else {
  3152.      local11 = STR_plus_CHAR_STR(res, '(');
  3153.      local12 = STR_plus_STR_STR(local11, e1_6434);
  3154.      local13 = STR_plus_CHAR_STR(local12, '.');
  3155.      local14 = STR_plus_STR_STR(local13, key_6438);
  3156.      local15 = STR_plus_STR_STR(local14, ((STR) &name_6448));
  3157.      local16 = STR_plus_STR_STR(local15, e2_6435);
  3158.      local17 = STR_plus_CHAR_STR(local16, '.');
  3159.      local18 = STR_plus_STR_STR(local17, key_6438);
  3160.      res = STR_plus_CHAR_STR(local18, ')');
  3161.     }
  3162.     after_first = TRUE;
  3163.    }
  3164.   }
  3165.   after_loop: ;
  3166.  }
  3167.  if ((!((aod->arr==((TP) NULL))))) {
  3168.   {
  3169.    BOOL noname6451 = TRUE;
  3170.    while (1) {
  3171.     if (noname6451) {
  3172.      noname6451 = FALSE;
  3173.      noname6439 = 0;
  3174.      noname6440 = aod->asize;
  3175.      local20 = noname6439;
  3176.      local21 = noname6440;
  3177.      local19 = local20; local19e = local20+local21;
  3178.     } else {
  3179.      local19++;
  3180.     }
  3181.     if (local19>=local19e) goto after_loop_6449;
  3182.     i = local19;
  3183.     if (after_first) {
  3184.      res = STR_plus_STR_STR(res, ((STR) &name_6452));
  3185.     }
  3186.     local22 = STR_plus_STR_STR(res, ((STR) &name_6453));
  3187.     local23 = STR_plus_STR_STR(local22, e1_6434);
  3188.     local24 = STR_plus_STR_STR(local23, ((STR) &arr_part_6454));
  3189.     local25 = STR_plus_INT_STR(local24, i);
  3190.     local26 = STR_plus_STR_STR(local25, ((STR) &name_6455));
  3191.     local27 = STR_plus_STR_STR(local26, e2_6435);
  3192.     local28 = STR_plus_STR_STR(local27, ((STR) &arr_part_6456));
  3193.     local29 = STR_plus_INT_STR(local28, i);
  3194.     res = STR_plus_STR_STR(local29, ((STR) &name_6457));
  3195.     after_first = TRUE;
  3196.    }
  3197.   }
  3198.   after_loop_6449: ;
  3199.  }
  3200.  return res;
  3201. }
  3202.  
  3203.  
  3204. void BE_generate_sys_(BE self) {
  3205.  FMAPTPINT noname6458;
  3206.  TUPTPINT p = TUPTPINT_zero;
  3207.  AM_STR_CONST dummy_6459;
  3208.  FMAPTPINT noname6460;
  3209.  TP tp_6461;
  3210.  STR tpstr;
  3211.  TUPTPINT local0;
  3212.  FILE_20 local1;
  3213.  FILE_20 local2;
  3214.  FILE_20 local3;
  3215.  FILE_20 local4;
  3216.  TP local5;
  3217.  FILE_20 local6;
  3218.  FILE_20 local7;
  3219.  FILE_20 local8;
  3220.  FILE_20 local9;
  3221.  TP local10;
  3222.  TP local11;
  3223.  FILE_20 local12;
  3224.  FILE_20 local13;
  3225.  FILE_20 local14;
  3226.  FILE_20 local15;
  3227.  FILE_20 local16;
  3228.  FILE_20 local17;
  3229.  FILE_20 local18;
  3230.  FILE_20 local19;
  3231.  FILE_20 local20;
  3232.  FILE_20 local21;
  3233.  (fwrite(((STR) &STRc_SYS_str_for)->arr_part,((STR) &STRc_SYS_str_for)->asize,1,self->code_c->fp));
  3234.  (fwrite(((STR) &switchi)->arr_part,((STR) &switchi)->asize,1,self->code_c->fp));
  3235.  {
  3236.   struct FMAPTPINT_pairs__frame_struct temp6462_0;
  3237.   FMAPTPINT_pairs__frame 
  3238.   noname6463 = &temp6462_0;
  3239.   noname6463->state = 0;
  3240.   while (1) {
  3241.    if (noname6463->state == 0) {
  3242.     noname6458 = self->tags;
  3243.     noname6463->arg0 = noname6458;
  3244.    }
  3245.    local0 = FMAPTPINT_pairs_(noname6463);
  3246.    if (noname6463->state == -1) goto after_loop;
  3247.    p = local0;
  3248.    local1 = FILE_plus_STR_FILE(self->tags_h, ((STR) &define_6464));
  3249.    local2 = FILE_plus_STR_FILE(local1, BE_mangle_OB_STR(self, ((OB) p.t1)));
  3250.    local3 = FILE_plus_STR_FILE(local2, ((STR) &S_tag_6465));
  3251.    local4 = FILE_plus_INT_FILE(local3, p.t2);
  3252.    (fwrite(((STR) &name_6466)->arr_part,((STR) &name_6466)->asize,1,local4->fp));
  3253.    dummy_6459 = AM_STR_CONST_cre_6431(((AM_STR_CONST) NULL));
  3254.    local5 = p.t1;
  3255.    dummy_6459->bval = (*TP_str_STR[local5->header.tag+TP_str_STR_offset])(local5);
  3256.    local6 = FILE_plus_STR_FILE(self->code_c, ((STR) &case_6467));
  3257.    local7 = FILE_plus_STR_FILE(local6, BE_mangle_OB_STR(self, ((OB) p.t1)));
  3258.    local8 = FILE_plus_STR_FILE(local7, ((STR) &S_tagreturn));
  3259.    local9 = FILE_plus_STR_FILE(local8, BE_emit_str_cons(self, dummy_6459));
  3260.    (fwrite(((STR) &name_6468)->arr_part,((STR) &name_6468)->asize,1,local9->fp));
  3261.   }
  3262.  }
  3263.  after_loop: ;
  3264.  (fwrite(((STR) &defaultfprintfst)->arr_part,((STR) &defaultfprintfst)->asize,1,self->code_c->fp));
  3265.  (fwrite(((STR) &name_6469)->arr_part,((STR) &name_6469)->asize,1,self->code_c->fp));
  3266.  (fwrite(((STR) &name_6470)->arr_part,((STR) &name_6470)->asize,1,self->code_c->fp));
  3267.  (fwrite(((STR) &BOOLc_SYS_ob_eq_)->arr_part,((STR) &BOOLc_SYS_ob_eq_)->asize,1,self->code_c->fp));
  3268.  (fwrite(((STR) &INTt1t2)->arr_part,((STR) &INTt1t2)->asize,1,self->code_c->fp));
  3269.  (fwrite(((STR) &ifo1o2returnTRUE)->arr_part,((STR) &ifo1o2returnTRUE)->asize,1,self->code_c->fp));
  3270.  (fwrite(((STR) &ifo1NULLo2NULLre)->arr_part,((STR) &ifo1NULLo2NULLre)->asize,1,self->code_c->fp));
  3271.  (fwrite(((STR) &t1o1headertagt2o)->arr_part,((STR) &t1o1headertagt2o)->asize,1,self->code_c->fp));
  3272.  (fwrite(((STR) &ift1t2returnFALSE)->arr_part,((STR) &ift1t2returnFALSE)->asize,1,self->code_c->fp));
  3273.  (fwrite(((STR) &switcht1)->arr_part,((STR) &switcht1)->asize,1,self->code_c->fp));
  3274.  {
  3275.   struct FMAPTPINT_keys_TP_frame_struct temp6472_0;
  3276.   FMAPTPINT_keys_TP_frame 
  3277.   noname6473 = &temp6472_0;
  3278.   noname6473->state = 0;
  3279.   while (1) {
  3280.    if (noname6473->state == 0) {
  3281.     noname6460 = self->tags;
  3282.     noname6473->arg0 = noname6460;
  3283.    }
  3284.    local10 = FMAPTPINT_keys_TP(noname6473);
  3285.    if (noname6473->state == -1) goto after_loop_6471;
  3286.    tp_6461 = local10;
  3287.    tpstr = BE_mangle_OB_STR(self, ((OB) tp_6461));
  3288.    local11 = tp_6461;
  3289.    if ((*TP_is_value_BOOL[local11->header.tag+TP_is_value_BOOL_offset])(local11)) {
  3290.     local12 = FILE_plus_STR_FILE(self->code_c, ((STR) &case_6474));
  3291.     local13 = FILE_plus_STR_FILE(local12, tpstr);
  3292.     (fwrite(((STR) &S_tag_6475)->arr_part,((STR) &S_tag_6475)->asize,1,local13->fp));
  3293.     BE_in(self);
  3294.     local14 = FILE_plus_STR_FILE(self->code_c, ((STR) &name_6476));
  3295.     local15 = FILE_plus_STR_FILE(local14, tpstr);
  3296.     (fwrite(((STR) &v1v2)->arr_part,((STR) &v1v2)->asize,1,local15->fp));
  3297.     local16 = FILE_plus_STR_FILE(self->code_c, ((STR) &v1));
  3298.     local17 = FILE_plus_STR_FILE(local16, tpstr);
  3299.     (fwrite(((STR) &S_boxedo1value_part)->arr_part,((STR) &S_boxedo1value_part)->asize,1,local17->fp));
  3300.     local18 = FILE_plus_STR_FILE(self->code_c, ((STR) &v2));
  3301.     local19 = FILE_plus_STR_FILE(local18, tpstr);
  3302.     (fwrite(((STR) &S_boxedo2value_part)->arr_part,((STR) &S_boxedo2value_part)->asize,1,local19->fp));
  3303.     local20 = FILE_plus_STR_FILE(self->code_c, ((STR) &return_6477));
  3304.     local21 = FILE_plus_STR_FILE(local20, BE_value_compare(self, tp_6461, ((STR) &v1_6478), ((STR) &v2_6479)));
  3305.     (fwrite(((STR) &name_6480)->arr_part,((STR) &name_6480)->asize,1,local21->fp));
  3306.     BE_out(self);
  3307.    }
  3308.   }
  3309.  }
  3310.  after_loop_6471: ;
  3311.  (fwrite(((STR) &defaultreturnFALSE)->arr_part,((STR) &defaultreturnFALSE)->asize,1,self->code_c->fp));
  3312.  BE_comment_FILE_STR(self, self->code_c, ((STR) &Notavaluetype));
  3313.  (fwrite(((STR) &name_6481)->arr_part,((STR) &name_6481)->asize,1,self->code_c->fp));
  3314.  (fwrite(((STR) &name_6482)->arr_part,((STR) &name_6482)->asize,1,self->code_c->fp));
  3315. }
  3316.  
  3317.  
  3318. FLISTTP FLISTTP_create_F(FLISTTP self) {
  3319.  FLISTTP noname6483;
  3320.  return ((FLISTTP) NULL);
  3321.  if (!FLISTTP_invarian(self)) {
  3322.   fprintf(stderr,"Failed invariant FLIST{$TP}::invariant:BOOL ../Library/flist.sa:55:9\n");
  3323.   exit(16);
  3324.  }
  3325. }
  3326.  
  3327.  
  3328. AM_ROUT_DEF FMAPSIGAM_ROUT_D_6484(FMAPSIGAM_ROUT_DEF self, SIG k) {
  3329.  AM_ROUT_DEF noname6485;
  3330.  INT h = ((INT) 0);
  3331.  SIG tk;
  3332.  SIG tk_6486;
  3333.  INT local0;
  3334.  INT local1;
  3335.  INT local2;
  3336.  INT local3;
  3337.  if ((self==((FMAPSIGAM_ROUT_DEF) NULL))) {
  3338.   return ((AM_ROUT_DEF) NULL);
  3339.  }
  3340.  local0 = FMAPSIGAM_ROUT_D_4146(self, k);
  3341.  local1 = (self->asize);
  3342.  h = (local0&(c_INT_minus_INT_INT_chk(local1,2)));
  3343.  while (1) {
  3344.   tk = (TUPSIGAM_ROUT_DEF_blob=FMAPSIGAM_ROUT_D_4148(self, h)).t1;
  3345.   if (FMAPSIGAM_ROUT_D_4151(self, tk, k)) {
  3346.    return (TUPSIGAM_ROUT_DEF_blob=FMAPSIGAM_ROUT_D_4148(self, h)).t2;
  3347.   }
  3348.   else {
  3349.    if (FMAPSIGAM_ROUT_D_4151(self, tk, FMAPSIGAM_ROUT_D_4119(self))) {
  3350.     goto after_loop;
  3351.    }
  3352.   }
  3353.   h = (c_INT_plus_INT_INT_chk(h,1));
  3354.  }
  3355.  after_loop: ;
  3356.  local2 = (self->asize);
  3357.  if ((h==(c_INT_minus_INT_INT_chk(local2,1)))) {
  3358.   h = 0;
  3359.   while (1) {
  3360.    tk_6486 = (TUPSIGAM_ROUT_DEF_blob=FMAPSIGAM_ROUT_D_4148(self, h)).t1;
  3361.    if (FMAPSIGAM_ROUT_D_4151(self, tk_6486, k)) {
  3362.     return (TUPSIGAM_ROUT_DEF_blob=FMAPSIGAM_ROUT_D_4148(self, h)).t2;
  3363.    }
  3364.    else {
  3365.     if (FMAPSIGAM_ROUT_D_4151(self, tk_6486, FMAPSIGAM_ROUT_D_4119(self))) {
  3366.      goto after_loop_6488;
  3367.     }
  3368.    }
  3369.    h = (c_INT_plus_INT_INT_chk(h,1));
  3370.   }
  3371.   after_loop_6488: ;
  3372.   local3 = (self->asize);
  3373.   if (!((h!=(c_INT_minus_INT_INT_chk(local3,1))))) {
  3374.    fprintf(stderr,"Violation of assertion ../Library/fmap.sa:150:15\n");
  3375.    exit(16);
  3376.   }
  3377.  }
  3378.  return ((AM_ROUT_DEF) NULL);
  3379.  if (!FMAPSIGAM_ROUT_D_1046(self)) {
  3380.   fprintf(stderr,"Failed invariant FMAP{SIG,AM_ROUT_DEF}::invariant:BOOL ../Library/fmap.sa:136:6\n");
  3381.   exit(16);
  3382.  }
  3383. }
  3384.  
  3385.  
  3386. FMAPSIGAM_ROUT_DEF FMAPSIGAM_ROUT_D_6490(FMAPSIGAM_ROUT_DEF self) {
  3387.  FMAPSIGAM_ROUT_DEF noname6491;
  3388.  INT ns = ((INT) 0);
  3389.  FMAPSIGAM_ROUT_DEF r_6492;
  3390.  FMAPSIGAM_ROUT_DEF noname6493;
  3391.  BOOL local0;
  3392.  INT local1;
  3393.  INT local2;
  3394.  INT local3;
  3395.  INT local4;
  3396.  INT local5;
  3397.  INT local6;
  3398.  TUPSIGAM_ROUT_DEF local7;
  3399.  if ((!((self==((FMAPSIGAM_ROUT_DEF) NULL))))) {
  3400.   local1 = self->hsize;
  3401.   local2 = (self->asize);
  3402.   local3 = (c_INT_minus_INT_INT_chk(local2,1));
  3403.   local0 = (local1<(c_INT_div_INT_INT_chk(local3,4)));
  3404.  } else {
  3405.   local0 = FALSE;
  3406.  }
  3407.  if (!(local0)) {
  3408.   fprintf(stderr,"Violation of precondition ../Library/fmap.sa:209:21\n");
  3409.   exit(16);
  3410.  }
  3411.  local4 = (self->asize);
  3412.  local5 = (c_INT_minus_INT_INT_chk(local4,1));
  3413.  local6 = (c_INT_div_INT_INT_chk(local5,2));
  3414.  ns = (c_INT_plus_INT_INT_chk(local6,1));
  3415.  r_6492 = FMAPSIGAM_ROUT_D_4126(self, ns);
  3416.  {
  3417.   struct FMAPSIGAM_ROUT_D_4144_frame_struct temp6494_0;
  3418.   FMAPSIGAM_ROUT_D_4144_frame 
  3419.   noname6495 = &temp6494_0;
  3420.   noname6495->state = 0;
  3421.   while (1) {
  3422.    if (noname6495->state == 0) {
  3423.     noname6493 = self;
  3424.     noname6495->arg0 = noname6493;
  3425.    }
  3426.    local7 = FMAPSIGAM_ROUT_D_4144(noname6495);
  3427.    if (noname6495->state == -1) goto after_loop;
  3428.    r_6492 = FMAPSIGAM_ROUT_D_4136(r_6492, local7);
  3429.   }
  3430.  }
  3431.  after_loop: ;
  3432.  return r_6492;
  3433. }
  3434.  
  3435.  
  3436. FMAPSIGAM_ROUT_DEF FMAPSIGAM_ROUT_D_6496(FMAPSIGAM_ROUT_DEF self, SIG k) {
  3437.  FMAPSIGAM_ROUT_DEF noname6497;
  3438.  INT h = ((INT) 0);
  3439.  SIG tk;
  3440.  INT i = ((INT) 0);
  3441.  SIG tk_6498;
  3442.  INT hsh = ((INT) 0);
  3443.  INT local0;
  3444.  INT local1;
  3445.  INT local2;
  3446.  TUPSIGAM_ROUT_DEF local3;
  3447.  SIG local4;
  3448.  INT local5;
  3449.  INT local6;
  3450.  INT local7;
  3451.  BOOL local8;
  3452.  TUPSIGAM_ROUT_DEF local9;
  3453.  SIG local10;
  3454.  BOOL local11;
  3455.  TUPSIGAM_ROUT_DEF local12;
  3456.  SIG local13;
  3457.  BOOL local14;
  3458.  INT local15;
  3459.  INT local16;
  3460.  INT local17;
  3461.  INT local18;
  3462.  if ((self==((FMAPSIGAM_ROUT_DEF) NULL))) {
  3463.   return ((FMAPSIGAM_ROUT_DEF) NULL);
  3464.  }
  3465.  local0 = FMAPSIGAM_ROUT_D_4146(self, k);
  3466.  local1 = (self->asize);
  3467.  h = (local0&(c_INT_minus_INT_INT_chk(local1,2)));
  3468.  while (1) {
  3469.   tk = (TUPSIGAM_ROUT_DEF_blob=FMAPSIGAM_ROUT_D_4148(self, h)).t1;
  3470.   if (FMAPSIGAM_ROUT_D_4151(self, tk, FMAPSIGAM_ROUT_D_4119(self))) {
  3471.    return self;
  3472.   }
  3473.   else {
  3474.    if (FMAPSIGAM_ROUT_D_4151(self, tk, k)) {
  3475.     goto after_loop;
  3476.    }
  3477.   }
  3478.   local2 = (self->asize);
  3479.   if ((h==(c_INT_minus_INT_INT_chk(local2,2)))) {
  3480.    h = 0;
  3481.   }
  3482.   else {
  3483.    h = (c_INT_plus_INT_INT_chk(h,1));
  3484.   }
  3485.  }
  3486.  after_loop: ;
  3487.  local3 = TUPSIGAM_ROUT_DEF_zero;
  3488.  local4 = FMAPSIGAM_ROUT_D_4119(self);
  3489.  FMAPSIGAM_ROUT_D_4153(self, h, TUPSIGAM_ROUT_DE_4124(local3, local4, ((AM_ROUT_DEF) NULL)));
  3490.  self->hsize = (c_INT_minus_INT_INT_chk(self->hsize,1));
  3491.  i = h;
  3492.  while (1) {
  3493.   local5 = (self->asize);
  3494.   if ((i==(c_INT_minus_INT_INT_chk(local5,2)))) {
  3495.    i = 0;
  3496.   }
  3497.   else {
  3498.    i = (c_INT_plus_INT_INT_chk(i,1));
  3499.   }
  3500.   tk_6498 = (TUPSIGAM_ROUT_DEF_blob=FMAPSIGAM_ROUT_D_4148(self, i)).t1;
  3501.   if (FMAPSIGAM_ROUT_D_4151(self, tk_6498, FMAPSIGAM_ROUT_D_4119(self))) {
  3502.    goto after_loop_6500;
  3503.   }
  3504.   local6 = FMAPSIGAM_ROUT_D_4146(self, tk_6498);
  3505.   local7 = (self->asize);
  3506.   hsh = (local6&(c_INT_minus_INT_INT_chk(local7,2)));
  3507.   if ((hsh<=i)) {
  3508.    if ((h<i)) {
  3509.     local8 = (h>=hsh);
  3510.    } else {
  3511.     local8 = FALSE;
  3512.    }
  3513.    if (local8) {
  3514.     FMAPSIGAM_ROUT_D_4153(self, h, FMAPSIGAM_ROUT_D_4148(self, i));
  3515.     h = i;
  3516.     local9 = TUPSIGAM_ROUT_DEF_zero;
  3517.     local10 = FMAPSIGAM_ROUT_D_4119(self);
  3518.     FMAPSIGAM_ROUT_D_4153(self, i, TUPSIGAM_ROUT_DE_4124(local9, local10, ((AM_ROUT_DEF) NULL)));
  3519.    }
  3520.   }
  3521.   else {
  3522.    if ((h>=hsh)) {
  3523.     local11 = TRUE;
  3524.    } else {
  3525.     local11 = (h<i);
  3526.    }
  3527.    if (local11) {
  3528.     FMAPSIGAM_ROUT_D_4153(self, h, FMAPSIGAM_ROUT_D_4148(self, i));
  3529.     h = i;
  3530.     local12 = TUPSIGAM_ROUT_DEF_zero;
  3531.     local13 = FMAPSIGAM_ROUT_D_4119(self);
  3532.     FMAPSIGAM_ROUT_D_4153(self, i, TUPSIGAM_ROUT_DE_4124(local12, local13, ((AM_ROUT_DEF) NULL)));
  3533.    }
  3534.   }
  3535.  }
  3536.  after_loop_6500: ;
  3537.  local15 = (self->asize);
  3538.  if ((local15>=33)) {
  3539.   local16 = self->hsize;
  3540.   local17 = (self->asize);
  3541.   local18 = (c_INT_minus_INT_INT_chk(local17,1));
  3542.   local14 = (local16<(c_INT_div_INT_INT_chk(local18,4)));
  3543.  } else {
  3544.   local14 = FALSE;
  3545.  }
  3546.  if (local14) {
  3547.   return FMAPSIGAM_ROUT_D_6490(self);
  3548.  }
  3549.  return self;
  3550.  if (!FMAPSIGAM_ROUT_D_1046(self)) {
  3551.   fprintf(stderr,"Failed invariant FMAP{SIG,AM_ROUT_DEF}::invariant:BOOL ../Library/fmap.sa:217:9\n");
  3552.   exit(16);
  3553.  }
  3554. }
  3555.  
  3556.  
  3557. STR BE_emit_dispatch(BE self, SIG s_6502) {
  3558.  STR noname6503;
  3559.  STR res;
  3560.  ARRAYTP noname6504;
  3561.  TP e_6505;
  3562.  INT noname6506 = ((INT) 0);
  3563.  INT noname6507 = ((INT) 0);
  3564.  INT noname6508 = ((INT) 0);
  3565.  INT i = ((INT) 0);
  3566.  STR local0;
  3567.  FILE_20 local1;
  3568.  STR local2;
  3569.  FILE_20 local3;
  3570.  FILE_20 local4;
  3571.  FILE_20 local5;
  3572.  FILE_20 local6;
  3573.  FILE_20 local7;
  3574.  FILE_20 local8;
  3575.  FILE_20 local9;
  3576.  FILE_20 local10;
  3577.  FILE_20 local11;
  3578.  FILE_20 local12;
  3579.  TP local13;
  3580.  FILE_20 local14;
  3581.  FILE_20 local15;
  3582.  FILE_20 local16;
  3583.  INT local17;
  3584.  FILE_20 local18;
  3585.  FILE_20 local19;
  3586.  FILE_20 local20;
  3587.  INT local21;
  3588.  INT local22;
  3589.  INT local23;
  3590.  
  3591.  FILE_20 local24;
  3592.  FILE_20 local25;
  3593.  local0 = BE_mangle_OB_STR(self, ((OB) s_6502));
  3594.  res = STR_plus_STR_STR(local0, ((STR) &S_unbox));
  3595.  FILE_plus_CHAR(self->code_c, '\n');
  3596.  local1 = self->code_c;
  3597.  local2 = ((STR) &Wrappertounbox);
  3598.  BE_comment_FILE_STR(self, local1, STR_plus_STR_STR(local2, SIG_str_STR(s_6502)));
  3599.  FILE_plus_CHAR(self->code_c, '\n');
  3600.  if ((s_6502->ret==((TP) NULL))) {
  3601.   (fwrite(((STR) &void_6509)->arr_part,((STR) &void_6509)->asize,1,self->code_c->fp));
  3602.   (fwrite(((STR) &void_6510)->arr_part,((STR) &void_6510)->asize,1,self->decs_h->fp));
  3603.  }
  3604.  else {
  3605.   local3 = self->code_c;
  3606.   local4 = FILE_plus_STR_FILE(local3, BE_mangle_OB_STR(self, ((OB) s_6502->ret)));
  3607.   FILE_plus_CHAR(local4, ' ');
  3608.   local5 = self->decs_h;
  3609.   local6 = FILE_plus_STR_FILE(local5, BE_mangle_OB_STR(self, ((OB) s_6502->ret)));
  3610.   FILE_plus_CHAR(local6, ' ');
  3611.  }
  3612.  local7 = FILE_plus_STR_FILE(self->code_c, res);
  3613.  local8 = FILE_plus_STR_FILE(local7, ((STR) &name_6511));
  3614.  local9 = FILE_plus_STR_FILE(local8, BE_mangle_OB_STR(self, ((OB) s_6502->tp)));
  3615.  (fwrite(((STR) &S_boxedarg0)->arr_part,((STR) &S_boxedarg0)->asize,1,local9->fp));
  3616.  local10 = FILE_plus_STR_FILE(self->decs_h, res);
  3617.  local11 = FILE_plus_STR_FILE(local10, ((STR) &name_6512));
  3618.  local12 = FILE_plus_STR_FILE(local11, BE_mangle_OB_STR(self, ((OB) s_6502->tp)));
  3619.  (fwrite(((STR) &S_boxed_6513)->arr_part,((STR) &S_boxed_6513)->asize,1,local12->fp));
  3620.  {
  3621.   struct ARRAYTP_elt_TP_frame_struct temp6514_0;
  3622.   ARRAYTP_elt_TP_frame 
  3623.   noname6515 = &temp6514_0;
  3624.   struct INT_up_INT_frame_struct temp6514_1;
  3625.   INT_up_INT_frame 
  3626.   noname6516 = &temp6514_1;
  3627.   noname6515->state = 0;
  3628.   noname6516->state = 0;
  3629.   while (1) {
  3630.    if (noname6515->state == 0) {
  3631.     noname6504 = s_6502->args_7;
  3632.     noname6515->arg0 = noname6504;
  3633.    }
  3634.    local13 = ARRAYTP_elt_TP(noname6515);
  3635.    if (noname6515->state == -1) goto after_loop;
  3636.    e_6505 = local13;
  3637.    local14 = FILE_plus_STR_FILE(self->code_c, ((STR) &name_6517));
  3638.    local15 = FILE_plus_STR_FILE(local14, BE_mangle_OB_STR(self, ((OB) e_6505)));
  3639.    local16 = FILE_plus_STR_FILE(local15, ((STR) &arg_6518));
  3640.    if (noname6516->state == 0) {
  3641.     noname6506 = 1;
  3642.     noname6516->arg0 = noname6506;
  3643.    }
  3644.    local17 = INT_up_INT(noname6516);
  3645.    if (noname6516->state == -1) goto after_loop;
  3646.    FILE_plus_INT(local16, local17);
  3647.    local18 = FILE_plus_STR_FILE(self->decs_h, ((STR) &name_6519));
  3648.    (fwrite(BE_mangle_OB_STR(self, ((OB) e_6505))->arr_part,BE_mangle_OB_STR(self, ((OB) e_6505))->asize,1,local18->fp));
  3649.   }
  3650.  }
  3651.  after_loop: ;
  3652.  (fwrite(((STR) &name_6520)->arr_part,((STR) &name_6520)->asize,1,self->code_c->fp));
  3653.  (fwrite(((STR) &name_6521)->arr_part,((STR) &name_6521)->asize,1,self->decs_h->fp));
  3654.  FILE_plus_CHAR(self->code_c, ' ');
  3655.  if ((!((s_6502->ret==((TP) NULL))))) {
  3656.   (fwrite(((STR) &return_6522)->arr_part,((STR) &return_6522)->asize,1,self->code_c->fp));
  3657.  }
  3658.  local19 = self->code_c;
  3659.  local20 = FILE_plus_STR_FILE(local19, BE_mangle_OB_STR(self, ((OB) s_6502)));
  3660.  (fwrite(((STR) &arg0value_part)->arr_part,((STR) &arg0value_part)->asize,1,local20->fp));
  3661.  {
  3662.   BOOL noname6525 = TRUE;
  3663.   while (1) {
  3664.    if (noname6525) {
  3665.     noname6525 = FALSE;
  3666.     noname6507 = 1;
  3667.     noname6508 = SIG_num_args_INT(s_6502);
  3668.     local22 = noname6507;
  3669.     local23 = noname6508;
  3670.     local21 = local22;
  3671.    } else {
  3672.     local21++;
  3673.    }
  3674.    if (local21>local23) goto after_loop_6523;
  3675.    i = local21;
  3676.    local24 = FILE_plus_STR_FILE(self->code_c, ((STR) &arg_6526));
  3677.    FILE_plus_INT(local24, i);
  3678.   }
  3679.  }
  3680.  after_loop_6523: ;
  3681.  local25 = FILE_plus_STR_FILE(self->code_c, ((STR) &name_6527));
  3682.  (fwrite(((STR) &name_6528)->arr_part,((STR) &name_6528)->asize,1,local25->fp));
  3683.  return res;
  3684. }
  3685.  
  3686.  
  3687. void BE_emit_dispatch_6529(BE self, AM_ROUT_DEF f_6530) {
  3688.  FLISTTP des_6531;
  3689.  INT mintag = ((INT) 0);
  3690.  INT maxtag = ((INT) 0);
  3691.  STR cst = ((STR) NULL);
  3692.  STR decl = ((STR) NULL);
  3693.  FSETTP gh = ((FSETTP) NULL);
  3694.  TP fst;
  3695.  FSETTP noname6532;
  3696.  TP t_6533;
  3697.  INT tag_6534 = ((INT) 0);
  3698.  ARRAYTP noname6535;
  3699.  TP e_6536;
  3700.  INT noname6537 = ((INT) 0);
  3701.  INT noname6538 = ((INT) 0);
  3702.  INT i = ((INT) 0);
  3703.  BOOL exists = ((BOOL) 0);
  3704.  FLISTTP noname6539;
  3705.  TP e_6540;
  3706.  INT tag_6541 = ((INT) 0);
  3707.  SIG real_sig;
  3708.  STR functocall = ((STR) NULL);
  3709.  AM_ROUT_DEF am_6542;
  3710.  TP local0;
  3711.  FILE_20 local1;
  3712.  STR local2;
  3713.  FILE_20 local3;
  3714.  FILE_20 local4;
  3715.  FILE_20 local5;
  3716.  FILE_20 local6;
  3717.  FILE_20 local7;
  3718.  FILE_20 local8;
  3719.  STR local9;
  3720.  STR local10;
  3721.  STR local11;
  3722.  STR local12;
  3723.  STR local13;
  3724.  TP local14;
  3725.  STR local15;
  3726.  STR local16;
  3727.  FILE_20 local17;
  3728.  FILE_20 local18;
  3729.  FILE_20 local19;
  3730.  INT local20;
  3731.  INT local21;
  3732.  INT local22;
  3733.  
  3734.  TP local23;
  3735.  IFC local24;
  3736.  TP local25;
  3737.  FILE_20 local26;
  3738.  FILE_20 local27;
  3739.  FILE_20 local28;
  3740.  des_6531 = FLISTTP_create_F(((FLISTTP) NULL));
  3741.  mintag = (SINT_MAX);
  3742.  maxtag = (SINT_MIN);
  3743.  fst = f_6530->sig_6->tp;
  3744.  if (fst==NULL) {
  3745.  } else
  3746.  switch (fst->header.tag) {
  3747.   case TP_CLASS_tag:
  3748.    gh = PROG_descendants(self->prog, ((TP_CLASS) fst)); break;
  3749.   default: ;
  3750.    fprintf(stderr,"No applicable type in typecase ./be.sa:1404:16\n");
  3751.    exit(16);
  3752.  }
  3753.  {
  3754.   struct FSETTP_elt_TP_frame_struct temp6543_0;
  3755.   FSETTP_elt_TP_frame 
  3756.   noname6544 = &temp6543_0;
  3757.   noname6544->state = 0;
  3758.   while (1) {
  3759.    if (noname6544->state == 0) {
  3760.     noname6532 = gh;
  3761.     noname6544->arg0 = noname6532;
  3762.    }
  3763.    local0 = FSETTP_elt_TP(noname6544);
  3764.    if (noname6544->state == -1) goto after_loop;
  3765.    t_6533 = local0;
  3766.    des_6531 = FLISTTP_push_TP_(des_6531, t_6533);
  3767.    tag_6534 = BE_num_tag_for_T(self, t_6533);
  3768.    maxtag = INT_max_INT_INT(maxtag, tag_6534);
  3769.    mintag = INT_min_INT_INT(mintag, tag_6534);
  3770.   }
  3771.  }
  3772.  after_loop: ;
  3773.  local1 = self->globals_c;
  3774.  local2 = ((STR) &Dispatchtablefor);
  3775.  BE_comment_FILE_STR(self, local1, STR_plus_STR_STR(local2, BE_mangle_OB_STR(self, ((OB) f_6530->sig_6))));
  3776.  local3 = FILE_plus_STR_FILE(self->globals_h, ((STR) &externconstint));
  3777.  local4 = FILE_plus_STR_FILE(local3, BE_mangle_OB_STR(self, ((OB) f_6530->sig_6)));
  3778.  (fwrite(((STR) &S_offset_6545)->arr_part,((STR) &S_offset_6545)->asize,1,local4->fp));
  3779.  local5 = FILE_plus_STR_FILE(self->globals_c, ((STR) &constint));
  3780.  local6 = FILE_plus_STR_FILE(local5, BE_mangle_OB_STR(self, ((OB) f_6530->sig_6)));
  3781.  local7 = FILE_plus_STR_FILE(local6, ((STR) &S_offset_6546));
  3782.  local8 = FILE_plus_INT_FILE(local7, INT_negate_INT(mintag));
  3783.  (fwrite(((STR) &name_6547)->arr_part,((STR) &name_6547)->asize,1,local8->fp));
  3784.  local9 = BE_mangle_OB_STR(self, ((OB) f_6530->sig_6));
  3785.  BE_forbid_STR(self, STR_plus_STR_STR(local9, ((STR) &S_offset_6548)));
  3786.  cst = ((STR) &name_6549);
  3787.  if ((!((f_6530->sig_6->ret==((TP) NULL))))) {
  3788.   decl = BE_mangle_OB_STR(self, ((OB) f_6530->sig_6->ret));
  3789.   cst = STR_plus_STR_STR(cst, BE_mangle_OB_STR(self, ((OB) f_6530->sig_6->ret)));
  3790.  }
  3791.  else {
  3792.   decl = ((STR) &int_6550);
  3793.   cst = STR_plus_STR_STR(cst, ((STR) &int_6551));
  3794.  }
  3795.  local10 = STR_plus_STR_STR(decl, ((STR) &const_6552));
  3796.  local11 = STR_plus_STR_STR(local10, BE_mangle_OB_STR(self, ((OB) f_6530->sig_6)));
  3797.  local12 = STR_plus_STR_STR(local11, ((STR) &name_6553));
  3798.  decl = STR_plus_STR_STR(local12, BE_mangle_OB_STR(self, ((OB) f_6530->sig_6->tp)));
  3799.  local13 = STR_plus_STR_STR(cst, ((STR) &name_6554));
  3800.  cst = STR_plus_STR_STR(local13, BE_mangle_OB_STR(self, ((OB) f_6530->sig_6->tp)));
  3801.  if ((!((f_6530->sig_6->args_7==((ARRAYTP) NULL))))) {
  3802.   {
  3803.    struct ARRAYTP_elt_TP_frame_struct temp6556_0;
  3804.    ARRAYTP_elt_TP_frame 
  3805.    noname6557 = &temp6556_0;
  3806.    noname6557->state = 0;
  3807.    while (1) {
  3808.     if (noname6557->state == 0) {
  3809.      noname6535 = f_6530->sig_6->args_7;
  3810.      noname6557->arg0 = noname6535;
  3811.     }
  3812.     local14 = ARRAYTP_elt_TP(noname6557);
  3813.     if (noname6557->state == -1) goto after_loop_6555;
  3814.     e_6536 = local14;
  3815.     local15 = STR_plus_STR_STR(decl, ((STR) &name_6558));
  3816.     decl = STR_plus_STR_STR(local15, BE_mangle_OB_STR(self, ((OB) e_6536)));
  3817.     local16 = STR_plus_STR_STR(cst, ((STR) &name_6559));
  3818.     cst = STR_plus_STR_STR(local16, BE_mangle_OB_STR(self, ((OB) e_6536)));
  3819.    }
  3820.   }
  3821.   after_loop_6555: ;
  3822.  }
  3823.  decl = STR_plus_STR_STR(decl, ((STR) &name_6560));
  3824.  local17 = FILE_plus_STR_FILE(self->globals_h, ((STR) &extern_6561));
  3825.  local18 = FILE_plus_STR_FILE(local17, decl);
  3826.  (fwrite(((STR) &name_6562)->arr_part,((STR) &name_6562)->asize,1,local18->fp));
  3827.  local19 = FILE_plus_STR_FILE(self->globals_c, decl);
  3828.  (fwrite(((STR) &name_6563)->arr_part,((STR) &name_6563)->asize,1,local19->fp));
  3829.  cst = STR_plus_STR_STR(cst, ((STR) &name_6564));
  3830.  {
  3831.   BOOL noname6567 = TRUE;
  3832.   while (1) {
  3833.    if (noname6567) {
  3834.     noname6567 = FALSE;
  3835.     noname6537 = mintag;
  3836.     noname6538 = maxtag;
  3837.     local21 = noname6537;
  3838.     local22 = noname6538;
  3839.     local20 = local21;
  3840.    } else {
  3841.     local20++;
  3842.    }
  3843.    if (local20>local22) goto after_loop_6565;
  3844.    i = local20;
  3845.    exists = FALSE;
  3846.    {
  3847.     struct FLISTTP_elt_TP_frame_struct temp6569_0;
  3848.     FLISTTP_elt_TP_frame 
  3849.     noname6570 = &temp6569_0;
  3850.     noname6570->state = 0;
  3851.     while (1) {
  3852.      if (noname6570->state == 0) {
  3853.       noname6539 = des_6531;
  3854.       noname6570->arg0 = noname6539;
  3855.      }
  3856.      local23 = FLISTTP_elt_TP(noname6570);
  3857.      if (noname6570->state == -1) goto after_loop_6568;
  3858.      e_6540 = local23;
  3859.      tag_6541 = BE_num_tag_for_T(self, e_6540);
  3860.      local24 = IFC_TBL_ifc_of_T(self->prog->ifc_tbl, e_6540);
  3861.      real_sig = IFC_sig_conformi(local24, f_6530->sig_6);
  3862.      if ((tag_6541==i)) {
  3863.       exists = TRUE;
  3864.       am_6542 = FMAPSIGAM_ROUT_D_6484(self->inlined_sigs, real_sig);
  3865.       if ((!((am_6542==((AM_ROUT_DEF) NULL))))) {
  3866.        BE_emit_routine_(self, am_6542);
  3867.        self->inlined_sigs = FMAPSIGAM_ROUT_D_6496(self->inlined_sigs, real_sig);
  3868.       }
  3869.       local25 = e_6540;
  3870.       if ((*TP_is_value_BOOL[local25->header.tag+TP_is_value_BOOL_offset])(local25)) {
  3871.        functocall = BE_emit_dispatch(self, real_sig);
  3872.       }
  3873.       else {
  3874.        functocall = BE_mangle_OB_STR(self, ((OB) real_sig));
  3875.       }
  3876.       local26 = FILE_plus_CHAR_FILE(self->globals_c, ' ');
  3877.       local27 = FILE_plus_STR_FILE(local26, cst);
  3878.       (fwrite(functocall->arr_part,functocall->asize,1,local27->fp));
  3879.       if ((i!=maxtag)) {
  3880.        (fwrite(((STR) &name_6571)->arr_part,((STR) &name_6571)->asize,1,self->globals_c->fp));
  3881.       }
  3882.       local28 = self->globals_c;
  3883.       BE_comment_FILE_STR(self, local28, SIG_str_STR(real_sig));
  3884.       FILE_plus_CHAR(self->globals_c, '\n');
  3885.      }
  3886.     }
  3887.    }
  3888.    after_loop_6568: ;
  3889.    if ((!(exists))) {
  3890.     (fwrite(((STR) &NULL_6572)->arr_part,((STR) &NULL_6572)->asize,1,self->globals_c->fp));
  3891.     if ((i!=maxtag)) {
  3892.      (fwrite(((STR) &name_6573)->arr_part,((STR) &name_6573)->asize,1,self->globals_c->fp));
  3893.     }
  3894.     FILE_plus_CHAR(self->globals_c, '\n');
  3895.    }
  3896.   }
  3897.  }
  3898.  after_loop_6565: ;
  3899.  if ((mintag>maxtag)) {
  3900.   (fwrite(((STR) &NULLNodescendent)->arr_part,((STR) &NULLNodescendent)->asize,1,self->globals_c->fp));
  3901.  }
  3902.  (fwrite(((STR) &name_6574)->arr_part,((STR) &name_6574)->asize,1,self->globals_c->fp));
  3903. }
  3904.  
  3905.  
  3906. void BE_generate_disp(BE self) {
  3907.  FLISTAM_ROUT_DEF noname6575;
  3908.  AM_ROUT_DEF local0;
  3909.  {
  3910.   struct FLISTAM_ROUT_DEF_4104_frame_struct temp6576_0;
  3911.   FLISTAM_ROUT_DEF_4104_frame 
  3912.   noname6577 = &temp6576_0;
  3913.   noname6577->state = 0;
  3914.   while (1) {
  3915.    if (noname6577->state == 0) {
  3916.     noname6575 = self->abstract_routs;
  3917.     noname6577->arg0 = noname6575;
  3918.    }
  3919.    local0 = FLISTAM_ROUT_DEF_4104(noname6577);
  3920.    if (noname6577->state == -1) goto after_loop;
  3921.    BE_emit_dispatch_6529(self, local0);
  3922.   }
  3923.  }
  3924.  after_loop: ;
  3925. }
  3926.  
  3927.  
  3928. void BE_generate_bnd_(BE self) {
  3929.  FLISTAM_BND_CREA noname6578;
  3930.  AM_BND_CREATE_EXPR e_6579;
  3931.  STR name_6580;
  3932.  ARRAYINT noname6581;
  3933.  INT i = ((INT) 0);
  3934.  STR dec = ((STR) NULL);
  3935.  INT noname6582 = ((INT) 0);
  3936.  AM_BND_CREATE_EXPR noname6583;
  3937.  INT i_6584 = ((INT) 0);
  3938.  ARRAYSTR arg_list;
  3939.  INT bnd = ((INT) 0);
  3940.  INT unbnd = ((INT) 0);
  3941.  BOOL is_bnd = ((BOOL) 0);
  3942.  ARRAYSTR noname6585;
  3943.  INT i_6586 = ((INT) 0);
  3944.  AM_BND_CREATE_EXPR local0;
  3945.  FILE_20 local1;
  3946.  FILE_20 local2;
  3947.  FILE_20 local3;
  3948.  FILE_20 local4;
  3949.  FILE_20 local5;
  3950.  FILE_20 local6;
  3951.  FILE_20 local7;
  3952.  FILE_20 local8;
  3953.  FILE_20 local9;
  3954.  FILE_20 local10;
  3955.  FILE_20 local11;
  3956.  FILE_20 local12;
  3957.  FILE_20 local13;
  3958.  FILE_20 local14;
  3959.  FILE_20 local15;
  3960.  FILE_20 local16;
  3961.  INT local17;
  3962.  ARRAYTP local18;
  3963.  FILE_20 local19;
  3964.  FILE_20 local20;
  3965.  FILE_20 local21;
  3966.  INT local22;
  3967.  FILE_20 local23;
  3968.  FILE_20 local24;
  3969.  INT local25;
  3970.  INT local26;
  3971.  FILE_20 local27;
  3972.  FILE_20 local28;
  3973.  ARRAYTP local29;
  3974.  FILE_20 local30;
  3975.  FILE_20 local31;
  3976.  FILE_20 local32;
  3977.  FILE_20 local33;
  3978.  ARRAYSTR local34;
  3979.  INT local35;
  3980.  INT local36;
  3981.  INT local37;
  3982.  INT local38;
  3983.  INT local39;
  3984.  FILE_20 local40;
  3985.  FILE_20 local41;
  3986.  {
  3987.   struct FLISTAM_BND_CREA_4674_frame_struct temp6587_0;
  3988.   FLISTAM_BND_CREA_4674_frame 
  3989.   noname6588 = &temp6587_0;
  3990.   noname6588->state = 0;
  3991.   while (1) {
  3992.    if (noname6588->state == 0) {
  3993.     noname6578 = self->bnd_rout_creates;
  3994.     noname6588->arg0 = noname6578;
  3995.    }
  3996.    local0 = FLISTAM_BND_CREA_4674(noname6588);
  3997.    if (noname6588->state == -1) goto after_loop;
  3998.    e_6579 = local0;
  3999.    name_6580 = BE_mangle_OB_STR(self, ((OB) e_6579));
  4000.    BE_forbid_STR(self, STR_plus_STR_STR(name_6580, ((STR) &S_ob_6589)));
  4001.    BE_forbid_STR(self, STR_plus_STR_STR(name_6580, ((STR) &S_ob_struct_6590)));
  4002.    local1 = FILE_plus_STR_FILE(self->typedefs_h, ((STR) &typedefstruct_6591));
  4003.    local2 = FILE_plus_STR_FILE(local1, name_6580);
  4004.    (fwrite(((STR) &S_ob_struct_6592)->arr_part,((STR) &S_ob_struct_6592)->asize,1,local2->fp));
  4005.    (fwrite(((STR) &OB_HEADERheader_6593)->arr_part,((STR) &OB_HEADERheader_6593)->asize,1,self->typedefs_h->fp));
  4006.    if ((!((e_6579->fun->ret==((TP) NULL))))) {
  4007.     local3 = self->code_c;
  4008.     local4 = FILE_plus_STR_FILE(local3, BE_mangle_OB_STR(self, ((OB) e_6579->fun->ret)));
  4009.     FILE_plus_CHAR(local4, ' ');
  4010.    }
  4011.    else {
  4012.     (fwrite(((STR) &void_6594)->arr_part,((STR) &void_6594)->asize,1,self->code_c->fp));
  4013.    }
  4014.    local5 = FILE_plus_STR_FILE(self->code_c, name_6580);
  4015.    local6 = FILE_plus_CHAR_FILE(local5, '(');
  4016.    local7 = FILE_plus_STR_FILE(local6, name_6580);
  4017.    (fwrite(((STR) &S_obob)->arr_part,((STR) &S_obob)->asize,1,local7->fp));
  4018.    if ((!((e_6579->fun->ret==((TP) NULL))))) {
  4019.     local8 = self->decs_h;
  4020.     local9 = FILE_plus_STR_FILE(local8, BE_mangle_OB_STR(self, ((OB) e_6579->fun->ret)));
  4021.     FILE_plus_CHAR(local9, ' ');
  4022.    }
  4023.    else {
  4024.     (fwrite(((STR) &void_6595)->arr_part,((STR) &void_6595)->asize,1,self->decs_h->fp));
  4025.    }
  4026.    local10 = FILE_plus_STR_FILE(self->decs_h, name_6580);
  4027.    local11 = FILE_plus_CHAR_FILE(local10, '(');
  4028.    local12 = FILE_plus_STR_FILE(local11, name_6580);
  4029.    (fwrite(((STR) &S_ob_6596)->arr_part,((STR) &S_ob_6596)->asize,1,local12->fp));
  4030.    if ((!((e_6579->fun->ret==((TP) NULL))))) {
  4031.     local13 = FILE_plus_CHAR_FILE(self->typedefs_h, ' ');
  4032.     local14 = FILE_plus_STR_FILE(local13, BE_mangle_OB_STR(self, ((OB) e_6579->fun->ret)));
  4033.     FILE_plus_CHAR(local14, ' ');
  4034.    }
  4035.    else {
  4036.     (fwrite(((STR) &void_6597)->arr_part,((STR) &void_6597)->asize,1,self->typedefs_h->fp));
  4037.    }
  4038.    local15 = FILE_plus_STR_FILE(self->typedefs_h, ((STR) &funcptrstruct));
  4039.    local16 = FILE_plus_STR_FILE(local15, name_6580);
  4040.    (fwrite(((STR) &S_ob_struct_6598)->arr_part,((STR) &S_ob_struct_6598)->asize,1,local16->fp));
  4041.    {
  4042.     struct ARRAYINT_elt_INT_frame_struct temp6600_0;
  4043.     ARRAYINT_elt_INT_frame 
  4044.     noname6601 = &temp6600_0;
  4045.     struct INT_up_INT_frame_struct temp6600_1;
  4046.     INT_up_INT_frame 
  4047.     noname6602 = &temp6600_1;
  4048.     noname6601->state = 0;
  4049.     noname6602->state = 0;
  4050.     while (1) {
  4051.      if (noname6601->state == 0) {
  4052.       noname6581 = e_6579->unbnd_args;
  4053.       noname6601->arg0 = noname6581;
  4054.      }
  4055.      local17 = ARRAYINT_elt_INT(noname6601);
  4056.      if (noname6601->state == -1) goto after_loop_6599;
  4057.      i = local17;
  4058.      if ((i==0)) {
  4059.       dec = BE_mangle_OB_STR(self, ((OB) e_6579->fun->tp));
  4060.      }
  4061.      else {
  4062.       local18 = e_6579->fun->args_7;
  4063.       dec = BE_mangle_OB_STR(self, ((OB) ARRAYTP_aget_INT_TP(local18, (c_INT_minus_INT_INT_chk(i,1)))));
  4064.      }
  4065.      local19 = FILE_plus_STR_FILE(self->code_c, ((STR) &name_6603));
  4066.      local20 = FILE_plus_STR_FILE(local19, dec);
  4067.      local21 = FILE_plus_STR_FILE(local20, ((STR) &unbound_arg));
  4068.      if (noname6602->state == 0) {
  4069.       noname6582 = 0;
  4070.       noname6602->arg0 = noname6582;
  4071.      }
  4072.      local22 = INT_up_INT(noname6602);
  4073.      if (noname6602->state == -1) goto after_loop_6599;
  4074.      FILE_plus_INT(local21, local22);
  4075.      local23 = FILE_plus_STR_FILE(self->decs_h, ((STR) &name_6604));
  4076.      (fwrite(dec->arr_part,dec->asize,1,local23->fp));
  4077.      local24 = FILE_plus_STR_FILE(self->typedefs_h, ((STR) &name_6605));
  4078.      (fwrite(dec->arr_part,dec->asize,1,local24->fp));
  4079.     }
  4080.    }
  4081.    after_loop_6599: ;
  4082.    (fwrite(((STR) &name_6606)->arr_part,((STR) &name_6606)->asize,1,self->decs_h->fp));
  4083.    (fwrite(((STR) &name_6607)->arr_part,((STR) &name_6607)->asize,1,self->code_c->fp));
  4084.    (fwrite(((STR) &name_6608)->arr_part,((STR) &name_6608)->asize,1,self->typedefs_h->fp));
  4085.    {
  4086.     struct AM_BND_CREATE_EX_3800_frame_struct temp6610_0;
  4087.     AM_BND_CREATE_EX_3800_frame 
  4088.     noname6611 = &temp6610_0;
  4089.     noname6611->state = 0;
  4090.     while (1) {
  4091.      if (noname6611->state == 0) {
  4092.       noname6583 = e_6579;
  4093.       noname6611->arg0 = noname6583;
  4094.      }
  4095.      local25 = AM_BND_CREATE_EX_3800(noname6611);
  4096.      if (noname6611->state == -1) goto after_loop_6609;
  4097.      i_6584 = local25;
  4098.      local26 = ARRAYINT_aget_IN(e_6579->bnd_args, i_6584);
  4099.      if ((local26==0)) {
  4100.       local27 = FILE_plus_CHAR_FILE(self->typedefs_h, ' ');
  4101.       (fwrite(BE_mangle_OB_STR(self, ((OB) e_6579->fun->tp))->arr_part,BE_mangle_OB_STR(self, ((OB) e_6579->fun->tp))->asize,1,local27->fp));
  4102.      }
  4103.      else {
  4104.       local28 = FILE_plus_CHAR_FILE(self->typedefs_h, ' ');
  4105.       local29 = e_6579->fun->args_7;
  4106.       (fwrite(BE_mangle_OB_STR(self, ((OB) ARRAYTP_aget_INT_TP(local29, (c_INT_minus_INT_INT_chk(i_6584,1)))))->arr_part,BE_mangle_OB_STR(self, ((OB) ARRAYTP_aget_INT_TP(local29, (c_INT_minus_INT_INT_chk(i_6584,1)))))->asize,1,local28->fp));
  4107.      }
  4108.      local30 = FILE_plus_STR_FILE(self->typedefs_h, ((STR) &bound_arg_6612));
  4109.      local31 = FILE_plus_INT_FILE(local30, i_6584);
  4110.      (fwrite(((STR) &name_6613)->arr_part,((STR) &name_6613)->asize,1,local31->fp));
  4111.     }
  4112.    }
  4113.    after_loop_6609: ;
  4114.    local32 = FILE_plus_STR_FILE(self->typedefs_h, ((STR) &name_6614));
  4115.    local33 = FILE_plus_STR_FILE(local32, name_6580);
  4116.    (fwrite(((STR) &S_ob_6615)->arr_part,((STR) &S_ob_6615)->asize,1,local33->fp));
  4117.    local34 = ((ARRAYSTR) NULL);
  4118.    local35 = ARRAYTP_size_INT(e_6579->fun->args_7);
  4119.    arg_list = ARRAYSTR_create_(local34, (c_INT_plus_INT_INT_chk(local35,1)));
  4120.    bnd = 0;
  4121.    unbnd = 0;
  4122.    {
  4123.     struct ARRAYSTR_ind_INT_frame_struct temp6617_0;
  4124.     ARRAYSTR_ind_INT_frame 
  4125.     noname6618 = &temp6617_0;
  4126.     noname6618->state = 0;
  4127.     while (1) {
  4128.      if (noname6618->state == 0) {
  4129.       noname6585 = arg_list;
  4130.       noname6618->arg0 = noname6585;
  4131.      }
  4132.      local36 = ARRAYSTR_ind_INT(noname6618);
  4133.      if (noname6618->state == -1) goto after_loop_6616;
  4134.      i_6586 = local36;
  4135.      if ((bnd<ARRAYINT_size_INT(e_6579->bnd_args))) {
  4136.       local37 = ARRAYINT_aget_IN(e_6579->bnd_args, bnd);
  4137.       if ((local37==i_6586)) {
  4138.        is_bnd = TRUE;
  4139.       }
  4140.       else {
  4141.        local38 = ARRAYINT_aget_IN(e_6579->unbnd_args, unbnd);
  4142.        if ((local38==i_6586)) {
  4143.         is_bnd = FALSE;
  4144.        }
  4145.        else {
  4146.         BE_barf_STR(self, ((STR) &Ranoffunboundarglist));
  4147.        }
  4148.       }
  4149.      }
  4150.      else {
  4151.       local39 = ARRAYINT_aget_IN(e_6579->unbnd_args, unbnd);
  4152.       if ((local39==i_6586)) {
  4153.        is_bnd = FALSE;
  4154.       }
  4155.       else {
  4156.        BE_barf_STR(self, ((STR) &Ranoffunboundarg));
  4157.       }
  4158.      }
  4159.      if (is_bnd) {
  4160.       ARRAYSTR_aset_IN_4289(arg_list, i_6586, STR_plus_INT_STR(((STR) &obbound_arg), bnd));
  4161.       bnd = (c_INT_plus_INT_INT_chk(bnd,1));
  4162.      }
  4163.      else {
  4164.       ARRAYSTR_aset_IN_4289(arg_list, i_6586, STR_plus_INT_STR(((STR) &unbound_arg_6619), unbnd));
  4165.       unbnd = (c_INT_plus_INT_INT_chk(unbnd,1));
  4166.      }
  4167.     }
  4168.    }
  4169.    after_loop_6616: ;
  4170.    if ((!((e_6579->fun->ret==((TP) NULL))))) {
  4171.     (fwrite(((STR) &return_6620)->arr_part,((STR) &return_6620)->asize,1,self->code_c->fp));
  4172.    }
  4173.    local40 = FILE_plus_CHAR_FILE(self->code_c, ' ');
  4174.    local41 = FILE_plus_STR_FILE(local40, BE_emit_call_SIG(self, e_6579->fun, arg_list));
  4175.    (fwrite(((STR) &name_6621)->arr_part,((STR) &name_6621)->asize,1,local41->fp));
  4176.   }
  4177.  }
  4178.  after_loop: ;
  4179. }
  4180.  
  4181.  
  4182. void BE_generate_bnd__6622(BE self) {
  4183.  TP_ROUT_TBL noname6623;
  4184.  TP_ROUT e_6624;
  4185.  STR name_6625;
  4186.  ARRAYTP noname6626;
  4187.  TP a_6627;
  4188.  TP_ROUT local0;
  4189.  FILE_20 local1;
  4190.  FILE_20 local2;
  4191.  FILE_20 local3;
  4192.  TP local4;
  4193.  FILE_20 local5;
  4194.  FILE_20 local6;
  4195.  FILE_20 local7;
  4196.  {
  4197.   struct TP_ROUT_TBL_elt__223_frame_struct temp6628_0;
  4198.   TP_ROUT_TBL_elt__223_frame 
  4199.   noname6629 = &temp6628_0;
  4200.   noname6629->state = 0;
  4201.   while (1) {
  4202.    if (noname6629->state == 0) {
  4203.     noname6623 = self->prog->tp_tbl->rout_tbl;
  4204.     noname6629->arg0 = noname6623;
  4205.    }
  4206.    local0 = TP_ROUT_TBL_elt__223(noname6629);
  4207.    if (noname6629->state == -1) goto after_loop;
  4208.    e_6624 = local0;
  4209.    name_6625 = BE_mangle_OB_STR(self, ((OB) e_6624));
  4210.    BE_forbid_STR(self, STR_plus_STR_STR(name_6625, ((STR) &S_struct_6630)));
  4211.    if ((!(BE_is_built_in_t(self, ((TP) e_6624))))) {
  4212.     local1 = FILE_plus_STR_FILE(self->typedefs_h, ((STR) &typedefstruct_6631));
  4213.     local2 = FILE_plus_STR_FILE(local1, name_6625);
  4214.     (fwrite(((STR) &S_struct_6632)->arr_part,((STR) &S_struct_6632)->asize,1,local2->fp));
  4215.     (fwrite(((STR) &OB_HEADERheader_6633)->arr_part,((STR) &OB_HEADERheader_6633)->asize,1,self->typedefs_h->fp));
  4216.     if ((!((e_6624->ret==((TP) NULL))))) {
  4217.      local3 = FILE_plus_CHAR_FILE(self->typedefs_h, ' ');
  4218.      (fwrite(BE_mangle_OB_STR(self, ((OB) e_6624->ret))->arr_part,BE_mangle_OB_STR(self, ((OB) e_6624->ret))->asize,1,local3->fp));
  4219.     }
  4220.     else {
  4221.      (fwrite(((STR) &void_6634)->arr_part,((STR) &void_6634)->asize,1,self->typedefs_h->fp));
  4222.     }
  4223.     (fwrite(((STR) &funcptrvoid)->arr_part,((STR) &funcptrvoid)->asize,1,self->typedefs_h->fp));
  4224.     {
  4225.      struct ARRAYTP_elt_TP_frame_struct temp6636_0;
  4226.      ARRAYTP_elt_TP_frame 
  4227.      noname6637 = &temp6636_0;
  4228.      noname6637->state = 0;
  4229.      while (1) {
  4230.       if (noname6637->state == 0) {
  4231.        noname6626 = e_6624->args_7;
  4232.        noname6637->arg0 = noname6626;
  4233.       }
  4234.       local4 = ARRAYTP_elt_TP(noname6637);
  4235.       if (noname6637->state == -1) goto after_loop_6635;
  4236.       a_6627 = local4;
  4237.       local5 = FILE_plus_STR_FILE(self->typedefs_h, ((STR) &name_6638));
  4238.       (fwrite(BE_mangle_OB_STR(self, ((OB) a_6627))->arr_part,BE_mangle_OB_STR(self, ((OB) a_6627))->asize,1,local5->fp));
  4239.      }
  4240.     }
  4241.     after_loop_6635: ;
  4242.     local6 = FILE_plus_STR_FILE(self->typedefs_h, ((STR) &name_6639));
  4243.     local7 = FILE_plus_STR_FILE(local6, name_6625);
  4244.     (fwrite(((STR) &name_6640)->arr_part,((STR) &name_6640)->asize,1,local7->fp));
  4245.    }
  4246.   }
  4247.  }
  4248.  after_loop: ;
  4249. }
  4250.  
  4251.  
  4252. INT FMAPSTRITER_INLI_6641(FMAPSTRITER_INLINE self) {
  4253.  INT noname6642 = ((INT) 0);
  4254.  if ((self==((FMAPSTRITER_INLINE) NULL))) {
  4255.   return 0;
  4256.  }
  4257.  return self->hsize;
  4258.  if (!FMAPSTRITER_INLI_1037(self)) {
  4259.   fprintf(stderr,"Failed invariant FMAP{STR,ITER_INLINE}::invariant:BOOL ../Library/fmap.sa:74:7\n");
  4260.   exit(16);
  4261.  }
  4262. }
  4263.  
  4264.  
  4265. INT UNIX_system_STR_INT(UNIX self, STR s_6643) {
  4266.  INT noname6644 = ((INT) 0);
  4267.  return system(((s_6643==NULL)?NULL:s_6643->arr_part));
  4268. }
  4269.  
  4270.  
  4271. void BE_finalize(BE self) {
  4272.  STR allflags;
  4273.  FLISTSTR noname6645;
  4274.  STR obfiles;
  4275.  INT noname6646 = ((INT) 0);
  4276.  INT noname6647 = ((INT) 0);
  4277.  STR fn;
  4278.  STR syscom;
  4279.  STR s_6648;
  4280.  FSETSTR noname6649;
  4281.  STR s_6650;
  4282.  FSETSTR noname6651;
  4283.  STR s_6652;
  4284.  FLISTSTR noname6653;
  4285.  STR noname6654;
  4286.  CHAR c_6655 = ((CHAR) 0);
  4287.  INT dummy_6656 = ((INT) 0);
  4288.  BOOL local0;
  4289.  BOOL local1;
  4290.  BOOL local2;
  4291.  BOOL local3;
  4292.  BOOL local4;
  4293.  BOOL local5;
  4294.  BOOL local6;
  4295.  BOOL local7;
  4296.  OUT local8;
  4297.  OUT local9;
  4298.  OUT local10;
  4299.  OUT local11;
  4300.  OUT local12;
  4301.  OUT local13;
  4302.  OUT local14;
  4303.  OUT local15;
  4304.  OUT local16;
  4305.  OUT local17;
  4306.  OUT local18;
  4307.  OUT local19;
  4308.  OUT local20;
  4309.  OUT local21;
  4310.  OUT local22;
  4311.  OUT local23;
  4312.  OUT local24;
  4313.  OUT local25;
  4314.  OUT local26;
  4315.  OUT local27;
  4316.  STR local28;
  4317.  STR local29;
  4318.  STR local30;
  4319.  STR local31;
  4320.  STR local32;
  4321.  STR local33;
  4322.  INT local34;
  4323.  INT local35;
  4324.  INT local36;
  4325.  INT local34e;
  4326.  STR local37;
  4327.  STR local38;
  4328.  STR local39;
  4329.  BOOL local40;
  4330.  CHAR local41;
  4331.  CHAR local42;
  4332.  STR local43;
  4333.  STR local44;
  4334.  STR local45;
  4335.  STR local46;
  4336.  BOOL local47;
  4337.  CHAR local48;
  4338.  CHAR local49;
  4339.  STR local50;
  4340.  STR local51;
  4341.  STR local52;
  4342.  STR local53;
  4343.  BOOL local54;
  4344.  CHAR local55;
  4345.  CHAR local56;
  4346.  STR local57;
  4347.  STR local58;
  4348.  STR local59;
  4349.  STR local60;
  4350.  CHAR local61;
  4351.  STR local62;
  4352.  CHAR *local61p; INT local61n;
  4353.  FILE_20 local63;
  4354.  FILE_20 local64;
  4355.  FILE_20 local65;
  4356.  FILE_20 local66;
  4357.  FILE_20 local67;
  4358.  FILE_20 local68;
  4359.  FILE_20 local69;
  4360.  FILE_20 local70;
  4361.  FILE_20 local71;
  4362.  FILE_20 local72;
  4363.  FILE_20 local73;
  4364.  STR local74;
  4365.  STR local75;
  4366.  STR local76;
  4367.  STR local77;
  4368.  OUT local78;
  4369.  OUT local79;
  4370.  OUT local80;
  4371.  OUT local81;
  4372.  INT local82;
  4373.  UNIX local83;
  4374.  STR local84;
  4375.  STR local85;
  4376.  STR local86;
  4377.  UNIX local87;
  4378.  STR local88;
  4379.  STR local89;
  4380.  STR local90;
  4381.  UNIX local91;
  4382.  STR local92;
  4383.  STR local93;
  4384.  STR local94;
  4385.  UNIX local95;
  4386.  STR local96;
  4387.  STR local97;
  4388.  STR local98;
  4389.  UNIX local99;
  4390.  STR local100;
  4391.  STR local101;
  4392.  STR local102;
  4393.  UNIX local103;
  4394.  STR local104;
  4395.  STR local105;
  4396.  BE_define_main_a(self);
  4397.  BE_generate_sys_(self);
  4398.  BE_generate_disp(self);
  4399.  BE_generate_bnd_(self);
  4400.  BE_generate_bnd__6622(self);
  4401.  if (FILE_error_BOOL(self->code_c)) {
  4402.   local7 = TRUE;
  4403.  } else {
  4404.   local7 = FILE_error_BOOL(self->typedefs_h);
  4405.  }
  4406.  if (local7) {
  4407.   local6 = TRUE;
  4408.  } else {
  4409.   local6 = FILE_error_BOOL(self->sather_h);
  4410.  }
  4411.  if (local6) {
  4412.   local5 = TRUE;
  4413.  } else {
  4414.   local5 = FILE_error_BOOL(self->tags_h);
  4415.  }
  4416.  if (local5) {
  4417.   local4 = TRUE;
  4418.  } else {
  4419.   local4 = FILE_error_BOOL(self->decs_h);
  4420.  }
  4421.  if (local4) {
  4422.   local3 = TRUE;
  4423.  } else {
  4424.   local3 = FILE_error_BOOL(self->strings_h);
  4425.  }
  4426.  if (local3) {
  4427.   local2 = TRUE;
  4428.  } else {
  4429.   local2 = FILE_error_BOOL(self->globals_h);
  4430.  }
  4431.  if (local2) {
  4432.   local1 = TRUE;
  4433.  } else {
  4434.   local1 = FILE_error_BOOL(self->globals_c);
  4435.  }
  4436.  if (local1) {
  4437.   local0 = TRUE;
  4438.  } else {
  4439.   local0 = FILE_error_BOOL(self->makefile);
  4440.  }
  4441.  if (local0) {
  4442.   BE_barf_STR(self, ((STR) &Someproblemwriti_6657));
  4443.  }
  4444.  FILE_plus_CHAR(self->code_c, '\n');
  4445.  FILE_close(self->code_c);
  4446.  FILE_close(self->sather_h);
  4447.  FILE_close(self->tags_h);
  4448.  FILE_close(self->typedefs_h);
  4449.  FILE_close(self->decs_h);
  4450.  FILE_plus_CHAR(self->strings_h, '\n');
  4451.  FILE_close(self->strings_h);
  4452.  FILE_close(self->globals_h);
  4453.  FILE_close(self->globals_c);
  4454.  if (self->prog->options_55->verbose) {
  4455.   local8 = OUT_create_OUT(((OUT) NULL));
  4456.   local9 = OUT_plus_STR_OUT(local8, ((STR) &Markedreadattrrouts));
  4457.   OUT_plus_INT(local9, shared_INLINE_AT);
  4458.   local10 = OUT_create_OUT(((OUT) NULL));
  4459.   local11 = OUT_plus_STR_OUT(local10, ((STR) &Inlinedreadattrcalls));
  4460.   OUT_plus_INT(local11, shared_INLINE_AT_6658);
  4461.   local12 = OUT_create_OUT(((OUT) NULL));
  4462.   local13 = OUT_plus_STR_OUT(local12, ((STR) &Markedwriteattrrouts));
  4463.   OUT_plus_INT(local13, shared_INLINE_AT_6337);
  4464.   local14 = OUT_create_OUT(((OUT) NULL));
  4465.   local15 = OUT_plus_STR_OUT(local14, ((STR) &Inlinedwriteattr));
  4466.   OUT_plus_INT(local15, shared_INLINE_AT_6659);
  4467.   local16 = OUT_create_OUT(((OUT) NULL));
  4468.   local17 = OUT_plus_STR_OUT(local16, ((STR) &Markedglobalrouts));
  4469.   OUT_plus_INT(local17, shared_INLINE_GL);
  4470.   local18 = OUT_create_OUT(((OUT) NULL));
  4471.   local19 = OUT_plus_STR_OUT(local18, ((STR) &Inlinedglobalcalls));
  4472.   OUT_plus_INT(local19, shared_INLINE_GL_6660);
  4473.   local20 = OUT_create_OUT(((OUT) NULL));
  4474.   local21 = OUT_plus_STR_OUT(local20, ((STR) &MarkedINTrouts));
  4475.   OUT_plus_INT(local21, shared_INLINE_IN);
  4476.   local22 = OUT_create_OUT(((OUT) NULL));
  4477.   local23 = OUT_plus_STR_OUT(local22, ((STR) &FoldedINTcalls));
  4478.   OUT_plus_INT(local23, shared_INLINE_IN_6661);
  4479.   local24 = OUT_create_OUT(((OUT) NULL));
  4480.   local25 = OUT_plus_STR_OUT(local24, ((STR) &Markediters));
  4481.   OUT_plus_INT(local25, FMAPSTRITER_INLI_6641(self->built_in_iters));
  4482.   local26 = OUT_create_OUT(((OUT) NULL));
  4483.   local27 = OUT_plus_STR_OUT(local26, ((STR) &Inlineditercalls));
  4484.   OUT_plus_INT(local27, self->inlined_iter_count);
  4485.  }
  4486.  allflags = ((STR) &name_6662);
  4487.  {
  4488.   struct FLISTSTR_elt_STR_frame_struct temp6663_0;
  4489.   FLISTSTR_elt_STR_frame 
  4490.   noname6664 = &temp6663_0;
  4491.   noname6664->state = 0;
  4492.   while (1) {
  4493.    local28 = STR_plus_CHAR_STR(allflags, ' ');
  4494.    if (noname6664->state == 0) {
  4495.     noname6645 = self->prog->options_55->c_flags;
  4496.     noname6664->arg0 = noname6645;
  4497.    }
  4498.    local29 = FLISTSTR_elt_STR(noname6664);
  4499.    if (noname6664->state == -1) goto after_loop;
  4500.    allflags = STR_plus_STR_STR(local28, local29);
  4501.   }
  4502.  }
  4503.  after_loop: ;
  4504.  if (self->prog->options_55->debug_11) {
  4505.   local30 = STR_plus_CHAR_STR(allflags, ' ');
  4506.   allflags = STR_plus_STR_STR(local30, self->prog->options_55->c_debug);
  4507.  }
  4508.  if (self->prog->options_55->optimize) {
  4509.   local31 = STR_plus_CHAR_STR(allflags, ' ');
  4510.   allflags = STR_plus_STR_STR(local31, self->prog->options_55->c_opt);
  4511.  }
  4512.  if (self->prog->options_55->verbose) {
  4513.   local32 = STR_plus_CHAR_STR(allflags, ' ');
  4514.   allflags = STR_plus_STR_STR(local32, self->prog->options_55->c_verbose);
  4515.  }
  4516.  obfiles = ((STR) &globalsobj);
  4517.  {
  4518.   BOOL noname6667 = TRUE;
  4519.   while (1) {
  4520.    local33 = ((STR) &code_6668);
  4521.    if (noname6667) {
  4522.     noname6667 = FALSE;
  4523.     noname6646 = 0;
  4524.     noname6647 = self->code_c_count;
  4525.     local35 = noname6646;
  4526.     local36 = noname6647;
  4527.     local34 = local35; local34e = local35+local36;
  4528.    } else {
  4529.     local34++;
  4530.    }
  4531.    if (local34>=local34e) goto after_loop_6665;
  4532.    local37 = STR_plus_INT_STR(local33, local34);
  4533.    fn = STR_plus_STR_STR(local37, ((STR) &obj_6669));
  4534.    obfiles = STR_plus_STR_STR(obfiles, fn);
  4535.   }
  4536.  }
  4537.  after_loop_6665: ;
  4538.  syscom = ((STR) &CC);
  4539.  local38 = STR_plus_STR_STR(syscom, self->prog->options_55->c_exec);
  4540.  syscom = STR_plus_STR_STR(local38, ((STR) &CS_6670));
  4541.  syscom = STR_plus_STR_STR(syscom, obfiles);
  4542.  {
  4543.   struct FSETSTR_elt_STR_frame_struct temp6672_0;
  4544.   FSETSTR_elt_STR_frame 
  4545.   noname6673 = &temp6672_0;
  4546.   noname6673->state = 0;
  4547.   while (1) {
  4548.    if (noname6673->state == 0) {
  4549.     noname6649 = self->prog->options_55->c_files;
  4550.     noname6673->arg0 = noname6649;
  4551.    }
  4552.    local39 = FSETSTR_elt_STR(noname6673);
  4553.    if (noname6673->state == -1) goto after_loop_6671;
  4554.    s_6648 = local39;
  4555.    local41 = STR_aget_INT_CHAR(s_6648, 0);
  4556.    if ((local41=='/')) {
  4557.     local40 = TRUE;
  4558.    } else {
  4559.     local42 = STR_aget_INT_CHAR(s_6648, 0);
  4560.     local40 = (local42=='\\');
  4561.    }
  4562.    if (local40) {
  4563.     local43 = STR_plus_CHAR_STR(syscom, ' ');
  4564.     syscom = STR_plus_STR_STR(local43, s_6648);
  4565.    }
  4566.    else {
  4567.     local44 = STR_plus_CHAR_STR(syscom, ' ');
  4568.     local45 = STR_plus_STR_STR(local44, ((STR) &name_6674));
  4569.     syscom = STR_plus_STR_STR(local45, s_6648);
  4570.    }
  4571.   }
  4572.  }
  4573.  after_loop_6671: ;
  4574.  {
  4575.   struct FSETSTR_elt_STR_frame_struct temp6676_0;
  4576.   FSETSTR_elt_STR_frame 
  4577.   noname6677 = &temp6676_0;
  4578.   noname6677->state = 0;
  4579.   while (1) {
  4580.    if (noname6677->state == 0) {
  4581.     noname6651 = self->prog->options_55->object_files;
  4582.     noname6677->arg0 = noname6651;
  4583.    }
  4584.    local46 = FSETSTR_elt_STR(noname6677);
  4585.    if (noname6677->state == -1) goto after_loop_6675;
  4586.    s_6650 = local46;
  4587.    local48 = STR_aget_INT_CHAR(s_6650, 0);
  4588.    if ((local48=='/')) {
  4589.     local47 = TRUE;
  4590.    } else {
  4591.     local49 = STR_aget_INT_CHAR(s_6650, 0);
  4592.     local47 = (local49=='\\');
  4593.    }
  4594.    if (local47) {
  4595.     local50 = STR_plus_CHAR_STR(syscom, ' ');
  4596.     syscom = STR_plus_STR_STR(local50, s_6650);
  4597.    }
  4598.    else {
  4599.     local51 = STR_plus_CHAR_STR(syscom, ' ');
  4600.     local52 = STR_plus_STR_STR(local51, ((STR) &name_6678));
  4601.     syscom = STR_plus_STR_STR(local52, s_6650);
  4602.    }
  4603.   }
  4604.  }
  4605.  after_loop_6675: ;
  4606.  {
  4607.   struct FLISTSTR_elt_STR_frame_struct temp6680_0;
  4608.   FLISTSTR_elt_STR_frame 
  4609.   noname6681 = &temp6680_0;
  4610.   noname6681->state = 0;
  4611.   while (1) {
  4612.    if (noname6681->state == 0) {
  4613.     noname6653 = self->prog->options_55->archive_files;
  4614.     noname6681->arg0 = noname6653;
  4615.    }
  4616.    local53 = FLISTSTR_elt_STR(noname6681);
  4617.    if (noname6681->state == -1) goto after_loop_6679;
  4618.    s_6652 = local53;
  4619.    local55 = STR_aget_INT_CHAR(s_6652, 0);
  4620.    if ((local55=='/')) {
  4621.     local54 = TRUE;
  4622.    } else {
  4623.     local56 = STR_aget_INT_CHAR(s_6652, 0);
  4624.     local54 = (local56=='\\');
  4625.    }
  4626.    if (local54) {
  4627.     local57 = STR_plus_CHAR_STR(syscom, ' ');
  4628.     syscom = STR_plus_STR_STR(local57, s_6652);
  4629.    }
  4630.    else {
  4631.     local58 = STR_plus_CHAR_STR(syscom, ' ');
  4632.     local59 = STR_plus_STR_STR(local58, ((STR) &name_6682));
  4633.     syscom = STR_plus_STR_STR(local59, s_6652);
  4634.    }
  4635.   }
  4636.  }
  4637.  after_loop_6679: ;
  4638.  local60 = STR_plus_STR_STR(syscom, ((STR) &CFLAGS));
  4639.  syscom = STR_plus_CHAR_STR(local60, ' ');
  4640.  {
  4641.   BOOL noname6685 = TRUE;
  4642.   while (1) {
  4643.    if (noname6685) {
  4644.     noname6685 = FALSE;
  4645.     noname6654 = self->prog->options_55->c_compile2;
  4646.     local62 = noname6654;
  4647.     local61p = local62->arr_part; local61n = local62->asize;
  4648.    } else {
  4649.     local61p++; local61n--;
  4650.    }
  4651.    if (local61n<=0) goto after_loop_6683; local61 = *local61p;
  4652.    c_6655 = local61;
  4653.    if ((c_6655=='/')) {
  4654.     syscom = STR_plus_CHAR_STR(syscom, '\\');
  4655.    }
  4656.    else {
  4657.     syscom = STR_plus_CHAR_STR(syscom, c_6655);
  4658.    }
  4659.   }
  4660.  }
  4661.  after_loop_6683: ;
  4662.  local63 = FILE_plus_STR_FILE(self->makefile, ((STR) &CFLAGS_6686));
  4663.  local64 = FILE_plus_STR_FILE(local63, allflags);
  4664.  FILE_plus_CHAR(local64, '\n');
  4665.  local65 = FILE_plus_STR_FILE(self->makefile, ((STR) &CS_6687));
  4666.  local66 = FILE_plus_STR_FILE(local65, self->prog->options_55->executable_9);
  4667.  FILE_plus_CHAR(local66, '\n');
  4668.  local67 = FILE_plus_STR_FILE(self->makefile, ((STR) &CC_6688));
  4669.  local68 = FILE_plus_STR_FILE(local67, self->prog->options_55->c_compile1);
  4670.  FILE_plus_CHAR(local68, '\n');
  4671.  (fwrite(((STR) &BuildProgramChan)->arr_part,((STR) &BuildProgramChan)->asize,1,self->makefile->fp));
  4672.  local69 = FILE_plus_STR_FILE(self->makefile, ((STR) &ChangeDirectorycd));
  4673.  local70 = FILE_plus_STR_FILE(local69, self->code_dir);
  4674.  (fwrite(((STR) &name_6689)->arr_part,((STR) &name_6689)->asize,1,local70->fp));
  4675.  (fwrite(((STR) &CompileAll)->arr_part,((STR) &CompileAll)->asize,1,self->makefile->fp));
  4676.  local71 = FILE_plus_STR_FILE(self->makefile, obfiles);
  4677.  local72 = FILE_plus_STR_FILE(local71, ((STR) &name_6690));
  4678.  local73 = FILE_plus_STR_FILE(local72, syscom);
  4679.  (fwrite(((STR) &linklog)->arr_part,((STR) &linklog)->asize,1,local73->fp));
  4680.  FILE_close(self->makefile);
  4681.  local74 = STR_plus_STR_STR(self->prog->options_55->make_command, ((STR) &f_6691));
  4682.  local75 = STR_plus_STR_STR(local74, self->code_dir);
  4683.  local76 = STR_plus_CHAR_STR(local75, '\\');
  4684.  syscom = STR_plus_STR_STR(local76, ((STR) &Makefile_6692));
  4685.  if ((!(self->prog->options_55->verbose))) {
  4686.   local77 = STR_plus_CHAR_STR(syscom, ' ');
  4687.   syscom = STR_plus_STR_STR(local77, self->prog->options_55->make_silent);
  4688.  }
  4689.  if (self->prog->options_55->only_C) {
  4690.   if (self->prog->options_55->verbose) {
  4691.    local78 = OUT_create_OUT(((OUT) NULL));
  4692.    OUT_plus_STR(local78, ((STR) &Skippingmake));
  4693.   }
  4694.  }
  4695.  else {
  4696.   if (self->prog->options_55->verbose) {
  4697.    local79 = OUT_create_OUT(((OUT) NULL));
  4698.    local80 = OUT_plus_CHAR_OUT(local79, '\n');
  4699.    local81 = OUT_plus_STR_OUT(local80, syscom);
  4700.    OUT_plus_CHAR(local81, '\n');
  4701.   }
  4702.   local82 = UNIX_system_STR_INT(((UNIX) NULL), syscom);
  4703.   if ((local82!=0)) {
  4704.    BE_barf_STR(self, ((STR) &Makefailed));
  4705.   }
  4706.  }
  4707.  if ((!(self->prog->options_55->gen_c))) {
  4708.   local83 = ((UNIX) NULL);
  4709.   local84 = STR_plus_STR_STR(((STR) &ifexist), self->code_dir);
  4710.   local85 = STR_plus_STR_STR(local84, ((STR) &cdel));
  4711.   local86 = STR_plus_STR_STR(local85, self->code_dir);
  4712.   dummy_6656 = UNIX_system_STR_INT(local83, STR_plus_STR_STR(local86, ((STR) &c_6693)));
  4713.   local87 = ((UNIX) NULL);
  4714.   local88 = STR_plus_STR_STR(((STR) &ifexist_6694), self->code_dir);
  4715.   local89 = STR_plus_STR_STR(local88, ((STR) &objdel));
  4716.   local90 = STR_plus_STR_STR(local89, self->code_dir);
  4717.   dummy_6656 = UNIX_system_STR_INT(local87, STR_plus_STR_STR(local90, ((STR) &obj_6695)));
  4718.   local91 = ((UNIX) NULL);
  4719.   local92 = STR_plus_STR_STR(((STR) &ifexist_6696), self->code_dir);
  4720.   local93 = STR_plus_STR_STR(local92, ((STR) &hdel));
  4721.   local94 = STR_plus_STR_STR(local93, self->code_dir);
  4722.   dummy_6656 = UNIX_system_STR_INT(local91, STR_plus_STR_STR(local94, ((STR) &h)));
  4723.   local95 = ((UNIX) NULL);
  4724.   local96 = STR_plus_STR_STR(((STR) &ifexist_6697), self->code_dir);
  4725.   local97 = STR_plus_STR_STR(local96, ((STR) &Makefiledel));
  4726.   local98 = STR_plus_STR_STR(local97, self->code_dir);
  4727.   dummy_6656 = UNIX_system_STR_INT(local95, STR_plus_STR_STR(local98, ((STR) &Makefile_6698)));
  4728.   local99 = ((UNIX) NULL);
  4729.   local100 = STR_plus_STR_STR(((STR) &ifexist_6699), self->code_dir);
  4730.   local101 = STR_plus_STR_STR(local100, ((STR) &linklogdel));
  4731.   local102 = STR_plus_STR_STR(local101, self->code_dir);
  4732.   dummy_6656 = UNIX_system_STR_INT(local99, STR_plus_STR_STR(local102, ((STR) &linklog_6700)));
  4733.   local103 = ((UNIX) NULL);
  4734.   local104 = STR_plus_STR_STR(((STR) &ifnotexist), self->code_dir);
  4735.   local105 = STR_plus_STR_STR(local104, ((STR) &rmdir_6701));
  4736.   dummy_6656 = UNIX_system_STR_INT(local103, STR_plus_STR_STR(local105, self->code_dir));
  4737.  }
  4738. }
  4739.  
  4740.  
  4741. void PROG_finalize_ba(PROG self) {
  4742.  if ((!(self->options_55->only_check))) {
  4743.   BE_finalize(self->back_end);
  4744.  }
  4745. }
  4746.  
  4747.  
  4748. void PROG_AM_CHECK_ch(PROG_AM_CHECK self, SIG s_6702) {
  4749.  ELT elt_6703;
  4750.  AM_ROUT_DEF am_6704;
  4751.  OUT local0;
  4752.  OUT local1;
  4753.  OUT local2;
  4754.  TP local3;
  4755.  BOOL local4;
  4756.  OUT local5;
  4757.  OUT local6;
  4758.  OUT local7;
  4759.  OUT local8;
  4760.  if (!((!((s_6702==((SIG) NULL)))))) {
  4761.   fprintf(stderr,"Violation of precondition ./prog.sa:836:12\n");
  4762.   exit(16);
  4763.  }
  4764.  if ((!((SIG_TBL_sig_eq_t(self->sig_tbl, s_6702)==((SIG) NULL))))) {
  4765.   return;
  4766.  }
  4767.  self->sig_tbl = SIG_TBL_insert_S(self->sig_tbl, s_6702);
  4768.  if (self->prog->show_checked_sig) {
  4769.   local0 = OUT_create_OUT(((OUT) NULL));
  4770.   local1 = OUT_plus_STR_OUT(local0, ((STR) &Checksig));
  4771.   local2 = OUT_plus_STR_OUT(local1, SIG_str_STR(s_6702));
  4772.   OUT_plus_STR(local2, ((STR) &name_6705));
  4773.  }
  4774.  local3 = s_6702->tp;
  4775.  if ((*TP_is_abstract_BOOL[local3->header.tag+TP_is_abstract_BOOL_offset])(local3)) {
  4776.   return;
  4777.  }
  4778.  elt_6703 = ELT_TBL_elt_with(IMPL_TBL_impl_of(self->prog->impl_tbl, s_6702->tp)->elts, s_6702);
  4779.  if (elt_6703->is_external) {
  4780.   local4 = ELT_is_abstract_BOOL(elt_6703);
  4781.  } else {
  4782.   local4 = FALSE;
  4783.  }
  4784.  if (local4) {
  4785.   return;
  4786.  }
  4787.  if ((elt_6703==((ELT) NULL))) {
  4788.   return;
  4789.  }
  4790.  am_6704 = TRANS_transform__6317(((TRANS) NULL), elt_6703);
  4791.  if ((am_6704==((AM_ROUT_DEF) NULL))) {
  4792.   return;
  4793.  }
  4794.  if (self->prog->show_am_check) {
  4795.   local5 = OUT_create_OUT(((OUT) NULL));
  4796.   local6 = OUT_plus_STR_OUT(local5, ((STR) &CheckAMfor));
  4797.   local7 = OUT_plus_STR_OUT(local6, SIG_str_STR(am_6704->sig_6));
  4798.   OUT_plus_STR(local7, ((STR) &name_6706));
  4799.   AM_OUT_AM_ROUT_D(((AM_OUT) NULL), am_6704);
  4800.   local8 = OUT_create_OUT(((OUT) NULL));
  4801.   OUT_plus_STR(local8, ((STR) &name_6707));
  4802.  }
  4803.  if (self->prog->generate_checked) {
  4804.   PROG_output_am_r(self->prog, am_6704);
  4805.  }
  4806. }
  4807.  
  4808.  
  4809. void PROG_AM_CHECK_ch_6708(PROG_AM_CHECK self) {
  4810.  TP tp_6709;
  4811.  FSETTP noname6710;
  4812.  IFC ti;
  4813.  SIG_TBL noname6711;
  4814.  TP local0;
  4815.  BOOL local1;
  4816.  SIG local2;
  4817.  self->sig_tbl = self->prog->prog_am_generate->sig_tbl;
  4818.  {
  4819.   struct FSETTP_elt_TP_frame_struct temp6712_0;
  4820.   FSETTP_elt_TP_frame 
  4821.   noname6713 = &temp6712_0;
  4822.   noname6713->state = 0;
  4823.   while (1) {
  4824.    if (noname6713->state == 0) {
  4825.     noname6710 = self->prog->prog_find_types->tp_done;
  4826.     noname6713->arg0 = noname6710;
  4827.    }
  4828.    local0 = FSETTP_elt_TP(noname6713);
  4829.    if (noname6713->state == -1) goto after_loop;
  4830.    tp_6709 = local0;
  4831.    if (tp_6709==NULL) {
  4832.    } else
  4833.    switch (tp_6709->header.tag) {
  4834.     case TP_CLASS_tag:
  4835.      if ((!(TP_CLASS_is_abst(((TP_CLASS) tp_6709))))) {
  4836.       ti = IFC_TBL_ifc_of_T(self->prog->ifc_tbl, tp_6709);
  4837.       if ((!((ti==((IFC) NULL))))) {
  4838.        local1 = (!((ti->sigs==((SIG_TBL) NULL))));
  4839.       } else {
  4840.        local1 = FALSE;
  4841.       }
  4842.       if (local1) {
  4843.        {
  4844.         struct SIG_TBL_elt_SIG_frame_struct temp6715_0;
  4845.         SIG_TBL_elt_SIG_frame 
  4846.         noname6716 = &temp6715_0;
  4847.         noname6716->state = 0;
  4848.         while (1) {
  4849.          if (noname6716->state == 0) {
  4850.           noname6711 = ti->sigs;
  4851.           noname6716->arg0 = noname6711;
  4852.          }
  4853.          local2 = SIG_TBL_elt_SIG(noname6716);
  4854.          if (noname6716->state == -1) goto after_loop_6714;
  4855.          PROG_AM_CHECK_ch(self, local2);
  4856.         }
  4857.        }
  4858.        after_loop_6714: ;
  4859.       }
  4860.      } break;
  4861.     default: ;
  4862.    }
  4863.   }
  4864.  }
  4865.  after_loop: ;
  4866. }
  4867.  
  4868.  
  4869. void PROG_do_am_check(PROG self) {
  4870.  self->all_reached = TRUE;
  4871.  PROG_AM_CHECK_ch_6708(self->prog_am_check);
  4872. }
  4873.  
  4874.  
  4875. INT sather_main(CS self, ARRAYSTR a_6717) {
  4876.  INT noname6718 = ((INT) 0);
  4877.  PROG p;
  4878.  FSETSTR noname6719;
  4879.  STR fn;
  4880.  BOOL local0;
  4881.  OUT local1;
  4882.  OUT local2;
  4883.  OUT local3;
  4884.  STR local4;
  4885.  OUT local5;
  4886.  OUT local6;
  4887.  OUT local7;
  4888.  OUT local8;
  4889.  OUT local9;
  4890.  OUT local10;
  4891.  OUT local11;
  4892.  OUT local12;
  4893.  OUT local13;
  4894.  p = PROG_create_PROG(((PROG) NULL));
  4895.  OPTIONS_interpre(p->options_55, a_6717);
  4896.  if (p->options_55->force_all) {
  4897.   local0 = TRUE;
  4898.  } else {
  4899.   local0 = (!(FSETSTR_is_empty(p->options_55->force_routines)));
  4900.  }
  4901.  if (local0) {
  4902.   PROG_err_STR(p, ((STR) &forceoptionsnoti));
  4903.  }
  4904.  if ((!(FMAPSTRFSETSTR_i_869(p->options_55->externals)))) {
  4905.   PROG_err_STR(p, ((STR) &externaloptionno));
  4906.  }
  4907.  if (p->options_55->verbose) {
  4908.   local1 = OUT_create_OUT(((OUT) NULL));
  4909.   local2 = OUT_plus_STR_OUT(local1, OPTIONS_str_STR(p->options_55));
  4910.   OUT_plus_STR(local2, ((STR) &name_6720));
  4911.  }
  4912.  PROG_create_back_end(p);
  4913.  if (p->options_55->verbose) {
  4914.   local3 = OUT_create_OUT(((OUT) NULL));
  4915.   OUT_plus_STR(local3, ((STR) &Parsing));
  4916.  }
  4917.  {
  4918.   struct FSETSTR_elt_STR_frame_struct temp6721_0;
  4919.   FSETSTR_elt_STR_frame 
  4920.   noname6722 = &temp6721_0;
  4921.   noname6722->state = 0;
  4922.   while (1) {
  4923.    if (noname6722->state == 0) {
  4924.     noname6719 = p->options_55->sather_files;
  4925.     noname6722->arg0 = noname6719;
  4926.    }
  4927.    local4 = FSETSTR_elt_STR(noname6722);
  4928.    if (noname6722->state == -1) goto after_loop;
  4929.    fn = local4;
  4930.    if ((!(FSETSTR_test_STR(p->options_55->known_files, fn)))) {
  4931.     PROG_PARSE_parse_STR(p->prog_parse, fn);
  4932.    }
  4933.   }
  4934.  }
  4935.  after_loop: ;
  4936.  if (p->err_seen) {
  4937.   return 1;
  4938.  }
  4939.  if (p->options_55->only_parse) {
  4940.   return 0;
  4941.  }
  4942.  if (p->options_55->verbose) {
  4943.   local5 = OUT_create_OUT(((OUT) NULL));
  4944.   OUT_plus_STR(local5, ((STR) &Findingtypes));
  4945.  }
  4946.  PROG_do_find_typ(p);
  4947.  if (p->err_seen) {
  4948.   return 2;
  4949.  }
  4950.  if (p->options_55->verbose) {
  4951.   local6 = OUT_create_OUT(((OUT) NULL));
  4952.   OUT_plus_STR(local6, ((STR) &Constructingtype));
  4953.  }
  4954.  PROG_do_type_gra(p);
  4955.  if (p->err_seen) {
  4956.   return 3;
  4957.  }
  4958.  if (p->options_55->verbose) {
  4959.   local7 = OUT_create_OUT(((OUT) NULL));
  4960.   OUT_plus_STR(local7, ((STR) &Checkingconformance));
  4961.  }
  4962.  PROG_do_ifc_conf(p);
  4963.  if (p->err_seen) {
  4964.   return 4;
  4965.  }
  4966.  if (p->options_55->verbose) {
  4967.   local8 = OUT_create_OUT(((OUT) NULL));
  4968.   OUT_plus_STR(local8, ((STR) &Findingmain));
  4969.  }
  4970.  PROG_do_get_main(p, p->options_55->main_class);
  4971.  if (p->err_seen) {
  4972.   return 5;
  4973.  }
  4974.  if ((!(p->options_55->only_check))) {
  4975.   if (p->options_55->verbose) {
  4976.    local9 = OUT_create_OUT(((OUT) NULL));
  4977.    OUT_plus_STR(local9, ((STR) &Generatingstructs));
  4978.   }
  4979.   BE_init(p->back_end);
  4980.   if (p->err_seen) {
  4981.    return 6;
  4982.   }
  4983.  }
  4984.  if (p->options_55->verbose) {
  4985.   local10 = OUT_create_OUT(((OUT) NULL));
  4986.   OUT_plus_STR(local10, ((STR) &Typecheckandgenerate));
  4987.  }
  4988.  PROG_do_am_gener(p);
  4989.  if (p->err_seen) {
  4990.   return 7;
  4991.  }
  4992.  if ((!(p->options_55->only_check))) {
  4993.   if (p->options_55->verbose) {
  4994.    local11 = OUT_create_OUT(((OUT) NULL));
  4995.    OUT_plus_STR(local11, ((STR) &Cleaningup));
  4996.   }
  4997.   PROG_finalize_ba(p);
  4998.   if (p->err_seen) {
  4999.    return 8;
  5000.   }
  5001.  }
  5002.  if (p->options_55->only_reachable) {
  5003.   return 0;
  5004.  }
  5005.  if (p->options_55->verbose) {
  5006.   local12 = OUT_create_OUT(((OUT) NULL));
  5007.   OUT_plus_STR(local12, ((STR) &Checkingunreacha));
  5008.  }
  5009.  PROG_do_am_check(p);
  5010.  if (p->err_seen) {
  5011.   return 9;
  5012.  }
  5013.  if (p->options_55->verbose) {
  5014.   local13 = OUT_create_OUT(((OUT) NULL));
  5015.   OUT_plus_STR(local13, ((STR) &Compilationcomplete));
  5016.  }
  5017.  return 0;
  5018. }
  5019.  
  5020.  
  5021. STR FSETSTR_elt_STR(FSETSTR_elt_STR_frame frame) {
  5022.  STR dummy;
  5023.  STR local0;
  5024.  switch (frame->state) {
  5025.   case 0: goto state0;
  5026.   case 1: goto state1;
  5027.   }
  5028.  state0:;
  5029.  if ((!((frame->arg0==((FSETSTR) NULL))))) {
  5030.   {
  5031.    frame->nested1 = ALLOCATE(FSETSTR_aelt_STR_frame);
  5032.    frame->nested1->state = 0;
  5033.    while (1) {
  5034.     if (frame->nested1->state == 0) {
  5035.      frame->noname6724 = frame->arg0;
  5036.      frame->nested1->arg0 = frame->noname6724;
  5037.     }
  5038.     local0 = FSETSTR_aelt_STR(frame->nested1);
  5039.     if (frame->nested1->state == -1) goto after_loop;
  5040.     frame->r_6725 = local0;
  5041.     if ((!(FSETSTR_elt_eq_S(frame->arg0, frame->r_6725, FSETSTR_elt_nil_STR(frame->arg0))))) {
  5042.      frame->state = 1;
  5043.      return frame->r_6725;
  5044.      state1:;
  5045.     }
  5046.    }
  5047.   }
  5048.   after_loop: ;
  5049.   GC_free(frame->nested1); frame->nested1 = NULL;
  5050.  }
  5051.  if (!FSETSTR_invarian(frame->arg0)) {
  5052.   fprintf(stderr,"Failed invariant FSET{STR}::invariant:BOOL ../Library/fset.sa:98:6\n");
  5053.   exit(16);
  5054.  }
  5055.  frame->state = -1;
  5056.  return dummy;
  5057. }
  5058.  
  5059.  
  5060. BOOL FSETSTR_invarian(FSETSTR self) {
  5061.  BOOL noname6727 = ((BOOL) 0);
  5062.  BOOL local0;
  5063.  INT local1;
  5064.  INT local2;
  5065.  if ((self==((FSETSTR) NULL))) {
  5066.   local0 = TRUE;
  5067.  } else {
  5068.   local1 = self->hsize;
  5069.   local2 = 0;
  5070.   local0 = INT_is_bet_INT_I(local1, local2, (self->asize));
  5071.  }
  5072.  return local0;
  5073. }
  5074.  
  5075.  
  5076. STR FSETSTR_aelt_STR(FSETSTR_aelt_STR_frame frame) {
  5077.  STR dummy;
  5078.  INT local0;
  5079.  switch (frame->state) {
  5080.   case 0: goto state0;
  5081.   case 1: goto state1;
  5082.   }
  5083.  state0:;
  5084.  if (!((!((frame->arg0==((FSETSTR) NULL)))))) {
  5085.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:48:7\n");
  5086.   exit(16);
  5087.  }
  5088.  {
  5089.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  5090.   frame->nested1->state = 0;
  5091.   while (1) {
  5092.    frame->state = 1;
  5093.    if (frame->nested1->state == 0) {
  5094.     frame->noname6729 = (frame->arg0->asize);
  5095.     frame->nested1->arg0 = frame->noname6729;
  5096.    }
  5097.    local0 = INT_times_INT(frame->nested1);
  5098.    if (frame->nested1->state == -1) goto after_loop;
  5099.    return FSETSTR_aget_INT_STR(frame->arg0, local0);
  5100.    state1:;
  5101.   }
  5102.  }
  5103.  after_loop: ;
  5104.  GC_free(frame->nested1); frame->nested1 = NULL;
  5105.  if (!FSETSTR_invarian(frame->arg0)) {
  5106.   fprintf(stderr,"Failed invariant FSET{STR}::invariant:BOOL ../Library/aref.sa:48:7\n");
  5107.   exit(16);
  5108.  }
  5109.  frame->state = -1;
  5110.  return dummy;
  5111. }
  5112.  
  5113.  
  5114. INT INT_times_INT(INT_times_INT_frame frame) {
  5115.  INT dummy;
  5116.  switch (frame->state) {
  5117.   case 0: goto state0;
  5118.   case 1: goto state1;
  5119.   }
  5120.  state0:;
  5121.  frame->r_6732 = ((INT) 0);
  5122.  if (!((frame->arg0>=0))) {
  5123.   fprintf(stderr,"Violation of precondition ../Library/int.sa:748:8\n");
  5124.   exit(16);
  5125.  }
  5126.  while (1) {
  5127.   if ((frame->r_6732>=frame->arg0)) {
  5128.    goto after_loop;
  5129.   }
  5130.   frame->state = 1;
  5131.   return frame->r_6732;
  5132.   state1:;
  5133.   frame->r_6732 = (c_INT_plus_INT_INT_chk(frame->r_6732,1));
  5134.  }
  5135.  after_loop: ;
  5136.  frame->state = -1;
  5137.  return dummy;
  5138. }
  5139.  
  5140.  
  5141. SIG SIG_TBL_elt_SIG(SIG_TBL_elt_SIG_frame frame) {
  5142.  SIG dummy;
  5143.  SIG local0;
  5144.  switch (frame->state) {
  5145.   case 0: goto state0;
  5146.   case 1: goto state1;
  5147.   }
  5148.  state0:;
  5149.  if ((!((frame->arg0==((SIG_TBL) NULL))))) {
  5150.   {
  5151.    frame->nested1 = ALLOCATE(SIG_TBL_aelt_SIG_frame);
  5152.    frame->nested1->state = 0;
  5153.    while (1) {
  5154.     if (frame->nested1->state == 0) {
  5155.      frame->noname6735 = frame->arg0;
  5156.      frame->nested1->arg0 = frame->noname6735;
  5157.     }
  5158.     local0 = SIG_TBL_aelt_SIG(frame->nested1);
  5159.     if (frame->nested1->state == -1) goto after_loop;
  5160.     frame->r_6736 = local0;
  5161.     if ((!(SIG_TBL_elt_eq_S(frame->arg0, frame->r_6736, SIG_TBL_elt_nil_SIG(frame->arg0))))) {
  5162.      frame->state = 1;
  5163.      return frame->r_6736;
  5164.      state1:;
  5165.     }
  5166.    }
  5167.   }
  5168.   after_loop: ;
  5169.   GC_free(frame->nested1); frame->nested1 = NULL;
  5170.  }
  5171.  if (!SIG_TBL_invarian(frame->arg0)) {
  5172.   fprintf(stderr,"Failed invariant SIG_TBL::invariant:BOOL ../Library/fqset.sa:105:6\n");
  5173.   exit(16);
  5174.  }
  5175.  frame->state = -1;
  5176.  return dummy;
  5177. }
  5178.  
  5179.  
  5180. BOOL SIG_TBL_invarian(SIG_TBL self) {
  5181.  BOOL noname6738 = ((BOOL) 0);
  5182.  BOOL local0;
  5183.  INT local1;
  5184.  INT local2;
  5185.  if ((self==((SIG_TBL) NULL))) {
  5186.   local0 = TRUE;
  5187.  } else {
  5188.   local1 = self->hsize;
  5189.   local2 = 0;
  5190.   local0 = INT_is_bet_INT_I(local1, local2, (self->asize));
  5191.  }
  5192.  return local0;
  5193. }
  5194.  
  5195.  
  5196. SIG SIG_TBL_aelt_SIG(SIG_TBL_aelt_SIG_frame frame) {
  5197.  SIG dummy;
  5198.  INT local0;
  5199.  switch (frame->state) {
  5200.   case 0: goto state0;
  5201.   case 1: goto state1;
  5202.   }
  5203.  state0:;
  5204.  if (!((!((frame->arg0==((SIG_TBL) NULL)))))) {
  5205.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:48:7\n");
  5206.   exit(16);
  5207.  }
  5208.  {
  5209.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  5210.   frame->nested1->state = 0;
  5211.   while (1) {
  5212.    frame->state = 1;
  5213.    if (frame->nested1->state == 0) {
  5214.     frame->noname6740 = (frame->arg0->asize);
  5215.     frame->nested1->arg0 = frame->noname6740;
  5216.    }
  5217.    local0 = INT_times_INT(frame->nested1);
  5218.    if (frame->nested1->state == -1) goto after_loop;
  5219.    return SIG_TBL_aget_INT_SIG(frame->arg0, local0);
  5220.    state1:;
  5221.   }
  5222.  }
  5223.  after_loop: ;
  5224.  GC_free(frame->nested1); frame->nested1 = NULL;
  5225.  frame->state = -1;
  5226.  return dummy;
  5227. }
  5228.  
  5229.  
  5230. TP FSETTP_elt_TP(FSETTP_elt_TP_frame frame) {
  5231.  TP dummy;
  5232.  TP local0;
  5233.  switch (frame->state) {
  5234.   case 0: goto state0;
  5235.   case 1: goto state1;
  5236.   }
  5237.  state0:;
  5238.  if ((!((frame->arg0==((FSETTP) NULL))))) {
  5239.   {
  5240.    frame->nested1 = ALLOCATE(FSETTP_aelt_TP_frame);
  5241.    frame->nested1->state = 0;
  5242.    while (1) {
  5243.     if (frame->nested1->state == 0) {
  5244.      frame->noname6743 = frame->arg0;
  5245.      frame->nested1->arg0 = frame->noname6743;
  5246.     }
  5247.     local0 = FSETTP_aelt_TP(frame->nested1);
  5248.     if (frame->nested1->state == -1) goto after_loop;
  5249.     frame->r_6744 = local0;
  5250.     if ((!(FSETTP_elt_eq_TP(frame->arg0, frame->r_6744, FSETTP_elt_nil_TP(frame->arg0))))) {
  5251.      frame->state = 1;
  5252.      return frame->r_6744;
  5253.      state1:;
  5254.     }
  5255.    }
  5256.   }
  5257.   after_loop: ;
  5258.   GC_free(frame->nested1); frame->nested1 = NULL;
  5259.  }
  5260.  if (!FSETTP_invariant(frame->arg0)) {
  5261.   fprintf(stderr,"Failed invariant FSET{$TP}::invariant:BOOL ../Library/fset.sa:98:6\n");
  5262.   exit(16);
  5263.  }
  5264.  frame->state = -1;
  5265.  return dummy;
  5266. }
  5267.  
  5268.  
  5269. BOOL FSETTP_invariant(FSETTP self) {
  5270.  BOOL noname6746 = ((BOOL) 0);
  5271.  BOOL local0;
  5272.  INT local1;
  5273.  INT local2;
  5274.  if ((self==((FSETTP) NULL))) {
  5275.   local0 = TRUE;
  5276.  } else {
  5277.   local1 = self->hsize;
  5278.   local2 = 0;
  5279.   local0 = INT_is_bet_INT_I(local1, local2, (self->asize));
  5280.  }
  5281.  return local0;
  5282. }
  5283.  
  5284.  
  5285. TP FSETTP_aelt_TP(FSETTP_aelt_TP_frame frame) {
  5286.  TP dummy;
  5287.  INT local0;
  5288.  switch (frame->state) {
  5289.   case 0: goto state0;
  5290.   case 1: goto state1;
  5291.   }
  5292.  state0:;
  5293.  if (!((!((frame->arg0==((FSETTP) NULL)))))) {
  5294.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:48:7\n");
  5295.   exit(16);
  5296.  }
  5297.  {
  5298.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  5299.   frame->nested1->state = 0;
  5300.   while (1) {
  5301.    frame->state = 1;
  5302.    if (frame->nested1->state == 0) {
  5303.     frame->noname6748 = (frame->arg0->asize);
  5304.     frame->nested1->arg0 = frame->noname6748;
  5305.    }
  5306.    local0 = INT_times_INT(frame->nested1);
  5307.    if (frame->nested1->state == -1) goto after_loop;
  5308.    return FSETTP_aget_INT_TP(frame->arg0, local0);
  5309.    state1:;
  5310.   }
  5311.  }
  5312.  after_loop: ;
  5313.  GC_free(frame->nested1); frame->nested1 = NULL;
  5314.  if (!FSETTP_invariant(frame->arg0)) {
  5315.   fprintf(stderr,"Failed invariant FSET{$TP}::invariant:BOOL ../Library/aref.sa:48:7\n");
  5316.   exit(16);
  5317.  }
  5318.  frame->state = -1;
  5319.  return dummy;
  5320. }
  5321.  
  5322.  
  5323. CHAR STR_elt_CHAR(STR_elt_CHAR_frame frame) {
  5324.  CHAR dummy;
  5325.  CHAR local0;
  5326.  switch (frame->state) {
  5327.   case 0: goto state0;
  5328.   case 1: goto state1;
  5329.   }
  5330.  state0:;
  5331.  if ((!((frame->arg0==((STR) NULL))))) {
  5332.   {
  5333.    frame->nested1 = ALLOCATE(STR_aelt_CHAR_frame);
  5334.    frame->nested1->state = 0;
  5335.    while (1) {
  5336.     frame->state = 1;
  5337.     if (frame->nested1->state == 0) {
  5338.      frame->noname6751 = frame->arg0;
  5339.      frame->nested1->arg0 = frame->noname6751;
  5340.     }
  5341.     local0 = STR_aelt_CHAR(frame->nested1);
  5342.     if (frame->nested1->state == -1) goto after_loop;
  5343.     return local0;
  5344.     state1:;
  5345.    }
  5346.   }
  5347.   after_loop: ;
  5348.   GC_free(frame->nested1); frame->nested1 = NULL;
  5349.  }
  5350.  frame->state = -1;
  5351.  return dummy;
  5352. }
  5353.  
  5354.  
  5355. CHAR STR_aelt_CHAR(STR_aelt_CHAR_frame frame) {
  5356.  CHAR dummy;
  5357.  INT local0;
  5358.  switch (frame->state) {
  5359.   case 0: goto state0;
  5360.   case 1: goto state1;
  5361.   }
  5362.  state0:;
  5363.  if (!((!((frame->arg0==((STR) NULL)))))) {
  5364.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:48:7\n");
  5365.   exit(16);
  5366.  }
  5367.  {
  5368.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  5369.   frame->nested1->state = 0;
  5370.   while (1) {
  5371.    frame->state = 1;
  5372.    if (frame->nested1->state == 0) {
  5373.     frame->noname6754 = (frame->arg0->asize);
  5374.     frame->nested1->arg0 = frame->noname6754;
  5375.    }
  5376.    local0 = INT_times_INT(frame->nested1);
  5377.    if (frame->nested1->state == -1) goto after_loop;
  5378.    return STR_aget_INT_CHAR(frame->arg0, local0);
  5379.    state1:;
  5380.   }
  5381.  }
  5382.  after_loop: ;
  5383.  GC_free(frame->nested1); frame->nested1 = NULL;
  5384.  frame->state = -1;
  5385.  return dummy;
  5386. }
  5387.  
  5388.  
  5389. STR FLISTSTR_elt_STR(FLISTSTR_elt_STR_frame frame) {
  5390.  STR dummy;
  5391.  STR local0;
  5392.  switch (frame->state) {
  5393.   case 0: goto state0;
  5394.   case 1: goto state1;
  5395.   }
  5396.  state0:;
  5397.  if ((!((frame->arg0==((FLISTSTR) NULL))))) {
  5398.   {
  5399.    frame->nested1 = ALLOCATE(FLISTSTR_aelt_IN_frame);
  5400.    frame->nested1->state = 0;
  5401.    while (1) {
  5402.     frame->state = 1;
  5403.     if (frame->nested1->state == 0) {
  5404.      frame->noname6757 = frame->arg0;
  5405.      frame->noname6758 = 0;
  5406.      frame->noname6759 = frame->arg0->loc_17;
  5407.      frame->nested1->arg0 = frame->noname6757;
  5408.      frame->nested1->arg1 = frame->noname6758;
  5409.      frame->nested1->arg2 = frame->noname6759;
  5410.     }
  5411.     local0 = FLISTSTR_aelt_IN(frame->nested1);
  5412.     if (frame->nested1->state == -1) goto after_loop;
  5413.     return local0;
  5414.     state1:;
  5415.    }
  5416.   }
  5417.   after_loop: ;
  5418.   GC_free(frame->nested1); frame->nested1 = NULL;
  5419.  }
  5420.  if (!FLISTSTR_invaria(frame->arg0)) {
  5421.   fprintf(stderr,"Failed invariant FLIST{STR}::invariant:BOOL ../Library/flist.sa:127:6\n");
  5422.   exit(16);
  5423.  }
  5424.  frame->state = -1;
  5425.  return dummy;
  5426. }
  5427.  
  5428.  
  5429. BOOL FLISTSTR_invaria(FLISTSTR self) {
  5430.  BOOL noname6761 = ((BOOL) 0);
  5431.  BOOL local0;
  5432.  INT local1;
  5433.  INT local2;
  5434.  INT local3;
  5435.  if ((self==((FLISTSTR) NULL))) {
  5436.   return TRUE;
  5437.  }
  5438.  local1 = self->loc_17;
  5439.  local2 = 0;
  5440.  if (INT_is_bet_INT_I(local1, local2, (self->asize))) {
  5441.   local3 = (self->asize);
  5442.   local0 = (local3>0);
  5443.  } else {
  5444.   local0 = FALSE;
  5445.  }
  5446.  return local0;
  5447. }
  5448.  
  5449.  
  5450. STR FLISTSTR_aelt_IN(FLISTSTR_aelt_IN_frame frame) {
  5451.  STR dummy;
  5452.  BOOL local0;
  5453.  BOOL local1;
  5454.  INT local2;
  5455.  INT local3;
  5456.  INT local4;
  5457.  INT local5;
  5458.  INT local6;
  5459.  INT local7;
  5460.  switch (frame->state) {
  5461.   case 0: goto state0;
  5462.   case 1: goto state1;
  5463.   }
  5464.  state0:;
  5465.  if ((!((frame->arg0==((FLISTSTR) NULL))))) {
  5466.   local2 = 0;
  5467.   local3 = (frame->arg0->asize);
  5468.   local1 = INT_is_bet_INT_I(frame->arg1, local2, (c_INT_minus_INT_INT_chk(local3,1)));
  5469.  } else {
  5470.   local1 = FALSE;
  5471.  }
  5472.  if (local1) {
  5473.   local4 = 0;
  5474.   local5 = (frame->arg0->asize);
  5475.   local0 = INT_is_bet_INT_I(frame->arg2, local4, (c_INT_minus_INT_INT_chk(local5,frame->arg1)));
  5476.  } else {
  5477.   local0 = FALSE;
  5478.  }
  5479.  if (!(local0)) {
  5480.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:58:7\n");
  5481.   exit(16);
  5482.  }
  5483.  {
  5484.   frame->nested1 = ALLOCATE(INT_upto_INT_INT_frame);
  5485.   frame->nested1->state = 0;
  5486.   while (1) {
  5487.    frame->state = 1;
  5488.    if (frame->nested1->state == 0) {
  5489.     frame->noname6763 = frame->arg1;
  5490.     local7 = (c_INT_plus_INT_INT_chk(frame->arg1,frame->arg2));
  5491.     frame->noname6764 = (c_INT_minus_INT_INT_chk(local7,1));
  5492.     frame->nested1->arg0 = frame->noname6763;
  5493.     frame->nested1->arg1 = frame->noname6764;
  5494.    }
  5495.    local6 = INT_upto_INT_INT(frame->nested1);
  5496.    if (frame->nested1->state == -1) goto after_loop;
  5497.    return FLISTSTR_aget_IN(frame->arg0, local6);
  5498.    state1:;
  5499.   }
  5500.  }
  5501.  after_loop: ;
  5502.  GC_free(frame->nested1); frame->nested1 = NULL;
  5503.  frame->state = -1;
  5504.  return dummy;
  5505. }
  5506.  
  5507.  
  5508. INT INT_upto_INT_INT(INT_upto_INT_INT_frame frame) {
  5509.  INT dummy;
  5510.  switch (frame->state) {
  5511.   case 0: goto state0;
  5512.   case 1: goto state1;
  5513.   }
  5514.  state0:;
  5515.  frame->r_6767 = frame->arg0;
  5516.  while (1) {
  5517.   if ((frame->r_6767>frame->arg1)) {
  5518.    goto after_loop;
  5519.   }
  5520.   frame->state = 1;
  5521.   return frame->r_6767;
  5522.   state1:;
  5523.   frame->r_6767 = (c_INT_plus_INT_INT_chk(frame->r_6767,1));
  5524.  }
  5525.  after_loop: ;
  5526.  frame->state = -1;
  5527.  return dummy;
  5528. }
  5529.  
  5530.  
  5531. INT INT_for_INT_INT(INT_for_INT_INT_frame frame) {
  5532.  INT dummy;
  5533.  switch (frame->state) {
  5534.   case 0: goto state0;
  5535.   case 1: goto state1;
  5536.   }
  5537.  state0:;
  5538.  if (!((frame->arg1>=0))) {
  5539.   fprintf(stderr,"Violation of precondition ../Library/int.sa:753:6\n");
  5540.   exit(16);
  5541.  }
  5542.  frame->r_6770 = frame->arg0;
  5543.  frame->e_6771 = (c_INT_plus_INT_INT_chk(frame->arg0,frame->arg1));
  5544.  while (1) {
  5545.   if ((frame->r_6770>=frame->e_6771)) {
  5546.    goto after_loop;
  5547.   }
  5548.   frame->state = 1;
  5549.   return frame->r_6770;
  5550.   state1:;
  5551.   frame->r_6770 = (c_INT_plus_INT_INT_chk(frame->r_6770,1));
  5552.  }
  5553.  after_loop: ;
  5554.  frame->state = -1;
  5555.  return dummy;
  5556. }
  5557.  
  5558.  
  5559. BOOL FMAPSTRITER_INLI_1037(FMAPSTRITER_INLINE self) {
  5560.  BOOL noname6773 = ((BOOL) 0);
  5561.  BOOL local0;
  5562.  INT local1;
  5563.  INT local2;
  5564.  if ((self==((FMAPSTRITER_INLINE) NULL))) {
  5565.   local0 = TRUE;
  5566.  } else {
  5567.   local1 = self->hsize;
  5568.   local2 = 0;
  5569.   local0 = INT_is_bet_INT_I(local1, local2, (self->asize));
  5570.  }
  5571.  return local0;
  5572. }
  5573.  
  5574.  
  5575. TP ARRAYTP_elt_TP(ARRAYTP_elt_TP_frame frame) {
  5576.  TP dummy;
  5577.  TP local0;
  5578.  switch (frame->state) {
  5579.   case 0: goto state0;
  5580.   case 1: goto state1;
  5581.   }
  5582.  state0:;
  5583.  if ((!((frame->arg0==((ARRAYTP) NULL))))) {
  5584.   {
  5585.    frame->nested1 = ALLOCATE(ARRAYTP_aelt_TP_frame);
  5586.    frame->nested1->state = 0;
  5587.    while (1) {
  5588.     frame->state = 1;
  5589.     if (frame->nested1->state == 0) {
  5590.      frame->noname6775 = frame->arg0;
  5591.      frame->nested1->arg0 = frame->noname6775;
  5592.     }
  5593.     local0 = ARRAYTP_aelt_TP(frame->nested1);
  5594.     if (frame->nested1->state == -1) goto after_loop;
  5595.     return local0;
  5596.     state1:;
  5597.    }
  5598.   }
  5599.   after_loop: ;
  5600.   GC_free(frame->nested1); frame->nested1 = NULL;
  5601.  }
  5602.  frame->state = -1;
  5603.  return dummy;
  5604. }
  5605.  
  5606.  
  5607. TP ARRAYTP_aelt_TP(ARRAYTP_aelt_TP_frame frame) {
  5608.  TP dummy;
  5609.  INT local0;
  5610.  switch (frame->state) {
  5611.   case 0: goto state0;
  5612.   case 1: goto state1;
  5613.   }
  5614.  state0:;
  5615.  if (!((!((frame->arg0==((ARRAYTP) NULL)))))) {
  5616.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:48:7\n");
  5617.   exit(16);
  5618.  }
  5619.  {
  5620.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  5621.   frame->nested1->state = 0;
  5622.   while (1) {
  5623.    frame->state = 1;
  5624.    if (frame->nested1->state == 0) {
  5625.     frame->noname6778 = (frame->arg0->asize);
  5626.     frame->nested1->arg0 = frame->noname6778;
  5627.    }
  5628.    local0 = INT_times_INT(frame->nested1);
  5629.    if (frame->nested1->state == -1) goto after_loop;
  5630.    return ARRAYTP_aget_INT_TP(frame->arg0, local0);
  5631.    state1:;
  5632.   }
  5633.  }
  5634.  after_loop: ;
  5635.  GC_free(frame->nested1); frame->nested1 = NULL;
  5636.  frame->state = -1;
  5637.  return dummy;
  5638. }
  5639.  
  5640.  
  5641. TP_ROUT TP_ROUT_TBL_elt__223(TP_ROUT_TBL_elt__223_frame frame) {
  5642.  TP_ROUT dummy;
  5643.  TP_ROUT local0;
  5644.  switch (frame->state) {
  5645.   case 0: goto state0;
  5646.   case 1: goto state1;
  5647.   }
  5648.  state0:;
  5649.  if ((!((frame->arg0==((TP_ROUT_TBL) NULL))))) {
  5650.   {
  5651.    frame->nested1 = ALLOCATE(TP_ROUT_TBL_aelt_frame);
  5652.    frame->nested1->state = 0;
  5653.    while (1) {
  5654.     if (frame->nested1->state == 0) {
  5655.      frame->noname6781 = frame->arg0;
  5656.      frame->nested1->arg0 = frame->noname6781;
  5657.     }
  5658.     local0 = TP_ROUT_TBL_aelt(frame->nested1);
  5659.     if (frame->nested1->state == -1) goto after_loop;
  5660.     frame->r_6782 = local0;
  5661.     if ((!(TP_ROUT_TBL_elt__202(frame->arg0, frame->r_6782, TP_ROUT_TBL_elt_(frame->arg0))))) {
  5662.      frame->state = 1;
  5663.      return frame->r_6782;
  5664.      state1:;
  5665.     }
  5666.    }
  5667.   }
  5668.   after_loop: ;
  5669.   GC_free(frame->nested1); frame->nested1 = NULL;
  5670.  }
  5671.  if (!TP_ROUT_TBL_inva(frame->arg0)) {
  5672.   fprintf(stderr,"Failed invariant TP_ROUT_TBL::invariant:BOOL ../Library/fqset.sa:105:6\n");
  5673.   exit(16);
  5674.  }
  5675.  frame->state = -1;
  5676.  return dummy;
  5677. }
  5678.  
  5679.  
  5680. BOOL TP_ROUT_TBL_inva(TP_ROUT_TBL self) {
  5681.  BOOL noname6784 = ((BOOL) 0);
  5682.  BOOL local0;
  5683.  INT local1;
  5684.  INT local2;
  5685.  if ((self==((TP_ROUT_TBL) NULL))) {
  5686.   local0 = TRUE;
  5687.  } else {
  5688.   local1 = self->hsize;
  5689.   local2 = 0;
  5690.   local0 = INT_is_bet_INT_I(local1, local2, (self->asize));
  5691.  }
  5692.  return local0;
  5693. }
  5694.  
  5695.  
  5696. TP_ROUT TP_ROUT_TBL_aelt(TP_ROUT_TBL_aelt_frame frame) {
  5697.  TP_ROUT dummy;
  5698.  INT local0;
  5699.  switch (frame->state) {
  5700.   case 0: goto state0;
  5701.   case 1: goto state1;
  5702.   }
  5703.  state0:;
  5704.  if (!((!((frame->arg0==((TP_ROUT_TBL) NULL)))))) {
  5705.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:48:7\n");
  5706.   exit(16);
  5707.  }
  5708.  {
  5709.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  5710.   frame->nested1->state = 0;
  5711.   while (1) {
  5712.    frame->state = 1;
  5713.    if (frame->nested1->state == 0) {
  5714.     frame->noname6786 = (frame->arg0->asize);
  5715.     frame->nested1->arg0 = frame->noname6786;
  5716.    }
  5717.    local0 = INT_times_INT(frame->nested1);
  5718.    if (frame->nested1->state == -1) goto after_loop;
  5719.    return TP_ROUT_TBL_aget(frame->arg0, local0);
  5720.    state1:;
  5721.   }
  5722.  }
  5723.  after_loop: ;
  5724.  GC_free(frame->nested1); frame->nested1 = NULL;
  5725.  frame->state = -1;
  5726.  return dummy;
  5727. }
  5728.  
  5729.  
  5730. INT ARRAYSTR_ind_INT(ARRAYSTR_ind_INT_frame frame) {
  5731.  INT dummy;
  5732.  INT local0;
  5733.  switch (frame->state) {
  5734.   case 0: goto state0;
  5735.   case 1: goto state1;
  5736.   }
  5737.  state0:;
  5738.  if ((!((frame->arg0==((ARRAYSTR) NULL))))) {
  5739.   {
  5740.    frame->nested1 = ALLOCATE(ARRAYSTR_aind_INT_frame);
  5741.    frame->nested1->state = 0;
  5742.    while (1) {
  5743.     frame->state = 1;
  5744.     if (frame->nested1->state == 0) {
  5745.      frame->noname6789 = frame->arg0;
  5746.      frame->nested1->arg0 = frame->noname6789;
  5747.     }
  5748.     local0 = ARRAYSTR_aind_INT(frame->nested1);
  5749.     if (frame->nested1->state == -1) goto after_loop;
  5750.     return local0;
  5751.     state1:;
  5752.    }
  5753.   }
  5754.   after_loop: ;
  5755.   GC_free(frame->nested1); frame->nested1 = NULL;
  5756.  }
  5757.  frame->state = -1;
  5758.  return dummy;
  5759. }
  5760.  
  5761.  
  5762. INT ARRAYSTR_aind_INT(ARRAYSTR_aind_INT_frame frame) {
  5763.  INT dummy;
  5764.  INT local0;
  5765.  switch (frame->state) {
  5766.   case 0: goto state0;
  5767.   case 1: goto state1;
  5768.   }
  5769.  state0:;
  5770.  if (!((!((frame->arg0==((ARRAYSTR) NULL)))))) {
  5771.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:129:7\n");
  5772.   exit(16);
  5773.  }
  5774.  {
  5775.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  5776.   frame->nested1->state = 0;
  5777.   while (1) {
  5778.    frame->state = 1;
  5779.    if (frame->nested1->state == 0) {
  5780.     frame->noname6792 = (frame->arg0->asize);
  5781.     frame->nested1->arg0 = frame->noname6792;
  5782.    }
  5783.    local0 = INT_times_INT(frame->nested1);
  5784.    if (frame->nested1->state == -1) goto after_loop;
  5785.    return local0;
  5786.    state1:;
  5787.   }
  5788.  }
  5789.  after_loop: ;
  5790.  GC_free(frame->nested1); frame->nested1 = NULL;
  5791.  frame->state = -1;
  5792.  return dummy;
  5793. }
  5794.  
  5795.  
  5796. INT AM_BND_CREATE_EX_3800(AM_BND_CREATE_EX_3800_frame frame) {
  5797.  INT dummy;
  5798.  INT local0;
  5799.  switch (frame->state) {
  5800.   case 0: goto state0;
  5801.   case 1: goto state1;
  5802.   }
  5803.  state0:;
  5804.  if ((!((frame->arg0==((AM_BND_CREATE_EXPR) NULL))))) {
  5805.   {
  5806.    frame->nested1 = ALLOCATE(AM_BND_CREATE_EX_6797_frame);
  5807.    frame->nested1->state = 0;
  5808.    while (1) {
  5809.     frame->state = 1;
  5810.     if (frame->nested1->state == 0) {
  5811.      frame->noname6795 = frame->arg0;
  5812.      frame->nested1->arg0 = frame->noname6795;
  5813.     }
  5814.     local0 = AM_BND_CREATE_EX_6797(frame->nested1);
  5815.     if (frame->nested1->state == -1) goto after_loop;
  5816.     return local0;
  5817.     state1:;
  5818.    }
  5819.   }
  5820.   after_loop: ;
  5821.   GC_free(frame->nested1); frame->nested1 = NULL;
  5822.  }
  5823.  frame->state = -1;
  5824.  return dummy;
  5825. }
  5826.  
  5827.  
  5828. INT AM_BND_CREATE_EX_6797(AM_BND_CREATE_EX_6797_frame frame) {
  5829.  INT dummy;
  5830.  INT local0;
  5831.  switch (frame->state) {
  5832.   case 0: goto state0;
  5833.   case 1: goto state1;
  5834.   }
  5835.  state0:;
  5836.  if (!((!((frame->arg0==((AM_BND_CREATE_EXPR) NULL)))))) {
  5837.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:129:7\n");
  5838.   exit(16);
  5839.  }
  5840.  {
  5841.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  5842.   frame->nested1->state = 0;
  5843.   while (1) {
  5844.    frame->state = 1;
  5845.    if (frame->nested1->state == 0) {
  5846.     frame->noname6799 = (frame->arg0->asize);
  5847.     frame->nested1->arg0 = frame->noname6799;
  5848.    }
  5849.    local0 = INT_times_INT(frame->nested1);
  5850.    if (frame->nested1->state == -1) goto after_loop;
  5851.    return local0;
  5852.    state1:;
  5853.   }
  5854.  }
  5855.  after_loop: ;
  5856.  GC_free(frame->nested1); frame->nested1 = NULL;
  5857.  frame->state = -1;
  5858.  return dummy;
  5859. }
  5860.  
  5861.  
  5862. INT INT_up_INT(INT_up_INT_frame frame) {
  5863.  INT dummy;
  5864.  switch (frame->state) {
  5865.   case 0: goto state0;
  5866.   case 1: goto state1;
  5867.   }
  5868.  state0:;
  5869.  frame->r_6802 = frame->arg0;
  5870.  while (1) {
  5871.   frame->state = 1;
  5872.   return frame->r_6802;
  5873.   state1:;
  5874.   frame->r_6802 = (c_INT_plus_INT_INT_chk(frame->r_6802,1));
  5875.  }
  5876.  after_loop: ;
  5877.  frame->state = -1;
  5878.  return dummy;
  5879. }
  5880.  
  5881.  
  5882. INT ARRAYINT_elt_INT(ARRAYINT_elt_INT_frame frame) {
  5883.  INT dummy;
  5884.  INT local0;
  5885.  switch (frame->state) {
  5886.   case 0: goto state0;
  5887.   case 1: goto state1;
  5888.   }
  5889.  state0:;
  5890.  if ((!((frame->arg0==((ARRAYINT) NULL))))) {
  5891.   {
  5892.    frame->nested1 = ALLOCATE(ARRAYINT_aelt_INT_frame);
  5893.    frame->nested1->state = 0;
  5894.    while (1) {
  5895.     frame->state = 1;
  5896.     if (frame->nested1->state == 0) {
  5897.      frame->noname6805 = frame->arg0;
  5898.      frame->nested1->arg0 = frame->noname6805;
  5899.     }
  5900.     local0 = ARRAYINT_aelt_INT(frame->nested1);
  5901.     if (frame->nested1->state == -1) goto after_loop;
  5902.     return local0;
  5903.     state1:;
  5904.    }
  5905.   }
  5906.   after_loop: ;
  5907.   GC_free(frame->nested1); frame->nested1 = NULL;
  5908.  }
  5909.  frame->state = -1;
  5910.  return dummy;
  5911. }
  5912.  
  5913.  
  5914. INT ARRAYINT_aelt_INT(ARRAYINT_aelt_INT_frame frame) {
  5915.  INT dummy;
  5916.  INT local0;
  5917.  switch (frame->state) {
  5918.   case 0: goto state0;
  5919.   case 1: goto state1;
  5920.   }
  5921.  state0:;
  5922.  if (!((!((frame->arg0==((ARRAYINT) NULL)))))) {
  5923.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:48:7\n");
  5924.   exit(16);
  5925.  }
  5926.  {
  5927.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  5928.   frame->nested1->state = 0;
  5929.   while (1) {
  5930.    frame->state = 1;
  5931.    if (frame->nested1->state == 0) {
  5932.     frame->noname6808 = (frame->arg0->asize);
  5933.     frame->nested1->arg0 = frame->noname6808;
  5934.    }
  5935.    local0 = INT_times_INT(frame->nested1);
  5936.    if (frame->nested1->state == -1) goto after_loop;
  5937.    return ARRAYINT_aget_IN(frame->arg0, local0);
  5938.    state1:;
  5939.   }
  5940.  }
  5941.  after_loop: ;
  5942.  GC_free(frame->nested1); frame->nested1 = NULL;
  5943.  frame->state = -1;
  5944.  return dummy;
  5945. }
  5946.  
  5947.  
  5948. AM_BND_CREATE_EXPR FLISTAM_BND_CREA_4674(FLISTAM_BND_CREA_4674_frame frame) {
  5949.  AM_BND_CREATE_EXPR dummy;
  5950.  AM_BND_CREATE_EXPR local0;
  5951.  switch (frame->state) {
  5952.   case 0: goto state0;
  5953.   case 1: goto state1;
  5954.   }
  5955.  state0:;
  5956.  if ((!((frame->arg0==((FLISTAM_BND_CREA) NULL))))) {
  5957.   {
  5958.    frame->nested1 = ALLOCATE(FLISTAM_BND_CREA_6815_frame);
  5959.    frame->nested1->state = 0;
  5960.    while (1) {
  5961.     frame->state = 1;
  5962.     if (frame->nested1->state == 0) {
  5963.      frame->noname6811 = frame->arg0;
  5964.      frame->noname6812 = 0;
  5965.      frame->noname6813 = frame->arg0->loc_17;
  5966.      frame->nested1->arg0 = frame->noname6811;
  5967.      frame->nested1->arg1 = frame->noname6812;
  5968.      frame->nested1->arg2 = frame->noname6813;
  5969.     }
  5970.     local0 = FLISTAM_BND_CREA_6815(frame->nested1);
  5971.     if (frame->nested1->state == -1) goto after_loop;
  5972.     return local0;
  5973.     state1:;
  5974.    }
  5975.   }
  5976.   after_loop: ;
  5977.   GC_free(frame->nested1); frame->nested1 = NULL;
  5978.  }
  5979.  if (!FLISTAM_BND_CREA_1044(frame->arg0)) {
  5980.   fprintf(stderr,"Failed invariant FLIST{AM_BND_CREATE_EXPR}::invariant:BOOL ../Library/flist.sa:127:6\n");
  5981.   exit(16);
  5982.  }
  5983.  frame->state = -1;
  5984.  return dummy;
  5985. }
  5986.  
  5987.  
  5988. BOOL FLISTAM_BND_CREA_1044(FLISTAM_BND_CREA self) {
  5989.  BOOL noname6816 = ((BOOL) 0);
  5990.  BOOL local0;
  5991.  INT local1;
  5992.  INT local2;
  5993.  INT local3;
  5994.  if ((self==((FLISTAM_BND_CREA) NULL))) {
  5995.   return TRUE;
  5996.  }
  5997.  local1 = self->loc_17;
  5998.  local2 = 0;
  5999.  if (INT_is_bet_INT_I(local1, local2, (self->asize))) {
  6000.   local3 = (self->asize);
  6001.   local0 = (local3>0);
  6002.  } else {
  6003.   local0 = FALSE;
  6004.  }
  6005.  return local0;
  6006. }
  6007.  
  6008.  
  6009. AM_BND_CREATE_EXPR FLISTAM_BND_CREA_6817(FLISTAM_BND_CREA self, INT ind_6818) {
  6010.  AM_BND_CREATE_EXPR noname6819;
  6011.  BOOL local0;
  6012.  INT local1;
  6013.  INT local2;
  6014.  if ((!((self==((FLISTAM_BND_CREA) NULL))))) {
  6015.   local1 = 0;
  6016.   local2 = (self->asize);
  6017.   local0 = INT_is_bet_INT_I(ind_6818, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  6018.  } else {
  6019.   local0 = FALSE;
  6020.  }
  6021.  if (!(local0)) {
  6022.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  6023.   exit(16);
  6024.  }
  6025.  if (ind_6818<0||ind_6818>=self->asize) {
  6026.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  6027.   exit(16);
  6028.  }
  6029.  return self->arr_part[ind_6818];
  6030. }
  6031.  
  6032.  
  6033. AM_BND_CREATE_EXPR FLISTAM_BND_CREA_6820(FLISTAM_BND_CREA self, INT ind_6821) {
  6034.  AM_BND_CREATE_EXPR noname6822;
  6035.  BOOL local0;
  6036.  INT local1;
  6037.  if ((!((self==((FLISTAM_BND_CREA) NULL))))) {
  6038.   local1 = 0;
  6039.   local0 = INT_is_bet_INT_I(ind_6821, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  6040.  } else {
  6041.   local0 = FALSE;
  6042.  }
  6043.  if (!(local0)) {
  6044.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:68:7\n");
  6045.   exit(16);
  6046.  }
  6047.  return FLISTAM_BND_CREA_6817(self, ind_6821);
  6048.  if (!FLISTAM_BND_CREA_1044(self)) {
  6049.   fprintf(stderr,"Failed invariant FLIST{AM_BND_CREATE_EXPR}::invariant:BOOL ../Library/flist.sa:68:7\n");
  6050.   exit(16);
  6051.  }
  6052. }
  6053.  
  6054.  
  6055. AM_BND_CREATE_EXPR FLISTAM_BND_CREA_6815(FLISTAM_BND_CREA_6815_frame frame) {
  6056.  AM_BND_CREATE_EXPR dummy;
  6057.  BOOL local0;
  6058.  BOOL local1;
  6059.  INT local2;
  6060.  INT local3;
  6061.  INT local4;
  6062.  INT local5;
  6063.  INT local6;
  6064.  INT local7;
  6065.  switch (frame->state) {
  6066.   case 0: goto state0;
  6067.   case 1: goto state1;
  6068.   }
  6069.  state0:;
  6070.  if ((!((frame->arg0==((FLISTAM_BND_CREA) NULL))))) {
  6071.   local2 = 0;
  6072.   local3 = (frame->arg0->asize);
  6073.   local1 = INT_is_bet_INT_I(frame->arg1, local2, (c_INT_minus_INT_INT_chk(local3,1)));
  6074.  } else {
  6075.   local1 = FALSE;
  6076.  }
  6077.  if (local1) {
  6078.   local4 = 0;
  6079.   local5 = (frame->arg0->asize);
  6080.   local0 = INT_is_bet_INT_I(frame->arg2, local4, (c_INT_minus_INT_INT_chk(local5,frame->arg1)));
  6081.  } else {
  6082.   local0 = FALSE;
  6083.  }
  6084.  if (!(local0)) {
  6085.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:58:7\n");
  6086.   exit(16);
  6087.  }
  6088.  {
  6089.   frame->nested1 = ALLOCATE(INT_upto_INT_INT_frame);
  6090.   frame->nested1->state = 0;
  6091.   while (1) {
  6092.    frame->state = 1;
  6093.    if (frame->nested1->state == 0) {
  6094.     frame->noname6824 = frame->arg1;
  6095.     local7 = (c_INT_plus_INT_INT_chk(frame->arg1,frame->arg2));
  6096.     frame->noname6825 = (c_INT_minus_INT_INT_chk(local7,1));
  6097.     frame->nested1->arg0 = frame->noname6824;
  6098.     frame->nested1->arg1 = frame->noname6825;
  6099.    }
  6100.    local6 = INT_upto_INT_INT(frame->nested1);
  6101.    if (frame->nested1->state == -1) goto after_loop;
  6102.    return FLISTAM_BND_CREA_6820(frame->arg0, local6);
  6103.    state1:;
  6104.   }
  6105.  }
  6106.  after_loop: ;
  6107.  GC_free(frame->nested1); frame->nested1 = NULL;
  6108.  frame->state = -1;
  6109.  return dummy;
  6110. }
  6111.  
  6112.  
  6113. AM_ROUT_DEF FLISTAM_ROUT_DEF_4104(FLISTAM_ROUT_DEF_4104_frame frame) {
  6114.  AM_ROUT_DEF dummy;
  6115.  AM_ROUT_DEF local0;
  6116.  switch (frame->state) {
  6117.   case 0: goto state0;
  6118.   case 1: goto state1;
  6119.   }
  6120.  state0:;
  6121.  if ((!((frame->arg0==((FLISTAM_ROUT_DEF) NULL))))) {
  6122.   {
  6123.    frame->nested1 = ALLOCATE(FLISTAM_ROUT_DEF_6832_frame);
  6124.    frame->nested1->state = 0;
  6125.    while (1) {
  6126.     frame->state = 1;
  6127.     if (frame->nested1->state == 0) {
  6128.      frame->noname6828 = frame->arg0;
  6129.      frame->noname6829 = 0;
  6130.      frame->noname6830 = frame->arg0->loc_17;
  6131.      frame->nested1->arg0 = frame->noname6828;
  6132.      frame->nested1->arg1 = frame->noname6829;
  6133.      frame->nested1->arg2 = frame->noname6830;
  6134.     }
  6135.     local0 = FLISTAM_ROUT_DEF_6832(frame->nested1);
  6136.     if (frame->nested1->state == -1) goto after_loop;
  6137.     return local0;
  6138.     state1:;
  6139.    }
  6140.   }
  6141.   after_loop: ;
  6142.   GC_free(frame->nested1); frame->nested1 = NULL;
  6143.  }
  6144.  if (!FLISTAM_ROUT_DEF_1041(frame->arg0)) {
  6145.   fprintf(stderr,"Failed invariant FLIST{AM_ROUT_DEF}::invariant:BOOL ../Library/flist.sa:127:6\n");
  6146.   exit(16);
  6147.  }
  6148.  frame->state = -1;
  6149.  return dummy;
  6150. }
  6151.  
  6152.  
  6153. BOOL FLISTAM_ROUT_DEF_1041(FLISTAM_ROUT_DEF self) {
  6154.  BOOL noname6833 = ((BOOL) 0);
  6155.  BOOL local0;
  6156.  INT local1;
  6157.  INT local2;
  6158.  INT local3;
  6159.  if ((self==((FLISTAM_ROUT_DEF) NULL))) {
  6160.   return TRUE;
  6161.  }
  6162.  local1 = self->loc_17;
  6163.  local2 = 0;
  6164.  if (INT_is_bet_INT_I(local1, local2, (self->asize))) {
  6165.   local3 = (self->asize);
  6166.   local0 = (local3>0);
  6167.  } else {
  6168.   local0 = FALSE;
  6169.  }
  6170.  return local0;
  6171. }
  6172.  
  6173.  
  6174. AM_ROUT_DEF FLISTAM_ROUT_DEF_6834(FLISTAM_ROUT_DEF self, INT ind_6835) {
  6175.  AM_ROUT_DEF noname6836;
  6176.  BOOL local0;
  6177.  INT local1;
  6178.  INT local2;
  6179.  if ((!((self==((FLISTAM_ROUT_DEF) NULL))))) {
  6180.   local1 = 0;
  6181.   local2 = (self->asize);
  6182.   local0 = INT_is_bet_INT_I(ind_6835, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  6183.  } else {
  6184.   local0 = FALSE;
  6185.  }
  6186.  if (!(local0)) {
  6187.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  6188.   exit(16);
  6189.  }
  6190.  if (ind_6835<0||ind_6835>=self->asize) {
  6191.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  6192.   exit(16);
  6193.  }
  6194.  return self->arr_part[ind_6835];
  6195. }
  6196.  
  6197.  
  6198. AM_ROUT_DEF FLISTAM_ROUT_DEF_6837(FLISTAM_ROUT_DEF self, INT ind_6838) {
  6199.  AM_ROUT_DEF noname6839;
  6200.  BOOL local0;
  6201.  INT local1;
  6202.  if ((!((self==((FLISTAM_ROUT_DEF) NULL))))) {
  6203.   local1 = 0;
  6204.   local0 = INT_is_bet_INT_I(ind_6838, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  6205.  } else {
  6206.   local0 = FALSE;
  6207.  }
  6208.  if (!(local0)) {
  6209.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:68:7\n");
  6210.   exit(16);
  6211.  }
  6212.  return FLISTAM_ROUT_DEF_6834(self, ind_6838);
  6213.  if (!FLISTAM_ROUT_DEF_1041(self)) {
  6214.   fprintf(stderr,"Failed invariant FLIST{AM_ROUT_DEF}::invariant:BOOL ../Library/flist.sa:68:7\n");
  6215.   exit(16);
  6216.  }
  6217. }
  6218.  
  6219.  
  6220. AM_ROUT_DEF FLISTAM_ROUT_DEF_6832(FLISTAM_ROUT_DEF_6832_frame frame) {
  6221.  AM_ROUT_DEF dummy;
  6222.  BOOL local0;
  6223.  BOOL local1;
  6224.  INT local2;
  6225.  INT local3;
  6226.  INT local4;
  6227.  INT local5;
  6228.  INT local6;
  6229.  INT local7;
  6230.  switch (frame->state) {
  6231.   case 0: goto state0;
  6232.   case 1: goto state1;
  6233.   }
  6234.  state0:;
  6235.  if ((!((frame->arg0==((FLISTAM_ROUT_DEF) NULL))))) {
  6236.   local2 = 0;
  6237.   local3 = (frame->arg0->asize);
  6238.   local1 = INT_is_bet_INT_I(frame->arg1, local2, (c_INT_minus_INT_INT_chk(local3,1)));
  6239.  } else {
  6240.   local1 = FALSE;
  6241.  }
  6242.  if (local1) {
  6243.   local4 = 0;
  6244.   local5 = (frame->arg0->asize);
  6245.   local0 = INT_is_bet_INT_I(frame->arg2, local4, (c_INT_minus_INT_INT_chk(local5,frame->arg1)));
  6246.  } else {
  6247.   local0 = FALSE;
  6248.  }
  6249.  if (!(local0)) {
  6250.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:58:7\n");
  6251.   exit(16);
  6252.  }
  6253.  {
  6254.   frame->nested1 = ALLOCATE(INT_upto_INT_INT_frame);
  6255.   frame->nested1->state = 0;
  6256.   while (1) {
  6257.    frame->state = 1;
  6258.    if (frame->nested1->state == 0) {
  6259.     frame->noname6841 = frame->arg1;
  6260.     local7 = (c_INT_plus_INT_INT_chk(frame->arg1,frame->arg2));
  6261.     frame->noname6842 = (c_INT_minus_INT_INT_chk(local7,1));
  6262.     frame->nested1->arg0 = frame->noname6841;
  6263.     frame->nested1->arg1 = frame->noname6842;
  6264.    }
  6265.    local6 = INT_upto_INT_INT(frame->nested1);
  6266.    if (frame->nested1->state == -1) goto after_loop;
  6267.    return FLISTAM_ROUT_DEF_6837(frame->arg0, local6);
  6268.    state1:;
  6269.   }
  6270.  }
  6271.  after_loop: ;
  6272.  GC_free(frame->nested1); frame->nested1 = NULL;
  6273.  frame->state = -1;
  6274.  return dummy;
  6275. }
  6276.  
  6277.  
  6278. TP FLISTTP_elt_TP(FLISTTP_elt_TP_frame frame) {
  6279.  TP dummy;
  6280.  TP local0;
  6281.  switch (frame->state) {
  6282.   case 0: goto state0;
  6283.   case 1: goto state1;
  6284.   }
  6285.  state0:;
  6286.  if ((!((frame->arg0==((FLISTTP) NULL))))) {
  6287.   {
  6288.    frame->nested1 = ALLOCATE(FLISTTP_aelt_INT_frame);
  6289.    frame->nested1->state = 0;
  6290.    while (1) {
  6291.     frame->state = 1;
  6292.     if (frame->nested1->state == 0) {
  6293.      frame->noname6845 = frame->arg0;
  6294.      frame->noname6846 = 0;
  6295.      frame->noname6847 = frame->arg0->loc_17;
  6296.      frame->nested1->arg0 = frame->noname6845;
  6297.      frame->nested1->arg1 = frame->noname6846;
  6298.      frame->nested1->arg2 = frame->noname6847;
  6299.     }
  6300.     local0 = FLISTTP_aelt_INT(frame->nested1);
  6301.     if (frame->nested1->state == -1) goto after_loop;
  6302.     return local0;
  6303.     state1:;
  6304.    }
  6305.   }
  6306.   after_loop: ;
  6307.   GC_free(frame->nested1); frame->nested1 = NULL;
  6308.  }
  6309.  if (!FLISTTP_invarian(frame->arg0)) {
  6310.   fprintf(stderr,"Failed invariant FLIST{$TP}::invariant:BOOL ../Library/flist.sa:127:6\n");
  6311.   exit(16);
  6312.  }
  6313.  frame->state = -1;
  6314.  return dummy;
  6315. }
  6316.  
  6317.  
  6318. BOOL FLISTTP_invarian(FLISTTP self) {
  6319.  BOOL noname6849 = ((BOOL) 0);
  6320.  BOOL local0;
  6321.  INT local1;
  6322.  INT local2;
  6323.  INT local3;
  6324.  if ((self==((FLISTTP) NULL))) {
  6325.   return TRUE;
  6326.  }
  6327.  local1 = self->loc_17;
  6328.  local2 = 0;
  6329.  if (INT_is_bet_INT_I(local1, local2, (self->asize))) {
  6330.   local3 = (self->asize);
  6331.   local0 = (local3>0);
  6332.  } else {
  6333.   local0 = FALSE;
  6334.  }
  6335.  return local0;
  6336. }
  6337.  
  6338.  
  6339. TP FLISTTP_aelt_INT(FLISTTP_aelt_INT_frame frame) {
  6340.  TP dummy;
  6341.  BOOL local0;
  6342.  BOOL local1;
  6343.  INT local2;
  6344.  INT local3;
  6345.  INT local4;
  6346.  INT local5;
  6347.  INT local6;
  6348.  INT local7;
  6349.  switch (frame->state) {
  6350.   case 0: goto state0;
  6351.   case 1: goto state1;
  6352.   }
  6353.  state0:;
  6354.  if ((!((frame->arg0==((FLISTTP) NULL))))) {
  6355.   local2 = 0;
  6356.   local3 = (frame->arg0->asize);
  6357.   local1 = INT_is_bet_INT_I(frame->arg1, local2, (c_INT_minus_INT_INT_chk(local3,1)));
  6358.  } else {
  6359.   local1 = FALSE;
  6360.  }
  6361.  if (local1) {
  6362.   local4 = 0;
  6363.   local5 = (frame->arg0->asize);
  6364.   local0 = INT_is_bet_INT_I(frame->arg2, local4, (c_INT_minus_INT_INT_chk(local5,frame->arg1)));
  6365.  } else {
  6366.   local0 = FALSE;
  6367.  }
  6368.  if (!(local0)) {
  6369.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:58:7\n");
  6370.   exit(16);
  6371.  }
  6372.  {
  6373.   frame->nested1 = ALLOCATE(INT_upto_INT_INT_frame);
  6374.   frame->nested1->state = 0;
  6375.   while (1) {
  6376.    frame->state = 1;
  6377.    if (frame->nested1->state == 0) {
  6378.     frame->noname6851 = frame->arg1;
  6379.     local7 = (c_INT_plus_INT_INT_chk(frame->arg1,frame->arg2));
  6380.     frame->noname6852 = (c_INT_minus_INT_INT_chk(local7,1));
  6381.     frame->nested1->arg0 = frame->noname6851;
  6382.     frame->nested1->arg1 = frame->noname6852;
  6383.    }
  6384.    local6 = INT_upto_INT_INT(frame->nested1);
  6385.    if (frame->nested1->state == -1) goto after_loop;
  6386.    return FLISTTP_aget_INT_TP(frame->arg0, local6);
  6387.    state1:;
  6388.   }
  6389.  }
  6390.  after_loop: ;
  6391.  GC_free(frame->nested1); frame->nested1 = NULL;
  6392.  frame->state = -1;
  6393.  return dummy;
  6394. }
  6395.  
  6396.  
  6397. BOOL FMAPSIGAM_ROUT_D_1046(FMAPSIGAM_ROUT_DEF self) {
  6398.  BOOL noname6854 = ((BOOL) 0);
  6399.  BOOL local0;
  6400.  INT local1;
  6401.  INT local2;
  6402.  if ((self==((FMAPSIGAM_ROUT_DEF) NULL))) {
  6403.   local0 = TRUE;
  6404.  } else {
  6405.   local1 = self->hsize;
  6406.   local2 = 0;
  6407.   local0 = INT_is_bet_INT_I(local1, local2, (self->asize));
  6408.  }
  6409.  return local0;
  6410. }
  6411.  
  6412.  
  6413. TUPSIGAM_ROUT_DEF FMAPSIGAM_ROUT_D_4144(FMAPSIGAM_ROUT_D_4144_frame frame) {
  6414.  TUPSIGAM_ROUT_DEF dummy;
  6415.  TUPSIGAM_ROUT_DEF local0;
  6416.  SIG local1;
  6417.  switch (frame->state) {
  6418.   case 0: goto state0;
  6419.   case 1: goto state1;
  6420.   }
  6421.  state0:;
  6422.  if ((!((frame->arg0==((FMAPSIGAM_ROUT_DEF) NULL))))) {
  6423.   {
  6424.    frame->nested1 = ALLOCATE(FMAPSIGAM_ROUT_D_6859_frame);
  6425.    frame->nested1->state = 0;
  6426.    while (1) {
  6427.     if (frame->nested1->state == 0) {
  6428.      frame->noname6856 = frame->arg0;
  6429.      frame->nested1->arg0 = frame->noname6856;
  6430.     }
  6431.     local0 = FMAPSIGAM_ROUT_D_6859(frame->nested1);
  6432.     if (frame->nested1->state == -1) goto after_loop;
  6433.     frame->r_6857 = local0;
  6434.     local1 = frame->r_6857.t1;
  6435.     if ((!(FMAPSIGAM_ROUT_D_4151(frame->arg0, local1, FMAPSIGAM_ROUT_D_4119(frame->arg0))))) {
  6436.      frame->state = 1;
  6437.      return frame->r_6857;
  6438.      state1:;
  6439.     }
  6440.    }
  6441.   }
  6442.   after_loop: ;
  6443.   GC_free(frame->nested1); frame->nested1 = NULL;
  6444.  }
  6445.  if (!FMAPSIGAM_ROUT_D_1046(frame->arg0)) {
  6446.   fprintf(stderr,"Failed invariant FMAP{SIG,AM_ROUT_DEF}::invariant:BOOL ../Library/fmap.sa:95:8\n");
  6447.   exit(16);
  6448.  }
  6449.  frame->state = -1;
  6450.  return dummy;
  6451. }
  6452.  
  6453.  
  6454. TUPSIGAM_ROUT_DEF FMAPSIGAM_ROUT_D_6859(FMAPSIGAM_ROUT_D_6859_frame frame) {
  6455.  TUPSIGAM_ROUT_DEF dummy;
  6456.  INT local0;
  6457.  switch (frame->state) {
  6458.   case 0: goto state0;
  6459.   case 1: goto state1;
  6460.   }
  6461.  state0:;
  6462.  if (!((!((frame->arg0==((FMAPSIGAM_ROUT_DEF) NULL)))))) {
  6463.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:48:7\n");
  6464.   exit(16);
  6465.  }
  6466.  {
  6467.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  6468.   frame->nested1->state = 0;
  6469.   while (1) {
  6470.    frame->state = 1;
  6471.    if (frame->nested1->state == 0) {
  6472.     frame->noname6861 = (frame->arg0->asize);
  6473.     frame->nested1->arg0 = frame->noname6861;
  6474.    }
  6475.    local0 = INT_times_INT(frame->nested1);
  6476.    if (frame->nested1->state == -1) goto after_loop;
  6477.    return FMAPSIGAM_ROUT_D_4148(frame->arg0, local0);
  6478.    state1:;
  6479.   }
  6480.  }
  6481.  after_loop: ;
  6482.  GC_free(frame->nested1); frame->nested1 = NULL;
  6483.  frame->state = -1;
  6484.  return dummy;
  6485. }
  6486.  
  6487.  
  6488. TP FMAPTPINT_keys_TP(FMAPTPINT_keys_TP_frame frame) {
  6489.  TP dummy;
  6490.  TUPTPINT local0;
  6491.  switch (frame->state) {
  6492.   case 0: goto state0;
  6493.   case 1: goto state1;
  6494.   }
  6495.  state0:;
  6496.  if ((!((frame->arg0==((FMAPTPINT) NULL))))) {
  6497.   {
  6498.    frame->nested1 = ALLOCATE(FMAPTPINT_aelt_T_frame);
  6499.    frame->nested1->state = 0;
  6500.    while (1) {
  6501.     if (frame->nested1->state == 0) {
  6502.      frame->noname6864 = frame->arg0;
  6503.      frame->nested1->arg0 = frame->noname6864;
  6504.     }
  6505.     local0 = FMAPTPINT_aelt_T(frame->nested1);
  6506.     if (frame->nested1->state == -1) goto after_loop;
  6507.     frame->r_6865 = local0.t1;
  6508.     if ((!(FMAPTPINT_key_eq(frame->arg0, frame->r_6865, FMAPTPINT_key_nil_TP(frame->arg0))))) {
  6509.      frame->state = 1;
  6510.      return frame->r_6865;
  6511.      state1:;
  6512.     }
  6513.    }
  6514.   }
  6515.   after_loop: ;
  6516.   GC_free(frame->nested1); frame->nested1 = NULL;
  6517.  }
  6518.  if (!FMAPTPINT_invari(frame->arg0)) {
  6519.   fprintf(stderr,"Failed invariant FMAP{$TP,INT}::invariant:BOOL ../Library/fmap.sa:103:7\n");
  6520.   exit(16);
  6521.  }
  6522.  frame->state = -1;
  6523.  return dummy;
  6524. }
  6525.  
  6526.  
  6527. BOOL FMAPTPINT_invari(FMAPTPINT self) {
  6528.  BOOL noname6867 = ((BOOL) 0);
  6529.  BOOL local0;
  6530.  INT local1;
  6531.  INT local2;
  6532.  if ((self==((FMAPTPINT) NULL))) {
  6533.   local0 = TRUE;
  6534.  } else {
  6535.   local1 = self->hsize;
  6536.   local2 = 0;
  6537.   local0 = INT_is_bet_INT_I(local1, local2, (self->asize));
  6538.  }
  6539.  return local0;
  6540. }
  6541.  
  6542.  
  6543. TUPTPINT FMAPTPINT_aelt_T(FMAPTPINT_aelt_T_frame frame) {
  6544.  TUPTPINT dummy;
  6545.  INT local0;
  6546.  switch (frame->state) {
  6547.   case 0: goto state0;
  6548.   case 1: goto state1;
  6549.   }
  6550.  state0:;
  6551.  if (!((!((frame->arg0==((FMAPTPINT) NULL)))))) {
  6552.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:48:7\n");
  6553.   exit(16);
  6554.  }
  6555.  {
  6556.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  6557.   frame->nested1->state = 0;
  6558.   while (1) {
  6559.    frame->state = 1;
  6560.    if (frame->nested1->state == 0) {
  6561.     frame->noname6869 = (frame->arg0->asize);
  6562.     frame->nested1->arg0 = frame->noname6869;
  6563.    }
  6564.    local0 = INT_times_INT(frame->nested1);
  6565.    if (frame->nested1->state == -1) goto after_loop;
  6566.    return FMAPTPINT_aget_I(frame->arg0, local0);
  6567.    state1:;
  6568.   }
  6569.  }
  6570.  after_loop: ;
  6571.  GC_free(frame->nested1); frame->nested1 = NULL;
  6572.  frame->state = -1;
  6573.  return dummy;
  6574. }
  6575.  
  6576.  
  6577. TUPTPINT FMAPTPINT_pairs_(FMAPTPINT_pairs__frame frame) {
  6578.  TUPTPINT dummy;
  6579.  TUPTPINT local0;
  6580.  TP local1;
  6581.  switch (frame->state) {
  6582.   case 0: goto state0;
  6583.   case 1: goto state1;
  6584.   }
  6585.  state0:;
  6586.  if ((!((frame->arg0==((FMAPTPINT) NULL))))) {
  6587.   {
  6588.    frame->nested1 = ALLOCATE(FMAPTPINT_aelt_T_frame);
  6589.    frame->nested1->state = 0;
  6590.    while (1) {
  6591.     if (frame->nested1->state == 0) {
  6592.      frame->noname6872 = frame->arg0;
  6593.      frame->nested1->arg0 = frame->noname6872;
  6594.     }
  6595.     local0 = FMAPTPINT_aelt_T(frame->nested1);
  6596.     if (frame->nested1->state == -1) goto after_loop;
  6597.     frame->r_6873 = local0;
  6598.     local1 = frame->r_6873.t1;
  6599.     if ((!(FMAPTPINT_key_eq(frame->arg0, local1, FMAPTPINT_key_nil_TP(frame->arg0))))) {
  6600.      frame->state = 1;
  6601.      return frame->r_6873;
  6602.      state1:;
  6603.     }
  6604.    }
  6605.   }
  6606.   after_loop: ;
  6607.   GC_free(frame->nested1); frame->nested1 = NULL;
  6608.  }
  6609.  if (!FMAPTPINT_invari(frame->arg0)) {
  6610.   fprintf(stderr,"Failed invariant FMAP{$TP,INT}::invariant:BOOL ../Library/fmap.sa:95:8\n");
  6611.   exit(16);
  6612.  }
  6613.  frame->state = -1;
  6614.  return dummy;
  6615. }
  6616.  
  6617.  
  6618. TUPIDENTTP FMAPIDENTTP_pair(FMAPIDENTTP_pair_frame frame) {
  6619.  TUPIDENTTP dummy;
  6620.  TUPIDENTTP local0;
  6621.  IDENT local1;
  6622.  switch (frame->state) {
  6623.   case 0: goto state0;
  6624.   case 1: goto state1;
  6625.   }
  6626.  state0:;
  6627.  if ((!((frame->arg0==((FMAPIDENTTP) NULL))))) {
  6628.   {
  6629.    frame->nested1 = ALLOCATE(FMAPIDENTTP_aelt_frame);
  6630.    frame->nested1->state = 0;
  6631.    while (1) {
  6632.     if (frame->nested1->state == 0) {
  6633.      frame->noname6876 = frame->arg0;
  6634.      frame->nested1->arg0 = frame->noname6876;
  6635.     }
  6636.     local0 = FMAPIDENTTP_aelt(frame->nested1);
  6637.     if (frame->nested1->state == -1) goto after_loop;
  6638.     frame->r_6877 = local0;
  6639.     local1 = frame->r_6877.t1;
  6640.     if ((!(FMAPIDENTTP_key__3627(frame->arg0, local1, FMAPIDENTTP_key_(frame->arg0))))) {
  6641.      frame->state = 1;
  6642.      return frame->r_6877;
  6643.      state1:;
  6644.     }
  6645.    }
  6646.   }
  6647.   after_loop: ;
  6648.   GC_free(frame->nested1); frame->nested1 = NULL;
  6649.  }
  6650.  if (!FMAPIDENTTP_inva(frame->arg0)) {
  6651.   fprintf(stderr,"Failed invariant FMAP{IDENT,$TP}::invariant:BOOL ../Library/fmap.sa:95:8\n");
  6652.   exit(16);
  6653.  }
  6654.  frame->state = -1;
  6655.  return dummy;
  6656. }
  6657.  
  6658.  
  6659. BOOL FMAPIDENTTP_inva(FMAPIDENTTP self) {
  6660.  BOOL noname6879 = ((BOOL) 0);
  6661.  BOOL local0;
  6662.  INT local1;
  6663.  INT local2;
  6664.  if ((self==((FMAPIDENTTP) NULL))) {
  6665.   local0 = TRUE;
  6666.  } else {
  6667.   local1 = self->hsize;
  6668.   local2 = 0;
  6669.   local0 = INT_is_bet_INT_I(local1, local2, (self->asize));
  6670.  }
  6671.  return local0;
  6672. }
  6673.  
  6674.  
  6675. TUPIDENTTP FMAPIDENTTP_aelt(FMAPIDENTTP_aelt_frame frame) {
  6676.  TUPIDENTTP dummy;
  6677.  INT local0;
  6678.  switch (frame->state) {
  6679.   case 0: goto state0;
  6680.   case 1: goto state1;
  6681.   }
  6682.  state0:;
  6683.  if (!((!((frame->arg0==((FMAPIDENTTP) NULL)))))) {
  6684.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:48:7\n");
  6685.   exit(16);
  6686.  }
  6687.  {
  6688.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  6689.   frame->nested1->state = 0;
  6690.   while (1) {
  6691.    frame->state = 1;
  6692.    if (frame->nested1->state == 0) {
  6693.     frame->noname6881 = (frame->arg0->asize);
  6694.     frame->nested1->arg0 = frame->noname6881;
  6695.    }
  6696.    local0 = INT_times_INT(frame->nested1);
  6697.    if (frame->nested1->state == -1) goto after_loop;
  6698.    return FMAPIDENTTP_aget(frame->arg0, local0);
  6699.    state1:;
  6700.   }
  6701.  }
  6702.  after_loop: ;
  6703.  GC_free(frame->nested1); frame->nested1 = NULL;
  6704.  frame->state = -1;
  6705.  return dummy;
  6706. }
  6707.  
  6708.  
  6709. AM_GLOBAL_EXPR FLISTAM_GLOBAL_E_5942(FLISTAM_GLOBAL_E_5942_frame frame) {
  6710.  AM_GLOBAL_EXPR dummy;
  6711.  AM_GLOBAL_EXPR local0;
  6712.  switch (frame->state) {
  6713.   case 0: goto state0;
  6714.   case 1: goto state1;
  6715.   }
  6716.  state0:;
  6717.  if ((!((frame->arg0==((FLISTAM_GLOBAL_EXPR) NULL))))) {
  6718.   {
  6719.    frame->nested1 = ALLOCATE(FLISTAM_GLOBAL_E_6888_frame);
  6720.    frame->nested1->state = 0;
  6721.    while (1) {
  6722.     frame->state = 1;
  6723.     if (frame->nested1->state == 0) {
  6724.      frame->noname6884 = frame->arg0;
  6725.      frame->noname6885 = 0;
  6726.      frame->noname6886 = frame->arg0->loc_17;
  6727.      frame->nested1->arg0 = frame->noname6884;
  6728.      frame->nested1->arg1 = frame->noname6885;
  6729.      frame->nested1->arg2 = frame->noname6886;
  6730.     }
  6731.     local0 = FLISTAM_GLOBAL_E_6888(frame->nested1);
  6732.     if (frame->nested1->state == -1) goto after_loop;
  6733.     return local0;
  6734.     state1:;
  6735.    }
  6736.   }
  6737.   after_loop: ;
  6738.   GC_free(frame->nested1); frame->nested1 = NULL;
  6739.  }
  6740.  if (!FLISTAM_GLOBAL_E_5920(frame->arg0)) {
  6741.   fprintf(stderr,"Failed invariant FLIST{AM_GLOBAL_EXPR}::invariant:BOOL ../Library/flist.sa:127:6\n");
  6742.   exit(16);
  6743.  }
  6744.  frame->state = -1;
  6745.  return dummy;
  6746. }
  6747.  
  6748.  
  6749. BOOL FLISTAM_GLOBAL_E_5920(FLISTAM_GLOBAL_EXPR self) {
  6750.  BOOL noname6889 = ((BOOL) 0);
  6751.  BOOL local0;
  6752.  INT local1;
  6753.  INT local2;
  6754.  INT local3;
  6755.  if ((self==((FLISTAM_GLOBAL_EXPR) NULL))) {
  6756.   return TRUE;
  6757.  }
  6758.  local1 = self->loc_17;
  6759.  local2 = 0;
  6760.  if (INT_is_bet_INT_I(local1, local2, (self->asize))) {
  6761.   local3 = (self->asize);
  6762.   local0 = (local3>0);
  6763.  } else {
  6764.   local0 = FALSE;
  6765.  }
  6766.  return local0;
  6767. }
  6768.  
  6769.  
  6770. AM_GLOBAL_EXPR FLISTAM_GLOBAL_E_6890(FLISTAM_GLOBAL_EXPR self, INT ind_6891) {
  6771.  AM_GLOBAL_EXPR noname6892;
  6772.  BOOL local0;
  6773.  INT local1;
  6774.  INT local2;
  6775.  if ((!((self==((FLISTAM_GLOBAL_EXPR) NULL))))) {
  6776.   local1 = 0;
  6777.   local2 = (self->asize);
  6778.   local0 = INT_is_bet_INT_I(ind_6891, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  6779.  } else {
  6780.   local0 = FALSE;
  6781.  }
  6782.  if (!(local0)) {
  6783.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  6784.   exit(16);
  6785.  }
  6786.  if (ind_6891<0||ind_6891>=self->asize) {
  6787.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  6788.   exit(16);
  6789.  }
  6790.  return self->arr_part[ind_6891];
  6791. }
  6792.  
  6793.  
  6794. AM_GLOBAL_EXPR FLISTAM_GLOBAL_E_6893(FLISTAM_GLOBAL_EXPR self, INT ind_6894) {
  6795.  AM_GLOBAL_EXPR noname6895;
  6796.  BOOL local0;
  6797.  INT local1;
  6798.  if ((!((self==((FLISTAM_GLOBAL_EXPR) NULL))))) {
  6799.   local1 = 0;
  6800.   local0 = INT_is_bet_INT_I(ind_6894, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  6801.  } else {
  6802.   local0 = FALSE;
  6803.  }
  6804.  if (!(local0)) {
  6805.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:68:7\n");
  6806.   exit(16);
  6807.  }
  6808.  return FLISTAM_GLOBAL_E_6890(self, ind_6894);
  6809.  if (!FLISTAM_GLOBAL_E_5920(self)) {
  6810.   fprintf(stderr,"Failed invariant FLIST{AM_GLOBAL_EXPR}::invariant:BOOL ../Library/flist.sa:68:7\n");
  6811.   exit(16);
  6812.  }
  6813. }
  6814.  
  6815.  
  6816. AM_GLOBAL_EXPR FLISTAM_GLOBAL_E_6888(FLISTAM_GLOBAL_E_6888_frame frame) {
  6817.  AM_GLOBAL_EXPR dummy;
  6818.  BOOL local0;
  6819.  BOOL local1;
  6820.  INT local2;
  6821.  INT local3;
  6822.  INT local4;
  6823.  INT local5;
  6824.  INT local6;
  6825.  INT local7;
  6826.  switch (frame->state) {
  6827.   case 0: goto state0;
  6828.   case 1: goto state1;
  6829.   }
  6830.  state0:;
  6831.  if ((!((frame->arg0==((FLISTAM_GLOBAL_EXPR) NULL))))) {
  6832.   local2 = 0;
  6833.   local3 = (frame->arg0->asize);
  6834.   local1 = INT_is_bet_INT_I(frame->arg1, local2, (c_INT_minus_INT_INT_chk(local3,1)));
  6835.  } else {
  6836.   local1 = FALSE;
  6837.  }
  6838.  if (local1) {
  6839.   local4 = 0;
  6840.   local5 = (frame->arg0->asize);
  6841.   local0 = INT_is_bet_INT_I(frame->arg2, local4, (c_INT_minus_INT_INT_chk(local5,frame->arg1)));
  6842.  } else {
  6843.   local0 = FALSE;
  6844.  }
  6845.  if (!(local0)) {
  6846.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:58:7\n");
  6847.   exit(16);
  6848.  }
  6849.  {
  6850.   frame->nested1 = ALLOCATE(INT_upto_INT_INT_frame);
  6851.   frame->nested1->state = 0;
  6852.   while (1) {
  6853.    frame->state = 1;
  6854.    if (frame->nested1->state == 0) {
  6855.     frame->noname6897 = frame->arg1;
  6856.     local7 = (c_INT_plus_INT_INT_chk(frame->arg1,frame->arg2));
  6857.     frame->noname6898 = (c_INT_minus_INT_INT_chk(local7,1));
  6858.     frame->nested1->arg0 = frame->noname6897;
  6859.     frame->nested1->arg1 = frame->noname6898;
  6860.    }
  6861.    local6 = INT_upto_INT_INT(frame->nested1);
  6862.    if (frame->nested1->state == -1) goto after_loop;
  6863.    return FLISTAM_GLOBAL_E_6893(frame->arg0, local6);
  6864.    state1:;
  6865.   }
  6866.  }
  6867.  after_loop: ;
  6868.  GC_free(frame->nested1); frame->nested1 = NULL;
  6869.  frame->state = -1;
  6870.  return dummy;
  6871. }
  6872.  
  6873.  
  6874. BOOL FLISTSIG_invaria(FLISTSIG self) {
  6875.  BOOL noname6900 = ((BOOL) 0);
  6876.  BOOL local0;
  6877.  INT local1;
  6878.  INT local2;
  6879.  INT local3;
  6880.  if ((self==((FLISTSIG) NULL))) {
  6881.   return TRUE;
  6882.  }
  6883.  local1 = self->loc_17;
  6884.  local2 = 0;
  6885.  if (INT_is_bet_INT_I(local1, local2, (self->asize))) {
  6886.   local3 = (self->asize);
  6887.   local0 = (local3>0);
  6888.  } else {
  6889.   local0 = FALSE;
  6890.  }
  6891.  return local0;
  6892. }
  6893.  
  6894.  
  6895. TP_CLASS TP_CLASS_TBL_elt_161(TP_CLASS_TBL_elt_161_frame frame) {
  6896.  TP_CLASS dummy;
  6897.  TP_CLASS local0;
  6898.  switch (frame->state) {
  6899.   case 0: goto state0;
  6900.   case 1: goto state1;
  6901.   }
  6902.  state0:;
  6903.  if ((!((frame->arg0==((TP_CLASS_TBL) NULL))))) {
  6904.   {
  6905.    frame->nested1 = ALLOCATE(TP_CLASS_TBL_ael_frame);
  6906.    frame->nested1->state = 0;
  6907.    while (1) {
  6908.     if (frame->nested1->state == 0) {
  6909.      frame->noname6902 = frame->arg0;
  6910.      frame->nested1->arg0 = frame->noname6902;
  6911.     }
  6912.     local0 = TP_CLASS_TBL_ael(frame->nested1);
  6913.     if (frame->nested1->state == -1) goto after_loop;
  6914.     frame->r_6903 = local0;
  6915.     if ((!(TP_CLASS_TBL_elt_140(frame->arg0, frame->r_6903, TP_CLASS_TBL_elt(frame->arg0))))) {
  6916.      frame->state = 1;
  6917.      return frame->r_6903;
  6918.      state1:;
  6919.     }
  6920.    }
  6921.   }
  6922.   after_loop: ;
  6923.   GC_free(frame->nested1); frame->nested1 = NULL;
  6924.  }
  6925.  if (!TP_CLASS_TBL_inv(frame->arg0)) {
  6926.   fprintf(stderr,"Failed invariant TP_CLASS_TBL::invariant:BOOL ../Library/fqset.sa:105:6\n");
  6927.   exit(16);
  6928.  }
  6929.  frame->state = -1;
  6930.  return dummy;
  6931. }
  6932.  
  6933.  
  6934. BOOL TP_CLASS_TBL_inv(TP_CLASS_TBL self) {
  6935.  BOOL noname6905 = ((BOOL) 0);
  6936.  BOOL local0;
  6937.  INT local1;
  6938.  INT local2;
  6939.  if ((self==((TP_CLASS_TBL) NULL))) {
  6940.   local0 = TRUE;
  6941.  } else {
  6942.   local1 = self->hsize;
  6943.   local2 = 0;
  6944.   local0 = INT_is_bet_INT_I(local1, local2, (self->asize));
  6945.  }
  6946.  return local0;
  6947. }
  6948.  
  6949.  
  6950. TP_CLASS TP_CLASS_TBL_ael(TP_CLASS_TBL_ael_frame frame) {
  6951.  TP_CLASS dummy;
  6952.  INT local0;
  6953.  switch (frame->state) {
  6954.   case 0: goto state0;
  6955.   case 1: goto state1;
  6956.   }
  6957.  state0:;
  6958.  if (!((!((frame->arg0==((TP_CLASS_TBL) NULL)))))) {
  6959.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:48:7\n");
  6960.   exit(16);
  6961.  }
  6962.  {
  6963.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  6964.   frame->nested1->state = 0;
  6965.   while (1) {
  6966.    frame->state = 1;
  6967.    if (frame->nested1->state == 0) {
  6968.     frame->noname6907 = (frame->arg0->asize);
  6969.     frame->nested1->arg0 = frame->noname6907;
  6970.    }
  6971.    local0 = INT_times_INT(frame->nested1);
  6972.    if (frame->nested1->state == -1) goto after_loop;
  6973.    return TP_CLASS_TBL_age(frame->arg0, local0);
  6974.    state1:;
  6975.   }
  6976.  }
  6977.  after_loop: ;
  6978.  GC_free(frame->nested1); frame->nested1 = NULL;
  6979.  frame->state = -1;
  6980.  return dummy;
  6981. }
  6982.  
  6983.  
  6984. BOOL FLISTAM_EXPR_inv(FLISTAM_EXPR self) {
  6985.  BOOL noname6909 = ((BOOL) 0);
  6986.  BOOL local0;
  6987.  INT local1;
  6988.  INT local2;
  6989.  INT local3;
  6990.  if ((self==((FLISTAM_EXPR) NULL))) {
  6991.   return TRUE;
  6992.  }
  6993.  local1 = self->loc_17;
  6994.  local2 = 0;
  6995.  if (INT_is_bet_INT_I(local1, local2, (self->asize))) {
  6996.   local3 = (self->asize);
  6997.   local0 = (local3>0);
  6998.  } else {
  6999.   local0 = FALSE;
  7000.  }
  7001.  return local0;
  7002. }
  7003.  
  7004.  
  7005. BOOL INLINE_TBL_invar(INLINE_TBL self) {
  7006.  BOOL noname6910 = ((BOOL) 0);
  7007.  BOOL local0;
  7008.  INT local1;
  7009.  INT local2;
  7010.  if ((self==((INLINE_TBL) NULL))) {
  7011.   local0 = TRUE;
  7012.  } else {
  7013.   local1 = self->hsize;
  7014.   local2 = 0;
  7015.   local0 = INT_is_bet_INT_I(local1, local2, (self->asize));
  7016.  }
  7017.  return local0;
  7018. }
  7019.  
  7020.  
  7021. BOOL FLISTAM_LOCAL_EX_3769(FLISTAM_LOCAL_EXPR self) {
  7022.  BOOL noname6911 = ((BOOL) 0);
  7023.  BOOL local0;
  7024.  INT local1;
  7025.  INT local2;
  7026.  INT local3;
  7027.  if ((self==((FLISTAM_LOCAL_EXPR) NULL))) {
  7028.   return TRUE;
  7029.  }
  7030.  local1 = self->loc_17;
  7031.  local2 = 0;
  7032.  if (INT_is_bet_INT_I(local1, local2, (self->asize))) {
  7033.   local3 = (self->asize);
  7034.   local0 = (local3>0);
  7035.  } else {
  7036.   local0 = FALSE;
  7037.  }
  7038.  return local0;
  7039. }
  7040.  
  7041.  
  7042. void FLISTTP_aset_TP(FLISTTP_aset_TP_frame frame) {
  7043.  INT local0;
  7044.  INT local1;
  7045.  switch (frame->state) {
  7046.   case 0: goto state0;
  7047.   case 1: goto state1;
  7048.   }
  7049.  state0:;
  7050.  if (!((!((frame->arg0==((FLISTTP) NULL)))))) {
  7051.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:77:7\n");
  7052.   exit(16);
  7053.  }
  7054.  {
  7055.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  7056.   frame->nested1->state = 0;
  7057.   while (1) {
  7058.    if (frame->nested1->state == 0) {
  7059.     frame->noname6912 = (frame->arg0->asize);
  7060.     frame->nested1->arg0 = frame->noname6912;
  7061.    }
  7062.    local0 = INT_times_INT(frame->nested1);
  7063.    if (frame->nested1->state == -1) goto after_loop;
  7064.    local1 = local0;
  7065.    FLISTTP_aset_INT_TP(frame->arg0, local1, frame->arg1);
  7066.    frame->state = 1;
  7067.    return;
  7068.    state1:;
  7069.   }
  7070.  }
  7071.  after_loop: ;
  7072.  GC_free(frame->nested1); frame->nested1 = NULL;
  7073.  frame->state = -1;
  7074.  return;
  7075. }
  7076.  
  7077.  
  7078. BOOL FLISTFLISTAM_CON_3982(FLISTFLISTAM_CONST self) {
  7079.  BOOL noname6914 = ((BOOL) 0);
  7080.  BOOL local0;
  7081.  INT local1;
  7082.  INT local2;
  7083.  INT local3;
  7084.  if ((self==((FLISTFLISTAM_CONST) NULL))) {
  7085.   return TRUE;
  7086.  }
  7087.  local1 = self->loc_17;
  7088.  local2 = 0;
  7089.  if (INT_is_bet_INT_I(local1, local2, (self->asize))) {
  7090.   local3 = (self->asize);
  7091.   local0 = (local3>0);
  7092.  } else {
  7093.   local0 = FALSE;
  7094.  }
  7095.  return local0;
  7096. }
  7097.  
  7098.  
  7099. BOOL FLISTAM_STMT_inv(FLISTAM_STMT self) {
  7100.  BOOL noname6915 = ((BOOL) 0);
  7101.  BOOL local0;
  7102.  INT local1;
  7103.  INT local2;
  7104.  INT local3;
  7105.  if ((self==((FLISTAM_STMT) NULL))) {
  7106.   return TRUE;
  7107.  }
  7108.  local1 = self->loc_17;
  7109.  local2 = 0;
  7110.  if (INT_is_bet_INT_I(local1, local2, (self->asize))) {
  7111.   local3 = (self->asize);
  7112.   local0 = (local3>0);
  7113.  } else {
  7114.   local0 = FALSE;
  7115.  }
  7116.  return local0;
  7117. }
  7118.  
  7119.  
  7120. void FLISTAM_STMT_ase(FLISTAM_STMT_ase_frame frame) {
  7121.  INT local0;
  7122.  INT local1;
  7123.  switch (frame->state) {
  7124.   case 0: goto state0;
  7125.   case 1: goto state1;
  7126.   }
  7127.  state0:;
  7128.  if (!((!((frame->arg0==((FLISTAM_STMT) NULL)))))) {
  7129.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:77:7\n");
  7130.   exit(16);
  7131.  }
  7132.  {
  7133.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  7134.   frame->nested1->state = 0;
  7135.   while (1) {
  7136.    if (frame->nested1->state == 0) {
  7137.     frame->noname6916 = (frame->arg0->asize);
  7138.     frame->nested1->arg0 = frame->noname6916;
  7139.    }
  7140.    local0 = INT_times_INT(frame->nested1);
  7141.    if (frame->nested1->state == -1) goto after_loop;
  7142.    local1 = local0;
  7143.    FLISTAM_STMT_ase_6196(frame->arg0, local1, frame->arg1);
  7144.    frame->state = 1;
  7145.    return;
  7146.    state1:;
  7147.   }
  7148.  }
  7149.  after_loop: ;
  7150.  GC_free(frame->nested1); frame->nested1 = NULL;
  7151.  frame->state = -1;
  7152.  return;
  7153. }
  7154.  
  7155.  
  7156. AM_STMT FLISTAM_STMT_elt(FLISTAM_STMT_elt_frame frame) {
  7157.  AM_STMT dummy;
  7158.  AM_STMT local0;
  7159.  switch (frame->state) {
  7160.   case 0: goto state0;
  7161.   case 1: goto state1;
  7162.   }
  7163.  state0:;
  7164.  if ((!((frame->arg0==((FLISTAM_STMT) NULL))))) {
  7165.   {
  7166.    frame->nested1 = ALLOCATE(FLISTAM_STMT_ael_frame);
  7167.    frame->nested1->state = 0;
  7168.    while (1) {
  7169.     frame->state = 1;
  7170.     if (frame->nested1->state == 0) {
  7171.      frame->noname6919 = frame->arg0;
  7172.      frame->noname6920 = 0;
  7173.      frame->noname6921 = frame->arg0->loc_17;
  7174.      frame->nested1->arg0 = frame->noname6919;
  7175.      frame->nested1->arg1 = frame->noname6920;
  7176.      frame->nested1->arg2 = frame->noname6921;
  7177.     }
  7178.     local0 = FLISTAM_STMT_ael(frame->nested1);
  7179.     if (frame->nested1->state == -1) goto after_loop;
  7180.     return local0;
  7181.     state1:;
  7182.    }
  7183.   }
  7184.   after_loop: ;
  7185.   GC_free(frame->nested1); frame->nested1 = NULL;
  7186.  }
  7187.  if (!FLISTAM_STMT_inv(frame->arg0)) {
  7188.   fprintf(stderr,"Failed invariant FLIST{$AM_STMT}::invariant:BOOL ../Library/flist.sa:127:6\n");
  7189.   exit(16);
  7190.  }
  7191.  frame->state = -1;
  7192.  return dummy;
  7193. }
  7194.  
  7195.  
  7196. AM_STMT FLISTAM_STMT_ael(FLISTAM_STMT_ael_frame frame) {
  7197.  AM_STMT dummy;
  7198.  BOOL local0;
  7199.  BOOL local1;
  7200.  INT local2;
  7201.  INT local3;
  7202.  INT local4;
  7203.  INT local5;
  7204.  INT local6;
  7205.  INT local7;
  7206.  switch (frame->state) {
  7207.   case 0: goto state0;
  7208.   case 1: goto state1;
  7209.   }
  7210.  state0:;
  7211.  if ((!((frame->arg0==((FLISTAM_STMT) NULL))))) {
  7212.   local2 = 0;
  7213.   local3 = (frame->arg0->asize);
  7214.   local1 = INT_is_bet_INT_I(frame->arg1, local2, (c_INT_minus_INT_INT_chk(local3,1)));
  7215.  } else {
  7216.   local1 = FALSE;
  7217.  }
  7218.  if (local1) {
  7219.   local4 = 0;
  7220.   local5 = (frame->arg0->asize);
  7221.   local0 = INT_is_bet_INT_I(frame->arg2, local4, (c_INT_minus_INT_INT_chk(local5,frame->arg1)));
  7222.  } else {
  7223.   local0 = FALSE;
  7224.  }
  7225.  if (!(local0)) {
  7226.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:58:7\n");
  7227.   exit(16);
  7228.  }
  7229.  {
  7230.   frame->nested1 = ALLOCATE(INT_upto_INT_INT_frame);
  7231.   frame->nested1->state = 0;
  7232.   while (1) {
  7233.    frame->state = 1;
  7234.    if (frame->nested1->state == 0) {
  7235.     frame->noname6924 = frame->arg1;
  7236.     local7 = (c_INT_plus_INT_INT_chk(frame->arg1,frame->arg2));
  7237.     frame->noname6925 = (c_INT_minus_INT_INT_chk(local7,1));
  7238.     frame->nested1->arg0 = frame->noname6924;
  7239.     frame->nested1->arg1 = frame->noname6925;
  7240.    }
  7241.    local6 = INT_upto_INT_INT(frame->nested1);
  7242.    if (frame->nested1->state == -1) goto after_loop;
  7243.    return FLISTAM_STMT_age(frame->arg0, local6);
  7244.    state1:;
  7245.   }
  7246.  }
  7247.  after_loop: ;
  7248.  GC_free(frame->nested1); frame->nested1 = NULL;
  7249.  frame->state = -1;
  7250.  return dummy;
  7251. }
  7252.  
  7253.  
  7254. void FLISTFLISTAM_CON_6169(FLISTFLISTAM_CON_6169_frame frame) {
  7255.  INT local0;
  7256.  INT local1;
  7257.  switch (frame->state) {
  7258.   case 0: goto state0;
  7259.   case 1: goto state1;
  7260.   }
  7261.  state0:;
  7262.  if (!((!((frame->arg0==((FLISTFLISTAM_CONST) NULL)))))) {
  7263.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:77:7\n");
  7264.   exit(16);
  7265.  }
  7266.  {
  7267.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  7268.   frame->nested1->state = 0;
  7269.   while (1) {
  7270.    if (frame->nested1->state == 0) {
  7271.     frame->noname6927 = (frame->arg0->asize);
  7272.     frame->nested1->arg0 = frame->noname6927;
  7273.    }
  7274.    local0 = INT_times_INT(frame->nested1);
  7275.    if (frame->nested1->state == -1) goto after_loop;
  7276.    local1 = local0;
  7277.    FLISTFLISTAM_CON_6175(frame->arg0, local1, frame->arg1);
  7278.    frame->state = 1;
  7279.    return;
  7280.    state1:;
  7281.   }
  7282.  }
  7283.  after_loop: ;
  7284.  GC_free(frame->nested1); frame->nested1 = NULL;
  7285.  frame->state = -1;
  7286.  return;
  7287. }
  7288.  
  7289.  
  7290. FLISTAM_CONST FLISTFLISTAM_CON_6185(FLISTFLISTAM_CON_6185_frame frame) {
  7291.  FLISTAM_CONST dummy;
  7292.  FLISTAM_CONST local0;
  7293.  switch (frame->state) {
  7294.   case 0: goto state0;
  7295.   case 1: goto state1;
  7296.   }
  7297.  state0:;
  7298.  if ((!((frame->arg0==((FLISTFLISTAM_CONST) NULL))))) {
  7299.   {
  7300.    frame->nested1 = ALLOCATE(FLISTFLISTAM_CON_6934_frame);
  7301.    frame->nested1->state = 0;
  7302.    while (1) {
  7303.     frame->state = 1;
  7304.     if (frame->nested1->state == 0) {
  7305.      frame->noname6930 = frame->arg0;
  7306.      frame->noname6931 = 0;
  7307.      frame->noname6932 = frame->arg0->loc_17;
  7308.      frame->nested1->arg0 = frame->noname6930;
  7309.      frame->nested1->arg1 = frame->noname6931;
  7310.      frame->nested1->arg2 = frame->noname6932;
  7311.     }
  7312.     local0 = FLISTFLISTAM_CON_6934(frame->nested1);
  7313.     if (frame->nested1->state == -1) goto after_loop;
  7314.     return local0;
  7315.     state1:;
  7316.    }
  7317.   }
  7318.   after_loop: ;
  7319.   GC_free(frame->nested1); frame->nested1 = NULL;
  7320.  }
  7321.  if (!FLISTFLISTAM_CON_3982(frame->arg0)) {
  7322.   fprintf(stderr,"Failed invariant FLIST{FLIST{$AM_CONST}}::invariant:BOOL ../Library/flist.sa:127:6\n");
  7323.   exit(16);
  7324.  }
  7325.  frame->state = -1;
  7326.  return dummy;
  7327. }
  7328.  
  7329.  
  7330. FLISTAM_CONST FLISTFLISTAM_CON_6934(FLISTFLISTAM_CON_6934_frame frame) {
  7331.  FLISTAM_CONST dummy;
  7332.  BOOL local0;
  7333.  BOOL local1;
  7334.  INT local2;
  7335.  INT local3;
  7336.  INT local4;
  7337.  INT local5;
  7338.  INT local6;
  7339.  INT local7;
  7340.  switch (frame->state) {
  7341.   case 0: goto state0;
  7342.   case 1: goto state1;
  7343.   }
  7344.  state0:;
  7345.  if ((!((frame->arg0==((FLISTFLISTAM_CONST) NULL))))) {
  7346.   local2 = 0;
  7347.   local3 = (frame->arg0->asize);
  7348.   local1 = INT_is_bet_INT_I(frame->arg1, local2, (c_INT_minus_INT_INT_chk(local3,1)));
  7349.  } else {
  7350.   local1 = FALSE;
  7351.  }
  7352.  if (local1) {
  7353.   local4 = 0;
  7354.   local5 = (frame->arg0->asize);
  7355.   local0 = INT_is_bet_INT_I(frame->arg2, local4, (c_INT_minus_INT_INT_chk(local5,frame->arg1)));
  7356.  } else {
  7357.   local0 = FALSE;
  7358.  }
  7359.  if (!(local0)) {
  7360.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:58:7\n");
  7361.   exit(16);
  7362.  }
  7363.  {
  7364.   frame->nested1 = ALLOCATE(INT_upto_INT_INT_frame);
  7365.   frame->nested1->state = 0;
  7366.   while (1) {
  7367.    frame->state = 1;
  7368.    if (frame->nested1->state == 0) {
  7369.     frame->noname6936 = frame->arg1;
  7370.     local7 = (c_INT_plus_INT_INT_chk(frame->arg1,frame->arg2));
  7371.     frame->noname6937 = (c_INT_minus_INT_INT_chk(local7,1));
  7372.     frame->nested1->arg0 = frame->noname6936;
  7373.     frame->nested1->arg1 = frame->noname6937;
  7374.    }
  7375.    local6 = INT_upto_INT_INT(frame->nested1);
  7376.    if (frame->nested1->state == -1) goto after_loop;
  7377.    return FLISTFLISTAM_CON_3988(frame->arg0, local6);
  7378.    state1:;
  7379.   }
  7380.  }
  7381.  after_loop: ;
  7382.  GC_free(frame->nested1); frame->nested1 = NULL;
  7383.  frame->state = -1;
  7384.  return dummy;
  7385. }
  7386.  
  7387.  
  7388. BOOL FLISTAM_CONST_in(FLISTAM_CONST self) {
  7389.  BOOL noname6939 = ((BOOL) 0);
  7390.  BOOL local0;
  7391.  INT local1;
  7392.  INT local2;
  7393.  INT local3;
  7394.  if ((self==((FLISTAM_CONST) NULL))) {
  7395.   return TRUE;
  7396.  }
  7397.  local1 = self->loc_17;
  7398.  local2 = 0;
  7399.  if (INT_is_bet_INT_I(local1, local2, (self->asize))) {
  7400.   local3 = (self->asize);
  7401.   local0 = (local3>0);
  7402.  } else {
  7403.   local0 = FALSE;
  7404.  }
  7405.  return local0;
  7406. }
  7407.  
  7408.  
  7409. void FLISTAM_CONST_as_6148(FLISTAM_CONST_as_6148_frame frame) {
  7410.  INT local0;
  7411.  INT local1;
  7412.  switch (frame->state) {
  7413.   case 0: goto state0;
  7414.   case 1: goto state1;
  7415.   }
  7416.  state0:;
  7417.  if (!((!((frame->arg0==((FLISTAM_CONST) NULL)))))) {
  7418.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:77:7\n");
  7419.   exit(16);
  7420.  }
  7421.  {
  7422.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  7423.   frame->nested1->state = 0;
  7424.   while (1) {
  7425.    if (frame->nested1->state == 0) {
  7426.     frame->noname6940 = (frame->arg0->asize);
  7427.     frame->nested1->arg0 = frame->noname6940;
  7428.    }
  7429.    local0 = INT_times_INT(frame->nested1);
  7430.    if (frame->nested1->state == -1) goto after_loop;
  7431.    local1 = local0;
  7432.    FLISTAM_CONST_as_6153(frame->arg0, local1, frame->arg1);
  7433.    frame->state = 1;
  7434.    return;
  7435.    state1:;
  7436.   }
  7437.  }
  7438.  after_loop: ;
  7439.  GC_free(frame->nested1); frame->nested1 = NULL;
  7440.  frame->state = -1;
  7441.  return;
  7442. }
  7443.  
  7444.  
  7445. AM_CONST FLISTAM_CONST_el(FLISTAM_CONST_el_frame frame) {
  7446.  AM_CONST dummy;
  7447.  AM_CONST local0;
  7448.  switch (frame->state) {
  7449.   case 0: goto state0;
  7450.   case 1: goto state1;
  7451.   }
  7452.  state0:;
  7453.  if ((!((frame->arg0==((FLISTAM_CONST) NULL))))) {
  7454.   {
  7455.    frame->nested1 = ALLOCATE(FLISTAM_CONST_ae_frame);
  7456.    frame->nested1->state = 0;
  7457.    while (1) {
  7458.     frame->state = 1;
  7459.     if (frame->nested1->state == 0) {
  7460.      frame->noname6943 = frame->arg0;
  7461.      frame->noname6944 = 0;
  7462.      frame->noname6945 = frame->arg0->loc_17;
  7463.      frame->nested1->arg0 = frame->noname6943;
  7464.      frame->nested1->arg1 = frame->noname6944;
  7465.      frame->nested1->arg2 = frame->noname6945;
  7466.     }
  7467.     local0 = FLISTAM_CONST_ae(frame->nested1);
  7468.     if (frame->nested1->state == -1) goto after_loop;
  7469.     return local0;
  7470.     state1:;
  7471.    }
  7472.   }
  7473.   after_loop: ;
  7474.   GC_free(frame->nested1); frame->nested1 = NULL;
  7475.  }
  7476.  if (!FLISTAM_CONST_in(frame->arg0)) {
  7477.   fprintf(stderr,"Failed invariant FLIST{$AM_CONST}::invariant:BOOL ../Library/flist.sa:127:6\n");
  7478.   exit(16);
  7479.  }
  7480.  frame->state = -1;
  7481.  return dummy;
  7482. }
  7483.  
  7484.  
  7485. AM_CONST FLISTAM_CONST_ae(FLISTAM_CONST_ae_frame frame) {
  7486.  AM_CONST dummy;
  7487.  BOOL local0;
  7488.  BOOL local1;
  7489.  INT local2;
  7490.  INT local3;
  7491.  INT local4;
  7492.  INT local5;
  7493.  INT local6;
  7494.  INT local7;
  7495.  switch (frame->state) {
  7496.   case 0: goto state0;
  7497.   case 1: goto state1;
  7498.   }
  7499.  state0:;
  7500.  if ((!((frame->arg0==((FLISTAM_CONST) NULL))))) {
  7501.   local2 = 0;
  7502.   local3 = (frame->arg0->asize);
  7503.   local1 = INT_is_bet_INT_I(frame->arg1, local2, (c_INT_minus_INT_INT_chk(local3,1)));
  7504.  } else {
  7505.   local1 = FALSE;
  7506.  }
  7507.  if (local1) {
  7508.   local4 = 0;
  7509.   local5 = (frame->arg0->asize);
  7510.   local0 = INT_is_bet_INT_I(frame->arg2, local4, (c_INT_minus_INT_INT_chk(local5,frame->arg1)));
  7511.  } else {
  7512.   local0 = FALSE;
  7513.  }
  7514.  if (!(local0)) {
  7515.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:58:7\n");
  7516.   exit(16);
  7517.  }
  7518.  {
  7519.   frame->nested1 = ALLOCATE(INT_upto_INT_INT_frame);
  7520.   frame->nested1->state = 0;
  7521.   while (1) {
  7522.    frame->state = 1;
  7523.    if (frame->nested1->state == 0) {
  7524.     frame->noname6948 = frame->arg1;
  7525.     local7 = (c_INT_plus_INT_INT_chk(frame->arg1,frame->arg2));
  7526.     frame->noname6949 = (c_INT_minus_INT_INT_chk(local7,1));
  7527.     frame->nested1->arg0 = frame->noname6948;
  7528.     frame->nested1->arg1 = frame->noname6949;
  7529.    }
  7530.    local6 = INT_upto_INT_INT(frame->nested1);
  7531.    if (frame->nested1->state == -1) goto after_loop;
  7532.    return FLISTAM_CONST_ag(frame->arg0, local6);
  7533.    state1:;
  7534.   }
  7535.  }
  7536.  after_loop: ;
  7537.  GC_free(frame->nested1); frame->nested1 = NULL;
  7538.  frame->state = -1;
  7539.  return dummy;
  7540. }
  7541.  
  7542.  
  7543. INT ELT_TBL_query_ha(ELT_TBL self, IDENT i) {
  7544.  INT noname6951 = ((INT) 0);
  7545.  return IDENT_hash_INT(i);
  7546.  if (!ELT_TBL_invarian(self)) {
  7547.   fprintf(stderr,"Failed invariant ELT_TBL::invariant:BOOL ./elt.sa:170:13\n");
  7548.   exit(16);
  7549.  }
  7550. }
  7551.  
  7552.  
  7553. BOOL ELT_TBL_query_te(ELT_TBL self, IDENT name_6952, ELT e_6953) {
  7554.  BOOL noname6954 = ((BOOL) 0);
  7555.  if ((e_6953==((ELT) NULL))) {
  7556.   return FALSE;
  7557.  }
  7558.  return IDENT_is_eq_IDEN(e_6953->sig_6->name_19, name_6952);
  7559.  if (!ELT_TBL_invarian(self)) {
  7560.   fprintf(stderr,"Failed invariant ELT_TBL::invariant:BOOL ./elt.sa:165:13\n");
  7561.   exit(16);
  7562.  }
  7563. }
  7564.  
  7565.  
  7566. ELT ELT_TBL_get_quer(ELT_TBL_get_quer_frame frame) {
  7567.  ELT dummy;
  7568.  INT local0;
  7569.  INT local1;
  7570.  INT local2;
  7571.  INT local3;
  7572.  switch (frame->state) {
  7573.   case 0: goto state0;
  7574.   case 1: goto state1;
  7575.   case 2: goto state2;
  7576.   }
  7577.  state0:;
  7578.  if ((frame->arg0==((ELT_TBL) NULL))) {
  7579.   frame->state = -1;
  7580.   return;
  7581.  }
  7582.  local0 = ELT_TBL_query_ha(frame->arg0, frame->arg1);
  7583.  local1 = (frame->arg0->asize);
  7584.  frame->h_6956 = (local0&(c_INT_minus_INT_INT_chk(local1,2)));
  7585.  while (1) {
  7586.   frame->e_6957 = ELT_TBL_aget_INT_ELT(frame->arg0, frame->h_6956);
  7587.   if (ELT_TBL_query_te(frame->arg0, frame->arg1, frame->e_6957)) {
  7588.    frame->state = 1;
  7589.    return frame->e_6957;
  7590.    state1:;
  7591.   }
  7592.   else {
  7593.    if (ELT_TBL_elt_eq_E(frame->arg0, frame->e_6957, ELT_TBL_elt_nil_ELT(frame->arg0))) {
  7594.     goto after_loop;
  7595.    }
  7596.   }
  7597.   frame->h_6956 = (c_INT_plus_INT_INT_chk(frame->h_6956,1));
  7598.  }
  7599.  after_loop: ;
  7600.  local2 = (frame->arg0->asize);
  7601.  if ((frame->h_6956==(c_INT_minus_INT_INT_chk(local2,1)))) {
  7602.   frame->h_6956 = 0;
  7603.   while (1) {
  7604.    frame->e_6958 = ELT_TBL_aget_INT_ELT(frame->arg0, frame->h_6956);
  7605.    if (ELT_TBL_query_te(frame->arg0, frame->arg1, frame->e_6958)) {
  7606.     frame->state = 2;
  7607.     return frame->e_6958;
  7608.     state2:;
  7609.    }
  7610.    else {
  7611.     if (ELT_TBL_elt_eq_E(frame->arg0, frame->e_6958, ELT_TBL_elt_nil_ELT(frame->arg0))) {
  7612.      goto after_loop_6960;
  7613.     }
  7614.    }
  7615.    frame->h_6956 = (c_INT_plus_INT_INT_chk(frame->h_6956,1));
  7616.   }
  7617.   after_loop_6960: ;
  7618.   local3 = (frame->arg0->asize);
  7619.   if (!((frame->h_6956!=(c_INT_minus_INT_INT_chk(local3,1))))) {
  7620.    fprintf(stderr,"Violation of assertion ../Library/fqset.sa:126:15\n");
  7621.    exit(16);
  7622.   }
  7623.  }
  7624.  if (!ELT_TBL_invarian(frame->arg0)) {
  7625.   fprintf(stderr,"Failed invariant ELT_TBL::invariant:BOOL ../Library/fqset.sa:112:12\n");
  7626.   exit(16);
  7627.  }
  7628.  frame->state = -1;
  7629.  return dummy;
  7630. }
  7631.  
  7632.  
  7633. BOOL ELT_TBL_invarian(ELT_TBL self) {
  7634.  BOOL noname6962 = ((BOOL) 0);
  7635.  BOOL local0;
  7636.  INT local1;
  7637.  INT local2;
  7638.  if ((self==((ELT_TBL) NULL))) {
  7639.   local0 = TRUE;
  7640.  } else {
  7641.   local1 = self->hsize;
  7642.   local2 = 0;
  7643.   local0 = INT_is_bet_INT_I(local1, local2, (self->asize));
  7644.  }
  7645.  return local0;
  7646. }
  7647.  
  7648.  
  7649. void FLISTAM_GLOBAL_E_5926(FLISTAM_GLOBAL_E_5926_frame frame) {
  7650.  INT local0;
  7651.  INT local1;
  7652.  switch (frame->state) {
  7653.   case 0: goto state0;
  7654.   case 1: goto state1;
  7655.   }
  7656.  state0:;
  7657.  if (!((!((frame->arg0==((FLISTAM_GLOBAL_EXPR) NULL)))))) {
  7658.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:77:7\n");
  7659.   exit(16);
  7660.  }
  7661.  {
  7662.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  7663.   frame->nested1->state = 0;
  7664.   while (1) {
  7665.    if (frame->nested1->state == 0) {
  7666.     frame->noname6963 = (frame->arg0->asize);
  7667.     frame->nested1->arg0 = frame->noname6963;
  7668.    }
  7669.    local0 = INT_times_INT(frame->nested1);
  7670.    if (frame->nested1->state == -1) goto after_loop;
  7671.    local1 = local0;
  7672.    FLISTAM_GLOBAL_E_5932(frame->arg0, local1, frame->arg1);
  7673.    frame->state = 1;
  7674.    return;
  7675.    state1:;
  7676.   }
  7677.  }
  7678.  after_loop: ;
  7679.  GC_free(frame->nested1); frame->nested1 = NULL;
  7680.  frame->state = -1;
  7681.  return;
  7682. }
  7683.  
  7684.  
  7685. BOOL FMAPTPFMAPIDENTA_5104(FMAPTPFMAPIDENTA self) {
  7686.  BOOL noname6965 = ((BOOL) 0);
  7687.  BOOL local0;
  7688.  INT local1;
  7689.  INT local2;
  7690.  if ((self==((FMAPTPFMAPIDENTA) NULL))) {
  7691.   local0 = TRUE;
  7692.  } else {
  7693.   local1 = self->hsize;
  7694.   local2 = 0;
  7695.   local0 = INT_is_bet_INT_I(local1, local2, (self->asize));
  7696.  }
  7697.  return local0;
  7698. }
  7699.  
  7700.  
  7701. TUPTPFMAPIDENTAM FMAPTPFMAPIDENTA_5904(FMAPTPFMAPIDENTA_5904_frame frame) {
  7702.  TUPTPFMAPIDENTAM dummy;
  7703.  TUPTPFMAPIDENTAM local0;
  7704.  TP local1;
  7705.  switch (frame->state) {
  7706.   case 0: goto state0;
  7707.   case 1: goto state1;
  7708.   }
  7709.  state0:;
  7710.  if ((!((frame->arg0==((FMAPTPFMAPIDENTA) NULL))))) {
  7711.   {
  7712.    frame->nested1 = ALLOCATE(FMAPTPFMAPIDENTA_6970_frame);
  7713.    frame->nested1->state = 0;
  7714.    while (1) {
  7715.     if (frame->nested1->state == 0) {
  7716.      frame->noname6967 = frame->arg0;
  7717.      frame->nested1->arg0 = frame->noname6967;
  7718.     }
  7719.     local0 = FMAPTPFMAPIDENTA_6970(frame->nested1);
  7720.     if (frame->nested1->state == -1) goto after_loop;
  7721.     frame->r_6968 = local0;
  7722.     local1 = frame->r_6968.t1;
  7723.     if ((!(FMAPTPFMAPIDENTA_5110(frame->arg0, local1, FMAPTPFMAPIDENTA_5112(frame->arg0))))) {
  7724.      frame->state = 1;
  7725.      return frame->r_6968;
  7726.      state1:;
  7727.     }
  7728.    }
  7729.   }
  7730.   after_loop: ;
  7731.   GC_free(frame->nested1); frame->nested1 = NULL;
  7732.  }
  7733.  if (!FMAPTPFMAPIDENTA_5104(frame->arg0)) {
  7734.   fprintf(stderr,"Failed invariant FMAP{$TP,FMAP{IDENT,AM_GLOBAL_EXPR}}::invariant:BOOL ../Library/fmap.sa:95:8\n");
  7735.   exit(16);
  7736.  }
  7737.  frame->state = -1;
  7738.  return dummy;
  7739. }
  7740.  
  7741.  
  7742. TUPTPFMAPIDENTAM FMAPTPFMAPIDENTA_6970(FMAPTPFMAPIDENTA_6970_frame frame) {
  7743.  TUPTPFMAPIDENTAM dummy;
  7744.  INT local0;
  7745.  switch (frame->state) {
  7746.   case 0: goto state0;
  7747.   case 1: goto state1;
  7748.   }
  7749.  state0:;
  7750.  if (!((!((frame->arg0==((FMAPTPFMAPIDENTA) NULL)))))) {
  7751.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:48:7\n");
  7752.   exit(16);
  7753.  }
  7754.  {
  7755.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  7756.   frame->nested1->state = 0;
  7757.   while (1) {
  7758.    frame->state = 1;
  7759.    if (frame->nested1->state == 0) {
  7760.     frame->noname6972 = (frame->arg0->asize);
  7761.     frame->nested1->arg0 = frame->noname6972;
  7762.    }
  7763.    local0 = INT_times_INT(frame->nested1);
  7764.    if (frame->nested1->state == -1) goto after_loop;
  7765.    return FMAPTPFMAPIDENTA_5107(frame->arg0, local0);
  7766.    state1:;
  7767.   }
  7768.  }
  7769.  after_loop: ;
  7770.  GC_free(frame->nested1); frame->nested1 = NULL;
  7771.  frame->state = -1;
  7772.  return dummy;
  7773. }
  7774.  
  7775.  
  7776. void FMAPTPFMAPIDENTA_5894(FMAPTPFMAPIDENTA_5894_frame frame) {
  7777.  INT local0;
  7778.  INT local1;
  7779.  switch (frame->state) {
  7780.   case 0: goto state0;
  7781.   case 1: goto state1;
  7782.   }
  7783.  state0:;
  7784.  if (!((!((frame->arg0==((FMAPTPFMAPIDENTA) NULL)))))) {
  7785.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:77:7\n");
  7786.   exit(16);
  7787.  }
  7788.  {
  7789.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  7790.   frame->nested1->state = 0;
  7791.   while (1) {
  7792.    if (frame->nested1->state == 0) {
  7793.     frame->noname6974 = (frame->arg0->asize);
  7794.     frame->nested1->arg0 = frame->noname6974;
  7795.    }
  7796.    local0 = INT_times_INT(frame->nested1);
  7797.    if (frame->nested1->state == -1) goto after_loop;
  7798.    local1 = local0;
  7799.    FMAPTPFMAPIDENTA_5906(frame->arg0, local1, frame->arg1);
  7800.    frame->state = 1;
  7801.    return;
  7802.    state1:;
  7803.   }
  7804.  }
  7805.  after_loop: ;
  7806.  GC_free(frame->nested1); frame->nested1 = NULL;
  7807.  frame->state = -1;
  7808.  return;
  7809. }
  7810.  
  7811.  
  7812. BOOL FMAPIDENTAM_GLOB_5122(FMAPIDENTAM_GLOB self) {
  7813.  BOOL noname6976 = ((BOOL) 0);
  7814.  BOOL local0;
  7815.  INT local1;
  7816.  INT local2;
  7817.  if ((self==((FMAPIDENTAM_GLOB) NULL))) {
  7818.   local0 = TRUE;
  7819.  } else {
  7820.   local1 = self->hsize;
  7821.   local2 = 0;
  7822.   local0 = INT_is_bet_INT_I(local1, local2, (self->asize));
  7823.  }
  7824.  return local0;
  7825. }
  7826.  
  7827.  
  7828. TUPIDENTAM_GLOBA FMAPIDENTAM_GLOB_5869(FMAPIDENTAM_GLOB_5869_frame frame) {
  7829.  TUPIDENTAM_GLOBA dummy;
  7830.  TUPIDENTAM_GLOBA local0;
  7831.  IDENT local1;
  7832.  switch (frame->state) {
  7833.   case 0: goto state0;
  7834.   case 1: goto state1;
  7835.   }
  7836.  state0:;
  7837.  if ((!((frame->arg0==((FMAPIDENTAM_GLOB) NULL))))) {
  7838.   {
  7839.    frame->nested1 = ALLOCATE(FMAPIDENTAM_GLOB_6981_frame);
  7840.    frame->nested1->state = 0;
  7841.    while (1) {
  7842.     if (frame->nested1->state == 0) {
  7843.      frame->noname6978 = frame->arg0;
  7844.      frame->nested1->arg0 = frame->noname6978;
  7845.     }
  7846.     local0 = FMAPIDENTAM_GLOB_6981(frame->nested1);
  7847.     if (frame->nested1->state == -1) goto after_loop;
  7848.     frame->r_6979 = local0;
  7849.     local1 = frame->r_6979.t1;
  7850.     if ((!(FMAPIDENTAM_GLOB_5128(frame->arg0, local1, FMAPIDENTAM_GLOB_5130(frame->arg0))))) {
  7851.      frame->state = 1;
  7852.      return frame->r_6979;
  7853.      state1:;
  7854.     }
  7855.    }
  7856.   }
  7857.   after_loop: ;
  7858.   GC_free(frame->nested1); frame->nested1 = NULL;
  7859.  }
  7860.  if (!FMAPIDENTAM_GLOB_5122(frame->arg0)) {
  7861.   fprintf(stderr,"Failed invariant FMAP{IDENT,AM_GLOBAL_EXPR}::invariant:BOOL ../Library/fmap.sa:95:8\n");
  7862.   exit(16);
  7863.  }
  7864.  frame->state = -1;
  7865.  return dummy;
  7866. }
  7867.  
  7868.  
  7869. TUPIDENTAM_GLOBA FMAPIDENTAM_GLOB_6981(FMAPIDENTAM_GLOB_6981_frame frame) {
  7870.  TUPIDENTAM_GLOBA dummy;
  7871.  INT local0;
  7872.  switch (frame->state) {
  7873.   case 0: goto state0;
  7874.   case 1: goto state1;
  7875.   }
  7876.  state0:;
  7877.  if (!((!((frame->arg0==((FMAPIDENTAM_GLOB) NULL)))))) {
  7878.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:48:7\n");
  7879.   exit(16);
  7880.  }
  7881.  {
  7882.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  7883.   frame->nested1->state = 0;
  7884.   while (1) {
  7885.    frame->state = 1;
  7886.    if (frame->nested1->state == 0) {
  7887.     frame->noname6983 = (frame->arg0->asize);
  7888.     frame->nested1->arg0 = frame->noname6983;
  7889.    }
  7890.    local0 = INT_times_INT(frame->nested1);
  7891.    if (frame->nested1->state == -1) goto after_loop;
  7892.    return FMAPIDENTAM_GLOB_5125(frame->arg0, local0);
  7893.    state1:;
  7894.   }
  7895.  }
  7896.  after_loop: ;
  7897.  GC_free(frame->nested1); frame->nested1 = NULL;
  7898.  frame->state = -1;
  7899.  return dummy;
  7900. }
  7901.  
  7902.  
  7903. void FMAPIDENTAM_GLOB_5859(FMAPIDENTAM_GLOB_5859_frame frame) {
  7904.  INT local0;
  7905.  INT local1;
  7906.  switch (frame->state) {
  7907.   case 0: goto state0;
  7908.   case 1: goto state1;
  7909.   }
  7910.  state0:;
  7911.  if (!((!((frame->arg0==((FMAPIDENTAM_GLOB) NULL)))))) {
  7912.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:77:7\n");
  7913.   exit(16);
  7914.  }
  7915.  {
  7916.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  7917.   frame->nested1->state = 0;
  7918.   while (1) {
  7919.    if (frame->nested1->state == 0) {
  7920.     frame->noname6985 = (frame->arg0->asize);
  7921.     frame->nested1->arg0 = frame->noname6985;
  7922.    }
  7923.    local0 = INT_times_INT(frame->nested1);
  7924.    if (frame->nested1->state == -1) goto after_loop;
  7925.    local1 = local0;
  7926.    FMAPIDENTAM_GLOB_5871(frame->arg0, local1, frame->arg1);
  7927.    frame->state = 1;
  7928.    return;
  7929.    state1:;
  7930.   }
  7931.  }
  7932.  after_loop: ;
  7933.  GC_free(frame->nested1); frame->nested1 = NULL;
  7934.  frame->state = -1;
  7935.  return;
  7936. }
  7937.  
  7938.  
  7939. BOOL ARRAYBOOL_elt_BOOL(ARRAYBOOL_elt_BOOL_frame frame) {
  7940.  BOOL dummy;
  7941.  BOOL local0;
  7942.  switch (frame->state) {
  7943.   case 0: goto state0;
  7944.   case 1: goto state1;
  7945.   }
  7946.  state0:;
  7947.  if ((!((frame->arg0==((ARRAYBOOL) NULL))))) {
  7948.   {
  7949.    frame->nested1 = ALLOCATE(ARRAYBOOL_aelt_BOOL_frame);
  7950.    frame->nested1->state = 0;
  7951.    while (1) {
  7952.     frame->state = 1;
  7953.     if (frame->nested1->state == 0) {
  7954.      frame->noname6988 = frame->arg0;
  7955.      frame->nested1->arg0 = frame->noname6988;
  7956.     }
  7957.     local0 = ARRAYBOOL_aelt_BOOL(frame->nested1);
  7958.     if (frame->nested1->state == -1) goto after_loop;
  7959.     return local0;
  7960.     state1:;
  7961.    }
  7962.   }
  7963.   after_loop: ;
  7964.   GC_free(frame->nested1); frame->nested1 = NULL;
  7965.  }
  7966.  frame->state = -1;
  7967.  return dummy;
  7968. }
  7969.  
  7970.  
  7971. BOOL ARRAYBOOL_aelt_BOOL(ARRAYBOOL_aelt_BOOL_frame frame) {
  7972.  BOOL dummy;
  7973.  INT local0;
  7974.  switch (frame->state) {
  7975.   case 0: goto state0;
  7976.   case 1: goto state1;
  7977.   }
  7978.  state0:;
  7979.  if (!((!((frame->arg0==((ARRAYBOOL) NULL)))))) {
  7980.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:48:7\n");
  7981.   exit(16);
  7982.  }
  7983.  {
  7984.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  7985.   frame->nested1->state = 0;
  7986.   while (1) {
  7987.    frame->state = 1;
  7988.    if (frame->nested1->state == 0) {
  7989.     frame->noname6991 = (frame->arg0->asize);
  7990.     frame->nested1->arg0 = frame->noname6991;
  7991.    }
  7992.    local0 = INT_times_INT(frame->nested1);
  7993.    if (frame->nested1->state == -1) goto after_loop;
  7994.    return ARRAYBOOL_aget_I(frame->arg0, local0);
  7995.    state1:;
  7996.   }
  7997.  }
  7998.  after_loop: ;
  7999.  GC_free(frame->nested1); frame->nested1 = NULL;
  8000.  frame->state = -1;
  8001.  return dummy;
  8002. }
  8003.  
  8004.  
  8005. void ARRAYTP_set_TP(ARRAYTP_set_TP_frame frame) {
  8006.  switch (frame->state) {
  8007.   case 0: goto state0;
  8008.   case 1: goto state1;
  8009.   }
  8010.  state0:;
  8011.  if ((!((frame->arg0==((ARRAYTP) NULL))))) {
  8012.   {
  8013.    frame->nested1 = ALLOCATE(ARRAYTP_aset_TP_frame);
  8014.    frame->nested1->state = 0;
  8015.    while (1) {
  8016.     if (frame->nested1->state == 0) {
  8017.      frame->noname6993 = frame->arg0;
  8018.      frame->nested1->arg0 = frame->noname6993;
  8019.     }
  8020.     frame->nested1->arg1 = frame->arg1;
  8021.     ARRAYTP_aset_TP(frame->nested1);
  8022.     if (frame->nested1->state == -1) goto after_loop;
  8023.     0 /* No return value from iter call */;
  8024.     frame->state = 1;
  8025.     return;
  8026.     state1:;
  8027.    }
  8028.   }
  8029.   after_loop: ;
  8030.   GC_free(frame->nested1); frame->nested1 = NULL;
  8031.  }
  8032.  frame->state = -1;
  8033.  return;
  8034. }
  8035.  
  8036.  
  8037. void ARRAYTP_aset_TP(ARRAYTP_aset_TP_frame frame) {
  8038.  INT local0;
  8039.  INT local1;
  8040.  switch (frame->state) {
  8041.   case 0: goto state0;
  8042.   case 1: goto state1;
  8043.   }
  8044.  state0:;
  8045.  if (!((!((frame->arg0==((ARRAYTP) NULL)))))) {
  8046.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:77:7\n");
  8047.   exit(16);
  8048.  }
  8049.  {
  8050.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  8051.   frame->nested1->state = 0;
  8052.   while (1) {
  8053.    if (frame->nested1->state == 0) {
  8054.     frame->noname6995 = (frame->arg0->asize);
  8055.     frame->nested1->arg0 = frame->noname6995;
  8056.    }
  8057.    local0 = INT_times_INT(frame->nested1);
  8058.    if (frame->nested1->state == -1) goto after_loop;
  8059.    local1 = local0;
  8060.    ARRAYTP_aset_INT_TP(frame->arg0, local1, frame->arg1);
  8061.    frame->state = 1;
  8062.    return;
  8063.    state1:;
  8064.   }
  8065.  }
  8066.  after_loop: ;
  8067.  GC_free(frame->nested1); frame->nested1 = NULL;
  8068.  frame->state = -1;
  8069.  return;
  8070. }
  8071.  
  8072.  
  8073. void ARRAYBOOL_set_BOOL(ARRAYBOOL_set_BOOL_frame frame) {
  8074.  switch (frame->state) {
  8075.   case 0: goto state0;
  8076.   case 1: goto state1;
  8077.   }
  8078.  state0:;
  8079.  if ((!((frame->arg0==((ARRAYBOOL) NULL))))) {
  8080.   {
  8081.    frame->nested1 = ALLOCATE(ARRAYBOOL_aset_BOOL_frame);
  8082.    frame->nested1->state = 0;
  8083.    while (1) {
  8084.     if (frame->nested1->state == 0) {
  8085.      frame->noname6997 = frame->arg0;
  8086.      frame->nested1->arg0 = frame->noname6997;
  8087.     }
  8088.     frame->nested1->arg1 = frame->arg1;
  8089.     ARRAYBOOL_aset_BOOL(frame->nested1);
  8090.     if (frame->nested1->state == -1) goto after_loop;
  8091.     0 /* No return value from iter call */;
  8092.     frame->state = 1;
  8093.     return;
  8094.     state1:;
  8095.    }
  8096.   }
  8097.   after_loop: ;
  8098.   GC_free(frame->nested1); frame->nested1 = NULL;
  8099.  }
  8100.  frame->state = -1;
  8101.  return;
  8102. }
  8103.  
  8104.  
  8105. void ARRAYBOOL_aset_I(ARRAYBOOL self, INT ind_6999, BOOL val_7000) {
  8106.  BOOL local0;
  8107.  INT local1;
  8108.  INT local2;
  8109.  if ((!((self==((ARRAYBOOL) NULL))))) {
  8110.   local1 = 0;
  8111.   local2 = (self->asize);
  8112.   local0 = INT_is_bet_INT_I(ind_6999, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  8113.  } else {
  8114.   local0 = FALSE;
  8115.  }
  8116.  if (!(local0)) {
  8117.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  8118.   exit(16);
  8119.  }
  8120.  if (ind_6999<0||ind_6999>=self->asize) {
  8121.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  8122.   exit(16);
  8123.  }
  8124.  self->arr_part[ind_6999] = val_7000;
  8125. }
  8126.  
  8127.  
  8128. void ARRAYBOOL_aset_BOOL(ARRAYBOOL_aset_BOOL_frame frame) {
  8129.  INT local0;
  8130.  INT local1;
  8131.  switch (frame->state) {
  8132.   case 0: goto state0;
  8133.   case 1: goto state1;
  8134.   }
  8135.  state0:;
  8136.  if (!((!((frame->arg0==((ARRAYBOOL) NULL)))))) {
  8137.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:77:7\n");
  8138.   exit(16);
  8139.  }
  8140.  {
  8141.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  8142.   frame->nested1->state = 0;
  8143.   while (1) {
  8144.    if (frame->nested1->state == 0) {
  8145.     frame->noname7001 = (frame->arg0->asize);
  8146.     frame->nested1->arg0 = frame->noname7001;
  8147.    }
  8148.    local0 = INT_times_INT(frame->nested1);
  8149.    if (frame->nested1->state == -1) goto after_loop;
  8150.    local1 = local0;
  8151.    ARRAYBOOL_aset_I(frame->arg0, local1, frame->arg1);
  8152.    frame->state = 1;
  8153.    return;
  8154.    state1:;
  8155.   }
  8156.  }
  8157.  after_loop: ;
  8158.  GC_free(frame->nested1); frame->nested1 = NULL;
  8159.  frame->state = -1;
  8160.  return;
  8161. }
  8162.  
  8163.  
  8164. void ARRAYCALL_TP_set(ARRAYCALL_TP_set_frame frame) {
  8165.  switch (frame->state) {
  8166.   case 0: goto state0;
  8167.   case 1: goto state1;
  8168.   }
  8169.  state0:;
  8170.  if ((!((frame->arg0==((ARRAYCALL_TP) NULL))))) {
  8171.   {
  8172.    frame->nested1 = ALLOCATE(ARRAYCALL_TP_ase_7005_frame);
  8173.    frame->nested1->state = 0;
  8174.    while (1) {
  8175.     if (frame->nested1->state == 0) {
  8176.      frame->noname7003 = frame->arg0;
  8177.      frame->nested1->arg0 = frame->noname7003;
  8178.     }
  8179.     frame->nested1->arg1 = frame->arg1;
  8180.     ARRAYCALL_TP_ase_7005(frame->nested1);
  8181.     if (frame->nested1->state == -1) goto after_loop;
  8182.     0 /* No return value from iter call */;
  8183.     frame->state = 1;
  8184.     return;
  8185.     state1:;
  8186.    }
  8187.   }
  8188.   after_loop: ;
  8189.   GC_free(frame->nested1); frame->nested1 = NULL;
  8190.  }
  8191.  frame->state = -1;
  8192.  return;
  8193. }
  8194.  
  8195.  
  8196. void ARRAYCALL_TP_ase_7005(ARRAYCALL_TP_ase_7005_frame frame) {
  8197.  INT local0;
  8198.  INT local1;
  8199.  switch (frame->state) {
  8200.   case 0: goto state0;
  8201.   case 1: goto state1;
  8202.   }
  8203.  state0:;
  8204.  if (!((!((frame->arg0==((ARRAYCALL_TP) NULL)))))) {
  8205.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:77:7\n");
  8206.   exit(16);
  8207.  }
  8208.  {
  8209.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  8210.   frame->nested1->state = 0;
  8211.   while (1) {
  8212.    if (frame->nested1->state == 0) {
  8213.     frame->noname7006 = (frame->arg0->asize);
  8214.     frame->nested1->arg0 = frame->noname7006;
  8215.    }
  8216.    local0 = INT_times_INT(frame->nested1);
  8217.    if (frame->nested1->state == -1) goto after_loop;
  8218.    local1 = local0;
  8219.    ARRAYCALL_TP_ase(frame->arg0, local1, frame->arg1);
  8220.    frame->state = 1;
  8221.    return;
  8222.    state1:;
  8223.   }
  8224.  }
  8225.  after_loop: ;
  8226.  GC_free(frame->nested1); frame->nested1 = NULL;
  8227.  frame->state = -1;
  8228.  return;
  8229. }
  8230.  
  8231.  
  8232. BOOL FSETTP_CLASS_inv(FSETTP_CLASS self) {
  8233.  BOOL noname7008 = ((BOOL) 0);
  8234.  BOOL local0;
  8235.  INT local1;
  8236.  INT local2;
  8237.  if ((self==((FSETTP_CLASS) NULL))) {
  8238.   local0 = TRUE;
  8239.  } else {
  8240.   local1 = self->hsize;
  8241.   local2 = 0;
  8242.   local0 = INT_is_bet_INT_I(local1, local2, (self->asize));
  8243.  }
  8244.  return local0;
  8245. }
  8246.  
  8247.  
  8248. void FLISTAM_EXPR_ase(FLISTAM_EXPR_ase_frame frame) {
  8249.  INT local0;
  8250.  INT local1;
  8251.  switch (frame->state) {
  8252.   case 0: goto state0;
  8253.   case 1: goto state1;
  8254.   }
  8255.  state0:;
  8256.  if (!((!((frame->arg0==((FLISTAM_EXPR) NULL)))))) {
  8257.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:77:7\n");
  8258.   exit(16);
  8259.  }
  8260.  {
  8261.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  8262.   frame->nested1->state = 0;
  8263.   while (1) {
  8264.    if (frame->nested1->state == 0) {
  8265.     frame->noname7009 = (frame->arg0->asize);
  8266.     frame->nested1->arg0 = frame->noname7009;
  8267.    }
  8268.    local0 = INT_times_INT(frame->nested1);
  8269.    if (frame->nested1->state == -1) goto after_loop;
  8270.    local1 = local0;
  8271.    FLISTAM_EXPR_ase_5481(frame->arg0, local1, frame->arg1);
  8272.    frame->state = 1;
  8273.    return;
  8274.    state1:;
  8275.   }
  8276.  }
  8277.  after_loop: ;
  8278.  GC_free(frame->nested1); frame->nested1 = NULL;
  8279.  frame->state = -1;
  8280.  return;
  8281. }
  8282.  
  8283.  
  8284. AM_EXPR FLISTAM_EXPR_elt(FLISTAM_EXPR_elt_frame frame) {
  8285.  AM_EXPR dummy;
  8286.  AM_EXPR local0;
  8287.  switch (frame->state) {
  8288.   case 0: goto state0;
  8289.   case 1: goto state1;
  8290.   }
  8291.  state0:;
  8292.  if ((!((frame->arg0==((FLISTAM_EXPR) NULL))))) {
  8293.   {
  8294.    frame->nested1 = ALLOCATE(FLISTAM_EXPR_ael_frame);
  8295.    frame->nested1->state = 0;
  8296.    while (1) {
  8297.     frame->state = 1;
  8298.     if (frame->nested1->state == 0) {
  8299.      frame->noname7012 = frame->arg0;
  8300.      frame->noname7013 = 0;
  8301.      frame->noname7014 = frame->arg0->loc_17;
  8302.      frame->nested1->arg0 = frame->noname7012;
  8303.      frame->nested1->arg1 = frame->noname7013;
  8304.      frame->nested1->arg2 = frame->noname7014;
  8305.     }
  8306.     local0 = FLISTAM_EXPR_ael(frame->nested1);
  8307.     if (frame->nested1->state == -1) goto after_loop;
  8308.     return local0;
  8309.     state1:;
  8310.    }
  8311.   }
  8312.   after_loop: ;
  8313.   GC_free(frame->nested1); frame->nested1 = NULL;
  8314.  }
  8315.  if (!FLISTAM_EXPR_inv(frame->arg0)) {
  8316.   fprintf(stderr,"Failed invariant FLIST{$AM_EXPR}::invariant:BOOL ../Library/flist.sa:127:6\n");
  8317.   exit(16);
  8318.  }
  8319.  frame->state = -1;
  8320.  return dummy;
  8321. }
  8322.  
  8323.  
  8324. AM_EXPR FLISTAM_EXPR_ael(FLISTAM_EXPR_ael_frame frame) {
  8325.  AM_EXPR dummy;
  8326.  BOOL local0;
  8327.  BOOL local1;
  8328.  INT local2;
  8329.  INT local3;
  8330.  INT local4;
  8331.  INT local5;
  8332.  INT local6;
  8333.  INT local7;
  8334.  switch (frame->state) {
  8335.   case 0: goto state0;
  8336.   case 1: goto state1;
  8337.   }
  8338.  state0:;
  8339.  if ((!((frame->arg0==((FLISTAM_EXPR) NULL))))) {
  8340.   local2 = 0;
  8341.   local3 = (frame->arg0->asize);
  8342.   local1 = INT_is_bet_INT_I(frame->arg1, local2, (c_INT_minus_INT_INT_chk(local3,1)));
  8343.  } else {
  8344.   local1 = FALSE;
  8345.  }
  8346.  if (local1) {
  8347.   local4 = 0;
  8348.   local5 = (frame->arg0->asize);
  8349.   local0 = INT_is_bet_INT_I(frame->arg2, local4, (c_INT_minus_INT_INT_chk(local5,frame->arg1)));
  8350.  } else {
  8351.   local0 = FALSE;
  8352.  }
  8353.  if (!(local0)) {
  8354.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:58:7\n");
  8355.   exit(16);
  8356.  }
  8357.  {
  8358.   frame->nested1 = ALLOCATE(INT_upto_INT_INT_frame);
  8359.   frame->nested1->state = 0;
  8360.   while (1) {
  8361.    frame->state = 1;
  8362.    if (frame->nested1->state == 0) {
  8363.     frame->noname7017 = frame->arg1;
  8364.     local7 = (c_INT_plus_INT_INT_chk(frame->arg1,frame->arg2));
  8365.     frame->noname7018 = (c_INT_minus_INT_INT_chk(local7,1));
  8366.     frame->nested1->arg0 = frame->noname7017;
  8367.     frame->nested1->arg1 = frame->noname7018;
  8368.    }
  8369.    local6 = INT_upto_INT_INT(frame->nested1);
  8370.    if (frame->nested1->state == -1) goto after_loop;
  8371.    return FLISTAM_EXPR_age(frame->arg0, local6);
  8372.    state1:;
  8373.   }
  8374.  }
  8375.  after_loop: ;
  8376.  GC_free(frame->nested1); frame->nested1 = NULL;
  8377.  frame->state = -1;
  8378.  return dummy;
  8379. }
  8380.  
  8381.  
  8382. void INLINE_GLOBAL_RE_7020(INLINE_GLOBAL_READ self, INT inlined) {
  8383.  shared_INLINE_GL_6660 = inlined;
  8384. }
  8385.  
  8386.  
  8387. AM_EXPR INLINE_GLOBAL_RE_7021(INLINE_GLOBAL_READ self, AM_ROUT_CALL_EXPR call_7022, TRANS trans_7023) {
  8388.  AM_EXPR noname7024;
  8389.  INLINE_GLOBAL_RE_7020(self, (c_INT_plus_INT_INT_chk(shared_INLINE_GL_6660,1)));
  8390.  return ((AM_EXPR) self->age);
  8391. }
  8392.  
  8393.  
  8394. AM_EXPR INLINE_ROUT_inli(INLINE_ROUT self, AM_ROUT_CALL_EXPR call_7025, TRANS trans_7026) {
  8395.  AM_EXPR noname7027;
  8396.  return ((AM_EXPR) call_7025);
  8397. }
  8398.  
  8399.  
  8400. AM_EXPR INLINE_BUILTIN_i(INLINE_BUILTIN self, AM_ROUT_CALL_EXPR call_7028, TRANS trans_7029) {
  8401.  AM_EXPR noname7030;
  8402.  return ((AM_EXPR) call_7028);
  8403. }
  8404.  
  8405.  
  8406. AM_EXPR INLINE_VARR_WRIT(INLINE_VARR_WRITE self, AM_ROUT_CALL_EXPR call_7031, TRANS trans_7032) {
  8407.  AM_EXPR noname7033;
  8408.  return ((AM_EXPR) call_7031);
  8409. }
  8410.  
  8411.  
  8412. AM_EXPR INLINE_ARR_WRITE_7034(INLINE_ARR_WRITE self, AM_ROUT_CALL_EXPR call_7035, TRANS trans_7036) {
  8413.  AM_EXPR noname7037;
  8414.  return ((AM_EXPR) call_7035);
  8415. }
  8416.  
  8417.  
  8418. AM_INT_CONST AM_INT_CONST_cre_7038(AM_INT_CONST self, SFILE_ID source_7039) {
  8419.  AM_INT_CONST noname7040;
  8420.  AM_INT_CONST r_7041;
  8421.  AM_INT_CONST local0;
  8422.  local0 = ((AM_INT_CONST) sbi_alloc(sizeof(struct AM_INT_CONST_struct), AM_INT_CONST_tag));
  8423.  r_7041 = local0;
  8424.  r_7041->source_38 = source_7039;
  8425.  return r_7041;
  8426. }
  8427.  
  8428.  
  8429. void INLINE_INT_FOLD__7042(INLINE_INT_FOLD self, INT inlined) {
  8430.  shared_INLINE_IN_6661 = inlined;
  8431. }
  8432.  
  8433.  
  8434. AM_EXPR INLINE_INT_FOLD__7043(INLINE_INT_FOLD self, AM_ROUT_CALL_EXPR call_7044, TRANS trans_7045) {
  8435.  AM_EXPR noname7046;
  8436.  AM_EXPR arg1_7047;
  8437.  AM_EXPR arg2_7048;
  8438.  AM_INT_CONST r_7049;
  8439.  arg1_7047 = AM_ROUT_CALL_EXP_4316(call_7044, 0);
  8440.  arg2_7048 = AM_ROUT_CALL_EXP_4316(call_7044, 1);
  8441.  if (arg1_7047==NULL) {
  8442.  } else
  8443.  switch (arg1_7047->header.tag) {
  8444.   case AM_INT_CONST_tag:
  8445.    if (arg2_7048==NULL) {
  8446.    } else
  8447.    switch (arg2_7048->header.tag) {
  8448.     case AM_INT_CONST_tag:
  8449.      r_7049 = AM_INT_CONST_cre_7038(((AM_INT_CONST) NULL), ((AM_INT_CONST) arg1_7047)->source_38);
  8450.      r_7049->val_16 = INTI_plus_INTI_INTI(((AM_INT_CONST) arg1_7047)->val_16, ((AM_INT_CONST) arg2_7048)->val_16);
  8451.      r_7049->tp_at = ((AM_INT_CONST) arg1_7047)->tp_at;
  8452.      INLINE_INT_FOLD__7042(self, (c_INT_plus_INT_INT_chk(shared_INLINE_IN_6661,1)));
  8453.      return ((AM_EXPR) r_7049); break;
  8454.     default: ;
  8455.    } break;
  8456.   default: ;
  8457.  }
  8458.  return ((AM_EXPR) call_7044);
  8459. }
  8460.  
  8461.  
  8462. AM_EXPR INLINE_VATTR_WRI(INLINE_VATTR_WRITE self, AM_ROUT_CALL_EXPR call_7050, TRANS trans_7051) {
  8463.  AM_EXPR noname7052;
  8464.  return ((AM_EXPR) call_7050);
  8465. }
  8466.  
  8467.  
  8468. AM_EXPR INLINE_ARR_READ_(INLINE_ARR_READ self, AM_ROUT_CALL_EXPR call_7053, TRANS trans_7054) {
  8469.  AM_EXPR noname7055;
  8470.  return ((AM_EXPR) call_7053);
  8471. }
  8472.  
  8473.  
  8474. AM_EXPR INLINE_VARR_READ_7056(INLINE_VARR_READ self, AM_ROUT_CALL_EXPR call_7057, TRANS trans_7058) {
  8475.  AM_EXPR noname7059;
  8476.  return ((AM_EXPR) call_7057);
  8477. }
  8478.  
  8479.  
  8480. AM_EXPR INLINE_VATTR_REA(INLINE_VATTR_READ self, AM_ROUT_CALL_EXPR call_7060, TRANS trans_7061) {
  8481.  AM_EXPR noname7062;
  8482.  return ((AM_EXPR) call_7060);
  8483. }
  8484.  
  8485.  
  8486. void INLINE_ATTR_WRIT_7063(INLINE_ATTR_WRITE self, INT inlined) {
  8487.  shared_INLINE_AT_6659 = inlined;
  8488. }
  8489.  
  8490.  
  8491. AM_STMT_EXPR AM_STMT_EXPR_cre(AM_STMT_EXPR self, SFILE_ID source_7064) {
  8492.  AM_STMT_EXPR noname7065;
  8493.  AM_STMT_EXPR r_7066;
  8494.  AM_STMT_EXPR local0;
  8495.  local0 = ((AM_STMT_EXPR) sbi_alloc(sizeof(struct AM_STMT_EXPR_struct), AM_STMT_EXPR_tag));
  8496.  r_7066 = local0;
  8497.  r_7066->source_38 = source_7064;
  8498.  return r_7066;
  8499. }
  8500.  
  8501.  
  8502. AM_EXPR INLINE_ATTR_WRIT_7067(INLINE_ATTR_WRITE self, AM_ROUT_CALL_EXPR call_7068, TRANS trans_7069) {
  8503.  AM_EXPR noname7070;
  8504.  AM_ATTR_EXPR a_7071;
  8505.  AM_ASSIGN_STMT as_7072;
  8506.  AM_STMT_EXPR r_7073;
  8507.  INLINE_ATTR_WRIT_7063(self, (c_INT_plus_INT_INT_chk(shared_INLINE_AT_6659,1)));
  8508.  a_7071 = AM_ATTR_EXPR_cre(((AM_ATTR_EXPR) NULL), call_7068->source_38);
  8509.  a_7071->ob = AM_ROUT_CALL_EXP_4316(call_7068, 0);
  8510.  a_7071->self_tp = self->self_tp;
  8511.  a_7071->at = self->at;
  8512.  a_7071->tp_at = self->tp_at;
  8513.  as_7072 = AM_ASSIGN_STMT_c(((AM_ASSIGN_STMT) NULL), call_7068->source_38);
  8514.  as_7072->dest = ((AM_EXPR) a_7071);
  8515.  as_7072->src_42 = AM_ROUT_CALL_EXP_4316(call_7068, 1);
  8516.  r_7073 = AM_STMT_EXPR_cre(((AM_STMT_EXPR) NULL), call_7068->source_38);
  8517.  r_7073->stmts = ((AM_STMT) as_7072);
  8518.  return ((AM_EXPR) r_7073);
  8519. }
  8520.  
  8521.  
  8522. void INLINE_ATTR_READ_7074(INLINE_ATTR_READ self, INT inlined) {
  8523.  shared_INLINE_AT_6658 = inlined;
  8524. }
  8525.  
  8526.  
  8527. AM_EXPR INLINE_ATTR_READ_7075(INLINE_ATTR_READ self, AM_ROUT_CALL_EXPR call_7076, TRANS trans_7077) {
  8528.  AM_EXPR noname7078;
  8529.  AM_ATTR_EXPR r_7079;
  8530.  INLINE_ATTR_READ_7074(self, (c_INT_plus_INT_INT_chk(shared_INLINE_AT_6658,1)));
  8531.  r_7079 = AM_ATTR_EXPR_cre(((AM_ATTR_EXPR) NULL), call_7076->source_38);
  8532.  r_7079->ob = AM_ROUT_CALL_EXP_4316(call_7076, 0);
  8533.  r_7079->self_tp = self->self_tp;
  8534.  r_7079->at = self->at;
  8535.  r_7079->tp_at = self->tp_at;
  8536.  return ((AM_EXPR) r_7079);
  8537. }
  8538.  
  8539.  
  8540. TP AM_ROUT_CALL_EXP_7080(AM_ROUT_CALL_EXPR self) {
  8541.  TP noname7081;
  8542.  return self->fun->ret;
  8543. }
  8544.  
  8545.  
  8546. TP AM_BND_ITER_CALL_7082(AM_BND_ITER_CALL self) {
  8547.  TP noname7083;
  8548.  TP bitp;
  8549.  AM_EXPR local0;
  8550.  local0 = self->bi;
  8551.  bitp = (*AM_EXPR_tp_TP[local0->header.tag+AM_EXPR_tp_TP_offset])(local0);
  8552.  if (bitp==NULL) {
  8553.  } else
  8554.  switch (bitp->header.tag) {
  8555.   case TP_ITER_tag:
  8556.    return ((TP_ITER) bitp)->ret; break;
  8557.   default: ;
  8558.    fprintf(stderr,"No applicable type in typecase ./am.sa:649:14\n");
  8559.    exit(16);
  8560.  }
  8561.  return ((TP) NULL);
  8562. }
  8563.  
  8564.  
  8565. TP AM_BND_ROUT_CALL_7084(AM_BND_ROUT_CALL self) {
  8566.  TP noname7085;
  8567.  TP brtp;
  8568.  AM_EXPR local0;
  8569.  local0 = self->br;
  8570.  brtp = (*AM_EXPR_tp_TP[local0->header.tag+AM_EXPR_tp_TP_offset])(local0);
  8571.  if (brtp==NULL) {
  8572.  } else
  8573.  switch (brtp->header.tag) {
  8574.   case TP_ROUT_tag:
  8575.    return ((TP_ROUT) brtp)->ret; break;
  8576.   default: ;
  8577.    fprintf(stderr,"No applicable type in typecase ./am.sa:630:14\n");
  8578.    exit(16);
  8579.  }
  8580.  return ((TP) NULL);
  8581. }
  8582.  
  8583.  
  8584. BOOL FLISTAM_BND_ITER_5434(FLISTAM_BND_ITER self) {
  8585.  BOOL noname7086 = ((BOOL) 0);
  8586.  BOOL local0;
  8587.  INT local1;
  8588.  INT local2;
  8589.  INT local3;
  8590.  if ((self==((FLISTAM_BND_ITER) NULL))) {
  8591.   return TRUE;
  8592.  }
  8593.  local1 = self->loc_17;
  8594.  local2 = 0;
  8595.  if (INT_is_bet_INT_I(local1, local2, (self->asize))) {
  8596.   local3 = (self->asize);
  8597.   local0 = (local3>0);
  8598.  } else {
  8599.   local0 = FALSE;
  8600.  }
  8601.  return local0;
  8602. }
  8603.  
  8604.  
  8605. void FLISTAM_BND_ITER_5440(FLISTAM_BND_ITER_5440_frame frame) {
  8606.  INT local0;
  8607.  INT local1;
  8608.  switch (frame->state) {
  8609.   case 0: goto state0;
  8610.   case 1: goto state1;
  8611.   }
  8612.  state0:;
  8613.  if (!((!((frame->arg0==((FLISTAM_BND_ITER) NULL)))))) {
  8614.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:77:7\n");
  8615.   exit(16);
  8616.  }
  8617.  {
  8618.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  8619.   frame->nested1->state = 0;
  8620.   while (1) {
  8621.    if (frame->nested1->state == 0) {
  8622.     frame->noname7087 = (frame->arg0->asize);
  8623.     frame->nested1->arg0 = frame->noname7087;
  8624.    }
  8625.    local0 = INT_times_INT(frame->nested1);
  8626.    if (frame->nested1->state == -1) goto after_loop;
  8627.    local1 = local0;
  8628.    FLISTAM_BND_ITER_5446(frame->arg0, local1, frame->arg1);
  8629.    frame->state = 1;
  8630.    return;
  8631.    state1:;
  8632.   }
  8633.  }
  8634.  after_loop: ;
  8635.  GC_free(frame->nested1); frame->nested1 = NULL;
  8636.  frame->state = -1;
  8637.  return;
  8638. }
  8639.  
  8640.  
  8641. AM_BND_ITER_CALL FLISTAM_BND_ITER_5456(FLISTAM_BND_ITER_5456_frame frame) {
  8642.  AM_BND_ITER_CALL dummy;
  8643.  AM_BND_ITER_CALL local0;
  8644.  switch (frame->state) {
  8645.   case 0: goto state0;
  8646.   case 1: goto state1;
  8647.   }
  8648.  state0:;
  8649.  if ((!((frame->arg0==((FLISTAM_BND_ITER) NULL))))) {
  8650.   {
  8651.    frame->nested1 = ALLOCATE(FLISTAM_BND_ITER_7094_frame);
  8652.    frame->nested1->state = 0;
  8653.    while (1) {
  8654.     frame->state = 1;
  8655.     if (frame->nested1->state == 0) {
  8656.      frame->noname7090 = frame->arg0;
  8657.      frame->noname7091 = 0;
  8658.      frame->noname7092 = frame->arg0->loc_17;
  8659.      frame->nested1->arg0 = frame->noname7090;
  8660.      frame->nested1->arg1 = frame->noname7091;
  8661.      frame->nested1->arg2 = frame->noname7092;
  8662.     }
  8663.     local0 = FLISTAM_BND_ITER_7094(frame->nested1);
  8664.     if (frame->nested1->state == -1) goto after_loop;
  8665.     return local0;
  8666.     state1:;
  8667.    }
  8668.   }
  8669.   after_loop: ;
  8670.   GC_free(frame->nested1); frame->nested1 = NULL;
  8671.  }
  8672.  if (!FLISTAM_BND_ITER_5434(frame->arg0)) {
  8673.   fprintf(stderr,"Failed invariant FLIST{AM_BND_ITER_CALL_EXPR}::invariant:BOOL ../Library/flist.sa:127:6\n");
  8674.   exit(16);
  8675.  }
  8676.  frame->state = -1;
  8677.  return dummy;
  8678. }
  8679.  
  8680.  
  8681. AM_BND_ITER_CALL FLISTAM_BND_ITER_7095(FLISTAM_BND_ITER self, INT ind_7096) {
  8682.  AM_BND_ITER_CALL noname7097;
  8683.  BOOL local0;
  8684.  INT local1;
  8685.  INT local2;
  8686.  if ((!((self==((FLISTAM_BND_ITER) NULL))))) {
  8687.   local1 = 0;
  8688.   local2 = (self->asize);
  8689.   local0 = INT_is_bet_INT_I(ind_7096, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  8690.  } else {
  8691.   local0 = FALSE;
  8692.  }
  8693.  if (!(local0)) {
  8694.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  8695.   exit(16);
  8696.  }
  8697.  if (ind_7096<0||ind_7096>=self->asize) {
  8698.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  8699.   exit(16);
  8700.  }
  8701.  return self->arr_part[ind_7096];
  8702. }
  8703.  
  8704.  
  8705. AM_BND_ITER_CALL FLISTAM_BND_ITER_7098(FLISTAM_BND_ITER self, INT ind_7099) {
  8706.  AM_BND_ITER_CALL noname7100;
  8707.  BOOL local0;
  8708.  INT local1;
  8709.  if ((!((self==((FLISTAM_BND_ITER) NULL))))) {
  8710.   local1 = 0;
  8711.   local0 = INT_is_bet_INT_I(ind_7099, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  8712.  } else {
  8713.   local0 = FALSE;
  8714.  }
  8715.  if (!(local0)) {
  8716.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:68:7\n");
  8717.   exit(16);
  8718.  }
  8719.  return FLISTAM_BND_ITER_7095(self, ind_7099);
  8720.  if (!FLISTAM_BND_ITER_5434(self)) {
  8721.   fprintf(stderr,"Failed invariant FLIST{AM_BND_ITER_CALL_EXPR}::invariant:BOOL ../Library/flist.sa:68:7\n");
  8722.   exit(16);
  8723.  }
  8724. }
  8725.  
  8726.  
  8727. AM_BND_ITER_CALL FLISTAM_BND_ITER_7094(FLISTAM_BND_ITER_7094_frame frame) {
  8728.  AM_BND_ITER_CALL dummy;
  8729.  BOOL local0;
  8730.  BOOL local1;
  8731.  INT local2;
  8732.  INT local3;
  8733.  INT local4;
  8734.  INT local5;
  8735.  INT local6;
  8736.  INT local7;
  8737.  switch (frame->state) {
  8738.   case 0: goto state0;
  8739.   case 1: goto state1;
  8740.   }
  8741.  state0:;
  8742.  if ((!((frame->arg0==((FLISTAM_BND_ITER) NULL))))) {
  8743.   local2 = 0;
  8744.   local3 = (frame->arg0->asize);
  8745.   local1 = INT_is_bet_INT_I(frame->arg1, local2, (c_INT_minus_INT_INT_chk(local3,1)));
  8746.  } else {
  8747.   local1 = FALSE;
  8748.  }
  8749.  if (local1) {
  8750.   local4 = 0;
  8751.   local5 = (frame->arg0->asize);
  8752.   local0 = INT_is_bet_INT_I(frame->arg2, local4, (c_INT_minus_INT_INT_chk(local5,frame->arg1)));
  8753.  } else {
  8754.   local0 = FALSE;
  8755.  }
  8756.  if (!(local0)) {
  8757.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:58:7\n");
  8758.   exit(16);
  8759.  }
  8760.  {
  8761.   frame->nested1 = ALLOCATE(INT_upto_INT_INT_frame);
  8762.   frame->nested1->state = 0;
  8763.   while (1) {
  8764.    frame->state = 1;
  8765.    if (frame->nested1->state == 0) {
  8766.     frame->noname7102 = frame->arg1;
  8767.     local7 = (c_INT_plus_INT_INT_chk(frame->arg1,frame->arg2));
  8768.     frame->noname7103 = (c_INT_minus_INT_INT_chk(local7,1));
  8769.     frame->nested1->arg0 = frame->noname7102;
  8770.     frame->nested1->arg1 = frame->noname7103;
  8771.    }
  8772.    local6 = INT_upto_INT_INT(frame->nested1);
  8773.    if (frame->nested1->state == -1) goto after_loop;
  8774.    return FLISTAM_BND_ITER_7098(frame->arg0, local6);
  8775.    state1:;
  8776.   }
  8777.  }
  8778.  after_loop: ;
  8779.  GC_free(frame->nested1); frame->nested1 = NULL;
  8780.  frame->state = -1;
  8781.  return dummy;
  8782. }
  8783.  
  8784.  
  8785. void AM_EXPR_STMT_app(AM_EXPR_STMT self, AM_STMT l) {
  8786.  AM_STMT last_7105;
  8787.  AM_STMT local0;
  8788.  AM_STMT local1;
  8789.  AM_STMT local2;
  8790.  if (!((!((self==((AM_EXPR_STMT) NULL)))))) {
  8791.   fprintf(stderr,"Violation of precondition ../Library/next.sa:50:9\n");
  8792.   exit(16);
  8793.  }
  8794.  if ((self->next_8==((AM_STMT) NULL))) {
  8795.   self->next_8 = l;
  8796.   return;
  8797.  }
  8798.  last_7105 = self->next_8;
  8799.  while (1) {
  8800.   local0 = last_7105;
  8801.   if (((*AM_STMT_next_AM_STMT[local0->header.tag+AM_STMT_next_AM_STMT_offset])(local0)==((AM_STMT) NULL))) {
  8802.    goto after_loop;
  8803.   }
  8804.   local1 = last_7105;
  8805.   last_7105 = (*AM_STMT_next_AM_STMT[local1->header.tag+AM_STMT_next_AM_STMT_offset])(local1);
  8806.  }
  8807.  after_loop: ;
  8808.  local2 = last_7105;
  8809.  (*AM_STMT_next_AM__7107[local2->header.tag+AM_STMT_next_AM__7107_offset])(local2, l);
  8810. }
  8811.  
  8812.  
  8813. void AM_LOOP_STMT_app(AM_LOOP_STMT self, AM_STMT l) {
  8814.  AM_STMT last_7108;
  8815.  AM_STMT local0;
  8816.  AM_STMT local1;
  8817.  AM_STMT local2;
  8818.  if (!((!((self==((AM_LOOP_STMT) NULL)))))) {
  8819.   fprintf(stderr,"Violation of precondition ../Library/next.sa:50:9\n");
  8820.   exit(16);
  8821.  }
  8822.  if ((self->next_8==((AM_STMT) NULL))) {
  8823.   self->next_8 = l;
  8824.   return;
  8825.  }
  8826.  last_7108 = self->next_8;
  8827.  while (1) {
  8828.   local0 = last_7108;
  8829.   if (((*AM_STMT_next_AM_STMT[local0->header.tag+AM_STMT_next_AM_STMT_offset])(local0)==((AM_STMT) NULL))) {
  8830.    goto after_loop;
  8831.   }
  8832.   local1 = last_7108;
  8833.   last_7108 = (*AM_STMT_next_AM_STMT[local1->header.tag+AM_STMT_next_AM_STMT_offset])(local1);
  8834.  }
  8835.  after_loop: ;
  8836.  local2 = last_7108;
  8837.  (*AM_STMT_next_AM__7107[local2->header.tag+AM_STMT_next_AM__7107_offset])(local2, l);
  8838. }
  8839.  
  8840.  
  8841. void AM_BREAK_STMT_ap(AM_BREAK_STMT self, AM_STMT l) {
  8842.  AM_STMT last_7110;
  8843.  AM_STMT local0;
  8844.  AM_STMT local1;
  8845.  AM_STMT local2;
  8846.  if (!((!((self==((AM_BREAK_STMT) NULL)))))) {
  8847.   fprintf(stderr,"Violation of precondition ../Library/next.sa:50:9\n");
  8848.   exit(16);
  8849.  }
  8850.  if ((self->next_8==((AM_STMT) NULL))) {
  8851.   self->next_8 = l;
  8852.   return;
  8853.  }
  8854.  last_7110 = self->next_8;
  8855.  while (1) {
  8856.   local0 = last_7110;
  8857.   if (((*AM_STMT_next_AM_STMT[local0->header.tag+AM_STMT_next_AM_STMT_offset])(local0)==((AM_STMT) NULL))) {
  8858.    goto after_loop;
  8859.   }
  8860.   local1 = last_7110;
  8861.   last_7110 = (*AM_STMT_next_AM_STMT[local1->header.tag+AM_STMT_next_AM_STMT_offset])(local1);
  8862.  }
  8863.  after_loop: ;
  8864.  local2 = last_7110;
  8865.  (*AM_STMT_next_AM__7107[local2->header.tag+AM_STMT_next_AM__7107_offset])(local2, l);
  8866. }
  8867.  
  8868.  
  8869. void AM_YIELD_STMT_ap(AM_YIELD_STMT self, AM_STMT l) {
  8870.  AM_STMT last_7112;
  8871.  AM_STMT local0;
  8872.  AM_STMT local1;
  8873.  AM_STMT local2;
  8874.  if (!((!((self==((AM_YIELD_STMT) NULL)))))) {
  8875.   fprintf(stderr,"Violation of precondition ../Library/next.sa:50:9\n");
  8876.   exit(16);
  8877.  }
  8878.  if ((self->next_8==((AM_STMT) NULL))) {
  8879.   self->next_8 = l;
  8880.   return;
  8881.  }
  8882.  last_7112 = self->next_8;
  8883.  while (1) {
  8884.   local0 = last_7112;
  8885.   if (((*AM_STMT_next_AM_STMT[local0->header.tag+AM_STMT_next_AM_STMT_offset])(local0)==((AM_STMT) NULL))) {
  8886.    goto after_loop;
  8887.   }
  8888.   local1 = last_7112;
  8889.   last_7112 = (*AM_STMT_next_AM_STMT[local1->header.tag+AM_STMT_next_AM_STMT_offset])(local1);
  8890.  }
  8891.  after_loop: ;
  8892.  local2 = last_7112;
  8893.  (*AM_STMT_next_AM__7107[local2->header.tag+AM_STMT_next_AM__7107_offset])(local2, l);
  8894. }
  8895.  
  8896.  
  8897. void AM_ASSERT_STMT_a(AM_ASSERT_STMT self, AM_STMT l) {
  8898.  AM_STMT last_7114;
  8899.  AM_STMT local0;
  8900.  AM_STMT local1;
  8901.  AM_STMT local2;
  8902.  if (!((!((self==((AM_ASSERT_STMT) NULL)))))) {
  8903.   fprintf(stderr,"Violation of precondition ../Library/next.sa:50:9\n");
  8904.   exit(16);
  8905.  }
  8906.  if ((self->next_8==((AM_STMT) NULL))) {
  8907.   self->next_8 = l;
  8908.   return;
  8909.  }
  8910.  last_7114 = self->next_8;
  8911.  while (1) {
  8912.   local0 = last_7114;
  8913.   if (((*AM_STMT_next_AM_STMT[local0->header.tag+AM_STMT_next_AM_STMT_offset])(local0)==((AM_STMT) NULL))) {
  8914.    goto after_loop;
  8915.   }
  8916.   local1 = last_7114;
  8917.   last_7114 = (*AM_STMT_next_AM_STMT[local1->header.tag+AM_STMT_next_AM_STMT_offset])(local1);
  8918.  }
  8919.  after_loop: ;
  8920.  local2 = last_7114;
  8921.  (*AM_STMT_next_AM__7107[local2->header.tag+AM_STMT_next_AM__7107_offset])(local2, l);
  8922. }
  8923.  
  8924.  
  8925. void AM_POST_STMT_app(AM_POST_STMT self, AM_STMT l) {
  8926.  AM_STMT last_7116;
  8927.  AM_STMT local0;
  8928.  AM_STMT local1;
  8929.  AM_STMT local2;
  8930.  if (!((!((self==((AM_POST_STMT) NULL)))))) {
  8931.   fprintf(stderr,"Violation of precondition ../Library/next.sa:50:9\n");
  8932.   exit(16);
  8933.  }
  8934.  if ((self->next_8==((AM_STMT) NULL))) {
  8935.   self->next_8 = l;
  8936.   return;
  8937.  }
  8938.  last_7116 = self->next_8;
  8939.  while (1) {
  8940.   local0 = last_7116;
  8941.   if (((*AM_STMT_next_AM_STMT[local0->header.tag+AM_STMT_next_AM_STMT_offset])(local0)==((AM_STMT) NULL))) {
  8942.    goto after_loop;
  8943.   }
  8944.   local1 = last_7116;
  8945.   last_7116 = (*AM_STMT_next_AM_STMT[local1->header.tag+AM_STMT_next_AM_STMT_offset])(local1);
  8946.  }
  8947.  after_loop: ;
  8948.  local2 = last_7116;
  8949.  (*AM_STMT_next_AM__7107[local2->header.tag+AM_STMT_next_AM__7107_offset])(local2, l);
  8950. }
  8951.  
  8952.  
  8953. void AM_RETURN_STMT_a(AM_RETURN_STMT self, AM_STMT l) {
  8954.  AM_STMT last_7118;
  8955.  AM_STMT local0;
  8956.  AM_STMT local1;
  8957.  AM_STMT local2;
  8958.  if (!((!((self==((AM_RETURN_STMT) NULL)))))) {
  8959.   fprintf(stderr,"Violation of precondition ../Library/next.sa:50:9\n");
  8960.   exit(16);
  8961.  }
  8962.  if ((self->next_8==((AM_STMT) NULL))) {
  8963.   self->next_8 = l;
  8964.   return;
  8965.  }
  8966.  last_7118 = self->next_8;
  8967.  while (1) {
  8968.   local0 = last_7118;
  8969.   if (((*AM_STMT_next_AM_STMT[local0->header.tag+AM_STMT_next_AM_STMT_offset])(local0)==((AM_STMT) NULL))) {
  8970.    goto after_loop;
  8971.   }
  8972.   local1 = last_7118;
  8973.   last_7118 = (*AM_STMT_next_AM_STMT[local1->header.tag+AM_STMT_next_AM_STMT_offset])(local1);
  8974.  }
  8975.  after_loop: ;
  8976.  local2 = last_7118;
  8977.  (*AM_STMT_next_AM__7107[local2->header.tag+AM_STMT_next_AM__7107_offset])(local2, l);
  8978. }
  8979.  
  8980.  
  8981. void AM_TYPECASE_STMT_7120(AM_TYPECASE_STMT self, AM_STMT l) {
  8982.  AM_STMT last_7121;
  8983.  AM_STMT local0;
  8984.  AM_STMT local1;
  8985.  AM_STMT local2;
  8986.  if (!((!((self==((AM_TYPECASE_STMT) NULL)))))) {
  8987.   fprintf(stderr,"Violation of precondition ../Library/next.sa:50:9\n");
  8988.   exit(16);
  8989.  }
  8990.  if ((self->next_8==((AM_STMT) NULL))) {
  8991.   self->next_8 = l;
  8992.   return;
  8993.  }
  8994.  last_7121 = self->next_8;
  8995.  while (1) {
  8996.   local0 = last_7121;
  8997.   if (((*AM_STMT_next_AM_STMT[local0->header.tag+AM_STMT_next_AM_STMT_offset])(local0)==((AM_STMT) NULL))) {
  8998.    goto after_loop;
  8999.   }
  9000.   local1 = last_7121;
  9001.   last_7121 = (*AM_STMT_next_AM_STMT[local1->header.tag+AM_STMT_next_AM_STMT_offset])(local1);
  9002.  }
  9003.  after_loop: ;
  9004.  local2 = last_7121;
  9005.  (*AM_STMT_next_AM__7107[local2->header.tag+AM_STMT_next_AM__7107_offset])(local2, l);
  9006. }
  9007.  
  9008.  
  9009. void AM_PRE_STMT_appe(AM_PRE_STMT self, AM_STMT l) {
  9010.  AM_STMT last_7123;
  9011.  AM_STMT local0;
  9012.  AM_STMT local1;
  9013.  AM_STMT local2;
  9014.  if (!((!((self==((AM_PRE_STMT) NULL)))))) {
  9015.   fprintf(stderr,"Violation of precondition ../Library/next.sa:50:9\n");
  9016.   exit(16);
  9017.  }
  9018.  if ((self->next_8==((AM_STMT) NULL))) {
  9019.   self->next_8 = l;
  9020.   return;
  9021.  }
  9022.  last_7123 = self->next_8;
  9023.  while (1) {
  9024.   local0 = last_7123;
  9025.   if (((*AM_STMT_next_AM_STMT[local0->header.tag+AM_STMT_next_AM_STMT_offset])(local0)==((AM_STMT) NULL))) {
  9026.    goto after_loop;
  9027.   }
  9028.   local1 = last_7123;
  9029.   last_7123 = (*AM_STMT_next_AM_STMT[local1->header.tag+AM_STMT_next_AM_STMT_offset])(local1);
  9030.  }
  9031.  after_loop: ;
  9032.  local2 = last_7123;
  9033.  (*AM_STMT_next_AM__7107[local2->header.tag+AM_STMT_next_AM__7107_offset])(local2, l);
  9034. }
  9035.  
  9036.  
  9037. void AM_RAISE_STMT_ap(AM_RAISE_STMT self, AM_STMT l) {
  9038.  AM_STMT last_7125;
  9039.  AM_STMT local0;
  9040.  AM_STMT local1;
  9041.  AM_STMT local2;
  9042.  if (!((!((self==((AM_RAISE_STMT) NULL)))))) {
  9043.   fprintf(stderr,"Violation of precondition ../Library/next.sa:50:9\n");
  9044.   exit(16);
  9045.  }
  9046.  if ((self->next_8==((AM_STMT) NULL))) {
  9047.   self->next_8 = l;
  9048.   return;
  9049.  }
  9050.  last_7125 = self->next_8;
  9051.  while (1) {
  9052.   local0 = last_7125;
  9053.   if (((*AM_STMT_next_AM_STMT[local0->header.tag+AM_STMT_next_AM_STMT_offset])(local0)==((AM_STMT) NULL))) {
  9054.    goto after_loop;
  9055.   }
  9056.   local1 = last_7125;
  9057.   last_7125 = (*AM_STMT_next_AM_STMT[local1->header.tag+AM_STMT_next_AM_STMT_offset])(local1);
  9058.  }
  9059.  after_loop: ;
  9060.  local2 = last_7125;
  9061.  (*AM_STMT_next_AM__7107[local2->header.tag+AM_STMT_next_AM__7107_offset])(local2, l);
  9062. }
  9063.  
  9064.  
  9065. void AM_INVARIANT_STM_7127(AM_INVARIANT_STMT self, AM_STMT l) {
  9066.  AM_STMT last_7128;
  9067.  AM_STMT local0;
  9068.  AM_STMT local1;
  9069.  AM_STMT local2;
  9070.  if (!((!((self==((AM_INVARIANT_STMT) NULL)))))) {
  9071.   fprintf(stderr,"Violation of precondition ../Library/next.sa:50:9\n");
  9072.   exit(16);
  9073.  }
  9074.  if ((self->next_8==((AM_STMT) NULL))) {
  9075.   self->next_8 = l;
  9076.   return;
  9077.  }
  9078.  last_7128 = self->next_8;
  9079.  while (1) {
  9080.   local0 = last_7128;
  9081.   if (((*AM_STMT_next_AM_STMT[local0->header.tag+AM_STMT_next_AM_STMT_offset])(local0)==((AM_STMT) NULL))) {
  9082.    goto after_loop;
  9083.   }
  9084.   local1 = last_7128;
  9085.   last_7128 = (*AM_STMT_next_AM_STMT[local1->header.tag+AM_STMT_next_AM_STMT_offset])(local1);
  9086.  }
  9087.  after_loop: ;
  9088.  local2 = last_7128;
  9089.  (*AM_STMT_next_AM__7107[local2->header.tag+AM_STMT_next_AM__7107_offset])(local2, l);
  9090. }
  9091.  
  9092.  
  9093. void AM_CASE_STMT_app(AM_CASE_STMT self, AM_STMT l) {
  9094.  AM_STMT last_7130;
  9095.  AM_STMT local0;
  9096.  AM_STMT local1;
  9097.  AM_STMT local2;
  9098.  if (!((!((self==((AM_CASE_STMT) NULL)))))) {
  9099.   fprintf(stderr,"Violation of precondition ../Library/next.sa:50:9\n");
  9100.   exit(16);
  9101.  }
  9102.  if ((self->next_8==((AM_STMT) NULL))) {
  9103.   self->next_8 = l;
  9104.   return;
  9105.  }
  9106.  last_7130 = self->next_8;
  9107.  while (1) {
  9108.   local0 = last_7130;
  9109.   if (((*AM_STMT_next_AM_STMT[local0->header.tag+AM_STMT_next_AM_STMT_offset])(local0)==((AM_STMT) NULL))) {
  9110.    goto after_loop;
  9111.   }
  9112.   local1 = last_7130;
  9113.   last_7130 = (*AM_STMT_next_AM_STMT[local1->header.tag+AM_STMT_next_AM_STMT_offset])(local1);
  9114.  }
  9115.  after_loop: ;
  9116.  local2 = last_7130;
  9117.  (*AM_STMT_next_AM__7107[local2->header.tag+AM_STMT_next_AM__7107_offset])(local2, l);
  9118. }
  9119.  
  9120.  
  9121. void AM_IF_STMT_appen(AM_IF_STMT self, AM_STMT l) {
  9122.  AM_STMT last_7132;
  9123.  AM_STMT local0;
  9124.  AM_STMT local1;
  9125.  AM_STMT local2;
  9126.  if (!((!((self==((AM_IF_STMT) NULL)))))) {
  9127.   fprintf(stderr,"Violation of precondition ../Library/next.sa:50:9\n");
  9128.   exit(16);
  9129.  }
  9130.  if ((self->next_8==((AM_STMT) NULL))) {
  9131.   self->next_8 = l;
  9132.   return;
  9133.  }
  9134.  last_7132 = self->next_8;
  9135.  while (1) {
  9136.   local0 = last_7132;
  9137.   if (((*AM_STMT_next_AM_STMT[local0->header.tag+AM_STMT_next_AM_STMT_offset])(local0)==((AM_STMT) NULL))) {
  9138.    goto after_loop;
  9139.   }
  9140.   local1 = last_7132;
  9141.   last_7132 = (*AM_STMT_next_AM_STMT[local1->header.tag+AM_STMT_next_AM_STMT_offset])(local1);
  9142.  }
  9143.  after_loop: ;
  9144.  local2 = last_7132;
  9145.  (*AM_STMT_next_AM__7107[local2->header.tag+AM_STMT_next_AM__7107_offset])(local2, l);
  9146. }
  9147.  
  9148.  
  9149. void AM_PROTECT_STMT__7134(AM_PROTECT_STMT self, AM_STMT l) {
  9150.  AM_STMT last_7135;
  9151.  AM_STMT local0;
  9152.  AM_STMT local1;
  9153.  AM_STMT local2;
  9154.  if (!((!((self==((AM_PROTECT_STMT) NULL)))))) {
  9155.   fprintf(stderr,"Violation of precondition ../Library/next.sa:50:9\n");
  9156.   exit(16);
  9157.  }
  9158.  if ((self->next_8==((AM_STMT) NULL))) {
  9159.   self->next_8 = l;
  9160.   return;
  9161.  }
  9162.  last_7135 = self->next_8;
  9163.  while (1) {
  9164.   local0 = last_7135;
  9165.   if (((*AM_STMT_next_AM_STMT[local0->header.tag+AM_STMT_next_AM_STMT_offset])(local0)==((AM_STMT) NULL))) {
  9166.    goto after_loop;
  9167.   }
  9168.   local1 = last_7135;
  9169.   last_7135 = (*AM_STMT_next_AM_STMT[local1->header.tag+AM_STMT_next_AM_STMT_offset])(local1);
  9170.  }
  9171.  after_loop: ;
  9172.  local2 = last_7135;
  9173.  (*AM_STMT_next_AM__7107[local2->header.tag+AM_STMT_next_AM__7107_offset])(local2, l);
  9174. }
  9175.  
  9176.  
  9177. void AM_INITIAL_STMT__7137(AM_INITIAL_STMT self, AM_STMT l) {
  9178.  AM_STMT last_7138;
  9179.  AM_STMT local0;
  9180.  AM_STMT local1;
  9181.  AM_STMT local2;
  9182.  if (!((!((self==((AM_INITIAL_STMT) NULL)))))) {
  9183.   fprintf(stderr,"Violation of precondition ../Library/next.sa:50:9\n");
  9184.   exit(16);
  9185.  }
  9186.  if ((self->next_8==((AM_STMT) NULL))) {
  9187.   self->next_8 = l;
  9188.   return;
  9189.  }
  9190.  last_7138 = self->next_8;
  9191.  while (1) {
  9192.   local0 = last_7138;
  9193.   if (((*AM_STMT_next_AM_STMT[local0->header.tag+AM_STMT_next_AM_STMT_offset])(local0)==((AM_STMT) NULL))) {
  9194.    goto after_loop;
  9195.   }
  9196.   local1 = last_7138;
  9197.   last_7138 = (*AM_STMT_next_AM_STMT[local1->header.tag+AM_STMT_next_AM_STMT_offset])(local1);
  9198.  }
  9199.  after_loop: ;
  9200.  local2 = last_7138;
  9201.  (*AM_STMT_next_AM__7107[local2->header.tag+AM_STMT_next_AM__7107_offset])(local2, l);
  9202. }
  9203.  
  9204.  
  9205. void AM_ASSIGN_STMT_a(AM_ASSIGN_STMT self, AM_STMT l) {
  9206.  AM_STMT last_7140;
  9207.  AM_STMT local0;
  9208.  AM_STMT local1;
  9209.  AM_STMT local2;
  9210.  if (!((!((self==((AM_ASSIGN_STMT) NULL)))))) {
  9211.   fprintf(stderr,"Violation of precondition ../Library/next.sa:50:9\n");
  9212.   exit(16);
  9213.  }
  9214.  if ((self->next_8==((AM_STMT) NULL))) {
  9215.   self->next_8 = l;
  9216.   return;
  9217.  }
  9218.  last_7140 = self->next_8;
  9219.  while (1) {
  9220.   local0 = last_7140;
  9221.   if (((*AM_STMT_next_AM_STMT[local0->header.tag+AM_STMT_next_AM_STMT_offset])(local0)==((AM_STMT) NULL))) {
  9222.    goto after_loop;
  9223.   }
  9224.   local1 = last_7140;
  9225.   last_7140 = (*AM_STMT_next_AM_STMT[local1->header.tag+AM_STMT_next_AM_STMT_offset])(local1);
  9226.  }
  9227.  after_loop: ;
  9228.  local2 = last_7140;
  9229.  (*AM_STMT_next_AM__7107[local2->header.tag+AM_STMT_next_AM__7107_offset])(local2, l);
  9230. }
  9231.  
  9232.  
  9233. void FLISTAM_LOCAL_EX_5370(FLISTAM_LOCAL_EX_5370_frame frame) {
  9234.  INT local0;
  9235.  INT local1;
  9236.  switch (frame->state) {
  9237.   case 0: goto state0;
  9238.   case 1: goto state1;
  9239.   }
  9240.  state0:;
  9241.  if (!((!((frame->arg0==((FLISTAM_LOCAL_EXPR) NULL)))))) {
  9242.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:77:7\n");
  9243.   exit(16);
  9244.  }
  9245.  {
  9246.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  9247.   frame->nested1->state = 0;
  9248.   while (1) {
  9249.    if (frame->nested1->state == 0) {
  9250.     frame->noname7142 = (frame->arg0->asize);
  9251.     frame->nested1->arg0 = frame->noname7142;
  9252.    }
  9253.    local0 = INT_times_INT(frame->nested1);
  9254.    if (frame->nested1->state == -1) goto after_loop;
  9255.    local1 = local0;
  9256.    FLISTAM_LOCAL_EX_5376(frame->arg0, local1, frame->arg1);
  9257.    frame->state = 1;
  9258.    return;
  9259.    state1:;
  9260.   }
  9261.  }
  9262.  after_loop: ;
  9263.  GC_free(frame->nested1); frame->nested1 = NULL;
  9264.  frame->state = -1;
  9265.  return;
  9266. }
  9267.  
  9268.  
  9269. AM_LOCAL_EXPR FLISTAM_LOCAL_EX_4237(FLISTAM_LOCAL_EX_4237_frame frame) {
  9270.  AM_LOCAL_EXPR dummy;
  9271.  AM_LOCAL_EXPR local0;
  9272.  switch (frame->state) {
  9273.   case 0: goto state0;
  9274.   case 1: goto state1;
  9275.   }
  9276.  state0:;
  9277.  if ((!((frame->arg0==((FLISTAM_LOCAL_EXPR) NULL))))) {
  9278.   {
  9279.    frame->nested1 = ALLOCATE(FLISTAM_LOCAL_EX_7149_frame);
  9280.    frame->nested1->state = 0;
  9281.    while (1) {
  9282.     frame->state = 1;
  9283.     if (frame->nested1->state == 0) {
  9284.      frame->noname7145 = frame->arg0;
  9285.      frame->noname7146 = 0;
  9286.      frame->noname7147 = frame->arg0->loc_17;
  9287.      frame->nested1->arg0 = frame->noname7145;
  9288.      frame->nested1->arg1 = frame->noname7146;
  9289.      frame->nested1->arg2 = frame->noname7147;
  9290.     }
  9291.     local0 = FLISTAM_LOCAL_EX_7149(frame->nested1);
  9292.     if (frame->nested1->state == -1) goto after_loop;
  9293.     return local0;
  9294.     state1:;
  9295.    }
  9296.   }
  9297.   after_loop: ;
  9298.   GC_free(frame->nested1); frame->nested1 = NULL;
  9299.  }
  9300.  if (!FLISTAM_LOCAL_EX_3769(frame->arg0)) {
  9301.   fprintf(stderr,"Failed invariant FLIST{AM_LOCAL_EXPR}::invariant:BOOL ../Library/flist.sa:127:6\n");
  9302.   exit(16);
  9303.  }
  9304.  frame->state = -1;
  9305.  return dummy;
  9306. }
  9307.  
  9308.  
  9309. AM_LOCAL_EXPR FLISTAM_LOCAL_EX_7149(FLISTAM_LOCAL_EX_7149_frame frame) {
  9310.  AM_LOCAL_EXPR dummy;
  9311.  BOOL local0;
  9312.  BOOL local1;
  9313.  INT local2;
  9314.  INT local3;
  9315.  INT local4;
  9316.  INT local5;
  9317.  INT local6;
  9318.  INT local7;
  9319.  switch (frame->state) {
  9320.   case 0: goto state0;
  9321.   case 1: goto state1;
  9322.   }
  9323.  state0:;
  9324.  if ((!((frame->arg0==((FLISTAM_LOCAL_EXPR) NULL))))) {
  9325.   local2 = 0;
  9326.   local3 = (frame->arg0->asize);
  9327.   local1 = INT_is_bet_INT_I(frame->arg1, local2, (c_INT_minus_INT_INT_chk(local3,1)));
  9328.  } else {
  9329.   local1 = FALSE;
  9330.  }
  9331.  if (local1) {
  9332.   local4 = 0;
  9333.   local5 = (frame->arg0->asize);
  9334.   local0 = INT_is_bet_INT_I(frame->arg2, local4, (c_INT_minus_INT_INT_chk(local5,frame->arg1)));
  9335.  } else {
  9336.   local0 = FALSE;
  9337.  }
  9338.  if (!(local0)) {
  9339.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:58:7\n");
  9340.   exit(16);
  9341.  }
  9342.  {
  9343.   frame->nested1 = ALLOCATE(INT_upto_INT_INT_frame);
  9344.   frame->nested1->state = 0;
  9345.   while (1) {
  9346.    frame->state = 1;
  9347.    if (frame->nested1->state == 0) {
  9348.     frame->noname7151 = frame->arg1;
  9349.     local7 = (c_INT_plus_INT_INT_chk(frame->arg1,frame->arg2));
  9350.     frame->noname7152 = (c_INT_minus_INT_INT_chk(local7,1));
  9351.     frame->nested1->arg0 = frame->noname7151;
  9352.     frame->nested1->arg1 = frame->noname7152;
  9353.    }
  9354.    local6 = INT_upto_INT_INT(frame->nested1);
  9355.    if (frame->nested1->state == -1) goto after_loop;
  9356.    return FLISTAM_LOCAL_EX_3775(frame->arg0, local6);
  9357.    state1:;
  9358.   }
  9359.  }
  9360.  after_loop: ;
  9361.  GC_free(frame->nested1); frame->nested1 = NULL;
  9362.  frame->state = -1;
  9363.  return dummy;
  9364. }
  9365.  
  9366.  
  9367. AM_EXPR AM_EXT_CALL_EXPR_3901(AM_EXT_CALL_EXPR_3901_frame frame) {
  9368.  AM_EXPR dummy;
  9369.  AM_EXPR local0;
  9370.  switch (frame->state) {
  9371.   case 0: goto state0;
  9372.   case 1: goto state1;
  9373.   }
  9374.  state0:;
  9375.  if ((!((frame->arg0==((AM_EXT_CALL_EXPR) NULL))))) {
  9376.   {
  9377.    frame->nested1 = ALLOCATE(AM_EXT_CALL_EXPR_7157_frame);
  9378.    frame->nested1->state = 0;
  9379.    while (1) {
  9380.     frame->state = 1;
  9381.     if (frame->nested1->state == 0) {
  9382.      frame->noname7155 = frame->arg0;
  9383.      frame->nested1->arg0 = frame->noname7155;
  9384.     }
  9385.     local0 = AM_EXT_CALL_EXPR_7157(frame->nested1);
  9386.     if (frame->nested1->state == -1) goto after_loop;
  9387.     return local0;
  9388.     state1:;
  9389.    }
  9390.   }
  9391.   after_loop: ;
  9392.   GC_free(frame->nested1); frame->nested1 = NULL;
  9393.  }
  9394.  frame->state = -1;
  9395.  return dummy;
  9396. }
  9397.  
  9398.  
  9399. AM_EXPR AM_EXT_CALL_EXPR_7157(AM_EXT_CALL_EXPR_7157_frame frame) {
  9400.  AM_EXPR dummy;
  9401.  INT local0;
  9402.  switch (frame->state) {
  9403.   case 0: goto state0;
  9404.   case 1: goto state1;
  9405.   }
  9406.  state0:;
  9407.  if (!((!((frame->arg0==((AM_EXT_CALL_EXPR) NULL)))))) {
  9408.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:48:7\n");
  9409.   exit(16);
  9410.  }
  9411.  {
  9412.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  9413.   frame->nested1->state = 0;
  9414.   while (1) {
  9415.    frame->state = 1;
  9416.    if (frame->nested1->state == 0) {
  9417.     frame->noname7159 = (frame->arg0->asize);
  9418.     frame->nested1->arg0 = frame->noname7159;
  9419.    }
  9420.    local0 = INT_times_INT(frame->nested1);
  9421.    if (frame->nested1->state == -1) goto after_loop;
  9422.    return AM_EXT_CALL_EXPR_4610(frame->arg0, local0);
  9423.    state1:;
  9424.   }
  9425.  }
  9426.  after_loop: ;
  9427.  GC_free(frame->nested1); frame->nested1 = NULL;
  9428.  frame->state = -1;
  9429.  return dummy;
  9430. }
  9431.  
  9432.  
  9433. AM_EXPR AM_BND_ROUT_CALL_3884(AM_BND_ROUT_CALL_3884_frame frame) {
  9434.  AM_EXPR dummy;
  9435.  AM_EXPR local0;
  9436.  switch (frame->state) {
  9437.   case 0: goto state0;
  9438.   case 1: goto state1;
  9439.   }
  9440.  state0:;
  9441.  if ((!((frame->arg0==((AM_BND_ROUT_CALL) NULL))))) {
  9442.   {
  9443.    frame->nested1 = ALLOCATE(AM_BND_ROUT_CALL_7164_frame);
  9444.    frame->nested1->state = 0;
  9445.    while (1) {
  9446.     frame->state = 1;
  9447.     if (frame->nested1->state == 0) {
  9448.      frame->noname7162 = frame->arg0;
  9449.      frame->nested1->arg0 = frame->noname7162;
  9450.     }
  9451.     local0 = AM_BND_ROUT_CALL_7164(frame->nested1);
  9452.     if (frame->nested1->state == -1) goto after_loop;
  9453.     return local0;
  9454.     state1:;
  9455.    }
  9456.   }
  9457.   after_loop: ;
  9458.   GC_free(frame->nested1); frame->nested1 = NULL;
  9459.  }
  9460.  frame->state = -1;
  9461.  return dummy;
  9462. }
  9463.  
  9464.  
  9465. AM_EXPR AM_BND_ROUT_CALL_7164(AM_BND_ROUT_CALL_7164_frame frame) {
  9466.  AM_EXPR dummy;
  9467.  INT local0;
  9468.  switch (frame->state) {
  9469.   case 0: goto state0;
  9470.   case 1: goto state1;
  9471.   }
  9472.  state0:;
  9473.  if (!((!((frame->arg0==((AM_BND_ROUT_CALL) NULL)))))) {
  9474.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:48:7\n");
  9475.   exit(16);
  9476.  }
  9477.  {
  9478.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  9479.   frame->nested1->state = 0;
  9480.   while (1) {
  9481.    frame->state = 1;
  9482.    if (frame->nested1->state == 0) {
  9483.     frame->noname7166 = (frame->arg0->asize);
  9484.     frame->nested1->arg0 = frame->noname7166;
  9485.    }
  9486.    local0 = INT_times_INT(frame->nested1);
  9487.    if (frame->nested1->state == -1) goto after_loop;
  9488.    return AM_BND_ROUT_CALL_4679(frame->arg0, local0);
  9489.    state1:;
  9490.   }
  9491.  }
  9492.  after_loop: ;
  9493.  GC_free(frame->nested1); frame->nested1 = NULL;
  9494.  frame->state = -1;
  9495.  return dummy;
  9496. }
  9497.  
  9498.  
  9499. AM_EXPR AM_BND_CREATE_EX_5356(AM_BND_CREATE_EX_5356_frame frame) {
  9500.  AM_EXPR dummy;
  9501.  AM_EXPR local0;
  9502.  switch (frame->state) {
  9503.   case 0: goto state0;
  9504.   case 1: goto state1;
  9505.   }
  9506.  state0:;
  9507.  if ((!((frame->arg0==((AM_BND_CREATE_EXPR) NULL))))) {
  9508.   {
  9509.    frame->nested1 = ALLOCATE(AM_BND_CREATE_EX_7171_frame);
  9510.    frame->nested1->state = 0;
  9511.    while (1) {
  9512.     frame->state = 1;
  9513.     if (frame->nested1->state == 0) {
  9514.      frame->noname7169 = frame->arg0;
  9515.      frame->nested1->arg0 = frame->noname7169;
  9516.     }
  9517.     local0 = AM_BND_CREATE_EX_7171(frame->nested1);
  9518.     if (frame->nested1->state == -1) goto after_loop;
  9519.     return local0;
  9520.     state1:;
  9521.    }
  9522.   }
  9523.   after_loop: ;
  9524.   GC_free(frame->nested1); frame->nested1 = NULL;
  9525.  }
  9526.  frame->state = -1;
  9527.  return dummy;
  9528. }
  9529.  
  9530.  
  9531. AM_EXPR AM_BND_CREATE_EX_7171(AM_BND_CREATE_EX_7171_frame frame) {
  9532.  AM_EXPR dummy;
  9533.  INT local0;
  9534.  switch (frame->state) {
  9535.   case 0: goto state0;
  9536.   case 1: goto state1;
  9537.   }
  9538.  state0:;
  9539.  if (!((!((frame->arg0==((AM_BND_CREATE_EXPR) NULL)))))) {
  9540.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:48:7\n");
  9541.   exit(16);
  9542.  }
  9543.  {
  9544.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  9545.   frame->nested1->state = 0;
  9546.   while (1) {
  9547.    frame->state = 1;
  9548.    if (frame->nested1->state == 0) {
  9549.     frame->noname7173 = (frame->arg0->asize);
  9550.     frame->nested1->arg0 = frame->noname7173;
  9551.    }
  9552.    local0 = INT_times_INT(frame->nested1);
  9553.    if (frame->nested1->state == -1) goto after_loop;
  9554.    return AM_BND_CREATE_EX_3787(frame->arg0, local0);
  9555.    state1:;
  9556.   }
  9557.  }
  9558.  after_loop: ;
  9559.  GC_free(frame->nested1); frame->nested1 = NULL;
  9560.  frame->state = -1;
  9561.  return dummy;
  9562. }
  9563.  
  9564.  
  9565. AM_EXPR AM_ARRAY_EXPR_el(AM_ARRAY_EXPR_el_frame frame) {
  9566.  AM_EXPR dummy;
  9567.  AM_EXPR local0;
  9568.  switch (frame->state) {
  9569.   case 0: goto state0;
  9570.   case 1: goto state1;
  9571.   }
  9572.  state0:;
  9573.  if ((!((frame->arg0==((AM_ARRAY_EXPR) NULL))))) {
  9574.   {
  9575.    frame->nested1 = ALLOCATE(AM_ARRAY_EXPR_ae_frame);
  9576.    frame->nested1->state = 0;
  9577.    while (1) {
  9578.     frame->state = 1;
  9579.     if (frame->nested1->state == 0) {
  9580.      frame->noname7176 = frame->arg0;
  9581.      frame->nested1->arg0 = frame->noname7176;
  9582.     }
  9583.     local0 = AM_ARRAY_EXPR_ae(frame->nested1);
  9584.     if (frame->nested1->state == -1) goto after_loop;
  9585.     return local0;
  9586.     state1:;
  9587.    }
  9588.   }
  9589.   after_loop: ;
  9590.   GC_free(frame->nested1); frame->nested1 = NULL;
  9591.  }
  9592.  frame->state = -1;
  9593.  return dummy;
  9594. }
  9595.  
  9596.  
  9597. AM_EXPR AM_ARRAY_EXPR_ae(AM_ARRAY_EXPR_ae_frame frame) {
  9598.  AM_EXPR dummy;
  9599.  INT local0;
  9600.  switch (frame->state) {
  9601.   case 0: goto state0;
  9602.   case 1: goto state1;
  9603.   }
  9604.  state0:;
  9605.  if (!((!((frame->arg0==((AM_ARRAY_EXPR) NULL)))))) {
  9606.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:48:7\n");
  9607.   exit(16);
  9608.  }
  9609.  {
  9610.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  9611.   frame->nested1->state = 0;
  9612.   while (1) {
  9613.    frame->state = 1;
  9614.    if (frame->nested1->state == 0) {
  9615.     frame->noname7179 = (frame->arg0->asize);
  9616.     frame->nested1->arg0 = frame->noname7179;
  9617.    }
  9618.    local0 = INT_times_INT(frame->nested1);
  9619.    if (frame->nested1->state == -1) goto after_loop;
  9620.    return AM_ARRAY_EXPR_ag(frame->arg0, local0);
  9621.    state1:;
  9622.   }
  9623.  }
  9624.  after_loop: ;
  9625.  GC_free(frame->nested1); frame->nested1 = NULL;
  9626.  frame->state = -1;
  9627.  return dummy;
  9628. }
  9629.  
  9630.  
  9631. AM_EXPR AM_ROUT_CALL_EXP(AM_ROUT_CALL_EXP_frame frame) {
  9632.  AM_EXPR dummy;
  9633.  AM_EXPR local0;
  9634.  switch (frame->state) {
  9635.   case 0: goto state0;
  9636.   case 1: goto state1;
  9637.   }
  9638.  state0:;
  9639.  if ((!((frame->arg0==((AM_ROUT_CALL_EXPR) NULL))))) {
  9640.   {
  9641.    frame->nested1 = ALLOCATE(AM_ROUT_CALL_EXP_7184_frame);
  9642.    frame->nested1->state = 0;
  9643.    while (1) {
  9644.     frame->state = 1;
  9645.     if (frame->nested1->state == 0) {
  9646.      frame->noname7182 = frame->arg0;
  9647.      frame->nested1->arg0 = frame->noname7182;
  9648.     }
  9649.     local0 = AM_ROUT_CALL_EXP_7184(frame->nested1);
  9650.     if (frame->nested1->state == -1) goto after_loop;
  9651.     return local0;
  9652.     state1:;
  9653.    }
  9654.   }
  9655.   after_loop: ;
  9656.   GC_free(frame->nested1); frame->nested1 = NULL;
  9657.  }
  9658.  frame->state = -1;
  9659.  return dummy;
  9660. }
  9661.  
  9662.  
  9663. AM_EXPR AM_ROUT_CALL_EXP_7184(AM_ROUT_CALL_EXP_7184_frame frame) {
  9664.  AM_EXPR dummy;
  9665.  INT local0;
  9666.  switch (frame->state) {
  9667.   case 0: goto state0;
  9668.   case 1: goto state1;
  9669.   }
  9670.  state0:;
  9671.  if (!((!((frame->arg0==((AM_ROUT_CALL_EXPR) NULL)))))) {
  9672.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:48:7\n");
  9673.   exit(16);
  9674.  }
  9675.  {
  9676.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  9677.   frame->nested1->state = 0;
  9678.   while (1) {
  9679.    frame->state = 1;
  9680.    if (frame->nested1->state == 0) {
  9681.     frame->noname7186 = (frame->arg0->asize);
  9682.     frame->nested1->arg0 = frame->noname7186;
  9683.    }
  9684.    local0 = INT_times_INT(frame->nested1);
  9685.    if (frame->nested1->state == -1) goto after_loop;
  9686.    return AM_ROUT_CALL_EXP_4316(frame->arg0, local0);
  9687.    state1:;
  9688.   }
  9689.  }
  9690.  after_loop: ;
  9691.  GC_free(frame->nested1); frame->nested1 = NULL;
  9692.  frame->state = -1;
  9693.  return dummy;
  9694. }
  9695.  
  9696.  
  9697. CALL_TP ARRAYCALL_TP_elt(ARRAYCALL_TP_elt_frame frame) {
  9698.  CALL_TP dummy;
  9699.  CALL_TP local0;
  9700.  switch (frame->state) {
  9701.   case 0: goto state0;
  9702.   case 1: goto state1;
  9703.   }
  9704.  state0:;
  9705.  if ((!((frame->arg0==((ARRAYCALL_TP) NULL))))) {
  9706.   {
  9707.    frame->nested1 = ALLOCATE(ARRAYCALL_TP_ael_frame);
  9708.    frame->nested1->state = 0;
  9709.    while (1) {
  9710.     frame->state = 1;
  9711.     if (frame->nested1->state == 0) {
  9712.      frame->noname7189 = frame->arg0;
  9713.      frame->nested1->arg0 = frame->noname7189;
  9714.     }
  9715.     local0 = ARRAYCALL_TP_ael(frame->nested1);
  9716.     if (frame->nested1->state == -1) goto after_loop;
  9717.     return local0;
  9718.     state1:;
  9719.    }
  9720.   }
  9721.   after_loop: ;
  9722.   GC_free(frame->nested1); frame->nested1 = NULL;
  9723.  }
  9724.  frame->state = -1;
  9725.  return dummy;
  9726. }
  9727.  
  9728.  
  9729. CALL_TP ARRAYCALL_TP_ael(ARRAYCALL_TP_ael_frame frame) {
  9730.  CALL_TP dummy;
  9731.  INT local0;
  9732.  switch (frame->state) {
  9733.   case 0: goto state0;
  9734.   case 1: goto state1;
  9735.   }
  9736.  state0:;
  9737.  if (!((!((frame->arg0==((ARRAYCALL_TP) NULL)))))) {
  9738.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:48:7\n");
  9739.   exit(16);
  9740.  }
  9741.  {
  9742.   frame->nested1 = ALLOCATE(INT_times_INT_frame);
  9743.   frame->nested1->state = 0;
  9744.   while (1) {
  9745.    frame->state = 1;
  9746.    if (frame->nested1->state == 0) {
  9747.     frame->noname7192 = (frame->arg0->asize);
  9748.     frame->nested1->arg0 = frame->noname7192;
  9749.    }
  9750.    local0 = INT_times_INT(frame->nested1);
  9751.    if (frame->nested1->state == -1) goto after_loop;
  9752.    return ARRAYCALL_TP_age(frame->arg0, local0);
  9753.    state1:;
  9754.   }
  9755.  }
  9756.  after_loop: ;
  9757.  GC_free(frame->nested1); frame->nested1 = NULL;
  9758.  frame->state = -1;
  9759.  return dummy;
  9760. }
  9761.  
  9762.  
  9763. INT SIG_TBL_query_ha(SIG_TBL self, IDENT i) {
  9764.  INT noname7194 = ((INT) 0);
  9765.  return IDENT_hash_INT(i);
  9766.  if (!SIG_TBL_invarian(self)) {
  9767.   fprintf(stderr,"Failed invariant SIG_TBL::invariant:BOOL ./sig.sa:380:13\n");
  9768.   exit(16);
  9769.  }
  9770. }
  9771.  
  9772.  
  9773. BOOL SIG_TBL_query_te(SIG_TBL self, IDENT name_7195, SIG s_7196) {
  9774.  BOOL noname7197 = ((BOOL) 0);
  9775.  if ((s_7196==((SIG) NULL))) {
  9776.   return FALSE;
  9777.  }
  9778.  return IDENT_is_eq_IDEN(s_7196->name_19, name_7195);
  9779.  if (!SIG_TBL_invarian(self)) {
  9780.   fprintf(stderr,"Failed invariant SIG_TBL::invariant:BOOL ./sig.sa:375:13\n");
  9781.   exit(16);
  9782.  }
  9783. }
  9784.  
  9785.  
  9786. SIG SIG_TBL_get_quer(SIG_TBL_get_quer_frame frame) {
  9787.  SIG dummy;
  9788.  INT local0;
  9789.  INT local1;
  9790.  INT local2;
  9791.  INT local3;
  9792.  switch (frame->state) {
  9793.   case 0: goto state0;
  9794.   case 1: goto state1;
  9795.   case 2: goto state2;
  9796.   }
  9797.  state0:;
  9798.  if ((frame->arg0==((SIG_TBL) NULL))) {
  9799.   frame->state = -1;
  9800.   return;
  9801.  }
  9802.  local0 = SIG_TBL_query_ha(frame->arg0, frame->arg1);
  9803.  local1 = (frame->arg0->asize);
  9804.  frame->h_7199 = (local0&(c_INT_minus_INT_INT_chk(local1,2)));
  9805.  while (1) {
  9806.   frame->e_7200 = SIG_TBL_aget_INT_SIG(frame->arg0, frame->h_7199);
  9807.   if (SIG_TBL_query_te(frame->arg0, frame->arg1, frame->e_7200)) {
  9808.    frame->state = 1;
  9809.    return frame->e_7200;
  9810.    state1:;
  9811.   }
  9812.   else {
  9813.    if (SIG_TBL_elt_eq_S(frame->arg0, frame->e_7200, SIG_TBL_elt_nil_SIG(frame->arg0))) {
  9814.     goto after_loop;
  9815.    }
  9816.   }
  9817.   frame->h_7199 = (c_INT_plus_INT_INT_chk(frame->h_7199,1));
  9818.  }
  9819.  after_loop: ;
  9820.  local2 = (frame->arg0->asize);
  9821.  if ((frame->h_7199==(c_INT_minus_INT_INT_chk(local2,1)))) {
  9822.   frame->h_7199 = 0;
  9823.   while (1) {
  9824.    frame->e_7201 = SIG_TBL_aget_INT_SIG(frame->arg0, frame->h_7199);
  9825.    if (SIG_TBL_query_te(frame->arg0, frame->arg1, frame->e_7201)) {
  9826.     frame->state = 2;
  9827.     return frame->e_7201;
  9828.     state2:;
  9829.    }
  9830.    else {
  9831.     if (SIG_TBL_elt_eq_S(frame->arg0, frame->e_7201, SIG_TBL_elt_nil_SIG(frame->arg0))) {
  9832.      goto after_loop_7203;
  9833.     }
  9834.    }
  9835.    frame->h_7199 = (c_INT_plus_INT_INT_chk(frame->h_7199,1));
  9836.   }
  9837.   after_loop_7203: ;
  9838.   local3 = (frame->arg0->asize);
  9839.   if (!((frame->h_7199!=(c_INT_minus_INT_INT_chk(local3,1))))) {
  9840.    fprintf(stderr,"Violation of assertion ../Library/fqset.sa:126:15\n");
  9841.    exit(16);
  9842.   }
  9843.  }
  9844.  if (!SIG_TBL_invarian(frame->arg0)) {
  9845.   fprintf(stderr,"Failed invariant SIG_TBL::invariant:BOOL ../Library/fqset.sa:112:12\n");
  9846.   exit(16);
  9847.  }
  9848.  frame->state = -1;
  9849.  return dummy;
  9850. }
  9851.  
  9852.  
  9853. STR STR_separate_STR_STR(STR_separate_STR_STR_frame frame) {
  9854.  STR dummy;
  9855.  switch (frame->state) {
  9856.   case 0: goto state0;
  9857.   case 1: goto state1;
  9858.   case 2: goto state2;
  9859.   }
  9860.  state0:;
  9861.  frame->state = 1;
  9862.  return frame->arg1;
  9863.  state1:;
  9864.  while (1) {
  9865.   frame->state = 2;
  9866.   return STR_plus_STR_STR(frame->arg0, frame->arg1);
  9867.   state2:;
  9868.  }
  9869.  after_loop: ;
  9870.  frame->state = -1;
  9871.  return dummy;
  9872. }
  9873.  
  9874.  
  9875. STR CALL_TP_UNDERSCO_7207(CALL_TP_UNDERSCORE self) {
  9876.  STR noname7208;
  9877.  STR local0;
  9878.  TP local1;
  9879.  if ((self->tp==((TP) NULL))) {
  9880.   return ((STR) &underscoreexpression);
  9881.  }
  9882.  local0 = ((STR) &underscoreexpres_7209);
  9883.  local1 = self->tp;
  9884.  return STR_plus_STR_STR(local0, (*TP_str_STR[local1->header.tag+TP_str_STR_offset])(local1));
  9885. }
  9886.  
  9887.  
  9888. STR CALL_TP_CREATE_s(CALL_TP_CREATE self) {
  9889.  STR noname7210;
  9890.  return ((STR) &createexpression_7211);
  9891. }
  9892.  
  9893.  
  9894. STR CALL_TP_ARRAY_st(CALL_TP_ARRAY self) {
  9895.  STR noname7212;
  9896.  return ((STR) &arrayexpression_7213);
  9897. }
  9898.  
  9899.  
  9900. STR CALL_TP_VOID_str_STR(CALL_TP_VOID self) {
  9901.  STR noname7214;
  9902.  return ((STR) &voidexpression);
  9903. }
  9904.  
  9905.  
  9906. BOOL CALL_TP_UNDERSCO_7215(CALL_TP_UNDERSCORE self, TP t_7216) {
  9907.  BOOL noname7217 = ((BOOL) 0);
  9908.  TP local0;
  9909.  if (!((!((t_7216==((TP) NULL)))))) {
  9910.   fprintf(stderr,"Violation of precondition ./call.sa:125:13\n");
  9911.   exit(16);
  9912.  }
  9913.  if ((self->tp==((TP) NULL))) {
  9914.   return TRUE;
  9915.  }
  9916.  local0 = self->tp;
  9917.  return (*TP_is_subtype_TP[local0->header.tag+TP_is_subtype_TP_offset])(local0, t_7216);
  9918. }
  9919.  
  9920.  
  9921. BOOL TP_ROUT_has_ret_BOOL(TP_ROUT self) {
  9922.  BOOL noname7218 = ((BOOL) 0);
  9923.  return (!((self->ret==((TP) NULL))));
  9924. }
  9925.  
  9926.  
  9927. BOOL TP_ROUT_is_subty(TP_ROUT self, TP t_7219) {
  9928.  BOOL noname7220 = ((BOOL) 0);
  9929.  ARRAYTP noname7221;
  9930.  ARRAYTP noname7222;
  9931.  INT local0;
  9932.  TP local1;
  9933.  TP local2;
  9934.  TP local3;
  9935.  TP local4;
  9936.  BOOL local5;
  9937.  BOOL local6;
  9938.  TP local7;
  9939.  if ((self==((TP_ROUT) NULL))) {
  9940.   return FALSE;
  9941.  }
  9942.  if (t_7219==NULL) {
  9943.  } else
  9944.  switch (t_7219->header.tag) {
  9945.   case TP_CLASS_tag:
  9946.    if ((!(TP_CLASS_is_abst(((TP_CLASS) t_7219))))) {
  9947.     return FALSE;
  9948.    }
  9949.    else {
  9950.     return PROG_abs_subtype(self->prog, ((TP) self), ((TP_CLASS) t_7219));
  9951.    } break;
  9952.   case TP_ROUT_tag:
  9953.    local0 = ARRAYTP_size_INT(self->args_7);
  9954.    if ((local0!=ARRAYTP_size_INT(((TP_ROUT) t_7219)->args_7))) {
  9955.     return FALSE;
  9956.    }
  9957.    {
  9958.     struct ARRAYTP_elt_TP_frame_struct temp7223_0;
  9959.     ARRAYTP_elt_TP_frame 
  9960.     noname7224 = &temp7223_0;
  9961.     struct ARRAYTP_elt_TP_frame_struct temp7223_1;
  9962.     ARRAYTP_elt_TP_frame 
  9963.     noname7225 = &temp7223_1;
  9964.     noname7224->state = 0;
  9965.     noname7225->state = 0;
  9966.     while (1) {
  9967.      if (noname7224->state == 0) {
  9968.       noname7221 = ((TP_ROUT) t_7219)->args_7;
  9969.       noname7224->arg0 = noname7221;
  9970.      }
  9971.      local1 = ARRAYTP_elt_TP(noname7224);
  9972.      if (noname7224->state == -1) goto after_loop;
  9973.      local2 = local1;
  9974.      if (noname7225->state == 0) {
  9975.       noname7222 = self->args_7;
  9976.       noname7225->arg0 = noname7222;
  9977.      }
  9978.      local3 = ARRAYTP_elt_TP(noname7225);
  9979.      if (noname7225->state == -1) goto after_loop;
  9980.      local4 = local2;
  9981.      if ((!((*TP_is_subtype_TP[local4->header.tag+TP_is_subtype_TP_offset])(local4, local3)))) {
  9982.       return FALSE;
  9983.      }
  9984.     }
  9985.    }
  9986.    after_loop: ;
  9987.    local5 = TP_ROUT_has_ret_BOOL(self);
  9988.    if (((local5)!=(TP_ROUT_has_ret_BOOL(((TP_ROUT) t_7219))))) {
  9989.     return FALSE;
  9990.    }
  9991.    if (TP_ROUT_has_ret_BOOL(self)) {
  9992.     local7 = self->ret;
  9993.     local6 = (!((*TP_is_subtype_TP[local7->header.tag+TP_is_subtype_TP_offset])(local7, ((TP_ROUT) t_7219)->ret)));
  9994.    } else {
  9995.     local6 = FALSE;
  9996.    }
  9997.    if (local6) {
  9998.     return FALSE;
  9999.    }
  10000.    return TRUE; break;
  10001.   default: ;
  10002.  }
  10003.  return FALSE;
  10004. }
  10005.  
  10006.  
  10007. BOOL CALL_TP_CREATE_i(CALL_TP_CREATE self, TP t_7226) {
  10008.  BOOL noname7227 = ((BOOL) 0);
  10009.  INT noname7228 = ((INT) 0);
  10010.  TP local0;
  10011.  if (!((!((t_7226==((TP) NULL)))))) {
  10012.   fprintf(stderr,"Violation of precondition ./call.sa:68:13\n");
  10013.   exit(16);
  10014.  }
  10015.  local0 = t_7226;
  10016.  noname7228 = (*TP_kind_INT[local0->header.tag+TP_kind_INT_offset])(local0);
  10017.  switch (noname7228) {
  10018.   case 1:
  10019.    return TRUE;
  10020.    break;
  10021.   case 2:
  10022.    return TRUE;
  10023.    break;
  10024.   case 3:
  10025.    return FALSE;
  10026.    break;
  10027.   case 4:
  10028.    return FALSE;
  10029.    break;
  10030.   case 5:
  10031.    return FALSE;
  10032.    break;
  10033.   case 6:
  10034.    return FALSE;
  10035.    break;
  10036.   default: ;
  10037.    fprintf(stderr,"No applicable target in case statement ./call.sa:72:18\n");
  10038.    exit(16);
  10039.  }
  10040.  return FALSE;
  10041. }
  10042.  
  10043.  
  10044. BOOL CALL_TP_ARRAY_is(CALL_TP_ARRAY self, TP t_7229) {
  10045.  BOOL noname7230 = ((BOOL) 0);
  10046.  IDENT local0;
  10047.  if (t_7229==NULL) {
  10048.  } else
  10049.  switch (t_7229->header.tag) {
  10050.   case TP_CLASS_tag:
  10051.    local0 = ((TP_CLASS) t_7229)->name_19;
  10052.    return IDENT_is_eq_IDEN(local0, PROG_ident_for_S(((TP_CLASS) t_7229)->prog, ((STR) &ARRAY_7231))); break;
  10053.   default: ;
  10054.  }
  10055.  return FALSE;
  10056. }
  10057.  
  10058.  
  10059. BOOL CALL_TP_VOID_is_(CALL_TP_VOID self, TP t_7232) {
  10060.  BOOL noname7233 = ((BOOL) 0);
  10061.  if (!((!((t_7232==((TP) NULL)))))) {
  10062.   fprintf(stderr,"Violation of precondition ./call.sa:46:13\n");
  10063.   exit(16);
  10064.  }
  10065.  return TRUE;
  10066. }
  10067.  
  10068.  
  10069. BOOL TP_ITER_has_ret_BOOL(TP_ITER self) {
  10070.  BOOL noname7234 = ((BOOL) 0);
  10071.  if ((self==((TP_ITER) NULL))) {
  10072.   return FALSE;
  10073.  }
  10074.  return (!((self->ret==((TP) NULL))));
  10075. }
  10076.  
  10077.  
  10078. BOOL TP_ITER_is_subty(TP_ITER self, TP t_7235) {
  10079.  BOOL noname7236 = ((BOOL) 0);
  10080.  ARRAYTP noname7237;
  10081.  ARRAYTP noname7238;
  10082.  ARRAYBOOL noname7239;
  10083.  ARRAYBOOL noname7240;
  10084.  INT local0;
  10085.  TP local1;
  10086.  TP local2;
  10087.  TP local3;
  10088.  TP local4;
  10089.  INT local5;
  10090.  BOOL local6;
  10091.  BOOL local7;
  10092.  BOOL local8;
  10093.  BOOL local9;
  10094.  BOOL local10;
  10095.  TP local11;
  10096.  if ((self==((TP_ITER) NULL))) {
  10097.   return FALSE;
  10098.  }
  10099.  if (t_7235==NULL) {
  10100.  } else
  10101.  switch (t_7235->header.tag) {
  10102.   case TP_CLASS_tag:
  10103.    if ((!(TP_CLASS_is_abst(((TP_CLASS) t_7235))))) {
  10104.     return FALSE;
  10105.    }
  10106.    else {
  10107.     return PROG_abs_subtype(self->prog, ((TP) self), ((TP_CLASS) t_7235));
  10108.    } break;
  10109.   case TP_ITER_tag:
  10110.    local0 = ARRAYTP_size_INT(self->args_7);
  10111.    if ((local0!=ARRAYTP_size_INT(((TP_ITER) t_7235)->args_7))) {
  10112.     return FALSE;
  10113.    }
  10114.    {
  10115.     struct ARRAYTP_elt_TP_frame_struct temp7241_0;
  10116.     ARRAYTP_elt_TP_frame 
  10117.     noname7242 = &temp7241_0;
  10118.     struct ARRAYTP_elt_TP_frame_struct temp7241_1;
  10119.     ARRAYTP_elt_TP_frame 
  10120.     noname7243 = &temp7241_1;
  10121.     noname7242->state = 0;
  10122.     noname7243->state = 0;
  10123.     while (1) {
  10124.      if (noname7242->state == 0) {
  10125.       noname7237 = ((TP_ITER) t_7235)->args_7;
  10126.       noname7242->arg0 = noname7237;
  10127.      }
  10128.      local1 = ARRAYTP_elt_TP(noname7242);
  10129.      if (noname7242->state == -1) goto after_loop;
  10130.      local2 = local1;
  10131.      if (noname7243->state == 0) {
  10132.       noname7238 = self->args_7;
  10133.       noname7243->arg0 = noname7238;
  10134.      }
  10135.      local3 = ARRAYTP_elt_TP(noname7243);
  10136.      if (noname7243->state == -1) goto after_loop;
  10137.      local4 = local2;
  10138.      if ((!((*TP_is_subtype_TP[local4->header.tag+TP_is_subtype_TP_offset])(local4, local3)))) {
  10139.       return FALSE;
  10140.      }
  10141.     }
  10142.    }
  10143.    after_loop: ;
  10144.    local5 = ARRAYBOOL_size_INT(self->hot);
  10145.    if ((local5!=ARRAYBOOL_size_INT(((TP_ITER) t_7235)->hot))) {
  10146.     return FALSE;
  10147.    }
  10148.    {
  10149.     struct ARRAYBOOL_elt_BOOL_frame_struct temp7245_0;
  10150.     ARRAYBOOL_elt_BOOL_frame 
  10151.     noname7246 = &temp7245_0;
  10152.     struct ARRAYBOOL_elt_BOOL_frame_struct temp7245_1;
  10153.     ARRAYBOOL_elt_BOOL_frame 
  10154.     noname7247 = &temp7245_1;
  10155.     noname7246->state = 0;
  10156.     noname7247->state = 0;
  10157.     while (1) {
  10158.      if (noname7246->state == 0) {
  10159.       noname7239 = self->hot;
  10160.       noname7246->arg0 = noname7239;
  10161.      }
  10162.      local6 = ARRAYBOOL_elt_BOOL(noname7246);
  10163.      if (noname7246->state == -1) goto after_loop_7244;
  10164.      local7 = local6;
  10165.      if (noname7247->state == 0) {
  10166.       noname7240 = ((TP_ITER) t_7235)->hot;
  10167.       noname7247->arg0 = noname7240;
  10168.      }
  10169.      local8 = ARRAYBOOL_elt_BOOL(noname7247);
  10170.      if (noname7247->state == -1) goto after_loop_7244;
  10171.      if (((local7)!=(local8))) {
  10172.       return FALSE;
  10173.      }
  10174.     }
  10175.    }
  10176.    after_loop_7244: ;
  10177.    local9 = TP_ITER_has_ret_BOOL(self);
  10178.    if (((local9)!=(TP_ITER_has_ret_BOOL(((TP_ITER) t_7235))))) {
  10179.     return FALSE;
  10180.    }
  10181.    if (TP_ITER_has_ret_BOOL(self)) {
  10182.     local11 = self->ret;
  10183.     local10 = (!((*TP_is_subtype_TP[local11->header.tag+TP_is_subtype_TP_offset])(local11, ((TP_ITER) t_7235)->ret)));
  10184.    } else {
  10185.     local10 = FALSE;
  10186.    }
  10187.    if (local10) {
  10188.     return FALSE;
  10189.    }
  10190.    return TRUE; break;
  10191.   default: ;
  10192.  }
  10193.  return FALSE;
  10194. }
  10195.  
  10196.  
  10197. INT TR_HERE_EXPR_siz(TR_HERE_EXPR self) {
  10198.  INT noname7248 = ((INT) 0);
  10199.  INT r_7249 = ((INT) 0);
  10200.  TR_EXPR n_7250;
  10201.  TR_EXPR local0;
  10202.  if ((self==((TR_HERE_EXPR) NULL))) {
  10203.   return 0;
  10204.  }
  10205.  r_7249 = 1;
  10206.  n_7250 = self->next_8;
  10207.  while (1) {
  10208.   if ((n_7250==((TR_EXPR) NULL))) {
  10209.    goto after_loop;
  10210.   }
  10211.   r_7249 = (c_INT_plus_INT_INT_chk(r_7249,1));
  10212.   local0 = n_7250;
  10213.   n_7250 = (*TR_EXPR_next_TR_EXPR[local0->header.tag+TR_EXPR_next_TR_EXPR_offset])(local0);
  10214.  }
  10215.  after_loop: ;
  10216.  return r_7249;
  10217. }
  10218.  
  10219.  
  10220. INT TR_CHAR_LIT_EXPR_7252(TR_CHAR_LIT_EXPR self) {
  10221.  INT noname7253 = ((INT) 0);
  10222.  INT r_7254 = ((INT) 0);
  10223.  TR_EXPR n_7255;
  10224.  TR_EXPR local0;
  10225.  if ((self==((TR_CHAR_LIT_EXPR) NULL))) {
  10226.   return 0;
  10227.  }
  10228.  r_7254 = 1;
  10229.  n_7255 = self->next_8;
  10230.  while (1) {
  10231.   if ((n_7255==((TR_EXPR) NULL))) {
  10232.    goto after_loop;
  10233.   }
  10234.   r_7254 = (c_INT_plus_INT_INT_chk(r_7254,1));
  10235.   local0 = n_7255;
  10236.   n_7255 = (*TR_EXPR_next_TR_EXPR[local0->header.tag+TR_EXPR_next_TR_EXPR_offset])(local0);
  10237.  }
  10238.  after_loop: ;
  10239.  return r_7254;
  10240. }
  10241.