home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / sa104os2.zip / SATHR104.ZIP / SATHER / BOOT / CS.COD / CODE0.C next >
C/C++ Source or Header  |  1995-02-15  |  224KB  |  8,259 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. OPTIONS OPTIONS_create_O(OPTIONS self) {
  11.  OPTIONS noname61;
  12.  OPTIONS r;
  13.  OPTIONS local0;
  14.  local0 = ((OPTIONS) sbi_alloc(sizeof(struct OPTIONS_struct), OPTIONS_tag));
  15.  r = local0;
  16.  r->bounds_all = TRUE;
  17.  r->void_all = TRUE;
  18.  r->when_all = TRUE;
  19.  r->return_all = TRUE;
  20.  r->main_class = ((STR) &MAIN);
  21.  return r;
  22. }
  23.  
  24.  
  25. TP_TBL TP_TBL_create_PR(TP_TBL self, PROG prog_62) {
  26.  TP_TBL noname63;
  27.  TP_TBL r;
  28.  TP_TBL local0;
  29.  local0 = ((TP_TBL) sbi_alloc(sizeof(struct TP_TBL_struct), TP_TBL_tag));
  30.  r = local0;
  31.  r->prog = prog_62;
  32.  return r;
  33. }
  34.  
  35.  
  36. INT STR_asize_INT(STR self) {
  37.  INT noname64 = ((INT) 0);
  38.   return self->asize;
  39.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  40.  exit(16);
  41. }
  42.  
  43.  
  44. BOOL INT_is_bet_INT_I(INT self, INT l, INT u_65) {
  45.  BOOL noname66 = ((BOOL) 0);
  46.  BOOL local0;
  47.  BOOL local1;
  48.  BOOL local2;
  49.  if ((l<=self)) {
  50.   local1 = (self<=u_65);
  51.  } else {
  52.   local1 = FALSE;
  53.  }
  54.  if (local1) {
  55.   local0 = TRUE;
  56.  } else {
  57.   if ((u_65<=self)) {
  58.    local2 = (self<=l);
  59.   } else {
  60.    local2 = FALSE;
  61.   }
  62.   local0 = local2;
  63.  }
  64.  return local0;
  65. }
  66.  
  67.  
  68. CHAR STR_aget_INT_CHAR(STR self, INT ind_67) {
  69.  CHAR noname68 = ((CHAR) 0);
  70.  BOOL local0;
  71.  INT local1;
  72.  INT local2;
  73.  if ((!((self==((STR) NULL))))) {
  74.   local1 = 0;
  75.   local2 = (self->asize);
  76.   local0 = INT_is_bet_INT_I(ind_67, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  77.  } else {
  78.   local0 = FALSE;
  79.  }
  80.  if (!(local0)) {
  81.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  82.   exit(16);
  83.  }
  84.  if (ind_67<0||ind_67>=self->asize) {
  85.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  86.   exit(16);
  87.  }
  88.  return self->arr_part[ind_67];
  89. }
  90.  
  91.  
  92. INT STR_hash_INT(STR self) {
  93.  INT noname69 = ((INT) 0);
  94.  INT i = ((INT) 0);
  95.  INT r = ((INT) 0);
  96.  INT local0;
  97.  INT local1;
  98.  INT local2;
  99.  INT local3;
  100.  INT local4;
  101.  if ((self==((STR) NULL))) {
  102.   return 0;
  103.  }
  104.  local0 = (self->asize);
  105.  if ((local0==0)) {
  106.   return 0;
  107.  }
  108.  local1 = (self->asize);
  109.  i = (c_INT_minus_INT_INT_chk(local1,1));
  110.  local2 = 532415;
  111.  r = (c_INT_uplus_INT_INT_chk(local2,((INT)STR_aget_INT_CHAR(self, i))));
  112.  i = (c_INT_minus_INT_INT_chk(i,1));
  113.  while (1) {
  114.   if ((i>=0)) {
  115.   }
  116.   else {
  117.    goto after_loop;
  118.   }
  119.   local3 = (c_INT_utimes_INT_INT_chk(r,1664525));
  120.   local4 = (c_INT_uplus_INT_INT_chk(local3,1013904223));
  121.   r = (c_INT_uplus_INT_INT_chk(local4,((INT)STR_aget_INT_CHAR(self, i))));
  122.   i = (c_INT_minus_INT_INT_chk(i,1));
  123.  }
  124.  after_loop: ;
  125.  return r;
  126. }
  127.  
  128.  
  129. INT IDENT_TBL_query_(IDENT_TBL self, STR s_71) {
  130.  INT noname72 = ((INT) 0);
  131.  return STR_hash_INT(s_71);
  132.  if (!IDENT_TBL_invari(self)) {
  133.   fprintf(stderr,"Failed invariant IDENT_TBL::invariant:BOOL ./ident.sa:63:13\n");
  134.   exit(16);
  135.  }
  136. }
  137.  
  138.  
  139. INT IDENT_TBL_asize_INT(IDENT_TBL self) {
  140.  INT noname73 = ((INT) 0);
  141.   return self->asize;
  142.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  143.  exit(16);
  144. }
  145.  
  146.  
  147. IDENT IDENT_TBL_aget_I(IDENT_TBL self, INT ind_74) {
  148.  IDENT noname75 = IDENT_zero;
  149.  BOOL local0;
  150.  INT local1;
  151.  INT local2;
  152.  if ((!((self==((IDENT_TBL) NULL))))) {
  153.   local1 = 0;
  154.   local2 = (self->asize);
  155.   local0 = INT_is_bet_INT_I(ind_74, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  156.  } else {
  157.   local0 = FALSE;
  158.  }
  159.  if (!(local0)) {
  160.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  161.   exit(16);
  162.  }
  163.  if (ind_74<0||ind_74>=self->asize) {
  164.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  165.   exit(16);
  166.  }
  167.  return self->arr_part[ind_74];
  168. }
  169.  
  170.  
  171. BOOL STR_is_eq_STR_BOOL(STR self, STR s_76) {
  172.  BOOL noname77 = ((BOOL) 0);
  173.  INT local0;
  174.  INT local1;
  175.  INT local2;
  176.  if ((self==((STR) NULL))) {
  177.   if ((s_76==((STR) NULL))) {
  178.    return TRUE;
  179.   }
  180.   else {
  181.    local0 = (s_76->asize);
  182.    if ((local0==0)) {
  183.     return TRUE;
  184.    }
  185.    else {
  186.     return FALSE;
  187.    }
  188.   }
  189.  }
  190.  else {
  191.   if ((s_76==((STR) NULL))) {
  192.    local1 = (self->asize);
  193.    if ((local1==0)) {
  194.     return TRUE;
  195.    }
  196.    else {
  197.     return FALSE;
  198.    }
  199.   }
  200.   else {
  201.    local2 = (self->asize);
  202.    if ((local2!=(s_76->asize))) {
  203.     return FALSE;
  204.    }
  205.   }
  206.  }
  207.  return ((memcmp(self->arr_part,s_76->arr_part,(self->asize))==0 ? TRUE : FALSE));
  208. }
  209.  
  210.  
  211. BOOL IDENT_TBL_query__78(IDENT_TBL self, STR s_79, IDENT i) {
  212.  BOOL noname80 = ((BOOL) 0);
  213.  return STR_is_eq_STR_BOOL(s_79, i.str_4);
  214.  if (!IDENT_TBL_invari(self)) {
  215.   fprintf(stderr,"Failed invariant IDENT_TBL::invariant:BOOL ./ident.sa:59:13\n");
  216.   exit(16);
  217.  }
  218. }
  219.  
  220.  
  221. IDENT IDENT_TBL_elt_ni(IDENT_TBL self) {
  222.  IDENT noname81 = IDENT_zero;
  223.  IDENT t = IDENT_zero;
  224.  return IDENT_zero;
  225.  if (!IDENT_TBL_invari(self)) {
  226.   fprintf(stderr,"Failed invariant IDENT_TBL::invariant:BOOL ../Library/fqset.sa:69:10\n");
  227.   exit(16);
  228.  }
  229. }
  230.  
  231.  
  232. BOOL IDENT_is_eq_IDEN(IDENT self, IDENT i) {
  233.  BOOL noname82 = ((BOOL) 0);
  234.  return c_SYS_ob_eq_OB_OB_BOOL(((OB) self.str_4),((OB) i.str_4));
  235. }
  236.  
  237.  
  238. BOOL IDENT_TBL_elt_eq(IDENT_TBL self, IDENT e1_83, IDENT e2_84) {
  239.  BOOL noname85 = ((BOOL) 0);
  240.  OB local0;
  241.  OB local1;
  242.  return IDENT_is_eq_IDEN(e1_83, e2_84);
  243.  local0 = (OB)((IDENT_boxed) sbi_alloc(sizeof(struct IDENT_boxed_struct), IDENT_tag));
  244.  ((IDENT_boxed) local0)->value_part = e1_83;
  245.  local1 = (OB)((IDENT_boxed) sbi_alloc(sizeof(struct IDENT_boxed_struct), IDENT_tag));
  246.  ((IDENT_boxed) local1)->value_part = e2_84;
  247.  return c_SYS_ob_eq_OB_OB_BOOL(local0,local1);
  248.  if (!IDENT_TBL_invari(self)) {
  249.   fprintf(stderr,"Failed invariant IDENT_TBL::invariant:BOOL ../Library/fqset.sa:62:9\n");
  250.   exit(16);
  251.  }
  252. }
  253.  
  254.  
  255. IDENT IDENT_TBL_get_qu(IDENT_TBL self, STR q) {
  256.  IDENT noname86 = IDENT_zero;
  257.  INT h = ((INT) 0);
  258.  IDENT e_87 = IDENT_zero;
  259.  IDENT e_88 = IDENT_zero;
  260.  INT local0;
  261.  INT local1;
  262.  INT local2;
  263.  INT local3;
  264.  if ((self==((IDENT_TBL) NULL))) {
  265.   return IDENT_zero;
  266.  }
  267.  local0 = IDENT_TBL_query_(self, q);
  268.  local1 = (self->asize);
  269.  h = (local0&(c_INT_minus_INT_INT_chk(local1,2)));
  270.  while (1) {
  271.   e_87 = IDENT_TBL_aget_I(self, h);
  272.   if (IDENT_TBL_query__78(self, q, e_87)) {
  273.    return e_87;
  274.   }
  275.   else {
  276.    if (IDENT_TBL_elt_eq(self, e_87, IDENT_TBL_elt_ni(self))) {
  277.     goto after_loop;
  278.    }
  279.   }
  280.   h = (c_INT_plus_INT_INT_chk(h,1));
  281.  }
  282.  after_loop: ;
  283.  local2 = (self->asize);
  284.  if ((h==(c_INT_minus_INT_INT_chk(local2,1)))) {
  285.   h = 0;
  286.   while (1) {
  287.    e_88 = IDENT_TBL_aget_I(self, h);
  288.    if (IDENT_TBL_query__78(self, q, e_88)) {
  289.     return e_88;
  290.    }
  291.    else {
  292.     if (IDENT_TBL_elt_eq(self, e_88, IDENT_TBL_elt_ni(self))) {
  293.      goto after_loop_90;
  294.     }
  295.    }
  296.    h = (c_INT_plus_INT_INT_chk(h,1));
  297.   }
  298.   after_loop_90: ;
  299.   local3 = (self->asize);
  300.   if (!((h!=(c_INT_minus_INT_INT_chk(local3,1))))) {
  301.    fprintf(stderr,"Violation of assertion ../Library/fqset.sa:142:15\n");
  302.    exit(16);
  303.   }
  304.  }
  305.  return IDENT_TBL_elt_ni(self);
  306.  if (!IDENT_TBL_invari(self)) {
  307.   fprintf(stderr,"Failed invariant IDENT_TBL::invariant:BOOL ../Library/fqset.sa:128:12\n");
  308.   exit(16);
  309.  }
  310. }
  311.  
  312.  
  313. IDENT IDENT_str_STR_IDENT(IDENT self, STR str_92) {
  314.  IDENT local0;
  315.  local0 = self;
  316.  local0.str_4 = str_92;
  317.  return local0;
  318. }
  319.  
  320.  
  321. IDENT IDENT_create_STR(IDENT self, STR s_93) {
  322.  IDENT noname94 = IDENT_zero;
  323.  IDENT r = IDENT_zero;
  324.  return IDENT_str_STR_IDENT(r, s_93);
  325. }
  326.  
  327.  
  328. IDENT_TBL IDENT_TBL_alloca(IDENT_TBL self, INT n) {
  329.  IDENT_TBL noname95;
  330.  IDENT_TBL r;
  331.  IDENT_TBL noname96;
  332.  IDENT_TBL local0;
  333.  local0 = ((IDENT_TBL) sbi_arr_alloc(sizeof(struct IDENT_TBL_struct), IDENT_TBL_tag, sizeof(IDENT) , n));
  334.  local0->asize = n;
  335.  r = local0;
  336.  if ((!(((IDENT_blob=IDENT_TBL_elt_ni(self)).str_4==(STR)0)))) {
  337.   {
  338.    struct IDENT_TBL_aset_IDENT_frame_struct temp97_0;
  339.    IDENT_TBL_aset_IDENT_frame 
  340.    noname98 = &temp97_0;
  341.    noname98->state = 0;
  342.    while (1) {
  343.     if (noname98->state == 0) {
  344.      noname96 = r;
  345.      noname98->arg0 = noname96;
  346.     }
  347.     noname98->arg1 = IDENT_TBL_elt_ni(self);
  348.     IDENT_TBL_aset_IDENT(noname98);
  349.     if (noname98->state == -1) goto after_loop;
  350.     0 /* No return value from iter call */;
  351.    }
  352.   }
  353.   after_loop: ;
  354.  }
  355.  return r;
  356. }
  357.  
  358.  
  359. IDENT_TBL IDENT_TBL_double(IDENT_TBL self) {
  360.  IDENT_TBL noname99;
  361.  IDENT_TBL r;
  362.  IDENT_TBL noname100;
  363.  INT local0;
  364.  INT local1;
  365.  INT local2;
  366.  IDENT local3;
  367.  if (!((!((self==((IDENT_TBL) NULL)))))) {
  368.   fprintf(stderr,"Violation of precondition ../Library/fqset.sa:190:22\n");
  369.   exit(16);
  370.  }
  371.  local0 = (self->asize);
  372.  local1 = (c_INT_minus_INT_INT_chk(local0,1));
  373.  local2 = (c_INT_times_INT_INT_chk(local1,2));
  374.  r = IDENT_TBL_alloca(self, (c_INT_plus_INT_INT_chk(local2,1)));
  375.  {
  376.   struct IDENT_TBL_elt_IDENT_frame_struct temp101_0;
  377.   IDENT_TBL_elt_IDENT_frame 
  378.   noname102 = &temp101_0;
  379.   noname102->state = 0;
  380.   while (1) {
  381.    if (noname102->state == 0) {
  382.     noname100 = self;
  383.     noname102->arg0 = noname100;
  384.    }
  385.    local3 = IDENT_TBL_elt_IDENT(noname102);
  386.    if (noname102->state == -1) goto after_loop;
  387.    r = IDENT_TBL_insert(r, local3);
  388.   }
  389.  }
  390.  after_loop: ;
  391.  return r;
  392. }
  393.  
  394.  
  395. INT IDENT_TBL_elt_ha(IDENT_TBL self, IDENT i) {
  396.  INT noname103 = ((INT) 0);
  397.  return STR_hash_INT(i.str_4);
  398.  if (!IDENT_TBL_invari(self)) {
  399.   fprintf(stderr,"Failed invariant IDENT_TBL::invariant:BOOL ./ident.sa:67:11\n");
  400.   exit(16);
  401.  }
  402. }
  403.  
  404.  
  405. void IDENT_TBL_aset_I(IDENT_TBL self, INT ind_104, IDENT val_105) {
  406.  BOOL local0;
  407.  INT local1;
  408.  INT local2;
  409.  if ((!((self==((IDENT_TBL) NULL))))) {
  410.   local1 = 0;
  411.   local2 = (self->asize);
  412.   local0 = INT_is_bet_INT_I(ind_104, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  413.  } else {
  414.   local0 = FALSE;
  415.  }
  416.  if (!(local0)) {
  417.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  418.   exit(16);
  419.  }
  420.  if (ind_104<0||ind_104>=self->asize) {
  421.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  422.   exit(16);
  423.  }
  424.  self->arr_part[ind_104] = val_105;
  425. }
  426.  
  427.  
  428. IDENT_TBL IDENT_TBL_insert(IDENT_TBL self, IDENT e_106) {
  429.  IDENT_TBL noname107;
  430.  IDENT_TBL r;
  431.  INT asz_108 = ((INT) 0);
  432.  INT h = ((INT) 0);
  433.  IDENT te = IDENT_zero;
  434.  IDENT te_109 = IDENT_zero;
  435.  INT local0;
  436.  INT local1;
  437.  INT local2;
  438.  r = self;
  439.  if (IDENT_TBL_elt_eq(self, e_106, IDENT_TBL_elt_ni(self))) {
  440.   return r;
  441.  }
  442.  if ((r==((IDENT_TBL) NULL))) {
  443.   r = IDENT_TBL_alloca(self, 5);
  444.  }
  445.  else {
  446.   local0 = (c_INT_plus_INT_INT_chk(self->hsize,1));
  447.   local1 = (c_INT_times_INT_INT_chk(local0,2));
  448.   if ((local1>(self->asize))) {
  449.    r = IDENT_TBL_double(r);
  450.   }
  451.  }
  452.  asz_108 = (r->asize);
  453.  local2 = IDENT_TBL_elt_ha(r, e_106);
  454.  h = (local2&(c_INT_minus_INT_INT_chk(asz_108,2)));
  455.  while (1) {
  456.   te = IDENT_TBL_aget_I(r, h);
  457.   if (IDENT_TBL_elt_eq(self, te, IDENT_TBL_elt_ni(self))) {
  458.    goto after_loop;
  459.   }
  460.   else {
  461.    if (IDENT_TBL_elt_eq(self, te, e_106)) {
  462.     IDENT_TBL_aset_I(r, h, e_106);
  463.     return r;
  464.    }
  465.   }
  466.   h = (c_INT_plus_INT_INT_chk(h,1));
  467.  }
  468.  after_loop: ;
  469.  if ((h==(c_INT_minus_INT_INT_chk(asz_108,1)))) {
  470.   h = 0;
  471.   while (1) {
  472.    te_109 = IDENT_TBL_aget_I(r, h);
  473.    if (IDENT_TBL_elt_eq(self, te_109, IDENT_TBL_elt_ni(self))) {
  474.     goto after_loop_111;
  475.    }
  476.    else {
  477.     if (IDENT_TBL_elt_eq(self, te_109, e_106)) {
  478.      IDENT_TBL_aset_I(r, h, e_106);
  479.      return r;
  480.     }
  481.    }
  482.    h = (c_INT_plus_INT_INT_chk(h,1));
  483.   }
  484.   after_loop_111: ;
  485.   if (!((h!=(c_INT_minus_INT_INT_chk(asz_108,1))))) {
  486.    fprintf(stderr,"Violation of assertion ../Library/fqset.sa:218:15\n");
  487.    exit(16);
  488.   }
  489.  }
  490.  IDENT_TBL_aset_I(r, h, e_106);
  491.  r->hsize = (c_INT_plus_INT_INT_chk(r->hsize,1));
  492.  return r;
  493.  if (!IDENT_TBL_invari(self)) {
  494.   fprintf(stderr,"Failed invariant IDENT_TBL::invariant:BOOL ../Library/fqset.sa:198:9\n");
  495.   exit(16);
  496.  }
  497. }
  498.  
  499.  
  500. IDENT PROG_ident_for_S(PROG self, STR s_113) {
  501.  IDENT noname114 = IDENT_zero;
  502.  IDENT i = IDENT_zero;
  503.  i = IDENT_TBL_get_qu(self->ident_tbl, s_113);
  504.  if ((i.str_4==(STR)0)) {
  505.   i = IDENT_create_STR(IDENT_zero, s_113);
  506.   self->ident_tbl = IDENT_TBL_insert(self->ident_tbl, i);
  507.  }
  508.  return i;
  509. }
  510.  
  511.  
  512. TUPIDENTARRAYTP TUPIDENTARRAYTP_(TUPIDENTARRAYTP self, IDENT t1_115) {
  513.  TUPIDENTARRAYTP local0;
  514.  local0 = self;
  515.  local0.t1 = t1_115;
  516.  return local0;
  517. }
  518.  
  519.  
  520. TUPIDENTARRAYTP TUPIDENTARRAYTP__116(TUPIDENTARRAYTP self, ARRAYTP t2_117) {
  521.  TUPIDENTARRAYTP local0;
  522.  local0 = self;
  523.  local0.t2 = t2_117;
  524.  return local0;
  525. }
  526.  
  527.  
  528. TUPIDENTARRAYTP TUPIDENTARRAYTP__118(TUPIDENTARRAYTP self, IDENT at1, ARRAYTP at2) {
  529.  TUPIDENTARRAYTP noname119 = TUPIDENTARRAYTP_zero;
  530.  TUPIDENTARRAYTP local0;
  531.  local0 = TUPIDENTARRAYTP_(self, at1);
  532.  return TUPIDENTARRAYTP__116(local0, at2);
  533. }
  534.  
  535.  
  536. INT IDENT_hash_INT(IDENT self) {
  537.  INT noname120 = ((INT) 0);
  538.  INT x = ((INT) 0);
  539.  INT local0;
  540.  x = (c_SYS_id_OB_INT(((SYS) NULL),((OB) self.str_4)));
  541.  local0 = (c_INT_times_INT_INT_chk(x,1664525));
  542.  return (c_INT_plus_INT_INT_chk(local0,1013904223));
  543. }
  544.  
  545.  
  546. INT TP_CLASS_TBL_que(TP_CLASS_TBL self, TUPIDENTARRAYTP q) {
  547.  INT noname121 = ((INT) 0);
  548.  INT s_122 = ((INT) 0);
  549.  INT r = ((INT) 0);
  550.  ARRAYTP noname123;
  551.  SYS local0;
  552.  TP local1;
  553.  INT local2;
  554.  s_122 = 3;
  555.  r = IDENT_hash_INT(q.t1);
  556.  {
  557.   struct ARRAYTP_elt_TP_frame_struct temp124_0;
  558.   ARRAYTP_elt_TP_frame 
  559.   noname125 = &temp124_0;
  560.   noname125->state = 0;
  561.   while (1) {
  562.    s_122 = (c_INT_plus_INT_INT_chk(s_122,98));
  563.    local0 = ((SYS) NULL);
  564.    if (noname125->state == 0) {
  565.     noname123 = q.t2;
  566.     noname125->arg0 = noname123;
  567.    }
  568.    local1 = ARRAYTP_elt_TP(noname125);
  569.    if (noname125->state == -1) goto after_loop;
  570.    local2 = (c_SYS_id_OB_INT(local0,((OB) local1)));
  571.    r = (r^(c_INT_times_INT_INT_chk(local2,s_122)));
  572.   }
  573.  }
  574.  after_loop: ;
  575.  return r;
  576.  if (!TP_CLASS_TBL_inv(self)) {
  577.   fprintf(stderr,"Failed invariant TP_CLASS_TBL::invariant:BOOL ./tp.sa:554:13\n");
  578.   exit(16);
  579.  }
  580. }
  581.  
  582.  
  583. INT TP_CLASS_TBL_asi(TP_CLASS_TBL self) {
  584.  INT noname126 = ((INT) 0);
  585.   return self->asize;
  586.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  587.  exit(16);
  588. }
  589.  
  590.  
  591. TP_CLASS TP_CLASS_TBL_age(TP_CLASS_TBL self, INT ind_127) {
  592.  TP_CLASS noname128;
  593.  BOOL local0;
  594.  INT local1;
  595.  INT local2;
  596.  if ((!((self==((TP_CLASS_TBL) NULL))))) {
  597.   local1 = 0;
  598.   local2 = (self->asize);
  599.   local0 = INT_is_bet_INT_I(ind_127, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  600.  } else {
  601.   local0 = FALSE;
  602.  }
  603.  if (!(local0)) {
  604.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  605.   exit(16);
  606.  }
  607.  if (ind_127<0||ind_127>=self->asize) {
  608.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  609.   exit(16);
  610.  }
  611.  return self->arr_part[ind_127];
  612. }
  613.  
  614.  
  615. BOOL IDENT_is_neq_IDE(IDENT self, IDENT i) {
  616.  BOOL noname129 = ((BOOL) 0);
  617.  return (!(c_SYS_ob_eq_OB_OB_BOOL(((OB) self.str_4),((OB) i.str_4))));
  618. }
  619.  
  620.  
  621. INT ARRAYTP_asize_INT(ARRAYTP self) {
  622.  INT noname130 = ((INT) 0);
  623.   return self->asize;
  624.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  625.  exit(16);
  626. }
  627.  
  628.  
  629. INT ARRAYTP_size_INT(ARRAYTP self) {
  630.  INT noname131 = ((INT) 0);
  631.  if ((self==((ARRAYTP) NULL))) {
  632.   return 0;
  633.  }
  634.  return (self->asize);
  635. }
  636.  
  637.  
  638. BOOL TP_CLASS_TBL_que_132(TP_CLASS_TBL self, TUPIDENTARRAYTP q, TP_CLASS t) {
  639.  BOOL noname133 = ((BOOL) 0);
  640.  ARRAYTP noname134;
  641.  ARRAYTP noname135;
  642.  INT local0;
  643.  TP local1;
  644.  TP local2;
  645.  TP local3;
  646.  TP local4;
  647.  if ((t==((TP_CLASS) NULL))) {
  648.   return FALSE;
  649.  }
  650.  if (IDENT_is_neq_IDE(q.t1, t->name_19)) {
  651.   return FALSE;
  652.  }
  653.  local0 = ARRAYTP_size_INT(q.t2);
  654.  if ((local0!=ARRAYTP_size_INT(t->params))) {
  655.   return FALSE;
  656.  }
  657.  {
  658.   struct ARRAYTP_elt_TP_frame_struct temp136_0;
  659.   ARRAYTP_elt_TP_frame 
  660.   noname137 = &temp136_0;
  661.   struct ARRAYTP_elt_TP_frame_struct temp136_1;
  662.   ARRAYTP_elt_TP_frame 
  663.   noname138 = &temp136_1;
  664.   noname137->state = 0;
  665.   noname138->state = 0;
  666.   while (1) {
  667.    if (noname137->state == 0) {
  668.     noname134 = q.t2;
  669.     noname137->arg0 = noname134;
  670.    }
  671.    local1 = ARRAYTP_elt_TP(noname137);
  672.    if (noname137->state == -1) goto after_loop;
  673.    local2 = local1;
  674.    if (noname138->state == 0) {
  675.     noname135 = t->params;
  676.     noname138->arg0 = noname135;
  677.    }
  678.    local3 = ARRAYTP_elt_TP(noname138);
  679.    if (noname138->state == -1) goto after_loop;
  680.    local4 = local2;
  681.    if ((*TP_is_neq_TP_BOOL[local4->header.tag+TP_is_neq_TP_BOOL_offset])(local4, local3)) {
  682.     return FALSE;
  683.    }
  684.   }
  685.  }
  686.  after_loop: ;
  687.  return TRUE;
  688.  if (!TP_CLASS_TBL_inv(self)) {
  689.   fprintf(stderr,"Failed invariant TP_CLASS_TBL::invariant:BOOL ./tp.sa:546:13\n");
  690.   exit(16);
  691.  }
  692. }
  693.  
  694.  
  695. TP_CLASS TP_CLASS_TBL_elt(TP_CLASS_TBL self) {
  696.  TP_CLASS noname139;
  697.  TP_CLASS t = ((TP_CLASS) NULL);
  698.  return ((TP_CLASS) NULL);
  699.  if (!TP_CLASS_TBL_inv(self)) {
  700.   fprintf(stderr,"Failed invariant TP_CLASS_TBL::invariant:BOOL ../Library/fqset.sa:69:10\n");
  701.   exit(16);
  702.  }
  703. }
  704.  
  705.  
  706. BOOL TP_CLASS_TBL_elt_140(TP_CLASS_TBL self, TP_CLASS e1_141, TP_CLASS e2_142) {
  707.  BOOL noname143 = ((BOOL) 0);
  708.  return c_SYS_ob_eq_OB_OB_BOOL(((OB) e1_141),((OB) e2_142));
  709.  if (!TP_CLASS_TBL_inv(self)) {
  710.   fprintf(stderr,"Failed invariant TP_CLASS_TBL::invariant:BOOL ../Library/fqset.sa:62:9\n");
  711.   exit(16);
  712.  }
  713. }
  714.  
  715.  
  716. TP_CLASS TP_CLASS_TBL_get(TP_CLASS_TBL self, TUPIDENTARRAYTP q) {
  717.  TP_CLASS noname144;
  718.  INT h = ((INT) 0);
  719.  TP_CLASS e_145;
  720.  TP_CLASS e_146;
  721.  INT local0;
  722.  INT local1;
  723.  INT local2;
  724.  INT local3;
  725.  if ((self==((TP_CLASS_TBL) NULL))) {
  726.   return ((TP_CLASS) NULL);
  727.  }
  728.  local0 = TP_CLASS_TBL_que(self, q);
  729.  local1 = (self->asize);
  730.  h = (local0&(c_INT_minus_INT_INT_chk(local1,2)));
  731.  while (1) {
  732.   e_145 = TP_CLASS_TBL_age(self, h);
  733.   if (TP_CLASS_TBL_que_132(self, q, e_145)) {
  734.    return e_145;
  735.   }
  736.   else {
  737.    if (TP_CLASS_TBL_elt_140(self, e_145, TP_CLASS_TBL_elt(self))) {
  738.     goto after_loop;
  739.    }
  740.   }
  741.   h = (c_INT_plus_INT_INT_chk(h,1));
  742.  }
  743.  after_loop: ;
  744.  local2 = (self->asize);
  745.  if ((h==(c_INT_minus_INT_INT_chk(local2,1)))) {
  746.   h = 0;
  747.   while (1) {
  748.    e_146 = TP_CLASS_TBL_age(self, h);
  749.    if (TP_CLASS_TBL_que_132(self, q, e_146)) {
  750.     return e_146;
  751.    }
  752.    else {
  753.     if (TP_CLASS_TBL_elt_140(self, e_146, TP_CLASS_TBL_elt(self))) {
  754.      goto after_loop_148;
  755.     }
  756.    }
  757.    h = (c_INT_plus_INT_INT_chk(h,1));
  758.   }
  759.   after_loop_148: ;
  760.   local3 = (self->asize);
  761.   if (!((h!=(c_INT_minus_INT_INT_chk(local3,1))))) {
  762.    fprintf(stderr,"Violation of assertion ../Library/fqset.sa:142:15\n");
  763.    exit(16);
  764.   }
  765.  }
  766.  return TP_CLASS_TBL_elt(self);
  767.  if (!TP_CLASS_TBL_inv(self)) {
  768.   fprintf(stderr,"Failed invariant TP_CLASS_TBL::invariant:BOOL ../Library/fqset.sa:128:12\n");
  769.   exit(16);
  770.  }
  771. }
  772.  
  773.  
  774. TP_CLASS TP_CLASS_create_(TP_CLASS self, IDENT name_150, ARRAYTP params_151, PROG prog_152) {
  775.  TP_CLASS noname153;
  776.  TP_CLASS r;
  777.  TP_CLASS local0;
  778.  local0 = ((TP_CLASS) sbi_alloc(sizeof(struct TP_CLASS_struct), TP_CLASS_tag));
  779.  r = local0;
  780.  r->name_19 = name_150;
  781.  r->params = params_151;
  782.  r->prog = prog_152;
  783.  r->kind_cache = shared_TP_KIND_m;
  784.  r->use_cached_atomic = FALSE;
  785.  return r;
  786. }
  787.  
  788.  
  789. TP_CLASS_TBL TP_CLASS_TBL_all(TP_CLASS_TBL self, INT n) {
  790.  TP_CLASS_TBL noname154;
  791.  TP_CLASS_TBL r;
  792.  TP_CLASS_TBL noname155;
  793.  TP_CLASS_TBL local0;
  794.  local0 = ((TP_CLASS_TBL) sbi_arr_alloc(sizeof(struct TP_CLASS_TBL_struct), TP_CLASS_TBL_tag, sizeof(TP_CLASS) , n));
  795.  local0->asize = n;
  796.  r = local0;
  797.  if ((!((TP_CLASS_TBL_elt(self)==((TP_CLASS) NULL))))) {
  798.   {
  799.    struct TP_CLASS_TBL_ase_frame_struct temp156_0;
  800.    TP_CLASS_TBL_ase_frame 
  801.    noname157 = &temp156_0;
  802.    noname157->state = 0;
  803.    while (1) {
  804.     if (noname157->state == 0) {
  805.      noname155 = r;
  806.      noname157->arg0 = noname155;
  807.     }
  808.     noname157->arg1 = TP_CLASS_TBL_elt(self);
  809.     TP_CLASS_TBL_ase(noname157);
  810.     if (noname157->state == -1) goto after_loop;
  811.     0 /* No return value from iter call */;
  812.    }
  813.   }
  814.   after_loop: ;
  815.  }
  816.  return r;
  817. }
  818.  
  819.  
  820. TP_CLASS_TBL TP_CLASS_TBL_dou(TP_CLASS_TBL self) {
  821.  TP_CLASS_TBL noname158;
  822.  TP_CLASS_TBL r;
  823.  TP_CLASS_TBL noname159;
  824.  INT local0;
  825.  INT local1;
  826.  INT local2;
  827.  TP_CLASS local3;
  828.  if (!((!((self==((TP_CLASS_TBL) NULL)))))) {
  829.   fprintf(stderr,"Violation of precondition ../Library/fqset.sa:190:22\n");
  830.   exit(16);
  831.  }
  832.  local0 = (self->asize);
  833.  local1 = (c_INT_minus_INT_INT_chk(local0,1));
  834.  local2 = (c_INT_times_INT_INT_chk(local1,2));
  835.  r = TP_CLASS_TBL_all(self, (c_INT_plus_INT_INT_chk(local2,1)));
  836.  {
  837.   struct TP_CLASS_TBL_elt_161_frame_struct temp160_0;
  838.   TP_CLASS_TBL_elt_161_frame 
  839.   noname162 = &temp160_0;
  840.   noname162->state = 0;
  841.   while (1) {
  842.    if (noname162->state == 0) {
  843.     noname159 = self;
  844.     noname162->arg0 = noname159;
  845.    }
  846.    local3 = TP_CLASS_TBL_elt_161(noname162);
  847.    if (noname162->state == -1) goto after_loop;
  848.    r = TP_CLASS_TBL_ins(r, local3);
  849.   }
  850.  }
  851.  after_loop: ;
  852.  return r;
  853. }
  854.  
  855.  
  856. INT TP_CLASS_TBL_elt_163(TP_CLASS_TBL self, TP_CLASS e_164) {
  857.  INT noname165 = ((INT) 0);
  858.  INT s_166 = ((INT) 0);
  859.  INT r = ((INT) 0);
  860.  ARRAYTP noname167;
  861.  SYS local0;
  862.  TP local1;
  863.  INT local2;
  864.  s_166 = 3;
  865.  r = IDENT_hash_INT(e_164->name_19);
  866.  {
  867.   struct ARRAYTP_elt_TP_frame_struct temp168_0;
  868.   ARRAYTP_elt_TP_frame 
  869.   noname169 = &temp168_0;
  870.   noname169->state = 0;
  871.   while (1) {
  872.    s_166 = (c_INT_plus_INT_INT_chk(s_166,98));
  873.    local0 = ((SYS) NULL);
  874.    if (noname169->state == 0) {
  875.     noname167 = e_164->params;
  876.     noname169->arg0 = noname167;
  877.    }
  878.    local1 = ARRAYTP_elt_TP(noname169);
  879.    if (noname169->state == -1) goto after_loop;
  880.    local2 = (c_SYS_id_OB_INT(local0,((OB) local1)));
  881.    r = (r^(c_INT_times_INT_INT_chk(local2,s_166)));
  882.   }
  883.  }
  884.  after_loop: ;
  885.  return r;
  886.  if (!TP_CLASS_TBL_inv(self)) {
  887.   fprintf(stderr,"Failed invariant TP_CLASS_TBL::invariant:BOOL ./tp.sa:561:11\n");
  888.   exit(16);
  889.  }
  890. }
  891.  
  892.  
  893. void TP_CLASS_TBL_ase_170(TP_CLASS_TBL self, INT ind_171, TP_CLASS val_172) {
  894.  BOOL local0;
  895.  INT local1;
  896.  INT local2;
  897.  if ((!((self==((TP_CLASS_TBL) NULL))))) {
  898.   local1 = 0;
  899.   local2 = (self->asize);
  900.   local0 = INT_is_bet_INT_I(ind_171, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  901.  } else {
  902.   local0 = FALSE;
  903.  }
  904.  if (!(local0)) {
  905.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  906.   exit(16);
  907.  }
  908.  if (ind_171<0||ind_171>=self->asize) {
  909.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  910.   exit(16);
  911.  }
  912.  self->arr_part[ind_171] = val_172;
  913. }
  914.  
  915.  
  916. TP_CLASS_TBL TP_CLASS_TBL_ins(TP_CLASS_TBL self, TP_CLASS e_173) {
  917.  TP_CLASS_TBL noname174;
  918.  TP_CLASS_TBL r;
  919.  INT asz_175 = ((INT) 0);
  920.  INT h = ((INT) 0);
  921.  TP_CLASS te;
  922.  TP_CLASS te_176;
  923.  INT local0;
  924.  INT local1;
  925.  INT local2;
  926.  r = self;
  927.  if (TP_CLASS_TBL_elt_140(self, e_173, TP_CLASS_TBL_elt(self))) {
  928.   return r;
  929.  }
  930.  if ((r==((TP_CLASS_TBL) NULL))) {
  931.   r = TP_CLASS_TBL_all(self, 5);
  932.  }
  933.  else {
  934.   local0 = (c_INT_plus_INT_INT_chk(self->hsize,1));
  935.   local1 = (c_INT_times_INT_INT_chk(local0,2));
  936.   if ((local1>(self->asize))) {
  937.    r = TP_CLASS_TBL_dou(r);
  938.   }
  939.  }
  940.  asz_175 = (r->asize);
  941.  local2 = TP_CLASS_TBL_elt_163(r, e_173);
  942.  h = (local2&(c_INT_minus_INT_INT_chk(asz_175,2)));
  943.  while (1) {
  944.   te = TP_CLASS_TBL_age(r, h);
  945.   if (TP_CLASS_TBL_elt_140(self, te, TP_CLASS_TBL_elt(self))) {
  946.    goto after_loop;
  947.   }
  948.   else {
  949.    if (TP_CLASS_TBL_elt_140(self, te, e_173)) {
  950.     TP_CLASS_TBL_ase_170(r, h, e_173);
  951.     return r;
  952.    }
  953.   }
  954.   h = (c_INT_plus_INT_INT_chk(h,1));
  955.  }
  956.  after_loop: ;
  957.  if ((h==(c_INT_minus_INT_INT_chk(asz_175,1)))) {
  958.   h = 0;
  959.   while (1) {
  960.    te_176 = TP_CLASS_TBL_age(r, h);
  961.    if (TP_CLASS_TBL_elt_140(self, te_176, TP_CLASS_TBL_elt(self))) {
  962.     goto after_loop_178;
  963.    }
  964.    else {
  965.     if (TP_CLASS_TBL_elt_140(self, te_176, e_173)) {
  966.      TP_CLASS_TBL_ase_170(r, h, e_173);
  967.      return r;
  968.     }
  969.    }
  970.    h = (c_INT_plus_INT_INT_chk(h,1));
  971.   }
  972.   after_loop_178: ;
  973.   if (!((h!=(c_INT_minus_INT_INT_chk(asz_175,1))))) {
  974.    fprintf(stderr,"Violation of assertion ../Library/fqset.sa:218:15\n");
  975.    exit(16);
  976.   }
  977.  }
  978.  TP_CLASS_TBL_ase_170(r, h, e_173);
  979.  r->hsize = (c_INT_plus_INT_INT_chk(r->hsize,1));
  980.  return r;
  981.  if (!TP_CLASS_TBL_inv(self)) {
  982.   fprintf(stderr,"Failed invariant TP_CLASS_TBL::invariant:BOOL ../Library/fqset.sa:198:9\n");
  983.   exit(16);
  984.  }
  985. }
  986.  
  987.  
  988. TP_CLASS TP_TBL_tp_class_(TP_TBL self, IDENT name_180, ARRAYTP params_181) {
  989.  TP_CLASS noname182;
  990.  TP_CLASS r;
  991.  TP_CLASS_TBL local0;
  992.  local0 = self->class_tbl;
  993.  r = TP_CLASS_TBL_get(local0, TUPIDENTARRAYTP__118(TUPIDENTARRAYTP_zero, name_180, params_181));
  994.  if ((r==((TP_CLASS) NULL))) {
  995.   r = TP_CLASS_create_(((TP_CLASS) NULL), name_180, params_181, self->prog);
  996.   self->class_tbl = TP_CLASS_TBL_ins(self->class_tbl, r);
  997.  }
  998.  return r;
  999. }
  1000.  
  1001.  
  1002. TUPARRAYTPTP TUPARRAYTPTP_t1_(TUPARRAYTPTP self, ARRAYTP t1_183) {
  1003.  TUPARRAYTPTP local0;
  1004.  local0 = self;
  1005.  local0.t1 = t1_183;
  1006.  return local0;
  1007. }
  1008.  
  1009.  
  1010. TUPARRAYTPTP TUPARRAYTPTP_t2_(TUPARRAYTPTP self, TP t2_184) {
  1011.  TUPARRAYTPTP local0;
  1012.  local0 = self;
  1013.  local0.t2 = t2_184;
  1014.  return local0;
  1015. }
  1016.  
  1017.  
  1018. TUPARRAYTPTP TUPARRAYTPTP_cre(TUPARRAYTPTP self, ARRAYTP at1, TP at2) {
  1019.  TUPARRAYTPTP noname185 = TUPARRAYTPTP_zero;
  1020.  TUPARRAYTPTP local0;
  1021.  local0 = TUPARRAYTPTP_t1_(self, at1);
  1022.  return TUPARRAYTPTP_t2_(local0, at2);
  1023. }
  1024.  
  1025.  
  1026. INT TP_ROUT_TBL_quer(TP_ROUT_TBL self, TUPARRAYTPTP q) {
  1027.  INT noname186 = ((INT) 0);
  1028.  INT s_187 = ((INT) 0);
  1029.  INT r = ((INT) 0);
  1030.  ARRAYTP noname188;
  1031.  SYS local0;
  1032.  TP local1;
  1033.  INT local2;
  1034.  s_187 = 3;
  1035.  r = 0;
  1036.  if ((!((q.t2==((TP) NULL))))) {
  1037.   r = (c_SYS_id_OB_INT(((SYS) NULL),((OB) q.t2)));
  1038.  }
  1039.  {
  1040.   struct ARRAYTP_elt_TP_frame_struct temp189_0;
  1041.   ARRAYTP_elt_TP_frame 
  1042.   noname190 = &temp189_0;
  1043.   noname190->state = 0;
  1044.   while (1) {
  1045.    local0 = ((SYS) NULL);
  1046.    if (noname190->state == 0) {
  1047.     noname188 = q.t1;
  1048.     noname190->arg0 = noname188;
  1049.    }
  1050.    local1 = ARRAYTP_elt_TP(noname190);
  1051.    if (noname190->state == -1) goto after_loop;
  1052.    local2 = (c_SYS_id_OB_INT(local0,((OB) local1)));
  1053.    r = (r^(c_INT_times_INT_INT_chk(local2,s_187)));
  1054.    s_187 = (c_INT_plus_INT_INT_chk(s_187,98));
  1055.   }
  1056.  }
  1057.  after_loop: ;
  1058.  return r;
  1059.  if (!TP_ROUT_TBL_inva(self)) {
  1060.   fprintf(stderr,"Failed invariant TP_ROUT_TBL::invariant:BOOL ./tp.sa:591:13\n");
  1061.   exit(16);
  1062.  }
  1063. }
  1064.  
  1065.  
  1066. INT TP_ROUT_TBL_asiz(TP_ROUT_TBL self) {
  1067.  INT noname191 = ((INT) 0);
  1068.   return self->asize;
  1069.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  1070.  exit(16);
  1071. }
  1072.  
  1073.  
  1074. TP_ROUT TP_ROUT_TBL_aget(TP_ROUT_TBL self, INT ind_192) {
  1075.  TP_ROUT noname193;
  1076.  BOOL local0;
  1077.  INT local1;
  1078.  INT local2;
  1079.  if ((!((self==((TP_ROUT_TBL) NULL))))) {
  1080.   local1 = 0;
  1081.   local2 = (self->asize);
  1082.   local0 = INT_is_bet_INT_I(ind_192, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  1083.  } else {
  1084.   local0 = FALSE;
  1085.  }
  1086.  if (!(local0)) {
  1087.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  1088.   exit(16);
  1089.  }
  1090.  if (ind_192<0||ind_192>=self->asize) {
  1091.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  1092.   exit(16);
  1093.  }
  1094.  return self->arr_part[ind_192];
  1095. }
  1096.  
  1097.  
  1098. BOOL TP_ROUT_TBL_quer_194(TP_ROUT_TBL self, TUPARRAYTPTP q, TP_ROUT t) {
  1099.  BOOL noname195 = ((BOOL) 0);
  1100.  ARRAYTP noname196;
  1101.  ARRAYTP noname197;
  1102.  TP local0;
  1103.  INT local1;
  1104.  TP local2;
  1105.  TP local3;
  1106.  TP local4;
  1107.  TP local5;
  1108.  if ((t==((TP_ROUT) NULL))) {
  1109.   return FALSE;
  1110.  }
  1111.  if ((q.t2==((TP) NULL))) {
  1112.   if ((!((t->ret==((TP) NULL))))) {
  1113.    return FALSE;
  1114.   }
  1115.  }
  1116.  else {
  1117.   local0 = q.t2;
  1118.   if ((*TP_is_neq_TP_BOOL[local0->header.tag+TP_is_neq_TP_BOOL_offset])(local0, t->ret)) {
  1119.    return FALSE;
  1120.   }
  1121.  }
  1122.  local1 = ARRAYTP_size_INT(q.t1);
  1123.  if ((local1!=ARRAYTP_size_INT(t->args_7))) {
  1124.   return FALSE;
  1125.  }
  1126.  {
  1127.   struct ARRAYTP_elt_TP_frame_struct temp198_0;
  1128.   ARRAYTP_elt_TP_frame 
  1129.   noname199 = &temp198_0;
  1130.   struct ARRAYTP_elt_TP_frame_struct temp198_1;
  1131.   ARRAYTP_elt_TP_frame 
  1132.   noname200 = &temp198_1;
  1133.   noname199->state = 0;
  1134.   noname200->state = 0;
  1135.   while (1) {
  1136.    if (noname199->state == 0) {
  1137.     noname196 = q.t1;
  1138.     noname199->arg0 = noname196;
  1139.    }
  1140.    local2 = ARRAYTP_elt_TP(noname199);
  1141.    if (noname199->state == -1) goto after_loop;
  1142.    local3 = local2;
  1143.    if (noname200->state == 0) {
  1144.     noname197 = t->args_7;
  1145.     noname200->arg0 = noname197;
  1146.    }
  1147.    local4 = ARRAYTP_elt_TP(noname200);
  1148.    if (noname200->state == -1) goto after_loop;
  1149.    local5 = local3;
  1150.    if ((*TP_is_neq_TP_BOOL[local5->header.tag+TP_is_neq_TP_BOOL_offset])(local5, local4)) {
  1151.     return FALSE;
  1152.    }
  1153.   }
  1154.  }
  1155.  after_loop: ;
  1156.  return TRUE;
  1157.  if (!TP_ROUT_TBL_inva(self)) {
  1158.   fprintf(stderr,"Failed invariant TP_ROUT_TBL::invariant:BOOL ./tp.sa:581:13\n");
  1159.   exit(16);
  1160.  }
  1161. }
  1162.  
  1163.  
  1164. TP_ROUT TP_ROUT_TBL_elt_(TP_ROUT_TBL self) {
  1165.  TP_ROUT noname201;
  1166.  TP_ROUT t = ((TP_ROUT) NULL);
  1167.  return ((TP_ROUT) NULL);
  1168.  if (!TP_ROUT_TBL_inva(self)) {
  1169.   fprintf(stderr,"Failed invariant TP_ROUT_TBL::invariant:BOOL ../Library/fqset.sa:69:10\n");
  1170.   exit(16);
  1171.  }
  1172. }
  1173.  
  1174.  
  1175. BOOL TP_ROUT_TBL_elt__202(TP_ROUT_TBL self, TP_ROUT e1_203, TP_ROUT e2_204) {
  1176.  BOOL noname205 = ((BOOL) 0);
  1177.  return c_SYS_ob_eq_OB_OB_BOOL(((OB) e1_203),((OB) e2_204));
  1178.  if (!TP_ROUT_TBL_inva(self)) {
  1179.   fprintf(stderr,"Failed invariant TP_ROUT_TBL::invariant:BOOL ../Library/fqset.sa:62:9\n");
  1180.   exit(16);
  1181.  }
  1182. }
  1183.  
  1184.  
  1185. TP_ROUT TP_ROUT_TBL_get_(TP_ROUT_TBL self, TUPARRAYTPTP q) {
  1186.  TP_ROUT noname206;
  1187.  INT h = ((INT) 0);
  1188.  TP_ROUT e_207;
  1189.  TP_ROUT e_208;
  1190.  INT local0;
  1191.  INT local1;
  1192.  INT local2;
  1193.  INT local3;
  1194.  if ((self==((TP_ROUT_TBL) NULL))) {
  1195.   return ((TP_ROUT) NULL);
  1196.  }
  1197.  local0 = TP_ROUT_TBL_quer(self, q);
  1198.  local1 = (self->asize);
  1199.  h = (local0&(c_INT_minus_INT_INT_chk(local1,2)));
  1200.  while (1) {
  1201.   e_207 = TP_ROUT_TBL_aget(self, h);
  1202.   if (TP_ROUT_TBL_quer_194(self, q, e_207)) {
  1203.    return e_207;
  1204.   }
  1205.   else {
  1206.    if (TP_ROUT_TBL_elt__202(self, e_207, TP_ROUT_TBL_elt_(self))) {
  1207.     goto after_loop;
  1208.    }
  1209.   }
  1210.   h = (c_INT_plus_INT_INT_chk(h,1));
  1211.  }
  1212.  after_loop: ;
  1213.  local2 = (self->asize);
  1214.  if ((h==(c_INT_minus_INT_INT_chk(local2,1)))) {
  1215.   h = 0;
  1216.   while (1) {
  1217.    e_208 = TP_ROUT_TBL_aget(self, h);
  1218.    if (TP_ROUT_TBL_quer_194(self, q, e_208)) {
  1219.     return e_208;
  1220.    }
  1221.    else {
  1222.     if (TP_ROUT_TBL_elt__202(self, e_208, TP_ROUT_TBL_elt_(self))) {
  1223.      goto after_loop_210;
  1224.     }
  1225.    }
  1226.    h = (c_INT_plus_INT_INT_chk(h,1));
  1227.   }
  1228.   after_loop_210: ;
  1229.   local3 = (self->asize);
  1230.   if (!((h!=(c_INT_minus_INT_INT_chk(local3,1))))) {
  1231.    fprintf(stderr,"Violation of assertion ../Library/fqset.sa:142:15\n");
  1232.    exit(16);
  1233.   }
  1234.  }
  1235.  return TP_ROUT_TBL_elt_(self);
  1236.  if (!TP_ROUT_TBL_inva(self)) {
  1237.   fprintf(stderr,"Failed invariant TP_ROUT_TBL::invariant:BOOL ../Library/fqset.sa:128:12\n");
  1238.   exit(16);
  1239.  }
  1240. }
  1241.  
  1242.  
  1243. TP_ROUT TP_ROUT_create_A(TP_ROUT self, ARRAYTP args_212, TP ret_213, PROG prog_214) {
  1244.  TP_ROUT noname215;
  1245.  TP_ROUT r;
  1246.  TP_ROUT local0;
  1247.  local0 = ((TP_ROUT) sbi_alloc(sizeof(struct TP_ROUT_struct), TP_ROUT_tag));
  1248.  r = local0;
  1249.  r->args_7 = args_212;
  1250.  r->ret = ret_213;
  1251.  r->prog = prog_214;
  1252.  return r;
  1253. }
  1254.  
  1255.  
  1256. TP_ROUT_TBL TP_ROUT_TBL_allo(TP_ROUT_TBL self, INT n) {
  1257.  TP_ROUT_TBL noname216;
  1258.  TP_ROUT_TBL r;
  1259.  TP_ROUT_TBL noname217;
  1260.  TP_ROUT_TBL local0;
  1261.  local0 = ((TP_ROUT_TBL) sbi_arr_alloc(sizeof(struct TP_ROUT_TBL_struct), TP_ROUT_TBL_tag, sizeof(TP_ROUT) , n));
  1262.  local0->asize = n;
  1263.  r = local0;
  1264.  if ((!((TP_ROUT_TBL_elt_(self)==((TP_ROUT) NULL))))) {
  1265.   {
  1266.    struct TP_ROUT_TBL_aset_frame_struct temp218_0;
  1267.    TP_ROUT_TBL_aset_frame 
  1268.    noname219 = &temp218_0;
  1269.    noname219->state = 0;
  1270.    while (1) {
  1271.     if (noname219->state == 0) {
  1272.      noname217 = r;
  1273.      noname219->arg0 = noname217;
  1274.     }
  1275.     noname219->arg1 = TP_ROUT_TBL_elt_(self);
  1276.     TP_ROUT_TBL_aset(noname219);
  1277.     if (noname219->state == -1) goto after_loop;
  1278.     0 /* No return value from iter call */;
  1279.    }
  1280.   }
  1281.   after_loop: ;
  1282.  }
  1283.  return r;
  1284. }
  1285.  
  1286.  
  1287. TP_ROUT_TBL TP_ROUT_TBL_doub(TP_ROUT_TBL self) {
  1288.  TP_ROUT_TBL noname220;
  1289.  TP_ROUT_TBL r;
  1290.  TP_ROUT_TBL noname221;
  1291.  INT local0;
  1292.  INT local1;
  1293.  INT local2;
  1294.  TP_ROUT local3;
  1295.  if (!((!((self==((TP_ROUT_TBL) NULL)))))) {
  1296.   fprintf(stderr,"Violation of precondition ../Library/fqset.sa:190:22\n");
  1297.   exit(16);
  1298.  }
  1299.  local0 = (self->asize);
  1300.  local1 = (c_INT_minus_INT_INT_chk(local0,1));
  1301.  local2 = (c_INT_times_INT_INT_chk(local1,2));
  1302.  r = TP_ROUT_TBL_allo(self, (c_INT_plus_INT_INT_chk(local2,1)));
  1303.  {
  1304.   struct TP_ROUT_TBL_elt__223_frame_struct temp222_0;
  1305.   TP_ROUT_TBL_elt__223_frame 
  1306.   noname224 = &temp222_0;
  1307.   noname224->state = 0;
  1308.   while (1) {
  1309.    if (noname224->state == 0) {
  1310.     noname221 = self;
  1311.     noname224->arg0 = noname221;
  1312.    }
  1313.    local3 = TP_ROUT_TBL_elt__223(noname224);
  1314.    if (noname224->state == -1) goto after_loop;
  1315.    r = TP_ROUT_TBL_inse(r, local3);
  1316.   }
  1317.  }
  1318.  after_loop: ;
  1319.  return r;
  1320. }
  1321.  
  1322.  
  1323. INT TP_ROUT_TBL_elt__225(TP_ROUT_TBL self, TP_ROUT e_226) {
  1324.  INT noname227 = ((INT) 0);
  1325.  INT s_228 = ((INT) 0);
  1326.  INT r = ((INT) 0);
  1327.  ARRAYTP noname229;
  1328.  SYS local0;
  1329.  TP local1;
  1330.  INT local2;
  1331.  s_228 = 3;
  1332.  r = 0;
  1333.  if ((!((e_226->ret==((TP) NULL))))) {
  1334.   r = (c_SYS_id_OB_INT(((SYS) NULL),((OB) e_226->ret)));
  1335.  }
  1336.  {
  1337.   struct ARRAYTP_elt_TP_frame_struct temp230_0;
  1338.   ARRAYTP_elt_TP_frame 
  1339.   noname231 = &temp230_0;
  1340.   noname231->state = 0;
  1341.   while (1) {
  1342.    local0 = ((SYS) NULL);
  1343.    if (noname231->state == 0) {
  1344.     noname229 = e_226->args_7;
  1345.     noname231->arg0 = noname229;
  1346.    }
  1347.    local1 = ARRAYTP_elt_TP(noname231);
  1348.    if (noname231->state == -1) goto after_loop;
  1349.    local2 = (c_SYS_id_OB_INT(local0,((OB) local1)));
  1350.    r = (r^(c_INT_times_INT_INT_chk(local2,s_228)));
  1351.    s_228 = (c_INT_plus_INT_INT_chk(s_228,98));
  1352.   }
  1353.  }
  1354.  after_loop: ;
  1355.  return r;
  1356.  if (!TP_ROUT_TBL_inva(self)) {
  1357.   fprintf(stderr,"Failed invariant TP_ROUT_TBL::invariant:BOOL ./tp.sa:599:11\n");
  1358.   exit(16);
  1359.  }
  1360. }
  1361.  
  1362.  
  1363. void TP_ROUT_TBL_aset_232(TP_ROUT_TBL self, INT ind_233, TP_ROUT val_234) {
  1364.  BOOL local0;
  1365.  INT local1;
  1366.  INT local2;
  1367.  if ((!((self==((TP_ROUT_TBL) NULL))))) {
  1368.   local1 = 0;
  1369.   local2 = (self->asize);
  1370.   local0 = INT_is_bet_INT_I(ind_233, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  1371.  } else {
  1372.   local0 = FALSE;
  1373.  }
  1374.  if (!(local0)) {
  1375.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  1376.   exit(16);
  1377.  }
  1378.  if (ind_233<0||ind_233>=self->asize) {
  1379.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  1380.   exit(16);
  1381.  }
  1382.  self->arr_part[ind_233] = val_234;
  1383. }
  1384.  
  1385.  
  1386. TP_ROUT_TBL TP_ROUT_TBL_inse(TP_ROUT_TBL self, TP_ROUT e_235) {
  1387.  TP_ROUT_TBL noname236;
  1388.  TP_ROUT_TBL r;
  1389.  INT asz_237 = ((INT) 0);
  1390.  INT h = ((INT) 0);
  1391.  TP_ROUT te;
  1392.  TP_ROUT te_238;
  1393.  INT local0;
  1394.  INT local1;
  1395.  INT local2;
  1396.  r = self;
  1397.  if (TP_ROUT_TBL_elt__202(self, e_235, TP_ROUT_TBL_elt_(self))) {
  1398.   return r;
  1399.  }
  1400.  if ((r==((TP_ROUT_TBL) NULL))) {
  1401.   r = TP_ROUT_TBL_allo(self, 5);
  1402.  }
  1403.  else {
  1404.   local0 = (c_INT_plus_INT_INT_chk(self->hsize,1));
  1405.   local1 = (c_INT_times_INT_INT_chk(local0,2));
  1406.   if ((local1>(self->asize))) {
  1407.    r = TP_ROUT_TBL_doub(r);
  1408.   }
  1409.  }
  1410.  asz_237 = (r->asize);
  1411.  local2 = TP_ROUT_TBL_elt__225(r, e_235);
  1412.  h = (local2&(c_INT_minus_INT_INT_chk(asz_237,2)));
  1413.  while (1) {
  1414.   te = TP_ROUT_TBL_aget(r, h);
  1415.   if (TP_ROUT_TBL_elt__202(self, te, TP_ROUT_TBL_elt_(self))) {
  1416.    goto after_loop;
  1417.   }
  1418.   else {
  1419.    if (TP_ROUT_TBL_elt__202(self, te, e_235)) {
  1420.     TP_ROUT_TBL_aset_232(r, h, e_235);
  1421.     return r;
  1422.    }
  1423.   }
  1424.   h = (c_INT_plus_INT_INT_chk(h,1));
  1425.  }
  1426.  after_loop: ;
  1427.  if ((h==(c_INT_minus_INT_INT_chk(asz_237,1)))) {
  1428.   h = 0;
  1429.   while (1) {
  1430.    te_238 = TP_ROUT_TBL_aget(r, h);
  1431.    if (TP_ROUT_TBL_elt__202(self, te_238, TP_ROUT_TBL_elt_(self))) {
  1432.     goto after_loop_240;
  1433.    }
  1434.    else {
  1435.     if (TP_ROUT_TBL_elt__202(self, te_238, e_235)) {
  1436.      TP_ROUT_TBL_aset_232(r, h, e_235);
  1437.      return r;
  1438.     }
  1439.    }
  1440.    h = (c_INT_plus_INT_INT_chk(h,1));
  1441.   }
  1442.   after_loop_240: ;
  1443.   if (!((h!=(c_INT_minus_INT_INT_chk(asz_237,1))))) {
  1444.    fprintf(stderr,"Violation of assertion ../Library/fqset.sa:218:15\n");
  1445.    exit(16);
  1446.   }
  1447.  }
  1448.  TP_ROUT_TBL_aset_232(r, h, e_235);
  1449.  r->hsize = (c_INT_plus_INT_INT_chk(r->hsize,1));
  1450.  return r;
  1451.  if (!TP_ROUT_TBL_inva(self)) {
  1452.   fprintf(stderr,"Failed invariant TP_ROUT_TBL::invariant:BOOL ../Library/fqset.sa:198:9\n");
  1453.   exit(16);
  1454.  }
  1455. }
  1456.  
  1457.  
  1458. TP_ROUT TP_TBL_tp_rout_f(TP_TBL self, ARRAYTP args_242, TP ret_243) {
  1459.  TP_ROUT noname244;
  1460.  TP_ROUT r;
  1461.  TP_ROUT_TBL local0;
  1462.  local0 = self->rout_tbl;
  1463.  r = TP_ROUT_TBL_get_(local0, TUPARRAYTPTP_cre(TUPARRAYTPTP_zero, args_242, ret_243));
  1464.  if ((r==((TP_ROUT) NULL))) {
  1465.   r = TP_ROUT_create_A(((TP_ROUT) NULL), args_242, ret_243, self->prog);
  1466.   self->rout_tbl = TP_ROUT_TBL_inse(self->rout_tbl, r);
  1467.  }
  1468.  return r;
  1469. }
  1470.  
  1471.  
  1472. ARRAYTP ARRAYTP_create_I(ARRAYTP self, INT n) {
  1473.  ARRAYTP noname245;
  1474.  ARRAYTP local0;
  1475.  if (!((n>=0))) {
  1476.   fprintf(stderr,"Violation of precondition ../Library/array.sa:56:9\n");
  1477.   exit(16);
  1478.  }
  1479.  local0 = ((ARRAYTP) sbi_arr_alloc(sizeof(struct ARRAYTP_struct), ARRAYTP_tag, sizeof(TP) , n));
  1480.  local0->asize = n;
  1481.  return local0;
  1482. }
  1483.  
  1484.  
  1485. void ARRAYTP_aset_INT_TP(ARRAYTP self, INT ind_246, TP val_247) {
  1486.  BOOL local0;
  1487.  INT local1;
  1488.  INT local2;
  1489.  if ((!((self==((ARRAYTP) NULL))))) {
  1490.   local1 = 0;
  1491.   local2 = (self->asize);
  1492.   local0 = INT_is_bet_INT_I(ind_246, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  1493.  } else {
  1494.   local0 = FALSE;
  1495.  }
  1496.  if (!(local0)) {
  1497.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  1498.   exit(16);
  1499.  }
  1500.  if (ind_246<0||ind_246>=self->asize) {
  1501.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  1502.   exit(16);
  1503.  }
  1504.  self->arr_part[ind_246] = val_247;
  1505. }
  1506.  
  1507.  
  1508. TP_BUILTIN TP_BUILTIN_creat(TP_BUILTIN self, PROG prog_248) {
  1509.  TP_BUILTIN noname249;
  1510.  TP_TBL t;
  1511.  TP_BUILTIN r;
  1512.  ARRAYTP arr_250;
  1513.  TP_BUILTIN local0;
  1514.  IDENT local1;
  1515.  IDENT local2;
  1516.  IDENT local3;
  1517.  IDENT local4;
  1518.  IDENT local5;
  1519.  IDENT local6;
  1520.  IDENT local7;
  1521.  IDENT local8;
  1522.  IDENT local9;
  1523.  IDENT local10;
  1524.  IDENT local11;
  1525.  IDENT local12;
  1526.  IDENT local13;
  1527.  IDENT local14;
  1528.  IDENT local15;
  1529.  t = prog_248->tp_tbl;
  1530.  local0 = ((TP_BUILTIN) sbi_alloc(sizeof(struct TP_BUILTIN_struct), TP_BUILTIN_tag));
  1531.  r = local0;
  1532.  local1 = PROG_ident_for_S(prog_248, ((STR) &OB_251));
  1533.  r->dollar_ob = TP_TBL_tp_class_(t, local1, ((ARRAYTP) NULL));
  1534.  local2 = PROG_ident_for_S(prog_248, ((STR) &BOOL_252));
  1535.  r->bool_2 = TP_TBL_tp_class_(t, local2, ((ARRAYTP) NULL));
  1536.  local3 = PROG_ident_for_S(prog_248, ((STR) &CHAR_253));
  1537.  r->char_5 = TP_TBL_tp_class_(t, local3, ((ARRAYTP) NULL));
  1538.  local4 = PROG_ident_for_S(prog_248, ((STR) &INT_254));
  1539.  r->int_1 = TP_TBL_tp_class_(t, local4, ((ARRAYTP) NULL));
  1540.  local5 = PROG_ident_for_S(prog_248, ((STR) &INTI_255));
  1541.  r->inti = TP_TBL_tp_class_(t, local5, ((ARRAYTP) NULL));
  1542.  local6 = PROG_ident_for_S(prog_248, ((STR) &FLT_256));
  1543.  r->flt = TP_TBL_tp_class_(t, local6, ((ARRAYTP) NULL));
  1544.  local7 = PROG_ident_for_S(prog_248, ((STR) &FLTD_257));
  1545.  r->fltd = TP_TBL_tp_class_(t, local7, ((ARRAYTP) NULL));
  1546.  local8 = PROG_ident_for_S(prog_248, ((STR) &FLTX_258));
  1547.  r->fltx = TP_TBL_tp_class_(t, local8, ((ARRAYTP) NULL));
  1548.  local9 = PROG_ident_for_S(prog_248, ((STR) &FLTDX_259));
  1549.  r->fltdx = TP_TBL_tp_class_(t, local9, ((ARRAYTP) NULL));
  1550.  local10 = PROG_ident_for_S(prog_248, ((STR) &FLTI_260));
  1551.  r->flti = TP_TBL_tp_class_(t, local10, ((ARRAYTP) NULL));
  1552.  local11 = PROG_ident_for_S(prog_248, ((STR) &STR_261));
  1553.  r->str_4 = TP_TBL_tp_class_(t, local11, ((ARRAYTP) NULL));
  1554.  local12 = PROG_ident_for_S(prog_248, ((STR) &SYS_262));
  1555.  r->sys_3 = TP_TBL_tp_class_(t, local12, ((ARRAYTP) NULL));
  1556.  local13 = PROG_ident_for_S(prog_248, ((STR) &EXT_OB_263));
  1557.  r->ext_ob = TP_TBL_tp_class_(t, local13, ((ARRAYTP) NULL));
  1558.  local14 = PROG_ident_for_S(prog_248, ((STR) &REHASH));
  1559.  r->dollar_rehash = TP_TBL_tp_class_(t, local14, ((ARRAYTP) NULL));
  1560.  r->rout = TP_TBL_tp_rout_f(t, ((ARRAYTP) NULL), ((TP) NULL));
  1561.  arr_250 = ARRAYTP_create_I(((ARRAYTP) NULL), 1);
  1562.  ARRAYTP_aset_INT_TP(arr_250, 0, ((TP) r->str_4));
  1563.  local15 = PROG_ident_for_S(prog_248, ((STR) &ARRAY));
  1564.  r->arr_of_str = TP_TBL_tp_class_(t, local15, arr_250);
  1565.  return r;
  1566. }
  1567.  
  1568.  
  1569. IDENT_BUILTIN IDENT_BUILTIN_cr(IDENT_BUILTIN self, PROG p) {
  1570.  IDENT_BUILTIN noname264;
  1571.  IDENT_BUILTIN r;
  1572.  IDENT_BUILTIN local0;
  1573.  local0 = ((IDENT_BUILTIN) sbi_alloc(sizeof(struct IDENT_BUILTIN_struct), IDENT_BUILTIN_tag));
  1574.  r = local0;
  1575.  r->dollar_OB_ident = PROG_ident_for_S(p, ((STR) &OB_265));
  1576.  r->ARR_ident = PROG_ident_for_S(p, ((STR) &ARR));
  1577.  r->INT_ident = PROG_ident_for_S(p, ((STR) &INT_266));
  1578.  r->INTI_ident = PROG_ident_for_S(p, ((STR) &INTI_267));
  1579.  r->FLT_ident = PROG_ident_for_S(p, ((STR) &FLT_268));
  1580.  r->FLTD_ident = PROG_ident_for_S(p, ((STR) &FLTD_269));
  1581.  r->FLTDX_ident = PROG_ident_for_S(p, ((STR) &FLTDX_270));
  1582.  r->FLTX_ident = PROG_ident_for_S(p, ((STR) &FLTX_271));
  1583.  r->plus_ident = PROG_ident_for_S(p, ((STR) &plus_272));
  1584.  r->minus_ident = PROG_ident_for_S(p, ((STR) &minus));
  1585.  r->times_ident = PROG_ident_for_S(p, ((STR) ×_273));
  1586.  r->div_ident = PROG_ident_for_S(p, ((STR) &div_274));
  1587.  r->pow_ident = PROG_ident_for_S(p, ((STR) &pow_275));
  1588.  r->mod_ident = PROG_ident_for_S(p, ((STR) &mod));
  1589.  r->is_lt_ident = PROG_ident_for_S(p, ((STR) &is_lt));
  1590.  r->is_leq_ident = PROG_ident_for_S(p, ((STR) &is_leq));
  1591.  r->is_gt_ident = PROG_ident_for_S(p, ((STR) &is_gt));
  1592.  r->is_geq_ident = PROG_ident_for_S(p, ((STR) &is_geq));
  1593.  r->negate_ident = PROG_ident_for_S(p, ((STR) &negate));
  1594.  r->not_ident = PROG_ident_for_S(p, ((STR) ¬_276));
  1595.  r->AVAL_ident = PROG_ident_for_S(p, ((STR) &AVAL));
  1596.  r->AREF_ident = PROG_ident_for_S(p, ((STR) &AREF));
  1597.  r->aget_ident = PROG_ident_for_S(p, ((STR) &aget));
  1598.  r->aset_ident = PROG_ident_for_S(p, ((STR) &aset));
  1599.  r->call_ident = PROG_ident_for_S(p, ((STR) &call_277));
  1600.  r->call_bang_ident = PROG_ident_for_S(p, ((STR) &call_278));
  1601.  r->create_ident = PROG_ident_for_S(p, ((STR) &create_279));
  1602.  r->ARRAY_ident = PROG_ident_for_S(p, ((STR) &ARRAY_280));
  1603.  r->self_ident = PROG_ident_for_S(p, ((STR) &self_281));
  1604.  r->invariant_ident = PROG_ident_for_S(p, ((STR) &invariant));
  1605.  r->asize_ident = PROG_ident_for_S(p, ((STR) &asize_282));
  1606.  r->main_ident = PROG_ident_for_S(p, ((STR) &main_283));
  1607.  r->is_eq_ident = PROG_ident_for_S(p, ((STR) &is_eq));
  1608.  r->is_neq_ident = PROG_ident_for_S(p, ((STR) &is_neq));
  1609.  return r;
  1610. }
  1611.  
  1612.  
  1613. TP_GRAPH_ANC TP_GRAPH_ANC_cre(TP_GRAPH_ANC self, PROG prog_284) {
  1614.  TP_GRAPH_ANC noname285;
  1615.  TP_GRAPH_ANC r;
  1616.  TP_GRAPH_ANC local0;
  1617.  local0 = ((TP_GRAPH_ANC) sbi_alloc(sizeof(struct TP_GRAPH_ANC_struct), TP_GRAPH_ANC_tag));
  1618.  r = local0;
  1619.  r->prog = prog_284;
  1620.  return r;
  1621. }
  1622.  
  1623.  
  1624. TP_GRAPH_DES TP_GRAPH_DES_cre(TP_GRAPH_DES self, PROG prog_286) {
  1625.  TP_GRAPH_DES noname287;
  1626.  TP_GRAPH_DES r;
  1627.  TP_GRAPH_DES local0;
  1628.  local0 = ((TP_GRAPH_DES) sbi_alloc(sizeof(struct TP_GRAPH_DES_struct), TP_GRAPH_DES_tag));
  1629.  r = local0;
  1630.  r->prog = prog_286;
  1631.  return r;
  1632. }
  1633.  
  1634.  
  1635. TP_GRAPH TP_GRAPH_create_(TP_GRAPH self, PROG prog_288) {
  1636.  TP_GRAPH noname289;
  1637.  TP_GRAPH r;
  1638.  TP_GRAPH local0;
  1639.  local0 = ((TP_GRAPH) sbi_alloc(sizeof(struct TP_GRAPH_struct), TP_GRAPH_tag));
  1640.  r = local0;
  1641.  r->prog = prog_288;
  1642.  r->anc = TP_GRAPH_ANC_cre(((TP_GRAPH_ANC) NULL), prog_288);
  1643.  r->des_15 = TP_GRAPH_DES_cre(((TP_GRAPH_DES) NULL), prog_288);
  1644.  return r;
  1645. }
  1646.  
  1647.  
  1648. TP_GRAPH_ABS_DES TP_GRAPH_ABS_DES_290(TP_GRAPH_ABS_DES self, PROG prog_291) {
  1649.  TP_GRAPH_ABS_DES noname292;
  1650.  TP_GRAPH_ABS_DES r;
  1651.  TP_GRAPH_ABS_DES local0;
  1652.  local0 = ((TP_GRAPH_ABS_DES) sbi_alloc(sizeof(struct TP_GRAPH_ABS_DES_struct), TP_GRAPH_ABS_DES_tag));
  1653.  r = local0;
  1654.  r->prog = prog_291;
  1655.  return r;
  1656. }
  1657.  
  1658.  
  1659. IMPL_TBL IMPL_TBL_create_(IMPL_TBL self, PROG p) {
  1660.  IMPL_TBL noname293;
  1661.  IMPL_TBL r;
  1662.  IMPL_TBL local0;
  1663.  local0 = ((IMPL_TBL) sbi_alloc(sizeof(struct IMPL_TBL_struct), IMPL_TBL_tag));
  1664.  r = local0;
  1665.  r->prog = p;
  1666.  return r;
  1667. }
  1668.  
  1669.  
  1670. IFC_TBL IFC_TBL_create_P(IFC_TBL self, PROG p) {
  1671.  IFC_TBL noname294;
  1672.  IFC_TBL r;
  1673.  IFC_TBL local0;
  1674.  local0 = ((IFC_TBL) sbi_alloc(sizeof(struct IFC_TBL_struct), IFC_TBL_tag));
  1675.  r = local0;
  1676.  r->prog = p;
  1677.  return r;
  1678. }
  1679.  
  1680.  
  1681. GLOBAL_TBL GLOBAL_TBL_creat(GLOBAL_TBL self, PROG p) {
  1682.  GLOBAL_TBL noname295;
  1683.  GLOBAL_TBL local0;
  1684.  local0 = ((GLOBAL_TBL) sbi_alloc(sizeof(struct GLOBAL_TBL_struct), GLOBAL_TBL_tag));
  1685.  return local0;
  1686. }
  1687.  
  1688.  
  1689. PROG_PARSE PROG_PARSE_creat(PROG_PARSE self, PROG p) {
  1690.  PROG_PARSE noname296;
  1691.  PROG_PARSE r;
  1692.  PROG_PARSE local0;
  1693.  local0 = ((PROG_PARSE) sbi_alloc(sizeof(struct PROG_PARSE_struct), PROG_PARSE_tag));
  1694.  r = local0;
  1695.  r->prog = p;
  1696.  return r;
  1697. }
  1698.  
  1699.  
  1700. PROG_FIND_TYPES PROG_FIND_TYPES_(PROG_FIND_TYPES self, PROG p) {
  1701.  PROG_FIND_TYPES noname297;
  1702.  PROG_FIND_TYPES r;
  1703.  PROG_FIND_TYPES local0;
  1704.  local0 = ((PROG_FIND_TYPES) sbi_alloc(sizeof(struct PROG_FIND_TYPES_struct), PROG_FIND_TYPES_tag));
  1705.  r = local0;
  1706.  r->prog = p;
  1707.  return r;
  1708. }
  1709.  
  1710.  
  1711. PROG_TYPE_GRAPH PROG_TYPE_GRAPH_(PROG_TYPE_GRAPH self, PROG p) {
  1712.  PROG_TYPE_GRAPH noname298;
  1713.  PROG_TYPE_GRAPH r;
  1714.  PROG_TYPE_GRAPH local0;
  1715.  local0 = ((PROG_TYPE_GRAPH) sbi_alloc(sizeof(struct PROG_TYPE_GRAPH_struct), PROG_TYPE_GRAPH_tag));
  1716.  r = local0;
  1717.  r->prog = p;
  1718.  return r;
  1719. }
  1720.  
  1721.  
  1722. PROG_IFC_CONFORMANCE PROG_IFC_CONFORM(PROG_IFC_CONFORMANCE self, PROG p) {
  1723.  PROG_IFC_CONFORMANCE noname299;
  1724.  PROG_IFC_CONFORMANCE r;
  1725.  PROG_IFC_CONFORMANCE local0;
  1726.  local0 = ((PROG_IFC_CONFORMANCE) sbi_alloc(sizeof(struct PROG_IFC_CONFORMANCE_struct), PROG_IFC_CONFORMANCE_tag));
  1727.  r = local0;
  1728.  r->prog = p;
  1729.  return r;
  1730. }
  1731.  
  1732.  
  1733. PROG_GET_MAIN PROG_GET_MAIN_cr(PROG_GET_MAIN self, PROG p) {
  1734.  PROG_GET_MAIN noname300;
  1735.  PROG_GET_MAIN r;
  1736.  PROG_GET_MAIN local0;
  1737.  local0 = ((PROG_GET_MAIN) sbi_alloc(sizeof(struct PROG_GET_MAIN_struct), PROG_GET_MAIN_tag));
  1738.  r = local0;
  1739.  r->prog = p;
  1740.  return r;
  1741. }
  1742.  
  1743.  
  1744. INT INT_highest_bit_INT(INT self) {
  1745.  INT noname301 = ((INT) 0);
  1746.  INT x = ((INT) 0);
  1747.  INT z = ((INT) 0);
  1748.  INT r = ((INT) 0);
  1749.  INT noname302 = ((INT) 0);
  1750.  INT noname303 = ((INT) 0);
  1751.  INT i = ((INT) 0);
  1752.  INT local0;
  1753.  INT local1;
  1754.  if ((self==0)) {
  1755.   return -1;
  1756.  }
  1757.  if ((shared_INT_asize==32)) {
  1758.   x = self;
  1759.   z = (((unsigned)x)>>((unsigned)16));
  1760.   if ((z!=0)) {
  1761.    x = z;
  1762.    r = (c_INT_plus_INT_INT_chk(r,16));
  1763.   }
  1764.   z = (((unsigned)x)>>((unsigned)8));
  1765.   if ((z!=0)) {
  1766.    x = z;
  1767.    r = (c_INT_plus_INT_INT_chk(r,8));
  1768.   }
  1769.   z = (((unsigned)x)>>((unsigned)4));
  1770.   if ((z!=0)) {
  1771.    x = z;
  1772.    r = (c_INT_plus_INT_INT_chk(r,4));
  1773.   }
  1774.   z = (((unsigned)x)>>((unsigned)2));
  1775.   if ((z!=0)) {
  1776.    x = z;
  1777.    r = (c_INT_plus_INT_INT_chk(r,2));
  1778.   }
  1779.   z = (((unsigned)x)>>((unsigned)1));
  1780.   if ((z!=0)) {
  1781.    x = z;
  1782.    r = (c_INT_plus_INT_INT_chk(r,1));
  1783.   }
  1784.   return r;
  1785.  }
  1786.  else {
  1787.   {
  1788.    struct INT_downto_INT_INT_frame_struct temp304_0;
  1789.    INT_downto_INT_INT_frame 
  1790.    noname305 = &temp304_0;
  1791.    noname305->state = 0;
  1792.    while (1) {
  1793.     if (noname305->state == 0) {
  1794.      noname302 = (c_INT_minus_INT_INT_chk(shared_INT_asize,1));
  1795.      noname303 = 0;
  1796.      noname305->arg0 = noname302;
  1797.      noname305->arg1 = noname303;
  1798.     }
  1799.     local0 = INT_downto_INT_INT(noname305);
  1800.     if (noname305->state == -1) goto after_loop;
  1801.     i = local0;
  1802.     local1 = (c_INT_rshift_INT_INT(self,i));
  1803.     if ((local1==0)) {
  1804.      return (c_INT_minus_INT_INT_chk(i,1));
  1805.     }
  1806.    }
  1807.   }
  1808.   after_loop: ;
  1809.  }
  1810.  return (c_INT_minus_INT_INT_chk(shared_INT_asize,1));
  1811. }
  1812.  
  1813.  
  1814. INLINE INLINE_TBL_elt_n(INLINE_TBL self) {
  1815.  INLINE noname306;
  1816.  INLINE t = ((INLINE) NULL);
  1817.  if (t==NULL) {
  1818.  } else
  1819.  switch (t->header.tag) {
  1820.   default: ;
  1821.  }
  1822.  return ((INLINE) NULL);
  1823.  if (!INLINE_TBL_invar(self)) {
  1824.   fprintf(stderr,"Failed invariant INLINE_TBL::invariant:BOOL ../Library/fqset.sa:69:10\n");
  1825.   exit(16);
  1826.  }
  1827. }
  1828.  
  1829.  
  1830. INLINE_TBL INLINE_TBL_alloc(INLINE_TBL self, INT n) {
  1831.  INLINE_TBL noname307;
  1832.  INLINE_TBL r;
  1833.  INLINE_TBL noname308;
  1834.  INLINE_TBL local0;
  1835.  local0 = ((INLINE_TBL) sbi_arr_alloc(sizeof(struct INLINE_TBL_struct), INLINE_TBL_tag, sizeof(INLINE) , n));
  1836.  local0->asize = n;
  1837.  r = local0;
  1838.  if ((!((INLINE_TBL_elt_n(self)==((INLINE) NULL))))) {
  1839.   {
  1840.    struct INLINE_TBL_aset__frame_struct temp309_0;
  1841.    INLINE_TBL_aset__frame 
  1842.    noname310 = &temp309_0;
  1843.    noname310->state = 0;
  1844.    while (1) {
  1845.     if (noname310->state == 0) {
  1846.      noname308 = r;
  1847.      noname310->arg0 = noname308;
  1848.     }
  1849.     noname310->arg1 = INLINE_TBL_elt_n(self);
  1850.     INLINE_TBL_aset_(noname310);
  1851.     if (noname310->state == -1) goto after_loop;
  1852.     0 /* No return value from iter call */;
  1853.    }
  1854.   }
  1855.   after_loop: ;
  1856.  }
  1857.  return r;
  1858. }
  1859.  
  1860.  
  1861. INLINE_TBL INLINE_TBL_old_c(INLINE_TBL self, INT n) {
  1862.  INLINE_TBL noname311;
  1863.  INLINE_TBL r;
  1864.  INT local0;
  1865.  INT local1;
  1866.  INT local2;
  1867.  INT local3;
  1868.  if (!((n>=1))) {
  1869.   fprintf(stderr,"Violation of precondition ../Library/fqset.sa:81:9\n");
  1870.   exit(16);
  1871.  }
  1872.  local0 = 1;
  1873.  local1 = (c_INT_times_INT_INT_chk(3,n));
  1874.  local2 = INT_highest_bit_INT((c_INT_div_INT_INT_chk(local1,2)));
  1875.  local3 = (local0<<(c_INT_plus_INT_INT_chk(local2,1)));
  1876.  r = INLINE_TBL_alloc(self, (c_INT_plus_INT_INT_chk(local3,1)));
  1877.  return r;
  1878.  if (!INLINE_TBL_invar(self)) {
  1879.   fprintf(stderr,"Failed invariant INLINE_TBL::invariant:BOOL ../Library/fqset.sa:81:9\n");
  1880.   exit(16);
  1881.  }
  1882. }
  1883.  
  1884.  
  1885. SIG SIG_create_SIG(SIG self) {
  1886.  SIG noname312;
  1887.  SIG local0;
  1888.  local0 = ((SIG) sbi_alloc(sizeof(struct SIG_struct), SIG_tag));
  1889.  return local0;
  1890. }
  1891.  
  1892.  
  1893. void INLINE_INT_FOLD_(INLINE_INT_FOLD self, INT routines_313) {
  1894.  shared_INLINE_IN = routines_313;
  1895. }
  1896.  
  1897.  
  1898. INLINE_INT_FOLD INLINE_INT_FOLD__314(INLINE_INT_FOLD self, SIG s_315) {
  1899.  INLINE_INT_FOLD noname316;
  1900.  INLINE_INT_FOLD r;
  1901.  INLINE_INT_FOLD local0;
  1902.  local0 = ((INLINE_INT_FOLD) sbi_alloc(sizeof(struct INLINE_INT_FOLD_struct), INLINE_INT_FOLD_tag));
  1903.  r = local0;
  1904.  r->sig_6 = s_315;
  1905.  INLINE_INT_FOLD_(self, (c_INT_plus_INT_INT_chk(shared_INLINE_IN,1)));
  1906.  return r;
  1907. }
  1908.  
  1909.  
  1910. BOOL INLINE_TBL_elt_e(INLINE_TBL self, INLINE e1_317, INLINE e2_318) {
  1911.  BOOL noname319 = ((BOOL) 0);
  1912.  if (e1_317==NULL) {
  1913.  } else
  1914.  switch (e1_317->header.tag) {
  1915.   default: ;
  1916.  }
  1917.  return c_SYS_ob_eq_OB_OB_BOOL(((OB) e1_317),((OB) e2_318));
  1918.  if (!INLINE_TBL_invar(self)) {
  1919.   fprintf(stderr,"Failed invariant INLINE_TBL::invariant:BOOL ../Library/fqset.sa:62:9\n");
  1920.   exit(16);
  1921.  }
  1922. }
  1923.  
  1924.  
  1925. INT INLINE_TBL_asize_INT(INLINE_TBL self) {
  1926.  INT noname320 = ((INT) 0);
  1927.   return self->asize;
  1928.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  1929.  exit(16);
  1930. }
  1931.  
  1932.  
  1933. INLINE_TBL INLINE_TBL_doubl(INLINE_TBL self) {
  1934.  INLINE_TBL noname321;
  1935.  INLINE_TBL r;
  1936.  INLINE_TBL noname322;
  1937.  INT local0;
  1938.  INT local1;
  1939.  INT local2;
  1940.  INLINE local3;
  1941.  if (!((!((self==((INLINE_TBL) NULL)))))) {
  1942.   fprintf(stderr,"Violation of precondition ../Library/fqset.sa:190:22\n");
  1943.   exit(16);
  1944.  }
  1945.  local0 = (self->asize);
  1946.  local1 = (c_INT_minus_INT_INT_chk(local0,1));
  1947.  local2 = (c_INT_times_INT_INT_chk(local1,2));
  1948.  r = INLINE_TBL_alloc(self, (c_INT_plus_INT_INT_chk(local2,1)));
  1949.  {
  1950.   struct INLINE_TBL_elt_I_frame_struct temp323_0;
  1951.   INLINE_TBL_elt_I_frame 
  1952.   noname324 = &temp323_0;
  1953.   noname324->state = 0;
  1954.   while (1) {
  1955.    if (noname324->state == 0) {
  1956.     noname322 = self;
  1957.     noname324->arg0 = noname322;
  1958.    }
  1959.    local3 = INLINE_TBL_elt_I(noname324);
  1960.    if (noname324->state == -1) goto after_loop;
  1961.    r = INLINE_TBL_inser(r, local3);
  1962.   }
  1963.  }
  1964.  after_loop: ;
  1965.  return r;
  1966. }
  1967.  
  1968.  
  1969. INT INLINE_TBL_query(INLINE_TBL self, SIG s_325) {
  1970.  INT noname326 = ((INT) 0);
  1971.  INT sc = ((INT) 0);
  1972.  INT r = ((INT) 0);
  1973.  ARRAYTP noname327;
  1974.  TP local0;
  1975.  INT local1;
  1976.  TP local2;
  1977.  TP local3;
  1978.  INT local4;
  1979.  sc = 3;
  1980.  r = IDENT_hash_INT(s_325->name_19);
  1981.  local0 = s_325->tp;
  1982.  local1 = (*TP_hash_INT[local0->header.tag+TP_hash_INT_offset])(local0);
  1983.  r = (r^(c_INT_times_INT_INT_chk(local1,sc)));
  1984.  {
  1985.   struct ARRAYTP_elt_TP_frame_struct temp328_0;
  1986.   ARRAYTP_elt_TP_frame 
  1987.   noname329 = &temp328_0;
  1988.   noname329->state = 0;
  1989.   while (1) {
  1990.    sc = (c_INT_plus_INT_INT_chk(sc,98));
  1991.    if (noname329->state == 0) {
  1992.     noname327 = s_325->args_7;
  1993.     noname329->arg0 = noname327;
  1994.    }
  1995.    local2 = ARRAYTP_elt_TP(noname329);
  1996.    if (noname329->state == -1) goto after_loop;
  1997.    local3 = local2;
  1998.    local4 = (*TP_hash_INT[local3->header.tag+TP_hash_INT_offset])(local3);
  1999.    r = (r^(c_INT_times_INT_INT_chk(local4,sc)));
  2000.   }
  2001.  }
  2002.  after_loop: ;
  2003.  return r;
  2004.  if (!INLINE_TBL_invar(self)) {
  2005.   fprintf(stderr,"Failed invariant INLINE_TBL::invariant:BOOL ./inline.sa:315:13\n");
  2006.   exit(16);
  2007.  }
  2008. }
  2009.  
  2010.  
  2011. INT INLINE_TBL_elt_h(INLINE_TBL self, INLINE in) {
  2012.  INT noname330 = ((INT) 0);
  2013.  INLINE local0;
  2014.  local0 = in;
  2015.  return INLINE_TBL_query(self, (*INLINE_sig_SIG[local0->header.tag+INLINE_sig_SIG_offset])(local0));
  2016.  if (!INLINE_TBL_invar(self)) {
  2017.   fprintf(stderr,"Failed invariant INLINE_TBL::invariant:BOOL ./inline.sa:323:11\n");
  2018.   exit(16);
  2019.  }
  2020. }
  2021.  
  2022.  
  2023. INLINE INLINE_TBL_aget_(INLINE_TBL self, INT ind_331) {
  2024.  INLINE noname332;
  2025.  BOOL local0;
  2026.  INT local1;
  2027.  INT local2;
  2028.  if ((!((self==((INLINE_TBL) NULL))))) {
  2029.   local1 = 0;
  2030.   local2 = (self->asize);
  2031.   local0 = INT_is_bet_INT_I(ind_331, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  2032.  } else {
  2033.   local0 = FALSE;
  2034.  }
  2035.  if (!(local0)) {
  2036.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  2037.   exit(16);
  2038.  }
  2039.  if (ind_331<0||ind_331>=self->asize) {
  2040.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  2041.   exit(16);
  2042.  }
  2043.  return self->arr_part[ind_331];
  2044. }
  2045.  
  2046.  
  2047. void INLINE_TBL_aset__333(INLINE_TBL self, INT ind_334, INLINE val_335) {
  2048.  BOOL local0;
  2049.  INT local1;
  2050.  INT local2;
  2051.  if ((!((self==((INLINE_TBL) NULL))))) {
  2052.   local1 = 0;
  2053.   local2 = (self->asize);
  2054.   local0 = INT_is_bet_INT_I(ind_334, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  2055.  } else {
  2056.   local0 = FALSE;
  2057.  }
  2058.  if (!(local0)) {
  2059.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  2060.   exit(16);
  2061.  }
  2062.  if (ind_334<0||ind_334>=self->asize) {
  2063.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  2064.   exit(16);
  2065.  }
  2066.  self->arr_part[ind_334] = val_335;
  2067. }
  2068.  
  2069.  
  2070. INLINE_TBL INLINE_TBL_inser(INLINE_TBL self, INLINE e_336) {
  2071.  INLINE_TBL noname337;
  2072.  INLINE_TBL r;
  2073.  INT asz_338 = ((INT) 0);
  2074.  INT h = ((INT) 0);
  2075.  INLINE te;
  2076.  INLINE te_339;
  2077.  INT local0;
  2078.  INT local1;
  2079.  INT local2;
  2080.  r = self;
  2081.  if (INLINE_TBL_elt_e(self, e_336, INLINE_TBL_elt_n(self))) {
  2082.   return r;
  2083.  }
  2084.  if ((r==((INLINE_TBL) NULL))) {
  2085.   r = INLINE_TBL_alloc(self, 5);
  2086.  }
  2087.  else {
  2088.   local0 = (c_INT_plus_INT_INT_chk(self->hsize,1));
  2089.   local1 = (c_INT_times_INT_INT_chk(local0,2));
  2090.   if ((local1>(self->asize))) {
  2091.    r = INLINE_TBL_doubl(r);
  2092.   }
  2093.  }
  2094.  asz_338 = (r->asize);
  2095.  local2 = INLINE_TBL_elt_h(r, e_336);
  2096.  h = (local2&(c_INT_minus_INT_INT_chk(asz_338,2)));
  2097.  while (1) {
  2098.   te = INLINE_TBL_aget_(r, h);
  2099.   if (INLINE_TBL_elt_e(self, te, INLINE_TBL_elt_n(self))) {
  2100.    goto after_loop;
  2101.   }
  2102.   else {
  2103.    if (INLINE_TBL_elt_e(self, te, e_336)) {
  2104.     INLINE_TBL_aset__333(r, h, e_336);
  2105.     return r;
  2106.    }
  2107.   }
  2108.   h = (c_INT_plus_INT_INT_chk(h,1));
  2109.  }
  2110.  after_loop: ;
  2111.  if ((h==(c_INT_minus_INT_INT_chk(asz_338,1)))) {
  2112.   h = 0;
  2113.   while (1) {
  2114.    te_339 = INLINE_TBL_aget_(r, h);
  2115.    if (INLINE_TBL_elt_e(self, te_339, INLINE_TBL_elt_n(self))) {
  2116.     goto after_loop_341;
  2117.    }
  2118.    else {
  2119.     if (INLINE_TBL_elt_e(self, te_339, e_336)) {
  2120.      INLINE_TBL_aset__333(r, h, e_336);
  2121.      return r;
  2122.     }
  2123.    }
  2124.    h = (c_INT_plus_INT_INT_chk(h,1));
  2125.   }
  2126.   after_loop_341: ;
  2127.   if (!((h!=(c_INT_minus_INT_INT_chk(asz_338,1))))) {
  2128.    fprintf(stderr,"Violation of assertion ../Library/fqset.sa:218:15\n");
  2129.    exit(16);
  2130.   }
  2131.  }
  2132.  INLINE_TBL_aset__333(r, h, e_336);
  2133.  r->hsize = (c_INT_plus_INT_INT_chk(r->hsize,1));
  2134.  return r;
  2135.  if (!INLINE_TBL_invar(self)) {
  2136.   fprintf(stderr,"Failed invariant INLINE_TBL::invariant:BOOL ../Library/fqset.sa:198:9\n");
  2137.   exit(16);
  2138.  }
  2139. }
  2140.  
  2141.  
  2142. INLINE_TBL INLINE_TBL_creat(INLINE_TBL self, PROG p) {
  2143.  INLINE_TBL noname343;
  2144.  INLINE_TBL r;
  2145.  SIG ipiis;
  2146.  TP_CLASS int_tp;
  2147.  r = INLINE_TBL_old_c(self, 1024);
  2148.  r->prog = p;
  2149.  ipiis = SIG_create_SIG(((SIG) NULL));
  2150.  int_tp = p->tp_builtin->int_1;
  2151.  ipiis->tp = ((TP) int_tp);
  2152.  ipiis->name_19 = PROG_ident_for_S(p, ((STR) &plus_344));
  2153.  ipiis->args_7 = ARRAYTP_create_I(((ARRAYTP) NULL), 1);
  2154.  ARRAYTP_aset_INT_TP(ipiis->args_7, 0, ((TP) int_tp));
  2155.  ipiis->ret = ((TP) int_tp);
  2156.  ipiis->is_builtin = TRUE;
  2157.  r = INLINE_TBL_inser(r, ((INLINE) INLINE_INT_FOLD__314(((INLINE_INT_FOLD) NULL), ipiis)));
  2158.  return r;
  2159.  if (!INLINE_TBL_invar(self)) {
  2160.   fprintf(stderr,"Failed invariant INLINE_TBL::invariant:BOOL ./inline.sa:295:9\n");
  2161.   exit(16);
  2162.  }
  2163. }
  2164.  
  2165.  
  2166. PROG_AM_GENERATE PROG_AM_GENERATE_345(PROG_AM_GENERATE self, PROG p) {
  2167.  PROG_AM_GENERATE noname346;
  2168.  PROG_AM_GENERATE r;
  2169.  PROG_AM_GENERATE local0;
  2170.  local0 = ((PROG_AM_GENERATE) sbi_alloc(sizeof(struct PROG_AM_GENERATE_struct), PROG_AM_GENERATE_tag));
  2171.  r = local0;
  2172.  r->prog = p;
  2173.  r->inline_tbl = INLINE_TBL_creat(((INLINE_TBL) NULL), p);
  2174.  return r;
  2175. }
  2176.  
  2177.  
  2178. PROG_AM_CHECK PROG_AM_CHECK_cr(PROG_AM_CHECK self, PROG p) {
  2179.  PROG_AM_CHECK noname347;
  2180.  PROG_AM_CHECK r;
  2181.  PROG_AM_CHECK local0;
  2182.  local0 = ((PROG_AM_CHECK) sbi_alloc(sizeof(struct PROG_AM_CHECK_struct), PROG_AM_CHECK_tag));
  2183.  r = local0;
  2184.  r->prog = p;
  2185.  return r;
  2186. }
  2187.  
  2188.  
  2189. PROG PROG_create_PROG(PROG self) {
  2190.  PROG noname348;
  2191.  PROG r;
  2192.  PROG local0;
  2193.  local0 = ((PROG) sbi_alloc(sizeof(struct PROG_struct), PROG_tag));
  2194.  r = local0;
  2195.  r->options_55 = OPTIONS_create_O(((OPTIONS) NULL));
  2196.  r->tp_tbl = TP_TBL_create_PR(((TP_TBL) NULL), r);
  2197.  r->tp_builtin = TP_BUILTIN_creat(((TP_BUILTIN) NULL), r);
  2198.  r->ident_builtin = IDENT_BUILTIN_cr(((IDENT_BUILTIN) NULL), r);
  2199.  r->tp_graph = TP_GRAPH_create_(((TP_GRAPH) NULL), r);
  2200.  r->tp_graph_abs_des = TP_GRAPH_ABS_DES_290(((TP_GRAPH_ABS_DES) NULL), r);
  2201.  r->impl_tbl = IMPL_TBL_create_(((IMPL_TBL) NULL), r);
  2202.  r->ifc_tbl = IFC_TBL_create_P(((IFC_TBL) NULL), r);
  2203.  r->global_tbl = GLOBAL_TBL_creat(((GLOBAL_TBL) NULL), r);
  2204.  r->prog_parse = PROG_PARSE_creat(((PROG_PARSE) NULL), r);
  2205.  r->prog_find_types = PROG_FIND_TYPES_(((PROG_FIND_TYPES) NULL), r);
  2206.  r->prog_type_graph = PROG_TYPE_GRAPH_(((PROG_TYPE_GRAPH) NULL), r);
  2207.  r->prog_ifc_conformance = PROG_IFC_CONFORM(((PROG_IFC_CONFORMANCE) NULL), r);
  2208.  r->prog_get_main = PROG_GET_MAIN_cr(((PROG_GET_MAIN) NULL), r);
  2209.  r->prog_am_generate = PROG_AM_GENERATE_345(((PROG_AM_GENERATE) NULL), r);
  2210.  r->prog_am_check = PROG_AM_CHECK_cr(((PROG_AM_CHECK) NULL), r);
  2211.  return r;
  2212. }
  2213.  
  2214.  
  2215. INT ARRAYSTR_asize_INT(ARRAYSTR self) {
  2216.  INT noname349 = ((INT) 0);
  2217.   return self->asize;
  2218.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  2219.  exit(16);
  2220. }
  2221.  
  2222.  
  2223. INT ARRAYSTR_size_INT(ARRAYSTR self) {
  2224.  INT noname350 = ((INT) 0);
  2225.  if ((self==((ARRAYSTR) NULL))) {
  2226.   return 0;
  2227.  }
  2228.  return (self->asize);
  2229. }
  2230.  
  2231.  
  2232. BOOL OPTIONS_more_arg(OPTIONS self) {
  2233.  BOOL noname351 = ((BOOL) 0);
  2234.  INT local0;
  2235.  local0 = self->next_8;
  2236.  return (local0<ARRAYSTR_size_INT(self->args_7));
  2237. }
  2238.  
  2239.  
  2240. STR ARRAYSTR_aget_IN(ARRAYSTR self, INT ind_352) {
  2241.  STR noname353;
  2242.  BOOL local0;
  2243.  INT local1;
  2244.  INT local2;
  2245.  if ((!((self==((ARRAYSTR) NULL))))) {
  2246.   local1 = 0;
  2247.   local2 = (self->asize);
  2248.   local0 = INT_is_bet_INT_I(ind_352, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  2249.  } else {
  2250.   local0 = FALSE;
  2251.  }
  2252.  if (!(local0)) {
  2253.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  2254.   exit(16);
  2255.  }
  2256.  if (ind_352<0||ind_352>=self->asize) {
  2257.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  2258.   exit(16);
  2259.  }
  2260.  return self->arr_part[ind_352];
  2261. }
  2262.  
  2263.  
  2264. ERR_26 ERR_create_ERR(ERR_26 self) {
  2265.  ERR_26 noname354;
  2266.  return self;
  2267. }
  2268.  
  2269.  
  2270. INT STR_size_INT(STR self) {
  2271.  INT noname355 = ((INT) 0);
  2272.  if ((self==((STR) NULL))) {
  2273.   return 0;
  2274.  }
  2275.  return (self->asize);
  2276. }
  2277.  
  2278.  
  2279. ERR_26 ERR_plus_STR_ERR(ERR_26 self, STR s_356) {
  2280.  ERR_26 noname357;
  2281.  INT local0;
  2282.  local0 = STR_size_INT(s_356);
  2283.  c_err_nstr(local0, ((s_356==NULL)?NULL:s_356->arr_part));
  2284.  return self;
  2285. }
  2286.  
  2287.  
  2288. INT INT_min_INT_INT(INT self, INT i) {
  2289.  INT noname358 = ((INT) 0);
  2290.  if ((self<i)) {
  2291.   return self;
  2292.  }
  2293.  return i;
  2294. }
  2295.  
  2296.  
  2297. void ERR_plus_CHAR(ERR_26 self, CHAR c) {
  2298.  c_err_char(c);
  2299. }
  2300.  
  2301.  
  2302. void ERR_plus_STR(ERR_26 self, STR s_359) {
  2303.  INT local0;
  2304.  local0 = STR_size_INT(s_359);
  2305.  c_err_nstr(local0, ((s_359==NULL)?NULL:s_359->arr_part));
  2306. }
  2307.  
  2308.  
  2309. void UNIX_exit_INT(UNIX self, INT code_360) {
  2310.  exit(code_360);
  2311. }
  2312.  
  2313.  
  2314. void OPTIONS_usage(OPTIONS self) {
  2315.  ERR_26 local0;
  2316.  ERR_26 local1;
  2317.  ARRAYSTR local2;
  2318.  INT local3;
  2319.  INT local4;
  2320.  ERR_26 local5;
  2321.  ERR_26 local6;
  2322.  local0 = ERR_create_ERR(((ERR_26) NULL));
  2323.  local1 = ERR_plus_STR_ERR(local0, ((STR) &Commandlineerrornear));
  2324.  local2 = self->args_7;
  2325.  local3 = self->next_8;
  2326.  local4 = ARRAYSTR_size_INT(self->args_7);
  2327.  local5 = ERR_plus_STR_ERR(local1, ARRAYSTR_aget_IN(local2, INT_min_INT_INT(local3, (c_INT_minus_INT_INT_chk(local4,1)))));
  2328.  ERR_plus_CHAR(local5, '\n');
  2329.  local6 = ERR_create_ERR(((ERR_26) NULL));
  2330.  ERR_plus_STR(local6, ((STR) &Seemanpage));
  2331.  UNIX_exit_INT(((UNIX) NULL), 1);
  2332. }
  2333.  
  2334.  
  2335. STR OPTIONS_next_arg_STR(OPTIONS self) {
  2336.  STR noname361;
  2337.  STR res;
  2338.  if (OPTIONS_more_arg(self)) {
  2339.   res = ARRAYSTR_aget_IN(self->args_7, self->next_8);
  2340.   self->next_8 = (c_INT_plus_INT_INT_chk(self->next_8,1));
  2341.   return res;
  2342.  }
  2343.  OPTIONS_usage(self);
  2344.  return ((STR) &name_362);
  2345. }
  2346.  
  2347.  
  2348. INT STR_length_INT(STR self) {
  2349.  INT noname363 = ((INT) 0);
  2350.  if ((self==((STR) NULL))) {
  2351.   return 0;
  2352.  }
  2353.  return (self->asize);
  2354. }
  2355.  
  2356.  
  2357. void STR_acopy_INT_IN(STR self, INT beg, INT num_364, INT srcbeg, STR src_365) {
  2358.  STR noname366;
  2359.  INT noname367 = ((INT) 0);
  2360.  INT noname368 = ((INT) 0);
  2361.  STR noname369;
  2362.  INT noname370 = ((INT) 0);
  2363.  INT noname371 = ((INT) 0);
  2364.  BOOL local0;
  2365.  BOOL local1;
  2366.  BOOL local2;
  2367.  BOOL local3;
  2368.  INT local4;
  2369.  INT local5;
  2370.  INT local6;
  2371.  INT local7;
  2372.  INT local8;
  2373.  CHAR local9;
  2374.  if ((!((self==((STR) NULL))))) {
  2375.   local3 = (!((src_365==((STR) NULL))));
  2376.  } else {
  2377.   local3 = FALSE;
  2378.  }
  2379.  if (local3) {
  2380.   local4 = 0;
  2381.   local5 = (self->asize);
  2382.   local2 = INT_is_bet_INT_I(beg, local4, (c_INT_minus_INT_INT_chk(local5,1)));
  2383.  } else {
  2384.   local2 = FALSE;
  2385.  }
  2386.  if (local2) {
  2387.   local6 = 0;
  2388.   local7 = (self->asize);
  2389.   local1 = INT_is_bet_INT_I(num_364, local6, (c_INT_minus_INT_INT_chk(local7,beg)));
  2390.  } else {
  2391.   local1 = FALSE;
  2392.  }
  2393.  if (local1) {
  2394.   local8 = (src_365->asize);
  2395.   local0 = (num_364<=(c_INT_minus_INT_INT_chk(local8,srcbeg)));
  2396.  } else {
  2397.   local0 = FALSE;
  2398.  }
  2399.  if (!(local0)) {
  2400.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:122:8\n");
  2401.   exit(16);
  2402.  }
  2403.  {
  2404.   struct STR_aelt_INT_INT_frame_struct temp372_0;
  2405.   STR_aelt_INT_INT_frame 
  2406.   noname373 = &temp372_0;
  2407.   struct STR_aset_INT_INT_frame_struct temp372_1;
  2408.   STR_aset_INT_INT_frame 
  2409.   noname374 = &temp372_1;
  2410.   noname373->state = 0;
  2411.   noname374->state = 0;
  2412.   while (1) {
  2413.    if (noname374->state == 0) {
  2414.     noname369 = self;
  2415.     noname370 = beg;
  2416.     noname371 = num_364;
  2417.     noname374->arg0 = noname369;
  2418.     noname374->arg1 = noname370;
  2419.     noname374->arg2 = noname371;
  2420.    }
  2421.    if (noname373->state == 0) {
  2422.     noname366 = src_365;
  2423.     noname367 = srcbeg;
  2424.     noname368 = num_364;
  2425.     noname373->arg0 = noname366;
  2426.     noname373->arg1 = noname367;
  2427.     noname373->arg2 = noname368;
  2428.    }
  2429.    local9 = STR_aelt_INT_INT(noname373);
  2430.    if (noname373->state == -1) goto after_loop;
  2431.    noname374->arg3 = local9;
  2432.    STR_aset_INT_INT(noname374);
  2433.    if (noname374->state == -1) goto after_loop;
  2434.    0 /* No return value from iter call */;
  2435.   }
  2436.  }
  2437.  after_loop: ;
  2438. }
  2439.  
  2440.  
  2441. STR STR_tail_INT_STR(STR self, INT i) {
  2442.  STR noname375;
  2443.  STR r;
  2444.  INT local0;
  2445.  STR local1;
  2446.  INT local2;
  2447.  INT local3;
  2448.  INT local4;
  2449.  local0 = 0;
  2450.  if (!(INT_is_bet_INT_I(i, local0, STR_size_INT(self)))) {
  2451.   fprintf(stderr,"Violation of precondition ../Library/str.sa:426:7\n");
  2452.   exit(16);
  2453.  }
  2454.  if ((self==((STR) NULL))) {
  2455.   return self;
  2456.  }
  2457.  local1 = ((STR) sbi_arr_alloc_atomic(sizeof(struct STR_struct), STR_tag, sizeof(CHAR) , i));
  2458.  local1->asize = i;
  2459.  r = local1;
  2460.  local2 = 0;
  2461.  local3 = (self->asize);
  2462.  local4 = (c_INT_minus_INT_INT_chk(local3,i));
  2463.  STR_acopy_INT_IN(r, local2, i, local4, self);
  2464.  return r;
  2465. }
  2466.  
  2467.  
  2468. STR OPTIONS_suffix_S(OPTIONS self, STR a) {
  2469.  STR noname376;
  2470.  INT pos_377 = ((INT) 0);
  2471.  INT noname378 = ((INT) 0);
  2472.  INT noname379 = ((INT) 0);
  2473.  INT local0;
  2474.  INT local1;
  2475.  CHAR local2;
  2476.  INT local3;
  2477.  {
  2478.   struct INT_downto_INT_INT_frame_struct temp380_0;
  2479.   INT_downto_INT_INT_frame 
  2480.   noname381 = &temp380_0;
  2481.   noname381->state = 0;
  2482.   while (1) {
  2483.    if (noname381->state == 0) {
  2484.     local1 = STR_length_INT(a);
  2485.     noname378 = (c_INT_minus_INT_INT_chk(local1,1));
  2486.     noname379 = 0;
  2487.     noname381->arg0 = noname378;
  2488.     noname381->arg1 = noname379;
  2489.    }
  2490.    local0 = INT_downto_INT_INT(noname381);
  2491.    if (noname381->state == -1) goto after_loop;
  2492.    pos_377 = local0;
  2493.    local2 = STR_aget_INT_CHAR(a, pos_377);
  2494.    if ((local2=='.')) {
  2495.     goto after_loop;
  2496.    }
  2497.   }
  2498.  }
  2499.  after_loop: ;
  2500.  local3 = STR_length_INT(a);
  2501.  return STR_tail_INT_STR(a, (c_INT_minus_INT_INT_chk(local3,pos_377)));
  2502. }
  2503.  
  2504.  
  2505. STR FSETSTR_elt_nil_STR(FSETSTR self) {
  2506.  STR noname382;
  2507.  STR t = ((STR) NULL);
  2508.  return ((STR) NULL);
  2509.  if (!FSETSTR_invarian(self)) {
  2510.   fprintf(stderr,"Failed invariant FSET{STR}::invariant:BOOL ../Library/fset.sa:53:10\n");
  2511.   exit(16);
  2512.  }
  2513. }
  2514.  
  2515.  
  2516. FSETSTR FSETSTR_allocate(FSETSTR self, INT n) {
  2517.  FSETSTR noname383;
  2518.  FSETSTR r;
  2519.  FSETSTR noname384;
  2520.  FSETSTR local0;
  2521.  local0 = ((FSETSTR) sbi_arr_alloc(sizeof(struct FSETSTR_struct), FSETSTR_tag, sizeof(STR) , n));
  2522.  local0->asize = n;
  2523.  r = local0;
  2524.  if ((!((FSETSTR_elt_nil_STR(self)==((STR) NULL))))) {
  2525.   {
  2526.    struct FSETSTR_aset_STR_frame_struct temp385_0;
  2527.    FSETSTR_aset_STR_frame 
  2528.    noname386 = &temp385_0;
  2529.    noname386->state = 0;
  2530.    while (1) {
  2531.     if (noname386->state == 0) {
  2532.      noname384 = r;
  2533.      noname386->arg0 = noname384;
  2534.     }
  2535.     noname386->arg1 = FSETSTR_elt_nil_STR(self);
  2536.     FSETSTR_aset_STR(noname386);
  2537.     if (noname386->state == -1) goto after_loop;
  2538.     0 /* No return value from iter call */;
  2539.    }
  2540.   }
  2541.   after_loop: ;
  2542.  }
  2543.  return r;
  2544. }
  2545.  
  2546.  
  2547. INT FSETSTR_asize_INT(FSETSTR self) {
  2548.  INT noname387 = ((INT) 0);
  2549.   return self->asize;
  2550.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  2551.  exit(16);
  2552. }
  2553.  
  2554.  
  2555. FSETSTR FSETSTR_double_s(FSETSTR self) {
  2556.  FSETSTR noname388;
  2557.  FSETSTR r;
  2558.  FSETSTR noname389;
  2559.  INT local0;
  2560.  INT local1;
  2561.  INT local2;
  2562.  STR local3;
  2563.  if (!((!((self==((FSETSTR) NULL)))))) {
  2564.   fprintf(stderr,"Violation of precondition ../Library/fset.sa:150:22\n");
  2565.   exit(16);
  2566.  }
  2567.  local0 = (self->asize);
  2568.  local1 = (c_INT_minus_INT_INT_chk(local0,1));
  2569.  local2 = (c_INT_times_INT_INT_chk(local1,2));
  2570.  r = FSETSTR_allocate(self, (c_INT_plus_INT_INT_chk(local2,1)));
  2571.  {
  2572.   struct FSETSTR_elt_STR_frame_struct temp390_0;
  2573.   FSETSTR_elt_STR_frame 
  2574.   noname391 = &temp390_0;
  2575.   noname391->state = 0;
  2576.   while (1) {
  2577.    if (noname391->state == 0) {
  2578.     noname389 = self;
  2579.     noname391->arg0 = noname389;
  2580.    }
  2581.    local3 = FSETSTR_elt_STR(noname391);
  2582.    if (noname391->state == -1) goto after_loop;
  2583.    r = FSETSTR_insert_S(r, local3);
  2584.   }
  2585.  }
  2586.  after_loop: ;
  2587.  return r;
  2588. }
  2589.  
  2590.  
  2591. INT FSETSTR_elt_hash(FSETSTR self, STR e_392) {
  2592.  INT noname393 = ((INT) 0);
  2593.  return STR_hash_INT(e_392);
  2594.  return (c_SYS_id_OB_INT(((SYS) NULL),((OB) e_392)));
  2595.  if (!FSETSTR_invarian(self)) {
  2596.   fprintf(stderr,"Failed invariant FSET{STR}::invariant:BOOL ../Library/fset.sa:63:11\n");
  2597.   exit(16);
  2598.  }
  2599. }
  2600.  
  2601.  
  2602. STR FSETSTR_aget_INT_STR(FSETSTR self, INT ind_394) {
  2603.  STR noname395;
  2604.  BOOL local0;
  2605.  INT local1;
  2606.  INT local2;
  2607.  if ((!((self==((FSETSTR) NULL))))) {
  2608.   local1 = 0;
  2609.   local2 = (self->asize);
  2610.   local0 = INT_is_bet_INT_I(ind_394, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  2611.  } else {
  2612.   local0 = FALSE;
  2613.  }
  2614.  if (!(local0)) {
  2615.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  2616.   exit(16);
  2617.  }
  2618.  if (ind_394<0||ind_394>=self->asize) {
  2619.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  2620.   exit(16);
  2621.  }
  2622.  return self->arr_part[ind_394];
  2623.  if (!FSETSTR_invarian(self)) {
  2624.   fprintf(stderr,"Failed invariant FSET{STR}::invariant:BOOL ../Library/aref.sa:33:7\n");
  2625.   exit(16);
  2626.  }
  2627. }
  2628.  
  2629.  
  2630. BOOL FSETSTR_elt_eq_S(FSETSTR self, STR e1_396, STR e2_397) {
  2631.  BOOL noname398 = ((BOOL) 0);
  2632.  return STR_is_eq_STR_BOOL(e1_396, e2_397);
  2633.  return c_SYS_ob_eq_OB_OB_BOOL(((OB) e1_396),((OB) e2_397));
  2634.  if (!FSETSTR_invarian(self)) {
  2635.   fprintf(stderr,"Failed invariant FSET{STR}::invariant:BOOL ../Library/fset.sa:44:9\n");
  2636.   exit(16);
  2637.  }
  2638. }
  2639.  
  2640.  
  2641. void FSETSTR_aset_INT_STR(FSETSTR self, INT ind_399, STR val_400) {
  2642.  BOOL local0;
  2643.  INT local1;
  2644.  INT local2;
  2645.  if ((!((self==((FSETSTR) NULL))))) {
  2646.   local1 = 0;
  2647.   local2 = (self->asize);
  2648.   local0 = INT_is_bet_INT_I(ind_399, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  2649.  } else {
  2650.   local0 = FALSE;
  2651.  }
  2652.  if (!(local0)) {
  2653.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  2654.   exit(16);
  2655.  }
  2656.  if (ind_399<0||ind_399>=self->asize) {
  2657.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  2658.   exit(16);
  2659.  }
  2660.  self->arr_part[ind_399] = val_400;
  2661.  if (!FSETSTR_invarian(self)) {
  2662.   fprintf(stderr,"Failed invariant FSET{STR}::invariant:BOOL ../Library/aref.sa:38:7\n");
  2663.   exit(16);
  2664.  }
  2665. }
  2666.  
  2667.  
  2668. FSETSTR FSETSTR_insert_S(FSETSTR self, STR e_401) {
  2669.  FSETSTR noname402;
  2670.  FSETSTR r;
  2671.  INT asz_403 = ((INT) 0);
  2672.  INT h = ((INT) 0);
  2673.  STR te;
  2674.  STR te_404;
  2675.  INT local0;
  2676.  INT local1;
  2677.  INT local2;
  2678.  r = self;
  2679.  if ((r==((FSETSTR) NULL))) {
  2680.   r = FSETSTR_allocate(self, 5);
  2681.  }
  2682.  else {
  2683.   local0 = (c_INT_plus_INT_INT_chk(self->hsize,1));
  2684.   local1 = (c_INT_times_INT_INT_chk(local0,2));
  2685.   if ((local1>(self->asize))) {
  2686.    r = FSETSTR_double_s(self);
  2687.   }
  2688.  }
  2689.  asz_403 = (r->asize);
  2690.  local2 = FSETSTR_elt_hash(r, e_401);
  2691.  h = (local2&(c_INT_minus_INT_INT_chk(asz_403,2)));
  2692.  while (1) {
  2693.   te = FSETSTR_aget_INT_STR(r, h);
  2694.   if (FSETSTR_elt_eq_S(self, te, FSETSTR_elt_nil_STR(self))) {
  2695.    goto after_loop;
  2696.   }
  2697.   else {
  2698.    if (FSETSTR_elt_eq_S(self, te, e_401)) {
  2699.     FSETSTR_aset_INT_STR(r, h, e_401);
  2700.     return r;
  2701.    }
  2702.   }
  2703.   h = (c_INT_plus_INT_INT_chk(h,1));
  2704.  }
  2705.  after_loop: ;
  2706.  if ((h==(c_INT_minus_INT_INT_chk(asz_403,1)))) {
  2707.   h = 0;
  2708.   while (1) {
  2709.    te_404 = FSETSTR_aget_INT_STR(r, h);
  2710.    if (FSETSTR_elt_eq_S(self, te_404, FSETSTR_elt_nil_STR(self))) {
  2711.     goto after_loop_406;
  2712.    }
  2713.    else {
  2714.     if (FSETSTR_elt_eq_S(self, te_404, e_401)) {
  2715.      FSETSTR_aset_INT_STR(r, h, e_401);
  2716.      return r;
  2717.     }
  2718.    }
  2719.    h = (c_INT_plus_INT_INT_chk(h,1));
  2720.   }
  2721.   after_loop_406: ;
  2722.   if (!((h!=(c_INT_minus_INT_INT_chk(asz_403,1))))) {
  2723.    fprintf(stderr,"Violation of assertion ../Library/fset.sa:177:15\n");
  2724.    exit(16);
  2725.   }
  2726.  }
  2727.  FSETSTR_aset_INT_STR(r, h, e_401);
  2728.  r->hsize = (c_INT_plus_INT_INT_chk(r->hsize,1));
  2729.  return r;
  2730.  if (!FSETSTR_invarian(self)) {
  2731.   fprintf(stderr,"Failed invariant FSET{STR}::invariant:BOOL ../Library/fset.sa:158:9\n");
  2732.   exit(16);
  2733.  }
  2734. }
  2735.  
  2736.  
  2737. STR FILE_resolve_pat(FILE_20 self, STR fn) {
  2738.  STR noname408;
  2739.  return fn;
  2740. }
  2741.  
  2742.  
  2743. BOOL FSETSTR_test_STR(FSETSTR self, STR e_409) {
  2744.  BOOL noname410 = ((BOOL) 0);
  2745.  INT h = ((INT) 0);
  2746.  STR te;
  2747.  STR te_411;
  2748.  INT local0;
  2749.  INT local1;
  2750.  INT local2;
  2751.  INT local3;
  2752.  if ((self==((FSETSTR) NULL))) {
  2753.   return FALSE;
  2754.  }
  2755.  local0 = FSETSTR_elt_hash(self, e_409);
  2756.  local1 = (self->asize);
  2757.  h = (local0&(c_INT_minus_INT_INT_chk(local1,2)));
  2758.  while (1) {
  2759.   te = FSETSTR_aget_INT_STR(self, h);
  2760.   if (FSETSTR_elt_eq_S(self, te, e_409)) {
  2761.    return TRUE;
  2762.   }
  2763.   else {
  2764.    if (FSETSTR_elt_eq_S(self, te, FSETSTR_elt_nil_STR(self))) {
  2765.     goto after_loop;
  2766.    }
  2767.   }
  2768.   h = (c_INT_plus_INT_INT_chk(h,1));
  2769.  }
  2770.  after_loop: ;
  2771.  local2 = (self->asize);
  2772.  if ((h==(c_INT_minus_INT_INT_chk(local2,1)))) {
  2773.   h = 0;
  2774.   while (1) {
  2775.    te_411 = FSETSTR_aget_INT_STR(self, h);
  2776.    if (FSETSTR_elt_eq_S(self, te_411, e_409)) {
  2777.     return TRUE;
  2778.    }
  2779.    else {
  2780.     if (FSETSTR_elt_eq_S(self, te_411, FSETSTR_elt_nil_STR(self))) {
  2781.      goto after_loop_413;
  2782.     }
  2783.    }
  2784.    h = (c_INT_plus_INT_INT_chk(h,1));
  2785.   }
  2786.   after_loop_413: ;
  2787.   local3 = (self->asize);
  2788.   if (!((h!=(c_INT_minus_INT_INT_chk(local3,1))))) {
  2789.    fprintf(stderr,"Violation of assertion ../Library/fset.sa:127:15\n");
  2790.    exit(16);
  2791.   }
  2792.  }
  2793.  return FALSE;
  2794.  if (!FSETSTR_invarian(self)) {
  2795.   fprintf(stderr,"Failed invariant FSET{STR}::invariant:BOOL ../Library/fset.sa:112:7\n");
  2796.   exit(16);
  2797.  }
  2798. }
  2799.  
  2800.  
  2801. INT FLISTSTR_asize_INT(FLISTSTR self) {
  2802.  INT noname415 = ((INT) 0);
  2803.   return self->asize;
  2804.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  2805.  exit(16);
  2806. }
  2807.  
  2808.  
  2809. INT FLISTSTR_size_INT(FLISTSTR self) {
  2810.  INT noname416 = ((INT) 0);
  2811.  if ((self==((FLISTSTR) NULL))) {
  2812.   return 0;
  2813.  }
  2814.  return self->loc_17;
  2815.  if (!FLISTSTR_invaria(self)) {
  2816.   fprintf(stderr,"Failed invariant FLIST{STR}::invariant:BOOL ../Library/flist.sa:50:7\n");
  2817.   exit(16);
  2818.  }
  2819. }
  2820.  
  2821.  
  2822. BOOL FLISTSTR_is_empt(FLISTSTR self) {
  2823.  BOOL noname417 = ((BOOL) 0);
  2824.  INT local0;
  2825.  local0 = FLISTSTR_size_INT(self);
  2826.  return (local0==0);
  2827.  if (!FLISTSTR_invaria(self)) {
  2828.   fprintf(stderr,"Failed invariant FLIST{STR}::invariant:BOOL ../Library/flist.sa:113:11\n");
  2829.   exit(16);
  2830.  }
  2831. }
  2832.  
  2833.  
  2834. void FLISTSTR_aclear(FLISTSTR self) {
  2835.  STR nil = ((STR) NULL);
  2836.  FLISTSTR noname418;
  2837.  if (!((!((self==((FLISTSTR) NULL)))))) {
  2838.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:43:9\n");
  2839.   exit(16);
  2840.  }
  2841.  {
  2842.   struct FLISTSTR_aset_STR_frame_struct temp419_0;
  2843.   FLISTSTR_aset_STR_frame 
  2844.   noname420 = &temp419_0;
  2845.   noname420->state = 0;
  2846.   while (1) {
  2847.    if (noname420->state == 0) {
  2848.     noname418 = self;
  2849.     noname420->arg0 = noname418;
  2850.    }
  2851.    noname420->arg1 = nil;
  2852.    FLISTSTR_aset_STR(noname420);
  2853.    if (noname420->state == -1) goto after_loop;
  2854.    0 /* No return value from iter call */;
  2855.   }
  2856.  }
  2857.  after_loop: ;
  2858. }
  2859.  
  2860.  
  2861. void FLISTSTR_clear(FLISTSTR self) {
  2862.  if (FLISTSTR_is_empt(self)) {
  2863.   return;
  2864.  }
  2865.  else {
  2866.   FLISTSTR_aclear(self);
  2867.   self->loc_17 = 0;
  2868.  }
  2869.  if (!FLISTSTR_invaria(self)) {
  2870.   fprintf(stderr,"Failed invariant FLIST{STR}::invariant:BOOL ../Library/flist.sa:117:8\n");
  2871.   exit(16);
  2872.  }
  2873. }
  2874.  
  2875.  
  2876. void FLISTSTR_aref_as(FLISTSTR self, INT ind_421, STR val_422) {
  2877.  BOOL local0;
  2878.  INT local1;
  2879.  INT local2;
  2880.  if ((!((self==((FLISTSTR) NULL))))) {
  2881.   local1 = 0;
  2882.   local2 = (self->asize);
  2883.   local0 = INT_is_bet_INT_I(ind_421, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  2884.  } else {
  2885.   local0 = FALSE;
  2886.  }
  2887.  if (!(local0)) {
  2888.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  2889.   exit(16);
  2890.  }
  2891.  if (ind_421<0||ind_421>=self->asize) {
  2892.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  2893.   exit(16);
  2894.  }
  2895.  self->arr_part[ind_421] = val_422;
  2896. }
  2897.  
  2898.  
  2899. void FLISTSTR_aset_IN(FLISTSTR self, INT ind_423, STR val_424) {
  2900.  BOOL local0;
  2901.  INT local1;
  2902.  if ((!((self==((FLISTSTR) NULL))))) {
  2903.   local1 = 0;
  2904.   local0 = INT_is_bet_INT_I(ind_423, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  2905.  } else {
  2906.   local0 = FALSE;
  2907.  }
  2908.  if (!(local0)) {
  2909.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:73:7\n");
  2910.   exit(16);
  2911.  }
  2912.  FLISTSTR_aref_as(self, ind_423, val_424);
  2913.  if (!FLISTSTR_invaria(self)) {
  2914.   fprintf(stderr,"Failed invariant FLIST{STR}::invariant:BOOL ../Library/flist.sa:73:7\n");
  2915.   exit(16);
  2916.  }
  2917. }
  2918.  
  2919.  
  2920. FLISTSTR FLISTSTR_push_ST(FLISTSTR self, STR e_425) {
  2921.  FLISTSTR noname426;
  2922.  FLISTSTR r = ((FLISTSTR) NULL);
  2923.  FLISTSTR noname427;
  2924.  FLISTSTR noname428;
  2925.  FLISTSTR local0;
  2926.  INT local1;
  2927.  FLISTSTR local2;
  2928.  INT local3;
  2929.  STR local4;
  2930.  INT local5;
  2931.  if ((self==((FLISTSTR) NULL))) {
  2932.   local0 = ((FLISTSTR) sbi_arr_alloc(sizeof(struct FLISTSTR_struct), FLISTSTR_tag, sizeof(STR) , 5));
  2933.   local0->asize = 5;
  2934.   r = local0;
  2935.  }
  2936.  else {
  2937.   local1 = self->loc_17;
  2938.   if ((local1<(self->asize))) {
  2939.    r = self;
  2940.   }
  2941.   else {
  2942.    local3 = 2;
  2943.    local2 = ((FLISTSTR) sbi_arr_alloc(sizeof(struct FLISTSTR_struct), FLISTSTR_tag, sizeof(STR) , (c_INT_times_INT_INT_chk(local3,(self->asize)))));
  2944.    local2->asize = (c_INT_times_INT_INT_chk(local3,(self->asize)));
  2945.    r = local2;
  2946.    r->loc_17 = self->loc_17;
  2947.    {
  2948.     struct FLISTSTR_elt_STR_frame_struct temp429_0;
  2949.     FLISTSTR_elt_STR_frame 
  2950.     noname430 = &temp429_0;
  2951.     struct FLISTSTR_aset_STR_frame_struct temp429_1;
  2952.     FLISTSTR_aset_STR_frame 
  2953.     noname431 = &temp429_1;
  2954.     noname430->state = 0;
  2955.     noname431->state = 0;
  2956.     while (1) {
  2957.      if (noname431->state == 0) {
  2958.       noname428 = r;
  2959.       noname431->arg0 = noname428;
  2960.      }
  2961.      if (noname430->state == 0) {
  2962.       noname427 = self;
  2963.       noname430->arg0 = noname427;
  2964.      }
  2965.      local4 = FLISTSTR_elt_STR(noname430);
  2966.      if (noname430->state == -1) goto after_loop;
  2967.      noname431->arg1 = local4;
  2968.      FLISTSTR_aset_STR(noname431);
  2969.      if (noname431->state == -1) goto after_loop;
  2970.      0 /* No return value from iter call */;
  2971.     }
  2972.    }
  2973.    after_loop: ;
  2974.    FLISTSTR_clear(self);
  2975.   }
  2976.  }
  2977.  r->loc_17 = (c_INT_plus_INT_INT_chk(r->loc_17,1));
  2978.  local5 = (c_INT_minus_INT_INT_chk(r->loc_17,1));
  2979.  FLISTSTR_aset_IN(r, local5, e_425);
  2980.  return r;
  2981.  if (!FLISTSTR_invaria(self)) {
  2982.   fprintf(stderr,"Failed invariant FLIST{STR}::invariant:BOOL ../Library/flist.sa:79:7\n");
  2983.   exit(16);
  2984.  }
  2985. }
  2986.  
  2987.  
  2988. void OPTIONS_rewind(OPTIONS self) {
  2989.  self->next_8 = (c_INT_minus_INT_INT_chk(self->next_8,1));
  2990. }
  2991.  
  2992.  
  2993. void OPTIONS_get_files(OPTIONS self) {
  2994.  STR arg_432;
  2995.  STR suf;
  2996.  STR path_433;
  2997.  while (1) {
  2998.   if (OPTIONS_more_arg(self)) {
  2999.   }
  3000.   else {
  3001.    goto after_loop;
  3002.   }
  3003.   arg_432 = OPTIONS_next_arg_STR(self);
  3004.   suf = OPTIONS_suffix_S(self, arg_432);
  3005.   if (STR_is_eq_STR_BOOL(suf, ((STR) &c))) {
  3006.    self->c_files = FSETSTR_insert_S(self->c_files, arg_432);
  3007.   }
  3008.   else {
  3009.    if (STR_is_eq_STR_BOOL(suf, ((STR) &obj))) {
  3010.     self->object_files = FSETSTR_insert_S(self->object_files, arg_432);
  3011.    }
  3012.    else {
  3013.     if (STR_is_eq_STR_BOOL(suf, ((STR) &sa))) {
  3014.      path_433 = FILE_resolve_pat(((FILE_20) NULL), arg_432);
  3015.      if ((!(FSETSTR_test_STR(self->paths, path_433)))) {
  3016.       self->sather_files = FSETSTR_insert_S(self->sather_files, arg_432);
  3017.       self->paths = FSETSTR_insert_S(self->paths, path_433);
  3018.      }
  3019.     }
  3020.     else {
  3021.      if (STR_is_eq_STR_BOOL(suf, ((STR) &lib_435))) {
  3022.       self->archive_files = FLISTSTR_push_ST(self->archive_files, arg_432);
  3023.      }
  3024.      else {
  3025.       OPTIONS_rewind(self);
  3026.       return;
  3027.      }
  3028.     }
  3029.    }
  3030.   }
  3031.  }
  3032.  after_loop: ;
  3033. }
  3034.  
  3035.  
  3036. FLISTSTR FLISTSTR_create_(FLISTSTR self) {
  3037.  FLISTSTR noname436;
  3038.  return ((FLISTSTR) NULL);
  3039.  if (!FLISTSTR_invaria(self)) {
  3040.   fprintf(stderr,"Failed invariant FLIST{STR}::invariant:BOOL ../Library/flist.sa:55:9\n");
  3041.   exit(16);
  3042.  }
  3043. }
  3044.  
  3045.  
  3046. STR STR_create_from_(STR self, EXT_OB s_437) {
  3047.  STR noname438;
  3048.  INT len_439 = ((INT) 0);
  3049.  STR r;
  3050.  EXT_OB ext;
  3051.  STR local0;
  3052.  if ((s_437==((EXT_OB) NULL))) {
  3053.   return ((STR) NULL);
  3054.  }
  3055.  len_439 = strlen(s_437);
  3056.  local0 = ((STR) sbi_arr_alloc_atomic(sizeof(struct STR_struct), STR_tag, sizeof(CHAR) , len_439));
  3057.  local0->asize = len_439;
  3058.  r = local0;
  3059.  ext = strcpy(((r==NULL)?NULL:r->arr_part), s_437);
  3060.  return r;
  3061. }
  3062.  
  3063.  
  3064. STR UNIX_get_env_STR_STR(UNIX self, STR var) {
  3065.  STR noname440;
  3066.  EXT_OB r;
  3067.  r = getenv(((var==NULL)?NULL:var->arr_part));
  3068.  if ((r==((EXT_OB) NULL))) {
  3069.   return ((STR) NULL);
  3070.  }
  3071.  return STR_create_from_(((STR) NULL), r);
  3072. }
  3073.  
  3074.  
  3075. BOOL CHAR_is_space_BOOL(CHAR self) {
  3076.  BOOL noname441 = ((BOOL) 0);
  3077.  CHAR noname442 = ((CHAR) 0);
  3078.  noname442 = self;
  3079.  switch (noname442) {
  3080.   case ' ':
  3081.   case '\f':
  3082.   case '\n':
  3083.   case '\r':
  3084.   case '\t':
  3085.   case '\v':
  3086.   case '\32':
  3087.    return TRUE;
  3088.    break;
  3089.   default: ;
  3090.  }
  3091.  return FALSE;
  3092. }
  3093.  
  3094.  
  3095. void STR_aset_INT_CHAR(STR self, INT ind_443, CHAR val_444) {
  3096.  BOOL local0;
  3097.  INT local1;
  3098.  INT local2;
  3099.  if ((!((self==((STR) NULL))))) {
  3100.   local1 = 0;
  3101.   local2 = (self->asize);
  3102.   local0 = INT_is_bet_INT_I(ind_443, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  3103.  } else {
  3104.   local0 = FALSE;
  3105.  }
  3106.  if (!(local0)) {
  3107.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  3108.   exit(16);
  3109.  }
  3110.  if (ind_443<0||ind_443>=self->asize) {
  3111.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  3112.   exit(16);
  3113.  }
  3114.  self->arr_part[ind_443] = val_444;
  3115. }
  3116.  
  3117.  
  3118. STR STR_plus_CHAR_STR(STR self, CHAR c_445) {
  3119.  STR noname446;
  3120.  STR r = ((STR) NULL);
  3121.  STR local0;
  3122.  STR local1;
  3123.  INT local2;
  3124.  INT local3;
  3125.  if ((self==((STR) NULL))) {
  3126.   local0 = ((STR) sbi_arr_alloc_atomic(sizeof(struct STR_struct), STR_tag, sizeof(CHAR) , 1));
  3127.   local0->asize = 1;
  3128.   r = local0;
  3129.  }
  3130.  else {
  3131.   local2 = (self->asize);
  3132.   local1 = ((STR) sbi_arr_alloc_atomic(sizeof(struct STR_struct), STR_tag, sizeof(CHAR) , (c_INT_plus_INT_INT_chk(local2,1))));
  3133.   local1->asize = (c_INT_plus_INT_INT_chk(local2,1));
  3134.   r = local1;
  3135.   (memcpy(r->arr_part,self->arr_part,(r->asize) > (self->asize) ? self->asize:r->asize));
  3136.  }
  3137.  local3 = STR_size_INT(self);
  3138.  STR_aset_INT_CHAR(r, local3, c_445);
  3139.  return r;
  3140. }
  3141.  
  3142.  
  3143. BOOL STR_is_neq_STR_BOOL(STR self, STR s_447) {
  3144.  BOOL noname448 = ((BOOL) 0);
  3145.  return (!(STR_is_eq_STR_BOOL(self, s_447)));
  3146. }
  3147.  
  3148.  
  3149. FLISTSTR OPTIONS_args_fro(OPTIONS self) {
  3150.  FLISTSTR noname449;
  3151.  FLISTSTR cl;
  3152.  STR sc;
  3153.  STR tok;
  3154.  STR noname450;
  3155.  CHAR c_451 = ((CHAR) 0);
  3156.  CHAR local0;
  3157.  STR local1;
  3158.  CHAR *local0p; INT local0n;
  3159.  cl = FLISTSTR_create_(((FLISTSTR) NULL));
  3160.  sc = UNIX_get_env_STR_STR(((UNIX) NULL), ((STR) &SATHER_COMMANDS));
  3161.  if ((sc==((STR) NULL))) {
  3162.   sc = ((STR) &name_452);
  3163.  }
  3164.  tok = ((STR) &name_453);
  3165.  {
  3166.   BOOL noname455 = TRUE;
  3167.   while (1) {
  3168.    if (noname455) {
  3169.     noname455 = FALSE;
  3170.     noname450 = sc;
  3171.     local1 = noname450;
  3172.     local0p = local1->arr_part; local0n = local1->asize;
  3173.    } else {
  3174.     local0p++; local0n--;
  3175.    }
  3176.    if (local0n<=0) goto after_loop; local0 = *local0p;
  3177.    c_451 = local0;
  3178.    if ((c_451=='\\')) {
  3179.     c_451 = '/';
  3180.    }
  3181.    if ((!(CHAR_is_space_BOOL(c_451)))) {
  3182.     tok = STR_plus_CHAR_STR(tok, c_451);
  3183.    }
  3184.    else {
  3185.     if (STR_is_neq_STR_BOOL(tok, ((STR) &name_456))) {
  3186.      cl = FLISTSTR_push_ST(cl, tok);
  3187.      tok = ((STR) &name_457);
  3188.     }
  3189.    }
  3190.   }
  3191.  }
  3192.  after_loop: ;
  3193.  if (STR_is_neq_STR_BOOL(tok, ((STR) &name_458))) {
  3194.   cl = FLISTSTR_push_ST(cl, tok);
  3195.  }
  3196.  return cl;
  3197. }
  3198.  
  3199.  
  3200. void ARRAYSTR_acopy_I(ARRAYSTR self, INT beg, INT num_459, INT srcbeg, ARRAYSTR src_460) {
  3201.  ARRAYSTR noname461;
  3202.  INT noname462 = ((INT) 0);
  3203.  INT noname463 = ((INT) 0);
  3204.  ARRAYSTR noname464;
  3205.  INT noname465 = ((INT) 0);
  3206.  INT noname466 = ((INT) 0);
  3207.  BOOL local0;
  3208.  BOOL local1;
  3209.  BOOL local2;
  3210.  BOOL local3;
  3211.  INT local4;
  3212.  INT local5;
  3213.  INT local6;
  3214.  INT local7;
  3215.  INT local8;
  3216.  STR local9;
  3217.  if ((!((self==((ARRAYSTR) NULL))))) {
  3218.   local3 = (!((src_460==((ARRAYSTR) NULL))));
  3219.  } else {
  3220.   local3 = FALSE;
  3221.  }
  3222.  if (local3) {
  3223.   local4 = 0;
  3224.   local5 = (self->asize);
  3225.   local2 = INT_is_bet_INT_I(beg, local4, (c_INT_minus_INT_INT_chk(local5,1)));
  3226.  } else {
  3227.   local2 = FALSE;
  3228.  }
  3229.  if (local2) {
  3230.   local6 = 0;
  3231.   local7 = (self->asize);
  3232.   local1 = INT_is_bet_INT_I(num_459, local6, (c_INT_minus_INT_INT_chk(local7,beg)));
  3233.  } else {
  3234.   local1 = FALSE;
  3235.  }
  3236.  if (local1) {
  3237.   local8 = (src_460->asize);
  3238.   local0 = (num_459<=(c_INT_minus_INT_INT_chk(local8,srcbeg)));
  3239.  } else {
  3240.   local0 = FALSE;
  3241.  }
  3242.  if (!(local0)) {
  3243.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:122:8\n");
  3244.   exit(16);
  3245.  }
  3246.  {
  3247.   struct ARRAYSTR_aelt_IN_frame_struct temp467_0;
  3248.   ARRAYSTR_aelt_IN_frame 
  3249.   noname468 = &temp467_0;
  3250.   struct ARRAYSTR_aset_IN_frame_struct temp467_1;
  3251.   ARRAYSTR_aset_IN_frame 
  3252.   noname469 = &temp467_1;
  3253.   noname468->state = 0;
  3254.   noname469->state = 0;
  3255.   while (1) {
  3256.    if (noname469->state == 0) {
  3257.     noname464 = self;
  3258.     noname465 = beg;
  3259.     noname466 = num_459;
  3260.     noname469->arg0 = noname464;
  3261.     noname469->arg1 = noname465;
  3262.     noname469->arg2 = noname466;
  3263.    }
  3264.    if (noname468->state == 0) {
  3265.     noname461 = src_460;
  3266.     noname462 = srcbeg;
  3267.     noname463 = num_459;
  3268.     noname468->arg0 = noname461;
  3269.     noname468->arg1 = noname462;
  3270.     noname468->arg2 = noname463;
  3271.    }
  3272.    local9 = ARRAYSTR_aelt_IN(noname468);
  3273.    if (noname468->state == -1) goto after_loop;
  3274.    noname469->arg3 = local9;
  3275.    ARRAYSTR_aset_IN(noname469);
  3276.    if (noname469->state == -1) goto after_loop;
  3277.    0 /* No return value from iter call */;
  3278.   }
  3279.  }
  3280.  after_loop: ;
  3281. }
  3282.  
  3283.  
  3284. void ARRAYSTR_copy_IN(ARRAYSTR self, INT beg, INT num_470, INT srcbeg, ARRAYSTR src_471) {
  3285.  BOOL local0;
  3286.  BOOL local1;
  3287.  BOOL local2;
  3288.  BOOL local3;
  3289.  INT local4;
  3290.  INT local5;
  3291.  INT local6;
  3292.  INT local7;
  3293.  INT local8;
  3294.  if ((!((self==((ARRAYSTR) NULL))))) {
  3295.   local3 = (!((src_471==((ARRAYSTR) NULL))));
  3296.  } else {
  3297.   local3 = FALSE;
  3298.  }
  3299.  if (local3) {
  3300.   local4 = 0;
  3301.   local5 = ARRAYSTR_size_INT(self);
  3302.   local2 = INT_is_bet_INT_I(beg, local4, (c_INT_minus_INT_INT_chk(local5,1)));
  3303.  } else {
  3304.   local2 = FALSE;
  3305.  }
  3306.  if (local2) {
  3307.   local6 = 0;
  3308.   local7 = ARRAYSTR_size_INT(self);
  3309.   local1 = INT_is_bet_INT_I(num_470, local6, (c_INT_minus_INT_INT_chk(local7,beg)));
  3310.  } else {
  3311.   local1 = FALSE;
  3312.  }
  3313.  if (local1) {
  3314.   local8 = ARRAYSTR_size_INT(src_471);
  3315.   local0 = (num_470<=(c_INT_minus_INT_INT_chk(local8,srcbeg)));
  3316.  } else {
  3317.   local0 = FALSE;
  3318.  }
  3319.  if (!(local0)) {
  3320.   fprintf(stderr,"Violation of precondition ../Library/array.sa:146:7\n");
  3321.   exit(16);
  3322.  }
  3323.  ARRAYSTR_acopy_I(self, beg, num_470, srcbeg, src_471);
  3324. }
  3325.  
  3326.  
  3327. ARRAYSTR ARRAYSTR_subarr_(ARRAYSTR self, INT beg, INT num_472) {
  3328.  ARRAYSTR noname473;
  3329.  ARRAYSTR r;
  3330.  BOOL local0;
  3331.  BOOL local1;
  3332.  INT local2;
  3333.  INT local3;
  3334.  INT local4;
  3335.  INT local5;
  3336.  ARRAYSTR local6;
  3337.  if ((!((self==((ARRAYSTR) NULL))))) {
  3338.   local2 = 0;
  3339.   local3 = ARRAYSTR_size_INT(self);
  3340.   local1 = INT_is_bet_INT_I(beg, local2, (c_INT_minus_INT_INT_chk(local3,1)));
  3341.  } else {
  3342.   local1 = FALSE;
  3343.  }
  3344.  if (local1) {
  3345.   local4 = 0;
  3346.   local5 = ARRAYSTR_size_INT(self);
  3347.   local0 = INT_is_bet_INT_I(num_472, local4, (c_INT_minus_INT_INT_chk(local5,beg)));
  3348.  } else {
  3349.   local0 = FALSE;
  3350.  }
  3351.  if (!(local0)) {
  3352.   fprintf(stderr,"Violation of precondition ../Library/array.sa:158:9\n");
  3353.   exit(16);
  3354.  }
  3355.  local6 = ((ARRAYSTR) sbi_arr_alloc(sizeof(struct ARRAYSTR_struct), ARRAYSTR_tag, sizeof(STR) , num_472));
  3356.  local6->asize = num_472;
  3357.  r = local6;
  3358.  ARRAYSTR_copy_IN(r, 0, num_472, beg, self);
  3359.  return r;
  3360. }
  3361.  
  3362.  
  3363. ARRAYSTR ARRAYSTR_create_(ARRAYSTR self, INT n) {
  3364.  ARRAYSTR noname474;
  3365.  ARRAYSTR local0;
  3366.  if (!((n>=0))) {
  3367.   fprintf(stderr,"Violation of precondition ../Library/array.sa:56:9\n");
  3368.   exit(16);
  3369.  }
  3370.  local0 = ((ARRAYSTR) sbi_arr_alloc(sizeof(struct ARRAYSTR_struct), ARRAYSTR_tag, sizeof(STR) , n));
  3371.  local0->asize = n;
  3372.  return local0;
  3373. }
  3374.  
  3375.  
  3376. ARRAYSTR FLISTSTR_array_A(FLISTSTR self) {
  3377.  ARRAYSTR noname475;
  3378.  ARRAYSTR r;
  3379.  FLISTSTR noname476;
  3380.  ARRAYSTR noname477;
  3381.  STR local0;
  3382.  if ((self==((FLISTSTR) NULL))) {
  3383.   return ((ARRAYSTR) NULL);
  3384.  }
  3385.  r = ARRAYSTR_create_(((ARRAYSTR) NULL), self->loc_17);
  3386.  {
  3387.   struct FLISTSTR_elt_STR_frame_struct temp478_0;
  3388.   FLISTSTR_elt_STR_frame 
  3389.   noname479 = &temp478_0;
  3390.   struct ARRAYSTR_set_STR_frame_struct temp478_1;
  3391.   ARRAYSTR_set_STR_frame 
  3392.   noname480 = &temp478_1;
  3393.   noname479->state = 0;
  3394.   noname480->state = 0;
  3395.   while (1) {
  3396.    if (noname480->state == 0) {
  3397.     noname477 = r;
  3398.     noname480->arg0 = noname477;
  3399.    }
  3400.    if (noname479->state == 0) {
  3401.     noname476 = self;
  3402.     noname479->arg0 = noname476;
  3403.    }
  3404.    local0 = FLISTSTR_elt_STR(noname479);
  3405.    if (noname479->state == -1) goto after_loop;
  3406.    noname480->arg1 = local0;
  3407.    ARRAYSTR_set_STR(noname480);
  3408.    if (noname480->state == -1) goto after_loop;
  3409.    0 /* No return value from iter call */;
  3410.   }
  3411.  }
  3412.  after_loop: ;
  3413.  return r;
  3414.  if (!FLISTSTR_invaria(self)) {
  3415.   fprintf(stderr,"Failed invariant FLIST{STR}::invariant:BOOL ../Library/flist.sa:121:8\n");
  3416.   exit(16);
  3417.  }
  3418. }
  3419.  
  3420.  
  3421. void ARRAYSTR_acopy_A(ARRAYSTR self, ARRAYSTR src_481) {
  3422.  ARRAYSTR noname482;
  3423.  ARRAYSTR noname483;
  3424.  BOOL local0;
  3425.  STR local1;
  3426.  if ((!((self==((ARRAYSTR) NULL))))) {
  3427.   local0 = (!((src_481==((ARRAYSTR) NULL))));
  3428.  } else {
  3429.   local0 = FALSE;
  3430.  }
  3431.  if (!(local0)) {
  3432.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:103:8\n");
  3433.   exit(16);
  3434.  }
  3435.  {
  3436.   struct ARRAYSTR_aelt_STR_frame_struct temp484_0;
  3437.   ARRAYSTR_aelt_STR_frame 
  3438.   noname485 = &temp484_0;
  3439.   struct ARRAYSTR_aset_STR_frame_struct temp484_1;
  3440.   ARRAYSTR_aset_STR_frame 
  3441.   noname486 = &temp484_1;
  3442.   noname485->state = 0;
  3443.   noname486->state = 0;
  3444.   while (1) {
  3445.    if (noname486->state == 0) {
  3446.     noname483 = self;
  3447.     noname486->arg0 = noname483;
  3448.    }
  3449.    if (noname485->state == 0) {
  3450.     noname482 = src_481;
  3451.     noname485->arg0 = noname482;
  3452.    }
  3453.    local1 = ARRAYSTR_aelt_STR(noname485);
  3454.    if (noname485->state == -1) goto after_loop;
  3455.    noname486->arg1 = local1;
  3456.    ARRAYSTR_aset_STR(noname486);
  3457.    if (noname486->state == -1) goto after_loop;
  3458.    0 /* No return value from iter call */;
  3459.   }
  3460.  }
  3461.  after_loop: ;
  3462. }
  3463.  
  3464.  
  3465. void ARRAYSTR_copy_AR(ARRAYSTR self, ARRAYSTR src_487) {
  3466.  BOOL local0;
  3467.  if ((!((self==((ARRAYSTR) NULL))))) {
  3468.   local0 = (!((src_487==((ARRAYSTR) NULL))));
  3469.  } else {
  3470.   local0 = FALSE;
  3471.  }
  3472.  if (local0) {
  3473.   ARRAYSTR_acopy_A(self, src_487);
  3474.  }
  3475. }
  3476.  
  3477.  
  3478. ARRAYSTR ARRAYSTR_copy_AR_488(ARRAYSTR self) {
  3479.  ARRAYSTR noname489;
  3480.  ARRAYSTR r;
  3481.  r = ARRAYSTR_create_(self, ARRAYSTR_size_INT(self));
  3482.  ARRAYSTR_copy_AR(r, self);
  3483.  return r;
  3484. }
  3485.  
  3486.  
  3487. void ARRAYSTR_acopy_I_490(ARRAYSTR self, INT beg, ARRAYSTR src_491) {
  3488.  ARRAYSTR noname492;
  3489.  ARRAYSTR noname493;
  3490.  INT noname494 = ((INT) 0);
  3491.  BOOL local0;
  3492.  BOOL local1;
  3493.  BOOL local2;
  3494.  INT local3;
  3495.  INT local4;
  3496.  INT local5;
  3497.  STR local6;
  3498.  if ((!((self==((ARRAYSTR) NULL))))) {
  3499.   local1 = (!((src_491==((ARRAYSTR) NULL))));
  3500.  } else {
  3501.   local1 = FALSE;
  3502.  }
  3503.  if (local1) {
  3504.   local3 = 0;
  3505.   local4 = (self->asize);
  3506.   if (INT_is_bet_INT_I(beg, local3, (c_INT_minus_INT_INT_chk(local4,1)))) {
  3507.    local2 = TRUE;
  3508.   } else {
  3509.    local5 = (src_491->asize);
  3510.    local2 = (local5==0);
  3511.   }
  3512.   local0 = local2;
  3513.  } else {
  3514.   local0 = FALSE;
  3515.  }
  3516.  if (!(local0)) {
  3517.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:109:8\n");
  3518.   exit(16);
  3519.  }
  3520.  {
  3521.   struct ARRAYSTR_aelt_STR_frame_struct temp495_0;
  3522.   ARRAYSTR_aelt_STR_frame 
  3523.   noname496 = &temp495_0;
  3524.   struct ARRAYSTR_aset_IN_497_frame_struct temp495_1;
  3525.   ARRAYSTR_aset_IN_497_frame 
  3526.   noname498 = &temp495_1;
  3527.   noname496->state = 0;
  3528.   noname498->state = 0;
  3529.   while (1) {
  3530.    if (noname498->state == 0) {
  3531.     noname493 = self;
  3532.     noname494 = beg;
  3533.     noname498->arg0 = noname493;
  3534.     noname498->arg1 = noname494;
  3535.    }
  3536.    if (noname496->state == 0) {
  3537.     noname492 = src_491;
  3538.     noname496->arg0 = noname492;
  3539.    }
  3540.    local6 = ARRAYSTR_aelt_STR(noname496);
  3541.    if (noname496->state == -1) goto after_loop;
  3542.    noname498->arg2 = local6;
  3543.    ARRAYSTR_aset_IN_497(noname498);
  3544.    if (noname498->state == -1) goto after_loop;
  3545.    0 /* No return value from iter call */;
  3546.   }
  3547.  }
  3548.  after_loop: ;
  3549. }
  3550.  
  3551.  
  3552. void ARRAYSTR_copy_IN_499(ARRAYSTR self, INT beg, ARRAYSTR src_500) {
  3553.  BOOL local0;
  3554.  BOOL local1;
  3555.  INT local2;
  3556.  INT local3;
  3557.  INT local4;
  3558.  if ((!((self==((ARRAYSTR) NULL))))) {
  3559.   local2 = 0;
  3560.   local3 = ARRAYSTR_size_INT(self);
  3561.   if (INT_is_bet_INT_I(beg, local2, (c_INT_minus_INT_INT_chk(local3,1)))) {
  3562.    local1 = TRUE;
  3563.   } else {
  3564.    local4 = ARRAYSTR_size_INT(src_500);
  3565.    local1 = (local4==0);
  3566.   }
  3567.   local0 = local1;
  3568.  } else {
  3569.   local0 = FALSE;
  3570.  }
  3571.  if (!(local0)) {
  3572.   fprintf(stderr,"Violation of precondition ../Library/array.sa:132:7\n");
  3573.   exit(16);
  3574.  }
  3575.  if ((!((src_500==((ARRAYSTR) NULL))))) {
  3576.   ARRAYSTR_acopy_I_490(self, beg, src_500);
  3577.  }
  3578. }
  3579.  
  3580.  
  3581. ARRAYSTR ARRAYSTR_append_(ARRAYSTR self, ARRAYSTR a) {
  3582.  ARRAYSTR noname501;
  3583.  ARRAYSTR r;
  3584.  ARRAYSTR local0;
  3585.  INT local1;
  3586.  INT local2;
  3587.  if ((self==((ARRAYSTR) NULL))) {
  3588.   return ARRAYSTR_copy_AR_488(a);
  3589.  }
  3590.  else {
  3591.   if ((a==((ARRAYSTR) NULL))) {
  3592.    return ARRAYSTR_copy_AR_488(self);
  3593.   }
  3594.  }
  3595.  local1 = ARRAYSTR_size_INT(self);
  3596.  local0 = ((ARRAYSTR) sbi_arr_alloc(sizeof(struct ARRAYSTR_struct), ARRAYSTR_tag, sizeof(STR) , (c_INT_plus_INT_INT_chk(local1,ARRAYSTR_size_INT(a)))));
  3597.  local0->asize = (c_INT_plus_INT_INT_chk(local1,ARRAYSTR_size_INT(a)));
  3598.  r = local0;
  3599.  ARRAYSTR_copy_AR(r, self);
  3600.  local2 = ARRAYSTR_size_INT(self);
  3601.  ARRAYSTR_copy_IN_499(r, local2, a);
  3602.  return r;
  3603. }
  3604.  
  3605.  
  3606. void OPTIONS_insert_h(OPTIONS self, FLISTSTR cl) {
  3607.  ARRAYSTR tail = ((ARRAYSTR) NULL);
  3608.  ARRAYSTR local0;
  3609.  INT local1;
  3610.  INT local2;
  3611.  ARRAYSTR local3;
  3612.  if (OPTIONS_more_arg(self)) {
  3613.   local0 = self->args_7;
  3614.   local1 = self->next_8;
  3615.   local2 = ARRAYSTR_size_INT(self->args_7);
  3616.   tail = ARRAYSTR_subarr_(local0, local1, (c_INT_minus_INT_INT_chk(local2,self->next_8)));
  3617.  }
  3618.  else {
  3619.   tail = ARRAYSTR_create_(((ARRAYSTR) NULL), 0);
  3620.  }
  3621.  local3 = FLISTSTR_array_A(cl);
  3622.  self->args_7 = ARRAYSTR_append_(local3, tail);
  3623.  self->next_8 = 0;
  3624. }
  3625.  
  3626.  
  3627. FSETSTR FSETSTR_create_F(FSETSTR self) {
  3628.  FSETSTR noname502;
  3629.  return ((FSETSTR) NULL);
  3630.  if (!FSETSTR_invarian(self)) {
  3631.   fprintf(stderr,"Failed invariant FSET{STR}::invariant:BOOL ../Library/fset.sa:73:9\n");
  3632.   exit(16);
  3633.  }
  3634. }
  3635.  
  3636.  
  3637. BOOL CHAR_is_upper_BOOL(CHAR self) {
  3638.  BOOL noname503 = ((BOOL) 0);
  3639.  CHAR noname504 = ((CHAR) 0);
  3640.  noname504 = self;
  3641.  switch (noname504) {
  3642.   case 'A':
  3643.   case 'B':
  3644.   case 'C':
  3645.   case 'D':
  3646.   case 'E':
  3647.   case 'F':
  3648.   case 'G':
  3649.   case 'H':
  3650.   case 'I':
  3651.   case 'J':
  3652.   case 'K':
  3653.   case 'L':
  3654.   case 'M':
  3655.   case 'N':
  3656.   case 'O':
  3657.   case 'P':
  3658.   case 'Q':
  3659.   case 'R':
  3660.   case 'S':
  3661.   case 'T':
  3662.   case 'U':
  3663.   case 'V':
  3664.   case 'W':
  3665.   case 'X':
  3666.   case 'Y':
  3667.   case 'Z':
  3668.    return TRUE;
  3669.    break;
  3670.   default: ;
  3671.  }
  3672.  return FALSE;
  3673. }
  3674.  
  3675.  
  3676. BOOL OPTIONS_is_class(OPTIONS self, STR nm_505) {
  3677.  BOOL noname506 = ((BOOL) 0);
  3678.  STR noname507;
  3679.  INT noname508 = ((INT) 0);
  3680.  CHAR c_509 = ((CHAR) 0);
  3681.  CHAR noname510 = ((CHAR) 0);
  3682.  BOOL local0;
  3683.  CHAR local1;
  3684.  CHAR local2;
  3685.  local1 = STR_aget_INT_CHAR(nm_505, 0);
  3686.  if ((local1!='$')) {
  3687.   local0 = (!(CHAR_is_upper_BOOL(STR_aget_INT_CHAR(nm_505, 0))));
  3688.  } else {
  3689.   local0 = FALSE;
  3690.  }
  3691.  if (local0) {
  3692.   return FALSE;
  3693.  }
  3694.  {
  3695.   struct STR_elt_INT_CHAR_frame_struct temp511_0;
  3696.   STR_elt_INT_CHAR_frame 
  3697.   noname512 = &temp511_0;
  3698.   noname512->state = 0;
  3699.   while (1) {
  3700.    if (noname512->state == 0) {
  3701.     noname507 = nm_505;
  3702.     noname508 = 1;
  3703.     noname512->arg0 = noname507;
  3704.     noname512->arg1 = noname508;
  3705.    }
  3706.    local2 = STR_elt_INT_CHAR(noname512);
  3707.    if (noname512->state == -1) goto after_loop;
  3708.    c_509 = local2;
  3709.    noname510 = c_509;
  3710.    switch (noname510) {
  3711.     case 'A':
  3712.     case 'B':
  3713.     case 'C':
  3714.     case 'D':
  3715.     case 'E':
  3716.     case 'F':
  3717.     case 'G':
  3718.     case 'H':
  3719.     case 'I':
  3720.     case 'J':
  3721.     case 'K':
  3722.     case 'L':
  3723.     case 'M':
  3724.     case 'N':
  3725.     case 'O':
  3726.     case 'P':
  3727.     case 'Q':
  3728.     case 'R':
  3729.     case 'S':
  3730.     case 'T':
  3731.     case 'U':
  3732.     case 'V':
  3733.     case 'W':
  3734.     case 'X':
  3735.     case 'Y':
  3736.     case 'Z':
  3737.     case '0':
  3738.     case '1':
  3739.     case '2':
  3740.     case '3':
  3741.     case '4':
  3742.     case '5':
  3743.     case '6':
  3744.     case '7':
  3745.     case '8':
  3746.     case '9':
  3747.     case '_':
  3748.      break;
  3749.     default: ;
  3750.      return FALSE;
  3751.    }
  3752.   }
  3753.  }
  3754.  after_loop: ;
  3755.  return TRUE;
  3756. }
  3757.  
  3758.  
  3759. void OPTIONS_get_classes(OPTIONS self) {
  3760.  STR arg_513;
  3761.  self->classes_14 = FSETSTR_create_F(((FSETSTR) NULL));
  3762.  while (1) {
  3763.   if (OPTIONS_more_arg(self)) {
  3764.   }
  3765.   else {
  3766.    goto after_loop;
  3767.   }
  3768.   arg_513 = OPTIONS_next_arg_STR(self);
  3769.   self->all_10 = STR_is_eq_STR_BOOL(arg_513, ((STR) &all_515));
  3770.   if (self->all_10) {
  3771.    return;
  3772.   }
  3773.   else {
  3774.    if (OPTIONS_is_class(self, arg_513)) {
  3775.     self->classes_14 = FSETSTR_insert_S(self->classes_14, arg_513);
  3776.    }
  3777.    else {
  3778.     OPTIONS_rewind(self);
  3779.     return;
  3780.    }
  3781.   }
  3782.  }
  3783.  after_loop: ;
  3784. }
  3785.  
  3786.  
  3787. FSETSTR FSETSTR_copy_FSETSTR(FSETSTR self) {
  3788.  FSETSTR noname516;
  3789.  FSETSTR r = ((FSETSTR) NULL);
  3790.  FSETSTR noname517;
  3791.  STR local0;
  3792.  {
  3793.   struct FSETSTR_elt_STR_frame_struct temp518_0;
  3794.   FSETSTR_elt_STR_frame 
  3795.   noname519 = &temp518_0;
  3796.   noname519->state = 0;
  3797.   while (1) {
  3798.    if (noname519->state == 0) {
  3799.     noname517 = self;
  3800.     noname519->arg0 = noname517;
  3801.    }
  3802.    local0 = FSETSTR_elt_STR(noname519);
  3803.    if (noname519->state == -1) goto after_loop;
  3804.    r = FSETSTR_insert_S(r, local0);
  3805.   }
  3806.  }
  3807.  after_loop: ;
  3808.  return r;
  3809.  if (!FSETSTR_invarian(self)) {
  3810.   fprintf(stderr,"Failed invariant FSET{STR}::invariant:BOOL ../Library/fset.sa:94:7\n");
  3811.   exit(16);
  3812.  }
  3813. }
  3814.  
  3815.  
  3816. FSETSTR FSETSTR_to_union(FSETSTR self, FSETSTR s_520) {
  3817.  FSETSTR noname521;
  3818.  FSETSTR r;
  3819.  FSETSTR noname522;
  3820.  STR local0;
  3821.  r = self;
  3822.  {
  3823.   struct FSETSTR_elt_STR_frame_struct temp523_0;
  3824.   FSETSTR_elt_STR_frame 
  3825.   noname524 = &temp523_0;
  3826.   noname524->state = 0;
  3827.   while (1) {
  3828.    if (noname524->state == 0) {
  3829.     noname522 = s_520;
  3830.     noname524->arg0 = noname522;
  3831.    }
  3832.    local0 = FSETSTR_elt_STR(noname524);
  3833.    if (noname524->state == -1) goto after_loop;
  3834.    r = FSETSTR_insert_S(r, local0);
  3835.   }
  3836.  }
  3837.  after_loop: ;
  3838.  return r;
  3839.  if (!FSETSTR_invarian(self)) {
  3840.   fprintf(stderr,"Failed invariant FSET{STR}::invariant:BOOL ../Library/fset.sa:252:11\n");
  3841.   exit(16);
  3842.  }
  3843. }
  3844.  
  3845.  
  3846. FSETSTR FSETSTR_union_FS(FSETSTR self, FSETSTR s_525) {
  3847.  FSETSTR noname526;
  3848.  FSETSTR local0;
  3849.  local0 = FSETSTR_copy_FSETSTR(self);
  3850.  return FSETSTR_to_union(local0, s_525);
  3851.  if (!FSETSTR_invarian(self)) {
  3852.   fprintf(stderr,"Failed invariant FSET{STR}::invariant:BOOL ../Library/fset.sa:257:8\n");
  3853.   exit(16);
  3854.  }
  3855. }
  3856.  
  3857.  
  3858. FSETSTR FSETSTR_differen(FSETSTR self, FSETSTR s_527) {
  3859.  FSETSTR noname528;
  3860.  FSETSTR r = ((FSETSTR) NULL);
  3861.  FSETSTR noname529;
  3862.  STR e_530;
  3863.  STR local0;
  3864.  {
  3865.   struct FSETSTR_elt_STR_frame_struct temp531_0;
  3866.   FSETSTR_elt_STR_frame 
  3867.   noname532 = &temp531_0;
  3868.   noname532->state = 0;
  3869.   while (1) {
  3870.    if (noname532->state == 0) {
  3871.     noname529 = self;
  3872.     noname532->arg0 = noname529;
  3873.    }
  3874.    local0 = FSETSTR_elt_STR(noname532);
  3875.    if (noname532->state == -1) goto after_loop;
  3876.    e_530 = local0;
  3877.    if ((!(FSETSTR_test_STR(s_527, e_530)))) {
  3878.     r = FSETSTR_insert_S(r, e_530);
  3879.    }
  3880.   }
  3881.  }
  3882.  after_loop: ;
  3883.  return r;
  3884.  if (!FSETSTR_invarian(self)) {
  3885.   fprintf(stderr,"Failed invariant FSET{STR}::invariant:BOOL ../Library/fset.sa:279:13\n");
  3886.   exit(16);
  3887.  }
  3888. }
  3889.  
  3890.  
  3891. BOOL OPTIONS_is_filen(OPTIONS self, STR fn) {
  3892.  BOOL noname533 = ((BOOL) 0);
  3893.  STR noname534;
  3894.  CHAR local0;
  3895.  local0 = STR_aget_INT_CHAR(fn, 0);
  3896.  if ((local0=='-')) {
  3897.   return FALSE;
  3898.  }
  3899.  noname534 = OPTIONS_suffix_S(self, fn);
  3900.  if (STR_is_eq_STR_BOOL(noname534, ((STR) &c_535))) {
  3901.   return TRUE;
  3902.  }
  3903.  else {
  3904.   if (STR_is_eq_STR_BOOL(noname534, ((STR) &sa_536))) {
  3905.    return TRUE;
  3906.   }
  3907.   else {
  3908.    if (STR_is_eq_STR_BOOL(noname534, ((STR) &obj_537))) {
  3909.     return TRUE;
  3910.    }
  3911.    else {
  3912.     if (STR_is_eq_STR_BOOL(noname534, ((STR) &lib_538))) {
  3913.      return TRUE;
  3914.     }
  3915.    }
  3916.   }
  3917.  }
  3918.  return FALSE;
  3919. }
  3920.  
  3921.  
  3922. FSETSTR OPTIONS_files_FS(OPTIONS self) {
  3923.  FSETSTR noname539;
  3924.  FSETSTR r;
  3925.  STR arg_540;
  3926.  r = FSETSTR_create_F(((FSETSTR) NULL));
  3927.  while (1) {
  3928.   if (OPTIONS_more_arg(self)) {
  3929.   }
  3930.   else {
  3931.    goto after_loop;
  3932.   }
  3933.   arg_540 = OPTIONS_next_arg_STR(self);
  3934.   if (OPTIONS_is_filen(self, arg_540)) {
  3935.    r = FSETSTR_insert_S(r, arg_540);
  3936.   }
  3937.   else {
  3938.    OPTIONS_rewind(self);
  3939.    return r;
  3940.   }
  3941.  }
  3942.  after_loop: ;
  3943.  return r;
  3944. }
  3945.  
  3946.  
  3947. STR FMAPSTRFSETSTR_k(FMAPSTRFSETSTR self) {
  3948.  STR noname542;
  3949.  STR k = ((STR) NULL);
  3950.  return ((STR) NULL);
  3951.  if (!FMAPSTRFSETSTR_i(self)) {
  3952.   fprintf(stderr,"Failed invariant FMAP{STR,FSET{STR}}::invariant:BOOL ../Library/fmap.sa:54:10\n");
  3953.   exit(16);
  3954.  }
  3955. }
  3956.  
  3957.  
  3958. TUPSTRFSETSTR TUPSTRFSETSTR_t1(TUPSTRFSETSTR self, STR t1_543) {
  3959.  TUPSTRFSETSTR local0;
  3960.  local0 = self;
  3961.  local0.t1 = t1_543;
  3962.  return local0;
  3963. }
  3964.  
  3965.  
  3966. TUPSTRFSETSTR TUPSTRFSETSTR_t2(TUPSTRFSETSTR self, FSETSTR t2_544) {
  3967.  TUPSTRFSETSTR local0;
  3968.  local0 = self;
  3969.  local0.t2 = t2_544;
  3970.  return local0;
  3971. }
  3972.  
  3973.  
  3974. TUPSTRFSETSTR TUPSTRFSETSTR_cr(TUPSTRFSETSTR self, STR at1, FSETSTR at2) {
  3975.  TUPSTRFSETSTR noname545 = TUPSTRFSETSTR_zero;
  3976.  TUPSTRFSETSTR local0;
  3977.  local0 = TUPSTRFSETSTR_t1(self, at1);
  3978.  return TUPSTRFSETSTR_t2(local0, at2);
  3979. }
  3980.  
  3981.  
  3982. FMAPSTRFSETSTR FMAPSTRFSETSTR_a(FMAPSTRFSETSTR self, INT n) {
  3983.  FMAPSTRFSETSTR noname546;
  3984.  FMAPSTRFSETSTR r;
  3985.  FMAPSTRFSETSTR noname547;
  3986.  FMAPSTRFSETSTR local0;
  3987.  TUPSTRFSETSTR local1;
  3988.  STR local2;
  3989.  local0 = ((FMAPSTRFSETSTR) sbi_arr_alloc(sizeof(struct FMAPSTRFSETSTR_struct), FMAPSTRFSETSTR_tag, sizeof(TUPSTRFSETSTR) , n));
  3990.  local0->asize = n;
  3991.  r = local0;
  3992.  if ((!((FMAPSTRFSETSTR_k(self)==((STR) NULL))))) {
  3993.   {
  3994.    struct FMAPSTRFSETSTR_a_549_frame_struct temp548_0;
  3995.    FMAPSTRFSETSTR_a_549_frame 
  3996.    noname550 = &temp548_0;
  3997.    noname550->state = 0;
  3998.    while (1) {
  3999.     if (noname550->state == 0) {
  4000.      noname547 = r;
  4001.      noname550->arg0 = noname547;
  4002.     }
  4003.     local1 = TUPSTRFSETSTR_zero;
  4004.     local2 = FMAPSTRFSETSTR_k(self);
  4005.     noname550->arg1 = TUPSTRFSETSTR_cr(local1, local2, ((FSETSTR) NULL));
  4006.     FMAPSTRFSETSTR_a_549(noname550);
  4007.     if (noname550->state == -1) goto after_loop;
  4008.     0 /* No return value from iter call */;
  4009.    }
  4010.   }
  4011.   after_loop: ;
  4012.  }
  4013.  return r;
  4014. }
  4015.  
  4016.  
  4017. INT FMAPSTRFSETSTR_a_551(FMAPSTRFSETSTR self) {
  4018.  INT noname552 = ((INT) 0);
  4019.   return self->asize;
  4020.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  4021.  exit(16);
  4022. }
  4023.  
  4024.  
  4025. FMAPSTRFSETSTR FMAPSTRFSETSTR_i_553(FMAPSTRFSETSTR self, TUPSTRFSETSTR p) {
  4026.  FMAPSTRFSETSTR noname554;
  4027.  return FMAPSTRFSETSTR_i_555(self, p.t1, p.t2);
  4028.  if (!FMAPSTRFSETSTR_i(self)) {
  4029.   fprintf(stderr,"Failed invariant FMAP{STR,FSET{STR}}::invariant:BOOL ../Library/fmap.sa:202:14\n");
  4030.   exit(16);
  4031.  }
  4032. }
  4033.  
  4034.  
  4035. FMAPSTRFSETSTR FMAPSTRFSETSTR_d(FMAPSTRFSETSTR self) {
  4036.  FMAPSTRFSETSTR noname556;
  4037.  INT ns = ((INT) 0);
  4038.  FMAPSTRFSETSTR r;
  4039.  FMAPSTRFSETSTR noname557;
  4040.  INT local0;
  4041.  INT local1;
  4042.  INT local2;
  4043.  TUPSTRFSETSTR local3;
  4044.  if (!((!((self==((FMAPSTRFSETSTR) NULL)))))) {
  4045.   fprintf(stderr,"Violation of precondition ../Library/fmap.sa:172:22\n");
  4046.   exit(16);
  4047.  }
  4048.  local0 = (self->asize);
  4049.  local1 = (c_INT_minus_INT_INT_chk(local0,1));
  4050.  local2 = (c_INT_times_INT_INT_chk(local1,2));
  4051.  ns = (c_INT_plus_INT_INT_chk(local2,1));
  4052.  r = FMAPSTRFSETSTR_a(self, ns);
  4053.  {
  4054.   struct FMAPSTRFSETSTR_p_frame_struct temp558_0;
  4055.   FMAPSTRFSETSTR_p_frame 
  4056.   noname559 = &temp558_0;
  4057.   noname559->state = 0;
  4058.   while (1) {
  4059.    if (noname559->state == 0) {
  4060.     noname557 = self;
  4061.     noname559->arg0 = noname557;
  4062.    }
  4063.    local3 = FMAPSTRFSETSTR_p(noname559);
  4064.    if (noname559->state == -1) goto after_loop;
  4065.    r = FMAPSTRFSETSTR_i_553(r, local3);
  4066.   }
  4067.  }
  4068.  after_loop: ;
  4069.  return r;
  4070. }
  4071.  
  4072.  
  4073. INT FMAPSTRFSETSTR_k_560(FMAPSTRFSETSTR self, STR k) {
  4074.  INT noname561 = ((INT) 0);
  4075.  return STR_hash_INT(k);
  4076.  return (c_SYS_id_OB_INT(((SYS) NULL),((OB) k)));
  4077.  if (!FMAPSTRFSETSTR_i(self)) {
  4078.   fprintf(stderr,"Failed invariant FMAP{STR,FSET{STR}}::invariant:BOOL ../Library/fmap.sa:64:11\n");
  4079.   exit(16);
  4080.  }
  4081. }
  4082.  
  4083.  
  4084. TUPSTRFSETSTR FMAPSTRFSETSTR_a_562(FMAPSTRFSETSTR self, INT ind_563) {
  4085.  TUPSTRFSETSTR noname564 = TUPSTRFSETSTR_zero;
  4086.  BOOL local0;
  4087.  INT local1;
  4088.  INT local2;
  4089.  if ((!((self==((FMAPSTRFSETSTR) NULL))))) {
  4090.   local1 = 0;
  4091.   local2 = (self->asize);
  4092.   local0 = INT_is_bet_INT_I(ind_563, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  4093.  } else {
  4094.   local0 = FALSE;
  4095.  }
  4096.  if (!(local0)) {
  4097.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  4098.   exit(16);
  4099.  }
  4100.  if (ind_563<0||ind_563>=self->asize) {
  4101.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  4102.   exit(16);
  4103.  }
  4104.  return self->arr_part[ind_563];
  4105. }
  4106.  
  4107.  
  4108. BOOL FMAPSTRFSETSTR_k_565(FMAPSTRFSETSTR self, STR k1, STR k2) {
  4109.  BOOL noname566 = ((BOOL) 0);
  4110.  return STR_is_eq_STR_BOOL(k1, k2);
  4111.  return c_SYS_ob_eq_OB_OB_BOOL(((OB) k1),((OB) k2));
  4112.  if (!FMAPSTRFSETSTR_i(self)) {
  4113.   fprintf(stderr,"Failed invariant FMAP{STR,FSET{STR}}::invariant:BOOL ../Library/fmap.sa:44:9\n");
  4114.   exit(16);
  4115.  }
  4116. }
  4117.  
  4118.  
  4119. void FMAPSTRFSETSTR_a_567(FMAPSTRFSETSTR self, INT ind_568, TUPSTRFSETSTR val_569) {
  4120.  BOOL local0;
  4121.  INT local1;
  4122.  INT local2;
  4123.  if ((!((self==((FMAPSTRFSETSTR) NULL))))) {
  4124.   local1 = 0;
  4125.   local2 = (self->asize);
  4126.   local0 = INT_is_bet_INT_I(ind_568, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  4127.  } else {
  4128.   local0 = FALSE;
  4129.  }
  4130.  if (!(local0)) {
  4131.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  4132.   exit(16);
  4133.  }
  4134.  if (ind_568<0||ind_568>=self->asize) {
  4135.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  4136.   exit(16);
  4137.  }
  4138.  self->arr_part[ind_568] = val_569;
  4139. }
  4140.  
  4141.  
  4142. FMAPSTRFSETSTR FMAPSTRFSETSTR_i_555(FMAPSTRFSETSTR self, STR k, FSETSTR t) {
  4143.  FMAPSTRFSETSTR noname570;
  4144.  FMAPSTRFSETSTR r;
  4145.  INT h = ((INT) 0);
  4146.  INT asm_571 = ((INT) 0);
  4147.  STR tk;
  4148.  STR tk_572;
  4149.  INT local0;
  4150.  INT local1;
  4151.  INT local2;
  4152.  INT local3;
  4153.  INT local4;
  4154.  r = self;
  4155.  if ((r==((FMAPSTRFSETSTR) NULL))) {
  4156.   r = FMAPSTRFSETSTR_a(self, 5);
  4157.  }
  4158.  else {
  4159.   local0 = (c_INT_plus_INT_INT_chk(self->hsize,1));
  4160.   local1 = (c_INT_times_INT_INT_chk(local0,2));
  4161.   if ((local1>(self->asize))) {
  4162.    r = FMAPSTRFSETSTR_d(self);
  4163.   }
  4164.  }
  4165.  local2 = FMAPSTRFSETSTR_k_560(r, k);
  4166.  local3 = (r->asize);
  4167.  h = (local2&(c_INT_minus_INT_INT_chk(local3,2)));
  4168.  local4 = (r->asize);
  4169.  asm_571 = (c_INT_minus_INT_INT_chk(local4,1));
  4170.  while (1) {
  4171.   tk = (TUPSTRFSETSTR_blob=FMAPSTRFSETSTR_a_562(r, h)).t1;
  4172.   if (FMAPSTRFSETSTR_k_565(self, tk, FMAPSTRFSETSTR_k(self))) {
  4173.    goto after_loop;
  4174.   }
  4175.   if (FMAPSTRFSETSTR_k_565(self, tk, k)) {
  4176.    FMAPSTRFSETSTR_a_567(r, h, TUPSTRFSETSTR_cr(TUPSTRFSETSTR_zero, k, t));
  4177.    return r;
  4178.   }
  4179.   h = (c_INT_plus_INT_INT_chk(h,1));
  4180.  }
  4181.  after_loop: ;
  4182.  if ((h==asm_571)) {
  4183.   h = 0;
  4184.   while (1) {
  4185.    tk_572 = (TUPSTRFSETSTR_blob=FMAPSTRFSETSTR_a_562(r, h)).t1;
  4186.    if (FMAPSTRFSETSTR_k_565(self, tk_572, FMAPSTRFSETSTR_k(self))) {
  4187.     goto after_loop_574;
  4188.    }
  4189.    if (FMAPSTRFSETSTR_k_565(self, tk_572, k)) {
  4190.     FMAPSTRFSETSTR_a_567(r, h, TUPSTRFSETSTR_cr(TUPSTRFSETSTR_zero, k, t));
  4191.     return r;
  4192.    }
  4193.    h = (c_INT_plus_INT_INT_chk(h,1));
  4194.   }
  4195.   after_loop_574: ;
  4196.   if (!((h!=asm_571))) {
  4197.    fprintf(stderr,"Violation of assertion ../Library/fmap.sa:199:15\n");
  4198.    exit(16);
  4199.   }
  4200.  }
  4201.  FMAPSTRFSETSTR_a_567(r, h, TUPSTRFSETSTR_cr(TUPSTRFSETSTR_zero, k, t));
  4202.  r->hsize = (c_INT_plus_INT_INT_chk(r->hsize,1));
  4203.  return r;
  4204.  if (!FMAPSTRFSETSTR_i(self)) {
  4205.   fprintf(stderr,"Failed invariant FMAP{STR,FSET{STR}}::invariant:BOOL ../Library/fmap.sa:180:9\n");
  4206.   exit(16);
  4207.  }
  4208. }
  4209.  
  4210.  
  4211. STR FMAPSTRSTR_key_n(FMAPSTRSTR self) {
  4212.  STR noname576;
  4213.  STR k = ((STR) NULL);
  4214.  return ((STR) NULL);
  4215.  if (!FMAPSTRSTR_invar(self)) {
  4216.   fprintf(stderr,"Failed invariant FMAP{STR,STR}::invariant:BOOL ../Library/fmap.sa:54:10\n");
  4217.   exit(16);
  4218.  }
  4219. }
  4220.  
  4221.  
  4222. TUPSTRSTR TUPSTRSTR_t1_STR(TUPSTRSTR self, STR t1_577) {
  4223.  TUPSTRSTR local0;
  4224.  local0 = self;
  4225.  local0.t1 = t1_577;
  4226.  return local0;
  4227. }
  4228.  
  4229.  
  4230. TUPSTRSTR TUPSTRSTR_t2_STR(TUPSTRSTR self, STR t2_578) {
  4231.  TUPSTRSTR local0;
  4232.  local0 = self;
  4233.  local0.t2 = t2_578;
  4234.  return local0;
  4235. }
  4236.  
  4237.  
  4238. TUPSTRSTR TUPSTRSTR_create(TUPSTRSTR self, STR at1, STR at2) {
  4239.  TUPSTRSTR noname579 = TUPSTRSTR_zero;
  4240.  TUPSTRSTR local0;
  4241.  local0 = TUPSTRSTR_t1_STR(self, at1);
  4242.  return TUPSTRSTR_t2_STR(local0, at2);
  4243. }
  4244.  
  4245.  
  4246. FMAPSTRSTR FMAPSTRSTR_alloc(FMAPSTRSTR self, INT n) {
  4247.  FMAPSTRSTR noname580;
  4248.  FMAPSTRSTR r;
  4249.  FMAPSTRSTR noname581;
  4250.  FMAPSTRSTR local0;
  4251.  TUPSTRSTR local1;
  4252.  STR local2;
  4253.  local0 = ((FMAPSTRSTR) sbi_arr_alloc(sizeof(struct FMAPSTRSTR_struct), FMAPSTRSTR_tag, sizeof(TUPSTRSTR) , n));
  4254.  local0->asize = n;
  4255.  r = local0;
  4256.  if ((!((FMAPSTRSTR_key_n(self)==((STR) NULL))))) {
  4257.   {
  4258.    struct FMAPSTRSTR_aset__frame_struct temp582_0;
  4259.    FMAPSTRSTR_aset__frame 
  4260.    noname583 = &temp582_0;
  4261.    noname583->state = 0;
  4262.    while (1) {
  4263.     if (noname583->state == 0) {
  4264.      noname581 = r;
  4265.      noname583->arg0 = noname581;
  4266.     }
  4267.     local1 = TUPSTRSTR_zero;
  4268.     local2 = FMAPSTRSTR_key_n(self);
  4269.     noname583->arg1 = TUPSTRSTR_create(local1, local2, ((STR) NULL));
  4270.     FMAPSTRSTR_aset_(noname583);
  4271.     if (noname583->state == -1) goto after_loop;
  4272.     0 /* No return value from iter call */;
  4273.    }
  4274.   }
  4275.   after_loop: ;
  4276.  }
  4277.  return r;
  4278. }
  4279.  
  4280.  
  4281. INT FMAPSTRSTR_asize_INT(FMAPSTRSTR self) {
  4282.  INT noname584 = ((INT) 0);
  4283.   return self->asize;
  4284.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  4285.  exit(16);
  4286. }
  4287.  
  4288.  
  4289. FMAPSTRSTR FMAPSTRSTR_inser(FMAPSTRSTR self, TUPSTRSTR p) {
  4290.  FMAPSTRSTR noname585;
  4291.  return FMAPSTRSTR_inser_586(self, p.t1, p.t2);
  4292.  if (!FMAPSTRSTR_invar(self)) {
  4293.   fprintf(stderr,"Failed invariant FMAP{STR,STR}::invariant:BOOL ../Library/fmap.sa:202:14\n");
  4294.   exit(16);
  4295.  }
  4296. }
  4297.  
  4298.  
  4299. FMAPSTRSTR FMAPSTRSTR_doubl(FMAPSTRSTR self) {
  4300.  FMAPSTRSTR noname587;
  4301.  INT ns = ((INT) 0);
  4302.  FMAPSTRSTR r;
  4303.  FMAPSTRSTR noname588;
  4304.  INT local0;
  4305.  INT local1;
  4306.  INT local2;
  4307.  TUPSTRSTR local3;
  4308.  if (!((!((self==((FMAPSTRSTR) NULL)))))) {
  4309.   fprintf(stderr,"Violation of precondition ../Library/fmap.sa:172:22\n");
  4310.   exit(16);
  4311.  }
  4312.  local0 = (self->asize);
  4313.  local1 = (c_INT_minus_INT_INT_chk(local0,1));
  4314.  local2 = (c_INT_times_INT_INT_chk(local1,2));
  4315.  ns = (c_INT_plus_INT_INT_chk(local2,1));
  4316.  r = FMAPSTRSTR_alloc(self, ns);
  4317.  {
  4318.   struct FMAPSTRSTR_pairs_frame_struct temp589_0;
  4319.   FMAPSTRSTR_pairs_frame 
  4320.   noname590 = &temp589_0;
  4321.   noname590->state = 0;
  4322.   while (1) {
  4323.    if (noname590->state == 0) {
  4324.     noname588 = self;
  4325.     noname590->arg0 = noname588;
  4326.    }
  4327.    local3 = FMAPSTRSTR_pairs(noname590);
  4328.    if (noname590->state == -1) goto after_loop;
  4329.    r = FMAPSTRSTR_inser(r, local3);
  4330.   }
  4331.  }
  4332.  after_loop: ;
  4333.  return r;
  4334. }
  4335.  
  4336.  
  4337. INT FMAPSTRSTR_key_h(FMAPSTRSTR self, STR k) {
  4338.  INT noname591 = ((INT) 0);
  4339.  return STR_hash_INT(k);
  4340.  return (c_SYS_id_OB_INT(((SYS) NULL),((OB) k)));
  4341.  if (!FMAPSTRSTR_invar(self)) {
  4342.   fprintf(stderr,"Failed invariant FMAP{STR,STR}::invariant:BOOL ../Library/fmap.sa:64:11\n");
  4343.   exit(16);
  4344.  }
  4345. }
  4346.  
  4347.  
  4348. TUPSTRSTR FMAPSTRSTR_aget_(FMAPSTRSTR self, INT ind_592) {
  4349.  TUPSTRSTR noname593 = TUPSTRSTR_zero;
  4350.  BOOL local0;
  4351.  INT local1;
  4352.  INT local2;
  4353.  if ((!((self==((FMAPSTRSTR) NULL))))) {
  4354.   local1 = 0;
  4355.   local2 = (self->asize);
  4356.   local0 = INT_is_bet_INT_I(ind_592, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  4357.  } else {
  4358.   local0 = FALSE;
  4359.  }
  4360.  if (!(local0)) {
  4361.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  4362.   exit(16);
  4363.  }
  4364.  if (ind_592<0||ind_592>=self->asize) {
  4365.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  4366.   exit(16);
  4367.  }
  4368.  return self->arr_part[ind_592];
  4369. }
  4370.  
  4371.  
  4372. BOOL FMAPSTRSTR_key_e(FMAPSTRSTR self, STR k1, STR k2) {
  4373.  BOOL noname594 = ((BOOL) 0);
  4374.  return STR_is_eq_STR_BOOL(k1, k2);
  4375.  return c_SYS_ob_eq_OB_OB_BOOL(((OB) k1),((OB) k2));
  4376.  if (!FMAPSTRSTR_invar(self)) {
  4377.   fprintf(stderr,"Failed invariant FMAP{STR,STR}::invariant:BOOL ../Library/fmap.sa:44:9\n");
  4378.   exit(16);
  4379.  }
  4380. }
  4381.  
  4382.  
  4383. void FMAPSTRSTR_aset__595(FMAPSTRSTR self, INT ind_596, TUPSTRSTR val_597) {
  4384.  BOOL local0;
  4385.  INT local1;
  4386.  INT local2;
  4387.  if ((!((self==((FMAPSTRSTR) NULL))))) {
  4388.   local1 = 0;
  4389.   local2 = (self->asize);
  4390.   local0 = INT_is_bet_INT_I(ind_596, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  4391.  } else {
  4392.   local0 = FALSE;
  4393.  }
  4394.  if (!(local0)) {
  4395.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  4396.   exit(16);
  4397.  }
  4398.  if (ind_596<0||ind_596>=self->asize) {
  4399.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  4400.   exit(16);
  4401.  }
  4402.  self->arr_part[ind_596] = val_597;
  4403. }
  4404.  
  4405.  
  4406. FMAPSTRSTR FMAPSTRSTR_inser_586(FMAPSTRSTR self, STR k, STR t) {
  4407.  FMAPSTRSTR noname598;
  4408.  FMAPSTRSTR r;
  4409.  INT h = ((INT) 0);
  4410.  INT asm_599 = ((INT) 0);
  4411.  STR tk;
  4412.  STR tk_600;
  4413.  INT local0;
  4414.  INT local1;
  4415.  INT local2;
  4416.  INT local3;
  4417.  INT local4;
  4418.  r = self;
  4419.  if ((r==((FMAPSTRSTR) NULL))) {
  4420.   r = FMAPSTRSTR_alloc(self, 5);
  4421.  }
  4422.  else {
  4423.   local0 = (c_INT_plus_INT_INT_chk(self->hsize,1));
  4424.   local1 = (c_INT_times_INT_INT_chk(local0,2));
  4425.   if ((local1>(self->asize))) {
  4426.    r = FMAPSTRSTR_doubl(self);
  4427.   }
  4428.  }
  4429.  local2 = FMAPSTRSTR_key_h(r, k);
  4430.  local3 = (r->asize);
  4431.  h = (local2&(c_INT_minus_INT_INT_chk(local3,2)));
  4432.  local4 = (r->asize);
  4433.  asm_599 = (c_INT_minus_INT_INT_chk(local4,1));
  4434.  while (1) {
  4435.   tk = (TUPSTRSTR_blob=FMAPSTRSTR_aget_(r, h)).t1;
  4436.   if (FMAPSTRSTR_key_e(self, tk, FMAPSTRSTR_key_n(self))) {
  4437.    goto after_loop;
  4438.   }
  4439.   if (FMAPSTRSTR_key_e(self, tk, k)) {
  4440.    FMAPSTRSTR_aset__595(r, h, TUPSTRSTR_create(TUPSTRSTR_zero, k, t));
  4441.    return r;
  4442.   }
  4443.   h = (c_INT_plus_INT_INT_chk(h,1));
  4444.  }
  4445.  after_loop: ;
  4446.  if ((h==asm_599)) {
  4447.   h = 0;
  4448.   while (1) {
  4449.    tk_600 = (TUPSTRSTR_blob=FMAPSTRSTR_aget_(r, h)).t1;
  4450.    if (FMAPSTRSTR_key_e(self, tk_600, FMAPSTRSTR_key_n(self))) {
  4451.     goto after_loop_602;
  4452.    }
  4453.    if (FMAPSTRSTR_key_e(self, tk_600, k)) {
  4454.     FMAPSTRSTR_aset__595(r, h, TUPSTRSTR_create(TUPSTRSTR_zero, k, t));
  4455.     return r;
  4456.    }
  4457.    h = (c_INT_plus_INT_INT_chk(h,1));
  4458.   }
  4459.   after_loop_602: ;
  4460.   if (!((h!=asm_599))) {
  4461.    fprintf(stderr,"Violation of assertion ../Library/fmap.sa:199:15\n");
  4462.    exit(16);
  4463.   }
  4464.  }
  4465.  FMAPSTRSTR_aset__595(r, h, TUPSTRSTR_create(TUPSTRSTR_zero, k, t));
  4466.  r->hsize = (c_INT_plus_INT_INT_chk(r->hsize,1));
  4467.  return r;
  4468.  if (!FMAPSTRSTR_invar(self)) {
  4469.   fprintf(stderr,"Failed invariant FMAP{STR,STR}::invariant:BOOL ../Library/fmap.sa:180:9\n");
  4470.   exit(16);
  4471.  }
  4472. }
  4473.  
  4474.  
  4475. STR STR_replace_CHAR(STR self, CHAR o, CHAR n) {
  4476.  STR noname604;
  4477.  STR r;
  4478.  STR noname605;
  4479.  CHAR c_606 = ((CHAR) 0);
  4480.  STR noname607;
  4481.  STR local0;
  4482.  CHAR local1;
  4483.  STR local2;
  4484.  CHAR *local1p; INT local1n;
  4485.  STR local3;
  4486.  CHAR *noname610tp; INT noname610tn;
  4487.  if ((self==((STR) NULL))) {
  4488.   return ((STR) NULL);
  4489.  }
  4490.  local0 = ((STR) sbi_arr_alloc_atomic(sizeof(struct STR_struct), STR_tag, sizeof(CHAR) , (self->asize)));
  4491.  local0->asize = (self->asize);
  4492.  r = local0;
  4493.  {
  4494.   BOOL noname609 = TRUE;
  4495.   BOOL noname610 = TRUE;
  4496.   while (1) {
  4497.    if (noname609) {
  4498.     noname609 = FALSE;
  4499.     noname605 = self;
  4500.     local2 = noname605;
  4501.     local1p = local2->arr_part; local1n = local2->asize;
  4502.    } else {
  4503.     local1p++; local1n--;
  4504.    }
  4505.    if (local1n<=0) goto after_loop; local1 = *local1p;
  4506.    c_606 = local1;
  4507.    if ((c_606==o)) {
  4508.     c_606 = n;
  4509.    }
  4510.    if (noname610) {
  4511.     noname610 = FALSE;
  4512.     noname607 = r;
  4513.     local3 = noname607;
  4514.     noname610tp = local3->arr_part; noname610tn = local3->asize;
  4515.    } else {
  4516.     noname610tp++; noname610tn--;
  4517.    }
  4518.    if (noname610tn<=0) goto after_loop; *noname610tp = c_606;
  4519.    0 /* no return value from inlined iter */;
  4520.   }
  4521.  }
  4522.  after_loop: ;
  4523.  return r;
  4524. }
  4525.  
  4526.  
  4527. STR STR_head_INT_STR(STR self, INT i) {
  4528.  STR noname611;
  4529.  STR r;
  4530.  INT local0;
  4531.  STR local1;
  4532.  local0 = 0;
  4533.  if (!(INT_is_bet_INT_I(i, local0, STR_size_INT(self)))) {
  4534.   fprintf(stderr,"Violation of precondition ../Library/str.sa:419:7\n");
  4535.   exit(16);
  4536.  }
  4537.  if ((self==((STR) NULL))) {
  4538.   return ((STR) NULL);
  4539.  }
  4540.  local1 = ((STR) sbi_arr_alloc_atomic(sizeof(struct STR_struct), STR_tag, sizeof(CHAR) , i));
  4541.  local1->asize = i;
  4542.  r = local1;
  4543.  (memcpy(r->arr_part,self->arr_part,(r->asize) > (self->asize) ? self->asize:r->asize));
  4544.  return r;
  4545. }
  4546.  
  4547.  
  4548. STR OPTIONS_director(OPTIONS self, STR nm_612) {
  4549.  STR noname613;
  4550.  INT pos_614 = ((INT) 0);
  4551.  INT noname615 = ((INT) 0);
  4552.  INT noname616 = ((INT) 0);
  4553.  STR r;
  4554.  INT local0;
  4555.  INT local1;
  4556.  CHAR local2;
  4557.  {
  4558.   struct INT_downto_INT_INT_frame_struct temp617_0;
  4559.   INT_downto_INT_INT_frame 
  4560.   noname618 = &temp617_0;
  4561.   noname618->state = 0;
  4562.   while (1) {
  4563.    if (noname618->state == 0) {
  4564.     local1 = STR_size_INT(nm_612);
  4565.     noname615 = (c_INT_minus_INT_INT_chk(local1,1));
  4566.     noname616 = 0;
  4567.     noname618->arg0 = noname615;
  4568.     noname618->arg1 = noname616;
  4569.    }
  4570.    local0 = INT_downto_INT_INT(noname618);
  4571.    if (noname618->state == -1) goto after_loop;
  4572.    pos_614 = local0;
  4573.    local2 = STR_aget_INT_CHAR(nm_612, pos_614);
  4574.    if ((local2=='/')) {
  4575.     goto after_loop;
  4576.    }
  4577.   }
  4578.  }
  4579.  after_loop: ;
  4580.  r = STR_head_INT_STR(nm_612, pos_614);
  4581.  if (STR_is_eq_STR_BOOL(r, ((STR) &name_619))) {
  4582.   r = ((STR) &name_620);
  4583.  }
  4584.  return r;
  4585. }
  4586.  
  4587.  
  4588. FILE_20 FILE_open_for_re(FILE_20 self, STR nm_621) {
  4589.  FILE_20 noname622;
  4590.  FILE_20 r;
  4591.  FILE_20 local0;
  4592.  local0 = ((FILE_20) sbi_alloc(sizeof(struct FILE_20_struct), FILE_20_tag));
  4593.  r = local0;
  4594.  r->fp = fopen(((nm_621==NULL)?NULL:nm_621->arr_part), ((((STR) &r_623)==NULL)?NULL:((STR) &r_623)->arr_part));
  4595.  return r;
  4596. }
  4597.  
  4598.  
  4599. BOOL FILE_error_BOOL(FILE_20 self) {
  4600.  BOOL noname624 = ((BOOL) 0);
  4601.  BOOL local0;
  4602.  if ((self->fp==((EXT_OB) NULL))) {
  4603.   local0 = TRUE;
  4604.  } else {
  4605.   local0 = ferror(self->fp);
  4606.  }
  4607.  return local0;
  4608. }
  4609.  
  4610.  
  4611. INT FILE_current_loc_INT(FILE_20 self) {
  4612.  INT noname625 = ((INT) 0);
  4613.  if (!((!((self->fp==((EXT_OB) NULL)))))) {
  4614.   fprintf(stderr,"Violation of precondition ../Library/file.sa:95:14\n");
  4615.   exit(16);
  4616.  }
  4617.  return ftell(self->fp);
  4618. }
  4619.  
  4620.  
  4621. void FILE_seek_from_e(FILE_20 self, INT off_626) {
  4622.  INT dummy_627 = ((INT) 0);
  4623.  if (!((!((self->fp==((EXT_OB) NULL)))))) {
  4624.   fprintf(stderr,"Violation of precondition ../Library/file.sa:91:16\n");
  4625.   exit(16);
  4626.  }
  4627.  dummy_627 = fseek(self->fp, off_626, 2);
  4628. }
  4629.  
  4630.  
  4631. void FILE_seek_from_f(FILE_20 self, INT off_628) {
  4632.  INT dummy_629 = ((INT) 0);
  4633.  if (!((!((self->fp==((EXT_OB) NULL)))))) {
  4634.   fprintf(stderr,"Violation of precondition ../Library/file.sa:83:18\n");
  4635.   exit(16);
  4636.  }
  4637.  dummy_629 = fseek(self->fp, off_628, 0);
  4638. }
  4639.  
  4640.  
  4641. INT FILE_size_INT(FILE_20 self) {
  4642.  INT noname630 = ((INT) 0);
  4643.  INT current_631 = ((INT) 0);
  4644.  INT r = ((INT) 0);
  4645.  if (!((!((self->fp==((EXT_OB) NULL)))))) {
  4646.   fprintf(stderr,"Violation of precondition ../Library/file.sa:75:7\n");
  4647.   exit(16);
  4648.  }
  4649.  current_631 = FILE_current_loc_INT(self);
  4650.  FILE_seek_from_e(self, 0);
  4651.  r = FILE_current_loc_INT(self);
  4652.  FILE_seek_from_f(self, current_631);
  4653.  return r;
  4654. }
  4655.  
  4656.  
  4657. FSTR FSTR_create_INT_FSTR(FSTR self, INT sz) {
  4658.  FSTR noname632;
  4659.  FSTR local0;
  4660.  if (!((sz>=0))) {
  4661.   fprintf(stderr,"Violation of precondition ../Library/fstr.sa:38:9\n");
  4662.   exit(16);
  4663.  }
  4664.  local0 = ((FSTR) sbi_arr_alloc_atomic(sizeof(struct FSTR_struct), FSTR_tag, sizeof(CHAR) , sz));
  4665.  local0->asize = sz;
  4666.  return local0;
  4667.  if (!FSTR_invariant_BOOL(self)) {
  4668.   fprintf(stderr,"Failed invariant FSTR::invariant:BOOL ../Library/fstr.sa:38:9\n");
  4669.   exit(16);
  4670.  }
  4671. }
  4672.  
  4673.  
  4674. FSTR FILE_fstr_FSTR(FILE_20 self) {
  4675.  FSTR noname633;
  4676.  INT fsize = ((INT) 0);
  4677.  FSTR r;
  4678.  INT bsize = ((INT) 0);
  4679.  if (!((!((self->fp==((EXT_OB) NULL)))))) {
  4680.   fprintf(stderr,"Violation of precondition ../Library/file.sa:99:7\n");
  4681.   exit(16);
  4682.  }
  4683.  fsize = FILE_size_INT(self);
  4684.  if ((fsize==-1)) {
  4685.   return ((FSTR) NULL);
  4686.  }
  4687.  r = FSTR_create_INT_FSTR(((FSTR) NULL), fsize);
  4688.  FILE_seek_from_f(self, 0);
  4689.  bsize = fread(((r==NULL)?NULL:r->arr_part), 1, fsize, self->fp);
  4690.  r->loc_17 = bsize;
  4691.  return r;
  4692. }
  4693.  
  4694.  
  4695. FSTR FSTR_create_FSTR(FSTR self) {
  4696.  FSTR noname634;
  4697.  FSTR local0;
  4698.  local0 = ((FSTR) sbi_arr_alloc_atomic(sizeof(struct FSTR_struct), FSTR_tag, sizeof(CHAR) , 16));
  4699.  local0->asize = 16;
  4700.  return local0;
  4701.  if (!FSTR_invariant_BOOL(self)) {
  4702.   fprintf(stderr,"Failed invariant FSTR::invariant:BOOL ../Library/fstr.sa:34:9\n");
  4703.   exit(16);
  4704.  }
  4705. }
  4706.  
  4707.  
  4708. INT FSTR_asize_INT(FSTR self) {
  4709.  INT noname635 = ((INT) 0);
  4710.   return self->asize;
  4711.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  4712.  exit(16);
  4713. }
  4714.  
  4715.  
  4716. void FSTR_aref_aset_I(FSTR self, INT ind_636, CHAR val_637) {
  4717.  BOOL local0;
  4718.  INT local1;
  4719.  INT local2;
  4720.  if ((!((self==((FSTR) NULL))))) {
  4721.   local1 = 0;
  4722.   local2 = (self->asize);
  4723.   local0 = INT_is_bet_INT_I(ind_636, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  4724.  } else {
  4725.   local0 = FALSE;
  4726.  }
  4727.  if (!(local0)) {
  4728.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  4729.   exit(16);
  4730.  }
  4731.  if (ind_636<0||ind_636>=self->asize) {
  4732.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  4733.   exit(16);
  4734.  }
  4735.  self->arr_part[ind_636] = val_637;
  4736. }
  4737.  
  4738.  
  4739. void FSTR_aset_INT_CHAR(FSTR self, INT ind_638, CHAR val_639) {
  4740.  BOOL local0;
  4741.  INT local1;
  4742.  if ((!((self==((FSTR) NULL))))) {
  4743.   local1 = 0;
  4744.   local0 = INT_is_bet_INT_I(ind_638, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  4745.  } else {
  4746.   local0 = FALSE;
  4747.  }
  4748.  if (!(local0)) {
  4749.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:73:7\n");
  4750.   exit(16);
  4751.  }
  4752.  FSTR_aref_aset_I(self, ind_638, val_639);
  4753.  if (!FSTR_invariant_BOOL(self)) {
  4754.   fprintf(stderr,"Failed invariant FSTR::invariant:BOOL ../Library/flist.sa:73:7\n");
  4755.   exit(16);
  4756.  }
  4757. }
  4758.  
  4759.  
  4760. FSTR FSTR_push_CHAR_FSTR(FSTR self, CHAR c_640) {
  4761.  FSTR noname641;
  4762.  FSTR r = ((FSTR) NULL);
  4763.  INT l = ((INT) 0);
  4764.  INT local0;
  4765.  FSTR local1;
  4766.  INT local2;
  4767.  if ((self==((FSTR) NULL))) {
  4768.   r = FSTR_create_FSTR(self);
  4769.   l = 0;
  4770.  }
  4771.  else {
  4772.   local0 = self->loc_17;
  4773.   if ((local0<(self->asize))) {
  4774.    r = self;
  4775.    l = r->loc_17;
  4776.   }
  4777.   else {
  4778.    local2 = 2;
  4779.    local1 = ((FSTR) sbi_arr_alloc_atomic(sizeof(struct FSTR_struct), FSTR_tag, sizeof(CHAR) , (c_INT_times_INT_INT_chk(local2,(self->asize)))));
  4780.    local1->asize = (c_INT_times_INT_INT_chk(local2,(self->asize)));
  4781.    r = local1;
  4782.    l = self->loc_17;
  4783.    (memcpy(r->arr_part,self->arr_part,l));
  4784.   }
  4785.  }
  4786.  r->loc_17 = (c_INT_plus_INT_INT_chk(l,1));
  4787.  FSTR_aset_INT_CHAR(r, l, c_640);
  4788.  return r;
  4789.  if (!FSTR_invariant_BOOL(self)) {
  4790.   fprintf(stderr,"Failed invariant FSTR::invariant:BOOL ../Library/fstr.sa:77:7\n");
  4791.   exit(16);
  4792.  }
  4793. }
  4794.  
  4795.  
  4796. FSTR FSTR_plus_CHAR_FSTR(FSTR self, CHAR c_642) {
  4797.  FSTR noname643;
  4798.  return FSTR_push_CHAR_FSTR(self, c_642);
  4799.  if (!FSTR_invariant_BOOL(self)) {
  4800.   fprintf(stderr,"Failed invariant FSTR::invariant:BOOL ../Library/fstr.sa:136:7\n");
  4801.   exit(16);
  4802.  }
  4803. }
  4804.  
  4805.  
  4806. void FILE_close(FILE_20 self) {
  4807.  if (!((!((self->fp==((EXT_OB) NULL)))))) {
  4808.   fprintf(stderr,"Violation of precondition ../Library/file.sa:193:8\n");
  4809.   exit(16);
  4810.  }
  4811.  fclose(self->fp);
  4812. }
  4813.  
  4814.  
  4815. INT FSTR_size_INT(FSTR self) {
  4816.  INT noname644 = ((INT) 0);
  4817.  if ((self==((FSTR) NULL))) {
  4818.   return 0;
  4819.  }
  4820.  return self->loc_17;
  4821.  if (!FSTR_invariant_BOOL(self)) {
  4822.   fprintf(stderr,"Failed invariant FSTR::invariant:BOOL ../Library/flist.sa:50:7\n");
  4823.   exit(16);
  4824.  }
  4825. }
  4826.  
  4827.  
  4828. CHAR FSTR_aref_aget_I(FSTR self, INT ind_645) {
  4829.  CHAR noname646 = ((CHAR) 0);
  4830.  BOOL local0;
  4831.  INT local1;
  4832.  INT local2;
  4833.  if ((!((self==((FSTR) NULL))))) {
  4834.   local1 = 0;
  4835.   local2 = (self->asize);
  4836.   local0 = INT_is_bet_INT_I(ind_645, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  4837.  } else {
  4838.   local0 = FALSE;
  4839.  }
  4840.  if (!(local0)) {
  4841.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  4842.   exit(16);
  4843.  }
  4844.  if (ind_645<0||ind_645>=self->asize) {
  4845.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  4846.   exit(16);
  4847.  }
  4848.  return self->arr_part[ind_645];
  4849. }
  4850.  
  4851.  
  4852. CHAR FSTR_aget_INT_CHAR(FSTR self, INT ind_647) {
  4853.  CHAR noname648 = ((CHAR) 0);
  4854.  BOOL local0;
  4855.  INT local1;
  4856.  if ((!((self==((FSTR) NULL))))) {
  4857.   local1 = 0;
  4858.   local0 = INT_is_bet_INT_I(ind_647, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  4859.  } else {
  4860.   local0 = FALSE;
  4861.  }
  4862.  if (!(local0)) {
  4863.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:68:7\n");
  4864.   exit(16);
  4865.  }
  4866.  return FSTR_aref_aget_I(self, ind_647);
  4867.  if (!FSTR_invariant_BOOL(self)) {
  4868.   fprintf(stderr,"Failed invariant FSTR::invariant:BOOL ../Library/flist.sa:68:7\n");
  4869.   exit(16);
  4870.  }
  4871. }
  4872.  
  4873.  
  4874. STR STR_plus_STR_STR(STR self, STR s_649) {
  4875.  STR noname650;
  4876.  INT sz = ((INT) 0);
  4877.  STR r;
  4878.  INT local0;
  4879.  STR local1;
  4880.  INT local2;
  4881.  INT local3;
  4882.  local0 = STR_size_INT(self);
  4883.  if ((local0==0)) {
  4884.   return s_649;
  4885.  }
  4886.  sz = STR_size_INT(s_649);
  4887.  if ((sz==0)) {
  4888.   return self;
  4889.  }
  4890.  local2 = (self->asize);
  4891.  local1 = ((STR) sbi_arr_alloc_atomic(sizeof(struct STR_struct), STR_tag, sizeof(CHAR) , (c_INT_plus_INT_INT_chk(local2,sz))));
  4892.  local1->asize = (c_INT_plus_INT_INT_chk(local2,sz));
  4893.  r = local1;
  4894.  (memcpy(r->arr_part,self->arr_part,(self->asize)));
  4895.  local3 = (self->asize);
  4896.  (memcpy(r->arr_part+local3,s_649->arr_part,(r->asize)-local3 > s_649->asize ? s_649->asize:(r->asize)-local3));
  4897.  return r;
  4898. }
  4899.  
  4900.  
  4901. FLISTSTR OPTIONS_args_fro_651(OPTIONS self, STR fname) {
  4902.  FLISTSTR noname652;
  4903.  STR name_653;
  4904.  STR wd;
  4905.  FLISTSTR cl;
  4906.  FILE_20 f;
  4907.  FSTR fs;
  4908.  STR tok;
  4909.  INT pos_654 = ((INT) 0);
  4910.  CHAR c_655 = ((CHAR) 0);
  4911.  ERR_26 local0;
  4912.  ERR_26 local1;
  4913.  ERR_26 local2;
  4914.  FSTR local3;
  4915.  CHAR local4;
  4916.  BOOL local5;
  4917.  BOOL local6;
  4918.  CHAR local7;
  4919.  CHAR local8;
  4920.  BOOL local9;
  4921.  CHAR local10;
  4922.  STR local11;
  4923.  name_653 = STR_replace_CHAR(fname, '\\', '/');
  4924.  wd = OPTIONS_director(self, name_653);
  4925.  cl = FLISTSTR_create_(((FLISTSTR) NULL));
  4926.  f = FILE_open_for_re(((FILE_20) NULL), name_653);
  4927.  if (FILE_error_BOOL(f)) {
  4928.   local0 = ERR_create_ERR(((ERR_26) NULL));
  4929.   local1 = ERR_plus_STR_ERR(local0, ((STR) &Couldntopenfile));
  4930.   local2 = ERR_plus_STR_ERR(local1, name_653);
  4931.   ERR_plus_CHAR(local2, '\n');
  4932.   OPTIONS_usage(self);
  4933.  }
  4934.  local3 = FILE_fstr_FSTR(f);
  4935.  fs = FSTR_plus_CHAR_FSTR(local3, ' ');
  4936.  FILE_close(f);
  4937.  tok = ((STR) &name_656);
  4938.  pos_654 = 0;
  4939.  while (1) {
  4940.   if ((pos_654>=FSTR_size_INT(fs))) {
  4941.    goto after_loop;
  4942.   }
  4943.   c_655 = FSTR_aget_INT_CHAR(fs, pos_654);
  4944.   if ((c_655=='\\')) {
  4945.    c_655 = '/';
  4946.   }
  4947.   if ((c_655=='-')) {
  4948.    local4 = FSTR_aget_INT_CHAR(fs, (c_INT_plus_INT_INT_chk(pos_654,1)));
  4949.    if ((local4=='-')) {
  4950.     while (1) {
  4951.      pos_654 = (c_INT_plus_INT_INT_chk(pos_654,1));
  4952.      if ((pos_654>=FSTR_size_INT(fs))) {
  4953.       local6 = TRUE;
  4954.      } else {
  4955.       local7 = FSTR_aget_INT_CHAR(fs, pos_654);
  4956.       local6 = (local7=='\n');
  4957.      }
  4958.      if (local6) {
  4959.       local5 = TRUE;
  4960.      } else {
  4961.       local8 = FSTR_aget_INT_CHAR(fs, pos_654);
  4962.       local5 = (local8=='\r');
  4963.      }
  4964.      if (local5) {
  4965.       goto after_loop_658;
  4966.      }
  4967.     }
  4968.     after_loop_658: ;
  4969.    }
  4970.    else {
  4971.     tok = STR_plus_CHAR_STR(tok, '-');
  4972.    }
  4973.   }
  4974.   else {
  4975.    if ((!(CHAR_is_space_BOOL(c_655)))) {
  4976.     tok = STR_plus_CHAR_STR(tok, c_655);
  4977.    }
  4978.    else {
  4979.     if (STR_is_neq_STR_BOOL(tok, ((STR) &name_660))) {
  4980.      if (OPTIONS_is_filen(self, tok)) {
  4981.       local10 = STR_aget_INT_CHAR(tok, 0);
  4982.       local9 = (local10!='/');
  4983.      } else {
  4984.       local9 = FALSE;
  4985.      }
  4986.      if (local9) {
  4987.       local11 = STR_plus_CHAR_STR(wd, '/');
  4988.       tok = STR_plus_STR_STR(local11, tok);
  4989.      }
  4990.      cl = FLISTSTR_push_ST(cl, tok);
  4991.      tok = ((STR) &name_661);
  4992.     }
  4993.    }
  4994.   }
  4995.   pos_654 = (c_INT_plus_INT_INT_chk(pos_654,1));
  4996.  }
  4997.  after_loop: ;
  4998.  return cl;
  4999. }
  5000.  
  5001.  
  5002. void OPTIONS_barf_STR(OPTIONS self, STR msg_662) {
  5003.  ERR_26 local0;
  5004.  ERR_26 local1;
  5005.  local0 = ERR_create_ERR(((ERR_26) NULL));
  5006.  local1 = ERR_plus_STR_ERR(local0, msg_662);
  5007.  ERR_plus_CHAR(local1, '\n');
  5008.  UNIX_exit_INT(((UNIX) NULL), 1);
  5009. }
  5010.  
  5011.  
  5012. void BE_LEX_barf_STR(BE_LEX self, STR msg_663) {
  5013.  ERR_26 local0;
  5014.  ERR_26 local1;
  5015.  local0 = ERR_create_ERR(((ERR_26) NULL));
  5016.  local1 = ERR_plus_STR_ERR(local0, msg_663);
  5017.  ERR_plus_CHAR(local1, '\n');
  5018.  UNIX_exit_INT(((UNIX) NULL), 1);
  5019. }
  5020.  
  5021.  
  5022. BE_LEX BE_LEX_create_ST(BE_LEX self, STR s_664) {
  5023.  BE_LEX noname665;
  5024.  BE_LEX res;
  5025.  FILE_20 f;
  5026.  BE_LEX local0;
  5027.  local0 = ((BE_LEX) sbi_alloc(sizeof(struct BE_LEX_struct), BE_LEX_tag));
  5028.  res = local0;
  5029.  res->name_19 = s_664;
  5030.  f = FILE_open_for_re(((FILE_20) NULL), s_664);
  5031.  if (FILE_error_BOOL(f)) {
  5032.   BE_LEX_barf_STR(self, STR_plus_STR_STR(((STR) &Couldntopensyste), s_664));
  5033.  }
  5034.  res->lex_state = 0;
  5035.  res->buf_18 = FILE_fstr_FSTR(f);
  5036.  res->pos = 0;
  5037.  return res;
  5038. }
  5039.  
  5040.  
  5041. BOOL CHAR_is_print_BOOL(CHAR self) {
  5042.  BOOL noname666 = ((BOOL) 0);
  5043.  CHAR noname667 = ((CHAR) 0);
  5044.  noname667 = self;
  5045.  switch (noname667) {
  5046.   case ' ':
  5047.   case 'a':
  5048.   case 'b':
  5049.   case 'c':
  5050.   case 'd':
  5051.   case 'e':
  5052.   case 'f':
  5053.   case 'g':
  5054.   case 'h':
  5055.   case 'i':
  5056.   case 'j':
  5057.   case 'k':
  5058.   case 'l':
  5059.   case 'm':
  5060.   case 'n':
  5061.   case 'o':
  5062.   case 'p':
  5063.   case 'q':
  5064.   case 'r':
  5065.   case 's':
  5066.   case 't':
  5067.   case 'u':
  5068.   case 'v':
  5069.   case 'w':
  5070.   case 'x':
  5071.   case 'y':
  5072.   case 'z':
  5073.   case 'A':
  5074.   case 'B':
  5075.   case 'C':
  5076.   case 'D':
  5077.   case 'E':
  5078.   case 'F':
  5079.   case 'G':
  5080.   case 'H':
  5081.   case 'I':
  5082.   case 'J':
  5083.   case 'K':
  5084.   case 'L':
  5085.   case 'M':
  5086.   case 'N':
  5087.   case 'O':
  5088.   case 'P':
  5089.   case 'Q':
  5090.   case 'R':
  5091.   case 'S':
  5092.   case 'T':
  5093.   case 'U':
  5094.   case 'V':
  5095.   case 'W':
  5096.   case 'X':
  5097.   case 'Y':
  5098.   case 'Z':
  5099.   case '0':
  5100.   case '1':
  5101.   case '2':
  5102.   case '3':
  5103.   case '4':
  5104.   case '5':
  5105.   case '6':
  5106.   case '7':
  5107.   case '8':
  5108.   case '9':
  5109.   case '!':
  5110.   case '\"':
  5111.   case '#':
  5112.   case '$':
  5113.   case '%':
  5114.   case '&':
  5115.   case '\'':
  5116.   case '(':
  5117.   case ')':
  5118.   case '*':
  5119.   case '+':
  5120.   case '-':
  5121.   case '.':
  5122.   case '/':
  5123.   case ':':
  5124.   case ';':
  5125.   case '<':
  5126.   case '=':
  5127.   case '>':
  5128.   case '?':
  5129.   case '@':
  5130.   case '[':
  5131.   case '\\':
  5132.   case ']':
  5133.   case '^':
  5134.   case '_':
  5135.   case '`':
  5136.   case '{':
  5137.   case '|':
  5138.   case '}':
  5139.   case '~':
  5140.   case ',':
  5141.    return TRUE;
  5142.    break;
  5143.   default: ;
  5144.  }
  5145.  return FALSE;
  5146. }
  5147.  
  5148.  
  5149. void FSTR_clear(FSTR self) {
  5150.  if ((!((self==((FSTR) NULL))))) {
  5151.   self->loc_17 = 0;
  5152.  }
  5153.  if (!FSTR_invariant_BOOL(self)) {
  5154.   fprintf(stderr,"Failed invariant FSTR::invariant:BOOL ../Library/fstr.sa:96:8\n");
  5155.   exit(16);
  5156.  }
  5157. }
  5158.  
  5159.  
  5160. CHAR INT_digit_char_CHAR(INT self) {
  5161.  CHAR noname668 = ((CHAR) 0);
  5162.  if (!(INT_is_bet_INT_I(self, 0, 15))) {
  5163.   fprintf(stderr,"Violation of precondition ../Library/int.sa:250:13\n");
  5164.   exit(16);
  5165.  }
  5166.  return STR_aget_INT_CHAR(((STR) &S0123456789ABCDEF), self);
  5167. }
  5168.  
  5169.  
  5170. void INT_buf_FSTR(INT self, FSTR buf_669) {
  5171.  shared_INT_buf = buf_669;
  5172. }
  5173.  
  5174.  
  5175. STR STR_from_fstr_FS(STR self, FSTR s_670) {
  5176.  STR noname671;
  5177.  INT sz = ((INT) 0);
  5178.  STR r;
  5179.  STR local0;
  5180.  sz = FSTR_size_INT(s_670);
  5181.  if ((sz==0)) {
  5182.   return ((STR) &name_672);
  5183.  }
  5184.  local0 = ((STR) sbi_arr_alloc_atomic(sizeof(struct STR_struct), STR_tag, sizeof(CHAR) , sz));
  5185.  local0->asize = sz;
  5186.  r = local0;
  5187.  (memcpy(r->arr_part,s_670->arr_part,sz));
  5188.  return r;
  5189. }
  5190.  
  5191.  
  5192. STR FSTR_str_STR(FSTR self) {
  5193.  STR noname673;
  5194.  return STR_from_fstr_FS(((STR) NULL), self);
  5195.  if (!FSTR_invariant_BOOL(self)) {
  5196.   fprintf(stderr,"Failed invariant FSTR::invariant:BOOL ../Library/fstr.sa:92:6\n");
  5197.   exit(16);
  5198.  }
  5199. }
  5200.  
  5201.  
  5202. FSTR FSTR_plus_STR_FSTR(FSTR self, STR s_674) {
  5203.  FSTR noname675;
  5204.  FSTR noname676;
  5205.  FSTR r = ((FSTR) NULL);
  5206.  INT l = ((INT) 0);
  5207.  INT local0;
  5208.  FSTR local1;
  5209.  INT local2;
  5210.  INT local3;
  5211.  STR local4;
  5212.  STR local5;
  5213.  noname676 = self;
  5214.  l = STR_length_INT(s_674);
  5215.  if ((self==((FSTR) NULL))) {
  5216.   r = FSTR_create_INT_FSTR(self, (c_INT_times_INT_INT_chk(2,l)));
  5217.  }
  5218.  else {
  5219.   local0 = (c_INT_plus_INT_INT_chk(self->loc_17,l));
  5220.   if ((local0<(self->asize))) {
  5221.    r = self;
  5222.   }
  5223.   else {
  5224.    local2 = 2;
  5225.    local3 = (self->asize);
  5226.    local1 = ((FSTR) sbi_arr_alloc_atomic(sizeof(struct FSTR_struct), FSTR_tag, sizeof(CHAR) , (c_INT_times_INT_INT_chk(local2,(c_INT_plus_INT_INT_chk(local3,l))))));
  5227.    local1->asize = (c_INT_times_INT_INT_chk(local2,(c_INT_plus_INT_INT_chk(local3,l))));
  5228.    r = local1;
  5229.    r->loc_17 = self->loc_17;
  5230.    (memcpy(r->arr_part,self->arr_part,(r->asize) > (self->asize) ? self->asize:r->asize));
  5231.   }
  5232.  }
  5233.  if ((l==0)) {
  5234.   return r;
  5235.  }
  5236.  (memcpy(r->arr_part+r->loc_17,s_674->arr_part,(r->asize)-r->loc_17 > s_674->asize ? s_674->asize:(r->asize)-r->loc_17));
  5237.  r->loc_17 = (c_INT_plus_INT_INT_chk(r->loc_17,l));
  5238.  return r;
  5239.  local4 = FSTR_str_STR(noname675);
  5240.  local5 = FSTR_str_STR(noname676);
  5241.  if (!(STR_is_eq_STR_BOOL(local4, STR_plus_STR_STR(local5, s_674)))) {
  5242.   fprintf(stderr,"Violation of postcondition ../Library/fstr.sa:105:7\n");
  5243.   exit(16);
  5244.  }
  5245.  if (!FSTR_invariant_BOOL(self)) {
  5246.   fprintf(stderr,"Failed invariant FSTR::invariant:BOOL ../Library/fstr.sa:105:7\n");
  5247.   exit(16);
  5248.  }
  5249. }
  5250.  
  5251.  
  5252. void FSTR_to_reverse(FSTR self) {
  5253.  INT noname677 = ((INT) 0);
  5254.  INT i = ((INT) 0);
  5255.  INT u_678 = ((INT) 0);
  5256.  CHAR t = ((CHAR) 0);
  5257.  INT local0;
  5258.  INT local1;
  5259.  
  5260.  INT local2;
  5261.  if ((self==((FSTR) NULL))) {
  5262.   return;
  5263.  }
  5264.  {
  5265.   BOOL noname680 = TRUE;
  5266.   while (1) {
  5267.    if (noname680) {
  5268.     noname680 = FALSE;
  5269.     noname677 = (c_INT_div_INT_INT_chk(self->loc_17,2));
  5270.     local1 = noname677;
  5271.     local0 = 0;
  5272.    } else {
  5273.     local0++;
  5274.    }
  5275.    if (local0>=local1) goto after_loop;
  5276.    i = local0;
  5277.    local2 = (c_INT_minus_INT_INT_chk(self->loc_17,i));
  5278.    u_678 = (c_INT_minus_INT_INT_chk(local2,1));
  5279.    t = FSTR_aget_INT_CHAR(self, i);
  5280.    FSTR_aset_INT_CHAR(self, i, FSTR_aget_INT_CHAR(self, u_678));
  5281.    FSTR_aset_INT_CHAR(self, u_678, t);
  5282.   }
  5283.  }
  5284.  after_loop: ;
  5285.  if (!FSTR_invariant_BOOL(self)) {
  5286.   fprintf(stderr,"Failed invariant FSTR::invariant:BOOL ../Library/flist.sa:236:13\n");
  5287.   exit(16);
  5288.  }
  5289. }
  5290.  
  5291.  
  5292. STR INT_octal_str_STR(INT self) {
  5293.  STR noname681;
  5294.  INT i = ((INT) 0);
  5295.  FSTR local0;
  5296.  FSTR_clear(shared_INT_buf);
  5297.  i = self;
  5298.  while (1) {
  5299.   local0 = shared_INT_buf;
  5300.   INT_buf_FSTR(self, FSTR_plus_CHAR_FSTR(local0, INT_digit_char_CHAR((i&7))));
  5301.   i = (((unsigned)i)>>((unsigned)3));
  5302.   if ((i==0)) {
  5303.    goto after_loop;
  5304.   }
  5305.  }
  5306.  after_loop: ;
  5307.  INT_buf_FSTR(self, FSTR_plus_STR_FSTR(shared_INT_buf, ((STR) &o0)));
  5308.  FSTR_to_reverse(shared_INT_buf);
  5309.  return FSTR_str_STR(shared_INT_buf);
  5310. }
  5311.  
  5312.  
  5313. STR STR_append_STR_S(STR self, STR s1, STR s2) {
  5314.  STR noname683;
  5315.  STR r;
  5316.  INT local0;
  5317.  INT local1;
  5318.  INT local2;
  5319.  STR local3;
  5320.  INT local4;
  5321.  INT local5;
  5322.  INT local6;
  5323.  INT local7;
  5324.  INT local8;
  5325.  local0 = STR_size_INT(self);
  5326.  if ((local0==0)) {
  5327.   return STR_plus_STR_STR(s1, s2);
  5328.  }
  5329.  else {
  5330.   local1 = STR_size_INT(s1);
  5331.   if ((local1==0)) {
  5332.    return STR_plus_STR_STR(self, s2);
  5333.   }
  5334.   else {
  5335.    local2 = STR_size_INT(s2);
  5336.    if ((local2==0)) {
  5337.     return STR_plus_STR_STR(self, s1);
  5338.    }
  5339.   }
  5340.  }
  5341.  local4 = (self->asize);
  5342.  local5 = (c_INT_plus_INT_INT_chk(local4,(s1->asize)));
  5343.  local3 = ((STR) sbi_arr_alloc_atomic(sizeof(struct STR_struct), STR_tag, sizeof(CHAR) , (c_INT_plus_INT_INT_chk(local5,(s2->asize)))));
  5344.  local3->asize = (c_INT_plus_INT_INT_chk(local5,(s2->asize)));
  5345.  r = local3;
  5346.  (memcpy(r->arr_part,self->arr_part,(r->asize) > (self->asize) ? self->asize:r->asize));
  5347.  local6 = (self->asize);
  5348.  (memcpy(r->arr_part+local6,s1->arr_part,(r->asize)-local6 > s1->asize ? s1->asize:(r->asize)-local6));
  5349.  local7 = (self->asize);
  5350.  local8 = (c_INT_plus_INT_INT_chk(local7,(s1->asize)));
  5351.  (memcpy(r->arr_part+local8,s2->arr_part,(r->asize)-local8 > s2->asize ? s2->asize:(r->asize)-local8));
  5352.  return r;
  5353. }
  5354.  
  5355.  
  5356. STR CHAR_pretty_STR(CHAR self) {
  5357.  STR noname684;
  5358.  CHAR noname685 = ((CHAR) 0);
  5359.  STR s_686;
  5360.  BOOL local0;
  5361.  BOOL local1;
  5362.  STR local2;
  5363.  STR local3;
  5364.  INT local4;
  5365.  STR local5;
  5366.  if (CHAR_is_print_BOOL(self)) {
  5367.   local1 = (self!='\'');
  5368.  } else {
  5369.   local1 = FALSE;
  5370.  }
  5371.  if (local1) {
  5372.   local0 = (self!='\\');
  5373.  } else {
  5374.   local0 = FALSE;
  5375.  }
  5376.  if (local0) {
  5377.   local2 = STR_plus_CHAR_STR(((STR) &name_687), self);
  5378.   return STR_plus_STR_STR(local2, ((STR) &name_688));
  5379.  }
  5380.  noname685 = self;
  5381.  switch (noname685) {
  5382.   case 'a':
  5383.    return ((STR) &a);
  5384.    break;
  5385.   case '\b':
  5386.    return ((STR) &b);
  5387.    break;
  5388.   case '\f':
  5389.    return ((STR) &f);
  5390.    break;
  5391.   case '\n':
  5392.    return ((STR) &n);
  5393.    break;
  5394.   case '\r':
  5395.    return ((STR) &r);
  5396.    break;
  5397.   case '\t':
  5398.    return ((STR) &t);
  5399.    break;
  5400.   case '\v':
  5401.    return ((STR) &v_689);
  5402.    break;
  5403.   case '\\':
  5404.    return ((STR) &name_690);
  5405.    break;
  5406.   case '\'':
  5407.    return ((STR) &name_691);
  5408.    break;
  5409.   default: ;
  5410.  }
  5411.  s_686 = INT_octal_str_STR(((INT)self));
  5412.  local3 = ((STR) &name_692);
  5413.  local4 = STR_size_INT(s_686);
  5414.  local5 = STR_tail_INT_STR(s_686, (c_INT_minus_INT_INT_chk(local4,2)));
  5415.  return STR_append_STR_S(local3, local5, ((STR) &name_693));
  5416. }
  5417.  
  5418.  
  5419. STR BE_LEX_get_str_STR(BE_LEX self) {
  5420.  STR noname694;
  5421.  CHAR c_695 = ((CHAR) 0);
  5422.  FSTR tmp_696;
  5423.  INT noname697 = ((INT) 0);
  5424.  CHAR noname698 = ((CHAR) 0);
  5425.  CHAR noname699 = ((CHAR) 0);
  5426.  CHAR noname700 = ((CHAR) 0);
  5427.  INT local0;
  5428.  STR local1;
  5429.  STR local2;
  5430.  STR local3;
  5431.  tmp_696 = FSTR_create_FSTR(((FSTR) NULL));
  5432.  while (1) {
  5433.   local0 = self->pos;
  5434.   if ((local0>=FSTR_size_INT(self->buf_18))) {
  5435.    goto after_loop;
  5436.   }
  5437.   c_695 = FSTR_aget_INT_CHAR(self->buf_18, self->pos);
  5438.   self->pos = (c_INT_plus_INT_INT_chk(self->pos,1));
  5439.   noname697 = self->lex_state;
  5440.   switch (noname697) {
  5441.    case 0:
  5442.     noname698 = c_695;
  5443.     switch (noname698) {
  5444.      case '-':
  5445.       self->lex_state = 1;
  5446.       break;
  5447.      case '\"':
  5448.       self->lex_state = 2;
  5449.       break;
  5450.      case '\n':
  5451.       break;
  5452.      case ' ':
  5453.       break;
  5454.      case '\t':
  5455.       break;
  5456.      case '\r':
  5457.       break;
  5458.      case '\\':
  5459.       break;
  5460.      default: ;
  5461.       local1 = ((STR) &Illegalcharacter);
  5462.       local2 = STR_plus_STR_STR(local1, CHAR_pretty_STR(c_695));
  5463.       local3 = STR_plus_STR_STR(local2, ((STR) &ininputfile));
  5464.       BE_LEX_barf_STR(self, STR_plus_STR_STR(local3, self->name_19));
  5465.     }
  5466.     break;
  5467.    case 1:
  5468.     noname699 = c_695;
  5469.     switch (noname699) {
  5470.      case '\n':
  5471.      case '\r':
  5472.       self->lex_state = 0;
  5473.       break;
  5474.      default: ;
  5475.     }
  5476.     break;
  5477.    case 2:
  5478.     noname700 = c_695;
  5479.     switch (noname700) {
  5480.      case '\"':
  5481.       self->lex_state = 0;
  5482.       return FSTR_str_STR(tmp_696);
  5483.       break;
  5484.      default: ;
  5485.       tmp_696 = FSTR_plus_CHAR_FSTR(tmp_696, c_695);
  5486.     }
  5487.     break;
  5488.    default: ;
  5489.     BE_LEX_barf_STR(self, ((STR) &Unknownlexstatei));
  5490.   }
  5491.  }
  5492.  after_loop: ;
  5493.  return ((STR) NULL);
  5494. }
  5495.  
  5496.  
  5497. BOOL BOOL_from_str_ST(BOOL self, STR s_702) {
  5498.  BOOL noname703 = ((BOOL) 0);
  5499.  STR noname704;
  5500.  noname704 = s_702;
  5501.  if (STR_is_eq_STR_BOOL(noname704, ((STR) &true_705))) {
  5502.   return TRUE;
  5503.  }
  5504.  else {
  5505.   if (STR_is_eq_STR_BOOL(noname704, ((STR) &t_706))) {
  5506.    return TRUE;
  5507.   }
  5508.   else {
  5509.    if (STR_is_eq_STR_BOOL(noname704, ((STR) &True))) {
  5510.     return TRUE;
  5511.    }
  5512.    else {
  5513.     if (STR_is_eq_STR_BOOL(noname704, ((STR) &T))) {
  5514.      return TRUE;
  5515.     }
  5516.     else {
  5517.      if (STR_is_eq_STR_BOOL(noname704, ((STR) &TRUE_707))) {
  5518.       return TRUE;
  5519.      }
  5520.      else {
  5521.       if (STR_is_eq_STR_BOOL(noname704, ((STR) &false))) {
  5522.        return FALSE;
  5523.       }
  5524.       else {
  5525.        if (STR_is_eq_STR_BOOL(noname704, ((STR) &f_708))) {
  5526.         return FALSE;
  5527.        }
  5528.        else {
  5529.         if (STR_is_eq_STR_BOOL(noname704, ((STR) &False))) {
  5530.          return FALSE;
  5531.         }
  5532.         else {
  5533.          if (STR_is_eq_STR_BOOL(noname704, ((STR) &F))) {
  5534.           return FALSE;
  5535.          }
  5536.          else {
  5537.           if (STR_is_eq_STR_BOOL(noname704, ((STR) &FALSE_709))) {
  5538.            return FALSE;
  5539.           }
  5540.           else {
  5541.            exception = ((OB) STR_plus_STR_STR(((STR) &Cantinterpretboo), s_702));
  5542.            longjmp(last_protect,1);
  5543.           }
  5544.          }
  5545.         }
  5546.        }
  5547.       }
  5548.      }
  5549.     }
  5550.    }
  5551.   }
  5552.  }
  5553.  return FALSE;
  5554. }
  5555.  
  5556.  
  5557. void OPTIONS_interpre(OPTIONS self, ARRAYSTR a_710) {
  5558.  STR s_711;
  5559.  STR noname712;
  5560.  STR fn;
  5561.  FSETSTR noname713;
  5562.  BE_LEX l;
  5563.  STR t_714;
  5564.  STR noname715;
  5565.  CHAR c_716 = ((CHAR) 0);
  5566.  FSETSTR local0;
  5567.  FLISTSTR local1;
  5568.  FMAPSTRFSETSTR local2;
  5569.  STR local3;
  5570.  FMAPSTRSTR local4;
  5571.  STR local5;
  5572.  STR local6;
  5573.  BE_LEX local7;
  5574.  CHAR local8;
  5575.  STR local9;
  5576.  CHAR *local8p; INT local8n;
  5577.  self->args_7 = a_710;
  5578.  self->next_8 = 1;
  5579.  OPTIONS_get_files(self);
  5580.  OPTIONS_insert_h(self, OPTIONS_args_fro(self));
  5581.  while (1) {
  5582.   if (OPTIONS_more_arg(self)) {
  5583.   }
  5584.   else {
  5585.    goto after_loop;
  5586.   }
  5587.   s_711 = OPTIONS_next_arg_STR(self);
  5588.   noname712 = s_711;
  5589.   if (STR_is_eq_STR_BOOL(noname712, ((STR) &main_718))) {
  5590.    self->main_class = OPTIONS_next_arg_STR(self);
  5591.   }
  5592.   else {
  5593.    if (STR_is_eq_STR_BOOL(noname712, ((STR) &o))) {
  5594.     self->executable_9 = OPTIONS_next_arg_STR(self);
  5595.    }
  5596.    else {
  5597.     if (STR_is_eq_STR_BOOL(noname712, ((STR) &home_719))) {
  5598.      self->home = OPTIONS_next_arg_STR(self);
  5599.     }
  5600.     else {
  5601.      if (STR_is_eq_STR_BOOL(noname712, ((STR) &output_C))) {
  5602.       self->gen_c = TRUE;
  5603.      }
  5604.      else {
  5605.       if (STR_is_eq_STR_BOOL(noname712, ((STR) &pretty_720))) {
  5606.        self->pretty = TRUE;
  5607.       }
  5608.       else {
  5609.        if (STR_is_eq_STR_BOOL(noname712, ((STR) &verbose_721))) {
  5610.         self->verbose = TRUE;
  5611.        }
  5612.        else {
  5613.         if (STR_is_eq_STR_BOOL(noname712, ((STR) &psather_722))) {
  5614.          self->psather = TRUE;
  5615.         }
  5616.         else {
  5617.          if (STR_is_eq_STR_BOOL(noname712, ((STR) &only_parse_723))) {
  5618.           self->only_parse = TRUE;
  5619.          }
  5620.          else {
  5621.           if (STR_is_eq_STR_BOOL(noname712, ((STR) &only_check_724))) {
  5622.            self->only_check = TRUE;
  5623.           }
  5624.           else {
  5625.            if (STR_is_eq_STR_BOOL(noname712, ((STR) &only_C_725))) {
  5626.             self->only_C = TRUE;
  5627.             self->gen_c = TRUE;
  5628.            }
  5629.            else {
  5630.             if (STR_is_eq_STR_BOOL(noname712, ((STR) &only_reachable_726))) {
  5631.              self->only_reachable = TRUE;
  5632.             }
  5633.             else {
  5634.              if (STR_is_eq_STR_BOOL(noname712, ((STR) &check_727))) {
  5635.               OPTIONS_get_classes(self);
  5636.               if (self->all_10) {
  5637.                self->arith_all = TRUE;
  5638.                self->arith_out = FSETSTR_create_F(((FSETSTR) NULL));
  5639.                self->bounds_all = TRUE;
  5640.                self->bounds_out = FSETSTR_create_F(((FSETSTR) NULL));
  5641.                self->void_all = TRUE;
  5642.                self->void_out = FSETSTR_create_F(((FSETSTR) NULL));
  5643.                self->pre_all = TRUE;
  5644.                self->pre_out = FSETSTR_create_F(((FSETSTR) NULL));
  5645.                self->post_all = TRUE;
  5646.                self->post_out = FSETSTR_create_F(((FSETSTR) NULL));
  5647.                self->assert_all = TRUE;
  5648.                self->assert_out = FSETSTR_create_F(((FSETSTR) NULL));
  5649.                self->invariant_all = TRUE;
  5650.                self->invariant_out = FSETSTR_create_F(((FSETSTR) NULL));
  5651.                self->when_all = TRUE;
  5652.                self->when_out = FSETSTR_create_F(((FSETSTR) NULL));
  5653.                self->destroy_all = TRUE;
  5654.                self->destroy_out = FSETSTR_create_F(((FSETSTR) NULL));
  5655.                self->return_all = TRUE;
  5656.                self->return_out = FSETSTR_create_F(((FSETSTR) NULL));
  5657.               }
  5658.               else {
  5659.                self->arith_in = FSETSTR_union_FS(self->arith_in, self->classes_14);
  5660.                self->bounds_in = FSETSTR_union_FS(self->bounds_in, self->classes_14);
  5661.                self->void_in = FSETSTR_union_FS(self->void_in, self->classes_14);
  5662.                self->pre_in = FSETSTR_union_FS(self->pre_in, self->classes_14);
  5663.                self->post_in = FSETSTR_union_FS(self->post_in, self->classes_14);
  5664.                self->assert_in = FSETSTR_union_FS(self->assert_in, self->classes_14);
  5665.                self->invariant_in = FSETSTR_union_FS(self->invariant_in, self->classes_14);
  5666.                self->when_in = FSETSTR_union_FS(self->when_in, self->classes_14);
  5667.                self->destroy_in = FSETSTR_union_FS(self->destroy_in, self->classes_14);
  5668.                self->return_in = FSETSTR_union_FS(self->return_in, self->classes_14);
  5669.                self->arith_out = FSETSTR_differen(self->arith_out, self->classes_14);
  5670.                self->bounds_out = FSETSTR_differen(self->bounds_out, self->classes_14);
  5671.                self->void_out = FSETSTR_differen(self->void_out, self->classes_14);
  5672.                self->pre_out = FSETSTR_differen(self->pre_out, self->classes_14);
  5673.                self->post_out = FSETSTR_differen(self->post_out, self->classes_14);
  5674.                self->assert_out = FSETSTR_differen(self->assert_out, self->classes_14);
  5675.                self->invariant_out = FSETSTR_differen(self->invariant_out, self->classes_14);
  5676.                self->when_out = FSETSTR_differen(self->when_out, self->classes_14);
  5677.                self->destroy_out = FSETSTR_differen(self->destroy_out, self->classes_14);
  5678.                self->return_out = FSETSTR_differen(self->return_out, self->classes_14);
  5679.               }
  5680.              }
  5681.              else {
  5682.               if (STR_is_eq_STR_BOOL(noname712, ((STR) &arith))) {
  5683.                OPTIONS_get_classes(self);
  5684.                if (self->all_10) {
  5685.                 self->arith_all = TRUE;
  5686.                 self->arith_out = FSETSTR_create_F(((FSETSTR) NULL));
  5687.                }
  5688.                else {
  5689.                 self->arith_in = FSETSTR_union_FS(self->arith_in, self->classes_14);
  5690.                 self->arith_out = FSETSTR_differen(self->arith_out, self->classes_14);
  5691.                }
  5692.               }
  5693.               else {
  5694.                if (STR_is_eq_STR_BOOL(noname712, ((STR) &bounds))) {
  5695.                 OPTIONS_get_classes(self);
  5696.                 if (self->all_10) {
  5697.                  self->bounds_all = TRUE;
  5698.                  self->bounds_out = FSETSTR_create_F(((FSETSTR) NULL));
  5699.                 }
  5700.                 else {
  5701.                  self->bounds_in = FSETSTR_union_FS(self->bounds_in, self->classes_14);
  5702.                  self->bounds_out = FSETSTR_differen(self->bounds_out, self->classes_14);
  5703.                 }
  5704.                }
  5705.                else {
  5706.                 if (STR_is_eq_STR_BOOL(noname712, ((STR) &void_728))) {
  5707.                  OPTIONS_get_classes(self);
  5708.                  if (self->all_10) {
  5709.                   self->void_all = TRUE;
  5710.                   self->void_out = FSETSTR_create_F(((FSETSTR) NULL));
  5711.                  }
  5712.                  else {
  5713.                   self->void_in = FSETSTR_union_FS(self->void_in, self->classes_14);
  5714.                   self->void_out = FSETSTR_differen(self->void_out, self->classes_14);
  5715.                  }
  5716.                 }
  5717.                 else {
  5718.                  if (STR_is_eq_STR_BOOL(noname712, ((STR) &pre))) {
  5719.                   OPTIONS_get_classes(self);
  5720.                   if (self->all_10) {
  5721.                    self->pre_all = TRUE;
  5722.                    self->pre_out = FSETSTR_create_F(((FSETSTR) NULL));
  5723.                   }
  5724.                   else {
  5725.                    self->pre_in = FSETSTR_union_FS(self->pre_in, self->classes_14);
  5726.                    self->pre_out = FSETSTR_differen(self->pre_out, self->classes_14);
  5727.                   }
  5728.                  }
  5729.                  else {
  5730.                   if (STR_is_eq_STR_BOOL(noname712, ((STR) &post))) {
  5731.                    OPTIONS_get_classes(self);
  5732.                    if (self->all_10) {
  5733.                     self->post_all = TRUE;
  5734.                     self->post_out = FSETSTR_create_F(((FSETSTR) NULL));
  5735.                    }
  5736.                    else {
  5737.                     self->post_in = FSETSTR_union_FS(self->post_in, self->classes_14);
  5738.                     self->post_out = FSETSTR_differen(self->post_out, self->classes_14);
  5739.                    }
  5740.                   }
  5741.                   else {
  5742.                    if (STR_is_eq_STR_BOOL(noname712, ((STR) &assert_729))) {
  5743.                     OPTIONS_get_classes(self);
  5744.                     if (self->all_10) {
  5745.                      self->assert_all = TRUE;
  5746.                      self->assert_out = FSETSTR_create_F(((FSETSTR) NULL));
  5747.                     }
  5748.                     else {
  5749.                      self->assert_in = FSETSTR_union_FS(self->assert_in, self->classes_14);
  5750.                      self->assert_out = FSETSTR_differen(self->assert_out, self->classes_14);
  5751.                     }
  5752.                    }
  5753.                    else {
  5754.                     if (STR_is_eq_STR_BOOL(noname712, ((STR) &invariant_730))) {
  5755.                      OPTIONS_get_classes(self);
  5756.                      if (self->all_10) {
  5757.                       self->invariant_all = TRUE;
  5758.                       self->invariant_out = FSETSTR_create_F(((FSETSTR) NULL));
  5759.                      }
  5760.                      else {
  5761.                       self->invariant_in = FSETSTR_union_FS(self->invariant_in, self->classes_14);
  5762.                       self->invariant_out = FSETSTR_differen(self->invariant_out, self->classes_14);
  5763.                      }
  5764.                     }
  5765.                     else {
  5766.                      if (STR_is_eq_STR_BOOL(noname712, ((STR) &when_731))) {
  5767.                       OPTIONS_get_classes(self);
  5768.                       if (self->all_10) {
  5769.                        self->when_all = TRUE;
  5770.                        self->when_out = FSETSTR_create_F(((FSETSTR) NULL));
  5771.                       }
  5772.                       else {
  5773.                        self->when_in = FSETSTR_union_FS(self->when_in, self->classes_14);
  5774.                        self->when_out = FSETSTR_differen(self->when_out, self->classes_14);
  5775.                       }
  5776.                      }
  5777.                      else {
  5778.                       if (STR_is_eq_STR_BOOL(noname712, ((STR) &destroy))) {
  5779.                        OPTIONS_get_classes(self);
  5780.                        if (self->all_10) {
  5781.                         self->destroy_all = TRUE;
  5782.                         self->destroy_out = FSETSTR_create_F(((FSETSTR) NULL));
  5783.                        }
  5784.                        else {
  5785.                         self->destroy_in = FSETSTR_union_FS(self->destroy_in, self->classes_14);
  5786.                         self->destroy_out = FSETSTR_differen(self->destroy_out, self->classes_14);
  5787.                        }
  5788.                       }
  5789.                       else {
  5790.                        if (STR_is_eq_STR_BOOL(noname712, ((STR) &return_732))) {
  5791.                         OPTIONS_get_classes(self);
  5792.                         if (self->all_10) {
  5793.                          self->return_all = TRUE;
  5794.                          self->return_out = FSETSTR_create_F(((FSETSTR) NULL));
  5795.                         }
  5796.                         else {
  5797.                          self->return_in = FSETSTR_union_FS(self->return_in, self->classes_14);
  5798.                          self->return_out = FSETSTR_differen(self->return_out, self->classes_14);
  5799.                         }
  5800.                        }
  5801.                        else {
  5802.                         if (STR_is_eq_STR_BOOL(noname712, ((STR) &when_733))) {
  5803.                          OPTIONS_get_classes(self);
  5804.                          if (self->all_10) {
  5805.                           self->when_all = TRUE;
  5806.                           self->when_out = FSETSTR_create_F(((FSETSTR) NULL));
  5807.                          }
  5808.                          else {
  5809.                           self->when_in = FSETSTR_union_FS(self->when_in, self->classes_14);
  5810.                           self->when_out = FSETSTR_differen(self->when_out, self->classes_14);
  5811.                          }
  5812.                         }
  5813.                         else {
  5814.                          if (STR_is_eq_STR_BOOL(noname712, ((STR) &no_check))) {
  5815.                           OPTIONS_get_classes(self);
  5816.                           if (self->all_10) {
  5817.                            self->arith_in = FSETSTR_create_F(((FSETSTR) NULL));
  5818.                            self->arith_all = FALSE;
  5819.                            self->bounds_in = FSETSTR_create_F(((FSETSTR) NULL));
  5820.                            self->bounds_all = FALSE;
  5821.                            self->void_in = FSETSTR_create_F(((FSETSTR) NULL));
  5822.                            self->void_all = FALSE;
  5823.                            self->pre_in = FSETSTR_create_F(((FSETSTR) NULL));
  5824.                            self->pre_all = FALSE;
  5825.                            self->post_in = FSETSTR_create_F(((FSETSTR) NULL));
  5826.                            self->post_all = FALSE;
  5827.                            self->assert_in = FSETSTR_create_F(((FSETSTR) NULL));
  5828.                            self->assert_all = FALSE;
  5829.                            self->invariant_in = FSETSTR_create_F(((FSETSTR) NULL));
  5830.                            self->invariant_all = FALSE;
  5831.                            self->when_in = FSETSTR_create_F(((FSETSTR) NULL));
  5832.                            self->when_all = FALSE;
  5833.                            self->destroy_in = FSETSTR_create_F(((FSETSTR) NULL));
  5834.                            self->destroy_all = FALSE;
  5835.                            self->return_in = FSETSTR_create_F(((FSETSTR) NULL));
  5836.                            self->return_all = FALSE;
  5837.                           }
  5838.                           else {
  5839.                            self->arith_out = FSETSTR_union_FS(self->arith_out, self->classes_14);
  5840.                            self->bounds_out = FSETSTR_union_FS(self->bounds_out, self->classes_14);
  5841.                            self->void_out = FSETSTR_union_FS(self->void_out, self->classes_14);
  5842.                            self->pre_out = FSETSTR_union_FS(self->pre_out, self->classes_14);
  5843.                            self->post_out = FSETSTR_union_FS(self->post_out, self->classes_14);
  5844.                            self->assert_out = FSETSTR_union_FS(self->assert_out, self->classes_14);
  5845.                            self->invariant_out = FSETSTR_union_FS(self->invariant_out, self->classes_14);
  5846.                            self->when_out = FSETSTR_union_FS(self->when_out, self->classes_14);
  5847.                            self->destroy_out = FSETSTR_union_FS(self->destroy_out, self->classes_14);
  5848.                            self->return_out = FSETSTR_union_FS(self->return_out, self->classes_14);
  5849.                           }
  5850.                          }
  5851.                          else {
  5852.                           if (STR_is_eq_STR_BOOL(noname712, ((STR) &no_arith))) {
  5853.                            OPTIONS_get_classes(self);
  5854.                            if (self->all_10) {
  5855.                             self->arith_in = FSETSTR_create_F(((FSETSTR) NULL));
  5856.                             self->arith_all = FALSE;
  5857.                            }
  5858.                            else {
  5859.                             self->arith_out = FSETSTR_union_FS(self->arith_out, self->classes_14);
  5860.                            }
  5861.                           }
  5862.                           else {
  5863.                            if (STR_is_eq_STR_BOOL(noname712, ((STR) &no_bounds))) {
  5864.                             OPTIONS_get_classes(self);
  5865.                             if (self->all_10) {
  5866.                              self->bounds_in = FSETSTR_create_F(((FSETSTR) NULL));
  5867.                              self->bounds_all = FALSE;
  5868.                             }
  5869.                             else {
  5870.                              self->bounds_out = FSETSTR_union_FS(self->bounds_out, self->classes_14);
  5871.                             }
  5872.                            }
  5873.                            else {
  5874.                             if (STR_is_eq_STR_BOOL(noname712, ((STR) &no_void))) {
  5875.                              OPTIONS_get_classes(self);
  5876.                              if (self->all_10) {
  5877.                               self->void_in = FSETSTR_create_F(((FSETSTR) NULL));
  5878.                               self->void_all = FALSE;
  5879.                              }
  5880.                              else {
  5881.                               self->void_out = FSETSTR_union_FS(self->void_out, self->classes_14);
  5882.                              }
  5883.                             }
  5884.                             else {
  5885.                              if (STR_is_eq_STR_BOOL(noname712, ((STR) &no_pre))) {
  5886.                               OPTIONS_get_classes(self);
  5887.                               if (self->all_10) {
  5888.                                self->pre_in = FSETSTR_create_F(((FSETSTR) NULL));
  5889.                                self->pre_all = FALSE;
  5890.                               }
  5891.                               else {
  5892.                                self->pre_out = FSETSTR_union_FS(self->pre_out, self->classes_14);
  5893.                               }
  5894.                              }
  5895.                              else {
  5896.                               if (STR_is_eq_STR_BOOL(noname712, ((STR) &no_post))) {
  5897.                                OPTIONS_get_classes(self);
  5898.                                if (self->all_10) {
  5899.                                 self->post_in = FSETSTR_create_F(((FSETSTR) NULL));
  5900.                                 self->post_all = FALSE;
  5901.                                }
  5902.                                else {
  5903.                                 self->post_out = FSETSTR_union_FS(self->post_out, self->classes_14);
  5904.                                }
  5905.                               }
  5906.                               else {
  5907.                                if (STR_is_eq_STR_BOOL(noname712, ((STR) &no_assert))) {
  5908.                                 OPTIONS_get_classes(self);
  5909.                                 if (self->all_10) {
  5910.                                  self->assert_in = FSETSTR_create_F(((FSETSTR) NULL));
  5911.                                  self->assert_all = FALSE;
  5912.                                 }
  5913.                                 else {
  5914.                                  self->assert_out = FSETSTR_union_FS(self->assert_out, self->classes_14);
  5915.                                 }
  5916.                                }
  5917.                                else {
  5918.                                 if (STR_is_eq_STR_BOOL(noname712, ((STR) &no_invariant))) {
  5919.                                  OPTIONS_get_classes(self);
  5920.                                  if (self->all_10) {
  5921.                                   self->invariant_in = FSETSTR_create_F(((FSETSTR) NULL));
  5922.                                   self->invariant_all = FALSE;
  5923.                                  }
  5924.                                  else {
  5925.                                   self->invariant_out = FSETSTR_union_FS(self->invariant_out, self->classes_14);
  5926.                                  }
  5927.                                 }
  5928.                                 else {
  5929.                                  if (STR_is_eq_STR_BOOL(noname712, ((STR) &no_destroy))) {
  5930.                                   OPTIONS_get_classes(self);
  5931.                                   if (self->all_10) {
  5932.                                    self->destroy_in = FSETSTR_create_F(((FSETSTR) NULL));
  5933.                                    self->destroy_all = FALSE;
  5934.                                   }
  5935.                                   else {
  5936.                                    self->destroy_out = FSETSTR_union_FS(self->destroy_out, self->classes_14);
  5937.                                   }
  5938.                                  }
  5939.                                  else {
  5940.                                   if (STR_is_eq_STR_BOOL(noname712, ((STR) &no_return))) {
  5941.                                    OPTIONS_get_classes(self);
  5942.                                    if (self->all_10) {
  5943.                                     self->return_in = FSETSTR_create_F(((FSETSTR) NULL));
  5944.                                     self->return_all = FALSE;
  5945.                                    }
  5946.                                    else {
  5947.                                     self->return_out = FSETSTR_union_FS(self->return_out, self->classes_14);
  5948.                                    }
  5949.                                   }
  5950.                                   else {
  5951.                                    if (STR_is_eq_STR_BOOL(noname712, ((STR) &no_when))) {
  5952.                                     OPTIONS_get_classes(self);
  5953.                                     if (self->all_10) {
  5954.                                      self->when_in = FSETSTR_create_F(((FSETSTR) NULL));
  5955.                                      self->when_all = FALSE;
  5956.                                     }
  5957.                                     else {
  5958.                                      self->when_out = FSETSTR_union_FS(self->when_out, self->classes_14);
  5959.                                     }
  5960.                                    }
  5961.                                    else {
  5962.                                     if (STR_is_eq_STR_BOOL(noname712, ((STR) &optimize_734))) {
  5963.                                      self->optimize = TRUE;
  5964.                                     }
  5965.                                     else {
  5966.                                      if (STR_is_eq_STR_BOOL(noname712, ((STR) &O))) {
  5967.                                       self->optimize = TRUE;
  5968.                                      }
  5969.                                      else {
  5970.                                       if (STR_is_eq_STR_BOOL(noname712, ((STR) &fast_735))) {
  5971.                                        self->optimize = TRUE;
  5972.                                        self->arith_in = FSETSTR_create_F(((FSETSTR) NULL));
  5973.                                        self->arith_all = FALSE;
  5974.                                        self->bounds_in = FSETSTR_create_F(((FSETSTR) NULL));
  5975.                                        self->bounds_all = FALSE;
  5976.                                        self->void_in = FSETSTR_create_F(((FSETSTR) NULL));
  5977.                                        self->void_all = FALSE;
  5978.                                        self->pre_in = FSETSTR_create_F(((FSETSTR) NULL));
  5979.                                        self->pre_all = FALSE;
  5980.                                        self->post_in = FSETSTR_create_F(((FSETSTR) NULL));
  5981.                                        self->post_all = FALSE;
  5982.                                        self->assert_in = FSETSTR_create_F(((FSETSTR) NULL));
  5983.                                        self->assert_all = FALSE;
  5984.                                        self->invariant_in = FSETSTR_create_F(((FSETSTR) NULL));
  5985.                                        self->invariant_all = FALSE;
  5986.                                        self->when_in = FSETSTR_create_F(((FSETSTR) NULL));
  5987.                                        self->when_all = FALSE;
  5988.                                        self->destroy_in = FSETSTR_create_F(((FSETSTR) NULL));
  5989.                                        self->destroy_all = FALSE;
  5990.                                        self->return_in = FSETSTR_create_F(((FSETSTR) NULL));
  5991.                                        self->return_all = FALSE;
  5992.                                       }
  5993.                                       else {
  5994.                                        if (STR_is_eq_STR_BOOL(noname712, ((STR) &debug_736))) {
  5995.                                         self->debug_11 = TRUE;
  5996.                                         self->gen_c = TRUE;
  5997.                                        }
  5998.                                        else {
  5999.                                         if (STR_is_eq_STR_BOOL(noname712, ((STR) &g))) {
  6000.                                          self->debug_11 = TRUE;
  6001.                                          self->gen_c = TRUE;
  6002.                                         }
  6003.                                         else {
  6004.                                          if (STR_is_eq_STR_BOOL(noname712, ((STR) &deterministic_737))) {
  6005.                                           self->deterministic_12 = TRUE;
  6006.                                          }
  6007.                                          else {
  6008.                                           if (STR_is_eq_STR_BOOL(noname712, ((STR) &force_738))) {
  6009.                                            local0 = self->force_routines;
  6010.                                            self->force_routines = FSETSTR_insert_S(local0, OPTIONS_next_arg_STR(self));
  6011.                                           }
  6012.                                           else {
  6013.                                            if (STR_is_eq_STR_BOOL(noname712, ((STR) &force_all_739))) {
  6014.                                             self->force_all = TRUE;
  6015.                                            }
  6016.                                            else {
  6017.                                             if (STR_is_eq_STR_BOOL(noname712, ((STR) &C_flag))) {
  6018.                                              local1 = self->c_flags;
  6019.                                              self->c_flags = FLISTSTR_push_ST(local1, OPTIONS_next_arg_STR(self));
  6020.                                             }
  6021.                                             else {
  6022.                                              if (STR_is_eq_STR_BOOL(noname712, ((STR) &external_740))) {
  6023.                                               local2 = self->externals;
  6024.                                               local3 = OPTIONS_next_arg_STR(self);
  6025.                                               self->externals = FMAPSTRFSETSTR_i_555(local2, local3, OPTIONS_files_FS(self));
  6026.                                              }
  6027.                                              else {
  6028.                                               if (STR_is_eq_STR_BOOL(noname712, ((STR) &has_741))) {
  6029.                                                fn = OPTIONS_next_arg_STR(self);
  6030.                                                self->known_files = FSETSTR_insert_S(self->known_files, fn);
  6031.                                                OPTIONS_get_classes(self);
  6032.                                                {
  6033.                                                 struct FSETSTR_elt_STR_frame_struct temp743_0;
  6034.                                                 FSETSTR_elt_STR_frame 
  6035.                                                 noname744 = &temp743_0;
  6036.                                                 noname744->state = 0;
  6037.                                                 while (1) {
  6038.                                                  local4 = self->has_13;
  6039.                                                  if (noname744->state == 0) {
  6040.                                                   noname713 = self->classes_14;
  6041.                                                   noname744->arg0 = noname713;
  6042.                                                  }
  6043.                                                  local5 = FSETSTR_elt_STR(noname744);
  6044.                                                  if (noname744->state == -1) goto after_loop_742;
  6045.                                                  local6 = local5;
  6046.                                                  self->has_13 = FMAPSTRSTR_inser_586(local4, local6, fn);
  6047.                                                 }
  6048.                                                }
  6049.                                                after_loop_742: ;
  6050.                                               }
  6051.                                               else {
  6052.                                                if (STR_is_eq_STR_BOOL(noname712, ((STR) &com))) {
  6053.                                                 OPTIONS_insert_h(self, OPTIONS_args_fro_651(self, OPTIONS_next_arg_STR(self)));
  6054.                                                }
  6055.                                                else {
  6056.                                                 if (OPTIONS_is_filen(self, s_711)) {
  6057.                                                  OPTIONS_rewind(self);
  6058.                                                  OPTIONS_get_files(self);
  6059.                                                 }
  6060.                                                 else {
  6061.                                                  OPTIONS_rewind(self);
  6062.                                                  OPTIONS_usage(self);
  6063.                                                  return;
  6064.                                                 }
  6065.                                                }
  6066.                                               }
  6067.                                              }
  6068.                                             }
  6069.                                            }
  6070.                                           }
  6071.                                          }
  6072.                                         }
  6073.                                        }
  6074.                                       }
  6075.                                      }
  6076.                                     }
  6077.                                    }
  6078.                                   }
  6079.                                  }
  6080.                                 }
  6081.                                }
  6082.                               }
  6083.                              }
  6084.                             }
  6085.                            }
  6086.                           }
  6087.                          }
  6088.                         }
  6089.                        }
  6090.                       }
  6091.                      }
  6092.                     }
  6093.                    }
  6094.                   }
  6095.                  }
  6096.                 }
  6097.                }
  6098.               }
  6099.              }
  6100.             }
  6101.            }
  6102.           }
  6103.          }
  6104.         }
  6105.        }
  6106.       }
  6107.      }
  6108.     }
  6109.    }
  6110.   }
  6111.  }
  6112.  after_loop: ;
  6113.  if ((self->home==((STR) NULL))) {
  6114.   OPTIONS_barf_STR(self, ((STR) &Nohomedirectorys));
  6115.  }
  6116.  if ((self->executable_9==((STR) NULL))) {
  6117.   OPTIONS_barf_STR(self, ((STR) &Noexecutablespec));
  6118.  }
  6119.  local7 = ((BE_LEX) NULL);
  6120.  l = BE_LEX_create_ST(local7, STR_plus_STR_STR(self->home, ((STR) &SystemCONFIG)));
  6121.  if ((l==((BE_LEX) NULL))) {
  6122.   OPTIONS_barf_STR(self, ((STR) &CouldnotopenCONF));
  6123.  }
  6124.  self->c_compile1 = BE_LEX_get_str_STR(l);
  6125.  if ((self->c_compile1==((STR) NULL))) {
  6126.   OPTIONS_barf_STR(self, ((STR) &CouldnotreadCONFIGc1));
  6127.  }
  6128.  t_714 = BE_LEX_get_str_STR(l);
  6129.  if ((t_714==((STR) NULL))) {
  6130.   OPTIONS_barf_STR(self, ((STR) &CouldnotreadCONFIGc2));
  6131.  }
  6132.  self->c_compile2 = ((STR) &name_745);
  6133.  {
  6134.   BOOL noname748 = TRUE;
  6135.   while (1) {
  6136.    if (noname748) {
  6137.     noname748 = FALSE;
  6138.     noname715 = t_714;
  6139.     local9 = noname715;
  6140.     local8p = local9->arr_part; local8n = local9->asize;
  6141.    } else {
  6142.     local8p++; local8n--;
  6143.    }
  6144.    if (local8n<=0) goto after_loop_746; local8 = *local8p;
  6145.    c_716 = local8;
  6146.    if ((c_716=='\\')) {
  6147.     c_716 = '/';
  6148.    }
  6149.    if ((c_716!='#')) {
  6150.     self->c_compile2 = STR_plus_CHAR_STR(self->c_compile2, c_716);
  6151.    }
  6152.    else {
  6153.     if (STR_is_eq_STR_BOOL(self->home, ((STR) &name_749))) {
  6154.      self->c_compile2 = STR_plus_STR_STR(self->c_compile2, ((STR) &name_750));
  6155.     }
  6156.     else {
  6157.      self->c_compile2 = STR_plus_STR_STR(self->c_compile2, self->home);
  6158.     }
  6159.    }
  6160.   }
  6161.  }
  6162.  after_loop_746: ;
  6163.  self->c_opt = BE_LEX_get_str_STR(l);
  6164.  if ((self->c_opt==((STR) NULL))) {
  6165.   OPTIONS_barf_STR(self, ((STR) &CouldnotreadCONF));
  6166.  }
  6167.  self->c_debug = BE_LEX_get_str_STR(l);
  6168.  if ((self->c_debug==((STR) NULL))) {
  6169.   OPTIONS_barf_STR(self, ((STR) &CouldnotreadCONF_751));
  6170.  }
  6171.  self->c_verbose = BE_LEX_get_str_STR(l);
  6172.  if ((self->c_verbose==((STR) NULL))) {
  6173.   OPTIONS_barf_STR(self, ((STR) &CouldnotreadCONF_752));
  6174.  }
  6175.  self->make_command = BE_LEX_get_str_STR(l);
  6176.  if ((self->make_command==((STR) NULL))) {
  6177.   OPTIONS_barf_STR(self, ((STR) &CouldnotreadCONF_753));
  6178.  }
  6179.  self->make_silent = BE_LEX_get_str_STR(l);
  6180.  if ((self->make_silent==((STR) NULL))) {
  6181.   OPTIONS_barf_STR(self, ((STR) &CouldnotreadCONF_754));
  6182.  }
  6183.  self->c_exec = BE_LEX_get_str_STR(l);
  6184.  if ((self->c_exec==((STR) NULL))) {
  6185.   OPTIONS_barf_STR(self, ((STR) &CouldnotreadCONF_755));
  6186.  }
  6187.  t_714 = BE_LEX_get_str_STR(l);
  6188.  if ((t_714==((STR) NULL))) {
  6189.   OPTIONS_barf_STR(self, ((STR) &CouldnotreadCONF_756));
  6190.  }
  6191.  self->null_segfaults = BOOL_from_str_ST(((BOOL) 0), t_714);
  6192. }
  6193.  
  6194.  
  6195. BOOL FSETSTR_is_empty(FSETSTR self) {
  6196.  BOOL noname757 = ((BOOL) 0);
  6197.  BOOL local0;
  6198.  if ((self==((FSETSTR) NULL))) {
  6199.   local0 = TRUE;
  6200.  } else {
  6201.   local0 = (self->hsize==0);
  6202.  }
  6203.  return local0;
  6204.  if (!FSETSTR_invarian(self)) {
  6205.   fprintf(stderr,"Failed invariant FSET{STR}::invariant:BOOL ../Library/fset.sa:225:11\n");
  6206.   exit(16);
  6207.  }
  6208. }
  6209.  
  6210.  
  6211. INT FLISTSFILE_ID_as(FLISTSFILE_ID self) {
  6212.  INT noname758 = ((INT) 0);
  6213.   return self->asize;
  6214.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  6215.  exit(16);
  6216. }
  6217.  
  6218.  
  6219. INT FLISTSFILE_ID_si(FLISTSFILE_ID self) {
  6220.  INT noname759 = ((INT) 0);
  6221.  if ((self==((FLISTSFILE_ID) NULL))) {
  6222.   return 0;
  6223.  }
  6224.  return self->loc_17;
  6225.  if (!FLISTSFILE_ID_in(self)) {
  6226.   fprintf(stderr,"Failed invariant FLIST{SFILE_ID}::invariant:BOOL ../Library/flist.sa:50:7\n");
  6227.   exit(16);
  6228.  }
  6229. }
  6230.  
  6231.  
  6232. BOOL FLISTSFILE_ID_is(FLISTSFILE_ID self) {
  6233.  BOOL noname760 = ((BOOL) 0);
  6234.  INT local0;
  6235.  local0 = FLISTSFILE_ID_si(self);
  6236.  return (local0==0);
  6237.  if (!FLISTSFILE_ID_in(self)) {
  6238.   fprintf(stderr,"Failed invariant FLIST{SFILE_ID}::invariant:BOOL ../Library/flist.sa:113:11\n");
  6239.   exit(16);
  6240.  }
  6241. }
  6242.  
  6243.  
  6244. void FLISTSFILE_ID_aclear(FLISTSFILE_ID self) {
  6245.  SFILE_ID nil = SFILE_ID_zero;
  6246.  FLISTSFILE_ID noname761;
  6247.  if (!((!((self==((FLISTSFILE_ID) NULL)))))) {
  6248.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:43:9\n");
  6249.   exit(16);
  6250.  }
  6251.  {
  6252.   struct FLISTSFILE_ID_as_763_frame_struct temp762_0;
  6253.   FLISTSFILE_ID_as_763_frame 
  6254.   noname764 = &temp762_0;
  6255.   noname764->state = 0;
  6256.   while (1) {
  6257.    if (noname764->state == 0) {
  6258.     noname761 = self;
  6259.     noname764->arg0 = noname761;
  6260.    }
  6261.    noname764->arg1 = nil;
  6262.    FLISTSFILE_ID_as_763(noname764);
  6263.    if (noname764->state == -1) goto after_loop;
  6264.    0 /* No return value from iter call */;
  6265.   }
  6266.  }
  6267.  after_loop: ;
  6268. }
  6269.  
  6270.  
  6271. void FLISTSFILE_ID_clear(FLISTSFILE_ID self) {
  6272.  if (FLISTSFILE_ID_is(self)) {
  6273.   return;
  6274.  }
  6275.  else {
  6276.   FLISTSFILE_ID_aclear(self);
  6277.   self->loc_17 = 0;
  6278.  }
  6279.  if (!FLISTSFILE_ID_in(self)) {
  6280.   fprintf(stderr,"Failed invariant FLIST{SFILE_ID}::invariant:BOOL ../Library/flist.sa:117:8\n");
  6281.   exit(16);
  6282.  }
  6283. }
  6284.  
  6285.  
  6286. void FLISTSFILE_ID_ar(FLISTSFILE_ID self, INT ind_765, SFILE_ID val_766) {
  6287.  BOOL local0;
  6288.  INT local1;
  6289.  INT local2;
  6290.  if ((!((self==((FLISTSFILE_ID) NULL))))) {
  6291.   local1 = 0;
  6292.   local2 = (self->asize);
  6293.   local0 = INT_is_bet_INT_I(ind_765, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  6294.  } else {
  6295.   local0 = FALSE;
  6296.  }
  6297.  if (!(local0)) {
  6298.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  6299.   exit(16);
  6300.  }
  6301.  if (ind_765<0||ind_765>=self->asize) {
  6302.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  6303.   exit(16);
  6304.  }
  6305.  self->arr_part[ind_765] = val_766;
  6306. }
  6307.  
  6308.  
  6309. void FLISTSFILE_ID_as_767(FLISTSFILE_ID self, INT ind_768, SFILE_ID val_769) {
  6310.  BOOL local0;
  6311.  INT local1;
  6312.  if ((!((self==((FLISTSFILE_ID) NULL))))) {
  6313.   local1 = 0;
  6314.   local0 = INT_is_bet_INT_I(ind_768, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  6315.  } else {
  6316.   local0 = FALSE;
  6317.  }
  6318.  if (!(local0)) {
  6319.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:73:7\n");
  6320.   exit(16);
  6321.  }
  6322.  FLISTSFILE_ID_ar(self, ind_768, val_769);
  6323.  if (!FLISTSFILE_ID_in(self)) {
  6324.   fprintf(stderr,"Failed invariant FLIST{SFILE_ID}::invariant:BOOL ../Library/flist.sa:73:7\n");
  6325.   exit(16);
  6326.  }
  6327. }
  6328.  
  6329.  
  6330. FLISTSFILE_ID FLISTSFILE_ID_pu(FLISTSFILE_ID self, SFILE_ID e_770) {
  6331.  FLISTSFILE_ID noname771;
  6332.  FLISTSFILE_ID r_772 = ((FLISTSFILE_ID) NULL);
  6333.  FLISTSFILE_ID noname773;
  6334.  FLISTSFILE_ID noname774;
  6335.  FLISTSFILE_ID local0;
  6336.  INT local1;
  6337.  FLISTSFILE_ID local2;
  6338.  INT local3;
  6339.  SFILE_ID local4;
  6340.  INT local5;
  6341.  if ((self==((FLISTSFILE_ID) NULL))) {
  6342.   local0 = ((FLISTSFILE_ID) sbi_arr_alloc_atomic(sizeof(struct FLISTSFILE_ID_struct), FLISTSFILE_ID_tag, sizeof(SFILE_ID) , 5));
  6343.   local0->asize = 5;
  6344.   r_772 = local0;
  6345.  }
  6346.  else {
  6347.   local1 = self->loc_17;
  6348.   if ((local1<(self->asize))) {
  6349.    r_772 = self;
  6350.   }
  6351.   else {
  6352.    local3 = 2;
  6353.    local2 = ((FLISTSFILE_ID) sbi_arr_alloc_atomic(sizeof(struct FLISTSFILE_ID_struct), FLISTSFILE_ID_tag, sizeof(SFILE_ID) , (c_INT_times_INT_INT_chk(local3,(self->asize)))));
  6354.    local2->asize = (c_INT_times_INT_INT_chk(local3,(self->asize)));
  6355.    r_772 = local2;
  6356.    r_772->loc_17 = self->loc_17;
  6357.    {
  6358.     struct FLISTSFILE_ID_el_frame_struct temp775_0;
  6359.     FLISTSFILE_ID_el_frame 
  6360.     noname776 = &temp775_0;
  6361.     struct FLISTSFILE_ID_as_763_frame_struct temp775_1;
  6362.     FLISTSFILE_ID_as_763_frame 
  6363.     noname777 = &temp775_1;
  6364.     noname776->state = 0;
  6365.     noname777->state = 0;
  6366.     while (1) {
  6367.      if (noname777->state == 0) {
  6368.       noname774 = r_772;
  6369.       noname777->arg0 = noname774;
  6370.      }
  6371.      if (noname776->state == 0) {
  6372.       noname773 = self;
  6373.       noname776->arg0 = noname773;
  6374.      }
  6375.      local4 = FLISTSFILE_ID_el(noname776);
  6376.      if (noname776->state == -1) goto after_loop;
  6377.      noname777->arg1 = local4;
  6378.      FLISTSFILE_ID_as_763(noname777);
  6379.      if (noname777->state == -1) goto after_loop;
  6380.      0 /* No return value from iter call */;
  6381.     }
  6382.    }
  6383.    after_loop: ;
  6384.    FLISTSFILE_ID_clear(self);
  6385.   }
  6386.  }
  6387.  r_772->loc_17 = (c_INT_plus_INT_INT_chk(r_772->loc_17,1));
  6388.  local5 = (c_INT_minus_INT_INT_chk(r_772->loc_17,1));
  6389.  FLISTSFILE_ID_as_767(r_772, local5, e_770);
  6390.  return r_772;
  6391.  if (!FLISTSFILE_ID_in(self)) {
  6392.   fprintf(stderr,"Failed invariant FLIST{SFILE_ID}::invariant:BOOL ../Library/flist.sa:79:7\n");
  6393.   exit(16);
  6394.  }
  6395. }
  6396.  
  6397.  
  6398. SFILE_ID FLISTSFILE_ID_ar_778(FLISTSFILE_ID self, INT ind_779) {
  6399.  SFILE_ID noname780 = SFILE_ID_zero;
  6400.  BOOL local0;
  6401.  INT local1;
  6402.  INT local2;
  6403.  if ((!((self==((FLISTSFILE_ID) NULL))))) {
  6404.   local1 = 0;
  6405.   local2 = (self->asize);
  6406.   local0 = INT_is_bet_INT_I(ind_779, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  6407.  } else {
  6408.   local0 = FALSE;
  6409.  }
  6410.  if (!(local0)) {
  6411.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  6412.   exit(16);
  6413.  }
  6414.  if (ind_779<0||ind_779>=self->asize) {
  6415.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  6416.   exit(16);
  6417.  }
  6418.  return self->arr_part[ind_779];
  6419. }
  6420.  
  6421.  
  6422. SFILE_ID FLISTSFILE_ID_ag(FLISTSFILE_ID self, INT ind_781) {
  6423.  SFILE_ID noname782 = SFILE_ID_zero;
  6424.  BOOL local0;
  6425.  INT local1;
  6426.  if ((!((self==((FLISTSFILE_ID) NULL))))) {
  6427.   local1 = 0;
  6428.   local0 = INT_is_bet_INT_I(ind_781, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  6429.  } else {
  6430.   local0 = FALSE;
  6431.  }
  6432.  if (!(local0)) {
  6433.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:68:7\n");
  6434.   exit(16);
  6435.  }
  6436.  return FLISTSFILE_ID_ar_778(self, ind_781);
  6437.  if (!FLISTSFILE_ID_in(self)) {
  6438.   fprintf(stderr,"Failed invariant FLIST{SFILE_ID}::invariant:BOOL ../Library/flist.sa:68:7\n");
  6439.   exit(16);
  6440.  }
  6441. }
  6442.  
  6443.  
  6444. BOOL SFILE_ID_is_eq_S(SFILE_ID self, SFILE_ID y) {
  6445.  BOOL noname783 = ((BOOL) 0);
  6446.  return (self.loc_17==y.loc_17);
  6447. }
  6448.  
  6449.  
  6450. BOOL PROG_err_loc_old(PROG self, SFILE_ID l) {
  6451.  BOOL noname784 = ((BOOL) 0);
  6452.  INT i = ((INT) 0);
  6453.  i = 0;
  6454.  if ((self->err_list==((FLISTSFILE_ID) NULL))) {
  6455.   self->err_list = FLISTSFILE_ID_pu(self->err_list, l);
  6456.   return FALSE;
  6457.  }
  6458.  while (1) {
  6459.   if ((i<FLISTSFILE_ID_si(self->err_list))) {
  6460.   }
  6461.   else {
  6462.    goto after_loop;
  6463.   }
  6464.   if (SFILE_ID_is_eq_S(l, FLISTSFILE_ID_ag(self->err_list, i))) {
  6465.    return TRUE;
  6466.   }
  6467.   i = (c_INT_plus_INT_INT_chk(i,1));
  6468.  }
  6469.  after_loop: ;
  6470.  self->err_list = FLISTSFILE_ID_pu(self->err_list, l);
  6471.  return FALSE;
  6472. }
  6473.  
  6474.  
  6475. OUT OUT_create_OUT(OUT self) {
  6476.  OUT noname786;
  6477.  return self;
  6478. }
  6479.  
  6480.  
  6481. INT FLISTINT_size_INT(FLISTINT self) {
  6482.  INT noname787 = ((INT) 0);
  6483.  if ((self==((FLISTINT) NULL))) {
  6484.   return 0;
  6485.  }
  6486.  return self->loc_17;
  6487.  if (!FLISTINT_invaria(self)) {
  6488.   fprintf(stderr,"Failed invariant FLIST{INT}::invariant:BOOL ../Library/flist.sa:50:7\n");
  6489.   exit(16);
  6490.  }
  6491. }
  6492.  
  6493.  
  6494. INT FLISTINT_asize_INT(FLISTINT self) {
  6495.  INT noname788 = ((INT) 0);
  6496.   return self->asize;
  6497.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  6498.  exit(16);
  6499. }
  6500.  
  6501.  
  6502. INT FLISTINT_aref_ag(FLISTINT self, INT ind_789) {
  6503.  INT noname790 = ((INT) 0);
  6504.  BOOL local0;
  6505.  INT local1;
  6506.  INT local2;
  6507.  if ((!((self==((FLISTINT) NULL))))) {
  6508.   local1 = 0;
  6509.   local2 = (self->asize);
  6510.   local0 = INT_is_bet_INT_I(ind_789, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  6511.  } else {
  6512.   local0 = FALSE;
  6513.  }
  6514.  if (!(local0)) {
  6515.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  6516.   exit(16);
  6517.  }
  6518.  if (ind_789<0||ind_789>=self->asize) {
  6519.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  6520.   exit(16);
  6521.  }
  6522.  return self->arr_part[ind_789];
  6523. }
  6524.  
  6525.  
  6526. INT FLISTINT_aget_IN(FLISTINT self, INT ind_791) {
  6527.  INT noname792 = ((INT) 0);
  6528.  BOOL local0;
  6529.  INT local1;
  6530.  if ((!((self==((FLISTINT) NULL))))) {
  6531.   local1 = 0;
  6532.   local0 = INT_is_bet_INT_I(ind_791, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  6533.  } else {
  6534.   local0 = FALSE;
  6535.  }
  6536.  if (!(local0)) {
  6537.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:68:7\n");
  6538.   exit(16);
  6539.  }
  6540.  return FLISTINT_aref_ag(self, ind_791);
  6541.  if (!FLISTINT_invaria(self)) {
  6542.   fprintf(stderr,"Failed invariant FLIST{INT}::invariant:BOOL ../Library/flist.sa:68:7\n");
  6543.   exit(16);
  6544.  }
  6545. }
  6546.  
  6547.  
  6548. void OUT_plus_STR(OUT self, STR s_793) {
  6549.  INT local0;
  6550.  local0 = STR_size_INT(s_793);
  6551.  c_out_nstr(local0, ((s_793==NULL)?NULL:s_793->arr_part));
  6552. }
  6553.  
  6554.  
  6555. INT SFILE_ID_index_INT(SFILE_ID self) {
  6556.  INT noname794 = ((INT) 0);
  6557.  INT i = ((INT) 0);
  6558.  INT l = ((INT) 0);
  6559.  INT p = ((INT) 0);
  6560.  BOOL local0;
  6561.  OUT local1;
  6562.  if ((!((shared_SFILE_ID_==((FLISTINT) NULL))))) {
  6563.   i = 0;
  6564.   l = (c_INT_div_INT_INT_chk(self.loc_17,shared_SFILE_ID_B));
  6565.   p = -1;
  6566.   while (1) {
  6567.    if ((i<FLISTINT_size_INT(shared_SFILE_ID_))) {
  6568.    }
  6569.    else {
  6570.     goto after_loop;
  6571.    }
  6572.    if ((p<l)) {
  6573.     local0 = (l<=FLISTINT_aget_IN(shared_SFILE_ID_, i));
  6574.    } else {
  6575.     local0 = FALSE;
  6576.    }
  6577.    if (local0) {
  6578.     goto after_loop;
  6579.    }
  6580.    p = FLISTINT_aget_IN(shared_SFILE_ID_, i);
  6581.    i = (c_INT_plus_INT_INT_chk(i,1));
  6582.   }
  6583.   after_loop: ;
  6584.   return i;
  6585.  }
  6586.  else {
  6587.   local1 = OUT_create_OUT(((OUT) NULL));
  6588.   OUT_plus_STR(local1, ((STR) &compilererrorinS));
  6589.  }
  6590.  return 0;
  6591. }
  6592.  
  6593.  
  6594. STR FLISTSTR_aref_ag(FLISTSTR self, INT ind_796) {
  6595.  STR noname797;
  6596.  BOOL local0;
  6597.  INT local1;
  6598.  INT local2;
  6599.  if ((!((self==((FLISTSTR) NULL))))) {
  6600.   local1 = 0;
  6601.   local2 = (self->asize);
  6602.   local0 = INT_is_bet_INT_I(ind_796, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  6603.  } else {
  6604.   local0 = FALSE;
  6605.  }
  6606.  if (!(local0)) {
  6607.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  6608.   exit(16);
  6609.  }
  6610.  if (ind_796<0||ind_796>=self->asize) {
  6611.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  6612.   exit(16);
  6613.  }
  6614.  return self->arr_part[ind_796];
  6615. }
  6616.  
  6617.  
  6618. STR FLISTSTR_aget_IN(FLISTSTR self, INT ind_798) {
  6619.  STR noname799;
  6620.  BOOL local0;
  6621.  INT local1;
  6622.  if ((!((self==((FLISTSTR) NULL))))) {
  6623.   local1 = 0;
  6624.   local0 = INT_is_bet_INT_I(ind_798, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  6625.  } else {
  6626.   local0 = FALSE;
  6627.  }
  6628.  if (!(local0)) {
  6629.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:68:7\n");
  6630.   exit(16);
  6631.  }
  6632.  return FLISTSTR_aref_ag(self, ind_798);
  6633.  if (!FLISTSTR_invaria(self)) {
  6634.   fprintf(stderr,"Failed invariant FLIST{STR}::invariant:BOOL ../Library/flist.sa:68:7\n");
  6635.   exit(16);
  6636.  }
  6637. }
  6638.  
  6639.  
  6640. STR SFILE_ID_file_in_STR(SFILE_ID self) {
  6641.  STR noname800;
  6642.  FLISTSTR local0;
  6643.  local0 = shared_SFILE_ID__801;
  6644.  return FLISTSTR_aget_IN(local0, SFILE_ID_index_INT(self));
  6645. }
  6646.  
  6647.  
  6648. INT SFILE_ID_line_nu(SFILE_ID self) {
  6649.  INT noname802 = ((INT) 0);
  6650.  INT i = ((INT) 0);
  6651.  INT local0;
  6652.  FLISTINT local1;
  6653.  i = SFILE_ID_index_INT(self);
  6654.  if ((i>0)) {
  6655.   local0 = (c_INT_div_INT_INT_chk(self.loc_17,shared_SFILE_ID_B));
  6656.   local1 = shared_SFILE_ID_;
  6657.   return (c_INT_minus_INT_INT_chk(local0,FLISTINT_aget_IN(local1, (c_INT_minus_INT_INT_chk(i,1)))));
  6658.  }
  6659.  return (c_INT_div_INT_INT_chk(self.loc_17,shared_SFILE_ID_B));
  6660. }
  6661.  
  6662.  
  6663. void STR_buf_FSTR(STR self, FSTR buf_803) {
  6664.  shared_STR_buf = buf_803;
  6665. }
  6666.  
  6667.  
  6668. INT INT_nil_INT(INT self) {
  6669.  INT noname804 = ((INT) 0);
  6670.  INT local0;
  6671.  local0 = 1;
  6672.  return (local0<<(c_INT_minus_INT_INT_chk(shared_INT_asize,1)));
  6673. }
  6674.  
  6675.  
  6676. BOOL INT_is_odd_BOOL(INT self) {
  6677.  BOOL noname805 = ((BOOL) 0);
  6678.  INT local0;
  6679.  local0 = (self&1);
  6680.  return (local0!=0);
  6681. }
  6682.  
  6683.  
  6684. INT INT_negate_INT(INT self) {
  6685.  INT noname806 = ((INT) 0);
  6686.  return (c_INT_minus_INT_INT_chk(0,self));
  6687. }
  6688.  
  6689.  
  6690. INT INT_abs_INT(INT self) {
  6691.  INT noname807 = ((INT) 0);
  6692.  if ((self<0)) {
  6693.   return INT_negate_INT(self);
  6694.  }
  6695.  return self;
  6696. }
  6697.  
  6698.  
  6699. INT INTI_asize_INT(INTI self) {
  6700.  INT noname808 = ((INT) 0);
  6701.   return self->asize;
  6702.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  6703.  exit(16);
  6704. }
  6705.  
  6706.  
  6707. INT INTI_aget_INT_INT(INTI self, INT ind_809) {
  6708.  INT noname810 = ((INT) 0);
  6709.  BOOL local0;
  6710.  INT local1;
  6711.  INT local2;
  6712.  if ((!((self==((INTI) NULL))))) {
  6713.   local1 = 0;
  6714.   local2 = (self->asize);
  6715.   local0 = INT_is_bet_INT_I(ind_809, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  6716.  } else {
  6717.   local0 = FALSE;
  6718.  }
  6719.  if (!(local0)) {
  6720.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  6721.   exit(16);
  6722.  }
  6723.  if (ind_809<0||ind_809>=self->asize) {
  6724.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  6725.   exit(16);
  6726.  }
  6727.  return self->arr_part[ind_809];
  6728. }
  6729.  
  6730.  
  6731. void INTI_aset_INT_INT(INTI self, INT ind_811, INT val_812) {
  6732.  BOOL local0;
  6733.  INT local1;
  6734.  INT local2;
  6735.  if ((!((self==((INTI) NULL))))) {
  6736.   local1 = 0;
  6737.   local2 = (self->asize);
  6738.   local0 = INT_is_bet_INT_I(ind_811, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  6739.  } else {
  6740.   local0 = FALSE;
  6741.  }
  6742.  if (!(local0)) {
  6743.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  6744.   exit(16);
  6745.  }
  6746.  if (ind_811<0||ind_811>=self->asize) {
  6747.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  6748.   exit(16);
  6749.  }
  6750.  self->arr_part[ind_811] = val_812;
  6751. }
  6752.  
  6753.  
  6754. INT INT_square_INT(INT self) {
  6755.  INT noname813 = ((INT) 0);
  6756.  return (c_INT_times_INT_INT_chk(self,self));
  6757. }
  6758.  
  6759.  
  6760. INT INT_pow_INT_INT(INT self, INT i) {
  6761.  INT noname814 = ((INT) 0);
  6762.  INT r_815 = ((INT) 0);
  6763.  INT noname816 = ((INT) 0);
  6764.  INT x = ((INT) 0);
  6765.  INT local0;
  6766.  INT local1;
  6767.  INT local2;
  6768.  INT local3;
  6769.  INT local4;
  6770.  INT local5;
  6771.  INT local6;
  6772.  if (!((i>=0))) {
  6773.   fprintf(stderr,"Violation of precondition ../Library/int.sa:175:6\n");
  6774.   exit(16);
  6775.  }
  6776.  noname816 = i;
  6777.  switch (noname816) {
  6778.   case 0:
  6779.    return 1;
  6780.    break;
  6781.   case 1:
  6782.    return self;
  6783.    break;
  6784.   case 2:
  6785.    return (c_INT_times_INT_INT_chk(self,self));
  6786.    break;
  6787.   case 3:
  6788.    local0 = (c_INT_times_INT_INT_chk(self,self));
  6789.    return (c_INT_times_INT_INT_chk(local0,self));
  6790.    break;
  6791.   case 4:
  6792.    r_815 = (c_INT_times_INT_INT_chk(self,self));
  6793.    return (c_INT_times_INT_INT_chk(r_815,r_815));
  6794.    break;
  6795.   case 5:
  6796.    r_815 = (c_INT_times_INT_INT_chk(self,self));
  6797.    local1 = (c_INT_times_INT_INT_chk(self,r_815));
  6798.    return (c_INT_times_INT_INT_chk(local1,r_815));
  6799.    break;
  6800.   case 6:
  6801.    r_815 = (c_INT_times_INT_INT_chk(self,self));
  6802.    local2 = (c_INT_times_INT_INT_chk(r_815,r_815));
  6803.    return (c_INT_times_INT_INT_chk(local2,r_815));
  6804.    break;
  6805.   case 7:
  6806.    r_815 = (c_INT_times_INT_INT_chk(self,self));
  6807.    local3 = (c_INT_times_INT_INT_chk(self,r_815));
  6808.    local4 = (c_INT_times_INT_INT_chk(local3,r_815));
  6809.    return (c_INT_times_INT_INT_chk(local4,r_815));
  6810.    break;
  6811.   case 8:
  6812.    r_815 = (c_INT_times_INT_INT_chk(self,self));
  6813.    r_815 = (c_INT_times_INT_INT_chk(r_815,r_815));
  6814.    return (c_INT_times_INT_INT_chk(r_815,r_815));
  6815.    break;
  6816.   case 9:
  6817.    r_815 = (c_INT_times_INT_INT_chk(self,self));
  6818.    r_815 = (c_INT_times_INT_INT_chk(r_815,r_815));
  6819.    local5 = (c_INT_times_INT_INT_chk(self,r_815));
  6820.    return (c_INT_times_INT_INT_chk(local5,r_815));
  6821.    break;
  6822.   case 10:
  6823.    r_815 = (c_INT_times_INT_INT_chk(self,self));
  6824.    local6 = (c_INT_times_INT_INT_chk(self,r_815));
  6825.    r_815 = (c_INT_times_INT_INT_chk(local6,r_815));
  6826.    return (c_INT_times_INT_INT_chk(r_815,r_815));
  6827.    break;
  6828.   default: ;
  6829.    x = self;
  6830.    r_815 = 1;
  6831.    while (1) {
  6832.     if ((i>0)) {
  6833.     }
  6834.     else {
  6835.      goto after_loop;
  6836.     }
  6837.     if (INT_is_odd_BOOL(i)) {
  6838.      r_815 = (c_INT_times_INT_INT_chk(r_815,x));
  6839.     }
  6840.     x = INT_square_INT(x);
  6841.     i = (c_INT_rshift_INT_INT(i,1));
  6842.    }
  6843.    after_loop: ;
  6844.  }
  6845.  return r_815;
  6846. }
  6847.  
  6848.  
  6849. INTI INTI_u_times_INT(INTI self, INTI x, INTI y) {
  6850.  INTI noname818;
  6851.  INT xl = ((INT) 0);
  6852.  INT yl = ((INT) 0);
  6853.  INT i = ((INT) 0);
  6854.  INT j = ((INT) 0);
  6855.  INT k = ((INT) 0);
  6856.  INT d = ((INT) 0);
  6857.  INT c_819 = ((INT) 0);
  6858.  INTI z;
  6859.  INTI local0;
  6860.  INT local1;
  6861.  xl = INT_abs_INT(x->len_37);
  6862.  yl = INT_abs_INT(y->len_37);
  6863.  i = (c_INT_plus_INT_INT_chk(xl,yl));
  6864.  local0 = ((INTI) sbi_arr_alloc_atomic(sizeof(struct INTI_struct), INTI_tag, sizeof(INT) , i));
  6865.  local0->asize = i;
  6866.  z = local0;
  6867.  while (1) {
  6868.   if ((i>0)) {
  6869.   }
  6870.   else {
  6871.    goto after_loop;
  6872.   }
  6873.   i = (c_INT_minus_INT_INT_chk(i,1));
  6874.   INTI_aset_INT_INT(z, i, 0);
  6875.  }
  6876.  after_loop: ;
  6877.  while (1) {
  6878.   if ((i<xl)) {
  6879.   }
  6880.   else {
  6881.    goto after_loop_821;
  6882.   }
  6883.   d = INTI_aget_INT_INT(x, i);
  6884.   if ((d!=0)) {
  6885.    j = 0;
  6886.    k = i;
  6887.    c_819 = 0;
  6888.    while (1) {
  6889.     if ((j<yl)) {
  6890.     }
  6891.     else {
  6892.      goto after_loop_823;
  6893.     }
  6894.     local1 = (c_INT_plus_INT_INT_chk(c_819,INTI_aget_INT_INT(z, k)));
  6895.     c_819 = (c_INT_plus_INT_INT_chk(local1,(c_INT_times_INT_INT_chk(d,INTI_aget_INT_INT(y, j)))));
  6896.     INTI_aset_INT_INT(z, k, (c_INT_mod_INT_INT_chk(c_819,shared_INTI_B)));
  6897.     c_819 = (c_INT_div_INT_INT_chk(c_819,shared_INTI_B));
  6898.     j = (c_INT_plus_INT_INT_chk(j,1));
  6899.     k = (c_INT_plus_INT_INT_chk(k,1));
  6900.    }
  6901.    after_loop_823: ;
  6902.    if ((c_819!=0)) {
  6903.     INTI_aset_INT_INT(z, k, c_819);
  6904.     k = (c_INT_plus_INT_INT_chk(k,1));
  6905.    }
  6906.   }
  6907.   i = (c_INT_plus_INT_INT_chk(i,1));
  6908.  }
  6909.  after_loop_821: ;
  6910.  z->len_37 = k;
  6911.  return z;
  6912. }
  6913.  
  6914.  
  6915. INTI INTI_times_INTI_INTI(INTI self, INTI y) {
  6916.  INTI noname825;
  6917.  INTI z = ((INTI) NULL);
  6918.  BOOL local0;
  6919.  BOOL local1;
  6920.  INT local2;
  6921.  INT local3;
  6922.  INTI local4;
  6923.  INT local5;
  6924.  INT local6;
  6925.  BOOL local7;
  6926.  if ((self->len_37==0)) {
  6927.   local0 = TRUE;
  6928.  } else {
  6929.   local0 = (y->len_37==0);
  6930.  }
  6931.  if (local0) {
  6932.   z = INTI_create_INT_INTI(((INTI) NULL), 0);
  6933.  }
  6934.  else {
  6935.   local2 = INT_abs_INT(self->len_37);
  6936.   if ((local2==1)) {
  6937.    local3 = INT_abs_INT(y->len_37);
  6938.    local1 = (local3==1);
  6939.   } else {
  6940.    local1 = FALSE;
  6941.   }
  6942.   if (local1) {
  6943.    local4 = ((INTI) NULL);
  6944.    local5 = INTI_aget_INT_INT(self, 0);
  6945.    z = INTI_create_INT_INTI(local4, (c_INT_times_INT_INT_chk(local5,INTI_aget_INT_INT(y, 0))));
  6946.   }
  6947.   else {
  6948.    local6 = INT_abs_INT(self->len_37);
  6949.    if ((local6<INT_abs_INT(y->len_37))) {
  6950.     z = INTI_u_times_INT(self, self, y);
  6951.    }
  6952.    else {
  6953.     z = INTI_u_times_INT(self, y, self);
  6954.    }
  6955.   }
  6956.  }
  6957.  local7 = (self->len_37<0);
  6958.  if (((local7)!=((y->len_37<0)))) {
  6959.   z->len_37 = INT_negate_INT(z->len_37);
  6960.  }
  6961.  return z;
  6962. }
  6963.  
  6964.  
  6965. INTI INTI_square_INTI(INTI self) {
  6966.  INTI noname826;
  6967.  return INTI_times_INTI_INTI(self, self);
  6968. }
  6969.  
  6970.  
  6971. INTI INTI_pow_INT_INTI(INTI self, INT i) {
  6972.  INTI noname827;
  6973.  INTI x;
  6974.  INTI z;
  6975.  x = self;
  6976.  z = INTI_create_INT_INTI(((INTI) NULL), 1);
  6977.  while (1) {
  6978.   if ((i>0)) {
  6979.   }
  6980.   else {
  6981.    goto after_loop;
  6982.   }
  6983.   if (INT_is_odd_BOOL(i)) {
  6984.    z = INTI_times_INTI_INTI(z, x);
  6985.   }
  6986.   x = INTI_square_INTI(x);
  6987.   i = (c_INT_div_INT_INT_chk(i,2));
  6988.  }
  6989.  after_loop: ;
  6990.  return z;
  6991. }
  6992.  
  6993.  
  6994. INTI INTI_copy_INTI(INTI self) {
  6995.  INTI noname829;
  6996.  INT i = ((INT) 0);
  6997.  INTI z;
  6998.  INTI local0;
  6999.  i = INT_abs_INT(self->len_37);
  7000.  local0 = ((INTI) sbi_arr_alloc_atomic(sizeof(struct INTI_struct), INTI_tag, sizeof(INT) , (c_INT_plus_INT_INT_chk(i,1))));
  7001.  local0->asize = (c_INT_plus_INT_INT_chk(i,1));
  7002.  z = local0;
  7003.  z->len_37 = self->len_37;
  7004.  while (1) {
  7005.   if ((i>0)) {
  7006.   }
  7007.   else {
  7008.    goto after_loop;
  7009.   }
  7010.   i = (c_INT_minus_INT_INT_chk(i,1));
  7011.   INTI_aset_INT_INT(z, i, INTI_aget_INT_INT(self, i));
  7012.  }
  7013.  after_loop: ;
  7014.  return z;
  7015. }
  7016.  
  7017.  
  7018. INTI INTI_negate_INTI(INTI self) {
  7019.  INTI noname831;
  7020.  INTI z;
  7021.  if ((self->len_37!=0)) {
  7022.   z = INTI_copy_INTI(self);
  7023.   z->len_37 = INT_negate_INT(self->len_37);
  7024.   return z;
  7025.  }
  7026.  return self;
  7027. }
  7028.  
  7029.  
  7030. INTI INTI_create_INT_INTI(INTI self, INT x) {
  7031.  INTI noname832;
  7032.  INTI z = ((INTI) NULL);
  7033.  INT a_833 = ((INT) 0);
  7034.  INT i = ((INT) 0);
  7035.  INTI local0;
  7036.  INTI local1;
  7037.  INT local2;
  7038.  INT local3;
  7039.  if ((x==INT_nil_INT(((INT) 0)))) {
  7040.   local0 = INTI_create_INT_INTI(((INTI) NULL), 2);
  7041.   z = INTI_negate_INTI(INTI_pow_INT_INTI(local0, (c_INT_minus_INT_INT_chk(shared_INT_asize,1))));
  7042.  }
  7043.  else {
  7044.   a_833 = INT_abs_INT(x);
  7045.   i = 0;
  7046.   local2 = INT_highest_bit_INT(a_833);
  7047.   local3 = (c_INT_div_INT_INT_chk(local2,shared_INTI_log2B));
  7048.   local1 = ((INTI) sbi_arr_alloc_atomic(sizeof(struct INTI_struct), INTI_tag, sizeof(INT) , (c_INT_plus_INT_INT_chk(local3,1))));
  7049.   local1->asize = (c_INT_plus_INT_INT_chk(local3,1));
  7050.   z = local1;
  7051.   while (1) {
  7052.    if ((a_833!=0)) {
  7053.    }
  7054.    else {
  7055.     goto after_loop;
  7056.    }
  7057.    INTI_aset_INT_INT(z, i, (c_INT_mod_INT_INT_chk(a_833,shared_INTI_B)));
  7058.    a_833 = (c_INT_div_INT_INT_chk(a_833,shared_INTI_B));
  7059.    i = (c_INT_plus_INT_INT_chk(i,1));
  7060.   }
  7061.   after_loop: ;
  7062.   if ((x<0)) {
  7063.    z->len_37 = INT_negate_INT(i);
  7064.   }
  7065.   else {
  7066.    z->len_37 = i;
  7067.   }
  7068.  }
  7069.  return z;
  7070. }
  7071.  
  7072.  
  7073. INT FSTR_length_INT(FSTR self) {
  7074.  INT noname835 = ((INT) 0);
  7075.  return FSTR_size_INT(self);
  7076.  if (!FSTR_invariant_BOOL(self)) {
  7077.   fprintf(stderr,"Failed invariant FSTR::invariant:BOOL ../Library/fstr.sa:73:9\n");
  7078.   exit(16);
  7079.  }
  7080. }
  7081.  
  7082.  
  7083. INT INTI_u_mod_INTI_(INTI self, INTI x, INT d) {
  7084.  INT noname836 = ((INT) 0);
  7085.  INT xl = ((INT) 0);
  7086.  INT i = ((INT) 0);
  7087.  INT c_837 = ((INT) 0);
  7088.  BOOL local0;
  7089.  INT local1;
  7090.  INT local2;
  7091.  if ((1<=d)) {
  7092.   local0 = (d<shared_INTI_B);
  7093.  } else {
  7094.   local0 = FALSE;
  7095.  }
  7096.  if (!(local0)) {
  7097.   fprintf(stderr,"Violation of precondition ../Library/inti.sa:188:16\n");
  7098.   exit(16);
  7099.  }
  7100.  xl = INT_abs_INT(x->len_37);
  7101.  i = xl;
  7102.  c_837 = 0;
  7103.  while (1) {
  7104.   if ((i>0)) {
  7105.   }
  7106.   else {
  7107.    goto after_loop;
  7108.   }
  7109.   i = (c_INT_minus_INT_INT_chk(i,1));
  7110.   local1 = (c_INT_times_INT_INT_chk(c_837,shared_INTI_B));
  7111.   c_837 = (c_INT_plus_INT_INT_chk(local1,INTI_aget_INT_INT(x, i)));
  7112.   INTI_aset_INT_INT(x, i, (c_INT_div_INT_INT_chk(c_837,d)));
  7113.   c_837 = (c_INT_mod_INT_INT_chk(c_837,d));
  7114.  }
  7115.  after_loop: ;
  7116.  local2 = INTI_aget_INT_INT(x, (c_INT_minus_INT_INT_chk(xl,1)));
  7117.  if ((local2==0)) {
  7118.   x->len_37 = (c_INT_minus_INT_INT_chk(xl,1));
  7119.  }
  7120.  return c_837;
  7121. }
  7122.  
  7123.  
  7124. FSTR INTI_str_in_FSTR(INTI self, FSTR s_839, INT n_840, INT b_841, CHAR f_842) {
  7125.  FSTR noname843;
  7126.  INTI x;
  7127.  INT i = ((INT) 0);
  7128.  INT j = ((INT) 0);
  7129.  CHAR ch = ((CHAR) 0);
  7130.  INT local0;
  7131.  if (!(INT_is_bet_INT_I(b_841, 2, 16))) {
  7132.   fprintf(stderr,"Violation of precondition ../Library/inti.sa:378:9\n");
  7133.   exit(16);
  7134.  }
  7135.  x = INTI_copy_INTI(self);
  7136.  i = FSTR_length_INT(s_839);
  7137.  while (1) {
  7138.   s_839 = FSTR_plus_CHAR_FSTR(s_839, INT_digit_char_CHAR(INTI_u_mod_INTI_(self, x, b_841)));
  7139.   n_840 = (c_INT_minus_INT_INT_chk(n_840,1));
  7140.   if ((x->len_37==0)) {
  7141.    goto after_loop;
  7142.   }
  7143.  }
  7144.  after_loop: ;
  7145.  if ((self->len_37<0)) {
  7146.   s_839 = FSTR_plus_CHAR_FSTR(s_839, '-');
  7147.   n_840 = (c_INT_minus_INT_INT_chk(n_840,1));
  7148.  }
  7149.  while (1) {
  7150.   if ((n_840>0)) {
  7151.   }
  7152.   else {
  7153.    goto after_loop_845;
  7154.   }
  7155.   s_839 = FSTR_plus_CHAR_FSTR(s_839, f_842);
  7156.   n_840 = (c_INT_minus_INT_INT_chk(n_840,1));
  7157.  }
  7158.  after_loop_845: ;
  7159.  local0 = FSTR_length_INT(s_839);
  7160.  j = (c_INT_minus_INT_INT_chk(local0,1));
  7161.  while (1) {
  7162.   if ((i<j)) {
  7163.   }
  7164.   else {
  7165.    goto after_loop_847;
  7166.   }
  7167.   ch = FSTR_aget_INT_CHAR(s_839, i);
  7168.   FSTR_aset_INT_CHAR(s_839, i, FSTR_aget_INT_CHAR(s_839, j));
  7169.   FSTR_aset_INT_CHAR(s_839, j, ch);
  7170.   i = (c_INT_plus_INT_INT_chk(i,1));
  7171.   j = (c_INT_minus_INT_INT_chk(j,1));
  7172.  }
  7173.  after_loop_847: ;
  7174.  return s_839;
  7175. }
  7176.  
  7177.  
  7178. FSTR INT_str_in_FSTR_(INT self, FSTR s_849, INT n_850, INT b_851, CHAR f_852) {
  7179.  FSTR noname853;
  7180.  INT x = ((INT) 0);
  7181.  INT i = ((INT) 0);
  7182.  INT j = ((INT) 0);
  7183.  CHAR ch = ((CHAR) 0);
  7184.  INTI local0;
  7185.  INTI local1;
  7186.  INT local2;
  7187.  if (!(INT_is_bet_INT_I(b_851, 2, 16))) {
  7188.   fprintf(stderr,"Violation of precondition ../Library/int.sa:220:9\n");
  7189.   exit(16);
  7190.  }
  7191.  if ((self==INT_nil_INT(self))) {
  7192.   local0 = ((INTI) NULL);
  7193.   local1 = INTI_create_INT_INTI(local0, INT_nil_INT(self));
  7194.   return INTI_str_in_FSTR(local1, s_849, n_850, b_851, f_852);
  7195.  }
  7196.  else {
  7197.   x = INT_abs_INT(self);
  7198.   i = FSTR_length_INT(s_849);
  7199.   while (1) {
  7200.    s_849 = FSTR_plus_CHAR_FSTR(s_849, INT_digit_char_CHAR((c_INT_mod_INT_INT_chk(x,b_851))));
  7201.    x = (c_INT_div_INT_INT_chk(x,b_851));
  7202.    n_850 = (c_INT_minus_INT_INT_chk(n_850,1));
  7203.    if ((x==0)) {
  7204.     goto after_loop;
  7205.    }
  7206.   }
  7207.   after_loop: ;
  7208.   if ((self<0)) {
  7209.    s_849 = FSTR_plus_CHAR_FSTR(s_849, '-');
  7210.    n_850 = (c_INT_minus_INT_INT_chk(n_850,1));
  7211.   }
  7212.   while (1) {
  7213.    if ((n_850>0)) {
  7214.    }
  7215.    else {
  7216.     goto after_loop_855;
  7217.    }
  7218.    s_849 = FSTR_plus_CHAR_FSTR(s_849, f_852);
  7219.    n_850 = (c_INT_minus_INT_INT_chk(n_850,1));
  7220.   }
  7221.   after_loop_855: ;
  7222.   local2 = FSTR_length_INT(s_849);
  7223.   j = (c_INT_minus_INT_INT_chk(local2,1));
  7224.   while (1) {
  7225.    if ((i<j)) {
  7226.    }
  7227.    else {
  7228.     goto after_loop_857;
  7229.    }
  7230.    ch = FSTR_aget_INT_CHAR(s_849, i);
  7231.    FSTR_aset_INT_CHAR(s_849, i, FSTR_aget_INT_CHAR(s_849, j));
  7232.    FSTR_aset_INT_CHAR(s_849, j, ch);
  7233.    i = (c_INT_plus_INT_INT_chk(i,1));
  7234.    j = (c_INT_minus_INT_INT_chk(j,1));
  7235.   }
  7236.   after_loop_857: ;
  7237.  }
  7238.  return s_849;
  7239. }
  7240.  
  7241.  
  7242. FSTR INT_str_in_FSTR_FSTR(INT self, FSTR s_859) {
  7243.  FSTR noname860;
  7244.  return INT_str_in_FSTR_(self, s_859, 0, 10, ' ');
  7245. }
  7246.  
  7247.  
  7248. STR STR_plus_INT_STR(STR self, INT i) {
  7249.  STR noname861;
  7250.  FSTR_clear(shared_STR_buf);
  7251.  if ((!((self==((STR) NULL))))) {
  7252.   STR_buf_FSTR(self, FSTR_plus_STR_FSTR(shared_STR_buf, self));
  7253.  }
  7254.  STR_buf_FSTR(self, INT_str_in_FSTR_FSTR(i, shared_STR_buf));
  7255.  return STR_from_fstr_FS(self, shared_STR_buf);
  7256. }
  7257.  
  7258.  
  7259. INT SFILE_ID_col_num(SFILE_ID self) {
  7260.  INT noname862 = ((INT) 0);
  7261.  return (c_INT_mod_INT_INT_chk(self.loc_17,shared_SFILE_ID_B));
  7262. }
  7263.  
  7264.  
  7265. STR SFILE_ID_str_STR(SFILE_ID self) {
  7266.  STR noname863;
  7267.  STR local0;
  7268.  STR local1;
  7269.  STR local2;
  7270.  STR local3;
  7271.  if ((self.loc_17==-1)) {
  7272.   return ((STR) &atunknownlocation);
  7273.  }
  7274.  local0 = SFILE_ID_file_in_STR(self);
  7275.  local1 = STR_plus_CHAR_STR(local0, ':');
  7276.  local2 = STR_plus_INT_STR(local1, SFILE_ID_line_nu(self));
  7277.  local3 = STR_plus_CHAR_STR(local2, ':');
  7278.  return STR_plus_INT_STR(local3, SFILE_ID_col_num(self));
  7279. }
  7280.  
  7281.  
  7282. OUT OUT_plus_STR_OUT(OUT self, STR s_864) {
  7283.  OUT noname865;
  7284.  INT local0;
  7285.  local0 = STR_size_INT(s_864);
  7286.  c_out_nstr(local0, ((s_864==NULL)?NULL:s_864->arr_part));
  7287.  return self;
  7288. }
  7289.  
  7290.  
  7291. void PROG_err_STR(PROG self, STR s_866) {
  7292.  OUT local0;
  7293.  OUT local1;
  7294.  OUT local2;
  7295.  OUT local3;
  7296.  self->err_seen = TRUE;
  7297.  if ((!((self->eloc.loc_17==(INT)0)))) {
  7298.   if (PROG_err_loc_old(self, self->eloc)) {
  7299.    return;
  7300.   }
  7301.  }
  7302.  if ((!((self->eloc.loc_17==(INT)0)))) {
  7303.   local0 = OUT_create_OUT(((OUT) NULL));
  7304.   local1 = OUT_plus_STR_OUT(local0, SFILE_ID_str_STR(self->eloc));
  7305.   OUT_plus_STR(local1, ((STR) &name_867));
  7306.  }
  7307.  local2 = OUT_create_OUT(((OUT) NULL));
  7308.  local3 = OUT_plus_STR_OUT(local2, s_866);
  7309.  OUT_plus_STR(local3, ((STR) &name_868));
  7310. }
  7311.  
  7312.  
  7313. BOOL FMAPSTRFSETSTR_i_869(FMAPSTRFSETSTR self) {
  7314.  BOOL noname870 = ((BOOL) 0);
  7315.  BOOL local0;
  7316.  if ((self==((FMAPSTRFSETSTR) NULL))) {
  7317.   local0 = TRUE;
  7318.  } else {
  7319.   local0 = (self->hsize==0);
  7320.  }
  7321.  return local0;
  7322.  if (!FMAPSTRFSETSTR_i(self)) {
  7323.   fprintf(stderr,"Failed invariant FMAP{STR,FSET{STR}}::invariant:BOOL ../Library/fmap.sa:254:11\n");
  7324.   exit(16);
  7325.  }
  7326. }
  7327.  
  7328.  
  7329. STR OPTIONS_mention_(OPTIONS self, STR name_871, STR s1, STR s2) {
  7330.  STR noname872;
  7331.  STR local0;
  7332.  STR local1;
  7333.  STR local2;
  7334.  if (STR_is_neq_STR_BOOL(s2, ((STR) &name_873))) {
  7335.   local0 = STR_plus_CHAR_STR(s1, '\n');
  7336.   local1 = STR_plus_STR_STR(local0, name_871);
  7337.   local2 = STR_plus_STR_STR(local1, ((STR) &name_874));
  7338.   return STR_plus_STR_STR(local2, s2);
  7339.  }
  7340.  return s1;
  7341. }
  7342.  
  7343.  
  7344. BOOL FMAPSTRSTR_is_em(FMAPSTRSTR self) {
  7345.  BOOL noname875 = ((BOOL) 0);
  7346.  BOOL local0;
  7347.  if ((self==((FMAPSTRSTR) NULL))) {
  7348.   local0 = TRUE;
  7349.  } else {
  7350.   local0 = (self->hsize==0);
  7351.  }
  7352.  return local0;
  7353.  if (!FMAPSTRSTR_invar(self)) {
  7354.   fprintf(stderr,"Failed invariant FMAP{STR,STR}::invariant:BOOL ../Library/fmap.sa:254:11\n");
  7355.   exit(16);
  7356.  }
  7357. }
  7358.  
  7359.  
  7360. STR OPTIONS_str_STR(OPTIONS self) {
  7361.  STR noname876;
  7362.  STR r_877 = ((STR) NULL);
  7363.  STR s_878 = ((STR) NULL);
  7364.  FSETSTR noname879;
  7365.  FSETSTR noname880;
  7366.  FSETSTR noname881;
  7367.  FLISTSTR noname882;
  7368.  FSETSTR noname883;
  7369.  FSETSTR noname884;
  7370.  FSETSTR noname885;
  7371.  FSETSTR noname886;
  7372.  FSETSTR noname887;
  7373.  FSETSTR noname888;
  7374.  FSETSTR noname889;
  7375.  FSETSTR noname890;
  7376.  FSETSTR noname891;
  7377.  FSETSTR noname892;
  7378.  FSETSTR noname893;
  7379.  FSETSTR noname894;
  7380.  FSETSTR noname895;
  7381.  FSETSTR noname896;
  7382.  FSETSTR noname897;
  7383.  FSETSTR noname898;
  7384.  FSETSTR noname899;
  7385.  FSETSTR noname900;
  7386.  FSETSTR noname901;
  7387.  FSETSTR noname902;
  7388.  FSETSTR noname903;
  7389.  FLISTSTR noname904;
  7390.  FMAPSTRFSETSTR noname905;
  7391.  TUPSTRFSETSTR p = TUPSTRFSETSTR_zero;
  7392.  FSETSTR noname906;
  7393.  STR noname907;
  7394.  FMAPSTRSTR noname908;
  7395.  TUPSTRSTR p_909 = TUPSTRSTR_zero;
  7396.  STR local0;
  7397.  STR local1;
  7398.  STR local2;
  7399.  STR local3;
  7400.  STR local4;
  7401.  STR local5;
  7402.  STR local6;
  7403.  STR local7;
  7404.  STR local8;
  7405.  STR local9;
  7406.  STR local10;
  7407.  STR local11;
  7408.  STR local12;
  7409.  STR local13;
  7410.  STR local14;
  7411.  STR local15;
  7412.  STR local16;
  7413.  STR local17;
  7414.  STR local18;
  7415.  STR local19;
  7416.  STR local20;
  7417.  STR local21;
  7418.  STR local22;
  7419.  STR local23;
  7420.  STR local24;
  7421.  STR local25;
  7422.  STR local26;
  7423.  STR local27;
  7424.  STR local28;
  7425.  STR local29;
  7426.  STR local30;
  7427.  STR local31;
  7428.  STR local32;
  7429.  STR local33;
  7430.  STR local34;
  7431.  STR local35;
  7432.  STR local36;
  7433.  STR local37;
  7434.  STR local38;
  7435.  STR local39;
  7436.  STR local40;
  7437.  STR local41;
  7438.  STR local42;
  7439.  STR local43;
  7440.  STR local44;
  7441.  STR local45;
  7442.  STR local46;
  7443.  STR local47;
  7444.  STR local48;
  7445.  STR local49;
  7446.  STR local50;
  7447.  STR local51;
  7448.  STR local52;
  7449.  TUPSTRFSETSTR local53;
  7450.  STR local54;
  7451.  STR local55;
  7452.  STR local56;
  7453.  STR local57;
  7454.  TUPSTRSTR local58;
  7455.  STR local59;
  7456.  STR local60;
  7457.  STR local61;
  7458.  r_877 = ((STR) &name_910);
  7459.  {
  7460.   struct FSETSTR_elt_STR_frame_struct temp911_0;
  7461.   FSETSTR_elt_STR_frame 
  7462.   noname912 = &temp911_0;
  7463.   noname912->state = 0;
  7464.   while (1) {
  7465.    local0 = STR_plus_CHAR_STR(r_877, ' ');
  7466.    if (noname912->state == 0) {
  7467.     noname879 = self->sather_files;
  7468.     noname912->arg0 = noname879;
  7469.    }
  7470.    local1 = FSETSTR_elt_STR(noname912);
  7471.    if (noname912->state == -1) goto after_loop;
  7472.    r_877 = STR_plus_STR_STR(local0, local1);
  7473.   }
  7474.  }
  7475.  after_loop: ;
  7476.  s_878 = OPTIONS_mention_(self, ((STR) &Satherfiles), ((STR) &name_913), r_877);
  7477.  r_877 = ((STR) &name_914);
  7478.  {
  7479.   struct FSETSTR_elt_STR_frame_struct temp916_0;
  7480.   FSETSTR_elt_STR_frame 
  7481.   noname917 = &temp916_0;
  7482.   noname917->state = 0;
  7483.   while (1) {
  7484.    local2 = STR_plus_CHAR_STR(r_877, ' ');
  7485.    if (noname917->state == 0) {
  7486.     noname880 = self->c_files;
  7487.     noname917->arg0 = noname880;
  7488.    }
  7489.    local3 = FSETSTR_elt_STR(noname917);
  7490.    if (noname917->state == -1) goto after_loop_915;
  7491.    r_877 = STR_plus_STR_STR(local2, local3);
  7492.   }
  7493.  }
  7494.  after_loop_915: ;
  7495.  s_878 = OPTIONS_mention_(self, ((STR) &Cfiles), s_878, r_877);
  7496.  r_877 = ((STR) &name_918);
  7497.  {
  7498.   struct FSETSTR_elt_STR_frame_struct temp920_0;
  7499.   FSETSTR_elt_STR_frame 
  7500.   noname921 = &temp920_0;
  7501.   noname921->state = 0;
  7502.   while (1) {
  7503.    local4 = STR_plus_CHAR_STR(r_877, ' ');
  7504.    if (noname921->state == 0) {
  7505.     noname881 = self->object_files;
  7506.     noname921->arg0 = noname881;
  7507.    }
  7508.    local5 = FSETSTR_elt_STR(noname921);
  7509.    if (noname921->state == -1) goto after_loop_919;
  7510.    r_877 = STR_plus_STR_STR(local4, local5);
  7511.   }
  7512.  }
  7513.  after_loop_919: ;
  7514.  s_878 = OPTIONS_mention_(self, ((STR) &objectfiles), s_878, r_877);
  7515.  r_877 = ((STR) &name_922);
  7516.  {
  7517.   struct FLISTSTR_elt_STR_frame_struct temp924_0;
  7518.   FLISTSTR_elt_STR_frame 
  7519.   noname925 = &temp924_0;
  7520.   noname925->state = 0;
  7521.   while (1) {
  7522.    local6 = STR_plus_CHAR_STR(r_877, ' ');
  7523.    if (noname925->state == 0) {
  7524.     noname882 = self->archive_files;
  7525.     noname925->arg0 = noname882;
  7526.    }
  7527.    local7 = FLISTSTR_elt_STR(noname925);
  7528.    if (noname925->state == -1) goto after_loop_923;
  7529.    r_877 = STR_plus_STR_STR(local6, local7);
  7530.   }
  7531.  }
  7532.  after_loop_923: ;
  7533.  s_878 = OPTIONS_mention_(self, ((STR) &archivefiles), s_878, r_877);
  7534.  s_878 = OPTIONS_mention_(self, ((STR) &Mainclass), s_878, self->main_class);
  7535.  s_878 = OPTIONS_mention_(self, ((STR) &Executable), s_878, self->executable_9);
  7536.  local8 = STR_plus_STR_STR(s_878, ((STR) &Homedirectory));
  7537.  s_878 = STR_plus_STR_STR(local8, self->home);
  7538.  if (self->gen_c) {
  7539.   s_878 = STR_plus_STR_STR(s_878, ((STR) &GenerateC));
  7540.  }
  7541.  if (self->pretty) {
  7542.   s_878 = STR_plus_STR_STR(s_878, ((STR) &PrettyC));
  7543.  }
  7544.  if (self->verbose) {
  7545.   s_878 = STR_plus_STR_STR(s_878, ((STR) &Verbose));
  7546.  }
  7547.  if (self->optimize) {
  7548.   s_878 = STR_plus_STR_STR(s_878, ((STR) &Optimize));
  7549.  }
  7550.  if (self->debug_11) {
  7551.   s_878 = STR_plus_STR_STR(s_878, ((STR) &Generatedebuggin));
  7552.  }
  7553.  if (self->psather) {
  7554.   s_878 = STR_plus_STR_STR(s_878, ((STR) &AcceptpSathercode));
  7555.  }
  7556.  if (self->deterministic_12) {
  7557.   s_878 = STR_plus_STR_STR(s_878, ((STR) &Generatedetermin));
  7558.  }
  7559.  if (self->only_parse) {
  7560.   s_878 = STR_plus_STR_STR(s_878, ((STR) &Stopafterparsing));
  7561.  }
  7562.  if (self->only_check) {
  7563.   s_878 = STR_plus_STR_STR(s_878, ((STR) &Dontgeneratecode));
  7564.  }
  7565.  if (self->only_C) {
  7566.   s_878 = STR_plus_STR_STR(s_878, ((STR) &DontcompileC));
  7567.  }
  7568.  if (self->only_reachable) {
  7569.   s_878 = STR_plus_STR_STR(s_878, ((STR) &Dontcheckunreach));
  7570.  }
  7571.  r_877 = ((STR) &name_926);
  7572.  if (self->pre_all) {
  7573.   r_877 = STR_plus_STR_STR(r_877, ((STR) &All_927));
  7574.  }
  7575.  else {
  7576.   {
  7577.    struct FSETSTR_elt_STR_frame_struct temp929_0;
  7578.    FSETSTR_elt_STR_frame 
  7579.    noname930 = &temp929_0;
  7580.    noname930->state = 0;
  7581.    while (1) {
  7582.     local9 = STR_plus_CHAR_STR(r_877, '+');
  7583.     if (noname930->state == 0) {
  7584.      noname883 = self->pre_in;
  7585.      noname930->arg0 = noname883;
  7586.     }
  7587.     local10 = FSETSTR_elt_STR(noname930);
  7588.     if (noname930->state == -1) goto after_loop_928;
  7589.     r_877 = STR_plus_STR_STR(local9, local10);
  7590.    }
  7591.   }
  7592.   after_loop_928: ;
  7593.  }
  7594.  {
  7595.   struct FSETSTR_elt_STR_frame_struct temp932_0;
  7596.   FSETSTR_elt_STR_frame 
  7597.   noname933 = &temp932_0;
  7598.   noname933->state = 0;
  7599.   while (1) {
  7600.    local11 = STR_plus_CHAR_STR(r_877, '-');
  7601.    if (noname933->state == 0) {
  7602.     noname884 = self->pre_out;
  7603.     noname933->arg0 = noname884;
  7604.    }
  7605.    local12 = FSETSTR_elt_STR(noname933);
  7606.    if (noname933->state == -1) goto after_loop_931;
  7607.    r_877 = STR_plus_STR_STR(local11, local12);
  7608.   }
  7609.  }
  7610.  after_loop_931: ;
  7611.  s_878 = OPTIONS_mention_(self, ((STR) &Preconditions), s_878, r_877);
  7612.  r_877 = ((STR) &name_934);
  7613.  if (self->post_all) {
  7614.   r_877 = STR_plus_STR_STR(r_877, ((STR) &All_935));
  7615.  }
  7616.  else {
  7617.   {
  7618.    struct FSETSTR_elt_STR_frame_struct temp937_0;
  7619.    FSETSTR_elt_STR_frame 
  7620.    noname938 = &temp937_0;
  7621.    noname938->state = 0;
  7622.    while (1) {
  7623.     local13 = STR_plus_CHAR_STR(r_877, '+');
  7624.     if (noname938->state == 0) {
  7625.      noname885 = self->post_in;
  7626.      noname938->arg0 = noname885;
  7627.     }
  7628.     local14 = FSETSTR_elt_STR(noname938);
  7629.     if (noname938->state == -1) goto after_loop_936;
  7630.     r_877 = STR_plus_STR_STR(local13, local14);
  7631.    }
  7632.   }
  7633.   after_loop_936: ;
  7634.  }
  7635.  {
  7636.   struct FSETSTR_elt_STR_frame_struct temp940_0;
  7637.   FSETSTR_elt_STR_frame 
  7638.   noname941 = &temp940_0;
  7639.   noname941->state = 0;
  7640.   while (1) {
  7641.    local15 = STR_plus_CHAR_STR(r_877, '-');
  7642.    if (noname941->state == 0) {
  7643.     noname886 = self->post_out;
  7644.     noname941->arg0 = noname886;
  7645.    }
  7646.    local16 = FSETSTR_elt_STR(noname941);
  7647.    if (noname941->state == -1) goto after_loop_939;
  7648.    r_877 = STR_plus_STR_STR(local15, local16);
  7649.   }
  7650.  }
  7651.  after_loop_939: ;
  7652.  s_878 = OPTIONS_mention_(self, ((STR) &Postconditions), s_878, r_877);
  7653.  r_877 = ((STR) &name_942);
  7654.  if (self->invariant_all) {
  7655.   r_877 = STR_plus_STR_STR(r_877, ((STR) &All_943));
  7656.  }
  7657.  else {
  7658.   {
  7659.    struct FSETSTR_elt_STR_frame_struct temp945_0;
  7660.    FSETSTR_elt_STR_frame 
  7661.    noname946 = &temp945_0;
  7662.    noname946->state = 0;
  7663.    while (1) {
  7664.     local17 = STR_plus_CHAR_STR(r_877, '+');
  7665.     if (noname946->state == 0) {
  7666.      noname887 = self->invariant_in;
  7667.      noname946->arg0 = noname887;
  7668.     }
  7669.     local18 = FSETSTR_elt_STR(noname946);
  7670.     if (noname946->state == -1) goto after_loop_944;
  7671.     r_877 = STR_plus_STR_STR(local17, local18);
  7672.    }
  7673.   }
  7674.   after_loop_944: ;
  7675.  }
  7676.  {
  7677.   struct FSETSTR_elt_STR_frame_struct temp948_0;
  7678.   FSETSTR_elt_STR_frame 
  7679.   noname949 = &temp948_0;
  7680.   noname949->state = 0;
  7681.   while (1) {
  7682.    local19 = STR_plus_CHAR_STR(r_877, '-');
  7683.    if (noname949->state == 0) {
  7684.     noname888 = self->invariant_out;
  7685.     noname949->arg0 = noname888;
  7686.    }
  7687.    local20 = FSETSTR_elt_STR(noname949);
  7688.    if (noname949->state == -1) goto after_loop_947;
  7689.    r_877 = STR_plus_STR_STR(local19, local20);
  7690.   }
  7691.  }
  7692.  after_loop_947: ;
  7693.  s_878 = OPTIONS_mention_(self, ((STR) &Invariants), s_878, r_877);
  7694.  r_877 = ((STR) &name_950);
  7695.  if (self->assert_all) {
  7696.   r_877 = STR_plus_STR_STR(r_877, ((STR) &All_951));
  7697.  }
  7698.  else {
  7699.   {
  7700.    struct FSETSTR_elt_STR_frame_struct temp953_0;
  7701.    FSETSTR_elt_STR_frame 
  7702.    noname954 = &temp953_0;
  7703.    noname954->state = 0;
  7704.    while (1) {
  7705.     local21 = STR_plus_CHAR_STR(r_877, '+');
  7706.     if (noname954->state == 0) {
  7707.      noname889 = self->assert_in;
  7708.      noname954->arg0 = noname889;
  7709.     }
  7710.     local22 = FSETSTR_elt_STR(noname954);
  7711.     if (noname954->state == -1) goto after_loop_952;
  7712.     r_877 = STR_plus_STR_STR(local21, local22);
  7713.    }
  7714.   }
  7715.   after_loop_952: ;
  7716.  }
  7717.  {
  7718.   struct FSETSTR_elt_STR_frame_struct temp956_0;
  7719.   FSETSTR_elt_STR_frame 
  7720.   noname957 = &temp956_0;
  7721.   noname957->state = 0;
  7722.   while (1) {
  7723.    local23 = STR_plus_CHAR_STR(r_877, '-');
  7724.    if (noname957->state == 0) {
  7725.     noname890 = self->assert_out;
  7726.     noname957->arg0 = noname890;
  7727.    }
  7728.    local24 = FSETSTR_elt_STR(noname957);
  7729.    if (noname957->state == -1) goto after_loop_955;
  7730.    r_877 = STR_plus_STR_STR(local23, local24);
  7731.   }
  7732.  }
  7733.  after_loop_955: ;
  7734.  s_878 = OPTIONS_mention_(self, ((STR) &Asserts), s_878, r_877);
  7735.  r_877 = ((STR) &name_958);
  7736.  if (self->void_all) {
  7737.   r_877 = STR_plus_STR_STR(r_877, ((STR) &All_959));
  7738.  }
  7739.  else {
  7740.   {
  7741.    struct FSETSTR_elt_STR_frame_struct temp961_0;
  7742.    FSETSTR_elt_STR_frame 
  7743.    noname962 = &temp961_0;
  7744.    noname962->state = 0;
  7745.    while (1) {
  7746.     local25 = STR_plus_CHAR_STR(r_877, '+');
  7747.     if (noname962->state == 0) {
  7748.      noname891 = self->void_in;
  7749.      noname962->arg0 = noname891;
  7750.     }
  7751.     local26 = FSETSTR_elt_STR(noname962);
  7752.     if (noname962->state == -1) goto after_loop_960;
  7753.     r_877 = STR_plus_STR_STR(local25, local26);
  7754.    }
  7755.   }
  7756.   after_loop_960: ;
  7757.  }
  7758.  {
  7759.   struct FSETSTR_elt_STR_frame_struct temp964_0;
  7760.   FSETSTR_elt_STR_frame 
  7761.   noname965 = &temp964_0;
  7762.   noname965->state = 0;
  7763.   while (1) {
  7764.    local27 = STR_plus_CHAR_STR(r_877, '-');
  7765.    if (noname965->state == 0) {
  7766.     noname892 = self->void_out;
  7767.     noname965->arg0 = noname892;
  7768.    }
  7769.    local28 = FSETSTR_elt_STR(noname965);
  7770.    if (noname965->state == -1) goto after_loop_963;
  7771.    r_877 = STR_plus_STR_STR(local27, local28);
  7772.   }
  7773.  }
  7774.  after_loop_963: ;
  7775.  s_878 = OPTIONS_mention_(self, ((STR) &Voidchecks), s_878, r_877);
  7776.  r_877 = ((STR) &name_966);
  7777.  if (self->when_all) {
  7778.   r_877 = STR_plus_STR_STR(r_877, ((STR) &All_967));
  7779.  }
  7780.  else {
  7781.   {
  7782.    struct FSETSTR_elt_STR_frame_struct temp969_0;
  7783.    FSETSTR_elt_STR_frame 
  7784.    noname970 = &temp969_0;
  7785.    noname970->state = 0;
  7786.    while (1) {
  7787.     local29 = STR_plus_CHAR_STR(r_877, '+');
  7788.     if (noname970->state == 0) {
  7789.      noname893 = self->when_in;
  7790.      noname970->arg0 = noname893;
  7791.     }
  7792.     local30 = FSETSTR_elt_STR(noname970);
  7793.     if (noname970->state == -1) goto after_loop_968;
  7794.     r_877 = STR_plus_STR_STR(local29, local30);
  7795.    }
  7796.   }
  7797.   after_loop_968: ;
  7798.  }
  7799.  {
  7800.   struct FSETSTR_elt_STR_frame_struct temp972_0;
  7801.   FSETSTR_elt_STR_frame 
  7802.   noname973 = &temp972_0;
  7803.   noname973->state = 0;
  7804.   while (1) {
  7805.    local31 = STR_plus_CHAR_STR(r_877, '-');
  7806.    if (noname973->state == 0) {
  7807.     noname894 = self->when_out;
  7808.     noname973->arg0 = noname894;
  7809.    }
  7810.    local32 = FSETSTR_elt_STR(noname973);
  7811.    if (noname973->state == -1) goto after_loop_971;
  7812.    r_877 = STR_plus_STR_STR(local31, local32);
  7813.   }
  7814.  }
  7815.  after_loop_971: ;
  7816.  s_878 = OPTIONS_mention_(self, ((STR) &Whenclause), s_878, r_877);
  7817.  r_877 = ((STR) &name_974);
  7818.  if (self->bounds_all) {
  7819.   r_877 = STR_plus_STR_STR(r_877, ((STR) &All_975));
  7820.  }
  7821.  else {
  7822.   {
  7823.    struct FSETSTR_elt_STR_frame_struct temp977_0;
  7824.    FSETSTR_elt_STR_frame 
  7825.    noname978 = &temp977_0;
  7826.    noname978->state = 0;
  7827.    while (1) {
  7828.     local33 = STR_plus_CHAR_STR(r_877, '+');
  7829.     if (noname978->state == 0) {
  7830.      noname895 = self->bounds_in;
  7831.      noname978->arg0 = noname895;
  7832.     }
  7833.     local34 = FSETSTR_elt_STR(noname978);
  7834.     if (noname978->state == -1) goto after_loop_976;
  7835.     r_877 = STR_plus_STR_STR(local33, local34);
  7836.    }
  7837.   }
  7838.   after_loop_976: ;
  7839.  }
  7840.  {
  7841.   struct FSETSTR_elt_STR_frame_struct temp980_0;
  7842.   FSETSTR_elt_STR_frame 
  7843.   noname981 = &temp980_0;
  7844.   noname981->state = 0;
  7845.   while (1) {
  7846.    local35 = STR_plus_CHAR_STR(r_877, '-');
  7847.    if (noname981->state == 0) {
  7848.     noname896 = self->bounds_out;
  7849.     noname981->arg0 = noname896;
  7850.    }
  7851.    local36 = FSETSTR_elt_STR(noname981);
  7852.    if (noname981->state == -1) goto after_loop_979;
  7853.    r_877 = STR_plus_STR_STR(local35, local36);
  7854.   }
  7855.  }
  7856.  after_loop_979: ;
  7857.  s_878 = OPTIONS_mention_(self, ((STR) &Bounds), s_878, r_877);
  7858.  r_877 = ((STR) &name_982);
  7859.  if (self->destroy_all) {
  7860.   r_877 = STR_plus_STR_STR(r_877, ((STR) &All_983));
  7861.  }
  7862.  else {
  7863.   {
  7864.    struct FSETSTR_elt_STR_frame_struct temp985_0;
  7865.    FSETSTR_elt_STR_frame 
  7866.    noname986 = &temp985_0;
  7867.    noname986->state = 0;
  7868.    while (1) {
  7869.     local37 = STR_plus_CHAR_STR(r_877, '+');
  7870.     if (noname986->state == 0) {
  7871.      noname897 = self->destroy_in;
  7872.      noname986->arg0 = noname897;
  7873.     }
  7874.     local38 = FSETSTR_elt_STR(noname986);
  7875.     if (noname986->state == -1) goto after_loop_984;
  7876.     r_877 = STR_plus_STR_STR(local37, local38);
  7877.    }
  7878.   }
  7879.   after_loop_984: ;
  7880.  }
  7881.  {
  7882.   struct FSETSTR_elt_STR_frame_struct temp988_0;
  7883.   FSETSTR_elt_STR_frame 
  7884.   noname989 = &temp988_0;
  7885.   noname989->state = 0;
  7886.   while (1) {
  7887.    local39 = STR_plus_CHAR_STR(r_877, '-');
  7888.    if (noname989->state == 0) {
  7889.     noname898 = self->destroy_out;
  7890.     noname989->arg0 = noname898;
  7891.    }
  7892.    local40 = FSETSTR_elt_STR(noname989);
  7893.    if (noname989->state == -1) goto after_loop_987;
  7894.    r_877 = STR_plus_STR_STR(local39, local40);
  7895.   }
  7896.  }
  7897.  after_loop_987: ;
  7898.  s_878 = OPTIONS_mention_(self, ((STR) &Destroy), s_878, r_877);
  7899.  r_877 = ((STR) &name_990);
  7900.  if (self->arith_all) {
  7901.   r_877 = STR_plus_STR_STR(r_877, ((STR) &All_991));
  7902.  }
  7903.  else {
  7904.   {
  7905.    struct FSETSTR_elt_STR_frame_struct temp993_0;
  7906.    FSETSTR_elt_STR_frame 
  7907.    noname994 = &temp993_0;
  7908.    noname994->state = 0;
  7909.    while (1) {
  7910.     local41 = STR_plus_CHAR_STR(r_877, '+');
  7911.     if (noname994->state == 0) {
  7912.      noname899 = self->arith_in;
  7913.      noname994->arg0 = noname899;
  7914.     }
  7915.     local42 = FSETSTR_elt_STR(noname994);
  7916.     if (noname994->state == -1) goto after_loop_992;
  7917.     r_877 = STR_plus_STR_STR(local41, local42);
  7918.    }
  7919.   }
  7920.   after_loop_992: ;
  7921.  }
  7922.  {
  7923.   struct FSETSTR_elt_STR_frame_struct temp996_0;
  7924.   FSETSTR_elt_STR_frame 
  7925.   noname997 = &temp996_0;
  7926.   noname997->state = 0;
  7927.   while (1) {
  7928.    local43 = STR_plus_CHAR_STR(r_877, '-');
  7929.    if (noname997->state == 0) {
  7930.     noname900 = self->arith_out;
  7931.     noname997->arg0 = noname900;
  7932.    }
  7933.    local44 = FSETSTR_elt_STR(noname997);
  7934.    if (noname997->state == -1) goto after_loop_995;
  7935.    r_877 = STR_plus_STR_STR(local43, local44);
  7936.   }
  7937.  }
  7938.  after_loop_995: ;
  7939.  s_878 = OPTIONS_mention_(self, ((STR) &Arith), s_878, r_877);
  7940.  r_877 = ((STR) &name_998);
  7941.  if (self->return_all) {
  7942.   r_877 = STR_plus_STR_STR(r_877, ((STR) &All_999));
  7943.  }
  7944.  else {
  7945.   {
  7946.    struct FSETSTR_elt_STR_frame_struct temp1001_0;
  7947.    FSETSTR_elt_STR_frame 
  7948.    noname1002 = &temp1001_0;
  7949.    noname1002->state = 0;
  7950.    while (1) {
  7951.     local45 = STR_plus_CHAR_STR(r_877, '+');
  7952.     if (noname1002->state == 0) {
  7953.      noname901 = self->return_in;
  7954.      noname1002->arg0 = noname901;
  7955.     }
  7956.     local46 = FSETSTR_elt_STR(noname1002);
  7957.     if (noname1002->state == -1) goto after_loop_1000;
  7958.     r_877 = STR_plus_STR_STR(local45, local46);
  7959.    }
  7960.   }
  7961.   after_loop_1000: ;
  7962.  }
  7963.  {
  7964.   struct FSETSTR_elt_STR_frame_struct temp1004_0;
  7965.   FSETSTR_elt_STR_frame 
  7966.   noname1005 = &temp1004_0;
  7967.   noname1005->state = 0;
  7968.   while (1) {
  7969.    local47 = STR_plus_CHAR_STR(r_877, '-');
  7970.    if (noname1005->state == 0) {
  7971.     noname902 = self->return_out;
  7972.     noname1005->arg0 = noname902;
  7973.    }
  7974.    local48 = FSETSTR_elt_STR(noname1005);
  7975.    if (noname1005->state == -1) goto after_loop_1003;
  7976.    r_877 = STR_plus_STR_STR(local47, local48);
  7977.   }
  7978.  }
  7979.  after_loop_1003: ;
  7980.  s_878 = OPTIONS_mention_(self, ((STR) &Return), s_878, r_877);
  7981.  r_877 = ((STR) &name_1006);
  7982.  if (self->force_all) {
  7983.   r_877 = STR_plus_STR_STR(r_877, ((STR) &All_1007));
  7984.  }
  7985.  else {
  7986.   if ((!(FSETSTR_is_empty(self->force_routines)))) {
  7987.    {
  7988.     struct FSETSTR_elt_STR_frame_struct temp1009_0;
  7989.     FSETSTR_elt_STR_frame 
  7990.     noname1010 = &temp1009_0;
  7991.     noname1010->state = 0;
  7992.     while (1) {
  7993.      local49 = STR_plus_CHAR_STR(r_877, ' ');
  7994.      if (noname1010->state == 0) {
  7995.       noname903 = self->force_routines;
  7996.       noname1010->arg0 = noname903;
  7997.      }
  7998.      local50 = FSETSTR_elt_STR(noname1010);
  7999.      if (noname1010->state == -1) goto after_loop_1008;
  8000.      r_877 = STR_plus_STR_STR(local49, local50);
  8001.     }
  8002.    }
  8003.    after_loop_1008: ;
  8004.   }
  8005.  }
  8006.  s_878 = OPTIONS_mention_(self, ((STR) &Forcedroutines), s_878, r_877);
  8007.  r_877 = ((STR) &name_1011);
  8008.  if ((!(FLISTSTR_is_empt(self->c_flags)))) {
  8009.   {
  8010.    struct FLISTSTR_elt_STR_frame_struct temp1013_0;
  8011.    FLISTSTR_elt_STR_frame 
  8012.    noname1014 = &temp1013_0;
  8013.    noname1014->state = 0;
  8014.    while (1) {
  8015.     local51 = STR_plus_CHAR_STR(r_877, ' ');
  8016.     if (noname1014->state == 0) {
  8017.      noname904 = self->c_flags;
  8018.      noname1014->arg0 = noname904;
  8019.     }
  8020.     local52 = FLISTSTR_elt_STR(noname1014);
  8021.     if (noname1014->state == -1) goto after_loop_1012;
  8022.     r_877 = STR_plus_STR_STR(local51, local52);
  8023.    }
  8024.   }
  8025.   after_loop_1012: ;
  8026.  }
  8027.  s_878 = OPTIONS_mention_(self, ((STR) &Cflags), s_878, r_877);
  8028.  if ((!(FMAPSTRFSETSTR_i_869(self->externals)))) {
  8029.   s_878 = STR_plus_STR_STR(s_878, ((STR) &Externals));
  8030.   {
  8031.    struct FMAPSTRFSETSTR_p_frame_struct temp1016_0;
  8032.    FMAPSTRFSETSTR_p_frame 
  8033.    noname1017 = &temp1016_0;
  8034.    noname1017->state = 0;
  8035.    while (1) {
  8036.     if (noname1017->state == 0) {
  8037.      noname905 = self->externals;
  8038.      noname1017->arg0 = noname905;
  8039.     }
  8040.     local53 = FMAPSTRFSETSTR_p(noname1017);
  8041.     if (noname1017->state == -1) goto after_loop_1015;
  8042.     p = local53;
  8043.     local54 = STR_plus_STR_STR(s_878, ((STR) &name_1018));
  8044.     local55 = STR_plus_STR_STR(local54, p.t1);
  8045.     s_878 = STR_plus_STR_STR(local55, ((STR) &name_1019));
  8046.     {
  8047.      struct FSETSTR_elt_STR_frame_struct temp1021_0;
  8048.      FSETSTR_elt_STR_frame 
  8049.      noname1022 = &temp1021_0;
  8050.      struct STR_separate_STR_STR_frame_struct temp1021_1;
  8051.      STR_separate_STR_STR_frame 
  8052.      noname1023 = &temp1021_1;
  8053.      noname1022->state = 0;
  8054.      noname1023->state = 0;
  8055.      while (1) {
  8056.       if (noname1023->state == 0) {
  8057.        noname907 = ((STR) &name_1024);
  8058.        noname1023->arg0 = noname907;
  8059.       }
  8060.       if (noname1022->state == 0) {
  8061.        noname906 = p.t2;
  8062.        noname1022->arg0 = noname906;
  8063.       }
  8064.       local57 = FSETSTR_elt_STR(noname1022);
  8065.       if (noname1022->state == -1) goto after_loop_1020;
  8066.       noname1023->arg1 = local57;
  8067.       local56 = STR_separate_STR_STR(noname1023);
  8068.       if (noname1023->state == -1) goto after_loop_1020;
  8069.       r_877 = STR_plus_STR_STR(r_877, local56);
  8070.      }
  8071.     }
  8072.     after_loop_1020: ;
  8073.     s_878 = STR_plus_STR_STR(s_878, ((STR) &name_1025));
  8074.    }
  8075.   }
  8076.   after_loop_1015: ;
  8077.  }
  8078.  if ((!(FMAPSTRSTR_is_em(self->has_13)))) {
  8079.   s_878 = STR_plus_STR_STR(s_878, ((STR) &Has));
  8080.   {
  8081.    struct FMAPSTRSTR_pairs_frame_struct temp1027_0;
  8082.    FMAPSTRSTR_pairs_frame 
  8083.    noname1028 = &temp1027_0;
  8084.    noname1028->state = 0;
  8085.    while (1) {
  8086.     if (noname1028->state == 0) {
  8087.      noname908 = self->has_13;
  8088.      noname1028->arg0 = noname908;
  8089.     }
  8090.     local58 = FMAPSTRSTR_pairs(noname1028);
  8091.     if (noname1028->state == -1) goto after_loop_1026;
  8092.     p_909 = local58;
  8093.     local59 = STR_plus_STR_STR(s_878, ((STR) &name_1029));
  8094.     local60 = STR_plus_STR_STR(local59, p_909.t1);
  8095.     local61 = STR_plus_STR_STR(local60, ((STR) &in));
  8096.     s_878 = STR_plus_STR_STR(local61, p_909.t2);
  8097.    }
  8098.   }
  8099.   after_loop_1026: ;
  8100.   s_878 = STR_plus_STR_STR(s_878, ((STR) &name_1030));
  8101.  }
  8102.  return s_878;
  8103. }
  8104.  
  8105.  
  8106. FMAPOBSTR FMAPOBSTR_create(FMAPOBSTR self) {
  8107.  FMAPOBSTR noname1031;
  8108.  return ((FMAPOBSTR) NULL);
  8109.  if (!FMAPOBSTR_invari(self)) {
  8110.   fprintf(stderr,"Failed invariant FMAP{$OB,STR}::invariant:BOOL ../Library/fmap.sa:79:9\n");
  8111.   exit(16);
  8112.  }
  8113. }
  8114.  
  8115.  
  8116. FMAPSTRSTR FMAPSTRSTR_creat(FMAPSTRSTR self) {
  8117.  FMAPSTRSTR noname1032;
  8118.  return ((FMAPSTRSTR) NULL);
  8119.  if (!FMAPSTRSTR_invar(self)) {
  8120.   fprintf(stderr,"Failed invariant FMAP{STR,STR}::invariant:BOOL ../Library/fmap.sa:79:9\n");
  8121.   exit(16);
  8122.  }
  8123. }
  8124.  
  8125.  
  8126. FMAPSTRTUPSTRSTR FMAPSTRTUPSTRSTR_1033(FMAPSTRTUPSTRSTR self) {
  8127.  FMAPSTRTUPSTRSTR noname1034;
  8128.  return ((FMAPSTRTUPSTRSTR) NULL);
  8129.  if (!FMAPSTRTUPSTRSTR_1035(self)) {
  8130.   fprintf(stderr,"Failed invariant FMAP{STR,TUP{STR,STR}}::invariant:BOOL ../Library/fmap.sa:79:9\n");
  8131.   exit(16);
  8132.  }
  8133. }
  8134.  
  8135.  
  8136. FMAPSTRITER_INLINE FMAPSTRITER_INLI(FMAPSTRITER_INLINE self) {
  8137.  FMAPSTRITER_INLINE noname1036;
  8138.  return ((FMAPSTRITER_INLINE) NULL);
  8139.  if (!FMAPSTRITER_INLI_1037(self)) {
  8140.   fprintf(stderr,"Failed invariant FMAP{STR,ITER_INLINE}::invariant:BOOL ../Library/fmap.sa:79:9\n");
  8141.   exit(16);
  8142.  }
  8143. }
  8144.  
  8145.  
  8146. FSETTP FSETTP_create_FSETTP(FSETTP self) {
  8147.  FSETTP noname1038;
  8148.  return ((FSETTP) NULL);
  8149.  if (!FSETTP_invariant(self)) {
  8150.   fprintf(stderr,"Failed invariant FSET{$TP}::invariant:BOOL ../Library/fset.sa:73:9\n");
  8151.   exit(16);
  8152.  }
  8153. }
  8154.  
  8155.  
  8156. FLISTAM_ROUT_DEF FLISTAM_ROUT_DEF_1039(FLISTAM_ROUT_DEF self) {
  8157.  FLISTAM_ROUT_DEF noname1040;
  8158.  return ((FLISTAM_ROUT_DEF) NULL);
  8159.  if (!FLISTAM_ROUT_DEF_1041(self)) {
  8160.   fprintf(stderr,"Failed invariant FLIST{AM_ROUT_DEF}::invariant:BOOL ../Library/flist.sa:55:9\n");
  8161.   exit(16);
  8162.  }
  8163. }
  8164.  
  8165.  
  8166. FLISTAM_BND_CREA FLISTAM_BND_CREA_1042(FLISTAM_BND_CREA self) {
  8167.  FLISTAM_BND_CREA noname1043;
  8168.  return ((FLISTAM_BND_CREA) NULL);
  8169.  if (!FLISTAM_BND_CREA_1044(self)) {
  8170.   fprintf(stderr,"Failed invariant FLIST{AM_BND_CREATE_EXPR}::invariant:BOOL ../Library/flist.sa:55:9\n");
  8171.   exit(16);
  8172.  }
  8173. }
  8174.  
  8175.  
  8176. FMAPSIGAM_ROUT_DEF FMAPSIGAM_ROUT_D(FMAPSIGAM_ROUT_DEF self) {
  8177.  FMAPSIGAM_ROUT_DEF noname1045;
  8178.  return ((FMAPSIGAM_ROUT_DEF) NULL);
  8179.  if (!FMAPSIGAM_ROUT_D_1046(self)) {
  8180.   fprintf(stderr,"Failed invariant FMAP{SIG,AM_ROUT_DEF}::invariant:BOOL ../Library/fmap.sa:79:9\n");
  8181.   exit(16);
  8182.  }
  8183. }
  8184.  
  8185.  
  8186. void BE_forbid_STR(BE self, STR s_1047) {
  8187.  self->forbidden = FSETSTR_insert_S(self->forbidden, s_1047);
  8188. }
  8189.  
  8190.  
  8191. void BE_insert_forbid(BE self) {
  8192.  BE_LEX l;
  8193.  BE_LEX noname1048;
  8194.  BE_LEX local0;
  8195.  STR local1;
  8196.  local0 = ((BE_LEX) NULL);
  8197.  l = BE_LEX_create_ST(local0, STR_plus_STR_STR(self->prog->options_55->home, ((STR) &SystemFORBID)));
  8198.  {
  8199.   struct BE_LEX_elt_STR_frame_struct temp1049_0;
  8200.   BE_LEX_elt_STR_frame 
  8201.   noname1050 = &temp1049_0;
  8202.   noname1050->state = 0;
  8203.   while (1) {
  8204.    if (noname1050->state == 0) {
  8205.     noname1048 = l;
  8206.     noname1050->arg0 = noname1048;
  8207.    }
  8208.    local1 = BE_LEX_elt_STR(noname1050);
  8209.    if (noname1050->state == -1) goto after_loop;
  8210.    BE_forbid_STR(self, local1);
  8211.   }
  8212.  }
  8213.  after_loop: ;
  8214. }
  8215.  
  8216.  
  8217. void PROG_err_loc_PRO(PROG self, PROG_ERR t_1051) {
  8218.  PROG_ERR local0;
  8219.  if ((t_1051==((PROG_ERR) NULL))) {
  8220.   self->eloc = SFILE_ID_zero;
  8221.   return;
  8222.  }
  8223.  local0 = t_1051;
  8224.  self->eloc = (*PROG_ERR_source_[local0->header.tag+PROG_ERR_source__offset])(local0);
  8225. }
  8226.  
  8227.  
  8228. void BE_barf_at_STR_P(BE self, STR msg_1052, PROG_ERR at_1053) {
  8229.  PROG local0;
  8230.  PROG_err_loc_PRO(self->prog, at_1053);
  8231.  local0 = self->prog;
  8232.  PROG_err_STR(local0, STR_plus_STR_STR(((STR) &Internalcompiler), msg_1052));
  8233.  UNIX_exit_INT(((UNIX) NULL), 1);
  8234. }
  8235.  
  8236.  
  8237. void BE_barf_STR(BE self, STR msg_1054) {
  8238.  BE_barf_at_STR_P(self, msg_1054, ((PROG_ERR) NULL));
  8239. }
  8240.  
  8241.  
  8242. STR FMAPSTRTUPSTRSTR_1055(FMAPSTRTUPSTRSTR self) {
  8243.  STR noname1056;
  8244.  STR k = ((STR) NULL);
  8245.  return ((STR) NULL);
  8246.  if (!FMAPSTRTUPSTRSTR_1035(self)) {
  8247.   fprintf(stderr,"Failed invariant FMAP{STR,TUP{STR,STR}}::invariant:BOOL ../Library/fmap.sa:54:10\n");
  8248.   exit(16);
  8249.  }
  8250. }
  8251.  
  8252.  
  8253. TUPSTRTUPSTRSTR TUPSTRTUPSTRSTR_(TUPSTRTUPSTRSTR self, STR t1_1057) {
  8254.  TUPSTRTUPSTRSTR local0;
  8255.  local0 = self;
  8256.  local0.t1 = t1_1057;
  8257.  return local0;
  8258. }
  8259.