#include "chdecl.h"
void CH_codegen_makeexpr(current, sched, cop)
#define ARGUMENTS 6
#include "chhead.h"
select: switch (SELECTOR) {
    case 0: goto c0;
    case 1: goto cb2;
    case 2: goto c3;
    case 3: goto c5;
    case 4: goto c35;
    case 5: goto cb40;
    case 6: goto c41;
    case 7: goto c43;
    case 8: goto c49;
    case 9: goto c53;
    case 10: goto c81;
    case 11: goto cb88;
    case 12: goto c89;
    case 13: goto c91;
    case 14: goto c97;
    case 15: goto c105;
    case 16: goto c124;
    case 17: goto c129;
    case 18: goto c132;
    case 19: goto c134;  }
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:
/* copy 4 3.1 */
  if((ch_returncode = cp_table(& ch_val, REF(3)DOT(1).value)) != Normal)
     goto ch_raise_exception;
  (*(REF(4).tsdr)->finalize)(REF(4).value,F_DISCARD,sched);
  REF(4).value = ch_val;
  REF(4).tsdr = & dr_table;
/* initget 5 4 , 0,0 */
  (*(REF(5).tsdr)->finalize)(REF(5).value,F_DISCARD,sched);
  if ((ch_returncode = init_selector(DEF(5),DEF(4),nil,sched,GET,0,0
    )) != Normal) goto ch_raise_exception;
c5:
/* get_or_goto 5 4 , 49 */
  if ((ch_returncode = get_selected_object(DEF(5),DEF(4),sched)) != Normal)
     goto c49;
/* notequal 6 5.1 =(14) */
  REF(6).value.boolean = (REF(5)DOT(1).value.ord_enum != 14);
  REF(6).tsdr = & dr_boolean;
/* notequal 7 5.1 =(23) */
  REF(7).value.boolean = (REF(5)DOT(1).value.ord_enum != 23);
  REF(7).tsdr = & dr_boolean;
/* notequal 8 5.1 =(5) */
  REF(8).value.boolean = (REF(5)DOT(1).value.ord_enum != 5);
  REF(8).tsdr = & dr_boolean;
/* and 9 7 8 */
  REF(9).value.boolean = REF(7).value.boolean&REF(8).value.boolean;
  REF(9).tsdr = & dr_boolean;
/* and 10 6 9 */
  REF(10).value.boolean = REF(6).value.boolean&REF(9).value.boolean;
  REF(10).tsdr = & dr_boolean;
/* branch_false 10 , 5 */
  if ( !REF(10).value.boolean ) goto c5;
/* lookup_at 11 5.2 =(0) */
  if ( !((ch_t = REF(5)DOT(2).value.table)->size) ) goto ch_notfound;
  (*(REF(11).tsdr)->finalize)(REF(11).value,F_DISCARD,sched);
  (*(ch_t->tbls[ORDER_TBL].des->lookup_at))
    (ch_t, ORDER_TBL, & REF(11).value,0);
  REF(11).tsdr = qdatarepmap[ch_t->tsdr->number];
/* copy 12 11 */
  if((ch_returncode = (REF(11).tsdr->copy)(& ch_val, REF(11).value
    )) != Normal) goto ch_raise_exception;
  (*(REF(12).tsdr)->finalize)(REF(12).value,F_DISCARD,sched);
  REF(12).value = ch_val;
  REF(12).tsdr = datarepmap[REF(11).tsdr->number];
/* equal 13 12 3.0 */
  REF(13).value.boolean = ((REF(12).tsdr->equal)(REF(12).value,
    REF(3)DOT(0).value));
  REF(13).tsdr = & dr_boolean;
/* discard 12 */
  (*(REF(12).tsdr)->finalize)(REF(12).value,F_DISCARD,sched);
  REF(12).tsdr = & dr_bottom;
/* branch_false 13 , 5 */
  if ( !REF(13).value.boolean ) goto c5;
/* new_record 14 , 5 */
  if ((ch_val.record = new_record(5)) == nil) goto ch_depletion;
  (*(REF(14).tsdr)->finalize)(REF(14).value,F_DISCARD,sched);
  REF(14).value = ch_val; REF(14).tsdr = & dr_record;
/* copy 14.0 5.1 */
  REF(14)DOT(0) = REF(5)DOT(1);
/* copy 14.1 5.3 */
  if((ch_returncode = cp_variant(& ch_val, REF(5)DOT(3).value)) != Normal)
     goto ch_raise_exception;
  (*(REF(14)DOT(1).tsdr)->finalize)(REF(14)DOT(1).value,F_DISCARD,sched);
  REF(14)DOT(1).value = ch_val;
  REF(14)DOT(1).tsdr = & dr_variant;
/* lookup_at 15 5.2 =(0) */
  if ( !((ch_t = REF(5)DOT(2).value.table)->size) ) goto ch_notfound;
  (*(REF(15).tsdr)->finalize)(REF(15).value,F_DISCARD,sched);
  (*(ch_t->tbls[ORDER_TBL].des->lookup_at))
    (ch_t, ORDER_TBL, & REF(15).value,0);
  REF(15).tsdr = qdatarepmap[ch_t->tsdr->number];
/* copy 14.2 15 */
  if((ch_returncode = (REF(15).tsdr->copy)(& ch_val, REF(15).value
    )) != Normal) goto ch_raise_exception;
  (*(REF(14)DOT(2).tsdr)->finalize)(REF(14)DOT(2).value,F_DISCARD,sched);
  REF(14)DOT(2).value = ch_val;
  REF(14)DOT(2).tsdr = datarepmap[REF(15).tsdr->number];
/* new_table 14.3 , 2 */
  if ((ch_returncode = che_new_table(DEF(14)DOT(3),QUAL(2),sched)) != Normal) 
     goto ch_raise_exception;
/* currentprogram 16 */
  if ((ch_val.program = make_pgm_copy(sched->ready->prog)) == nil)
     goto ch_depletion;
  (*(REF(16).tsdr)->finalize)(REF(16).value,F_DISCARD,sched);
  REF(16).value = ch_val; REF(16).tsdr = & dr_program;
/* procedure 17 16 , 3 */
  if ((ch_returncode = che_procedure(DEF(17),DEF(16),QUAL(3)
    ,sched)) != Normal) goto ch_raise_exception;
/* discard 16 */
  (*(REF(16).tsdr)->finalize)(REF(16).value,F_DISCARD,sched);
  REF(16).tsdr = & dr_bottom;
/* move 18 17 */
  (*(REF(18).tsdr)->finalize)(REF(18).value,F_DISCARD,sched);
  REF(18) = REF(17);
  REF(17).tsdr = & dr_bottom;
/* copy 19 5.2 */
  if((ch_returncode = cp_table(& ch_val, REF(5)DOT(2).value)) != Normal)
     goto ch_raise_exception;
  (*(REF(19).tsdr)->finalize)(REF(19).value,F_DISCARD,sched);
  REF(19).value = ch_val;
  REF(19).tsdr = & dr_table;
/* initget 20 19 , 0,0 */
  (*(REF(20).tsdr)->finalize)(REF(20).value,F_DISCARD,sched);
  if ((ch_returncode = init_selector(DEF(20),DEF(19),nil,sched,GET,0,0
    )) != Normal) goto ch_raise_exception;
c35:
/* get_or_goto 20 19 , 43 */
  if ((ch_returncode = get_selected_object(DEF(20),DEF(19),sched)) != Normal)
     goto c43;
/* position 21 20 */
  ch_frame = get_selector_frame(DEF(20),sched);
  ch_t = ch_frame->inspectee->value.table;
  REF(21).value.integer = ch_frame->rmvcount +
    (*(ch_t->tbls[ORDER_TBL].des->position_of))(ch_t,ORDER_TBL,ch_frame->pos);
  REF(21).tsdr = &dr_integer;
/* ile . 21 =(0) , 35 */
  if ( REF(21).value.integer <= 0 ) goto c35;
  current->ip = 5;
cb40:
/* call 18 20 3.1 22 , 4 */
  if ((ch_returncode = che_call((
          arguments[0] = DEF(18),
          arguments[1] = DEF(20),
          arguments[2] = DEF(3)DOT(1),
          arguments[3] = DEF(22),
          arguments[3+1] = nil,& arguments[0]),QUAL(4),sched)) != Normal)
     goto ch_raise_exception;
  return;
c41:
/* insert 14.3 22 */
  if ((ch_returncode = insertfunc(DEF(14)DOT(3),DEF(22),FALSE,0)) != Normal)
     goto ch_raise_exception;
/* branch , 35 */
   goto c35;
c43:
/* endget 20 19 */
  end_selector(DEF(20),DEF(19),sched,GET);
/* discard 19 */
  (*(REF(19).tsdr)->finalize)(REF(19).value,F_DISCARD,sched);
  REF(19).tsdr = & dr_bottom;
/* copy 14.4 5.4 */
  if((ch_returncode = (REF(5)DOT(4).tsdr->copy)(& ch_val, REF(5)DOT(4).value
    )) != Normal) goto ch_raise_exception;
  (*(REF(14)DOT(4).tsdr)->finalize)(REF(14)DOT(4).value,F_DISCARD,sched);
  REF(14)DOT(4).value = ch_val;
  REF(14)DOT(4).tsdr = datarepmap[REF(5)DOT(4).tsdr->number];
/* unite 3.2 14 , 1 */
  if ((ch_returncode = che_unite(DEF(3)DOT(2),DEF(14),sched,1)) != Normal)
     goto ch_raise_exception;
/* exit , 5 */
  ch_e = handler_type__exit; ch_val = QUAL(5); goto ch_exception;
c49:
/* endget 5 4 */
  end_selector(DEF(5),DEF(4),sched,GET);
/* discard 4 */
  (*(REF(4).tsdr)->finalize)(REF(4).value,F_DISCARD,sched);
  REF(4).tsdr = & dr_bottom;
/* copy 23 3.1 */
  if((ch_returncode = cp_table(& ch_val, REF(3)DOT(1).value)) != Normal)
     goto ch_raise_exception;
  (*(REF(23).tsdr)->finalize)(REF(23).value,F_DISCARD,sched);
  REF(23).value = ch_val;
  REF(23).tsdr = & dr_table;
/* initget 24 23 , 0,0 */
  (*(REF(24).tsdr)->finalize)(REF(24).value,F_DISCARD,sched);
  if ((ch_returncode = init_selector(DEF(24),DEF(23),nil,sched,GET,0,0
    )) != Normal) goto ch_raise_exception;
c53:
/* get_or_goto 24 23 , 97 */
  if ((ch_returncode = get_selected_object(DEF(24),DEF(23),sched)) != Normal)
     goto c97;
/* notequal . 24.1 =(5) , 53 */
  if ( REF(24)DOT(1).value.ord_enum != 5 ) goto c53;
/* size 25 24.2 */
  REF(25).value.integer = REF(24)DOT(2).value.table->size;
  REF(25).tsdr = & dr_integer;
/* isubtract 26 25 =(1) */
  if (!chf_isubtract(DEF(26),REF(25).value.integer,1)) goto ch_depletion;
/* lookup_at 27 24.2 26 */
  if((ch_i = REF(26).value.integer) < 0 || ch_i >= (ch_t = REF(24)DOT(2).value
    .table)->size) goto ch_notfound;
  (*(REF(27).tsdr)->finalize)(REF(27).value,F_DISCARD,sched);
  (*(ch_t->tbls[ORDER_TBL].des->lookup_at))
    (ch_t, ORDER_TBL, & REF(27).value,ch_i);
  REF(27).tsdr = qdatarepmap[ch_t->tsdr->number];
/* copy 28 27 */
  if((ch_returncode = (REF(27).tsdr->copy)(& ch_val, REF(27).value
    )) != Normal) goto ch_raise_exception;
  (*(REF(28).tsdr)->finalize)(REF(28).value,F_DISCARD,sched);
  REF(28).value = ch_val;
  REF(28).tsdr = datarepmap[REF(27).tsdr->number];
/* equal 29 28 3.0 */
  REF(29).value.boolean = ((REF(28).tsdr->equal)(REF(28).value,
    REF(3)DOT(0).value));
  REF(29).tsdr = & dr_boolean;
/* discard 28 */
  (*(REF(28).tsdr)->finalize)(REF(28).value,F_DISCARD,sched);
  REF(28).tsdr = & dr_bottom;
/* branch_false 29 , 53 */
  if ( !REF(29).value.boolean ) goto c53;
/* new_record 14 , 5 */
  if ((ch_val.record = new_record(5)) == nil) goto ch_depletion;
  (*(REF(14).tsdr)->finalize)(REF(14).value,F_DISCARD,sched);
  REF(14).value = ch_val; REF(14).tsdr = & dr_record;
/* copy 14.0 24.1 */
  REF(14)DOT(0) = REF(24)DOT(1);
/* copy 14.1 24.3 */
  if((ch_returncode = cp_variant(& ch_val, REF(24)DOT(3).value)) != Normal)
     goto ch_raise_exception;
  (*(REF(14)DOT(1).tsdr)->finalize)(REF(14)DOT(1).value,F_DISCARD,sched);
  REF(14)DOT(1).value = ch_val;
  REF(14)DOT(1).tsdr = & dr_variant;
/* size 30 24.2 */
  REF(30).value.integer = REF(24)DOT(2).value.table->size;
  REF(30).tsdr = & dr_integer;
/* isubtract 31 30 =(1) */
  if (!chf_isubtract(DEF(31),REF(30).value.integer,1)) goto ch_depletion;
/* lookup_at 32 24.2 31 */
  if((ch_i = REF(31).value.integer) < 0 || ch_i >= (ch_t = REF(24)DOT(2).value
    .table)->size) goto ch_notfound;
  (*(REF(32).tsdr)->finalize)(REF(32).value,F_DISCARD,sched);
  (*(ch_t->tbls[ORDER_TBL].des->lookup_at))
    (ch_t, ORDER_TBL, & REF(32).value,ch_i);
  REF(32).tsdr = qdatarepmap[ch_t->tsdr->number];
/* copy 14.2 32 */
  if((ch_returncode = (REF(32).tsdr->copy)(& ch_val, REF(32).value
    )) != Normal) goto ch_raise_exception;
  (*(REF(14)DOT(2).tsdr)->finalize)(REF(14)DOT(2).value,F_DISCARD,sched);
  REF(14)DOT(2).value = ch_val;
  REF(14)DOT(2).tsdr = datarepmap[REF(32).tsdr->number];
/* new_table 14.3 , 2 */
  if ((ch_returncode = che_new_table(DEF(14)DOT(3),QUAL(2),sched)) != Normal) 
     goto ch_raise_exception;
/* currentprogram 33 */
  if ((ch_val.program = make_pgm_copy(sched->ready->prog)) == nil)
     goto ch_depletion;
  (*(REF(33).tsdr)->finalize)(REF(33).value,F_DISCARD,sched);
  REF(33).value = ch_val; REF(33).tsdr = & dr_program;
/* procedure 34 33 , 3 */
  if ((ch_returncode = che_procedure(DEF(34),DEF(33),QUAL(3)
    ,sched)) != Normal) goto ch_raise_exception;
/* discard 33 */
  (*(REF(33).tsdr)->finalize)(REF(33).value,F_DISCARD,sched);
  REF(33).tsdr = & dr_bottom;
/* move 18 34 */
  (*(REF(18).tsdr)->finalize)(REF(18).value,F_DISCARD,sched);
  REF(18) = REF(34);
  REF(34).tsdr = & dr_bottom;
/* copy 35 24.2 */
  if((ch_returncode = cp_table(& ch_val, REF(24)DOT(2).value)) != Normal)
     goto ch_raise_exception;
  (*(REF(35).tsdr)->finalize)(REF(35).value,F_DISCARD,sched);
  REF(35).value = ch_val;
  REF(35).tsdr = & dr_table;
/* initget 36 35 , 0,0 */
  (*(REF(36).tsdr)->finalize)(REF(36).value,F_DISCARD,sched);
  if ((ch_returncode = init_selector(DEF(36),DEF(35),nil,sched,GET,0,0
    )) != Normal) goto ch_raise_exception;
c81:
/* get_or_goto 36 35 , 91 */
  if ((ch_returncode = get_selected_object(DEF(36),DEF(35),sched)) != Normal)
     goto c91;
/* position 37 36 */
  ch_frame = get_selector_frame(DEF(36),sched);
  ch_t = ch_frame->inspectee->value.table;
  REF(37).value.integer = ch_frame->rmvcount +
    (*(ch_t->tbls[ORDER_TBL].des->position_of))(ch_t,ORDER_TBL,ch_frame->pos);
  REF(37).tsdr = &dr_integer;
/* size 38 24.2 */
  REF(38).value.integer = REF(24)DOT(2).value.table->size;
  REF(38).tsdr = & dr_integer;
/* isubtract 39 38 =(1) */
  if (!chf_isubtract(DEF(39),REF(38).value.integer,1)) goto ch_depletion;
/* ige . 37 39 , 81 */
  if ( REF(37).value.integer >= REF(39).value.integer ) goto c81;
  current->ip = 11;
cb88:
/* call 18 36 3.1 40 , 4 */
  if ((ch_returncode = che_call((
          arguments[0] = DEF(18),
          arguments[1] = DEF(36),
          arguments[2] = DEF(3)DOT(1),
          arguments[3] = DEF(40),
          arguments[3+1] = nil,& arguments[0]),QUAL(4),sched)) != Normal)
     goto ch_raise_exception;
  return;
c89:
/* insert 14.3 40 */
  if ((ch_returncode = insertfunc(DEF(14)DOT(3),DEF(40),FALSE,0)) != Normal)
     goto ch_raise_exception;
/* branch , 81 */
   goto c81;
c91:
/* endget 36 35 */
  end_selector(DEF(36),DEF(35),sched,GET);
/* discard 35 */
  (*(REF(35).tsdr)->finalize)(REF(35).value,F_DISCARD,sched);
  REF(35).tsdr = & dr_bottom;
/* copy 14.4 24.4 */
  if((ch_returncode = (REF(24)DOT(4).tsdr->copy)(& ch_val, REF(24)DOT(4).value
    )) != Normal) goto ch_raise_exception;
  (*(REF(14)DOT(4).tsdr)->finalize)(REF(14)DOT(4).value,F_DISCARD,sched);
  REF(14)DOT(4).value = ch_val;
  REF(14)DOT(4).tsdr = datarepmap[REF(24)DOT(4).tsdr->number];
/* unite 3.2 14 , 1 */
  if ((ch_returncode = che_unite(DEF(3)DOT(2),DEF(14),sched,1)) != Normal)
     goto ch_raise_exception;
/* exit , 5 */
  ch_e = handler_type__exit; ch_val = QUAL(5); goto ch_exception;
c97:
/* endget 24 23 */
  end_selector(DEF(24),DEF(23),sched,GET);
/* discard 23 */
  (*(REF(23).tsdr)->finalize)(REF(23).value,F_DISCARD,sched);
  REF(23).tsdr = & dr_bottom;
/* size 41 3.0.1 */
  REF(41).value.integer = REF(3)DOT(0)DOT(1).value.table->size;
  REF(41).tsdr = & dr_integer;
/* notequal . 41 =(0) , 124 */
  if ( REF(41).value.integer != 0 ) goto c124;
/* copy 42 3.1 */
  if((ch_returncode = cp_table(& ch_val, REF(3)DOT(1).value)) != Normal)
     goto ch_raise_exception;
  (*(REF(42).tsdr)->finalize)(REF(42).value,F_DISCARD,sched);
  REF(42).value = ch_val;
  REF(42).tsdr = & dr_table;
/* initget 43 42 , 0,0 */
  (*(REF(43).tsdr)->finalize)(REF(43).value,F_DISCARD,sched);
  if ((ch_returncode = init_selector(DEF(43),DEF(42),nil,sched,GET,0,0
    )) != Normal) goto ch_raise_exception;
c105:
/* get_or_goto 43 42 , 122 */
  if ((ch_returncode = get_selected_object(DEF(43),DEF(42),sched)) != Normal)
     goto c122;
/* notequal . 43.1 =(23) , 105 */
  if ( REF(43)DOT(1).value.ord_enum != 23 ) goto c105;
/* reveal 43.3 , 5 */
  if (5 != REF(43)DOT(3).value.variant->info.variant_case) goto ch_case_error;
/* notequal . 43.3.0.1 3.0.0 , 105 */
  if ( !(REF(43)DOT(3)DOT(0)DOT(1).tsdr->equal)(
    REF(43)DOT(3)DOT(0)DOT(1).value,REF(3)DOT(0)DOT(0).value) ) goto c105;
/* new_record 14 , 5 */
  if ((ch_val.record = new_record(5)) == nil) goto ch_depletion;
  (*(REF(14).tsdr)->finalize)(REF(14).value,F_DISCARD,sched);
  REF(14).value = ch_val; REF(14).tsdr = & dr_record;
/* copy 14.0 43.1 */
  REF(14)DOT(0) = REF(43)DOT(1);
/* copy 14.1 43.3 */
  if((ch_returncode = cp_variant(& ch_val, REF(43)DOT(3).value)) != Normal)
     goto ch_raise_exception;
  (*(REF(14)DOT(1).tsdr)->finalize)(REF(14)DOT(1).value,F_DISCARD,sched);
  REF(14)DOT(1).value = ch_val;
  REF(14)DOT(1).tsdr = & dr_variant;
/* copy 14.2 3.0 */
  if((ch_returncode = (REF(3)DOT(0).tsdr->copy)(& ch_val, REF(3)DOT(0).value
    )) != Normal) goto ch_raise_exception;
  (*(REF(14)DOT(2).tsdr)->finalize)(REF(14)DOT(2).value,F_DISCARD,sched);
  REF(14)DOT(2).value = ch_val;
  REF(14)DOT(2).tsdr = datarepmap[REF(3)DOT(0).tsdr->number];
/* new_table 14.3 , 2 */
  if ((ch_returncode = che_new_table(DEF(14)DOT(3),QUAL(2),sched)) != Normal) 
     goto ch_raise_exception;
/* copy 14.4 43.4 */
  if((ch_returncode = (REF(43)DOT(4).tsdr->copy)(& ch_val, REF(43)DOT(4).value
    )) != Normal) goto ch_raise_exception;
  (*(REF(14)DOT(4).tsdr)->finalize)(REF(14)DOT(4).value,F_DISCARD,sched);
  REF(14)DOT(4).value = ch_val;
  REF(14)DOT(4).tsdr = datarepmap[REF(43)DOT(4).tsdr->number];
/* unite 3.2 14 , 1 */
  if ((ch_returncode = che_unite(DEF(3)DOT(2),DEF(14),sched,1)) != Normal)
     goto ch_raise_exception;
/* exit , 5 */
  ch_e = handler_type__exit; ch_val = QUAL(5); goto ch_exception;
c122:
/* endget 43 42 */
  end_selector(DEF(43),DEF(42),sched,GET);
/* discard 42 */
  (*(REF(42).tsdr)->finalize)(REF(42).value,F_DISCARD,sched);
  REF(42).tsdr = & dr_bottom;
c124:
/* copy 44 3.0 */
  if((ch_returncode = (REF(3)DOT(0).tsdr->copy)(& ch_val, REF(3)DOT(0).value
    )) != Normal) goto ch_raise_exception;
  (*(REF(44).tsdr)->finalize)(REF(44).value,F_DISCARD,sched);
  REF(44).value = ch_val;
  REF(44).tsdr = datarepmap[REF(3)DOT(0).tsdr->number];
/* unite 3.2 44 , 0 */
  if ((ch_returncode = che_unite(DEF(3)DOT(2),DEF(44),sched,0)) != Normal)
     goto ch_raise_exception;
/* exit , 5 */
  ch_e = handler_type__exit; ch_val = QUAL(5); goto ch_exception;
/* endblock */
  che_endblock(sched);
/* branch , 132 */
   goto c132;
c129:
/* discard 18 */
  (*(REF(18).tsdr)->finalize)(REF(18).value,F_DISCARD,sched);
  REF(18).tsdr = & dr_bottom;
/* 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;
c132:
/* endblock */
  che_endblock(sched);
c134:
/* endprocess */
  che_endprocess(sched); return;
#include "chtail.h"
