macro endsess()
{
	NoOp(hithere);
}

macro nullchk(type)
{
	NoOp(${type} is this);
}

macro endcall(type) {
  switch(${type}) {
    case out:
      &nullchk(callid);
      if(${testnotnull}) {
        &endsess();
        goto ptr1 ; // <-- goto call to valid label
      }
      else {
ptr1: // <-- valid label
        Softhangup(${CHANNEL});
        break ;
      }
    Noop(esac) ;
  }
}

macro endcall2(type) {
  switch(${type}) {
    case out:
      &nullchk(callid);
      if(${testnotnull}) {
        &endsess();
        goto ptr1 ; // <-- goto call to valid label
      }
	case out2:
      {
ptr1: // <-- valid label
        Softhangup(${CHANNEL});
        break ;
      }
    Noop(esac) ;
  }
}

macro endcall3(type) {
  switch(${type}) {
    case out:
      &nullchk(callid);
      if(${testnotnull}) {
        &endsess();
        goto ptr1 ; // <-- goto call to valid label
      }
    Noop(esac) ;
  }
  if(${testnotnull}) {
	goto ptr1;
  }
  switch(${type}) {
	case out:
      if(${testnotnull}) {
ptr1: // <-- valid label
        Softhangup(${CHANNEL});
        break ;
      }
    Noop(esac) ;
  }
}

macro endcall4(type) {
  switch(${type}) {
    case out:
      &nullchk(callid);
      if(${testnotnull}) {
        &endsess();
        goto ptr1 ; // <-- goto call to valid label
      }
    Noop(esac) ;
  }
  if(${testnotnull}) {
	goto ptr1;
  }
  switch(${type}) {
	case out:
	  switch(${type})
	  {
		case in:
      	 if(${testnotnull}) {
ptr1: // <-- valid label
             Softhangup(${CHANNEL});
             break ;
      	 }
         Noop(esac) ;
	  }
   }
}

macro endcall5(type) {
  switch(${type}) {
    case out:
      &nullchk(callid);
      if(${testnotnull}) {
        &endsess();
        goto ptr1 ; // <-- goto call to valid label
      }
    case in:
      &nullchk(callid);
	ptr2:
      if(${testnotnull}) {
        &endsess();
        goto ptr1 ; // <-- goto call to valid label
      }
    Noop(esac) ;
  }
  if(${testnotnull}) {
	goto ptr1;
  }
  switch(${type}) {
	case out:
	  switch(${type})
	  {
		case in:
      	 if(${testnotnull}) {
ptr1: // <-- valid label
             Softhangup(${CHANNEL});
             break ;
      	 }
         Noop(esac) ;
	  }
   }
}
