home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / sa104os2.zip / SATHR104.ZIP / SATHER / BOOT / CS.COD / CODE3.C < prev    next >
C/C++ Source or Header  |  1995-02-15  |  258KB  |  9,088 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. SIG SIG_bound_iter_c(SIG self, TP_ITER tp_3398) {
  11.  SIG noname3399;
  12.  SIG r_3400;
  13.  SIG local0;
  14.  if (!((!((tp_3398==((TP_ITER) NULL)))))) {
  15.   fprintf(stderr,"Violation of precondition ./sig.sa:262:18\n");
  16.   exit(16);
  17.  }
  18.  local0 = ((SIG) sbi_alloc(sizeof(struct SIG_struct), SIG_tag));
  19.  r_3400 = local0;
  20.  r_3400->tp = ((TP) tp_3398);
  21.  r_3400->name_19 = PROG_ident_for_S(tp_3398->prog, ((STR) &call_3401));
  22.  r_3400->args_7 = tp_3398->args_7;
  23.  r_3400->hot = tp_3398->hot;
  24.  r_3400->ret = tp_3398->ret;
  25.  SIG_do_is_builtin(r_3400);
  26.  return r_3400;
  27. }
  28.  
  29.  
  30. IFC IFC_ifc_for_iter(IFC self, TP_ITER t_3402) {
  31.  IFC noname3403;
  32.  IFC r_3404;
  33.  IFC local0;
  34.  SIG_TBL local1;
  35.  if (!((!((t_3402==((TP_ITER) NULL)))))) {
  36.   fprintf(stderr,"Violation of precondition ./ifc.sa:103:15\n");
  37.   exit(16);
  38.  }
  39.  local0 = ((IFC) sbi_alloc(sizeof(struct IFC_struct), IFC_tag));
  40.  r_3404 = local0;
  41.  r_3404->tp = ((TP) t_3402);
  42.  local1 = r_3404->sigs;
  43.  r_3404->sigs = SIG_TBL_insert_S(local1, SIG_bound_iter_c(((SIG) NULL), t_3402));
  44.  return r_3404;
  45. }
  46.  
  47.  
  48. TUPTPIFC TUPTPIFC_t1_TP_T(TUPTPIFC self, TP t1_3405) {
  49.  TUPTPIFC local0;
  50.  local0 = self;
  51.  local0.t1 = t1_3405;
  52.  return local0;
  53. }
  54.  
  55.  
  56. TUPTPIFC TUPTPIFC_t2_IFC_(TUPTPIFC self, IFC t2_3406) {
  57.  TUPTPIFC local0;
  58.  local0 = self;
  59.  local0.t2 = t2_3406;
  60.  return local0;
  61. }
  62.  
  63.  
  64. TUPTPIFC TUPTPIFC_create_(TUPTPIFC self, TP at1, IFC at2) {
  65.  TUPTPIFC noname3407 = TUPTPIFC_zero;
  66.  TUPTPIFC local0;
  67.  local0 = TUPTPIFC_t1_TP_T(self, at1);
  68.  return TUPTPIFC_t2_IFC_(local0, at2);
  69. }
  70.  
  71.  
  72. FMAPTPIFC FMAPTPIFC_alloca(FMAPTPIFC self, INT n_3408) {
  73.  FMAPTPIFC noname3409;
  74.  FMAPTPIFC r_3410;
  75.  FMAPTPIFC noname3411;
  76.  FMAPTPIFC local0;
  77.  TUPTPIFC local1;
  78.  TP local2;
  79.  local0 = ((FMAPTPIFC) sbi_arr_alloc(sizeof(struct FMAPTPIFC_struct), FMAPTPIFC_tag, sizeof(TUPTPIFC) , n_3408));
  80.  local0->asize = n_3408;
  81.  r_3410 = local0;
  82.  if ((!((FMAPTPIFC_key_nil_TP(self)==((TP) NULL))))) {
  83.   {
  84.    struct FMAPTPIFC_aset_T_frame_struct temp3412_0;
  85.    FMAPTPIFC_aset_T_frame 
  86.    noname3413 = &temp3412_0;
  87.    noname3413->state = 0;
  88.    while (1) {
  89.     if (noname3413->state == 0) {
  90.      noname3411 = r_3410;
  91.      noname3413->arg0 = noname3411;
  92.     }
  93.     local1 = TUPTPIFC_zero;
  94.     local2 = FMAPTPIFC_key_nil_TP(self);
  95.     noname3413->arg1 = TUPTPIFC_create_(local1, local2, ((IFC) NULL));
  96.     FMAPTPIFC_aset_T(noname3413);
  97.     if (noname3413->state == -1) goto after_loop;
  98.     0 /* No return value from iter call */;
  99.    }
  100.   }
  101.   after_loop: ;
  102.  }
  103.  return r_3410;
  104. }
  105.  
  106.  
  107. FMAPTPIFC FMAPTPIFC_insert(FMAPTPIFC self, TUPTPIFC p) {
  108.  FMAPTPIFC noname3414;
  109.  return FMAPTPIFC_insert_3415(self, p.t1, p.t2);
  110.  if (!FMAPTPIFC_invari(self)) {
  111.   fprintf(stderr,"Failed invariant FMAP{$TP,IFC}::invariant:BOOL ../Library/fmap.sa:202:14\n");
  112.   exit(16);
  113.  }
  114. }
  115.  
  116.  
  117. FMAPTPIFC FMAPTPIFC_double(FMAPTPIFC self) {
  118.  FMAPTPIFC noname3416;
  119.  INT ns = ((INT) 0);
  120.  FMAPTPIFC r_3417;
  121.  FMAPTPIFC noname3418;
  122.  INT local0;
  123.  INT local1;
  124.  INT local2;
  125.  TUPTPIFC local3;
  126.  if (!((!((self==((FMAPTPIFC) NULL)))))) {
  127.   fprintf(stderr,"Violation of precondition ../Library/fmap.sa:172:22\n");
  128.   exit(16);
  129.  }
  130.  local0 = (self->asize);
  131.  local1 = (c_INT_minus_INT_INT_chk(local0,1));
  132.  local2 = (c_INT_times_INT_INT_chk(local1,2));
  133.  ns = (c_INT_plus_INT_INT_chk(local2,1));
  134.  r_3417 = FMAPTPIFC_alloca(self, ns);
  135.  {
  136.   struct FMAPTPIFC_pairs__frame_struct temp3419_0;
  137.   FMAPTPIFC_pairs__frame 
  138.   noname3420 = &temp3419_0;
  139.   noname3420->state = 0;
  140.   while (1) {
  141.    if (noname3420->state == 0) {
  142.     noname3418 = self;
  143.     noname3420->arg0 = noname3418;
  144.    }
  145.    local3 = FMAPTPIFC_pairs_(noname3420);
  146.    if (noname3420->state == -1) goto after_loop;
  147.    r_3417 = FMAPTPIFC_insert(r_3417, local3);
  148.   }
  149.  }
  150.  after_loop: ;
  151.  return r_3417;
  152. }
  153.  
  154.  
  155. void FMAPTPIFC_aset_I(FMAPTPIFC self, INT ind_3421, TUPTPIFC val_3422) {
  156.  BOOL local0;
  157.  INT local1;
  158.  INT local2;
  159.  if ((!((self==((FMAPTPIFC) NULL))))) {
  160.   local1 = 0;
  161.   local2 = (self->asize);
  162.   local0 = INT_is_bet_INT_I(ind_3421, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  163.  } else {
  164.   local0 = FALSE;
  165.  }
  166.  if (!(local0)) {
  167.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  168.   exit(16);
  169.  }
  170.  if (ind_3421<0||ind_3421>=self->asize) {
  171.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  172.   exit(16);
  173.  }
  174.  self->arr_part[ind_3421] = val_3422;
  175. }
  176.  
  177.  
  178. FMAPTPIFC FMAPTPIFC_insert_3415(FMAPTPIFC self, TP k, IFC t_3423) {
  179.  FMAPTPIFC noname3424;
  180.  FMAPTPIFC r_3425;
  181.  INT h = ((INT) 0);
  182.  INT asm_3426 = ((INT) 0);
  183.  TP tk;
  184.  TP tk_3427;
  185.  INT local0;
  186.  INT local1;
  187.  INT local2;
  188.  INT local3;
  189.  INT local4;
  190.  r_3425 = self;
  191.  if ((r_3425==((FMAPTPIFC) NULL))) {
  192.   r_3425 = FMAPTPIFC_alloca(self, 5);
  193.  }
  194.  else {
  195.   local0 = (c_INT_plus_INT_INT_chk(self->hsize,1));
  196.   local1 = (c_INT_times_INT_INT_chk(local0,2));
  197.   if ((local1>(self->asize))) {
  198.    r_3425 = FMAPTPIFC_double(self);
  199.   }
  200.  }
  201.  local2 = FMAPTPIFC_key_ha(r_3425, k);
  202.  local3 = (r_3425->asize);
  203.  h = (local2&(c_INT_minus_INT_INT_chk(local3,2)));
  204.  local4 = (r_3425->asize);
  205.  asm_3426 = (c_INT_minus_INT_INT_chk(local4,1));
  206.  while (1) {
  207.   tk = (TUPTPIFC_blob=FMAPTPIFC_aget_I(r_3425, h)).t1;
  208.   if (FMAPTPIFC_key_eq(self, tk, FMAPTPIFC_key_nil_TP(self))) {
  209.    goto after_loop;
  210.   }
  211.   if (FMAPTPIFC_key_eq(self, tk, k)) {
  212.    FMAPTPIFC_aset_I(r_3425, h, TUPTPIFC_create_(TUPTPIFC_zero, k, t_3423));
  213.    return r_3425;
  214.   }
  215.   h = (c_INT_plus_INT_INT_chk(h,1));
  216.  }
  217.  after_loop: ;
  218.  if ((h==asm_3426)) {
  219.   h = 0;
  220.   while (1) {
  221.    tk_3427 = (TUPTPIFC_blob=FMAPTPIFC_aget_I(r_3425, h)).t1;
  222.    if (FMAPTPIFC_key_eq(self, tk_3427, FMAPTPIFC_key_nil_TP(self))) {
  223.     goto after_loop_3429;
  224.    }
  225.    if (FMAPTPIFC_key_eq(self, tk_3427, k)) {
  226.     FMAPTPIFC_aset_I(r_3425, h, TUPTPIFC_create_(TUPTPIFC_zero, k, t_3423));
  227.     return r_3425;
  228.    }
  229.    h = (c_INT_plus_INT_INT_chk(h,1));
  230.   }
  231.   after_loop_3429: ;
  232.   if (!((h!=asm_3426))) {
  233.    fprintf(stderr,"Violation of assertion ../Library/fmap.sa:199:15\n");
  234.    exit(16);
  235.   }
  236.  }
  237.  FMAPTPIFC_aset_I(r_3425, h, TUPTPIFC_create_(TUPTPIFC_zero, k, t_3423));
  238.  r_3425->hsize = (c_INT_plus_INT_INT_chk(r_3425->hsize,1));
  239.  return r_3425;
  240.  if (!FMAPTPIFC_invari(self)) {
  241.   fprintf(stderr,"Failed invariant FMAP{$TP,IFC}::invariant:BOOL ../Library/fmap.sa:180:9\n");
  242.   exit(16);
  243.  }
  244. }
  245.  
  246.  
  247. IFC IFC_TBL_ifc_of_T(IFC_TBL self, TP t_3431) {
  248.  IFC noname3432;
  249.  IFC r_3433;
  250.  TUPIDENTINT cq = TUPIDENTINT_zero;
  251.  IMPL im;
  252.  TUPIDENTINT local0;
  253.  IDENT local1;
  254.  if (!((!((t_3431==((TP) NULL)))))) {
  255.   fprintf(stderr,"Violation of precondition ./ifc.sa:137:9\n");
  256.   exit(16);
  257.  }
  258.  r_3433 = FMAPTPIFC_get_TP_IFC(self->tbl, t_3431);
  259.  if ((!((r_3433==((IFC) NULL))))) {
  260.   return r_3433;
  261.  }
  262.  if (t_3431==NULL) {
  263.  } else
  264.  switch (t_3431->header.tag) {
  265.   case TP_CLASS_tag:
  266.    if (TP_CLASS_is_abst(((TP_CLASS) t_3431))) {
  267.     local0 = TUPIDENTINT_zero;
  268.     local1 = ((TP_CLASS) t_3431)->name_19;
  269.     cq = TUPIDENTINT_crea(local0, local1, ARRAYTP_size_INT(((TP_CLASS) t_3431)->params));
  270.     if (FSETTUPIDENTINT__2348(self->abs_cur, cq)) {
  271.      IFC_TBL_cycle_err(self);
  272.      self->abs_cur = FSETTUPIDENTINT__2374(self->abs_cur);
  273.     }
  274.     else {
  275.      self->abs_cur = FSETTUPIDENTINT__2394(self->abs_cur, cq);
  276.      r_3433 = IFC_ABS_CREATE_i(((IFC_ABS_CREATE) NULL), ((TP_CLASS) t_3431));
  277.      self->abs_cur = FSETTUPIDENTINT__2886(self->abs_cur, cq);
  278.     }
  279.    }
  280.    else {
  281.     im = IMPL_TBL_impl_of(self->prog->impl_tbl, t_3431);
  282.     if ((im==((IMPL) NULL))) {
  283.      r_3433 = ((IFC) NULL);
  284.     }
  285.     else {
  286.      r_3433 = im->ifc;
  287.     }
  288.    } break;
  289.   case TP_ROUT_tag:
  290.    r_3433 = IFC_ifc_for_rout(((IFC) NULL), ((TP_ROUT) t_3431)); break;
  291.   case TP_ITER_tag:
  292.    r_3433 = IFC_ifc_for_iter(((IFC) NULL), ((TP_ITER) t_3431)); break;
  293.   default: ;
  294.    fprintf(stderr,"No applicable type in typecase ./ifc.sa:143:14\n");
  295.    exit(16);
  296.  }
  297.  if ((r_3433==((IFC) NULL))) {
  298.   PROG_err_STR(self->prog, ((STR) &CompilererrorIFC_3434));
  299.  }
  300.  self->tbl = FMAPTPIFC_insert_3415(self->tbl, t_3431, r_3433);
  301.  return r_3433;
  302. }
  303.  
  304.  
  305. void IFC_show(IFC self) {
  306.  SIG_TBL noname3435;
  307.  SIG s_3436;
  308.  STR noname3437;
  309.  OUT local0;
  310.  OUT local1;
  311.  OUT local2;
  312.  OUT local3;
  313.  TP local4;
  314.  OUT local5;
  315.  OUT local6;
  316.  SIG local7;
  317.  OUT local8;
  318.  STR local9;
  319.  OUT local10;
  320.  if ((self==((IFC) NULL))) {
  321.   local0 = OUT_create_OUT(((OUT) NULL));
  322.   OUT_plus_STR(local0, ((STR) &Interfacevoid));
  323.   return;
  324.  }
  325.  if ((self->tp==((TP) NULL))) {
  326.   local1 = OUT_create_OUT(((OUT) NULL));
  327.   OUT_plus_STR(local1, ((STR) &Interfacetpvoid));
  328.   return;
  329.  }
  330.  local2 = OUT_create_OUT(((OUT) NULL));
  331.  local3 = OUT_plus_STR_OUT(local2, ((STR) &Interfaceof));
  332.  local4 = self->tp;
  333.  local5 = OUT_plus_STR_OUT(local3, (*TP_str_STR[local4->header.tag+TP_str_STR_offset])(local4));
  334.  OUT_plus_STR(local5, ((STR) &name_3438));
  335.  if ((self->sigs==((SIG_TBL) NULL))) {
  336.   local6 = OUT_create_OUT(((OUT) NULL));
  337.   OUT_plus_STR(local6, ((STR) &void_3439));
  338.   return;
  339.  }
  340.  {
  341.   struct SIG_TBL_elt_SIG_frame_struct temp3440_0;
  342.   SIG_TBL_elt_SIG_frame 
  343.   noname3441 = &temp3440_0;
  344.   struct STR_separate_STR_STR_frame_struct temp3440_1;
  345.   STR_separate_STR_STR_frame 
  346.   noname3442 = &temp3440_1;
  347.   noname3441->state = 0;
  348.   noname3442->state = 0;
  349.   while (1) {
  350.    if (noname3441->state == 0) {
  351.     noname3435 = self->sigs;
  352.     noname3441->arg0 = noname3435;
  353.    }
  354.    local7 = SIG_TBL_elt_SIG(noname3441);
  355.    if (noname3441->state == -1) goto after_loop;
  356.    s_3436 = local7;
  357.    if ((!((s_3436==((SIG) NULL))))) {
  358.     local8 = OUT_create_OUT(((OUT) NULL));
  359.     if (noname3442->state == 0) {
  360.      noname3437 = ((STR) &name_3443);
  361.      noname3442->arg0 = noname3437;
  362.     }
  363.     noname3442->arg1 = SIG_str_STR(s_3436);
  364.     local9 = STR_separate_STR_STR(noname3442);
  365.     if (noname3442->state == -1) goto after_loop;
  366.     OUT_plus_STR(local8, local9);
  367.    }
  368.   }
  369.  }
  370.  after_loop: ;
  371.  local10 = OUT_create_OUT(((OUT) NULL));
  372.  OUT_plus_STR(local10, ((STR) &name_3444));
  373. }
  374.  
  375.  
  376. BOOL SIG_conforms_to_(SIG self, SIG s_3445) {
  377.  BOOL noname3446 = ((BOOL) 0);
  378.  ARRAYBOOL noname3447;
  379.  ARRAYBOOL noname3448;
  380.  ARRAYTP noname3449;
  381.  ARRAYTP noname3450;
  382.  BOOL local0;
  383.  BOOL local1;
  384.  BOOL local2;
  385.  BOOL local3;
  386.  INT local4;
  387.  INT local5;
  388.  BOOL local6;
  389.  BOOL local7;
  390.  BOOL local8;
  391.  BOOL local9;
  392.  TP local10;
  393.  TP local11;
  394.  TP local12;
  395.  TP local13;
  396.  BOOL local14;
  397.  TP local15;
  398.  if ((!((self==((SIG) NULL))))) {
  399.   local0 = (!((s_3445==((SIG) NULL))));
  400.  } else {
  401.   local0 = FALSE;
  402.  }
  403.  if (!(local0)) {
  404.   fprintf(stderr,"Violation of precondition ./sig.sa:87:14\n");
  405.   exit(16);
  406.  }
  407.  if (IDENT_is_neq_IDE(self->name_19, s_3445->name_19)) {
  408.   local3 = TRUE;
  409.  } else {
  410.   local4 = ARRAYTP_size_INT(self->args_7);
  411.   local3 = (local4!=ARRAYTP_size_INT(s_3445->args_7));
  412.  }
  413.  if (local3) {
  414.   local2 = TRUE;
  415.  } else {
  416.   local5 = ARRAYBOOL_size_INT(self->hot);
  417.   local2 = (local5!=ARRAYBOOL_size_INT(s_3445->hot));
  418.  }
  419.  if (local2) {
  420.   local1 = TRUE;
  421.  } else {
  422.   local6 = SIG_has_ret_BOOL(self);
  423.   local1 = ((local6)!=(SIG_has_ret_BOOL(s_3445)));
  424.  }
  425.  if (local1) {
  426.   return FALSE;
  427.  }
  428.  {
  429.   struct ARRAYBOOL_elt_BOOL_frame_struct temp3451_0;
  430.   ARRAYBOOL_elt_BOOL_frame 
  431.   noname3452 = &temp3451_0;
  432.   struct ARRAYBOOL_elt_BOOL_frame_struct temp3451_1;
  433.   ARRAYBOOL_elt_BOOL_frame 
  434.   noname3453 = &temp3451_1;
  435.   noname3452->state = 0;
  436.   noname3453->state = 0;
  437.   while (1) {
  438.    if (noname3452->state == 0) {
  439.     noname3447 = self->hot;
  440.     noname3452->arg0 = noname3447;
  441.    }
  442.    local7 = ARRAYBOOL_elt_BOOL(noname3452);
  443.    if (noname3452->state == -1) goto after_loop;
  444.    local8 = local7;
  445.    if (noname3453->state == 0) {
  446.     noname3448 = s_3445->hot;
  447.     noname3453->arg0 = noname3448;
  448.    }
  449.    local9 = ARRAYBOOL_elt_BOOL(noname3453);
  450.    if (noname3453->state == -1) goto after_loop;
  451.    if (((local8)!=(local9))) {
  452.     return FALSE;
  453.    }
  454.   }
  455.  }
  456.  after_loop: ;
  457.  {
  458.   struct ARRAYTP_elt_TP_frame_struct temp3455_0;
  459.   ARRAYTP_elt_TP_frame 
  460.   noname3456 = &temp3455_0;
  461.   struct ARRAYTP_elt_TP_frame_struct temp3455_1;
  462.   ARRAYTP_elt_TP_frame 
  463.   noname3457 = &temp3455_1;
  464.   noname3456->state = 0;
  465.   noname3457->state = 0;
  466.   while (1) {
  467.    if (noname3456->state == 0) {
  468.     noname3449 = s_3445->args_7;
  469.     noname3456->arg0 = noname3449;
  470.    }
  471.    local10 = ARRAYTP_elt_TP(noname3456);
  472.    if (noname3456->state == -1) goto after_loop_3454;
  473.    local11 = local10;
  474.    if (noname3457->state == 0) {
  475.     noname3450 = self->args_7;
  476.     noname3457->arg0 = noname3450;
  477.    }
  478.    local12 = ARRAYTP_elt_TP(noname3457);
  479.    if (noname3457->state == -1) goto after_loop_3454;
  480.    local13 = local11;
  481.    if ((!((*TP_is_subtype_TP[local13->header.tag+TP_is_subtype_TP_offset])(local13, local12)))) {
  482.     return FALSE;
  483.    }
  484.   }
  485.  }
  486.  after_loop_3454: ;
  487.  if (SIG_has_ret_BOOL(self)) {
  488.   local15 = self->ret;
  489.   local14 = (!((*TP_is_subtype_TP[local15->header.tag+TP_is_subtype_TP_offset])(local15, s_3445->ret)));
  490.  } else {
  491.   local14 = FALSE;
  492.  }
  493.  if (local14) {
  494.   return FALSE;
  495.  }
  496.  return TRUE;
  497. }
  498.  
  499.  
  500. SIG IFC_sig_conformi(IFC self, SIG s_3458) {
  501.  SIG noname3459;
  502.  SIG_TBL noname3460;
  503.  IDENT noname3461 = IDENT_zero;
  504.  SIG ts;
  505.  BOOL local0;
  506.  SIG local1;
  507.  if ((!((self==((IFC) NULL))))) {
  508.   local0 = (!((s_3458==((SIG) NULL))));
  509.  } else {
  510.   local0 = FALSE;
  511.  }
  512.  if (!(local0)) {
  513.   fprintf(stderr,"Violation of precondition ./ifc.sa:29:20\n");
  514.   exit(16);
  515.  }
  516.  {
  517.   struct SIG_TBL_get_quer_frame_struct temp3462_0;
  518.   SIG_TBL_get_quer_frame 
  519.   noname3463 = &temp3462_0;
  520.   noname3463->state = 0;
  521.   while (1) {
  522.    if (noname3463->state == 0) {
  523.     noname3460 = self->sigs;
  524.     noname3461 = s_3458->name_19;
  525.     noname3463->arg0 = noname3460;
  526.     noname3463->arg1 = noname3461;
  527.    }
  528.    local1 = SIG_TBL_get_quer(noname3463);
  529.    if (noname3463->state == -1) goto after_loop;
  530.    ts = local1;
  531.    if (SIG_conforms_to_(ts, s_3458)) {
  532.     return ts;
  533.    }
  534.   }
  535.  }
  536.  after_loop: ;
  537.  return ((SIG) NULL);
  538. }
  539.  
  540.  
  541. SIG IFC_nonconformin(IFC self, IFC i) {
  542.  SIG noname3464;
  543.  SIG_TBL noname3465;
  544.  SIG s_3466;
  545.  BOOL local0;
  546.  SIG local1;
  547.  if ((!((self==((IFC) NULL))))) {
  548.   local0 = (!((i==((IFC) NULL))));
  549.  } else {
  550.   local0 = FALSE;
  551.  }
  552.  if (!(local0)) {
  553.   fprintf(stderr,"Violation of precondition ./ifc.sa:45:20\n");
  554.   exit(16);
  555.  }
  556.  {
  557.   struct SIG_TBL_elt_SIG_frame_struct temp3467_0;
  558.   SIG_TBL_elt_SIG_frame 
  559.   noname3468 = &temp3467_0;
  560.   noname3468->state = 0;
  561.   while (1) {
  562.    if (noname3468->state == 0) {
  563.     noname3465 = i->sigs;
  564.     noname3468->arg0 = noname3465;
  565.    }
  566.    local1 = SIG_TBL_elt_SIG(noname3468);
  567.    if (noname3468->state == -1) goto after_loop;
  568.    s_3466 = local1;
  569.    if ((IFC_sig_conformi(self, s_3466)==((SIG) NULL))) {
  570.     return s_3466;
  571.    }
  572.   }
  573.  }
  574.  after_loop: ;
  575.  return ((SIG) NULL);
  576. }
  577.  
  578.  
  579. BOOL IFC_conforms_to_(IFC self, IFC i) {
  580.  BOOL noname3469 = ((BOOL) 0);
  581.  return (IFC_nonconformin(self, i)==((SIG) NULL));
  582. }
  583.  
  584.  
  585. void PROG_IFC_CONFORM_3470(PROG_IFC_CONFORMANCE self) {
  586.  FSETTP noname3471;
  587.  TP tp_3472;
  588.  IFC ti;
  589.  TP_CLASS par;
  590.  FSETTP_CLASS noname3473;
  591.  SIG ncs;
  592.  TP chld;
  593.  FSETTP noname3474;
  594.  TP local0;
  595.  PROG local1;
  596.  STR local2;
  597.  STR local3;
  598.  TP_CLASS local4;
  599.  PROG local5;
  600.  STR local6;
  601.  STR local7;
  602.  STR local8;
  603.  STR local9;
  604.  STR local10;
  605.  STR local11;
  606.  TP local12;
  607.  IFC local13;
  608.  PROG local14;
  609.  STR local15;
  610.  STR local16;
  611.  STR local17;
  612.  STR local18;
  613.  PROG_err_loc_PRO(self->prog, ((PROG_ERR) NULL));
  614.  {
  615.   struct FSETTP_elt_TP_frame_struct temp3475_0;
  616.   FSETTP_elt_TP_frame 
  617.   noname3476 = &temp3475_0;
  618.   noname3476->state = 0;
  619.   while (1) {
  620.    if (noname3476->state == 0) {
  621.     noname3471 = self->prog->prog_find_types->tp_done;
  622.     noname3476->arg0 = noname3471;
  623.    }
  624.    local0 = FSETTP_elt_TP(noname3476);
  625.    if (noname3476->state == -1) goto after_loop;
  626.    tp_3472 = local0;
  627.    if (tp_3472==NULL) {
  628.    } else
  629.    switch (tp_3472->header.tag) {
  630.     case TP_CLASS_tag:
  631.      ti = IFC_TBL_ifc_of_T(self->prog->ifc_tbl, tp_3472);
  632.      if ((ti==((IFC) NULL))) {
  633.       local1 = self->prog;
  634.       local2 = ((STR) &Cantcomputeinter);
  635.       local3 = STR_plus_STR_STR(local2, TP_CLASS_str_STR(((TP_CLASS) tp_3472)));
  636.       PROG_err_STR(local1, STR_plus_STR_STR(local3, ((STR) &name_3477)));
  637.       return;
  638.      }
  639.      if (self->prog->show_ifc) {
  640.       IFC_show(ti);
  641.      }
  642.      {
  643.       struct FSETTP_CLASS_elt_3006_frame_struct temp3479_0;
  644.       FSETTP_CLASS_elt_3006_frame 
  645.       noname3480 = &temp3479_0;
  646.       noname3480->state = 0;
  647.       while (1) {
  648.        if (noname3480->state == 0) {
  649.         noname3473 = TP_GRAPH_ANC_get(self->prog->tp_graph->anc, ((TP_CLASS) tp_3472));
  650.         noname3480->arg0 = noname3473;
  651.        }
  652.        local4 = FSETTP_CLASS_elt_3006(noname3480);
  653.        if (noname3480->state == -1) goto after_loop_3478;
  654.        par = local4;
  655.        ncs = IFC_nonconformin(ti, IFC_TBL_ifc_of_T(self->prog->ifc_tbl, ((TP) par)));
  656.        if ((!((ncs==((SIG) NULL))))) {
  657.         local5 = self->prog;
  658.         local6 = ((STR) &Theinterfaceoftype);
  659.         local7 = STR_plus_STR_STR(local6, TP_CLASS_str_STR(((TP_CLASS) tp_3472)));
  660.         local8 = STR_plus_STR_STR(local7, ((STR) &doesnthaveasigna));
  661.         local9 = STR_plus_STR_STR(local8, SIG_str_STR(ncs));
  662.         local10 = STR_plus_STR_STR(local9, ((STR) &initsparent));
  663.         local11 = STR_plus_STR_STR(local10, TP_CLASS_str_STR(par));
  664.         PROG_err_STR(local5, STR_plus_STR_STR(local11, ((STR) &name_3481)));
  665.        }
  666.       }
  667.      }
  668.      after_loop_3478: ;
  669.      {
  670.       struct FSETTP_elt_TP_frame_struct temp3483_0;
  671.       FSETTP_elt_TP_frame 
  672.       noname3484 = &temp3483_0;
  673.       noname3484->state = 0;
  674.       while (1) {
  675.        if (noname3484->state == 0) {
  676.         noname3474 = TP_GRAPH_DES_get(self->prog->tp_graph->des_15, ((TP_CLASS) tp_3472));
  677.         noname3484->arg0 = noname3474;
  678.        }
  679.        local12 = FSETTP_elt_TP(noname3484);
  680.        if (noname3484->state == -1) goto after_loop_3482;
  681.        chld = local12;
  682.        if (chld==NULL) {
  683.         goto after_loop_3482;
  684.        } else
  685.        switch (chld->header.tag) {
  686.         case TP_CLASS_tag:
  687.          local13 = IFC_TBL_ifc_of_T(self->prog->ifc_tbl, chld);
  688.          if ((!(IFC_conforms_to_(local13, ti)))) {
  689.           local14 = self->prog;
  690.           local15 = ((STR) &Theinterfaceofty_3485);
  691.           local16 = STR_plus_STR_STR(local15, TP_CLASS_str_STR(((TP_CLASS) tp_3472)));
  692.           local17 = STR_plus_STR_STR(local16, ((STR) &isntconformedtob));
  693.           local18 = STR_plus_STR_STR(local17, TP_CLASS_str_STR(((TP_CLASS) chld)));
  694.           PROG_err_STR(local14, STR_plus_STR_STR(local18, ((STR) &name_3486)));
  695.          } break;
  696.         default: ;
  697.          goto after_loop_3482;
  698.        }
  699.       }
  700.      }
  701.      after_loop_3482: ; break;
  702.     default: ;
  703.    }
  704.   }
  705.  }
  706.  after_loop: ;
  707. }
  708.  
  709.  
  710. void PROG_do_ifc_conf(PROG self) {
  711.  PROG_IFC_CONFORM_3470(self->prog_ifc_conformance);
  712. }
  713.  
  714.  
  715. void PROG_GET_MAIN_ge(PROG_GET_MAIN self, STR nm_3487) {
  716.  TP_CLASS mt;
  717.  IMPL im = ((IMPL) NULL);
  718.  IFC ifc_3488;
  719.  SIG msig = ((SIG) NULL);
  720.  SIG omsig = ((SIG) NULL);
  721.  SIG_TBL noname3489;
  722.  IDENT noname3490 = IDENT_zero;
  723.  PROG_PARSE local0;
  724.  IDENT local1;
  725.  PROG local2;
  726.  STR local3;
  727.  TP_TBL local4;
  728.  IDENT local5;
  729.  SIG local6;
  730.  PROG local7;
  731.  STR local8;
  732.  TP local9;
  733.  STR local10;
  734.  BOOL local11;
  735.  INT local12;
  736.  TP local13;
  737.  TP local14;
  738.  PROG local15;
  739.  STR local16;
  740.  STR local17;
  741.  BOOL local18;
  742.  TP local19;
  743.  PROG local20;
  744.  STR local21;
  745.  STR local22;
  746.  OUT local23;
  747.  OUT local24;
  748.  OUT local25;
  749.  local0 = self->prog->prog_parse;
  750.  local1 = PROG_ident_for_S(self->prog, nm_3487);
  751.  if ((PROG_PARSE_tree_(local0, local1, 0)==((TR_CLASS_DEF) NULL))) {
  752.   PROG_err_loc_PRO(self->prog, ((PROG_ERR) NULL));
  753.   local2 = self->prog;
  754.   local3 = STR_plus_STR_STR(((STR) &Thereisnotype), nm_3487);
  755.   PROG_err_STR(local2, STR_plus_STR_STR(local3, ((STR) &formain)));
  756.   return;
  757.  }
  758.  local4 = self->prog->tp_tbl;
  759.  local5 = PROG_ident_for_S(self->prog, nm_3487);
  760.  mt = TP_TBL_tp_class_(local4, local5, ((ARRAYTP) NULL));
  761.  im = IMPL_TBL_impl_of(self->prog->impl_tbl, ((TP) mt));
  762.  ifc_3488 = IFC_TBL_ifc_of_T(self->prog->ifc_tbl, ((TP) mt));
  763.  if ((ifc_3488==((IFC) NULL))) {
  764.   return;
  765.  }
  766.  {
  767.   struct SIG_TBL_get_quer_frame_struct temp3491_0;
  768.   SIG_TBL_get_quer_frame 
  769.   noname3492 = &temp3491_0;
  770.   noname3492->state = 0;
  771.   while (1) {
  772.    if (noname3492->state == 0) {
  773.     noname3489 = ifc_3488->sigs;
  774.     noname3490 = self->prog->ident_builtin->main_ident;
  775.     noname3492->arg0 = noname3489;
  776.     noname3492->arg1 = noname3490;
  777.    }
  778.    local6 = SIG_TBL_get_quer(noname3492);
  779.    if (noname3492->state == -1) goto after_loop;
  780.    msig = local6;
  781.    if ((!((omsig==((SIG) NULL))))) {
  782.     PROG_err_STR(self->prog, ((STR) &Theremayonlybeon));
  783.     return;
  784.    }
  785.    omsig = msig;
  786.   }
  787.  }
  788.  after_loop: ;
  789.  if ((msig==((SIG) NULL))) {
  790.   local7 = self->prog;
  791.   local8 = ((STR) &Noroutinenamedmainin);
  792.   local9 = ifc_3488->tp;
  793.   local10 = STR_plus_STR_STR(local8, (*TP_str_STR[local9->header.tag+TP_str_STR_offset])(local9));
  794.   PROG_err_STR(local7, STR_plus_STR_STR(local10, ((STR) &name_3493)));
  795.   return;
  796.  }
  797.  if ((!((msig->args_7==((ARRAYTP) NULL))))) {
  798.   local12 = ARRAYTP_size_INT(msig->args_7);
  799.   if ((local12!=1)) {
  800.    local11 = TRUE;
  801.   } else {
  802.    local13 = ARRAYTP_aget_INT_TP(msig->args_7, 0);
  803.    local14 = local13;
  804.    local11 = (*TP_is_neq_TP_BOOL[local14->header.tag+TP_is_neq_TP_BOOL_offset])(local14, ((TP) self->prog->tp_builtin->arr_of_str));
  805.   }
  806.   if (local11) {
  807.    local15 = self->prog;
  808.    local16 = ((STR) &Thesignatureofmain);
  809.    local17 = STR_plus_STR_STR(local16, SIG_str_STR(msig));
  810.    PROG_err_STR(local15, STR_plus_STR_STR(local17, ((STR) &doesnthavelegala)));
  811.    return;
  812.   }
  813.  }
  814.  else {
  815.   if ((!((msig->ret==((TP) NULL))))) {
  816.    local19 = msig->ret;
  817.    local18 = (*TP_is_neq_TP_BOOL[local19->header.tag+TP_is_neq_TP_BOOL_offset])(local19, ((TP) self->prog->tp_builtin->int_1));
  818.   } else {
  819.    local18 = FALSE;
  820.   }
  821.   if (local18) {
  822.    local20 = self->prog;
  823.    local21 = ((STR) &Thesignatureofma_3494);
  824.    local22 = STR_plus_STR_STR(local21, SIG_str_STR(msig));
  825.    PROG_err_STR(local20, STR_plus_STR_STR(local22, ((STR) &doesnthavealegal)));
  826.    return;
  827.   }
  828.  }
  829.  if (self->prog->show_main) {
  830.   local23 = OUT_create_OUT(((OUT) NULL));
  831.   local24 = OUT_plus_STR_OUT(local23, ((STR) &Mainsig));
  832.   local25 = OUT_plus_STR_OUT(local24, SIG_str_STR(msig));
  833.   OUT_plus_STR(local25, ((STR) &name_3495));
  834.  }
  835.  self->main_sig = msig;
  836. }
  837.  
  838.  
  839. void PROG_do_get_main(PROG self, STR nm_3496) {
  840.  PROG_GET_MAIN_ge(self->prog_get_main, nm_3496);
  841. }
  842.  
  843.  
  844. void FILE_create_dire(FILE_20 self, STR nm_3497) {
  845.  mkdirxx(((nm_3497==NULL)?NULL:nm_3497->arr_part));
  846. }
  847.  
  848.  
  849. void FILE_plus_CHAR(FILE_20 self, CHAR c_3498) {
  850.  if (!((!((self->fp==((EXT_OB) NULL)))))) {
  851.   fprintf(stderr,"Violation of precondition ../Library/file.sa:171:7\n");
  852.   exit(16);
  853.  }
  854.  fputc(c_3498, self->fp);
  855. }
  856.  
  857.  
  858. FILE_20 FILE_open_for_wr(FILE_20 self, STR nm_3499) {
  859.  FILE_20 noname3500;
  860.  FILE_20 r_3501;
  861.  FILE_20 local0;
  862.  local0 = ((FILE_20) sbi_alloc(sizeof(struct FILE_20_struct), FILE_20_tag));
  863.  r_3501 = local0;
  864.  r_3501->fp = fopen(((nm_3499==NULL)?NULL:nm_3499->arr_part), ((((STR) &w)==NULL)?NULL:((STR) &w)->arr_part));
  865.  return r_3501;
  866. }
  867.  
  868.  
  869. void BE_new_c_file(BE self) {
  870.  STR fn;
  871.  STR local0;
  872.  STR local1;
  873.  STR local2;
  874.  if ((!((self->code_c==((FILE_20) NULL))))) {
  875.   if (FILE_error_BOOL(self->code_c)) {
  876.    BE_barf_STR(self, ((STR) &Someproblemwriti));
  877.   }
  878.   else {
  879.    FILE_plus_CHAR(self->code_c, '\n');
  880.    FILE_close(self->code_c);
  881.   }
  882.  }
  883.  local0 = STR_plus_CHAR_STR(self->code_dir, '/');
  884.  local1 = STR_plus_STR_STR(local0, ((STR) &code_3502));
  885.  local2 = STR_plus_INT_STR(local1, self->code_c_count);
  886.  fn = STR_plus_STR_STR(local2, ((STR) &c_3503));
  887.  self->code_c = FILE_open_for_wr(((FILE_20) NULL), fn);
  888.  if (FILE_error_BOOL(self->code_c)) {
  889.   BE_barf_STR(self, STR_plus_STR_STR(((STR) &Couldntopenfile_3504), fn));
  890.  }
  891.  self->code_c_count = (c_INT_plus_INT_INT_chk(self->code_c_count,1));
  892.  (fwrite(((STR) &Ccodegeneratedby)->arr_part,((STR) &Ccodegeneratedby)->asize,1,self->code_c->fp));
  893.  (fwrite(((STR) &includesatherh)->arr_part,((STR) &includesatherh)->asize,1,self->code_c->fp));
  894.  (fwrite(((STR) &includestringsh)->arr_part,((STR) &includestringsh)->asize,1,self->code_c->fp));
  895. }
  896.  
  897.  
  898. FILE_20 FILE_plus_STR_FILE(FILE_20 self, STR s_3505) {
  899.  FILE_20 noname3506;
  900.  if (!((!((self->fp==((EXT_OB) NULL)))))) {
  901.   fprintf(stderr,"Violation of precondition ../Library/file.sa:163:7\n");
  902.   exit(16);
  903.  }
  904.  (fwrite(s_3505->arr_part,s_3505->asize,1,self->fp));
  905.  return self;
  906. }
  907.  
  908.  
  909. FMAPTPINT FMAPTPINT_create(FMAPTPINT self) {
  910.  FMAPTPINT noname3507;
  911.  return ((FMAPTPINT) NULL);
  912.  if (!FMAPTPINT_invari(self)) {
  913.   fprintf(stderr,"Failed invariant FMAP{$TP,INT}::invariant:BOOL ../Library/fmap.sa:79:9\n");
  914.   exit(16);
  915.  }
  916. }
  917.  
  918.  
  919. FLISTTP_CLASS FLISTTP_CLASS_cr(FLISTTP_CLASS self) {
  920.  FLISTTP_CLASS noname3508;
  921.  return ((FLISTTP_CLASS) NULL);
  922.  if (!FLISTTP_CLASS_in(self)) {
  923.   fprintf(stderr,"Failed invariant FLIST{TP_CLASS}::invariant:BOOL ../Library/flist.sa:55:9\n");
  924.   exit(16);
  925.  }
  926. }
  927.  
  928.  
  929. INT FLISTTP_CLASS_as(FLISTTP_CLASS self) {
  930.  INT noname3509 = ((INT) 0);
  931.   return self->asize;
  932.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  933.  exit(16);
  934. }
  935.  
  936.  
  937. INT FLISTTP_CLASS_si(FLISTTP_CLASS self) {
  938.  INT noname3510 = ((INT) 0);
  939.  if ((self==((FLISTTP_CLASS) NULL))) {
  940.   return 0;
  941.  }
  942.  return self->loc_17;
  943.  if (!FLISTTP_CLASS_in(self)) {
  944.   fprintf(stderr,"Failed invariant FLIST{TP_CLASS}::invariant:BOOL ../Library/flist.sa:50:7\n");
  945.   exit(16);
  946.  }
  947. }
  948.  
  949.  
  950. BOOL FLISTTP_CLASS_is(FLISTTP_CLASS self) {
  951.  BOOL noname3511 = ((BOOL) 0);
  952.  INT local0;
  953.  local0 = FLISTTP_CLASS_si(self);
  954.  return (local0==0);
  955.  if (!FLISTTP_CLASS_in(self)) {
  956.   fprintf(stderr,"Failed invariant FLIST{TP_CLASS}::invariant:BOOL ../Library/flist.sa:113:11\n");
  957.   exit(16);
  958.  }
  959. }
  960.  
  961.  
  962. void FLISTTP_CLASS_aclear(FLISTTP_CLASS self) {
  963.  TP_CLASS nil = ((TP_CLASS) NULL);
  964.  FLISTTP_CLASS noname3512;
  965.  if (!((!((self==((FLISTTP_CLASS) NULL)))))) {
  966.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:43:9\n");
  967.   exit(16);
  968.  }
  969.  {
  970.   struct FLISTTP_CLASS_as_3514_frame_struct temp3513_0;
  971.   FLISTTP_CLASS_as_3514_frame 
  972.   noname3515 = &temp3513_0;
  973.   noname3515->state = 0;
  974.   while (1) {
  975.    if (noname3515->state == 0) {
  976.     noname3512 = self;
  977.     noname3515->arg0 = noname3512;
  978.    }
  979.    noname3515->arg1 = nil;
  980.    FLISTTP_CLASS_as_3514(noname3515);
  981.    if (noname3515->state == -1) goto after_loop;
  982.    0 /* No return value from iter call */;
  983.   }
  984.  }
  985.  after_loop: ;
  986. }
  987.  
  988.  
  989. void FLISTTP_CLASS_clear(FLISTTP_CLASS self) {
  990.  if (FLISTTP_CLASS_is(self)) {
  991.   return;
  992.  }
  993.  else {
  994.   FLISTTP_CLASS_aclear(self);
  995.   self->loc_17 = 0;
  996.  }
  997.  if (!FLISTTP_CLASS_in(self)) {
  998.   fprintf(stderr,"Failed invariant FLIST{TP_CLASS}::invariant:BOOL ../Library/flist.sa:117:8\n");
  999.   exit(16);
  1000.  }
  1001. }
  1002.  
  1003.  
  1004. void FLISTTP_CLASS_ar(FLISTTP_CLASS self, INT ind_3516, TP_CLASS val_3517) {
  1005.  BOOL local0;
  1006.  INT local1;
  1007.  INT local2;
  1008.  if ((!((self==((FLISTTP_CLASS) NULL))))) {
  1009.   local1 = 0;
  1010.   local2 = (self->asize);
  1011.   local0 = INT_is_bet_INT_I(ind_3516, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  1012.  } else {
  1013.   local0 = FALSE;
  1014.  }
  1015.  if (!(local0)) {
  1016.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  1017.   exit(16);
  1018.  }
  1019.  if (ind_3516<0||ind_3516>=self->asize) {
  1020.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  1021.   exit(16);
  1022.  }
  1023.  self->arr_part[ind_3516] = val_3517;
  1024. }
  1025.  
  1026.  
  1027. void FLISTTP_CLASS_as_3518(FLISTTP_CLASS self, INT ind_3519, TP_CLASS val_3520) {
  1028.  BOOL local0;
  1029.  INT local1;
  1030.  if ((!((self==((FLISTTP_CLASS) NULL))))) {
  1031.   local1 = 0;
  1032.   local0 = INT_is_bet_INT_I(ind_3519, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  1033.  } else {
  1034.   local0 = FALSE;
  1035.  }
  1036.  if (!(local0)) {
  1037.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:73:7\n");
  1038.   exit(16);
  1039.  }
  1040.  FLISTTP_CLASS_ar(self, ind_3519, val_3520);
  1041.  if (!FLISTTP_CLASS_in(self)) {
  1042.   fprintf(stderr,"Failed invariant FLIST{TP_CLASS}::invariant:BOOL ../Library/flist.sa:73:7\n");
  1043.   exit(16);
  1044.  }
  1045. }
  1046.  
  1047.  
  1048. FLISTTP_CLASS FLISTTP_CLASS_pu(FLISTTP_CLASS self, TP_CLASS e_3521) {
  1049.  FLISTTP_CLASS noname3522;
  1050.  FLISTTP_CLASS r_3523 = ((FLISTTP_CLASS) NULL);
  1051.  FLISTTP_CLASS noname3524;
  1052.  FLISTTP_CLASS noname3525;
  1053.  FLISTTP_CLASS local0;
  1054.  INT local1;
  1055.  FLISTTP_CLASS local2;
  1056.  INT local3;
  1057.  TP_CLASS local4;
  1058.  INT local5;
  1059.  if ((self==((FLISTTP_CLASS) NULL))) {
  1060.   local0 = ((FLISTTP_CLASS) sbi_arr_alloc(sizeof(struct FLISTTP_CLASS_struct), FLISTTP_CLASS_tag, sizeof(TP_CLASS) , 5));
  1061.   local0->asize = 5;
  1062.   r_3523 = local0;
  1063.  }
  1064.  else {
  1065.   local1 = self->loc_17;
  1066.   if ((local1<(self->asize))) {
  1067.    r_3523 = self;
  1068.   }
  1069.   else {
  1070.    local3 = 2;
  1071.    local2 = ((FLISTTP_CLASS) sbi_arr_alloc(sizeof(struct FLISTTP_CLASS_struct), FLISTTP_CLASS_tag, sizeof(TP_CLASS) , (c_INT_times_INT_INT_chk(local3,(self->asize)))));
  1072.    local2->asize = (c_INT_times_INT_INT_chk(local3,(self->asize)));
  1073.    r_3523 = local2;
  1074.    r_3523->loc_17 = self->loc_17;
  1075.    {
  1076.     struct FLISTTP_CLASS_el_frame_struct temp3526_0;
  1077.     FLISTTP_CLASS_el_frame 
  1078.     noname3527 = &temp3526_0;
  1079.     struct FLISTTP_CLASS_as_3514_frame_struct temp3526_1;
  1080.     FLISTTP_CLASS_as_3514_frame 
  1081.     noname3528 = &temp3526_1;
  1082.     noname3527->state = 0;
  1083.     noname3528->state = 0;
  1084.     while (1) {
  1085.      if (noname3528->state == 0) {
  1086.       noname3525 = r_3523;
  1087.       noname3528->arg0 = noname3525;
  1088.      }
  1089.      if (noname3527->state == 0) {
  1090.       noname3524 = self;
  1091.       noname3527->arg0 = noname3524;
  1092.      }
  1093.      local4 = FLISTTP_CLASS_el(noname3527);
  1094.      if (noname3527->state == -1) goto after_loop;
  1095.      noname3528->arg1 = local4;
  1096.      FLISTTP_CLASS_as_3514(noname3528);
  1097.      if (noname3528->state == -1) goto after_loop;
  1098.      0 /* No return value from iter call */;
  1099.     }
  1100.    }
  1101.    after_loop: ;
  1102.    FLISTTP_CLASS_clear(self);
  1103.   }
  1104.  }
  1105.  r_3523->loc_17 = (c_INT_plus_INT_INT_chk(r_3523->loc_17,1));
  1106.  local5 = (c_INT_minus_INT_INT_chk(r_3523->loc_17,1));
  1107.  FLISTTP_CLASS_as_3518(r_3523, local5, e_3521);
  1108.  return r_3523;
  1109.  if (!FLISTTP_CLASS_in(self)) {
  1110.   fprintf(stderr,"Failed invariant FLIST{TP_CLASS}::invariant:BOOL ../Library/flist.sa:79:7\n");
  1111.   exit(16);
  1112.  }
  1113. }
  1114.  
  1115.  
  1116. INT TP_CLASS_kind_INT(TP_CLASS self) {
  1117.  INT noname3529 = ((INT) 0);
  1118.  if ((self->kind_cache==shared_TP_KIND_m)) {
  1119.   self->kind_cache = PROG_tp_kind_TP_INT(self->prog, ((TP) self));
  1120.  }
  1121.  return self->kind_cache;
  1122. }
  1123.  
  1124.  
  1125. BOOL BE_is_built_in_t(BE self, TP t_3530) {
  1126.  BOOL noname3531 = ((BOOL) 0);
  1127.  return FSETTP_test_TP_BOOL(self->built_in_classes, t_3530);
  1128. }
  1129.  
  1130.  
  1131. OB FSETOB_elt_nil_OB(FSETOB self) {
  1132.  OB noname3532;
  1133.  OB t_3533 = ((OB) NULL);
  1134.  if (t_3533==NULL) {
  1135.  } else
  1136.  switch (t_3533->header.tag) {
  1137.   default: ;
  1138.  }
  1139.  return ((OB) NULL);
  1140.  if (!FSETOB_invariant(self)) {
  1141.   fprintf(stderr,"Failed invariant FSET{$OB}::invariant:BOOL ../Library/fset.sa:53:10\n");
  1142.   exit(16);
  1143.  }
  1144. }
  1145.  
  1146.  
  1147. FSETOB FSETOB_allocate_(FSETOB self, INT n_3534) {
  1148.  FSETOB noname3535;
  1149.  FSETOB r_3536;
  1150.  FSETOB noname3537;
  1151.  FSETOB local0;
  1152.  local0 = ((FSETOB) sbi_arr_alloc(sizeof(struct FSETOB_struct), FSETOB_tag, sizeof(OB) , n_3534));
  1153.  local0->asize = n_3534;
  1154.  r_3536 = local0;
  1155.  if ((!((FSETOB_elt_nil_OB(self)==((OB) NULL))))) {
  1156.   {
  1157.    struct FSETOB_aset_OB_frame_struct temp3538_0;
  1158.    FSETOB_aset_OB_frame 
  1159.    noname3539 = &temp3538_0;
  1160.    noname3539->state = 0;
  1161.    while (1) {
  1162.     if (noname3539->state == 0) {
  1163.      noname3537 = r_3536;
  1164.      noname3539->arg0 = noname3537;
  1165.     }
  1166.     noname3539->arg1 = FSETOB_elt_nil_OB(self);
  1167.     FSETOB_aset_OB(noname3539);
  1168.     if (noname3539->state == -1) goto after_loop;
  1169.     0 /* No return value from iter call */;
  1170.    }
  1171.   }
  1172.   after_loop: ;
  1173.  }
  1174.  return r_3536;
  1175. }
  1176.  
  1177.  
  1178. INT FSETOB_asize_INT(FSETOB self) {
  1179.  INT noname3540 = ((INT) 0);
  1180.   return self->asize;
  1181.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  1182.  exit(16);
  1183. }
  1184.  
  1185.  
  1186. FSETOB FSETOB_double_si(FSETOB self) {
  1187.  FSETOB noname3541;
  1188.  FSETOB r_3542;
  1189.  FSETOB noname3543;
  1190.  INT local0;
  1191.  INT local1;
  1192.  INT local2;
  1193.  OB local3;
  1194.  if (!((!((self==((FSETOB) NULL)))))) {
  1195.   fprintf(stderr,"Violation of precondition ../Library/fset.sa:150:22\n");
  1196.   exit(16);
  1197.  }
  1198.  local0 = (self->asize);
  1199.  local1 = (c_INT_minus_INT_INT_chk(local0,1));
  1200.  local2 = (c_INT_times_INT_INT_chk(local1,2));
  1201.  r_3542 = FSETOB_allocate_(self, (c_INT_plus_INT_INT_chk(local2,1)));
  1202.  {
  1203.   struct FSETOB_elt_OB_frame_struct temp3544_0;
  1204.   FSETOB_elt_OB_frame 
  1205.   noname3545 = &temp3544_0;
  1206.   noname3545->state = 0;
  1207.   while (1) {
  1208.    if (noname3545->state == 0) {
  1209.     noname3543 = self;
  1210.     noname3545->arg0 = noname3543;
  1211.    }
  1212.    local3 = FSETOB_elt_OB(noname3545);
  1213.    if (noname3545->state == -1) goto after_loop;
  1214.    r_3542 = FSETOB_insert_OB(r_3542, local3);
  1215.   }
  1216.  }
  1217.  after_loop: ;
  1218.  return r_3542;
  1219. }
  1220.  
  1221.  
  1222. INT FSETOB_elt_hash_(FSETOB self, OB e_3546) {
  1223.  INT noname3547 = ((INT) 0);
  1224.  HASH local0;
  1225.  if (e_3546==NULL) {
  1226.  } else
  1227.  switch (e_3546->header.tag) {
  1228.   case TUPIMPL_INCLUDEI_tag:
  1229.   case TUPAM_BND_CREATE_tag:
  1230.   case TUPIFCIFC_tag:
  1231.   case TUPSTRITER_INLINE_tag:
  1232.   case TUPAM_GLOBAL_EXP_tag:
  1233.   case FSTR_tag:
  1234.   case TUPSIGSIG_tag:
  1235.   case CHAR_tag:
  1236.   case INT_tag:
  1237.   case TUPTP_CLASSFSETTP_tag:
  1238.   case TUPSTRSTR_tag:
  1239.   case TUPINTINTINT_tag:
  1240.   case STR_tag:
  1241.   case TUPSFILE_IDSFILE_ID_tag:
  1242.   case TUPAM_ITER_CALL__tag:
  1243.   case TUPTR_EXPRTR_EXPR_tag:
  1244.   case TUPTPFMAPIDENTAM_tag:
  1245.   case TUPARRAYTPTP_tag:
  1246.   case TUPAM_CONSTAM_CONST_tag:
  1247.   case TUPSTRTUPSTRSTR_tag:
  1248.   case TUPTPIMPL_tag:
  1249.   case TUPSIGAM_ROUT_DEF_tag:
  1250.   case TUPARRAYTPARRAYB_tag:
  1251.   case TUPIDENTAM_GLOBA_tag:
  1252.   case TUPAM_BND_ITER_C_tag:
  1253.   case TUPAM_LOCAL_EXPR_tag:
  1254.   case TUPSTRFSETSTR_tag:
  1255.   case TUPAM_ROUT_DEFAM_tag:
  1256.   case TUPTPTP_tag:
  1257.   case IDENT_tag:
  1258.   case TUPTPINT_tag:
  1259.   case TUPIDENTINT_tag:
  1260.   case TUPIDENTIDENT_tag:
  1261.   case TUPTP_CLASSFSETT_tag:
  1262.   case TUPCHARCHAR_tag:
  1263.   case TUPIDENTTP_tag:
  1264.   case TUPIDENTARRAYTP_tag:
  1265.   case TUPAM_EXPRAM_EXPR_tag:
  1266.   case TUPTPIFC_tag:
  1267.   case TUPTP_CLASSTP_CLASS_tag:
  1268.   case TUPAM_STMTAM_STMT_tag:
  1269.   case TUPINTINT_tag:
  1270.   case TUPOBSTR_tag:
  1271.   case TUPFLISTAM_CONST_tag:
  1272.   case TUPAM_EXPRTP_tag:
  1273.   case TUPBOOLINTIINTBOOL_tag:
  1274.    local0 = ((HASH) e_3546);
  1275.    return (*HASH_hash_INT[local0->header.tag+HASH_hash_INT_offset])(local0); break;
  1276.   default: ;
  1277.  }
  1278.  return (c_SYS_id_OB_INT(((SYS) NULL),e_3546));
  1279.  if (!FSETOB_invariant(self)) {
  1280.   fprintf(stderr,"Failed invariant FSET{$OB}::invariant:BOOL ../Library/fset.sa:63:11\n");
  1281.   exit(16);
  1282.  }
  1283. }
  1284.  
  1285.  
  1286. OB FSETOB_aget_INT_OB(FSETOB self, INT ind_3548) {
  1287.  OB noname3549;
  1288.  BOOL local0;
  1289.  INT local1;
  1290.  INT local2;
  1291.  if ((!((self==((FSETOB) NULL))))) {
  1292.   local1 = 0;
  1293.   local2 = (self->asize);
  1294.   local0 = INT_is_bet_INT_I(ind_3548, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  1295.  } else {
  1296.   local0 = FALSE;
  1297.  }
  1298.  if (!(local0)) {
  1299.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  1300.   exit(16);
  1301.  }
  1302.  if (ind_3548<0||ind_3548>=self->asize) {
  1303.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  1304.   exit(16);
  1305.  }
  1306.  return self->arr_part[ind_3548];
  1307.  if (!FSETOB_invariant(self)) {
  1308.   fprintf(stderr,"Failed invariant FSET{$OB}::invariant:BOOL ../Library/aref.sa:33:7\n");
  1309.   exit(16);
  1310.  }
  1311. }
  1312.  
  1313.  
  1314. BOOL FSETOB_elt_eq_OB(FSETOB self, OB e1_3550, OB e2_3551) {
  1315.  BOOL noname3552 = ((BOOL) 0);
  1316.  if (e1_3550==NULL) {
  1317.  } else
  1318.  switch (e1_3550->header.tag) {
  1319.   default: ;
  1320.  }
  1321.  return c_SYS_ob_eq_OB_OB_BOOL(e1_3550,e2_3551);
  1322.  if (!FSETOB_invariant(self)) {
  1323.   fprintf(stderr,"Failed invariant FSET{$OB}::invariant:BOOL ../Library/fset.sa:44:9\n");
  1324.   exit(16);
  1325.  }
  1326. }
  1327.  
  1328.  
  1329. void FSETOB_aset_INT_OB(FSETOB self, INT ind_3553, OB val_3554) {
  1330.  BOOL local0;
  1331.  INT local1;
  1332.  INT local2;
  1333.  if ((!((self==((FSETOB) NULL))))) {
  1334.   local1 = 0;
  1335.   local2 = (self->asize);
  1336.   local0 = INT_is_bet_INT_I(ind_3553, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  1337.  } else {
  1338.   local0 = FALSE;
  1339.  }
  1340.  if (!(local0)) {
  1341.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  1342.   exit(16);
  1343.  }
  1344.  if (ind_3553<0||ind_3553>=self->asize) {
  1345.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  1346.   exit(16);
  1347.  }
  1348.  self->arr_part[ind_3553] = val_3554;
  1349.  if (!FSETOB_invariant(self)) {
  1350.   fprintf(stderr,"Failed invariant FSET{$OB}::invariant:BOOL ../Library/aref.sa:38:7\n");
  1351.   exit(16);
  1352.  }
  1353. }
  1354.  
  1355.  
  1356. FSETOB FSETOB_insert_OB(FSETOB self, OB e_3555) {
  1357.  FSETOB noname3556;
  1358.  FSETOB r_3557;
  1359.  INT asz_3558 = ((INT) 0);
  1360.  INT h = ((INT) 0);
  1361.  OB te;
  1362.  OB te_3559;
  1363.  INT local0;
  1364.  INT local1;
  1365.  INT local2;
  1366.  r_3557 = self;
  1367.  if ((r_3557==((FSETOB) NULL))) {
  1368.   r_3557 = FSETOB_allocate_(self, 5);
  1369.  }
  1370.  else {
  1371.   local0 = (c_INT_plus_INT_INT_chk(self->hsize,1));
  1372.   local1 = (c_INT_times_INT_INT_chk(local0,2));
  1373.   if ((local1>(self->asize))) {
  1374.    r_3557 = FSETOB_double_si(self);
  1375.   }
  1376.  }
  1377.  asz_3558 = (r_3557->asize);
  1378.  local2 = FSETOB_elt_hash_(r_3557, e_3555);
  1379.  h = (local2&(c_INT_minus_INT_INT_chk(asz_3558,2)));
  1380.  while (1) {
  1381.   te = FSETOB_aget_INT_OB(r_3557, h);
  1382.   if (FSETOB_elt_eq_OB(self, te, FSETOB_elt_nil_OB(self))) {
  1383.    goto after_loop;
  1384.   }
  1385.   else {
  1386.    if (FSETOB_elt_eq_OB(self, te, e_3555)) {
  1387.     FSETOB_aset_INT_OB(r_3557, h, e_3555);
  1388.     return r_3557;
  1389.    }
  1390.   }
  1391.   h = (c_INT_plus_INT_INT_chk(h,1));
  1392.  }
  1393.  after_loop: ;
  1394.  if ((h==(c_INT_minus_INT_INT_chk(asz_3558,1)))) {
  1395.   h = 0;
  1396.   while (1) {
  1397.    te_3559 = FSETOB_aget_INT_OB(r_3557, h);
  1398.    if (FSETOB_elt_eq_OB(self, te_3559, FSETOB_elt_nil_OB(self))) {
  1399.     goto after_loop_3561;
  1400.    }
  1401.    else {
  1402.     if (FSETOB_elt_eq_OB(self, te_3559, e_3555)) {
  1403.      FSETOB_aset_INT_OB(r_3557, h, e_3555);
  1404.      return r_3557;
  1405.     }
  1406.    }
  1407.    h = (c_INT_plus_INT_INT_chk(h,1));
  1408.   }
  1409.   after_loop_3561: ;
  1410.   if (!((h!=(c_INT_minus_INT_INT_chk(asz_3558,1))))) {
  1411.    fprintf(stderr,"Violation of assertion ../Library/fset.sa:177:15\n");
  1412.    exit(16);
  1413.   }
  1414.  }
  1415.  FSETOB_aset_INT_OB(r_3557, h, e_3555);
  1416.  r_3557->hsize = (c_INT_plus_INT_INT_chk(r_3557->hsize,1));
  1417.  return r_3557;
  1418.  if (!FSETOB_invariant(self)) {
  1419.   fprintf(stderr,"Failed invariant FSET{$OB}::invariant:BOOL ../Library/fset.sa:158:9\n");
  1420.   exit(16);
  1421.  }
  1422. }
  1423.  
  1424.  
  1425. FSTR FSTR_plus_FSTR_FSTR(FSTR self, FSTR s_3563) {
  1426.  FSTR noname3564;
  1427.  FSTR noname3565;
  1428.  FSTR r_3566;
  1429.  FSTR noname3567;
  1430.  CHAR local0;
  1431.  STR local1;
  1432.  STR local2;
  1433.  noname3565 = self;
  1434.  r_3566 = self;
  1435.  {
  1436.   struct FSTR_elt_CHAR_frame_struct temp3568_0;
  1437.   FSTR_elt_CHAR_frame 
  1438.   noname3569 = &temp3568_0;
  1439.   noname3569->state = 0;
  1440.   while (1) {
  1441.    if (noname3569->state == 0) {
  1442.     noname3567 = s_3563;
  1443.     noname3569->arg0 = noname3567;
  1444.    }
  1445.    local0 = FSTR_elt_CHAR(noname3569);
  1446.    if (noname3569->state == -1) goto after_loop;
  1447.    r_3566 = FSTR_push_CHAR_FSTR(r_3566, local0);
  1448.   }
  1449.  }
  1450.  after_loop: ;
  1451.  return r_3566;
  1452.  local1 = FSTR_str_STR(noname3564);
  1453.  local2 = FSTR_str_STR(noname3565);
  1454.  if (!(STR_is_eq_STR_BOOL(local1, STR_plus_STR_STR(local2, FSTR_str_STR(s_3563))))) {
  1455.   fprintf(stderr,"Violation of postcondition ../Library/fstr.sa:125:7\n");
  1456.   exit(16);
  1457.  }
  1458.  if (!FSTR_invariant_BOOL(self)) {
  1459.   fprintf(stderr,"Failed invariant FSTR::invariant:BOOL ../Library/fstr.sa:125:7\n");
  1460.   exit(16);
  1461.  }
  1462. }
  1463.  
  1464.  
  1465. BOOL FMAPOBSTR_test_O(FMAPOBSTR self, OB k) {
  1466.  BOOL noname3570 = ((BOOL) 0);
  1467.  INT h = ((INT) 0);
  1468.  OB tk;
  1469.  OB tk_3571;
  1470.  INT local0;
  1471.  INT local1;
  1472.  INT local2;
  1473.  INT local3;
  1474.  if ((self==((FMAPOBSTR) NULL))) {
  1475.   return FALSE;
  1476.  }
  1477.  local0 = FMAPOBSTR_key_ha(self, k);
  1478.  local1 = (self->asize);
  1479.  h = (local0&(c_INT_minus_INT_INT_chk(local1,2)));
  1480.  while (1) {
  1481.   tk = (TUPOBSTR_blob=FMAPOBSTR_aget_I(self, h)).t1;
  1482.   if (FMAPOBSTR_key_eq(self, tk, k)) {
  1483.    return TRUE;
  1484.   }
  1485.   else {
  1486.    if (FMAPOBSTR_key_eq(self, tk, FMAPOBSTR_key_nil_OB(self))) {
  1487.     goto after_loop;
  1488.    }
  1489.   }
  1490.   h = (c_INT_plus_INT_INT_chk(h,1));
  1491.  }
  1492.  after_loop: ;
  1493.  local2 = (self->asize);
  1494.  if ((h==(c_INT_minus_INT_INT_chk(local2,1)))) {
  1495.   h = 0;
  1496.   while (1) {
  1497.    tk_3571 = (TUPOBSTR_blob=FMAPOBSTR_aget_I(self, h)).t1;
  1498.    if (FMAPOBSTR_key_eq(self, tk_3571, k)) {
  1499.     return TRUE;
  1500.    }
  1501.    else {
  1502.     if (FMAPOBSTR_key_eq(self, tk_3571, FMAPOBSTR_key_nil_OB(self))) {
  1503.      goto after_loop_3573;
  1504.     }
  1505.    }
  1506.    h = (c_INT_plus_INT_INT_chk(h,1));
  1507.   }
  1508.   after_loop_3573: ;
  1509.   local3 = (self->asize);
  1510.   if (!((h!=(c_INT_minus_INT_INT_chk(local3,1))))) {
  1511.    fprintf(stderr,"Violation of assertion ../Library/fmap.sa:133:15\n");
  1512.    exit(16);
  1513.   }
  1514.  }
  1515.  return FALSE;
  1516.  if (!FMAPOBSTR_invari(self)) {
  1517.   fprintf(stderr,"Failed invariant FMAP{$OB,STR}::invariant:BOOL ../Library/fmap.sa:119:7\n");
  1518.   exit(16);
  1519.  }
  1520. }
  1521.  
  1522.  
  1523. STR BE_mangle_OB_STR(BE self, OB ob_3575) {
  1524.  STR noname3576;
  1525.  STR res;
  1526.  STR s_3577 = ((STR) NULL);
  1527.  ARRAYTP noname3578;
  1528.  FSTR tmp_3579;
  1529.  STR noname3580;
  1530.  CHAR c_3581 = ((CHAR) 0);
  1531.  CHAR noname3582 = ((CHAR) 0);
  1532.  CHAR noname3583 = ((CHAR) 0);
  1533.  TP local0;
  1534.  STR local1;
  1535.  STR local2;
  1536.  STR local3;
  1537.  TP local4;
  1538.  TP local5;
  1539.  STR local6;
  1540.  TP local7;
  1541.  IDENT local8;
  1542.  STR local9;
  1543.  TP local10;
  1544.  STR local11;
  1545.  STR local12;
  1546.  CHAR local13;
  1547.  STR local14;
  1548.  CHAR *local13p; INT local13n;
  1549.  INT local15;
  1550.  FSTR local16;
  1551.  FSTR local17;
  1552.  INT local18;
  1553.  BOOL local19;
  1554.  INT local20;
  1555.  STR local21;
  1556.  STR local22;
  1557.  if (!((!((ob_3575==((OB) NULL)))))) {
  1558.   fprintf(stderr,"Violation of precondition ./be.sa:2538:10\n");
  1559.   exit(16);
  1560.  }
  1561.  res = FMAPOBSTR_get_OB_STR(self->manglemap, ob_3575);
  1562.  if ((res==((STR) NULL))) {
  1563.   if (ob_3575==NULL) {
  1564.    self->thisrout = FSETOB_insert_OB(self->thisrout, ob_3575);
  1565.   } else
  1566.   switch (ob_3575->header.tag) {
  1567.    case SIG_tag:
  1568.     local0 = ((SIG) ob_3575)->tp;
  1569.     local1 = (*TP_str_STR[local0->header.tag+TP_str_STR_offset])(local0);
  1570.     local2 = STR_plus_CHAR_STR(local1, '_');
  1571.     s_3577 = STR_plus_STR_STR(local2, ((SIG) ob_3575)->name_19.str_4);
  1572.     if ((!((((SIG) ob_3575)->args_7==((ARRAYTP) NULL))))) {
  1573.      {
  1574.       struct ARRAYTP_elt_TP_frame_struct temp3584_0;
  1575.       ARRAYTP_elt_TP_frame 
  1576.       noname3585 = &temp3584_0;
  1577.       noname3585->state = 0;
  1578.       while (1) {
  1579.        local3 = STR_plus_CHAR_STR(s_3577, '_');
  1580.        if (noname3585->state == 0) {
  1581.         noname3578 = ((SIG) ob_3575)->args_7;
  1582.         noname3585->arg0 = noname3578;
  1583.        }
  1584.        local4 = ARRAYTP_elt_TP(noname3585);
  1585.        if (noname3585->state == -1) goto after_loop;
  1586.        local5 = local4;
  1587.        s_3577 = STR_plus_STR_STR(local3, (*TP_str_STR[local5->header.tag+TP_str_STR_offset])(local5));
  1588.       }
  1589.      }
  1590.      after_loop: ;
  1591.     }
  1592.     if ((!((((SIG) ob_3575)->ret==((TP) NULL))))) {
  1593.      local6 = STR_plus_CHAR_STR(s_3577, '_');
  1594.      local7 = ((SIG) ob_3575)->ret;
  1595.      s_3577 = STR_plus_STR_STR(local6, (*TP_str_STR[local7->header.tag+TP_str_STR_offset])(local7));
  1596.     } break;
  1597.    case AM_LOCAL_EXPR_tag:
  1598.     if ((!((((AM_LOCAL_EXPR) ob_3575)->name_19.str_4==(STR)0)))) {
  1599.      s_3577 = ((AM_LOCAL_EXPR) ob_3575)->name_19.str_4;
  1600.     }
  1601.     self->thisrout = FSETOB_insert_OB(self->thisrout, ob_3575); break;
  1602.    case TP_CLASS_tag:
  1603.     s_3577 = TP_CLASS_str_STR(((TP_CLASS) ob_3575)); break;
  1604.    case TP_ROUT_tag:
  1605.     s_3577 = TP_ROUT_str_STR(((TP_ROUT) ob_3575)); break;
  1606.    case AM_BND_CREATE_EXPR_tag:
  1607.     s_3577 = ((STR) &bound); break;
  1608.    case STR_tag:
  1609.     s_3577 = ((STR) ob_3575); break;
  1610.    case IDENT_tag:
  1611.     local8 = ((IDENT_boxed) ob_3575)->value_part;
  1612.     s_3577 = local8.str_4; break;
  1613.    case AM_GLOBAL_EXPR_tag:
  1614.     local9 = ((STR) &shared_);
  1615.     local10 = ((AM_GLOBAL_EXPR) ob_3575)->class_tp;
  1616.     local11 = STR_plus_STR_STR(local9, (*TP_str_STR[local10->header.tag+TP_str_STR_offset])(local10));
  1617.     local12 = STR_plus_CHAR_STR(local11, '_');
  1618.     s_3577 = STR_plus_STR_STR(local12, ((AM_GLOBAL_EXPR) ob_3575)->name_19.str_4); break;
  1619.    case AM_LOOP_STMT_tag:
  1620.     s_3577 = ((STR) &after_loop_3586);
  1621.     self->thisrout = FSETOB_insert_OB(self->thisrout, ob_3575); break;
  1622.    case AM_STR_CONST_tag:
  1623.     s_3577 = ((AM_STR_CONST) ob_3575)->bval; break;
  1624.    default: ;
  1625.     self->thisrout = FSETOB_insert_OB(self->thisrout, ob_3575);
  1626.   }
  1627.   if ((s_3577==((STR) NULL))) {
  1628.    res = STR_plus_INT_STR(((STR) &noname), self->counter_21);
  1629.    self->counter_21 = (c_INT_plus_INT_INT_chk(self->counter_21,1));
  1630.   }
  1631.   else {
  1632.    tmp_3579 = FSTR_create_FSTR(((FSTR) NULL));
  1633.    {
  1634.     BOOL noname3589 = TRUE;
  1635.     while (1) {
  1636.      if (noname3589) {
  1637.       noname3589 = FALSE;
  1638.       noname3580 = s_3577;
  1639.       local14 = noname3580;
  1640.       local13p = local14->arr_part; local13n = local14->asize;
  1641.      } else {
  1642.       local13p++; local13n--;
  1643.      }
  1644.      if (local13n<=0) goto after_loop_3587; local13 = *local13p;
  1645.      c_3581 = local13;
  1646.      noname3582 = c_3581;
  1647.      switch (noname3582) {
  1648.       case 'a':
  1649.       case 'b':
  1650.       case 'c':
  1651.       case 'd':
  1652.       case 'e':
  1653.       case 'f':
  1654.       case 'g':
  1655.       case 'h':
  1656.       case 'i':
  1657.       case 'j':
  1658.       case 'k':
  1659.       case 'l':
  1660.       case 'm':
  1661.       case 'n':
  1662.       case 'o':
  1663.       case 'p':
  1664.       case 'q':
  1665.       case 'r':
  1666.       case 's':
  1667.       case 't':
  1668.       case 'u':
  1669.       case 'v':
  1670.       case 'w':
  1671.       case 'x':
  1672.       case 'y':
  1673.       case 'z':
  1674.       case '0':
  1675.       case '1':
  1676.       case '2':
  1677.       case '3':
  1678.       case '4':
  1679.       case '5':
  1680.       case '6':
  1681.       case '7':
  1682.       case '8':
  1683.       case '9':
  1684.       case '_':
  1685.       case 'A':
  1686.       case 'B':
  1687.       case 'C':
  1688.       case 'D':
  1689.       case 'E':
  1690.       case 'F':
  1691.       case 'G':
  1692.       case 'H':
  1693.       case 'I':
  1694.       case 'J':
  1695.       case 'K':
  1696.       case 'L':
  1697.       case 'M':
  1698.       case 'N':
  1699.       case 'O':
  1700.       case 'P':
  1701.       case 'Q':
  1702.       case 'R':
  1703.       case 'S':
  1704.       case 'T':
  1705.       case 'U':
  1706.       case 'V':
  1707.       case 'W':
  1708.       case 'X':
  1709.       case 'Y':
  1710.       case 'Z':
  1711.        tmp_3579 = FSTR_plus_CHAR_FSTR(tmp_3579, c_3581);
  1712.        break;
  1713.       default: ;
  1714.      }
  1715.     }
  1716.    }
  1717.    after_loop_3587: ;
  1718.    local15 = FSTR_length_INT(tmp_3579);
  1719.    if ((local15==0)) {
  1720.     tmp_3579 = FSTR_plus_STR_FSTR(tmp_3579, ((STR) &name_3590));
  1721.    }
  1722.    noname3583 = FSTR_aget_INT_CHAR(tmp_3579, 0);
  1723.    switch (noname3583) {
  1724.     case '0':
  1725.     case '1':
  1726.     case '2':
  1727.     case '3':
  1728.     case '4':
  1729.     case '5':
  1730.     case '6':
  1731.     case '7':
  1732.     case '8':
  1733.     case '9':
  1734.     case '_':
  1735.      local16 = FSTR_create_FSTR(((FSTR) NULL));
  1736.      local17 = FSTR_plus_STR_FSTR(local16, ((STR) &S));
  1737.      tmp_3579 = FSTR_plus_FSTR_FSTR(local17, tmp_3579);
  1738.      break;
  1739.     default: ;
  1740.    }
  1741.    res = FSTR_str_STR(tmp_3579);
  1742.    local18 = STR_length_INT(res);
  1743.    if ((local18>20)) {
  1744.     res = STR_head_INT_STR(res, 16);
  1745.    }
  1746.    while (1) {
  1747.     if (FSETSTR_test_STR(self->mangleset, res)) {
  1748.      local19 = TRUE;
  1749.     } else {
  1750.      local19 = FSETSTR_test_STR(self->forbidden, res);
  1751.     }
  1752.     if (local19) {
  1753.     }
  1754.     else {
  1755.      goto after_loop_3591;
  1756.     }
  1757.     local20 = 16;
  1758.     local21 = STR_head_INT_STR(res, INT_min_INT_INT(local20, STR_length_INT(res)));
  1759.     local22 = STR_plus_CHAR_STR(local21, '_');
  1760.     res = STR_plus_INT_STR(local22, self->counter_21);
  1761.     self->counter_21 = (c_INT_plus_INT_INT_chk(self->counter_21,1));
  1762.    }
  1763.    after_loop_3591: ;
  1764.   }
  1765.   self->mangleset = FSETSTR_insert_S(self->mangleset, res);
  1766.   if (!(FSETSTR_test_STR(self->mangleset, res))) {
  1767.    fprintf(stderr,"Violation of assertion ./be.sa:2611:18\n");
  1768.    exit(16);
  1769.   }
  1770.   self->manglemap = FMAPOBSTR_insert_1222(self->manglemap, ob_3575, res);
  1771.  }
  1772.  if (!(FMAPOBSTR_test_O(self->manglemap, ob_3575))) {
  1773.   fprintf(stderr,"Violation of assertion ./be.sa:2614:14\n");
  1774.   exit(16);
  1775.  }
  1776.  if (!(FSETSTR_test_STR(self->mangleset, res))) {
  1777.   fprintf(stderr,"Violation of assertion ./be.sa:2615:14\n");
  1778.   exit(16);
  1779.  }
  1780.  return res;
  1781. }
  1782.  
  1783.  
  1784. BOOL TP_CLASS_is_boun(TP_CLASS self) {
  1785.  BOOL noname3593 = ((BOOL) 0);
  1786.  return FALSE;
  1787. }
  1788.  
  1789.  
  1790. AM_OB_DEF AM_OB_DEF_create(AM_OB_DEF self, SFILE_ID source_3594) {
  1791.  AM_OB_DEF noname3595;
  1792.  AM_OB_DEF r_3596;
  1793.  AM_OB_DEF local0;
  1794.  local0 = ((AM_OB_DEF) sbi_alloc(sizeof(struct AM_OB_DEF_struct), AM_OB_DEF_tag));
  1795.  r_3596 = local0;
  1796.  r_3596->source_38 = source_3594;
  1797.  return r_3596;
  1798. }
  1799.  
  1800.  
  1801. BOOL SIG_is_reader_si(SIG self) {
  1802.  BOOL noname3597 = ((BOOL) 0);
  1803.  BOOL local0;
  1804.  if ((self->args_7==((ARRAYTP) NULL))) {
  1805.   local0 = (!((self->ret==((TP) NULL))));
  1806.  } else {
  1807.   local0 = FALSE;
  1808.  }
  1809.  return local0;
  1810. }
  1811.  
  1812.  
  1813. BOOL ELT_is_const_rea(ELT self) {
  1814.  BOOL noname3598 = ((BOOL) 0);
  1815.  TR_CLASS_ELT ltr;
  1816.  if ((!(SIG_is_reader_si(self->sig_6)))) {
  1817.   return FALSE;
  1818.  }
  1819.  ltr = self->tr;
  1820.  if (ltr==NULL) {
  1821.  } else
  1822.  switch (ltr->header.tag) {
  1823.   case TR_CONST_DEF_tag:
  1824.    return TRUE; break;
  1825.   default: ;
  1826.  }
  1827.  return FALSE;
  1828. }
  1829.  
  1830.  
  1831. INT IMPL_asize_val_INT(IMPL self) {
  1832.  INT noname3599 = ((INT) 0);
  1833.  ELT_TBL noname3600;
  1834.  IDENT noname3601 = IDENT_zero;
  1835.  ELT asze;
  1836.  ELT local0;
  1837.  BOOL local1;
  1838.  {
  1839.   struct ELT_TBL_get_quer_frame_struct temp3602_0;
  1840.   ELT_TBL_get_quer_frame 
  1841.   noname3603 = &temp3602_0;
  1842.   noname3603->state = 0;
  1843.   while (1) {
  1844.    if (noname3603->state == 0) {
  1845.     noname3600 = self->elts;
  1846.     noname3601 = IMPL_prog_PROG(self)->ident_builtin->asize_ident;
  1847.     noname3603->arg0 = noname3600;
  1848.     noname3603->arg1 = noname3601;
  1849.    }
  1850.    local0 = ELT_TBL_get_quer(noname3603);
  1851.    if (noname3603->state == -1) goto after_loop;
  1852.    asze = local0;
  1853.    if (ELT_is_const_rea(asze)) {
  1854.     local1 = TP_CLASS_is_eq_T(IMPL_prog_PROG(self)->tp_builtin->int_1, asze->sig_6->ret);
  1855.    } else {
  1856.     local1 = FALSE;
  1857.    }
  1858.    if (local1) {
  1859.     return 32;
  1860.    }
  1861.    else {
  1862.     return -1;
  1863.    }
  1864.   }
  1865.  }
  1866.  after_loop: ;
  1867.  return -1;
  1868. }
  1869.  
  1870.  
  1871. BOOL ELT_is_attr_read(ELT self) {
  1872.  BOOL noname3604 = ((BOOL) 0);
  1873.  TR_CLASS_ELT ltr;
  1874.  if ((!(SIG_is_reader_si(self->sig_6)))) {
  1875.   return FALSE;
  1876.  }
  1877.  ltr = self->tr;
  1878.  if (ltr==NULL) {
  1879.  } else
  1880.  switch (ltr->header.tag) {
  1881.   case TR_ATTR_DEF_tag:
  1882.    return TRUE; break;
  1883.   default: ;
  1884.  }
  1885.  return FALSE;
  1886. }
  1887.  
  1888.  
  1889. IDENT FMAPIDENTTP_key_(FMAPIDENTTP self) {
  1890.  IDENT noname3605 = IDENT_zero;
  1891.  IDENT k = IDENT_zero;
  1892.  return IDENT_zero;
  1893.  if (!FMAPIDENTTP_inva(self)) {
  1894.   fprintf(stderr,"Failed invariant FMAP{IDENT,$TP}::invariant:BOOL ../Library/fmap.sa:54:10\n");
  1895.   exit(16);
  1896.  }
  1897. }
  1898.  
  1899.  
  1900. TUPIDENTTP TUPIDENTTP_t1_ID(TUPIDENTTP self, IDENT t1_3606) {
  1901.  TUPIDENTTP local0;
  1902.  local0 = self;
  1903.  local0.t1 = t1_3606;
  1904.  return local0;
  1905. }
  1906.  
  1907.  
  1908. TUPIDENTTP TUPIDENTTP_t2_TP(TUPIDENTTP self, TP t2_3607) {
  1909.  TUPIDENTTP local0;
  1910.  local0 = self;
  1911.  local0.t2 = t2_3607;
  1912.  return local0;
  1913. }
  1914.  
  1915.  
  1916. TUPIDENTTP TUPIDENTTP_creat(TUPIDENTTP self, IDENT at1, TP at2) {
  1917.  TUPIDENTTP noname3608 = TUPIDENTTP_zero;
  1918.  TUPIDENTTP local0;
  1919.  local0 = TUPIDENTTP_t1_ID(self, at1);
  1920.  return TUPIDENTTP_t2_TP(local0, at2);
  1921. }
  1922.  
  1923.  
  1924. FMAPIDENTTP FMAPIDENTTP_allo(FMAPIDENTTP self, INT n_3609) {
  1925.  FMAPIDENTTP noname3610;
  1926.  FMAPIDENTTP r_3611;
  1927.  FMAPIDENTTP noname3612;
  1928.  FMAPIDENTTP local0;
  1929.  TUPIDENTTP local1;
  1930.  IDENT local2;
  1931.  local0 = ((FMAPIDENTTP) sbi_arr_alloc(sizeof(struct FMAPIDENTTP_struct), FMAPIDENTTP_tag, sizeof(TUPIDENTTP) , n_3609));
  1932.  local0->asize = n_3609;
  1933.  r_3611 = local0;
  1934.  if ((!(((IDENT_blob=FMAPIDENTTP_key_(self)).str_4==(STR)0)))) {
  1935.   {
  1936.    struct FMAPIDENTTP_aset_frame_struct temp3613_0;
  1937.    FMAPIDENTTP_aset_frame 
  1938.    noname3614 = &temp3613_0;
  1939.    noname3614->state = 0;
  1940.    while (1) {
  1941.     if (noname3614->state == 0) {
  1942.      noname3612 = r_3611;
  1943.      noname3614->arg0 = noname3612;
  1944.     }
  1945.     local1 = TUPIDENTTP_zero;
  1946.     local2 = FMAPIDENTTP_key_(self);
  1947.     noname3614->arg1 = TUPIDENTTP_creat(local1, local2, ((TP) NULL));
  1948.     FMAPIDENTTP_aset(noname3614);
  1949.     if (noname3614->state == -1) goto after_loop;
  1950.     0 /* No return value from iter call */;
  1951.    }
  1952.   }
  1953.   after_loop: ;
  1954.  }
  1955.  return r_3611;
  1956. }
  1957.  
  1958.  
  1959. INT FMAPIDENTTP_asiz(FMAPIDENTTP self) {
  1960.  INT noname3615 = ((INT) 0);
  1961.   return self->asize;
  1962.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  1963.  exit(16);
  1964. }
  1965.  
  1966.  
  1967. FMAPIDENTTP FMAPIDENTTP_inse(FMAPIDENTTP self, TUPIDENTTP p) {
  1968.  FMAPIDENTTP noname3616;
  1969.  return FMAPIDENTTP_inse_3617(self, p.t1, p.t2);
  1970.  if (!FMAPIDENTTP_inva(self)) {
  1971.   fprintf(stderr,"Failed invariant FMAP{IDENT,$TP}::invariant:BOOL ../Library/fmap.sa:202:14\n");
  1972.   exit(16);
  1973.  }
  1974. }
  1975.  
  1976.  
  1977. FMAPIDENTTP FMAPIDENTTP_doub(FMAPIDENTTP self) {
  1978.  FMAPIDENTTP noname3618;
  1979.  INT ns = ((INT) 0);
  1980.  FMAPIDENTTP r_3619;
  1981.  FMAPIDENTTP noname3620;
  1982.  INT local0;
  1983.  INT local1;
  1984.  INT local2;
  1985.  TUPIDENTTP local3;
  1986.  if (!((!((self==((FMAPIDENTTP) NULL)))))) {
  1987.   fprintf(stderr,"Violation of precondition ../Library/fmap.sa:172:22\n");
  1988.   exit(16);
  1989.  }
  1990.  local0 = (self->asize);
  1991.  local1 = (c_INT_minus_INT_INT_chk(local0,1));
  1992.  local2 = (c_INT_times_INT_INT_chk(local1,2));
  1993.  ns = (c_INT_plus_INT_INT_chk(local2,1));
  1994.  r_3619 = FMAPIDENTTP_allo(self, ns);
  1995.  {
  1996.   struct FMAPIDENTTP_pair_frame_struct temp3621_0;
  1997.   FMAPIDENTTP_pair_frame 
  1998.   noname3622 = &temp3621_0;
  1999.   noname3622->state = 0;
  2000.   while (1) {
  2001.    if (noname3622->state == 0) {
  2002.     noname3620 = self;
  2003.     noname3622->arg0 = noname3620;
  2004.    }
  2005.    local3 = FMAPIDENTTP_pair(noname3622);
  2006.    if (noname3622->state == -1) goto after_loop;
  2007.    r_3619 = FMAPIDENTTP_inse(r_3619, local3);
  2008.   }
  2009.  }
  2010.  after_loop: ;
  2011.  return r_3619;
  2012. }
  2013.  
  2014.  
  2015. INT FMAPIDENTTP_key__3623(FMAPIDENTTP self, IDENT k) {
  2016.  INT noname3624 = ((INT) 0);
  2017.  OB local0;
  2018.  return IDENT_hash_INT(k);
  2019.  local0 = (OB)((IDENT_boxed) sbi_alloc(sizeof(struct IDENT_boxed_struct), IDENT_tag));
  2020.  ((IDENT_boxed) local0)->value_part = k;
  2021.  return (c_SYS_id_OB_INT(((SYS) NULL),local0));
  2022.  if (!FMAPIDENTTP_inva(self)) {
  2023.   fprintf(stderr,"Failed invariant FMAP{IDENT,$TP}::invariant:BOOL ../Library/fmap.sa:64:11\n");
  2024.   exit(16);
  2025.  }
  2026. }
  2027.  
  2028.  
  2029. TUPIDENTTP FMAPIDENTTP_aget(FMAPIDENTTP self, INT ind_3625) {
  2030.  TUPIDENTTP noname3626 = TUPIDENTTP_zero;
  2031.  BOOL local0;
  2032.  INT local1;
  2033.  INT local2;
  2034.  if ((!((self==((FMAPIDENTTP) NULL))))) {
  2035.   local1 = 0;
  2036.   local2 = (self->asize);
  2037.   local0 = INT_is_bet_INT_I(ind_3625, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  2038.  } else {
  2039.   local0 = FALSE;
  2040.  }
  2041.  if (!(local0)) {
  2042.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  2043.   exit(16);
  2044.  }
  2045.  if (ind_3625<0||ind_3625>=self->asize) {
  2046.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  2047.   exit(16);
  2048.  }
  2049.  return self->arr_part[ind_3625];
  2050. }
  2051.  
  2052.  
  2053. BOOL FMAPIDENTTP_key__3627(FMAPIDENTTP self, IDENT k1, IDENT k2) {
  2054.  BOOL noname3628 = ((BOOL) 0);
  2055.  OB local0;
  2056.  OB local1;
  2057.  return IDENT_is_eq_IDEN(k1, k2);
  2058.  local0 = (OB)((IDENT_boxed) sbi_alloc(sizeof(struct IDENT_boxed_struct), IDENT_tag));
  2059.  ((IDENT_boxed) local0)->value_part = k1;
  2060.  local1 = (OB)((IDENT_boxed) sbi_alloc(sizeof(struct IDENT_boxed_struct), IDENT_tag));
  2061.  ((IDENT_boxed) local1)->value_part = k2;
  2062.  return c_SYS_ob_eq_OB_OB_BOOL(local0,local1);
  2063.  if (!FMAPIDENTTP_inva(self)) {
  2064.   fprintf(stderr,"Failed invariant FMAP{IDENT,$TP}::invariant:BOOL ../Library/fmap.sa:44:9\n");
  2065.   exit(16);
  2066.  }
  2067. }
  2068.  
  2069.  
  2070. void FMAPIDENTTP_aset_3629(FMAPIDENTTP self, INT ind_3630, TUPIDENTTP val_3631) {
  2071.  BOOL local0;
  2072.  INT local1;
  2073.  INT local2;
  2074.  if ((!((self==((FMAPIDENTTP) NULL))))) {
  2075.   local1 = 0;
  2076.   local2 = (self->asize);
  2077.   local0 = INT_is_bet_INT_I(ind_3630, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  2078.  } else {
  2079.   local0 = FALSE;
  2080.  }
  2081.  if (!(local0)) {
  2082.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  2083.   exit(16);
  2084.  }
  2085.  if (ind_3630<0||ind_3630>=self->asize) {
  2086.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  2087.   exit(16);
  2088.  }
  2089.  self->arr_part[ind_3630] = val_3631;
  2090. }
  2091.  
  2092.  
  2093. FMAPIDENTTP FMAPIDENTTP_inse_3617(FMAPIDENTTP self, IDENT k, TP t_3632) {
  2094.  FMAPIDENTTP noname3633;
  2095.  FMAPIDENTTP r_3634;
  2096.  INT h = ((INT) 0);
  2097.  INT asm_3635 = ((INT) 0);
  2098.  IDENT tk = IDENT_zero;
  2099.  IDENT tk_3636 = IDENT_zero;
  2100.  INT local0;
  2101.  INT local1;
  2102.  INT local2;
  2103.  INT local3;
  2104.  INT local4;
  2105.  r_3634 = self;
  2106.  if ((r_3634==((FMAPIDENTTP) NULL))) {
  2107.   r_3634 = FMAPIDENTTP_allo(self, 5);
  2108.  }
  2109.  else {
  2110.   local0 = (c_INT_plus_INT_INT_chk(self->hsize,1));
  2111.   local1 = (c_INT_times_INT_INT_chk(local0,2));
  2112.   if ((local1>(self->asize))) {
  2113.    r_3634 = FMAPIDENTTP_doub(self);
  2114.   }
  2115.  }
  2116.  local2 = FMAPIDENTTP_key__3623(r_3634, k);
  2117.  local3 = (r_3634->asize);
  2118.  h = (local2&(c_INT_minus_INT_INT_chk(local3,2)));
  2119.  local4 = (r_3634->asize);
  2120.  asm_3635 = (c_INT_minus_INT_INT_chk(local4,1));
  2121.  while (1) {
  2122.   tk = (TUPIDENTTP_blob=FMAPIDENTTP_aget(r_3634, h)).t1;
  2123.   if (FMAPIDENTTP_key__3627(self, tk, FMAPIDENTTP_key_(self))) {
  2124.    goto after_loop;
  2125.   }
  2126.   if (FMAPIDENTTP_key__3627(self, tk, k)) {
  2127.    FMAPIDENTTP_aset_3629(r_3634, h, TUPIDENTTP_creat(TUPIDENTTP_zero, k, t_3632));
  2128.    return r_3634;
  2129.   }
  2130.   h = (c_INT_plus_INT_INT_chk(h,1));
  2131.  }
  2132.  after_loop: ;
  2133.  if ((h==asm_3635)) {
  2134.   h = 0;
  2135.   while (1) {
  2136.    tk_3636 = (TUPIDENTTP_blob=FMAPIDENTTP_aget(r_3634, h)).t1;
  2137.    if (FMAPIDENTTP_key__3627(self, tk_3636, FMAPIDENTTP_key_(self))) {
  2138.     goto after_loop_3638;
  2139.    }
  2140.    if (FMAPIDENTTP_key__3627(self, tk_3636, k)) {
  2141.     FMAPIDENTTP_aset_3629(r_3634, h, TUPIDENTTP_creat(TUPIDENTTP_zero, k, t_3632));
  2142.     return r_3634;
  2143.    }
  2144.    h = (c_INT_plus_INT_INT_chk(h,1));
  2145.   }
  2146.   after_loop_3638: ;
  2147.   if (!((h!=asm_3635))) {
  2148.    fprintf(stderr,"Violation of assertion ../Library/fmap.sa:199:15\n");
  2149.    exit(16);
  2150.   }
  2151.  }
  2152.  FMAPIDENTTP_aset_3629(r_3634, h, TUPIDENTTP_creat(TUPIDENTTP_zero, k, t_3632));
  2153.  r_3634->hsize = (c_INT_plus_INT_INT_chk(r_3634->hsize,1));
  2154.  return r_3634;
  2155.  if (!FMAPIDENTTP_inva(self)) {
  2156.   fprintf(stderr,"Failed invariant FMAP{IDENT,$TP}::invariant:BOOL ../Library/fmap.sa:180:9\n");
  2157.   exit(16);
  2158.  }
  2159. }
  2160.  
  2161.  
  2162. AM_OB_DEF IMPL_am_ob_def_A(IMPL self) {
  2163.  AM_OB_DEF noname3640;
  2164.  AM_OB_DEF r_3641;
  2165.  TP_CLASS a_3642;
  2166.  ELT_TBL noname3643;
  2167.  ELT e_3644;
  2168.  ELT local0;
  2169.  if (!((!((self==((IMPL) NULL)))))) {
  2170.   fprintf(stderr,"Violation of precondition ./impl.sa:102:12\n");
  2171.   exit(16);
  2172.  }
  2173.  r_3641 = AM_OB_DEF_create(((AM_OB_DEF) NULL), SFILE_ID_zero);
  2174.  r_3641->tp = self->tp;
  2175.  if ((!((self->arr==((TP_CLASS) NULL))))) {
  2176.   a_3642 = self->arr;
  2177.   r_3641->arr = ARRAYTP_aget_INT_TP(a_3642->params, 0);
  2178.  }
  2179.  r_3641->asize = IMPL_asize_val_INT(self);
  2180.  {
  2181.   struct ELT_TBL_elt_ELT_frame_struct temp3645_0;
  2182.   ELT_TBL_elt_ELT_frame 
  2183.   noname3646 = &temp3645_0;
  2184.   noname3646->state = 0;
  2185.   while (1) {
  2186.    if (noname3646->state == 0) {
  2187.     noname3643 = self->elts;
  2188.     noname3646->arg0 = noname3643;
  2189.    }
  2190.    local0 = ELT_TBL_elt_ELT(noname3646);
  2191.    if (noname3646->state == -1) goto after_loop;
  2192.    e_3644 = local0;
  2193.    if (ELT_is_attr_read(e_3644)) {
  2194.     r_3641->at = FMAPIDENTTP_inse_3617(r_3641->at, e_3644->sig_6->name_19, e_3644->sig_6->ret);
  2195.    }
  2196.   }
  2197.  }
  2198.  after_loop: ;
  2199.  return r_3641;
  2200. }
  2201.  
  2202.  
  2203. AM_OB_DEF PROG_am_ob_def_f(PROG self, TP tp_3647) {
  2204.  AM_OB_DEF noname3648;
  2205.  IMPL impl_3649;
  2206.  impl_3649 = IMPL_TBL_impl_of(self->impl_tbl, tp_3647);
  2207.  if ((impl_3649==((IMPL) NULL))) {
  2208.   return ((AM_OB_DEF) NULL);
  2209.  }
  2210.  return IMPL_am_ob_def_A(impl_3649);
  2211. }
  2212.  
  2213.  
  2214. void BE_comment_FILE_STR(BE self, FILE_20 f_3650, STR com_3651) {
  2215.  FILE_20 local0;
  2216.  FILE_20 local1;
  2217.  if (self->prog->options_55->pretty) {
  2218.   local0 = FILE_plus_STR_FILE(f_3650, ((STR) &name_3652));
  2219.   local1 = FILE_plus_STR_FILE(local0, com_3651);
  2220.   (fwrite(((STR) &name_3653)->arr_part,((STR) &name_3653)->asize,1,local1->fp));
  2221.  }
  2222. }
  2223.  
  2224.  
  2225. BOOL TP_CLASS_is_valu(TP_CLASS self) {
  2226.  BOOL noname3654 = ((BOOL) 0);
  2227.  INT local0;
  2228.  local0 = TP_CLASS_kind_INT(self);
  2229.  return (local0==shared_TP_KIND_v);
  2230. }
  2231.  
  2232.  
  2233. FILE_20 FILE_plus_CHAR_FILE(FILE_20 self, CHAR c_3655) {
  2234.  FILE_20 noname3656;
  2235.  if (!((!((self->fp==((EXT_OB) NULL)))))) {
  2236.   fprintf(stderr,"Violation of precondition ../Library/file.sa:175:7\n");
  2237.   exit(16);
  2238.  }
  2239.  FILE_plus_CHAR(self, c_3655);
  2240.  return self;
  2241. }
  2242.  
  2243.  
  2244. STR INT_str_STR(INT self) {
  2245.  STR noname3657;
  2246.  FSTR_clear(shared_INT_buf);
  2247.  INT_buf_FSTR(self, INT_str_in_FSTR_FSTR(self, shared_INT_buf));
  2248.  return FSTR_str_STR(shared_INT_buf);
  2249. }
  2250.  
  2251.  
  2252. void FILE_plus_INT(FILE_20 self, INT i) {
  2253.  if (!((!((self->fp==((EXT_OB) NULL)))))) {
  2254.   fprintf(stderr,"Violation of precondition ../Library/file.sa:177:7\n");
  2255.   exit(16);
  2256.  }
  2257.  (fwrite(INT_str_STR(i)->arr_part,INT_str_STR(i)->asize,1,self->fp));
  2258. }
  2259.  
  2260.  
  2261. FILE_20 FILE_plus_INT_FILE(FILE_20 self, INT i) {
  2262.  FILE_20 noname3658;
  2263.  if (!((!((self->fp==((EXT_OB) NULL)))))) {
  2264.   fprintf(stderr,"Violation of precondition ../Library/file.sa:181:7\n");
  2265.   exit(16);
  2266.  }
  2267.  FILE_plus_INT(self, i);
  2268.  return self;
  2269. }
  2270.  
  2271.  
  2272. void BE_generate_layouts(BE self) {
  2273.  FLISTTP_CLASS todo;
  2274.  FSETTP done;
  2275.  TP_CLASS_TBL noname3659;
  2276.  FLISTTP_CLASS next_todo;
  2277.  TP_CLASS tp_3660;
  2278.  FLISTTP_CLASS noname3661;
  2279.  BOOL okay = ((BOOL) 0);
  2280.  AM_OB_DEF l;
  2281.  FMAPIDENTTP noname3662;
  2282.  TP ci;
  2283.  STR cname;
  2284.  FMAPIDENTTP noname3663;
  2285.  TUPIDENTTP p = TUPIDENTTP_zero;
  2286.  TP_CLASS local0;
  2287.  TP_CLASS local1;
  2288.  BOOL local2;
  2289.  INT local3;
  2290.  FILE_20 local4;
  2291.  FILE_20 local5;
  2292.  STR local6;
  2293.  FILE_20 local7;
  2294.  FILE_20 local8;
  2295.  TP local9;
  2296.  BOOL local10;
  2297.  BOOL local11;
  2298.  TP local12;
  2299.  BOOL local13;
  2300.  BOOL local14;
  2301.  BOOL local15;
  2302.  TP local16;
  2303.  FILE_20 local17;
  2304.  FILE_20 local18;
  2305.  FILE_20 local19;
  2306.  STR local20;
  2307.  TP local21;
  2308.  STR local22;
  2309.  TUPIDENTTP local23;
  2310.  FILE_20 local24;
  2311.  FILE_20 local25;
  2312.  FILE_20 local26;
  2313.  OB local27;
  2314.  FILE_20 local28;
  2315.  TP local29;
  2316.  FILE_20 local30;
  2317.  FILE_20 local31;
  2318.  FILE_20 local32;
  2319.  OB local33;
  2320.  FILE_20 local34;
  2321.  FILE_20 local35;
  2322.  FILE_20 local36;
  2323.  FILE_20 local37;
  2324.  OB local38;
  2325.  FILE_20 local39;
  2326.  FILE_20 local40;
  2327.  FILE_20 local41;
  2328.  TP local42;
  2329.  FILE_20 local43;
  2330.  FILE_20 local44;
  2331.  FILE_20 local45;
  2332.  FILE_20 local46;
  2333.  FILE_20 local47;
  2334.  FILE_20 local48;
  2335.  FILE_20 local49;
  2336.  FILE_20 local50;
  2337.  FILE_20 local51;
  2338.  FILE_20 local52;
  2339.  FILE_20 local53;
  2340.  FILE_20 local54;
  2341.  FILE_20 local55;
  2342.  FILE_20 local56;
  2343.  FILE_20 local57;
  2344.  FILE_20 local58;
  2345.  FILE_20 local59;
  2346.  FILE_20 local60;
  2347.  FILE_20 local61;
  2348.  FILE_20 local62;
  2349.  FILE_20 local63;
  2350.  FILE_20 local64;
  2351.  FILE_20 local65;
  2352.  FILE_20 local66;
  2353.  FILE_20 local67;
  2354.  FILE_20 local68;
  2355.  INT local69;
  2356.  todo = FLISTTP_CLASS_cr(((FLISTTP_CLASS) NULL));
  2357.  done = FSETTP_create_FSETTP(((FSETTP) NULL));
  2358.  {
  2359.   struct TP_CLASS_TBL_elt_161_frame_struct temp3664_0;
  2360.   TP_CLASS_TBL_elt_161_frame 
  2361.   noname3665 = &temp3664_0;
  2362.   noname3665->state = 0;
  2363.   while (1) {
  2364.    if (noname3665->state == 0) {
  2365.     noname3659 = self->prog->tp_tbl->class_tbl;
  2366.     noname3665->arg0 = noname3659;
  2367.    }
  2368.    local0 = TP_CLASS_TBL_elt_161(noname3665);
  2369.    if (noname3665->state == -1) goto after_loop;
  2370.    todo = FLISTTP_CLASS_pu(todo, local0);
  2371.   }
  2372.  }
  2373.  after_loop: ;
  2374.  while (1) {
  2375.   if (FLISTTP_CLASS_is(todo)) {
  2376.    goto after_loop_3666;
  2377.   }
  2378.   next_todo = FLISTTP_CLASS_cr(((FLISTTP_CLASS) NULL));
  2379.   {
  2380.    struct FLISTTP_CLASS_el_frame_struct temp3669_0;
  2381.    FLISTTP_CLASS_el_frame 
  2382.    noname3670 = &temp3669_0;
  2383.    noname3670->state = 0;
  2384.    while (1) {
  2385.     if (noname3670->state == 0) {
  2386.      noname3661 = todo;
  2387.      noname3670->arg0 = noname3661;
  2388.     }
  2389.     local1 = FLISTTP_CLASS_el(noname3670);
  2390.     if (noname3670->state == -1) goto after_loop_3668;
  2391.     tp_3660 = local1;
  2392.     local3 = TP_CLASS_kind_INT(tp_3660);
  2393.     if ((local3==shared_TP_KIND_e)) {
  2394.      local2 = TRUE;
  2395.     } else {
  2396.      local2 = BE_is_built_in_t(self, ((TP) tp_3660));
  2397.     }
  2398.     if (local2) {
  2399.      done = FSETTP_insert_TP(done, ((TP) tp_3660));
  2400.     }
  2401.     else {
  2402.      if (TP_CLASS_is_abst(tp_3660)) {
  2403.       local4 = FILE_plus_STR_FILE(self->typedefs_h, ((STR) &typedefstruct));
  2404.       local5 = FILE_plus_STR_FILE(local4, BE_mangle_OB_STR(self, ((OB) tp_3660)));
  2405.       (fwrite(((STR) &S_struct)->arr_part,((STR) &S_struct)->asize,1,local5->fp));
  2406.       local6 = BE_mangle_OB_STR(self, ((OB) tp_3660));
  2407.       BE_forbid_STR(self, STR_plus_STR_STR(local6, ((STR) &S_struct_3671)));
  2408.       (fwrite(((STR) &OB_HEADERheader)->arr_part,((STR) &OB_HEADERheader)->asize,1,self->typedefs_h->fp));
  2409.       local7 = FILE_plus_STR_FILE(self->typedefs_h, ((STR) &name_3672));
  2410.       local8 = FILE_plus_STR_FILE(local7, BE_mangle_OB_STR(self, ((OB) tp_3660)));
  2411.       (fwrite(((STR) &name_3673)->arr_part,((STR) &name_3673)->asize,1,local8->fp));
  2412.       done = FSETTP_insert_TP(done, ((TP) tp_3660));
  2413.      }
  2414.      else {
  2415.       if (TP_CLASS_is_boun(tp_3660)) {
  2416.        BE_barf_STR(self, ((STR) &boundtypesnotimp));
  2417.       }
  2418.       else {
  2419.        okay = TRUE;
  2420.        l = PROG_am_ob_def_f(self->prog, ((TP) tp_3660));
  2421.        if ((!((l->at==((FMAPIDENTTP) NULL))))) {
  2422.         {
  2423.          struct FMAPIDENTTP_targ_frame_struct temp3675_0;
  2424.          FMAPIDENTTP_targ_frame 
  2425.          noname3676 = &temp3675_0;
  2426.          noname3676->state = 0;
  2427.          while (1) {
  2428.           if (noname3676->state == 0) {
  2429.            noname3662 = l->at;
  2430.            noname3676->arg0 = noname3662;
  2431.           }
  2432.           local9 = FMAPIDENTTP_targ(noname3676);
  2433.           if (noname3676->state == -1) goto after_loop_3674;
  2434.           ci = local9;
  2435.           local12 = ci;
  2436.           if ((*TP_is_value_BOOL[local12->header.tag+TP_is_value_BOOL_offset])(local12)) {
  2437.            local11 = (!(BE_is_built_in_t(self, ci)));
  2438.           } else {
  2439.            local11 = FALSE;
  2440.           }
  2441.           if (local11) {
  2442.            local10 = (!(FSETTP_test_TP_BOOL(done, ci)));
  2443.           } else {
  2444.            local10 = FALSE;
  2445.           }
  2446.           if (local10) {
  2447.            okay = FALSE;
  2448.           }
  2449.          }
  2450.         }
  2451.         after_loop_3674: ;
  2452.        }
  2453.        if ((!((l->arr==((TP) NULL))))) {
  2454.         local16 = l->arr;
  2455.         local15 = (*TP_is_value_BOOL[local16->header.tag+TP_is_value_BOOL_offset])(local16);
  2456.        } else {
  2457.         local15 = FALSE;
  2458.        }
  2459.        if (local15) {
  2460.         local14 = (!(BE_is_built_in_t(self, l->arr)));
  2461.        } else {
  2462.         local14 = FALSE;
  2463.        }
  2464.        if (local14) {
  2465.         local13 = (!(FSETTP_test_TP_BOOL(done, l->arr)));
  2466.        } else {
  2467.         local13 = FALSE;
  2468.        }
  2469.        if (local13) {
  2470.         okay = FALSE;
  2471.        }
  2472.        if ((!(okay))) {
  2473.         next_todo = FLISTTP_CLASS_pu(next_todo, tp_3660);
  2474.        }
  2475.        else {
  2476.         done = FSETTP_insert_TP(done, ((TP) tp_3660));
  2477.         cname = BE_mangle_OB_STR(self, ((OB) l->tp));
  2478.         local17 = FILE_plus_STR_FILE(self->typedefs_h, ((STR) &typedefstruct_3677));
  2479.         local18 = FILE_plus_STR_FILE(local17, cname);
  2480.         (fwrite(((STR) &S_struct_3678)->arr_part,((STR) &S_struct_3678)->asize,1,local18->fp));
  2481.         local19 = self->typedefs_h;
  2482.         local20 = ((STR) &layoutfor);
  2483.         local21 = l->tp;
  2484.         BE_comment_FILE_STR(self, local19, STR_plus_STR_STR(local20, (*TP_str_STR[local21->header.tag+TP_str_STR_offset])(local21)));
  2485.         FILE_plus_CHAR(self->typedefs_h, '\n');
  2486.         local22 = BE_mangle_OB_STR(self, ((OB) tp_3660));
  2487.         BE_forbid_STR(self, STR_plus_STR_STR(local22, ((STR) &S_struct_3679)));
  2488.         if ((!(TP_CLASS_is_valu(tp_3660)))) {
  2489.          (fwrite(((STR) &OB_HEADERheader_3680)->arr_part,((STR) &OB_HEADERheader_3680)->asize,1,self->typedefs_h->fp));
  2490.         }
  2491.         if ((!((l->at==((FMAPIDENTTP) NULL))))) {
  2492.          {
  2493.           struct FMAPIDENTTP_pair_frame_struct temp3682_0;
  2494.           FMAPIDENTTP_pair_frame 
  2495.           noname3683 = &temp3682_0;
  2496.           noname3683->state = 0;
  2497.           while (1) {
  2498.            if (noname3683->state == 0) {
  2499.             noname3663 = l->at;
  2500.             noname3683->arg0 = noname3663;
  2501.            }
  2502.            local23 = FMAPIDENTTP_pair(noname3683);
  2503.            if (noname3683->state == -1) goto after_loop_3681;
  2504.            p = local23;
  2505.            if (BE_is_built_in_t(self, p.t2)) {
  2506.             local24 = FILE_plus_CHAR_FILE(self->typedefs_h, ' ');
  2507.             local25 = FILE_plus_STR_FILE(local24, BE_mangle_OB_STR(self, ((OB) p.t2)));
  2508.             local26 = FILE_plus_CHAR_FILE(local25, ' ');
  2509.             local27 = (OB)((IDENT_boxed) sbi_alloc(sizeof(struct IDENT_boxed_struct), IDENT_tag));
  2510.             ((IDENT_boxed) local27)->value_part = p.t1;
  2511.             local28 = FILE_plus_STR_FILE(local26, BE_mangle_OB_STR(self, local27));
  2512.             (fwrite(((STR) &name_3684)->arr_part,((STR) &name_3684)->asize,1,local28->fp));
  2513.            }
  2514.            else {
  2515.             local29 = p.t2;
  2516.             if ((!((*TP_is_value_BOOL[local29->header.tag+TP_is_value_BOOL_offset])(local29)))) {
  2517.              local30 = FILE_plus_STR_FILE(self->typedefs_h, ((STR) &struct_3685));
  2518.              local31 = FILE_plus_STR_FILE(local30, BE_mangle_OB_STR(self, ((OB) p.t2)));
  2519.              local32 = FILE_plus_STR_FILE(local31, ((STR) &S_struct_3686));
  2520.              local33 = (OB)((IDENT_boxed) sbi_alloc(sizeof(struct IDENT_boxed_struct), IDENT_tag));
  2521.              ((IDENT_boxed) local33)->value_part = p.t1;
  2522.              local34 = FILE_plus_STR_FILE(local32, BE_mangle_OB_STR(self, local33));
  2523.              (fwrite(((STR) &name_3687)->arr_part,((STR) &name_3687)->asize,1,local34->fp));
  2524.             }
  2525.             else {
  2526.              local35 = FILE_plus_STR_FILE(self->typedefs_h, ((STR) &struct_3688));
  2527.              local36 = FILE_plus_STR_FILE(local35, BE_mangle_OB_STR(self, ((OB) p.t2)));
  2528.              local37 = FILE_plus_STR_FILE(local36, ((STR) &S_struct_3689));
  2529.              local38 = (OB)((IDENT_boxed) sbi_alloc(sizeof(struct IDENT_boxed_struct), IDENT_tag));
  2530.              ((IDENT_boxed) local38)->value_part = p.t1;
  2531.              local39 = FILE_plus_STR_FILE(local37, BE_mangle_OB_STR(self, local38));
  2532.              (fwrite(((STR) &name_3690)->arr_part,((STR) &name_3690)->asize,1,local39->fp));
  2533.             }
  2534.            }
  2535.           }
  2536.          }
  2537.          after_loop_3681: ;
  2538.         }
  2539.         if ((!((l->arr==((TP) NULL))))) {
  2540.          if ((!(TP_CLASS_is_valu(tp_3660)))) {
  2541.           (fwrite(((STR) &INTasize)->arr_part,((STR) &INTasize)->asize,1,self->typedefs_h->fp));
  2542.          }
  2543.          if (BE_is_built_in_t(self, l->arr)) {
  2544.           local40 = FILE_plus_CHAR_FILE(self->typedefs_h, ' ');
  2545.           local41 = FILE_plus_STR_FILE(local40, BE_mangle_OB_STR(self, ((OB) l->arr)));
  2546.           (fwrite(((STR) &arr_part_3691)->arr_part,((STR) &arr_part_3691)->asize,1,local41->fp));
  2547.          }
  2548.          else {
  2549.           local42 = l->arr;
  2550.           if ((!((*TP_is_value_BOOL[local42->header.tag+TP_is_value_BOOL_offset])(local42)))) {
  2551.            local43 = FILE_plus_STR_FILE(self->typedefs_h, ((STR) &struct_3692));
  2552.            local44 = FILE_plus_STR_FILE(local43, BE_mangle_OB_STR(self, ((OB) l->arr)));
  2553.            (fwrite(((STR) &S_structarr_part)->arr_part,((STR) &S_structarr_part)->asize,1,local44->fp));
  2554.           }
  2555.           else {
  2556.            local45 = FILE_plus_STR_FILE(self->typedefs_h, ((STR) &struct_3693));
  2557.            local46 = FILE_plus_STR_FILE(local45, BE_mangle_OB_STR(self, ((OB) l->arr)));
  2558.            (fwrite(((STR) &S_structarr_part_3694)->arr_part,((STR) &S_structarr_part_3694)->asize,1,local46->fp));
  2559.           }
  2560.          }
  2561.          local47 = self->typedefs_h;
  2562.          local48 = FILE_plus_INT_FILE(local47, INT_max_INT_INT(1, l->asize));
  2563.          (fwrite(((STR) &name_3695)->arr_part,((STR) &name_3695)->asize,1,local48->fp));
  2564.         }
  2565.         if (TP_CLASS_is_valu(tp_3660)) {
  2566.          local49 = FILE_plus_STR_FILE(self->typedefs_h, ((STR) &name_3696));
  2567.          local50 = FILE_plus_STR_FILE(local49, cname);
  2568.          local51 = FILE_plus_CHAR_FILE(local50, ';');
  2569.          FILE_plus_CHAR(local51, '\n');
  2570.          local52 = FILE_plus_STR_FILE(self->typedefs_h, ((STR) &static_3697));
  2571.          local53 = FILE_plus_STR_FILE(local52, cname);
  2572.          local54 = FILE_plus_STR_FILE(local53, ((STR) &name_3698));
  2573.          local55 = FILE_plus_STR_FILE(local54, cname);
  2574.          (fwrite(((STR) &S_blob)->arr_part,((STR) &S_blob)->asize,1,local55->fp));
  2575.          local56 = FILE_plus_STR_FILE(self->typedefs_h, ((STR) &static_3699));
  2576.          local57 = FILE_plus_STR_FILE(local56, cname);
  2577.          local58 = FILE_plus_STR_FILE(local57, ((STR) &name_3700));
  2578.          local59 = FILE_plus_STR_FILE(local58, cname);
  2579.          (fwrite(((STR) &S_zero)->arr_part,((STR) &S_zero)->asize,1,local59->fp));
  2580.          BE_comment_FILE_STR(self, self->typedefs_h, ((STR) &automaticallyini));
  2581.          local60 = FILE_plus_CHAR_FILE(self->typedefs_h, '\n');
  2582.          FILE_plus_CHAR(local60, '\n');
  2583.          BE_forbid_STR(self, STR_plus_STR_STR(cname, ((STR) &S_blob_3701)));
  2584.          BE_forbid_STR(self, STR_plus_STR_STR(cname, ((STR) &S_zero_3702)));
  2585.          local61 = FILE_plus_STR_FILE(self->typedefs_h, ((STR) &typedefstruct_3703));
  2586.          local62 = FILE_plus_STR_FILE(local61, cname);
  2587.          (fwrite(((STR) &S_boxed_struct)->arr_part,((STR) &S_boxed_struct)->asize,1,local62->fp));
  2588.          (fwrite(((STR) &OB_HEADERheader_3704)->arr_part,((STR) &OB_HEADERheader_3704)->asize,1,self->typedefs_h->fp));
  2589.          local63 = FILE_plus_CHAR_FILE(self->typedefs_h, ' ');
  2590.          local64 = FILE_plus_STR_FILE(local63, cname);
  2591.          (fwrite(((STR) &value_part)->arr_part,((STR) &value_part)->asize,1,local64->fp));
  2592.          local65 = FILE_plus_STR_FILE(self->typedefs_h, ((STR) &name_3705));
  2593.          local66 = FILE_plus_STR_FILE(local65, cname);
  2594.          (fwrite(((STR) &S_boxed)->arr_part,((STR) &S_boxed)->asize,1,local66->fp));
  2595.          BE_forbid_STR(self, STR_plus_STR_STR(cname, ((STR) &S_boxed_3706)));
  2596.          BE_forbid_STR(self, STR_plus_STR_STR(cname, ((STR) &S_boxed_struct_3707)));
  2597.         }
  2598.         else {
  2599.          local67 = FILE_plus_STR_FILE(self->typedefs_h, ((STR) &name_3708));
  2600.          local68 = FILE_plus_STR_FILE(local67, cname);
  2601.          (fwrite(((STR) &name_3709)->arr_part,((STR) &name_3709)->asize,1,local68->fp));
  2602.         }
  2603.        }
  2604.       }
  2605.      }
  2606.     }
  2607.    }
  2608.   }
  2609.   after_loop_3668: ;
  2610.   local69 = FLISTTP_CLASS_si(next_todo);
  2611.   if (!((local69<FLISTTP_CLASS_si(todo)))) {
  2612.    fprintf(stderr,"Violation of assertion ./be.sa:1039:18\n");
  2613.    exit(16);
  2614.   }
  2615.   todo = next_todo;
  2616.  }
  2617.  after_loop_3666: ;
  2618. }
  2619.  
  2620.  
  2621. void BE_init(BE self) {
  2622.  STR fn;
  2623.  STR comp_home;
  2624.  STR local0;
  2625.  STR local1;
  2626.  STR local2;
  2627.  STR local3;
  2628.  STR local4;
  2629.  STR local5;
  2630.  STR local6;
  2631.  STR local7;
  2632.  FILE_20 local8;
  2633.  FILE_20 local9;
  2634.  FILE_20 local10;
  2635.  FILE_20 local11;
  2636.  FILE_20 local12;
  2637.  FILE_20 local13;
  2638.  self->indent = 0;
  2639.  self->code_dir = STR_plus_STR_STR(self->prog->options_55->executable_9, ((STR) &cod));
  2640.  FILE_create_dire(((FILE_20) NULL), self->code_dir);
  2641.  BE_new_c_file(self);
  2642.  local0 = STR_plus_CHAR_STR(self->code_dir, '/');
  2643.  fn = STR_plus_STR_STR(local0, ((STR) &typedefsh));
  2644.  self->typedefs_h = FILE_open_for_wr(((FILE_20) NULL), fn);
  2645.  if (FILE_error_BOOL(self->typedefs_h)) {
  2646.   BE_barf_STR(self, STR_plus_STR_STR(((STR) &Couldntopen), fn));
  2647.  }
  2648.  local1 = STR_plus_CHAR_STR(self->code_dir, '/');
  2649.  fn = STR_plus_STR_STR(local1, ((STR) &satherh));
  2650.  self->sather_h = FILE_open_for_wr(((FILE_20) NULL), fn);
  2651.  if (FILE_error_BOOL(self->sather_h)) {
  2652.   BE_barf_STR(self, STR_plus_STR_STR(((STR) &Couldntopen_3710), fn));
  2653.  }
  2654.  local2 = STR_plus_CHAR_STR(self->code_dir, '/');
  2655.  fn = STR_plus_STR_STR(local2, ((STR) &decsh));
  2656.  self->decs_h = FILE_open_for_wr(((FILE_20) NULL), fn);
  2657.  if (FILE_error_BOOL(self->decs_h)) {
  2658.   BE_barf_STR(self, STR_plus_STR_STR(((STR) &Couldntopen_3711), fn));
  2659.  }
  2660.  local3 = STR_plus_CHAR_STR(self->code_dir, '/');
  2661.  fn = STR_plus_STR_STR(local3, ((STR) &globalsh));
  2662.  self->globals_h = FILE_open_for_wr(((FILE_20) NULL), fn);
  2663.  if (FILE_error_BOOL(self->globals_h)) {
  2664.   BE_barf_STR(self, STR_plus_STR_STR(((STR) &Couldntopen_3712), fn));
  2665.  }
  2666.  local4 = STR_plus_CHAR_STR(self->code_dir, '/');
  2667.  fn = STR_plus_STR_STR(local4, ((STR) &globalsc));
  2668.  self->globals_c = FILE_open_for_wr(((FILE_20) NULL), fn);
  2669.  if (FILE_error_BOOL(self->globals_c)) {
  2670.   BE_barf_STR(self, STR_plus_STR_STR(((STR) &Couldntopen_3713), fn));
  2671.  }
  2672.  (fwrite(((STR) &includesatherh_3714)->arr_part,((STR) &includesatherh_3714)->asize,1,self->globals_c->fp));
  2673.  local5 = STR_plus_CHAR_STR(self->code_dir, '/');
  2674.  fn = STR_plus_STR_STR(local5, ((STR) &tagsh));
  2675.  self->tags_h = FILE_open_for_wr(((FILE_20) NULL), fn);
  2676.  if (FILE_error_BOOL(self->tags_h)) {
  2677.   BE_barf_STR(self, STR_plus_STR_STR(((STR) &Couldntopen_3715), fn));
  2678.  }
  2679.  local6 = STR_plus_CHAR_STR(self->code_dir, '/');
  2680.  fn = STR_plus_STR_STR(local6, ((STR) &stringsh));
  2681.  self->strings_h = FILE_open_for_wr(((FILE_20) NULL), fn);
  2682.  if (FILE_error_BOOL(self->strings_h)) {
  2683.   BE_barf_STR(self, STR_plus_STR_STR(((STR) &Couldntopen_3716), fn));
  2684.  }
  2685.  local7 = STR_plus_CHAR_STR(self->code_dir, '/');
  2686.  fn = STR_plus_STR_STR(local7, ((STR) &Makefile));
  2687.  self->makefile = FILE_open_for_wr(((FILE_20) NULL), fn);
  2688.  if (FILE_error_BOOL(self->makefile)) {
  2689.   BE_barf_STR(self, STR_plus_STR_STR(((STR) &Couldntopen_3717), fn));
  2690.  }
  2691.  if (self->prog->options_55->deterministic_12) {
  2692.   (fwrite(((STR) &defineDETERMINISTIC)->arr_part,((STR) &defineDETERMINISTIC)->asize,1,self->sather_h->fp));
  2693.  }
  2694.  comp_home = self->prog->options_55->home;
  2695.  if (STR_is_eq_STR_BOOL(comp_home, ((STR) &name_3718))) {
  2696.   comp_home = ((STR) &name_3719);
  2697.  }
  2698.  local8 = FILE_plus_STR_FILE(self->sather_h, ((STR) &include_3720));
  2699.  local9 = FILE_plus_STR_FILE(local8, comp_home);
  2700.  (fwrite(((STR) &SystemGCgch)->arr_part,((STR) &SystemGCgch)->asize,1,local9->fp));
  2701.  local10 = FILE_plus_STR_FILE(self->sather_h, ((STR) &include_3721));
  2702.  local11 = FILE_plus_STR_FILE(local10, comp_home);
  2703.  (fwrite(((STR) &Systemheaderh)->arr_part,((STR) &Systemheaderh)->asize,1,local11->fp));
  2704.  if (self->prog->options_55->deterministic_12) {
  2705.   (fwrite(((STR) &BOOLdeterministi)->arr_part,((STR) &BOOLdeterministi)->asize,1,self->globals_c->fp));
  2706.  }
  2707.  else {
  2708.   (fwrite(((STR) &BOOLdeterministi_3722)->arr_part,((STR) &BOOLdeterministi_3722)->asize,1,self->globals_c->fp));
  2709.  }
  2710.  (fwrite(((STR) &externjmp_buflas)->arr_part,((STR) &externjmp_buflas)->asize,1,self->sather_h->fp));
  2711.  (fwrite(((STR) &externOBexception)->arr_part,((STR) &externOBexception)->asize,1,self->sather_h->fp));
  2712.  (fwrite(((STR) &externvoidsbi_al)->arr_part,((STR) &externvoidsbi_al)->asize,1,self->sather_h->fp));
  2713.  (fwrite(((STR) &externvoidsbi_ar)->arr_part,((STR) &externvoidsbi_ar)->asize,1,self->sather_h->fp));
  2714.  (fwrite(((STR) &externvoidsbi_al_3723)->arr_part,((STR) &externvoidsbi_al_3723)->asize,1,self->sather_h->fp));
  2715.  (fwrite(((STR) &externvoidsbi_ar_3724)->arr_part,((STR) &externvoidsbi_ar_3724)->asize,1,self->sather_h->fp));
  2716.  (fwrite(((STR) &externvoidsbi_se)->arr_part,((STR) &externvoidsbi_se)->asize,1,self->sather_h->fp));
  2717.  (fwrite(((STR) &includetagsh)->arr_part,((STR) &includetagsh)->asize,1,self->sather_h->fp));
  2718.  (fwrite(((STR) &includetypedefsh)->arr_part,((STR) &includetypedefsh)->asize,1,self->sather_h->fp));
  2719.  (fwrite(((STR) &includedecsh)->arr_part,((STR) &includedecsh)->asize,1,self->sather_h->fp));
  2720.  (fwrite(((STR) &includeglobalsh)->arr_part,((STR) &includeglobalsh)->asize,1,self->sather_h->fp));
  2721.  local12 = FILE_plus_STR_FILE(self->sather_h, ((STR) &include_3725));
  2722.  local13 = FILE_plus_STR_FILE(local12, comp_home);
  2723.  (fwrite(((STR) &Systemprotoh)->arr_part,((STR) &Systemprotoh)->asize,1,local13->fp));
  2724.  self->tags = FMAPTPINT_create(((FMAPTPINT) NULL));
  2725.  self->neg_tag_count = 1;
  2726.  self->pos_tag_count = 1;
  2727.  self->main_sig = self->prog->prog_get_main->main_sig;
  2728.  BE_generate_layouts(self);
  2729. }
  2730.  
  2731.  
  2732. SIG SIG_TBL_get_SIG_SIG(SIG_TBL self, SIG e_3726) {
  2733.  SIG noname3727;
  2734.  INT h = ((INT) 0);
  2735.  SIG te;
  2736.  SIG te_3728;
  2737.  INT local0;
  2738.  INT local1;
  2739.  INT local2;
  2740.  INT local3;
  2741.  if ((self==((SIG_TBL) NULL))) {
  2742.   return SIG_TBL_elt_nil_SIG(self);
  2743.  }
  2744.  local0 = SIG_TBL_elt_hash(self, e_3726);
  2745.  local1 = (self->asize);
  2746.  h = (local0&(c_INT_minus_INT_INT_chk(local1,2)));
  2747.  while (1) {
  2748.   te = SIG_TBL_aget_INT_SIG(self, h);
  2749.   if (SIG_TBL_elt_eq_S(self, te, e_3726)) {
  2750.    return te;
  2751.   }
  2752.   else {
  2753.    if (SIG_TBL_elt_eq_S(self, te, SIG_TBL_elt_nil_SIG(self))) {
  2754.     goto after_loop;
  2755.    }
  2756.   }
  2757.   h = (c_INT_plus_INT_INT_chk(h,1));
  2758.  }
  2759.  after_loop: ;
  2760.  local2 = (self->asize);
  2761.  if ((h==(c_INT_minus_INT_INT_chk(local2,1)))) {
  2762.   h = 0;
  2763.   while (1) {
  2764.    te_3728 = SIG_TBL_aget_INT_SIG(self, h);
  2765.    if (SIG_TBL_elt_eq_S(self, te_3728, e_3726)) {
  2766.     return te_3728;
  2767.    }
  2768.    else {
  2769.     if (SIG_TBL_elt_eq_S(self, te_3728, SIG_TBL_elt_nil_SIG(self))) {
  2770.      goto after_loop_3730;
  2771.     }
  2772.    }
  2773.    h = (c_INT_plus_INT_INT_chk(h,1));
  2774.   }
  2775.   after_loop_3730: ;
  2776.   local3 = (self->asize);
  2777.   if (!((h!=(c_INT_minus_INT_INT_chk(local3,1))))) {
  2778.    fprintf(stderr,"Violation of assertion ../Library/fqset.sa:187:15\n");
  2779.    exit(16);
  2780.   }
  2781.  }
  2782.  return SIG_TBL_elt_nil_SIG(self);
  2783.  if (!SIG_TBL_invarian(self)) {
  2784.   fprintf(stderr,"Failed invariant SIG_TBL::invariant:BOOL ../Library/fqset.sa:170:6\n");
  2785.   exit(16);
  2786.  }
  2787. }
  2788.  
  2789.  
  2790. SIG SIG_TBL_sig_eq_t(SIG_TBL self, SIG s_3732) {
  2791.  SIG noname3733;
  2792.  SIG r_3734;
  2793.  if (!((!((s_3732==((SIG) NULL)))))) {
  2794.   fprintf(stderr,"Violation of precondition ./sig.sa:395:13\n");
  2795.   exit(16);
  2796.  }
  2797.  r_3734 = SIG_TBL_get_SIG_SIG(self, s_3732);
  2798.  return r_3734;
  2799.  if (!SIG_TBL_invarian(self)) {
  2800.   fprintf(stderr,"Failed invariant SIG_TBL::invariant:BOOL ./sig.sa:395:13\n");
  2801.   exit(16);
  2802.  }
  2803. }
  2804.  
  2805.  
  2806. AM_ROUT_DEF AM_ROUT_DEF_crea(AM_ROUT_DEF self, INT nargs, SFILE_ID source_3735) {
  2807.  AM_ROUT_DEF noname3736;
  2808.  AM_ROUT_DEF r_3737;
  2809.  AM_ROUT_DEF local0;
  2810.  local0 = ((AM_ROUT_DEF) sbi_arr_alloc(sizeof(struct AM_ROUT_DEF_struct), AM_ROUT_DEF_tag, sizeof(AM_LOCAL_EXPR) , nargs));
  2811.  local0->asize = nargs;
  2812.  r_3737 = local0;
  2813.  r_3737->source_38 = source_3735;
  2814.  return r_3737;
  2815. }
  2816.  
  2817.  
  2818. FSETTP TP_GRAPH_ABS_DES_3738(TP_GRAPH_ABS_DES self, TP_CLASS tp_3739) {
  2819.  FSETTP noname3740;
  2820.  return FMAPTP_CLASSFSET_3200(self->tbl, tp_3739);
  2821. }
  2822.  
  2823.  
  2824. FSETTP PROG_descendants(PROG self, TP_CLASS t_3741) {
  2825.  FSETTP noname3742;
  2826.  if ((!((self->tp_graph_abs_des==((TP_GRAPH_ABS_DES) NULL))))) {
  2827.   return TP_GRAPH_ABS_DES_3738(self->tp_graph_abs_des, t_3741);
  2828.  }
  2829.  return ((FSETTP) NULL);
  2830. }
  2831.  
  2832.  
  2833. INT FLISTSIG_asize_INT(FLISTSIG self) {
  2834.  INT noname3743 = ((INT) 0);
  2835.   return self->asize;
  2836.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  2837.  exit(16);
  2838. }
  2839.  
  2840.  
  2841. INT FLISTSIG_size_INT(FLISTSIG self) {
  2842.  INT noname3744 = ((INT) 0);
  2843.  if ((self==((FLISTSIG) NULL))) {
  2844.   return 0;
  2845.  }
  2846.  return self->loc_17;
  2847.  if (!FLISTSIG_invaria(self)) {
  2848.   fprintf(stderr,"Failed invariant FLIST{SIG}::invariant:BOOL ../Library/flist.sa:50:7\n");
  2849.   exit(16);
  2850.  }
  2851. }
  2852.  
  2853.  
  2854. BOOL FLISTSIG_is_empt(FLISTSIG self) {
  2855.  BOOL noname3745 = ((BOOL) 0);
  2856.  INT local0;
  2857.  local0 = FLISTSIG_size_INT(self);
  2858.  return (local0==0);
  2859.  if (!FLISTSIG_invaria(self)) {
  2860.   fprintf(stderr,"Failed invariant FLIST{SIG}::invariant:BOOL ../Library/flist.sa:113:11\n");
  2861.   exit(16);
  2862.  }
  2863. }
  2864.  
  2865.  
  2866. void FLISTSIG_aclear(FLISTSIG self) {
  2867.  SIG nil = ((SIG) NULL);
  2868.  FLISTSIG noname3746;
  2869.  if (!((!((self==((FLISTSIG) NULL)))))) {
  2870.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:43:9\n");
  2871.   exit(16);
  2872.  }
  2873.  {
  2874.   struct FLISTSIG_aset_SIG_frame_struct temp3747_0;
  2875.   FLISTSIG_aset_SIG_frame 
  2876.   noname3748 = &temp3747_0;
  2877.   noname3748->state = 0;
  2878.   while (1) {
  2879.    if (noname3748->state == 0) {
  2880.     noname3746 = self;
  2881.     noname3748->arg0 = noname3746;
  2882.    }
  2883.    noname3748->arg1 = nil;
  2884.    FLISTSIG_aset_SIG(noname3748);
  2885.    if (noname3748->state == -1) goto after_loop;
  2886.    0 /* No return value from iter call */;
  2887.   }
  2888.  }
  2889.  after_loop: ;
  2890. }
  2891.  
  2892.  
  2893. void FLISTSIG_clear(FLISTSIG self) {
  2894.  if (FLISTSIG_is_empt(self)) {
  2895.   return;
  2896.  }
  2897.  else {
  2898.   FLISTSIG_aclear(self);
  2899.   self->loc_17 = 0;
  2900.  }
  2901.  if (!FLISTSIG_invaria(self)) {
  2902.   fprintf(stderr,"Failed invariant FLIST{SIG}::invariant:BOOL ../Library/flist.sa:117:8\n");
  2903.   exit(16);
  2904.  }
  2905. }
  2906.  
  2907.  
  2908. void FLISTSIG_aref_as(FLISTSIG self, INT ind_3749, SIG val_3750) {
  2909.  BOOL local0;
  2910.  INT local1;
  2911.  INT local2;
  2912.  if ((!((self==((FLISTSIG) NULL))))) {
  2913.   local1 = 0;
  2914.   local2 = (self->asize);
  2915.   local0 = INT_is_bet_INT_I(ind_3749, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  2916.  } else {
  2917.   local0 = FALSE;
  2918.  }
  2919.  if (!(local0)) {
  2920.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  2921.   exit(16);
  2922.  }
  2923.  if (ind_3749<0||ind_3749>=self->asize) {
  2924.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  2925.   exit(16);
  2926.  }
  2927.  self->arr_part[ind_3749] = val_3750;
  2928. }
  2929.  
  2930.  
  2931. void FLISTSIG_aset_IN(FLISTSIG self, INT ind_3751, SIG val_3752) {
  2932.  BOOL local0;
  2933.  INT local1;
  2934.  if ((!((self==((FLISTSIG) NULL))))) {
  2935.   local1 = 0;
  2936.   local0 = INT_is_bet_INT_I(ind_3751, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  2937.  } else {
  2938.   local0 = FALSE;
  2939.  }
  2940.  if (!(local0)) {
  2941.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:73:7\n");
  2942.   exit(16);
  2943.  }
  2944.  FLISTSIG_aref_as(self, ind_3751, val_3752);
  2945.  if (!FLISTSIG_invaria(self)) {
  2946.   fprintf(stderr,"Failed invariant FLIST{SIG}::invariant:BOOL ../Library/flist.sa:73:7\n");
  2947.   exit(16);
  2948.  }
  2949. }
  2950.  
  2951.  
  2952. FLISTSIG FLISTSIG_push_SI(FLISTSIG self, SIG e_3753) {
  2953.  FLISTSIG noname3754;
  2954.  FLISTSIG r_3755 = ((FLISTSIG) NULL);
  2955.  FLISTSIG noname3756;
  2956.  FLISTSIG noname3757;
  2957.  FLISTSIG local0;
  2958.  INT local1;
  2959.  FLISTSIG local2;
  2960.  INT local3;
  2961.  SIG local4;
  2962.  INT local5;
  2963.  if ((self==((FLISTSIG) NULL))) {
  2964.   local0 = ((FLISTSIG) sbi_arr_alloc(sizeof(struct FLISTSIG_struct), FLISTSIG_tag, sizeof(SIG) , 5));
  2965.   local0->asize = 5;
  2966.   r_3755 = local0;
  2967.  }
  2968.  else {
  2969.   local1 = self->loc_17;
  2970.   if ((local1<(self->asize))) {
  2971.    r_3755 = self;
  2972.   }
  2973.   else {
  2974.    local3 = 2;
  2975.    local2 = ((FLISTSIG) sbi_arr_alloc(sizeof(struct FLISTSIG_struct), FLISTSIG_tag, sizeof(SIG) , (c_INT_times_INT_INT_chk(local3,(self->asize)))));
  2976.    local2->asize = (c_INT_times_INT_INT_chk(local3,(self->asize)));
  2977.    r_3755 = local2;
  2978.    r_3755->loc_17 = self->loc_17;
  2979.    {
  2980.     struct FLISTSIG_elt_SIG_frame_struct temp3758_0;
  2981.     FLISTSIG_elt_SIG_frame 
  2982.     noname3759 = &temp3758_0;
  2983.     struct FLISTSIG_aset_SIG_frame_struct temp3758_1;
  2984.     FLISTSIG_aset_SIG_frame 
  2985.     noname3760 = &temp3758_1;
  2986.     noname3759->state = 0;
  2987.     noname3760->state = 0;
  2988.     while (1) {
  2989.      if (noname3760->state == 0) {
  2990.       noname3757 = r_3755;
  2991.       noname3760->arg0 = noname3757;
  2992.      }
  2993.      if (noname3759->state == 0) {
  2994.       noname3756 = self;
  2995.       noname3759->arg0 = noname3756;
  2996.      }
  2997.      local4 = FLISTSIG_elt_SIG(noname3759);
  2998.      if (noname3759->state == -1) goto after_loop;
  2999.      noname3760->arg1 = local4;
  3000.      FLISTSIG_aset_SIG(noname3760);
  3001.      if (noname3760->state == -1) goto after_loop;
  3002.      0 /* No return value from iter call */;
  3003.     }
  3004.    }
  3005.    after_loop: ;
  3006.    FLISTSIG_clear(self);
  3007.   }
  3008.  }
  3009.  r_3755->loc_17 = (c_INT_plus_INT_INT_chk(r_3755->loc_17,1));
  3010.  local5 = (c_INT_minus_INT_INT_chk(r_3755->loc_17,1));
  3011.  FLISTSIG_aset_IN(r_3755, local5, e_3753);
  3012.  return r_3755;
  3013.  if (!FLISTSIG_invaria(self)) {
  3014.   fprintf(stderr,"Failed invariant FLIST{SIG}::invariant:BOOL ../Library/flist.sa:79:7\n");
  3015.   exit(16);
  3016.  }
  3017. }
  3018.  
  3019.  
  3020. INT AM_ROUT_DEF_asiz(AM_ROUT_DEF self) {
  3021.  INT noname3761 = ((INT) 0);
  3022.   return self->asize;
  3023.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  3024.  exit(16);
  3025. }
  3026.  
  3027.  
  3028. INT AM_ROUT_DEF_size_INT(AM_ROUT_DEF self) {
  3029.  INT noname3762 = ((INT) 0);
  3030.  if ((self==((AM_ROUT_DEF) NULL))) {
  3031.   return 0;
  3032.  }
  3033.  return (self->asize);
  3034. }
  3035.  
  3036.  
  3037. AM_LOCAL_EXPR AM_ROUT_DEF_aget(AM_ROUT_DEF self, INT ind_3763) {
  3038.  AM_LOCAL_EXPR noname3764;
  3039.  BOOL local0;
  3040.  INT local1;
  3041.  INT local2;
  3042.  if ((!((self==((AM_ROUT_DEF) NULL))))) {
  3043.   local1 = 0;
  3044.   local2 = (self->asize);
  3045.   local0 = INT_is_bet_INT_I(ind_3763, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  3046.  } else {
  3047.   local0 = FALSE;
  3048.  }
  3049.  if (!(local0)) {
  3050.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  3051.   exit(16);
  3052.  }
  3053.  if (ind_3763<0||ind_3763>=self->asize) {
  3054.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  3055.   exit(16);
  3056.  }
  3057.  return self->arr_part[ind_3763];
  3058. }
  3059.  
  3060.  
  3061. void AM_OUT_AM_LOCAL_(AM_OUT self, AM_LOCAL_EXPR a_3765) {
  3062.  OUT local0;
  3063.  BOOL local1;
  3064.  OUT local2;
  3065.  OUT local3;
  3066.  OUT local4;
  3067.  TP local5;
  3068.  OUT local6;
  3069.  OUT local7;
  3070.  OUT local8;
  3071.  OUT local9;
  3072.  OUT local10;
  3073.  TP local11;
  3074.  if ((a_3765==((AM_LOCAL_EXPR) NULL))) {
  3075.   local0 = OUT_create_OUT(((OUT) NULL));
  3076.   OUT_plus_STR(local0, ((STR) &voidAM_LOCAL_EXPR));
  3077.   return;
  3078.  }
  3079.  if ((a_3765->name_19.str_4==(STR)0)) {
  3080.   local1 = (a_3765->tp_at==((TP) NULL));
  3081.  } else {
  3082.   local1 = FALSE;
  3083.  }
  3084.  if (local1) {
  3085.   local2 = OUT_create_OUT(((OUT) NULL));
  3086.   OUT_plus_STR(local2, ((STR) &nonamenotype));
  3087.  }
  3088.  else {
  3089.   if ((a_3765->name_19.str_4==(STR)0)) {
  3090.    local3 = OUT_create_OUT(((OUT) NULL));
  3091.    local4 = OUT_plus_STR_OUT(local3, ((STR) &noname_3766));
  3092.    local5 = a_3765->tp_at;
  3093.    OUT_plus_STR(local4, (*TP_str_STR[local5->header.tag+TP_str_STR_offset])(local5));
  3094.   }
  3095.   else {
  3096.    if ((a_3765->tp_at==((TP) NULL))) {
  3097.     local6 = OUT_create_OUT(((OUT) NULL));
  3098.     local7 = OUT_plus_STR_OUT(local6, a_3765->name_19.str_4);
  3099.     OUT_plus_STR(local7, ((STR) ¬ype));
  3100.    }
  3101.    else {
  3102.     local8 = OUT_create_OUT(((OUT) NULL));
  3103.     local9 = OUT_plus_STR_OUT(local8, a_3765->name_19.str_4);
  3104.     local10 = OUT_plus_STR_OUT(local9, ((STR) &name_3767));
  3105.     local11 = a_3765->tp_at;
  3106.     OUT_plus_STR(local10, (*TP_str_STR[local11->header.tag+TP_str_STR_offset])(local11));
  3107.    }
  3108.   }
  3109.  }
  3110. }
  3111.  
  3112.  
  3113. INT FLISTAM_LOCAL_EX(FLISTAM_LOCAL_EXPR self) {
  3114.  INT noname3768 = ((INT) 0);
  3115.  if ((self==((FLISTAM_LOCAL_EXPR) NULL))) {
  3116.   return 0;
  3117.  }
  3118.  return self->loc_17;
  3119.  if (!FLISTAM_LOCAL_EX_3769(self)) {
  3120.   fprintf(stderr,"Failed invariant FLIST{AM_LOCAL_EXPR}::invariant:BOOL ../Library/flist.sa:50:7\n");
  3121.   exit(16);
  3122.  }
  3123. }
  3124.  
  3125.  
  3126. INT FLISTAM_LOCAL_EX_3770(FLISTAM_LOCAL_EXPR self) {
  3127.  INT noname3771 = ((INT) 0);
  3128.   return self->asize;
  3129.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  3130.  exit(16);
  3131. }
  3132.  
  3133.  
  3134. AM_LOCAL_EXPR FLISTAM_LOCAL_EX_3772(FLISTAM_LOCAL_EXPR self, INT ind_3773) {
  3135.  AM_LOCAL_EXPR noname3774;
  3136.  BOOL local0;
  3137.  INT local1;
  3138.  INT local2;
  3139.  if ((!((self==((FLISTAM_LOCAL_EXPR) NULL))))) {
  3140.   local1 = 0;
  3141.   local2 = (self->asize);
  3142.   local0 = INT_is_bet_INT_I(ind_3773, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  3143.  } else {
  3144.   local0 = FALSE;
  3145.  }
  3146.  if (!(local0)) {
  3147.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  3148.   exit(16);
  3149.  }
  3150.  if (ind_3773<0||ind_3773>=self->asize) {
  3151.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  3152.   exit(16);
  3153.  }
  3154.  return self->arr_part[ind_3773];
  3155. }
  3156.  
  3157.  
  3158. AM_LOCAL_EXPR FLISTAM_LOCAL_EX_3775(FLISTAM_LOCAL_EXPR self, INT ind_3776) {
  3159.  AM_LOCAL_EXPR noname3777;
  3160.  BOOL local0;
  3161.  INT local1;
  3162.  if ((!((self==((FLISTAM_LOCAL_EXPR) NULL))))) {
  3163.   local1 = 0;
  3164.   local0 = INT_is_bet_INT_I(ind_3776, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  3165.  } else {
  3166.   local0 = FALSE;
  3167.  }
  3168.  if (!(local0)) {
  3169.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:68:7\n");
  3170.   exit(16);
  3171.  }
  3172.  return FLISTAM_LOCAL_EX_3772(self, ind_3776);
  3173.  if (!FLISTAM_LOCAL_EX_3769(self)) {
  3174.   fprintf(stderr,"Failed invariant FLIST{AM_LOCAL_EXPR}::invariant:BOOL ../Library/flist.sa:68:7\n");
  3175.   exit(16);
  3176.  }
  3177. }
  3178.  
  3179.  
  3180. void AM_OUT_AM_ARRAY_(AM_OUT self, AM_ARRAY_EXPR a_3778) {
  3181.  AM_ARRAY_EXPR noname3779;
  3182.  OUT local0;
  3183.  OUT local1;
  3184.  OUT local2;
  3185.  OUT local3;
  3186.  TP local4;
  3187.  OUT local5;
  3188.  AM_EXPR local6;
  3189.  if ((a_3778==((AM_ARRAY_EXPR) NULL))) {
  3190.   local0 = OUT_create_OUT(((OUT) NULL));
  3191.   OUT_plus_STR(local0, ((STR) &void_3780));
  3192.   return;
  3193.  }
  3194.  local1 = OUT_create_OUT(((OUT) NULL));
  3195.  OUT_plus_STR(local1, ((STR) &AM_ARRAY_EXPR_3781));
  3196.  local2 = OUT_create_OUT(((OUT) NULL));
  3197.  local3 = OUT_plus_STR_OUT(local2, ((STR) &tp_3782));
  3198.  local4 = a_3778->tp_at;
  3199.  OUT_plus_STR(local3, (*TP_str_STR[local4->header.tag+TP_str_STR_offset])(local4));
  3200.  {
  3201.   struct AM_ARRAY_EXPR_el_frame_struct temp3783_0;
  3202.   AM_ARRAY_EXPR_el_frame 
  3203.   noname3784 = &temp3783_0;
  3204.   noname3784->state = 0;
  3205.   while (1) {
  3206.    local5 = OUT_create_OUT(((OUT) NULL));
  3207.    OUT_plus_STR(local5, ((STR) &name_3785));
  3208.    if (noname3784->state == 0) {
  3209.     noname3779 = a_3778;
  3210.     noname3784->arg0 = noname3779;
  3211.    }
  3212.    local6 = AM_ARRAY_EXPR_el(noname3784);
  3213.    if (noname3784->state == -1) goto after_loop;
  3214.    AM_OUT_AM_EXPR_o(self, local6);
  3215.   }
  3216.  }
  3217.  after_loop: ;
  3218. }
  3219.  
  3220.  
  3221. INT AM_BND_CREATE_EX(AM_BND_CREATE_EXPR self) {
  3222.  INT noname3786 = ((INT) 0);
  3223.   return self->asize;
  3224.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  3225.  exit(16);
  3226. }
  3227.  
  3228.  
  3229. AM_EXPR AM_BND_CREATE_EX_3787(AM_BND_CREATE_EXPR self, INT ind_3788) {
  3230.  AM_EXPR noname3789;
  3231.  BOOL local0;
  3232.  INT local1;
  3233.  INT local2;
  3234.  if ((!((self==((AM_BND_CREATE_EXPR) NULL))))) {
  3235.   local1 = 0;
  3236.   local2 = (self->asize);
  3237.   local0 = INT_is_bet_INT_I(ind_3788, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  3238.  } else {
  3239.   local0 = FALSE;
  3240.  }
  3241.  if (!(local0)) {
  3242.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  3243.   exit(16);
  3244.  }
  3245.  if (ind_3788<0||ind_3788>=self->asize) {
  3246.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  3247.   exit(16);
  3248.  }
  3249.  return self->arr_part[ind_3788];
  3250. }
  3251.  
  3252.  
  3253. INT ARRAYINT_asize_INT(ARRAYINT self) {
  3254.  INT noname3790 = ((INT) 0);
  3255.   return self->asize;
  3256.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  3257.  exit(16);
  3258. }
  3259.  
  3260.  
  3261. INT ARRAYINT_aget_IN(ARRAYINT self, INT ind_3791) {
  3262.  INT noname3792 = ((INT) 0);
  3263.  BOOL local0;
  3264.  INT local1;
  3265.  INT local2;
  3266.  if ((!((self==((ARRAYINT) NULL))))) {
  3267.   local1 = 0;
  3268.   local2 = (self->asize);
  3269.   local0 = INT_is_bet_INT_I(ind_3791, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  3270.  } else {
  3271.   local0 = FALSE;
  3272.  }
  3273.  if (!(local0)) {
  3274.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  3275.   exit(16);
  3276.  }
  3277.  if (ind_3791<0||ind_3791>=self->asize) {
  3278.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  3279.   exit(16);
  3280.  }
  3281.  return self->arr_part[ind_3791];
  3282. }
  3283.  
  3284.  
  3285. void OUT_plus_INT(OUT self, INT i) {
  3286.  c_out_str(((INT_str_STR(i)==NULL)?NULL:INT_str_STR(i)->arr_part));
  3287. }
  3288.  
  3289.  
  3290. void AM_OUT_AM_BND_CR(AM_OUT self, AM_BND_CREATE_EXPR a_3793) {
  3291.  AM_BND_CREATE_EXPR noname3794;
  3292.  INT i = ((INT) 0);
  3293.  ARRAYINT noname3795;
  3294.  INT j = ((INT) 0);
  3295.  ARRAYINT noname3796;
  3296.  INT j_3797 = ((INT) 0);
  3297.  OUT local0;
  3298.  OUT local1;
  3299.  OUT local2;
  3300.  INT local3;
  3301.  OUT local4;
  3302.  OUT local5;
  3303.  OUT local6;
  3304.  OUT local7;
  3305.  OUT local8;
  3306.  INT local9;
  3307.  OUT local10;
  3308.  OUT local11;
  3309.  OUT local12;
  3310.  INT local13;
  3311.  OUT local14;
  3312.  OUT local15;
  3313.  OUT local16;
  3314.  OUT local17;
  3315.  OUT local18;
  3316.  TP local19;
  3317.  if ((a_3793==((AM_BND_CREATE_EXPR) NULL))) {
  3318.   local0 = OUT_create_OUT(((OUT) NULL));
  3319.   OUT_plus_STR(local0, ((STR) &voidAM_BMD_CREAT));
  3320.   return;
  3321.  }
  3322.  local1 = OUT_create_OUT(((OUT) NULL));
  3323.  OUT_plus_STR(local1, ((STR) &AM_BMD_CREATE_EXPR));
  3324.  local2 = OUT_create_OUT(((OUT) NULL));
  3325.  OUT_plus_STR(local2, ((STR) &args_3798));
  3326.  {
  3327.   struct AM_BND_CREATE_EX_3800_frame_struct temp3799_0;
  3328.   AM_BND_CREATE_EX_3800_frame 
  3329.   noname3801 = &temp3799_0;
  3330.   noname3801->state = 0;
  3331.   while (1) {
  3332.    if (noname3801->state == 0) {
  3333.     noname3794 = a_3793;
  3334.     noname3801->arg0 = noname3794;
  3335.    }
  3336.    local3 = AM_BND_CREATE_EX_3800(noname3801);
  3337.    if (noname3801->state == -1) goto after_loop;
  3338.    i = local3;
  3339.    if ((i!=0)) {
  3340.     local4 = OUT_create_OUT(((OUT) NULL));
  3341.     OUT_plus_STR(local4, ((STR) &name_3802));
  3342.    }
  3343.    AM_OUT_AM_EXPR_o(self, AM_BND_CREATE_EX_3787(a_3793, i));
  3344.   }
  3345.  }
  3346.  after_loop: ;
  3347.  local5 = OUT_create_OUT(((OUT) NULL));
  3348.  OUT_plus_STR(local5, ((STR) &name_3803));
  3349.  local6 = OUT_create_OUT(((OUT) NULL));
  3350.  local7 = OUT_plus_STR_OUT(local6, ((STR) &fun_3804));
  3351.  OUT_plus_STR(local7, SIG_str_STR(a_3793->fun));
  3352.  local8 = OUT_create_OUT(((OUT) NULL));
  3353.  OUT_plus_STR(local8, ((STR) &bnd_args_3805));
  3354.  {
  3355.   struct ARRAYINT_ind_INT_frame_struct temp3807_0;
  3356.   ARRAYINT_ind_INT_frame 
  3357.   noname3808 = &temp3807_0;
  3358.   noname3808->state = 0;
  3359.   while (1) {
  3360.    if (noname3808->state == 0) {
  3361.     noname3795 = a_3793->bnd_args;
  3362.     noname3808->arg0 = noname3795;
  3363.    }
  3364.    local9 = ARRAYINT_ind_INT(noname3808);
  3365.    if (noname3808->state == -1) goto after_loop_3806;
  3366.    j = local9;
  3367.    if ((j!=0)) {
  3368.     local10 = OUT_create_OUT(((OUT) NULL));
  3369.     OUT_plus_STR(local10, ((STR) &name_3809));
  3370.    }
  3371.    local11 = OUT_create_OUT(((OUT) NULL));
  3372.    OUT_plus_INT(local11, ARRAYINT_aget_IN(a_3793->bnd_args, j));
  3373.   }
  3374.  }
  3375.  after_loop_3806: ;
  3376.  local12 = OUT_create_OUT(((OUT) NULL));
  3377.  OUT_plus_STR(local12, ((STR) &unbnd_args_3810));
  3378.  {
  3379.   struct ARRAYINT_ind_INT_frame_struct temp3812_0;
  3380.   ARRAYINT_ind_INT_frame 
  3381.   noname3813 = &temp3812_0;
  3382.   noname3813->state = 0;
  3383.   while (1) {
  3384.    if (noname3813->state == 0) {
  3385.     noname3796 = a_3793->unbnd_args;
  3386.     noname3813->arg0 = noname3796;
  3387.    }
  3388.    local13 = ARRAYINT_ind_INT(noname3813);
  3389.    if (noname3813->state == -1) goto after_loop_3811;
  3390.    j_3797 = local13;
  3391.    if ((j_3797!=0)) {
  3392.     local14 = OUT_create_OUT(((OUT) NULL));
  3393.     OUT_plus_STR(local14, ((STR) &name_3814));
  3394.    }
  3395.    local15 = OUT_create_OUT(((OUT) NULL));
  3396.    OUT_plus_INT(local15, ARRAYINT_aget_IN(a_3793->unbnd_args, j_3797));
  3397.   }
  3398.  }
  3399.  after_loop_3811: ;
  3400.  local16 = OUT_create_OUT(((OUT) NULL));
  3401.  OUT_plus_STR(local16, ((STR) &name_3815));
  3402.  local17 = OUT_create_OUT(((OUT) NULL));
  3403.  local18 = OUT_plus_STR_OUT(local17, ((STR) &tp_at_3816));
  3404.  local19 = a_3793->tp_at;
  3405.  OUT_plus_STR(local18, (*TP_str_STR[local19->header.tag+TP_str_STR_offset])(local19));
  3406. }
  3407.  
  3408.  
  3409. void AM_OUT_AM_IF_EXP(AM_OUT self, AM_IF_EXPR a_3817) {
  3410.  OUT local0;
  3411.  OUT local1;
  3412.  OUT local2;
  3413.  OUT local3;
  3414.  OUT local4;
  3415.  if ((a_3817==((AM_IF_EXPR) NULL))) {
  3416.   local0 = OUT_create_OUT(((OUT) NULL));
  3417.   OUT_plus_STR(local0, ((STR) &voidAM_IF_EXPR));
  3418.   return;
  3419.  }
  3420.  local1 = OUT_create_OUT(((OUT) NULL));
  3421.  OUT_plus_STR(local1, ((STR) &AM_IF_EXPR_3818));
  3422.  local2 = OUT_create_OUT(((OUT) NULL));
  3423.  OUT_plus_STR(local2, ((STR) &test_3819));
  3424.  AM_OUT_AM_EXPR_o(self, a_3817->test_40);
  3425.  local3 = OUT_create_OUT(((OUT) NULL));
  3426.  OUT_plus_STR(local3, ((STR) &if_true_3820));
  3427.  AM_OUT_AM_EXPR_o(self, a_3817->if_true);
  3428.  local4 = OUT_create_OUT(((OUT) NULL));
  3429.  OUT_plus_STR(local4, ((STR) &if_false_3821));
  3430.  AM_OUT_AM_EXPR_o(self, a_3817->if_false);
  3431. }
  3432.  
  3433.  
  3434. void AM_OUT_AM_NEW_EX(AM_OUT self, AM_NEW_EXPR a_3822) {
  3435.  OUT local0;
  3436.  OUT local1;
  3437.  OUT local2;
  3438.  if ((a_3822==((AM_NEW_EXPR) NULL))) {
  3439.   local0 = OUT_create_OUT(((OUT) NULL));
  3440.   OUT_plus_STR(local0, ((STR) &voidAM_NEW_EXPR));
  3441.   return;
  3442.  }
  3443.  local1 = OUT_create_OUT(((OUT) NULL));
  3444.  OUT_plus_STR(local1, ((STR) &AM_NEW_EXPR_3823));
  3445.  local2 = OUT_create_OUT(((OUT) NULL));
  3446.  OUT_plus_STR(local2, ((STR) &asz_3824));
  3447.  AM_OUT_AM_EXPR_o(self, a_3822->asz);
  3448. }
  3449.  
  3450.  
  3451. void AM_OUT_AM_IS_VOI(AM_OUT self, AM_IS_VOID_EXPR a_3825) {
  3452.  OUT local0;
  3453.  OUT local1;
  3454.  OUT local2;
  3455.  if ((a_3825==((AM_IS_VOID_EXPR) NULL))) {
  3456.   local0 = OUT_create_OUT(((OUT) NULL));
  3457.   OUT_plus_STR(local0, ((STR) &voidAM_IS_VOID_EXPR));
  3458.   return;
  3459.  }
  3460.  local1 = OUT_create_OUT(((OUT) NULL));
  3461.  OUT_plus_STR(local1, ((STR) &AM_IS_VOID_EXPR_3826));
  3462.  local2 = OUT_create_OUT(((OUT) NULL));
  3463.  OUT_plus_STR(local2, ((STR) &arg_3827));
  3464.  AM_OUT_AM_EXPR_o(self, a_3825->arg_51);
  3465. }
  3466.  
  3467.  
  3468. void AM_OUT_AM_GLOBAL(AM_OUT self, AM_GLOBAL_EXPR a_3828) {
  3469.  OUT local0;
  3470.  OUT local1;
  3471.  OUT local2;
  3472.  OUT local3;
  3473.  OUT local4;
  3474.  OUT local5;
  3475.  OUT local6;
  3476.  OUT local7;
  3477.  TP local8;
  3478.  OUT local9;
  3479.  OUT local10;
  3480.  OUT local11;
  3481.  TP local12;
  3482.  OUT local13;
  3483.  if ((a_3828==((AM_GLOBAL_EXPR) NULL))) {
  3484.   local0 = OUT_create_OUT(((OUT) NULL));
  3485.   OUT_plus_STR(local0, ((STR) &voidAM_GLOBAL_EXPR));
  3486.   return;
  3487.  }
  3488.  local1 = OUT_create_OUT(((OUT) NULL));
  3489.  OUT_plus_STR(local1, ((STR) &AM_GLOBAL_EXPR_3829));
  3490.  local2 = OUT_create_OUT(((OUT) NULL));
  3491.  OUT_plus_STR(local2, ((STR) &name_3830));
  3492.  if ((a_3828->name_19.str_4==(STR)0)) {
  3493.   local3 = OUT_create_OUT(((OUT) NULL));
  3494.   OUT_plus_STR(local3, ((STR) &void_3831));
  3495.  }
  3496.  else {
  3497.   local4 = OUT_create_OUT(((OUT) NULL));
  3498.   OUT_plus_STR(local4, a_3828->name_19.str_4);
  3499.  }
  3500.  local5 = OUT_create_OUT(((OUT) NULL));
  3501.  OUT_plus_STR(local5, ((STR) &tp_3832));
  3502.  if ((a_3828->tp_at==((TP) NULL))) {
  3503.   local6 = OUT_create_OUT(((OUT) NULL));
  3504.   OUT_plus_STR(local6, ((STR) &void_3833));
  3505.  }
  3506.  else {
  3507.   local7 = OUT_create_OUT(((OUT) NULL));
  3508.   local8 = a_3828->tp_at;
  3509.   OUT_plus_STR(local7, (*TP_str_STR[local8->header.tag+TP_str_STR_offset])(local8));
  3510.  }
  3511.  local9 = OUT_create_OUT(((OUT) NULL));
  3512.  OUT_plus_STR(local9, ((STR) &class_tp_3834));
  3513.  if ((a_3828->class_tp==((TP) NULL))) {
  3514.   local10 = OUT_create_OUT(((OUT) NULL));
  3515.   OUT_plus_STR(local10, ((STR) &void_3835));
  3516.  }
  3517.  else {
  3518.   local11 = OUT_create_OUT(((OUT) NULL));
  3519.   local12 = a_3828->class_tp;
  3520.   OUT_plus_STR(local11, (*TP_str_STR[local12->header.tag+TP_str_STR_offset])(local12));
  3521.  }
  3522.  local13 = OUT_create_OUT(((OUT) NULL));
  3523.  OUT_plus_STR(local13, ((STR) &init_3836));
  3524.  AM_OUT_AM_EXPR_o(self, a_3828->init);
  3525. }
  3526.  
  3527.  
  3528. void AM_OUT_AM_ATTR_E(AM_OUT self, AM_ATTR_EXPR a_3837) {
  3529.  OUT local0;
  3530.  OUT local1;
  3531.  OUT local2;
  3532.  OUT local3;
  3533.  OUT local4;
  3534.  OUT local5;
  3535.  OUT local6;
  3536.  TP local7;
  3537.  if ((a_3837==((AM_ATTR_EXPR) NULL))) {
  3538.   local0 = OUT_create_OUT(((OUT) NULL));
  3539.   OUT_plus_STR(local0, ((STR) &voidAM_ATTR_EXPR));
  3540.   return;
  3541.  }
  3542.  local1 = OUT_create_OUT(((OUT) NULL));
  3543.  OUT_plus_STR(local1, ((STR) &AM_ATTR_EXPR_3838));
  3544.  local2 = OUT_create_OUT(((OUT) NULL));
  3545.  OUT_plus_STR(local2, ((STR) &ob_3839));
  3546.  AM_OUT_AM_EXPR_o(self, a_3837->ob);
  3547.  local3 = OUT_create_OUT(((OUT) NULL));
  3548.  local4 = OUT_plus_STR_OUT(local3, ((STR) &at_3840));
  3549.  OUT_plus_STR(local4, a_3837->at.str_4);
  3550.  local5 = OUT_create_OUT(((OUT) NULL));
  3551.  local6 = OUT_plus_STR_OUT(local5, ((STR) &tp_3841));
  3552.  local7 = a_3837->tp_at;
  3553.  OUT_plus_STR(local6, (*TP_str_STR[local7->header.tag+TP_str_STR_offset])(local7));
  3554. }
  3555.  
  3556.  
  3557. void AM_OUT_AM_ARR_EX(AM_OUT self, AM_ARR_EXPR a_3842) {
  3558.  OUT local0;
  3559.  OUT local1;
  3560.  OUT local2;
  3561.  OUT local3;
  3562.  OUT local4;
  3563.  OUT local5;
  3564.  TP local6;
  3565.  if ((a_3842==((AM_ARR_EXPR) NULL))) {
  3566.   local0 = OUT_create_OUT(((OUT) NULL));
  3567.   OUT_plus_STR(local0, ((STR) &voidAM_ARR_EXPR));
  3568.   return;
  3569.  }
  3570.  local1 = OUT_create_OUT(((OUT) NULL));
  3571.  OUT_plus_STR(local1, ((STR) &AM_ARR_EXPR_3843));
  3572.  local2 = OUT_create_OUT(((OUT) NULL));
  3573.  OUT_plus_STR(local2, ((STR) &ob_3844));
  3574.  AM_OUT_AM_EXPR_o(self, a_3842->ob);
  3575.  local3 = OUT_create_OUT(((OUT) NULL));
  3576.  OUT_plus_STR(local3, ((STR) &ind_3845));
  3577.  AM_OUT_AM_EXPR_o(self, a_3842->ind);
  3578.  local4 = OUT_create_OUT(((OUT) NULL));
  3579.  local5 = OUT_plus_STR_OUT(local4, ((STR) &tp_3846));
  3580.  local6 = a_3842->tp_at;
  3581.  OUT_plus_STR(local5, (*TP_str_STR[local6->header.tag+TP_str_STR_offset])(local6));
  3582. }
  3583.  
  3584.  
  3585. void AM_OUT_AM_VATTR_(AM_OUT self, AM_VATTR_ASSIGN_EXPR a_3847) {
  3586.  OUT local0;
  3587.  OUT local1;
  3588.  OUT local2;
  3589.  OUT local3;
  3590.  OUT local4;
  3591.  OUT local5;
  3592.  OUT local6;
  3593.  OUT local7;
  3594.  OUT local8;
  3595.  if ((a_3847==((AM_VATTR_ASSIGN_EXPR) NULL))) {
  3596.   local0 = OUT_create_OUT(((OUT) NULL));
  3597.   OUT_plus_STR(local0, ((STR) &voidAM_VATTR_EXPR));
  3598.   return;
  3599.  }
  3600.  local1 = OUT_create_OUT(((OUT) NULL));
  3601.  OUT_plus_STR(local1, ((STR) &AM_VATTR_EXPR));
  3602.  if ((a_3847->ob==((AM_EXPR) NULL))) {
  3603.   local2 = OUT_create_OUT(((OUT) NULL));
  3604.   OUT_plus_STR(local2, ((STR) &voidob));
  3605.  }
  3606.  else {
  3607.   local3 = OUT_create_OUT(((OUT) NULL));
  3608.   OUT_plus_STR(local3, ((STR) &ob_3848));
  3609.   AM_OUT_AM_EXPR_o(self, a_3847->ob);
  3610.  }
  3611.  if ((a_3847->at.str_4==(STR)0)) {
  3612.   local4 = OUT_create_OUT(((OUT) NULL));
  3613.   OUT_plus_STR(local4, ((STR) &voidat));
  3614.  }
  3615.  else {
  3616.   local5 = OUT_create_OUT(((OUT) NULL));
  3617.   local6 = OUT_plus_STR_OUT(local5, ((STR) &at_3849));
  3618.   OUT_plus_STR(local6, a_3847->at.str_4);
  3619.  }
  3620.  if ((a_3847->val_16==((AM_EXPR) NULL))) {
  3621.   local7 = OUT_create_OUT(((OUT) NULL));
  3622.   OUT_plus_STR(local7, ((STR) &voidval));
  3623.  }
  3624.  else {
  3625.   local8 = OUT_create_OUT(((OUT) NULL));
  3626.   OUT_plus_STR(local8, ((STR) &val_3850));
  3627.   AM_OUT_AM_EXPR_o(self, a_3847->val_16);
  3628.  }
  3629. }
  3630.  
  3631.  
  3632. void AM_OUT_AM_VARR_A(AM_OUT self, AM_VARR_ASSIGN_EXPR a_3851) {
  3633.  OUT local0;
  3634.  OUT local1;
  3635.  OUT local2;
  3636.  OUT local3;
  3637.  OUT local4;
  3638.  OUT local5;
  3639.  OUT local6;
  3640.  OUT local7;
  3641.  if ((a_3851==((AM_VARR_ASSIGN_EXPR) NULL))) {
  3642.   local0 = OUT_create_OUT(((OUT) NULL));
  3643.   OUT_plus_STR(local0, ((STR) &voidAM_VARR_EXPR));
  3644.   return;
  3645.  }
  3646.  local1 = OUT_create_OUT(((OUT) NULL));
  3647.  OUT_plus_STR(local1, ((STR) &AM_VARR_EXPR));
  3648.  if ((a_3851->ob==((AM_EXPR) NULL))) {
  3649.   local2 = OUT_create_OUT(((OUT) NULL));
  3650.   OUT_plus_STR(local2, ((STR) &voidob_3852));
  3651.  }
  3652.  else {
  3653.   local3 = OUT_create_OUT(((OUT) NULL));
  3654.   OUT_plus_STR(local3, ((STR) &ob_3853));
  3655.   AM_OUT_AM_EXPR_o(self, a_3851->ob);
  3656.  }
  3657.  if ((a_3851->ind==((AM_EXPR) NULL))) {
  3658.   local4 = OUT_create_OUT(((OUT) NULL));
  3659.   OUT_plus_STR(local4, ((STR) &voidind));
  3660.  }
  3661.  else {
  3662.   local5 = OUT_create_OUT(((OUT) NULL));
  3663.   OUT_plus_STR(local5, ((STR) &ind_3854));
  3664.   AM_OUT_AM_EXPR_o(self, a_3851->ind);
  3665.  }
  3666.  if ((a_3851->val_16==((AM_EXPR) NULL))) {
  3667.   local6 = OUT_create_OUT(((OUT) NULL));
  3668.   OUT_plus_STR(local6, ((STR) &voidval_3855));
  3669.  }
  3670.  else {
  3671.   local7 = OUT_create_OUT(((OUT) NULL));
  3672.   OUT_plus_STR(local7, ((STR) &val_3856));
  3673.   AM_OUT_AM_EXPR_o(self, a_3851->val_16);
  3674.  }
  3675. }
  3676.  
  3677.  
  3678. void AM_OUT_AM_EXCEPT(AM_OUT self, AM_EXCEPT_EXPR a_3857) {
  3679.  OUT local0;
  3680.  OUT local1;
  3681.  if ((a_3857==((AM_EXCEPT_EXPR) NULL))) {
  3682.   local0 = OUT_create_OUT(((OUT) NULL));
  3683.   OUT_plus_STR(local0, ((STR) &voidAM_EXCEPT_EXPR));
  3684.   return;
  3685.  }
  3686.  local1 = OUT_create_OUT(((OUT) NULL));
  3687.  OUT_plus_STR(local1, ((STR) &AM_EXCEPT_EXPR_3858));
  3688. }
  3689.  
  3690.  
  3691. void AM_OUT_AM_STMT_E(AM_OUT self, AM_STMT_EXPR a_3859) {
  3692.  OUT local0;
  3693.  OUT local1;
  3694.  OUT local2;
  3695.  OUT local3;
  3696.  OUT local4;
  3697.  OUT local5;
  3698.  if ((a_3859==((AM_STMT_EXPR) NULL))) {
  3699.   local0 = OUT_create_OUT(((OUT) NULL));
  3700.   OUT_plus_STR(local0, ((STR) &voidAM_STMT_EXPR));
  3701.   return;
  3702.  }
  3703.  local1 = OUT_create_OUT(((OUT) NULL));
  3704.  OUT_plus_STR(local1, ((STR) &AM_STMT_EXPR_3860));
  3705.  if ((a_3859->stmts==((AM_STMT) NULL))) {
  3706.   local2 = OUT_create_OUT(((OUT) NULL));
  3707.   OUT_plus_STR(local2, ((STR) &voidstmts));
  3708.  }
  3709.  else {
  3710.   local3 = OUT_create_OUT(((OUT) NULL));
  3711.   OUT_plus_STR(local3, ((STR) &stmts_3861));
  3712.   AM_OUT_AM_STMT_o(self, a_3859->stmts);
  3713.  }
  3714.  if ((a_3859->expr==((AM_EXPR) NULL))) {
  3715.   local4 = OUT_create_OUT(((OUT) NULL));
  3716.   OUT_plus_STR(local4, ((STR) &voidexpr));
  3717.  }
  3718.  else {
  3719.   local5 = OUT_create_OUT(((OUT) NULL));
  3720.   OUT_plus_STR(local5, ((STR) &expr_3862));
  3721.   AM_OUT_AM_EXPR_o(self, a_3859->expr);
  3722.  }
  3723. }
  3724.  
  3725.  
  3726. void AM_OUT_AM_ROUT_C(AM_OUT self, AM_ROUT_CALL_EXPR a_3863) {
  3727.  AM_ROUT_CALL_EXPR noname3864;
  3728.  OUT local0;
  3729.  OUT local1;
  3730.  OUT local2;
  3731.  OUT local3;
  3732.  OUT local4;
  3733.  AM_EXPR local5;
  3734.  if ((a_3863==((AM_ROUT_CALL_EXPR) NULL))) {
  3735.   local0 = OUT_create_OUT(((OUT) NULL));
  3736.   OUT_plus_STR(local0, ((STR) &voidAM_ROUT_CALL));
  3737.   return;
  3738.  }
  3739.  local1 = OUT_create_OUT(((OUT) NULL));
  3740.  OUT_plus_STR(local1, ((STR) &AM_ROUT_CALL_EXP_3865));
  3741.  local2 = OUT_create_OUT(((OUT) NULL));
  3742.  local3 = OUT_plus_STR_OUT(local2, ((STR) &fun_3866));
  3743.  OUT_plus_STR(local3, SIG_str_STR(a_3863->fun));
  3744.  local4 = OUT_create_OUT(((OUT) NULL));
  3745.  OUT_plus_STR(local4, ((STR) &args_3867));
  3746.  {
  3747.   struct AM_ROUT_CALL_EXP_frame_struct temp3868_0;
  3748.   AM_ROUT_CALL_EXP_frame 
  3749.   noname3869 = &temp3868_0;
  3750.   noname3869->state = 0;
  3751.   while (1) {
  3752.    if (noname3869->state == 0) {
  3753.     noname3864 = a_3863;
  3754.     noname3869->arg0 = noname3864;
  3755.    }
  3756.    local5 = AM_ROUT_CALL_EXP(noname3869);
  3757.    if (noname3869->state == -1) goto after_loop;
  3758.    AM_OUT_AM_EXPR_o(self, local5);
  3759.   }
  3760.  }
  3761.  after_loop: ;
  3762. }
  3763.  
  3764.  
  3765. void AM_OUT_AM_ITER_C(AM_OUT self, AM_ITER_CALL_EXPR a_3870) {
  3766.  AM_ITER_CALL_EXPR noname3871;
  3767.  OUT local0;
  3768.  OUT local1;
  3769.  OUT local2;
  3770.  OUT local3;
  3771.  OUT local4;
  3772.  OUT local5;
  3773.  AM_EXPR local6;
  3774.  if ((a_3870==((AM_ITER_CALL_EXPR) NULL))) {
  3775.   local0 = OUT_create_OUT(((OUT) NULL));
  3776.   OUT_plus_STR(local0, ((STR) &voidAM_ITER_CALL));
  3777.   return;
  3778.  }
  3779.  local1 = OUT_create_OUT(((OUT) NULL));
  3780.  OUT_plus_STR(local1, ((STR) &AM_ITER_CALL_EXP_3872));
  3781.  local2 = OUT_create_OUT(((OUT) NULL));
  3782.  local3 = OUT_plus_STR_OUT(local2, ((STR) &fun_3873));
  3783.  OUT_plus_STR(local3, SIG_str_STR(a_3870->fun));
  3784.  local4 = OUT_create_OUT(((OUT) NULL));
  3785.  OUT_plus_STR(local4, ((STR) &init_3874));
  3786.  AM_OUT_AM_STMT_o(self, a_3870->init);
  3787.  local5 = OUT_create_OUT(((OUT) NULL));
  3788.  OUT_plus_STR(local5, ((STR) &args_3875));
  3789.  {
  3790.   struct AM_ITER_CALL_EXP_frame_struct temp3876_0;
  3791.   AM_ITER_CALL_EXP_frame 
  3792.   noname3877 = &temp3876_0;
  3793.   noname3877->state = 0;
  3794.   while (1) {
  3795.    if (noname3877->state == 0) {
  3796.     noname3871 = a_3870;
  3797.     noname3877->arg0 = noname3871;
  3798.    }
  3799.    local6 = AM_ITER_CALL_EXP(noname3877);
  3800.    if (noname3877->state == -1) goto after_loop;
  3801.    AM_OUT_AM_EXPR_o(self, local6);
  3802.   }
  3803.  }
  3804.  after_loop: ;
  3805. }
  3806.  
  3807.  
  3808. void AM_OUT_AM_BND_RO(AM_OUT self, AM_BND_ROUT_CALL a_3878) {
  3809.  AM_BND_ROUT_CALL noname3879;
  3810.  OUT local0;
  3811.  OUT local1;
  3812.  OUT local2;
  3813.  OUT local3;
  3814.  AM_EXPR local4;
  3815.  if ((a_3878==((AM_BND_ROUT_CALL) NULL))) {
  3816.   local0 = OUT_create_OUT(((OUT) NULL));
  3817.   OUT_plus_STR(local0, ((STR) &voidAM_BND_ROUT_));
  3818.   return;
  3819.  }
  3820.  local1 = OUT_create_OUT(((OUT) NULL));
  3821.  OUT_plus_STR(local1, ((STR) &AM_BND_ROUT_CALL_3880));
  3822.  local2 = OUT_create_OUT(((OUT) NULL));
  3823.  OUT_plus_STR(local2, ((STR) &br_3881));
  3824.  AM_OUT_AM_EXPR_o(self, a_3878->br);
  3825.  local3 = OUT_create_OUT(((OUT) NULL));
  3826.  OUT_plus_STR(local3, ((STR) &args_3882));
  3827.  {
  3828.   struct AM_BND_ROUT_CALL_3884_frame_struct temp3883_0;
  3829.   AM_BND_ROUT_CALL_3884_frame 
  3830.   noname3885 = &temp3883_0;
  3831.   noname3885->state = 0;
  3832.   while (1) {
  3833.    if (noname3885->state == 0) {
  3834.     noname3879 = a_3878;
  3835.     noname3885->arg0 = noname3879;
  3836.    }
  3837.    local4 = AM_BND_ROUT_CALL_3884(noname3885);
  3838.    if (noname3885->state == -1) goto after_loop;
  3839.    AM_OUT_AM_EXPR_o(self, local4);
  3840.   }
  3841.  }
  3842.  after_loop: ;
  3843. }
  3844.  
  3845.  
  3846. void AM_OUT_AM_BND_IT(AM_OUT self, AM_BND_ITER_CALL a_3886) {
  3847.  AM_BND_ITER_CALL noname3887;
  3848.  OUT local0;
  3849.  OUT local1;
  3850.  OUT local2;
  3851.  OUT local3;
  3852.  OUT local4;
  3853.  AM_EXPR local5;
  3854.  if ((a_3886==((AM_BND_ITER_CALL) NULL))) {
  3855.   local0 = OUT_create_OUT(((OUT) NULL));
  3856.   OUT_plus_STR(local0, ((STR) &voidAM_BND_ITER_));
  3857.   return;
  3858.  }
  3859.  local1 = OUT_create_OUT(((OUT) NULL));
  3860.  OUT_plus_STR(local1, ((STR) &AM_BND_ITER_CALL_3888));
  3861.  local2 = OUT_create_OUT(((OUT) NULL));
  3862.  OUT_plus_STR(local2, ((STR) &bi_3889));
  3863.  AM_OUT_AM_EXPR_o(self, a_3886->bi);
  3864.  local3 = OUT_create_OUT(((OUT) NULL));
  3865.  OUT_plus_STR(local3, ((STR) &init_3890));
  3866.  AM_OUT_AM_STMT_o(self, a_3886->init);
  3867.  local4 = OUT_create_OUT(((OUT) NULL));
  3868.  OUT_plus_STR(local4, ((STR) &args_3891));
  3869.  {
  3870.   struct AM_BND_ITER_CALL_3893_frame_struct temp3892_0;
  3871.   AM_BND_ITER_CALL_3893_frame 
  3872.   noname3894 = &temp3892_0;
  3873.   noname3894->state = 0;
  3874.   while (1) {
  3875.    if (noname3894->state == 0) {
  3876.     noname3887 = a_3886;
  3877.     noname3894->arg0 = noname3887;
  3878.    }
  3879.    local5 = AM_BND_ITER_CALL_3893(noname3894);
  3880.    if (noname3894->state == -1) goto after_loop;
  3881.    AM_OUT_AM_EXPR_o(self, local5);
  3882.   }
  3883.  }
  3884.  after_loop: ;
  3885. }
  3886.  
  3887.  
  3888. void AM_OUT_AM_EXT_CA(AM_OUT self, AM_EXT_CALL_EXPR a_3895) {
  3889.  AM_EXT_CALL_EXPR noname3896;
  3890.  OUT local0;
  3891.  OUT local1;
  3892.  OUT local2;
  3893.  OUT local3;
  3894.  OUT local4;
  3895.  AM_EXPR local5;
  3896.  if ((a_3895==((AM_EXT_CALL_EXPR) NULL))) {
  3897.   local0 = OUT_create_OUT(((OUT) NULL));
  3898.   OUT_plus_STR(local0, ((STR) &voidAM_EXT_CALL_EXPR));
  3899.   return;
  3900.  }
  3901.  local1 = OUT_create_OUT(((OUT) NULL));
  3902.  OUT_plus_STR(local1, ((STR) &AM_EXT_CALL_EXPR_3897));
  3903.  local2 = OUT_create_OUT(((OUT) NULL));
  3904.  local3 = OUT_plus_STR_OUT(local2, ((STR) &fun_3898));
  3905.  OUT_plus_STR(local3, SIG_str_STR(a_3895->fun));
  3906.  local4 = OUT_create_OUT(((OUT) NULL));
  3907.  OUT_plus_STR(local4, ((STR) &args_3899));
  3908.  {
  3909.   struct AM_EXT_CALL_EXPR_3901_frame_struct temp3900_0;
  3910.   AM_EXT_CALL_EXPR_3901_frame 
  3911.   noname3902 = &temp3900_0;
  3912.   noname3902->state = 0;
  3913.   while (1) {
  3914.    if (noname3902->state == 0) {
  3915.     noname3896 = a_3895;
  3916.     noname3902->arg0 = noname3896;
  3917.    }
  3918.    local5 = AM_EXT_CALL_EXPR_3901(noname3902);
  3919.    if (noname3902->state == -1) goto after_loop;
  3920.    AM_OUT_AM_EXPR_o(self, local5);
  3921.   }
  3922.  }
  3923.  after_loop: ;
  3924. }
  3925.  
  3926.  
  3927. void AM_OUT_AM_VOID_C(AM_OUT self, AM_VOID_CONST a_3903) {
  3928.  OUT local0;
  3929.  OUT local1;
  3930.  OUT local2;
  3931.  OUT local3;
  3932.  TP local4;
  3933.  OUT local5;
  3934.  if ((a_3903==((AM_VOID_CONST) NULL))) {
  3935.   local0 = OUT_create_OUT(((OUT) NULL));
  3936.   OUT_plus_STR(local0, ((STR) &voidvoidAM_VOID_));
  3937.   return;
  3938.  }
  3939.  local1 = OUT_create_OUT(((OUT) NULL));
  3940.  OUT_plus_STR(local1, ((STR) &AM_VOID_CONST_3904));
  3941.  if ((a_3903->tp_at==((TP) NULL))) {
  3942.   local2 = OUT_create_OUT(((OUT) NULL));
  3943.   OUT_plus_STR(local2, ((STR) &void_3905));
  3944.  }
  3945.  else {
  3946.   local3 = OUT_create_OUT(((OUT) NULL));
  3947.   local4 = a_3903->tp_at;
  3948.   local5 = OUT_plus_STR_OUT(local3, (*TP_str_STR[local4->header.tag+TP_str_STR_offset])(local4));
  3949.   OUT_plus_STR(local5, ((STR) &name_3906));
  3950.  }
  3951. }
  3952.  
  3953.  
  3954. void AM_OUT_AM_ARR_CO(AM_OUT self, AM_ARR_CONST a_3907) {
  3955.  ARRAYAM_CONST noname3908;
  3956.  OUT local0;
  3957.  OUT local1;
  3958.  OUT local2;
  3959.  OUT local3;
  3960.  OUT local4;
  3961.  AM_CONST local5;
  3962.  if ((a_3907==((AM_ARR_CONST) NULL))) {
  3963.   local0 = OUT_create_OUT(((OUT) NULL));
  3964.   OUT_plus_STR(local0, ((STR) &voidAM_ARR_CONST));
  3965.   return;
  3966.  }
  3967.  local1 = OUT_create_OUT(((OUT) NULL));
  3968.  OUT_plus_STR(local1, ((STR) &AM_ARR_CONST_3909));
  3969.  local2 = OUT_create_OUT(((OUT) NULL));
  3970.  local3 = OUT_plus_STR_OUT(local2, ((STR) &elt_tp_3910));
  3971.  OUT_plus_STR(local3, TP_CLASS_str_STR(a_3907->elt_tp));
  3972.  local4 = OUT_create_OUT(((OUT) NULL));
  3973.  OUT_plus_STR(local4, ((STR) &elts_3911));
  3974.  {
  3975.   struct ARRAYAM_CONST_el_frame_struct temp3912_0;
  3976.   ARRAYAM_CONST_el_frame 
  3977.   noname3913 = &temp3912_0;
  3978.   noname3913->state = 0;
  3979.   while (1) {
  3980.    if (noname3913->state == 0) {
  3981.     noname3908 = a_3907->elts;
  3982.     noname3913->arg0 = noname3908;
  3983.    }
  3984.    local5 = ARRAYAM_CONST_el(noname3913);
  3985.    if (noname3913->state == -1) goto after_loop;
  3986.    AM_OUT_AM_EXPR_o(self, ((AM_EXPR) local5));
  3987.   }
  3988.  }
  3989.  after_loop: ;
  3990. }
  3991.  
  3992.  
  3993. void AM_OUT_AM_BOOL_C(AM_OUT self, AM_BOOL_CONST a_3914) {
  3994.  OUT local0;
  3995.  OUT local1;
  3996.  OUT local2;
  3997.  OUT local3;
  3998.  if ((a_3914==((AM_BOOL_CONST) NULL))) {
  3999.   local0 = OUT_create_OUT(((OUT) NULL));
  4000.   OUT_plus_STR(local0, ((STR) &voidAM_BOOL_CONST));
  4001.   return;
  4002.  }
  4003.  local1 = OUT_create_OUT(((OUT) NULL));
  4004.  OUT_plus_STR(local1, ((STR) &AM_BOOL_CONST_3915));
  4005.  if (a_3914->val_16) {
  4006.   local2 = OUT_create_OUT(((OUT) NULL));
  4007.   OUT_plus_STR(local2, ((STR) &valtrue));
  4008.  }
  4009.  else {
  4010.   local3 = OUT_create_OUT(((OUT) NULL));
  4011.   OUT_plus_STR(local3, ((STR) &valfalse));
  4012.  }
  4013. }
  4014.  
  4015.  
  4016. OUT OUT_plus_CHAR_OUT(OUT self, CHAR c_3916) {
  4017.  OUT noname3917;
  4018.  c_out_char(c_3916);
  4019.  return self;
  4020. }
  4021.  
  4022.  
  4023. void AM_OUT_AM_CHAR_C(AM_OUT self, AM_CHAR_CONST a_3918) {
  4024.  OUT local0;
  4025.  OUT local1;
  4026.  OUT local2;
  4027.  OUT local3;
  4028.  OUT local4;
  4029.  if ((a_3918==((AM_CHAR_CONST) NULL))) {
  4030.   local0 = OUT_create_OUT(((OUT) NULL));
  4031.   OUT_plus_STR(local0, ((STR) &voidAM_CHAR_CONST));
  4032.   return;
  4033.  }
  4034.  local1 = OUT_create_OUT(((OUT) NULL));
  4035.  OUT_plus_STR(local1, ((STR) &AM_CHAR_CONST_3919));
  4036.  local2 = OUT_create_OUT(((OUT) NULL));
  4037.  local3 = OUT_plus_STR_OUT(local2, ((STR) &bval_3920));
  4038.  local4 = OUT_plus_CHAR_OUT(local3, a_3918->bval);
  4039.  OUT_plus_STR(local4, ((STR) &name_3921));
  4040. }
  4041.  
  4042.  
  4043. void AM_OUT_AM_STR_CO(AM_OUT self, AM_STR_CONST a_3922) {
  4044.  OUT local0;
  4045.  OUT local1;
  4046.  OUT local2;
  4047.  OUT local3;
  4048.  if ((a_3922==((AM_STR_CONST) NULL))) {
  4049.   local0 = OUT_create_OUT(((OUT) NULL));
  4050.   OUT_plus_STR(local0, ((STR) &voidAM_STR_CONST));
  4051.   return;
  4052.  }
  4053.  local1 = OUT_create_OUT(((OUT) NULL));
  4054.  OUT_plus_STR(local1, ((STR) &AM_STR_CONST_3923));
  4055.  local2 = OUT_create_OUT(((OUT) NULL));
  4056.  local3 = OUT_plus_STR_OUT(local2, ((STR) &bval_3924));
  4057.  OUT_plus_STR(local3, a_3922->bval);
  4058. }
  4059.  
  4060.  
  4061. INT FLISTINT_pop_INT(FLISTINT self) {
  4062.  INT noname3925 = ((INT) 0);
  4063.  INT r_3926 = ((INT) 0);
  4064.  INT local0;
  4065.  INT local1;
  4066.  local0 = FLISTINT_size_INT(self);
  4067.  if ((local0==0)) {
  4068.   return ((INT) 0);
  4069.  }
  4070.  r_3926 = FLISTINT_aget_IN(self, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  4071.  local1 = (c_INT_minus_INT_INT_chk(self->loc_17,1));
  4072.  FLISTINT_aset_IN(self, local1, ((INT) 0));
  4073.  self->loc_17 = (c_INT_minus_INT_INT_chk(self->loc_17,1));
  4074.  return r_3926;
  4075.  if (!FLISTINT_invaria(self)) {
  4076.   fprintf(stderr,"Failed invariant FLIST{INT}::invariant:BOOL ../Library/flist.sa:90:6\n");
  4077.   exit(16);
  4078.  }
  4079. }
  4080.  
  4081.  
  4082. FSTR INTI_str_in_FSTR_3927(INTI self, FSTR s_3928) {
  4083.  FSTR noname3929;
  4084.  INTI x;
  4085.  FLISTINT d = ((FLISTINT) NULL);
  4086.  INT local0;
  4087.  INT local1;
  4088.  INT local2;
  4089.  INT local3;
  4090.  INT local4;
  4091.  if ((self->len_37==0)) {
  4092.   return FSTR_plus_CHAR_FSTR(s_3928, '0');
  4093.  }
  4094.  if ((self->len_37<0)) {
  4095.   s_3928 = FSTR_plus_CHAR_FSTR(s_3928, '-');
  4096.  }
  4097.  local0 = INT_abs_INT(self->len_37);
  4098.  if ((local0==1)) {
  4099.   local1 = INTI_aget_INT_INT(self, 0);
  4100.   return INT_str_in_FSTR_FSTR(local1, s_3928);
  4101.  }
  4102.  x = INTI_copy_INTI(self);
  4103.  while (1) {
  4104.   d = FLISTINT_push_IN(d, INTI_u_mod_INTI_(self, x, shared_INTI_D));
  4105.   if ((x->len_37==0)) {
  4106.    goto after_loop;
  4107.   }
  4108.  }
  4109.  after_loop: ;
  4110.  local2 = FLISTINT_pop_INT(d);
  4111.  s_3928 = INT_str_in_FSTR_FSTR(local2, s_3928);
  4112.  while (1) {
  4113.   local3 = FLISTINT_size_INT(d);
  4114.   if ((local3>0)) {
  4115.   }
  4116.   else {
  4117.    goto after_loop_3931;
  4118.   }
  4119.   local4 = FLISTINT_pop_INT(d);
  4120.   s_3928 = INT_str_in_FSTR_(local4, s_3928, shared_INTI_log10D, 10, '0');
  4121.  }
  4122.  after_loop_3931: ;
  4123.  return s_3928;
  4124. }
  4125.  
  4126.  
  4127. void INTI_buf_FSTR(INTI self, FSTR buf_3933) {
  4128.  shared_INTI_buf = buf_3933;
  4129. }
  4130.  
  4131.  
  4132. STR INTI_str_STR(INTI self) {
  4133.  STR noname3934;
  4134.  FSTR_clear(shared_INTI_buf);
  4135.  INTI_buf_FSTR(self, INTI_str_in_FSTR_3927(self, shared_INTI_buf));
  4136.  return FSTR_str_STR(shared_INTI_buf);
  4137. }
  4138.  
  4139.  
  4140. void OUT_plus_INTI(OUT self, INTI i) {
  4141.  c_out_str(((INTI_str_STR(i)==NULL)?NULL:INTI_str_STR(i)->arr_part));
  4142. }
  4143.  
  4144.  
  4145. void AM_OUT_AM_INT_CO(AM_OUT self, AM_INT_CONST a_3935) {
  4146.  OUT local0;
  4147.  OUT local1;
  4148.  OUT local2;
  4149.  OUT local3;
  4150.  if ((a_3935==((AM_INT_CONST) NULL))) {
  4151.   local0 = OUT_create_OUT(((OUT) NULL));
  4152.   OUT_plus_STR(local0, ((STR) &voidAM_INT_CONST));
  4153.   return;
  4154.  }
  4155.  local1 = OUT_create_OUT(((OUT) NULL));
  4156.  OUT_plus_STR(local1, ((STR) &AM_INT_CONST_3936));
  4157.  local2 = OUT_create_OUT(((OUT) NULL));
  4158.  local3 = OUT_plus_STR_OUT(local2, ((STR) &val_3937));
  4159.  OUT_plus_INTI(local3, a_3935->val_16);
  4160. }
  4161.  
  4162.  
  4163. void AM_OUT_AM_INTI_C(AM_OUT self, AM_INTI_CONST a_3938) {
  4164.  OUT local0;
  4165.  OUT local1;
  4166.  OUT local2;
  4167.  OUT local3;
  4168.  if ((a_3938==((AM_INTI_CONST) NULL))) {
  4169.   local0 = OUT_create_OUT(((OUT) NULL));
  4170.   OUT_plus_STR(local0, ((STR) &voidAM_INTI_CONST));
  4171.   return;
  4172.  }
  4173.  local1 = OUT_create_OUT(((OUT) NULL));
  4174.  OUT_plus_STR(local1, ((STR) &AM_INTI_CONST_3939));
  4175.  local2 = OUT_create_OUT(((OUT) NULL));
  4176.  local3 = OUT_plus_STR_OUT(local2, ((STR) &val_3940));
  4177.  OUT_plus_STR(local3, INTI_str_STR(a_3938->val_16));
  4178. }
  4179.  
  4180.  
  4181. STR RAT_str_STR(RAT self) {
  4182.  STR noname3941;
  4183.  STR local0;
  4184.  STR local1;
  4185.  if (RAT_is_int_BOOL(self)) {
  4186.   return INTI_str_STR(self.u);
  4187.  }
  4188.  local0 = INTI_str_STR(self.u);
  4189.  local1 = STR_plus_CHAR_STR(local0, '/');
  4190.  return STR_plus_STR_STR(local1, INTI_str_STR(self.v));
  4191. }
  4192.  
  4193.  
  4194. void AM_OUT_AM_FLT_CO(AM_OUT self, AM_FLT_CONST a_3942) {
  4195.  OUT local0;
  4196.  OUT local1;
  4197.  OUT local2;
  4198.  OUT local3;
  4199.  if ((a_3942==((AM_FLT_CONST) NULL))) {
  4200.   local0 = OUT_create_OUT(((OUT) NULL));
  4201.   OUT_plus_STR(local0, ((STR) &voidAM_FLT_CONST));
  4202.   return;
  4203.  }
  4204.  local1 = OUT_create_OUT(((OUT) NULL));
  4205.  OUT_plus_STR(local1, ((STR) &AM_FLT_CONST_3943));
  4206.  local2 = OUT_create_OUT(((OUT) NULL));
  4207.  local3 = OUT_plus_STR_OUT(local2, ((STR) &val_3944));
  4208.  OUT_plus_STR(local3, RAT_str_STR(a_3942->val_16));
  4209. }
  4210.  
  4211.  
  4212. void AM_OUT_AM_FLTD_C(AM_OUT self, AM_FLTD_CONST a_3945) {
  4213.  OUT local0;
  4214.  OUT local1;
  4215.  OUT local2;
  4216.  OUT local3;
  4217.  if ((a_3945==((AM_FLTD_CONST) NULL))) {
  4218.   local0 = OUT_create_OUT(((OUT) NULL));
  4219.   OUT_plus_STR(local0, ((STR) &voidAM_FLTD_CONST));
  4220.   return;
  4221.  }
  4222.  local1 = OUT_create_OUT(((OUT) NULL));
  4223.  OUT_plus_STR(local1, ((STR) &AM_FLTD_CONST_3946));
  4224.  local2 = OUT_create_OUT(((OUT) NULL));
  4225.  local3 = OUT_plus_STR_OUT(local2, ((STR) &val_3947));
  4226.  OUT_plus_STR(local3, RAT_str_STR(a_3945->val_16));
  4227. }
  4228.  
  4229.  
  4230. void AM_OUT_AM_FLTX_C(AM_OUT self, AM_FLTX_CONST a_3948) {
  4231.  OUT local0;
  4232.  OUT local1;
  4233.  OUT local2;
  4234.  OUT local3;
  4235.  if ((a_3948==((AM_FLTX_CONST) NULL))) {
  4236.   local0 = OUT_create_OUT(((OUT) NULL));
  4237.   OUT_plus_STR(local0, ((STR) &voidAM_FLTX_CONST));
  4238.   return;
  4239.  }
  4240.  local1 = OUT_create_OUT(((OUT) NULL));
  4241.  OUT_plus_STR(local1, ((STR) &AM_FLTX_CONST_3949));
  4242.  local2 = OUT_create_OUT(((OUT) NULL));
  4243.  local3 = OUT_plus_STR_OUT(local2, ((STR) &val_3950));
  4244.  OUT_plus_STR(local3, RAT_str_STR(a_3948->val_16));
  4245. }
  4246.  
  4247.  
  4248. void AM_OUT_AM_FLTDX_(AM_OUT self, AM_FLTDX_CONST a_3951) {
  4249.  OUT local0;
  4250.  OUT local1;
  4251.  OUT local2;
  4252.  OUT local3;
  4253.  if ((a_3951==((AM_FLTDX_CONST) NULL))) {
  4254.   local0 = OUT_create_OUT(((OUT) NULL));
  4255.   OUT_plus_STR(local0, ((STR) &voidAM_FLTDX_CONST));
  4256.   return;
  4257.  }
  4258.  local1 = OUT_create_OUT(((OUT) NULL));
  4259.  OUT_plus_STR(local1, ((STR) &AM_FLTDX_CONST_3952));
  4260.  local2 = OUT_create_OUT(((OUT) NULL));
  4261.  local3 = OUT_plus_STR_OUT(local2, ((STR) &val_3953));
  4262.  OUT_plus_STR(local3, RAT_str_STR(a_3951->val_16));
  4263. }
  4264.  
  4265.  
  4266. void AM_OUT_AM_FLTI_C(AM_OUT self, AM_FLTI_CONST a_3954) {
  4267.  OUT local0;
  4268.  OUT local1;
  4269.  OUT local2;
  4270.  OUT local3;
  4271.  if ((a_3954==((AM_FLTI_CONST) NULL))) {
  4272.   local0 = OUT_create_OUT(((OUT) NULL));
  4273.   OUT_plus_STR(local0, ((STR) &voidAM_FLTI_CONST));
  4274.   return;
  4275.  }
  4276.  local1 = OUT_create_OUT(((OUT) NULL));
  4277.  OUT_plus_STR(local1, ((STR) &AM_FLTI_CONST_3955));
  4278.  local2 = OUT_create_OUT(((OUT) NULL));
  4279.  local3 = OUT_plus_STR_OUT(local2, ((STR) &val_3956));
  4280.  OUT_plus_STR(local3, RAT_str_STR(a_3954->val_16));
  4281. }
  4282.  
  4283.  
  4284. void AM_OUT_AM_EXPR_o(AM_OUT self, AM_EXPR a_3957) {
  4285.  OUT local0;
  4286.  OUT local1;
  4287.  OUT local2;
  4288.  if ((a_3957==((AM_EXPR) NULL))) {
  4289.   local0 = OUT_create_OUT(((OUT) NULL));
  4290.   OUT_plus_STR(local0, ((STR) &voidAM_EXPR));
  4291.   return;
  4292.  }
  4293.  local1 = OUT_create_OUT(((OUT) NULL));
  4294.  OUT_plus_STR(local1, ((STR) &name_3958));
  4295.  if (a_3957==NULL) {
  4296.  } else
  4297.  switch (a_3957->header.tag) {
  4298.   case AM_LOCAL_EXPR_tag:
  4299.    AM_OUT_AM_LOCAL_(self, ((AM_LOCAL_EXPR) a_3957)); break;
  4300.   case AM_ARRAY_EXPR_tag:
  4301.    AM_OUT_AM_ARRAY_(self, ((AM_ARRAY_EXPR) a_3957)); break;
  4302.   case AM_BND_CREATE_EXPR_tag:
  4303.    AM_OUT_AM_BND_CR(self, ((AM_BND_CREATE_EXPR) a_3957)); break;
  4304.   case AM_IF_EXPR_tag:
  4305.    AM_OUT_AM_IF_EXP(self, ((AM_IF_EXPR) a_3957)); break;
  4306.   case AM_NEW_EXPR_tag:
  4307.    AM_OUT_AM_NEW_EX(self, ((AM_NEW_EXPR) a_3957)); break;
  4308.   case AM_IS_VOID_EXPR_tag:
  4309.    AM_OUT_AM_IS_VOI(self, ((AM_IS_VOID_EXPR) a_3957)); break;
  4310.   case AM_GLOBAL_EXPR_tag:
  4311.    AM_OUT_AM_GLOBAL(self, ((AM_GLOBAL_EXPR) a_3957)); break;
  4312.   case AM_ATTR_EXPR_tag:
  4313.    AM_OUT_AM_ATTR_E(self, ((AM_ATTR_EXPR) a_3957)); break;
  4314.   case AM_ARR_EXPR_tag:
  4315.    AM_OUT_AM_ARR_EX(self, ((AM_ARR_EXPR) a_3957)); break;
  4316.   case AM_VATTR_ASSIGN_EXPR_tag:
  4317.    AM_OUT_AM_VATTR_(self, ((AM_VATTR_ASSIGN_EXPR) a_3957)); break;
  4318.   case AM_VARR_ASSIGN_EXPR_tag:
  4319.    AM_OUT_AM_VARR_A(self, ((AM_VARR_ASSIGN_EXPR) a_3957)); break;
  4320.   case AM_EXCEPT_EXPR_tag:
  4321.    AM_OUT_AM_EXCEPT(self, ((AM_EXCEPT_EXPR) a_3957)); break;
  4322.   case AM_STMT_EXPR_tag:
  4323.    AM_OUT_AM_STMT_E(self, ((AM_STMT_EXPR) a_3957)); break;
  4324.   case AM_ROUT_CALL_EXPR_tag:
  4325.    AM_OUT_AM_ROUT_C(self, ((AM_ROUT_CALL_EXPR) a_3957)); break;
  4326.   case AM_ITER_CALL_EXPR_tag:
  4327.    AM_OUT_AM_ITER_C(self, ((AM_ITER_CALL_EXPR) a_3957)); break;
  4328.   case AM_BND_ROUT_CALL_tag:
  4329.    AM_OUT_AM_BND_RO(self, ((AM_BND_ROUT_CALL) a_3957)); break;
  4330.   case AM_BND_ITER_CALL_tag:
  4331.    AM_OUT_AM_BND_IT(self, ((AM_BND_ITER_CALL) a_3957)); break;
  4332.   case AM_EXT_CALL_EXPR_tag:
  4333.    AM_OUT_AM_EXT_CA(self, ((AM_EXT_CALL_EXPR) a_3957)); break;
  4334.   case AM_VOID_CONST_tag:
  4335.    AM_OUT_AM_VOID_C(self, ((AM_VOID_CONST) a_3957)); break;
  4336.   case AM_ARR_CONST_tag:
  4337.    AM_OUT_AM_ARR_CO(self, ((AM_ARR_CONST) a_3957)); break;
  4338.   case AM_BOOL_CONST_tag:
  4339.    AM_OUT_AM_BOOL_C(self, ((AM_BOOL_CONST) a_3957)); break;
  4340.   case AM_CHAR_CONST_tag:
  4341.    AM_OUT_AM_CHAR_C(self, ((AM_CHAR_CONST) a_3957)); break;
  4342.   case AM_STR_CONST_tag:
  4343.    AM_OUT_AM_STR_CO(self, ((AM_STR_CONST) a_3957)); break;
  4344.   case AM_INT_CONST_tag:
  4345.    AM_OUT_AM_INT_CO(self, ((AM_INT_CONST) a_3957)); break;
  4346.   case AM_INTI_CONST_tag:
  4347.    AM_OUT_AM_INTI_C(self, ((AM_INTI_CONST) a_3957)); break;
  4348.   case AM_FLT_CONST_tag:
  4349.    AM_OUT_AM_FLT_CO(self, ((AM_FLT_CONST) a_3957)); break;
  4350.   case AM_FLTD_CONST_tag:
  4351.    AM_OUT_AM_FLTD_C(self, ((AM_FLTD_CONST) a_3957)); break;
  4352.   case AM_FLTX_CONST_tag:
  4353.    AM_OUT_AM_FLTX_C(self, ((AM_FLTX_CONST) a_3957)); break;
  4354.   case AM_FLTDX_CONST_tag:
  4355.    AM_OUT_AM_FLTDX_(self, ((AM_FLTDX_CONST) a_3957)); break;
  4356.   case AM_FLTI_CONST_tag:
  4357.    AM_OUT_AM_FLTI_C(self, ((AM_FLTI_CONST) a_3957)); break;
  4358.   default: ;
  4359.    fprintf(stderr,"No applicable type in typecase ./am_out.sa:94:14\n");
  4360.    exit(16);
  4361.  }
  4362.  local2 = OUT_create_OUT(((OUT) NULL));
  4363.  OUT_plus_STR(local2, ((STR) &name_3959));
  4364. }
  4365.  
  4366.  
  4367. void AM_OUT_AM_ASSIGN(AM_OUT self, AM_ASSIGN_STMT a_3960) {
  4368.  OUT local0;
  4369.  OUT local1;
  4370.  OUT local2;
  4371.  OUT local3;
  4372.  if ((a_3960==((AM_ASSIGN_STMT) NULL))) {
  4373.   local0 = OUT_create_OUT(((OUT) NULL));
  4374.   OUT_plus_STR(local0, ((STR) &voidAM_ASSIGN_STMT));
  4375.   return;
  4376.  }
  4377.  local1 = OUT_create_OUT(((OUT) NULL));
  4378.  OUT_plus_STR(local1, ((STR) &AM_ASSIGN_STMT_3961));
  4379.  local2 = OUT_create_OUT(((OUT) NULL));
  4380.  OUT_plus_STR(local2, ((STR) &dest_3962));
  4381.  AM_OUT_AM_EXPR_o(self, a_3960->dest);
  4382.  local3 = OUT_create_OUT(((OUT) NULL));
  4383.  OUT_plus_STR(local3, ((STR) &src_3963));
  4384.  AM_OUT_AM_EXPR_o(self, a_3960->src_42);
  4385. }
  4386.  
  4387.  
  4388. void AM_OUT_AM_IF_STM(AM_OUT self, AM_IF_STMT a_3964) {
  4389.  OUT local0;
  4390.  OUT local1;
  4391.  OUT local2;
  4392.  OUT local3;
  4393.  OUT local4;
  4394.  if ((a_3964==((AM_IF_STMT) NULL))) {
  4395.   local0 = OUT_create_OUT(((OUT) NULL));
  4396.   OUT_plus_STR(local0, ((STR) &voidAM_IF_STMT));
  4397.   return;
  4398.  }
  4399.  local1 = OUT_create_OUT(((OUT) NULL));
  4400.  OUT_plus_STR(local1, ((STR) &AM_IF_STMT_3965));
  4401.  local2 = OUT_create_OUT(((OUT) NULL));
  4402.  OUT_plus_STR(local2, ((STR) &test_3966));
  4403.  AM_OUT_AM_EXPR_o(self, a_3964->test_40);
  4404.  local3 = OUT_create_OUT(((OUT) NULL));
  4405.  OUT_plus_STR(local3, ((STR) &if_true_3967));
  4406.  AM_OUT_AM_STMT_o(self, a_3964->if_true);
  4407.  local4 = OUT_create_OUT(((OUT) NULL));
  4408.  OUT_plus_STR(local4, ((STR) &if_false_3968));
  4409.  AM_OUT_AM_STMT_o(self, a_3964->if_false);
  4410. }
  4411.  
  4412.  
  4413. void AM_OUT_AM_LOOP_S(AM_OUT self, AM_LOOP_STMT a_3969) {
  4414.  OUT local0;
  4415.  OUT local1;
  4416.  OUT local2;
  4417.  OUT local3;
  4418.  OUT local4;
  4419.  if ((a_3969==((AM_LOOP_STMT) NULL))) {
  4420.   local0 = OUT_create_OUT(((OUT) NULL));
  4421.   OUT_plus_STR(local0, ((STR) &voidAM_LOOP_STMT));
  4422.   return;
  4423.  }
  4424.  local1 = OUT_create_OUT(((OUT) NULL));
  4425.  OUT_plus_STR(local1, ((STR) &AM_LOOP_STMT_3970));
  4426.  if (a_3969->has_yield) {
  4427.   local2 = OUT_create_OUT(((OUT) NULL));
  4428.   OUT_plus_STR(local2, ((STR) &has_yieldtrue));
  4429.  }
  4430.  else {
  4431.   local3 = OUT_create_OUT(((OUT) NULL));
  4432.   OUT_plus_STR(local3, ((STR) &has_yieldfalse));
  4433.  }
  4434.  local4 = OUT_create_OUT(((OUT) NULL));
  4435.  OUT_plus_STR(local4, ((STR) &body_3971));
  4436.  AM_OUT_AM_STMT_o(self, a_3969->body);
  4437. }
  4438.  
  4439.  
  4440. void AM_OUT_AM_BREAK_(AM_OUT self, AM_BREAK_STMT a_3972) {
  4441.  OUT local0;
  4442.  OUT local1;
  4443.  if ((a_3972==((AM_BREAK_STMT) NULL))) {
  4444.   local0 = OUT_create_OUT(((OUT) NULL));
  4445.   OUT_plus_STR(local0, ((STR) &voidAM_BREAK_STMT));
  4446.   return;
  4447.  }
  4448.  local1 = OUT_create_OUT(((OUT) NULL));
  4449.  OUT_plus_STR(local1, ((STR) &AM_BREAK_STMT_3973));
  4450. }
  4451.  
  4452.  
  4453. void AM_OUT_AM_RETURN(AM_OUT self, AM_RETURN_STMT a_3974) {
  4454.  OUT local0;
  4455.  OUT local1;
  4456.  OUT local2;
  4457.  if ((a_3974==((AM_RETURN_STMT) NULL))) {
  4458.   local0 = OUT_create_OUT(((OUT) NULL));
  4459.   OUT_plus_STR(local0, ((STR) &voidAM_RETURN_STMT));
  4460.   return;
  4461.  }
  4462.  local1 = OUT_create_OUT(((OUT) NULL));
  4463.  OUT_plus_STR(local1, ((STR) &AM_RETURN_STMT_3975));
  4464.  local2 = OUT_create_OUT(((OUT) NULL));
  4465.  OUT_plus_STR(local2, ((STR) &val_3976));
  4466.  AM_OUT_AM_EXPR_o(self, a_3974->val_16);
  4467. }
  4468.  
  4469.  
  4470. void AM_OUT_AM_YIELD_(AM_OUT self, AM_YIELD_STMT a_3977) {
  4471.  OUT local0;
  4472.  OUT local1;
  4473.  OUT local2;
  4474.  OUT local3;
  4475.  OUT local4;
  4476.  if ((a_3977==((AM_YIELD_STMT) NULL))) {
  4477.   local0 = OUT_create_OUT(((OUT) NULL));
  4478.   OUT_plus_STR(local0, ((STR) &voidAM_YIELD_STMT));
  4479.   return;
  4480.  }
  4481.  local1 = OUT_create_OUT(((OUT) NULL));
  4482.  OUT_plus_STR(local1, ((STR) &AM_YIELD_STMT_3978));
  4483.  local2 = OUT_create_OUT(((OUT) NULL));
  4484.  local3 = OUT_plus_STR_OUT(local2, ((STR) &ret_3979));
  4485.  OUT_plus_INT(local3, a_3977->ret);
  4486.  local4 = OUT_create_OUT(((OUT) NULL));
  4487.  OUT_plus_STR(local4, ((STR) &val_3980));
  4488.  AM_OUT_AM_EXPR_o(self, a_3977->val_16);
  4489. }
  4490.  
  4491.  
  4492. INT FLISTFLISTAM_CON(FLISTFLISTAM_CONST self) {
  4493.  INT noname3981 = ((INT) 0);
  4494.  if ((self==((FLISTFLISTAM_CONST) NULL))) {
  4495.   return 0;
  4496.  }
  4497.  return self->loc_17;
  4498.  if (!FLISTFLISTAM_CON_3982(self)) {
  4499.   fprintf(stderr,"Failed invariant FLIST{FLIST{$AM_CONST}}::invariant:BOOL ../Library/flist.sa:50:7\n");
  4500.   exit(16);
  4501.  }
  4502. }
  4503.  
  4504.  
  4505. INT FLISTFLISTAM_CON_3983(FLISTFLISTAM_CONST self) {
  4506.  INT noname3984 = ((INT) 0);
  4507.   return self->asize;
  4508.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  4509.  exit(16);
  4510. }
  4511.  
  4512.  
  4513. FLISTAM_CONST FLISTFLISTAM_CON_3985(FLISTFLISTAM_CONST self, INT ind_3986) {
  4514.  FLISTAM_CONST noname3987;
  4515.  BOOL local0;
  4516.  INT local1;
  4517.  INT local2;
  4518.  if ((!((self==((FLISTFLISTAM_CONST) NULL))))) {
  4519.   local1 = 0;
  4520.   local2 = (self->asize);
  4521.   local0 = INT_is_bet_INT_I(ind_3986, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  4522.  } else {
  4523.   local0 = FALSE;
  4524.  }
  4525.  if (!(local0)) {
  4526.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  4527.   exit(16);
  4528.  }
  4529.  if (ind_3986<0||ind_3986>=self->asize) {
  4530.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  4531.   exit(16);
  4532.  }
  4533.  return self->arr_part[ind_3986];
  4534. }
  4535.  
  4536.  
  4537. FLISTAM_CONST FLISTFLISTAM_CON_3988(FLISTFLISTAM_CONST self, INT ind_3989) {
  4538.  FLISTAM_CONST noname3990;
  4539.  BOOL local0;
  4540.  INT local1;
  4541.  if ((!((self==((FLISTFLISTAM_CONST) NULL))))) {
  4542.   local1 = 0;
  4543.   local0 = INT_is_bet_INT_I(ind_3989, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  4544.  } else {
  4545.   local0 = FALSE;
  4546.  }
  4547.  if (!(local0)) {
  4548.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:68:7\n");
  4549.   exit(16);
  4550.  }
  4551.  return FLISTFLISTAM_CON_3985(self, ind_3989);
  4552.  if (!FLISTFLISTAM_CON_3982(self)) {
  4553.   fprintf(stderr,"Failed invariant FLIST{FLIST{$AM_CONST}}::invariant:BOOL ../Library/flist.sa:68:7\n");
  4554.   exit(16);
  4555.  }
  4556. }
  4557.  
  4558.  
  4559. INT FLISTAM_CONST_si(FLISTAM_CONST self) {
  4560.  INT noname3991 = ((INT) 0);
  4561.  if ((self==((FLISTAM_CONST) NULL))) {
  4562.   return 0;
  4563.  }
  4564.  return self->loc_17;
  4565.  if (!FLISTAM_CONST_in(self)) {
  4566.   fprintf(stderr,"Failed invariant FLIST{$AM_CONST}::invariant:BOOL ../Library/flist.sa:50:7\n");
  4567.   exit(16);
  4568.  }
  4569. }
  4570.  
  4571.  
  4572. INT FLISTAM_CONST_as(FLISTAM_CONST self) {
  4573.  INT noname3992 = ((INT) 0);
  4574.   return self->asize;
  4575.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  4576.  exit(16);
  4577. }
  4578.  
  4579.  
  4580. AM_CONST FLISTAM_CONST_ar(FLISTAM_CONST self, INT ind_3993) {
  4581.  AM_CONST noname3994;
  4582.  BOOL local0;
  4583.  INT local1;
  4584.  INT local2;
  4585.  if ((!((self==((FLISTAM_CONST) NULL))))) {
  4586.   local1 = 0;
  4587.   local2 = (self->asize);
  4588.   local0 = INT_is_bet_INT_I(ind_3993, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  4589.  } else {
  4590.   local0 = FALSE;
  4591.  }
  4592.  if (!(local0)) {
  4593.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  4594.   exit(16);
  4595.  }
  4596.  if (ind_3993<0||ind_3993>=self->asize) {
  4597.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  4598.   exit(16);
  4599.  }
  4600.  return self->arr_part[ind_3993];
  4601. }
  4602.  
  4603.  
  4604. AM_CONST FLISTAM_CONST_ag(FLISTAM_CONST self, INT ind_3995) {
  4605.  AM_CONST noname3996;
  4606.  BOOL local0;
  4607.  INT local1;
  4608.  if ((!((self==((FLISTAM_CONST) NULL))))) {
  4609.   local1 = 0;
  4610.   local0 = INT_is_bet_INT_I(ind_3995, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  4611.  } else {
  4612.   local0 = FALSE;
  4613.  }
  4614.  if (!(local0)) {
  4615.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:68:7\n");
  4616.   exit(16);
  4617.  }
  4618.  return FLISTAM_CONST_ar(self, ind_3995);
  4619.  if (!FLISTAM_CONST_in(self)) {
  4620.   fprintf(stderr,"Failed invariant FLIST{$AM_CONST}::invariant:BOOL ../Library/flist.sa:68:7\n");
  4621.   exit(16);
  4622.  }
  4623. }
  4624.  
  4625.  
  4626. void AM_OUT_AM_CONST_(AM_OUT self, AM_CONST a_3997) {
  4627.  OUT local0;
  4628.  OUT local1;
  4629.  OUT local2;
  4630.  if ((a_3997==((AM_CONST) NULL))) {
  4631.   local0 = OUT_create_OUT(((OUT) NULL));
  4632.   OUT_plus_STR(local0, ((STR) &voidAM_CONST));
  4633.   return;
  4634.  }
  4635.  local1 = OUT_create_OUT(((OUT) NULL));
  4636.  OUT_plus_STR(local1, ((STR) &name_3998));
  4637.  if (a_3997==NULL) {
  4638.  } else
  4639.  switch (a_3997->header.tag) {
  4640.   case AM_VOID_CONST_tag:
  4641.    AM_OUT_AM_VOID_C(self, ((AM_VOID_CONST) a_3997)); break;
  4642.   case AM_ARR_CONST_tag:
  4643.    AM_OUT_AM_ARR_CO(self, ((AM_ARR_CONST) a_3997)); break;
  4644.   case AM_BOOL_CONST_tag:
  4645.    AM_OUT_AM_BOOL_C(self, ((AM_BOOL_CONST) a_3997)); break;
  4646.   case AM_CHAR_CONST_tag:
  4647.    AM_OUT_AM_CHAR_C(self, ((AM_CHAR_CONST) a_3997)); break;
  4648.   case AM_STR_CONST_tag:
  4649.    AM_OUT_AM_STR_CO(self, ((AM_STR_CONST) a_3997)); break;
  4650.   case AM_INT_CONST_tag:
  4651.    AM_OUT_AM_INT_CO(self, ((AM_INT_CONST) a_3997)); break;
  4652.   case AM_INTI_CONST_tag:
  4653.    AM_OUT_AM_INTI_C(self, ((AM_INTI_CONST) a_3997)); break;
  4654.   case AM_FLT_CONST_tag:
  4655.    AM_OUT_AM_FLT_CO(self, ((AM_FLT_CONST) a_3997)); break;
  4656.   case AM_FLTD_CONST_tag:
  4657.    AM_OUT_AM_FLTD_C(self, ((AM_FLTD_CONST) a_3997)); break;
  4658.   case AM_FLTX_CONST_tag:
  4659.    AM_OUT_AM_FLTX_C(self, ((AM_FLTX_CONST) a_3997)); break;
  4660.   case AM_FLTDX_CONST_tag:
  4661.    AM_OUT_AM_FLTDX_(self, ((AM_FLTDX_CONST) a_3997)); break;
  4662.   case AM_FLTI_CONST_tag:
  4663.    AM_OUT_AM_FLTI_C(self, ((AM_FLTI_CONST) a_3997)); break;
  4664.   default: ;
  4665.    fprintf(stderr,"No applicable type in typecase ./am_out.sa:141:14\n");
  4666.    exit(16);
  4667.  }
  4668.  local2 = OUT_create_OUT(((OUT) NULL));
  4669.  OUT_plus_STR(local2, ((STR) &name_3999));
  4670. }
  4671.  
  4672.  
  4673. INT FLISTAM_STMT_asi(FLISTAM_STMT self) {
  4674.  INT noname4000 = ((INT) 0);
  4675.   return self->asize;
  4676.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  4677.  exit(16);
  4678. }
  4679.  
  4680.  
  4681. AM_STMT FLISTAM_STMT_are(FLISTAM_STMT self, INT ind_4001) {
  4682.  AM_STMT noname4002;
  4683.  BOOL local0;
  4684.  INT local1;
  4685.  INT local2;
  4686.  if ((!((self==((FLISTAM_STMT) NULL))))) {
  4687.   local1 = 0;
  4688.   local2 = (self->asize);
  4689.   local0 = INT_is_bet_INT_I(ind_4001, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  4690.  } else {
  4691.   local0 = FALSE;
  4692.  }
  4693.  if (!(local0)) {
  4694.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  4695.   exit(16);
  4696.  }
  4697.  if (ind_4001<0||ind_4001>=self->asize) {
  4698.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  4699.   exit(16);
  4700.  }
  4701.  return self->arr_part[ind_4001];
  4702. }
  4703.  
  4704.  
  4705. AM_STMT FLISTAM_STMT_age(FLISTAM_STMT self, INT ind_4003) {
  4706.  AM_STMT noname4004;
  4707.  BOOL local0;
  4708.  INT local1;
  4709.  if ((!((self==((FLISTAM_STMT) NULL))))) {
  4710.   local1 = 0;
  4711.   local0 = INT_is_bet_INT_I(ind_4003, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  4712.  } else {
  4713.   local0 = FALSE;
  4714.  }
  4715.  if (!(local0)) {
  4716.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:68:7\n");
  4717.   exit(16);
  4718.  }
  4719.  return FLISTAM_STMT_are(self, ind_4003);
  4720.  if (!FLISTAM_STMT_inv(self)) {
  4721.   fprintf(stderr,"Failed invariant FLIST{$AM_STMT}::invariant:BOOL ../Library/flist.sa:68:7\n");
  4722.   exit(16);
  4723.  }
  4724. }
  4725.  
  4726.  
  4727. void AM_OUT_AM_CASE_S(AM_OUT self, AM_CASE_STMT a_4005) {
  4728.  INT i = ((INT) 0);
  4729.  INT j = ((INT) 0);
  4730.  OUT local0;
  4731.  OUT local1;
  4732.  OUT local2;
  4733.  OUT local3;
  4734.  OUT local4;
  4735.  FLISTAM_CONST local5;
  4736.  OUT local6;
  4737.  OUT local7;
  4738.  OUT local8;
  4739.  if ((a_4005==((AM_CASE_STMT) NULL))) {
  4740.   local0 = OUT_create_OUT(((OUT) NULL));
  4741.   OUT_plus_STR(local0, ((STR) &voidAM_CASE_STMT));
  4742.   return;
  4743.  }
  4744.  local1 = OUT_create_OUT(((OUT) NULL));
  4745.  OUT_plus_STR(local1, ((STR) &AM_CASE_STMT_4006));
  4746.  local2 = OUT_create_OUT(((OUT) NULL));
  4747.  OUT_plus_STR(local2, ((STR) &test_4007));
  4748.  AM_OUT_AM_EXPR_o(self, a_4005->test_40);
  4749.  local3 = OUT_create_OUT(((OUT) NULL));
  4750.  OUT_plus_STR(local3, ((STR) &branches));
  4751.  i = 0;
  4752.  while (1) {
  4753.   if ((i<FLISTFLISTAM_CON(a_4005->tgts))) {
  4754.   }
  4755.   else {
  4756.    goto after_loop;
  4757.   }
  4758.   local4 = OUT_create_OUT(((OUT) NULL));
  4759.   OUT_plus_STR(local4, ((STR) &name_4009));
  4760.   j = 0;
  4761.   while (1) {
  4762.    if ((j<FLISTAM_CONST_si(FLISTFLISTAM_CON_3988(a_4005->tgts, i)))) {
  4763.    }
  4764.    else {
  4765.     goto after_loop_4010;
  4766.    }
  4767.    local5 = FLISTFLISTAM_CON_3988(a_4005->tgts, i);
  4768.    AM_OUT_AM_CONST_(self, FLISTAM_CONST_ag(local5, j));
  4769.    local6 = OUT_create_OUT(((OUT) NULL));
  4770.    OUT_plus_STR(local6, ((STR) &name_4012));
  4771.    j = (c_INT_plus_INT_INT_chk(j,1));
  4772.   }
  4773.   after_loop_4010: ;
  4774.   AM_OUT_AM_STMT_o(self, FLISTAM_STMT_age(a_4005->stmts, i));
  4775.   local7 = OUT_create_OUT(((OUT) NULL));
  4776.   OUT_plus_STR(local7, ((STR) &name_4013));
  4777.   i = (c_INT_plus_INT_INT_chk(i,1));
  4778.  }
  4779.  after_loop: ;
  4780.  local8 = OUT_create_OUT(((OUT) NULL));
  4781.  OUT_plus_STR(local8, ((STR) &else_stmts_4014));
  4782.  AM_OUT_AM_STMT_o(self, a_4005->else_stmts);
  4783. }
  4784.  
  4785.  
  4786. INT FLISTTP_size_INT(FLISTTP self) {
  4787.  INT noname4015 = ((INT) 0);
  4788.  if ((self==((FLISTTP) NULL))) {
  4789.   return 0;
  4790.  }
  4791.  return self->loc_17;
  4792.  if (!FLISTTP_invarian(self)) {
  4793.   fprintf(stderr,"Failed invariant FLIST{$TP}::invariant:BOOL ../Library/flist.sa:50:7\n");
  4794.   exit(16);
  4795.  }
  4796. }
  4797.  
  4798.  
  4799. INT FLISTTP_asize_INT(FLISTTP self) {
  4800.  INT noname4016 = ((INT) 0);
  4801.   return self->asize;
  4802.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  4803.  exit(16);
  4804. }
  4805.  
  4806.  
  4807. TP FLISTTP_aref_age(FLISTTP self, INT ind_4017) {
  4808.  TP noname4018;
  4809.  BOOL local0;
  4810.  INT local1;
  4811.  INT local2;
  4812.  if ((!((self==((FLISTTP) NULL))))) {
  4813.   local1 = 0;
  4814.   local2 = (self->asize);
  4815.   local0 = INT_is_bet_INT_I(ind_4017, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  4816.  } else {
  4817.   local0 = FALSE;
  4818.  }
  4819.  if (!(local0)) {
  4820.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  4821.   exit(16);
  4822.  }
  4823.  if (ind_4017<0||ind_4017>=self->asize) {
  4824.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  4825.   exit(16);
  4826.  }
  4827.  return self->arr_part[ind_4017];
  4828. }
  4829.  
  4830.  
  4831. TP FLISTTP_aget_INT_TP(FLISTTP self, INT ind_4019) {
  4832.  TP noname4020;
  4833.  BOOL local0;
  4834.  INT local1;
  4835.  if ((!((self==((FLISTTP) NULL))))) {
  4836.   local1 = 0;
  4837.   local0 = INT_is_bet_INT_I(ind_4019, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  4838.  } else {
  4839.   local0 = FALSE;
  4840.  }
  4841.  if (!(local0)) {
  4842.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:68:7\n");
  4843.   exit(16);
  4844.  }
  4845.  return FLISTTP_aref_age(self, ind_4019);
  4846.  if (!FLISTTP_invarian(self)) {
  4847.   fprintf(stderr,"Failed invariant FLIST{$TP}::invariant:BOOL ../Library/flist.sa:68:7\n");
  4848.   exit(16);
  4849.  }
  4850. }
  4851.  
  4852.  
  4853. void AM_OUT_AM_TYPECA(AM_OUT self, AM_TYPECASE_STMT a_4021) {
  4854.  INT i = ((INT) 0);
  4855.  OUT local0;
  4856.  OUT local1;
  4857.  OUT local2;
  4858.  OUT local3;
  4859.  OUT local4;
  4860.  OUT local5;
  4861.  TP local6;
  4862.  OUT local7;
  4863.  OUT local8;
  4864.  OUT local9;
  4865.  if ((a_4021==((AM_TYPECASE_STMT) NULL))) {
  4866.   local0 = OUT_create_OUT(((OUT) NULL));
  4867.   OUT_plus_STR(local0, ((STR) &voidAM_TYPECASE_STMT));
  4868.   return;
  4869.  }
  4870.  local1 = OUT_create_OUT(((OUT) NULL));
  4871.  OUT_plus_STR(local1, ((STR) &AM_TYPECASE_STMT_4022));
  4872.  local2 = OUT_create_OUT(((OUT) NULL));
  4873.  OUT_plus_STR(local2, ((STR) &test_4023));
  4874.  AM_OUT_AM_LOCAL_(self, a_4021->test_40);
  4875.  local3 = OUT_create_OUT(((OUT) NULL));
  4876.  OUT_plus_STR(local3, ((STR) &branches_4024));
  4877.  i = 0;
  4878.  while (1) {
  4879.   if ((i<FLISTTP_size_INT(a_4021->tgts))) {
  4880.   }
  4881.   else {
  4882.    goto after_loop;
  4883.   }
  4884.   local4 = OUT_create_OUT(((OUT) NULL));
  4885.   OUT_plus_STR(local4, ((STR) &name_4026));
  4886.   local5 = OUT_create_OUT(((OUT) NULL));
  4887.   local6 = FLISTTP_aget_INT_TP(a_4021->tgts, i);
  4888.   local7 = OUT_plus_STR_OUT(local5, (*TP_str_STR[local6->header.tag+TP_str_STR_offset])(local6));
  4889.   OUT_plus_STR(local7, ((STR) &name_4027));
  4890.   AM_OUT_AM_STMT_o(self, FLISTAM_STMT_age(a_4021->stmts, i));
  4891.   local8 = OUT_create_OUT(((OUT) NULL));
  4892.   OUT_plus_STR(local8, ((STR) &name_4028));
  4893.   i = (c_INT_plus_INT_INT_chk(i,1));
  4894.  }
  4895.  after_loop: ;
  4896.  local9 = OUT_create_OUT(((OUT) NULL));
  4897.  OUT_plus_STR(local9, ((STR) &else_stmts_4029));
  4898.  AM_OUT_AM_STMT_o(self, a_4021->else_stmts);
  4899. }
  4900.  
  4901.  
  4902. void AM_OUT_AM_PRE_ST(AM_OUT self, AM_PRE_STMT a_4030) {
  4903.  OUT local0;
  4904.  OUT local1;
  4905.  OUT local2;
  4906.  if ((a_4030==((AM_PRE_STMT) NULL))) {
  4907.   local0 = OUT_create_OUT(((OUT) NULL));
  4908.   OUT_plus_STR(local0, ((STR) &voidAM_PRE_STMT));
  4909.   return;
  4910.  }
  4911.  local1 = OUT_create_OUT(((OUT) NULL));
  4912.  OUT_plus_STR(local1, ((STR) &AM_PRE_STMT_4031));
  4913.  local2 = OUT_create_OUT(((OUT) NULL));
  4914.  OUT_plus_STR(local2, ((STR) &test_4032));
  4915.  AM_OUT_AM_EXPR_o(self, a_4030->test_40);
  4916. }
  4917.  
  4918.  
  4919. void AM_OUT_AM_POST_S(AM_OUT self, AM_POST_STMT a_4033) {
  4920.  OUT local0;
  4921.  OUT local1;
  4922.  OUT local2;
  4923.  if ((a_4033==((AM_POST_STMT) NULL))) {
  4924.   local0 = OUT_create_OUT(((OUT) NULL));
  4925.   OUT_plus_STR(local0, ((STR) &voidAM_POST_STMT));
  4926.   return;
  4927.  }
  4928.  local1 = OUT_create_OUT(((OUT) NULL));
  4929.  OUT_plus_STR(local1, ((STR) &AM_POST_STMT_4034));
  4930.  local2 = OUT_create_OUT(((OUT) NULL));
  4931.  OUT_plus_STR(local2, ((STR) &test_4035));
  4932.  AM_OUT_AM_EXPR_o(self, a_4033->test_40);
  4933. }
  4934.  
  4935.  
  4936. void AM_OUT_AM_INITIA(AM_OUT self, AM_INITIAL_STMT a_4036) {
  4937.  OUT local0;
  4938.  OUT local1;
  4939.  OUT local2;
  4940.  if ((a_4036==((AM_INITIAL_STMT) NULL))) {
  4941.   local0 = OUT_create_OUT(((OUT) NULL));
  4942.   OUT_plus_STR(local0, ((STR) &voidAM_INITIAL_STMT));
  4943.   return;
  4944.  }
  4945.  local1 = OUT_create_OUT(((OUT) NULL));
  4946.  OUT_plus_STR(local1, ((STR) &AM_INITIAL_STMT_4037));
  4947.  local2 = OUT_create_OUT(((OUT) NULL));
  4948.  OUT_plus_STR(local2, ((STR) &stmts_4038));
  4949.  AM_OUT_AM_STMT_o(self, a_4036->stmts);
  4950. }
  4951.  
  4952.  
  4953. void AM_OUT_AM_ASSERT(AM_OUT self, AM_ASSERT_STMT a_4039) {
  4954.  OUT local0;
  4955.  OUT local1;
  4956.  OUT local2;
  4957.  if ((a_4039==((AM_ASSERT_STMT) NULL))) {
  4958.   local0 = OUT_create_OUT(((OUT) NULL));
  4959.   OUT_plus_STR(local0, ((STR) &voidAM_ASSERT_STMT));
  4960.   return;
  4961.  }
  4962.  local1 = OUT_create_OUT(((OUT) NULL));
  4963.  OUT_plus_STR(local1, ((STR) &AM_ASSERT_STMT_4040));
  4964.  local2 = OUT_create_OUT(((OUT) NULL));
  4965.  OUT_plus_STR(local2, ((STR) &test_4041));
  4966.  AM_OUT_AM_EXPR_o(self, a_4039->test_40);
  4967. }
  4968.  
  4969.  
  4970. void AM_OUT_AM_INVARI(AM_OUT self, AM_INVARIANT_STMT a_4042) {
  4971.  OUT local0;
  4972.  OUT local1;
  4973.  if ((a_4042==((AM_INVARIANT_STMT) NULL))) {
  4974.   local0 = OUT_create_OUT(((OUT) NULL));
  4975.   OUT_plus_STR(local0, ((STR) &voidAM_INVARIANT));
  4976.   return;
  4977.  }
  4978.  local1 = OUT_create_OUT(((OUT) NULL));
  4979.  OUT_plus_STR(local1, ((STR) &AM_INVARIANT_STM_4043));
  4980. }
  4981.  
  4982.  
  4983. void AM_OUT_AM_PROTEC(AM_OUT self, AM_PROTECT_STMT a_4044) {
  4984.  INT i = ((INT) 0);
  4985.  OUT local0;
  4986.  OUT local1;
  4987.  OUT local2;
  4988.  OUT local3;
  4989.  OUT local4;
  4990.  OUT local5;
  4991.  TP local6;
  4992.  OUT local7;
  4993.  OUT local8;
  4994.  OUT local9;
  4995.  if ((a_4044==((AM_PROTECT_STMT) NULL))) {
  4996.   local0 = OUT_create_OUT(((OUT) NULL));
  4997.   OUT_plus_STR(local0, ((STR) &voidAM_PROTECT_STMT));
  4998.   return;
  4999.  }
  5000.  local1 = OUT_create_OUT(((OUT) NULL));
  5001.  OUT_plus_STR(local1, ((STR) &AM_PROTECT_STMT_4045));
  5002.  local2 = OUT_create_OUT(((OUT) NULL));
  5003.  OUT_plus_STR(local2, ((STR) &body_4046));
  5004.  AM_OUT_AM_STMT_o(self, a_4044->body);
  5005.  local3 = OUT_create_OUT(((OUT) NULL));
  5006.  OUT_plus_STR(local3, ((STR) &branches_4047));
  5007.  i = 0;
  5008.  while (1) {
  5009.   if ((i<FLISTTP_size_INT(a_4044->tgts))) {
  5010.   }
  5011.   else {
  5012.    goto after_loop;
  5013.   }
  5014.   local4 = OUT_create_OUT(((OUT) NULL));
  5015.   OUT_plus_STR(local4, ((STR) &name_4049));
  5016.   local5 = OUT_create_OUT(((OUT) NULL));
  5017.   local6 = FLISTTP_aget_INT_TP(a_4044->tgts, i);
  5018.   local7 = OUT_plus_STR_OUT(local5, (*TP_str_STR[local6->header.tag+TP_str_STR_offset])(local6));
  5019.   OUT_plus_STR(local7, ((STR) &name_4050));
  5020.   AM_OUT_AM_STMT_o(self, FLISTAM_STMT_age(a_4044->stmts, i));
  5021.   local8 = OUT_create_OUT(((OUT) NULL));
  5022.   OUT_plus_STR(local8, ((STR) &name_4051));
  5023.   i = (c_INT_plus_INT_INT_chk(i,1));
  5024.  }
  5025.  after_loop: ;
  5026.  local9 = OUT_create_OUT(((OUT) NULL));
  5027.  OUT_plus_STR(local9, ((STR) &else_stmts_4052));
  5028.  AM_OUT_AM_STMT_o(self, a_4044->else_stmts);
  5029. }
  5030.  
  5031.  
  5032. void AM_OUT_AM_RAISE_(AM_OUT self, AM_RAISE_STMT a_4053) {
  5033.  OUT local0;
  5034.  OUT local1;
  5035.  OUT local2;
  5036.  if ((a_4053==((AM_RAISE_STMT) NULL))) {
  5037.   local0 = OUT_create_OUT(((OUT) NULL));
  5038.   OUT_plus_STR(local0, ((STR) &voidAM_RAISE_STMT));
  5039.   return;
  5040.  }
  5041.  local1 = OUT_create_OUT(((OUT) NULL));
  5042.  OUT_plus_STR(local1, ((STR) &AM_RAISE_STMT_4054));
  5043.  local2 = OUT_create_OUT(((OUT) NULL));
  5044.  OUT_plus_STR(local2, ((STR) &val_4055));
  5045.  AM_OUT_AM_EXPR_o(self, a_4053->val_16);
  5046. }
  5047.  
  5048.  
  5049. void AM_OUT_AM_EXPR_S(AM_OUT self, AM_EXPR_STMT a_4056) {
  5050.  OUT local0;
  5051.  OUT local1;
  5052.  OUT local2;
  5053.  if ((a_4056==((AM_EXPR_STMT) NULL))) {
  5054.   local0 = OUT_create_OUT(((OUT) NULL));
  5055.   OUT_plus_STR(local0, ((STR) &voidAM_EXPR_STMT));
  5056.   return;
  5057.  }
  5058.  local1 = OUT_create_OUT(((OUT) NULL));
  5059.  OUT_plus_STR(local1, ((STR) &AM_EXPR_STMT_4057));
  5060.  local2 = OUT_create_OUT(((OUT) NULL));
  5061.  OUT_plus_STR(local2, ((STR) &expr_4058));
  5062.  AM_OUT_AM_EXPR_o(self, a_4056->expr);
  5063. }
  5064.  
  5065.  
  5066. void AM_OUT_AM_STMT_o(AM_OUT self, AM_STMT a_4059) {
  5067.  OUT local0;
  5068.  OUT local1;
  5069.  OUT local2;
  5070.  AM_STMT local3;
  5071.  AM_STMT local4;
  5072.  if ((a_4059==((AM_STMT) NULL))) {
  5073.   local0 = OUT_create_OUT(((OUT) NULL));
  5074.   OUT_plus_STR(local0, ((STR) &voidAM_STMT));
  5075.   return;
  5076.  }
  5077.  local1 = OUT_create_OUT(((OUT) NULL));
  5078.  OUT_plus_STR(local1, ((STR) &name_4060));
  5079.  if (a_4059==NULL) {
  5080.  } else
  5081.  switch (a_4059->header.tag) {
  5082.   case AM_ASSIGN_STMT_tag:
  5083.    AM_OUT_AM_ASSIGN(self, ((AM_ASSIGN_STMT) a_4059)); break;
  5084.   case AM_IF_STMT_tag:
  5085.    AM_OUT_AM_IF_STM(self, ((AM_IF_STMT) a_4059)); break;
  5086.   case AM_LOOP_STMT_tag:
  5087.    AM_OUT_AM_LOOP_S(self, ((AM_LOOP_STMT) a_4059)); break;
  5088.   case AM_BREAK_STMT_tag:
  5089.    AM_OUT_AM_BREAK_(self, ((AM_BREAK_STMT) a_4059)); break;
  5090.   case AM_RETURN_STMT_tag:
  5091.    AM_OUT_AM_RETURN(self, ((AM_RETURN_STMT) a_4059)); break;
  5092.   case AM_YIELD_STMT_tag:
  5093.    AM_OUT_AM_YIELD_(self, ((AM_YIELD_STMT) a_4059)); break;
  5094.   case AM_CASE_STMT_tag:
  5095.    AM_OUT_AM_CASE_S(self, ((AM_CASE_STMT) a_4059)); break;
  5096.   case AM_TYPECASE_STMT_tag:
  5097.    AM_OUT_AM_TYPECA(self, ((AM_TYPECASE_STMT) a_4059)); break;
  5098.   case AM_PRE_STMT_tag:
  5099.    AM_OUT_AM_PRE_ST(self, ((AM_PRE_STMT) a_4059)); break;
  5100.   case AM_POST_STMT_tag:
  5101.    AM_OUT_AM_POST_S(self, ((AM_POST_STMT) a_4059)); break;
  5102.   case AM_INITIAL_STMT_tag:
  5103.    AM_OUT_AM_INITIA(self, ((AM_INITIAL_STMT) a_4059)); break;
  5104.   case AM_ASSERT_STMT_tag:
  5105.    AM_OUT_AM_ASSERT(self, ((AM_ASSERT_STMT) a_4059)); break;
  5106.   case AM_INVARIANT_STMT_tag:
  5107.    AM_OUT_AM_INVARI(self, ((AM_INVARIANT_STMT) a_4059)); break;
  5108.   case AM_PROTECT_STMT_tag:
  5109.    AM_OUT_AM_PROTEC(self, ((AM_PROTECT_STMT) a_4059)); break;
  5110.   case AM_RAISE_STMT_tag:
  5111.    AM_OUT_AM_RAISE_(self, ((AM_RAISE_STMT) a_4059)); break;
  5112.   case AM_EXPR_STMT_tag:
  5113.    AM_OUT_AM_EXPR_S(self, ((AM_EXPR_STMT) a_4059)); break;
  5114.   default: ;
  5115.    fprintf(stderr,"No applicable type in typecase ./am_out.sa:69:14\n");
  5116.    exit(16);
  5117.  }
  5118.  local2 = OUT_create_OUT(((OUT) NULL));
  5119.  OUT_plus_STR(local2, ((STR) &name_4061));
  5120.  local3 = a_4059;
  5121.  if ((!(((*AM_STMT_next_AM_STMT[local3->header.tag+AM_STMT_next_AM_STMT_offset])(local3)==((AM_STMT) NULL))))) {
  5122.   local4 = a_4059;
  5123.   AM_OUT_AM_STMT_o(self, (*AM_STMT_next_AM_STMT[local4->header.tag+AM_STMT_next_AM_STMT_offset])(local4));
  5124.  }
  5125. }
  5126.  
  5127.  
  5128. void AM_OUT_AM_ROUT_D(AM_OUT self, AM_ROUT_DEF a_4062) {
  5129.  INT i = ((INT) 0);
  5130.  INT i_4063 = ((INT) 0);
  5131.  OUT local0;
  5132.  OUT local1;
  5133.  OUT local2;
  5134.  OUT local3;
  5135.  OUT local4;
  5136.  OUT local5;
  5137.  OUT local6;
  5138.  INT local7;
  5139.  OUT local8;
  5140.  OUT local9;
  5141.  OUT local10;
  5142.  OUT local11;
  5143.  OUT local12;
  5144.  OUT local13;
  5145.  OUT local14;
  5146.  OUT local15;
  5147.  OUT local16;
  5148.  OUT local17;
  5149.  if ((a_4062==((AM_ROUT_DEF) NULL))) {
  5150.   local0 = OUT_create_OUT(((OUT) NULL));
  5151.   OUT_plus_STR(local0, ((STR) &voidAM_ROUT_DEF));
  5152.   return;
  5153.  }
  5154.  local1 = OUT_create_OUT(((OUT) NULL));
  5155.  OUT_plus_STR(local1, ((STR) &AM_ROUT_DEF_4064));
  5156.  if ((a_4062->sig_6==((SIG) NULL))) {
  5157.   local2 = OUT_create_OUT(((OUT) NULL));
  5158.   OUT_plus_STR(local2, ((STR) &voidsig));
  5159.  }
  5160.  else {
  5161.   local3 = OUT_create_OUT(((OUT) NULL));
  5162.   local4 = OUT_plus_STR_OUT(local3, ((STR) &sig_4065));
  5163.   local5 = OUT_plus_STR_OUT(local4, SIG_str_STR(a_4062->sig_6));
  5164.   OUT_plus_STR(local5, ((STR) &name_4066));
  5165.  }
  5166.  if (a_4062->is_abstract) {
  5167.   local6 = OUT_create_OUT(((OUT) NULL));
  5168.   OUT_plus_STR(local6, ((STR) &isabstract));
  5169.   return;
  5170.  }
  5171.  local7 = AM_ROUT_DEF_size_INT(a_4062);
  5172.  if ((local7>1)) {
  5173.   local8 = OUT_create_OUT(((OUT) NULL));
  5174.   OUT_plus_STR(local8, ((STR) &args_4067));
  5175.   i = 1;
  5176.   while (1) {
  5177.    if ((i<(a_4062->asize))) {
  5178.    }
  5179.    else {
  5180.     goto after_loop;
  5181.    }
  5182.    AM_OUT_AM_LOCAL_(self, AM_ROUT_DEF_aget(a_4062, i));
  5183.    local9 = OUT_create_OUT(((OUT) NULL));
  5184.    OUT_plus_STR(local9, ((STR) &name_4069));
  5185.    i = (c_INT_plus_INT_INT_chk(i,1));
  5186.   }
  5187.   after_loop: ;
  5188.   local10 = OUT_create_OUT(((OUT) NULL));
  5189.   OUT_plus_STR(local10, ((STR) &name_4070));
  5190.  }
  5191.  if ((a_4062->locals_57==((FLISTAM_LOCAL_EXPR) NULL))) {
  5192.   local11 = OUT_create_OUT(((OUT) NULL));
  5193.   OUT_plus_STR(local11, ((STR) &voidlocals));
  5194.  }
  5195.  else {
  5196.   local12 = OUT_create_OUT(((OUT) NULL));
  5197.   OUT_plus_STR(local12, ((STR) &locals_4071));
  5198.   i_4063 = 0;
  5199.   while (1) {
  5200.    if ((i_4063<FLISTAM_LOCAL_EX(a_4062->locals_57))) {
  5201.    }
  5202.    else {
  5203.     goto after_loop_4072;
  5204.    }
  5205.    AM_OUT_AM_LOCAL_(self, FLISTAM_LOCAL_EX_3775(a_4062->locals_57, i_4063));
  5206.    local13 = OUT_create_OUT(((OUT) NULL));
  5207.    OUT_plus_STR(local13, ((STR) &name_4074));
  5208.    i_4063 = (c_INT_plus_INT_INT_chk(i_4063,1));
  5209.   }
  5210.   after_loop_4072: ;
  5211.   local14 = OUT_create_OUT(((OUT) NULL));
  5212.   OUT_plus_STR(local14, ((STR) &name_4075));
  5213.  }
  5214.  if ((a_4062->code_56==((AM_STMT) NULL))) {
  5215.   local15 = OUT_create_OUT(((OUT) NULL));
  5216.   OUT_plus_STR(local15, ((STR) &voidcode));
  5217.  }
  5218.  else {
  5219.   local16 = OUT_create_OUT(((OUT) NULL));
  5220.   OUT_plus_STR(local16, ((STR) &code_4076));
  5221.   AM_OUT_AM_STMT_o(self, a_4062->code_56);
  5222.  }
  5223.  local17 = OUT_create_OUT(((OUT) NULL));
  5224.  OUT_plus_STR(local17, ((STR) &name_4077));
  5225. }
  5226.  
  5227.  
  5228. void OUT_plus_CHAR(OUT self, CHAR c_4078) {
  5229.  c_out_char(c_4078);
  5230. }
  5231.  
  5232.  
  5233. INT FLISTAM_ROUT_DEF_4079(FLISTAM_ROUT_DEF self) {
  5234.  INT noname4080 = ((INT) 0);
  5235.   return self->asize;
  5236.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  5237.  exit(16);
  5238. }
  5239.  
  5240.  
  5241. INT FLISTAM_ROUT_DEF_4081(FLISTAM_ROUT_DEF self) {
  5242.  INT noname4082 = ((INT) 0);
  5243.  if ((self==((FLISTAM_ROUT_DEF) NULL))) {
  5244.   return 0;
  5245.  }
  5246.  return self->loc_17;
  5247.  if (!FLISTAM_ROUT_DEF_1041(self)) {
  5248.   fprintf(stderr,"Failed invariant FLIST{AM_ROUT_DEF}::invariant:BOOL ../Library/flist.sa:50:7\n");
  5249.   exit(16);
  5250.  }
  5251. }
  5252.  
  5253.  
  5254. BOOL FLISTAM_ROUT_DEF_4083(FLISTAM_ROUT_DEF self) {
  5255.  BOOL noname4084 = ((BOOL) 0);
  5256.  INT local0;
  5257.  local0 = FLISTAM_ROUT_DEF_4081(self);
  5258.  return (local0==0);
  5259.  if (!FLISTAM_ROUT_DEF_1041(self)) {
  5260.   fprintf(stderr,"Failed invariant FLIST{AM_ROUT_DEF}::invariant:BOOL ../Library/flist.sa:113:11\n");
  5261.   exit(16);
  5262.  }
  5263. }
  5264.  
  5265.  
  5266. void FLISTAM_ROUT_DEF_4085(FLISTAM_ROUT_DEF self) {
  5267.  AM_ROUT_DEF nil = ((AM_ROUT_DEF) NULL);
  5268.  FLISTAM_ROUT_DEF noname4086;
  5269.  if (!((!((self==((FLISTAM_ROUT_DEF) NULL)))))) {
  5270.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:43:9\n");
  5271.   exit(16);
  5272.  }
  5273.  {
  5274.   struct FLISTAM_ROUT_DEF_4088_frame_struct temp4087_0;
  5275.   FLISTAM_ROUT_DEF_4088_frame 
  5276.   noname4089 = &temp4087_0;
  5277.   noname4089->state = 0;
  5278.   while (1) {
  5279.    if (noname4089->state == 0) {
  5280.     noname4086 = self;
  5281.     noname4089->arg0 = noname4086;
  5282.    }
  5283.    noname4089->arg1 = nil;
  5284.    FLISTAM_ROUT_DEF_4088(noname4089);
  5285.    if (noname4089->state == -1) goto after_loop;
  5286.    0 /* No return value from iter call */;
  5287.   }
  5288.  }
  5289.  after_loop: ;
  5290. }
  5291.  
  5292.  
  5293. void FLISTAM_ROUT_DEF_4090(FLISTAM_ROUT_DEF self) {
  5294.  if (FLISTAM_ROUT_DEF_4083(self)) {
  5295.   return;
  5296.  }
  5297.  else {
  5298.   FLISTAM_ROUT_DEF_4085(self);
  5299.   self->loc_17 = 0;
  5300.  }
  5301.  if (!FLISTAM_ROUT_DEF_1041(self)) {
  5302.   fprintf(stderr,"Failed invariant FLIST{AM_ROUT_DEF}::invariant:BOOL ../Library/flist.sa:117:8\n");
  5303.   exit(16);
  5304.  }
  5305. }
  5306.  
  5307.  
  5308. void FLISTAM_ROUT_DEF_4091(FLISTAM_ROUT_DEF self, INT ind_4092, AM_ROUT_DEF val_4093) {
  5309.  BOOL local0;
  5310.  INT local1;
  5311.  INT local2;
  5312.  if ((!((self==((FLISTAM_ROUT_DEF) NULL))))) {
  5313.   local1 = 0;
  5314.   local2 = (self->asize);
  5315.   local0 = INT_is_bet_INT_I(ind_4092, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  5316.  } else {
  5317.   local0 = FALSE;
  5318.  }
  5319.  if (!(local0)) {
  5320.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  5321.   exit(16);
  5322.  }
  5323.  if (ind_4092<0||ind_4092>=self->asize) {
  5324.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  5325.   exit(16);
  5326.  }
  5327.  self->arr_part[ind_4092] = val_4093;
  5328. }
  5329.  
  5330.  
  5331. void FLISTAM_ROUT_DEF_4094(FLISTAM_ROUT_DEF self, INT ind_4095, AM_ROUT_DEF val_4096) {
  5332.  BOOL local0;
  5333.  INT local1;
  5334.  if ((!((self==((FLISTAM_ROUT_DEF) NULL))))) {
  5335.   local1 = 0;
  5336.   local0 = INT_is_bet_INT_I(ind_4095, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  5337.  } else {
  5338.   local0 = FALSE;
  5339.  }
  5340.  if (!(local0)) {
  5341.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:73:7\n");
  5342.   exit(16);
  5343.  }
  5344.  FLISTAM_ROUT_DEF_4091(self, ind_4095, val_4096);
  5345.  if (!FLISTAM_ROUT_DEF_1041(self)) {
  5346.   fprintf(stderr,"Failed invariant FLIST{AM_ROUT_DEF}::invariant:BOOL ../Library/flist.sa:73:7\n");
  5347.   exit(16);
  5348.  }
  5349. }
  5350.  
  5351.  
  5352. FLISTAM_ROUT_DEF FLISTAM_ROUT_DEF_4097(FLISTAM_ROUT_DEF self, AM_ROUT_DEF e_4098) {
  5353.  FLISTAM_ROUT_DEF noname4099;
  5354.  FLISTAM_ROUT_DEF r_4100 = ((FLISTAM_ROUT_DEF) NULL);
  5355.  FLISTAM_ROUT_DEF noname4101;
  5356.  FLISTAM_ROUT_DEF noname4102;
  5357.  FLISTAM_ROUT_DEF local0;
  5358.  INT local1;
  5359.  FLISTAM_ROUT_DEF local2;
  5360.  INT local3;
  5361.  AM_ROUT_DEF local4;
  5362.  INT local5;
  5363.  if ((self==((FLISTAM_ROUT_DEF) NULL))) {
  5364.   local0 = ((FLISTAM_ROUT_DEF) sbi_arr_alloc(sizeof(struct FLISTAM_ROUT_DEF_struct), FLISTAM_ROUT_DEF_tag, sizeof(AM_ROUT_DEF) , 5));
  5365.   local0->asize = 5;
  5366.   r_4100 = local0;
  5367.  }
  5368.  else {
  5369.   local1 = self->loc_17;
  5370.   if ((local1<(self->asize))) {
  5371.    r_4100 = self;
  5372.   }
  5373.   else {
  5374.    local3 = 2;
  5375.    local2 = ((FLISTAM_ROUT_DEF) sbi_arr_alloc(sizeof(struct FLISTAM_ROUT_DEF_struct), FLISTAM_ROUT_DEF_tag, sizeof(AM_ROUT_DEF) , (c_INT_times_INT_INT_chk(local3,(self->asize)))));
  5376.    local2->asize = (c_INT_times_INT_INT_chk(local3,(self->asize)));
  5377.    r_4100 = local2;
  5378.    r_4100->loc_17 = self->loc_17;
  5379.    {
  5380.     struct FLISTAM_ROUT_DEF_4104_frame_struct temp4103_0;
  5381.     FLISTAM_ROUT_DEF_4104_frame 
  5382.     noname4105 = &temp4103_0;
  5383.     struct FLISTAM_ROUT_DEF_4088_frame_struct temp4103_1;
  5384.     FLISTAM_ROUT_DEF_4088_frame 
  5385.     noname4106 = &temp4103_1;
  5386.     noname4105->state = 0;
  5387.     noname4106->state = 0;
  5388.     while (1) {
  5389.      if (noname4106->state == 0) {
  5390.       noname4102 = r_4100;
  5391.       noname4106->arg0 = noname4102;
  5392.      }
  5393.      if (noname4105->state == 0) {
  5394.       noname4101 = self;
  5395.       noname4105->arg0 = noname4101;
  5396.      }
  5397.      local4 = FLISTAM_ROUT_DEF_4104(noname4105);
  5398.      if (noname4105->state == -1) goto after_loop;
  5399.      noname4106->arg1 = local4;
  5400.      FLISTAM_ROUT_DEF_4088(noname4106);
  5401.      if (noname4106->state == -1) goto after_loop;
  5402.      0 /* No return value from iter call */;
  5403.     }
  5404.    }
  5405.    after_loop: ;
  5406.    FLISTAM_ROUT_DEF_4090(self);
  5407.   }
  5408.  }
  5409.  r_4100->loc_17 = (c_INT_plus_INT_INT_chk(r_4100->loc_17,1));
  5410.  local5 = (c_INT_minus_INT_INT_chk(r_4100->loc_17,1));
  5411.  FLISTAM_ROUT_DEF_4094(r_4100, local5, e_4098);
  5412.  return r_4100;
  5413.  if (!FLISTAM_ROUT_DEF_1041(self)) {
  5414.   fprintf(stderr,"Failed invariant FLIST{AM_ROUT_DEF}::invariant:BOOL ../Library/flist.sa:79:7\n");
  5415.   exit(16);
  5416.  }
  5417. }
  5418.  
  5419.  
  5420. BOOL INLINE_TBL_query_4107(INLINE_TBL self, SIG s_4108, INLINE in_4109) {
  5421.  BOOL noname4110 = ((BOOL) 0);
  5422.  INLINE local0;
  5423.  SIG local1;
  5424.  if ((in_4109==((INLINE) NULL))) {
  5425.   return FALSE;
  5426.  }
  5427.  local0 = in_4109;
  5428.  local1 = (*INLINE_sig_SIG[local0->header.tag+INLINE_sig_SIG_offset])(local0);
  5429.  return SIG_is_eq_SIG_BOOL(local1, s_4108);
  5430.  if (!INLINE_TBL_invar(self)) {
  5431.   fprintf(stderr,"Failed invariant INLINE_TBL::invariant:BOOL ./inline.sa:310:13\n");
  5432.   exit(16);
  5433.  }
  5434. }
  5435.  
  5436.  
  5437. INLINE INLINE_TBL_get_q(INLINE_TBL self, SIG q) {
  5438.  INLINE noname4111;
  5439.  INT h = ((INT) 0);
  5440.  INLINE e_4112;
  5441.  INLINE e_4113;
  5442.  INT local0;
  5443.  INT local1;
  5444.  INT local2;
  5445.  INT local3;
  5446.  if ((self==((INLINE_TBL) NULL))) {
  5447.   return ((INLINE) NULL);
  5448.  }
  5449.  local0 = INLINE_TBL_query(self, q);
  5450.  local1 = (self->asize);
  5451.  h = (local0&(c_INT_minus_INT_INT_chk(local1,2)));
  5452.  while (1) {
  5453.   e_4112 = INLINE_TBL_aget_(self, h);
  5454.   if (INLINE_TBL_query_4107(self, q, e_4112)) {
  5455.    return e_4112;
  5456.   }
  5457.   else {
  5458.    if (INLINE_TBL_elt_e(self, e_4112, INLINE_TBL_elt_n(self))) {
  5459.     goto after_loop;
  5460.    }
  5461.   }
  5462.   h = (c_INT_plus_INT_INT_chk(h,1));
  5463.  }
  5464.  after_loop: ;
  5465.  local2 = (self->asize);
  5466.  if ((h==(c_INT_minus_INT_INT_chk(local2,1)))) {
  5467.   h = 0;
  5468.   while (1) {
  5469.    e_4113 = INLINE_TBL_aget_(self, h);
  5470.    if (INLINE_TBL_query_4107(self, q, e_4113)) {
  5471.     return e_4113;
  5472.    }
  5473.    else {
  5474.     if (INLINE_TBL_elt_e(self, e_4113, INLINE_TBL_elt_n(self))) {
  5475.      goto after_loop_4115;
  5476.     }
  5477.    }
  5478.    h = (c_INT_plus_INT_INT_chk(h,1));
  5479.   }
  5480.   after_loop_4115: ;
  5481.   local3 = (self->asize);
  5482.   if (!((h!=(c_INT_minus_INT_INT_chk(local3,1))))) {
  5483.    fprintf(stderr,"Violation of assertion ../Library/fqset.sa:142:15\n");
  5484.    exit(16);
  5485.   }
  5486.  }
  5487.  return INLINE_TBL_elt_n(self);
  5488.  if (!INLINE_TBL_invar(self)) {
  5489.   fprintf(stderr,"Failed invariant INLINE_TBL::invariant:BOOL ../Library/fqset.sa:128:12\n");
  5490.   exit(16);
  5491.  }
  5492. }
  5493.  
  5494.  
  5495. BOOL BE_inlined_SIG_BOOL(BE self, SIG s_4117) {
  5496.  BOOL noname4118 = ((BOOL) 0);
  5497.  INLINE inl;
  5498.  inl = INLINE_TBL_get_q(self->prog->prog_am_generate->inline_tbl, s_4117);
  5499.  return (!((inl==((INLINE) NULL))));
  5500. }
  5501.  
  5502.  
  5503. SIG FMAPSIGAM_ROUT_D_4119(FMAPSIGAM_ROUT_DEF self) {
  5504.  SIG noname4120;
  5505.  SIG k = ((SIG) NULL);
  5506.  return ((SIG) NULL);
  5507.  if (!FMAPSIGAM_ROUT_D_1046(self)) {
  5508.   fprintf(stderr,"Failed invariant FMAP{SIG,AM_ROUT_DEF}::invariant:BOOL ../Library/fmap.sa:54:10\n");
  5509.   exit(16);
  5510.  }
  5511. }
  5512.  
  5513.  
  5514. TUPSIGAM_ROUT_DEF TUPSIGAM_ROUT_DE(TUPSIGAM_ROUT_DEF self, SIG t1_4121) {
  5515.  TUPSIGAM_ROUT_DEF local0;
  5516.  local0 = self;
  5517.  local0.t1 = t1_4121;
  5518.  return local0;
  5519. }
  5520.  
  5521.  
  5522. TUPSIGAM_ROUT_DEF TUPSIGAM_ROUT_DE_4122(TUPSIGAM_ROUT_DEF self, AM_ROUT_DEF t2_4123) {
  5523.  TUPSIGAM_ROUT_DEF local0;
  5524.  local0 = self;
  5525.  local0.t2 = t2_4123;
  5526.  return local0;
  5527. }
  5528.  
  5529.  
  5530. TUPSIGAM_ROUT_DEF TUPSIGAM_ROUT_DE_4124(TUPSIGAM_ROUT_DEF self, SIG at1, AM_ROUT_DEF at2) {
  5531.  TUPSIGAM_ROUT_DEF noname4125 = TUPSIGAM_ROUT_DEF_zero;
  5532.  TUPSIGAM_ROUT_DEF local0;
  5533.  local0 = TUPSIGAM_ROUT_DE(self, at1);
  5534.  return TUPSIGAM_ROUT_DE_4122(local0, at2);
  5535. }
  5536.  
  5537.  
  5538. FMAPSIGAM_ROUT_DEF FMAPSIGAM_ROUT_D_4126(FMAPSIGAM_ROUT_DEF self, INT n_4127) {
  5539.  FMAPSIGAM_ROUT_DEF noname4128;
  5540.  FMAPSIGAM_ROUT_DEF r_4129;
  5541.  FMAPSIGAM_ROUT_DEF noname4130;
  5542.  FMAPSIGAM_ROUT_DEF local0;
  5543.  TUPSIGAM_ROUT_DEF local1;
  5544.  SIG local2;
  5545.  local0 = ((FMAPSIGAM_ROUT_DEF) sbi_arr_alloc(sizeof(struct FMAPSIGAM_ROUT_DEF_struct), FMAPSIGAM_ROUT_DEF_tag, sizeof(TUPSIGAM_ROUT_DEF) , n_4127));
  5546.  local0->asize = n_4127;
  5547.  r_4129 = local0;
  5548.  if ((!((FMAPSIGAM_ROUT_D_4119(self)==((SIG) NULL))))) {
  5549.   {
  5550.    struct FMAPSIGAM_ROUT_D_4132_frame_struct temp4131_0;
  5551.    FMAPSIGAM_ROUT_D_4132_frame 
  5552.    noname4133 = &temp4131_0;
  5553.    noname4133->state = 0;
  5554.    while (1) {
  5555.     if (noname4133->state == 0) {
  5556.      noname4130 = r_4129;
  5557.      noname4133->arg0 = noname4130;
  5558.     }
  5559.     local1 = TUPSIGAM_ROUT_DEF_zero;
  5560.     local2 = FMAPSIGAM_ROUT_D_4119(self);
  5561.     noname4133->arg1 = TUPSIGAM_ROUT_DE_4124(local1, local2, ((AM_ROUT_DEF) NULL));
  5562.     FMAPSIGAM_ROUT_D_4132(noname4133);
  5563.     if (noname4133->state == -1) goto after_loop;
  5564.     0 /* No return value from iter call */;
  5565.    }
  5566.   }
  5567.   after_loop: ;
  5568.  }
  5569.  return r_4129;
  5570. }
  5571.  
  5572.  
  5573. INT FMAPSIGAM_ROUT_D_4134(FMAPSIGAM_ROUT_DEF self) {
  5574.  INT noname4135 = ((INT) 0);
  5575.   return self->asize;
  5576.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  5577.  exit(16);
  5578. }
  5579.  
  5580.  
  5581. FMAPSIGAM_ROUT_DEF FMAPSIGAM_ROUT_D_4136(FMAPSIGAM_ROUT_DEF self, TUPSIGAM_ROUT_DEF p) {
  5582.  FMAPSIGAM_ROUT_DEF noname4137;
  5583.  return FMAPSIGAM_ROUT_D_4138(self, p.t1, p.t2);
  5584.  if (!FMAPSIGAM_ROUT_D_1046(self)) {
  5585.   fprintf(stderr,"Failed invariant FMAP{SIG,AM_ROUT_DEF}::invariant:BOOL ../Library/fmap.sa:202:14\n");
  5586.   exit(16);
  5587.  }
  5588. }
  5589.  
  5590.  
  5591. FMAPSIGAM_ROUT_DEF FMAPSIGAM_ROUT_D_4139(FMAPSIGAM_ROUT_DEF self) {
  5592.  FMAPSIGAM_ROUT_DEF noname4140;
  5593.  INT ns = ((INT) 0);
  5594.  FMAPSIGAM_ROUT_DEF r_4141;
  5595.  FMAPSIGAM_ROUT_DEF noname4142;
  5596.  INT local0;
  5597.  INT local1;
  5598.  INT local2;
  5599.  TUPSIGAM_ROUT_DEF local3;
  5600.  if (!((!((self==((FMAPSIGAM_ROUT_DEF) NULL)))))) {
  5601.   fprintf(stderr,"Violation of precondition ../Library/fmap.sa:172:22\n");
  5602.   exit(16);
  5603.  }
  5604.  local0 = (self->asize);
  5605.  local1 = (c_INT_minus_INT_INT_chk(local0,1));
  5606.  local2 = (c_INT_times_INT_INT_chk(local1,2));
  5607.  ns = (c_INT_plus_INT_INT_chk(local2,1));
  5608.  r_4141 = FMAPSIGAM_ROUT_D_4126(self, ns);
  5609.  {
  5610.   struct FMAPSIGAM_ROUT_D_4144_frame_struct temp4143_0;
  5611.   FMAPSIGAM_ROUT_D_4144_frame 
  5612.   noname4145 = &temp4143_0;
  5613.   noname4145->state = 0;
  5614.   while (1) {
  5615.    if (noname4145->state == 0) {
  5616.     noname4142 = self;
  5617.     noname4145->arg0 = noname4142;
  5618.    }
  5619.    local3 = FMAPSIGAM_ROUT_D_4144(noname4145);
  5620.    if (noname4145->state == -1) goto after_loop;
  5621.    r_4141 = FMAPSIGAM_ROUT_D_4136(r_4141, local3);
  5622.   }
  5623.  }
  5624.  after_loop: ;
  5625.  return r_4141;
  5626. }
  5627.  
  5628.  
  5629. INT FMAPSIGAM_ROUT_D_4146(FMAPSIGAM_ROUT_DEF self, SIG k) {
  5630.  INT noname4147 = ((INT) 0);
  5631.  return (c_SYS_id_OB_INT(((SYS) NULL),((OB) k)));
  5632.  if (!FMAPSIGAM_ROUT_D_1046(self)) {
  5633.   fprintf(stderr,"Failed invariant FMAP{SIG,AM_ROUT_DEF}::invariant:BOOL ../Library/fmap.sa:64:11\n");
  5634.   exit(16);
  5635.  }
  5636. }
  5637.  
  5638.  
  5639. TUPSIGAM_ROUT_DEF FMAPSIGAM_ROUT_D_4148(FMAPSIGAM_ROUT_DEF self, INT ind_4149) {
  5640.  TUPSIGAM_ROUT_DEF noname4150 = TUPSIGAM_ROUT_DEF_zero;
  5641.  BOOL local0;
  5642.  INT local1;
  5643.  INT local2;
  5644.  if ((!((self==((FMAPSIGAM_ROUT_DEF) NULL))))) {
  5645.   local1 = 0;
  5646.   local2 = (self->asize);
  5647.   local0 = INT_is_bet_INT_I(ind_4149, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  5648.  } else {
  5649.   local0 = FALSE;
  5650.  }
  5651.  if (!(local0)) {
  5652.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  5653.   exit(16);
  5654.  }
  5655.  if (ind_4149<0||ind_4149>=self->asize) {
  5656.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  5657.   exit(16);
  5658.  }
  5659.  return self->arr_part[ind_4149];
  5660. }
  5661.  
  5662.  
  5663. BOOL FMAPSIGAM_ROUT_D_4151(FMAPSIGAM_ROUT_DEF self, SIG k1, SIG k2) {
  5664.  BOOL noname4152 = ((BOOL) 0);
  5665.  return SIG_is_eq_SIG_BOOL(k1, k2);
  5666.  return c_SYS_ob_eq_OB_OB_BOOL(((OB) k1),((OB) k2));
  5667.  if (!FMAPSIGAM_ROUT_D_1046(self)) {
  5668.   fprintf(stderr,"Failed invariant FMAP{SIG,AM_ROUT_DEF}::invariant:BOOL ../Library/fmap.sa:44:9\n");
  5669.   exit(16);
  5670.  }
  5671. }
  5672.  
  5673.  
  5674. void FMAPSIGAM_ROUT_D_4153(FMAPSIGAM_ROUT_DEF self, INT ind_4154, TUPSIGAM_ROUT_DEF val_4155) {
  5675.  BOOL local0;
  5676.  INT local1;
  5677.  INT local2;
  5678.  if ((!((self==((FMAPSIGAM_ROUT_DEF) NULL))))) {
  5679.   local1 = 0;
  5680.   local2 = (self->asize);
  5681.   local0 = INT_is_bet_INT_I(ind_4154, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  5682.  } else {
  5683.   local0 = FALSE;
  5684.  }
  5685.  if (!(local0)) {
  5686.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  5687.   exit(16);
  5688.  }
  5689.  if (ind_4154<0||ind_4154>=self->asize) {
  5690.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  5691.   exit(16);
  5692.  }
  5693.  self->arr_part[ind_4154] = val_4155;
  5694. }
  5695.  
  5696.  
  5697. FMAPSIGAM_ROUT_DEF FMAPSIGAM_ROUT_D_4138(FMAPSIGAM_ROUT_DEF self, SIG k, AM_ROUT_DEF t_4156) {
  5698.  FMAPSIGAM_ROUT_DEF noname4157;
  5699.  FMAPSIGAM_ROUT_DEF r_4158;
  5700.  INT h = ((INT) 0);
  5701.  INT asm_4159 = ((INT) 0);
  5702.  SIG tk;
  5703.  SIG tk_4160;
  5704.  INT local0;
  5705.  INT local1;
  5706.  INT local2;
  5707.  INT local3;
  5708.  INT local4;
  5709.  r_4158 = self;
  5710.  if ((r_4158==((FMAPSIGAM_ROUT_DEF) NULL))) {
  5711.   r_4158 = FMAPSIGAM_ROUT_D_4126(self, 5);
  5712.  }
  5713.  else {
  5714.   local0 = (c_INT_plus_INT_INT_chk(self->hsize,1));
  5715.   local1 = (c_INT_times_INT_INT_chk(local0,2));
  5716.   if ((local1>(self->asize))) {
  5717.    r_4158 = FMAPSIGAM_ROUT_D_4139(self);
  5718.   }
  5719.  }
  5720.  local2 = FMAPSIGAM_ROUT_D_4146(r_4158, k);
  5721.  local3 = (r_4158->asize);
  5722.  h = (local2&(c_INT_minus_INT_INT_chk(local3,2)));
  5723.  local4 = (r_4158->asize);
  5724.  asm_4159 = (c_INT_minus_INT_INT_chk(local4,1));
  5725.  while (1) {
  5726.   tk = (TUPSIGAM_ROUT_DEF_blob=FMAPSIGAM_ROUT_D_4148(r_4158, h)).t1;
  5727.   if (FMAPSIGAM_ROUT_D_4151(self, tk, FMAPSIGAM_ROUT_D_4119(self))) {
  5728.    goto after_loop;
  5729.   }
  5730.   if (FMAPSIGAM_ROUT_D_4151(self, tk, k)) {
  5731.    FMAPSIGAM_ROUT_D_4153(r_4158, h, TUPSIGAM_ROUT_DE_4124(TUPSIGAM_ROUT_DEF_zero, k, t_4156));
  5732.    return r_4158;
  5733.   }
  5734.   h = (c_INT_plus_INT_INT_chk(h,1));
  5735.  }
  5736.  after_loop: ;
  5737.  if ((h==asm_4159)) {
  5738.   h = 0;
  5739.   while (1) {
  5740.    tk_4160 = (TUPSIGAM_ROUT_DEF_blob=FMAPSIGAM_ROUT_D_4148(r_4158, h)).t1;
  5741.    if (FMAPSIGAM_ROUT_D_4151(self, tk_4160, FMAPSIGAM_ROUT_D_4119(self))) {
  5742.     goto after_loop_4162;
  5743.    }
  5744.    if (FMAPSIGAM_ROUT_D_4151(self, tk_4160, k)) {
  5745.     FMAPSIGAM_ROUT_D_4153(r_4158, h, TUPSIGAM_ROUT_DE_4124(TUPSIGAM_ROUT_DEF_zero, k, t_4156));
  5746.     return r_4158;
  5747.    }
  5748.    h = (c_INT_plus_INT_INT_chk(h,1));
  5749.   }
  5750.   after_loop_4162: ;
  5751.   if (!((h!=asm_4159))) {
  5752.    fprintf(stderr,"Violation of assertion ../Library/fmap.sa:199:15\n");
  5753.    exit(16);
  5754.   }
  5755.  }
  5756.  FMAPSIGAM_ROUT_D_4153(r_4158, h, TUPSIGAM_ROUT_DE_4124(TUPSIGAM_ROUT_DEF_zero, k, t_4156));
  5757.  r_4158->hsize = (c_INT_plus_INT_INT_chk(r_4158->hsize,1));
  5758.  return r_4158;
  5759.  if (!FMAPSIGAM_ROUT_D_1046(self)) {
  5760.   fprintf(stderr,"Failed invariant FMAP{SIG,AM_ROUT_DEF}::invariant:BOOL ../Library/fmap.sa:180:9\n");
  5761.   exit(16);
  5762.  }
  5763. }
  5764.  
  5765.  
  5766. FSETOB FSETOB_create_FSETOB(FSETOB self) {
  5767.  FSETOB noname4164;
  5768.  return ((FSETOB) NULL);
  5769.  if (!FSETOB_invariant(self)) {
  5770.   fprintf(stderr,"Failed invariant FSET{$OB}::invariant:BOOL ../Library/fset.sa:73:9\n");
  5771.   exit(16);
  5772.  }
  5773. }
  5774.  
  5775.  
  5776. void BE_start_mangling(BE self) {
  5777.  self->thisrout = FSETOB_create_FSETOB(((FSETOB) NULL));
  5778.  self->local_counter = 0;
  5779. }
  5780.  
  5781.  
  5782. BOOL OPTIONS_pre_chk_(OPTIONS self, STR n_4165) {
  5783.  BOOL noname4166 = ((BOOL) 0);
  5784.  BOOL local0;
  5785.  BOOL local1;
  5786.  if (self->pre_all) {
  5787.   local1 = TRUE;
  5788.  } else {
  5789.   local1 = FSETSTR_test_STR(self->pre_in, n_4165);
  5790.  }
  5791.  if (local1) {
  5792.   local0 = (!(FSETSTR_test_STR(self->pre_out, n_4165)));
  5793.  } else {
  5794.   local0 = FALSE;
  5795.  }
  5796.  return local0;
  5797. }
  5798.  
  5799.  
  5800. BOOL OPTIONS_post_chk(OPTIONS self, STR n_4167) {
  5801.  BOOL noname4168 = ((BOOL) 0);
  5802.  BOOL local0;
  5803.  BOOL local1;
  5804.  if (self->post_all) {
  5805.   local1 = TRUE;
  5806.  } else {
  5807.   local1 = FSETSTR_test_STR(self->post_in, n_4167);
  5808.  }
  5809.  if (local1) {
  5810.   local0 = (!(FSETSTR_test_STR(self->post_out, n_4167)));
  5811.  } else {
  5812.   local0 = FALSE;
  5813.  }
  5814.  return local0;
  5815. }
  5816.  
  5817.  
  5818. BOOL OPTIONS_invarian(OPTIONS self, STR n_4169) {
  5819.  BOOL noname4170 = ((BOOL) 0);
  5820.  BOOL local0;
  5821.  BOOL local1;
  5822.  if (self->invariant_all) {
  5823.   local1 = TRUE;
  5824.  } else {
  5825.   local1 = FSETSTR_test_STR(self->invariant_in, n_4169);
  5826.  }
  5827.  if (local1) {
  5828.   local0 = (!(FSETSTR_test_STR(self->invariant_out, n_4169)));
  5829.  } else {
  5830.   local0 = FALSE;
  5831.  }
  5832.  return local0;
  5833. }
  5834.  
  5835.  
  5836. BOOL OPTIONS_assert_c(OPTIONS self, STR n_4171) {
  5837.  BOOL noname4172 = ((BOOL) 0);
  5838.  BOOL local0;
  5839.  BOOL local1;
  5840.  if (self->assert_all) {
  5841.   local1 = TRUE;
  5842.  } else {
  5843.   local1 = FSETSTR_test_STR(self->assert_in, n_4171);
  5844.  }
  5845.  if (local1) {
  5846.   local0 = (!(FSETSTR_test_STR(self->assert_out, n_4171)));
  5847.  } else {
  5848.   local0 = FALSE;
  5849.  }
  5850.  return local0;
  5851. }
  5852.  
  5853.  
  5854. BOOL OPTIONS_arith_ch(OPTIONS self, STR n_4173) {
  5855.  BOOL noname4174 = ((BOOL) 0);
  5856.  BOOL local0;
  5857.  BOOL local1;
  5858.  if (self->arith_all) {
  5859.   local1 = TRUE;
  5860.  } else {
  5861.   local1 = FSETSTR_test_STR(self->arith_in, n_4173);
  5862.  }
  5863.  if (local1) {
  5864.   local0 = (!(FSETSTR_test_STR(self->arith_out, n_4173)));
  5865.  } else {
  5866.   local0 = FALSE;
  5867.  }
  5868.  return local0;
  5869. }
  5870.  
  5871.  
  5872. BOOL OPTIONS_bounds_c(OPTIONS self, STR n_4175) {
  5873.  BOOL noname4176 = ((BOOL) 0);
  5874.  BOOL local0;
  5875.  BOOL local1;
  5876.  if (self->bounds_all) {
  5877.   local1 = TRUE;
  5878.  } else {
  5879.   local1 = FSETSTR_test_STR(self->bounds_in, n_4175);
  5880.  }
  5881.  if (local1) {
  5882.   local0 = (!(FSETSTR_test_STR(self->bounds_out, n_4175)));
  5883.  } else {
  5884.   local0 = FALSE;
  5885.  }
  5886.  return local0;
  5887. }
  5888.  
  5889.  
  5890. BOOL OPTIONS_void_chk(OPTIONS self, STR n_4177) {
  5891.  BOOL noname4178 = ((BOOL) 0);
  5892.  BOOL local0;
  5893.  BOOL local1;
  5894.  if (self->void_all) {
  5895.   local1 = TRUE;
  5896.  } else {
  5897.   local1 = FSETSTR_test_STR(self->void_in, n_4177);
  5898.  }
  5899.  if (local1) {
  5900.   local0 = (!(FSETSTR_test_STR(self->void_out, n_4177)));
  5901.  } else {
  5902.   local0 = FALSE;
  5903.  }
  5904.  return local0;
  5905. }
  5906.  
  5907.  
  5908. BOOL OPTIONS_when_chk(OPTIONS self, STR n_4179) {
  5909.  BOOL noname4180 = ((BOOL) 0);
  5910.  BOOL local0;
  5911.  BOOL local1;
  5912.  if (self->when_all) {
  5913.   local1 = TRUE;
  5914.  } else {
  5915.   local1 = FSETSTR_test_STR(self->when_in, n_4179);
  5916.  }
  5917.  if (local1) {
  5918.   local0 = (!(FSETSTR_test_STR(self->when_out, n_4179)));
  5919.  } else {
  5920.   local0 = FALSE;
  5921.  }
  5922.  return local0;
  5923. }
  5924.  
  5925.  
  5926. BOOL OPTIONS_return_c(OPTIONS self, STR n_4181) {
  5927.  BOOL noname4182 = ((BOOL) 0);
  5928.  BOOL local0;
  5929.  BOOL local1;
  5930.  if (self->return_all) {
  5931.   local1 = TRUE;
  5932.  } else {
  5933.   local1 = FSETSTR_test_STR(self->return_in, n_4181);
  5934.  }
  5935.  if (local1) {
  5936.   local0 = (!(FSETSTR_test_STR(self->return_out, n_4181)));
  5937.  } else {
  5938.   local0 = FALSE;
  5939.  }
  5940.  return local0;
  5941. }
  5942.  
  5943.  
  5944. BOOL OPTIONS_destroy_(OPTIONS self, STR n_4183) {
  5945.  BOOL noname4184 = ((BOOL) 0);
  5946.  BOOL local0;
  5947.  BOOL local1;
  5948.  if (self->destroy_all) {
  5949.   local1 = TRUE;
  5950.  } else {
  5951.   local1 = FSETSTR_test_STR(self->destroy_in, n_4183);
  5952.  }
  5953.  if (local1) {
  5954.   local0 = (!(FSETSTR_test_STR(self->destroy_out, n_4183)));
  5955.  } else {
  5956.   local0 = FALSE;
  5957.  }
  5958.  return local0;
  5959. }
  5960.  
  5961.  
  5962. void BE_set_chks(BE self) {
  5963.  STR n_4185;
  5964.  TP local0;
  5965.  local0 = self->current_function->tp;
  5966.  n_4185 = (*TP_str_STR[local0->header.tag+TP_str_STR_offset])(local0);
  5967.  self->chk_pre = OPTIONS_pre_chk_(self->prog->options_55, n_4185);
  5968.  self->chk_post = OPTIONS_post_chk(self->prog->options_55, n_4185);
  5969.  self->chk_invariant = OPTIONS_invarian(self->prog->options_55, n_4185);
  5970.  self->chk_assert = OPTIONS_assert_c(self->prog->options_55, n_4185);
  5971.  self->chk_arith = OPTIONS_arith_ch(self->prog->options_55, n_4185);
  5972.  self->chk_bounds = OPTIONS_bounds_c(self->prog->options_55, n_4185);
  5973.  self->chk_void = OPTIONS_void_chk(self->prog->options_55, n_4185);
  5974.  self->chk_when = OPTIONS_when_chk(self->prog->options_55, n_4185);
  5975.  self->chk_return = OPTIONS_return_c(self->prog->options_55, n_4185);
  5976.  self->chk_destroy = OPTIONS_destroy_(self->prog->options_55, n_4185);
  5977. }
  5978.  
  5979.  
  5980. BOOL SIG_is_iter_BOOL(SIG self) {
  5981.  BOOL noname4186 = ((BOOL) 0);
  5982.  return IDENT_is_iter_BOOL(self->name_19);
  5983. }
  5984.  
  5985.  
  5986. FLISTAM_ITER_CAL FLISTAM_ITER_CAL_4187(FLISTAM_ITER_CAL self, INT n_4188) {
  5987.  FLISTAM_ITER_CAL noname4189;
  5988.  FLISTAM_ITER_CAL local0;
  5989.  if (!((n_4188>=1))) {
  5990.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:57:9\n");
  5991.   exit(16);
  5992.  }
  5993.  local0 = ((FLISTAM_ITER_CAL) sbi_arr_alloc(sizeof(struct FLISTAM_ITER_CAL_struct), FLISTAM_ITER_CAL_tag, sizeof(AM_ITER_CALL_EXPR) , n_4188));
  5994.  local0->asize = n_4188;
  5995.  return local0;
  5996.  if (!FLISTAM_ITER_CAL_4190(self)) {
  5997.   fprintf(stderr,"Failed invariant FLIST{AM_ITER_CALL_EXPR}::invariant:BOOL ../Library/flist.sa:57:9\n");
  5998.   exit(16);
  5999.  }
  6000. }
  6001.  
  6002.  
  6003. void BE_setup_routine(BE self, AM_ROUT_DEF func) {
  6004.  self->current_function = func->sig_6;
  6005.  BE_set_chks(self);
  6006.  self->current_function_str = SIG_str_STR(func->sig_6);
  6007.  if (SIG_is_iter_BOOL(func->sig_6)) {
  6008.   self->nested_its = FLISTAM_ITER_CAL_4187(((FLISTAM_ITER_CAL) NULL), 5);
  6009.  }
  6010.  else {
  6011.   self->nested_its = ((FLISTAM_ITER_CAL) NULL);
  6012.  }
  6013.  self->routine_code = FSTR_create_FSTR(((FSTR) NULL));
  6014. }
  6015.  
  6016.  
  6017. STR BE_eol_STR(BE self) {
  6018.  STR noname4191;
  6019.  if (self->prog->options_55->debug_11) {
  6020.   return ((STR) &name_4192);
  6021.  }
  6022.  return ((STR) &name_4193);
  6023. }
  6024.  
  6025.  
  6026. void BE_newline(BE self) {
  6027.  INT noname4194 = ((INT) 0);
  6028.  FILE_20 local0;
  6029.  INT local1;
  6030.  INT noname4196t;
  6031.  local0 = self->code_c;
  6032.  (fwrite(BE_eol_STR(self)->arr_part,BE_eol_STR(self)->asize,1,local0->fp));
  6033.  {
  6034.   BOOL noname4196 = TRUE;
  6035.   while (1) {
  6036.    if (noname4196) {
  6037.     noname4196 = FALSE;
  6038.     noname4194 = self->indent;
  6039.     local1 = noname4194;
  6040.     noname4196t = local1;
  6041.    } else {
  6042.     noname4196t--;
  6043.    }
  6044.    if (noname4196t<=0) goto after_loop;
  6045.    0 /* no return value from inlined iter */;
  6046.    FILE_plus_CHAR(self->code_c, ' ');
  6047.   }
  6048.  }
  6049.  after_loop: ;
  6050. }
  6051.  
  6052.  
  6053. BOOL AM_ROUT_DEF_is_i(AM_ROUT_DEF self) {
  6054.  BOOL noname4197 = ((BOOL) 0);
  6055.  return SIG_is_iter_BOOL(self->sig_6);
  6056. }
  6057.  
  6058.  
  6059. void BE_remangle_OB_STR(BE self, OB ob_4198, STR s_4199) {
  6060.  STR x;
  6061.  BOOL local0;
  6062.  x = FMAPOBSTR_get_OB_STR(self->manglemap, ob_4198);
  6063.  if ((x==((STR) NULL))) {
  6064.   local0 = TRUE;
  6065.  } else {
  6066.   local0 = STR_is_neq_STR_BOOL(x, s_4199);
  6067.  }
  6068.  if (local0) {
  6069.   self->manglemap = FMAPOBSTR_insert_1222(self->manglemap, ob_4198, s_4199);
  6070.   self->mangleset = FSETSTR_insert_S(self->mangleset, s_4199);
  6071.  }
  6072. }
  6073.  
  6074.  
  6075. void BE_in(BE self) {
  6076.  self->indent = (c_INT_plus_INT_INT_chk(self->indent,1));
  6077. }
  6078.  
  6079.  
  6080. STR BE_default_init_(BE self, TP t_4200) {
  6081.  STR noname4201;
  6082.  TP local0;
  6083.  STR local1;
  6084.  STR local2;
  6085.  STR local3;
  6086.  STR local4;
  6087.  STR local5;
  6088.  STR local6;
  6089.  STR local7;
  6090.  local0 = t_4200;
  6091.  if ((*TP_is_value_BOOL[local0->header.tag+TP_is_value_BOOL_offset])(local0)) {
  6092.   if (BE_is_built_in_t(self, t_4200)) {
  6093.    local1 = ((STR) &name_4202);
  6094.    local2 = STR_plus_STR_STR(local1, BE_mangle_OB_STR(self, ((OB) t_4200)));
  6095.    local3 = STR_plus_STR_STR(local2, ((STR) &name_4203));
  6096.    return STR_plus_STR_STR(local3, ((STR) &S0));
  6097.   }
  6098.   else {
  6099.    local4 = BE_mangle_OB_STR(self, ((OB) t_4200));
  6100.    return STR_plus_STR_STR(local4, ((STR) &S_zero_4204));
  6101.   }
  6102.  }
  6103.  local5 = ((STR) &name_4205);
  6104.  local6 = STR_plus_STR_STR(local5, BE_mangle_OB_STR(self, ((OB) t_4200)));
  6105.  local7 = STR_plus_STR_STR(local6, ((STR) &name_4206));
  6106.  return STR_plus_STR_STR(local7, ((STR) &NULL_4207));
  6107. }
  6108.  
  6109.  
  6110. void BE_defer_newline(BE self) {
  6111.  INT noname4208 = ((INT) 0);
  6112.  FSTR local0;
  6113.  INT local1;
  6114.  INT noname4210t;
  6115.  local0 = self->routine_code;
  6116.  self->routine_code = FSTR_plus_STR_FSTR(local0, BE_eol_STR(self));
  6117.  {
  6118.   BOOL noname4210 = TRUE;
  6119.   while (1) {
  6120.    if (noname4210) {
  6121.     noname4210 = FALSE;
  6122.     noname4208 = self->indent;
  6123.     local1 = noname4208;
  6124.     noname4210t = local1;
  6125.    } else {
  6126.     noname4210t--;
  6127.    }
  6128.    if (noname4210t<=0) goto after_loop;
  6129.    0 /* no return value from inlined iter */;
  6130.    self->routine_code = FSTR_plus_CHAR_FSTR(self->routine_code, ' ');
  6131.   }
  6132.  }
  6133.  after_loop: ;
  6134. }
  6135.  
  6136.  
  6137. void BE_ndefer_STR(BE self, STR s_4211) {
  6138.  BE_defer_newline(self);
  6139.  self->routine_code = FSTR_plus_STR_FSTR(self->routine_code, s_4211);
  6140. }
  6141.  
  6142.  
  6143. void BE_out(BE self) {
  6144.  self->indent = (c_INT_minus_INT_INT_chk(self->indent,1));
  6145. }
  6146.  
  6147.  
  6148. void BE_emit_prologue(BE self, AM_ROUT_DEF f_4212) {
  6149.  SIG sig_4213;
  6150.  AM_LOCAL_EXPR lv;
  6151.  FLISTAM_LOCAL_EXPR noname4214;
  6152.  STR was_4215;
  6153.  AM_LOCAL_EXPR lv_4216;
  6154.  AM_ROUT_DEF noname4217;
  6155.  INT noname4218 = ((INT) 0);
  6156.  ARRAYTP noname4219;
  6157.  TP e_4220;
  6158.  INT noname4221 = ((INT) 0);
  6159.  BOOL flag_4222 = ((BOOL) 0);
  6160.  AM_ROUT_DEF noname4223;
  6161.  AM_LOCAL_EXPR e_4224;
  6162.  STR noname4225;
  6163.  AM_ROUT_DEF noname4226;
  6164.  AM_LOCAL_EXPR e_4227;
  6165.  STR noname4228;
  6166.  AM_LOCAL_EXPR lv_4229;
  6167.  FLISTAM_LOCAL_EXPR noname4230;
  6168.  STR def;
  6169.  INT noname4231 = ((INT) 0);
  6170.  INT noname4232 = ((INT) 0);
  6171.  INT i = ((INT) 0);
  6172.  FLISTAM_LOCAL_EXPR noname4233;
  6173.  AM_LOCAL_EXPR i_4234;
  6174.  FILE_20 local0;
  6175.  STR local1;
  6176.  FILE_20 local2;
  6177.  FILE_20 local3;
  6178.  TP local4;
  6179.  STR local5;
  6180.  STR local6;
  6181.  FILE_20 local7;
  6182.  FILE_20 local8;
  6183.  FILE_20 local9;
  6184.  FILE_20 local10;
  6185.  AM_LOCAL_EXPR local11;
  6186.  AM_LOCAL_EXPR local12;
  6187.  STR local13;
  6188.  INT local14;
  6189.  FILE_20 local15;
  6190.  FILE_20 local16;
  6191.  TP local17;
  6192.  FILE_20 local18;
  6193.  FILE_20 local19;
  6194.  FILE_20 local20;
  6195.  INT local21;
  6196.  AM_LOCAL_EXPR local22;
  6197.  BOOL local23;
  6198.  FILE_20 local24;
  6199.  STR local25;
  6200.  STR local26;
  6201.  STR local27;
  6202.  AM_LOCAL_EXPR local28;
  6203.  BOOL local29;
  6204.  FILE_20 local30;
  6205.  STR local31;
  6206.  STR local32;
  6207.  STR local33;
  6208.  BOOL local34;
  6209.  AM_LOCAL_EXPR local35;
  6210.  BOOL local36;
  6211.  BOOL local37;
  6212.  TP local38;
  6213.  FILE_20 local39;
  6214.  FILE_20 local40;
  6215.  FILE_20 local41;
  6216.  FILE_20 local42;
  6217.  FILE_20 local43;
  6218.  FILE_20 local44;
  6219.  FILE_20 local45;
  6220.  FILE_20 local46;
  6221.  FILE_20 local47;
  6222.  FILE_20 local48;
  6223.  FILE_20 local49;
  6224.  FILE_20 local50;
  6225.  FILE_20 local51;
  6226.  INT local52;
  6227.  INT local53;
  6228.  INT local54;
  6229.  
  6230.  STR local55;
  6231.  STR local56;
  6232.  STR local57;
  6233.  AM_LOCAL_EXPR local58;
  6234.  STR local59;
  6235.  STR local60;
  6236.  STR local61;
  6237.  if (!((!((f_4212->sig_6==((SIG) NULL)))))) {
  6238.   fprintf(stderr,"Violation of precondition ./be.sa:1138:17\n");
  6239.   exit(16);
  6240.  }
  6241.  self->saw_outer_return = FALSE;
  6242.  sig_4213 = f_4212->sig_6;
  6243.  BE_newline(self);
  6244.  BE_newline(self);
  6245.  local0 = self->code_c;
  6246.  local1 = ((STR) &Definitionof);
  6247.  BE_comment_FILE_STR(self, local0, STR_plus_STR_STR(local1, SIG_str_STR(sig_4213)));
  6248.  FILE_plus_CHAR(self->code_c, '\n');
  6249.  if ((!((sig_4213->ret==((TP) NULL))))) {
  6250.   local2 = self->code_c;
  6251.   local3 = FILE_plus_STR_FILE(local2, BE_mangle_OB_STR(self, ((OB) sig_4213->ret)));
  6252.   FILE_plus_CHAR(local3, ' ');
  6253.  }
  6254.  else {
  6255.   (fwrite(((STR) &void_4235)->arr_part,((STR) &void_4235)->asize,1,self->code_c->fp));
  6256.  }
  6257.  if (f_4212->is_external) {
  6258.   local4 = f_4212->sig_6->tp;
  6259.   local5 = (*TP_str_STR[local4->header.tag+TP_str_STR_offset])(local4);
  6260.   local6 = STR_plus_CHAR_STR(local5, '_');
  6261.   BE_force_mangle_(self, ((OB) sig_4213), STR_plus_STR_STR(local6, f_4212->sig_6->name_19.str_4));
  6262.  }
  6263.  local7 = self->code_c;
  6264.  local8 = FILE_plus_STR_FILE(local7, BE_mangle_OB_STR(self, ((OB) sig_4213)));
  6265.  FILE_plus_CHAR(local8, '(');
  6266.  if (AM_ROUT_DEF_is_i(f_4212)) {
  6267.   local9 = self->code_c;
  6268.   local10 = FILE_plus_STR_FILE(local9, BE_mangle_OB_STR(self, ((OB) f_4212->sig_6)));
  6269.   (fwrite(((STR) &S_frameframe)->arr_part,((STR) &S_frameframe)->asize,1,local10->fp));
  6270.   if ((!((f_4212->locals_57==((FLISTAM_LOCAL_EXPR) NULL))))) {
  6271.    {
  6272.     struct FLISTAM_LOCAL_EX_4237_frame_struct temp4236_0;
  6273.     FLISTAM_LOCAL_EX_4237_frame 
  6274.     noname4238 = &temp4236_0;
  6275.     noname4238->state = 0;
  6276.     while (1) {
  6277.      if (noname4238->state == 0) {
  6278.       noname4214 = f_4212->locals_57;
  6279.       noname4238->arg0 = noname4214;
  6280.      }
  6281.      local11 = FLISTAM_LOCAL_EX_4237(noname4238);
  6282.      if (noname4238->state == -1) goto after_loop;
  6283.      lv = local11;
  6284.      was_4215 = BE_mangle_OB_STR(self, ((OB) lv));
  6285.      BE_remangle_OB_STR(self, ((OB) lv), STR_plus_STR_STR(((STR) &frame_4239), was_4215));
  6286.     }
  6287.    }
  6288.    after_loop: ;
  6289.   }
  6290.   {
  6291.    struct AM_ROUT_DEF_elt__frame_struct temp4241_0;
  6292.    AM_ROUT_DEF_elt__frame 
  6293.    noname4242 = &temp4241_0;
  6294.    struct INT_up_INT_frame_struct temp4241_1;
  6295.    INT_up_INT_frame 
  6296.    noname4243 = &temp4241_1;
  6297.    noname4242->state = 0;
  6298.    noname4243->state = 0;
  6299.    while (1) {
  6300.     if (noname4242->state == 0) {
  6301.      noname4217 = f_4212;
  6302.      noname4242->arg0 = noname4217;
  6303.     }
  6304.     local12 = AM_ROUT_DEF_elt_(noname4242);
  6305.     if (noname4242->state == -1) goto after_loop_4240;
  6306.     lv_4216 = local12;
  6307.     local13 = ((STR) &framearg);
  6308.     if (noname4243->state == 0) {
  6309.      noname4218 = 0;
  6310.      noname4243->arg0 = noname4218;
  6311.     }
  6312.     local14 = INT_up_INT(noname4243);
  6313.     if (noname4243->state == -1) goto after_loop_4240;
  6314.     BE_remangle_OB_STR(self, ((OB) lv_4216), STR_plus_INT_STR(local13, local14));
  6315.    }
  6316.   }
  6317.   after_loop_4240: ;
  6318.  }
  6319.  else {
  6320.   if (f_4212->is_abstract) {
  6321.    local15 = self->code_c;
  6322.    local16 = FILE_plus_STR_FILE(local15, BE_mangle_OB_STR(self, ((OB) f_4212->sig_6->tp)));
  6323.    (fwrite(((STR) &arg0)->arr_part,((STR) &arg0)->asize,1,local16->fp));
  6324.    if ((!((f_4212->sig_6->args_7==((ARRAYTP) NULL))))) {
  6325.     {
  6326.      struct ARRAYTP_elt_TP_frame_struct temp4245_0;
  6327.      ARRAYTP_elt_TP_frame 
  6328.      noname4246 = &temp4245_0;
  6329.      struct INT_up_INT_frame_struct temp4245_1;
  6330.      INT_up_INT_frame 
  6331.      noname4247 = &temp4245_1;
  6332.      noname4246->state = 0;
  6333.      noname4247->state = 0;
  6334.      while (1) {
  6335.       if (noname4246->state == 0) {
  6336.        noname4219 = f_4212->sig_6->args_7;
  6337.        noname4246->arg0 = noname4219;
  6338.       }
  6339.       local17 = ARRAYTP_elt_TP(noname4246);
  6340.       if (noname4246->state == -1) goto after_loop_4244;
  6341.       e_4220 = local17;
  6342.       local18 = FILE_plus_STR_FILE(self->code_c, ((STR) &name_4248));
  6343.       local19 = FILE_plus_STR_FILE(local18, BE_mangle_OB_STR(self, ((OB) e_4220)));
  6344.       local20 = FILE_plus_STR_FILE(local19, ((STR) &arg_4249));
  6345.       if (noname4247->state == 0) {
  6346.        noname4221 = 1;
  6347.        noname4247->arg0 = noname4221;
  6348.       }
  6349.       local21 = INT_up_INT(noname4247);
  6350.       if (noname4247->state == -1) goto after_loop_4244;
  6351.       FILE_plus_INT(local20, local21);
  6352.      }
  6353.     }
  6354.     after_loop_4244: ;
  6355.    }
  6356.   }
  6357.   else {
  6358.    if (f_4212->is_external) {
  6359.     flag_4222 = FALSE;
  6360.     {
  6361.      struct AM_ROUT_DEF_elt__frame_struct temp4251_0;
  6362.      AM_ROUT_DEF_elt__frame 
  6363.      noname4252 = &temp4251_0;
  6364.      struct STR_separate_STR_STR_frame_struct temp4251_1;
  6365.      STR_separate_STR_STR_frame 
  6366.      noname4253 = &temp4251_1;
  6367.      noname4252->state = 0;
  6368.      noname4253->state = 0;
  6369.      while (1) {
  6370.       if (noname4252->state == 0) {
  6371.        noname4223 = f_4212;
  6372.        noname4252->arg0 = noname4223;
  6373.       }
  6374.       local22 = AM_ROUT_DEF_elt_(noname4252);
  6375.       if (noname4252->state == -1) goto after_loop_4250;
  6376.       e_4224 = local22;
  6377.       if ((!((e_4224==((AM_LOCAL_EXPR) NULL))))) {
  6378.        local23 = (!((e_4224->tp_at==((TP) NULL))));
  6379.       } else {
  6380.        local23 = FALSE;
  6381.       }
  6382.       if (!(local23)) {
  6383.        fprintf(stderr,"Violation of assertion ./be.sa:1186:26\n");
  6384.        exit(16);
  6385.       }
  6386.       if (flag_4222) {
  6387.        local24 = self->code_c;
  6388.        if (noname4253->state == 0) {
  6389.         noname4225 = ((STR) &name_4254);
  6390.         noname4253->arg0 = noname4225;
  6391.        }
  6392.        local26 = BE_mangle_OB_STR(self, ((OB) e_4224->tp_at));
  6393.        local27 = STR_plus_CHAR_STR(local26, ' ');
  6394.        noname4253->arg1 = STR_plus_STR_STR(local27, BE_mangle_OB_STR(self, ((OB) e_4224)));
  6395.        local25 = STR_separate_STR_STR(noname4253);
  6396.        if (noname4253->state == -1) goto after_loop_4250;
  6397.        (fwrite(local25->arr_part,local25->asize,1,local24->fp));
  6398.       }
  6399.       flag_4222 = TRUE;
  6400.      }
  6401.     }
  6402.     after_loop_4250: ;
  6403.    }
  6404.    else {
  6405.     {
  6406.      struct AM_ROUT_DEF_elt__frame_struct temp4256_0;
  6407.      AM_ROUT_DEF_elt__frame 
  6408.      noname4257 = &temp4256_0;
  6409.      struct STR_separate_STR_STR_frame_struct temp4256_1;
  6410.      STR_separate_STR_STR_frame 
  6411.      noname4258 = &temp4256_1;
  6412.      noname4257->state = 0;
  6413.      noname4258->state = 0;
  6414.      while (1) {
  6415.       if (noname4257->state == 0) {
  6416.        noname4226 = f_4212;
  6417.        noname4257->arg0 = noname4226;
  6418.       }
  6419.       local28 = AM_ROUT_DEF_elt_(noname4257);
  6420.       if (noname4257->state == -1) goto after_loop_4255;
  6421.       e_4227 = local28;
  6422.       if ((!((e_4227==((AM_LOCAL_EXPR) NULL))))) {
  6423.        local29 = (!((e_4227->tp_at==((TP) NULL))));
  6424.       } else {
  6425.        local29 = FALSE;
  6426.       }
  6427.       if (!(local29)) {
  6428.        fprintf(stderr,"Violation of assertion ./be.sa:1195:26\n");
  6429.        exit(16);
  6430.       }
  6431.       local30 = self->code_c;
  6432.       if (noname4258->state == 0) {
  6433.        noname4228 = ((STR) &name_4259);
  6434.        noname4258->arg0 = noname4228;
  6435.       }
  6436.       local32 = BE_mangle_OB_STR(self, ((OB) e_4227->tp_at));
  6437.       local33 = STR_plus_CHAR_STR(local32, ' ');
  6438.       noname4258->arg1 = STR_plus_STR_STR(local33, BE_mangle_OB_STR(self, ((OB) e_4227)));
  6439.       local31 = STR_separate_STR_STR(noname4258);
  6440.       if (noname4258->state == -1) goto after_loop_4255;
  6441.       (fwrite(local31->arr_part,local31->asize,1,local30->fp));
  6442.      }
  6443.     }
  6444.     after_loop_4255: ;
  6445.    }
  6446.   }
  6447.  }
  6448.  self->current_self = BE_mangle_OB_STR(self, ((OB) AM_ROUT_DEF_aget(f_4212, 0)));
  6449.  (fwrite(((STR) &name_4260)->arr_part,((STR) &name_4260)->asize,1,self->code_c->fp));
  6450.  BE_in(self);
  6451.  if ((!(AM_ROUT_DEF_is_i(f_4212)))) {
  6452.   local34 = (!((f_4212->locals_57==((FLISTAM_LOCAL_EXPR) NULL))));
  6453.  } else {
  6454.   local34 = FALSE;
  6455.  }
  6456.  if (local34) {
  6457.   {
  6458.    struct FLISTAM_LOCAL_EX_4237_frame_struct temp4262_0;
  6459.    FLISTAM_LOCAL_EX_4237_frame 
  6460.    noname4263 = &temp4262_0;
  6461.    noname4263->state = 0;
  6462.    while (1) {
  6463.     if (noname4263->state == 0) {
  6464.      noname4230 = f_4212->locals_57;
  6465.      noname4263->arg0 = noname4230;
  6466.     }
  6467.     local35 = FLISTAM_LOCAL_EX_4237(noname4263);
  6468.     if (noname4263->state == -1) goto after_loop_4261;
  6469.     lv_4229 = local35;
  6470.     if ((!((lv_4229==((AM_LOCAL_EXPR) NULL))))) {
  6471.      local36 = (!((lv_4229->tp_at==((TP) NULL))));
  6472.     } else {
  6473.      local36 = FALSE;
  6474.     }
  6475.     if (!(local36)) {
  6476.      fprintf(stderr,"Violation of assertion ./be.sa:1210:22\n");
  6477.      exit(16);
  6478.     }
  6479.     BE_newline(self);
  6480.     if (lv_4229->is_volatile) {
  6481.      (fwrite(((STR) &volatile_4264)->arr_part,((STR) &volatile_4264)->asize,1,self->code_c->fp));
  6482.     }
  6483.     if (lv_4229->needs_init) {
  6484.      local37 = TRUE;
  6485.     } else {
  6486.      local38 = lv_4229->tp_at;
  6487.      local37 = (*TP_is_value_BOOL[local38->header.tag+TP_is_value_BOOL_offset])(local38);
  6488.     }
  6489.     if (local37) {
  6490.      def = BE_default_init_(self, lv_4229->tp_at);
  6491.      local39 = self->code_c;
  6492.      local40 = FILE_plus_STR_FILE(local39, BE_mangle_OB_STR(self, ((OB) lv_4229->tp_at)));
  6493.      local41 = FILE_plus_CHAR_FILE(local40, ' ');
  6494.      local42 = FILE_plus_STR_FILE(local41, BE_mangle_OB_STR(self, ((OB) lv_4229)));
  6495.      local43 = FILE_plus_STR_FILE(local42, ((STR) &name_4265));
  6496.      local44 = FILE_plus_STR_FILE(local43, def);
  6497.      FILE_plus_CHAR(local44, ';');
  6498.     }
  6499.     else {
  6500.      local45 = self->code_c;
  6501.      local46 = FILE_plus_STR_FILE(local45, BE_mangle_OB_STR(self, ((OB) lv_4229->tp_at)));
  6502.      local47 = FILE_plus_CHAR_FILE(local46, ' ');
  6503.      local48 = FILE_plus_STR_FILE(local47, BE_mangle_OB_STR(self, ((OB) lv_4229)));
  6504.      FILE_plus_CHAR(local48, ';');
  6505.     }
  6506.    }
  6507.   }
  6508.   after_loop_4261: ;
  6509.  }
  6510.  if (AM_ROUT_DEF_is_i(f_4212)) {
  6511.   if ((!((sig_4213->ret==((TP) NULL))))) {
  6512.    BE_newline(self);
  6513.    local49 = self->code_c;
  6514.    local50 = FILE_plus_STR_FILE(local49, BE_mangle_OB_STR(self, ((OB) sig_4213->ret)));
  6515.    local51 = FILE_plus_CHAR_FILE(local50, ' ');
  6516.    (fwrite(((STR) &dummy_4266)->arr_part,((STR) &dummy_4266)->asize,1,local51->fp));
  6517.   }
  6518.   BE_ndefer_STR(self, ((STR) &switchframestate));
  6519.   BE_in(self);
  6520.   {
  6521.    BOOL noname4269 = TRUE;
  6522.    while (1) {
  6523.     if (noname4269) {
  6524.      noname4269 = FALSE;
  6525.      noname4231 = 0;
  6526.      noname4232 = f_4212->num_yields;
  6527.      local53 = noname4231;
  6528.      local54 = noname4232;
  6529.      local52 = local53;
  6530.     } else {
  6531.      local52++;
  6532.     }
  6533.     if (local52>local54) goto after_loop_4267;
  6534.     i = local52;
  6535.     local55 = STR_plus_INT_STR(((STR) &case_4270), i);
  6536.     local56 = STR_plus_STR_STR(local55, ((STR) &gotostate));
  6537.     local57 = STR_plus_INT_STR(local56, i);
  6538.     BE_ndefer_STR(self, STR_plus_CHAR_STR(local57, ';'));
  6539.    }
  6540.   }
  6541.   after_loop_4267: ;
  6542.   BE_ndefer_STR(self, ((STR) &name_4271));
  6543.   BE_out(self);
  6544.   BE_ndefer_STR(self, ((STR) &state0));
  6545.   self->state_counter = 1;
  6546.   if ((!((f_4212->locals_57==((FLISTAM_LOCAL_EXPR) NULL))))) {
  6547.    {
  6548.     struct FLISTAM_LOCAL_EX_4237_frame_struct temp4273_0;
  6549.     FLISTAM_LOCAL_EX_4237_frame 
  6550.     noname4274 = &temp4273_0;
  6551.     noname4274->state = 0;
  6552.     while (1) {
  6553.      if (noname4274->state == 0) {
  6554.       noname4233 = f_4212->locals_57;
  6555.       noname4274->arg0 = noname4233;
  6556.      }
  6557.      local58 = FLISTAM_LOCAL_EX_4237(noname4274);
  6558.      if (noname4274->state == -1) goto after_loop_4272;
  6559.      i_4234 = local58;
  6560.      if (i_4234->needs_init) {
  6561.       local59 = BE_mangle_OB_STR(self, ((OB) i_4234));
  6562.       local60 = STR_plus_STR_STR(local59, ((STR) &name_4275));
  6563.       local61 = STR_plus_STR_STR(local60, BE_default_init_(self, i_4234->tp_at));
  6564.       BE_ndefer_STR(self, STR_plus_STR_STR(local61, ((STR) &name_4276)));
  6565.      }
  6566.     }
  6567.    }
  6568.    after_loop_4272: ;
  6569.   }
  6570.  }
  6571. }
  6572.  
  6573.  
  6574. INT SIG_num_args_INT(SIG self) {
  6575.  INT noname4277 = ((INT) 0);
  6576.  return ARRAYTP_size_INT(self->args_7);
  6577. }
  6578.  
  6579.  
  6580. BOOL BE_is_asize_SIG_BOOL(BE self, SIG s_4278) {
  6581.  BOOL noname4279 = ((BOOL) 0);
  6582.  BOOL local0;
  6583.  BOOL local1;
  6584.  BOOL local2;
  6585.  BOOL local3;
  6586.  BOOL local4;
  6587.  TP local5;
  6588.  INT local6;
  6589.  TP local7;
  6590.  if (STR_is_eq_STR_BOOL(s_4278->name_19.str_4, ((STR) &asize_4280))) {
  6591.   local5 = s_4278->tp;
  6592.   local4 = (!((*TP_is_abstract_BOOL[local5->header.tag+TP_is_abstract_BOOL_offset])(local5)));
  6593.  } else {
  6594.   local4 = FALSE;
  6595.  }
  6596.  if (local4) {
  6597.   local3 = (!((IMPL_TBL_impl_of(self->prog->impl_tbl, s_4278->tp)->arr==((TP_CLASS) NULL))));
  6598.  } else {
  6599.   local3 = FALSE;
  6600.  }
  6601.  if (local3) {
  6602.   local6 = SIG_num_args_INT(s_4278);
  6603.   local2 = (local6==0);
  6604.  } else {
  6605.   local2 = FALSE;
  6606.  }
  6607.  if (local2) {
  6608.   local1 = (!((s_4278->ret==((TP) NULL))));
  6609.  } else {
  6610.   local1 = FALSE;
  6611.  }
  6612.  if (local1) {
  6613.   local7 = s_4278->tp;
  6614.   local0 = (!((*TP_is_value_BOOL[local7->header.tag+TP_is_value_BOOL_offset])(local7)));
  6615.  } else {
  6616.   local0 = FALSE;
  6617.  }
  6618.  return local0;
  6619. }
  6620.  
  6621.  
  6622. void BE_runtime_error(BE self, STR s_4281, PROG_ERR l) {
  6623.  STR local0;
  6624.  STR local1;
  6625.  PROG_ERR local2;
  6626.  STR local3;
  6627.  local0 = STR_plus_STR_STR(((STR) &fprintfstderr), s_4281);
  6628.  local1 = STR_plus_STR_STR(local0, ((STR) &name_4282));
  6629.  local2 = l;
  6630.  local3 = STR_plus_STR_STR(local1, SFILE_ID_str_STR((*PROG_ERR_source_[local2->header.tag+PROG_ERR_source__offset])(local2)));
  6631.  BE_ndefer_STR(self, STR_plus_STR_STR(local3, ((STR) &n_4283)));
  6632.  BE_ndefer_STR(self, ((STR) &exit16));
  6633. }
  6634.  
  6635.  
  6636. FSTR FSTR_plus_INT_FSTR(FSTR self, INT i) {
  6637.  FSTR noname4284;
  6638.  return INT_str_in_FSTR_FSTR(i, self);
  6639.  if (!FSTR_invariant_BOOL(self)) {
  6640.   fprintf(stderr,"Failed invariant FSTR::invariant:BOOL ../Library/fstr.sa:140:7\n");
  6641.   exit(16);
  6642.  }
  6643. }
  6644.  
  6645.  
  6646. void BE_announce_at_S(BE self, SFILE_ID s_4285) {
  6647.  INT lineno = ((INT) 0);
  6648.  FSTR local0;
  6649.  FSTR local1;
  6650.  FSTR local2;
  6651.  FSTR local3;
  6652.  if (self->prog->options_55->debug_11) {
  6653.   lineno = SFILE_ID_line_nu(s_4285);
  6654.   if ((lineno>0)) {
  6655.    PROG_set_eloc_SF(self->prog, s_4285);
  6656.    local0 = FSTR_plus_STR_FSTR(self->routine_code, ((STR) &line_4286));
  6657.    local1 = FSTR_plus_INT_FSTR(local0, lineno);
  6658.    local2 = FSTR_plus_STR_FSTR(local1, ((STR) &name_4287));
  6659.    local3 = FSTR_plus_STR_FSTR(local2, SFILE_ID_file_in_STR(s_4285));
  6660.    self->routine_code = FSTR_plus_STR_FSTR(local3, ((STR) &name_4288));
  6661.   }
  6662.  }
  6663. }
  6664.  
  6665.  
  6666. void ARRAYSTR_aset_IN_4289(ARRAYSTR self, INT ind_4290, STR val_4291) {
  6667.  BOOL local0;
  6668.  INT local1;
  6669.  INT local2;
  6670.  if ((!((self==((ARRAYSTR) NULL))))) {
  6671.   local1 = 0;
  6672.   local2 = (self->asize);
  6673.   local0 = INT_is_bet_INT_I(ind_4290, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  6674.  } else {
  6675.   local0 = FALSE;
  6676.  }
  6677.  if (!(local0)) {
  6678.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  6679.   exit(16);
  6680.  }
  6681.  if (ind_4290<0||ind_4290>=self->asize) {
  6682.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  6683.   exit(16);
  6684.  }
  6685.  self->arr_part[ind_4290] = val_4291;
  6686. }
  6687.  
  6688.  
  6689. STR BE_genlocal_STR(BE self) {
  6690.  STR noname4292;
  6691.  STR res = ((STR) NULL);
  6692.  while (1) {
  6693.   res = STR_plus_INT_STR(((STR) &local_4294), self->local_counter);
  6694.   self->local_counter = (c_INT_plus_INT_INT_chk(self->local_counter,1));
  6695.   if ((!(FSETSTR_test_STR(self->mangleset, res)))) {
  6696.    goto after_loop;
  6697.   }
  6698.  }
  6699.  after_loop: ;
  6700.  return res;
  6701. }
  6702.  
  6703.  
  6704. STR BE_dec_local_TP_STR(BE self, TP t_4295) {
  6705.  STR noname4296;
  6706.  STR res;
  6707.  FILE_20 local0;
  6708.  FILE_20 local1;
  6709.  FILE_20 local2;
  6710.  FILE_20 local3;
  6711.  FILE_20 local4;
  6712.  FILE_20 local5;
  6713.  res = BE_genlocal_STR(self);
  6714.  local0 = self->code_c;
  6715.  local1 = FILE_plus_STR_FILE(local0, BE_eol_STR(self));
  6716.  local2 = FILE_plus_CHAR_FILE(local1, ' ');
  6717.  local3 = FILE_plus_STR_FILE(local2, BE_mangle_OB_STR(self, ((OB) t_4295)));
  6718.  local4 = FILE_plus_CHAR_FILE(local3, ' ');
  6719.  local5 = FILE_plus_STR_FILE(local4, res);
  6720.  FILE_plus_CHAR(local5, ';');
  6721.  return res;
  6722. }
  6723.  
  6724.  
  6725. ARRAYSTR BE_emit_args_AM_(BE self, AM_CALL_EXPR arg_4297) {
  6726.  ARRAYSTR noname4298;
  6727.  ARRAYSTR res;
  6728.  BOOL is_ext = ((BOOL) 0);
  6729.  INT last_4299 = ((INT) 0);
  6730.  INT noname4300 = ((INT) 0);
  6731.  INT noname4301 = ((INT) 0);
  6732.  AM_EXPR e_4302;
  6733.  INT noname4303 = ((INT) 0);
  6734.  INT noname4304 = ((INT) 0);
  6735.  INT i = ((INT) 0);
  6736.  AM_EXPR e_4305;
  6737.  STR subexpr;
  6738.  STR subexpr_4306;
  6739.  ARRAYSTR local0;
  6740.  AM_CALL_EXPR local1;
  6741.  INT local2;
  6742.  AM_CALL_EXPR local3;
  6743.  INT local4;
  6744.  AM_CALL_EXPR local5;
  6745.  INT local6;
  6746.  AM_CALL_EXPR local7;
  6747.  INT local8;
  6748.  INT local9;
  6749.  INT local10;
  6750.  INT local11;
  6751.  INT local9e;
  6752.  AM_CALL_EXPR local12;
  6753.  BOOL local13;
  6754.  AM_CALL_EXPR local14;
  6755.  AM_EXPR local15;
  6756.  STR local16;
  6757.  STR local17;
  6758.  STR local18;
  6759.  AM_EXPR local19;
  6760.  STR local20;
  6761.  STR local21;
  6762.  STR local22;
  6763.  local0 = ((ARRAYSTR) NULL);
  6764.  local1 = arg_4297;
  6765.  res = ARRAYSTR_create_(local0, (*AM_CALL_EXPR_asi[local1->header.tag+AM_CALL_EXPR_asi_offset])(local1));
  6766.  is_ext = FALSE;
  6767.  if (arg_4297==NULL) {
  6768.  } else
  6769.  switch (arg_4297->header.tag) {
  6770.   case AM_EXT_CALL_EXPR_tag:
  6771.    is_ext = TRUE; break;
  6772.   default: ;
  6773.  }
  6774.  {
  6775.   struct INT_downto_INT_INT_frame_struct temp4307_0;
  6776.   INT_downto_INT_INT_frame 
  6777.   noname4308 = &temp4307_0;
  6778.   noname4308->state = 0;
  6779.   while (1) {
  6780.    if (noname4308->state == 0) {
  6781.     local3 = arg_4297;
  6782.     local4 = (*AM_CALL_EXPR_asi[local3->header.tag+AM_CALL_EXPR_asi_offset])(local3);
  6783.     noname4300 = (c_INT_minus_INT_INT_chk(local4,1));
  6784.     noname4301 = -1;
  6785.     noname4308->arg0 = noname4300;
  6786.     noname4308->arg1 = noname4301;
  6787.    }
  6788.    local2 = INT_downto_INT_INT(noname4308);
  6789.    if (noname4308->state == -1) goto after_loop;
  6790.    last_4299 = local2;
  6791.    if ((last_4299>=0)) {
  6792.    }
  6793.    else {
  6794.     goto after_loop;
  6795.    }
  6796.    local5 = arg_4297;
  6797.    e_4302 = (*AM_CALL_EXPR_age[local5->header.tag+AM_CALL_EXPR_age_offset])(local5, last_4299);
  6798.    if (e_4302==NULL) {
  6799.    } else
  6800.    switch (e_4302->header.tag) {
  6801.     case AM_ITER_CALL_EXPR_tag:
  6802.     case AM_BND_ROUT_CALL_tag:
  6803.     case AM_EXT_CALL_EXPR_tag:
  6804.     case AM_BND_ITER_CALL_tag:
  6805.     case AM_ROUT_CALL_EXPR_tag:
  6806.      goto after_loop; break;
  6807.     default: ;
  6808.    }
  6809.   }
  6810.  }
  6811.  after_loop: ;
  6812.  local6 = (c_INT_plus_INT_INT_chk(last_4299,1));
  6813.  local7 = arg_4297;
  6814.  local8 = (*AM_CALL_EXPR_asi[local7->header.tag+AM_CALL_EXPR_asi_offset])(local7);
  6815.  last_4299 = INT_min_INT_INT(local6, (c_INT_minus_INT_INT_chk(local8,1)));
  6816.  {
  6817.   BOOL noname4311 = TRUE;
  6818.   while (1) {
  6819.    if (noname4311) {
  6820.     noname4311 = FALSE;
  6821.     noname4303 = 0;
  6822.     local12 = arg_4297;
  6823.     noname4304 = (*AM_CALL_EXPR_asi[local12->header.tag+AM_CALL_EXPR_asi_offset])(local12);
  6824.     local10 = noname4303;
  6825.     local11 = noname4304;
  6826.     local9 = local10; local9e = local10+local11;
  6827.    } else {
  6828.     local9++;
  6829.    }
  6830.    if (local9>=local9e) goto after_loop_4309;
  6831.    i = local9;
  6832.    if (is_ext) {
  6833.     local13 = (i==0);
  6834.    } else {
  6835.     local13 = FALSE;
  6836.    }
  6837.    if ((!(local13))) {
  6838.     local14 = arg_4297;
  6839.     e_4305 = (*AM_CALL_EXPR_age[local14->header.tag+AM_CALL_EXPR_age_offset])(local14, i);
  6840.     ARRAYSTR_aset_IN_4289(res, i, BE_emit_expr_AM_(self, e_4305));
  6841.     if (e_4305==NULL) {
  6842.      if ((i<last_4299)) {
  6843.       subexpr_4306 = ARRAYSTR_aget_IN(res, i);
  6844.       local15 = e_4305;
  6845.       ARRAYSTR_aset_IN_4289(res, i, BE_dec_local_TP_STR(self, (*AM_EXPR_tp_TP[local15->header.tag+AM_EXPR_tp_TP_offset])(local15)));
  6846.       local16 = ARRAYSTR_aget_IN(res, i);
  6847.       local17 = STR_plus_STR_STR(local16, ((STR) &name_4312));
  6848.       local18 = STR_plus_STR_STR(local17, subexpr_4306);
  6849.       BE_ndefer_STR(self, STR_plus_CHAR_STR(local18, ';'));
  6850.      }
  6851.     } else
  6852.     switch (e_4305->header.tag) {
  6853.      case AM_LOCAL_EXPR_tag: break;
  6854.      default: ;
  6855.       if ((i<last_4299)) {
  6856.        subexpr = ARRAYSTR_aget_IN(res, i);
  6857.        local19 = e_4305;
  6858.        ARRAYSTR_aset_IN_4289(res, i, BE_dec_local_TP_STR(self, (*AM_EXPR_tp_TP[local19->header.tag+AM_EXPR_tp_TP_offset])(local19)));
  6859.        local20 = ARRAYSTR_aget_IN(res, i);
  6860.        local21 = STR_plus_STR_STR(local20, ((STR) &name_4313));
  6861.        local22 = STR_plus_STR_STR(local21, subexpr);
  6862.        BE_ndefer_STR(self, STR_plus_CHAR_STR(local22, ';'));
  6863.       }
  6864.     }
  6865.    }
  6866.   }
  6867.  }
  6868.  after_loop_4309: ;
  6869.  return res;
  6870. }
  6871.  
  6872.  
  6873. INT AM_ROUT_CALL_EXP_4314(AM_ROUT_CALL_EXPR self) {
  6874.  INT noname4315 = ((INT) 0);
  6875.   return self->asize;
  6876.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  6877.  exit(16);
  6878. }
  6879.  
  6880.  
  6881. AM_EXPR AM_ROUT_CALL_EXP_4316(AM_ROUT_CALL_EXPR self, INT ind_4317) {
  6882.  AM_EXPR noname4318;
  6883.  BOOL local0;
  6884.  INT local1;
  6885.  INT local2;
  6886.  if ((!((self==((AM_ROUT_CALL_EXPR) NULL))))) {
  6887.   local1 = 0;
  6888.   local2 = (self->asize);
  6889.   local0 = INT_is_bet_INT_I(ind_4317, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  6890.  } else {
  6891.   local0 = FALSE;
  6892.  }
  6893.  if (!(local0)) {
  6894.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  6895.   exit(16);
  6896.  }
  6897.  if (ind_4317<0||ind_4317>=self->asize) {
  6898.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  6899.   exit(16);
  6900.  }
  6901.  return self->arr_part[ind_4317];
  6902. }
  6903.  
  6904.  
  6905. STR BE_dec_local_com(BE self, TP t_4319, STR com_4320) {
  6906.  STR noname4321;
  6907.  STR res;
  6908.  res = BE_dec_local_TP_STR(self, t_4319);
  6909.  BE_comment_FILE_STR(self, self->code_c, com_4320);
  6910.  return res;
  6911. }
  6912.  
  6913.  
  6914. STR BE_sizeof_boxed_(BE self, TP tp_4322) {
  6915.  STR noname4323;
  6916.  TP local0;
  6917.  STR local1;
  6918.  STR local2;
  6919.  local0 = tp_4322;
  6920.  if (!((*TP_is_value_BOOL[local0->header.tag+TP_is_value_BOOL_offset])(local0))) {
  6921.   fprintf(stderr,"Violation of precondition ./be.sa:691:16\n");
  6922.   exit(16);
  6923.  }
  6924.  local1 = ((STR) &sizeofstruct);
  6925.  local2 = STR_plus_STR_STR(local1, BE_mangle_OB_STR(self, ((OB) tp_4322)));
  6926.  return STR_plus_STR_STR(local2, ((STR) &S_boxed_struct_4324));
  6927. }
  6928.  
  6929.  
  6930. INT FMAPTPINT_key_ha(FMAPTPINT self, TP k) {
  6931.  INT noname4325 = ((INT) 0);
  6932.  HASH local0;
  6933.  if (k==NULL) {
  6934.  } else
  6935.  switch (k->header.tag) {
  6936.   case TUPIMPL_INCLUDEI_tag:
  6937.   case TUPAM_BND_CREATE_tag:
  6938.   case TUPIFCIFC_tag:
  6939.   case TUPSTRITER_INLINE_tag:
  6940.   case TUPAM_GLOBAL_EXP_tag:
  6941.   case FSTR_tag:
  6942.   case TUPSIGSIG_tag:
  6943.   case CHAR_tag:
  6944.   case INT_tag:
  6945.   case TUPTP_CLASSFSETTP_tag:
  6946.   case TUPSTRSTR_tag:
  6947.   case TUPINTINTINT_tag:
  6948.   case STR_tag:
  6949.   case TUPSFILE_IDSFILE_ID_tag:
  6950.   case TUPAM_ITER_CALL__tag:
  6951.   case TUPTR_EXPRTR_EXPR_tag:
  6952.   case TUPTPFMAPIDENTAM_tag:
  6953.   case TUPARRAYTPTP_tag:
  6954.   case TUPAM_CONSTAM_CONST_tag:
  6955.   case TUPSTRTUPSTRSTR_tag:
  6956.   case TUPTPIMPL_tag:
  6957.   case TUPSIGAM_ROUT_DEF_tag:
  6958.   case TUPARRAYTPARRAYB_tag:
  6959.   case TUPIDENTAM_GLOBA_tag:
  6960.   case TUPAM_BND_ITER_C_tag:
  6961.   case TUPAM_LOCAL_EXPR_tag:
  6962.   case TUPSTRFSETSTR_tag:
  6963.   case TUPAM_ROUT_DEFAM_tag:
  6964.   case TUPTPTP_tag:
  6965.   case IDENT_tag:
  6966.   case TUPTPINT_tag:
  6967.   case TUPIDENTINT_tag:
  6968.   case TUPIDENTIDENT_tag:
  6969.   case TUPTP_CLASSFSETT_tag:
  6970.   case TUPCHARCHAR_tag:
  6971.   case TUPIDENTTP_tag:
  6972.   case TUPIDENTARRAYTP_tag:
  6973.   case TUPAM_EXPRAM_EXPR_tag:
  6974.   case TUPTPIFC_tag:
  6975.   case TUPTP_CLASSTP_CLASS_tag:
  6976.   case TUPAM_STMTAM_STMT_tag:
  6977.   case TUPINTINT_tag:
  6978.   case TUPOBSTR_tag:
  6979.   case TUPFLISTAM_CONST_tag:
  6980.   case TUPAM_EXPRTP_tag:
  6981.   case TUPBOOLINTIINTBOOL_tag:
  6982.    local0 = ((HASH) k);
  6983.    return (*HASH_hash_INT[local0->header.tag+HASH_hash_INT_offset])(local0); break;
  6984.   default: ;
  6985.  }
  6986.  return (c_SYS_id_OB_INT(((SYS) NULL),((OB) k)));
  6987.  if (!FMAPTPINT_invari(self)) {
  6988.   fprintf(stderr,"Failed invariant FMAP{$TP,INT}::invariant:BOOL ../Library/fmap.sa:64:11\n");
  6989.   exit(16);
  6990.  }
  6991. }
  6992.  
  6993.  
  6994. INT FMAPTPINT_asize_INT(FMAPTPINT self) {
  6995.  INT noname4326 = ((INT) 0);
  6996.   return self->asize;
  6997.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  6998.  exit(16);
  6999. }
  7000.  
  7001.  
  7002. TUPTPINT FMAPTPINT_aget_I(FMAPTPINT self, INT ind_4327) {
  7003.  TUPTPINT noname4328 = TUPTPINT_zero;
  7004.  BOOL local0;
  7005.  INT local1;
  7006.  INT local2;
  7007.  if ((!((self==((FMAPTPINT) NULL))))) {
  7008.   local1 = 0;
  7009.   local2 = (self->asize);
  7010.   local0 = INT_is_bet_INT_I(ind_4327, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  7011.  } else {
  7012.   local0 = FALSE;
  7013.  }
  7014.  if (!(local0)) {
  7015.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  7016.   exit(16);
  7017.  }
  7018.  if (ind_4327<0||ind_4327>=self->asize) {
  7019.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  7020.   exit(16);
  7021.  }
  7022.  return self->arr_part[ind_4327];
  7023. }
  7024.  
  7025.  
  7026. BOOL FMAPTPINT_key_eq(FMAPTPINT self, TP k1, TP k2) {
  7027.  BOOL noname4329 = ((BOOL) 0);
  7028.  if (k1==NULL) {
  7029.  } else
  7030.  switch (k1->header.tag) {
  7031.   default: ;
  7032.  }
  7033.  return c_SYS_ob_eq_OB_OB_BOOL(((OB) k1),((OB) k2));
  7034.  if (!FMAPTPINT_invari(self)) {
  7035.   fprintf(stderr,"Failed invariant FMAP{$TP,INT}::invariant:BOOL ../Library/fmap.sa:44:9\n");
  7036.   exit(16);
  7037.  }
  7038. }
  7039.  
  7040.  
  7041. TP FMAPTPINT_key_nil_TP(FMAPTPINT self) {
  7042.  TP noname4330;
  7043.  TP k = ((TP) NULL);
  7044.  if (k==NULL) {
  7045.  } else
  7046.  switch (k->header.tag) {
  7047.   default: ;
  7048.  }
  7049.  return ((TP) NULL);
  7050.  if (!FMAPTPINT_invari(self)) {
  7051.   fprintf(stderr,"Failed invariant FMAP{$TP,INT}::invariant:BOOL ../Library/fmap.sa:54:10\n");
  7052.   exit(16);
  7053.  }
  7054. }
  7055.  
  7056.  
  7057. BOOL FMAPTPINT_test_T(FMAPTPINT self, TP k) {
  7058.  BOOL noname4331 = ((BOOL) 0);
  7059.  INT h = ((INT) 0);
  7060.  TP tk;
  7061.  TP tk_4332;
  7062.  INT local0;
  7063.  INT local1;
  7064.  INT local2;
  7065.  INT local3;
  7066.  if ((self==((FMAPTPINT) NULL))) {
  7067.   return FALSE;
  7068.  }
  7069.  local0 = FMAPTPINT_key_ha(self, k);
  7070.  local1 = (self->asize);
  7071.  h = (local0&(c_INT_minus_INT_INT_chk(local1,2)));
  7072.  while (1) {
  7073.   tk = (TUPTPINT_blob=FMAPTPINT_aget_I(self, h)).t1;
  7074.   if (FMAPTPINT_key_eq(self, tk, k)) {
  7075.    return TRUE;
  7076.   }
  7077.   else {
  7078.    if (FMAPTPINT_key_eq(self, tk, FMAPTPINT_key_nil_TP(self))) {
  7079.     goto after_loop;
  7080.    }
  7081.   }
  7082.   h = (c_INT_plus_INT_INT_chk(h,1));
  7083.  }
  7084.  after_loop: ;
  7085.  local2 = (self->asize);
  7086.  if ((h==(c_INT_minus_INT_INT_chk(local2,1)))) {
  7087.   h = 0;
  7088.   while (1) {
  7089.    tk_4332 = (TUPTPINT_blob=FMAPTPINT_aget_I(self, h)).t1;
  7090.    if (FMAPTPINT_key_eq(self, tk_4332, k)) {
  7091.     return TRUE;
  7092.    }
  7093.    else {
  7094.     if (FMAPTPINT_key_eq(self, tk_4332, FMAPTPINT_key_nil_TP(self))) {
  7095.      goto after_loop_4334;
  7096.     }
  7097.    }
  7098.    h = (c_INT_plus_INT_INT_chk(h,1));
  7099.   }
  7100.   after_loop_4334: ;
  7101.   local3 = (self->asize);
  7102.   if (!((h!=(c_INT_minus_INT_INT_chk(local3,1))))) {
  7103.    fprintf(stderr,"Violation of assertion ../Library/fmap.sa:133:15\n");
  7104.    exit(16);
  7105.   }
  7106.  }
  7107.  return FALSE;
  7108.  if (!FMAPTPINT_invari(self)) {
  7109.   fprintf(stderr,"Failed invariant FMAP{$TP,INT}::invariant:BOOL ../Library/fmap.sa:119:7\n");
  7110.   exit(16);
  7111.  }
  7112. }
  7113.  
  7114.  
  7115. TUPTPINT TUPTPINT_t1_TP_T(TUPTPINT self, TP t1_4336) {
  7116.  TUPTPINT local0;
  7117.  local0 = self;
  7118.  local0.t1 = t1_4336;
  7119.  return local0;
  7120. }
  7121.  
  7122.  
  7123. TUPTPINT TUPTPINT_t2_INT_(TUPTPINT self, INT t2_4337) {
  7124.  TUPTPINT local0;
  7125.  local0 = self;
  7126.  local0.t2 = t2_4337;
  7127.  return local0;
  7128. }
  7129.  
  7130.  
  7131. TUPTPINT TUPTPINT_create_(TUPTPINT self, TP at1, INT at2) {
  7132.  TUPTPINT noname4338 = TUPTPINT_zero;
  7133.  TUPTPINT local0;
  7134.  local0 = TUPTPINT_t1_TP_T(self, at1);
  7135.  return TUPTPINT_t2_INT_(local0, at2);
  7136. }
  7137.  
  7138.  
  7139. FMAPTPINT FMAPTPINT_alloca(FMAPTPINT self, INT n_4339) {
  7140.  FMAPTPINT noname4340;
  7141.  FMAPTPINT r_4341;
  7142.  FMAPTPINT noname4342;
  7143.  FMAPTPINT local0;
  7144.  TUPTPINT local1;
  7145.  TP local2;
  7146.  local0 = ((FMAPTPINT) sbi_arr_alloc(sizeof(struct FMAPTPINT_struct), FMAPTPINT_tag, sizeof(TUPTPINT) , n_4339));
  7147.  local0->asize = n_4339;
  7148.  r_4341 = local0;
  7149.  if ((!((FMAPTPINT_key_nil_TP(self)==((TP) NULL))))) {
  7150.   {
  7151.    struct FMAPTPINT_aset_T_frame_struct temp4343_0;
  7152.    FMAPTPINT_aset_T_frame 
  7153.    noname4344 = &temp4343_0;
  7154.    noname4344->state = 0;
  7155.    while (1) {
  7156.     if (noname4344->state == 0) {
  7157.      noname4342 = r_4341;
  7158.      noname4344->arg0 = noname4342;
  7159.     }
  7160.     local1 = TUPTPINT_zero;
  7161.     local2 = FMAPTPINT_key_nil_TP(self);
  7162.     noname4344->arg1 = TUPTPINT_create_(local1, local2, ((INT) 0));
  7163.     FMAPTPINT_aset_T(noname4344);
  7164.     if (noname4344->state == -1) goto after_loop;
  7165.     0 /* No return value from iter call */;
  7166.    }
  7167.   }
  7168.   after_loop: ;
  7169.  }
  7170.  return r_4341;
  7171. }
  7172.  
  7173.  
  7174. FMAPTPINT FMAPTPINT_insert(FMAPTPINT self, TUPTPINT p) {
  7175.  FMAPTPINT noname4345;
  7176.  return FMAPTPINT_insert_4346(self, p.t1, p.t2);
  7177.  if (!FMAPTPINT_invari(self)) {
  7178.   fprintf(stderr,"Failed invariant FMAP{$TP,INT}::invariant:BOOL ../Library/fmap.sa:202:14\n");
  7179.   exit(16);
  7180.  }
  7181. }
  7182.  
  7183.  
  7184. FMAPTPINT FMAPTPINT_double(FMAPTPINT self) {
  7185.  FMAPTPINT noname4347;
  7186.  INT ns = ((INT) 0);
  7187.  FMAPTPINT r_4348;
  7188.  FMAPTPINT noname4349;
  7189.  INT local0;
  7190.  INT local1;
  7191.  INT local2;
  7192.  TUPTPINT local3;
  7193.  if (!((!((self==((FMAPTPINT) NULL)))))) {
  7194.   fprintf(stderr,"Violation of precondition ../Library/fmap.sa:172:22\n");
  7195.   exit(16);
  7196.  }
  7197.  local0 = (self->asize);
  7198.  local1 = (c_INT_minus_INT_INT_chk(local0,1));
  7199.  local2 = (c_INT_times_INT_INT_chk(local1,2));
  7200.  ns = (c_INT_plus_INT_INT_chk(local2,1));
  7201.  r_4348 = FMAPTPINT_alloca(self, ns);
  7202.  {
  7203.   struct FMAPTPINT_pairs__frame_struct temp4350_0;
  7204.   FMAPTPINT_pairs__frame 
  7205.   noname4351 = &temp4350_0;
  7206.   noname4351->state = 0;
  7207.   while (1) {
  7208.    if (noname4351->state == 0) {
  7209.     noname4349 = self;
  7210.     noname4351->arg0 = noname4349;
  7211.    }
  7212.    local3 = FMAPTPINT_pairs_(noname4351);
  7213.    if (noname4351->state == -1) goto after_loop;
  7214.    r_4348 = FMAPTPINT_insert(r_4348, local3);
  7215.   }
  7216.  }
  7217.  after_loop: ;
  7218.  return r_4348;
  7219. }
  7220.  
  7221.  
  7222. void FMAPTPINT_aset_I(FMAPTPINT self, INT ind_4352, TUPTPINT val_4353) {
  7223.  BOOL local0;
  7224.  INT local1;
  7225.  INT local2;
  7226.  if ((!((self==((FMAPTPINT) NULL))))) {
  7227.   local1 = 0;
  7228.   local2 = (self->asize);
  7229.   local0 = INT_is_bet_INT_I(ind_4352, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  7230.  } else {
  7231.   local0 = FALSE;
  7232.  }
  7233.  if (!(local0)) {
  7234.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  7235.   exit(16);
  7236.  }
  7237.  if (ind_4352<0||ind_4352>=self->asize) {
  7238.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  7239.   exit(16);
  7240.  }
  7241.  self->arr_part[ind_4352] = val_4353;
  7242. }
  7243.  
  7244.  
  7245. FMAPTPINT FMAPTPINT_insert_4346(FMAPTPINT self, TP k, INT t_4354) {
  7246.  FMAPTPINT noname4355;
  7247.  FMAPTPINT r_4356;
  7248.  INT h = ((INT) 0);
  7249.  INT asm_4357 = ((INT) 0);
  7250.  TP tk;
  7251.  TP tk_4358;
  7252.  INT local0;
  7253.  INT local1;
  7254.  INT local2;
  7255.  INT local3;
  7256.  INT local4;
  7257.  r_4356 = self;
  7258.  if ((r_4356==((FMAPTPINT) NULL))) {
  7259.   r_4356 = FMAPTPINT_alloca(self, 5);
  7260.  }
  7261.  else {
  7262.   local0 = (c_INT_plus_INT_INT_chk(self->hsize,1));
  7263.   local1 = (c_INT_times_INT_INT_chk(local0,2));
  7264.   if ((local1>(self->asize))) {
  7265.    r_4356 = FMAPTPINT_double(self);
  7266.   }
  7267.  }
  7268.  local2 = FMAPTPINT_key_ha(r_4356, k);
  7269.  local3 = (r_4356->asize);
  7270.  h = (local2&(c_INT_minus_INT_INT_chk(local3,2)));
  7271.  local4 = (r_4356->asize);
  7272.  asm_4357 = (c_INT_minus_INT_INT_chk(local4,1));
  7273.  while (1) {
  7274.   tk = (TUPTPINT_blob=FMAPTPINT_aget_I(r_4356, h)).t1;
  7275.   if (FMAPTPINT_key_eq(self, tk, FMAPTPINT_key_nil_TP(self))) {
  7276.    goto after_loop;
  7277.   }
  7278.   if (FMAPTPINT_key_eq(self, tk, k)) {
  7279.    FMAPTPINT_aset_I(r_4356, h, TUPTPINT_create_(TUPTPINT_zero, k, t_4354));
  7280.    return r_4356;
  7281.   }
  7282.   h = (c_INT_plus_INT_INT_chk(h,1));
  7283.  }
  7284.  after_loop: ;
  7285.  if ((h==asm_4357)) {
  7286.   h = 0;
  7287.   while (1) {
  7288.    tk_4358 = (TUPTPINT_blob=FMAPTPINT_aget_I(r_4356, h)).t1;
  7289.    if (FMAPTPINT_key_eq(self, tk_4358, FMAPTPINT_key_nil_TP(self))) {
  7290.     goto after_loop_4360;
  7291.    }
  7292.    if (FMAPTPINT_key_eq(self, tk_4358, k)) {
  7293.     FMAPTPINT_aset_I(r_4356, h, TUPTPINT_create_(TUPTPINT_zero, k, t_4354));
  7294.     return r_4356;
  7295.    }
  7296.    h = (c_INT_plus_INT_INT_chk(h,1));
  7297.   }
  7298.   after_loop_4360: ;
  7299.   if (!((h!=asm_4357))) {
  7300.    fprintf(stderr,"Violation of assertion ../Library/fmap.sa:199:15\n");
  7301.    exit(16);
  7302.   }
  7303.  }
  7304.  FMAPTPINT_aset_I(r_4356, h, TUPTPINT_create_(TUPTPINT_zero, k, t_4354));
  7305.  r_4356->hsize = (c_INT_plus_INT_INT_chk(r_4356->hsize,1));
  7306.  return r_4356;
  7307.  if (!FMAPTPINT_invari(self)) {
  7308.   fprintf(stderr,"Failed invariant FMAP{$TP,INT}::invariant:BOOL ../Library/fmap.sa:180:9\n");
  7309.   exit(16);
  7310.  }
  7311. }
  7312.  
  7313.  
  7314. INT FMAPTPINT_get_TP_INT(FMAPTPINT self, TP k) {
  7315.  INT noname4362 = ((INT) 0);
  7316.  INT h = ((INT) 0);
  7317.  TP tk;
  7318.  TP tk_4363;
  7319.  INT local0;
  7320.  INT local1;
  7321.  INT local2;
  7322.  INT local3;
  7323.  if ((self==((FMAPTPINT) NULL))) {
  7324.   return ((INT) 0);
  7325.  }
  7326.  local0 = FMAPTPINT_key_ha(self, k);
  7327.  local1 = (self->asize);
  7328.  h = (local0&(c_INT_minus_INT_INT_chk(local1,2)));
  7329.  while (1) {
  7330.   tk = (TUPTPINT_blob=FMAPTPINT_aget_I(self, h)).t1;
  7331.   if (FMAPTPINT_key_eq(self, tk, k)) {
  7332.    return (TUPTPINT_blob=FMAPTPINT_aget_I(self, h)).t2;
  7333.   }
  7334.   else {
  7335.    if (FMAPTPINT_key_eq(self, tk, FMAPTPINT_key_nil_TP(self))) {
  7336.     goto after_loop;
  7337.    }
  7338.   }
  7339.   h = (c_INT_plus_INT_INT_chk(h,1));
  7340.  }
  7341.  after_loop: ;
  7342.  local2 = (self->asize);
  7343.  if ((h==(c_INT_minus_INT_INT_chk(local2,1)))) {
  7344.   h = 0;
  7345.   while (1) {
  7346.    tk_4363 = (TUPTPINT_blob=FMAPTPINT_aget_I(self, h)).t1;
  7347.    if (FMAPTPINT_key_eq(self, tk_4363, k)) {
  7348.     return (TUPTPINT_blob=FMAPTPINT_aget_I(self, h)).t2;
  7349.    }
  7350.    else {
  7351.     if (FMAPTPINT_key_eq(self, tk_4363, FMAPTPINT_key_nil_TP(self))) {
  7352.      goto after_loop_4365;
  7353.     }
  7354.    }
  7355.    h = (c_INT_plus_INT_INT_chk(h,1));
  7356.   }
  7357.   after_loop_4365: ;
  7358.   local3 = (self->asize);
  7359.   if (!((h!=(c_INT_minus_INT_INT_chk(local3,1))))) {
  7360.    fprintf(stderr,"Violation of assertion ../Library/fmap.sa:150:15\n");
  7361.    exit(16);
  7362.   }
  7363.  }
  7364.  return ((INT) 0);
  7365.  if (!FMAPTPINT_invari(self)) {
  7366.   fprintf(stderr,"Failed invariant FMAP{$TP,INT}::invariant:BOOL ../Library/fmap.sa:136:6\n");
  7367.   exit(16);
  7368.  }
  7369. }
  7370.  
  7371.  
  7372. INT BE_num_tag_for_T(BE self, TP tp_4367) {
  7373.  INT noname4368 = ((INT) 0);
  7374.  INT tag_4369 = ((INT) 0);
  7375.  TP local0;
  7376.  if ((!(FMAPTPINT_test_T(self->tags, tp_4367)))) {
  7377.   local0 = tp_4367;
  7378.   if ((*TP_is_value_BOOL[local0->header.tag+TP_is_value_BOOL_offset])(local0)) {
  7379.    tag_4369 = INT_negate_INT(self->neg_tag_count);
  7380.    self->neg_tag_count = (c_INT_plus_INT_INT_chk(self->neg_tag_count,1));
  7381.   }
  7382.   else {
  7383.    tag_4369 = self->pos_tag_count;
  7384.    self->pos_tag_count = (c_INT_plus_INT_INT_chk(self->pos_tag_count,1));
  7385.   }
  7386.   self->tags = FMAPTPINT_insert_4346(self->tags, tp_4367, tag_4369);
  7387.  }
  7388.  else {
  7389.   tag_4369 = FMAPTPINT_get_TP_INT(self->tags, tp_4367);
  7390.  }
  7391.  return tag_4369;
  7392. }
  7393.  
  7394.  
  7395. STR BE_tag_for_TP_STR(BE self, TP tp_4370) {
  7396.  STR noname4371;
  7397.  INT dummy_4372 = ((INT) 0);
  7398.  STR res;
  7399.  STR local0;
  7400.  dummy_4372 = BE_num_tag_for_T(self, tp_4370);
  7401.  local0 = BE_mangle_OB_STR(self, ((OB) tp_4370));
  7402.  res = STR_plus_STR_STR(local0, ((STR) &S_tag));
  7403.  BE_forbid_STR(self, res);
  7404.  return res;
  7405. }
  7406.  
  7407.  
  7408. STR BE_sizeof_TP_STR(BE self, TP tp_4373) {
  7409.  STR noname4374;
  7410.  TP local0;
  7411.  STR local1;
  7412.  STR local2;
  7413.  STR local3;
  7414.  STR local4;
  7415.  local0 = tp_4373;
  7416.  if ((*TP_is_value_BOOL[local0->header.tag+TP_is_value_BOOL_offset])(local0)) {
  7417.   local1 = ((STR) &sizeof_4375);
  7418.   local2 = STR_plus_STR_STR(local1, BE_mangle_OB_STR(self, ((OB) tp_4373)));
  7419.   return STR_plus_STR_STR(local2, ((STR) &name_4376));
  7420.  }
  7421.  local3 = ((STR) &sizeofstruct_4377);
  7422.  local4 = STR_plus_STR_STR(local3, BE_mangle_OB_STR(self, ((OB) tp_4373)));
  7423.  return STR_plus_STR_STR(local4, ((STR) &S_struct_4378));
  7424. }
  7425.  
  7426.  
  7427. STR BE_allocate_TP_STR(BE self, TP t_4379) {
  7428.  STR noname4380;
  7429.  STR call_string = ((STR) NULL);
  7430.  TP local0;
  7431.  TP local1;
  7432.  STR local2;
  7433.  STR local3;
  7434.  STR local4;
  7435.  STR local5;
  7436.  STR local6;
  7437.  STR local7;
  7438.  STR local8;
  7439.  STR local9;
  7440.  STR local10;
  7441.  STR local11;
  7442.  STR local12;
  7443.  STR local13;
  7444.  STR local14;
  7445.  STR local15;
  7446.  local0 = t_4379;
  7447.  if ((*TP_is_atomic_BOOL[local0->header.tag+TP_is_atomic_BOOL_offset])(local0)) {
  7448.   call_string = ((STR) &sbi_alloc_atomic_4381);
  7449.  }
  7450.  else {
  7451.   call_string = ((STR) &sbi_alloc_4382);
  7452.  }
  7453.  local1 = t_4379;
  7454.  if ((*TP_is_value_BOOL[local1->header.tag+TP_is_value_BOOL_offset])(local1)) {
  7455.   local2 = ((STR) &name_4383);
  7456.   local3 = STR_plus_STR_STR(local2, BE_mangle_OB_STR(self, ((OB) t_4379)));
  7457.   local4 = STR_plus_STR_STR(local3, ((STR) &S_boxed_4384));
  7458.   local5 = STR_plus_STR_STR(local4, call_string);
  7459.   local6 = STR_plus_STR_STR(local5, BE_sizeof_boxed_(self, t_4379));
  7460.   local7 = STR_plus_STR_STR(local6, ((STR) &name_4385));
  7461.   local8 = STR_plus_STR_STR(local7, BE_tag_for_TP_STR(self, t_4379));
  7462.   return STR_plus_STR_STR(local8, ((STR) &name_4386));
  7463.  }
  7464.  local9 = ((STR) &name_4387);
  7465.  local10 = STR_plus_STR_STR(local9, BE_mangle_OB_STR(self, ((OB) t_4379)));
  7466.  local11 = STR_plus_STR_STR(local10, ((STR) &name_4388));
  7467.  local12 = STR_plus_STR_STR(local11, call_string);
  7468.  local13 = STR_plus_STR_STR(local12, BE_sizeof_TP_STR(self, t_4379));
  7469.  local14 = STR_plus_STR_STR(local13, ((STR) &name_4389));
  7470.  local15 = STR_plus_STR_STR(local14, BE_tag_for_TP_STR(self, t_4379));
  7471.  return STR_plus_STR_STR(local15, ((STR) &name_4390));
  7472. }
  7473.  
  7474.  
  7475. STR BE_cast_TP_TP_ST(BE self, TP dest_tp, TP src_tp, STR expr_4391) {
  7476.  STR noname4392;
  7477.  STR res = ((STR) NULL);
  7478.  BOOL local0;
  7479.  BOOL local1;
  7480.  BOOL local2;
  7481.  TP local3;
  7482.  BOOL local4;
  7483.  TP local5;
  7484.  TP local6;
  7485.  TP local7;
  7486.  TP local8;
  7487.  BOOL local9;
  7488.  TP local10;
  7489.  TP local11;
  7490.  STR local12;
  7491.  TP local13;
  7492.  STR local14;
  7493.  STR local15;
  7494.  STR local16;
  7495.  STR local17;
  7496.  STR local18;
  7497.  STR local19;
  7498.  STR local20;
  7499.  STR local21;
  7500.  STR local22;
  7501.  STR local23;
  7502.  BOOL local24;
  7503.  TP local25;
  7504.  TP local26;
  7505.  STR local27;
  7506.  TP local28;
  7507.  STR local29;
  7508.  STR local30;
  7509.  STR local31;
  7510.  STR local32;
  7511.  TP local33;
  7512.  STR local34;
  7513.  STR local35;
  7514.  STR local36;
  7515.  STR local37;
  7516.  local3 = dest_tp;
  7517.  if ((*TP_is_eq_TP_BOOL[local3->header.tag+TP_is_eq_TP_BOOL_offset])(local3, src_tp)) {
  7518.   local2 = TRUE;
  7519.  } else {
  7520.   local5 = dest_tp;
  7521.   if ((*TP_is_abstract_BOOL[local5->header.tag+TP_is_abstract_BOOL_offset])(local5)) {
  7522.    local6 = src_tp;
  7523.    local4 = (*TP_is_abstract_BOOL[local6->header.tag+TP_is_abstract_BOOL_offset])(local6);
  7524.   } else {
  7525.    local4 = FALSE;
  7526.   }
  7527.   local2 = local4;
  7528.  }
  7529.  if (local2) {
  7530.   local1 = TRUE;
  7531.  } else {
  7532.   local7 = dest_tp;
  7533.   local1 = (*TP_is_subtype_TP[local7->header.tag+TP_is_subtype_TP_offset])(local7, src_tp);
  7534.  }
  7535.  if (local1) {
  7536.   local0 = TRUE;
  7537.  } else {
  7538.   local8 = src_tp;
  7539.   local0 = (*TP_is_subtype_TP[local8->header.tag+TP_is_subtype_TP_offset])(local8, dest_tp);
  7540.  }
  7541.  if (!(local0)) {
  7542.   fprintf(stderr,"Violation of precondition ./be.sa:658:8\n");
  7543.   exit(16);
  7544.  }
  7545.  local10 = dest_tp;
  7546.  if ((*TP_is_abstract_BOOL[local10->header.tag+TP_is_abstract_BOOL_offset])(local10)) {
  7547.   local11 = src_tp;
  7548.   local9 = (*TP_is_value_BOOL[local11->header.tag+TP_is_value_BOOL_offset])(local11);
  7549.  } else {
  7550.   local9 = FALSE;
  7551.  }
  7552.  if (local9) {
  7553.   local12 = ((STR) &localforboxed);
  7554.   local13 = src_tp;
  7555.   res = BE_dec_local_com(self, dest_tp, STR_plus_STR_STR(local12, (*TP_str_STR[local13->header.tag+TP_str_STR_offset])(local13)));
  7556.   local14 = STR_plus_STR_STR(res, ((STR) &name_4393));
  7557.   local15 = STR_plus_STR_STR(local14, BE_mangle_OB_STR(self, ((OB) dest_tp)));
  7558.   local16 = STR_plus_STR_STR(local15, ((STR) &name_4394));
  7559.   local17 = STR_plus_STR_STR(local16, BE_allocate_TP_STR(self, src_tp));
  7560.   BE_ndefer_STR(self, STR_plus_STR_STR(local17, ((STR) &name_4395)));
  7561.   local18 = ((STR) &name_4396);
  7562.   local19 = STR_plus_STR_STR(local18, BE_mangle_OB_STR(self, ((OB) src_tp)));
  7563.   local20 = STR_plus_STR_STR(local19, ((STR) &S_boxed_4397));
  7564.   local21 = STR_plus_STR_STR(local20, res);
  7565.   local22 = STR_plus_STR_STR(local21, ((STR) &value_part_4398));
  7566.   local23 = STR_plus_STR_STR(local22, expr_4391);
  7567.   BE_ndefer_STR(self, STR_plus_STR_STR(local23, ((STR) &name_4399)));
  7568.  }
  7569.  else {
  7570.   local25 = dest_tp;
  7571.   if ((*TP_is_value_BOOL[local25->header.tag+TP_is_value_BOOL_offset])(local25)) {
  7572.    local26 = src_tp;
  7573.    local24 = (*TP_is_abstract_BOOL[local26->header.tag+TP_is_abstract_BOOL_offset])(local26);
  7574.   } else {
  7575.    local24 = FALSE;
  7576.   }
  7577.   if (local24) {
  7578.    local27 = ((STR) &localforunboxed);
  7579.    local28 = src_tp;
  7580.    res = BE_dec_local_com(self, dest_tp, STR_plus_STR_STR(local27, (*TP_str_STR[local28->header.tag+TP_str_STR_offset])(local28)));
  7581.    local29 = STR_plus_STR_STR(res, ((STR) &name_4400));
  7582.    local30 = STR_plus_STR_STR(local29, BE_mangle_OB_STR(self, ((OB) dest_tp)));
  7583.    local31 = STR_plus_STR_STR(local30, ((STR) &S_boxed_4401));
  7584.    local32 = STR_plus_STR_STR(local31, expr_4391);
  7585.    BE_ndefer_STR(self, STR_plus_STR_STR(local32, ((STR) &value_part_4402)));
  7586.   }
  7587.   else {
  7588.    local33 = dest_tp;
  7589.    if ((*TP_is_neq_TP_BOOL[local33->header.tag+TP_is_neq_TP_BOOL_offset])(local33, src_tp)) {
  7590.     local34 = ((STR) &name_4403);
  7591.     local35 = STR_plus_STR_STR(local34, BE_mangle_OB_STR(self, ((OB) dest_tp)));
  7592.     local36 = STR_plus_STR_STR(local35, ((STR) &name_4404));
  7593.     local37 = STR_plus_STR_STR(local36, expr_4391);
  7594.     res = STR_plus_STR_STR(local37, ((STR) &name_4405));
  7595.    }
  7596.    else {
  7597.     res = expr_4391;
  7598.    }
  7599.   }
  7600.  }
  7601.  return res;
  7602. }
  7603.  
  7604.  
  7605. ARRAYSTR BE_emit_and_cast(BE self, AM_ROUT_CALL_EXPR arce) {
  7606.  ARRAYSTR noname4406;
  7607.  ARRAYSTR arg_list;
  7608.  INT noname4407 = ((INT) 0);
  7609.  INT noname4408 = ((INT) 0);
  7610.  INT i = ((INT) 0);
  7611.  INT local0;
  7612.  TP local1;
  7613.  AM_EXPR local2;
  7614.  TP local3;
  7615.  INT local4;
  7616.  INT local5;
  7617.  INT local6;
  7618.  
  7619.  INT local7;
  7620.  ARRAYTP local8;
  7621.  TP local9;
  7622.  AM_EXPR local10;
  7623.  TP local11;
  7624.  arg_list = BE_emit_args_AM_(self, ((AM_CALL_EXPR) arce));
  7625.  local0 = 0;
  7626.  local1 = arce->fun->tp;
  7627.  local2 = AM_ROUT_CALL_EXP_4316(arce, 0);
  7628.  local3 = (*AM_EXPR_tp_TP[local2->header.tag+AM_EXPR_tp_TP_offset])(local2);
  7629.  ARRAYSTR_aset_IN_4289(arg_list, local0, BE_cast_TP_TP_ST(self, local1, local3, ARRAYSTR_aget_IN(arg_list, 0)));
  7630.  {
  7631.   BOOL noname4410 = TRUE;
  7632.   while (1) {
  7633.    if (noname4410) {
  7634.     noname4410 = FALSE;
  7635.     noname4407 = 1;
  7636.     local7 = ARRAYSTR_size_INT(arg_list);
  7637.     noname4408 = (c_INT_minus_INT_INT_chk(local7,1));
  7638.     local5 = noname4407;
  7639.     local6 = noname4408;
  7640.     local4 = local5;
  7641.    } else {
  7642.     local4++;
  7643.    }
  7644.    if (local4>local6) goto after_loop;
  7645.    i = local4;
  7646.    local8 = arce->fun->args_7;
  7647.    local9 = ARRAYTP_aget_INT_TP(local8, (c_INT_minus_INT_INT_chk(i,1)));
  7648.    local10 = AM_ROUT_CALL_EXP_4316(arce, i);
  7649.    local11 = (*AM_EXPR_tp_TP[local10->header.tag+AM_EXPR_tp_TP_offset])(local10);
  7650.    ARRAYSTR_aset_IN_4289(arg_list, i, BE_cast_TP_TP_ST(self, local9, local11, ARRAYSTR_aget_IN(arg_list, i)));
  7651.   }
  7652.  }
  7653.  after_loop: ;
  7654.  return arg_list;
  7655. }
  7656.  
  7657.  
  7658. TUPSTRSTR FMAPSTRTUPSTRSTR_4411(FMAPSTRTUPSTRSTR self, STR k) {
  7659.  TUPSTRSTR noname4412 = TUPSTRSTR_zero;
  7660.  INT h = ((INT) 0);
  7661.  STR tk;
  7662.  STR tk_4413;
  7663.  INT local0;
  7664.  INT local1;
  7665.  INT local2;
  7666.  INT local3;
  7667.  if ((self==((FMAPSTRTUPSTRSTR) NULL))) {
  7668.   return TUPSTRSTR_zero;
  7669.  }
  7670.  local0 = FMAPSTRTUPSTRSTR_1082(self, k);
  7671.  local1 = (self->asize);
  7672.  h = (local0&(c_INT_minus_INT_INT_chk(local1,2)));
  7673.  while (1) {
  7674.   tk = (TUPSTRTUPSTRSTR_blob=FMAPSTRTUPSTRSTR_1084(self, h)).t1;
  7675.   if (FMAPSTRTUPSTRSTR_1087(self, tk, k)) {
  7676.    return (TUPSTRTUPSTRSTR_blob=FMAPSTRTUPSTRSTR_1084(self, h)).t2;
  7677.   }
  7678.   else {
  7679.    if (FMAPSTRTUPSTRSTR_1087(self, tk, FMAPSTRTUPSTRSTR_1055(self))) {
  7680.     goto after_loop;
  7681.    }
  7682.   }
  7683.   h = (c_INT_plus_INT_INT_chk(h,1));
  7684.  }
  7685.  after_loop: ;
  7686.  local2 = (self->asize);
  7687.  if ((h==(c_INT_minus_INT_INT_chk(local2,1)))) {
  7688.   h = 0;
  7689.   while (1) {
  7690.    tk_4413 = (TUPSTRTUPSTRSTR_blob=FMAPSTRTUPSTRSTR_1084(self, h)).t1;
  7691.    if (FMAPSTRTUPSTRSTR_1087(self, tk_4413, k)) {
  7692.     return (TUPSTRTUPSTRSTR_blob=FMAPSTRTUPSTRSTR_1084(self, h)).t2;
  7693.    }
  7694.    else {
  7695.     if (FMAPSTRTUPSTRSTR_1087(self, tk_4413, FMAPSTRTUPSTRSTR_1055(self))) {
  7696.      goto after_loop_4415;
  7697.     }
  7698.    }
  7699.    h = (c_INT_plus_INT_INT_chk(h,1));
  7700.   }
  7701.   after_loop_4415: ;
  7702.   local3 = (self->asize);
  7703.   if (!((h!=(c_INT_minus_INT_INT_chk(local3,1))))) {
  7704.    fprintf(stderr,"Violation of assertion ../Library/fmap.sa:150:15\n");
  7705.    exit(16);
  7706.   }
  7707.  }
  7708.  return TUPSTRSTR_zero;
  7709.  if (!FMAPSTRTUPSTRSTR_1035(self)) {
  7710.   fprintf(stderr,"Failed invariant FMAP{STR,TUP{STR,STR}}::invariant:BOOL ../Library/fmap.sa:136:6\n");
  7711.   exit(16);
  7712.  }
  7713. }
  7714.  
  7715.  
  7716. void BE_runtime_error_STR(BE self, STR s_4417) {
  7717.  STR local0;
  7718.  local0 = STR_plus_STR_STR(((STR) &fprintfstderr_4418), s_4417);
  7719.  BE_ndefer_STR(self, STR_plus_STR_STR(local0, ((STR) &n_4419)));
  7720.  BE_ndefer_STR(self, ((STR) &exit16_4420));
  7721. }
  7722.  
  7723.  
  7724. STR BE_emit_call_SIG(BE self, SIG fun_4421, ARRAYSTR arg_list) {
  7725.  STR noname4422;
  7726.  STR res = ((STR) NULL);
  7727.  STR biname;
  7728.  BOOL process_as_builtin = ((BOOL) 0);
  7729.  CHAR noname4423 = ((CHAR) 0);
  7730.  STR carg1;
  7731.  STR carg2;
  7732.  INT i = ((INT) 0);
  7733.  CHAR noname4424 = ((CHAR) 0);
  7734.  STR self_ob;
  7735.  INT noname4425 = ((INT) 0);
  7736.  INT noname4426 = ((INT) 0);
  7737.  INT i_4427 = ((INT) 0);
  7738.  BOOL local0;
  7739.  BOOL local1;
  7740.  FMAPSTRTUPSTRSTR local2;
  7741.  FMAPSTRTUPSTRSTR local3;
  7742.  FMAPSTRTUPSTRSTR local4;
  7743.  CHAR local5;
  7744.  BOOL local6;
  7745.  BOOL local7;
  7746.  BOOL local8;
  7747.  TP local9;
  7748.  TP local10;
  7749.  TP local11;
  7750.  TP local12;
  7751.  STR local13;
  7752.  STR local14;
  7753.  STR local15;
  7754.  STR local16;
  7755.  STR local17;
  7756.  STR local18;
  7757.  CHAR local19;
  7758.  BOOL local20;
  7759.  STR local21;
  7760.  STR local22;
  7761.  STR local23;
  7762.  STR local24;
  7763.  TP local25;
  7764.  STR local26;
  7765.  STR local27;
  7766.  BOOL local28;
  7767.  STR local29;
  7768.  STR local30;
  7769.  STR local31;
  7770.  STR local32;
  7771.  STR local33;
  7772.  STR local34;
  7773.  STR local35;
  7774.  STR local36;
  7775.  STR local37;
  7776.  INT local38;
  7777.  INT local39;
  7778.  INT local40;
  7779.  
  7780.  INT local41;
  7781.  STR local42;
  7782.  biname = ((STR) NULL);
  7783.  process_as_builtin = fun_4421->is_builtin;
  7784.  if (process_as_builtin) {
  7785.   if (self->chk_arith) {
  7786.    local1 = TRUE;
  7787.   } else {
  7788.    local1 = self->chk_bounds;
  7789.   }
  7790.   local0 = local1;
  7791.  } else {
  7792.   local0 = FALSE;
  7793.  }
  7794.  if (local0) {
  7795.   local2 = self->built_in_routines;
  7796.   biname = (TUPSTRSTR_blob=FMAPSTRTUPSTRSTR_4411(local2, SIG_str_STR(fun_4421))).t2;
  7797.   if (STR_is_eq_STR_BOOL(biname, ((STR) &nomacro))) {
  7798.    process_as_builtin = FALSE;
  7799.   }
  7800.  }
  7801.  if (process_as_builtin) {
  7802.   if (self->chk_arith) {
  7803.    local3 = self->built_in_routines;
  7804.    biname = (TUPSTRSTR_blob=FMAPSTRTUPSTRSTR_4411(local3, SIG_str_STR(fun_4421))).t2;
  7805.   }
  7806.   else {
  7807.    local4 = self->built_in_routines;
  7808.    biname = (TUPSTRSTR_blob=FMAPSTRTUPSTRSTR_4411(local4, SIG_str_STR(fun_4421))).t1;
  7809.   }
  7810.   local5 = STR_aget_INT_CHAR(biname, 0);
  7811.   if ((local5=='@')) {
  7812.    noname4423 = STR_aget_INT_CHAR(biname, 1);
  7813.    switch (noname4423) {
  7814.     case '1':
  7815.      carg1 = ARRAYSTR_aget_IN(arg_list, 1);
  7816.      carg2 = ARRAYSTR_aget_IN(arg_list, 2);
  7817.      local9 = ARRAYTP_aget_INT_TP(fun_4421->args_7, 0);
  7818.      if ((*TP_is_value_BOOL[local9->header.tag+TP_is_value_BOOL_offset])(local9)) {
  7819.       local8 = TRUE;
  7820.      } else {
  7821.       local10 = ARRAYTP_aget_INT_TP(fun_4421->args_7, 1);
  7822.       local8 = (*TP_is_value_BOOL[local10->header.tag+TP_is_value_BOOL_offset])(local10);
  7823.      }
  7824.      if (local8) {
  7825.       local7 = TRUE;
  7826.      } else {
  7827.       local11 = ARRAYTP_aget_INT_TP(fun_4421->args_7, 0);
  7828.       local7 = (*TP_is_abstract_BOOL[local11->header.tag+TP_is_abstract_BOOL_offset])(local11);
  7829.      }
  7830.      if (local7) {
  7831.       local6 = TRUE;
  7832.      } else {
  7833.       local12 = ARRAYTP_aget_INT_TP(fun_4421->args_7, 1);
  7834.       local6 = (*TP_is_abstract_BOOL[local12->header.tag+TP_is_abstract_BOOL_offset])(local12);
  7835.      }
  7836.      if (local6) {
  7837.       local13 = STR_plus_STR_STR(((STR) &c_SYS_ob_eq_OB_O), carg1);
  7838.       local14 = STR_plus_CHAR_STR(local13, ',');
  7839.       local15 = STR_plus_STR_STR(local14, carg2);
  7840.       return STR_plus_CHAR_STR(local15, ')');
  7841.      }
  7842.      else {
  7843.       local16 = STR_plus_STR_STR(((STR) &name_4428), carg1);
  7844.       local17 = STR_plus_STR_STR(local16, ((STR) &name_4429));
  7845.       local18 = STR_plus_STR_STR(local17, carg2);
  7846.       return STR_plus_CHAR_STR(local18, ')');
  7847.      }
  7848.      break;
  7849.     default: ;
  7850.      BE_barf_STR(self, ((STR) &Dontrecognizefun));
  7851.    }
  7852.   }
  7853.   res = ((STR) &name_4430);
  7854.   i = 0;
  7855.   while (1) {
  7856.    if ((i>=STR_length_INT(biname))) {
  7857.     goto after_loop;
  7858.    }
  7859.    local19 = STR_aget_INT_CHAR(biname, i);
  7860.    if ((local19=='#')) {
  7861.     i = (c_INT_plus_INT_INT_chk(i,1));
  7862.     noname4424 = STR_aget_INT_CHAR(biname, i);
  7863.     switch (noname4424) {
  7864.      case '1':
  7865.       res = STR_plus_STR_STR(res, ARRAYSTR_aget_IN(arg_list, 0));
  7866.       break;
  7867.      case '2':
  7868.       res = STR_plus_STR_STR(res, ARRAYSTR_aget_IN(arg_list, 1));
  7869.       break;
  7870.      case '3':
  7871.       res = STR_plus_STR_STR(res, ARRAYSTR_aget_IN(arg_list, 2));
  7872.       break;
  7873.      case '4':
  7874.       res = STR_plus_STR_STR(res, ARRAYSTR_aget_IN(arg_list, 3));
  7875.       break;
  7876.      case '5':
  7877.       res = STR_plus_STR_STR(res, ARRAYSTR_aget_IN(arg_list, 4));
  7878.       break;
  7879.      default: ;
  7880.       BE_barf_STR(self, ((STR) &BadspecinMACROS));
  7881.     }
  7882.    }
  7883.    else {
  7884.     res = STR_plus_CHAR_STR(res, STR_aget_INT_CHAR(biname, i));
  7885.    }
  7886.    i = (c_INT_plus_INT_INT_chk(i,1));
  7887.   }
  7888.   after_loop: ;
  7889.   return STR_plus_CHAR_STR(res, ')');
  7890.  }
  7891.  else {
  7892.   if (BE_is_asize_SIG_BOOL(self, fun_4421)) {
  7893.    if (self->chk_void) {
  7894.     local20 = (!(self->prog->options_55->null_segfaults));
  7895.    } else {
  7896.     local20 = FALSE;
  7897.    }
  7898.    if (local20) {
  7899.     local21 = ((STR) &if_4432);
  7900.     local22 = STR_plus_STR_STR(local21, ARRAYSTR_aget_IN(arg_list, 0));
  7901.     BE_ndefer_STR(self, STR_plus_STR_STR(local22, ((STR) &NULL_4433)));
  7902.     BE_in(self);
  7903.     BE_runtime_error_STR(self, STR_plus_STR_STR(((STR) &asizeaccessofvoidin), self->current_function_str));
  7904.     BE_out(self);
  7905.     BE_ndefer_STR(self, ((STR) &name_4434));
  7906.    }
  7907.    local23 = ((STR) &name_4435);
  7908.    local24 = STR_plus_STR_STR(local23, ARRAYSTR_aget_IN(arg_list, 0));
  7909.    return STR_plus_STR_STR(local24, ((STR) &asize_4436));
  7910.   }
  7911.   else {
  7912.    local25 = fun_4421->tp;
  7913.    if ((*TP_is_abstract_BOOL[local25->header.tag+TP_is_abstract_BOOL_offset])(local25)) {
  7914.     self_ob = BE_dec_local_TP_STR(self, fun_4421->tp);
  7915.     local26 = STR_plus_STR_STR(self_ob, ((STR) &name_4437));
  7916.     local27 = STR_plus_STR_STR(local26, ARRAYSTR_aget_IN(arg_list, 0));
  7917.     BE_ndefer_STR(self, STR_plus_CHAR_STR(local27, ';'));
  7918.     ARRAYSTR_aset_IN_4289(arg_list, 0, self_ob);
  7919.     if (self->chk_void) {
  7920.      local28 = (!(self->prog->options_55->null_segfaults));
  7921.     } else {
  7922.      local28 = FALSE;
  7923.     }
  7924.     if (local28) {
  7925.      local29 = ((STR) &if_4438);
  7926.      local30 = STR_plus_STR_STR(local29, ARRAYSTR_aget_IN(arg_list, 0));
  7927.      BE_ndefer_STR(self, STR_plus_STR_STR(local30, ((STR) &NULL_4439)));
  7928.      BE_in(self);
  7929.      BE_runtime_error_STR(self, STR_plus_STR_STR(((STR) &Dispatchonvoidin), self->current_function_str));
  7930.      BE_out(self);
  7931.      BE_ndefer_STR(self, ((STR) &name_4440));
  7932.     }
  7933.     local31 = ((STR) &name_4441);
  7934.     local32 = STR_plus_STR_STR(local31, BE_mangle_OB_STR(self, ((OB) fun_4421)));
  7935.     local33 = STR_plus_STR_STR(local32, ((STR) &name_4442));
  7936.     local34 = STR_plus_STR_STR(local33, ARRAYSTR_aget_IN(arg_list, 0));
  7937.     local35 = STR_plus_STR_STR(local34, ((STR) &headertag));
  7938.     local36 = STR_plus_STR_STR(local35, BE_mangle_OB_STR(self, ((OB) fun_4421)));
  7939.     res = STR_plus_STR_STR(local36, ((STR) &S_offset));
  7940.    }
  7941.    else {
  7942.     local37 = BE_mangle_OB_STR(self, ((OB) fun_4421));
  7943.     res = STR_plus_CHAR_STR(local37, '(');
  7944.    }
  7945.   }
  7946.  }
  7947.  res = STR_plus_STR_STR(res, ARRAYSTR_aget_IN(arg_list, 0));
  7948.  {
  7949.   BOOL noname4445 = TRUE;
  7950.   while (1) {
  7951.    if (noname4445) {
  7952.     noname4445 = FALSE;
  7953.     noname4425 = 1;
  7954.     local41 = ARRAYSTR_size_INT(arg_list);
  7955.     noname4426 = (c_INT_minus_INT_INT_chk(local41,1));
  7956.     local39 = noname4425;
  7957.     local40 = noname4426;
  7958.     local38 = local39;
  7959.    } else {
  7960.     local38++;
  7961.    }
  7962.    if (local38>local40) goto after_loop_4443;
  7963.    i_4427 = local38;
  7964.    local42 = STR_plus_STR_STR(res, ((STR) &name_4446));
  7965.    res = STR_plus_STR_STR(local42, ARRAYSTR_aget_IN(arg_list, i_4427));
  7966.   }
  7967.  }
  7968.  after_loop_4443: ;
  7969.  return STR_plus_CHAR_STR(res, ')');
  7970. }
  7971.  
  7972.  
  7973. STR BE_emit_rout_cal(BE self, AM_ROUT_CALL_EXPR arce) {
  7974.  STR noname4447;
  7975.  ARRAYSTR arg_list;
  7976.  arg_list = BE_emit_and_cast(self, arce);
  7977.  return BE_emit_call_SIG(self, arce->fun, arg_list);
  7978. }
  7979.  
  7980.  
  7981. BOOL FMAPSTRITER_INLI_4448(FMAPSTRITER_INLINE self, STR k) {
  7982.  BOOL noname4449 = ((BOOL) 0);
  7983.  INT h = ((INT) 0);
  7984.  STR tk;
  7985.  STR tk_4450;
  7986.  INT local0;
  7987.  INT local1;
  7988.  INT local2;
  7989.  INT local3;
  7990.  if ((self==((FMAPSTRITER_INLINE) NULL))) {
  7991.   return FALSE;
  7992.  }
  7993.  local0 = FMAPSTRITER_INLI_1149(self, k);
  7994.  local1 = (self->asize);
  7995.  h = (local0&(c_INT_minus_INT_INT_chk(local1,2)));
  7996.  while (1) {
  7997.   tk = (TUPSTRITER_INLINE_blob=FMAPSTRITER_INLI_1151(self, h)).t1;
  7998.   if (FMAPSTRITER_INLI_1154(self, tk, k)) {
  7999.    return TRUE;
  8000.   }
  8001.   else {
  8002.    if (FMAPSTRITER_INLI_1154(self, tk, FMAPSTRITER_INLI_1122(self))) {
  8003.     goto after_loop;
  8004.    }
  8005.   }
  8006.   h = (c_INT_plus_INT_INT_chk(h,1));
  8007.  }
  8008.  after_loop: ;
  8009.  local2 = (self->asize);
  8010.  if ((h==(c_INT_minus_INT_INT_chk(local2,1)))) {
  8011.   h = 0;
  8012.   while (1) {
  8013.    tk_4450 = (TUPSTRITER_INLINE_blob=FMAPSTRITER_INLI_1151(self, h)).t1;
  8014.    if (FMAPSTRITER_INLI_1154(self, tk_4450, k)) {
  8015.     return TRUE;
  8016.    }
  8017.    else {
  8018.     if (FMAPSTRITER_INLI_1154(self, tk_4450, FMAPSTRITER_INLI_1122(self))) {
  8019.      goto after_loop_4452;
  8020.     }
  8021.    }
  8022.    h = (c_INT_plus_INT_INT_chk(h,1));
  8023.   }
  8024.   after_loop_4452: ;
  8025.   local3 = (self->asize);
  8026.   if (!((h!=(c_INT_minus_INT_INT_chk(local3,1))))) {
  8027.    fprintf(stderr,"Violation of assertion ../Library/fmap.sa:133:15\n");
  8028.    exit(16);
  8029.   }
  8030.  }
  8031.  return FALSE;
  8032.  if (!FMAPSTRITER_INLI_1037(self)) {
  8033.   fprintf(stderr,"Failed invariant FMAP{STR,ITER_INLINE}::invariant:BOOL ../Library/fmap.sa:119:7\n");
  8034.   exit(16);
  8035.  }
  8036. }
  8037.  
  8038.  
  8039. BOOL BE_is_built_in_i(BE self, SIG s_4454) {
  8040.  BOOL noname4455 = ((BOOL) 0);
  8041.  FMAPSTRITER_INLINE local0;
  8042.  local0 = self->built_in_iters;
  8043.  return FMAPSTRITER_INLI_4448(local0, SIG_str_STR(s_4454));
  8044. }
  8045.  
  8046.  
  8047. ITER_INLINE FMAPSTRITER_INLI_4456(FMAPSTRITER_INLINE self, STR k) {
  8048.  ITER_INLINE noname4457;
  8049.  INT h = ((INT) 0);
  8050.  STR tk;
  8051.  STR tk_4458;
  8052.  INT local0;
  8053.  INT local1;
  8054.  INT local2;
  8055.  INT local3;
  8056.  if ((self==((FMAPSTRITER_INLINE) NULL))) {
  8057.   return ((ITER_INLINE) NULL);
  8058.  }
  8059.  local0 = FMAPSTRITER_INLI_1149(self, k);
  8060.  local1 = (self->asize);
  8061.  h = (local0&(c_INT_minus_INT_INT_chk(local1,2)));
  8062.  while (1) {
  8063.   tk = (TUPSTRITER_INLINE_blob=FMAPSTRITER_INLI_1151(self, h)).t1;
  8064.   if (FMAPSTRITER_INLI_1154(self, tk, k)) {
  8065.    return (TUPSTRITER_INLINE_blob=FMAPSTRITER_INLI_1151(self, h)).t2;
  8066.   }
  8067.   else {
  8068.    if (FMAPSTRITER_INLI_1154(self, tk, FMAPSTRITER_INLI_1122(self))) {
  8069.     goto after_loop;
  8070.    }
  8071.   }
  8072.   h = (c_INT_plus_INT_INT_chk(h,1));
  8073.  }
  8074.  after_loop: ;
  8075.  local2 = (self->asize);
  8076.  if ((h==(c_INT_minus_INT_INT_chk(local2,1)))) {
  8077.   h = 0;
  8078.   while (1) {
  8079.    tk_4458 = (TUPSTRITER_INLINE_blob=FMAPSTRITER_INLI_1151(self, h)).t1;
  8080.    if (FMAPSTRITER_INLI_1154(self, tk_4458, k)) {
  8081.     return (TUPSTRITER_INLINE_blob=FMAPSTRITER_INLI_1151(self, h)).t2;
  8082.    }
  8083.    else {
  8084.     if (FMAPSTRITER_INLI_1154(self, tk_4458, FMAPSTRITER_INLI_1122(self))) {
  8085.      goto after_loop_4460;
  8086.     }
  8087.    }
  8088.    h = (c_INT_plus_INT_INT_chk(h,1));
  8089.   }
  8090.   after_loop_4460: ;
  8091.   local3 = (self->asize);
  8092.   if (!((h!=(c_INT_minus_INT_INT_chk(local3,1))))) {
  8093.    fprintf(stderr,"Violation of assertion ../Library/fmap.sa:150:15\n");
  8094.    exit(16);
  8095.   }
  8096.  }
  8097.  return ((ITER_INLINE) NULL);
  8098.  if (!FMAPSTRITER_INLI_1037(self)) {
  8099.   fprintf(stderr,"Failed invariant FMAP{STR,ITER_INLINE}::invariant:BOOL ../Library/fmap.sa:136:6\n");
  8100.   exit(16);
  8101.  }
  8102. }
  8103.  
  8104.  
  8105. BOOL ARRAYBOOL_aget_I(ARRAYBOOL self, INT ind_4462) {
  8106.  BOOL noname4463 = ((BOOL) 0);
  8107.  BOOL local0;
  8108.  INT local1;
  8109.  INT local2;
  8110.  if ((!((self==((ARRAYBOOL) NULL))))) {
  8111.   local1 = 0;
  8112.   local2 = (self->asize);
  8113.   local0 = INT_is_bet_INT_I(ind_4462, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  8114.  } else {
  8115.   local0 = FALSE;
  8116.  }
  8117.  if (!(local0)) {
  8118.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  8119.   exit(16);
  8120.  }
  8121.  if (ind_4462<0||ind_4462>=self->asize) {
  8122.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  8123.   exit(16);
  8124.  }
  8125.  return self->arr_part[ind_4462];
  8126. }
  8127.  
  8128.  
  8129. INT AM_ITER_CALL_EXP_4464(AM_ITER_CALL_EXPR self) {
  8130.  INT noname4465 = ((INT) 0);
  8131.   return self->asize;
  8132.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  8133.  exit(16);
  8134. }
  8135.  
  8136.  
  8137. INT AM_ITER_CALL_EXP_4466(AM_ITER_CALL_EXPR self) {
  8138.  INT noname4467 = ((INT) 0);
  8139.  if ((self==((AM_ITER_CALL_EXPR) NULL))) {
  8140.   return 0;
  8141.  }
  8142.  return (self->asize);
  8143. }
  8144.  
  8145.  
  8146. AM_EXPR AM_ITER_CALL_EXP_4468(AM_ITER_CALL_EXPR self, INT ind_4469) {
  8147.  AM_EXPR noname4470;
  8148.  BOOL local0;
  8149.  INT local1;
  8150.  INT local2;
  8151.  if ((!((self==((AM_ITER_CALL_EXPR) NULL))))) {
  8152.   local1 = 0;
  8153.   local2 = (self->asize);
  8154.   local0 = INT_is_bet_INT_I(ind_4469, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  8155.  } else {
  8156.   local0 = FALSE;
  8157.  }
  8158.  if (!(local0)) {
  8159.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  8160.   exit(16);
  8161.  }
  8162.  if (ind_4469<0||ind_4469>=self->asize) {
  8163.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  8164.   exit(16);
  8165.  }
  8166.  return self->arr_part[ind_4469];
  8167. }
  8168.  
  8169.  
  8170. STR BE_iter_inline_x(BE self, STR this_4471, STR arg1_4472, STR arg2_4473, STR s_4474) {
  8171.  STR noname4475;
  8172.  STR res;
  8173.  INT i = ((INT) 0);
  8174.  CHAR c_4476 = ((CHAR) 0);
  8175.  CHAR noname4477 = ((CHAR) 0);
  8176.  CHAR noname4478 = ((CHAR) 0);
  8177.  STR local0;
  8178.  res = ((STR) &name_4479);
  8179.  i = 0;
  8180.  while (1) {
  8181.   if ((i>=STR_size_INT(s_4474))) {
  8182.    goto after_loop;
  8183.   }
  8184.   c_4476 = STR_aget_INT_CHAR(s_4474, i);
  8185.   noname4477 = c_4476;
  8186.   switch (noname4477) {
  8187.    case '@':
  8188.     local0 = STR_plus_STR_STR(res, ((STR) &goto_4481));
  8189.     res = STR_plus_STR_STR(local0, self->current_loop);
  8190.     break;
  8191.    case '#':
  8192.     i = (c_INT_plus_INT_INT_chk(i,1));
  8193.     noname4478 = STR_aget_INT_CHAR(s_4474, i);
  8194.     switch (noname4478) {
  8195.      case '#':
  8196.       res = STR_plus_STR_STR(res, this_4471);
  8197.       break;
  8198.      case '1':
  8199.       res = STR_plus_STR_STR(res, arg1_4472);
  8200.       break;
  8201.      case '2':
  8202.       res = STR_plus_STR_STR(res, arg2_4473);
  8203.       break;
  8204.      default: ;
  8205.       BE_barf_STR(self, ((STR) &Couldntinterpret));
  8206.     }
  8207.     break;
  8208.    default: ;
  8209.     res = STR_plus_CHAR_STR(res, c_4476);
  8210.   }
  8211.   i = (c_INT_plus_INT_INT_chk(i,1));
  8212.  }
  8213.  after_loop: ;
  8214.  return res;
  8215. }
  8216.  
  8217.  
  8218. void BE_comment_STR(BE self, STR com_4482) {
  8219.  STR local0;
  8220.  if (self->prog->options_55->pretty) {
  8221.   local0 = STR_plus_STR_STR(((STR) &name_4483), com_4482);
  8222.   BE_ndefer_STR(self, STR_plus_STR_STR(local0, ((STR) &name_4484)));
  8223.  }
  8224. }
  8225.  
  8226.  
  8227. STR BE_emit_builtin_(BE self, AM_ITER_CALL_EXPR aice) {
  8228.  STR noname4485;
  8229.  ITER_INLINE it;
  8230.  STR not_seen;
  8231.  STR this_4486 = ((STR) NULL);
  8232.  STR arg1_4487;
  8233.  BOOL arg2nothot = ((BOOL) 0);
  8234.  STR arg2_4488 = ((STR) NULL);
  8235.  FMAPSTRITER_INLINE local0;
  8236.  BOOL local1;
  8237.  INT local2;
  8238.  TP local3;
  8239.  FILE_20 local4;
  8240.  FILE_20 local5;
  8241.  FILE_20 local6;
  8242.  STR local7;
  8243.  STR local8;
  8244.  STR local9;
  8245.  STR local10;
  8246.  BOOL local11;
  8247.  STR local12;
  8248.  TP local13;
  8249.  AM_EXPR local14;
  8250.  TP local15;
  8251.  STR local16;
  8252.  self->inlined_iter_count = (c_INT_plus_INT_INT_chk(self->inlined_iter_count,1));
  8253.  local0 = self->built_in_iters;
  8254.  it = FMAPSTRITER_INLI_4456(local0, SIG_str_STR(aice->fun));
  8255.  if ((it==((ITER_INLINE) NULL))) {
  8256.   BE_barf_STR(self, ((STR) &Couldntgetiterin));
  8257.  }
  8258.  not_seen = BE_mangle_OB_STR(self, ((OB) aice));
  8259.  if ((!((aice->fun->ret==((TP) NULL))))) {
  8260.   this_4486 = BE_dec_local_com(self, aice->fun->ret, ((STR) &Inlinedreturnvalue));
  8261.  }
  8262.  else {
  8263.   this_4486 = STR_plus_CHAR_STR(not_seen, 't');
  8264.   BE_forbid_STR(self, this_4486);
  8265.  }
  8266.  arg1_4487 = BE_dec_local_com(self, aice->fun->tp, ((STR) &Inlinedselftoiter));
  8267.  if ((aice->fun->hot==((ARRAYBOOL) NULL))) {
  8268.   local1 = TRUE;
  8269.  } else {
  8270.   local1 = (!(ARRAYBOOL_aget_I(aice->fun->hot, 0)));
  8271.  }
  8272.  arg2nothot = local1;
  8273.  local2 = AM_ITER_CALL_EXP_4466(aice);
  8274.  if ((local2>1)) {
  8275.   if (arg2nothot) {
  8276.    local3 = ARRAYTP_aget_INT_TP(aice->fun->args_7, 0);
  8277.    arg2_4488 = BE_dec_local_com(self, local3, ((STR) &Inlined1stargtoiter));
  8278.   }
  8279.   else {
  8280.    arg2_4488 = BE_emit_expr_AM_(self, AM_ITER_CALL_EXP_4468(aice, 1));
  8281.   }
  8282.  }
  8283.  local4 = self->code_c;
  8284.  local5 = FILE_plus_STR_FILE(local4, BE_eol_STR(self));
  8285.  local6 = FILE_plus_CHAR_FILE(local5, ' ');
  8286.  (fwrite(BE_iter_inline_x(self, this_4486, arg1_4487, arg2_4488, it->at_decs)->arr_part,BE_iter_inline_x(self, this_4486, arg1_4487, arg2_4488, it->at_decs)->asize,1,local6->fp));
  8287.  local7 = STR_plus_STR_STR(((STR) &if_4489), not_seen);
  8288.  BE_ndefer_STR(self, STR_plus_STR_STR(local7, ((STR) &name_4490)));
  8289.  BE_in(self);
  8290.  BE_ndefer_STR(self, STR_plus_STR_STR(not_seen, ((STR) &FALSE_4491)));
  8291.  local8 = ((STR) &Initializeinline);
  8292.  BE_comment_STR(self, STR_plus_STR_STR(local8, SIG_str_STR(aice->fun)));
  8293.  BE_emit_code_AM_STMT(self, aice->init);
  8294.  local9 = STR_plus_STR_STR(arg1_4487, ((STR) &name_4492));
  8295.  local10 = STR_plus_STR_STR(local9, BE_emit_expr_AM_(self, AM_ITER_CALL_EXP_4468(aice, 0)));
  8296.  BE_ndefer_STR(self, STR_plus_CHAR_STR(local10, ';'));
  8297.  if ((!((arg2_4488==((STR) NULL))))) {
  8298.   local11 = arg2nothot;
  8299.  } else {
  8300.   local11 = FALSE;
  8301.  }
  8302.  if (local11) {
  8303.   local12 = STR_plus_STR_STR(arg2_4488, ((STR) &name_4493));
  8304.   local13 = ARRAYTP_aget_INT_TP(aice->fun->args_7, 0);
  8305.   local14 = AM_ITER_CALL_EXP_4468(aice, 1);
  8306.   local15 = (*AM_EXPR_tp_TP[local14->header.tag+AM_EXPR_tp_TP_offset])(local14);
  8307.   local16 = STR_plus_STR_STR(local12, BE_cast_TP_TP_ST(self, local13, local15, BE_emit_expr_AM_(self, AM_ITER_CALL_EXP_4468(aice, 1))));
  8308.   BE_ndefer_STR(self, STR_plus_CHAR_STR(local16, ';'));
  8309.  }
  8310.  BE_ndefer_STR(self, BE_iter_inline_x(self, this_4486, arg1_4487, arg2_4488, it->when_first_seen));
  8311.  BE_out(self);
  8312.  BE_ndefer_STR(self, ((STR) &else_4494));
  8313.  BE_in(self);
  8314.  BE_ndefer_STR(self, BE_iter_inline_x(self, this_4486, arg1_4487, arg2_4488, it->after_29));
  8315.  BE_out(self);
  8316.  BE_ndefer_STR(self, ((STR) &name_4495));
  8317.  BE_ndefer_STR(self, BE_iter_inline_x(self, this_4486, arg1_4487, arg2_4488, it->before_28));
  8318.  if ((!((aice->fun->ret==((TP) NULL))))) {
  8319.   return this_4486;
  8320.  }
  8321.  return ((STR) &S0noreturnvaluef);
  8322. }
  8323.  
  8324.  
  8325. TP AM_ITER_CALL_EXP_4496(AM_ITER_CALL_EXPR self) {
  8326.  TP noname4497;
  8327.  return self->fun->ret;
  8328. }
  8329.  
  8330.  
  8331. STR BE_emit_iter_cal(BE self, AM_ITER_CALL_EXPR aice) {
  8332.  STR noname4498;
  8333.  STR s1 = ((STR) NULL);
  8334.  STR res = ((STR) NULL);
  8335.  AM_ITER_CALL_EXPR noname4499;
  8336.  INT i = ((INT) 0);
  8337.  INT noname4500 = ((INT) 0);
  8338.  INT noname4501 = ((INT) 0);
  8339.  INT i_4502 = ((INT) 0);
  8340.  BOOL local0;
  8341.  TP local1;
  8342.  TP local2;
  8343.  STR local3;
  8344.  STR local4;
  8345.  STR local5;
  8346.  STR local6;
  8347.  INT local7;
  8348.  STR local8;
  8349.  STR local9;
  8350.  STR local10;
  8351.  STR local11;
  8352.  STR local12;
  8353.  BOOL local13;
  8354.  ARRAYBOOL local14;
  8355.  STR local15;
  8356.  STR local16;
  8357.  STR local17;
  8358.  STR local18;
  8359.  ARRAYTP local19;
  8360.  TP local20;
  8361.  AM_EXPR local21;
  8362.  TP local22;
  8363.  STR local23;
  8364.  INT local24;
  8365.  INT local25;
  8366.  INT local26;
  8367.  
  8368.  INT local27;
  8369.  ARRAYBOOL local28;
  8370.  STR local29;
  8371.  STR local30;
  8372.  STR local31;
  8373.  STR local32;
  8374.  ARRAYTP local33;
  8375.  TP local34;
  8376.  AM_EXPR local35;
  8377.  TP local36;
  8378.  STR local37;
  8379.  STR local38;
  8380.  STR local39;
  8381.  STR local40;
  8382.  STR local41;
  8383.  STR local42;
  8384.  STR local43;
  8385.  STR local44;
  8386.  STR local45;
  8387.  STR local46;
  8388.  STR local47;
  8389.  STR local48;
  8390.  if ((!(SIG_is_iter_BOOL(self->current_function)))) {
  8391.   local0 = BE_is_built_in_i(self, aice->fun);
  8392.  } else {
  8393.   local0 = FALSE;
  8394.  }
  8395.  if (local0) {
  8396.   return BE_emit_builtin_(self, aice);
  8397.  }
  8398.  local1 = aice->fun->tp;
  8399.  if ((*TP_is_abstract_BOOL[local1->header.tag+TP_is_abstract_BOOL_offset])(local1)) {
  8400.   BE_barf_at_STR_P(self, ((STR) &Dispatcheditersn), ((PROG_ERR) aice));
  8401.  }
  8402.  if ((!((AM_ITER_CALL_EXP_4496(aice)==((TP) NULL))))) {
  8403.   local2 = AM_ITER_CALL_EXP_4496(aice);
  8404.   local3 = ((STR) &Holdsresultofcallto);
  8405.   s1 = BE_dec_local_com(self, local2, STR_plus_STR_STR(local3, SIG_str_STR(aice->fun)));
  8406.  }
  8407.  local4 = ((STR) &if_4503);
  8408.  local5 = STR_plus_STR_STR(local4, BE_mangle_OB_STR(self, ((OB) aice)));
  8409.  BE_ndefer_STR(self, STR_plus_STR_STR(local5, ((STR) &state0_4504)));
  8410.  BE_in(self);
  8411.  local6 = ((STR) &Initializeoncear);
  8412.  BE_comment_STR(self, STR_plus_STR_STR(local6, SIG_str_STR(aice->fun)));
  8413.  BE_emit_code_AM_STMT(self, aice->init);
  8414.  {
  8415.   struct AM_ITER_CALL_EXP_4506_frame_struct temp4505_0;
  8416.   AM_ITER_CALL_EXP_4506_frame 
  8417.   noname4507 = &temp4505_0;
  8418.   noname4507->state = 0;
  8419.   while (1) {
  8420.    if (noname4507->state == 0) {
  8421.     noname4499 = aice;
  8422.     noname4507->arg0 = noname4499;
  8423.    }
  8424.    local7 = AM_ITER_CALL_EXP_4506(noname4507);
  8425.    if (noname4507->state == -1) goto after_loop;
  8426.    i = local7;
  8427.    if ((i==0)) {
  8428.     local8 = BE_mangle_OB_STR(self, ((OB) aice));
  8429.     local9 = STR_plus_STR_STR(local8, ((STR) &arg_4508));
  8430.     local10 = STR_plus_INT_STR(local9, i);
  8431.     local11 = STR_plus_STR_STR(local10, ((STR) &name_4509));
  8432.     local12 = STR_plus_STR_STR(local11, BE_emit_expr_AM_(self, AM_ITER_CALL_EXP_4468(aice, i)));
  8433.     BE_ndefer_STR(self, STR_plus_CHAR_STR(local12, ';'));
  8434.    }
  8435.    else {
  8436.     if ((aice->fun->hot==((ARRAYBOOL) NULL))) {
  8437.      local13 = TRUE;
  8438.     } else {
  8439.      local14 = aice->fun->hot;
  8440.      local13 = (!(ARRAYBOOL_aget_I(local14, (c_INT_minus_INT_INT_chk(i,1)))));
  8441.     }
  8442.     if (local13) {
  8443.      local15 = BE_mangle_OB_STR(self, ((OB) aice));
  8444.      local16 = STR_plus_STR_STR(local15, ((STR) &arg_4510));
  8445.      local17 = STR_plus_INT_STR(local16, i);
  8446.      local18 = STR_plus_STR_STR(local17, ((STR) &name_4511));
  8447.      local19 = aice->fun->args_7;
  8448.      local20 = ARRAYTP_aget_INT_TP(local19, (c_INT_minus_INT_INT_chk(i,1)));
  8449.      local21 = AM_ITER_CALL_EXP_4468(aice, i);
  8450.      local22 = (*AM_EXPR_tp_TP[local21->header.tag+AM_EXPR_tp_TP_offset])(local21);
  8451.      local23 = STR_plus_STR_STR(local18, BE_cast_TP_TP_ST(self, local20, local22, BE_emit_expr_AM_(self, AM_ITER_CALL_EXP_4468(aice, i))));
  8452.      BE_ndefer_STR(self, STR_plus_CHAR_STR(local23, ';'));
  8453.     }
  8454.    }
  8455.   }
  8456.  }
  8457.  after_loop: ;
  8458.  BE_out(self);
  8459.  BE_ndefer_STR(self, ((STR) &name_4512));
  8460.  if ((!((aice->fun->hot==((ARRAYBOOL) NULL))))) {
  8461.   {
  8462.    BOOL noname4515 = TRUE;
  8463.    while (1) {
  8464.     if (noname4515) {
  8465.      noname4515 = FALSE;
  8466.      noname4500 = 1;
  8467.      local27 = (aice->asize);
  8468.      noname4501 = (c_INT_minus_INT_INT_chk(local27,1));
  8469.      local25 = noname4500;
  8470.      local26 = noname4501;
  8471.      local24 = local25;
  8472.     } else {
  8473.      local24++;
  8474.     }
  8475.     if (local24>local26) goto after_loop_4513;
  8476.     i_4502 = local24;
  8477.     local28 = aice->fun->hot;
  8478.     if (ARRAYBOOL_aget_I(local28, (c_INT_minus_INT_INT_chk(i_4502,1)))) {
  8479.      local29 = BE_mangle_OB_STR(self, ((OB) aice));
  8480.      local30 = STR_plus_STR_STR(local29, ((STR) &arg_4516));
  8481.      local31 = STR_plus_INT_STR(local30, i_4502);
  8482.      local32 = STR_plus_STR_STR(local31, ((STR) &name_4517));
  8483.      local33 = aice->fun->args_7;
  8484.      local34 = ARRAYTP_aget_INT_TP(local33, (c_INT_minus_INT_INT_chk(i_4502,1)));
  8485.      local35 = AM_ITER_CALL_EXP_4468(aice, i_4502);
  8486.      local36 = (*AM_EXPR_tp_TP[local35->header.tag+AM_EXPR_tp_TP_offset])(local35);
  8487.      local37 = STR_plus_STR_STR(local32, BE_cast_TP_TP_ST(self, local34, local36, BE_emit_expr_AM_(self, AM_ITER_CALL_EXP_4468(aice, i_4502))));
  8488.      BE_ndefer_STR(self, STR_plus_CHAR_STR(local37, ';'));
  8489.      BE_comment_STR(self, ((STR) &hotargument));
  8490.     }
  8491.    }
  8492.   }
  8493.   after_loop_4513: ;
  8494.  }
  8495.  if ((!((AM_ITER_CALL_EXP_4496(aice)==((TP) NULL))))) {
  8496.   local38 = STR_plus_STR_STR(s1, ((STR) &name_4518));
  8497.   local39 = STR_plus_STR_STR(local38, BE_mangle_OB_STR(self, ((OB) aice->fun)));
  8498.   local40 = STR_plus_CHAR_STR(local39, '(');
  8499.   local41 = STR_plus_STR_STR(local40, BE_mangle_OB_STR(self, ((OB) aice)));
  8500.   BE_ndefer_STR(self, STR_plus_STR_STR(local41, ((STR) &name_4519)));
  8501.   res = s1;
  8502.  }
  8503.  else {
  8504.   local42 = BE_mangle_OB_STR(self, ((OB) aice->fun));
  8505.   local43 = STR_plus_CHAR_STR(local42, '(');
  8506.   local44 = STR_plus_STR_STR(local43, BE_mangle_OB_STR(self, ((OB) aice)));
  8507.   BE_ndefer_STR(self, STR_plus_STR_STR(local44, ((STR) &name_4520)));
  8508.   res = ((STR) &S0Noreturnvaluef);
  8509.  }
  8510.  local45 = ((STR) &if_4521);
  8511.  local46 = STR_plus_STR_STR(local45, BE_mangle_OB_STR(self, ((OB) aice)));
  8512.  local47 = STR_plus_STR_STR(local46, ((STR) &state1goto));
  8513.  local48 = STR_plus_STR_STR(local47, self->current_loop);
  8514.  BE_ndefer_STR(self, STR_plus_STR_STR(local48, ((STR) &name_4522)));
  8515.  return res;
  8516. }
  8517.  
  8518.  
  8519. STR BE_Cify_CHAR_STR(BE self, CHAR c_4523) {
  8520.  STR noname4524;
  8521.  STR res;
  8522.  CHAR noname4525 = ((CHAR) 0);
  8523.  STR oc;
  8524.  INT local0;
  8525.  INT local1;
  8526.  STR local2;
  8527.  res = ((STR) &name_4526);
  8528.  noname4525 = c_4523;
  8529.  switch (noname4525) {
  8530.   case 'a':
  8531.   case 'b':
  8532.   case 'c':
  8533.   case 'd':
  8534.   case 'e':
  8535.   case 'f':
  8536.   case 'g':
  8537.   case 'h':
  8538.   case 'i':
  8539.   case 'j':
  8540.   case 'k':
  8541.   case 'l':
  8542.   case 'm':
  8543.   case 'n':
  8544.   case 'o':
  8545.   case 'p':
  8546.   case 'q':
  8547.   case 'r':
  8548.   case 's':
  8549.   case 't':
  8550.   case 'u':
  8551.   case 'v':
  8552.   case 'w':
  8553.   case 'x':
  8554.   case 'y':
  8555.   case 'z':
  8556.   case '0':
  8557.   case '1':
  8558.   case '2':
  8559.   case '3':
  8560.   case '4':
  8561.   case '5':
  8562.   case '6':
  8563.   case '7':
  8564.   case '8':
  8565.   case '9':
  8566.   case 'A':
  8567.   case 'B':
  8568.   case 'C':
  8569.   case 'D':
  8570.   case 'E':
  8571.   case 'F':
  8572.   case 'G':
  8573.   case 'H':
  8574.   case 'I':
  8575.   case 'J':
  8576.   case 'K':
  8577.   case 'L':
  8578.   case 'M':
  8579.   case 'N':
  8580.   case 'O':
  8581.   case 'P':
  8582.   case 'Q':
  8583.   case 'R':
  8584.   case 'S':
  8585.   case 'T':
  8586.   case 'U':
  8587.   case 'V':
  8588.   case 'W':
  8589.   case 'X':
  8590.   case 'Y':
  8591.   case 'Z':
  8592.   case '!':
  8593.   case '@':
  8594.   case '#':
  8595.   case '$':
  8596.   case '%':
  8597.   case '^':
  8598.   case '&':
  8599.   case '*':
  8600.   case '(':
  8601.   case ')':
  8602.   case '-':
  8603.   case '=':
  8604.   case '+':
  8605.   case '|':
  8606.   case ':':
  8607.   case ';':
  8608.   case '`':
  8609.   case '~':
  8610.   case '_':
  8611.   case ' ':
  8612.   case ',':
  8613.   case '.':
  8614.   case '<':
  8615.   case '>':
  8616.   case '/':
  8617.   case '?':
  8618.   case '[':
  8619.   case ']':
  8620.   case '{':
  8621.   case '}':
  8622.    res = STR_plus_CHAR_STR(res, c_4523);
  8623.    break;
  8624.   case '\b':
  8625.    res = STR_plus_STR_STR(res, ((STR) &b_4527));
  8626.    break;
  8627.   case '\f':
  8628.    res = STR_plus_STR_STR(res, ((STR) &f_4528));
  8629.    break;
  8630.   case '\n':
  8631.    res = STR_plus_STR_STR(res, ((STR) &n_4529));
  8632.    break;
  8633.   case '\r':
  8634.    res = STR_plus_STR_STR(res, ((STR) &r_4530));
  8635.    break;
  8636.   case '\t':
  8637.    res = STR_plus_STR_STR(res, ((STR) &t_4531));
  8638.    break;
  8639.   case '\v':
  8640.    res = STR_plus_STR_STR(res, ((STR) &v_4532));
  8641.    break;
  8642.   case '\\':
  8643.    res = STR_plus_STR_STR(res, ((STR) &name_4533));
  8644.    break;
  8645.   case '\'':
  8646.    res = STR_plus_STR_STR(res, ((STR) &name_4534));
  8647.    break;
  8648.   case '\"':
  8649.    res = STR_plus_STR_STR(res, ((STR) &name_4535));
  8650.    break;
  8651.   default: ;
  8652.    oc = INT_octal_str_STR(((INT)c_4523));
  8653.    local0 = 2;
  8654.    local1 = STR_length_INT(oc);
  8655.    oc = STR_substring_IN(oc, local0, (c_INT_minus_INT_INT_chk(local1,2)));
  8656.    local2 = STR_plus_CHAR_STR(res, '\\');
  8657.    res = STR_plus_STR_STR(local2, oc);
  8658.  }
  8659.  return res;
  8660. }
  8661.  
  8662.  
  8663. STR BE_Cify_STR_STR(BE self, STR arg_4536) {
  8664.  STR noname4537;
  8665.  FSTR res;
  8666.  STR noname4538;
  8667.  CHAR local0;
  8668.  STR local1;
  8669.  CHAR *local0p; INT local0n;
  8670.  res = FSTR_create_FSTR(((FSTR) NULL));
  8671.  {
  8672.   BOOL noname4540 = TRUE;
  8673.   while (1) {
  8674.    if (noname4540) {
  8675.     noname4540 = FALSE;
  8676.     noname4538 = arg_4536;
  8677.     local1 = noname4538;
  8678.     local0p = local1->arr_part; local0n = local1->asize;
  8679.    } else {
  8680.     local0p++; local0n--;
  8681.    }
  8682.    if (local0n<=0) goto after_loop; local0 = *local0p;
  8683.    res = FSTR_plus_STR_FSTR(res, BE_Cify_CHAR_STR(self, local0));
  8684.   }
  8685.  }
  8686.  after_loop: ;
  8687.  return FSTR_str_STR(res);
  8688. }
  8689.  
  8690.  
  8691. STR BE_emit_str_cons(BE self, AM_STR_CONST asc) {
  8692.  STR noname4541;
  8693.  STR res;
  8694.  STR local0;
  8695.  STR local1;
  8696.  FILE_20 local2;
  8697.  INT local3;
  8698.  FILE_20 local4;
  8699.  FILE_20 local5;
  8700.  FILE_20 local6;
  8701.  FILE_20 local7;
  8702.  FILE_20 local8;
  8703.  FILE_20 local9;
  8704.  FILE_20 local10;
  8705.  FILE_20 local11;
  8706.  FILE_20 local12;
  8707.  FILE_20 local13;
  8708.  FILE_20 local14;
  8709.  FILE_20 local15;
  8710.  FILE_20 local16;
  8711.  FILE_20 local17;
  8712.  local0 = ((STR) &STR_4542);
  8713.  local1 = STR_plus_STR_STR(local0, BE_mangle_OB_STR(self, ((OB) asc)));
  8714.  res = STR_plus_CHAR_STR(local1, ')');
  8715.  (fwrite(((STR) &struct_4543)->arr_part,((STR) &struct_4543)->asize,1,self->globals_c->fp));
  8716.  (fwrite(((STR) &OB_HEADERheader_4544)->arr_part,((STR) &OB_HEADERheader_4544)->asize,1,self->globals_c->fp));
  8717.  (fwrite(((STR) &INTasize_4545)->arr_part,((STR) &INTasize_4545)->asize,1,self->globals_c->fp));
  8718.  local2 = FILE_plus_STR_FILE(self->globals_c, ((STR) &CHARarr_part));
  8719.  local3 = STR_length_INT(asc->bval);
  8720.  local4 = FILE_plus_INT_FILE(local2, (c_INT_plus_INT_INT_chk(local3,1)));
  8721.  local5 = FILE_plus_STR_FILE(local4, ((STR) &name_4546));
  8722.  local6 = FILE_plus_STR_FILE(local5, BE_mangle_OB_STR(self, ((OB) asc)));
  8723.  (fwrite(((STR) &name_4547)->arr_part,((STR) &name_4547)->asize,1,local6->fp));
  8724.  if (self->prog->options_55->deterministic_12) {
  8725.   local7 = FILE_plus_STR_FILE(self->globals_c, ((STR) &name_4548));
  8726.   local8 = FILE_plus_STR_FILE(local7, BE_tag_for_TP_STR(self, ((TP) self->prog->tp_builtin->str_4)));
  8727.   local9 = FILE_plus_STR_FILE(local8, ((STR) &name_4549));
  8728.   local10 = FILE_plus_INT_FILE(local9, self->str_count);
  8729.   (fwrite(((STR) &name_4550)->arr_part,((STR) &name_4550)->asize,1,local10->fp));
  8730.   self->str_count = (c_INT_plus_INT_INT_chk(self->str_count,1));
  8731.  }
  8732.  else {
  8733.   local11 = self->globals_c;
  8734.   (fwrite(BE_tag_for_TP_STR(self, ((TP) self->prog->tp_builtin->str_4))->arr_part,BE_tag_for_TP_STR(self, ((TP) self->prog->tp_builtin->str_4))->asize,1,local11->fp));
  8735.  }
  8736.  local12 = FILE_plus_STR_FILE(self->globals_c, ((STR) &name_4551));
  8737.  local13 = FILE_plus_INT_FILE(local12, STR_length_INT(asc->bval));
  8738.  local14 = FILE_plus_STR_FILE(local13, ((STR) &name_4552));
  8739.  local15 = FILE_plus_STR_FILE(local14, BE_Cify_STR_STR(self, asc->bval));
  8740.  (fwrite(((STR) &name_4553)->arr_part,((STR) &name_4553)->asize,1,local15->fp));
  8741.  local16 = FILE_plus_STR_FILE(self->strings_h, ((STR) &externSTR));
  8742.  local17 = FILE_plus_STR_FILE(local16, BE_mangle_OB_STR(self, ((OB) asc)));
  8743.  FILE_plus_CHAR(local17, ';');
  8744.  return res;
  8745. }
  8746.  
  8747.  
  8748. TUPBOOLINTIINTBOOL TUPBOOLINTIINTBO(TUPBOOLINTIINTBOOL self, BOOL t1_4554) {
  8749.  TUPBOOLINTIINTBOOL local0;
  8750.  local0 = self;
  8751.  local0.t1 = t1_4554;
  8752.  return local0;
  8753. }
  8754.  
  8755.  
  8756. TUPBOOLINTIINTBOOL TUPBOOLINTIINTBO_4555(TUPBOOLINTIINTBOOL self, INTI t2_4556) {
  8757.  TUPBOOLINTIINTBOOL local0;
  8758.  local0 = self;
  8759.  local0.t2 = t2_4556;
  8760.  return local0;
  8761. }
  8762.  
  8763.  
  8764. TUPBOOLINTIINTBOOL TUPBOOLINTIINTBO_4557(TUPBOOLINTIINTBOOL self, INT t3_4558) {
  8765.  TUPBOOLINTIINTBOOL local0;
  8766.  local0 = self;
  8767.  local0.t3 = t3_4558;
  8768.  return local0;
  8769. }
  8770.  
  8771.  
  8772. TUPBOOLINTIINTBOOL TUPBOOLINTIINTBO_4559(TUPBOOLINTIINTBOOL self, BOOL t4_4560) {
  8773.  TUPBOOLINTIINTBOOL local0;
  8774.  local0 = self;
  8775.  local0.t4 = t4_4560;
  8776.  return local0;
  8777. }
  8778.  
  8779.  
  8780. TUPBOOLINTIINTBOOL TUPBOOLINTIINTBO_4561(TUPBOOLINTIINTBOOL self, BOOL at1, INTI at2, INT at3, BOOL at4) {
  8781.  TUPBOOLINTIINTBOOL noname4562 = TUPBOOLINTIINTBOOL_zero;
  8782.  TUPBOOLINTIINTBOOL local0;
  8783.  TUPBOOLINTIINTBOOL local1;
  8784.  TUPBOOLINTIINTBOOL local2;
  8785.  local0 = TUPBOOLINTIINTBO(self, at1);
  8786.  local1 = TUPBOOLINTIINTBO_4555(local0, at2);
  8787.  local2 = TUPBOOLINTIINTBO_4557(local1, at3);
  8788.  return TUPBOOLINTIINTBO_4559(local2, at4);
  8789. }
  8790.  
  8791.  
  8792. INT INTI_log2_INT(INTI self) {
  8793.  INT noname4563 = ((INT) 0);
  8794.  INT local0;
  8795.  INT local1;
  8796.  if (!((self->len_37>0))) {
  8797.   fprintf(stderr,"Violation of assertion ../Library/inti.sa:326:12\n");
  8798.   exit(16);
  8799.  }
  8800.  local0 = (c_INT_minus_INT_INT_chk(self->len_37,1));
  8801.  local1 = (c_INT_times_INT_INT_chk(local0,shared_INTI_log2B));
  8802.  return (c_INT_plus_INT_INT_chk(local1,INT_highest_bit_INT(INTI_aget_INT_INT(self, (c_INT_minus_INT_INT_chk(self->len_37,1))))));
  8803. }
  8804.  
  8805.  
  8806. FLTD FLTD_log10_FLTD(FLTD self) {
  8807.  FLTD noname4564 = ((FLTD) 0);
  8808.  return log10(self);
  8809. }
  8810.  
  8811.  
  8812. FLTD FLTD_log2_FLTD(FLTD self) {
  8813.  FLTD noname4565 = ((FLTD) 0);
  8814.  FLTD local0;
  8815.  local0 = FLTD_log10_FLTD(self);
  8816.  return (local0/shared_FLTD_log10_2);
  8817. }
  8818.  
  8819.  
  8820. FLT FLT_log2_FLT(FLT self) {
  8821.  FLT noname4566 = ((FLT) 0);
  8822.  return ((FLT)FLTD_log2_FLTD(((FLTD)self)));
  8823. }
  8824.  
  8825.  
  8826. FLTD FLTD_round_FLTD(FLTD self) {
  8827.  FLTD noname4567 = ((FLTD) 0);
  8828.  return rint(self);
  8829. }
  8830.  
  8831.  
  8832. FLT FLT_round_FLT(FLT self) {
  8833.  FLT noname4568 = ((FLT) 0);
  8834.  return ((FLT)FLTD_round_FLTD(((FLTD)self)));
  8835. }
  8836.  
  8837.  
  8838. INT FLTD_int_INT(FLTD self) {
  8839.  INT noname4569 = ((INT) 0);
  8840.  FLTD local0;
  8841.  return c_fltd_int(self);
  8842.  local0 = ((FLTD)noname4569);
  8843.  if (!((local0==self))) {
  8844.   fprintf(stderr,"Violation of postcondition ../Library/fltd.sa:472:6\n");
  8845.   exit(16);
  8846.  }
  8847. }
  8848.  
  8849.  
  8850. INT FLT_int_INT(FLT self) {
  8851.  INT noname4570 = ((INT) 0);
  8852.  return FLTD_int_INT(((FLTD)self));
  8853. }
  8854.  
  8855.  
  8856. BOOL INTI_is_lt_INTI_BOOL(INTI self, INTI y) {
  8857.  BOOL noname4571 = ((BOOL) 0);
  8858.  INT local0;
  8859.  local0 = INTI_cmp_INTI_INT(self, y);
  8860.  return (local0<0);
  8861. }
  8862.  
  8863.  
  8864. BOOL INTI_is_geq_INTI(INTI self, INTI y) {
  8865.  BOOL noname4572 = ((BOOL) 0);
  8866.  INT local0;
  8867.  local0 = INTI_cmp_INTI_INT(self, y);
  8868.  return (local0>=0);
  8869. }
  8870.  
  8871.  
  8872. BOOL INTI_is_gt_INTI_BOOL(INTI self, INTI y) {
  8873.  BOOL noname4573 = ((BOOL) 0);
  8874.  INT local0;
  8875.  local0 = INTI_cmp_INTI_INT(self, y);
  8876.  return (local0>0);
  8877. }
  8878.  
  8879.  
  8880. BOOL INT_is_even_BOOL(INT self) {
  8881.  BOOL noname4574 = ((BOOL) 0);
  8882.  INT local0;
  8883.  local0 = (self&1);
  8884.  return (local0==0);
  8885. }
  8886.  
  8887.  
  8888. BOOL INTI_is_odd_BOOL(INTI self) {
  8889.  BOOL noname4575 = ((BOOL) 0);
  8890.  BOOL local0;
  8891.  if (!(INT_is_even_BOOL(shared_INTI_B))) {
  8892.   fprintf(stderr,"Violation of assertion ../Library/inti.sa:289:25\n");
  8893.   exit(16);
  8894.  }
  8895.  if ((self->len_37==0)) {
  8896.   local0 = TRUE;
  8897.  } else {
  8898.   local0 = INT_is_odd_BOOL(INTI_aget_INT_INT(self, 0));
  8899.  }
  8900.  return local0;
  8901. }
  8902.  
  8903.  
  8904. TUPBOOLINTIINTBOOL RAT_float_INT_IN(RAT self, INT n_4576, INT b_4577) {
  8905.  TUPBOOLINTIINTBOOL noname4578 = TUPBOOLINTIINTBOOL_zero;
  8906.  INTI beta;
  8907.  INTI beta_n1;
  8908.  INTI beta_n;
  8909.  BOOL s_4579 = ((BOOL) 0);
  8910.  INTI u_4580;
  8911.  INTI v_4581;
  8912.  INT e_4582 = ((INT) 0);
  8913.  INTI m = ((INTI) NULL);
  8914.  INTI r_4583;
  8915.  INTI v_r;
  8916.  BOOL local0;
  8917.  TUPBOOLINTIINTBOOL local1;
  8918.  BOOL local2;
  8919.  INTI local3;
  8920.  INT local4;
  8921.  FLT local5;
  8922.  BOOL local6;
  8923.  BOOL local7;
  8924.  TUPBOOLINTIINTBOOL local8;
  8925.  if ((n_4576>0)) {
  8926.   local0 = (b_4577>1);
  8927.  } else {
  8928.   local0 = FALSE;
  8929.  }
  8930.  if (!(local0)) {
  8931.   fprintf(stderr,"Violation of precondition ../Library/rat.sa:90:8\n");
  8932.   exit(16);
  8933.  }
  8934.  if (INTI_is_zero_BOOL(self.u)) {
  8935.   local1 = TUPBOOLINTIINTBOOL_zero;
  8936.   local2 = FALSE;
  8937.   local3 = INTI_create_INT_INTI(((INTI) NULL), 0);
  8938.   return TUPBOOLINTIINTBO_4561(local1, local2, local3, 0, TRUE);
  8939.  }
  8940.  beta = INTI_create_INT_INTI(((INTI) NULL), b_4577);
  8941.  beta_n1 = INTI_pow_INT_INTI(beta, (c_INT_minus_INT_INT_chk(n_4576,1)));
  8942.  beta_n = INTI_times_INTI_INTI(beta_n1, beta);
  8943.  s_4579 = INTI_is_neg_BOOL(self.u);
  8944.  u_4580 = INTI_abs_INTI(self.u);
  8945.  v_4581 = self.v;
  8946.  if (!(INTI_is_pos_BOOL(v_4581))) {
  8947.   fprintf(stderr,"Violation of assertion ../Library/rat.sa:112:29\n");
  8948.   exit(16);
  8949.  }
  8950.  local4 = INTI_log2_INT(u_4580);
  8951.  e_4582 = (c_INT_minus_INT_INT_chk(local4,INTI_log2_INT(v_4581)));
  8952.  if ((b_4577!=2)) {
  8953.   local5 = ((FLT)e_4582);
  8954.   e_4582 = FLT_int_INT(FLT_round_FLT((local5/FLT_log2_FLT(((FLT)b_4577)))));
  8955.  }
  8956.  e_4582 = (c_INT_minus_INT_INT_chk(e_4582,n_4576));
  8957.  if ((e_4582<0)) {
  8958.   u_4580 = INTI_times_INTI_INTI(u_4580, INTI_pow_INT_INTI(beta, INT_negate_INT(e_4582)));
  8959.  }
  8960.  else {
  8961.   v_4581 = INTI_times_INTI_INTI(v_4581, INTI_pow_INT_INTI(beta, e_4582));
  8962.  }
  8963.  while (1) {
  8964.   m = INTI_div_INTI_INTI(u_4580, v_4581);
  8965.   if (INTI_is_lt_INTI_BOOL(m, beta_n1)) {
  8966.    u_4580 = INTI_times_INTI_INTI(u_4580, beta);
  8967.    e_4582 = (c_INT_minus_INT_INT_chk(e_4582,1));
  8968.   }
  8969.   else {
  8970.    if (INTI_is_geq_INTI(m, beta_n)) {
  8971.     v_4581 = INTI_times_INTI_INTI(v_4581, beta);
  8972.     e_4582 = (c_INT_plus_INT_INT_chk(e_4582,1));
  8973.    }
  8974.    else {
  8975.     goto after_loop;
  8976.    }
  8977.   }
  8978.  }
  8979.  after_loop: ;
  8980.  r_4583 = INTI_mod_INTI_INTI(u_4580, v_4581);
  8981.  v_r = INTI_minus_INTI_INTI(v_4581, r_4583);
  8982.  if (INTI_is_gt_INTI_BOOL(r_4583, v_r)) {
  8983.   local6 = TRUE;
  8984.  } else {
  8985.   if (INTI_is_eq_INTI_BOOL(r_4583, v_r)) {
  8986.    local7 = INTI_is_odd_BOOL(m);
  8987.   } else {
  8988.    local7 = FALSE;
  8989.   }
  8990.   local6 = local7;
  8991.  }
  8992.  if (local6) {
  8993.   m = INTI_plus_INTI_INTI(m, INTI_create_INT_INTI(((INTI) NULL), 1));
  8994.   if (INTI_is_eq_INTI_BOOL(m, beta_n)) {
  8995.    m = beta_n1;
  8996.    e_4582 = (c_INT_plus_INT_INT_chk(e_4582,1));
  8997.   }
  8998.  }
  8999.  local8 = TUPBOOLINTIINTBOOL_zero;
  9000.  return TUPBOOLINTIINTBO_4561(local8, s_4579, m, e_4582, INTI_is_zero_BOOL(r_4583));
  9001. }
  9002.  
  9003.  
  9004. STR RAT_str_INT_STR(RAT self, INT n_4585) {
  9005.  STR noname4586;
  9006.  TUPBOOLINTIINTBOOL x = TUPBOOLINTIINTBOOL_zero;
  9007.  STR s_4587;
  9008.  STR local0;
  9009.  if (!((n_4585>0))) {
  9010.   fprintf(stderr,"Violation of precondition ../Library/rat.sa:155:6\n");
  9011.   exit(16);
  9012.  }
  9013.  x = RAT_float_INT_IN(self, n_4585, 10);
  9014.  s_4587 = ((STR) &name_4588);
  9015.  if (x.t1) {
  9016.   s_4587 = STR_plus_CHAR_STR(s_4587, '-');
  9017.  }
  9018.  s_4587 = STR_plus_STR_STR(s_4587, INTI_str_STR(x.t2));
  9019.  if ((x.t3!=0)) {
  9020.   local0 = STR_plus_CHAR_STR(s_4587, 'e');
  9021.   s_4587 = STR_plus_INT_STR(local0, x.t3);
  9022.  }
  9023.  return s_4587;
  9024. }
  9025.  
  9026.  
  9027. STR BE_array_allocat(BE self, TP t_4589, STR n_4590) {
  9028.  STR noname4591;
  9029.  STR res = ((STR) NULL);
  9030.  STR call_string = ((STR) NULL);
  9031.  TP t2_4592;
  9032.  TP local0;
  9033.  TP local1;
  9034.  STR local2;
  9035.  STR local3;
  9036.  STR local4;
  9037.  STR local5;
  9038.  STR local6;
  9039.  STR local7;
  9040.  STR local8;
  9041.  STR local9;
  9042.  STR local10;
  9043.  STR local11;
  9044.  STR local12;
  9045.  STR local13;
  9046.  STR local14;
  9047.  STR local15;
  9048.  t2_4592 = PROG_am_ob_def_f(self->prog, t_4589)->arr;
  9049.  local0 = t_4589;
  9050.  if ((*TP_is_atomic_BOOL[local0->header.tag+TP_is_atomic_BOOL_offset])(local0)) {
  9051.   call_string = ((STR) &sbi_arr_alloc_at_4593);
  9052.  }
  9053.  else {
  9054.   call_string = ((STR) &sbi_arr_alloc_4594);
  9055.  }
  9056.  local1 = t_4589;
  9057.  if ((*TP_is_value_BOOL[local1->header.tag+TP_is_value_BOOL_offset])(local1)) {
  9058.   local2 = ((STR) &name_4595);
  9059.   local3 = STR_plus_STR_STR(local2, BE_mangle_OB_STR(self, ((OB) t_4589)));
  9060.   local4 = STR_plus_STR_STR(local3, ((STR) &S_boxed_4596));
  9061.   local5 = STR_plus_STR_STR(local4, call_string);
  9062.   res = STR_plus_STR_STR(local5, BE_sizeof_boxed_(self, t_4589));
  9063.  }
  9064.  else {
  9065.   local6 = ((STR) &name_4597);
  9066.   local7 = STR_plus_STR_STR(local6, BE_mangle_OB_STR(self, ((OB) t_4589)));
  9067.   local8 = STR_plus_STR_STR(local7, ((STR) &name_4598));
  9068.   local9 = STR_plus_STR_STR(local8, call_string);
  9069.   res = STR_plus_STR_STR(local9, BE_sizeof_TP_STR(self, t_4589));
  9070.  }
  9071.  local10 = STR_plus_STR_STR(res, ((STR) &name_4599));
  9072.  local11 = STR_plus_STR_STR(local10, BE_tag_for_TP_STR(self, t_4589));
  9073.  res = STR_plus_STR_STR(local11, ((STR) &name_4600));
  9074.  local12 = STR_plus_STR_STR(res, ((STR) &sizeof_4601));
  9075.  local13 = STR_plus_STR_STR(local12, BE_mangle_OB_STR(self, ((OB) t2_4592)));
  9076.  local14 = STR_plus_STR_STR(local13, ((STR) &name_4602));
  9077.  local15 = STR_plus_STR_STR(local14, n_4590);
  9078.  return STR_plus_STR_STR(local15, ((STR) &name_4603));
  9079. }
  9080.  
  9081.  
  9082. TP AM_VATTR_ASSIGN_(AM_VATTR_ASSIGN_EXPR self) {
  9083.  TP noname4604;
  9084.  AM_EXPR local0;
  9085.  local0 = self->ob;
  9086.  return (*AM_EXPR_tp_TP[local0->header.tag+AM_EXPR_tp_TP_offset])(local0);
  9087. }
  9088.