#define CONS(CAR,CDR) (&(val_t) { .type = TYPE_CONS,\ .data.cons.car = CAR,\ .data.cons.cdr = CDR }) #define INTEGER(X) (&(val_t) { .type = TYPE_INTEGER,\ .data.integer = X }) #define OP(NAME,CDR) CONS(INTEGER(OP_##NAME),CDR) #define INT(X,CDR) CONS(INTEGER(X),CDR) #define IDX(X,Y,CDR) CONS(CONS(INTEGER(X),INTEGER(Y)),CDR) static val_t *asm = OP(DUM, OP(NIL, OP(LDF, CONS( OP(LDC, INT(1, OP(LD, IDX(0,0, OP(ADD, OP(SEL, CONS( OP(NIL, OP(LD, IDX(0,1, OP(LD, IDX(0,0, OP(CONS, OP(CONS, OP(LDC, INT(1, OP(LD, IDX(0,0, OP(SUB, OP(CONS, OP(LD, IDX(1,5, OP(AP, OP(JOIN, NIL))))))))))))))))), CONS( OP(LD, IDX(0,1, OP(JOIN, NIL))), OP(RTN, NIL))))))))), OP(CONS, OP(LDF, CONS( OP(LD, IDX(0,0, OP(NULL, OP(SEL, CONS( OP(NIL, OP(JOIN, NIL)), CONS( OP(NIL, OP(LD, IDX(0,0, OP(CDR, OP(CONS, OP(LD, IDX(1,4, OP(AP, OP(NIL, OP(LDF, CONS( OP(LDC, INT(0, OP(RTN, NIL))), OP(CONS, OP(LDF, CONS( OP(LDC, INT(1, OP(RTN, NIL))), OP(CONS, OP(LDF, CONS( OP(LDC, INT(-1, OP(RTN, NIL))), OP(CONS, OP(LDF, CONS( OP(LDC, INT(-1, OP(RTN, NIL))), OP(CONS, OP(LDF, CONS( OP(LDC, INT(1, OP(RTN, NIL))), OP(CONS, OP(LD, IDX(0,0, OP(CAR, OP(CONS, OP(LD, IDX(1,3, OP(AP, OP(CONS, OP(JOIN, NIL))))))))))))))))))))))))))))))))), OP(RTN, NIL))))))), OP(CONS, OP(LDF, CONS( OP(DUM, OP(NIL, OP(LDF, CONS( OP(LDC, INT(1, OP(LD, IDX(2,0, OP(SUB, OP(ST, IDX(2,0, OP(POP, OP(NIL, OP(LD, IDX(2,4, OP(CONS, OP(LD, IDX(2,3, OP(CONS, OP(LD, IDX(2,2, OP(CONS, OP(LD, IDX(2,1, OP(CONS, OP(LD, IDX(1,0, OP(CONS, OP(LD, IDX(2,0, OP(CONS, OP(LD, IDX(3,3, OP(AP, OP(RTN, NIL))))))))))))))))))))))))))))))), OP(CONS, OP(LDF, CONS( OP(NIL, OP(LDC, INT(0, OP(CONS, OP(LD, IDX(1,0, OP(CONS, OP(LD, IDX(2,2, OP(AP, OP(SEL, CONS( OP(NIL, OP(LD, IDX(1,5, OP(AP, OP(NIL, OP(LD, IDX(1,4, OP(AP, OP(ADD, OP(JOIN, NIL)))))))))), CONS( OP(NIL, OP(LD, IDX(0,0, OP(AP, OP(JOIN, NIL))))), OP(RTN, NIL)))))))))))))), OP(RAP, OP(RTN, NIL))))))))), OP(CONS, OP(LDF, CONS( OP(NIL, OP(LD, IDX(0,1, OP(CONS, OP(LD, IDX(0,0, OP(CONS, OP(LD, IDX(0,0, OP(CONS, OP(LD, IDX(1,1, OP(AP, OP(RTN, NIL)))))))))))))), OP(CONS, OP(LDF, CONS( OP(NIL, OP(LD, IDX(0,2, OP(CONS, OP(LD, IDX(0,0, OP(CONS, OP(LD, IDX(1,0, OP(AP, OP(SEL, CONS( OP(LDC, INT(1, OP(JOIN, NIL))), CONS( OP(NIL, OP(LD, IDX(0,2, OP(CONS, OP(LD, IDX(0,1, OP(CONS, OP(LD, IDX(1,0, OP(AP, OP(SEL, CONS( OP(LDC, INT(0, OP(JOIN, NIL))), CONS( OP(NIL, OP(LD, IDX(0,2, OP(CONS, OP(LDC, INT(1, OP(LD, IDX(0,1, OP(SUB, OP(CONS, OP(LDC, INT(1, OP(LD, IDX(0,0, OP(ADD, OP(CONS, OP(LD, IDX(1,1, OP(AP, OP(JOIN, NIL)))))))))))))))))))), OP(JOIN, NIL)))))))))))))), OP(RTN, NIL)))))))))))))), OP(CONS, OP(LDF, CONS( OP(LD, IDX(0,1, OP(LD, IDX(0,0, OP(SUB, OP(SEL, CONS( OP(LDC, INT(0, OP(JOIN, NIL))), CONS( OP(LDC, INT(1, OP(JOIN, NIL))), OP(RTN, NIL))))))))), OP(CONS, OP(LDF, CONS( OP(NIL, OP(NIL, OP(NIL, OP(CONS, OP(LDC, INT(13, OP(CONS, OP(LD, IDX(0,5, OP(AP, OP(CONS, OP(LD, IDX(0,4, OP(AP, OP(RTN, NIL))))))))))))))), OP(RAP, OP(STOP, NIL))))))))))))))))))))))));