
/* This file was automatically generated by pclu.*/

#include "pclu_err.h"
#include "pclu_sys.h"


extern errcode e_strop_IB_1();
extern errcode stringOPequal();
extern errcode sequenceOPfetch();
extern errcode e_s2e();
extern errcode stringOPc2s();
extern errcode e_e2h();
extern errcode e_i2e();
extern errcode stringOPindexc();
extern errcode e_e2s();
extern errcode sequenceOPelements();
extern errcode recordOPget_1();
extern errcode e_e2qc();
extern errcode stringOPappend();
extern errcode stringOPsize();
extern errcode e_b2e();
extern errcode stringOPempty();
extern errcode sequenceOPnew();
extern errcode stringOPchars();
extern errcode sequenceOPaddh();
extern errcode e_h2e();
extern errcode exprOPcreate();
extern errcode oneofOPmake_25();
extern errcode c_envOPget_char_type();
extern errcode c_envOPget_type_type();
extern errcode c_envOPget_seq_();
extern errcode c_envOPget_type();
extern errcode oneofOPmake_3();
extern errcode oneofOPmake_1();
extern errcode stringOPfetch();
extern errcode e_e2i();
extern errcode stringOPindexs();
extern errcode stringOPrest();
extern errcode stringOPsubstr();
extern errcode stringOPconcat();
extern errcode stringOPlt();
extern errcode stringOPle();
extern errcode stringOPge();
extern errcode stringOPgt();
CLUREF STR_s2ac;
CLUREF STR_ac2s;
CLUREF STR_chars;
CLUREF STR_c2s;
CLUREF STR_indexc;
CLUREF STR_copy;
CLUREF STR_sc2s;
CLUREF STR_;
CLUREF STR_size;
CLUREF STR_empty;
CLUREF STR_s2sc;
CLUREF STR_fetch;
CLUREF STR_indexs;
CLUREF STR_append;
CLUREF STR_rest;
CLUREF STR_substr;
CLUREF STR_concat;
CLUREF STR_lt;
CLUREF STR_le;
CLUREF STR_ge;
CLUREF STR_gt;
static int e_strop_own_init = 0;

/**** BEGIN PROCEDURE e_strop ****/

errcode e_strop(e, op, args, ret_1)
CLUREF e;
CLUREF op;
CLUREF args;
CLUREF *ret_1;
    {
    struct {
        errcode err;
        errcode ecode2;
        CLUREF a1;
        CLUREF s;
        CLUREF cx;
        CLUREF s1;
        CLUREF elts;
        CLUREF c;
        CLUREF x;
        CLUREF clut;
        CLUREF t;
        CLUREF cons;
        CLUREF a2;
        CLUREF b;
        CLUREF s2;
        CLUREF err_UNIQ;
        CLUREF e;
        CLUREF op;
        CLUREF args;
        } locals;
    locals.e = e;
    locals.op = op;
    locals.args = args;
        if (e_strop_own_init == 0) {
        stringOPcons("s2ac", CLU_1, CLU_4, &STR_s2ac);
        stringOPcons("ac2s", CLU_1, CLU_4, &STR_ac2s);
        stringOPcons("chars", CLU_1, CLU_5, &STR_chars);
        stringOPcons("c2s", CLU_1, CLU_3, &STR_c2s);
        stringOPcons("indexc", CLU_1, CLU_6, &STR_indexc);
        stringOPcons("copy", CLU_1, CLU_4, &STR_copy);
        stringOPcons("sc2s", CLU_1, CLU_4, &STR_sc2s);
        stringOPcons("", CLU_1, CLU_0, &STR_);
        stringOPcons("size", CLU_1, CLU_4, &STR_size);
        stringOPcons("empty", CLU_1, CLU_5, &STR_empty);
        stringOPcons("s2sc", CLU_1, CLU_4, &STR_s2sc);
        stringOPcons("fetch", CLU_1, CLU_5, &STR_fetch);
        stringOPcons("indexs", CLU_1, CLU_6, &STR_indexs);
        stringOPcons("append", CLU_1, CLU_6, &STR_append);
        stringOPcons("rest", CLU_1, CLU_4, &STR_rest);
        stringOPcons("substr", CLU_1, CLU_6, &STR_substr);
        stringOPcons("concat", CLU_1, CLU_6, &STR_concat);
        stringOPcons("lt", CLU_1, CLU_2, &STR_lt);
        stringOPcons("le", CLU_1, CLU_2, &STR_le);
        stringOPcons("ge", CLU_1, CLU_2, &STR_ge);
        stringOPcons("gt", CLU_1, CLU_2, &STR_gt);
        e_strop_own_init = 1;
    }
    enter_proc(6);

  LINE(8);
    {

  LINE(9);
        {
        CLUREF T_3_1;
        CLUREF T_3_2;
        CLUREF T_3_3;
        CLUREF T_3_4;
        CLUREF T_3_5;
        T_3_3.num = ((locals.op.str->size != STR_s2ac.str->size)? false :
            !(bcmp(locals.op.str->data, STR_s2ac.str->data, locals.op.str->size)));
        T_3_2.num = T_3_3.num;
        if (!T_3_3.num) {
            T_3_4.num = ((locals.op.str->size != STR_ac2s.str->size)? false :
                !(bcmp(locals.op.str->data, STR_ac2s.str->data, locals.op.str->size)));
            T_3_2.num = T_3_4.num;
        }
        T_3_1.num = T_3_2.num;
        if (!T_3_2.num) {
            T_3_5.num = ((locals.op.str->size != STR_chars.str->size)? false :
                !(bcmp(locals.op.str->data, STR_chars.str->data, locals.op.str->size)));
            T_3_1.num = T_3_5.num;
        }
        if (T_3_1.num == true) {

  LINE(10);
            {
            {signal (ERR_illegal);}}
            }
            }/* end if */

  LINE(11);
        {
            {CLUREF T_3_1;
            if (1 < 1 || 1 > locals.args.vec->size ) {
                locals.err = ERR_bounds;
                goto ex_1;}
            T_3_1.num = locals.args.vec->data[1 - 1];
            locals.a1.num = T_3_1.num;
            }
            }

  LINE(12);
        {
        CLUREF T_3_1;
        T_3_1.num = ((locals.op.str->size != STR_c2s.str->size)? false :
            !(bcmp(locals.op.str->data, STR_c2s.str->data, locals.op.str->size)));
        if (T_3_1.num == true) {

  LINE(13);
            {
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            CLUREF T_4_3;
            locals.err = e_e2h(locals.a1, &T_4_1);
            if (locals.err != ERR_ok) goto ex_1;
            locals.err = stringOPc2s(T_4_1, &T_4_2);
            if (locals.err != ERR_ok) goto ex_1;
            locals.err = e_s2e(locals.e, T_4_2, &T_4_3);
            if (locals.err != ERR_ok) goto ex_1;
            ret_1->num = T_4_3.num;
            }
            {signal (ERR_ok);}}
            }
        else {
        CLUREF T_3_2;
        T_3_2.num = ((locals.op.str->size != STR_indexc.str->size)? false :
            !(bcmp(locals.op.str->data, STR_indexc.str->data, locals.op.str->size)));
        if (T_3_2.num == true) {

  LINE(15);
            {
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            CLUREF T_4_3;
            CLUREF T_4_4;
            CLUREF T_4_5;
            locals.err = e_e2h(locals.a1, &T_4_1);
            if (locals.err != ERR_ok) goto ex_1;
            if (2 < 1 || 2 > locals.args.vec->size ) {
                locals.err = ERR_bounds;
                goto ex_1;}
            T_4_2.num = locals.args.vec->data[2 - 1];
            locals.err = e_e2s(T_4_2, &T_4_3);
            if (locals.err != ERR_ok) goto ex_1;
            locals.err = stringOPindexc(T_4_1, T_4_3, &T_4_4);
            if (locals.err != ERR_ok) goto ex_1;
            locals.err = e_i2e(locals.e, T_4_4, &T_4_5);
            if (locals.err != ERR_ok) goto ex_1;
            ret_1->num = T_4_5.num;
            }
            {signal (ERR_ok);}}
            }
        else {
        CLUREF T_3_3;
        T_3_3.num = ((locals.op.str->size != STR_copy.str->size)? false :
            !(bcmp(locals.op.str->data, STR_copy.str->data, locals.op.str->size)));
        if (T_3_3.num == true) {

  LINE(17);
            {
            {
            ret_1->num = locals.a1.num;
            }
            {signal (ERR_ok);}}
            }
        else {
        CLUREF T_3_4;
        T_3_4.num = ((locals.op.str->size != STR_sc2s.str->size)? false :
            !(bcmp(locals.op.str->data, STR_sc2s.str->data, locals.op.str->size)));
        if (T_3_4.num == true) {

  LINE(19);
            {
                {locals.s = STR_;
                }
                }

  LINE(20);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            CLUREF T_4_3;
            CLUREF T_4_4;
            CLUREF T_4_5;
                locals.err = e_e2qc(locals.a1, &T_4_1);
                if (locals.err != ERR_ok) goto ex_1;
                T_4_2.num = T_4_1.vec->data[0];
                T_4_4.num = T_4_2.vec->size; 
                T_4_5 = T_4_2;
                for (T_4_3.num = 1; T_4_3.num <= T_4_4.num; T_4_3.num++) {
                    locals.cx.num = T_4_5.vec->data[T_4_3.num - 1];

  LINE(21);
                    {
                    CLUREF T_5_1;
                    CLUREF T_5_2;
                    locals.err = e_e2h(locals.cx, &T_5_1);
                    if (locals.err != ERR_ok) goto ex_1;
                    locals.err = stringOPappend(locals.s, T_5_1, &T_5_2);
                    if (locals.err != ERR_ok) goto ex_1;
                    locals.s.num = T_5_2.num;
                    }
                }
            }
            end_inline_for_1:;

  LINE(23);
            {
            {
            CLUREF T_4_1;
            locals.err = e_s2e(locals.e, locals.s, &T_4_1);
            if (locals.err != ERR_ok) goto ex_1;
            ret_1->num = T_4_1.num;
            }
            {signal (ERR_ok);}}
            }
            }}}}/* end if */

  LINE(25);
        {
            {CLUREF T_3_1;
            locals.err = e_e2s(locals.a1, &T_3_1);
            if (locals.err != ERR_ok) goto ex_1;
            locals.s1.num = T_3_1.num;
            }
            }

  LINE(26);
        {
        CLUREF T_3_1;
        T_3_1.num = ((locals.op.str->size != STR_size.str->size)? false :
            !(bcmp(locals.op.str->data, STR_size.str->data, locals.op.str->size)));
        if (T_3_1.num == true) {

  LINE(27);
            {
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            locals.err = stringOPsize(locals.s1, &T_4_1);
            if (locals.err != ERR_ok) goto ex_1;
            locals.err = e_i2e(locals.e, T_4_1, &T_4_2);
            if (locals.err != ERR_ok) goto ex_1;
            ret_1->num = T_4_2.num;
            }
            {signal (ERR_ok);}}
            }
        else {
        CLUREF T_3_2;
        T_3_2.num = ((locals.op.str->size != STR_empty.str->size)? false :
            !(bcmp(locals.op.str->data, STR_empty.str->data, locals.op.str->size)));
        if (T_3_2.num == true) {

  LINE(29);
            {
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            locals.err = stringOPempty(locals.s1, &T_4_1);
            if (locals.err != ERR_ok) goto ex_1;
            locals.err = e_b2e(locals.e, T_4_1, &T_4_2);
            if (locals.err != ERR_ok) goto ex_1;
            ret_1->num = T_4_2.num;
            }
            {signal (ERR_ok);}}
            }
        else {
        CLUREF T_3_3;
        T_3_3.num = ((locals.op.str->size != STR_s2sc.str->size)? false :
            !(bcmp(locals.op.str->data, STR_s2sc.str->data, locals.op.str->size)));
        if (T_3_3.num == true) {

  LINE(31);
            {
                {CLUREF T_4_1;
                locals.err = sequenceOPnew(&T_4_1);
                if (locals.err != ERR_ok) goto ex_1;
                locals.elts.num = T_4_1.num;
                }
                }

  LINE(32);
            {
                locals.err = stringOPchars(locals.s1, e_strop_IB_1, &locals, &locals.ecode2);
                if (locals.err == ERR_iterbodyreturn) {
                ret_1->num = elist[0].num;
                signal(ERR_ok);}
                if (locals.err == ERR_iterbodysignal) {signal(locals.ecode2);}
                if (locals.err == ERR_break) locals.err = ERR_ok;
                if (locals.err == ERR_iterbodyexit) locals.err = locals.ecode2;
                if (locals.err != ERR_ok) goto ex_1;
                }

  LINE(35);
            {
                {CLUREF T_4_1;
                CLUREF T_4_2;
                CLUREF T_4_3;
                CLUREF T_4_4;
                locals.err = c_envOPget_char_type(locals.e, &T_4_1);
                if (locals.err != ERR_ok) goto ex_1;
                CellAlloc(25, T_4_1.num, T_4_2);
                locals.err = c_envOPget_type_type(locals.e, &T_4_3);
                if (locals.err != ERR_ok) goto ex_1;
                locals.err = exprOPcreate(T_4_2, T_4_3, &T_4_4);
                if (locals.err != ERR_ok) goto ex_1;
                locals.x.num = T_4_4.num;
                }
                }

  LINE(37);
            {
                {CLUREF T_4_1;
                CLUREF T_4_2;
                CLUREF T_4_3;
                RecordAlloc(2, T_4_1);
                locals.err = c_envOPget_seq_(locals.e, &T_4_2);
                if (locals.err != ERR_ok) goto ex_1;
                T_4_1.vec->data[0]  = T_4_2.num;
                sequenceOPnew2(CLU_1, &T_4_3);
                T_4_3.vec->data[0] = locals.x.num;
                T_4_1.vec->data[1]  = T_4_3.num;
                locals.clut.num = T_4_1.num;
                }
                }

  LINE(39);
            {
                {CLUREF T_4_1;
                CLUREF T_4_2;
                CellAlloc(3, locals.clut.num, T_4_1);
                locals.err = c_envOPget_type(locals.e, T_4_1, &T_4_2);
                if (locals.err != ERR_ok) goto ex_1;
                locals.t.num = T_4_2.num;
                }
                }

  LINE(40);
            {
                {CLUREF T_4_1;
                CLUREF T_4_2;
                RecordAlloc(3, T_4_1);
                T_4_1.vec->data[2]  = locals.t.num;
                CellAlloc(1, nil, T_4_2);
                T_4_1.vec->data[1]  = T_4_2.num;
                T_4_1.vec->data[0]  = locals.elts.num;
                locals.cons.num = T_4_1.num;
                }
                }

  LINE(43);
            {
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            CellAlloc(1, locals.cons.num, T_4_1);
            locals.err = exprOPcreate(T_4_1, locals.t, &T_4_2);
            if (locals.err != ERR_ok) goto ex_1;
            ret_1->num = T_4_2.num;
            }
            {signal (ERR_ok);}}
            }
            }}}/* end if */

  LINE(45);
        {
            {CLUREF T_3_1;
            if (2 < 1 || 2 > locals.args.vec->size ) {
                locals.err = ERR_bounds;
                goto ex_1;}
            T_3_1.num = locals.args.vec->data[2 - 1];
            locals.a2.num = T_3_1.num;
            }
            }

  LINE(46);
        {
        CLUREF T_3_1;
        T_3_1.num = ((locals.op.str->size != STR_fetch.str->size)? false :
            !(bcmp(locals.op.str->data, STR_fetch.str->data, locals.op.str->size)));
        if (T_3_1.num == true) {

  LINE(47);
            {
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            CLUREF T_4_3;
            locals.err = e_e2i(locals.a2, &T_4_1);
            if (locals.err != ERR_ok) goto ex_1;
            locals.err = stringOPfetch(locals.s1, T_4_1, &T_4_2);
            if (locals.err != ERR_ok) goto ex_1;
            locals.err = e_h2e(locals.e, T_4_2, &T_4_3);
            if (locals.err != ERR_ok) goto ex_1;
            ret_1->num = T_4_3.num;
            }
            {signal (ERR_ok);}}
            }
        else {
        CLUREF T_3_2;
        T_3_2.num = ((locals.op.str->size != STR_indexs.str->size)? false :
            !(bcmp(locals.op.str->data, STR_indexs.str->data, locals.op.str->size)));
        if (T_3_2.num == true) {

  LINE(49);
            {
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            CLUREF T_4_3;
            locals.err = e_e2s(locals.a2, &T_4_1);
            if (locals.err != ERR_ok) goto ex_1;
            locals.err = stringOPindexs(locals.s1, T_4_1, &T_4_2);
            if (locals.err != ERR_ok) goto ex_1;
            locals.err = e_i2e(locals.e, T_4_2, &T_4_3);
            if (locals.err != ERR_ok) goto ex_1;
            ret_1->num = T_4_3.num;
            }
            {signal (ERR_ok);}}
            }
        else {
        CLUREF T_3_3;
        T_3_3.num = ((locals.op.str->size != STR_append.str->size)? false :
            !(bcmp(locals.op.str->data, STR_append.str->data, locals.op.str->size)));
        if (T_3_3.num == true) {

  LINE(51);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            locals.err = e_e2h(locals.a2, &T_4_1);
            if (locals.err != ERR_ok) goto ex_1;
            locals.err = stringOPappend(locals.s1, T_4_1, &T_4_2);
            if (locals.err != ERR_ok) goto ex_1;
            locals.s1.num = T_4_2.num;
            }
            }
        else {
        CLUREF T_3_4;
        T_3_4.num = ((locals.op.str->size != STR_rest.str->size)? false :
            !(bcmp(locals.op.str->data, STR_rest.str->data, locals.op.str->size)));
        if (T_3_4.num == true) {

  LINE(53);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            locals.err = e_e2i(locals.a2, &T_4_1);
            if (locals.err != ERR_ok) goto ex_1;
            locals.err = stringOPrest(locals.s1, T_4_1, &T_4_2);
            if (locals.err != ERR_ok) goto ex_1;
            locals.s1.num = T_4_2.num;
            }
            }
        else {
        CLUREF T_3_5;
        T_3_5.num = ((locals.op.str->size != STR_substr.str->size)? false :
            !(bcmp(locals.op.str->data, STR_substr.str->data, locals.op.str->size)));
        if (T_3_5.num == true) {

  LINE(55);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            CLUREF T_4_3;
            CLUREF T_4_4;
            locals.err = e_e2i(locals.a2, &T_4_1);
            if (locals.err != ERR_ok) goto ex_1;
            if (3 < 1 || 3 > locals.args.vec->size ) {
                locals.err = ERR_bounds;
                goto ex_1;}
            T_4_2.num = locals.args.vec->data[3 - 1];
            locals.err = e_e2i(T_4_2, &T_4_3);
            if (locals.err != ERR_ok) goto ex_1;
            locals.err = stringOPsubstr(locals.s1, T_4_1, T_4_3, &T_4_4);
            if (locals.err != ERR_ok) goto ex_1;
            locals.s1.num = T_4_4.num;
            }
            }
        else {
        CLUREF T_3_6;
        T_3_6.num = ((locals.op.str->size != STR_concat.str->size)? false :
            !(bcmp(locals.op.str->data, STR_concat.str->data, locals.op.str->size)));
        if (T_3_6.num == true) {

  LINE(57);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            locals.err = e_e2s(locals.a2, &T_4_1);
            if (locals.err != ERR_ok) goto ex_1;
            locals.err = stringOPconcat(locals.s1, T_4_1, &T_4_2);
            if (locals.err != ERR_ok) goto ex_1;
            locals.s1.num = T_4_2.num;
            }
            }
        else {

  LINE(59);
            {
                {CLUREF T_4_1;
                locals.err = e_e2s(locals.a2, &T_4_1);
                if (locals.err != ERR_ok) goto ex_1;
                locals.s2.num = T_4_1.num;
                }
                }

  LINE(60);
            {
            CLUREF T_4_1;
            T_4_1.num = ((locals.op.str->size != STR_lt.str->size)? false :
                !(bcmp(locals.op.str->data, STR_lt.str->data, locals.op.str->size)));
            if (T_4_1.num == true) {

  LINE(61);
                {
                CLUREF T_5_1;
                locals.err = stringOPlt(locals.s1, locals.s2, &T_5_1);
                if (locals.err != ERR_ok) goto ex_1;
                locals.b.num = T_5_1.num;
                }
                }
            else {
            CLUREF T_4_2;
            T_4_2.num = ((locals.op.str->size != STR_le.str->size)? false :
                !(bcmp(locals.op.str->data, STR_le.str->data, locals.op.str->size)));
            if (T_4_2.num == true) {

  LINE(63);
                {
                CLUREF T_5_1;
                locals.err = stringOPle(locals.s1, locals.s2, &T_5_1);
                if (locals.err != ERR_ok) goto ex_1;
                locals.b.num = T_5_1.num;
                }
                }
            else {
            CLUREF T_4_3;
            T_4_3.num = ((locals.op.str->size != STR_ge.str->size)? false :
                !(bcmp(locals.op.str->data, STR_ge.str->data, locals.op.str->size)));
            if (T_4_3.num == true) {

  LINE(65);
                {
                CLUREF T_5_1;
                locals.err = stringOPge(locals.s1, locals.s2, &T_5_1);
                if (locals.err != ERR_ok) goto ex_1;
                locals.b.num = T_5_1.num;
                }
                }
            else {
            CLUREF T_4_4;
            T_4_4.num = ((locals.op.str->size != STR_gt.str->size)? false :
                !(bcmp(locals.op.str->data, STR_gt.str->data, locals.op.str->size)));
            if (T_4_4.num == true) {

  LINE(67);
                {
                CLUREF T_5_1;
                locals.err = stringOPgt(locals.s1, locals.s2, &T_5_1);
                if (locals.err != ERR_ok) goto ex_1;
                locals.b.num = T_5_1.num;
                }
                }
            else {

  LINE(68);
                {
                CLUREF T_5_1;
                T_5_1.num = ((locals.s1.str->size != locals.s2.str->size)? false :
                    !(bcmp(locals.s1.str->data, locals.s2.str->data, locals.s1.str->size)));
                locals.b.num = T_5_1.num;
                }
                }}}}}/* end if */

  LINE(69);
            {
            {
            CLUREF T_4_1;
            locals.err = e_b2e(locals.e, locals.b, &T_4_1);
            if (locals.err != ERR_ok) goto ex_1;
            ret_1->num = T_4_1.num;
            }
            {signal (ERR_ok);}}
            }}}}}}}/* end if */

  LINE(71);
        {
        {
        CLUREF T_3_1;
        locals.err = e_s2e(locals.e, locals.s1, &T_3_1);
        if (locals.err != ERR_ok) goto ex_1;
        ret_1->num = T_3_1.num;
        }
        {signal (ERR_ok);}}
        }
        goto end_1;
        ex_1:
            if ((locals.err == ERR_bad)) {

  LINE(72);
                {
                {signal (ERR_bad);}}
            }
            else {
                CLUREF err_UNIQ;
                locals.err_UNIQ.num = elist[0].num;

  LINE(73);
                {
                elist[0] = locals.err_UNIQ;
                {signal (ERR_error);}}
            }
        end_1:;
    goto end_0;
    ex_0:
        {
            if (locals.err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(locals.err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE e_strop ****/


/**** BEGIN ITERATOR BODIES for e_strop ****/

errcode e_strop_IB_1(iv_1, locals, iecode)
errcode *iecode;
CLUREF iv_1;
struct {
    errcode err;
    errcode ecode2;
    CLUREF a1;
    CLUREF s;
    CLUREF cx;
    CLUREF s1;
    CLUREF elts;
    CLUREF c;
    CLUREF x;
    CLUREF clut;
    CLUREF t;
    CLUREF cons;
    CLUREF a2;
    CLUREF b;
    CLUREF s2;
    CLUREF err_UNIQ;
    CLUREF e;
    CLUREF op;
    CLUREF args;
    } *locals;
{
    locals->c.num = iv_1.num;
    enter_iter_body_proc(33);

  FB_LINE(33);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    locals->err = e_h2e(locals->e, locals->c, &T_1_1);
    if (locals->err != ERR_ok) goto ex_0;
    locals->err = sequenceOPaddh(locals->elts, T_1_1, &T_1_2);
    if (locals->err != ERR_ok) goto ex_0;
    locals->elts.num = T_1_2.num;
    }
    {signal(ERR_ok);}
    ex_0:
        {
            *iecode = locals->err;
            {signal(ERR_iterbodyexit);}}
    end_0: {signal(ERR_ok);}
    }/* end e_strop_IB_1 */

/**** END ITERATOR BODIES for e_strop ****/


extern errcode charOPequal();
extern errcode e_e2o();
extern errcode exprOPsimilar();
CLUREF STR_o2v;
CLUREF STR_v2o;
CLUREF STR_wrong_137tag;
static int e_oneofop_own_init = 0;

/**** BEGIN PROCEDURE e_oneofop ****/

errcode e_oneofop(e, x, cop, args, ret_1)
CLUREF e;
CLUREF x;
CLUREF cop;
CLUREF args;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF op;
    CLUREF a1;
    CLUREF h;
    CLUREF sel;
        if (e_oneofop_own_init == 0) {
        stringOPcons("o2v", CLU_1, CLU_3, &STR_o2v);
        stringOPcons("v2o", CLU_1, CLU_3, &STR_v2o);
        stringOPcons("wrong_tag", CLU_1, CLU_9, &STR_wrong_137tag);
        e_oneofop_own_init = 1;
    }
    enter_proc(77);

  LINE(79);
    {
        {CLUREF T_1_1;
        T_1_1.num = cop.vec->data[0];
        op.num = T_1_1.num;
        }
        }

  LINE(80);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    T_1_2.num = ((op.str->size != STR_o2v.str->size)? false :
        !(bcmp(op.str->data, STR_o2v.str->data, op.str->size)));
    T_1_1.num = T_1_2.num;
    if (!T_1_2.num) {
        T_1_3.num = ((op.str->size != STR_v2o.str->size)? false :
            !(bcmp(op.str->data, STR_v2o.str->data, op.str->size)));
        T_1_1.num = T_1_3.num;
    }
    if (T_1_1.num == true) {

  LINE(81);
        {
        {signal (ERR_illegal);}}
        }
        }/* end if */

  LINE(82);
    {

  LINE(83);
        {
            {CLUREF T_3_1;
            if (1 < 1 || 1 > args.vec->size ) {
                err = ERR_bounds;
                goto ex_1;}
            T_3_1.num = args.vec->data[1 - 1];
            a1.num = T_3_1.num;
            }
            }

  LINE(84);
        {
            {CLUREF T_3_1;
            err = stringOPfetch(op, CLU_1, &T_3_1);
            if (err != ERR_ok) goto ex_1;
            h.num = T_3_1.num;
            }
            }

  LINE(85);
        {
        CLUREF T_3_1;
        CLUREF T_3_2;
        T_3_1.ch = 'c';
        T_3_2.num = (h.ch == T_3_1.ch)? true : false;
        if (T_3_2.num == true) {

  LINE(86);
            {
            {
            ret_1->num = a1.num;
            }
            {signal (ERR_ok);}}
            }
        else {
        CLUREF T_3_3;
        CLUREF T_3_4;
        T_3_3.ch = 'm';
        T_3_4.num = (h.ch == T_3_3.ch)? true : false;
        if (T_3_4.num == true) {

  LINE(88);
            {
            {
            ret_1->num = x.num;
            }
            {signal (ERR_ok);}}
            }
            }}/* end if */

  LINE(90);
        {
        CLUREF T_3_1;
        CLUREF T_3_2;
        err = e_e2o(a1, &T_3_1, &T_3_2);
        if (err != ERR_ok) goto ex_1;
        a1.num = T_3_1.num;
        sel.num = T_3_2.num;
        }

  LINE(91);
        {
        CLUREF T_3_1;
        CLUREF T_3_2;
        T_3_1.ch = 'i';
        T_3_2.num = (h.ch == T_3_1.ch)? true : false;
        if (T_3_2.num == true) {

  LINE(92);
            {
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            CLUREF T_4_3;
            err = stringOPrest(op, CLU_4, &T_4_1);
            if (err != ERR_ok) goto ex_1;
            T_4_2.num = ((sel.str->size != T_4_1.str->size)? false :
                !(bcmp(sel.str->data, T_4_1.str->data, sel.str->size)));
            err = e_b2e(e, T_4_2, &T_4_3);
            if (err != ERR_ok) goto ex_1;
            ret_1->num = T_4_3.num;
            }
            {signal (ERR_ok);}}
            }
        else {
        CLUREF T_3_3;
        CLUREF T_3_4;
        T_3_3.ch = 'v';
        T_3_4.num = (h.ch == T_3_3.ch)? true : false;
        if (T_3_4.num == true) {

  LINE(94);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            err = stringOPrest(op, CLU_7, &T_4_1);
            if (err != ERR_ok) goto ex_1;
            T_4_2.num = ((sel.str->size != T_4_1.str->size)? false :
                !(bcmp(sel.str->data, T_4_1.str->data, sel.str->size)));
            if (T_4_2.num == true) {

  LINE(95);
                {
                {
                ret_1->num = a1.num;
                }
                {signal (ERR_ok);}}
                }
            else {

  LINE(96);
                {
                elist[0] = STR_wrong_137tag;
                {signal (ERR_error);}}
                }}/* end if */
            }
        else {

  LINE(98);
            {
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            CLUREF T_4_3;
            if (2 < 1 || 2 > args.vec->size ) {
                err = ERR_bounds;
                goto ex_1;}
            T_4_1.num = args.vec->data[2 - 1];
            err = exprOPsimilar(a1, T_4_1, &T_4_2);
            if (err != ERR_ok) goto ex_1;
            err = e_b2e(e, T_4_2, &T_4_3);
            if (err != ERR_ok) goto ex_1;
            ret_1->num = T_4_3.num;
            }
            {signal (ERR_ok);}}
            }}}/* end if */
        }
    goto end_1;
    ex_1:
        if (err == ERR_bad) {signal(ERR_bad);}
        else {
            goto ex_0;}
    end_1:;
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE e_oneofop ****/


extern errcode e_e2sc();
extern errcode recordOPget_2();
extern errcode recordOPget_3();
extern errcode sequenceOPsize();
extern errcode sequenceOPindexes();
extern errcode recordOPcopy1();
extern errcode recordOPset_2();
extern errcode sequenceOPconcat();
extern errcode sequenceOPsubseq();
extern errcode intOPsub();
extern errcode intOPadd();
extern errcode oneofOPmake_23();
extern errcode exprOPget_typespec();
CLUREF STR_s2r;
CLUREF STR_r2s;
static int e_structop_own_init = 0;

/**** BEGIN PROCEDURE e_structop ****/

errcode e_structop(e, x, cop, args, ret_1)
CLUREF e;
CLUREF x;
CLUREF cop;
CLUREF args;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF op;
    CLUREF a1;
    CLUREF h;
    CLUREF sel;
    CLUREF f;
    CLUREF xsel;
    CLUREF cons;
    CLUREF fields;
    CLUREF jz;
    CLUREF j;
    CLUREF sels;
    CLUREF i;
    CLUREF iz;
        if (e_structop_own_init == 0) {
        stringOPcons("s2r", CLU_1, CLU_3, &STR_s2r);
        stringOPcons("r2s", CLU_1, CLU_3, &STR_r2s);
        e_structop_own_init = 1;
    }
    enter_proc(102);

  LINE(104);
    {
        {CLUREF T_1_1;
        T_1_1.num = cop.vec->data[0];
        op.num = T_1_1.num;
        }
        }

  LINE(105);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    T_1_2.num = ((op.str->size != STR_s2r.str->size)? false :
        !(bcmp(op.str->data, STR_s2r.str->data, op.str->size)));
    T_1_1.num = T_1_2.num;
    if (!T_1_2.num) {
        T_1_3.num = ((op.str->size != STR_r2s.str->size)? false :
            !(bcmp(op.str->data, STR_r2s.str->data, op.str->size)));
        T_1_1.num = T_1_3.num;
    }
    if (T_1_1.num == true) {

  LINE(106);
        {
        {signal (ERR_illegal);}}
        }
        }/* end if */

  LINE(107);
    {

  LINE(108);
        {
            {CLUREF T_3_1;
            if (1 < 1 || 1 > args.vec->size ) {
                err = ERR_bounds;
                goto ex_1;}
            T_3_1.num = args.vec->data[1 - 1];
            a1.num = T_3_1.num;
            }
            }

  LINE(109);
        {
            {CLUREF T_3_1;
            err = stringOPfetch(op, CLU_1, &T_3_1);
            if (err != ERR_ok) goto ex_1;
            h.num = T_3_1.num;
            }
            }

  LINE(110);
        {
        CLUREF T_3_1;
        CLUREF T_3_2;
        T_3_1.ch = 'c';
        T_3_2.num = (h.ch == T_3_1.ch)? true : false;
        if (T_3_2.num == true) {

  LINE(111);
            {
            {
            ret_1->num = a1.num;
            }
            {signal (ERR_ok);}}
            }
        else {
        CLUREF T_3_3;
        CLUREF T_3_4;
        T_3_3.ch = 'g';
        T_3_4.num = (h.ch == T_3_3.ch)? true : false;
        if (T_3_4.num == true) {

  LINE(113);
            {
                {CLUREF T_4_1;
                err = stringOPrest(op, CLU_5, &T_4_1);
                if (err != ERR_ok) goto ex_1;
                sel.num = T_4_1.num;
                }
                }

  LINE(114);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            CLUREF T_4_3;
            CLUREF T_4_4;
            CLUREF T_4_5;
                err = e_e2sc(a1, &T_4_1);
                if (err != ERR_ok) goto ex_1;
                T_4_2.num = T_4_1.vec->data[0];
                T_4_4.num = T_4_2.vec->size; 
                T_4_5 = T_4_2;
                for (T_4_3.num = 1; T_4_3.num <= T_4_4.num; T_4_3.num++) {
                    f.num = T_4_5.vec->data[T_4_3.num - 1];

  LINE(115);
                    {
                    CLUREF T_5_1;
                    CLUREF T_5_2;
                    CLUREF T_5_3;
                    CLUREF T_5_4;
                        T_5_1.num = f.vec->data[1];
                        T_5_3.num = T_5_1.vec->size; 
                        T_5_4 = T_5_1;
                        for (T_5_2.num = 1; T_5_2.num <= T_5_3.num; T_5_2.num++) {
                            xsel.num = T_5_4.vec->data[T_5_2.num - 1];

  LINE(116);
                            {
                            CLUREF T_6_1;
                            T_6_1.num = ((sel.str->size != xsel.str->size)? false :
                                !(bcmp(sel.str->data, xsel.str->data, sel.str->size)));
                            if (T_6_1.num == true) {

  LINE(117);
                                {
                                {
                                CLUREF T_7_1;
                                T_7_1.num = f.vec->data[2];
                                ret_1->num = T_7_1.num;
                                }
                                {signal (ERR_ok);}}
                                }
                                }/* end if */
                        }
                    }
                    end_inline_for_2:;
                }
            }
            end_inline_for_1:;

  LINE(120);
            {
            {signal (ERR_bad);}}
            }
        else {
        CLUREF T_3_5;
        CLUREF T_3_6;
        T_3_5.ch = 'r';
        T_3_6.num = (h.ch == T_3_5.ch)? true : false;
        if (T_3_6.num == true) {

  LINE(122);
            {
                {CLUREF T_4_1;
                err = stringOPrest(op, CLU_9, &T_4_1);
                if (err != ERR_ok) goto ex_1;
                sel.num = T_4_1.num;
                }
                }

  LINE(123);
            {
                {CLUREF T_4_1;
                err = e_e2sc(a1, &T_4_1);
                if (err != ERR_ok) goto ex_1;
                cons.num = T_4_1.num;
                }
                }

  LINE(124);
            {
                {CLUREF T_4_1;
                T_4_1.num = cons.vec->data[0];
                fields.num = T_4_1.num;
                }
                }

  LINE(125);
            {
                {CLUREF T_4_1;
                T_4_1.num = fields.vec->size;
                jz.num = T_4_1.num;
                }
                }

  LINE(126);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
                T_4_2.num = fields.vec->size; 
                for (T_4_1.num = 1; T_4_1.num <= T_4_2.num; T_4_1.num++) {
                    j.num = T_4_1.num;

  LINE(127);
                    {
                        {CLUREF T_5_1;
                        CLUREF T_5_2;
                        if (j.num < 1 || j.num > fields.vec->size ) {
                            err = ERR_bounds;
                            goto ex_1;}
                        T_5_1.num = fields.vec->data[j.num - 1];
                        T_5_2.num = T_5_1.vec->data[1];
                        sels.num = T_5_2.num;
                        }
                        }

  LINE(128);
                    {
                    CLUREF T_5_1;
                    CLUREF T_5_2;
                        T_5_2.num = sels.vec->size; 
                        for (T_5_1.num = 1; T_5_1.num <= T_5_2.num; T_5_1.num++) {
                            i.num = T_5_1.num;

  LINE(129);
                            {
                            CLUREF T_6_1;
                            CLUREF T_6_2;
                            if (i.num < 1 || i.num > sels.vec->size ) {
                                err = ERR_bounds;
                                goto ex_1;}
                            T_6_1.num = sels.vec->data[i.num - 1];
                            T_6_2.num = ((sel.str->size != T_6_1.str->size)? false :
                                !(bcmp(sel.str->data, T_6_1.str->data, sel.str->size)));
                            if (T_6_2.num == true) {

  LINE(130);
                                {
                                    {CLUREF T_7_1;
                                    T_7_1.num = sels.vec->size;
                                    iz.num = T_7_1.num;
                                    }
                                    }

  LINE(131);
                                {
                                    {CLUREF T_7_1;
                                    CLUREF T_7_2;
                                    if (j.num < 1 || j.num > fields.vec->size ) {
                                        err = ERR_bounds;
                                        goto ex_1;}
                                    T_7_1.num = fields.vec->data[j.num - 1];
                                    generic_CLU_proc.type_owns = 0;
                                    generic_CLU_proc.proc = recordOPcopy1;
                                    CUR_PROC_VAR.proc = &generic_CLU_proc;
                                    err = recordOPcopy1(T_7_1, &T_7_2);
                                    if (err != ERR_ok) goto ex_1;
                                    f.num = T_7_2.num;
                                    }
                                    }

  LINE(132);
                                {
                                CLUREF T_7_1;
                                CLUREF T_7_2;
                                CLUREF T_7_3;
                                CLUREF T_7_4;
                                CLUREF T_7_5;
                                T_7_1.num = i.num - 1;
                                 if ((T_7_1.num >= 0 && i.num < 0 && (-1) < 0) || 
                                     (T_7_1.num <= 0 && i.num > 0 && (-1) > 0)) {
                                    err = ERR_overflow;
                                    goto ex_1;}
                                err = sequenceOPsubseq(sels, CLU_1, T_7_1, &T_7_2);
                                if (err != ERR_ok) goto ex_1;
                                T_7_3.num = i.num + 1;
                                 if ((T_7_3.num > 0 && i.num < 0 && 1 < 0) || 
                                     (T_7_3.num < 0 && i.num > 0 && 1 > 0)) {
                                    err = ERR_overflow;
                                    goto ex_1;}
                                err = sequenceOPsubseq(sels, T_7_3, iz, &T_7_4);
                                if (err != ERR_ok) goto ex_1;
                                err = sequenceOPconcat(T_7_2, T_7_4, &T_7_5);
                                if (err != ERR_ok) goto ex_1;
                                f.vec->data[1]  = T_7_5.num;
                                }

  LINE(134);
                                {
                                CLUREF T_7_1;
                                CLUREF T_7_2;
                                CLUREF T_7_3;
                                CLUREF T_7_4;
                                CLUREF T_7_5;
                                T_7_1.num = j.num - 1;
                                 if ((T_7_1.num >= 0 && j.num < 0 && (-1) < 0) || 
                                     (T_7_1.num <= 0 && j.num > 0 && (-1) > 0)) {
                                    err = ERR_overflow;
                                    goto ex_1;}
                                err = sequenceOPsubseq(fields, CLU_1, T_7_1, &T_7_2);
                                if (err != ERR_ok) goto ex_1;
                                T_7_3.num = j.num + 1;
                                 if ((T_7_3.num > 0 && j.num < 0 && 1 < 0) || 
                                     (T_7_3.num < 0 && j.num > 0 && 1 > 0)) {
                                    err = ERR_overflow;
                                    goto ex_1;}
                                err = sequenceOPsubseq(fields, T_7_3, jz, &T_7_4);
                                if (err != ERR_ok) goto ex_1;
                                err = sequenceOPconcat(T_7_2, T_7_4, &T_7_5);
                                if (err != ERR_ok) goto ex_1;
                                fields.num = T_7_5.num;
                                }

  LINE(136);
                                {
                                CLUREF T_7_1;
                                err = sequenceOPaddh(fields, f, &T_7_1);
                                if (err != ERR_ok) goto ex_1;
                                fields.num = T_7_1.num;
                                }

  LINE(137);
                                {
                                CLUREF T_7_1;
                                CLUREF T_7_2;
                                CLUREF T_7_3;
                                RecordAlloc(3, T_7_1);
                                sequenceOPnew2(CLU_1, &T_7_2);
                                T_7_2.vec->data[0] = sel.num;
                                T_7_1.vec->data[1]  = T_7_2.num;
                                if (2 < 1 || 2 > args.vec->size ) {
                                    err = ERR_bounds;
                                    goto ex_1;}
                                T_7_3.num = args.vec->data[2 - 1];
                                T_7_1.vec->data[2]  = T_7_3.num;
                                T_7_1.vec->data[0]  = 0;
                                f.num = T_7_1.num;
                                }

  LINE(140);
                                {
                                CLUREF T_7_1;
                                err = sequenceOPaddh(fields, f, &T_7_1);
                                if (err != ERR_ok) goto ex_1;
                                fields.num = T_7_1.num;
                                }

  LINE(141);
                                {
                                CLUREF T_7_1;
                                CLUREF T_7_2;
                                RecordAlloc(2, T_7_1);
                                T_7_2.num = cons.vec->data[1];
                                T_7_1.vec->data[1]  = T_7_2.num;
                                T_7_1.vec->data[0]  = fields.num;
                                cons.num = T_7_1.num;
                                }

  LINE(143);
                                {
                                {
                                CLUREF T_7_1;
                                CLUREF T_7_2;
                                CLUREF T_7_3;
                                CellAlloc(23, cons.num, T_7_1);
                                err = exprOPget_typespec(a1, &T_7_2);
                                if (err != ERR_ok) goto ex_1;
                                err = exprOPcreate(T_7_1, T_7_2, &T_7_3);
                                if (err != ERR_ok) goto ex_1;
                                ret_1->num = T_7_3.num;
                                }
                                {signal (ERR_ok);}}
                                }
                                }/* end if */
                        }
                    }
                    end_inline_for_4:;
                }
            }
            end_inline_for_3:;

  LINE(148);
            {
            {signal (ERR_bad);}}
            }
        else {

  LINE(149);
            {
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            CLUREF T_4_3;
            if (2 < 1 || 2 > args.vec->size ) {
                err = ERR_bounds;
                goto ex_1;}
            T_4_1.num = args.vec->data[2 - 1];
            err = exprOPsimilar(a1, T_4_1, &T_4_2);
            if (err != ERR_ok) goto ex_1;
            err = e_b2e(e, T_4_2, &T_4_3);
            if (err != ERR_ok) goto ex_1;
            ret_1->num = T_4_3.num;
            }
            {signal (ERR_ok);}}
            }}}}/* end if */
        }
    goto end_1;
    ex_1:
        if (err == ERR_bad) {signal(ERR_bad);}
        else {
            goto ex_0;}
    end_1:;
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE e_structop ****/


extern errcode sequenceOPfill();
extern errcode sequenceOPempty();
extern errcode sequenceOPbottom();
extern errcode sequenceOPtop();
extern errcode sequenceOPremh();
extern errcode sequenceOPreml();
extern errcode sequenceOPaddl();
extern errcode sequenceOPreplace();
CLUREF STR_a2s;
CLUREF STR_s2a;
CLUREF STR_elements;
CLUREF STR_indexes;
CLUREF STR_new;
CLUREF STR_e2s;
CLUREF STR_fill;
CLUREF STR_fill_137copy;
CLUREF STR_equal;
CLUREF STR_similar;
CLUREF STR_bottom;
CLUREF STR_top;
CLUREF STR_remh;
CLUREF STR_reml;
CLUREF STR_addh;
CLUREF STR_addl;
CLUREF STR_replace;
static int e_seqop_own_init = 0;

/**** BEGIN PROCEDURE e_seqop ****/

errcode e_seqop(e, x, cop, args, ret_1)
CLUREF e;
CLUREF x;
CLUREF cop;
CLUREF args;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF op;
    CLUREF a1;
    CLUREF cons;
    CLUREF elts;
    CLUREF a2;
    CLUREF err_UNIQ;
        if (e_seqop_own_init == 0) {
        stringOPcons("a2s", CLU_1, CLU_3, &STR_a2s);
        stringOPcons("s2a", CLU_1, CLU_3, &STR_s2a);
        stringOPcons("elements", CLU_1, CLU_8, &STR_elements);
        stringOPcons("indexes", CLU_1, CLU_7, &STR_indexes);
        stringOPcons("new", CLU_1, CLU_3, &STR_new);
        stringOPcons("copy", CLU_1, CLU_4, &STR_copy);
        stringOPcons("e2s", CLU_1, CLU_3, &STR_e2s);
        stringOPcons("fill", CLU_1, CLU_4, &STR_fill);
        stringOPcons("fill_copy", CLU_1, CLU_9, &STR_fill_137copy);
        stringOPcons("equal", CLU_1, CLU_5, &STR_equal);
        stringOPcons("similar", CLU_1, CLU_7, &STR_similar);
        stringOPcons("size", CLU_1, CLU_4, &STR_size);
        stringOPcons("empty", CLU_1, CLU_5, &STR_empty);
        stringOPcons("bottom", CLU_1, CLU_6, &STR_bottom);
        stringOPcons("top", CLU_1, CLU_3, &STR_top);
        stringOPcons("remh", CLU_1, CLU_4, &STR_remh);
        stringOPcons("reml", CLU_1, CLU_4, &STR_reml);
        stringOPcons("fetch", CLU_1, CLU_5, &STR_fetch);
        stringOPcons("rest", CLU_1, CLU_4, &STR_rest);
        stringOPcons("addh", CLU_1, CLU_4, &STR_addh);
        stringOPcons("addl", CLU_1, CLU_4, &STR_addl);
        stringOPcons("replace", CLU_1, CLU_7, &STR_replace);
        stringOPcons("concat", CLU_1, CLU_6, &STR_concat);
        e_seqop_own_init = 1;
    }
    enter_proc(153);

  LINE(155);
    {
        {CLUREF T_1_1;
        T_1_1.num = cop.vec->data[0];
        op.num = T_1_1.num;
        }
        }

  LINE(156);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    CLUREF T_1_4;
    CLUREF T_1_5;
    CLUREF T_1_6;
    CLUREF T_1_7;
    T_1_4.num = ((op.str->size != STR_a2s.str->size)? false :
        !(bcmp(op.str->data, STR_a2s.str->data, op.str->size)));
    T_1_3.num = T_1_4.num;
    if (!T_1_4.num) {
        T_1_5.num = ((op.str->size != STR_s2a.str->size)? false :
            !(bcmp(op.str->data, STR_s2a.str->data, op.str->size)));
        T_1_3.num = T_1_5.num;
    }
    T_1_2.num = T_1_3.num;
    if (!T_1_3.num) {
        T_1_6.num = ((op.str->size != STR_elements.str->size)? false :
            !(bcmp(op.str->data, STR_elements.str->data, op.str->size)));
        T_1_2.num = T_1_6.num;
    }
    T_1_1.num = T_1_2.num;
    if (!T_1_2.num) {
        T_1_7.num = ((op.str->size != STR_indexes.str->size)? false :
            !(bcmp(op.str->data, STR_indexes.str->data, op.str->size)));
        T_1_1.num = T_1_7.num;
    }
    if (T_1_1.num == true) {

  LINE(158);
        {
        {signal (ERR_illegal);}}
        }
        }/* end if */

  LINE(159);
    {

  LINE(160);
        {
        CLUREF T_3_1;
        T_3_1.num = ((op.str->size != STR_new.str->size)? false :
            !(bcmp(op.str->data, STR_new.str->data, op.str->size)));
        if (T_3_1.num == true) {

  LINE(161);
            {
            CLUREF T_4_1;
                err = sequenceOPnew(&T_4_1);
                if (err != ERR_ok) goto ex_1;
                elist[0].num = T_4_1.num;
                err = ERR_recons;
                goto ex_1;
                }
            }
            }/* end if */

  LINE(162);
        {
            {CLUREF T_3_1;
            if (1 < 1 || 1 > args.vec->size ) {
                err = ERR_bounds;
                goto ex_1;}
            T_3_1.num = args.vec->data[1 - 1];
            a1.num = T_3_1.num;
            }
            }

  LINE(163);
        {
        CLUREF T_3_1;
        T_3_1.num = ((op.str->size != STR_copy.str->size)? false :
            !(bcmp(op.str->data, STR_copy.str->data, op.str->size)));
        if (T_3_1.num == true) {

  LINE(164);
            {
            {
            ret_1->num = a1.num;
            }
            {signal (ERR_ok);}}
            }
        else {
        CLUREF T_3_2;
        T_3_2.num = ((op.str->size != STR_e2s.str->size)? false :
            !(bcmp(op.str->data, STR_e2s.str->data, op.str->size)));
        if (T_3_2.num == true) {

  LINE(166);
            {
            CLUREF T_4_1;
                sequenceOPnew2(CLU_1, &T_4_1);
                T_4_1.vec->data[0] = a1.num;
                elist[0].num = T_4_1.num;
                err = ERR_recons;
                goto ex_1;
                }
            }
        else {
        CLUREF T_3_3;
        CLUREF T_3_4;
        CLUREF T_3_5;
        T_3_4.num = ((op.str->size != STR_fill.str->size)? false :
            !(bcmp(op.str->data, STR_fill.str->data, op.str->size)));
        T_3_3.num = T_3_4.num;
        if (!T_3_4.num) {
            T_3_5.num = ((op.str->size != STR_fill_137copy.str->size)? false :
                !(bcmp(op.str->data, STR_fill_137copy.str->data, op.str->size)));
            T_3_3.num = T_3_5.num;
        }
        if (T_3_3.num == true) {

  LINE(168);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            CLUREF T_4_3;
                err = e_e2i(a1, &T_4_1);
                if (err != ERR_ok) goto ex_1;
                if (2 < 1 || 2 > args.vec->size ) {
                    err = ERR_bounds;
                    goto ex_1;}
                T_4_2.num = args.vec->data[2 - 1];
                err = sequenceOPfill(T_4_1, T_4_2, &T_4_3);
                if (err != ERR_ok) goto ex_1;
                elist[0].num = T_4_3.num;
                err = ERR_recons;
                goto ex_1;
                }
            }
        else {
        CLUREF T_3_6;
        CLUREF T_3_7;
        CLUREF T_3_8;
        T_3_7.num = ((op.str->size != STR_equal.str->size)? false :
            !(bcmp(op.str->data, STR_equal.str->data, op.str->size)));
        T_3_6.num = T_3_7.num;
        if (!T_3_7.num) {
            T_3_8.num = ((op.str->size != STR_similar.str->size)? false :
                !(bcmp(op.str->data, STR_similar.str->data, op.str->size)));
            T_3_6.num = T_3_8.num;
        }
        if (T_3_6.num == true) {

  LINE(170);
            {
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            CLUREF T_4_3;
            if (2 < 1 || 2 > args.vec->size ) {
                err = ERR_bounds;
                goto ex_1;}
            T_4_1.num = args.vec->data[2 - 1];
            err = exprOPsimilar(a1, T_4_1, &T_4_2);
            if (err != ERR_ok) goto ex_1;
            err = e_b2e(e, T_4_2, &T_4_3);
            if (err != ERR_ok) goto ex_1;
            ret_1->num = T_4_3.num;
            }
            {signal (ERR_ok);}}
            }
            }}}}/* end if */

  LINE(171);
        {
            {CLUREF T_3_1;
            err = e_e2qc(a1, &T_3_1);
            if (err != ERR_ok) goto ex_1;
            cons.num = T_3_1.num;
            }
            }

  LINE(172);
        {
            {CLUREF T_3_1;
            T_3_1.num = cons.vec->data[0];
            elts.num = T_3_1.num;
            }
            }

  LINE(173);
        {
        CLUREF T_3_1;
        T_3_1.num = ((op.str->size != STR_size.str->size)? false :
            !(bcmp(op.str->data, STR_size.str->data, op.str->size)));
        if (T_3_1.num == true) {

  LINE(174);
            {
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            T_4_1.num = elts.vec->size;
            err = e_i2e(e, T_4_1, &T_4_2);
            if (err != ERR_ok) goto ex_1;
            ret_1->num = T_4_2.num;
            }
            {signal (ERR_ok);}}
            }
        else {
        CLUREF T_3_2;
        T_3_2.num = ((op.str->size != STR_empty.str->size)? false :
            !(bcmp(op.str->data, STR_empty.str->data, op.str->size)));
        if (T_3_2.num == true) {

  LINE(176);
            {
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            err = sequenceOPempty(elts, &T_4_1);
            if (err != ERR_ok) goto ex_1;
            err = e_b2e(e, T_4_1, &T_4_2);
            if (err != ERR_ok) goto ex_1;
            ret_1->num = T_4_2.num;
            }
            {signal (ERR_ok);}}
            }
        else {
        CLUREF T_3_3;
        T_3_3.num = ((op.str->size != STR_bottom.str->size)? false :
            !(bcmp(op.str->data, STR_bottom.str->data, op.str->size)));
        if (T_3_3.num == true) {

  LINE(178);
            {
            {
            CLUREF T_4_1;
            err = sequenceOPbottom(elts, &T_4_1);
            if (err != ERR_ok) goto ex_1;
            ret_1->num = T_4_1.num;
            }
            {signal (ERR_ok);}}
            }
        else {
        CLUREF T_3_4;
        T_3_4.num = ((op.str->size != STR_top.str->size)? false :
            !(bcmp(op.str->data, STR_top.str->data, op.str->size)));
        if (T_3_4.num == true) {

  LINE(180);
            {
            {
            CLUREF T_4_1;
            err = sequenceOPtop(elts, &T_4_1);
            if (err != ERR_ok) goto ex_1;
            ret_1->num = T_4_1.num;
            }
            {signal (ERR_ok);}}
            }
        else {
        CLUREF T_3_5;
        T_3_5.num = ((op.str->size != STR_remh.str->size)? false :
            !(bcmp(op.str->data, STR_remh.str->data, op.str->size)));
        if (T_3_5.num == true) {

  LINE(182);
            {
            CLUREF T_4_1;
                err = sequenceOPremh(elts, &T_4_1);
                if (err != ERR_ok) goto ex_1;
                elist[0].num = T_4_1.num;
                err = ERR_recons;
                goto ex_1;
                }
            }
        else {
        CLUREF T_3_6;
        T_3_6.num = ((op.str->size != STR_reml.str->size)? false :
            !(bcmp(op.str->data, STR_reml.str->data, op.str->size)));
        if (T_3_6.num == true) {

  LINE(184);
            {
            CLUREF T_4_1;
                err = sequenceOPreml(elts, &T_4_1);
                if (err != ERR_ok) goto ex_1;
                elist[0].num = T_4_1.num;
                err = ERR_recons;
                goto ex_1;
                }
            }
            }}}}}}/* end if */

  LINE(185);
        {
            {CLUREF T_3_1;
            if (2 < 1 || 2 > args.vec->size ) {
                err = ERR_bounds;
                goto ex_1;}
            T_3_1.num = args.vec->data[2 - 1];
            a2.num = T_3_1.num;
            }
            }

  LINE(186);
        {
        CLUREF T_3_1;
        T_3_1.num = ((op.str->size != STR_fetch.str->size)? false :
            !(bcmp(op.str->data, STR_fetch.str->data, op.str->size)));
        if (T_3_1.num == true) {

  LINE(187);
            {
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            err = e_e2i(a2, &T_4_1);
            if (err != ERR_ok) goto ex_1;
            if (T_4_1.num < 1 || T_4_1.num > elts.vec->size ) {
                err = ERR_bounds;
                goto ex_1;}
            T_4_2.num = elts.vec->data[T_4_1.num - 1];
            ret_1->num = T_4_2.num;
            }
            {signal (ERR_ok);}}
            }
        else {
        CLUREF T_3_2;
        T_3_2.num = ((op.str->size != STR_rest.str->size)? false :
            !(bcmp(op.str->data, STR_rest.str->data, op.str->size)));
        if (T_3_2.num == true) {

  LINE(189);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            CLUREF T_4_3;
                err = e_e2i(a2, &T_4_1);
                if (err != ERR_ok) goto ex_1;
                T_4_2.num = elts.vec->size;
                err = sequenceOPsubseq(elts, T_4_1, T_4_2, &T_4_3);
                if (err != ERR_ok) goto ex_1;
                elist[0].num = T_4_3.num;
                err = ERR_recons;
                goto ex_1;
                }
            }
        else {
        CLUREF T_3_3;
        T_3_3.num = ((op.str->size != STR_addh.str->size)? false :
            !(bcmp(op.str->data, STR_addh.str->data, op.str->size)));
        if (T_3_3.num == true) {

  LINE(191);
            {
            CLUREF T_4_1;
                err = sequenceOPaddh(elts, a2, &T_4_1);
                if (err != ERR_ok) goto ex_1;
                elist[0].num = T_4_1.num;
                err = ERR_recons;
                goto ex_1;
                }
            }
        else {
        CLUREF T_3_4;
        T_3_4.num = ((op.str->size != STR_addl.str->size)? false :
            !(bcmp(op.str->data, STR_addl.str->data, op.str->size)));
        if (T_3_4.num == true) {

  LINE(193);
            {
            CLUREF T_4_1;
                err = sequenceOPaddl(elts, a2, &T_4_1);
                if (err != ERR_ok) goto ex_1;
                elist[0].num = T_4_1.num;
                err = ERR_recons;
                goto ex_1;
                }
            }
        else {
        CLUREF T_3_5;
        T_3_5.num = ((op.str->size != STR_replace.str->size)? false :
            !(bcmp(op.str->data, STR_replace.str->data, op.str->size)));
        if (T_3_5.num == true) {

  LINE(195);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            CLUREF T_4_3;
                err = e_e2i(a2, &T_4_1);
                if (err != ERR_ok) goto ex_1;
                if (3 < 1 || 3 > args.vec->size ) {
                    err = ERR_bounds;
                    goto ex_1;}
                T_4_2.num = args.vec->data[3 - 1];
                err = sequenceOPreplace(elts, T_4_1, T_4_2, &T_4_3);
                if (err != ERR_ok) goto ex_1;
                elist[0].num = T_4_3.num;
                err = ERR_recons;
                goto ex_1;
                }
            }
        else {
        CLUREF T_3_6;
        T_3_6.num = ((op.str->size != STR_concat.str->size)? false :
            !(bcmp(op.str->data, STR_concat.str->data, op.str->size)));
        if (T_3_6.num == true) {

  LINE(197);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            CLUREF T_4_3;
                err = e_e2qc(a2, &T_4_1);
                if (err != ERR_ok) goto ex_1;
                T_4_2.num = T_4_1.vec->data[0];
                err = sequenceOPconcat(elts, T_4_2, &T_4_3);
                if (err != ERR_ok) goto ex_1;
                elist[0].num = T_4_3.num;
                err = ERR_recons;
                goto ex_1;
                }
            }
        else {

  LINE(198);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            CLUREF T_4_3;
            CLUREF T_4_4;
                err = e_e2i(a2, &T_4_1);
                if (err != ERR_ok) goto ex_1;
                if (3 < 1 || 3 > args.vec->size ) {
                    err = ERR_bounds;
                    goto ex_1;}
                T_4_2.num = args.vec->data[3 - 1];
                err = e_e2i(T_4_2, &T_4_3);
                if (err != ERR_ok) goto ex_1;
                err = sequenceOPsubseq(elts, T_4_1, T_4_3, &T_4_4);
                if (err != ERR_ok) goto ex_1;
                elist[0].num = T_4_4.num;
                err = ERR_recons;
                goto ex_1;
                }
            }}}}}}}/* end if */
        }
        goto end_1;
        ex_1:
            if ((err == ERR_bad)) {

  LINE(200);
                {
                {signal (ERR_bad);}}
            }
            else if ((err == ERR_recons)) {
            CLUREF elts;
            elts.num = elist[0].num;

  LINE(202);
                {
                    {CLUREF T_2_1;
                    CLUREF T_2_2;
                    CLUREF T_2_3;
                    RecordAlloc(3, T_2_1);
                    T_2_2.num = cop.vec->data[2];
                    T_2_1.vec->data[2]  = T_2_2.num;
                    CellAlloc(1, nil, T_2_3);
                    T_2_1.vec->data[1]  = T_2_3.num;
                    T_2_1.vec->data[0]  = elts.num;
                    cons.num = T_2_1.num;
                    }
                    }

  LINE(205);
                {
                {
                CLUREF T_2_1;
                CLUREF T_2_2;
                CLUREF T_2_3;
                CellAlloc(1, cons.num, T_2_1);
                T_2_2.num = cop.vec->data[2];
                err = exprOPcreate(T_2_1, T_2_2, &T_2_3);
                if (err != ERR_ok) goto ex_0;
                ret_1->num = T_2_3.num;
                }
                {signal (ERR_ok);}}
            }
            else {
                CLUREF err_UNIQ;
                err_UNIQ.num = elist[0].num;

  LINE(207);
                {
                elist[0] = err_UNIQ;
                {signal (ERR_error);}}
            }
        end_1:;
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE e_seqop ****/


extern errcode oneofOPvalue_19();
extern errcode exprOPget_abs();

/**** BEGIN PROCEDURE e_e2n ****/

errcode e_e2n(x, ret_1)
CLUREF x;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    enter_proc(211);

  LINE(212);
    {
    {
    CLUREF T_2_1;
    CLUREF T_2_2;
    err = exprOPget_abs(x, &T_2_1);
    if (err != ERR_ok) goto ex_1;
    if (T_2_1.cell->tag != 19) {err = ERR_wrong_tag; goto ex_1;}
    T_2_2.num = T_2_1.cell->value;
    ret_1->num = T_2_2.num;
    }
    {signal (ERR_ok);}}
        goto end_1;
        ex_1:
            if ((err == ERR_wrong_tag)) {

  LINE(213);
                {
                {signal (ERR_bad);}}
            }
            else {
                goto ex_0;
            }
        end_1:;
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE e_e2n ****/


extern errcode oneofOPvalue_5();

/**** BEGIN PROCEDURE e_e2b ****/

errcode e_e2b(x, ret_1)
CLUREF x;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    enter_proc(216);

  LINE(217);
    {
    {
    CLUREF T_2_1;
    CLUREF T_2_2;
    err = exprOPget_abs(x, &T_2_1);
    if (err != ERR_ok) goto ex_1;
    if (T_2_1.cell->tag != 5) {err = ERR_wrong_tag; goto ex_1;}
    T_2_2.num = T_2_1.cell->value;
    ret_1->num = T_2_2.num;
    }
    {signal (ERR_ok);}}
        goto end_1;
        ex_1:
            if ((err == ERR_wrong_tag)) {

  LINE(218);
                {
                {signal (ERR_bad);}}
            }
            else {
                goto ex_0;
            }
        end_1:;
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE e_e2b ****/


extern errcode oneofOPvalue_15();

/**** BEGIN PROCEDURE e_e2i ****/

errcode e_e2i(x, ret_1)
CLUREF x;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    enter_proc(221);

  LINE(222);
    {
    {
    CLUREF T_2_1;
    CLUREF T_2_2;
    err = exprOPget_abs(x, &T_2_1);
    if (err != ERR_ok) goto ex_1;
    if (T_2_1.cell->tag != 15) {err = ERR_wrong_tag; goto ex_1;}
    T_2_2.num = T_2_1.cell->value;
    ret_1->num = T_2_2.num;
    }
    {signal (ERR_ok);}}
        goto end_1;
        ex_1:
            if ((err == ERR_wrong_tag)) {

  LINE(223);
                {
                {signal (ERR_bad);}}
            }
            else {
                goto ex_0;
            }
        end_1:;
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE e_e2i ****/


extern errcode oneofOPvalue_21();

/**** BEGIN PROCEDURE e_e2r ****/

errcode e_e2r(x, ret_1)
CLUREF x;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    enter_proc(226);

  LINE(227);
    {
    {
    CLUREF T_2_1;
    CLUREF T_2_2;
    err = exprOPget_abs(x, &T_2_1);
    if (err != ERR_ok) goto ex_1;
    if (T_2_1.cell->tag != 21) {err = ERR_wrong_tag; goto ex_1;}
    T_2_2.num = T_2_1.cell->value;
    ret_1->num = T_2_2.num;
    }
    {signal (ERR_ok);}}
        goto end_1;
        ex_1:
            if ((err == ERR_wrong_tag)) {

  LINE(228);
                {
                {signal (ERR_bad);}}
            }
            else {
                goto ex_0;
            }
        end_1:;
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE e_e2r ****/


extern errcode oneofOPvalue_7();

/**** BEGIN PROCEDURE e_e2h ****/

errcode e_e2h(x, ret_1)
CLUREF x;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    enter_proc(231);

  LINE(232);
    {
    {
    CLUREF T_2_1;
    CLUREF T_2_2;
    err = exprOPget_abs(x, &T_2_1);
    if (err != ERR_ok) goto ex_1;
    if (T_2_1.cell->tag != 7) {err = ERR_wrong_tag; goto ex_1;}
    T_2_2.num = T_2_1.cell->value;
    ret_1->num = T_2_2.num;
    }
    {signal (ERR_ok);}}
        goto end_1;
        ex_1:
            if ((err == ERR_wrong_tag)) {

  LINE(233);
                {
                {signal (ERR_bad);}}
            }
            else {
                goto ex_0;
            }
        end_1:;
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE e_e2h ****/


extern errcode oneofOPvalue_24();

/**** BEGIN PROCEDURE e_e2s ****/

errcode e_e2s(x, ret_1)
CLUREF x;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    enter_proc(236);

  LINE(237);
    {
    {
    CLUREF T_2_1;
    CLUREF T_2_2;
    err = exprOPget_abs(x, &T_2_1);
    if (err != ERR_ok) goto ex_1;
    if (T_2_1.cell->tag != 24) {err = ERR_wrong_tag; goto ex_1;}
    T_2_2.num = T_2_1.cell->value;
    ret_1->num = T_2_2.num;
    }
    {signal (ERR_ok);}}
        goto end_1;
        ex_1:
            if ((err == ERR_wrong_tag)) {

  LINE(238);
                {
                {signal (ERR_bad);}}
            }
            else {
                goto ex_0;
            }
        end_1:;
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE e_e2s ****/


extern errcode intOPequal();
CLUREF STR_make_137;
static int e_e2o_own_init = 0;

/**** BEGIN PROCEDURE e_e2o ****/

errcode e_e2o(x, ret_1, ret_2)
CLUREF x;
CLUREF *ret_1;
CLUREF *ret_2;
    {
    errcode err;
    errcode ecode2;
    CLUREF xa;
    CLUREF opa;
        if (e_e2o_own_init == 0) {
        stringOPcons("make_", CLU_1, CLU_5, &STR_make_137);
        e_e2o_own_init = 1;
    }
    enter_proc(241);

  LINE(242);
    {
    CLUREF T_1_1;
    err = exprOPget_abs(x, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    switch (T_1_1.cell->tag) {
    case 16: 
         {CLUREF T_1_2;
        T_1_2.num = T_1_1.cell->value;
        xa.num = T_1_2.num;

  LINE(244);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = xa.vec->data[0];
            err = exprOPget_abs(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            switch (T_2_2.cell->tag) {
            case 20: 
                 {CLUREF T_2_3;
                T_2_3.num = T_2_2.cell->value;
                opa.num = T_2_3.num;

  LINE(246);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    CLUREF T_3_3;
                    T_3_1.num = opa.vec->data[0];
                    err = stringOPindexs(STR_make_137, T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    T_3_3.num = (T_3_2.num == 1)? true : false;
                    if (T_3_3.num == true) {

  LINE(247);
                        {
                        {
                        CLUREF T_4_1;
                        CLUREF T_4_2;
                        T_4_1.num = xa.vec->data[1];
                        err = sequenceOPbottom(T_4_1, &T_4_2);
                        if (err != ERR_ok) goto ex_0;
                        ret_1->num = T_4_2.num;
                        }
                        {
                        CLUREF T_4_3;
                        CLUREF T_4_4;
                        T_4_3.num = opa.vec->data[0];
                        err = stringOPrest(T_4_3, CLU_6, &T_4_4);
                        if (err != ERR_ok) goto ex_0;
                        ret_2->num = T_4_4.num;
                        }
                        {signal (ERR_ok);}}
                        }
                        }/* end if */
                    break;
                    }
            default: {
            }
            }
            }
            break;
            }
    default: {
    }
    }
    }

  LINE(254);
    {
    {signal (ERR_bad);}}
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE e_e2o ****/


extern errcode oneofOPvalue_23();

/**** BEGIN PROCEDURE e_e2sc ****/

errcode e_e2sc(x, ret_1)
CLUREF x;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    enter_proc(257);

  LINE(258);
    {
    {
    CLUREF T_2_1;
    CLUREF T_2_2;
    err = exprOPget_abs(x, &T_2_1);
    if (err != ERR_ok) goto ex_1;
    if (T_2_1.cell->tag != 23) {err = ERR_wrong_tag; goto ex_1;}
    T_2_2.num = T_2_1.cell->value;
    ret_1->num = T_2_2.num;
    }
    {signal (ERR_ok);}}
        goto end_1;
        ex_1:
            if ((err == ERR_wrong_tag)) {

  LINE(259);
                {
                {signal (ERR_bad);}}
            }
            else {
                goto ex_0;
            }
        end_1:;
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE e_e2sc ****/


extern errcode oneofOPvalue_1();

/**** BEGIN PROCEDURE e_e2qc ****/

errcode e_e2qc(x, ret_1)
CLUREF x;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    enter_proc(262);

  LINE(263);
    {
    {
    CLUREF T_2_1;
    CLUREF T_2_2;
    err = exprOPget_abs(x, &T_2_1);
    if (err != ERR_ok) goto ex_1;
    if (T_2_1.cell->tag != 1) {err = ERR_wrong_tag; goto ex_1;}
    T_2_2.num = T_2_1.cell->value;
    ret_1->num = T_2_2.num;
    }
    {signal (ERR_ok);}}
        goto end_1;
        ex_1:
            if ((err == ERR_wrong_tag)) {

  LINE(264);
                {
                {signal (ERR_bad);}}
            }
            else {
                goto ex_0;
            }
        end_1:;
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE e_e2qc ****/

