# include "cxgr_common.h"
# include <stdio.h>

# ifdef CXGR_EXTRA_INCLUDE
#   include CXGR_EXTRA_INCLUDE
# endif

typedef cxgr_word W;

static cxgr_space invoke_gc(W *sp, W *hp, int hplim, int stacktop, cxgr_runtime_info *info)
{
    cxgr_space r = cxgr_gc(sp + stacktop, hp, stacktop - hplim, info);
    r.sp -= stacktop;
    return r;
}

static void unhandled_jump(int togo, cxgr_runtime_info *info)
{
    char buf[1000];
    sprintf(buf, "internal error: unhandled jump(togo = %d): this error is due to a miscompilation", togo);
    cxgr_message(buf, info);
}

static cxgr_result make_result(W *sp, W *hp, cxgr_status s)
{
    cxgr_result r;
    r.sp = sp;
    r.hp = hp;
    r.status = s;
    return r;
}

# ifndef FUNCTION_HEAD
#   define FUNCTION_HEAD(name, arity)
# endif

# define ENSURE_FREESPACE(hplim, stacktop)                                    \
  if(hp > sp + (hplim))                                                       \
  {                                                                           \
    cxgr_space nsp = invoke_gc(sp, hp, (hplim), (stacktop), info);             \
    sp = nsp.sp;                                                              \
    hp = nsp.hp;                                                              \
  }                                                                           \
  /**/

static const W zero2[3] = {3, 1, 1};
static const W zero5[3] = {5, 2, 2};
static const W zero9[3] = {7, 2, 2};
static const W zero15[3] = {9, 3, 3};
static const W zero23[3] = {11, 3, 3};
static const W zero28[3] = {13, 2, 2};
static const W zero31[3] = {15, 1, 1};
static const W zero40[3] = {17, 3, 3};
static const W zero46[3] = {19, 2, 2};
static const W zero52[3] = {23, 2, 2};
static const W zero55[3] = {25, 2, 2};
static const W zero62[3] = {29, 3, 3};
static const W zero75[3] = {31, 2, 2};
static const W zero82[3] = {37, 1, 1};
static const W zero90[3] = {43, 1, 1};
static const W zero95[3] = {49, 1, 1};
static const W zero99[3] = {51, 2, 2};
static const W zero106[3] = {53, 2, 2};
static const W zero119[3] = {63, 4, 4};
static const W zero130[3] = {65, 3, 3};
static const W zero147[3] = {73, 5, 5};
static const W zero158[3] = {77, 3, 3};
static const W zero163[3] = {81, 1, 1};
static const W zero176[3] = {89, 1, 1};
static const W zero185[3] = {93, 3, 3};
static const W zero189[3] = {95, 1, 1};
static const W zero211[3] = {113, 4, 4};
static const W zero221[3] = {115, 3, 3};
static const W zero229[3] = {119, 3, 3};
static const W zero234[3] = {123, 1, 1};
static const W zero241[3] = {125, 2, 2};
static const W zero254[3] = {131, 4, 4};
static const W zero258[3] = {133, 3, 3};
static const W zero264[3] = {135, 4, 4};
static const W zero270[3] = {137, 4, 4};
static const W zero277[3] = {139, 2, 2};
static const W zero282[3] = {143, 1, 1};
static const W zero287[3] = {147, 1, 1};
static const W zero293[3] = {149, 1, 1};
static const W zero301[3] = {155, 1, 1};
static const W zero304[3] = {157, 1, 1};
static const W zero307[3] = {159, 1, 1};
static const W zero318[3] = {177, 1, 1};
static const W zero329[3] = {195, 1, 1};
static const W zero340[3] = {213, 1, 1};
static const W zero351[3] = {231, 1, 1};
static const W zero362[3] = {249, 1, 1};
static const W zero370[3] = {259, 1, 1};
static const W zero378[3] = {269, 1, 1};
static const W zero387[3] = {281, 1, 1};
static const W zero398[3] = {297, 1, 1};
static const W zero409[3] = {313, 1, 1};
static const W zero418[3] = {325, 1, 1};
static const W zero423[3] = {327, 1, 1};
static const W zero428[3] = {331, 1, 1};
static const W zero437[3] = {335, 3, 3};
static const W zero441[3] = {337, 1, 1};
static const W zero457[3] = {351, 2, 2};
static const W zero482[3] = {373, 2, 2};
static const W zero494[3] = {383, 2, 2};
static const W zero513[3] = {399, 2, 2};
static const W zero525[3] = {409, 2, 2};
static const W zero537[3] = {419, 2, 2};
static const W zero577[3] = {447, 1, 1};
static const W zero587[3] = {455, 3, 3};
static const W zero599[3] = {457, 4, 4};
static const W zero613[3] = {469, 3, 3};
static const W zero628[3] = {475, 4, 4};
static const W zero638[3] = {483, 2, 2};
static const W zero647[3] = {489, 2, 2};
static const W zero654[3] = {491, 2, 2};
static const W zero660[3] = {493, 2, 2};
static const W zero673[3] = {507, 1, 1};
static const W zero682[3] = {521, 1, 1};
static const W zero691[3] = {535, 1, 1};
static const W zero710[3] = {569, 1, 1};
static const W zero729[3] = {589, 3, 3};
static const W zero744[3] = {601, 3, 3};
static const W zero752[3] = {607, 3, 3};
static const W zero760[3] = {611, 2, 2};
static const W zero768[3] = {615, 1, 1};
static const W zero776[3] = {621, 2, 2};
static const W zero782[3] = {625, 2, 2};
static const W zero795[3] = {637, 3, 3};
static const W zero800[3] = {639, 3, 3};
static const W zero803[3] = {641, 2, 2};
static const W zero816[3] = {655, 1, 1};
static const W zero819[3] = {657, 1, 1};
static const W zero833[3] = {663, 5, 5};
static const W zero844[3] = {667, 5, 5};
static const W zero862[3] = {673, 6, 6};
static const W zero876[3] = {679, 5, 5};
static const W zero885[3] = {681, 1, 1};
static const W zero_TRUE[3] = {691, 2, 2};
static const W zero_FALSE[3] = {693, 2, 2};
static const W zero_In[3] = {687, 1, 1};
static const W zero_Out[3] = {685, 1, 1};
static const W zero_Succ[3] = {689, 1, 1};

static const W w[4] = {683, 1, 2, 239};

cxgr_result cxgr_code(W *sp, W *hp, W *statics, cxgr_runtime_info *info)
{
W result;
int togo = 0;

sp[-1] = 9999;
jump:
switch(togo >> 1)
{
case 1:
fun2:
    FUNCTION_HEAD(2, 1)
    ENSURE_FREESPACE(0 - 10, -2)
    result = sp[-2];
    togo = sp[-1];
    goto jump;
case 2:
fun5:
    FUNCTION_HEAD(5, 2)
    ENSURE_FREESPACE(0 - 10, -3)
    result = sp[-2];
    togo = sp[-1];
    goto jump;
case 3:
fun9:
    FUNCTION_HEAD(9, 2)
    ENSURE_FREESPACE(0 - 10, -3)
    sp[-2] = sp[-3];
    goto fun2;
case 4:
fun15:
    FUNCTION_HEAD(15, 3)
    ENSURE_FREESPACE(0 - 10, -4)
    {
        W first = sp[-4];
        sp[-4] = sp[-2];
        sp[-2] = sp[-3];
        sp[-3] = first;
    }
    goto call2;
case 5:
fun23:
    FUNCTION_HEAD(23, 3)
    ENSURE_FREESPACE(0 - 10, -4)
    ENSURE_FREESPACE(0 - 10 - 5, -4)
    hp[0] = 9;
    hp[1] = 1;
    hp[2] = 3;
    hp[3] = sp[-3];
    hp[4] = sp[-4];
    sp[-3] = (W)hp;
    hp += 5;
    ENSURE_FREESPACE(0 - 10 - 5, -3)
    hp[0] = 9;
    hp[1] = 1;
    hp[2] = 3;
    hp[3] = sp[-3];
    hp[4] = sp[-2];
    result = (W)hp;
    hp += 5;
    togo = sp[-1];
    goto jump;
case 6:
fun28:
    FUNCTION_HEAD(28, 2)
    ENSURE_FREESPACE(0 - 10, -3)
    {
        W first = sp[-3];
        sp[-3] = sp[-2];
        sp[-2] = first;
    }
    ENSURE_FREESPACE(0 - 10 - 4, -3)
    hp[0] = 11;
    hp[1] = 2;
    hp[2] = 3;
    hp[3] = sp[-2];
    sp[-2] = (W)hp;
    hp += 4;
    if(((W *)sp[-3])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-3];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(0 - (arity + 1), -3)
            pap = sp[-3];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[-1 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-3];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(0 - 10 - (size + 4), -3)
            pap = sp[-3];
            hp[size + 3] = sp[-2];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            togo = sp[-1];
            goto jump;
        }
    }
case 7:
fun31:
    FUNCTION_HEAD(31, 1)
    ENSURE_FREESPACE(0 - 10, -2)
    if(((W *)sp[-2])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-2];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(0 - (arity + 1), -2)
            pap = sp[-2];
            sp[-2] = (W)zero28;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[-1 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-2];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(0 - 10 - (size + 4), -2)
            pap = sp[-2];
            hp[size + 3] = (W)zero28;
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            togo = sp[-1];
            goto jump;
        }
    }
case 8:
fun40:
    FUNCTION_HEAD(40, 3)
    ENSURE_FREESPACE(0 - 10, -4)
    {
        W first = sp[-4];
        sp[-4] = sp[-2];
        sp[-2] = first;
    }
    ENSURE_FREESPACE(0 - 10 - 5, -4)
    hp[0] = 9;
    hp[1] = 1;
    hp[2] = 3;
    hp[3] = sp[-3];
    hp[4] = sp[-4];
    sp[-3] = (W)hp;
    hp += 5;
    sp[-5] = sp[-2];
    sp[-2] = (W)zero9;
    sp[-4] = (W)zero31;
    goto call3;
case 9:
fun46:
    FUNCTION_HEAD(46, 2)
    ENSURE_FREESPACE(0 - 10, -3)
    ENSURE_FREESPACE(0 - 10 - 4, -3)
    hp[0] = 17;
    hp[1] = 2;
    hp[2] = 3;
    hp[3] = sp[-3];
    sp[-4] = sp[-3];
    sp[-3] = (W)hp;
    hp += 4;
    goto fun40;
case 11:
fun52:
    FUNCTION_HEAD(52, 2)
    ENSURE_FREESPACE(0 - 6, -3)
    sp[-6] = sp[-3];
    sp[-5] = sp[-2];
    sp[-4] = 21;
    sp -= 3;
    goto fun46;
case 10:
    sp[1] = result;
    sp -= -3;
    goto fun46;
case 12:
fun55:
    FUNCTION_HEAD(55, 2)
    ENSURE_FREESPACE(0 - 10, -3)
    result = sp[-2];
    togo = sp[-1];
    goto jump;
case 14:
fun62:
    FUNCTION_HEAD(62, 3)
    ENSURE_FREESPACE(0 - 7, -4)
    sp[-7] = sp[-4];
    sp[-6] = sp[-3];
    sp[-5] = sp[-2];
    sp[-4] = 27;
    sp -= 3;
    goto call2;
case 13:
    sp[1] = result;
    if(((W *)sp[0])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[0];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(3 - (arity + 1), 0)
            pap = sp[0];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[2 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            sp -= -3;
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[0];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(3 - 10 - (size + 4), 0)
            pap = sp[0];
            hp[size + 3] = sp[1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            sp -= -3;
            togo = sp[-1];
            goto jump;
        }
    }
case 15:
fun75:
    FUNCTION_HEAD(75, 2)
    ENSURE_FREESPACE(0 - 10, -3)
    sp[-4] = sp[-3];
    sp[-3] = (W)zero62;
    goto call2;
case 18:
fun82:
    FUNCTION_HEAD(82, 1)
    ENSURE_FREESPACE(0 - 5, -2)
    sp[-4] = statics[5];
    sp[-5] = statics[6];
    sp[-3] = 35;
    sp -= 2;
    goto fun75;
case 17:
    sp[-1] = result;
    sp[-3] = sp[-1];
    sp[-2] = statics[5];
    sp[-1] = 33;
    goto fun75;
case 16:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 1), -1)
            pap = sp[-1];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            sp -= -2;
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 10 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = sp[0];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            sp -= -2;
            togo = sp[-1];
            goto jump;
        }
    }
case 21:
fun90:
    FUNCTION_HEAD(90, 1)
    ENSURE_FREESPACE(0 - 5, -2)
    sp[-4] = statics[7];
    sp[-5] = statics[6];
    sp[-3] = 41;
    sp -= 2;
    goto fun75;
case 20:
    sp[-1] = result;
    sp[-3] = sp[-1];
    sp[-2] = statics[4];
    sp[-1] = 39;
    goto fun75;
case 19:
    sp[-1] = result;
    ENSURE_FREESPACE(2 - 10 - 5, -1)
    hp[0] = 29;
    hp[1] = 1;
    hp[2] = 3;
    hp[3] = sp[-1];
    hp[4] = sp[0];
    result = (W)hp;
    hp += 5;
    sp -= -2;
    togo = sp[-1];
    goto jump;
case 24:
fun95:
    FUNCTION_HEAD(95, 1)
    ENSURE_FREESPACE(0 - 3, -2)
    sp[-3] = (W)zero_Succ;
    sp[-2] = 47;
    sp -= 1;
    goto fun90;
case 23:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(1 - (arity + 2), -1)
            pap = sp[-1];
            sp[-2] = (W)w;
            sp[-1] = 45;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[0 - (arity - i + 1)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
case 22:
        sp[-1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(1 - 10 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = (W)w;
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[-1] = (W)hp;
            hp += (size + 4);
        }
    }
    sp -= -1;
    goto fun_Out;
case 25:
fun99:
    FUNCTION_HEAD(99, 2)
    ENSURE_FREESPACE(0 - 10, -3)
    {
        W first = sp[-3];
        sp[-3] = sp[-2];
        sp[-2] = first;
    }
    if(((W *)sp[-3])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-3];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(0 - (arity + 1), -3)
            pap = sp[-3];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[-1 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-3];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(0 - 10 - (size + 4), -3)
            pap = sp[-3];
            hp[size + 3] = sp[-2];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            togo = sp[-1];
            goto jump;
        }
    }
case 26:
fun106:
    FUNCTION_HEAD(106, 2)
    ENSURE_FREESPACE(0 - 10, -3)
    sp[-4] = sp[-3];
    sp[-3] = (W)zero9;
    goto call2;
case 31:
fun119:
    FUNCTION_HEAD(119, 4)
    ENSURE_FREESPACE(0 - 6, -5)
    {
        W first = sp[-4];
        sp[-4] = sp[-2];
        sp[-2] = sp[-3];
        sp[-3] = first;
    }
    if(((W *)sp[-4])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-4];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(0 - (arity + 5), -5)
            pap = sp[-4];
            sp[-6] = sp[-5];
            sp[-5] = 61;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[-1 - (arity - i + 4)] = ((W *)pap)[i + 3];
            }
            sp -= 4;
            togo = ((W *)pap)[0];
            goto jump;
        }
case 30:
        sp[-1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[-4];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(0 - 8 - (size + 4), -5)
            pap = sp[-4];
            hp[size + 3] = sp[-5];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[-5] = (W)hp;
            hp += (size + 4);
        }
        sp -= 4;
    }
    sp[-2] = sp[2];
    sp[-3] = sp[-1];
    sp[-1] = 59;
    goto fun106;
case 29:
    sp[2] = result;
    sp[-1] = sp[0];
    sp[0] = 57;
    sp -= -1;
    goto fun_Succ;
case 28:
    sp[-1] = result;
    sp[-2] = sp[0];
    sp[-3] = sp[1];
    sp[0] = 55;
    sp -= -1;
    goto call2;
case 27:
    sp[-1] = result;
    ENSURE_FREESPACE(2 - 10 - 5, -1)
    hp[0] = 9;
    hp[1] = 1;
    hp[2] = 3;
    hp[3] = sp[0];
    hp[4] = sp[-1];
    result = (W)hp;
    hp += 5;
    sp -= -2;
    togo = sp[-1];
    goto jump;
case 32:
fun130:
    FUNCTION_HEAD(130, 3)
    ENSURE_FREESPACE(0 - 10, -4)
    {
        W first = sp[-4];
        sp[-4] = sp[-3];
        sp[-3] = first;
    }
    ENSURE_FREESPACE(0 - 10 - 5, -4)
    hp[0] = 9;
    hp[1] = 1;
    hp[2] = 3;
    hp[3] = (W)zero5;
    hp[4] = sp[-2];
    sp[-5] = sp[-2];
    sp[-2] = (W)hp;
    hp += 5;
    ENSURE_FREESPACE(0 - 10 - 5, -5)
    hp[0] = 63;
    hp[1] = 2;
    hp[2] = 4;
    hp[3] = sp[-3];
    hp[4] = sp[-5];
    sp[-3] = (W)hp;
    hp += 5;
    ENSURE_FREESPACE(0 - 10 - 4, -4)
    hp[0] = 51;
    hp[1] = 1;
    hp[2] = 2;
    hp[3] = sp[-3];
    sp[-3] = (W)hp;
    hp += 4;
    goto call2;
case 36:
fun147:
    FUNCTION_HEAD(147, 5)
    ENSURE_FREESPACE(0 - 10, -6)
    {
        W first = sp[-6];
        sp[-6] = sp[-3];
        sp[-3] = first;
    }
    {
        W first = sp[-5];
        sp[-5] = sp[-4];
        sp[-4] = first;
    }
    sp[-8] = sp[-3];
    sp[-7] = sp[-5];
    sp[-5] = 71;
    sp -= 4;
    goto fun130;
case 35:
    sp[1] = result;
    sp[-5] = sp[1];
    sp[-2] = (W)zero9;
    sp[-3] = (W)zero5;
    sp[-4] = (W)zero9;
    sp[-1] = 69;
    goto call3;
case 34:
    sp[-1] = result;
    ENSURE_FREESPACE(4 - 6 - 5, -1)
    hp[0] = 9;
    hp[1] = 1;
    hp[2] = 3;
    hp[3] = sp[-1];
    hp[4] = sp[2];
    sp[2] = (W)hp;
    hp += 5;
    if(((W *)sp[1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(4 - (arity + 5), 0)
            pap = sp[1];
            sp[-2] = (W)zero5;
            sp[-1] = 67;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[3 - (arity - i + 4)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
case 33:
        sp[1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(4 - 10 - (size + 4), 0)
            pap = sp[1];
            hp[size + 3] = (W)zero5;
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[1] = (W)hp;
            hp += (size + 4);
        }
    }
    sp -= -4;
    goto call2;
case 38:
fun158:
    FUNCTION_HEAD(158, 3)
    ENSURE_FREESPACE(0 - 6, -4)
    {
        W first = sp[-3];
        sp[-3] = sp[-2];
        sp[-2] = first;
    }
    ENSURE_FREESPACE(0 - 6 - 6, -4)
    hp[0] = 73;
    hp[1] = 2;
    hp[2] = 5;
    hp[3] = sp[-4];
    hp[4] = sp[-2];
    hp[5] = sp[-3];
    sp[-2] = (W)hp;
    hp += 6;
    sp[-4] = sp[-3];
    sp[-5] = sp[-4];
    sp[-3] = 75;
    sp -= 2;
    goto fun75;
case 37:
    sp[-1] = result;
    ENSURE_FREESPACE(2 - 10 - 5, -1)
    hp[0] = 9;
    hp[1] = 1;
    hp[2] = 3;
    hp[3] = sp[0];
    hp[4] = sp[-1];
    result = (W)hp;
    hp += 5;
    sp -= -2;
    togo = sp[-1];
    goto jump;
case 40:
fun163:
    FUNCTION_HEAD(163, 1)
    ENSURE_FREESPACE(0 - 5, -2)
    sp[-4] = statics[2];
    sp[-5] = statics[2];
    sp[-3] = 79;
    sp -= 2;
    goto fun75;
case 39:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 1), -1)
            pap = sp[-1];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            sp -= -2;
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 10 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = sp[0];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            sp -= -2;
            togo = sp[-1];
            goto jump;
        }
    }
case 44:
fun176:
    FUNCTION_HEAD(176, 1)
    ENSURE_FREESPACE(0 - 4, -2)
    sp[-4] = (W)zero_Succ;
    sp[-3] = 87;
    sp -= 2;
    goto fun82;
case 43:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 3), -1)
            pap = sp[-1];
            sp[-2] = (W)w;
            sp[-1] = 85;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 2)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
case 42:
        sp[-1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 6 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = (W)w;
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[-1] = (W)hp;
            hp += (size + 4);
        }
    }
    ENSURE_FREESPACE(2 - 6 - 5, -1)
    hp[0] = 9;
    hp[1] = 1;
    hp[2] = 3;
    hp[3] = (W)zero5;
    hp[4] = statics[0];
    sp[-2] = sp[0];
    sp[0] = (W)hp;
    hp += 5;
    ENSURE_FREESPACE(2 - 6 - 4, -2)
    hp[0] = 77;
    hp[1] = 2;
    hp[2] = 3;
    hp[3] = sp[-2];
    sp[-2] = (W)hp;
    hp += 4;
    ENSURE_FREESPACE(2 - 6 - 4, -2)
    hp[0] = 51;
    hp[1] = 1;
    hp[2] = 2;
    hp[3] = sp[-2];
    sp[-2] = (W)hp;
    hp += 4;
    sp[-3] = sp[-2];
    sp[-2] = 83;
    sp -= 1;
    goto fun163;
case 41:
    sp[-1] = result;
    sp[-2] = sp[1];
    sp[-3] = sp[-1];
    sp[1] = (W)zero2;
    sp[-1] = (W)zero9;
    sp -= -3;
    goto call4;
case 46:
fun185:
    FUNCTION_HEAD(185, 3)
    ENSURE_FREESPACE(0 - 7, -4)
    {
        W first = sp[-3];
        sp[-3] = sp[-2];
        sp[-2] = first;
    }
    sp[-7] = sp[-4];
    sp[-6] = sp[-2];
    sp[-5] = 91;
    sp -= 4;
    goto fun46;
case 45:
    sp[2] = result;
    sp -= -4;
    goto fun40;
case 47:
fun189:
    FUNCTION_HEAD(189, 1)
    ENSURE_FREESPACE(0 - 10, -2)
    sp[-4] = sp[-2];
    sp[-2] = (W)zero9;
    sp[-3] = (W)zero5;
    goto call2;
case 56:
fun211:
    FUNCTION_HEAD(211, 4)
    ENSURE_FREESPACE(0 - 7, -5)
    if(((W *)sp[-4])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-4];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(0 - (arity + 6), -5)
            pap = sp[-4];
            sp[-7] = (W)zero9;
            sp[-6] = 111;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[-1 - (arity - i + 5)] = ((W *)pap)[i + 3];
            }
            sp -= 5;
            togo = ((W *)pap)[0];
            goto jump;
        }
case 55:
        sp[-1] = sp[3];
        sp[3] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[-4];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(0 - 8 - (size + 4), -5)
            pap = sp[-4];
            hp[size + 3] = (W)zero9;
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[-6] = sp[-2];
            sp[-2] = (W)hp;
            hp += (size + 4);
        }
        sp -= 5;
    }
    if(((W *)sp[2])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[2];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(5 - (arity + 7), -1)
            pap = sp[2];
            sp[-3] = (W)zero9;
            sp[-2] = 109;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[4 - (arity - i + 6)] = ((W *)pap)[i + 3];
            }
            sp -= 1;
            togo = ((W *)pap)[0];
            goto jump;
        }
case 54:
        sp[-1] = sp[0];
        sp[0] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[2];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(5 - 9 - (size + 4), -1)
            pap = sp[2];
            hp[size + 3] = (W)zero9;
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[-2] = sp[-1];
            sp[-1] = (W)hp;
            hp += (size + 4);
        }
        sp -= 1;
    }
    if(((W *)sp[2])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[2];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(6 - (arity + 8), -1)
            pap = sp[2];
            sp[-3] = (W)zero5;
            sp[-2] = 107;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[5 - (arity - i + 7)] = ((W *)pap)[i + 3];
            }
            sp -= 1;
            togo = ((W *)pap)[0];
            goto jump;
        }
case 53:
        sp[3] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[2];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(6 - 9 - (size + 4), -1)
            pap = sp[2];
            hp[size + 3] = (W)zero5;
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[2] = (W)hp;
            hp += (size + 4);
        }
        sp -= 1;
    }
    if(((W *)sp[4])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[4];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(7 - (arity + 8), 0)
            pap = sp[4];
            sp[-2] = (W)zero5;
            sp[-1] = 105;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[6 - (arity - i + 7)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
case 52:
        sp[4] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[4];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(7 - 9 - (size + 4), 0)
            pap = sp[4];
            hp[size + 3] = (W)zero5;
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[4] = (W)hp;
            hp += (size + 4);
        }
    }
    sp[-2] = sp[5];
    sp[-1] = 103;
    goto fun189;
case 51:
    sp[-1] = sp[0];
    sp[0] = result;
    sp[-4] = sp[1];
    sp[-5] = sp[0];
    sp[-2] = (W)zero9;
    sp[-3] = (W)zero5;
    sp[0] = 101;
    sp -= -1;
    goto call4;
case 50:
    sp[-1] = result;
    sp[-3] = sp[0];
    sp[-2] = 99;
    sp -= 1;
    goto fun189;
case 49:
    sp[1] = result;
    sp[-3] = sp[5];
    sp[-4] = sp[1];
    sp[-1] = (W)zero5;
    sp[-2] = (W)zero5;
    sp[1] = 97;
    sp -= -2;
    goto call4;
case 48:
    sp[3] = result;
    sp -= -5;
    goto call3;
case 57:
fun221:
    FUNCTION_HEAD(221, 3)
    ENSURE_FREESPACE(0 - 10, -4)
    {
        W first = sp[-4];
        sp[-4] = sp[-3];
        sp[-3] = sp[-2];
        sp[-2] = first;
    }
    ENSURE_FREESPACE(0 - 10 - 4, -4)
    hp[0] = 7;
    hp[1] = 1;
    hp[2] = 2;
    hp[3] = (W)zero5;
    sp[-5] = (W)hp;
    hp += 4;
    sp[-7] = sp[-2];
    sp[-2] = (W)zero5;
    sp[-6] = (W)zero211;
    goto call5;
case 59:
fun229:
    FUNCTION_HEAD(229, 3)
    ENSURE_FREESPACE(0 - 8, -4)
    {
        W first = sp[-4];
        sp[-4] = sp[-2];
        sp[-2] = first;
    }
    sp[-5] = sp[-2];
    sp[-2] = 117;
    sp -= 1;
    goto fun221;
case 58:
    sp[-1] = result;
    sp -= -1;
    goto fun189;
case 61:
fun234:
    FUNCTION_HEAD(234, 1)
    ENSURE_FREESPACE(0 - 5, -2)
    sp[-4] = statics[4];
    sp[-5] = statics[4];
    sp[-3] = 121;
    sp -= 2;
    goto fun75;
case 60:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 1), -1)
            pap = sp[-1];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            sp -= -2;
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 10 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = sp[0];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            sp -= -2;
            togo = sp[-1];
            goto jump;
        }
    }
case 62:
fun241:
    FUNCTION_HEAD(241, 2)
    ENSURE_FREESPACE(0 - 10, -3)
    {
        W first = sp[-3];
        sp[-3] = sp[-2];
        sp[-2] = first;
    }
    sp[-4] = sp[-2];
    sp[-2] = (W)zero5;
    goto call2;
case 65:
fun254:
    FUNCTION_HEAD(254, 4)
    ENSURE_FREESPACE(0 - 9, -5)
    {
        W first = sp[-5];
        sp[-5] = sp[-2];
        sp[-2] = first;
    }
    {
        W first = sp[-4];
        sp[-4] = sp[-3];
        sp[-3] = first;
    }
    sp[-9] = sp[-2];
    sp[-8] = sp[-3];
    sp[-7] = sp[-4];
    sp[-6] = 129;
    sp -= 5;
    goto fun229;
case 64:
    sp[2] = result;
    sp[-2] = sp[3];
    sp[-1] = sp[1];
    sp[1] = 127;
    sp -= -2;
    goto fun221;
case 63:
    sp[1] = result;
    sp -= -3;
    goto fun241;
case 66:
fun258:
    FUNCTION_HEAD(258, 3)
    ENSURE_FREESPACE(0 - 10, -4)
    result = sp[-2];
    togo = sp[-1];
    goto jump;
case 67:
fun264:
    FUNCTION_HEAD(264, 4)
    ENSURE_FREESPACE(0 - 10, -5)
    sp[-2] = sp[-5];
    sp[-3] = sp[-4];
    if(((W *)sp[-3])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-3];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(0 - (arity + 1), -3)
            pap = sp[-3];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[-1 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-3];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(0 - 10 - (size + 4), -3)
            pap = sp[-3];
            hp[size + 3] = sp[-2];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            togo = sp[-1];
            goto jump;
        }
    }
case 68:
fun270:
    FUNCTION_HEAD(270, 4)
    ENSURE_FREESPACE(0 - 10, -5)
    sp[-2] = sp[-5];
    if(((W *)sp[-3])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-3];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(0 - (arity + 1), -3)
            pap = sp[-3];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[-1 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-3];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(0 - 10 - (size + 4), -3)
            pap = sp[-3];
            hp[size + 3] = sp[-2];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            togo = sp[-1];
            goto jump;
        }
    }
case 69:
fun277:
    FUNCTION_HEAD(277, 2)
    ENSURE_FREESPACE(0 - 10, -3)
    {
        W first = sp[-3];
        sp[-3] = sp[-2];
        sp[-2] = first;
    }
    ENSURE_FREESPACE(0 - 10 - 4, -3)
    hp[0] = 31;
    hp[1] = 1;
    hp[2] = 2;
    hp[3] = sp[-3];
    sp[-3] = (W)hp;
    hp += 4;
    sp[-4] = sp[-2];
    sp[-2] = (W)zero55;
    goto call2;
case 71:
fun282:
    FUNCTION_HEAD(282, 1)
    ENSURE_FREESPACE(0 - 5, -2)
    sp[-4] = statics[12];
    sp[-5] = statics[3];
    sp[-3] = 141;
    sp -= 2;
    goto fun277;
case 70:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 1), -1)
            pap = sp[-1];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            sp -= -2;
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 10 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = sp[0];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            sp -= -2;
            togo = sp[-1];
            goto jump;
        }
    }
case 73:
fun287:
    FUNCTION_HEAD(287, 1)
    ENSURE_FREESPACE(0 - 5, -2)
    sp[-4] = statics[4];
    sp[-5] = statics[3];
    sp[-3] = 145;
    sp -= 2;
    goto fun277;
case 72:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 1), -1)
            pap = sp[-1];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            sp -= -2;
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 10 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = sp[0];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            sp -= -2;
            togo = sp[-1];
            goto jump;
        }
    }
case 74:
fun293:
    FUNCTION_HEAD(293, 1)
    ENSURE_FREESPACE(0 - 10, -2)
    result = sp[-2];
    togo = sp[-1];
    goto jump;
case 77:
fun301:
    FUNCTION_HEAD(301, 1)
    ENSURE_FREESPACE(0 - 3, -2)
    if(((W *)statics[9])[1] == 1)
    {
        {
            W pap, arity;
            pap = statics[9];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(0 - (arity + 2), -2)
            pap = statics[9];
            sp[-3] = sp[-2];
            sp[-2] = 153;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[-1 - (arity - i + 1)] = ((W *)pap)[i + 3];
            }
            sp -= 1;
            togo = ((W *)pap)[0];
            goto jump;
        }
case 76:
        sp[-1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = statics[9];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(0 - 3 - (size + 4), -2)
            pap = statics[9];
            hp[size + 3] = sp[-2];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[-2] = (W)hp;
            hp += (size + 4);
        }
        sp -= 1;
    }
    if(((W *)statics[8])[1] == 1)
    {
        {
            W pap, arity;
            pap = statics[8];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(1 - (arity + 2), -1)
            pap = statics[8];
            sp[-2] = sp[-1];
            sp[-1] = 151;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[0 - (arity - i + 1)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
case 75:
        sp[-1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = statics[8];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(1 - 10 - (size + 4), -1)
            pap = statics[8];
            hp[size + 3] = sp[-1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[-1] = (W)hp;
            hp += (size + 4);
        }
    }
    if(((W *)statics[17])[1] == 1)
    {
        {
            W pap, arity;
            pap = statics[17];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(1 - (arity + 1), -1)
            pap = statics[17];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[0 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            sp -= -1;
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = statics[17];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(1 - 10 - (size + 4), -1)
            pap = statics[17];
            hp[size + 3] = sp[-1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            sp -= -1;
            togo = sp[-1];
            goto jump;
        }
    }
case 78:
fun304:
    FUNCTION_HEAD(304, 1)
    ENSURE_FREESPACE(0 - 10, -2)
    if(((W *)statics[9])[1] == 1)
    {
        {
            W pap, arity;
            pap = statics[9];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(0 - (arity + 1), -2)
            pap = statics[9];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[-1 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = statics[9];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(0 - 10 - (size + 4), -2)
            pap = statics[9];
            hp[size + 3] = sp[-2];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            togo = sp[-1];
            goto jump;
        }
    }
case 79:
fun307:
    FUNCTION_HEAD(307, 1)
    ENSURE_FREESPACE(0 - 10, -2)
    if(((W *)statics[8])[1] == 1)
    {
        {
            W pap, arity;
            pap = statics[8];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(0 - (arity + 1), -2)
            pap = statics[8];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[-1 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = statics[8];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(0 - 10 - (size + 4), -2)
            pap = statics[8];
            hp[size + 3] = sp[-2];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            togo = sp[-1];
            goto jump;
        }
    }
case 88:
fun318:
    FUNCTION_HEAD(318, 1)
    ENSURE_FREESPACE(0 - 4, -2)
    sp[-4] = (W)zero293;
    sp[-3] = 175;
    sp -= 2;
    goto fun304;
case 87:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 173;
    goto fun307;
case 86:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 171;
    goto fun307;
case 85:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 169;
    goto fun307;
case 84:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 167;
    goto fun307;
case 83:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 165;
    goto fun307;
case 82:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 163;
    goto fun307;
case 81:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 161;
    goto fun307;
case 80:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 1), -1)
            pap = sp[-1];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            sp -= -2;
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 10 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = sp[0];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            sp -= -2;
            togo = sp[-1];
            goto jump;
        }
    }
case 97:
fun329:
    FUNCTION_HEAD(329, 1)
    ENSURE_FREESPACE(0 - 4, -2)
    sp[-4] = (W)zero293;
    sp[-3] = 193;
    sp -= 2;
    goto fun304;
case 96:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 191;
    goto fun304;
case 95:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 189;
    goto fun307;
case 94:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 187;
    goto fun307;
case 93:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 185;
    goto fun307;
case 92:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 183;
    goto fun307;
case 91:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 181;
    goto fun307;
case 90:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 179;
    goto fun307;
case 89:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 1), -1)
            pap = sp[-1];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            sp -= -2;
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 10 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = sp[0];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            sp -= -2;
            togo = sp[-1];
            goto jump;
        }
    }
case 106:
fun340:
    FUNCTION_HEAD(340, 1)
    ENSURE_FREESPACE(0 - 4, -2)
    sp[-4] = (W)zero293;
    sp[-3] = 211;
    sp -= 2;
    goto fun304;
case 105:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 209;
    goto fun304;
case 104:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 207;
    goto fun304;
case 103:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 205;
    goto fun307;
case 102:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 203;
    goto fun307;
case 101:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 201;
    goto fun307;
case 100:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 199;
    goto fun307;
case 99:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 197;
    goto fun307;
case 98:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 1), -1)
            pap = sp[-1];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            sp -= -2;
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 10 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = sp[0];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            sp -= -2;
            togo = sp[-1];
            goto jump;
        }
    }
case 115:
fun351:
    FUNCTION_HEAD(351, 1)
    ENSURE_FREESPACE(0 - 4, -2)
    sp[-4] = (W)zero293;
    sp[-3] = 229;
    sp -= 2;
    goto fun304;
case 114:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 227;
    goto fun304;
case 113:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 225;
    goto fun304;
case 112:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 223;
    goto fun304;
case 111:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 221;
    goto fun307;
case 110:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 219;
    goto fun307;
case 109:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 217;
    goto fun307;
case 108:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 215;
    goto fun307;
case 107:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 1), -1)
            pap = sp[-1];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            sp -= -2;
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 10 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = sp[0];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            sp -= -2;
            togo = sp[-1];
            goto jump;
        }
    }
case 124:
fun362:
    FUNCTION_HEAD(362, 1)
    ENSURE_FREESPACE(0 - 4, -2)
    sp[-4] = (W)zero293;
    sp[-3] = 247;
    sp -= 2;
    goto fun304;
case 123:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 245;
    goto fun304;
case 122:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 243;
    goto fun304;
case 121:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 241;
    goto fun304;
case 120:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 239;
    goto fun304;
case 119:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 237;
    goto fun307;
case 118:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 235;
    goto fun307;
case 117:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 233;
    goto fun307;
case 116:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 1), -1)
            pap = sp[-1];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            sp -= -2;
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 10 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = sp[0];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            sp -= -2;
            togo = sp[-1];
            goto jump;
        }
    }
case 129:
fun370:
    FUNCTION_HEAD(370, 1)
    ENSURE_FREESPACE(0 - 4, -2)
    sp[-4] = (W)zero293;
    sp[-3] = 257;
    sp -= 2;
    goto fun307;
case 128:
    sp[-1] = result;
    if(((W *)statics[18])[1] == 1)
    {
        {
            W pap, arity;
            pap = statics[18];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 3), -1)
            pap = statics[18];
            sp[-2] = sp[-1];
            sp[-1] = 255;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 2)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
case 127:
        sp[-1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = statics[18];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 4 - (size + 4), -1)
            pap = statics[18];
            hp[size + 3] = sp[-1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[-1] = (W)hp;
            hp += (size + 4);
        }
    }
    if(((W *)statics[19])[1] == 1)
    {
        {
            W pap, arity;
            pap = statics[19];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 3), -1)
            pap = statics[19];
            sp[-2] = sp[-1];
            sp[-1] = 253;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 2)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
case 126:
        sp[-1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = statics[19];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 5 - (size + 4), -1)
            pap = statics[19];
            hp[size + 3] = sp[-1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[-1] = (W)hp;
            hp += (size + 4);
        }
    }
    sp[-2] = sp[-1];
    sp[-1] = 251;
    goto fun301;
case 125:
    sp[-1] = result;
    sp[-2] = statics[18];
    sp -= -2;
    goto call2;
case 134:
fun378:
    FUNCTION_HEAD(378, 1)
    ENSURE_FREESPACE(0 - 4, -2)
    sp[-4] = (W)zero293;
    sp[-3] = 267;
    sp -= 2;
    goto fun307;
case 133:
    sp[-1] = result;
    if(((W *)statics[18])[1] == 1)
    {
        {
            W pap, arity;
            pap = statics[18];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 3), -1)
            pap = statics[18];
            sp[-2] = sp[-1];
            sp[-1] = 265;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 2)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
case 132:
        sp[-1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = statics[18];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 4 - (size + 4), -1)
            pap = statics[18];
            hp[size + 3] = sp[-1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[-1] = (W)hp;
            hp += (size + 4);
        }
    }
    if(((W *)statics[18])[1] == 1)
    {
        {
            W pap, arity;
            pap = statics[18];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 3), -1)
            pap = statics[18];
            sp[-2] = sp[-1];
            sp[-1] = 263;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 2)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
case 131:
        sp[-1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = statics[18];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 5 - (size + 4), -1)
            pap = statics[18];
            hp[size + 3] = sp[-1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[-1] = (W)hp;
            hp += (size + 4);
        }
    }
    sp[-2] = sp[-1];
    sp[-1] = 261;
    goto fun301;
case 130:
    sp[-1] = result;
    sp[-2] = statics[19];
    sp -= -2;
    goto call2;
case 140:
fun387:
    FUNCTION_HEAD(387, 1)
    ENSURE_FREESPACE(0 - 4, -2)
    sp[-4] = (W)zero293;
    sp[-3] = 279;
    sp -= 2;
    goto fun307;
case 139:
    sp[-1] = result;
    if(((W *)statics[17])[1] == 1)
    {
        {
            W pap, arity;
            pap = statics[17];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 3), -1)
            pap = statics[17];
            sp[-2] = sp[-1];
            sp[-1] = 277;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 2)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
case 138:
        sp[-1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = statics[17];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 5 - (size + 4), -1)
            pap = statics[17];
            hp[size + 3] = sp[-1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[-1] = (W)hp;
            hp += (size + 4);
        }
    }
    sp[-2] = sp[-1];
    sp[-1] = 275;
    goto fun307;
case 137:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 273;
    goto fun304;
case 136:
    sp[-1] = result;
    if(((W *)statics[19])[1] == 1)
    {
        {
            W pap, arity;
            pap = statics[19];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 3), -1)
            pap = statics[19];
            sp[-2] = sp[-1];
            sp[-1] = 271;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 2)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
case 135:
        sp[-1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = statics[19];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 10 - (size + 4), -1)
            pap = statics[19];
            hp[size + 3] = sp[-1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[-1] = (W)hp;
            hp += (size + 4);
        }
    }
    sp[-2] = statics[19];
    sp -= -2;
    goto call2;
case 148:
fun398:
    FUNCTION_HEAD(398, 1)
    ENSURE_FREESPACE(0 - 4, -2)
    sp[-4] = (W)zero293;
    sp[-3] = 295;
    sp -= 2;
    goto fun307;
case 147:
    sp[-1] = result;
    if(((W *)statics[18])[1] == 1)
    {
        {
            W pap, arity;
            pap = statics[18];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 3), -1)
            pap = statics[18];
            sp[-2] = sp[-1];
            sp[-1] = 293;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 2)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
case 146:
        sp[-1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = statics[18];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 5 - (size + 4), -1)
            pap = statics[18];
            hp[size + 3] = sp[-1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[-1] = (W)hp;
            hp += (size + 4);
        }
    }
    sp[-2] = sp[-1];
    sp[-1] = 291;
    goto fun304;
case 145:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 289;
    goto fun304;
case 144:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 287;
    goto fun307;
case 143:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 285;
    goto fun304;
case 142:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 283;
    goto fun301;
case 141:
    sp[-1] = result;
    sp[-2] = statics[19];
    sp -= -2;
    goto call2;
case 156:
fun409:
    FUNCTION_HEAD(409, 1)
    ENSURE_FREESPACE(0 - 4, -2)
    sp[-4] = (W)zero293;
    sp[-3] = 311;
    sp -= 2;
    goto fun307;
case 155:
    sp[-1] = result;
    if(((W *)statics[18])[1] == 1)
    {
        {
            W pap, arity;
            pap = statics[18];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 3), -1)
            pap = statics[18];
            sp[-2] = sp[-1];
            sp[-1] = 309;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 2)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
case 154:
        sp[-1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = statics[18];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 5 - (size + 4), -1)
            pap = statics[18];
            hp[size + 3] = sp[-1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[-1] = (W)hp;
            hp += (size + 4);
        }
    }
    sp[-2] = sp[-1];
    sp[-1] = 307;
    goto fun304;
case 153:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 305;
    goto fun304;
case 152:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 303;
    goto fun304;
case 151:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 301;
    goto fun307;
case 150:
    sp[-1] = result;
    if(((W *)statics[18])[1] == 1)
    {
        {
            W pap, arity;
            pap = statics[18];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 3), -1)
            pap = statics[18];
            sp[-2] = sp[-1];
            sp[-1] = 299;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 2)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
case 149:
        sp[-1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = statics[18];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 10 - (size + 4), -1)
            pap = statics[18];
            hp[size + 3] = sp[-1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[-1] = (W)hp;
            hp += (size + 4);
        }
    }
    sp[-2] = statics[19];
    sp -= -2;
    goto call2;
case 162:
fun418:
    FUNCTION_HEAD(418, 1)
    ENSURE_FREESPACE(0 - 4, -2)
    sp[-4] = (W)zero293;
    sp[-3] = 323;
    sp -= 2;
    goto fun304;
case 161:
    sp[-1] = result;
    if(((W *)statics[17])[1] == 1)
    {
        {
            W pap, arity;
            pap = statics[17];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 3), -1)
            pap = statics[17];
            sp[-2] = sp[-1];
            sp[-1] = 321;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 2)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
case 160:
        sp[-1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = statics[17];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 5 - (size + 4), -1)
            pap = statics[17];
            hp[size + 3] = sp[-1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[-1] = (W)hp;
            hp += (size + 4);
        }
    }
    sp[-2] = sp[-1];
    sp[-1] = 319;
    goto fun307;
case 159:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 317;
    goto fun304;
case 158:
    sp[-1] = result;
    if(((W *)statics[19])[1] == 1)
    {
        {
            W pap, arity;
            pap = statics[19];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 3), -1)
            pap = statics[19];
            sp[-2] = sp[-1];
            sp[-1] = 315;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 2)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
case 157:
        sp[-1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = statics[19];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 10 - (size + 4), -1)
            pap = statics[19];
            hp[size + 3] = sp[-1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[-1] = (W)hp;
            hp += (size + 4);
        }
    }
    sp[-2] = statics[19];
    sp -= -2;
    goto call2;
case 163:
fun423:
    FUNCTION_HEAD(423, 1)
    ENSURE_FREESPACE(0 - 10, -2)
    sp[-3] = sp[-2];
    sp[-2] = (W)zero329;
    sp[-4] = (W)zero318;
    sp[-5] = statics[15];
    goto call3;
case 165:
fun428:
    FUNCTION_HEAD(428, 1)
    ENSURE_FREESPACE(0 - 5, -2)
    sp[-4] = statics[12];
    sp[-5] = statics[12];
    sp[-3] = 329;
    sp -= 2;
    goto fun75;
case 164:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 1), -1)
            pap = sp[-1];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            sp -= -2;
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 10 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = sp[0];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            sp -= -2;
            togo = sp[-1];
            goto jump;
        }
    }
case 167:
fun437:
    FUNCTION_HEAD(437, 3)
    ENSURE_FREESPACE(0 - 8, -4)
    {
        W first = sp[-3];
        sp[-3] = sp[-2];
        sp[-2] = first;
    }
    sp[-8] = sp[-2];
    sp[-6] = (W)zero293;
    sp[-7] = (W)zero307;
    sp[-5] = 333;
    sp -= 4;
    goto call2;
case 166:
    sp[2] = result;
    sp -= -4;
    goto fun185;
case 168:
fun441:
    FUNCTION_HEAD(441, 1)
    ENSURE_FREESPACE(0 - 10, -2)
    ENSURE_FREESPACE(0 - 10 - 4, -2)
    hp[0] = 23;
    hp[1] = 1;
    hp[2] = 2;
    hp[3] = sp[-2];
    result = (W)hp;
    hp += 4;
    togo = sp[-1];
    goto jump;
case 175:
fun457:
    FUNCTION_HEAD(457, 2)
    ENSURE_FREESPACE(0 - 5, -3)
    sp[-5] = statics[5];
    sp[-4] = 349;
    sp -= 3;
    goto fun441;
case 174:
    sp[-1] = sp[0];
    sp[0] = result;
    if(((W *)sp[0])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[0];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(3 - (arity + 5), -1)
            pap = sp[0];
            sp[-3] = sp[1];
            sp[-2] = 347;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[2 - (arity - i + 4)] = ((W *)pap)[i + 3];
            }
            sp -= 1;
            togo = ((W *)pap)[0];
            goto jump;
        }
case 173:
        sp[1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[0];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(3 - 6 - (size + 4), -1)
            pap = sp[0];
            hp[size + 3] = sp[1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[0] = (W)hp;
            hp += (size + 4);
        }
        sp -= 1;
    }
    sp[-1] = sp[1];
    sp[-2] = statics[20];
    sp[1] = 345;
    sp -= -2;
    goto call2;
case 172:
    sp[-1] = result;
    ENSURE_FREESPACE(2 - 6 - 4, -1)
    hp[0] = 137;
    hp[1] = 3;
    hp[2] = 4;
    hp[3] = sp[-1];
    sp[-2] = sp[-1];
    sp[-1] = (W)hp;
    hp += 4;
    sp[-4] = sp[0];
    sp[-3] = 343;
    sp -= 2;
    goto fun423;
case 171:
    sp[2] = result;
    sp[-2] = sp[0];
    sp[-1] = (W)zero418;
    sp[-3] = (W)zero387;
    sp[-4] = statics[16];
    sp[0] = 341;
    sp -= -1;
    goto call3;
case 170:
    sp[-1] = result;
    sp[-3] = sp[1];
    sp[-2] = sp[-1];
    sp[-1] = 339;
    goto fun241;
case 169:
    sp[1] = result;
    sp[-1] = sp[1];
    sp[1] = (W)zero258;
    sp -= -3;
    goto call2;
case 186:
fun482:
    FUNCTION_HEAD(482, 2)
    ENSURE_FREESPACE(0 - 5, -3)
    sp[-5] = statics[5];
    sp[-4] = 371;
    sp -= 3;
    goto fun441;
case 185:
    sp[-1] = sp[0];
    sp[0] = result;
    if(((W *)sp[0])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[0];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(3 - (arity + 5), -1)
            pap = sp[0];
            sp[-3] = sp[1];
            sp[-2] = 369;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[2 - (arity - i + 4)] = ((W *)pap)[i + 3];
            }
            sp -= 1;
            togo = ((W *)pap)[0];
            goto jump;
        }
case 184:
        sp[1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[0];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(3 - 6 - (size + 4), -1)
            pap = sp[0];
            hp[size + 3] = sp[1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[0] = (W)hp;
            hp += (size + 4);
        }
        sp -= 1;
    }
    sp[-1] = sp[1];
    sp[-2] = statics[20];
    sp[1] = 367;
    sp -= -2;
    goto call2;
case 183:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-3] = statics[4];
    sp[-4] = statics[7];
    sp[-1] = 365;
    goto fun437;
case 182:
    sp[-1] = result;
    ENSURE_FREESPACE(2 - 6 - 4, -1)
    hp[0] = 137;
    hp[1] = 3;
    hp[2] = 4;
    hp[3] = sp[-1];
    sp[-2] = sp[-1];
    sp[-1] = (W)hp;
    hp += 4;
    sp[-4] = sp[0];
    sp[-3] = 363;
    sp -= 2;
    goto fun423;
case 181:
    sp[2] = result;
    sp[-3] = sp[0];
    sp[-2] = (W)zero387;
    sp[-4] = (W)zero378;
    sp[-5] = statics[16];
    sp[-1] = 361;
    goto call3;
case 180:
    sp[-1] = sp[2];
    sp[2] = result;
    sp[-4] = sp[0];
    sp[-3] = (W)zero409;
    sp[-5] = (W)zero398;
    sp[-6] = statics[16];
    sp[-2] = 359;
    sp -= 1;
    goto call3;
case 179:
    sp[1] = result;
    sp[-2] = sp[1];
    sp[-1] = 357;
    goto fun189;
case 178:
    sp[1] = result;
    sp[-1] = sp[1];
    sp[1] = 355;
    sp -= -2;
    goto fun241;
case 177:
    sp[-1] = result;
    sp[-2] = sp[1];
    sp[-3] = sp[-1];
    sp[-1] = 353;
    goto fun241;
case 176:
    sp[1] = result;
    sp[-1] = sp[1];
    sp[1] = (W)zero258;
    sp -= -3;
    goto call2;
case 191:
fun494:
    FUNCTION_HEAD(494, 2)
    ENSURE_FREESPACE(0 - 5, -3)
    sp[-5] = statics[5];
    sp[-4] = 381;
    sp -= 3;
    goto fun441;
case 190:
    sp[-1] = sp[0];
    sp[0] = result;
    if(((W *)sp[0])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[0];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(3 - (arity + 5), -1)
            pap = sp[0];
            sp[-3] = sp[1];
            sp[-2] = 379;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[2 - (arity - i + 4)] = ((W *)pap)[i + 3];
            }
            sp -= 1;
            togo = ((W *)pap)[0];
            goto jump;
        }
case 189:
        sp[1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[0];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(3 - 6 - (size + 4), -1)
            pap = sp[0];
            hp[size + 3] = sp[1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[0] = (W)hp;
            hp += (size + 4);
        }
        sp -= 1;
    }
    sp[-1] = sp[1];
    sp[-2] = statics[20];
    sp[1] = 377;
    sp -= -2;
    goto call2;
case 188:
    sp[-1] = result;
    ENSURE_FREESPACE(2 - 5 - 4, -1)
    hp[0] = 351;
    hp[1] = 1;
    hp[2] = 2;
    hp[3] = sp[-1];
    sp[-1] = (W)hp;
    hp += 4;
    ENSURE_FREESPACE(2 - 5 - 4, -1)
    hp[0] = 135;
    hp[1] = 3;
    hp[2] = 4;
    hp[3] = sp[-1];
    sp[-1] = (W)hp;
    hp += 4;
    sp[-3] = sp[0];
    sp[-2] = 375;
    sp -= 1;
    goto fun423;
case 187:
    sp[1] = result;
    sp[-1] = sp[1];
    sp[1] = (W)zero258;
    sp -= -3;
    goto call2;
case 199:
fun513:
    FUNCTION_HEAD(513, 2)
    ENSURE_FREESPACE(0 - 5, -3)
    sp[-5] = statics[5];
    sp[-4] = 397;
    sp -= 3;
    goto fun441;
case 198:
    sp[-1] = sp[0];
    sp[0] = result;
    if(((W *)sp[0])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[0];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(3 - (arity + 5), -1)
            pap = sp[0];
            sp[-3] = sp[1];
            sp[-2] = 395;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[2 - (arity - i + 4)] = ((W *)pap)[i + 3];
            }
            sp -= 1;
            togo = ((W *)pap)[0];
            goto jump;
        }
case 197:
        sp[1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[0];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(3 - 6 - (size + 4), -1)
            pap = sp[0];
            hp[size + 3] = sp[1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[0] = (W)hp;
            hp += (size + 4);
        }
        sp -= 1;
    }
    sp[-1] = sp[1];
    sp[-2] = statics[20];
    sp[1] = 393;
    sp -= -2;
    goto call2;
case 196:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-3] = (W)zero234;
    sp[-4] = statics[14];
    sp[-1] = 391;
    goto fun437;
case 195:
    sp[-1] = result;
    ENSURE_FREESPACE(2 - 6 - 4, -1)
    hp[0] = 137;
    hp[1] = 3;
    hp[2] = 4;
    hp[3] = sp[-1];
    sp[-2] = sp[-1];
    sp[-1] = (W)hp;
    hp += 4;
    sp[-4] = sp[0];
    sp[-3] = 389;
    sp -= 2;
    goto fun423;
case 194:
    sp[2] = result;
    sp[-2] = sp[0];
    sp[-1] = (W)zero378;
    sp[-3] = (W)zero370;
    sp[-4] = statics[16];
    sp[0] = 387;
    sp -= -1;
    goto call3;
case 193:
    sp[-1] = result;
    sp[-3] = sp[1];
    sp[-2] = sp[-1];
    sp[-1] = 385;
    goto fun241;
case 192:
    sp[1] = result;
    sp[-1] = sp[1];
    sp[1] = (W)zero258;
    sp -= -3;
    goto call2;
case 204:
fun525:
    FUNCTION_HEAD(525, 2)
    ENSURE_FREESPACE(0 - 5, -3)
    sp[-5] = statics[5];
    sp[-4] = 407;
    sp -= 3;
    goto fun441;
case 203:
    sp[-1] = sp[0];
    sp[0] = result;
    if(((W *)sp[0])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[0];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(3 - (arity + 5), -1)
            pap = sp[0];
            sp[-3] = sp[1];
            sp[-2] = 405;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[2 - (arity - i + 4)] = ((W *)pap)[i + 3];
            }
            sp -= 1;
            togo = ((W *)pap)[0];
            goto jump;
        }
case 202:
        sp[1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[0];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(3 - 6 - (size + 4), -1)
            pap = sp[0];
            hp[size + 3] = sp[1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[0] = (W)hp;
            hp += (size + 4);
        }
        sp -= 1;
    }
    sp[-1] = sp[1];
    sp[-2] = statics[20];
    sp[1] = 403;
    sp -= -2;
    goto call2;
case 201:
    sp[-1] = result;
    ENSURE_FREESPACE(2 - 5 - 4, -1)
    hp[0] = 373;
    hp[1] = 1;
    hp[2] = 2;
    hp[3] = sp[-1];
    sp[-1] = (W)hp;
    hp += 4;
    ENSURE_FREESPACE(2 - 5 - 4, -1)
    hp[0] = 135;
    hp[1] = 3;
    hp[2] = 4;
    hp[3] = sp[-1];
    sp[-1] = (W)hp;
    hp += 4;
    sp[-3] = sp[0];
    sp[-2] = 401;
    sp -= 1;
    goto fun423;
case 200:
    sp[1] = result;
    sp[-1] = sp[1];
    sp[1] = (W)zero258;
    sp -= -3;
    goto call2;
case 209:
fun537:
    FUNCTION_HEAD(537, 2)
    ENSURE_FREESPACE(0 - 5, -3)
    sp[-5] = statics[5];
    sp[-4] = 417;
    sp -= 3;
    goto fun441;
case 208:
    sp[-1] = sp[0];
    sp[0] = result;
    if(((W *)sp[0])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[0];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(3 - (arity + 5), -1)
            pap = sp[0];
            sp[-3] = sp[1];
            sp[-2] = 415;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[2 - (arity - i + 4)] = ((W *)pap)[i + 3];
            }
            sp -= 1;
            togo = ((W *)pap)[0];
            goto jump;
        }
case 207:
        sp[1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[0];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(3 - 6 - (size + 4), -1)
            pap = sp[0];
            hp[size + 3] = sp[1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[0] = (W)hp;
            hp += (size + 4);
        }
        sp -= 1;
    }
    sp[-1] = sp[1];
    sp[-2] = statics[20];
    sp[1] = 413;
    sp -= -2;
    goto call2;
case 206:
    sp[-1] = result;
    ENSURE_FREESPACE(2 - 5 - 4, -1)
    hp[0] = 383;
    hp[1] = 1;
    hp[2] = 2;
    hp[3] = sp[-1];
    sp[-1] = (W)hp;
    hp += 4;
    ENSURE_FREESPACE(2 - 5 - 4, -1)
    hp[0] = 135;
    hp[1] = 3;
    hp[2] = 4;
    hp[3] = sp[-1];
    sp[-1] = (W)hp;
    hp += 4;
    sp[-3] = sp[0];
    sp[-2] = 411;
    sp -= 1;
    goto fun423;
case 205:
    sp[1] = result;
    sp[-1] = sp[1];
    sp[1] = (W)zero258;
    sp -= -3;
    goto call2;
case 223:
fun577:
    FUNCTION_HEAD(577, 1)
    ENSURE_FREESPACE(0 - 4, -2)
    sp[-4] = statics[12];
    sp[-3] = 445;
    sp -= 2;
    goto fun441;
case 222:
    sp[-1] = sp[0];
    sp[0] = result;
    if(((W *)sp[0])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[0];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 4), -1)
            pap = sp[0];
            sp[-3] = sp[-1];
            sp[-2] = 443;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 3)] = ((W *)pap)[i + 3];
            }
            sp -= 1;
            togo = ((W *)pap)[0];
            goto jump;
        }
case 221:
        sp[1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[0];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 7 - (size + 4), -1)
            pap = sp[0];
            hp[size + 3] = sp[-1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[0] = (W)hp;
            hp += (size + 4);
        }
        sp -= 1;
    }
    sp[-2] = sp[1];
    sp[-3] = (W)zero428;
    sp[-4] = statics[12];
    sp[-1] = 441;
    goto fun437;
case 220:
    sp[1] = result;
    ENSURE_FREESPACE(3 - 5 - 4, 0)
    hp[0] = 137;
    hp[1] = 3;
    hp[2] = 4;
    hp[3] = sp[1];
    sp[1] = (W)hp;
    hp += 4;
    sp[-2] = statics[4];
    sp[-1] = 439;
    goto fun441;
case 219:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(3 - (arity + 4), -1)
            pap = sp[-1];
            sp[-2] = sp[0];
            sp[-1] = 437;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[2 - (arity - i + 3)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
case 218:
        sp[-1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(3 - 6 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = sp[0];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[-1] = (W)hp;
            hp += (size + 4);
        }
    }
    ENSURE_FREESPACE(3 - 6 - 4, -1)
    hp[0] = 399;
    hp[1] = 1;
    hp[2] = 2;
    hp[3] = sp[-1];
    sp[-1] = (W)hp;
    hp += 4;
    ENSURE_FREESPACE(3 - 6 - 4, -1)
    hp[0] = 135;
    hp[1] = 3;
    hp[2] = 4;
    hp[3] = sp[-1];
    sp[-1] = (W)hp;
    hp += 4;
    sp[-3] = statics[2];
    sp[-2] = 435;
    sp -= 1;
    goto fun441;
case 217:
    sp[-1] = sp[0];
    sp[0] = result;
    if(((W *)sp[0])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[0];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(4 - (arity + 6), -1)
            pap = sp[0];
            sp[-3] = sp[1];
            sp[-2] = 433;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[3 - (arity - i + 5)] = ((W *)pap)[i + 3];
            }
            sp -= 1;
            togo = ((W *)pap)[0];
            goto jump;
        }
case 216:
        sp[1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[0];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(4 - 7 - (size + 4), -1)
            pap = sp[0];
            hp[size + 3] = sp[1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[0] = (W)hp;
            hp += (size + 4);
        }
        sp -= 1;
    }
    ENSURE_FREESPACE(5 - 7 - 4, 0)
    hp[0] = 409;
    hp[1] = 1;
    hp[2] = 2;
    hp[3] = sp[1];
    sp[1] = (W)hp;
    hp += 4;
    ENSURE_FREESPACE(5 - 7 - 4, 0)
    hp[0] = 135;
    hp[1] = 3;
    hp[2] = 4;
    hp[3] = sp[1];
    sp[1] = (W)hp;
    hp += 4;
    sp[-2] = statics[3];
    sp[-1] = 431;
    goto fun441;
case 215:
    sp[-1] = sp[3];
    sp[3] = result;
    if(((W *)sp[3])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[3];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(5 - (arity + 7), -1)
            pap = sp[3];
            sp[-3] = sp[2];
            sp[-2] = 429;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[4 - (arity - i + 6)] = ((W *)pap)[i + 3];
            }
            sp -= 1;
            togo = ((W *)pap)[0];
            goto jump;
        }
case 214:
        sp[4] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[3];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(5 - 11 - (size + 4), -1)
            pap = sp[3];
            hp[size + 3] = sp[2];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[3] = (W)hp;
            hp += (size + 4);
        }
        sp -= 1;
    }
    ENSURE_FREESPACE(6 - 11 - 4, 0)
    hp[0] = 419;
    hp[1] = 1;
    hp[2] = 2;
    hp[3] = sp[4];
    sp[4] = (W)hp;
    hp += 4;
    ENSURE_FREESPACE(6 - 11 - 4, 0)
    hp[0] = 135;
    hp[1] = 3;
    hp[2] = 4;
    hp[3] = sp[4];
    sp[4] = (W)hp;
    hp += 4;
    sp[-3] = sp[3];
    sp[-1] = sp[0];
    sp[-2] = (W)zero258;
    sp[-4] = (W)zero318;
    sp[-5] = statics[11];
    sp[0] = 427;
    sp -= -1;
    goto call4;
case 213:
    sp[-1] = result;
    sp[-3] = sp[2];
    sp[-2] = sp[0];
    sp[-4] = (W)zero329;
    sp[-5] = statics[11];
    sp[0] = 425;
    sp -= -1;
    goto call4;
case 212:
    sp[-1] = result;
    sp[-3] = sp[1];
    sp[-2] = sp[0];
    sp[-4] = (W)zero340;
    sp[-5] = statics[11];
    sp[0] = 423;
    sp -= -1;
    goto call4;
case 211:
    sp[-1] = result;
    sp[-4] = sp[0];
    sp[-3] = sp[1];
    sp[-2] = sp[-1];
    sp[-5] = (W)zero351;
    sp[-6] = statics[11];
    sp[-1] = 421;
    goto call4;
case 210:
    sp[1] = result;
    sp[-1] = sp[0];
    sp[0] = (W)zero258;
    sp[-2] = (W)zero362;
    sp[-3] = statics[11];
    sp -= -3;
    goto call4;
case 227:
fun587:
    FUNCTION_HEAD(587, 3)
    ENSURE_FREESPACE(0 - 6, -4)
    {
        W first = sp[-4];
        sp[-4] = sp[-3];
        sp[-3] = first;
    }
    if(((W *)sp[-2])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-2];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(0 - (arity + 5), -4)
            pap = sp[-2];
            sp[-6] = (W)zero9;
            sp[-5] = 453;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[-1 - (arity - i + 4)] = ((W *)pap)[i + 3];
            }
            sp -= 4;
            togo = ((W *)pap)[0];
            goto jump;
        }
case 226:
        sp[-1] = sp[0];
        sp[0] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[-2];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(0 - 7 - (size + 4), -4)
            pap = sp[-2];
            hp[size + 3] = (W)zero9;
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[-5] = sp[-4];
            sp[-4] = (W)hp;
            hp += (size + 4);
        }
        sp -= 4;
    }
    if(((W *)sp[2])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[2];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(4 - (arity + 6), -1)
            pap = sp[2];
            sp[-3] = (W)zero5;
            sp[-2] = 451;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[3 - (arity - i + 5)] = ((W *)pap)[i + 3];
            }
            sp -= 1;
            togo = ((W *)pap)[0];
            goto jump;
        }
case 225:
        sp[3] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[2];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(4 - 6 - (size + 4), -1)
            pap = sp[2];
            hp[size + 3] = (W)zero5;
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[2] = (W)hp;
            hp += (size + 4);
        }
        sp -= 1;
    }
    sp[-1] = sp[2];
    sp[2] = 449;
    sp -= -3;
    goto call2;
case 224:
    sp[-1] = result;
    ENSURE_FREESPACE(2 - 10 - 5, -1)
    hp[0] = 9;
    hp[1] = 1;
    hp[2] = 3;
    hp[3] = sp[-1];
    hp[4] = sp[0];
    result = (W)hp;
    hp += 5;
    sp -= -2;
    togo = sp[-1];
    goto jump;
case 228:
fun599:
    FUNCTION_HEAD(599, 4)
    ENSURE_FREESPACE(0 - 10, -5)
    {
        W first = sp[-5];
        sp[-5] = sp[-2];
        sp[-2] = first;
    }
    ENSURE_FREESPACE(0 - 10 - 5, -5)
    hp[0] = 9;
    hp[1] = 1;
    hp[2] = 3;
    hp[3] = sp[-3];
    hp[4] = sp[-5];
    sp[-3] = (W)hp;
    hp += 5;
    ENSURE_FREESPACE(0 - 10 - 4, -4)
    hp[0] = 455;
    hp[1] = 2;
    hp[2] = 3;
    hp[3] = sp[-4];
    sp[-4] = (W)hp;
    hp += 4;
    ENSURE_FREESPACE(0 - 10 - 4, -4)
    hp[0] = 51;
    hp[1] = 1;
    hp[2] = 2;
    hp[3] = sp[-4];
    sp[-4] = (W)hp;
    hp += 4;
    sp[-5] = sp[-2];
    sp[-2] = (W)zero9;
    goto call3;
case 234:
fun613:
    FUNCTION_HEAD(613, 3)
    ENSURE_FREESPACE(0 - 6, -4)
    if(((W *)sp[-3])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-3];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(0 - (arity + 5), -4)
            pap = sp[-3];
            sp[-6] = (W)zero9;
            sp[-5] = 467;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[-1 - (arity - i + 4)] = ((W *)pap)[i + 3];
            }
            sp -= 4;
            togo = ((W *)pap)[0];
            goto jump;
        }
case 233:
        sp[-1] = sp[2];
        sp[2] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[-3];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(0 - 7 - (size + 4), -4)
            pap = sp[-3];
            hp[size + 3] = (W)zero9;
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[-5] = sp[-2];
            sp[-2] = (W)hp;
            hp += (size + 4);
        }
        sp -= 4;
    }
    if(((W *)sp[1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(4 - (arity + 6), -1)
            pap = sp[1];
            sp[-3] = (W)zero5;
            sp[-2] = 465;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[3 - (arity - i + 5)] = ((W *)pap)[i + 3];
            }
            sp -= 1;
            togo = ((W *)pap)[0];
            goto jump;
        }
case 232:
        sp[2] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(4 - 7 - (size + 4), -1)
            pap = sp[1];
            hp[size + 3] = (W)zero5;
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[1] = (W)hp;
            hp += (size + 4);
        }
        sp -= 1;
    }
    sp[-2] = sp[1];
    sp[-1] = sp[3];
    sp[1] = 463;
    sp -= -2;
    goto call2;
case 231:
    sp[1] = result;
    if(((W *)sp[1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(3 - (arity + 4), 0)
            pap = sp[1];
            sp[-2] = (W)zero9;
            sp[-1] = 461;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[2 - (arity - i + 3)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
case 230:
        sp[-1] = sp[1];
        sp[1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(3 - 5 - (size + 4), 0)
            pap = sp[1];
            hp[size + 3] = (W)zero9;
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[-1] = sp[1];
            sp[1] = (W)hp;
            hp += (size + 4);
        }
    }
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(3 - (arity + 4), -1)
            pap = sp[-1];
            sp[-2] = (W)zero5;
            sp[-1] = 459;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[2 - (arity - i + 3)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
case 229:
        sp[-1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(3 - 10 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = (W)zero5;
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[-1] = (W)hp;
            hp += (size + 4);
        }
    }
    ENSURE_FREESPACE(3 - 10 - 5, -1)
    hp[0] = 9;
    hp[1] = 1;
    hp[2] = 3;
    hp[3] = sp[-1];
    hp[4] = sp[0];
    sp[0] = (W)hp;
    hp += 5;
    ENSURE_FREESPACE(3 - 10 - 5, 0)
    hp[0] = 9;
    hp[1] = 1;
    hp[2] = 3;
    hp[3] = sp[1];
    hp[4] = sp[0];
    result = (W)hp;
    hp += 5;
    sp -= -3;
    togo = sp[-1];
    goto jump;
case 237:
fun628:
    FUNCTION_HEAD(628, 4)
    ENSURE_FREESPACE(0 - 10, -5)
    {
        W first = sp[-5];
        sp[-5] = sp[-2];
        sp[-2] = sp[-3];
        sp[-3] = first;
    }
    ENSURE_FREESPACE(0 - 10 - 4, -5)
    hp[0] = 9;
    hp[1] = 2;
    hp[2] = 3;
    hp[3] = sp[-2];
    sp[-6] = (W)hp;
    hp += 4;
    ENSURE_FREESPACE(0 - 10 - 5, -6)
    hp[0] = 9;
    hp[1] = 1;
    hp[2] = 3;
    hp[3] = sp[-2];
    hp[4] = sp[-6];
    sp[-2] = (W)hp;
    hp += 5;
    ENSURE_FREESPACE(0 - 10 - 4, -5)
    hp[0] = 469;
    hp[1] = 2;
    hp[2] = 3;
    hp[3] = sp[-4];
    sp[-4] = (W)hp;
    hp += 4;
    sp[-8] = sp[-3];
    sp[-6] = sp[-2];
    sp[-7] = sp[-4];
    sp[-4] = 473;
    sp -= 3;
    goto fun599;
case 236:
    sp[1] = result;
    if(((W *)sp[1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(3 - (arity + 4), 0)
            pap = sp[1];
            sp[-2] = (W)zero5;
            sp[-1] = 471;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[2 - (arity - i + 3)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
case 235:
        sp[1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(3 - 10 - (size + 4), 0)
            pap = sp[1];
            hp[size + 3] = (W)zero5;
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[1] = (W)hp;
            hp += (size + 4);
        }
    }
    sp -= -3;
    goto fun46;
case 241:
fun638:
    FUNCTION_HEAD(638, 2)
    ENSURE_FREESPACE(0 - 6, -3)
    sp[-6] = sp[-3];
    sp[-5] = sp[-2];
    sp[-4] = 481;
    sp -= 3;
    goto fun241;
case 240:
    sp[-1] = sp[0];
    sp[0] = result;
    sp[-3] = sp[-1];
    sp[-2] = sp[1];
    sp[-1] = 479;
    goto fun106;
case 239:
    sp[1] = result;
    sp[-2] = sp[1];
    sp[-1] = 477;
    goto fun189;
case 238:
    sp[1] = result;
    sp -= -3;
    goto fun106;
case 244:
fun647:
    FUNCTION_HEAD(647, 2)
    ENSURE_FREESPACE(0 - 6, -3)
    sp[-6] = sp[-3];
    sp[-5] = sp[-2];
    sp[-4] = 487;
    sp -= 3;
    goto fun106;
case 243:
    sp[-1] = sp[1];
    sp[1] = result;
    sp[-2] = sp[0];
    sp[0] = 485;
    sp -= -1;
    goto fun638;
case 242:
    sp[-1] = result;
    ENSURE_FREESPACE(2 - 10 - 5, -1)
    hp[0] = 9;
    hp[1] = 1;
    hp[2] = 3;
    hp[3] = sp[0];
    hp[4] = sp[-1];
    result = (W)hp;
    hp += 5;
    sp -= -2;
    togo = sp[-1];
    goto jump;
case 245:
fun654:
    FUNCTION_HEAD(654, 2)
    ENSURE_FREESPACE(0 - 10, -3)
    sp[-5] = sp[-3];
    sp[-3] = (W)zero5;
    sp[-4] = (W)zero647;
    goto fun628;
case 246:
fun660:
    FUNCTION_HEAD(660, 2)
    ENSURE_FREESPACE(0 - 10, -3)
    ENSURE_FREESPACE(0 - 10 - 4, -3)
    hp[0] = 51;
    hp[1] = 1;
    hp[2] = 2;
    hp[3] = (W)zero5;
    sp[-4] = sp[-3];
    sp[-3] = (W)hp;
    hp += 4;
    goto call2;
case 253:
fun673:
    FUNCTION_HEAD(673, 1)
    ENSURE_FREESPACE(0 - 5, -2)
    sp[-4] = sp[-2];
    sp[-5] = statics[5];
    sp[-3] = 505;
    sp -= 2;
    goto fun660;
case 252:
    sp[-1] = sp[0];
    sp[0] = result;
    sp[-3] = statics[5];
    sp[-2] = 503;
    sp -= 1;
    goto fun441;
case 251:
    sp[-1] = sp[0];
    sp[0] = result;
    if(((W *)sp[0])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[0];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(3 - (arity + 3), -1)
            pap = sp[0];
            sp[0] = 501;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[2 - (arity - i + 2)] = ((W *)pap)[i + 3];
            }
            sp -= -1;
            togo = ((W *)pap)[0];
            goto jump;
        }
case 250:
        sp[-1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[0];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(3 - 6 - (size + 4), -1)
            pap = sp[0];
            hp[size + 3] = sp[-1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[0] = (W)hp;
            hp += (size + 4);
        }
        sp -= -1;
    }
    sp[-3] = sp[0];
    sp[-4] = statics[4];
    sp[-2] = 499;
    sp -= 1;
    goto fun654;
case 249:
    sp[1] = result;
    sp[-2] = statics[2];
    sp[-1] = 497;
    goto fun441;
case 248:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(3 - (arity + 4), -1)
            pap = sp[-1];
            sp[-2] = sp[1];
            sp[-1] = 495;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[2 - (arity - i + 3)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
case 247:
        sp[1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(3 - 10 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = sp[1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[1] = (W)hp;
            hp += (size + 4);
        }
    }
    sp[-1] = statics[5];
    sp -= -3;
    goto fun185;
case 260:
fun682:
    FUNCTION_HEAD(682, 1)
    ENSURE_FREESPACE(0 - 4, -2)
    sp[-4] = (W)zero293;
    sp[-3] = 519;
    sp -= 2;
    goto fun304;
case 259:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 517;
    goto fun304;
case 258:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 515;
    goto fun307;
case 257:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 513;
    goto fun304;
case 256:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 511;
    goto fun304;
case 255:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 509;
    goto fun307;
case 254:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 1), -1)
            pap = sp[-1];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            sp -= -2;
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 10 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = sp[0];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            sp -= -2;
            togo = sp[-1];
            goto jump;
        }
    }
case 267:
fun691:
    FUNCTION_HEAD(691, 1)
    ENSURE_FREESPACE(0 - 4, -2)
    sp[-4] = (W)zero293;
    sp[-3] = 533;
    sp -= 2;
    goto fun304;
case 266:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 531;
    goto fun304;
case 265:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 529;
    goto fun307;
case 264:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 527;
    goto fun304;
case 263:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 525;
    goto fun304;
case 262:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 523;
    goto fun304;
case 261:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 1), -1)
            pap = sp[-1];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            sp -= -2;
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 10 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = sp[0];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            sp -= -2;
            togo = sp[-1];
            goto jump;
        }
    }
case 284:
fun710:
    FUNCTION_HEAD(710, 1)
    ENSURE_FREESPACE(0 - 4, -2)
    sp[-4] = (W)zero293;
    sp[-3] = 567;
    sp -= 2;
    goto fun304;
case 283:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 565;
    goto fun304;
case 282:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 563;
    goto fun304;
case 281:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 561;
    goto fun304;
case 280:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 559;
    goto fun304;
case 279:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 557;
    goto fun304;
case 278:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 555;
    goto fun304;
case 277:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 553;
    goto fun307;
case 276:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 551;
    goto fun304;
case 275:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 549;
    goto fun304;
case 274:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 547;
    goto fun304;
case 273:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 545;
    goto fun304;
case 272:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 543;
    goto fun304;
case 271:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 541;
    goto fun304;
case 270:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 539;
    goto fun304;
case 269:
    sp[-1] = result;
    sp[-2] = sp[-1];
    sp[-1] = 537;
    goto fun304;
case 268:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 1), -1)
            pap = sp[-1];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            sp -= -2;
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 10 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = sp[0];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            sp -= -2;
            togo = sp[-1];
            goto jump;
        }
    }
case 294:
fun729:
    FUNCTION_HEAD(729, 3)
    ENSURE_FREESPACE(0 - 6, -4)
    sp[-2] = sp[-4];
    sp[-5] = sp[-3];
    sp[-6] = (W)zero234;
    sp[-4] = 587;
    sp -= 3;
    goto fun660;
case 293:
    sp[-1] = sp[1];
    sp[1] = result;
    sp[-3] = sp[1];
    sp[-2] = 585;
    sp -= 1;
    goto fun673;
case 292:
    sp[2] = result;
    sp[-2] = (W)zero234;
    sp[-1] = 583;
    goto fun441;
case 291:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(4 - (arity + 5), -1)
            pap = sp[-1];
            sp[-2] = sp[1];
            sp[-1] = 581;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[3 - (arity - i + 4)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
case 290:
        sp[1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(4 - 8 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = sp[1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[1] = (W)hp;
            hp += (size + 4);
        }
    }
    sp[-3] = sp[2];
    sp[-2] = (W)zero682;
    sp[-4] = (W)zero234;
    sp[-1] = 579;
    goto fun185;
case 289:
    sp[2] = result;
    if(((W *)sp[0])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[0];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(4 - (arity + 4), 0)
            pap = sp[0];
            sp[-1] = sp[2];
            sp[0] = 577;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[3 - (arity - i + 3)] = ((W *)pap)[i + 3];
            }
            sp -= -1;
            togo = ((W *)pap)[0];
            goto jump;
        }
case 288:
        sp[1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[0];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(4 - 5 - (size + 4), 0)
            pap = sp[0];
            hp[size + 3] = sp[2];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[2] = (W)hp;
            hp += (size + 4);
        }
        sp -= -1;
    }
    if(((W *)sp[1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(3 - (arity + 4), 0)
            pap = sp[1];
            sp[-2] = sp[1];
            sp[-1] = 575;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[2 - (arity - i + 3)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
case 287:
        sp[1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(3 - 7 - (size + 4), 0)
            pap = sp[1];
            hp[size + 3] = sp[1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[1] = (W)hp;
            hp += (size + 4);
        }
    }
    sp[-2] = sp[0];
    sp[-1] = (W)zero691;
    sp[-3] = (W)zero234;
    sp[0] = 573;
    sp -= -1;
    goto fun185;
case 286:
    sp[-1] = result;
    if(((W *)sp[0])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[0];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 2), -1)
            pap = sp[0];
            sp[0] = 571;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 1)] = ((W *)pap)[i + 3];
            }
            sp -= -1;
            togo = ((W *)pap)[0];
            goto jump;
        }
case 285:
        sp[-1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[0];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 10 - (size + 4), -1)
            pap = sp[0];
            hp[size + 3] = sp[-1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[0] = (W)hp;
            hp += (size + 4);
        }
        sp -= -1;
    }
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(1 - (arity + 1), -1)
            pap = sp[-1];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[0 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            sp -= -1;
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(1 - 10 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = sp[-1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            sp -= -1;
            togo = sp[-1];
            goto jump;
        }
    }
case 300:
fun744:
    FUNCTION_HEAD(744, 3)
    ENSURE_FREESPACE(0 - 7, -4)
    sp[-2] = sp[-3];
    sp[-3] = sp[-4];
    sp[-5] = sp[-2];
    sp[-6] = (W)zero387;
    sp[-7] = (W)zero282;
    sp[-4] = 599;
    sp -= 3;
    goto fun229;
case 299:
    sp[-1] = sp[1];
    sp[1] = result;
    ENSURE_FREESPACE(3 - 7 - 5, -1)
    hp[0] = 589;
    hp[1] = 1;
    hp[2] = 3;
    hp[3] = sp[0];
    hp[4] = sp[-1];
    sp[-2] = sp[-1];
    sp[-1] = (W)hp;
    hp += 5;
    sp[-4] = statics[7];
    sp[-3] = 597;
    sp -= 2;
    goto fun441;
case 298:
    sp[-1] = sp[0];
    sp[0] = result;
    if(((W *)sp[0])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[0];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(5 - (arity + 5), -1)
            pap = sp[0];
            sp[0] = 595;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[4 - (arity - i + 4)] = ((W *)pap)[i + 3];
            }
            sp -= -1;
            togo = ((W *)pap)[0];
            goto jump;
        }
case 297:
        sp[-1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[0];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(5 - 6 - (size + 4), -1)
            pap = sp[0];
            hp[size + 3] = sp[-1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[0] = (W)hp;
            hp += (size + 4);
        }
        sp -= -1;
    }
    if(((W *)sp[1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(4 - (arity + 5), -1)
            pap = sp[1];
            sp[-2] = sp[-1];
            sp[-1] = 593;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[3 - (arity - i + 4)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
case 296:
        sp[1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(4 - 5 - (size + 4), -1)
            pap = sp[1];
            hp[size + 3] = sp[-1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[1] = (W)hp;
            hp += (size + 4);
        }
    }
    sp[-1] = sp[2];
    sp[2] = 591;
    sp -= -3;
    goto call2;
case 295:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(1 - (arity + 1), -1)
            pap = sp[-1];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[0 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            sp -= -1;
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(1 - 10 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = sp[-1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            sp -= -1;
            togo = sp[-1];
            goto jump;
        }
    }
case 303:
fun752:
    FUNCTION_HEAD(752, 3)
    ENSURE_FREESPACE(0 - 5, -4)
    sp[-2] = sp[-4];
    if(((W *)sp[-2])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-2];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(0 - (arity + 4), -3)
            pap = sp[-2];
            sp[-5] = (W)zero710;
            sp[-4] = 605;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[-1 - (arity - i + 3)] = ((W *)pap)[i + 3];
            }
            sp -= 3;
            togo = ((W *)pap)[0];
            goto jump;
        }
case 302:
        sp[1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[-2];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(0 - 5 - (size + 4), -3)
            pap = sp[-2];
            hp[size + 3] = (W)zero710;
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[-2] = (W)hp;
            hp += (size + 4);
        }
        sp -= 3;
    }
    sp[-1] = sp[1];
    sp[-2] = sp[-1];
    sp[1] = 603;
    sp -= -2;
    goto call2;
case 301:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(1 - (arity + 1), -1)
            pap = sp[-1];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[0 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            sp -= -1;
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(1 - 10 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = sp[-1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            sp -= -1;
            togo = sp[-1];
            goto jump;
        }
    }
case 305:
fun760:
    FUNCTION_HEAD(760, 2)
    ENSURE_FREESPACE(0 - 6, -3)
    {
        W first = sp[-3];
        sp[-3] = sp[-2];
        sp[-2] = first;
    }
    sp[-5] = sp[-2];
    sp[-6] = sp[-5];
    sp[-4] = 609;
    sp -= 3;
    goto fun75;
case 304:
    sp[1] = result;
    sp[-2] = sp[0];
    sp[0] = (W)zero293;
    sp[-1] = (W)zero62;
    sp -= -3;
    goto call3;
case 307:
fun768:
    FUNCTION_HEAD(768, 1)
    ENSURE_FREESPACE(0 - 5, -2)
    sp[-3] = sp[-2];
    sp[-4] = (W)zero163;
    sp[-2] = 613;
    sp -= 1;
    goto fun46;
case 306:
    sp[-1] = result;
    sp[-2] = (W)zero55;
    sp[-3] = (W)zero760;
    sp[-4] = (W)zero163;
    sp -= -1;
    goto fun599;
case 310:
fun776:
    FUNCTION_HEAD(776, 2)
    ENSURE_FREESPACE(0 - 5, -3)
    sp[-2] = sp[-3];
    sp[-4] = sp[-2];
    sp[-3] = (W)zero82;
    sp[-2] = 619;
    sp -= 1;
    goto fun75;
case 309:
    sp[-1] = result;
    sp[-4] = sp[-1];
    sp[-2] = (W)w;
    sp[-3] = (W)zero_Succ;
    sp[-1] = 617;
    goto call2;
case 308:
    sp[-1] = result;
    sp -= -1;
    goto fun_Out;
case 312:
fun782:
    FUNCTION_HEAD(782, 2)
    ENSURE_FREESPACE(0 - 4, -3)
    sp[-2] = sp[-3];
    sp[-3] = sp[-2];
    sp[-2] = 623;
    sp -= 1;
    goto fun768;
case 311:
    sp[-1] = result;
    ENSURE_FREESPACE(1 - 10 - 4, -1)
    hp[0] = 621;
    hp[1] = 1;
    hp[2] = 2;
    hp[3] = sp[-1];
    sp[-2] = sp[-1];
    sp[-1] = (W)hp;
    hp += 4;
    sp -= -1;
    goto fun776;
case 318:
fun795:
    FUNCTION_HEAD(795, 3)
    ENSURE_FREESPACE(0 - 5, -4)
    sp[-2] = sp[-4];
    sp[-5] = (W)zero163;
    sp[-4] = 635;
    sp -= 3;
    goto fun441;
case 317:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(3 - (arity + 4), -1)
            pap = sp[-1];
            sp[-2] = sp[0];
            sp[-1] = 633;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[2 - (arity - i + 3)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
case 316:
        sp[-1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(3 - 7 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = sp[0];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[-1] = (W)hp;
            hp += (size + 4);
        }
    }
    sp[-3] = sp[0];
    sp[-4] = (W)zero163;
    sp[-2] = 631;
    sp -= 1;
    goto fun660;
case 315:
    sp[1] = result;
    ENSURE_FREESPACE(4 - 8 - 4, 0)
    hp[0] = 625;
    hp[1] = 1;
    hp[2] = 2;
    hp[3] = sp[0];
    sp[-1] = (W)hp;
    hp += 4;
    sp[-2] = sp[0];
    sp[0] = 629;
    sp -= -1;
    goto fun782;
case 314:
    ;
    ENSURE_FREESPACE(3 - 7 - 4, 0)
    hp[0] = 625;
    hp[1] = 1;
    hp[2] = 2;
    hp[3] = sp[0];
    sp[-1] = (W)hp;
    hp += 4;
    sp[-2] = sp[0];
    sp[0] = 627;
    sp -= -1;
    goto fun782;
case 313:
    ;
    if(((W *)sp[0])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[0];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 1), 0)
            pap = sp[0];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            sp -= -2;
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[0];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 10 - (size + 4), 0)
            pap = sp[0];
            hp[size + 3] = sp[0];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            sp -= -2;
            togo = sp[-1];
            goto jump;
        }
    }
case 319:
fun800:
    FUNCTION_HEAD(800, 3)
    ENSURE_FREESPACE(0 - 10, -4)
    sp[-2] = sp[-4];
    if(((W *)sp[-3])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-3];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(0 - (arity + 1), -3)
            pap = sp[-3];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[-1 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-3];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(0 - 10 - (size + 4), -3)
            pap = sp[-3];
            hp[size + 3] = sp[-2];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            togo = sp[-1];
            goto jump;
        }
    }
case 320:
fun803:
    FUNCTION_HEAD(803, 2)
    ENSURE_FREESPACE(0 - 10, -3)
    result = sp[-2];
    togo = sp[-1];
    goto jump;
case 327:
fun816:
    FUNCTION_HEAD(816, 1)
    ENSURE_FREESPACE(0 - 4, -2)
    ENSURE_FREESPACE(0 - 4 - 4, -1)
    hp[0] = 7;
    hp[1] = 1;
    hp[2] = 2;
    hp[3] = (W)zero9;
    sp[-2] = (W)hp;
    hp += 4;
    sp[-3] = sp[-2];
    sp[-2] = 653;
    sp -= 1;
    goto fun_In;
case 326:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(1 - (arity + 3), -1)
            pap = sp[-1];
            sp[-3] = (W)w;
            sp[-2] = 651;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[0 - (arity - i + 2)] = ((W *)pap)[i + 3];
            }
            sp -= 1;
            togo = ((W *)pap)[0];
            goto jump;
        }
case 325:
        sp[-1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(1 - 5 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = (W)w;
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[-2] = (W)hp;
            hp += (size + 4);
        }
        sp -= 1;
    }
    sp[-3] = (W)w;
    sp[-2] = 649;
    sp -= 1;
    goto fun_Succ;
case 324:
    sp[-1] = result;
    if(((W *)sp[1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(3 - (arity + 4), -1)
            pap = sp[1];
            sp[-2] = sp[-1];
            sp[-1] = 647;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[2 - (arity - i + 3)] = ((W *)pap)[i + 3];
            }
            togo = ((W *)pap)[0];
            goto jump;
        }
case 323:
        sp[-1] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(3 - 7 - (size + 4), -1)
            pap = sp[1];
            hp[size + 3] = sp[-1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[-1] = (W)hp;
            hp += (size + 4);
        }
    }
    sp[-2] = sp[0];
    sp[0] = 645;
    sp -= -1;
    goto fun241;
case 322:
    sp[-1] = result;
    sp[-3] = sp[0];
    sp[-2] = 643;
    sp -= 1;
    goto fun176;
case 321:
    sp[1] = result;
    ENSURE_FREESPACE(3 - 10 - 4, 0)
    hp[0] = 639;
    hp[1] = 2;
    hp[2] = 3;
    hp[3] = sp[1];
    sp[1] = (W)hp;
    hp += 4;
    sp[-1] = sp[0];
    sp[0] = (W)zero803;
    sp -= -3;
    goto call2;
case 328:
fun819:
    FUNCTION_HEAD(819, 1)
    ENSURE_FREESPACE(0 - 10, -2)
    sp[-2] = 7777;
    goto fun_REPORT_OUT_OF_STACK;
case 331:
fun833:
    FUNCTION_HEAD(833, 5)
    ENSURE_FREESPACE(0 - 10, -6)
    sp[-2] = sp[-6];
    {
        W first = sp[-5];
        sp[-5] = sp[-3];
        sp[-3] = sp[-4];
        sp[-4] = first;
    }
    ENSURE_FREESPACE(0 - 10 - 5, -5)
    hp[0] = 601;
    hp[1] = 1;
    hp[2] = 3;
    hp[3] = sp[-4];
    hp[4] = sp[-5];
    sp[-6] = sp[-5];
    sp[-5] = (W)hp;
    hp += 5;
    sp[-7] = sp[-4];
    sp[-4] = 661;
    sp -= 3;
    goto fun744;
case 330:
    sp[-1] = result;
    sp[-3] = sp[1];
    sp[-2] = sp[-1];
    sp[-4] = sp[-3];
    sp[-1] = sp[0];
    sp[1] = 659;
    sp -= -2;
    goto call4;
case 329:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(1 - (arity + 1), -1)
            pap = sp[-1];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[0 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            sp -= -1;
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(1 - 10 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = sp[-1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            sp -= -1;
            togo = sp[-1];
            goto jump;
        }
    }
case 333:
fun844:
    FUNCTION_HEAD(844, 5)
    ENSURE_FREESPACE(0 - 7, -6)
    sp[-2] = sp[-6];
    {
        W first = sp[-4];
        sp[-4] = sp[-3];
        sp[-3] = first;
    }
    sp[-6] = sp[-2];
    sp[-7] = sp[-6];
    sp[-2] = 665;
    sp -= 1;
    goto call4;
case 332:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(1 - (arity + 1), -1)
            pap = sp[-1];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[0 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            sp -= -1;
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(1 - 10 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = sp[-1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            sp -= -1;
            togo = sp[-1];
            goto jump;
        }
    }
case 336:
fun862:
    FUNCTION_HEAD(862, 6)
    ENSURE_FREESPACE(0 - 7, -7)
    sp[-2] = sp[-5];
    sp[-5] = sp[-4];
    sp[-4] = sp[-6];
    sp[-6] = sp[-3];
    sp[-3] = sp[-7];
    if(((W *)sp[-2])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-2];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(0 - (arity + 6), -6)
            pap = sp[-2];
            sp[-7] = sp[-6];
            sp[-6] = 671;
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[-1 - (arity - i + 5)] = ((W *)pap)[i + 3];
            }
            sp -= 5;
            togo = ((W *)pap)[0];
            goto jump;
        }
case 335:
        sp[3] = result;
    }
    else
    {
        {
            W pap, size;
            pap = sp[-2];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(0 - 6 - (size + 4), -6)
            pap = sp[-2];
            hp[size + 3] = sp[-6];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            sp[-2] = (W)hp;
            hp += (size + 4);
        }
        sp -= 5;
    }
    ENSURE_FREESPACE(5 - 6 - 6, 0)
    hp[0] = 663;
    hp[1] = 2;
    hp[2] = 5;
    hp[3] = sp[2];
    hp[4] = sp[1];
    hp[5] = sp[0];
    sp[-1] = sp[1];
    sp[1] = (W)hp;
    hp += 6;
    ENSURE_FREESPACE(5 - 6 - 6, -1)
    hp[0] = 667;
    hp[1] = 2;
    hp[2] = 5;
    hp[3] = sp[2];
    hp[4] = sp[-1];
    hp[5] = sp[0];
    sp[2] = (W)hp;
    hp += 6;
    sp[-1] = sp[3];
    sp[0] = sp[2];
    sp[2] = (W)zero819;
    sp[3] = 669;
    sp -= -4;
    goto call3;
case 334:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(1 - (arity + 1), -1)
            pap = sp[-1];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[0 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            sp -= -1;
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(1 - 10 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = sp[-1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            sp -= -1;
            togo = sp[-1];
            goto jump;
        }
    }
case 339:
fun876:
    FUNCTION_HEAD(876, 5)
    ENSURE_FREESPACE(0 - 7, -6)
    sp[-2] = sp[-6];
    sp[-7] = sp[-3];
    sp[-6] = 677;
    sp -= 5;
    goto fun816;
case 338:
    sp[-1] = sp[3];
    sp[3] = result;
    ENSURE_FREESPACE(5 - 6 - 7, -1)
    hp[0] = 673;
    hp[1] = 2;
    hp[2] = 6;
    hp[3] = sp[-1];
    hp[4] = sp[0];
    hp[5] = sp[1];
    hp[6] = sp[2];
    sp[2] = (W)hp;
    hp += 7;
    sp[0] = sp[3];
    sp[1] = sp[2];
    sp[2] = (W)zero293;
    sp[3] = 675;
    sp -= -4;
    goto call2;
case 337:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(1 - (arity + 1), -1)
            pap = sp[-1];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[0 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            sp -= -1;
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(1 - 10 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = sp[-1];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            sp -= -1;
            togo = sp[-1];
            goto jump;
        }
    }
case 340:
fun885:
    FUNCTION_HEAD(885, 1)
    ENSURE_FREESPACE(0 - 10, -2)
    ENSURE_FREESPACE(0 - 10 - 4, -1)
    hp[0] = 637;
    hp[1] = 2;
    hp[2] = 3;
    hp[3] = (W)zero795;
    sp[-2] = (W)hp;
    hp += 4;
    ENSURE_FREESPACE(0 - 10 - 4, -2)
    hp[0] = 607;
    hp[1] = 2;
    hp[2] = 3;
    hp[3] = sp[-2];
    sp[-2] = (W)hp;
    hp += 4;
    ENSURE_FREESPACE(0 - 10 - 7, -2)
    hp[0] = 679;
    hp[1] = 1;
    hp[2] = 5;
    hp[3] = (W)zero876;
    hp[4] = sp[-2];
    hp[5] = (W)zero577;
    hp[6] = (W)zero577;
    sp[-3] = sp[-2];
    sp[-2] = (W)hp;
    hp += 7;
    sp[-5] = sp[-3];
    sp[-3] = (W)zero577;
    sp[-4] = (W)zero577;
    sp[-6] = (W)zero876;
    goto fun876;
case 342:
fun_Out:
    ENSURE_FREESPACE(0 - 10, -2)
    {
        W c;
        c = sp[-2];
        if(((W *)c)[0] == 683 && ((W *)c)[1] == 1)
        {
            cxgr_putchar(((W *)c)[3]);
            result = c;
            togo = sp[-1];
            goto jump;
        }
        else
        {
            return make_result(sp, hp, cxgr_error_out_notchar);
        }
    }
case 343:
fun_In:
    {
        W n;
        n = cxgr_getchar();
        if(n == CXGR_EOF)
        {
            result = sp[-2];
            togo = sp[-1];
            goto jump;
        }
        else
        {
            ENSURE_FREESPACE(0 - 10 - 4, -2)
            hp[0] = 683;
            hp[1] = 1;
            hp[2] = 2;
            hp[3] = n;
            result = (W)hp;
            hp += 4;
            togo = sp[-1];
            goto jump;
        }
    }
case 344:
fun_Succ:
    {
        W c, n;
        c = sp[-2];
        if(((W *)c)[0] == 683 && ((W *)c)[1] == 1)
        {
            n = ((W *)c)[3] + 2;
            if(n == 513) n = 1;
            ENSURE_FREESPACE(0 - 10 - 4, -2)
            hp[0] = 683;
            hp[1] = 1;
            hp[2] = 2;
            hp[3] = n;
            result = (W)hp;
            hp += 4;
            togo = sp[-1];
            goto jump;
        }
        else
        {
            return make_result(sp, hp, cxgr_error_succ_notchar);
        }
    }
fun_REPORT_OUT_OF_STACK:
    return make_result(sp, hp, cxgr_error_stack_oob);
case 345:
    ENSURE_FREESPACE(0 - 10, -3)
    result = sp[-3];
    togo = sp[-1];
    goto jump;
case 346:
    ENSURE_FREESPACE(0 - 10, -3)
    result = sp[-2];
    togo = sp[-1];
    goto jump;
case 341:
    ENSURE_FREESPACE(0 - 10, -3)
    if(((W *)sp[-2])[0] == 683 && ((W *)sp[-2])[1] == 1 && ((W *)sp[-2])[3] == sp[-3])
    {
        result = (W)zero_TRUE;
    }
    else
    {
        result = (W)zero_FALSE;
    }
    togo = sp[-1];
    goto jump;
call2:
    switch(((W *)sp[-4])[1])
    {
    case 1: goto call2_1;
    case 2: goto call2_2;
    default: goto call2_default;
    }
call2_1:
    ENSURE_FREESPACE(0 - 4, -4)
    {
        W first = sp[-4];
        sp[-4] = sp[-3];
        sp[-3] = first;
    }
    {
        W pap, arity;
        pap = sp[-3];
        arity = ((W *)pap)[2];
        ENSURE_FREESPACE(0 - (arity + 3), -4)
        pap = sp[-3];
        sp[-3] = 695;
        {
            int i;
            for(i = 0; i < arity - 1; i++)
                sp[-1 - (arity - i + 2)] = ((W *)pap)[i + 3];
        }
        sp -= 2;
        togo = ((W *)pap)[0];
        goto jump;
    }
case 347:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 1), -1)
            pap = sp[-1];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            sp -= -2;
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 10 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = sp[0];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            sp -= -2;
            togo = sp[-1];
            goto jump;
        }
    }
call2_2:
    {
        W pap, arity;
        pap = sp[-4];
        arity = ((W *)pap)[2];
        ENSURE_FREESPACE(0 - (arity + 1), -4)
        pap = sp[-4];
        {
            int i;
            for(i = 0; i < arity - 2; i++)
                sp[-1 - (arity - i + 0)] = ((W *)pap)[i + 3];
        }
        togo = ((W *)pap)[0];
        goto jump;
    }
call2_default:
    {
        W pap, size;
        pap = sp[-4];
        size = ((W *)pap)[2] - ((W *)pap)[1];
        ENSURE_FREESPACE(0 - 4 - (size + 5), -4)
        pap = sp[-4];
        hp[size + 3] = sp[-3];
        hp[size + 4] = sp[-2];
        {
            int i;
            for(i = 0; i < size + 3; i++)
                hp[i] = ((W *)pap)[i];
        }
        hp[1] = hp[1] - 2;
        result = (W)hp;
        hp += (size + 5);
        togo = sp[-1];
        goto jump;
    }
call3:
    switch(((W *)sp[-5])[1])
    {
    case 1: goto call3_1;
    case 2: goto call3_2;
    case 3: goto call3_3;
    default: goto call3_default;
    }
call3_1:
    ENSURE_FREESPACE(0 - 5, -5)
    {
        W first = sp[-5];
        sp[-5] = sp[-4];
        sp[-4] = first;
    }
    {
        W pap, arity;
        pap = sp[-4];
        arity = ((W *)pap)[2];
        ENSURE_FREESPACE(0 - (arity + 4), -5)
        pap = sp[-4];
        sp[-4] = 697;
        {
            int i;
            for(i = 0; i < arity - 1; i++)
                sp[-1 - (arity - i + 3)] = ((W *)pap)[i + 3];
        }
        sp -= 3;
        togo = ((W *)pap)[0];
        goto jump;
    }
case 348:
    sp[-1] = result;
    sp -= -3;
    goto call2;
call3_2:
    ENSURE_FREESPACE(0 - 5, -5)
    {
        W first = sp[-5];
        sp[-5] = sp[-4];
        sp[-4] = sp[-3];
        sp[-3] = first;
    }
    {
        W pap, arity;
        pap = sp[-3];
        arity = ((W *)pap)[2];
        ENSURE_FREESPACE(0 - (arity + 3), -5)
        pap = sp[-3];
        sp[-3] = 699;
        {
            int i;
            for(i = 0; i < arity - 2; i++)
                sp[-1 - (arity - i + 2)] = ((W *)pap)[i + 3];
        }
        sp -= 2;
        togo = ((W *)pap)[0];
        goto jump;
    }
case 349:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 1), -1)
            pap = sp[-1];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            sp -= -2;
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 10 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = sp[0];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            sp -= -2;
            togo = sp[-1];
            goto jump;
        }
    }
call3_3:
    {
        W pap, arity;
        pap = sp[-5];
        arity = ((W *)pap)[2];
        ENSURE_FREESPACE(0 - (arity + 1), -5)
        pap = sp[-5];
        {
            int i;
            for(i = 0; i < arity - 3; i++)
                sp[-1 - (arity - i + 0)] = ((W *)pap)[i + 3];
        }
        togo = ((W *)pap)[0];
        goto jump;
    }
call3_default:
    {
        W pap, size;
        pap = sp[-5];
        size = ((W *)pap)[2] - ((W *)pap)[1];
        ENSURE_FREESPACE(0 - 5 - (size + 6), -5)
        pap = sp[-5];
        hp[size + 3] = sp[-4];
        hp[size + 4] = sp[-3];
        hp[size + 5] = sp[-2];
        {
            int i;
            for(i = 0; i < size + 3; i++)
                hp[i] = ((W *)pap)[i];
        }
        hp[1] = hp[1] - 3;
        result = (W)hp;
        hp += (size + 6);
        togo = sp[-1];
        goto jump;
    }
call4:
    switch(((W *)sp[-6])[1])
    {
    case 1: goto call4_1;
    case 2: goto call4_2;
    case 3: goto call4_3;
    case 4: goto call4_4;
    default: goto call4_default;
    }
call4_1:
    ENSURE_FREESPACE(0 - 6, -6)
    {
        W first = sp[-6];
        sp[-6] = sp[-5];
        sp[-5] = first;
    }
    {
        W pap, arity;
        pap = sp[-5];
        arity = ((W *)pap)[2];
        ENSURE_FREESPACE(0 - (arity + 5), -6)
        pap = sp[-5];
        sp[-5] = 701;
        {
            int i;
            for(i = 0; i < arity - 1; i++)
                sp[-1 - (arity - i + 4)] = ((W *)pap)[i + 3];
        }
        sp -= 4;
        togo = ((W *)pap)[0];
        goto jump;
    }
case 350:
    sp[-1] = result;
    sp -= -4;
    goto call3;
call4_2:
    ENSURE_FREESPACE(0 - 6, -6)
    {
        W first = sp[-6];
        sp[-6] = sp[-5];
        sp[-5] = sp[-4];
        sp[-4] = first;
    }
    {
        W pap, arity;
        pap = sp[-4];
        arity = ((W *)pap)[2];
        ENSURE_FREESPACE(0 - (arity + 4), -6)
        pap = sp[-4];
        sp[-4] = 703;
        {
            int i;
            for(i = 0; i < arity - 2; i++)
                sp[-1 - (arity - i + 3)] = ((W *)pap)[i + 3];
        }
        sp -= 3;
        togo = ((W *)pap)[0];
        goto jump;
    }
case 351:
    sp[-1] = result;
    sp -= -3;
    goto call2;
call4_3:
    ENSURE_FREESPACE(0 - 6, -6)
    {
        W first = sp[-6];
        sp[-6] = sp[-5];
        sp[-5] = sp[-4];
        sp[-4] = sp[-3];
        sp[-3] = first;
    }
    {
        W pap, arity;
        pap = sp[-3];
        arity = ((W *)pap)[2];
        ENSURE_FREESPACE(0 - (arity + 3), -6)
        pap = sp[-3];
        sp[-3] = 705;
        {
            int i;
            for(i = 0; i < arity - 3; i++)
                sp[-1 - (arity - i + 2)] = ((W *)pap)[i + 3];
        }
        sp -= 2;
        togo = ((W *)pap)[0];
        goto jump;
    }
case 352:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 1), -1)
            pap = sp[-1];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            sp -= -2;
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 10 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = sp[0];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            sp -= -2;
            togo = sp[-1];
            goto jump;
        }
    }
call4_4:
    {
        W pap, arity;
        pap = sp[-6];
        arity = ((W *)pap)[2];
        ENSURE_FREESPACE(0 - (arity + 1), -6)
        pap = sp[-6];
        {
            int i;
            for(i = 0; i < arity - 4; i++)
                sp[-1 - (arity - i + 0)] = ((W *)pap)[i + 3];
        }
        togo = ((W *)pap)[0];
        goto jump;
    }
call4_default:
    {
        W pap, size;
        pap = sp[-6];
        size = ((W *)pap)[2] - ((W *)pap)[1];
        ENSURE_FREESPACE(0 - 6 - (size + 7), -6)
        pap = sp[-6];
        hp[size + 3] = sp[-5];
        hp[size + 4] = sp[-4];
        hp[size + 5] = sp[-3];
        hp[size + 6] = sp[-2];
        {
            int i;
            for(i = 0; i < size + 3; i++)
                hp[i] = ((W *)pap)[i];
        }
        hp[1] = hp[1] - 4;
        result = (W)hp;
        hp += (size + 7);
        togo = sp[-1];
        goto jump;
    }
call5:
    switch(((W *)sp[-7])[1])
    {
    case 1: goto call5_1;
    case 2: goto call5_2;
    case 3: goto call5_3;
    case 4: goto call5_4;
    case 5: goto call5_5;
    default: goto call5_default;
    }
call5_1:
    ENSURE_FREESPACE(0 - 7, -7)
    {
        W first = sp[-7];
        sp[-7] = sp[-6];
        sp[-6] = first;
    }
    {
        W pap, arity;
        pap = sp[-6];
        arity = ((W *)pap)[2];
        ENSURE_FREESPACE(0 - (arity + 6), -7)
        pap = sp[-6];
        sp[-6] = 707;
        {
            int i;
            for(i = 0; i < arity - 1; i++)
                sp[-1 - (arity - i + 5)] = ((W *)pap)[i + 3];
        }
        sp -= 5;
        togo = ((W *)pap)[0];
        goto jump;
    }
case 353:
    sp[-1] = result;
    sp -= -5;
    goto call4;
call5_2:
    ENSURE_FREESPACE(0 - 7, -7)
    {
        W first = sp[-7];
        sp[-7] = sp[-6];
        sp[-6] = sp[-5];
        sp[-5] = first;
    }
    {
        W pap, arity;
        pap = sp[-5];
        arity = ((W *)pap)[2];
        ENSURE_FREESPACE(0 - (arity + 5), -7)
        pap = sp[-5];
        sp[-5] = 709;
        {
            int i;
            for(i = 0; i < arity - 2; i++)
                sp[-1 - (arity - i + 4)] = ((W *)pap)[i + 3];
        }
        sp -= 4;
        togo = ((W *)pap)[0];
        goto jump;
    }
case 354:
    sp[-1] = result;
    sp -= -4;
    goto call3;
call5_3:
    ENSURE_FREESPACE(0 - 7, -7)
    {
        W first = sp[-7];
        sp[-7] = sp[-6];
        sp[-6] = sp[-5];
        sp[-5] = sp[-4];
        sp[-4] = first;
    }
    {
        W pap, arity;
        pap = sp[-4];
        arity = ((W *)pap)[2];
        ENSURE_FREESPACE(0 - (arity + 4), -7)
        pap = sp[-4];
        sp[-4] = 711;
        {
            int i;
            for(i = 0; i < arity - 3; i++)
                sp[-1 - (arity - i + 3)] = ((W *)pap)[i + 3];
        }
        sp -= 3;
        togo = ((W *)pap)[0];
        goto jump;
    }
case 355:
    sp[-1] = result;
    sp -= -3;
    goto call2;
call5_4:
    ENSURE_FREESPACE(0 - 7, -7)
    {
        W first = sp[-7];
        sp[-7] = sp[-6];
        sp[-6] = sp[-5];
        sp[-5] = sp[-4];
        sp[-4] = sp[-3];
        sp[-3] = first;
    }
    {
        W pap, arity;
        pap = sp[-3];
        arity = ((W *)pap)[2];
        ENSURE_FREESPACE(0 - (arity + 3), -7)
        pap = sp[-3];
        sp[-3] = 713;
        {
            int i;
            for(i = 0; i < arity - 4; i++)
                sp[-1 - (arity - i + 2)] = ((W *)pap)[i + 3];
        }
        sp -= 2;
        togo = ((W *)pap)[0];
        goto jump;
    }
case 356:
    sp[-1] = result;
    if(((W *)sp[-1])[1] == 1)
    {
        {
            W pap, arity;
            pap = sp[-1];
            arity = ((W *)pap)[2];
            ENSURE_FREESPACE(2 - (arity + 1), -1)
            pap = sp[-1];
            {
                int i;
                for(i = 0; i < arity - 1; i++)
                    sp[1 - (arity - i + 0)] = ((W *)pap)[i + 3];
            }
            sp -= -2;
            togo = ((W *)pap)[0];
            goto jump;
        }
    }
    else
    {
        {
            W pap, size;
            pap = sp[-1];
            size = ((W *)pap)[2] - ((W *)pap)[1];
            ENSURE_FREESPACE(2 - 10 - (size + 4), -1)
            pap = sp[-1];
            hp[size + 3] = sp[0];
            {
                int i;
                for(i = 0; i < size + 3; i++)
                    hp[i] = ((W *)pap)[i];
            }
            hp[1] = hp[1] - 1;
            result = (W)hp;
            hp += (size + 4);
            sp -= -2;
            togo = sp[-1];
            goto jump;
        }
    }
call5_5:
    {
        W pap, arity;
        pap = sp[-7];
        arity = ((W *)pap)[2];
        ENSURE_FREESPACE(0 - (arity + 1), -7)
        pap = sp[-7];
        {
            int i;
            for(i = 0; i < arity - 5; i++)
                sp[-1 - (arity - i + 0)] = ((W *)pap)[i + 3];
        }
        togo = ((W *)pap)[0];
        goto jump;
    }
call5_default:
    {
        W pap, size;
        pap = sp[-7];
        size = ((W *)pap)[2] - ((W *)pap)[1];
        ENSURE_FREESPACE(0 - 7 - (size + 8), -7)
        pap = sp[-7];
        hp[size + 3] = sp[-6];
        hp[size + 4] = sp[-5];
        hp[size + 5] = sp[-4];
        hp[size + 6] = sp[-3];
        hp[size + 7] = sp[-2];
        {
            int i;
            for(i = 0; i < size + 3; i++)
                hp[i] = ((W *)pap)[i];
        }
        hp[1] = hp[1] - 5;
        result = (W)hp;
        hp += (size + 8);
        togo = sp[-1];
        goto jump;
    }
case 0:
    ENSURE_FREESPACE(0 - 3, -1)
    ENSURE_FREESPACE(0 - 3 - 4, -1)
    hp[0] = 29;
    hp[1] = 2;
    hp[2] = 3;
    hp[3] = (W)zero55;
    sp[-2] = (W)hp;
    hp += 4;
    statics[0] = sp[-2];
    ENSURE_FREESPACE(0 - 3 - 4, -1)
    hp[0] = 29;
    hp[1] = 2;
    hp[2] = 3;
    hp[3] = statics[0];
    sp[-2] = (W)hp;
    hp += 4;
    statics[1] = sp[-2];
    ENSURE_FREESPACE(0 - 3 - 5, -1)
    hp[0] = 29;
    hp[1] = 1;
    hp[2] = 3;
    hp[3] = statics[0];
    hp[4] = statics[1];
    sp[-2] = (W)hp;
    hp += 5;
    statics[2] = sp[-2];
    ENSURE_FREESPACE(0 - 3 - 4, -1)
    hp[0] = 29;
    hp[1] = 2;
    hp[2] = 3;
    hp[3] = statics[1];
    sp[-2] = (W)hp;
    hp += 4;
    statics[3] = sp[-2];
    ENSURE_FREESPACE(0 - 3 - 4, -1)
    hp[0] = 29;
    hp[1] = 2;
    hp[2] = 3;
    hp[3] = statics[2];
    sp[-2] = (W)hp;
    hp += 4;
    statics[4] = sp[-2];
    ENSURE_FREESPACE(0 - 3 - 4, -1)
    hp[0] = 29;
    hp[1] = 2;
    hp[2] = 3;
    hp[3] = statics[4];
    sp[-2] = (W)hp;
    hp += 4;
    statics[5] = sp[-2];
    ENSURE_FREESPACE(0 - 3 - 5, -1)
    hp[0] = 29;
    hp[1] = 1;
    hp[2] = 3;
    hp[3] = statics[1];
    hp[4] = statics[4];
    sp[-2] = (W)hp;
    hp += 5;
    statics[6] = sp[-2];
    ENSURE_FREESPACE(0 - 3 - 5, -1)
    hp[0] = 29;
    hp[1] = 1;
    hp[2] = 3;
    hp[3] = statics[0];
    hp[4] = statics[2];
    sp[-2] = (W)hp;
    hp += 5;
    statics[7] = sp[-2];
    ENSURE_FREESPACE(0 - 3 - 4, -1)
    hp[0] = 9;
    hp[1] = 2;
    hp[2] = 3;
    hp[3] = (W)zero5;
    sp[-2] = (W)hp;
    hp += 4;
    statics[8] = sp[-2];
    ENSURE_FREESPACE(0 - 3 - 4, -1)
    hp[0] = 9;
    hp[1] = 2;
    hp[2] = 3;
    hp[3] = (W)zero9;
    sp[-2] = (W)hp;
    hp += 4;
    statics[9] = sp[-2];
    ENSURE_FREESPACE(0 - 3 - 4, -1)
    hp[0] = 115;
    hp[1] = 2;
    hp[2] = 3;
    hp[3] = (W)zero163;
    sp[-2] = (W)hp;
    hp += 4;
    statics[10] = sp[-2];
    ENSURE_FREESPACE(0 - 3 - 4, -1)
    hp[0] = 119;
    hp[1] = 2;
    hp[2] = 3;
    hp[3] = (W)zero163;
    sp[-2] = (W)hp;
    hp += 4;
    statics[11] = sp[-2];
    ENSURE_FREESPACE(0 - 3 - 4, -1)
    hp[0] = 29;
    hp[1] = 2;
    hp[2] = 3;
    hp[3] = statics[5];
    sp[-2] = (W)hp;
    hp += 4;
    statics[12] = sp[-2];
    ENSURE_FREESPACE(0 - 3 - 5, -1)
    hp[0] = 29;
    hp[1] = 1;
    hp[2] = 3;
    hp[3] = statics[0];
    hp[4] = statics[3];
    sp[-2] = (W)hp;
    hp += 5;
    statics[13] = sp[-2];
    ENSURE_FREESPACE(0 - 3 - 4, -1)
    hp[0] = 29;
    hp[1] = 2;
    hp[2] = 3;
    hp[3] = (W)zero234;
    sp[-2] = (W)hp;
    hp += 4;
    statics[14] = sp[-2];
    ENSURE_FREESPACE(0 - 3 - 4, -1)
    hp[0] = 131;
    hp[1] = 3;
    hp[2] = 4;
    hp[3] = (W)zero163;
    sp[-2] = (W)hp;
    hp += 4;
    statics[15] = sp[-2];
    ENSURE_FREESPACE(0 - 3 - 4, -1)
    hp[0] = 131;
    hp[1] = 3;
    hp[2] = 4;
    hp[3] = (W)zero282;
    sp[-2] = (W)hp;
    hp += 4;
    statics[16] = sp[-2];
    ENSURE_FREESPACE(0 - 3 - 5, -1)
    hp[0] = 29;
    hp[1] = 1;
    hp[2] = 3;
    hp[3] = statics[0];
    hp[4] = statics[8];
    sp[-2] = (W)hp;
    hp += 5;
    statics[17] = sp[-2];
    ENSURE_FREESPACE(0 - 3 - 5, -1)
    hp[0] = 29;
    hp[1] = 1;
    hp[2] = 3;
    hp[3] = statics[0];
    hp[4] = statics[17];
    sp[-2] = (W)hp;
    hp += 5;
    statics[18] = sp[-2];
    ENSURE_FREESPACE(0 - 3 - 5, -1)
    hp[0] = 29;
    hp[1] = 1;
    hp[2] = 3;
    hp[3] = statics[0];
    hp[4] = statics[18];
    sp[-2] = (W)hp;
    hp += 5;
    statics[19] = sp[-2];
    ENSURE_FREESPACE(0 - 3 - 4, -1)
    hp[0] = 93;
    hp[1] = 2;
    hp[2] = 3;
    hp[3] = statics[5];
    sp[-2] = (W)hp;
    hp += 4;
    statics[20] = sp[-2];
    sp[-3] = (W)zero885;
    sp[-2] = 715;
    sp -= 1;
    goto fun885;
case 357:
    sp[-1] = result;
    statics[21] = sp[-1];
    sp -= -1;
    return make_result(sp, hp, cxgr_success);
}
unhandled_jump(togo, info);
return make_result(sp, hp, cxgr_error_internal);
}

int cxgr_static_count(void)
{
    return 22;
}
