#include "chdecl.h"
void CH_pcom_liunstuff(current, sched, cop)
#define ARGUMENTS 4
#include "chhead.h"
select: switch (SELECTOR) {
    case 0: goto c0;
    case 1: goto c1;  }
c0:
/* receive 3 0 */
  if ((ch_returncode = che_receive(DEF(3),DEF(0),sched)) != Normal)
     goto ch_raise_exception;
  return;
c1:
/* copy 3.1 3.0.3 */
  if((ch_returncode = (REF(3)DOT(0)DOT(3).tsdr->copy)(& ch_val, 
    REF(3)DOT(0)DOT(3).value)) != Normal) goto ch_raise_exception;
  (*(REF(3)DOT(1).tsdr)->finalize)(REF(3)DOT(1).value,F_DISCARD,sched);
  REF(3)DOT(1).value = ch_val;
  REF(3)DOT(1).tsdr = datarepmap[REF(3)DOT(0)DOT(3).tsdr->number];
/* return 3 */
  if (ch_caller = do_return(REF(3).value)) {
    if (ch_caller->type < CProcess) ch_caller->ip++;
      sched->wakeup_proc(sched, ch_caller);}
  else rem_return(REF(3).value);
  REF(3).tsdr = & dr_bottom;
/* endprocess */
  che_endprocess(sched); return;
#include "chtail.h"
