822 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			822 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
 | 
						|
  /* This file was generated automatically by "yap -L misc/buildops"
 | 
						|
     please do not update */
 | 
						|
 | 
						|
 | 
						|
  while (TRUE) {
 | 
						|
    op_numbers op = Yap_op_from_opcode(cl->opc);
 | 
						|
    switch (op) {
 | 
						|
#ifdef YAP_JIT
 | 
						|
    case _jit_handler:
 | 
						|
#endif
 | 
						|
      cl = NEXTOP(cl,J);
 | 
						|
      break;
 | 
						|
    case _ensure_space:
 | 
						|
      cl = NEXTOP(cl,Osbpa);
 | 
						|
      break;
 | 
						|
    case _get_2atoms:
 | 
						|
      if (iarg == Yap_regnotoreg(1)) {
 | 
						|
	if (IsApplTerm(cl->y_u.cc.c1)) {
 | 
						|
          CELL *pt = RepAppl(cl->y_u.cc.c1);
 | 
						|
	  clause->Tag = AbsAppl((CELL *)pt[0]);
 | 
						|
	  clause->ucd.t_ptr = cl->y_u.cc.c1;
 | 
						|
	} else
 | 
						|
	  clause->Tag = cl->y_u.cc.c1;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      if (iarg == Yap_regnotoreg(2)) {
 | 
						|
	if (IsApplTerm(cl->y_u.cc.c2)) {
 | 
						|
          CELL *pt = RepAppl(cl->y_u.cc.c2);
 | 
						|
	  clause->Tag = AbsAppl((CELL *)pt[0]);
 | 
						|
	  clause->ucd.t_ptr = cl->y_u.cc.c2;
 | 
						|
	} else
 | 
						|
	  clause->Tag = cl->y_u.cc.c2;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,cc);
 | 
						|
      break;
 | 
						|
    case _get_3atoms:
 | 
						|
      if (iarg == Yap_regnotoreg(1)) {
 | 
						|
	if (IsApplTerm(cl->y_u.ccc.c1)) {
 | 
						|
          CELL *pt = RepAppl(cl->y_u.ccc.c1);
 | 
						|
	  clause->Tag = AbsAppl((CELL *)pt[0]);
 | 
						|
	  clause->ucd.t_ptr = cl->y_u.ccc.c1;
 | 
						|
	} else
 | 
						|
	  clause->Tag = cl->y_u.ccc.c1;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      if (iarg == Yap_regnotoreg(2)) {
 | 
						|
	if (IsApplTerm(cl->y_u.ccc.c2)) {
 | 
						|
          CELL *pt = RepAppl(cl->y_u.ccc.c2);
 | 
						|
	  clause->Tag = AbsAppl((CELL *)pt[0]);
 | 
						|
	  clause->ucd.t_ptr = cl->y_u.ccc.c2;
 | 
						|
	} else
 | 
						|
	  clause->Tag = cl->y_u.ccc.c2;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      if (iarg == Yap_regnotoreg(3)) {
 | 
						|
	if (IsApplTerm(cl->y_u.ccc.c3)) {
 | 
						|
          CELL *pt = RepAppl(cl->y_u.ccc.c3);
 | 
						|
	  clause->Tag = AbsAppl((CELL *)pt[0]);
 | 
						|
	  clause->ucd.t_ptr = cl->y_u.ccc.c3;
 | 
						|
	} else
 | 
						|
	  clause->Tag = cl->y_u.ccc.c3;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,ccc);
 | 
						|
      break;
 | 
						|
    case _get_4atoms:
 | 
						|
      if (iarg == Yap_regnotoreg(1)) {
 | 
						|
	if (IsApplTerm(cl->y_u.cccc.c1)) {
 | 
						|
          CELL *pt = RepAppl(cl->y_u.cccc.c1);
 | 
						|
	  clause->Tag = AbsAppl((CELL *)pt[0]);
 | 
						|
	  clause->ucd.t_ptr = cl->y_u.cccc.c1;
 | 
						|
	} else
 | 
						|
	  clause->Tag = cl->y_u.cccc.c1;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      if (iarg == Yap_regnotoreg(2)) {
 | 
						|
	if (IsApplTerm(cl->y_u.cccc.c2)) {
 | 
						|
          CELL *pt = RepAppl(cl->y_u.cccc.c2);
 | 
						|
	  clause->Tag = AbsAppl((CELL *)pt[0]);
 | 
						|
	  clause->ucd.t_ptr = cl->y_u.cccc.c2;
 | 
						|
	} else
 | 
						|
	  clause->Tag = cl->y_u.cccc.c2;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      if (iarg == Yap_regnotoreg(3)) {
 | 
						|
	if (IsApplTerm(cl->y_u.cccc.c3)) {
 | 
						|
          CELL *pt = RepAppl(cl->y_u.cccc.c3);
 | 
						|
	  clause->Tag = AbsAppl((CELL *)pt[0]);
 | 
						|
	  clause->ucd.t_ptr = cl->y_u.cccc.c3;
 | 
						|
	} else
 | 
						|
	  clause->Tag = cl->y_u.cccc.c3;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      if (iarg == Yap_regnotoreg(4)) {
 | 
						|
	if (IsApplTerm(cl->y_u.cccc.c4)) {
 | 
						|
          CELL *pt = RepAppl(cl->y_u.cccc.c4);
 | 
						|
	  clause->Tag = AbsAppl((CELL *)pt[0]);
 | 
						|
	  clause->ucd.t_ptr = cl->y_u.cccc.c4;
 | 
						|
	} else
 | 
						|
	  clause->Tag = cl->y_u.cccc.c4;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,cccc);
 | 
						|
      break;
 | 
						|
    case _get_5atoms:
 | 
						|
      if (iarg == Yap_regnotoreg(1)) {
 | 
						|
	if (IsApplTerm(cl->y_u.ccccc.c1)) {
 | 
						|
          CELL *pt = RepAppl(cl->y_u.ccccc.c1);
 | 
						|
	  clause->Tag = AbsAppl((CELL *)pt[0]);
 | 
						|
	  clause->ucd.t_ptr = cl->y_u.ccccc.c1;
 | 
						|
	} else
 | 
						|
	  clause->Tag = cl->y_u.ccccc.c1;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      if (iarg == Yap_regnotoreg(2)) {
 | 
						|
	if (IsApplTerm(cl->y_u.ccccc.c2)) {
 | 
						|
          CELL *pt = RepAppl(cl->y_u.ccccc.c2);
 | 
						|
	  clause->Tag = AbsAppl((CELL *)pt[0]);
 | 
						|
	  clause->ucd.t_ptr = cl->y_u.ccccc.c2;
 | 
						|
	} else
 | 
						|
	  clause->Tag = cl->y_u.ccccc.c2;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      if (iarg == Yap_regnotoreg(3)) {
 | 
						|
	if (IsApplTerm(cl->y_u.ccccc.c3)) {
 | 
						|
          CELL *pt = RepAppl(cl->y_u.ccccc.c3);
 | 
						|
	  clause->Tag = AbsAppl((CELL *)pt[0]);
 | 
						|
	  clause->ucd.t_ptr = cl->y_u.ccccc.c3;
 | 
						|
	} else
 | 
						|
	  clause->Tag = cl->y_u.ccccc.c3;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      if (iarg == Yap_regnotoreg(4)) {
 | 
						|
	if (IsApplTerm(cl->y_u.ccccc.c4)) {
 | 
						|
          CELL *pt = RepAppl(cl->y_u.ccccc.c4);
 | 
						|
	  clause->Tag = AbsAppl((CELL *)pt[0]);
 | 
						|
	  clause->ucd.t_ptr = cl->y_u.ccccc.c4;
 | 
						|
	} else
 | 
						|
	  clause->Tag = cl->y_u.ccccc.c4;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      if (iarg == Yap_regnotoreg(5)) {
 | 
						|
	if (IsApplTerm(cl->y_u.ccccc.c5)) {
 | 
						|
          CELL *pt = RepAppl(cl->y_u.ccccc.c5);
 | 
						|
	  clause->Tag = AbsAppl((CELL *)pt[0]);
 | 
						|
	  clause->ucd.t_ptr = cl->y_u.ccccc.c5;
 | 
						|
	} else
 | 
						|
	  clause->Tag = cl->y_u.ccccc.c5;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,ccccc);
 | 
						|
      break;
 | 
						|
    case _get_6atoms:
 | 
						|
      if (iarg == Yap_regnotoreg(1)) {
 | 
						|
	if (IsApplTerm(cl->y_u.cccccc.c1)) {
 | 
						|
          CELL *pt = RepAppl(cl->y_u.cccccc.c1);
 | 
						|
	  clause->Tag = AbsAppl((CELL *)pt[0]);
 | 
						|
	  clause->ucd.t_ptr = cl->y_u.cccccc.c1;
 | 
						|
	} else
 | 
						|
	  clause->Tag = cl->y_u.cccccc.c1;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      if (iarg == Yap_regnotoreg(2)) {
 | 
						|
	if (IsApplTerm(cl->y_u.cccccc.c2)) {
 | 
						|
          CELL *pt = RepAppl(cl->y_u.cccccc.c2);
 | 
						|
	  clause->Tag = AbsAppl((CELL *)pt[0]);
 | 
						|
	  clause->ucd.t_ptr = cl->y_u.cccccc.c2;
 | 
						|
	} else
 | 
						|
	  clause->Tag = cl->y_u.cccccc.c2;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      if (iarg == Yap_regnotoreg(3)) {
 | 
						|
	if (IsApplTerm(cl->y_u.cccccc.c3)) {
 | 
						|
          CELL *pt = RepAppl(cl->y_u.cccccc.c3);
 | 
						|
	  clause->Tag = AbsAppl((CELL *)pt[0]);
 | 
						|
	  clause->ucd.t_ptr = cl->y_u.cccccc.c3;
 | 
						|
	} else
 | 
						|
	  clause->Tag = cl->y_u.cccccc.c3;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      if (iarg == Yap_regnotoreg(4)) {
 | 
						|
	if (IsApplTerm(cl->y_u.cccccc.c4)) {
 | 
						|
          CELL *pt = RepAppl(cl->y_u.cccccc.c4);
 | 
						|
	  clause->Tag = AbsAppl((CELL *)pt[0]);
 | 
						|
	  clause->ucd.t_ptr = cl->y_u.cccccc.c4;
 | 
						|
	} else
 | 
						|
	  clause->Tag = cl->y_u.cccccc.c4;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      if (iarg == Yap_regnotoreg(5)) {
 | 
						|
	if (IsApplTerm(cl->y_u.cccccc.c5)) {
 | 
						|
          CELL *pt = RepAppl(cl->y_u.cccccc.c5);
 | 
						|
	  clause->Tag = AbsAppl((CELL *)pt[0]);
 | 
						|
	  clause->ucd.t_ptr = cl->y_u.cccccc.c5;
 | 
						|
	} else
 | 
						|
	  clause->Tag = cl->y_u.cccccc.c5;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      if (iarg == Yap_regnotoreg(6)) {
 | 
						|
	if (IsApplTerm(cl->y_u.cccccc.c6)) {
 | 
						|
          CELL *pt = RepAppl(cl->y_u.cccccc.c6);
 | 
						|
	  clause->Tag = AbsAppl((CELL *)pt[0]);
 | 
						|
	  clause->ucd.t_ptr = cl->y_u.cccccc.c6;
 | 
						|
	} else
 | 
						|
	  clause->Tag = cl->y_u.cccccc.c6;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,cccccc);
 | 
						|
      break;
 | 
						|
    case _copy_idb_term:
 | 
						|
      if (regno != 2) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
      } else {
 | 
						|
	LogUpdClause *lcl = ClauseCodeToLogUpdClause(cl);
 | 
						|
	Term t = lcl->lusl.ClSource->Entry;
 | 
						|
      
 | 
						|
        if (!(lcl->ClFlags & FactMask)) {
 | 
						|
	  if (IsVarTerm(t)) {
 | 
						|
	    clause->Tag = (CELL)NULL;
 | 
						|
	  } else if (IsApplTerm(t)) {
 | 
						|
	    CELL *pt = RepAppl(t);
 | 
						|
	
 | 
						|
	    clause->Tag = AbsAppl((CELL *)pt[0]);
 | 
						|
	       if (IsExtensionFunctor(FunctorOfTerm(t))) {
 | 
						|
	      clause->ucd.t_ptr = t;
 | 
						|
	    } else {
 | 
						|
	      clause->ucd.c_sreg = pt;
 | 
						|
	    }
 | 
						|
	  } else if (IsPairTerm(t)) {
 | 
						|
	    CELL *pt = RepPair(t);
 | 
						|
 | 
						|
	    clause->Tag = AbsPair(NULL);
 | 
						|
	    clause->ucd.c_sreg = pt-1;
 | 
						|
	  } else {
 | 
						|
	    clause->Tag = t;
 | 
						|
	  }
 | 
						|
        }
 | 
						|
      }
 | 
						|
      return;
 | 
						|
      cl = NEXTOP(cl,e);
 | 
						|
      break;
 | 
						|
    case _pop:
 | 
						|
      cl = NEXTOP(cl,e);
 | 
						|
      break;
 | 
						|
    case _unify_idb_term:
 | 
						|
      if (regno != 2) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
      } else {
 | 
						|
	LogUpdClause *lcl = ClauseCodeToLogUpdClause(cl);
 | 
						|
	Term t = lcl->lusl.ClSource->Entry;
 | 
						|
      
 | 
						|
        if (!(lcl->ClFlags & FactMask)) {
 | 
						|
	  if (IsVarTerm(t)) {
 | 
						|
	    clause->Tag = (CELL)NULL;
 | 
						|
	  } else if (IsApplTerm(t)) {
 | 
						|
	    CELL *pt = RepAppl(t);
 | 
						|
	
 | 
						|
	    clause->Tag = AbsAppl((CELL *)pt[0]);
 | 
						|
	       if (IsExtensionFunctor(FunctorOfTerm(t))) {
 | 
						|
	      clause->ucd.t_ptr = t;
 | 
						|
	    } else {
 | 
						|
	      clause->ucd.c_sreg = pt;
 | 
						|
	    }
 | 
						|
	  } else if (IsPairTerm(t)) {
 | 
						|
	    CELL *pt = RepPair(t);
 | 
						|
 | 
						|
	    clause->Tag = AbsPair(NULL);
 | 
						|
	    clause->ucd.c_sreg = pt-1;
 | 
						|
	  } else {
 | 
						|
	    clause->Tag = t;
 | 
						|
	  }
 | 
						|
        }
 | 
						|
      }
 | 
						|
      return;
 | 
						|
      cl = NEXTOP(cl,e);
 | 
						|
      break;
 | 
						|
    case _unlock_lu:
 | 
						|
      cl = NEXTOP(cl,e);
 | 
						|
      break;
 | 
						|
    case _unify_l_list:
 | 
						|
      cl = NEXTOP(cl,o);
 | 
						|
      break;
 | 
						|
    case _unify_l_list_write:
 | 
						|
      cl = NEXTOP(cl,o);
 | 
						|
      break;
 | 
						|
    case _unify_l_void:
 | 
						|
      cl = NEXTOP(cl,o);
 | 
						|
      break;
 | 
						|
    case _unify_l_void_write:
 | 
						|
      cl = NEXTOP(cl,o);
 | 
						|
      break;
 | 
						|
    case _unify_list:
 | 
						|
      cl = NEXTOP(cl,o);
 | 
						|
      break;
 | 
						|
    case _unify_list_write:
 | 
						|
      cl = NEXTOP(cl,o);
 | 
						|
      break;
 | 
						|
    case _unify_void:
 | 
						|
      cl = NEXTOP(cl,o);
 | 
						|
      break;
 | 
						|
    case _unify_void_write:
 | 
						|
      cl = NEXTOP(cl,o);
 | 
						|
      break;
 | 
						|
    case _unify_dbterm:
 | 
						|
      cl = NEXTOP(cl,oD);
 | 
						|
      break;
 | 
						|
    case _unify_l_dbterm:
 | 
						|
      cl = NEXTOP(cl,oD);
 | 
						|
      break;
 | 
						|
    case _unify_bigint:
 | 
						|
      cl = NEXTOP(cl,oN);
 | 
						|
      break;
 | 
						|
    case _unify_l_bigint:
 | 
						|
      cl = NEXTOP(cl,oN);
 | 
						|
      break;
 | 
						|
    case _unify_atom:
 | 
						|
      cl = NEXTOP(cl,oc);
 | 
						|
      break;
 | 
						|
    case _unify_atom_write:
 | 
						|
      cl = NEXTOP(cl,oc);
 | 
						|
      break;
 | 
						|
    case _unify_l_atom:
 | 
						|
      cl = NEXTOP(cl,oc);
 | 
						|
      break;
 | 
						|
    case _unify_l_atom_write:
 | 
						|
      cl = NEXTOP(cl,oc);
 | 
						|
      break;
 | 
						|
    case _unify_float:
 | 
						|
      cl = NEXTOP(cl,od);
 | 
						|
      break;
 | 
						|
    case _unify_float_write:
 | 
						|
      cl = NEXTOP(cl,od);
 | 
						|
      break;
 | 
						|
    case _unify_l_float:
 | 
						|
      cl = NEXTOP(cl,od);
 | 
						|
      break;
 | 
						|
    case _unify_l_float_write:
 | 
						|
      cl = NEXTOP(cl,od);
 | 
						|
      break;
 | 
						|
    case _unify_l_struc:
 | 
						|
      cl = NEXTOP(cl,ofa);
 | 
						|
      break;
 | 
						|
    case _unify_l_struc_write:
 | 
						|
      cl = NEXTOP(cl,ofa);
 | 
						|
      break;
 | 
						|
    case _unify_struct:
 | 
						|
      cl = NEXTOP(cl,ofa);
 | 
						|
      break;
 | 
						|
    case _unify_struct_write:
 | 
						|
      cl = NEXTOP(cl,ofa);
 | 
						|
      break;
 | 
						|
    case _unify_l_longint:
 | 
						|
      cl = NEXTOP(cl,oi);
 | 
						|
      break;
 | 
						|
    case _unify_l_longint_write:
 | 
						|
      cl = NEXTOP(cl,oi);
 | 
						|
      break;
 | 
						|
    case _unify_longint:
 | 
						|
      cl = NEXTOP(cl,oi);
 | 
						|
      break;
 | 
						|
    case _unify_longint_write:
 | 
						|
      cl = NEXTOP(cl,oi);
 | 
						|
      break;
 | 
						|
    case _unify_l_n_voids:
 | 
						|
      cl = NEXTOP(cl,os);
 | 
						|
      break;
 | 
						|
    case _unify_l_n_voids_write:
 | 
						|
      cl = NEXTOP(cl,os);
 | 
						|
      break;
 | 
						|
    case _unify_n_voids:
 | 
						|
      cl = NEXTOP(cl,os);
 | 
						|
      break;
 | 
						|
    case _unify_n_voids_write:
 | 
						|
      cl = NEXTOP(cl,os);
 | 
						|
      break;
 | 
						|
    case _unify_n_atoms:
 | 
						|
      cl = NEXTOP(cl,osc);
 | 
						|
      break;
 | 
						|
    case _unify_n_atoms_write:
 | 
						|
      cl = NEXTOP(cl,osc);
 | 
						|
      break;
 | 
						|
    case _unify_l_string:
 | 
						|
      cl = NEXTOP(cl,ou);
 | 
						|
      break;
 | 
						|
    case _unify_string:
 | 
						|
      cl = NEXTOP(cl,ou);
 | 
						|
      break;
 | 
						|
    case _save_appl_x:
 | 
						|
      if (iarg == cl->y_u.ox.x) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,ox);
 | 
						|
      break;
 | 
						|
    case _save_appl_x_write:
 | 
						|
      if (iarg == cl->y_u.ox.x) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,ox);
 | 
						|
      break;
 | 
						|
    case _save_pair_x:
 | 
						|
      if (iarg == cl->y_u.ox.x) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,ox);
 | 
						|
      break;
 | 
						|
    case _save_pair_x_write:
 | 
						|
      if (iarg == cl->y_u.ox.x) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,ox);
 | 
						|
      break;
 | 
						|
    case _unify_l_x_loc:
 | 
						|
      cl = NEXTOP(cl,ox);
 | 
						|
      break;
 | 
						|
    case _unify_l_x_loc_write:
 | 
						|
      cl = NEXTOP(cl,ox);
 | 
						|
      break;
 | 
						|
    case _unify_l_x_val:
 | 
						|
      cl = NEXTOP(cl,ox);
 | 
						|
      break;
 | 
						|
    case _unify_l_x_val_write:
 | 
						|
      cl = NEXTOP(cl,ox);
 | 
						|
      break;
 | 
						|
    case _unify_l_x_var:
 | 
						|
      if (iarg == cl->y_u.ox.x) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,ox);
 | 
						|
      break;
 | 
						|
    case _unify_l_x_var_write:
 | 
						|
      if (iarg == cl->y_u.ox.x) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,ox);
 | 
						|
      break;
 | 
						|
    case _unify_x_loc:
 | 
						|
      cl = NEXTOP(cl,ox);
 | 
						|
      break;
 | 
						|
    case _unify_x_loc_write:
 | 
						|
      cl = NEXTOP(cl,ox);
 | 
						|
      break;
 | 
						|
    case _unify_x_val:
 | 
						|
      cl = NEXTOP(cl,ox);
 | 
						|
      break;
 | 
						|
    case _unify_x_val_write:
 | 
						|
      cl = NEXTOP(cl,ox);
 | 
						|
      break;
 | 
						|
    case _unify_x_var:
 | 
						|
      if (iarg == cl->y_u.ox.x) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,ox);
 | 
						|
      break;
 | 
						|
    case _unify_x_var_write:
 | 
						|
      if (iarg == cl->y_u.ox.x) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,ox);
 | 
						|
      break;
 | 
						|
    case _unify_l_x_var2:
 | 
						|
      if (iarg == cl->y_u.oxx.xl) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      if (iarg == cl->y_u.oxx.xr) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,oxx);
 | 
						|
      break;
 | 
						|
    case _unify_l_x_var2_write:
 | 
						|
      if (iarg == cl->y_u.oxx.xl) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      if (iarg == cl->y_u.oxx.xr) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,oxx);
 | 
						|
      break;
 | 
						|
    case _unify_x_var2:
 | 
						|
      if (iarg == cl->y_u.oxx.xl) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      if (iarg == cl->y_u.oxx.xr) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,oxx);
 | 
						|
      break;
 | 
						|
    case _unify_x_var2_write:
 | 
						|
      if (iarg == cl->y_u.oxx.xl) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      if (iarg == cl->y_u.oxx.xr) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,oxx);
 | 
						|
      break;
 | 
						|
    case _save_appl_y:
 | 
						|
      cl = NEXTOP(cl,oy);
 | 
						|
      break;
 | 
						|
    case _save_appl_y_write:
 | 
						|
      cl = NEXTOP(cl,oy);
 | 
						|
      break;
 | 
						|
    case _save_pair_y:
 | 
						|
      cl = NEXTOP(cl,oy);
 | 
						|
      break;
 | 
						|
    case _save_pair_y_write:
 | 
						|
      cl = NEXTOP(cl,oy);
 | 
						|
      break;
 | 
						|
    case _unify_l_y_loc:
 | 
						|
      cl = NEXTOP(cl,oy);
 | 
						|
      break;
 | 
						|
    case _unify_l_y_loc_write:
 | 
						|
      cl = NEXTOP(cl,oy);
 | 
						|
      break;
 | 
						|
    case _unify_l_y_val:
 | 
						|
      cl = NEXTOP(cl,oy);
 | 
						|
      break;
 | 
						|
    case _unify_l_y_val_write:
 | 
						|
      cl = NEXTOP(cl,oy);
 | 
						|
      break;
 | 
						|
    case _unify_l_y_var:
 | 
						|
      cl = NEXTOP(cl,oy);
 | 
						|
      break;
 | 
						|
    case _unify_l_y_var_write:
 | 
						|
      cl = NEXTOP(cl,oy);
 | 
						|
      break;
 | 
						|
    case _unify_y_loc:
 | 
						|
      cl = NEXTOP(cl,oy);
 | 
						|
      break;
 | 
						|
    case _unify_y_loc_write:
 | 
						|
      cl = NEXTOP(cl,oy);
 | 
						|
      break;
 | 
						|
    case _unify_y_val:
 | 
						|
      cl = NEXTOP(cl,oy);
 | 
						|
      break;
 | 
						|
    case _unify_y_val_write:
 | 
						|
      cl = NEXTOP(cl,oy);
 | 
						|
      break;
 | 
						|
    case _unify_y_var:
 | 
						|
      cl = NEXTOP(cl,oy);
 | 
						|
      break;
 | 
						|
    case _unify_y_var_write:
 | 
						|
      cl = NEXTOP(cl,oy);
 | 
						|
      break;
 | 
						|
    case _pop_n:
 | 
						|
      cl = NEXTOP(cl,s);
 | 
						|
      break;
 | 
						|
    case _get_list:
 | 
						|
      if (iarg == cl->y_u.x.x) {
 | 
						|
	clause->Tag = AbsPair(NULL);
 | 
						|
	clause->ucd.WorkPC = NEXTOP(cl,x);
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,x);
 | 
						|
      break;
 | 
						|
    case _put_list:
 | 
						|
      if (iarg == cl->y_u.x.x) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,x);
 | 
						|
      break;
 | 
						|
    case _put_dbterm:
 | 
						|
      if (iarg == cl->y_u.xD.x) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,xD);
 | 
						|
      break;
 | 
						|
    case _get_bigint:
 | 
						|
      if (iarg == cl->y_u.xN.x) {
 | 
						|
	clause->Tag = AbsAppl((CELL *)FunctorBigInt);
 | 
						|
	clause->ucd.t_ptr = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,xN);
 | 
						|
      break;
 | 
						|
    case _put_bigint:
 | 
						|
      if (iarg == cl->y_u.xN.x) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,xN);
 | 
						|
      break;
 | 
						|
    case _get_atom:
 | 
						|
      if (iarg == cl->y_u.xc.x) {
 | 
						|
	if (IsApplTerm(cl->y_u.xc.c)) {
 | 
						|
          CELL *pt = RepAppl(cl->y_u.xc.c);
 | 
						|
	  clause->Tag = AbsAppl((CELL *)pt[0]);
 | 
						|
	  clause->ucd.t_ptr = cl->y_u.xc.c;
 | 
						|
	} else
 | 
						|
	  clause->Tag = cl->y_u.xc.c;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,xc);
 | 
						|
      break;
 | 
						|
    case _put_atom:
 | 
						|
      if (iarg == cl->y_u.xc.x) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,xc);
 | 
						|
      break;
 | 
						|
    case _get_float:
 | 
						|
      if (iarg == cl->y_u.xd.x) {
 | 
						|
	clause->Tag = AbsAppl((CELL *)FunctorDouble);
 | 
						|
	clause->ucd.t_ptr = AbsAppl(cl->y_u.xd.d);
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,xd);
 | 
						|
      break;
 | 
						|
    case _put_float:
 | 
						|
      if (iarg == cl->y_u.xd.x) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,xd);
 | 
						|
      break;
 | 
						|
    case _get_struct:
 | 
						|
      if (iarg == cl->y_u.xfa.x) {
 | 
						|
	clause->Tag = AbsAppl((CELL *)cl->y_u.xfa.f);
 | 
						|
	clause->ucd.WorkPC = NEXTOP(cl,xfa);
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,xfa);
 | 
						|
      break;
 | 
						|
    case _put_struct:
 | 
						|
      if (iarg == cl->y_u.xfa.x) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,xfa);
 | 
						|
      break;
 | 
						|
    case _get_longint:
 | 
						|
      if (iarg == cl->y_u.xi.x) {
 | 
						|
	clause->Tag = AbsAppl((CELL *)FunctorLongInt);
 | 
						|
	clause->ucd.t_ptr = AbsAppl(cl->y_u.xi.i);
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,xi);
 | 
						|
      break;
 | 
						|
    case _put_longint:
 | 
						|
      if (iarg == cl->y_u.xi.x) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,xi);
 | 
						|
      break;
 | 
						|
    case _get_string:
 | 
						|
      if (iarg == cl->y_u.xu.x) {
 | 
						|
	clause->Tag = AbsAppl((CELL *)FunctorString);
 | 
						|
	clause->ucd.t_ptr = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,xu);
 | 
						|
      break;
 | 
						|
    case _get_x_val:
 | 
						|
      if (cl->y_u.xx.xl == iarg ||
 | 
						|
        cl->y_u.xx.xr == iarg) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,xx);
 | 
						|
      break;
 | 
						|
    case _get_x_var:
 | 
						|
      if (cl->y_u.xx.xr == iarg ||
 | 
						|
        cl->y_u.xx.xl == iarg) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,xx);
 | 
						|
      break;
 | 
						|
    case _gl_void_valx:
 | 
						|
      if (iarg == cl->y_u.xx.xl) {
 | 
						|
	clause->Tag = AbsPair(NULL);
 | 
						|
	clause->ucd.WorkPC = cl;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,xx);
 | 
						|
      break;
 | 
						|
    case _gl_void_varx:
 | 
						|
      if (iarg == cl->y_u.xx.xl) {
 | 
						|
	clause->Tag = AbsPair(NULL);
 | 
						|
	clause->ucd.WorkPC = cl;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      if (iarg == cl->y_u.xx.xr) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,xx);
 | 
						|
      break;
 | 
						|
    case _glist_valx:
 | 
						|
      if (iarg == cl->y_u.xx.xl) {
 | 
						|
	clause->Tag = AbsPair(NULL);
 | 
						|
	clause->ucd.WorkPC = cl;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,xx);
 | 
						|
      break;
 | 
						|
    case _put_x_val:
 | 
						|
      if (cl->y_u.xx.xl == iarg ||
 | 
						|
        cl->y_u.xx.xr == iarg) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,xx);
 | 
						|
      break;
 | 
						|
    case _put_x_var:
 | 
						|
      if (iarg == cl->y_u.xx.xl) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      if (iarg == cl->y_u.xx.xr) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,xx);
 | 
						|
      break;
 | 
						|
    case _put_xx_val:
 | 
						|
      if (cl->y_u.xxxx.xl1 == iarg ||
 | 
						|
        cl->y_u.xxxx.xr1 == iarg) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      if (cl->y_u.xxxx.xl2 == iarg ||
 | 
						|
        cl->y_u.xxxx.xr2 == iarg) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,xxxx);
 | 
						|
      break;
 | 
						|
    case _get_y_val:
 | 
						|
      if (cl->y_u.yx.x == iarg) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,yx);
 | 
						|
      break;
 | 
						|
    case _get_y_var:
 | 
						|
      if (cl->y_u.yx.x == iarg) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,yx);
 | 
						|
      break;
 | 
						|
    case _gl_void_valy:
 | 
						|
      cl = NEXTOP(cl,yx);
 | 
						|
      break;
 | 
						|
    case _gl_void_vary:
 | 
						|
      cl = NEXTOP(cl,yx);
 | 
						|
      break;
 | 
						|
    case _glist_valy:
 | 
						|
      if (iarg == cl->y_u.yx.x) {
 | 
						|
	clause->Tag = AbsPair(NULL);
 | 
						|
	clause->ucd.WorkPC = cl;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,yx);
 | 
						|
      break;
 | 
						|
    case _put_unsafe:
 | 
						|
      if (cl->y_u.yx.x == iarg) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,yx);
 | 
						|
      break;
 | 
						|
    case _put_y_val:
 | 
						|
      if (cl->y_u.yx.x == iarg) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,yx);
 | 
						|
      break;
 | 
						|
    case _put_y_var:
 | 
						|
      if (iarg == cl->y_u.yx.x) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,yx);
 | 
						|
      break;
 | 
						|
    case _get_yy_var:
 | 
						|
      if (cl->y_u.yyxx.x1 == iarg) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      if (cl->y_u.yyxx.x2 == iarg) {
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
      }
 | 
						|
      cl = NEXTOP(cl,yyxx);
 | 
						|
      break;
 | 
						|
#ifdef YAPOR
 | 
						|
#endif
 | 
						|
#ifdef TABLING
 | 
						|
    case _table_try_single:
 | 
						|
      cl = NEXTOP(cl,Otapl);
 | 
						|
      break;
 | 
						|
#endif
 | 
						|
default:
 | 
						|
	clause->Tag = (CELL)NULL;
 | 
						|
	return;
 | 
						|
     }
 | 
						|
  }
 |