예제 #1
0
static long Cyc_Callgraph_visit_cg_f1(struct _tuple11 * env,struct Cyc_Absyn_Exp * e) {
  struct Cyc_Absyn_Exp * _T0;
  int * _T1;
  int _T2;
  struct Cyc_Absyn_Var_e_Absyn_Raw_exp_struct * _T3;
  void * _T4;
  int * _T5;
  unsigned int _T6;
  void * _T7;
  struct Cyc_Absyn_Fndecl * _T8;
  void * _T9;
  struct Cyc_Absyn_Vardecl * _TA;
  struct _tuple11 * _TB;
  struct _handler_cons * _TC;
  int _TD;
  struct Cyc_Set_Set * (* _TE)(struct Cyc_Set_Set *,struct Cyc_Absyn_Fndecl *);
  struct Cyc_Set_Set * (* _TF)(struct Cyc_Set_Set *,void *);
  struct Cyc_Set_Set * _T10;
  struct Cyc_Absyn_Fndecl * (* _T11)(struct Cyc_Hashtable_Table *,struct _tuple0 *);
  void * (* _T12)(struct Cyc_Hashtable_Table *,void *);
  struct Cyc_Absyn_Fndecl * _T13;
  struct _tuple11 * _T14;
  struct _tuple11 _T15;
  void * _T16;
  struct Cyc_Core_Not_found_exn_struct * _T17;
  char * _T18;
  char * _T19;
  struct _tuple0 * name;
  _T0 = e;
  { void * _T1A = _T0->r;
    struct Cyc_Absyn_Vardecl * _T1B;
    struct Cyc_Absyn_Fndecl * _T1C;
    _T1 = (int *)_T1A;
    _T2 = *_T1;
    if (_T2 != 1) { goto _TL0;
    }
    _T3 = (struct Cyc_Absyn_Var_e_Absyn_Raw_exp_struct *)_T1A;
    _T4 = _T3->f1;
    _T5 = (int *)_T4;
    _T6 = *_T5;
    switch (_T6) {
    case 2: 
      { struct Cyc_Absyn_Var_e_Absyn_Raw_exp_struct * _T1D = (struct Cyc_Absyn_Var_e_Absyn_Raw_exp_struct *)_T1A;
	_T7 = _T1D->f1;
	{ struct Cyc_Absyn_Funname_b_Absyn_Binding_struct * _T1E = (struct Cyc_Absyn_Funname_b_Absyn_Binding_struct *)_T7;
	  _T1C = _T1E->f1;
	}
      }{ struct Cyc_Absyn_Fndecl * fd = _T1C;
	_T8 = fd;
	name = _T8->name;
	goto _LL0;
      }
    case 1: 
      { struct Cyc_Absyn_Var_e_Absyn_Raw_exp_struct * _T1D = (struct Cyc_Absyn_Var_e_Absyn_Raw_exp_struct *)_T1A;
	_T9 = _T1D->f1;
	{ struct Cyc_Absyn_Global_b_Absyn_Binding_struct * _T1E = (struct Cyc_Absyn_Global_b_Absyn_Binding_struct *)_T9;
	  _T1B = _T1E->f1;
	}
      }{ struct Cyc_Absyn_Vardecl * vd = _T1B;
	_TA = vd;
	name = _TA->name;
	goto _LL0;
      }
    default: 
      goto _LL5;
    }
    goto _TL1;
    _TL0: _LL5: return 1;
    _TL1: _LL0: ;
  }{ struct Cyc_Set_Set * _T1A;
    struct Cyc_Hashtable_Table * _T1B;
    _TB = env;
    { struct _tuple11 _T1C = *_TB;
      _T1B = _T1C.f0;
      _T1A = _T1C.f1;
    }{ struct Cyc_Hashtable_Table * fds = _T1B;
      struct Cyc_Set_Set * s = _T1A;
      { struct _handler_cons _T1C;
	_TC = &_T1C;
	_push_handler(_TC);
	{ int _T1D = 0;
	  _TD = setjmp(_T1C.handler);
	  if (! _TD) { goto _TL3;
	  }
	  _T1D = 1;
	  goto _TL4;
	  _TL3: _TL4: if (_T1D) { goto _TL5;
	  }else { goto _TL7;
	  }
	  _TL7: _TF = Cyc_Set_insert;
	  { struct Cyc_Set_Set * (* _T1E)(struct Cyc_Set_Set *,struct Cyc_Absyn_Fndecl *) = (struct Cyc_Set_Set * (*)(struct Cyc_Set_Set *,
														      struct Cyc_Absyn_Fndecl *))_TF;
	    _TE = _T1E;
	  }_T10 = s;
	  _T12 = Cyc_Hashtable_lookup;
	  { struct Cyc_Absyn_Fndecl * (* _T1E)(struct Cyc_Hashtable_Table *,
					       struct _tuple0 *) = (struct Cyc_Absyn_Fndecl * (*)(struct Cyc_Hashtable_Table *,
												  struct _tuple0 *))_T12;
	    _T11 = _T1E;
	  }_T13 = _T11(fds,name);
	  s = _TE(_T10,_T13);
	  _T14 = env;
	  { struct _tuple11 _T1E;
	    _T1E.f0 = fds;
	    _T1E.f1 = s;
	    _T15 = _T1E;
	  }*_T14 = _T15;
	  _pop_handler();
	  goto _TL6;
	  _TL5: _T16 = Cyc_Core_get_exn_thrown();
	  { void * _T1E = (void *)_T16;
	    void * _T1F;
	    _T17 = (struct Cyc_Core_Not_found_exn_struct *)_T1E;
	    _T18 = _T17->tag;
	    _T19 = Cyc_Core_Not_found;
	    if (_T18 != _T19) { goto _TL8;
	    }
	    goto _LLA;
	    _TL8: _T1F = _T1E;
	    { void * exn = _T1F;
	      _rethrow(exn);
	    }_LLA: ;
	  }_TL6: ;
	}
      }return 0;
    }
  }
}
예제 #2
0
static int Cyc_RenameTemps_rename_visit_f1(struct Cyc_RenameTemps_Env*env,struct Cyc_Absyn_Exp*e){struct Cyc_Absyn_Exp*_T0;int*_T1;int _T2;struct Cyc_Absyn_Var_e_Absyn_Raw_exp_struct*_T3;void**_T4;void**_T5;void*_T6;int _T7;struct _handler_cons*_T8;int _T9;void**_TA;void*(*_TB)(struct Cyc_Dict_Dict,struct _tuple0*);void*(*_TC)(struct Cyc_Dict_Dict,void*);struct Cyc_RenameTemps_Env*_TD;struct Cyc_Dict_Dict _TE;struct _tuple0*_TF;void*_T10;struct Cyc_String_pa_PrintArg_struct _T11;struct Cyc___cycFILE*_T12;struct _fat_ptr _T13;struct _fat_ptr _T14;_T0=e;{
void*_T15=_T0->r;void*_T16;_T1=(int*)_T15;_T2=*_T1;if(_T2!=1)goto _TL6;{struct Cyc_Absyn_Var_e_Absyn_Raw_exp_struct*_T17=(struct Cyc_Absyn_Var_e_Absyn_Raw_exp_struct*)_T15;_T3=(struct Cyc_Absyn_Var_e_Absyn_Raw_exp_struct*)_T15;_T4=& _T3->f1;_T16=(void**)_T4;}{void**b=(void**)_T16;_T5=b;_T6=*_T5;{
# 59
struct _tuple0*qv=Cyc_Absyn_binding2qvar(_T6);_T7=
Cyc_RenameTemps_is_temp_var(qv);if(!_T7)goto _TL8;{struct _handler_cons _T17;_T8=& _T17;_push_handler(_T8);{int _T18=0;_T9=setjmp(_T17.handler);if(!_T9)goto _TLA;_T18=1;goto _TLB;_TLA: _TLB: if(_T18)goto _TLC;else{goto _TLE;}_TLE: _TA=b;_TC=Cyc_Dict_lookup;{
# 62
void*(*_T19)(struct Cyc_Dict_Dict,struct _tuple0*)=(void*(*)(struct Cyc_Dict_Dict,struct _tuple0*))_TC;_TB=_T19;}_TD=env;_TE=_TD->d;_TF=qv;*_TA=_TB(_TE,_TF);_pop_handler();goto _TLD;_TLC: _T10=Cyc_Core_get_exn_thrown();{void*_T19=(void*)_T10;{struct Cyc_String_pa_PrintArg_struct _T1A;_T1A.tag=0;
# 65
_T1A.f1=Cyc_Absynpp_exp2string(e);_T11=_T1A;}{struct Cyc_String_pa_PrintArg_struct _T1A=_T11;void*_T1B[1];_T1B[0]=& _T1A;_T12=Cyc_stderr;_T13=_tag_fat("can't find var %s!!!\n",sizeof(char),22U);_T14=_tag_fat(_T1B,sizeof(void*),1);Cyc_fprintf(_T12,_T13,_T14);}goto _LL5;_LL5:;}_TLD:;}}goto _TL9;_TL8: _TL9:
# 69
 return 0;}}_TL6:
 return 1;;}}
예제 #3
0
static struct _tuple0 * Cyc_Lineno_parse_linedef(struct _fat_ptr line) {
  struct _handler_cons * _T0;
  int _T1;
  int _T2;
  unsigned int _T3;
  struct _fat_ptr _T4;
  unsigned int _T5;
  struct _fat_ptr _T6;
  unsigned char * _T7;
  char * _T8;
  char * _T9;
  int _TA;
  char _TB;
  int _TC;
  struct _fat_ptr _TD;
  unsigned char * _TE;
  char * _TF;
  int _T10;
  char _T11;
  int _T12;
  int _T13;
  unsigned int _T14;
  struct _fat_ptr _T15;
  unsigned int _T16;
  struct _fat_ptr _T17;
  unsigned char * _T18;
  char * _T19;
  char * _T1A;
  int _T1B;
  char _T1C;
  int _T1D;
  struct _fat_ptr _T1E;
  unsigned char * _T1F;
  char * _T20;
  int _T21;
  char _T22;
  int _T23;
  int _T24;
  unsigned int _T25;
  struct _fat_ptr _T26;
  unsigned int _T27;
  int _T28;
  struct Cyc_IntPtr_sa_ScanfArg_struct _T29;
  struct _fat_ptr _T2A;
  int _T2B;
  int _T2C;
  unsigned long _T2D;
  struct _fat_ptr _T2E;
  struct _fat_ptr _T2F;
  struct _fat_ptr _T30;
  int _T31;
  unsigned int _T32;
  struct _fat_ptr _T33;
  unsigned int _T34;
  struct _fat_ptr _T35;
  unsigned char * _T36;
  char * _T37;
  char * _T38;
  int _T39;
  char _T3A;
  int _T3B;
  int _T3C;
  unsigned int _T3D;
  struct _fat_ptr _T3E;
  unsigned int _T3F;
  struct _fat_ptr _T40;
  unsigned char * _T41;
  char * _T42;
  char * _T43;
  int _T44;
  char _T45;
  int _T46;
  int _T47;
  unsigned int _T48;
  struct _fat_ptr _T49;
  unsigned int _T4A;
  int _T4B;
  unsigned int _T4C;
  struct _fat_ptr _T4D;
  unsigned int _T4E;
  struct _fat_ptr _T4F;
  int _T50;
  int _T51;
  unsigned long _T52;
  void * _T53;
  struct _handler_cons _T54;
  _T0 = &_T54;
  _push_handler(_T0);
  { int _T55 = 0;
    _T1 = setjmp(_T54.handler);
    if (! _T1) { goto _TL1B;
    }
    _T55 = 1;
    goto _TL1C;
    _TL1B: _TL1C: if (_T55) { goto _TL1D;
    }else { goto _TL1F;
    }
    _TL1F: { int i = 0;
      _TL20: _T2 = i;
      _T3 = (unsigned int)_T2;
      _T4 = line;
      _T5 = _get_fat_size(_T4,sizeof(char));
      if (_T3 < _T5) { goto _TL23;
      }else { goto _TL22;
      }
      _TL23: _T6 = line;
      _T7 = _T6.curr;
      _T8 = (char *)_T7;
      _T9 = _check_null(_T8);
      _TA = i;
      _TB = _T9[_TA];
      _TC = (int)_TB;
      if (_TC < 48) { goto _TL21;
      }else { goto _TL24;
      }
      _TL24: _TD = line;
      _TE = _TD.curr;
      _TF = (char *)_TE;
      _T10 = i;
      _T11 = _TF[_T10];
      _T12 = (int)_T11;
      if (_T12 > 57) { goto _TL21;
      }else { goto _TL22;
      }
      _TL21: i = i + 1;
      goto _TL20;
      _TL22: { int j = i;
	_TL25: _T13 = j;
	_T14 = (unsigned int)_T13;
	_T15 = line;
	_T16 = _get_fat_size(_T15,sizeof(char));
	if (_T14 < _T16) { goto _TL29;
	}else { goto _TL27;
	}
	_TL29: _T17 = line;
	_T18 = _T17.curr;
	_T19 = (char *)_T18;
	_T1A = _check_null(_T19);
	_T1B = j;
	_T1C = _T1A[_T1B];
	_T1D = (int)_T1C;
	if (_T1D >= 48) { goto _TL28;
	}else { goto _TL27;
	}
	_TL28: _T1E = line;
	_T1F = _T1E.curr;
	_T20 = (char *)_T1F;
	_T21 = j;
	_T22 = _T20[_T21];
	_T23 = (int)_T22;
	if (_T23 <= 57) { goto _TL26;
	}else { goto _TL27;
	}
	_TL26: j = j + 1;
	goto _TL25;
	_TL27: _T24 = i;
	_T25 = (unsigned int)_T24;
	_T26 = line;
	_T27 = _get_fat_size(_T26,sizeof(char));
	if (_T25 != _T27) { goto _TL2A;
	}
	{ struct _tuple0 * _T56 = 0;
	  _npop_handler(0);
	  return _T56;
	}_TL2A: { int number = 0;
	  { struct Cyc_IntPtr_sa_ScanfArg_struct _T56;
	    _T56.tag = 2;
	    _T56.f1 = &number;
	    _T29 = _T56;
	  }{ struct Cyc_IntPtr_sa_ScanfArg_struct _T56 = _T29;
	    void * _T57[1];
	    _T57[0] = &_T56;
	    _T2A = line;
	    _T2B = i;
	    _T2C = j - i;
	    _T2D = (unsigned long)_T2C;
	    _T2E = Cyc_substring(_T2A,_T2B,_T2D);
	    _T2F = _tag_fat("%d",sizeof(char),3U);
	    _T30 = _tag_fat(_T57,sizeof(void *),1);
	    _T28 = Cyc_sscanf(_T2E,_T2F,_T30);
	  }if (_T28 == 1) { goto _TL2C;
	  }
	  { struct _tuple0 * _T56 = 0;
	    _npop_handler(0);
	    return _T56;
	  }_TL2C: _TL2E: _T31 = j;
	  _T32 = (unsigned int)_T31;
	  _T33 = line;
	  _T34 = _get_fat_size(_T33,sizeof(char));
	  if (_T32 < _T34) { goto _TL31;
	  }else { goto _TL30;
	  }
	  _TL31: _T35 = line;
	  _T36 = _T35.curr;
	  _T37 = (char *)_T36;
	  _T38 = _check_null(_T37);
	  _T39 = j;
	  _T3A = _T38[_T39];
	  _T3B = (int)_T3A;
	  if (_T3B != 34) { goto _TL2F;
	  }else { goto _TL30;
	  }
	  _TL2F: j = j + 1;
	  goto _TL2E;
	  _TL30: j = j + 1;
	  { int k = j;
	    _TL32: _T3C = k;
	    _T3D = (unsigned int)_T3C;
	    _T3E = line;
	    _T3F = _get_fat_size(_T3E,sizeof(char));
	    if (_T3D < _T3F) { goto _TL35;
	    }else { goto _TL34;
	    }
	    _TL35: _T40 = line;
	    _T41 = _T40.curr;
	    _T42 = (char *)_T41;
	    _T43 = _check_null(_T42);
	    _T44 = k;
	    _T45 = _T43[_T44];
	    _T46 = (int)_T45;
	    if (_T46 != 34) { goto _TL33;
	    }else { goto _TL34;
	    }
	    _TL33: k = k + 1;
	    goto _TL32;
	    _TL34: _T47 = j;
	    _T48 = (unsigned int)_T47;
	    _T49 = line;
	    _T4A = _get_fat_size(_T49,sizeof(char));
	    if (_T48 == _T4A) { goto _TL38;
	    }else { goto _TL39;
	    }
	    _TL39: _T4B = k;
	    _T4C = (unsigned int)_T4B;
	    _T4D = line;
	    _T4E = _get_fat_size(_T4D,sizeof(char));
	    if (_T4C == _T4E) { goto _TL38;
	    }else { goto _TL36;
	    }
	    _TL38: { struct _tuple0 * _T56 = 0;
	      _npop_handler(0);
	      return _T56;
	    }_TL36: _T4F = line;
	    _T50 = j;
	    _T51 = k - j;
	    _T52 = (unsigned long)_T51;
	    { struct _fat_ptr fname = Cyc_substring(_T4F,_T50,_T52);
	      struct _tuple0 * _T56;
	      _T56 = _cycalloc(sizeof(struct _tuple0));
	      _T56->f0 = fname;
	      _T56->f1 = number;
	      _npop_handler(0);
	      return _T56;
	    }
	  }
	}
      }
    }_pop_handler();
    goto _TL1E;
    _TL1D: _T53 = Cyc_Core_get_exn_thrown();
    { void * _T56 = (void *)_T53;
      return 0;
      ;
    }_TL1E: ;
  }
}
예제 #4
0
void Cyc_Lineno_poss_of_abss(struct _fat_ptr filename,struct Cyc_List_List * places) {
  struct Cyc_List_List * (* _T0)(int (*)(struct _tuple1 *,struct _tuple1 *),
				 struct Cyc_List_List *);
  struct Cyc_List_List * (* _T1)(int (*)(void *,void *),struct Cyc_List_List *);
  struct Cyc_List_List * _T2;
  struct _fat_ptr _T3;
  struct _fat_ptr _T4;
  struct _handler_cons * _T5;
  int _T6;
  enum Cyc_Lineno_token_val _T7;
  int _T8;
  int _T9;
  struct Cyc_List_List * _TA;
  void * _TB;
  struct _tuple1 * _TC;
  struct _tuple1 _TD;
  int _TE;
  enum Cyc_Lineno_token_val _TF;
  int _T10;
  struct _tuple0 * _T11;
  struct _tuple0 _T12;
  struct _tuple0 * _T13;
  struct _tuple0 _T14;
  enum Cyc_Lineno_token_val _T15;
  int _T16;
  int _T17;
  struct Cyc_List_List * _T18;
  void * _T19;
  struct _tuple1 * _T1A;
  struct _tuple1 _T1B;
  int _T1C;
  struct Cyc_List_List * _T1D;
  void * _T1E;
  struct _tuple1 * _T1F;
  struct _tuple1 _T20;
  struct Cyc_Lineno_Pos * _T21;
  struct Cyc_Lineno_Pos * _T22;
  struct Cyc_Lineno_Pos * _T23;
  struct Cyc_Lineno_Pos * _T24;
  unsigned long _T25;
  int _T26;
  struct Cyc_List_List * _T27;
  void * _T28;
  struct _tuple1 * _T29;
  struct _tuple1 _T2A;
  int _T2B;
  int _T2C;
  unsigned long _T2D;
  unsigned long _T2E;
  struct Cyc_Lineno_Pos * _T2F;
  int _T30;
  struct Cyc_Lineno_Pos * _T31;
  struct Cyc_List_List * _T32;
  void * _T33;
  _T1 = Cyc_List_merge_sort;
  { struct Cyc_List_List * (* _T34)(int (*)(struct _tuple1 *,struct _tuple1 *),
				    struct Cyc_List_List *) = (struct Cyc_List_List * (*)(int (*)(struct _tuple1 *,
												  struct _tuple1 *),
											  struct Cyc_List_List *))_T1;
    _T0 = _T34;
  }_T2 = places;
  places = _T0(Cyc_Lineno_place_cmp,_T2);
  _T3 = filename;
  _T4 = _tag_fat("r",sizeof(char),2U);
  { struct Cyc___cycFILE * f = Cyc_file_open(_T3,_T4);
    { struct _handler_cons _T34;
      _T5 = &_T34;
      _push_handler(_T5);
      { int _T35 = 0;
	_T6 = setjmp(_T34.handler);
	if (! _T6) { goto _TL3A;
	}
	_T35 = 1;
	goto _TL3B;
	_TL3A: _TL3B: if (_T35) { goto _TL3C;
	}else { goto _TL3E;
	}
	_TL3E: { struct Cyc_Lexing_lexbuf * lbuf = Cyc_Lexing_from_file(f);
	  struct _fat_ptr source_file = filename;
	  int line = 1;
	  struct _fat_ptr this_line;
	  int eol;
	  enum Cyc_Lineno_token_val next;
	  _TL3F: if (places != 0) { goto _TL40;
	  }else { goto _TL41;
	  }
	  _TL40: _TL42: if (1) { goto _TL43;
	  }else { goto _TL44;
	  }
	  _TL43: next = Cyc_Lineno_token(lbuf);
	  eol = Cyc_Lexing_lexeme_end(lbuf);
	  this_line = Cyc_Lexing_lexeme(lbuf);
	  _T7 = next;
	  _T8 = (int)_T7;
	  if (_T8 == 2) { goto _TL47;
	  }else { goto _TL48;
	  }
	  _TL48: _T9 = eol;
	  _TA = places;
	  _TB = _TA->hd;
	  _TC = (struct _tuple1 *)_TB;
	  _TD = *_TC;
	  _TE = _TD.f0;
	  if (_T9 > _TE) { goto _TL47;
	  }else { goto _TL45;
	  }
	  _TL47: goto _TL44;
	  _TL45: _TF = next;
	  _T10 = (int)_TF;
	  if (_T10 != 0) { goto _TL49;
	  }
	  line = line + 1;
	  goto _TL4A;
	  _TL49: { struct _tuple0 * fno = Cyc_Lineno_parse_linedef(this_line);
	    if (fno != 0) { goto _TL4B;
	    }
	    line = line + 1;
	    goto _TL4C;
	    _TL4B: _T11 = fno;
	    _T12 = *_T11;
	    source_file = _T12.f0;
	    _T13 = fno;
	    _T14 = *_T13;
	    line = _T14.f1;
	    _TL4C: ;
	  }_TL4A: goto _TL42;
	  _TL44: _TL4D: if (places != 0) { goto _TL50;
	  }else { goto _TL4F;
	  }
	  _TL50: _T15 = next;
	  _T16 = (int)_T15;
	  if (_T16 == 2) { goto _TL4E;
	  }else { goto _TL51;
	  }
	  _TL51: _T17 = eol;
	  _T18 = places;
	  _T19 = _T18->hd;
	  _T1A = (struct _tuple1 *)_T19;
	  _T1B = *_T1A;
	  _T1C = _T1B.f0;
	  if (_T17 > _T1C) { goto _TL4E;
	  }else { goto _TL4F;
	  }
	  _TL4E: _T1D = places;
	  _T1E = _T1D->hd;
	  _T1F = (struct _tuple1 *)_T1E;
	  _T20 = *_T1F;
	  { struct Cyc_Lineno_Pos * p = _T20.f1;
	    _T21 = p;
	    _T21->logical_file = Cyc_strdup(source_file);
	    _T22 = p;
	    _T22->line = this_line;
	    _T23 = p;
	    _T23->line_no = line;
	    _T24 = p;
	    _T25 = Cyc_strlen(this_line);
	    _T26 = eol;
	    _T27 = places;
	    _T28 = _T27->hd;
	    _T29 = (struct _tuple1 *)_T28;
	    _T2A = *_T29;
	    _T2B = _T2A.f0;
	    _T2C = _T26 - _T2B;
	    _T2D = (unsigned long)_T2C;
	    _T2E = _T25 - _T2D;
	    _T24->col = (int)_T2E;
	    _T2F = p;
	    _T30 = _T2F->col;
	    if (_T30 >= 0) { goto _TL52;
	    }
	    _T31 = p;
	    _T31->col = 0;
	    goto _TL53;
	    _TL52: _TL53: _T32 = places;
	    places = _T32->tl;
	  }goto _TL4D;
	  _TL4F: line = line + 1;
	  goto _TL3F;
	  _TL41: ;
	}_pop_handler();
	goto _TL3D;
	_TL3C: _T33 = Cyc_Core_get_exn_thrown();
	{ void * _T36 = (void *)_T33;
	  void * _T37;
	  _T37 = _T36;
	  { void * y = _T37;
	    Cyc_file_close(f);
	    _throw(y);
	  };
	}_TL3D: ;
      }
    }Cyc_file_close(f);
    return;
  }
}
예제 #5
0
int Cyc_Base64_encode(struct _fat_ptr src,struct _fat_ptr dest,unsigned int src_len) {
  struct _handler_cons * _T0;
  int _T1;
  struct _fat_ptr _T2;
  unsigned int _T3;
  unsigned int _T4;
  int _T5;
  unsigned char * _T6;
  const char * _T7;
  int _T8;
  struct _fat_ptr _T9;
  unsigned int _TA;
  int _TB;
  unsigned char * _TC;
  const char * _TD;
  char _TE;
  int _TF;
  struct _fat_ptr _T10;
  unsigned int _T11;
  int _T12;
  unsigned char * _T13;
  const char * _T14;
  char _T15;
  char _T16;
  int _T17;
  int _T18;
  int _T19;
  int _T1A;
  int _T1B;
  int _T1C;
  struct _fat_ptr _T1D;
  unsigned int _T1E;
  unsigned int _T1F;
  int _T20;
  unsigned char * _T21;
  char * _T22;
  char * _T23;
  int _T24;
  char * _T25;
  char * _T26;
  unsigned int _T27;
  unsigned char * _T28;
  char * _T29;
  struct _fat_ptr _T2A;
  unsigned int _T2B;
  unsigned int _T2C;
  int _T2D;
  unsigned char * _T2E;
  char * _T2F;
  char * _T30;
  int _T31;
  char * _T32;
  char * _T33;
  unsigned int _T34;
  unsigned char * _T35;
  char * _T36;
  struct _fat_ptr _T37;
  unsigned int _T38;
  unsigned int _T39;
  int _T3A;
  unsigned char * _T3B;
  char * _T3C;
  char * _T3D;
  int _T3E;
  char * _T3F;
  char * _T40;
  unsigned int _T41;
  unsigned char * _T42;
  char * _T43;
  struct _fat_ptr _T44;
  unsigned int _T45;
  unsigned int _T46;
  int _T47;
  unsigned char * _T48;
  char * _T49;
  char * _T4A;
  int _T4B;
  char * _T4C;
  char * _T4D;
  unsigned int _T4E;
  unsigned char * _T4F;
  char * _T50;
  unsigned int _T51;
  int _T52;
  struct _fat_ptr _T53;
  unsigned int _T54;
  int _T55;
  unsigned char * _T56;
  char * _T57;
  unsigned int _T58;
  unsigned char * _T59;
  char * _T5A;
  void * _T5B;
  struct _handler_cons _T5C;
  _T0 = &_T5C;
  _push_handler(_T0);
  { int _T5D = 0;
    _T1 = setjmp(_T5C.handler);
    if (! _T1) { goto _TL2;
    }
    _T5D = 1;
    goto _TL3;
    _TL2: _TL3: if (_T5D) { goto _TL4;
    }else { goto _TL6;
    }
    _TL6: { unsigned int i = 0U;
      unsigned int j = 0U;
      _TL7: if (i < src_len) { goto _TL8;
      }else { goto _TL9;
      }
      _TL8: _T2 = src;
      _T3 = i;
      i = _T3 + 1;
      _T4 = _T3;
      _T5 = (int)_T4;
      _T6 = _check_fat_subscript(_T2,sizeof(char),_T5);
      _T7 = (const char *)_T6;
      { char b1 = *_T7;
	if (i >= src_len) { goto _TLA;
	}
	_T9 = src;
	_TA = i;
	_TB = (int)_TA;
	_TC = _check_fat_subscript(_T9,sizeof(char),_TB);
	_TD = (const char *)_TC;
	_TE = *_TD;
	_T8 = (int)_TE;
	goto _TLB;
	_TLA: _T8 = 0;
	_TLB: { int b2 = _T8;
	  i = i + 1;
	  if (i >= src_len) { goto _TLC;
	  }
	  _T10 = src;
	  _T11 = i;
	  _T12 = (int)_T11;
	  _T13 = _check_fat_subscript(_T10,sizeof(char),_T12);
	  _T14 = (const char *)_T13;
	  _T15 = *_T14;
	  _TF = (int)_T15;
	  goto _TLD;
	  _TLC: _TF = 0;
	  _TLD: { int b3 = _TF;
	    i = i + 1;
	    _T16 = b1 << 16;
	    _T17 = (int)_T16;
	    _T18 = b2 << 8;
	    _T19 = _T17 | _T18;
	    _T1A = b3;
	    { int r = _T19 | _T1A;
	      int a = r >> 18;
	      _T1B = r >> 12;
	      { int b = _T1B & 63;
		_T1C = r >> 6;
		{ int c = _T1C & 63;
		  int d = r & 63;
		  _T1D = dest;
		  _T1E = j;
		  j = _T1E + 1;
		  _T1F = _T1E;
		  _T20 = (int)_T1F;
		  { struct _fat_ptr _T5E = _fat_ptr_plus(_T1D,sizeof(char),
							 _T20);
		    _T21 = _check_fat_subscript(_T5E,sizeof(char),0U);
		    _T22 = (char *)_T21;
		    { char _T5F = *_T22;
		      _T23 = Cyc_Base64_encode_map;
		      _T24 = a;
		      _T25 = _check_known_subscript_notnull(_T23,65U,sizeof(char),
							    _T24);
		      _T26 = (char *)_T25;
		      { char _T60 = *_T26;
			_T27 = _get_fat_size(_T5E,sizeof(char));
			if (_T27 != 1U) { goto _TLE;
			}
			if (_T5F != 0) { goto _TLE;
			}
			if (_T60 == 0) { goto _TLE;
			}
			_throw_arraybounds();
			goto _TLF;
			_TLE: _TLF: _T28 = _T5E.curr;
			_T29 = (char *)_T28;
			*_T29 = _T60;
		      }
		    }
		  }_T2A = dest;
		  _T2B = j;
		  j = _T2B + 1;
		  _T2C = _T2B;
		  _T2D = (int)_T2C;
		  { struct _fat_ptr _T5E = _fat_ptr_plus(_T2A,sizeof(char),
							 _T2D);
		    _T2E = _check_fat_subscript(_T5E,sizeof(char),0U);
		    _T2F = (char *)_T2E;
		    { char _T5F = *_T2F;
		      _T30 = Cyc_Base64_encode_map;
		      _T31 = b;
		      _T32 = _check_known_subscript_notnull(_T30,65U,sizeof(char),
							    _T31);
		      _T33 = (char *)_T32;
		      { char _T60 = *_T33;
			_T34 = _get_fat_size(_T5E,sizeof(char));
			if (_T34 != 1U) { goto _TL10;
			}
			if (_T5F != 0) { goto _TL10;
			}
			if (_T60 == 0) { goto _TL10;
			}
			_throw_arraybounds();
			goto _TL11;
			_TL10: _TL11: _T35 = _T5E.curr;
			_T36 = (char *)_T35;
			*_T36 = _T60;
		      }
		    }
		  }_T37 = dest;
		  _T38 = j;
		  j = _T38 + 1;
		  _T39 = _T38;
		  _T3A = (int)_T39;
		  { struct _fat_ptr _T5E = _fat_ptr_plus(_T37,sizeof(char),
							 _T3A);
		    _T3B = _check_fat_subscript(_T5E,sizeof(char),0U);
		    _T3C = (char *)_T3B;
		    { char _T5F = *_T3C;
		      _T3D = Cyc_Base64_encode_map;
		      _T3E = c;
		      _T3F = _check_known_subscript_notnull(_T3D,65U,sizeof(char),
							    _T3E);
		      _T40 = (char *)_T3F;
		      { char _T60 = *_T40;
			_T41 = _get_fat_size(_T5E,sizeof(char));
			if (_T41 != 1U) { goto _TL12;
			}
			if (_T5F != 0) { goto _TL12;
			}
			if (_T60 == 0) { goto _TL12;
			}
			_throw_arraybounds();
			goto _TL13;
			_TL12: _TL13: _T42 = _T5E.curr;
			_T43 = (char *)_T42;
			*_T43 = _T60;
		      }
		    }
		  }_T44 = dest;
		  _T45 = j;
		  j = _T45 + 1;
		  _T46 = _T45;
		  _T47 = (int)_T46;
		  { struct _fat_ptr _T5E = _fat_ptr_plus(_T44,sizeof(char),
							 _T47);
		    _T48 = _check_fat_subscript(_T5E,sizeof(char),0U);
		    _T49 = (char *)_T48;
		    { char _T5F = *_T49;
		      _T4A = Cyc_Base64_encode_map;
		      _T4B = d;
		      _T4C = _check_known_subscript_notnull(_T4A,65U,sizeof(char),
							    _T4B);
		      _T4D = (char *)_T4C;
		      { char _T60 = *_T4D;
			_T4E = _get_fat_size(_T5E,sizeof(char));
			if (_T4E != 1U) { goto _TL14;
			}
			if (_T5F != 0) { goto _TL14;
			}
			if (_T60 == 0) { goto _TL14;
			}
			_throw_arraybounds();
			goto _TL15;
			_TL14: _TL15: _T4F = _T5E.curr;
			_T50 = (char *)_T4F;
			*_T50 = _T60;
		      }
		    }
		  }
		}
	      }
	    }
	  }
	}
      }goto _TL7;
      _TL9: { unsigned int k = i - src_len;
	_TL19: _T51 = k;
	_T52 = (int)_T51;
	if (_T52) { goto _TL17;
	}else { goto _TL18;
	}
	_TL17: _T53 = dest;
	_T54 = j - k;
	_T55 = (int)_T54;
	{ struct _fat_ptr _T5E = _fat_ptr_plus(_T53,sizeof(char),_T55);
	  _T56 = _check_fat_subscript(_T5E,sizeof(char),0U);
	  _T57 = (char *)_T56;
	  { char _T5F = *_T57;
	    char _T60 = '=';
	    _T58 = _get_fat_size(_T5E,sizeof(char));
	    if (_T58 != 1U) { goto _TL1A;
	    }
	    if (_T5F != 0) { goto _TL1A;
	    }
	    if (_T60 == 0) { goto _TL1A;
	    }
	    _throw_arraybounds();
	    goto _TL1B;
	    _TL1A: _TL1B: _T59 = _T5E.curr;
	    _T5A = (char *)_T59;
	    *_T5A = _T60;
	  }
	}k = k + -1;
	goto _TL19;
	_TL18: ;
      }{ int _T5E = 0;
	_npop_handler(0);
	return _T5E;
      }
    }_pop_handler();
    goto _TL5;
    _TL4: _T5B = Cyc_Core_get_exn_thrown();
    { void * _T5E = (void *)_T5B;
      return 1;
      ;
    }_TL5: ;
  }
}
예제 #6
0
파일: main.c 프로젝트: pippijn/cyclone-boot
int Cyc_main(int argc,struct _fat_ptr argv) {
  struct Cyc___cycFILE * _T0;
  struct _fat_ptr _T1;
  struct _fat_ptr _T2;
  struct _fat_ptr _T3;
  unsigned char * _T4;
  struct _fat_ptr * _T5;
  struct _fat_ptr _T6;
  unsigned char * _T7;
  struct _fat_ptr * _T8;
  struct _fat_ptr _T9;
  struct _fat_ptr _TA;
  long _TB;
  struct _fat_ptr _TC;
  struct _fat_ptr _TD;
  struct _fat_ptr _TE;
  struct _fat_ptr _TF;
  struct _handler_cons * _T10;
  int _T11;
  struct _fat_ptr _T12;
  struct _fat_ptr _T13;
  struct _fat_ptr _T14;
  struct _fat_ptr _T15;
  void * _T16;
  struct Cyc___cycFILE * _T17;
  struct _fat_ptr _T18;
  struct _fat_ptr _T19;
  struct _fat_ptr _T1A;
  unsigned char * _T1B;
  unsigned char * _T1C;
  const char * _T1D;
  struct _handler_cons * _T1E;
  int _T1F;
  struct _fat_ptr _T20;
  struct Cyc___cycFILE * _T21;
  struct Cyc___cycFILE * _T22;
  struct Cyc_Syntax_Lexer_definition * _T23;
  struct Cyc_Syntax_Location * _T24;
  struct Cyc_Compact_Lex_tables * _T25;
  struct Cyc_List_List * _T26;
  struct Cyc_Syntax_Lexer_definition * _T27;
  struct Cyc_Syntax_Location * _T28;
  void * _T29;
  struct Cyc_Parser_Parser_error_exn_struct * _T2A;
  char * _T2B;
  char * _T2C;
  struct Cyc_String_pa_PrintArg_struct _T2D;
  struct Cyc_Int_pa_PrintArg_struct _T2E;
  int _T2F;
  struct Cyc___cycFILE * _T30;
  struct _fat_ptr _T31;
  struct _fat_ptr _T32;
  struct Cyc_Lexer_Lexical_error_exn_struct * _T33;
  char * _T34;
  char * _T35;
  struct Cyc_String_pa_PrintArg_struct _T36;
  struct Cyc_Int_pa_PrintArg_struct _T37;
  int _T38;
  struct Cyc_Int_pa_PrintArg_struct _T39;
  int _T3A;
  struct Cyc_String_pa_PrintArg_struct _T3B;
  struct Cyc___cycFILE * _T3C;
  struct _fat_ptr _T3D;
  struct _fat_ptr _T3E;
  struct Cyc_Output_Table_overflow_exn_struct * _T3F;
  char * _T40;
  char * _T41;
  struct Cyc_String_pa_PrintArg_struct _T42;
  struct Cyc___cycFILE * _T43;
  struct _fat_ptr _T44;
  struct _fat_ptr _T45;
  struct Cyc___cycFILE * _T46;
  struct _fat_ptr _T47;
  struct _fat_ptr _T48;
  struct _fat_ptr _T49;
  unsigned char * _T4A;
  unsigned char * _T4B;
  const char * _T4C;
  GC_blacklist_warn_clear();
  if (argc < 2) { goto _TL2;
  }else { goto _TL3;
  }
  _TL3: if (argc > 3) { goto _TL2;
  }else { goto _TL0;
  }
  _TL2: _T0 = Cyc_stderr;
  _T1 = _tag_fat("Usage: cyclex <input file> [<output file>]",sizeof(char),
		 43U);
  _T2 = _tag_fat(0U,sizeof(void *),0);
  Cyc_fprintf(_T0,_T1,_T2);
  return 1;
  _TL0: _T3 = argv;
  _T4 = _check_fat_subscript(_T3,sizeof(struct _fat_ptr),1);
  _T5 = (struct _fat_ptr *)_T4;
  { struct _fat_ptr source_name = *_T5;
    struct _fat_ptr dest_name;
    if (argc != 3) { goto _TL4;
    }
    _T6 = argv;
    _T7 = _check_fat_subscript(_T6,sizeof(struct _fat_ptr),2);
    _T8 = (struct _fat_ptr *)_T7;
    dest_name = *_T8;
    goto _TL5;
    _TL4: _T9 = source_name;
    _TA = _tag_fat(".cyl",sizeof(char),5U);
    _TB = Cyc_Filename_check_suffix(_T9,_TA);
    if (! _TB) { goto _TL6;
    }
    _TC = Cyc_Filename_chop_extension(source_name);
    _TD = _tag_fat(".cyc",sizeof(char),5U);
    dest_name = Cyc_strconcat(_TC,_TD);
    goto _TL7;
    _TL6: _TE = source_name;
    _TF = _tag_fat(".cyc",sizeof(char),5U);
    dest_name = Cyc_strconcat(_TE,_TF);
    _TL7: _TL5: { struct Cyc___cycFILE * ic;
      struct Cyc___cycFILE * oc;
      { struct _handler_cons _T4D;
	_T10 = &_T4D;
	_push_handler(_T10);
	{ int _T4E = 0;
	  _T11 = setjmp(_T4D.handler);
	  if (! _T11) { goto _TL8;
	  }
	  _T4E = 1;
	  goto _TL9;
	  _TL8: _TL9: if (_T4E) { goto _TLA;
	  }else { goto _TLC;
	  }
	  _TLC: _T12 = source_name;
	  _T13 = _tag_fat("rb",sizeof(char),3U);
	  ic = Cyc_file_open(_T12,_T13);
	  _T14 = dest_name;
	  _T15 = _tag_fat("w",sizeof(char),2U);
	  oc = Cyc_file_open(_T14,_T15);
	  _pop_handler();
	  goto _TLB;
	  _TLA: _T16 = Cyc_Core_get_exn_thrown();
	  { void * _T4F = (void *)_T16;
	    _T17 = Cyc_stderr;
	    _T18 = _tag_fat("trouble opening files",sizeof(char),22U);
	    _T19 = _tag_fat(0U,sizeof(void *),0);
	    Cyc_fprintf(_T17,_T18,_T19);
	    _T1A = dest_name;
	    _T1B = _untag_fat_ptr_check_bound(_T1A,sizeof(char),1U);
	    _T1C = _check_null(_T1B);
	    _T1D = (const char *)_T1C;
	    remove(_T1D);
	    return 1;
	    ;
	  }_TLB: ;
	}
      }{ struct _handler_cons _T4D;
	_T1E = &_T4D;
	_push_handler(_T1E);
	{ int _T4E = 0;
	  _T1F = setjmp(_T4D.handler);
	  if (! _T1F) { goto _TLD;
	  }
	  _T4E = 1;
	  goto _TLE;
	  _TLD: _TLE: if (_T4E) { goto _TLF;
	  }else { goto _TL11;
	  }
	  _TL11: { struct Cyc_Syntax_Lexer_definition * def = Cyc_Parser_parse_file(ic);
	    struct _tuple6 * _T4F = Cyc_Lexgen_make_dfa(def);
	    struct _fat_ptr _T50;
	    struct Cyc_List_List * _T51;
	    { struct _tuple6 _T52 = *_T4F;
	      _T51 = _T52.f0;
	      _T50 = _T52.f1;
	    }{ struct Cyc_List_List * entries = _T51;
	      struct _fat_ptr transitions = _T50;
	      struct Cyc_Compact_Lex_tables * tables = Cyc_Compact_compact_tables(transitions);
	      _T20 = source_name;
	      _T21 = ic;
	      _T22 = oc;
	      _T23 = _check_null(def);
	      _T24 = _T23->header;
	      _T25 = tables;
	      _T26 = entries;
	      _T27 = def;
	      _T28 = _T27->trailer;
	      Cyc_Output_output_lexdef(_T20,_T21,_T22,_T24,_T25,_T26,_T28);
	    }
	  }_pop_handler();
	  goto _TL10;
	  _TLF: _T29 = Cyc_Core_get_exn_thrown();
	  { void * _T4F = (void *)_T29;
	    void * _T50;
	    int _T51;
	    int _T52;
	    struct _fat_ptr _T53;
	    _T2A = (struct Cyc_Parser_Parser_error_exn_struct *)_T4F;
	    _T2B = _T2A->tag;
	    _T2C = Cyc_Parser_Parser_error;
	    if (_T2B != _T2C) { goto _TL12;
	    }
	    { struct Cyc_Parser_Parser_error_exn_struct * _T54 = (struct Cyc_Parser_Parser_error_exn_struct *)_T4F;
	      _T53 = _T54->f1;
	    }{ struct _fat_ptr s = _T53;
	      { struct Cyc_String_pa_PrintArg_struct _T54;
		_T54.tag = 0;
		_T54.f1 = source_name;
		_T2D = _T54;
	      }{ struct Cyc_String_pa_PrintArg_struct _T54 = _T2D;
		{ struct Cyc_Int_pa_PrintArg_struct _T55;
		  _T55.tag = 1;
		  _T2F = Cyc_Lexer_line_num;
		  _T55.f1 = (unsigned long)_T2F;
		  _T2E = _T55;
		}{ struct Cyc_Int_pa_PrintArg_struct _T55 = _T2E;
		  void * _T56[2];
		  _T56[0] = &_T54;
		  _T56[1] = &_T55;
		  _T30 = Cyc_stderr;
		  _T31 = _tag_fat("File \"%s\", line %d: syntax error.\n",
				  sizeof(char),35U);
		  _T32 = _tag_fat(_T56,sizeof(void *),2);
		  Cyc_fprintf(_T30,_T31,_T32);
		}
	      }goto _LL6;
	    }_TL12: _T33 = (struct Cyc_Lexer_Lexical_error_exn_struct *)_T4F;
	    _T34 = _T33->tag;
	    _T35 = Cyc_Lexer_Lexical_error;
	    if (_T34 != _T35) { goto _TL14;
	    }
	    { struct Cyc_Lexer_Lexical_error_exn_struct * _T54 = (struct Cyc_Lexer_Lexical_error_exn_struct *)_T4F;
	      _T53 = _T54->f1;
	      _T52 = _T54->f2;
	      _T51 = _T54->f3;
	    }{ struct _fat_ptr msg = _T53;
	      int line = _T52;
	      int col = _T51;
	      { struct Cyc_String_pa_PrintArg_struct _T54;
		_T54.tag = 0;
		_T54.f1 = source_name;
		_T36 = _T54;
	      }{ struct Cyc_String_pa_PrintArg_struct _T54 = _T36;
		{ struct Cyc_Int_pa_PrintArg_struct _T55;
		  _T55.tag = 1;
		  _T38 = line;
		  _T55.f1 = (unsigned long)_T38;
		  _T37 = _T55;
		}{ struct Cyc_Int_pa_PrintArg_struct _T55 = _T37;
		  { struct Cyc_Int_pa_PrintArg_struct _T56;
		    _T56.tag = 1;
		    _T3A = col;
		    _T56.f1 = (unsigned long)_T3A;
		    _T39 = _T56;
		  }{ struct Cyc_Int_pa_PrintArg_struct _T56 = _T39;
		    { struct Cyc_String_pa_PrintArg_struct _T57;
		      _T57.tag = 0;
		      _T57.f1 = msg;
		      _T3B = _T57;
		    }{ struct Cyc_String_pa_PrintArg_struct _T57 = _T3B;
		      void * _T58[4];
		      _T58[0] = &_T54;
		      _T58[1] = &_T55;
		      _T58[2] = &_T56;
		      _T58[3] = &_T57;
		      _T3C = Cyc_stderr;
		      _T3D = _tag_fat("File \"%s\", line %d, character %d: %s.\n",
				      sizeof(char),39U);
		      _T3E = _tag_fat(_T58,sizeof(void *),4);
		      Cyc_fprintf(_T3C,_T3D,_T3E);
		    }
		  }
		}
	      }goto _LL6;
	    }_TL14: _T3F = (struct Cyc_Output_Table_overflow_exn_struct *)_T4F;
	    _T40 = _T3F->tag;
	    _T41 = Cyc_Output_Table_overflow;
	    if (_T40 != _T41) { goto _TL16;
	    }
	    { struct Cyc_String_pa_PrintArg_struct _T54;
	      _T54.tag = 0;
	      _T54.f1 = source_name;
	      _T42 = _T54;
	    }{ struct Cyc_String_pa_PrintArg_struct _T54 = _T42;
	      void * _T55[1];
	      _T55[0] = &_T54;
	      _T43 = Cyc_stderr;
	      _T44 = _tag_fat("File \"%s\":\ntransition table overflow, automaton is too big\n",
			      sizeof(char),60U);
	      _T45 = _tag_fat(_T55,sizeof(void *),1);
	      Cyc_fprintf(_T43,_T44,_T45);
	    }goto _LL6;
	    _TL16: _T50 = _T4F;
	    { void * exn = _T50;
	      _T46 = Cyc_stderr;
	      _T47 = _tag_fat("error in parsing, generation, compaction, or output",
			      sizeof(char),52U);
	      _T48 = _tag_fat(0U,sizeof(void *),0);
	      Cyc_fprintf(_T46,_T47,_T48);
	      _T49 = dest_name;
	      _T4A = _untag_fat_ptr_check_bound(_T49,sizeof(char),1U);
	      _T4B = _check_null(_T4A);
	      _T4C = (const char *)_T4B;
	      remove(_T4C);
	      _throw(exn);
	      return 1;
	    }_LL6: ;
	  }_TL10: ;
	}
      }return 0;
    }
  }
}
예제 #7
0
static int Cyc_Compact_most_frequent_elt(struct _fat_ptr v) {
  struct Cyc_Hashtable_Table * (* _T0)(int,int (*)(int,int),int (*)(int));
  struct Cyc_Hashtable_Table * (* _T1)(int,int (*)(void *,void *),int (*)(void *));
  int (* _T2)(int,int);
  int (* _T3)(int);
  void * (* _T4)(void *);
  int _T5;
  unsigned int _T6;
  struct _fat_ptr _T7;
  unsigned int _T8;
  struct _fat_ptr _T9;
  unsigned char * _TA;
  int * _TB;
  int * _TC;
  int _TD;
  struct _handler_cons * _TE;
  int _TF;
  int * (* _T10)(struct Cyc_Hashtable_Table *,int);
  void * (* _T11)(struct Cyc_Hashtable_Table *,void *);
  void * _T12;
  struct Cyc_Core_Not_found_exn_struct * _T13;
  char * _T14;
  char * _T15;
  int * _T16;
  struct _RegionHandle * _T17;
  void (* _T18)(struct Cyc_Hashtable_Table *,int,int *);
  void (* _T19)(struct Cyc_Hashtable_Table *,void *,void *);
  int * _T1A;
  int _T1B;
  int * _T1C;
  struct _RegionHandle _T1D = _new_region(0U,"rgn");
  struct _RegionHandle * rgn = &_T1D;
  _push_region(rgn);
  _T1 = Cyc_Hashtable_create;
  { struct Cyc_Hashtable_Table * (* _T1E)(int,int (*)(int,int),int (*)(int)) = (struct Cyc_Hashtable_Table * (*)(int,
														 int (*)(int,
															 int),
														 int (*)(int)))_T1;
    _T0 = _T1E;
  }_T2 = Cyc_Core_intcmp;
  _T4 = Cyc_Core_identity;
  { int (* _T1E)(int) = (int (*)(int))_T4;
    _T3 = _T1E;
  }{ struct Cyc_Hashtable_Table * frequencies = _T0(17,_T2,_T3);
    int max_freq = 0;
    int most_freq = 0;
    { int i = 0;
      _TL3: _T5 = i;
      _T6 = (unsigned int)_T5;
      _T7 = v;
      _T8 = _get_fat_size(_T7,sizeof(int));
      if (_T6 < _T8) { goto _TL1;
      }else { goto _TL2;
      }
      _TL1: _T9 = v;
      _TA = _T9.curr;
      _TB = (int *)_TA;
      _TC = _check_null(_TB);
      _TD = i;
      { int e = _TC[_TD];
	int * r;
	{ struct _handler_cons _T1E;
	  _TE = &_T1E;
	  _push_handler(_TE);
	  { int _T1F = 0;
	    _TF = setjmp(_T1E.handler);
	    if (! _TF) { goto _TL4;
	    }
	    _T1F = 1;
	    goto _TL5;
	    _TL4: _TL5: if (_T1F) { goto _TL6;
	    }else { goto _TL8;
	    }
	    _TL8: _T11 = Cyc_Hashtable_lookup;
	    { int * (* _T20)(struct Cyc_Hashtable_Table *,int) = (int * (*)(struct Cyc_Hashtable_Table *,
									    int))_T11;
	      _T10 = _T20;
	    }r = _T10(frequencies,e);
	    _pop_handler();
	    goto _TL7;
	    _TL6: _T12 = Cyc_Core_get_exn_thrown();
	    { void * _T20 = (void *)_T12;
	      void * _T21;
	      _T13 = (struct Cyc_Core_Not_found_exn_struct *)_T20;
	      _T14 = _T13->tag;
	      _T15 = Cyc_Core_Not_found;
	      if (_T14 != _T15) { goto _TL9;
	      }
	      _T17 = rgn;
	      { int * _T22 = _region_malloc(_T17,0U,sizeof(int));
		*_T22 = 0;
		_T16 = (int *)_T22;
	      }r = _T16;
	      _T19 = Cyc_Hashtable_insert;
	      { void (* _T22)(struct Cyc_Hashtable_Table *,int,int *) = (void (*)(struct Cyc_Hashtable_Table *,
										  int,
										  int *))_T19;
		_T18 = _T22;
	      }_T18(frequencies,e,r);
	      goto _LL0;
	      _TL9: _T21 = _T20;
	      { void * exn = _T21;
		_rethrow(exn);
	      }_LL0: ;
	    }_TL7: ;
	  }
	}_T1A = r;
	_T1B = *_T1A;
	{ int f = _T1B + 1;
	  _T1C = r;
	  *_T1C = f;
	  if (f <= max_freq) { goto _TLB;
	  }
	  max_freq = f;
	  most_freq = e;
	  goto _TLC;
	  _TLB: _TLC: ;
	}
      }i = i + 1;
      goto _TL3;
      _TL2: ;
    }{ int _T1E = most_freq;
      _npop_handler(0);
      return _T1E;
    }
  }_pop_region();
}