#if (defined(YAPOR_SBA) && defined(YAPOR)) || defined(TABLING)
#define check_stack_on_call \
  if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0)  ) return external_labels[6];
#else
#define check_stack_on_call \
  if  (__builtin_expect(((Int)(Unsigned(ENV_YREG) - Unsigned(HR)) < CreepFlag ), 0) ) return external_labels[6];
#endif /* YAPOR_SBA && YAPOR */

#if (defined(YAPOR_SBA) && defined(YAPOR)) || defined(TABLING)
#define check_stack_on_execute \
  if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0)  ) return external_labels[5];
#else
#define check_stack_on_execute \
  if  (__builtin_expect(((Int)(Unsigned(ENV_YREG) - Unsigned(HR)) < CreepFlag ), 0) ) return external_labels[5];
#endif /* YAPOR_SBA && YAPOR */

#if (defined(YAPOR_SBA) && defined(YAPOR)) || defined(TABLING)
#define check_stack_on_dexecute \
  if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0)  ) return external_labels[7];
#else
#define check_stack_on_dexecute \
  if  (__builtin_expect(((Int)(Unsigned(ENV_YREG) - Unsigned(HR)) < CreepFlag ), 0) ) return external_labels[7];
#endif /* YAPOR_SBA && YAPOR */

#if (defined(YAPOR_SBA) && defined(YAPOR)) || defined(TABLING)
#define check_stack_on_deallocate \
  if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0)  ) return external_labels[8];
#else
#define check_stack_on_deallocate \
  if  (__builtin_expect(((Int)(Unsigned(ENV_YREG) - Unsigned(HR)) < CreepFlag ), 0) ) return external_labels[8];
#endif /* YAPOR_SBA && YAPOR */

#ifdef DEPTH_LIMIT
#define _procceed_instinit \
      CACHE_Y_AS_ENV(YREG); \
      (*_PREG) = (*_CPREG); \
      save_pc(); \
      ENV_YREG = ENV; \
      DEPTH = ENV_YREG[E_DEPTH]; \
      WRITEBACK_Y_AS_ENV(); \
      GONEXT(); \
      ENDCACHE_Y_AS_ENV();
#else /* DEPTH_LIMIT */
#define _procceed_instinit \
      CACHE_Y_AS_ENV(YREG); \
      (*_PREG) = (*_CPREG); \
      save_pc(); \
      ENV_YREG = ENV; \
      WRITEBACK_Y_AS_ENV(); \
      GONEXT(); \
      ENDCACHE_Y_AS_ENV();
#endif /* DEPTH_LIMIT */

#ifdef DEPTH_LIMIT
#define _fcall_instinit \
      CACHE_Y_AS_ENV(YREG); \
      ENV_YREG[E_CP] = (CELL) (*_CPREG); \
      ENV_YREG[E_E] = (CELL) ENV; \
      ENV_YREG[E_DEPTH] = DEPTH; \
      ENDCACHE_Y_AS_ENV(); \
      _call_instinit;
#else /* DEPTH_LIMIT */
#define _fcall_instinit \
      CACHE_Y_AS_ENV(YREG); \
      ENV_YREG[E_CP] = (CELL) (*_CPREG); \
      ENV_YREG[E_E] = (CELL) ENV; \
      ENDCACHE_Y_AS_ENV(); \
      _call_instinit;
#endif /* DEPTH_LIMIT */

#ifdef LOW_LEVEL_TRACER
#ifdef NO_CHECKING
#ifdef DEPTH_LIMIT
#ifdef FROZEN_STACKS
#ifdef YAPOR_SBA
#ifdef YAPOR
#define _call_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
      } \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)){ \
	        FAIL(); \
	    } else { \
	        DEPTH = RESET_DEPTH(); \
	    } \
	  } \
	} else if (pt->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	} \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	SCH_check_requests(); \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR */
#define _call_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
      } \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)){ \
	        FAIL(); \
	    } else { \
	        DEPTH = RESET_DEPTH(); \
	    } \
	  } \
	} else if (pt->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	} \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR */
#else /* YAPOR_SBA */
#ifdef YAPOR
#define _call_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
      } \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)){ \
	        FAIL(); \
	    } else { \
	        DEPTH = RESET_DEPTH(); \
	    } \
	  } \
	} else if (pt->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	} \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	SCH_check_requests(); \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR */
#define _call_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
      } \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)){ \
	        FAIL(); \
	    } else { \
	        DEPTH = RESET_DEPTH(); \
	    } \
	  } \
	} else if (pt->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	} \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR */
#endif /* YAPOR_SBA */
#else /* FROZEN_STACKS */
#ifdef YAPOR
#define _call_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
      } \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)){ \
	        FAIL(); \
	    } else { \
	        DEPTH = RESET_DEPTH(); \
	    } \
	  } \
	} else if (pt->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	} \
	if (ENV_YREG > (CELL *) B) { \
	  ENV_YREG = (CELL *) B; \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	SCH_check_requests(); \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR */
#define _call_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
      } \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)){ \
	        FAIL(); \
	    } else { \
	        DEPTH = RESET_DEPTH(); \
	    } \
	  } \
	} else if (pt->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	} \
	if (ENV_YREG > (CELL *) B) { \
	  ENV_YREG = (CELL *) B; \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR */
#endif /* FROZEN_STACKS */
#else /* DEPTH_LIMIT */
#ifdef FROZEN_STACKS
#ifdef YAPOR_SBA
#ifdef YAPOR
#define _call_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
      } \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	SCH_check_requests(); \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR */
#define _call_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
      } \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR */
#else /* YAPOR_SBA */
#ifdef YAPOR
#define _call_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
      } \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	SCH_check_requests(); \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR */
#define _call_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
      } \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR */
#endif /* YAPOR_SBA */
#else /* FROZEN_STACKS */
#ifdef YAPOR
#define _call_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
      } \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (ENV_YREG > (CELL *) B) { \
	  ENV_YREG = (CELL *) B; \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	SCH_check_requests(); \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR */
#define _call_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
      } \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (ENV_YREG > (CELL *) B) { \
	  ENV_YREG = (CELL *) B; \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR */
#endif /* FROZEN_STACKS */
#endif /* DEPTH_LIMIT */
#else /* NO_CHECKING */
#ifdef DEPTH_LIMIT
#ifdef FROZEN_STACKS
#ifdef YAPOR_SBA
#ifdef YAPOR
#define _call_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
      } \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	check_stack_on_call; \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)){ \
	        FAIL(); \
	    } else { \
	        DEPTH = RESET_DEPTH(); \
	    } \
	  } \
	} else if (pt->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	} \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	SCH_check_requests(); \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR */
#define _call_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
      } \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	check_stack_on_call; \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)){ \
	        FAIL(); \
	    } else { \
	        DEPTH = RESET_DEPTH(); \
	    } \
	  } \
	} else if (pt->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	} \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR */
#else /* YAPOR_SBA */
#ifdef YAPOR
#define _call_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
      } \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	check_stack_on_call; \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)){ \
	        FAIL(); \
	    } else { \
	        DEPTH = RESET_DEPTH(); \
	    } \
	  } \
	} else if (pt->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	} \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	SCH_check_requests(); \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR */
#define _call_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
      } \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	check_stack_on_call; \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)){ \
	        FAIL(); \
	    } else { \
	        DEPTH = RESET_DEPTH(); \
	    } \
	  } \
	} else if (pt->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	} \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR */
#endif /* YAPOR_SBA */
#else /* FROZEN_STACKS */
#ifdef YAPOR
#define _call_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
      } \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	check_stack_on_call; \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)){ \
	        FAIL(); \
	    } else { \
	        DEPTH = RESET_DEPTH(); \
	    } \
	  } \
	} else if (pt->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	} \
	if (ENV_YREG > (CELL *) B) { \
	  ENV_YREG = (CELL *) B; \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	SCH_check_requests(); \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR */
#define _call_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
      } \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	check_stack_on_call; \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)){ \
	        FAIL(); \
	    } else { \
	        DEPTH = RESET_DEPTH(); \
	    } \
	  } \
	} else if (pt->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	} \
	if (ENV_YREG > (CELL *) B) { \
	  ENV_YREG = (CELL *) B; \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR */
#endif /* FROZEN_STACKS */
#else /* DEPTH_LIMIT */
#ifdef FROZEN_STACKS
#ifdef YAPOR_SBA
#ifdef YAPOR
#define _call_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
      } \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	check_stack_on_call; \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	SCH_check_requests(); \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR */
#define _call_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
      } \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	check_stack_on_call; \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR */
#else /* YAPOR_SBA */
#ifdef YAPOR
#define _call_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
      } \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	check_stack_on_call; \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	SCH_check_requests(); \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR */
#define _call_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
      } \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	check_stack_on_call; \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR */
#endif /* YAPOR_SBA */
#else /* FROZEN_STACKS */
#ifdef YAPOR
#define _call_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
      } \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	check_stack_on_call; \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (ENV_YREG > (CELL *) B) { \
	  ENV_YREG = (CELL *) B; \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	SCH_check_requests(); \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR */
#define _call_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
      } \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	check_stack_on_call; \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (ENV_YREG > (CELL *) B) { \
	  ENV_YREG = (CELL *) B; \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR */
#endif /* FROZEN_STACKS */
#endif /* DEPTH_LIMIT */
#endif /* NO_CHECKING */
#else /* LOW_LEVEL_TRACER */
#ifdef NO_CHECKING
#ifdef DEPTH_LIMIT
#ifdef FROZEN_STACKS
#ifdef YAPOR_SBA
#ifdef YAPOR
#define _call_instinit \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)){ \
	        FAIL(); \
	    } else { \
	        DEPTH = RESET_DEPTH(); \
	    } \
	  } \
	} else if (pt->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	} \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	SCH_check_requests(); \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR */
#define _call_instinit \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)){ \
	        FAIL(); \
	    } else { \
	        DEPTH = RESET_DEPTH(); \
	    } \
	  } \
	} else if (pt->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	} \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR */
#else /* YAPOR_SBA */
#ifdef YAPOR
#define _call_instinit \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)){ \
	        FAIL(); \
	    } else { \
	        DEPTH = RESET_DEPTH(); \
	    } \
	  } \
	} else if (pt->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	} \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	SCH_check_requests(); \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR */
#define _call_instinit \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)){ \
	        FAIL(); \
	    } else { \
	        DEPTH = RESET_DEPTH(); \
	    } \
	  } \
	} else if (pt->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	} \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR */
#endif /* YAPOR_SBA */
#else /* FROZEN_STACKS */
#ifdef YAPOR
#define _call_instinit \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)){ \
	        FAIL(); \
	    } else { \
	        DEPTH = RESET_DEPTH(); \
	    } \
	  } \
	} else if (pt->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	} \
	if (ENV_YREG > (CELL *) B) { \
	  ENV_YREG = (CELL *) B; \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	SCH_check_requests(); \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR */
#define _call_instinit \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)){ \
	        FAIL(); \
	    } else { \
	        DEPTH = RESET_DEPTH(); \
	    } \
	  } \
	} else if (pt->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	} \
	if (ENV_YREG > (CELL *) B) { \
	  ENV_YREG = (CELL *) B; \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR */
#endif /* FROZEN_STACKS */
#else /* DEPTH_LIMIT */
#ifdef FROZEN_STACKS
#ifdef YAPOR_SBA
#ifdef YAPOR
#define _call_instinit \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	SCH_check_requests(); \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR */
#define _call_instinit \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR */
#else /* YAPOR_SBA */
#ifdef YAPOR
#define _call_instinit \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	SCH_check_requests(); \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR */
#define _call_instinit \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR */
#endif /* YAPOR_SBA */
#else /* FROZEN_STACKS */
#ifdef YAPOR
#define _call_instinit \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (ENV_YREG > (CELL *) B) { \
	  ENV_YREG = (CELL *) B; \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	SCH_check_requests(); \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR */
#define _call_instinit \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (ENV_YREG > (CELL *) B) { \
	  ENV_YREG = (CELL *) B; \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR */
#endif /* FROZEN_STACKS */
#endif /* DEPTH_LIMIT */
#else /* NO_CHECKING */
#ifdef DEPTH_LIMIT
#ifdef FROZEN_STACKS
#ifdef YAPOR_SBA
#ifdef YAPOR
#define _call_instinit \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	check_stack_on_call; \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)){ \
	        FAIL(); \
	    } else { \
	        DEPTH = RESET_DEPTH(); \
	    } \
	  } \
	} else if (pt->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	} \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	SCH_check_requests(); \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR */
#define _call_instinit \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	check_stack_on_call; \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)){ \
	        FAIL(); \
	    } else { \
	        DEPTH = RESET_DEPTH(); \
	    } \
	  } \
	} else if (pt->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	} \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR */
#else /* YAPOR_SBA */
#ifdef YAPOR
#define _call_instinit \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	check_stack_on_call; \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)){ \
	        FAIL(); \
	    } else { \
	        DEPTH = RESET_DEPTH(); \
	    } \
	  } \
	} else if (pt->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	} \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	SCH_check_requests(); \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR */
#define _call_instinit \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	check_stack_on_call; \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)){ \
	        FAIL(); \
	    } else { \
	        DEPTH = RESET_DEPTH(); \
	    } \
	  } \
	} else if (pt->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	} \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR */
#endif /* YAPOR_SBA */
#else /* FROZEN_STACKS */
#ifdef YAPOR
#define _call_instinit \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	check_stack_on_call; \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)){ \
	        FAIL(); \
	    } else { \
	        DEPTH = RESET_DEPTH(); \
	    } \
	  } \
	} else if (pt->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	} \
	if (ENV_YREG > (CELL *) B) { \
	  ENV_YREG = (CELL *) B; \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	SCH_check_requests(); \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR */
#define _call_instinit \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	check_stack_on_call; \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)){ \
	        FAIL(); \
	    } else { \
	        DEPTH = RESET_DEPTH(); \
	    } \
	  } \
	} else if (pt->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	} \
	if (ENV_YREG > (CELL *) B) { \
	  ENV_YREG = (CELL *) B; \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR */
#endif /* FROZEN_STACKS */
#else /* DEPTH_LIMIT */
#ifdef FROZEN_STACKS
#ifdef YAPOR_SBA
#ifdef YAPOR
#define _call_instinit \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	check_stack_on_call; \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	SCH_check_requests(); \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR */
#define _call_instinit \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	check_stack_on_call; \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR */
#else /* YAPOR_SBA */
#ifdef YAPOR
#define _call_instinit \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	check_stack_on_call; \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	SCH_check_requests(); \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR */
#define _call_instinit \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	check_stack_on_call; \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b) { \
	      ENV_YREG = (CELL *) top_b; \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR */
#endif /* YAPOR_SBA */
#else /* FROZEN_STACKS */
#ifdef YAPOR
#define _call_instinit \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	check_stack_on_call; \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (ENV_YREG > (CELL *) B) { \
	  ENV_YREG = (CELL *) B; \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	SCH_check_requests(); \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR */
#define _call_instinit \
      CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt; \
	pt = (*_PREG)->u.Osbpp.p; \
	CACHE_A1(); \
	check_stack_on_call; \
	ENV = ENV_YREG; \
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
	(*_PREG) = pt->CodeOfPred; \
	save_pc(); \
	if (ENV_YREG > (CELL *) B) { \
	  ENV_YREG = (CELL *) B; \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR */
#endif /* FROZEN_STACKS */
#endif /* DEPTH_LIMIT */
#endif /* NO_CHECKING */
#endif /* LOW_LEVEL_TRACER */

#ifdef LOW_LEVEL_TRACER
#ifdef NO_CHECKING
#ifdef DEPTH_LIMIT
#define _execute_instinit \
      { \
	PredEntry *pt0; \
	CACHE_Y_AS_ENV(YREG); \
	pt0 = (*_PREG)->u.pp.p; \
	if (Yap_do_low_level_trace) { \
	  low_level_trace(enter_pred,pt0,XREGS+1); \
	} \
	CACHE_A1(); \
	BEGD(d0); \
	d0 = (CELL)B; \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	ENV_YREG[E_CB] = d0; \
	ENDD(d0); \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt0->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)) { \
          FAIL(); \
        } \
	    else { \
          DEPTH = RESET_DEPTH(); \
        } \
	  } \
	} else if (pt0->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
    } \
	GONEXT(); \
	ENDCACHE_Y_AS_ENV(); \
      }
#else /* DEPTH_LIMIT */
#define _execute_instinit \
      { \
	PredEntry *pt0; \
	CACHE_Y_AS_ENV(YREG); \
	pt0 = (*_PREG)->u.pp.p; \
	if (Yap_do_low_level_trace) { \
	  low_level_trace(enter_pred,pt0,XREGS+1); \
	} \
	CACHE_A1(); \
	BEGD(d0); \
	d0 = (CELL)B; \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	ENV_YREG[E_CB] = d0; \
	ENDD(d0); \
	GONEXT(); \
	ENDCACHE_Y_AS_ENV(); \
      }
#endif /* DEPTH_LIMIT */
#else /* NO_CHECKING */
#ifdef DEPTH_LIMIT
#define _execute_instinit \
      { \
	PredEntry *pt0; \
	CACHE_Y_AS_ENV(YREG); \
	pt0 = (*_PREG)->u.pp.p; \
	if (Yap_do_low_level_trace) { \
	  low_level_trace(enter_pred,pt0,XREGS+1); \
	} \
	CACHE_A1(); \
	BEGD(d0); \
	d0 = (CELL)B; \
	check_stack_on_execute; \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	ENV_YREG[E_CB] = d0; \
	ENDD(d0); \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt0->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)) { \
          FAIL(); \
        } \
	    else { \
          DEPTH = RESET_DEPTH(); \
        } \
	  } \
	} else if (pt0->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
    } \
	GONEXT(); \
	ENDCACHE_Y_AS_ENV(); \
      }
#else /* DEPTH_LIMIT */
#define _execute_instinit \
      { \
	PredEntry *pt0; \
	CACHE_Y_AS_ENV(YREG); \
	pt0 = (*_PREG)->u.pp.p; \
	if (Yap_do_low_level_trace) { \
	  low_level_trace(enter_pred,pt0,XREGS+1); \
	} \
	CACHE_A1(); \
	BEGD(d0); \
	d0 = (CELL)B; \
	check_stack_on_execute; \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	ENV_YREG[E_CB] = d0; \
	ENDD(d0); \
	GONEXT(); \
	ENDCACHE_Y_AS_ENV(); \
      }
#endif /* DEPTH_LIMIT */
#endif /* NO_CHECKING */
#else /* LOW_LEVEL_TRACER */
#ifdef NO_CHECKING
#ifdef DEPTH_LIMIT
#define _execute_instinit \
      { \
	PredEntry *pt0; \
	CACHE_Y_AS_ENV(YREG); \
	pt0 = (*_PREG)->u.pp.p; \
	CACHE_A1(); \
	BEGD(d0); \
	d0 = (CELL)B; \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	ENV_YREG[E_CB] = d0; \
	ENDD(d0); \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt0->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)) { \
          FAIL(); \
        } \
	    else { \
          DEPTH = RESET_DEPTH(); \
        } \
	  } \
	} else if (pt0->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
    } \
	GONEXT(); \
	ENDCACHE_Y_AS_ENV(); \
      }
#else /* DEPTH_LIMIT */
#define _execute_instinit \
      { \
	PredEntry *pt0; \
	CACHE_Y_AS_ENV(YREG); \
	pt0 = (*_PREG)->u.pp.p; \
	CACHE_A1(); \
	BEGD(d0); \
	d0 = (CELL)B; \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	ENV_YREG[E_CB] = d0; \
	ENDD(d0); \
	GONEXT(); \
	ENDCACHE_Y_AS_ENV(); \
      }
#endif /* DEPTH_LIMIT */
#else /* NO_CHECKING */
#ifdef DEPTH_LIMIT
#define _execute_instinit \
      { \
	PredEntry *pt0; \
	CACHE_Y_AS_ENV(YREG); \
	pt0 = (*_PREG)->u.pp.p; \
	CACHE_A1(); \
	BEGD(d0); \
	d0 = (CELL)B; \
	check_stack_on_execute; \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	ENV_YREG[E_CB] = d0; \
	ENDD(d0); \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt0->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)) { \
          FAIL(); \
        } \
	    else { \
          DEPTH = RESET_DEPTH(); \
        } \
	  } \
	} else if (pt0->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
    } \
	GONEXT(); \
	ENDCACHE_Y_AS_ENV(); \
      }
#else /* DEPTH_LIMIT */
#define _execute_instinit \
      { \
	PredEntry *pt0; \
	CACHE_Y_AS_ENV(YREG); \
	pt0 = (*_PREG)->u.pp.p; \
	CACHE_A1(); \
	BEGD(d0); \
	d0 = (CELL)B; \
	check_stack_on_execute; \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	ENV_YREG[E_CB] = d0; \
	ENDD(d0); \
	GONEXT(); \
	ENDCACHE_Y_AS_ENV(); \
      }
#endif /* DEPTH_LIMIT */
#endif /* NO_CHECKING */
#endif /* LOW_LEVEL_TRACER */

#ifdef LOW_LEVEL_TRACER
#ifdef NO_CHECKING
#ifdef DEPTH_LIMIT
#ifdef FROZEN_STACKS
#ifdef YAPOR_SBA
#define _dexecute_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.pp.p,XREGS+1); \
	  } \
     CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt0; \
	CACHE_A1(); \
	pt0 = (*_PREG)->u.pp.p; \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt0->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)) { \
	      FAIL(); \
		} \
	    else { \
		  DEPTH = RESET_DEPTH(); \
		} \
	  } \
	} else if (pt0->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	 } \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
	ENV_YREG = ENV = (CELL *) ENV_YREG[E_E]; \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) { \
	    ENV_YREG = (CELL *) top_b; \
      } \
	  else { \
	    ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size((*_CPREG))); \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR_SBA */
#define _dexecute_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.pp.p,XREGS+1); \
	  } \
     CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt0; \
	CACHE_A1(); \
	pt0 = (*_PREG)->u.pp.p; \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt0->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)) { \
	      FAIL(); \
		} \
	    else { \
		  DEPTH = RESET_DEPTH(); \
		} \
	  } \
	} else if (pt0->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	 } \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
	ENV_YREG = ENV = (CELL *) ENV_YREG[E_E]; \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b) { \
	    ENV_YREG = (CELL *) top_b; \
	  } \
	  else { \
	    ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size((*_CPREG))); \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR_SBA */
#else /* FROZEN_STACKS */
#define _dexecute_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.pp.p,XREGS+1); \
	  } \
     CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt0; \
	CACHE_A1(); \
	pt0 = (*_PREG)->u.pp.p; \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt0->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)) { \
	      FAIL(); \
		} \
	    else { \
		  DEPTH = RESET_DEPTH(); \
		} \
	  } \
	} else if (pt0->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	 } \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
	ENV_YREG = ENV = (CELL *) ENV_YREG[E_E]; \
	if (ENV_YREG > (CELL *)B) { \
	  ENV_YREG = (CELL *)B; \
	} \
	else { \
	  ENV_YREG = (CELL *) ((CELL) ENV_YREG + ENV_Size((*_CPREG))); \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* FROZEN_STACKS */
#else /* DEPTH_LIMIT */
#ifdef FROZEN_STACKS
#ifdef YAPOR_SBA
#define _dexecute_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.pp.p,XREGS+1); \
	  } \
     CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt0; \
	CACHE_A1(); \
	pt0 = (*_PREG)->u.pp.p; \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
	ENV_YREG = ENV = (CELL *) ENV_YREG[E_E]; \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) { \
	    ENV_YREG = (CELL *) top_b; \
      } \
	  else { \
	    ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size((*_CPREG))); \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR_SBA */
#define _dexecute_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.pp.p,XREGS+1); \
	  } \
     CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt0; \
	CACHE_A1(); \
	pt0 = (*_PREG)->u.pp.p; \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
	ENV_YREG = ENV = (CELL *) ENV_YREG[E_E]; \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b) { \
	    ENV_YREG = (CELL *) top_b; \
	  } \
	  else { \
	    ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size((*_CPREG))); \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR_SBA */
#else /* FROZEN_STACKS */
#define _dexecute_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.pp.p,XREGS+1); \
	  } \
     CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt0; \
	CACHE_A1(); \
	pt0 = (*_PREG)->u.pp.p; \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
	ENV_YREG = ENV = (CELL *) ENV_YREG[E_E]; \
	if (ENV_YREG > (CELL *)B) { \
	  ENV_YREG = (CELL *)B; \
	} \
	else { \
	  ENV_YREG = (CELL *) ((CELL) ENV_YREG + ENV_Size((*_CPREG))); \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* FROZEN_STACKS */
#endif /* DEPTH_LIMIT */
#else /* NO_CHECKING */
#ifdef DEPTH_LIMIT
#ifdef FROZEN_STACKS
#ifdef YAPOR_SBA
#define _dexecute_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.pp.p,XREGS+1); \
	  } \
     CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt0; \
	CACHE_A1(); \
	pt0 = (*_PREG)->u.pp.p; \
	check_stack_on_dexecute; \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt0->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)) { \
	      FAIL(); \
		} \
	    else { \
		  DEPTH = RESET_DEPTH(); \
		} \
	  } \
	} else if (pt0->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	 } \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
	ENV_YREG = ENV = (CELL *) ENV_YREG[E_E]; \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) { \
	    ENV_YREG = (CELL *) top_b; \
      } \
	  else { \
	    ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size((*_CPREG))); \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR_SBA */
#define _dexecute_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.pp.p,XREGS+1); \
	  } \
     CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt0; \
	CACHE_A1(); \
	pt0 = (*_PREG)->u.pp.p; \
	check_stack_on_dexecute; \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt0->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)) { \
	      FAIL(); \
		} \
	    else { \
		  DEPTH = RESET_DEPTH(); \
		} \
	  } \
	} else if (pt0->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	 } \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
	ENV_YREG = ENV = (CELL *) ENV_YREG[E_E]; \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b) { \
	    ENV_YREG = (CELL *) top_b; \
	  } \
	  else { \
	    ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size((*_CPREG))); \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR_SBA */
#else /* FROZEN_STACKS */
#define _dexecute_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.pp.p,XREGS+1); \
	  } \
     CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt0; \
	CACHE_A1(); \
	pt0 = (*_PREG)->u.pp.p; \
	check_stack_on_dexecute; \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt0->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)) { \
	      FAIL(); \
		} \
	    else { \
		  DEPTH = RESET_DEPTH(); \
		} \
	  } \
	} else if (pt0->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	 } \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
	ENV_YREG = ENV = (CELL *) ENV_YREG[E_E]; \
	if (ENV_YREG > (CELL *)B) { \
	  ENV_YREG = (CELL *)B; \
	} \
	else { \
	  ENV_YREG = (CELL *) ((CELL) ENV_YREG + ENV_Size((*_CPREG))); \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* FROZEN_STACKS */
#else /* DEPTH_LIMIT */
#ifdef FROZEN_STACKS
#ifdef YAPOR_SBA
#define _dexecute_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.pp.p,XREGS+1); \
	  } \
     CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt0; \
	CACHE_A1(); \
	pt0 = (*_PREG)->u.pp.p; \
	check_stack_on_dexecute; \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
	ENV_YREG = ENV = (CELL *) ENV_YREG[E_E]; \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) { \
	    ENV_YREG = (CELL *) top_b; \
      } \
	  else { \
	    ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size((*_CPREG))); \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR_SBA */
#define _dexecute_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.pp.p,XREGS+1); \
	  } \
     CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt0; \
	CACHE_A1(); \
	pt0 = (*_PREG)->u.pp.p; \
	check_stack_on_dexecute; \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
	ENV_YREG = ENV = (CELL *) ENV_YREG[E_E]; \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b) { \
	    ENV_YREG = (CELL *) top_b; \
	  } \
	  else { \
	    ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size((*_CPREG))); \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR_SBA */
#else /* FROZEN_STACKS */
#define _dexecute_instinit \
      if (Yap_do_low_level_trace) { \
	low_level_trace(enter_pred,(*_PREG)->u.pp.p,XREGS+1); \
	  } \
     CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt0; \
	CACHE_A1(); \
	pt0 = (*_PREG)->u.pp.p; \
	check_stack_on_dexecute; \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
	ENV_YREG = ENV = (CELL *) ENV_YREG[E_E]; \
	if (ENV_YREG > (CELL *)B) { \
	  ENV_YREG = (CELL *)B; \
	} \
	else { \
	  ENV_YREG = (CELL *) ((CELL) ENV_YREG + ENV_Size((*_CPREG))); \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* FROZEN_STACKS */
#endif /* DEPTH_LIMIT */
#endif /* NO_CHECKING */
#else /* LOW_LEVEL_TRACER */
#ifdef NO_CHECKING
#ifdef DEPTH_LIMIT
#ifdef FROZEN_STACKS
#ifdef YAPOR_SBA
#define _dexecute_instinit \
     CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt0; \
	CACHE_A1(); \
	pt0 = (*_PREG)->u.pp.p; \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt0->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)) { \
	      FAIL(); \
		} \
	    else { \
		  DEPTH = RESET_DEPTH(); \
		} \
	  } \
	} else if (pt0->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	 } \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
	ENV_YREG = ENV = (CELL *) ENV_YREG[E_E]; \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) { \
	    ENV_YREG = (CELL *) top_b; \
      } \
	  else { \
	    ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size((*_CPREG))); \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR_SBA */
#define _dexecute_instinit \
     CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt0; \
	CACHE_A1(); \
	pt0 = (*_PREG)->u.pp.p; \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt0->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)) { \
	      FAIL(); \
		} \
	    else { \
		  DEPTH = RESET_DEPTH(); \
		} \
	  } \
	} else if (pt0->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	 } \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
	ENV_YREG = ENV = (CELL *) ENV_YREG[E_E]; \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b) { \
	    ENV_YREG = (CELL *) top_b; \
	  } \
	  else { \
	    ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size((*_CPREG))); \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR_SBA */
#else /* FROZEN_STACKS */
#define _dexecute_instinit \
     CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt0; \
	CACHE_A1(); \
	pt0 = (*_PREG)->u.pp.p; \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt0->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)) { \
	      FAIL(); \
		} \
	    else { \
		  DEPTH = RESET_DEPTH(); \
		} \
	  } \
	} else if (pt0->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	 } \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
	ENV_YREG = ENV = (CELL *) ENV_YREG[E_E]; \
	if (ENV_YREG > (CELL *)B) { \
	  ENV_YREG = (CELL *)B; \
	} \
	else { \
	  ENV_YREG = (CELL *) ((CELL) ENV_YREG + ENV_Size((*_CPREG))); \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* FROZEN_STACKS */
#else /* DEPTH_LIMIT */
#ifdef FROZEN_STACKS
#ifdef YAPOR_SBA
#define _dexecute_instinit \
     CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt0; \
	CACHE_A1(); \
	pt0 = (*_PREG)->u.pp.p; \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
	ENV_YREG = ENV = (CELL *) ENV_YREG[E_E]; \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) { \
	    ENV_YREG = (CELL *) top_b; \
      } \
	  else { \
	    ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size((*_CPREG))); \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR_SBA */
#define _dexecute_instinit \
     CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt0; \
	CACHE_A1(); \
	pt0 = (*_PREG)->u.pp.p; \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
	ENV_YREG = ENV = (CELL *) ENV_YREG[E_E]; \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b) { \
	    ENV_YREG = (CELL *) top_b; \
	  } \
	  else { \
	    ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size((*_CPREG))); \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR_SBA */
#else /* FROZEN_STACKS */
#define _dexecute_instinit \
     CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt0; \
	CACHE_A1(); \
	pt0 = (*_PREG)->u.pp.p; \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
	ENV_YREG = ENV = (CELL *) ENV_YREG[E_E]; \
	if (ENV_YREG > (CELL *)B) { \
	  ENV_YREG = (CELL *)B; \
	} \
	else { \
	  ENV_YREG = (CELL *) ((CELL) ENV_YREG + ENV_Size((*_CPREG))); \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* FROZEN_STACKS */
#endif /* DEPTH_LIMIT */
#else /* NO_CHECKING */
#ifdef DEPTH_LIMIT
#ifdef FROZEN_STACKS
#ifdef YAPOR_SBA
#define _dexecute_instinit \
     CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt0; \
	CACHE_A1(); \
	pt0 = (*_PREG)->u.pp.p; \
	check_stack_on_dexecute; \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt0->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)) { \
	      FAIL(); \
		} \
	    else { \
		  DEPTH = RESET_DEPTH(); \
		} \
	  } \
	} else if (pt0->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	 } \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
	ENV_YREG = ENV = (CELL *) ENV_YREG[E_E]; \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) { \
	    ENV_YREG = (CELL *) top_b; \
      } \
	  else { \
	    ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size((*_CPREG))); \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR_SBA */
#define _dexecute_instinit \
     CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt0; \
	CACHE_A1(); \
	pt0 = (*_PREG)->u.pp.p; \
	check_stack_on_dexecute; \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt0->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)) { \
	      FAIL(); \
		} \
	    else { \
		  DEPTH = RESET_DEPTH(); \
		} \
	  } \
	} else if (pt0->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	 } \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
	ENV_YREG = ENV = (CELL *) ENV_YREG[E_E]; \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b) { \
	    ENV_YREG = (CELL *) top_b; \
	  } \
	  else { \
	    ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size((*_CPREG))); \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR_SBA */
#else /* FROZEN_STACKS */
#define _dexecute_instinit \
     CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt0; \
	CACHE_A1(); \
	pt0 = (*_PREG)->u.pp.p; \
	check_stack_on_dexecute; \
	if (DEPTH <= MkIntTerm(1)) { \
	  if (pt0->ModuleOfPred) { \
	    if (DEPTH == MkIntTerm(0)) { \
	      FAIL(); \
		} \
	    else { \
		  DEPTH = RESET_DEPTH(); \
		} \
	  } \
	} else if (pt0->ModuleOfPred) { \
	  DEPTH -= MkIntConstant(2); \
	 } \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
	ENV_YREG = ENV = (CELL *) ENV_YREG[E_E]; \
	if (ENV_YREG > (CELL *)B) { \
	  ENV_YREG = (CELL *)B; \
	} \
	else { \
	  ENV_YREG = (CELL *) ((CELL) ENV_YREG + ENV_Size((*_CPREG))); \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* FROZEN_STACKS */
#else /* DEPTH_LIMIT */
#ifdef FROZEN_STACKS
#ifdef YAPOR_SBA
#define _dexecute_instinit \
     CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt0; \
	CACHE_A1(); \
	pt0 = (*_PREG)->u.pp.p; \
	check_stack_on_dexecute; \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
	ENV_YREG = ENV = (CELL *) ENV_YREG[E_E]; \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) { \
	    ENV_YREG = (CELL *) top_b; \
      } \
	  else { \
	    ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size((*_CPREG))); \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#else /* YAPOR_SBA */
#define _dexecute_instinit \
     CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt0; \
	CACHE_A1(); \
	pt0 = (*_PREG)->u.pp.p; \
	check_stack_on_dexecute; \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
	ENV_YREG = ENV = (CELL *) ENV_YREG[E_E]; \
	{ \
	  choiceptr top_b = PROTECT_FROZEN_B(B); \
	  if (ENV_YREG > (CELL *) top_b) { \
	    ENV_YREG = (CELL *) top_b; \
	  } \
	  else { \
	    ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size((*_CPREG))); \
	  } \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* YAPOR_SBA */
#else /* FROZEN_STACKS */
#define _dexecute_instinit \
     CACHE_Y_AS_ENV(YREG); \
      { \
	PredEntry *pt0; \
	CACHE_A1(); \
	pt0 = (*_PREG)->u.pp.p; \
	check_stack_on_dexecute; \
	(*_PREG) = pt0->CodeOfPred; \
	save_pc(); \
	(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
	ENV_YREG = ENV = (CELL *) ENV_YREG[E_E]; \
	if (ENV_YREG > (CELL *)B) { \
	  ENV_YREG = (CELL *)B; \
	} \
	else { \
	  ENV_YREG = (CELL *) ((CELL) ENV_YREG + ENV_Size((*_CPREG))); \
	} \
	WRITEBACK_Y_AS_ENV(); \
	ENV_YREG[E_CB] = (CELL) B; \
	GONEXT(); \
      } \
      ENDCACHE_Y_AS_ENV();
#endif /* FROZEN_STACKS */
#endif /* DEPTH_LIMIT */
#endif /* NO_CHECKING */
#endif /* LOW_LEVEL_TRACER */

#ifdef DEPTH_LIMIT
#define _allocate_instinit \
      CACHE_Y_AS_ENV(YREG); \
      (*_PREG) = NEXTOP((*_PREG), e); \
      ENV_YREG[E_CP] = (CELL) (*_CPREG); \
      ENV_YREG[E_E] = (CELL) ENV; \
      ENV_YREG[E_DEPTH] = DEPTH; \
      ENV = ENV_YREG; \
      ENDCACHE_Y_AS_ENV(); \
      GONEXT();
#else /* DEPTH_LIMIT */
#define _allocate_instinit \
      CACHE_Y_AS_ENV(YREG); \
      (*_PREG) = NEXTOP((*_PREG), e); \
      ENV_YREG[E_CP] = (CELL) (*_CPREG); \
      ENV_YREG[E_E] = (CELL) ENV; \
      ENV = ENV_YREG; \
      ENDCACHE_Y_AS_ENV(); \
      GONEXT();
#endif /* DEPTH_LIMIT */

#ifdef DEPTH_LIMIT
#ifdef FROZEN_STACKS
#ifdef YAPOR_SBA
#ifdef NO_CHECKING
#define _deallocate_instinit \
      check_trail(TR); \
      CACHE_Y_AS_ENV(YREG); \
      (*_PREG) = NEXTOP((*_PREG), p); \
      (*_SREG) = YREG; \
      (*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
      ENV = ENV_YREG = (CELL *) ENV_YREG[E_E]; \
      DEPTH = ENV_YREG[E_DEPTH]; \
      { \
	choiceptr top_b = PROTECT_FROZEN_B(B); \
	if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) \
	    ENV_YREG = (CELL *) top_b; \
	else \
	  ENV_YREG = (CELL *)((CELL) ENV_YREG + ENV_Size((*_CPREG))); \
      } \
      WRITEBACK_Y_AS_ENV(); \
      ENDCACHE_Y_AS_ENV(); \
      GONEXT();
#else /* NO_CHECKING */
#define _deallocate_instinit \
      check_trail(TR); \
      CACHE_Y_AS_ENV(YREG); \
      (*_PREG) = NEXTOP((*_PREG), p); \
      (*_SREG) = YREG; \
      (*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
      ENV = ENV_YREG = (CELL *) ENV_YREG[E_E]; \
      DEPTH = ENV_YREG[E_DEPTH]; \
      { \
	choiceptr top_b = PROTECT_FROZEN_B(B); \
	if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) \
	    ENV_YREG = (CELL *) top_b; \
	else \
	  ENV_YREG = (CELL *)((CELL) ENV_YREG + ENV_Size((*_CPREG))); \
      } \
      WRITEBACK_Y_AS_ENV(); \
      check_stack_on_deallocate; \
      ENDCACHE_Y_AS_ENV(); \
      GONEXT();
#endif /* NO_CHECKING */
#else /* YAPOR_SBA */
#ifdef NO_CHECKING
#define _deallocate_instinit \
      check_trail(TR); \
      CACHE_Y_AS_ENV(YREG); \
      (*_PREG) = NEXTOP((*_PREG), p); \
      (*_SREG) = YREG; \
      (*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
      ENV = ENV_YREG = (CELL *) ENV_YREG[E_E]; \
      DEPTH = ENV_YREG[E_DEPTH]; \
      { \
	choiceptr top_b = PROTECT_FROZEN_B(B); \
	if (ENV_YREG > (CELL *) top_b) \
	    ENV_YREG = (CELL *) top_b; \
	else \
	  ENV_YREG = (CELL *)((CELL) ENV_YREG + ENV_Size((*_CPREG))); \
      } \
      WRITEBACK_Y_AS_ENV(); \
      ENDCACHE_Y_AS_ENV(); \
      GONEXT();
#else /* NO_CHECKING */
#define _deallocate_instinit \
      check_trail(TR); \
      CACHE_Y_AS_ENV(YREG); \
      (*_PREG) = NEXTOP((*_PREG), p); \
      (*_SREG) = YREG; \
      (*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
      ENV = ENV_YREG = (CELL *) ENV_YREG[E_E]; \
      DEPTH = ENV_YREG[E_DEPTH]; \
      { \
	choiceptr top_b = PROTECT_FROZEN_B(B); \
	if (ENV_YREG > (CELL *) top_b) \
	    ENV_YREG = (CELL *) top_b; \
	else \
	  ENV_YREG = (CELL *)((CELL) ENV_YREG + ENV_Size((*_CPREG))); \
      } \
      WRITEBACK_Y_AS_ENV(); \
      check_stack_on_deallocate; \
      ENDCACHE_Y_AS_ENV(); \
      GONEXT();
#endif /* NO_CHECKING */
#endif /* YAPOR_SBA */
#else /* FROZEN_STACKS */
#ifdef NO_CHECKING
#define _deallocate_instinit \
      check_trail(TR); \
      CACHE_Y_AS_ENV(YREG); \
      (*_PREG) = NEXTOP((*_PREG), p); \
      (*_SREG) = YREG; \
      (*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
      ENV = ENV_YREG = (CELL *) ENV_YREG[E_E]; \
      DEPTH = ENV_YREG[E_DEPTH]; \
      if (ENV_YREG > (CELL *) B) \
	ENV_YREG = (CELL *) B; \
      else \
	ENV_YREG = (CELL *) ((CELL) ENV_YREG + ENV_Size((*_CPREG))); \
      WRITEBACK_Y_AS_ENV(); \
      ENDCACHE_Y_AS_ENV(); \
      GONEXT();
#else /* NO_CHECKING */
#define _deallocate_instinit \
      check_trail(TR); \
      CACHE_Y_AS_ENV(YREG); \
      (*_PREG) = NEXTOP((*_PREG), p); \
      (*_SREG) = YREG; \
      (*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
      ENV = ENV_YREG = (CELL *) ENV_YREG[E_E]; \
      DEPTH = ENV_YREG[E_DEPTH]; \
      if (ENV_YREG > (CELL *) B) \
	ENV_YREG = (CELL *) B; \
      else \
	ENV_YREG = (CELL *) ((CELL) ENV_YREG + ENV_Size((*_CPREG))); \
      WRITEBACK_Y_AS_ENV(); \
      check_stack_on_deallocate; \
      ENDCACHE_Y_AS_ENV(); \
      GONEXT();
#endif /* NO_CHECKING */
#endif /* FROZEN_STACKS */
#else /* DEPTH_LIMIT */
#ifdef FROZEN_STACKS
#ifdef YAPOR_SBA
#ifdef NO_CHECKING
#define _deallocate_instinit \
      check_trail(TR); \
      CACHE_Y_AS_ENV(YREG); \
      (*_PREG) = NEXTOP((*_PREG), p); \
      (*_SREG) = YREG; \
      (*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
      ENV = ENV_YREG = (CELL *) ENV_YREG[E_E]; \
      { \
	choiceptr top_b = PROTECT_FROZEN_B(B); \
	if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) \
	    ENV_YREG = (CELL *) top_b; \
	else \
	  ENV_YREG = (CELL *)((CELL) ENV_YREG + ENV_Size((*_CPREG))); \
      } \
      WRITEBACK_Y_AS_ENV(); \
      ENDCACHE_Y_AS_ENV(); \
      GONEXT();
#else /* NO_CHECKING */
#define _deallocate_instinit \
      check_trail(TR); \
      CACHE_Y_AS_ENV(YREG); \
      (*_PREG) = NEXTOP((*_PREG), p); \
      (*_SREG) = YREG; \
      (*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
      ENV = ENV_YREG = (CELL *) ENV_YREG[E_E]; \
      { \
	choiceptr top_b = PROTECT_FROZEN_B(B); \
	if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) \
	    ENV_YREG = (CELL *) top_b; \
	else \
	  ENV_YREG = (CELL *)((CELL) ENV_YREG + ENV_Size((*_CPREG))); \
      } \
      WRITEBACK_Y_AS_ENV(); \
      check_stack_on_deallocate; \
      ENDCACHE_Y_AS_ENV(); \
      GONEXT();
#endif /* NO_CHECKING */
#else /* YAPOR_SBA */
#ifdef NO_CHECKING
#define _deallocate_instinit \
      check_trail(TR); \
      CACHE_Y_AS_ENV(YREG); \
      (*_PREG) = NEXTOP((*_PREG), p); \
      (*_SREG) = YREG; \
      (*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
      ENV = ENV_YREG = (CELL *) ENV_YREG[E_E]; \
      { \
	choiceptr top_b = PROTECT_FROZEN_B(B); \
	if (ENV_YREG > (CELL *) top_b) \
	    ENV_YREG = (CELL *) top_b; \
	else \
	  ENV_YREG = (CELL *)((CELL) ENV_YREG + ENV_Size((*_CPREG))); \
      } \
      WRITEBACK_Y_AS_ENV(); \
      ENDCACHE_Y_AS_ENV(); \
      GONEXT();
#else /* NO_CHECKING */
#define _deallocate_instinit \
      check_trail(TR); \
      CACHE_Y_AS_ENV(YREG); \
      (*_PREG) = NEXTOP((*_PREG), p); \
      (*_SREG) = YREG; \
      (*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
      ENV = ENV_YREG = (CELL *) ENV_YREG[E_E]; \
      { \
	choiceptr top_b = PROTECT_FROZEN_B(B); \
	if (ENV_YREG > (CELL *) top_b) \
	    ENV_YREG = (CELL *) top_b; \
	else \
	  ENV_YREG = (CELL *)((CELL) ENV_YREG + ENV_Size((*_CPREG))); \
      } \
      WRITEBACK_Y_AS_ENV(); \
      check_stack_on_deallocate; \
      ENDCACHE_Y_AS_ENV(); \
      GONEXT();
#endif /* NO_CHECKING */
#endif /* YAPOR_SBA */
#else /* FROZEN_STACKS */
#ifdef NO_CHECKING
#define _deallocate_instinit \
      check_trail(TR); \
      CACHE_Y_AS_ENV(YREG); \
      (*_PREG) = NEXTOP((*_PREG), p); \
      (*_SREG) = YREG; \
      (*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
      ENV = ENV_YREG = (CELL *) ENV_YREG[E_E]; \
      if (ENV_YREG > (CELL *) B) \
	ENV_YREG = (CELL *) B; \
      else \
	ENV_YREG = (CELL *) ((CELL) ENV_YREG + ENV_Size((*_CPREG))); \
      WRITEBACK_Y_AS_ENV(); \
      ENDCACHE_Y_AS_ENV(); \
      GONEXT();
#else /* NO_CHECKING */
#define _deallocate_instinit \
      check_trail(TR); \
      CACHE_Y_AS_ENV(YREG); \
      (*_PREG) = NEXTOP((*_PREG), p); \
      (*_SREG) = YREG; \
      (*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
      ENV = ENV_YREG = (CELL *) ENV_YREG[E_E]; \
      if (ENV_YREG > (CELL *) B) \
	ENV_YREG = (CELL *) B; \
      else \
	ENV_YREG = (CELL *) ((CELL) ENV_YREG + ENV_Size((*_CPREG))); \
      WRITEBACK_Y_AS_ENV(); \
      check_stack_on_deallocate; \
      ENDCACHE_Y_AS_ENV(); \
      GONEXT();
#endif /* NO_CHECKING */
#endif /* FROZEN_STACKS */
#endif /* DEPTH_LIMIT */