/*
 * C code generated by Aldor from file "matrix.as".
 */

#include "foam_c.h"

typedef struct Fmt5  *PFmt5;
typedef struct Fmt6  *PFmt6;
typedef struct Fmt7  *PFmt7;
typedef struct Fmt8  *PFmt8;
typedef struct Fmt9  *PFmt9;
typedef struct Fmt10  *PFmt10;
typedef struct Fmt11  *PFmt11;
typedef struct Fmt12  *PFmt12;
typedef struct Fmt13  *PFmt13;
typedef struct Fmt14  *PFmt14;
typedef struct Fmt15  *PFmt15;
typedef struct Fmt16  *PFmt16;
typedef struct Fmt17  *PFmt17;
typedef struct Fmt18  *PFmt18;
typedef struct Fmt19  *PFmt19;
typedef struct Fmt20  *PFmt20;
typedef struct Fmt21  *PFmt21;
typedef struct Fmt22  *PFmt22;
typedef struct Fmt23  *PFmt23;
typedef struct Fmt24  *PFmt24;
struct Fmt5 {
        FiSInt X0_size;
        FiSInt X1_nsize;
        FiWord X2_values;
};
struct Fmt6 {
        FiPtr X0_empty;
};
struct Fmt7 {
        FiClos X0__LT__LT_;
        FiClos X1__STAR_;
        FiClos X2__PLUS_;
        FiClos X3_set_BANG_;
        FiClos X4_coerce;
        FiClos X5_coerce;
        FiClos X6_new;
        FiWord X7_Rep;
        FiSInt X8;
};
struct Fmt8 {
        FiSInt X0_size;
        FiWord *X1_values;
};
struct Fmt9 {
        FiWord X0_found;
        FiWord X1_value;
};
struct Fmt10 {
        FiPtr X0_empty;
};
struct Fmt11 {
        FiClos X0__PLUS_;
        FiWord X1_sample;
        FiClos X2__LT__LT_;
        FiClos X3__EQ_;
        FiClos X4_set_BANG_;
        FiClos X5_apply;
        FiClos X6_new;
        FiWord X7_Rep;
        FiWord X8_B;
        FiClos X9__LT__LT_;
        FiClos X10_new;
        FiClos X11__PLUS_;
        FiClos X12_apply;
        FiClos X13_set_BANG_;
        FiClos X14_new;
        FiClos X15__EQ_;
        FiClos X16_apply;
        FiClos X17_new;
        FiClos X18_PackedRepSize;
        FiClos X19_PackedRecordGet;
        FiClos X20_PackedRecordSet;
        FiClos X21_PackedArraySet;
        FiClos X22_PackedArrayGet;
        FiClos X23_PackedArrayNew;
        FiSInt X24;
        FiWord X25_dom;
        FiWord X26_dom;
        FiWord X27_dom;
};
struct Fmt12 {
        FiWord X0_elemType;
        FiWord X1_m;
        FiWord X2_n;
};
struct Fmt13 {
        FiPtr X0_empty;
};
struct Fmt14 {
        FiClos X0_getter;
        FiBool X1_flag;
        FiClos X2_self;
};
struct Fmt15 {
        FiWord X0_BasicType;
        FiWord X1_Boolean;
        FiWord X2_SingleInteger;
        FiClos X3_Array;
        FiWord X4_TextWriter;
        FiClos X5_coerce;
        FiWord X6_print;
        FiWord X7;
        FiWord X8_dom;
        FiClos X9__LT__LT_;
        FiClos X10_new;
        FiClos X11__PLUS_;
        FiClos X12_set_BANG_;
        FiWord X13_dom;
        FiWord X14_dom;
        FiBool X15;
        FiBool X16;
        FiBool X17;
        FiBool X18;
        FiBool X19;
};
struct Fmt16 {
        FiWord X0_size;
        FiWord X1_nvalues;
        FiWord X2_values;
};
struct Fmt17 {
        FiClos X0_unflatten;
        FiClos X1_flatten;
        FiClos X2_convert;
        FiClos X3_convert;
        FiClos X4__LT__LT_;
        FiClos X5_bracket;
        FiClos X6_bracket;
        FiClos X7_generator;
        FiClos X8__TILDE__EQ_;
        FiClos X9__EQ_;
        FiClos X10_map;
        FiClos X11_map;
        FiClos X12_array;
        FiClos X13_array;
        FiWord X14_sample;
        FiClos X15_empty_QMARK_;
        FiClos X16__SHARP_;
        FiClos X17__SHARP_;
        FiClos X18_dispose_BANG_;
        FiClos X19_empty_BANG_;
        FiClos X20_extend_BANG_;
        FiClos X21_set_BANG_;
        FiClos X22_apply;
        FiClos X23_empty;
        FiClos X24_empty;
        FiClos X25_new;
        FiWord X26_Rep;
        FiWord X27__PCENT_;
        FiClos X28_new;
        FiClos X29_new;
        FiClos X30_set_BANG_;
        FiClos X31_apply;
        FiClos X32_resize_BANG_;
        FiClos X33__TILDE__EQ_;
        FiClos X34__LT__LT_;
        FiClos X35_PackedRepSize;
        FiClos X36_PackedRecordGet;
        FiClos X37_PackedRecordSet;
        FiClos X38_PackedArraySet;
        FiClos X39_PackedArrayGet;
        FiClos X40_PackedArrayNew;
        FiSInt X41;
        FiSInt X42;
        FiWord X43_dom;
        FiWord X44_dom;
        FiClos X45_flatten;
        FiClos X46_unflatten;
        FiClos X47__SHARP_;
};
struct Fmt18 {
        FiClos X0_PackedRepSize;
        FiClos X1_PackedRecordSet;
        FiClos X2_PackedRecordGet;
        FiClos X3_PackedArraySet;
        FiClos X4_PackedArrayGet;
        FiClos X5_PackedArrayNew;
        FiClos X6__SHARP_;
        FiClos X7_coerce;
        FiClos X8_resize_BANG_;
        FiClos X9_dispose_BANG_;
        FiClos X10_convert;
        FiClos X11_convert;
        FiClos X12_set_BANG_;
        FiClos X13_apply;
        FiClos X14_new;
        FiClos X15_new;
        FiWord X16_Rep;
        FiSInt X17;
        FiSInt X18;
        FiClos X19_PackedArrayNew;
        FiWord X20_dom;
        FiClos X21_PackedArrayGet;
        FiClos X22_PackedArraySet;
        FiClos X23__SHARP_;
};
struct Fmt19 {
        FiPtr X0_empty;
};
struct Fmt20 {
        FiPtr X0_empty;
};
struct Fmt21 {
        FiPtr X0_empty;
};
struct Fmt22 {
        FiPtr X0_empty;
};
struct Fmt23 {
        FiClos X0;
        FiClos X1;
        FiClos X2;
};
struct Fmt24 {
        FiPtr X0_empty;
};
static FiProg C0_matrix;
static void CF0_matrix(FiEnv e1);
static FiProg C1_MyRing;
static void CF1_MyRing(FiEnv e1, FiWord P0_self, FiWord P1_dom);
static FiProg C2_addLevel0;
static FiClos CF2_addLevel0(FiEnv e1, FiWord P0_domain);
static FiProg C3_addLevel1;
static FiWord CF3_addLevel1(FiEnv e1, FiWord P0_domain, FiWord P1_hashcode);
static FiProg C4_new;
static FiWord CF4_new(FiEnv e1);
static FiProg C5_coerce;
static FiWord CF5_coerce(FiEnv e1, FiWord P0_s);
static FiProg C6_coerce;
static FiWord CF6_coerce(FiEnv e1, FiWord P0_v);
static FiProg C7_set_BANG_;
static FiWord CF7_set_BANG_(FiEnv e1, FiWord P0_s);
static FiProg C8__PLUS_;
static FiWord CF8__PLUS_(FiEnv e1, FiWord P0_a, FiWord P1_b);
static FiProg C9__STAR_;
static FiWord CF9__STAR_(FiEnv e1, FiWord P0_a, FiWord P1_b);
static FiProg C10__LT__LT_;
static FiWord CF10__LT__LT_(FiEnv e1, FiWord P0_t, FiWord P1_r);
static FiProg C11_Matrix;
static FiWord CF11_Matrix(FiEnv e1, FiWord P0_elemType, FiWord P1_m,
        FiWord P2_n);
static FiProg C12_addLevel0;
static FiClos CF12_addLevel0(FiEnv e1, FiWord P0_domain);
static FiProg C13_addNameFn;
static FiWord CF13_addNameFn(FiEnv e1);
static FiProg C14_addLevel1;
static FiWord CF14_addLevel1(FiEnv e1, FiWord P0_domain, FiWord
        P1_hashcode);
static FiProg C15_new;
static FiWord CF15_new(FiEnv e1);
static FiProg C16_apply;
static FiWord CF16_apply(FiEnv e1, FiWord P0_a, FiWord P1_i, FiWord P2_j);
static FiProg C17_set_BANG_;
static FiWord CF17_set_BANG_(FiEnv e1, FiWord P0_vv, FiWord P1_i, FiWord
        P2_j, FiWord P3_e);
static FiProg C18__EQ_;
static FiWord CF18__EQ_(FiEnv e1, FiWord P0_a, FiWord P1_b);
static FiProg C19__LT__LT_;
static FiWord CF19__LT__LT_(FiEnv e1, FiWord P0_t, FiWord P1_r);
static FiProg C20__PLUS_;
static FiWord CF20__PLUS_(FiEnv e1, FiWord P0_a, FiWord P1_b);
static FiProg C21_PackedArrayNew;
static FiPtr CF21_PackedArrayNew(FiEnv e1, FiSInt P0_x0);
static FiProg C22_PackedArrayGet;
static FiWord CF22_PackedArrayGet(FiEnv e1, FiHInt *P0_x0, FiSInt P1_x1);
static FiProg C23_PackedArraySet;
static FiWord CF23_PackedArraySet(FiEnv e1, FiHInt *P0_x0, FiSInt P1_x1,
        FiWord P2_x2);
static FiProg C24_PackedRecordSet;
static FiWord CF24_PackedRecordSet(FiEnv e1, FiPtr P0_x0, FiWord P1_x1);
static FiProg C25_PackedRecordGet;
static FiWord CF25_PackedRecordGet(FiEnv e1, FiPtr P0_x0);
static FiProg C26_PackedRepSize;
static FiSInt CF26_PackedRepSize(FiEnv e1);
static FiProg C27_main;
static void CF27_main(FiEnv e1);
static FiProg C28_lazyFnGetter;
static FiClos CF28_lazyFnGetter(FiEnv e1, FiWord P0_init);
static FiProg C29_lazyGetter;
static FiWord CF29_lazyGetter(FiEnv e1, FiWord P0_a, FiWord P1_b, FiWord
        P2_c, FiWord P3_d);
static FiProg C30_lazyGetter2;
static void CF30_lazyGetter2(FiEnv e1);
static FiProg C31_array_MINUS_init;
static FiWord CF31_array_MINUS_init(FiEnv e1, FiSInt P0_idx);
static FiProg C32_textwrit_MINUS_init;
static FiWord CF32_textwrit_MINUS_init(FiEnv e1, FiSInt P0_idx);
static FiProg C33_axlcat_MINUS_init;
static FiWord CF33_axlcat_MINUS_init(FiEnv e1, FiSInt P0_idx);
static FiProg C34_boolean_MINUS_init;
static FiWord CF34_boolean_MINUS_init(FiEnv e1, FiSInt P0_idx);
static FiProg C35_sinteger_MINUS_init;
static FiWord CF35_sinteger_MINUS_init(FiEnv e1, FiSInt P0_idx);
extern FiClos G_1C18J_matrix;
static FiClos *pG_NQYQM_noOperation;
extern FiClos G_A8CY2_matrix__main__77882260;
extern FiClos G_8TVTP_matrix__Matrix__789582;
extern FiWord G_QRB64_matrix__MyInt__6853456;
extern FiWord G_F3DWK_matrix__MyRing__255446;
static FiClos *pG_XIPRL_runtime;
static FiClos *pG_JP87X_rtConstSIntFn;
static FiClos *pG_LD0B5_domainHash_BANG_;
static FiClos *pG_WXLY5_categoryAddExports;
static FiWord *pG_9VAL7_axlcat__BasicType__95;
static FiClos *pG_NOX7X_rtLazyCatFrInit;
static FiClos *pG_YXGL3_categoryAddParents;
static FiClos *pG_QRAZA_rtDelayedGetExport;
static FiClos *pG_MNZVJ_stdGetRetWord0;
static FiClos *pG_DLXW8_stdGetWordWordRetWord;
static FiClos *pG_Z2868_rtConstNameFn;
static FiClos *pG_GOVLL_categoryMake;
static FiClos *pG_CSVBL_domainAddNameFn_BANG_;
static FiClos *pG_XS55O_domainAddHash_BANG_;
static FiClos *pG_PA5R2_domainAddExports;
static FiClos *pG_IJHFC_domainMakeDispatch;
static FiClos *pG_V9SO_domainAddDefaults;
static FiWord *pG_JWPLO_sinteger__SingleInteg;
static FiClos *pG_KK8CX_rtLazyDomFrInit;
static FiClos *pG_LKD03_domainAddParents;
static FiClos *pG_BEY7_domainMakeDummy;
static FiClos *pG_AK1EB_domainFill_BANG_;
static FiClos *pG_4NZQI_lazyGetExport_BANG_;
static FiClos *pG_R3D1K_lazyForceImport;
static FiWord *pG_NBIQ7_textwrit__TextWriter;
static FiClos *pG_6L1ZC_domainMake;
static FiClos *pG_KAC1B_rtCacheExplicitMake;
static FiClos *pG_759EG_rtCacheCheck;
static FiClos *pG_FZP76_namePartFrString;
static FiClos *pG_GJ87F_domainName;
static FiClos *pG_7BRRS_namePartFrOther;
static FiClos *pG_9TG1R_namePartConcat;
static FiClos *pG_H33WF_array__Array__0679756;
static FiClos *pG_RSHLY_rtDelayedInit_BANG_;
static FiClos *pG_ZZZKG_stdGetWordRetWord0;
static FiClos *pG_B830W_stdGetWordWordWordRet;
static FiWord *pG_M9OLC_boolean__Boolean__494;
static FiClos *pG_PV28S_rtCacheAdd;
static FiClos *pG_822GM_rtAddStrings;
static FiClos *pG_AL27T_array;
static FiClos *pG_EC2QI_textwrit;
static FiClos *pG_DZOJS_axlcat;
static FiClos *pG_P63GL_boolean;
static FiClos *pG_HAQ5R_sinteger;
extern FiWord formatSInt();



static void
CF0_matrix(FiEnv e1)
{
        FiWord *T6, T10;
        FiSInt *T5, T9;
        PFmt5 T7, T8;
        FiClos T0, T1, T2, T3, T4;
        PFmt15 l0;
        FiEnv e0;
        l0 = fi0New(struct Fmt15 , CENSUS_EnvLevel);
        e0 = fiEnvPush(l0, e1);
        fiCCall0(void, (*pG_XIPRL_runtime));
        G_1C18J_matrix = (FiClos) (*pG_NQYQM_noOperation);
        T0 = fiClosMake(e0, C33_axlcat_MINUS_init);
        T1 = fiClosMake(e0, C35_sinteger_MINUS_init);
        T2 = fiClosMake(e0, C32_textwrit_MINUS_init);
        G_QRB64_matrix__MyInt__6853456 = fiCCall1(FiWord, (*
                pG_6L1ZC_domainMake), fiClosMake(e0, C2_addLevel0));
        T3 = fiClosMake(e0, C31_array_MINUS_init);
        T4 = fiClosMake(e0, C34_boolean_MINUS_init);
        l0->X7 = (FiWord) fiNil;
        G_8TVTP_matrix__Matrix__789582 = fiClosMake(e0, C11_Matrix);
        fiProgHashCode(((FiClos) G_8TVTP_matrix__Matrix__789582)->prog) =
                481767915L;
        G_A8CY2_matrix__main__77882260 = fiClosMake(e0, C27_main);
        l0->X15 = 0L;
        l0->X16 = 0L;
        l0->X17 = 0L;
        l0->X18 = 0L;
        l0->X19 = 0L;
        fiARRNEW_Word(T5, FiSInt*, 17L);
        fiARRNEW_Word(T6, FiWord*, 17L);
        T5[0L] = 939800302L;
        T6[0L] = (FiWord) "PackedRecordGet";
        T5[1L] = 200102L;
        T6[1L] = (FiWord) "=";
        T5[2L] = 306472243L;
        T6[2L] = (FiWord) "apply";
        T5[3L] = 770345191L;
        T6[3L] = (FiWord) "coerce";
        T5[4L] = 940586746L;
        T6[4L] = (FiWord) "PackedRecordSet";
        T5[5L] = 756527409L;
        T6[5L] = (FiWord) "PackedArraySet";
        T5[6L] = 757252399L;
        T6[6L] = (FiWord) "PackedArrayNew";
        T5[7L] = 316169058L;
        T6[7L] = (FiWord) "Rep";
        T5[8L] = 200083L;
        T6[8L] = (FiWord) "*";
        T5[9L] = 200084L;
        T6[9L] = (FiWord) "+";
        T5[10L] = 55906833L;
        T6[10L] = (FiWord) "set!";
        T5[11L] = 920971615L;
        T6[11L] = (FiWord) "PackedRepSize";
        T5[12L] = 767785253L;
        T6[12L] = (FiWord) "PackedArrayGet";
        T5[13L] = 255806968L;
        T6[13L] = (FiWord) "sample";
        T5[14L] = 318528389L;
        T6[14L] = (FiWord) "new";
        T5[15L] = 200107L;
        T6[15L] = (FiWord) "B";
        T5[16L] = 51492426L;
        T6[16L] = (FiWord) "<<";
        T7 = fi0RecNew(struct Fmt5 , CENSUS_Rec);
        T7->X0_size = 17L;
        T7->X1_nsize = 17L;
        T7->X2_values = (FiWord) T5;
        T8 = fi0RecNew(struct Fmt5 , CENSUS_Rec);
        T8->X0_size = 17L;
        T8->X1_nsize = 17L;
        T8->X2_values = (FiWord) T6;
        fiCCall2(void, (*pG_822GM_rtAddStrings), (FiWord) T7, (FiWord) T8);
        l0->X0_BasicType = fiCCall2(FiWord, (*pG_NOX7X_rtLazyCatFrInit),
                T0, 0L);
        T9 = fiCCall1(FiSInt, (*pG_JP87X_rtConstSIntFn), 787463884L);
        T10 = fiCCall1(FiWord, (*pG_Z2868_rtConstNameFn), "MyRing");
        G_F3DWK_matrix__MyRing__255446 = (FiWord) fiCCall3(FiClos, (*
                pG_GOVLL_categoryMake), fiClosMake(e0, C1_MyRing), T9, T10);
        l0->X2_SingleInteger = fiCCall2(FiWord, (*
                pG_KK8CX_rtLazyDomFrInit), T1, 0L);
        l0->X4_TextWriter = fiCCall2(FiWord, (*pG_KK8CX_rtLazyDomFrInit),
                T2, 0L);
        T10 = fiCCall2(FiWord, (*pG_RSHLY_rtDelayedInit_BANG_), T3, 0L);
        l0->X3_Array = fiCCall1(FiClos, (*pG_ZZZKG_stdGetWordRetWord0),
                T10);
        l0->X1_Boolean = fiCCall2(FiWord, (*pG_KK8CX_rtLazyDomFrInit),
                T4, 0L);
        l0->X8_dom = l0->X1_Boolean;
        T10 = fiCCall3(FiWord, (*pG_QRAZA_rtDelayedGetExport), l0->
                X8_dom, 770345191L, 243397506L);
        l0->X5_coerce = fiCCall1(FiClos, (*pG_ZZZKG_stdGetWordRetWord0),
                T10);
        l0->X13_dom = fiCCall3(FiWord, G_8TVTP_matrix__Matrix__789582,
                G_QRB64_matrix__MyInt__6853456, (FiWord) 2L, (FiWord) 2L);
        fiEnvEnsure(((FiClos) G_8TVTP_matrix__Matrix__789582)->env);
        T10 = fiCCall3(FiWord, (*pG_QRAZA_rtDelayedGetExport), l0->
                X13_dom, 318528389L, 1024864519L);
        l0->X10_new = fiCCall1(FiClos, (*pG_MNZVJ_stdGetRetWord0), T10);
        l0->X14_dom = l0->X4_TextWriter;
        l0->X6_print = fiCCall3(FiWord, (*pG_4NZQI_lazyGetExport_BANG_),
                l0->X14_dom, 828947258L, 182752316L);
        fiEnvEnsure(((FiClos) G_8TVTP_matrix__Matrix__789582)->env);
        l0->X12_set_BANG_ = CF28_lazyFnGetter(e0, (FiWord) fiCCall3(
                FiWord, (*pG_QRAZA_rtDelayedGetExport), l0->X13_dom,
                55906833L, 682057598L));
        fiEnvEnsure(((FiClos) G_8TVTP_matrix__Matrix__789582)->env);
        fiEnvEnsure(((FiClos) G_8TVTP_matrix__Matrix__789582)->env);
        fiEnvEnsure(((FiClos) G_8TVTP_matrix__Matrix__789582)->env);
        T10 = fiCCall3(FiWord, (*pG_QRAZA_rtDelayedGetExport), l0->
                X13_dom, 200084L, 112509866L);
        l0->X11__PLUS_ = fiCCall1(FiClos, (*
                pG_DLXW8_stdGetWordWordRetWord), T10);
        fiEnvEnsure(((FiClos) G_8TVTP_matrix__Matrix__789582)->env);
        T10 = fiCCall3(FiWord, (*pG_QRAZA_rtDelayedGetExport), l0->
                X13_dom, 51492426L, 605343420L);
        l0->X9__LT__LT_ = fiCCall1(FiClos, (*
                pG_DLXW8_stdGetWordWordRetWord), T10);
        CF27_main(e0);
        return ;
}

static struct _FiProg  tmp0_matrix = {
        (FiFun) CF0_matrix,
        0L,
        0L,
        0L
};


static void
CF1_MyRing(FiEnv e1, FiWord P0_self, FiWord P1_dom)
{
        PFmt5 T3, T4, T5, T7;
        FiWord *T0, *T6;
        FiSInt *T1, *T2;
        PFmt15 l1;
        l1 = (PFmt15) fiEnvLevel(e1);
        fiARRNEW_SInt(T0, FiWord*, 1L);
        fiARRNEW_SInt(T1, FiSInt*, 1L);
        fiARRNEW_Word(T2, FiSInt*, 1L);
        fiARRNEW_Word(T6, FiWord*, 1L);
        T3 = fi0RecNew(struct Fmt5 , CENSUS_Rec);
        T3->X0_size = 1L;
        T3->X1_nsize = 1L;
        T3->X2_values = (FiWord) T0;
        T4 = fi0RecNew(struct Fmt5 , CENSUS_Rec);
        T4->X0_size = 1L;
        T4->X1_nsize = 1L;
        T4->X2_values = (FiWord) T1;
        T5 = fi0RecNew(struct Fmt5 , CENSUS_Rec);
        T5->X0_size = 1L;
        T5->X1_nsize = 1L;
        T5->X2_values = (FiWord) T2;
        fiCCall4(void, (*pG_WXLY5_categoryAddExports), P0_self, T3, T4, T5);
        ((FiSInt*) T0)[0L] = 51482908L;
        T1[0L] = 787463884L;
        ((FiWord*) T2)[0L] = P1_dom;
        T6[0L] = l1->X0_BasicType;
        T7 = fi0RecNew(struct Fmt5 , CENSUS_Rec);
        T7->X0_size = 1L;
        T7->X1_nsize = 1L;
        T7->X2_values = (FiWord) T6;
        fiCCall3(FiWord, (*pG_YXGL3_categoryAddParents), P0_self, T7, P1_dom);
        return ;
}

static struct _FiProg  tmp1_MyRing = {
        (FiFun) CF1_MyRing,
        0L,
        0L,
        0L
};


static FiClos
CF2_addLevel0(FiEnv e1, FiWord P0_domain)
{
        FiWord T0;
        FiEnv e0;
        PFmt15 l1;
        e0 = fiEnvPush(fiNil, e1);
        l1 = (PFmt15) fiEnvLevel(e1);
        T0 = fiCCall1(FiWord, (*pG_Z2868_rtConstNameFn), "MyInt");
        fiCCall2(FiWord, (*pG_CSVBL_domainAddNameFn_BANG_), P0_domain, T0);
        fiCCall2(FiWord, (*pG_XS55O_domainAddHash_BANG_), P0_domain,
                245829630L);
        return fiClosMake(e0, C3_addLevel1);
}

static struct _FiProg  tmp2_addLevel0 = {
        (FiFun) CF2_addLevel0,
        0L,
        0L,
        0L
};


static FiWord
CF3_addLevel1(FiEnv e1, FiWord P0_domain, FiWord P1_hashcode)
{
        FiSInt *T1, *T2, T10, T11, T12, T13, T14, T15, T16;
        FiWord *T0, T6, *T7, T9;
        PFmt5 T3, T4, T5, T8;
        PFmt7 l0;
        FiEnv e2, e0;
        PFmt15 l2;
        l0 = fi0New(struct Fmt7 , CENSUS_EnvLevel);
        e0 = fiEnvPush(l0, e1);
        e2 = fiEnvNext(e1);
        l2 = (PFmt15) fiEnvLevel(e2);
        fiARRNEW_SInt(T0, FiWord*, 8L);
        fiARRNEW_SInt(T1, FiSInt*, 8L);
        fiARRNEW_Word(T2, FiSInt*, 8L);
        T6 = fiCCall1(FiWord, (*pG_IJHFC_domainMakeDispatch), P0_domain);
        l0->X8 = (FiSInt) P1_hashcode;
        l0->X6_new = fiClosMake(e0, C4_new);
        l0->X4_coerce = fiClosMake(e0, C5_coerce);
        l0->X5_coerce = fiClosMake(e0, C6_coerce);
        l0->X3_set_BANG_ = fiClosMake(e0, C7_set_BANG_);
        l0->X2__PLUS_ = fiClosMake(e0, C8__PLUS_);
        l0->X1__STAR_ = fiClosMake(e0, C9__STAR_);
        l0->X0__LT__LT_ = fiClosMake(e0, C10__LT__LT_);
        T14 = (l0->X8 + 74075968L) % 1073741789L;
        T10 = (l0->X8 + 974156096L) % 1073741789L;
        T15 = T14 & 16777215L;
        T16 = T15 << 6L;
        T11 = (142471813L + T16) % 1073741789L;
        T12 = (l0->X8 + (((l0->X8 + T16) %
                1073741789L & 16777215L) << 6L)) % 1073741789L;
        T13 = (182752316L + (((l0->X8 + 330882816L) %
                1073741789L & 16777215L) << 6L)) % 1073741789L;
        T3 = fi0RecNew(struct Fmt5 , CENSUS_Rec);
        T3->X0_size = 8L;
        T3->X1_nsize = 8L;
        T3->X2_values = (FiWord) T0;
        T4 = fi0RecNew(struct Fmt5 , CENSUS_Rec);
        T4->X0_size = 8L;
        T4->X1_nsize = 8L;
        T4->X2_values = (FiWord) T1;
        T5 = fi0RecNew(struct Fmt5 , CENSUS_Rec);
        T5->X0_size = 8L;
        T5->X1_nsize = 8L;
        T5->X2_values = (FiWord) T2;
        fiCCall4(void, (*pG_PA5R2_domainAddExports), P0_domain, T3, T4, T5);
        fiCCall3(FiWord, (*pG_V9SO_domainAddDefaults), P0_domain,
                G_F3DWK_matrix__MyRing__255446, T6);
        fiARRNEW_Word(T7, FiWord*, 1L);
        T7[0L] = l2->X2_SingleInteger;
        T8 = fi0RecNew(struct Fmt5 , CENSUS_Rec);
        T8->X0_size = 1L;
        T8->X1_nsize = 1L;
        T8->X2_values = (FiWord) T7;
        fiCCall3(FiWord, (*pG_LKD03_domainAddParents), P0_domain, T8, T6);
        l0->X7_Rep = fiCCall0(FiWord, (*pG_BEY7_domainMakeDummy));
        T9 = l0->X7_Rep;
        l0->X7_Rep = l2->X2_SingleInteger;
        fiCCall2(void, (*pG_AK1EB_domainFill_BANG_), T9, l0->X7_Rep);
        l0->X7_Rep = T9;
        ((FiSInt*) T0)[0L] = 316169058L;
        T1[0L] = 850925108L;
        ((FiWord*) T2)[0L] = l0->X7_Rep;
        ((FiSInt*) T0)[1L] = 318528389L;
        T1[1L] = T14;
        ((FiWord*) T2)[1L] = (FiWord) l0->X6_new;
        ((FiSInt*) T0)[2L] = 770345191L;
        T1[2L] = T10;
        ((FiWord*) T2)[2L] = (FiWord) l0->X4_coerce;
        ((FiSInt*) T0)[3L] = 770345191L;
        T1[3L] = T11;
        ((FiWord*) T2)[3L] = (FiWord) l0->X5_coerce;
        ((FiSInt*) T0)[4L] = 55906833L;
        T1[4L] = T10;
        ((FiWord*) T2)[4L] = (FiWord) l0->X3_set_BANG_;
        ((FiSInt*) T0)[5L] = 200084L;
        T1[5L] = T12;
        ((FiWord*) T2)[5L] = (FiWord) l0->X2__PLUS_;
        ((FiSInt*) T0)[6L] = 200083L;
        T1[6L] = T12;
        ((FiWord*) T2)[6L] = (FiWord) l0->X1__STAR_;
        ((FiSInt*) T0)[7L] = 51492426L;
        T1[7L] = T13;
        ((FiWord*) T2)[7L] = (FiWord) l0->X0__LT__LT_;
        return P0_domain;
}

static struct _FiProg  tmp3_addLevel1 = {
        (FiFun) CF3_addLevel1,
        0L,
        0L,
        0L
};


static FiWord
CF4_new(FiEnv e1)
{
        return (FiWord) 0L;
}

static struct _FiProg  tmp4_new = {
        (FiFun) CF4_new,
        0L,
        0L,
        0L
};


static FiWord
CF5_coerce(FiEnv e1, FiWord P0_s)
{
        return P0_s;
}

static struct _FiProg  tmp5_coerce = {
        (FiFun) CF5_coerce,
        0L,
        0L,
        0L
};


static FiWord
CF6_coerce(FiEnv e1, FiWord P0_v)
{
        return P0_v;
}

static struct _FiProg  tmp6_coerce = {
        (FiFun) CF6_coerce,
        0L,
        0L,
        0L
};


static FiWord
CF7_set_BANG_(FiEnv e1, FiWord P0_s)
{
        return P0_s;
}

static struct _FiProg  tmp7_set_BANG_ = {
        (FiFun) CF7_set_BANG_,
        0L,
        0L,
        0L
};


static FiWord
CF8__PLUS_(FiEnv e1, FiWord P0_a, FiWord P1_b)
{
        return (FiWord) ((FiSInt) P0_a + (FiSInt) P1_b);
}

static struct _FiProg  tmp8__PLUS_ = {
        (FiFun) CF8__PLUS_,
        0L,
        0L,
        0L
};


static FiWord
CF9__STAR_(FiEnv e1, FiWord P0_a, FiWord P1_b)
{
        return (FiWord) ((FiSInt) P0_a * (FiSInt) P1_b);
}

static struct _FiProg  tmp9__STAR_ = {
        (FiFun) CF9__STAR_,
        0L,
        0L,
        0L
};


static FiWord
CF10__LT__LT_(FiEnv e1, FiWord P0_t, FiWord P1_r)
{
        FiWord T3;
        FiClos T0, T1, T2;
        T3 = formatSInt((FiSInt) P1_r);
        ((void(*)(FiEnv , FiClos* , FiClos* , FiClos* )) fiRawCProg((
                FiClos) P0_t))(((FiClos) P0_t)->env, &T0, &T1, &T2);
        fiCCall3(FiWord, T1, T3, (FiWord) 1L, (FiWord) 0L);
        return P0_t;
}

static struct _FiProg  tmp10__LT__LT_ = {
        (FiFun) CF10__LT__LT_,
        0L,
        0L,
        0L
};


static FiWord
CF11_Matrix(FiEnv e1, FiWord P0_elemType, FiWord P1_m, FiWord P2_n)
{
        FiBool T4;
        FiWord *T0, T2, T3;
        PFmt8 T1;
        PFmt12 l0;
        FiEnv e0;
        PFmt15 l1;
        l0 = fi0New(struct Fmt12 , CENSUS_EnvLevel);
        e0 = fiEnvPush(l0, e1);
        l1 = (PFmt15) fiEnvLevel(e1);
        l0->X0_elemType = P0_elemType;
        l0->X1_m = P1_m;
        l0->X2_n = P2_n;
        fiARRNEW_Word(T0, FiWord*, 3L);
        T1 = fi0RecNew(struct Fmt8 , CENSUS_Rec);
        T1->X0_size = 3L;
        T1->X1_values = (FiWord*) T0;
        fiPTR_IS_NIL(T4, FiBool, (FiPtr) l1->X7);
        if (T4) goto L3;
L1:     T0[0L] = l0->X0_elemType;
        T0[1L] = l0->X1_m;
        T0[2L] = l0->X2_n;
        ((FiWord(*)(FiEnv , FiWord , FiWord , FiWord* , FiWord* ))
                fiRawCProg((*pG_759EG_rtCacheCheck)))(((*
                pG_759EG_rtCacheCheck))->env, (FiWord) l1->X7, (FiWord) (
                FiWord) T1, &T2, &T3);
        if (T3) goto L0;
        T2 = fiCCall1(FiWord, (*pG_6L1ZC_domainMake), fiClosMake(e0,
                C12_addLevel0));
        T2 = fiCCall3(FiWord, (*pG_PV28S_rtCacheAdd), l1->X7, (FiWord)
                T1, T2);
L0:     return T2;
L3:     l1->X7 = fiCCall1(FiWord, (*pG_KAC1B_rtCacheExplicitMake), 15L);
        goto L1;
}

static struct _FiProg  tmp11_Matrix = {
        (FiFun) CF11_Matrix,
        0L,
        0L,
        0L
};


static FiClos
CF12_addLevel0(FiEnv e1, FiWord P0_domain)
{
        FiSInt T0;
        FiEnv e2, e0;
        PFmt12 l1;
        PFmt15 l2;
        e0 = fiEnvPush(fiNil, e1);
        l1 = (PFmt12) fiEnvLevel(e1);
        e2 = fiEnvNext(e1);
        l2 = (PFmt15) fiEnvLevel(e2);
        fiCCall2(FiWord, (*pG_CSVBL_domainAddNameFn_BANG_), P0_domain,
                fiClosMake(e0, C13_addNameFn));
        T0 = fiCCall1(FiSInt, (*pG_LD0B5_domainHash_BANG_), l1->
                X0_elemType);
        fiCCall2(FiWord, (*pG_XS55O_domainAddHash_BANG_), P0_domain, (
                7L + (((7L + (((T0 + 768375488L) %
                1073741789L & 16777215L) << 6L)) % 1073741789L & 16777215L) <<
                6L)) % 1073741789L);
        return fiClosMake(e0, C14_addLevel1);
}

static struct _FiProg  tmp12_addLevel0 = {
        (FiFun) CF12_addLevel0,
        0L,
        0L,
        0L
};


static FiWord
CF13_addNameFn(FiEnv e1)
{
        PFmt8 T1;
        FiWord *T0;
        PFmt12 l2;
        FiEnv e2;
        e2 = fiEnvNext(e1);
        l2 = (PFmt12) fiEnvLevel(e2);
        fiARRNEW_Word(T0, FiWord*, 4L);
        T0[0L] = fiCCall1(FiWord, (*pG_FZP76_namePartFrString), "Matrix");
        T0[1L] = fiCCall1(FiWord, (*pG_GJ87F_domainName), l2->
                X0_elemType);
        T0[2L] = fiCCall1(FiWord, (*pG_7BRRS_namePartFrOther), l2->X1_m);
        T0[3L] = fiCCall1(FiWord, (*pG_7BRRS_namePartFrOther), l2->X2_n);
        T1 = fi0RecNew(struct Fmt8 , CENSUS_Rec);
        T1->X0_size = 4L;
        T1->X1_values = (FiWord*) T0;
        return fiCCall2(FiWord, (*pG_9TG1R_namePartConcat), 0L, T1);
}

static struct _FiProg  tmp13_addNameFn = {
        (FiFun) CF13_addNameFn,
        0L,
        0L,
        0L
};


static FiWord
CF14_addLevel1(FiEnv e1, FiWord P0_domain, FiWord P1_hashcode)
{
        FiSInt *T1, *T2, T9, T10, T11, T12, T13, T14, T15, T16, T17,
                T18, T19, T20, T21, T22, T29, T30, T31, T32, T33,
                T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
                T44, T45, T46, T47, T48, T49, T50, T51, T52, T53,
                T54, T56;
        FiWord *T0, T6, T7, T8, T25, T26, T28, T55;
        FiEnv e3, e2, e0, T23, T27;
        PFmt16 T24;
        PFmt5 T3, T4, T5;
        PFmt11 l0;
        PFmt12 l2;
        PFmt15 l3;
        l0 = fi0New(struct Fmt11 , CENSUS_EnvLevel);
        e0 = fiEnvPush(l0, e1);
        e2 = fiEnvNext(e1);
        l2 = (PFmt12) fiEnvLevel(e2);
        e3 = fiEnvNext(e2);
        l3 = (PFmt15) fiEnvLevel(e3);
        fiARRNEW_SInt(T0, FiWord*, 15L);
        fiARRNEW_SInt(T1, FiSInt*, 15L);
        fiARRNEW_Word(T2, FiSInt*, 15L);
        T6 = fiCCall1(FiWord, (*pG_IJHFC_domainMakeDispatch), P0_domain);
        l0->X24 = (FiSInt) P1_hashcode;
        l0->X6_new = fiClosMake(e0, C15_new);
        l0->X5_apply = fiClosMake(e0, C16_apply);
        l0->X4_set_BANG_ = fiClosMake(e0, C17_set_BANG_);
        l0->X3__EQ_ = fiClosMake(e0, C18__EQ_);
        l0->X2__LT__LT_ = fiClosMake(e0, C19__LT__LT_);
        l0->X0__PLUS_ = fiClosMake(e0, C20__PLUS_);
        T22 = fiCCall1(FiSInt, (*pG_LD0B5_domainHash_BANG_), l2->
                X0_elemType);
        T42 = (T22 + 74075968L) % 1073741789L;
        fiEnvEnsure(l3->X3_Array->env);
        T31 = (T22 + 1020592896L) % 1073741789L;
        T9 = (T31 + (((T22 + 974156096L) % 1073741789L &
                16777215L) << 6L)) % 1073741789L;
        T32 = (l0->X24 + 74075968L) % 1073741789L;
        fiEnvEnsure(l3->X3_Array->env);
        T48 = (T31 + 74075968L) % 1073741789L;
        T49 = T48 & 16777215L;
        T50 = T49 << 6L;
        T51 = (142471813L + T50) % 1073741789L;
        T52 = T51 & 16777215L;
        T53 = T52 << 6L;
        T54 = (T22 + T53) % 1073741789L;
        T33 = T32 & 16777215L;
        T34 = T33 << 6L;
        T35 = (142471813L + T34) % 1073741789L;
        T36 = T35 & 16777215L;
        T37 = T36 << 6L;
        T38 = (142471813L + T37) % 1073741789L;
        T39 = T38 & 16777215L;
        T40 = T39 << 6L;
        T41 = (T22 + T40) % 1073741789L;
        fiEnvEnsure(l3->X3_Array->env);
        T12 = (T22 + ((T54 & 16777215L) << 6L)) % 1073741789L;
        T13 = (T22 + ((T41 & 16777215L) << 6L)) % 1073741789L;
        T43 = (l0->X24 + T34) % 1073741789L;
        T44 = T43 & 16777215L;
        T45 = T44 << 6L;
        T16 = (740244383L + T45) % 1073741789L;
        T17 = (182752316L + (((T22 + 330882816L) %
                1073741789L & 16777215L) << 6L)) % 1073741789L;
        T18 = (182752316L + (((l0->X24 + 330882816L) %
                1073741789L & 16777215L) << 6L)) % 1073741789L;
        T19 = (T22 + (((T22 + ((T42 & 16777215L) <<
                6L)) % 1073741789L & 16777215L) << 6L)) % 1073741789L;
        T20 = (l0->X24 + T45) % 1073741789L;
        T21 = l0->X24;
        T3 = fi0RecNew(struct Fmt5 , CENSUS_Rec);
        T3->X0_size = 15L;
        T3->X1_nsize = 15L;
        T3->X2_values = (FiWord) T0;
        T4 = fi0RecNew(struct Fmt5 , CENSUS_Rec);
        T4->X0_size = 15L;
        T4->X1_nsize = 15L;
        T4->X2_values = (FiWord) T1;
        T5 = fi0RecNew(struct Fmt5 , CENSUS_Rec);
        T5->X0_size = 15L;
        T5->X1_nsize = 15L;
        T5->X2_values = (FiWord) T2;
        fiCCall4(void, (*pG_PA5R2_domainAddExports), P0_domain, T3, T4, T5);
        fiCCall3(FiWord, (*pG_V9SO_domainAddDefaults), P0_domain,
                G_F3DWK_matrix__MyRing__255446, T6);
        l0->X8_B = fiCCall0(FiWord, (*pG_BEY7_domainMakeDummy));
        T7 = l0->X8_B;
        l0->X7_Rep = fiCCall0(FiWord, (*pG_BEY7_domainMakeDummy));
        T8 = l0->X7_Rep;
        l0->X7_Rep = fiCCall1(FiWord, l3->X3_Array, l0->X8_B);
        l0->X8_B = fiCCall1(FiWord, l3->X3_Array, l2->X0_elemType);
        fiCCall2(void, (*pG_AK1EB_domainFill_BANG_), T7, l0->X8_B);
        l0->X8_B = T7;
        fiCCall2(void, (*pG_AK1EB_domainFill_BANG_), T8, l0->X7_Rep);
        l0->X7_Rep = T8;
        ((FiSInt*) T0)[0L] = 200107L;
        T1[0L] = 0L;
        ((FiWord*) T2)[0L] = l0->X8_B;
        ((FiSInt*) T0)[1L] = 316169058L;
        T1[1L] = 0L;
        ((FiWord*) T2)[1L] = l0->X7_Rep;
        l0->X25_dom = l2->X0_elemType;
        T55 = fiCCall3(FiWord, (*pG_QRAZA_rtDelayedGetExport), l0->
                X25_dom, 318528389L, T42);
        l0->X10_new = fiCCall1(FiClos, (*pG_MNZVJ_stdGetRetWord0), T55);
        l0->X26_dom = fiCCall1(FiWord, l3->X3_Array, l2->X0_elemType);
        T55 = fiCCall3(FiWord, (*pG_QRAZA_rtDelayedGetExport), l0->
                X26_dom, 318528389L, T9);
        l0->X14_new = fiCCall1(FiClos, (*pG_DLXW8_stdGetWordWordRetWord),
                T55);
        l0->X27_dom = fiCCall1(FiWord, l3->X3_Array, l0->X8_B);
        fiEnvEnsure(l3->X3_Array->env);
        T10 = (fiCCall1(FiSInt, (*pG_LD0B5_domainHash_BANG_), l0->
                X8_B) + 1020592896L) % 1073741789L;
        T56 = fiCCall1(FiSInt, (*pG_LD0B5_domainHash_BANG_), l0->X8_B);
        T55 = fiCCall3(FiWord, (*pG_QRAZA_rtDelayedGetExport), l0->
                X27_dom, 318528389L, (T10 + (((T56 +
                974156096L) % 1073741789L & 16777215L) << 6L)) % 1073741789L);
        l0->X17_new = fiCCall1(FiClos, (*pG_DLXW8_stdGetWordWordRetWord),
                T55);
        ((FiSInt*) T0)[2L] = 318528389L;
        T1[2L] = T32;
        ((FiWord*) T2)[2L] = (FiWord) l0->X6_new;
        T55 = fiCCall3(FiWord, (*pG_QRAZA_rtDelayedGetExport), l0->
                X26_dom, 306472243L, T54);
        l0->X12_apply = fiCCall1(FiClos, (*
                pG_DLXW8_stdGetWordWordRetWord), T55);
        fiEnvEnsure(l3->X3_Array->env);
        T11 = (fiCCall1(FiSInt, (*pG_LD0B5_domainHash_BANG_), l0->
                X8_B) + 1020592896L) % 1073741789L;
        T56 = fiCCall1(FiSInt, (*pG_LD0B5_domainHash_BANG_), l0->X8_B);
        T55 = fiCCall3(FiWord, (*pG_QRAZA_rtDelayedGetExport), l0->
                X27_dom, 306472243L, (T56 + (((142471813L + (((
                T11 + 74075968L) % 1073741789L & 16777215L) << 6L)) %
                1073741789L & 16777215L) << 6L)) % 1073741789L);
        l0->X16_apply = fiCCall1(FiClos, (*
                pG_DLXW8_stdGetWordWordRetWord), T55);
        ((FiSInt*) T0)[3L] = 306472243L;
        T1[3L] = T41;
        ((FiWord*) T2)[3L] = (FiWord) l0->X5_apply;
        T55 = fiCCall3(FiWord, (*pG_QRAZA_rtDelayedGetExport), l0->
                X26_dom, 55906833L, T12);
        l0->X13_set_BANG_ = fiCCall1(FiClos, (*
                pG_B830W_stdGetWordWordWordRet), T55);
        ((FiSInt*) T0)[4L] = 55906833L;
        T1[4L] = T13;
        ((FiWord*) T2)[4L] = (FiWord) l0->X4_set_BANG_;
        fiEnvEnsure(l3->X3_Array->env);
        T14 = (fiCCall1(FiSInt, (*pG_LD0B5_domainHash_BANG_), l0->
                X8_B) + 1020592896L) % 1073741789L;
        fiEnvEnsure(l3->X3_Array->env);
        T15 = (fiCCall1(FiSInt, (*pG_LD0B5_domainHash_BANG_), l0->
                X8_B) + 1020592896L) % 1073741789L;
        T55 = fiCCall3(FiWord, (*pG_QRAZA_rtDelayedGetExport), l0->
                X27_dom, 200102L, (740244383L + (((T15 + (((
                T14 + 74075968L) % 1073741789L & 16777215L) << 6L)) %
                1073741789L & 16777215L) << 6L)) % 1073741789L);
        l0->X15__EQ_ = fiCCall1(FiClos, (*pG_DLXW8_stdGetWordWordRetWord),
                T55);
        ((FiSInt*) T0)[5L] = 200102L;
        T1[5L] = T16;
        ((FiWord*) T2)[5L] = (FiWord) l0->X3__EQ_;
        T55 = fiCCall3(FiWord, (*pG_QRAZA_rtDelayedGetExport), l0->
                X25_dom, 51492426L, T17);
        l0->X9__LT__LT_ = fiCCall1(FiClos, (*
                pG_DLXW8_stdGetWordWordRetWord), T55);
        ((FiSInt*) T0)[6L] = 51492426L;
        T1[6L] = T18;
        ((FiWord*) T2)[6L] = (FiWord) l0->X2__LT__LT_;
        T55 = fiCCall3(FiWord, (*pG_QRAZA_rtDelayedGetExport), l0->
                X25_dom, 200084L, T19);
        l0->X11__PLUS_ = fiCCall1(FiClos, (*
                pG_DLXW8_stdGetWordWordRetWord), T55);
        ((FiSInt*) T0)[7L] = 200084L;
        T1[7L] = T20;
        ((FiWord*) T2)[7L] = (FiWord) l0->X0__PLUS_;
        fiEnvEnsure(l0->X17_new->env);
        T23 = l0->X17_new->env;
        T25 = l2->X1_m;
        T55 = fiCCall0(FiWord, l0->X10_new);
        T26 = fiCCall2(FiWord, l0->X14_new, l2->X2_n, T55);
        T24 = fi0RecNew(struct Fmt16 , CENSUS_Rec);
        T24->X0_size = T25;
        T24->X1_nvalues = T25;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T23))->X29_new->env);
        T27 = ((PFmt17) fiEnvLevel0(T23))->X29_new->env;
        T28 = (FiWord) fiCCall1(FiPtr, ((PFmt18) fiEnvLevel0(T27))->
                X19_PackedArrayNew, (FiSInt) T25);
        T30 = 1L;
L0:     if (T30 <= (FiSInt) T25) goto L1;
        T24->X2_values = T28;
        l0->X1_sample = (FiWord) T24;
        ((FiSInt*) T0)[8L] = 255806968L;
        T1[8L] = T21;
        ((FiWord*) T2)[8L] = l0->X1_sample;
        l0->X23_PackedArrayNew = fiClosMake(e0, C21_PackedArrayNew);
        ((FiSInt*) T0)[9L] = 757252399L;
        T1[9L] = 161814275L;
        ((FiWord*) T2)[9L] = (FiWord) l0->X23_PackedArrayNew;
        l0->X22_PackedArrayGet = fiClosMake(e0, C22_PackedArrayGet);
        ((FiSInt*) T0)[10L] = 767785253L;
        T46 = (l0->X24 + 893651072L) % 1073741789L;
        T1[10L] = T46;
        ((FiWord*) T2)[10L] = (FiWord) l0->X22_PackedArrayGet;
        l0->X21_PackedArraySet = fiClosMake(e0, C23_PackedArraySet);
        ((FiSInt*) T0)[11L] = 756527409L;
        T1[11L] = (l0->X24 + ((T46 & 16777215L) << 6L)) %
                1073741789L;
        ((FiWord*) T2)[11L] = (FiWord) l0->X21_PackedArraySet;
        l0->X20_PackedRecordSet = fiClosMake(e0, C24_PackedRecordSet);
        ((FiSInt*) T0)[12L] = 940586746L;
        T47 = (l0->X24 + 271346752L) % 1073741789L;
        T1[12L] = (l0->X24 + ((T47 & 16777215L) << 6L)) %
                1073741789L;
        ((FiWord*) T2)[12L] = (FiWord) l0->X20_PackedRecordSet;
        l0->X19_PackedRecordGet = fiClosMake(e0, C25_PackedRecordGet);
        ((FiSInt*) T0)[13L] = 939800302L;
        T1[13L] = T47;
        ((FiWord*) T2)[13L] = (FiWord) l0->X19_PackedRecordGet;
        l0->X18_PackedRepSize = fiClosMake(e0, C26_PackedRepSize);
        ((FiSInt*) T0)[14L] = 920971615L;
        T1[14L] = 668727138L;
        ((FiWord*) T2)[14L] = (FiWord) l0->X18_PackedRepSize;
        return P0_domain;
L1:     T29 = T30 - 1L;
        fiCCall3(FiWord, ((PFmt18) fiEnvLevel0(T27))->X22_PackedArraySet, (
                FiPtr) T28, T29, T26);
        T30 = T30 + 1L;
        goto L0;
}

static struct _FiProg  tmp14_addLevel1 = {
        (FiFun) CF14_addLevel1,
        0L,
        0L,
        0L
};


static FiWord
CF15_new(FiEnv e1)
{
        FiWord T2, T3, T5, T8;
        FiSInt T6, T7;
        FiEnv e3, e2, T0, T4;
        PFmt16 T1;
        PFmt11 l1;
        PFmt12 l3;
        l1 = (PFmt11) fiEnvLevel(e1);
        e2 = fiEnvNext(e1);
        e3 = fiEnvNext(e2);
        l3 = (PFmt12) fiEnvLevel(e3);
        fiEnvEnsure(l1->X17_new->env);
        T0 = l1->X17_new->env;
        T2 = l3->X1_m;
        T8 = fiCCall0(FiWord, l1->X10_new);
        T3 = fiCCall2(FiWord, l1->X14_new, l3->X2_n, T8);
        T1 = fi0RecNew(struct Fmt16 , CENSUS_Rec);
        T1->X0_size = T2;
        T1->X1_nvalues = T2;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T0))->X29_new->env);
        T4 = ((PFmt17) fiEnvLevel0(T0))->X29_new->env;
        T5 = (FiWord) fiCCall1(FiPtr, ((PFmt18) fiEnvLevel0(T4))->
                X19_PackedArrayNew, (FiSInt) T2);
        T7 = 1L;
L0:     if (T7 <= (FiSInt) T2) goto L1;
        T1->X2_values = T5;
        return (FiWord) T1;
L1:     T6 = T7 - 1L;
        fiCCall3(FiWord, ((PFmt18) fiEnvLevel0(T4))->X22_PackedArraySet, (
                FiPtr) T5, T6, T3);
        T7 = T7 + 1L;
        goto L0;
}

static struct _FiProg  tmp15_new = {
        (FiFun) CF15_new,
        0L,
        0L,
        0L
};


static FiWord
CF16_apply(FiEnv e1, FiWord P0_a, FiWord P1_i, FiWord P2_j)
{
        FiWord T3;
        FiSInt T2;
        FiEnv T0, T1;
        PFmt11 l1;
        l1 = (PFmt11) fiEnvLevel(e1);
        fiEnvEnsure(l1->X16_apply->env);
        T0 = l1->X16_apply->env;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T0))->X31_apply->env);
        T1 = ((PFmt17) fiEnvLevel0(T0))->X31_apply->env;
        T2 = (FiSInt) P1_i - 1L;
        T3 = fiCCall2(FiWord, ((PFmt18) fiEnvLevel0(T1))->
                X21_PackedArrayGet, (FiPtr) ((PFmt16) P0_a)->X2_values, T2);
        return fiCCall2(FiWord, l1->X12_apply, T3, P2_j);
}

static struct _FiProg  tmp16_apply = {
        (FiFun) CF16_apply,
        0L,
        0L,
        0L
};


static FiWord
CF17_set_BANG_(FiEnv e1, FiWord P0_vv, FiWord P1_i, FiWord P2_j,
                FiWord P3_e)
{
        FiSInt T3;
        FiEnv T1, T2;
        FiWord T0_a2;
        PFmt11 l1;
        l1 = (PFmt11) fiEnvLevel(e1);
        fiEnvEnsure(l1->X16_apply->env);
        T1 = l1->X16_apply->env;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T1))->X31_apply->env);
        T2 = ((PFmt17) fiEnvLevel0(T1))->X31_apply->env;
        T3 = (FiSInt) P1_i - 1L;
        T0_a2 = fiCCall2(FiWord, ((PFmt18) fiEnvLevel0(T2))->
                X21_PackedArrayGet, (FiPtr) ((PFmt16) P0_vv)->X2_values, T3);
        fiCCall3(FiWord, l1->X13_set_BANG_, T0_a2, P2_j, P3_e);
        return P3_e;
}

static struct _FiProg  tmp17_set_BANG_ = {
        (FiFun) CF17_set_BANG_,
        0L,
        0L,
        0L
};


static FiWord
CF18__EQ_(FiEnv e1, FiWord P0_a, FiWord P1_b)
{
        FiWord T1, T8, T9;
        FiSInt T3, T7;
        FiEnv e4, e3, e2, T0, T5, T6;
        FiBool T2, T4;
        PFmt11 l1;
        PFmt15 l4;
        l1 = (PFmt11) fiEnvLevel(e1);
        e2 = fiEnvNext(e1);
        e3 = fiEnvNext(e2);
        e4 = fiEnvNext(e3);
        l4 = (PFmt15) fiEnvLevel(e4);
        fiEnvEnsure(l1->X15__EQ_->env);
        T0 = l1->X15__EQ_->env;
        T1 = ((PFmt16) P0_a)->X1_nvalues;
        if ((FiSInt) T1 != (FiSInt) ((PFmt16) P1_b)->X1_nvalues) goto L0;
        T3 = 1L;
L3:     if (T3 <= (FiSInt) T1) goto L4;
        T2 = 1L;
L1:     T4 = T2;
L5:     return fiCCall1(FiWord, l4->X5_coerce, (FiWord) T4);
L4:     fiEnvEnsure(((PFmt17) fiEnvLevel0(T0))->X31_apply->env);
        T5 = ((PFmt17) fiEnvLevel0(T0))->X31_apply->env;
        T7 = T3 - 1L;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T0))->X31_apply->env);
        T6 = ((PFmt17) fiEnvLevel0(T0))->X31_apply->env;
        T8 = fiCCall2(FiWord, ((PFmt18) fiEnvLevel0(T6))->
                X21_PackedArrayGet, (FiPtr) ((PFmt16) P0_a)->X2_values, T7);
        T9 = fiCCall2(FiWord, ((PFmt18) fiEnvLevel0(T5))->
                X21_PackedArrayGet, (FiPtr) ((PFmt16) P1_b)->X2_values, T7);
        if ((FiBool) fiCCall2(FiWord, ((PFmt17) fiEnvLevel0(T0))->
                X33__TILDE__EQ_, T8, T9)) goto L2;
        T3 = T3 + 1L;
        goto L3;
L2:     T4 = 0L;
        goto L5;
L0:     T2 = 0L;
        goto L1;
}

static struct _FiProg  tmp18__EQ_ = {
        (FiFun) CF18__EQ_,
        0L,
        0L,
        0L
};


static FiWord
CF19__LT__LT_(FiEnv e1, FiWord P0_t, FiWord P1_r)
{
        FiWord T3, T10, T11, T14;
        FiSInt T6, T12_a, T13_a;
        FiClos T0, T1, T2, T7, T8, T9;
        FiEnv e3, e2, T4, T5;
        PFmt11 l1;
        PFmt12 l3;
        l1 = (PFmt11) fiEnvLevel(e1);
        e2 = fiEnvNext(e1);
        e3 = fiEnvNext(e2);
        l3 = (PFmt12) fiEnvLevel(e3);
        T11 = l3->X2_n;
        T13_a = 1L;
L2:     if (T13_a <= (FiSInt) T11) goto L3;
        return P0_t;
L3:     T10 = l3->X1_m;
        T12_a = 1L;
L0:     if (T12_a <= (FiSInt) T10) goto L1;
        ((void(*)(FiEnv , FiClos* , FiClos* , FiClos* )) fiRawCProg((
                FiClos) P0_t))(((FiClos) P0_t)->env, &T7, &T8, &T9);
        fiCCall1(void, T7, (FiWord) 10L);
        T13_a = T13_a + 1L;
        goto L2;
L1:     fiEnvEnsure(l1->X16_apply->env);
        T4 = l1->X16_apply->env;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T4))->X31_apply->env);
        T5 = ((PFmt17) fiEnvLevel0(T4))->X31_apply->env;
        T6 = T13_a - 1L;
        T14 = fiCCall2(FiWord, ((PFmt18) fiEnvLevel0(T5))->
                X21_PackedArrayGet, (FiPtr) ((PFmt16) P1_r)->X2_values, T6);
        T14 = fiCCall2(FiWord, l1->X12_apply, T14, (FiWord) T12_a);
        T3 = fiCCall2(FiWord, l1->X9__LT__LT_, P0_t, T14);
        ((void(*)(FiEnv , FiClos* , FiClos* , FiClos* )) fiRawCProg((
                FiClos) T3))(((FiClos) T3)->env, &T0, &T1, &T2);
        fiCCall3(FiWord, T1, (FiWord) " ", (FiWord) 1L, (FiWord) 0L);
        T12_a = T12_a + 1L;
        goto L0;
}

static struct _FiProg  tmp19__LT__LT_ = {
        (FiFun) CF19__LT__LT_,
        0L,
        0L,
        0L
};


static FiWord
CF20__PLUS_(FiEnv e1, FiWord P0_a, FiWord P1_b)
{
        FiWord T6, T7, T10, T11, T13, T19, T20, T21;
        FiSInt T14, T15, T16_a, T17_a, T18;
        FiEnv e3, e2, T0, T1, T2, T3, T4, T5, T8, T12;
        PFmt16 T9;
        PFmt11 l1;
        PFmt12 l3;
        l1 = (PFmt11) fiEnvLevel(e1);
        e2 = fiEnvNext(e1);
        e3 = fiEnvNext(e2);
        l3 = (PFmt12) fiEnvLevel(e3);
        fiEnvEnsure(l1->X17_new->env);
        T8 = l1->X17_new->env;
        T10 = l3->X1_m;
        T19 = fiCCall0(FiWord, l1->X10_new);
        T11 = fiCCall2(FiWord, l1->X14_new, l3->X2_n, T19);
        T9 = fi0RecNew(struct Fmt16 , CENSUS_Rec);
        T9->X0_size = T10;
        T9->X1_nvalues = T10;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T8))->X29_new->env);
        T12 = ((PFmt17) fiEnvLevel0(T8))->X29_new->env;
        T13 = (FiWord) fiCCall1(FiPtr, ((PFmt18) fiEnvLevel0(T12))->
                X19_PackedArrayNew, (FiSInt) T10);
        T15 = 1L;
L0:     if (T15 <= (FiSInt) T10) goto L1;
        T9->X2_values = T13;
        T7 = l3->X1_m;
        T17_a = 1L;
L2:     if (T17_a <= (FiSInt) T7) goto L3;
        return (FiWord) T9;
L3:     T6 = l3->X2_n;
        T16_a = 1L;
L4:     if (T16_a <= (FiSInt) T6) goto L5;
        T17_a = T17_a + 1L;
        goto L2;
L5:     fiEnvEnsure(l1->X16_apply->env);
        T0 = l1->X16_apply->env;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T0))->X31_apply->env);
        T1 = ((PFmt17) fiEnvLevel0(T0))->X31_apply->env;
        T18 = T17_a - 1L;
        fiEnvEnsure(l1->X16_apply->env);
        T2 = l1->X16_apply->env;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T2))->X31_apply->env);
        T3 = ((PFmt17) fiEnvLevel0(T2))->X31_apply->env;
        fiEnvEnsure(l1->X16_apply->env);
        T4 = l1->X16_apply->env;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T4))->X31_apply->env);
        T5 = ((PFmt17) fiEnvLevel0(T4))->X31_apply->env;
        T19 = fiCCall2(FiWord, ((PFmt18) fiEnvLevel0(T1))->
                X21_PackedArrayGet, (FiPtr) T9->X2_values, T18);
        T20 = fiCCall2(FiWord, ((PFmt18) fiEnvLevel0(T3))->
                X21_PackedArrayGet, (FiPtr) ((PFmt16) P0_a)->X2_values, T18);
        T20 = fiCCall2(FiWord, l1->X12_apply, T20, (FiWord) T16_a);
        T21 = fiCCall2(FiWord, ((PFmt18) fiEnvLevel0(T5))->
                X21_PackedArrayGet, (FiPtr) ((PFmt16) P1_b)->X2_values, T18);
        T21 = fiCCall2(FiWord, l1->X12_apply, T21, (FiWord) T16_a);
        T20 = fiCCall2(FiWord, l1->X11__PLUS_, T20, T21);
        fiCCall3(FiWord, l1->X13_set_BANG_, T19, (FiWord) T16_a, T20);
        T16_a = T16_a + 1L;
        goto L4;
L1:     T14 = T15 - 1L;
        fiCCall3(FiWord, ((PFmt18) fiEnvLevel0(T12))->X22_PackedArraySet, (
                FiPtr) T13, T14, T11);
        T15 = T15 + 1L;
        goto L0;
}

static struct _FiProg  tmp20__PLUS_ = {
        (FiFun) CF20__PLUS_,
        0L,
        0L,
        0L
};


static FiPtr
CF21_PackedArrayNew(FiEnv e1, FiSInt P0_x0)
{
        return (FiPtr) fiArrNew_Word(P0_x0);
}

static struct _FiProg  tmp21_PackedArrayNew = {
        (FiFun) CF21_PackedArrayNew,
        0L,
        0L,
        0L
};


static FiWord
CF22_PackedArrayGet(FiEnv e1, FiHInt *P0_x0, FiSInt P1_x1)
{
        return ((FiWord*) P0_x0)[P1_x1];
}

static struct _FiProg  tmp22_PackedArrayGet = {
        (FiFun) CF22_PackedArrayGet,
        0L,
        0L,
        0L
};


static FiWord
CF23_PackedArraySet(FiEnv e1, FiHInt *P0_x0, FiSInt P1_x1, FiWord P2_x2)
{
        ((FiWord*) P0_x0)[P1_x1] = P2_x2;
        return P2_x2;
}

static struct _FiProg  tmp23_PackedArraySet = {
        (FiFun) CF23_PackedArraySet,
        0L,
        0L,
        0L
};


static FiWord
CF24_PackedRecordSet(FiEnv e1, FiPtr P0_x0, FiWord P1_x1)
{
        ((FiWord*) P0_x0)[0L] = P1_x1;
        return P1_x1;
}

static struct _FiProg  tmp24_PackedRecordSet = {
        (FiFun) CF24_PackedRecordSet,
        0L,
        0L,
        0L
};


static FiWord
CF25_PackedRecordGet(FiEnv e1, FiPtr P0_x0)
{
        return ((FiWord*) P0_x0)[0L];
}

static struct _FiProg  tmp25_PackedRecordGet = {
        (FiFun) CF25_PackedRecordGet,
        0L,
        0L,
        0L
};


static FiSInt
CF26_PackedRepSize(FiEnv e1)
{
        return fiSizeOfWord();
}

static struct _FiProg  tmp26_PackedRepSize = {
        (FiFun) CF26_PackedRepSize,
        0L,
        0L,
        0L
};


static void
CF27_main(FiEnv e1)
{
        FiSInt T61, T62, T68, T69, T75, T76, T83, T98, T113, T138,
                T139, T146, T159, T166, T173, T176, T177, T188, T189,
                T192, T193, T196, T197, T198_a, T199_a, T200_a, T201_a,
                T202_a, T203_a, T204_a, T205_a, T206_a, T207_a, T208,
                T209, T210, T211;
        FiWord T1, T6, T11, T42, T46, T50, T54, T55, T58, T60, T65,
                T67, T72, T74, T87, T88, T89, T91, T102, T103, T104,
                T106, T117, T118, T119, T121, T124, T132, T133, T135,
                T137, T141, T143, T145, T149, T152, T156, T157, T163,
                T164, T170, T171, T175, T178, T179, T184, T187, T191,
                T195;
        FiEnv T0, T2, T3, T4, T5, T7, T8, T9, T10, T12, T13, T14,
                T15, T16, T17, T56, T57, T59, T63, T64, T66, T70,
                T71, T73, T77, T81, T82, T90, T92, T96, T97, T105,
                T107, T111, T112, T120, T122, T125, T126, T127, T128,
                T129, T130, T131, T134, T136, T140, T142, T144, T147,
                T150, T158, T165, T172, T174, T180, T181, T182, T185,
                T186, T190, T194;
        PFmt16 T123, T148, T151, T183;
        FiClos T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
                T28, T29, T30, T31, T32, T33, T34, T35, T36, T37,
                T38, T39, T40, T41, T43, T44, T45, T47, T48, T49,
                T51, T52, T53, T78, T79, T80, T84, T85, T86, T93,
                T94, T95, T99, T100, T101, T108, T109, T110, T114,
                T115, T116, T153, T154, T155, T160, T161, T162, T167,
                T168, T169;
        PFmt15 l1;
        l1 = (PFmt15) fiEnvLevel(e1);
        fiCCall3(FiWord, G_8TVTP_matrix__Matrix__789582,
                G_QRB64_matrix__MyInt__6853456, (FiWord) 2L, (FiWord) 2L);
        fiEnvEnsure(l1->X10_new->env);
        T70 = l1->X10_new->env;
        fiEnvEnsure(((PFmt11) fiEnvLevel0(T70))->X17_new->env);
        T71 = ((PFmt11) fiEnvLevel0(T70))->X17_new->env;
        T72 = ((PFmt12) fiEnvLevel2(T70))->X1_m;
        fiEnvEnsure(((PFmt11) fiEnvLevel0(T70))->X14_new->env);
        T150 = ((PFmt11) fiEnvLevel0(T70))->X14_new->env;
        T152 = ((PFmt12) fiEnvLevel2(T70))->X2_n;
        T151 = fi0RecNew(struct Fmt16 , CENSUS_Rec);
        T151->X0_size = T152;
        T151->X1_nvalues = T152;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T150))->X29_new->env);
        T190 = ((PFmt17) fiEnvLevel0(T150))->X29_new->env;
        T191 = (FiWord) fiCCall1(FiPtr, ((PFmt18) fiEnvLevel0(T190))->
                X19_PackedArrayNew, (FiSInt) T152);
        T193 = 1L;
L28:    if (T193 <= (FiSInt) T152) goto L29;
        T151->X2_values = T191;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T71))->X29_new->env);
        T73 = ((PFmt17) fiEnvLevel0(T71))->X29_new->env;
        T74 = (FiWord) fiCCall1(FiPtr, ((PFmt18) fiEnvLevel0(T73))->
                X19_PackedArrayNew, (FiSInt) T72);
        T76 = 1L;
L4:     if (T76 <= (FiSInt) T72) goto L5;
        fiEnvEnsure(l1->X10_new->env);
        T63 = l1->X10_new->env;
        fiEnvEnsure(((PFmt11) fiEnvLevel0(T63))->X17_new->env);
        T64 = ((PFmt11) fiEnvLevel0(T63))->X17_new->env;
        T65 = ((PFmt12) fiEnvLevel2(T63))->X1_m;
        fiEnvEnsure(((PFmt11) fiEnvLevel0(T63))->X14_new->env);
        T147 = ((PFmt11) fiEnvLevel0(T63))->X14_new->env;
        T149 = ((PFmt12) fiEnvLevel2(T63))->X2_n;
        T148 = fi0RecNew(struct Fmt16 , CENSUS_Rec);
        T148->X0_size = T149;
        T148->X1_nvalues = T149;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T147))->X29_new->env);
        T186 = ((PFmt17) fiEnvLevel0(T147))->X29_new->env;
        T187 = (FiWord) fiCCall1(FiPtr, ((PFmt18) fiEnvLevel0(T186))->
                X19_PackedArrayNew, (FiSInt) T149);
        T189 = 1L;
L26:    if (T189 <= (FiSInt) T149) goto L27;
        T148->X2_values = T187;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T64))->X29_new->env);
        T66 = ((PFmt17) fiEnvLevel0(T64))->X29_new->env;
        T67 = (FiWord) fiCCall1(FiPtr, ((PFmt18) fiEnvLevel0(T66))->
                X19_PackedArrayNew, (FiSInt) T65);
        T69 = 1L;
L2:     if (T69 <= (FiSInt) T65) goto L3;
        fiEnvEnsure(l1->X10_new->env);
        T56 = l1->X10_new->env;
        fiEnvEnsure(((PFmt11) fiEnvLevel0(T56))->X17_new->env);
        T57 = ((PFmt11) fiEnvLevel0(T56))->X17_new->env;
        T58 = ((PFmt12) fiEnvLevel2(T56))->X1_m;
        fiEnvEnsure(((PFmt11) fiEnvLevel0(T56))->X14_new->env);
        T122 = ((PFmt11) fiEnvLevel0(T56))->X14_new->env;
        T124 = ((PFmt12) fiEnvLevel2(T56))->X2_n;
        T123 = fi0RecNew(struct Fmt16 , CENSUS_Rec);
        T123->X0_size = T124;
        T123->X1_nvalues = T124;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T122))->X29_new->env);
        T174 = ((PFmt17) fiEnvLevel0(T122))->X29_new->env;
        T175 = (FiWord) fiCCall1(FiPtr, ((PFmt18) fiEnvLevel0(T174))->
                X19_PackedArrayNew, (FiSInt) T124);
        T177 = 1L;
L24:    if (T177 <= (FiSInt) T124) goto L25;
        T123->X2_values = T175;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T57))->X29_new->env);
        T59 = ((PFmt17) fiEnvLevel0(T57))->X29_new->env;
        T60 = (FiWord) fiCCall1(FiPtr, ((PFmt18) fiEnvLevel0(T59))->
                X19_PackedArrayNew, (FiSInt) T58);
        T62 = 1L;
L0:     if (T62 <= (FiSInt) T58) goto L1;
        T55 = fiCCall1(FiWord, (*pG_R3D1K_lazyForceImport), l1->X6_print);
        T54 = formatSInt(1L);
        ((void(*)(FiEnv , FiClos* , FiClos* , FiClos* )) fiRawCProg((
                FiClos) T55))(((FiClos) T55)->env, &T51, &T52, &T53);
        fiCCall3(FiWord, T52, T54, (FiWord) 1L, (FiWord) 0L);
        ((void(*)(FiEnv , FiClos* , FiClos* , FiClos* )) fiRawCProg((
                FiClos) T55))(((FiClos) T55)->env, &T24, &T25, &T26);
        fiCCall1(void, T24, (FiWord) 10L);
        T199_a = 1L;
L34:    if (T199_a <= 2L) goto L35;
        fiEnvEnsure(l1->X11__PLUS_->env);
        T125 = l1->X11__PLUS_->env;
        fiEnvEnsure(((PFmt11) fiEnvLevel0(T125))->X17_new->env);
        T134 = ((PFmt11) fiEnvLevel0(T125))->X17_new->env;
        T135 = ((PFmt12) fiEnvLevel2(T125))->X1_m;
        fiEnvEnsure(((PFmt11) fiEnvLevel0(T125))->X14_new->env);
        T182 = ((PFmt11) fiEnvLevel0(T125))->X14_new->env;
        T184 = ((PFmt12) fiEnvLevel2(T125))->X2_n;
        T183 = fi0RecNew(struct Fmt16 , CENSUS_Rec);
        T183->X0_size = T184;
        T183->X1_nvalues = T184;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T182))->X29_new->env);
        T194 = ((PFmt17) fiEnvLevel0(T182))->X29_new->env;
        T195 = (FiWord) fiCCall1(FiPtr, ((PFmt18) fiEnvLevel0(T194))->
                X19_PackedArrayNew, (FiSInt) T184);
        T197 = 1L;
L30:    if (T197 <= (FiSInt) T184) goto L31;
        T183->X2_values = T195;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T134))->X29_new->env);
        T136 = ((PFmt17) fiEnvLevel0(T134))->X29_new->env;
        T137 = (FiWord) fiCCall1(FiPtr, ((PFmt18) fiEnvLevel0(T136))->
                X19_PackedArrayNew, (FiSInt) T135);
        T139 = 1L;
L18:    if (T139 <= (FiSInt) T135) goto L19;
        T133 = ((PFmt12) fiEnvLevel2(T125))->X1_m;
        T207_a = 1L;
L20:    if (T207_a <= (FiSInt) T133) goto L21;
        T46 = fiCCall1(FiWord, (*pG_R3D1K_lazyForceImport), l1->X6_print);
        ((void(*)(FiEnv , FiClos* , FiClos* , FiClos* )) fiRawCProg((
                FiClos) T46))(((FiClos) T46)->env, &T43, &T44, &T45);
        fiCCall3(FiWord, T44, (FiWord) "v = ", (FiWord) 1L, (FiWord) 0L);
        ((void(*)(FiEnv , FiClos* , FiClos* , FiClos* )) fiRawCProg((
                FiClos) T46))(((FiClos) T46)->env, &T36, &T37, &T38);
        fiCCall1(void, T36, (FiWord) 10L);
        fiEnvEnsure(l1->X9__LT__LT_->env);
        T107 = l1->X9__LT__LT_->env;
        T119 = fiCCall1(FiWord, (*pG_R3D1K_lazyForceImport), l1->
                X6_print);
        T118 = ((PFmt12) fiEnvLevel2(T107))->X2_n;
        T205_a = 1L;
L16:    if (T205_a <= (FiSInt) T118) goto L17;
        ((void(*)(FiEnv , FiClos* , FiClos* , FiClos* )) fiRawCProg((
                FiClos) T119))(((FiClos) T119)->env, &T21, &T22, &T23);
        fiCCall1(void, T21, (FiWord) 10L);
        T50 = fiCCall1(FiWord, (*pG_R3D1K_lazyForceImport), l1->X6_print);
        ((void(*)(FiEnv , FiClos* , FiClos* , FiClos* )) fiRawCProg((
                FiClos) T50))(((FiClos) T50)->env, &T47, &T48, &T49);
        fiCCall3(FiWord, T48, (FiWord) "w = ", (FiWord) 1L, (FiWord) 0L);
        ((void(*)(FiEnv , FiClos* , FiClos* , FiClos* )) fiRawCProg((
                FiClos) T50))(((FiClos) T50)->env, &T30, &T31, &T32);
        fiCCall1(void, T30, (FiWord) 10L);
        fiEnvEnsure(l1->X9__LT__LT_->env);
        T92 = l1->X9__LT__LT_->env;
        T104 = fiCCall1(FiWord, (*pG_R3D1K_lazyForceImport), l1->
                X6_print);
        T103 = ((PFmt12) fiEnvLevel2(T92))->X2_n;
        T203_a = 1L;
L12:    if (T203_a <= (FiSInt) T103) goto L13;
        ((void(*)(FiEnv , FiClos* , FiClos* , FiClos* )) fiRawCProg((
                FiClos) T104))(((FiClos) T104)->env, &T27, &T28, &T29);
        fiCCall1(void, T27, (FiWord) 10L);
        T42 = fiCCall1(FiWord, (*pG_R3D1K_lazyForceImport), l1->X6_print);
        ((void(*)(FiEnv , FiClos* , FiClos* , FiClos* )) fiRawCProg((
                FiClos) T42))(((FiClos) T42)->env, &T39, &T40, &T41);
        fiCCall3(FiWord, T40, (FiWord) "z = ", (FiWord) 1L, (FiWord) 0L);
        ((void(*)(FiEnv , FiClos* , FiClos* , FiClos* )) fiRawCProg((
                FiClos) T42))(((FiClos) T42)->env, &T18, &T19, &T20);
        fiCCall1(void, T18, (FiWord) 10L);
        fiEnvEnsure(l1->X9__LT__LT_->env);
        T77 = l1->X9__LT__LT_->env;
        T89 = fiCCall1(FiWord, (*pG_R3D1K_lazyForceImport), l1->X6_print);
        T88 = ((PFmt12) fiEnvLevel2(T77))->X2_n;
        T201_a = 1L;
L8:     if (T201_a <= (FiSInt) T88) goto L9;
        ((void(*)(FiEnv , FiClos* , FiClos* , FiClos* )) fiRawCProg((
                FiClos) T89))(((FiClos) T89)->env, &T33, &T34, &T35);
        fiCCall1(void, T33, (FiWord) 10L);
        return ;
L9:     T87 = ((PFmt12) fiEnvLevel2(T77))->X1_m;
        T200_a = 1L;
L6:     if (T200_a <= (FiSInt) T87) goto L7;
        ((void(*)(FiEnv , FiClos* , FiClos* , FiClos* )) fiRawCProg((
                FiClos) T89))(((FiClos) T89)->env, &T84, &T85, &T86);
        fiCCall1(void, T84, (FiWord) 10L);
        T201_a = T201_a + 1L;
        goto L8;
L7:     fiEnvEnsure(((PFmt11) fiEnvLevel0(T77))->X16_apply->env);
        T81 = ((PFmt11) fiEnvLevel0(T77))->X16_apply->env;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T81))->X31_apply->env);
        T82 = ((PFmt17) fiEnvLevel0(T81))->X31_apply->env;
        T83 = T201_a - 1L;
        fiEnvEnsure(((PFmt11) fiEnvLevel0(T77))->X12_apply->env);
        T90 = ((PFmt11) fiEnvLevel0(T77))->X12_apply->env;
        T91 = fiCCall2(FiWord, ((PFmt18) fiEnvLevel0(T82))->
                X21_PackedArrayGet, (FiPtr) T137, T83);
        fiEnvEnsure(((PFmt11) fiEnvLevel0(T77))->X9__LT__LT_->env);
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T90))->X31_apply->env);
        T158 = ((PFmt17) fiEnvLevel0(T90))->X31_apply->env;
        T159 = T200_a - 1L;
        T157 = fiCCall2(FiWord, ((PFmt18) fiEnvLevel0(T158))->
                X21_PackedArrayGet, (FiPtr) ((PFmt16) T91)->X2_values, T159);
        T156 = formatSInt((FiSInt) T157);
        ((void(*)(FiEnv , FiClos* , FiClos* , FiClos* )) fiRawCProg((
                FiClos) T89))(((FiClos) T89)->env, &T153, &T154, &T155);
        fiCCall3(FiWord, T154, T156, (FiWord) 1L, (FiWord) 0L);
        ((void(*)(FiEnv , FiClos* , FiClos* , FiClos* )) fiRawCProg((
                FiClos) T89))(((FiClos) T89)->env, &T78, &T79, &T80);
        fiCCall3(FiWord, T79, (FiWord) " ", (FiWord) 1L, (FiWord) 0L);
        T200_a = T200_a + 1L;
        goto L6;
L13:    T102 = ((PFmt12) fiEnvLevel2(T92))->X1_m;
        T202_a = 1L;
L10:    if (T202_a <= (FiSInt) T102) goto L11;
        ((void(*)(FiEnv , FiClos* , FiClos* , FiClos* )) fiRawCProg((
                FiClos) T104))(((FiClos) T104)->env, &T99, &T100, &T101);
        fiCCall1(void, T99, (FiWord) 10L);
        T203_a = T203_a + 1L;
        goto L12;
L11:    fiEnvEnsure(((PFmt11) fiEnvLevel0(T92))->X16_apply->env);
        T96 = ((PFmt11) fiEnvLevel0(T92))->X16_apply->env;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T96))->X31_apply->env);
        T97 = ((PFmt17) fiEnvLevel0(T96))->X31_apply->env;
        T98 = T203_a - 1L;
        fiEnvEnsure(((PFmt11) fiEnvLevel0(T92))->X12_apply->env);
        T105 = ((PFmt11) fiEnvLevel0(T92))->X12_apply->env;
        T106 = fiCCall2(FiWord, ((PFmt18) fiEnvLevel0(T97))->
                X21_PackedArrayGet, (FiPtr) T67, T98);
        fiEnvEnsure(((PFmt11) fiEnvLevel0(T92))->X9__LT__LT_->env);
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T105))->X31_apply->env);
        T165 = ((PFmt17) fiEnvLevel0(T105))->X31_apply->env;
        T166 = T202_a - 1L;
        T164 = fiCCall2(FiWord, ((PFmt18) fiEnvLevel0(T165))->
                X21_PackedArrayGet, (FiPtr) ((PFmt16) T106)->X2_values,
                T166);
        T163 = formatSInt((FiSInt) T164);
        ((void(*)(FiEnv , FiClos* , FiClos* , FiClos* )) fiRawCProg((
                FiClos) T104))(((FiClos) T104)->env, &T160, &T161, &T162);
        fiCCall3(FiWord, T161, T163, (FiWord) 1L, (FiWord) 0L);
        ((void(*)(FiEnv , FiClos* , FiClos* , FiClos* )) fiRawCProg((
                FiClos) T104))(((FiClos) T104)->env, &T93, &T94, &T95);
        fiCCall3(FiWord, T94, (FiWord) " ", (FiWord) 1L, (FiWord) 0L);
        T202_a = T202_a + 1L;
        goto L10;
L17:    T117 = ((PFmt12) fiEnvLevel2(T107))->X1_m;
        T204_a = 1L;
L14:    if (T204_a <= (FiSInt) T117) goto L15;
        ((void(*)(FiEnv , FiClos* , FiClos* , FiClos* )) fiRawCProg((
                FiClos) T119))(((FiClos) T119)->env, &T114, &T115, &T116);
        fiCCall1(void, T114, (FiWord) 10L);
        T205_a = T205_a + 1L;
        goto L16;
L15:    fiEnvEnsure(((PFmt11) fiEnvLevel0(T107))->X16_apply->env);
        T111 = ((PFmt11) fiEnvLevel0(T107))->X16_apply->env;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T111))->X31_apply->env);
        T112 = ((PFmt17) fiEnvLevel0(T111))->X31_apply->env;
        T113 = T205_a - 1L;
        fiEnvEnsure(((PFmt11) fiEnvLevel0(T107))->X12_apply->env);
        T120 = ((PFmt11) fiEnvLevel0(T107))->X12_apply->env;
        T121 = fiCCall2(FiWord, ((PFmt18) fiEnvLevel0(T112))->
                X21_PackedArrayGet, (FiPtr) T74, T113);
        fiEnvEnsure(((PFmt11) fiEnvLevel0(T107))->X9__LT__LT_->env);
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T120))->X31_apply->env);
        T172 = ((PFmt17) fiEnvLevel0(T120))->X31_apply->env;
        T173 = T204_a - 1L;
        T171 = fiCCall2(FiWord, ((PFmt18) fiEnvLevel0(T172))->
                X21_PackedArrayGet, (FiPtr) ((PFmt16) T121)->X2_values,
                T173);
        T170 = formatSInt((FiSInt) T171);
        ((void(*)(FiEnv , FiClos* , FiClos* , FiClos* )) fiRawCProg((
                FiClos) T119))(((FiClos) T119)->env, &T167, &T168, &T169);
        fiCCall3(FiWord, T168, T170, (FiWord) 1L, (FiWord) 0L);
        ((void(*)(FiEnv , FiClos* , FiClos* , FiClos* )) fiRawCProg((
                FiClos) T119))(((FiClos) T119)->env, &T108, &T109, &T110);
        fiCCall3(FiWord, T109, (FiWord) " ", (FiWord) 1L, (FiWord) 0L);
        T204_a = T204_a + 1L;
        goto L14;
L21:    T132 = ((PFmt12) fiEnvLevel2(T125))->X2_n;
        T206_a = 1L;
L22:    if (T206_a <= (FiSInt) T132) goto L23;
        T207_a = T207_a + 1L;
        goto L20;
L23:    fiEnvEnsure(((PFmt11) fiEnvLevel0(T125))->X16_apply->env);
        T126 = ((PFmt11) fiEnvLevel0(T125))->X16_apply->env;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T126))->X31_apply->env);
        T127 = ((PFmt17) fiEnvLevel0(T126))->X31_apply->env;
        T208 = T207_a - 1L;
        fiEnvEnsure(((PFmt11) fiEnvLevel0(T125))->X16_apply->env);
        T128 = ((PFmt11) fiEnvLevel0(T125))->X16_apply->env;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T128))->X31_apply->env);
        T129 = ((PFmt17) fiEnvLevel0(T128))->X31_apply->env;
        fiEnvEnsure(((PFmt11) fiEnvLevel0(T125))->X16_apply->env);
        T130 = ((PFmt11) fiEnvLevel0(T125))->X16_apply->env;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T130))->X31_apply->env);
        T131 = ((PFmt17) fiEnvLevel0(T130))->X31_apply->env;
        fiEnvEnsure(((PFmt11) fiEnvLevel0(T125))->X12_apply->env);
        T140 = ((PFmt11) fiEnvLevel0(T125))->X12_apply->env;
        T141 = fiCCall2(FiWord, ((PFmt18) fiEnvLevel0(T131))->
                X21_PackedArrayGet, (FiPtr) T67, T208);
        fiEnvEnsure(((PFmt11) fiEnvLevel0(T125))->X12_apply->env);
        T142 = ((PFmt11) fiEnvLevel0(T125))->X12_apply->env;
        T143 = fiCCall2(FiWord, ((PFmt18) fiEnvLevel0(T129))->
                X21_PackedArrayGet, (FiPtr) T74, T208);
        fiEnvEnsure(((PFmt11) fiEnvLevel0(T125))->X13_set_BANG_->env);
        T144 = ((PFmt11) fiEnvLevel0(T125))->X13_set_BANG_->env;
        T145 = fiCCall2(FiWord, ((PFmt18) fiEnvLevel0(T127))->
                X21_PackedArrayGet, (FiPtr) T137, T208);
        fiEnvEnsure(((PFmt11) fiEnvLevel0(T125))->X11__PLUS_->env);
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T142))->X31_apply->env);
        T181 = ((PFmt17) fiEnvLevel0(T142))->X31_apply->env;
        T209 = T206_a - 1L;
        T178 = fiCCall2(FiWord, ((PFmt18) fiEnvLevel0(T181))->
                X21_PackedArrayGet, (FiPtr) ((PFmt16) T143)->X2_values,
                T209);
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T140))->X31_apply->env);
        T180 = ((PFmt17) fiEnvLevel0(T140))->X31_apply->env;
        T179 = fiCCall2(FiWord, ((PFmt18) fiEnvLevel0(T180))->
                X21_PackedArrayGet, (FiPtr) ((PFmt16) T141)->X2_values,
                T209);
        T146 = (FiSInt) T178 + (FiSInt) T179;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T144))->X30_set_BANG_->env);
        T185 = ((PFmt17) fiEnvLevel0(T144))->X30_set_BANG_->env;
        fiCCall3(FiWord, ((PFmt18) fiEnvLevel0(T185))->X22_PackedArraySet, (
                FiPtr) ((PFmt16) T145)->X2_values, T209, (FiWord) T146);
        T206_a = T206_a + 1L;
        goto L22;
L19:    T138 = T139 - 1L;
        fiCCall3(FiWord, ((PFmt18) fiEnvLevel0(T136))->X22_PackedArraySet, (
                FiPtr) T137, T138, T183);
        T139 = T139 + 1L;
        goto L18;
L31:    T196 = T197 - 1L;
        fiCCall3(FiWord, ((PFmt18) fiEnvLevel0(T194))->X22_PackedArraySet, (
                FiPtr) T195, T196, (FiWord) 0L);
        T197 = T197 + 1L;
        goto L30;
L35:    T198_a = 1L;
L32:    if (T198_a <= 2L) goto L33;
        T199_a = T199_a + 1L;
        goto L34;
L33:    fiEnvEnsure(l1->X12_set_BANG_->env);
        T10 = l1->X12_set_BANG_->env;
        fiEnvEnsure(((PFmt11) fiEnvLevel0(T10))->X16_apply->env);
        T12 = ((PFmt11) fiEnvLevel0(T10))->X16_apply->env;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T12))->X31_apply->env);
        T13 = ((PFmt17) fiEnvLevel0(T12))->X31_apply->env;
        T210 = T199_a - 1L;
        T11 = fiCCall2(FiWord, ((PFmt18) fiEnvLevel0(T13))->
                X21_PackedArrayGet, (FiPtr) T74, T210);
        fiEnvEnsure(((PFmt11) fiEnvLevel0(T10))->X13_set_BANG_->env);
        T14 = ((PFmt11) fiEnvLevel0(T10))->X13_set_BANG_->env;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T14))->X30_set_BANG_->env);
        T17 = ((PFmt17) fiEnvLevel0(T14))->X30_set_BANG_->env;
        T211 = T198_a - 1L;
        fiCCall3(FiWord, ((PFmt18) fiEnvLevel0(T17))->X22_PackedArraySet, (
                FiPtr) ((PFmt16) T11)->X2_values, T211, (FiWord) 1L);
        fiEnvEnsure(l1->X12_set_BANG_->env);
        T5 = l1->X12_set_BANG_->env;
        fiEnvEnsure(((PFmt11) fiEnvLevel0(T5))->X16_apply->env);
        T7 = ((PFmt11) fiEnvLevel0(T5))->X16_apply->env;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T7))->X31_apply->env);
        T8 = ((PFmt17) fiEnvLevel0(T7))->X31_apply->env;
        T6 = fiCCall2(FiWord, ((PFmt18) fiEnvLevel0(T8))->
                X21_PackedArrayGet, (FiPtr) T67, T210);
        fiEnvEnsure(((PFmt11) fiEnvLevel0(T5))->X13_set_BANG_->env);
        T9 = ((PFmt11) fiEnvLevel0(T5))->X13_set_BANG_->env;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T9))->X30_set_BANG_->env);
        T16 = ((PFmt17) fiEnvLevel0(T9))->X30_set_BANG_->env;
        fiCCall3(FiWord, ((PFmt18) fiEnvLevel0(T16))->X22_PackedArraySet, (
                FiPtr) ((PFmt16) T6)->X2_values, T211, (FiWord) 1L);
        fiEnvEnsure(l1->X12_set_BANG_->env);
        T0 = l1->X12_set_BANG_->env;
        fiEnvEnsure(((PFmt11) fiEnvLevel0(T0))->X16_apply->env);
        T2 = ((PFmt11) fiEnvLevel0(T0))->X16_apply->env;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T2))->X31_apply->env);
        T3 = ((PFmt17) fiEnvLevel0(T2))->X31_apply->env;
        T1 = fiCCall2(FiWord, ((PFmt18) fiEnvLevel0(T3))->
                X21_PackedArrayGet, (FiPtr) T60, T210);
        fiEnvEnsure(((PFmt11) fiEnvLevel0(T0))->X13_set_BANG_->env);
        T4 = ((PFmt11) fiEnvLevel0(T0))->X13_set_BANG_->env;
        fiEnvEnsure(((PFmt17) fiEnvLevel0(T4))->X30_set_BANG_->env);
        T15 = ((PFmt17) fiEnvLevel0(T4))->X30_set_BANG_->env;
        fiCCall3(FiWord, ((PFmt18) fiEnvLevel0(T15))->X22_PackedArraySet, (
                FiPtr) ((PFmt16) T1)->X2_values, T211, (FiWord) 1L);
        T198_a = T198_a + 1L;
        goto L32;
L1:     T61 = T62 - 1L;
        fiCCall3(FiWord, ((PFmt18) fiEnvLevel0(T59))->X22_PackedArraySet, (
                FiPtr) T60, T61, T123);
        T62 = T62 + 1L;
        goto L0;
L25:    T176 = T177 - 1L;
        fiCCall3(FiWord, ((PFmt18) fiEnvLevel0(T174))->X22_PackedArraySet, (
                FiPtr) T175, T176, (FiWord) 0L);
        T177 = T177 + 1L;
        goto L24;
L3:     T68 = T69 - 1L;
        fiCCall3(FiWord, ((PFmt18) fiEnvLevel0(T66))->X22_PackedArraySet, (
                FiPtr) T67, T68, T148);
        T69 = T69 + 1L;
        goto L2;
L27:    T188 = T189 - 1L;
        fiCCall3(FiWord, ((PFmt18) fiEnvLevel0(T186))->X22_PackedArraySet, (
                FiPtr) T187, T188, (FiWord) 0L);
        T189 = T189 + 1L;
        goto L26;
L5:     T75 = T76 - 1L;
        fiCCall3(FiWord, ((PFmt18) fiEnvLevel0(T73))->X22_PackedArraySet, (
                FiPtr) T74, T75, T151);
        T76 = T76 + 1L;
        goto L4;
L29:    T192 = T193 - 1L;
        fiCCall3(FiWord, ((PFmt18) fiEnvLevel0(T190))->X22_PackedArraySet, (
                FiPtr) T191, T192, (FiWord) 0L);
        T193 = T193 + 1L;
        goto L28;
}

static struct _FiProg  tmp27_main = {
        (FiFun) CF27_main,
        0L,
        0L,
        0L
};


static FiClos
CF28_lazyFnGetter(FiEnv e1, FiWord P0_init)
{
        PFmt14 l0;
        FiEnv e0;
        l0 = fi0New(struct Fmt14 , CENSUS_EnvLevel);
        e0 = fiEnvPush(l0, e1);
        l0->X0_getter = (FiClos) P0_init;
        l0->X1_flag = 0L;
        l0->X2_self = fiClosMake(e0, C29_lazyGetter);
        fiEnvInfo(e0) = (FiWord) fiClosMake(e0, C30_lazyGetter2);
        return l0->X2_self;
}

static struct _FiProg  tmp28_lazyFnGetter = {
        (FiFun) CF28_lazyFnGetter,
        0L,
        0L,
        0L
};


static FiWord
CF29_lazyGetter(FiEnv e1, FiWord P0_a, FiWord P1_b, FiWord P2_c,
                FiWord P3_d)
{
        FiClos T0;
        PFmt14 l1;
        l1 = (PFmt14) fiEnvLevel(e1);
        if (l1->X1_flag) goto L0;
        T0 = (FiClos) fiCCall0(FiWord, l1->X0_getter);
        l1->X2_self->env = T0->env;
        l1->X2_self->prog = T0->prog;
        l1->X1_flag = 1L;
L0:     return fiCCall4(FiWord, l1->X2_self, P0_a, P1_b, P2_c, P3_d);
}

static struct _FiProg  tmp29_lazyGetter = {
        (FiFun) CF29_lazyGetter,
        0L,
        0L,
        0L
};


static void
CF30_lazyGetter2(FiEnv e1)
{
        FiClos T0;
        PFmt14 l1;
        l1 = (PFmt14) fiEnvLevel(e1);
        if (l1->X1_flag) goto L0;
        T0 = (FiClos) fiCCall0(FiWord, l1->X0_getter);
        l1->X1_flag = 1L;
        l1->X2_self->env = T0->env;
        l1->X2_self->prog = T0->prog;
        fiEnvInfo(e1) = (FiWord) fiNil;
L0:     return ;
}

static struct _FiProg  tmp30_lazyGetter2 = {
        (FiFun) CF30_lazyGetter2,
        0L,
        0L,
        0L
};


static FiWord
CF31_array_MINUS_init(FiEnv e1, FiSInt P0_idx)
{
        PFmt15 l1;
        l1 = (PFmt15) fiEnvLevel(e1);
        if (l1->X15) goto L0;
        l1->X15 = 1L;
        fiCCall0(void, (*pG_AL27T_array));
L0:     return (FiWord) (*pG_H33WF_array__Array__0679756);
}

static struct _FiProg  tmp31_array_MINUS_init = {
        (FiFun) CF31_array_MINUS_init,
        0L,
        0L,
        0L
};


static FiWord
CF32_textwrit_MINUS_init(FiEnv e1, FiSInt P0_idx)
{
        PFmt15 l1;
        l1 = (PFmt15) fiEnvLevel(e1);
        if (l1->X16) goto L0;
        l1->X16 = 1L;
        fiCCall0(void, (*pG_EC2QI_textwrit));
L0:     return (FiWord) (*pG_NBIQ7_textwrit__TextWriter);
}

static struct _FiProg  tmp32_textwrit_MINUS_init = {
        (FiFun) CF32_textwrit_MINUS_init,
        0L,
        0L,
        0L
};


static FiWord
CF33_axlcat_MINUS_init(FiEnv e1, FiSInt P0_idx)
{
        PFmt15 l1;
        l1 = (PFmt15) fiEnvLevel(e1);
        if (l1->X17) goto L0;
        l1->X17 = 1L;
        fiCCall0(void, (*pG_DZOJS_axlcat));
L0:     return (FiWord) (*pG_9VAL7_axlcat__BasicType__95);
}

static struct _FiProg  tmp33_axlcat_MINUS_init = {
        (FiFun) CF33_axlcat_MINUS_init,
        0L,
        0L,
        0L
};


static FiWord
CF34_boolean_MINUS_init(FiEnv e1, FiSInt P0_idx)
{
        PFmt15 l1;
        l1 = (PFmt15) fiEnvLevel(e1);
        if (l1->X18) goto L0;
        l1->X18 = 1L;
        fiCCall0(void, (*pG_P63GL_boolean));
L0:     return (FiWord) (*pG_M9OLC_boolean__Boolean__494);
}

static struct _FiProg  tmp34_boolean_MINUS_init = {
        (FiFun) CF34_boolean_MINUS_init,
        0L,
        0L,
        0L
};


static FiWord
CF35_sinteger_MINUS_init(FiEnv e1, FiSInt P0_idx)
{
        PFmt15 l1;
        l1 = (PFmt15) fiEnvLevel(e1);
        if (l1->X19) goto L0;
        l1->X19 = 1L;
        fiCCall0(void, (*pG_HAQ5R_sinteger));
L0:     return (FiWord) (*pG_JWPLO_sinteger__SingleInteg);
}

static struct _FiProg  tmp35_sinteger_MINUS_init = {
        (FiFun) CF35_sinteger_MINUS_init,
        0L,
        0L,
        0L
};

extern int
INIT__0_matrix()
{

        extern int INIT__0_rtexns();
        extern int INIT__0_sinteger();
        extern int INIT__0_boolean();
        extern int INIT__0_axlcat();
        extern int INIT__0_textwrit();
        extern int INIT__0_array();
        extern int INIT__0_runtime();
        static int initialized = 0;
        if (initialized)
                return 0L;
        else
                initialized = 1;
        C1_MyRing = &tmp1_MyRing;
        C2_addLevel0 = &tmp2_addLevel0;
        C3_addLevel1 = &tmp3_addLevel1;
        C4_new = &tmp4_new;
        C5_coerce = &tmp5_coerce;
        C6_coerce = &tmp6_coerce;
        C7_set_BANG_ = &tmp7_set_BANG_;
        C8__PLUS_ = &tmp8__PLUS_;
        C9__STAR_ = &tmp9__STAR_;
        C10__LT__LT_ = &tmp10__LT__LT_;
        C11_Matrix = &tmp11_Matrix;
        C12_addLevel0 = &tmp12_addLevel0;
        C13_addNameFn = &tmp13_addNameFn;
        C14_addLevel1 = &tmp14_addLevel1;
        C15_new = &tmp15_new;
        C16_apply = &tmp16_apply;
        C17_set_BANG_ = &tmp17_set_BANG_;
        C18__EQ_ = &tmp18__EQ_;
        C19__LT__LT_ = &tmp19__LT__LT_;
        C20__PLUS_ = &tmp20__PLUS_;
        C21_PackedArrayNew = &tmp21_PackedArrayNew;
        C22_PackedArrayGet = &tmp22_PackedArrayGet;
        C23_PackedArraySet = &tmp23_PackedArraySet;
        C24_PackedRecordSet = &tmp24_PackedRecordSet;
        C25_PackedRecordGet = &tmp25_PackedRecordGet;
        C26_PackedRepSize = &tmp26_PackedRepSize;
        C27_main = &tmp27_main;
        C28_lazyFnGetter = &tmp28_lazyFnGetter;
        C29_lazyGetter = &tmp29_lazyGetter;
        C30_lazyGetter2 = &tmp30_lazyGetter2;
        C31_array_MINUS_init = &tmp31_array_MINUS_init;
        C32_textwrit_MINUS_init = &tmp32_textwrit_MINUS_init;
        C33_axlcat_MINUS_init = &tmp33_axlcat_MINUS_init;
        C34_boolean_MINUS_init = &tmp34_boolean_MINUS_init;
        C35_sinteger_MINUS_init = &tmp35_sinteger_MINUS_init;
        C0_matrix = &tmp0_matrix;
        fiExportGlobal("G_1C18J_matrix", G_1C18J_matrix);
        fiExportGlobal("G_A8CY2_matrix__main__77882260",
                G_A8CY2_matrix__main__77882260);
        fiExportGlobal("G_8TVTP_matrix__Matrix__789582",
                G_8TVTP_matrix__Matrix__789582);
        fiExportGlobal("G_QRB64_matrix__MyInt__6853456",
                G_QRB64_matrix__MyInt__6853456);
        fiExportGlobal("G_F3DWK_matrix__MyRing__255446",
                G_F3DWK_matrix__MyRing__255446);
        fiImportGlobal("G_NQYQM_noOperation", pG_NQYQM_noOperation);
        fiImportGlobal("G_XIPRL_runtime", pG_XIPRL_runtime);
        fiImportGlobal("G_JP87X_rtConstSIntFn", pG_JP87X_rtConstSIntFn);
        fiImportGlobal("G_LD0B5_domainHash_BANG_", pG_LD0B5_domainHash_BANG_);
        fiImportGlobal("G_WXLY5_categoryAddExports",
                pG_WXLY5_categoryAddExports);
        fiImportGlobal("G_9VAL7_axlcat__BasicType__952",
                pG_9VAL7_axlcat__BasicType__95);
        fiImportGlobal("G_NOX7X_rtLazyCatFrInit", pG_NOX7X_rtLazyCatFrInit);
        fiImportGlobal("G_YXGL3_categoryAddParents",
                pG_YXGL3_categoryAddParents);
        fiImportGlobal("G_QRAZA_rtDelayedGetExport",
                pG_QRAZA_rtDelayedGetExport);
        fiImportGlobal("G_MNZVJ_stdGetRetWord0", pG_MNZVJ_stdGetRetWord0);
        fiImportGlobal("G_DLXW8_stdGetWordWordRetWord0",
                pG_DLXW8_stdGetWordWordRetWord);
        fiImportGlobal("G_Z2868_rtConstNameFn", pG_Z2868_rtConstNameFn);
        fiImportGlobal("G_GOVLL_categoryMake", pG_GOVLL_categoryMake);
        fiImportGlobal("G_CSVBL_domainAddNameFn_BANG_",
                pG_CSVBL_domainAddNameFn_BANG_);
        fiImportGlobal("G_XS55O_domainAddHash_BANG_",
                pG_XS55O_domainAddHash_BANG_);
        fiImportGlobal("G_PA5R2_domainAddExports_BANG_",
                pG_PA5R2_domainAddExports);
        fiImportGlobal("G_IJHFC_domainMakeDispatch",
                pG_IJHFC_domainMakeDispatch);
        fiImportGlobal("G_V9SO_domainAddDefaults_BANG_",
                pG_V9SO_domainAddDefaults);
        fiImportGlobal("G_JWPLO_sinteger__SingleIntege",
                pG_JWPLO_sinteger__SingleInteg);
        fiImportGlobal("G_KK8CX_rtLazyDomFrInit", pG_KK8CX_rtLazyDomFrInit);
        fiImportGlobal("G_LKD03_domainAddParents_BANG_",
                pG_LKD03_domainAddParents);
        fiImportGlobal("G_BEY7_domainMakeDummy", pG_BEY7_domainMakeDummy);
        fiImportGlobal("G_AK1EB_domainFill_BANG_", pG_AK1EB_domainFill_BANG_);
        fiImportGlobal("G_4NZQI_lazyGetExport_BANG_",
                pG_4NZQI_lazyGetExport_BANG_);
        fiImportGlobal("G_R3D1K_lazyForceImport", pG_R3D1K_lazyForceImport);
        fiImportGlobal("G_NBIQ7_textwrit__TextWriter__",
                pG_NBIQ7_textwrit__TextWriter);
        fiImportGlobal("G_6L1ZC_domainMake", pG_6L1ZC_domainMake);
        fiImportGlobal("G_KAC1B_rtCacheExplicitMake",
                pG_KAC1B_rtCacheExplicitMake);
        fiImportGlobal("G_759EG_rtCacheCheck", pG_759EG_rtCacheCheck);
        fiImportGlobal("G_FZP76_namePartFrString", pG_FZP76_namePartFrString);
        fiImportGlobal("G_GJ87F_domainName", pG_GJ87F_domainName);
        fiImportGlobal("G_7BRRS_namePartFrOther", pG_7BRRS_namePartFrOther);
        fiImportGlobal("G_9TG1R_namePartConcat", pG_9TG1R_namePartConcat);
        fiImportGlobal("G_H33WF_array__Array__06797563",
                pG_H33WF_array__Array__0679756);
        fiImportGlobal("G_RSHLY_rtDelayedInit_BANG_",
                pG_RSHLY_rtDelayedInit_BANG_);
        fiImportGlobal("G_ZZZKG_stdGetWordRetWord0",
                pG_ZZZKG_stdGetWordRetWord0);
        fiImportGlobal("G_B830W_stdGetWordWordWordRetW",
                pG_B830W_stdGetWordWordWordRet);
        fiImportGlobal("G_M9OLC_boolean__Boolean__4942",
                pG_M9OLC_boolean__Boolean__494);
        fiImportGlobal("G_PV28S_rtCacheAdd", pG_PV28S_rtCacheAdd);
        fiImportGlobal("G_822GM_rtAddStrings", pG_822GM_rtAddStrings);
        fiImportGlobal("G_AL27T_array", pG_AL27T_array);
        fiImportGlobal("G_EC2QI_textwrit", pG_EC2QI_textwrit);
        fiImportGlobal("G_DZOJS_axlcat", pG_DZOJS_axlcat);
        fiImportGlobal("G_P63GL_boolean", pG_P63GL_boolean);
        fiImportGlobal("G_HAQ5R_sinteger", pG_HAQ5R_sinteger);
        if (fiFileInitializer) {
                fiFileInitializer("rtexns");
                fiFileInitializer("sinteger");
                fiFileInitializer("boolean");
                fiFileInitializer("axlcat");
                fiFileInitializer("textwrit");
                fiFileInitializer("array");
                fiFileInitializer("runtime");
        }
        else {
                INIT__0_rtexns();
                INIT__0_sinteger();
                INIT__0_boolean();
                INIT__0_axlcat();
                INIT__0_textwrit();
                INIT__0_array();
                INIT__0_runtime();
        }
        /* "---------------------------" */
        return 0L;
}

FiWord G_F3DWK_matrix__MyRing__255446;
FiWord G_QRB64_matrix__MyInt__6853456;
FiClos G_8TVTP_matrix__Matrix__789582;
FiClos G_A8CY2_matrix__main__77882260;

static struct _FiClos  tmpClos0_matrix = {
        0L,
        (FiProg) &tmp0_matrix
};
FiClos G_1C18J_matrix = &tmpClos0_matrix;