#include "chdecl.h"
void CH_type_copyable(current, sched, cop)
#define ARGUMENTS 24
#include "chhead.h"
select: switch (SELECTOR) {
    case 0: goto c0;
    case 1: goto cb2;
    case 2: goto c3;
    case 3: goto c8;
    case 4: goto c9;
    case 5: goto cb43;
    case 6: goto c44;
    case 7: goto c50;
    case 8: goto c56;
    case 9: goto cb57;
    case 10: goto c58;
    case 11: goto c62;
    case 12: goto c66;
    case 13: goto c72;
    case 14: goto cb73;
    case 15: goto c74;
    case 16: goto c78;
    case 17: goto c82;
    case 18: goto c84;
    case 19: goto c86;
    case 20: goto c88;
    case 21: goto c90;
    case 22: goto c92;
    case 23: goto c94;
    case 24: goto c96;
    case 25: goto c98;
    case 26: goto c100;
    case 27: goto c103;
    case 28: goto c109;
    case 29: goto c114;
    case 30: goto c117;  }
c0:
/* block , 0 */
  if((ch_returncode = che_block(QUAL(0),sched)) != Normal)
     goto ch_raise_exception;
/* block , 1 */
  if((ch_returncode = che_block(QUAL(1),sched)) != Normal)
     goto ch_raise_exception;
  current->ip = 1;
cb2:
/* receive 3 0 */
  if ((ch_returncode = che_receive(DEF(3),DEF(0),sched)) != Normal)
     goto ch_raise_exception;
  return;
c3:
/* block , 2 */
  if((ch_returncode = che_block(QUAL(2),sched)) != Normal)
     goto ch_raise_exception;
/* copy 4 3.0 */
  if((ch_returncode = (REF(3)DOT(0).tsdr->copy)(& ch_val, REF(3)DOT(0).value
    )) != Normal) goto ch_raise_exception;
  (*(REF(4).tsdr)->finalize)(REF(4).value,F_DISCARD,sched);
  REF(4).value = ch_val;
  REF(4).tsdr = datarepmap[REF(3)DOT(0).tsdr->number];
/* insert 3.2 4 */
  if ((ch_returncode = insertfunc(DEF(3)DOT(2),DEF(4),FALSE,0)) != Normal)
     goto ch_raise_exception;
/* endblock */
  che_endblock(sched);
/* branch , 9 */
   goto c9;
c8:
/* exit , 3 */
  ch_e = handler_type__exit; ch_val = QUAL(3); goto ch_exception;
c9:
/* find 5 3.1 3.0.0 , 0 */
  if (findfunc(DEF(5),DEF(3)DOT(1),(
          arguments[0] = DEF(3)DOT(0)DOT(0),& arguments[0]),sched,0
            ) == FAILURE) goto ch_notfound;
/* find 6 5.1 3.0.1 , 0 */
  if (findfunc(DEF(6),DEF(5)DOT(1),(
          arguments[0] = DEF(3)DOT(0)DOT(1),& arguments[0]),sched,0
            ) == FAILURE) goto ch_notfound;
/* ord_case 7 6.2 */
  REF(7).value.ord_enum = REF(6)DOT(2).value.variant->info.variant_case;
  REF(7).tsdr = & dr_ord_enumeration;
/* equal . 7 =(7) , 38 */
  if ( REF(7).value.ord_enum == 7 ) goto c38;
/* equal . 7 =(6) , 50 */
  if ( REF(7).value.ord_enum == 6 ) goto c50;
/* equal . 7 =(5) , 66 */
  if ( REF(7).value.ord_enum == 5 ) goto c66;
/* equal . 7 =(8) , 82 */
  if ( REF(7).value.ord_enum == 8 ) goto c82;
/* equal . 7 =(10) , 84 */
  if ( REF(7).value.ord_enum == 10 ) goto c84;
/* equal . 7 =(11) , 86 */
  if ( REF(7).value.ord_enum == 11 ) goto c86;
/* equal . 7 =(9) , 88 */
  if ( REF(7).value.ord_enum == 9 ) goto c88;
/* equal . 7 =(4) , 90 */
  if ( REF(7).value.ord_enum == 4 ) goto c90;
/* equal . 7 =(3) , 92 */
  if ( REF(7).value.ord_enum == 3 ) goto c92;
/* equal . 7 =(2) , 94 */
  if ( REF(7).value.ord_enum == 2 ) goto c94;
/* equal . 7 =(1) , 96 */
  if ( REF(7).value.ord_enum == 1 ) goto c96;
/* equal . 7 =(0) , 98 */
  if ( REF(7).value.ord_enum == 0 ) goto c98;
/* branch , 100 */
   goto c100;
c38:
/* reveal 6.2 , 7 */
  if (7 != REF(6)DOT(2).value.variant->info.variant_case) goto ch_case_error;
/* currentprogram 8 */
  if ((ch_val.program = make_pgm_copy(sched->ready->prog)) == nil)
     goto ch_depletion;
  (*(REF(8).tsdr)->finalize)(REF(8).value,F_DISCARD,sched);
  REF(8).value = ch_val; REF(8).tsdr = & dr_program;
/* procedure 9 8 , 4 */
  if ((ch_returncode = che_procedure(DEF(9),DEF(8),QUAL(4),sched)) != Normal)
     goto ch_raise_exception;
/* discard 8 */
  (*(REF(8).tsdr)->finalize)(REF(8).value,F_DISCARD,sched);
  REF(8).tsdr = & dr_bottom;
/* move 10 9 */
  (*(REF(10).tsdr)->finalize)(REF(10).value,F_DISCARD,sched);
  REF(10) = REF(9);
  REF(9).tsdr = & dr_bottom;
  current->ip = 5;
cb43:
/* call 10 6.2.0.2 3.1 3.2 11 , 5 */
  if ((ch_returncode = che_call((
          arguments[0] = DEF(10),
          arguments[1] = DEF(6)DOT(2)DOT(0)DOT(2),
          arguments[2] = DEF(3)DOT(1),
          arguments[3] = DEF(3)DOT(2),
          arguments[4] = DEF(11),
          arguments[4+1] = nil,& arguments[0]),QUAL(5),sched)) != Normal)
     goto ch_raise_exception;
  return;
c44:
/* not 12 11 */
  REF(12).value.boolean = !REF(11).value.boolean;
  REF(12).tsdr = & dr_boolean;
/* branch_false 12 , 48 */
  if ( !REF(12).value.boolean ) goto c48;
/* exit , 6 */
  ch_e = handler_type__exit; ch_val = QUAL(6); goto ch_exception;
c48:
/* exit , 3 */
  ch_e = handler_type__exit; ch_val = QUAL(3); goto ch_exception;
c50:
/* currentprogram 13 */
  if ((ch_val.program = make_pgm_copy(sched->ready->prog)) == nil)
     goto ch_depletion;
  (*(REF(13).tsdr)->finalize)(REF(13).value,F_DISCARD,sched);
  REF(13).value = ch_val; REF(13).tsdr = & dr_program;
/* procedure 14 13 , 4 */
  if ((ch_returncode = che_procedure(DEF(14),DEF(13),QUAL(4)
    ,sched)) != Normal) goto ch_raise_exception;
/* discard 13 */
  (*(REF(13).tsdr)->finalize)(REF(13).value,F_DISCARD,sched);
  REF(13).tsdr = & dr_bottom;
/* move 10 14 */
  (*(REF(10).tsdr)->finalize)(REF(10).value,F_DISCARD,sched);
  REF(10) = REF(14);
  REF(14).tsdr = & dr_bottom;
/* copy 15 6.1 */
  if((ch_returncode = cp_table(& ch_val, REF(6)DOT(1).value)) != Normal)
     goto ch_raise_exception;
  (*(REF(15).tsdr)->finalize)(REF(15).value,F_DISCARD,sched);
  REF(15).value = ch_val;
  REF(15).tsdr = & dr_table;
/* initget 16 15 , 0,0 */
  (*(REF(16).tsdr)->finalize)(REF(16).value,F_DISCARD,sched);
  if ((ch_returncode = init_selector(DEF(16),DEF(15),nil,sched,GET,0,0
    )) != Normal) goto ch_raise_exception;
c56:
/* get_or_goto 16 15 , 62 */
  if ((ch_returncode = get_selected_object(DEF(16),DEF(15),sched)) != Normal)
     goto c62;
  current->ip = 9;
cb57:
/* call 10 16.1 3.1 3.2 17 , 5 */
  if ((ch_returncode = che_call((
          arguments[0] = DEF(10),
          arguments[1] = DEF(16)DOT(1),
          arguments[2] = DEF(3)DOT(1),
          arguments[3] = DEF(3)DOT(2),
          arguments[4] = DEF(17),
          arguments[4+1] = nil,& arguments[0]),QUAL(5),sched)) != Normal)
     goto ch_raise_exception;
  return;
c58:
/* not 18 17 */
  REF(18).value.boolean = !REF(17).value.boolean;
  REF(18).tsdr = & dr_boolean;
/* branch_false 18 , 56 */
  if ( !REF(18).value.boolean ) goto c56;
/* exit , 6 */
  ch_e = handler_type__exit; ch_val = QUAL(6); goto ch_exception;
c62:
/* endget 16 15 */
  end_selector(DEF(16),DEF(15),sched,GET);
/* discard 15 */
  (*(REF(15).tsdr)->finalize)(REF(15).value,F_DISCARD,sched);
  REF(15).tsdr = & dr_bottom;
/* exit , 3 */
  ch_e = handler_type__exit; ch_val = QUAL(3); goto ch_exception;
c66:
/* currentprogram 19 */
  if ((ch_val.program = make_pgm_copy(sched->ready->prog)) == nil)
     goto ch_depletion;
  (*(REF(19).tsdr)->finalize)(REF(19).value,F_DISCARD,sched);
  REF(19).value = ch_val; REF(19).tsdr = & dr_program;
/* procedure 20 19 , 4 */
  if ((ch_returncode = che_procedure(DEF(20),DEF(19),QUAL(4)
    ,sched)) != Normal) goto ch_raise_exception;
/* discard 19 */
  (*(REF(19).tsdr)->finalize)(REF(19).value,F_DISCARD,sched);
  REF(19).tsdr = & dr_bottom;
/* move 10 20 */
  (*(REF(10).tsdr)->finalize)(REF(10).value,F_DISCARD,sched);
  REF(10) = REF(20);
  REF(20).tsdr = & dr_bottom;
/* copy 21 6.1 */
  if((ch_returncode = cp_table(& ch_val, REF(6)DOT(1).value)) != Normal)
     goto ch_raise_exception;
  (*(REF(21).tsdr)->finalize)(REF(21).value,F_DISCARD,sched);
  REF(21).value = ch_val;
  REF(21).tsdr = & dr_table;
/* initget 22 21 , 0,0 */
  (*(REF(22).tsdr)->finalize)(REF(22).value,F_DISCARD,sched);
  if ((ch_returncode = init_selector(DEF(22),DEF(21),nil,sched,GET,0,0
    )) != Normal) goto ch_raise_exception;
c72:
/* get_or_goto 22 21 , 78 */
  if ((ch_returncode = get_selected_object(DEF(22),DEF(21),sched)) != Normal)
     goto c78;
  current->ip = 14;
cb73:
/* call 10 22.1 3.1 3.2 23 , 5 */
  if ((ch_returncode = che_call((
          arguments[0] = DEF(10),
          arguments[1] = DEF(22)DOT(1),
          arguments[2] = DEF(3)DOT(1),
          arguments[3] = DEF(3)DOT(2),
          arguments[4] = DEF(23),
          arguments[4+1] = nil,& arguments[0]),QUAL(5),sched)) != Normal)
     goto ch_raise_exception;
  return;
c74:
/* not 24 23 */
  REF(24).value.boolean = !REF(23).value.boolean;
  REF(24).tsdr = & dr_boolean;
/* branch_false 24 , 72 */
  if ( !REF(24).value.boolean ) goto c72;
/* exit , 6 */
  ch_e = handler_type__exit; ch_val = QUAL(6); goto ch_exception;
c78:
/* endget 22 21 */
  end_selector(DEF(22),DEF(21),sched,GET);
/* discard 21 */
  (*(REF(21).tsdr)->finalize)(REF(21).value,F_DISCARD,sched);
  REF(21).tsdr = & dr_bottom;
/* exit , 3 */
  ch_e = handler_type__exit; ch_val = QUAL(3); goto ch_exception;
c82:
/* exit , 6 */
  ch_e = handler_type__exit; ch_val = QUAL(6); goto ch_exception;
c84:
/* exit , 6 */
  ch_e = handler_type__exit; ch_val = QUAL(6); goto ch_exception;
c86:
/* exit , 3 */
  ch_e = handler_type__exit; ch_val = QUAL(3); goto ch_exception;
c88:
/* exit , 3 */
  ch_e = handler_type__exit; ch_val = QUAL(3); goto ch_exception;
c90:
/* exit , 3 */
  ch_e = handler_type__exit; ch_val = QUAL(3); goto ch_exception;
c92:
/* exit , 3 */
  ch_e = handler_type__exit; ch_val = QUAL(3); goto ch_exception;
c94:
/* exit , 3 */
  ch_e = handler_type__exit; ch_val = QUAL(3); goto ch_exception;
c96:
/* exit , 3 */
  ch_e = handler_type__exit; ch_val = QUAL(3); goto ch_exception;
c98:
/* exit , 3 */
  ch_e = handler_type__exit; ch_val = QUAL(3); goto ch_exception;
c100:
/* exit , 7 */
  ch_e = handler_type__exit; ch_val = QUAL(7); goto ch_exception;
/* endblock */
  che_endblock(sched);
/* branch , 114 */
   goto c114;
c103:
/* discard 10 */
  (*(REF(10).tsdr)->finalize)(REF(10).value,F_DISCARD,sched);
  REF(10).tsdr = & dr_bottom;
/* discard 4 */
  (*(REF(4).tsdr)->finalize)(REF(4).value,F_DISCARD,sched);
  REF(4).tsdr = & dr_bottom;
/* boolean 3.3 , TRUE */
  REF(3)DOT(3).value.boolean = TRUE;
  REF(3)DOT(3).tsdr = & dr_boolean;
/* 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;
/* branch , 114 */
   goto c114;
c109:
/* discard 10 */
  (*(REF(10).tsdr)->finalize)(REF(10).value,F_DISCARD,sched);
  REF(10).tsdr = & dr_bottom;
/* boolean 3.3 , FALSE */
  REF(3)DOT(3).value.boolean = FALSE;
  REF(3)DOT(3).tsdr = & dr_boolean;
/* 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;
c114:
/* discard 3 */
  (*(REF(3).tsdr)->finalize)(REF(3).value,F_DISCARD,sched);
  REF(3).tsdr = & dr_bottom;
/* endblock */
  che_endblock(sched);
c117:
/* endprocess */
  che_endprocess(sched); return;
#include "chtail.h"
