/* Generated from main.ss by the Chicken compiler
   2009-03-23 22:13
   Version 1, Build 63 - linux-unix-gnu-x86
   command line: main.ss
   used units: library eval extras
   default installation home: /usr/share/chicken
   default heap size: 0
   default nursery (stack) size: 65536
*/

#include "chicken.h"

C_externimport void C_library_toplevel(C_word c,C_word d,C_word k) C_noret;
C_externimport void C_eval_toplevel(C_word c,C_word d,C_word k) C_noret;
C_externimport void C_extras_toplevel(C_word c,C_word d,C_word k) C_noret;

static C_TLS C_word lf[19];


C_externexport void C_toplevel(C_word c,C_word t0,C_word t1) C_noret;
static void f_27(C_word c,C_word t0,C_word t1) C_noret;
static void f_30(C_word c,C_word t0,C_word t1) C_noret;
static void f_33(C_word c,C_word t0,C_word t1) C_noret;
static void f_51(C_word c,C_word t0,C_word t1) C_noret;
static void f_96(C_word c,C_word t0,C_word t1) C_noret;
static void f_132(C_word c,C_word t0,C_word t1) C_noret;
static void f_99(C_word c,C_word t0,C_word t1) C_noret;
static void f_102(C_word c,C_word t0,C_word t1) C_noret;
static void f_128(C_word c,C_word t0,C_word t1) C_noret;
static void f_105(C_word c,C_word t0,C_word t1) C_noret;
static void f_108(C_word c,C_word t0,C_word t1) C_noret;
static void f_124(C_word c,C_word t0,C_word t1) C_noret;
static void f_111(C_word c,C_word t0,C_word t1) C_noret;
static void f_114(C_word c,C_word t0,C_word t1) C_noret;
static void f_120(C_word c,C_word t0,C_word t1) C_noret;
static void f_79(C_word c,C_word t0,C_word t1,C_word t2) C_noret;
static void f_86(C_word c,C_word t0,C_word t1) C_noret;
static void f_93(C_word c,C_word t0,C_word t1) C_noret;
static void f_55(C_word c,C_word t0,C_word t1,C_word t2) C_noret;
static void f_62(C_word c,C_word t0,C_word t1) C_noret;
static void f_69(C_word c,C_word t0,C_word t1) C_noret;
static void f_77(C_word c,C_word t0,C_word t1) C_noret;
static void f_73(C_word c,C_word t0,C_word t1) C_noret;
static void f_35(C_word c,C_word t0,C_word t1,C_word t2,C_word t3) C_noret;
static void f_47(C_word c,C_word t0,C_word t1) C_noret;
static void f_43(C_word c,C_word t0,C_word t1) C_noret;

static void C_fcall tr4(C_proc4 k) C_regparm C_noret;
C_regparm static void C_fcall tr4(C_proc4 k){
C_word t3=C_pick(0);
C_word t2=C_pick(1);
C_word t1=C_pick(2);
C_word t0=C_pick(3);
C_adjust_stack(-4);
(k)(4,t0,t1,t2,t3);}

static void C_fcall tr3(C_proc3 k) C_regparm C_noret;
C_regparm static void C_fcall tr3(C_proc3 k){
C_word t2=C_pick(0);
C_word t1=C_pick(1);
C_word t0=C_pick(2);
C_adjust_stack(-3);
(k)(3,t0,t1,t2);}

static void C_fcall tr2(C_proc2 k) C_regparm C_noret;
C_regparm static void C_fcall tr2(C_proc2 k){
C_word t1=C_pick(0);
C_word t0=C_pick(1);
C_adjust_stack(-2);
(k)(2,t0,t1);}

/* toplevel */
static C_TLS int toplevel_initialized=0;
C_main_entry_point
static void C_fcall toplevel_trampoline(void *dummy) C_regparm C_noret;
C_regparm static void C_fcall toplevel_trampoline(void *dummy){
C_toplevel(2,C_SCHEME_UNDEFINED,C_restore);}

void C_toplevel(C_word c,C_word t0,C_word t1){
C_word tmp;
C_word t2;
C_word t3;
C_word *a;
if(toplevel_initialized) C_kontinue(t1,C_SCHEME_UNDEFINED);
else C_toplevel_entry(C_text("toplevel"));
C_resize_stack(65536);
C_check_nursery_minimum(3);
if(!C_demand(3)){
C_save(t1);
C_reclaim((void*)toplevel_trampoline,NULL);}
toplevel_initialized=1;
if(!C_demand_2(231)){
C_save(t1);
C_rereclaim2(231*sizeof(C_word), 1);
t1=C_restore;}
a=C_alloc(3);
C_initialize_lf(lf,19);
lf[0]=C_h_intern(&lf[0],3,"pow");
lf[1]=C_h_intern(&lf[1],3,"exp");
lf[2]=C_h_intern(&lf[2],1,"*");
lf[3]=C_h_intern(&lf[3],3,"log");
lf[4]=C_h_intern(&lf[4],2,"im");
lf[5]=C_h_intern(&lf[5],4,"head");
lf[6]=C_h_intern(&lf[6],3,"car");
lf[7]=C_h_intern(&lf[7],4,"tail");
lf[8]=C_h_intern(&lf[8],3,"cdr");
lf[9]=C_h_intern(&lf[9],12,"odd-elements");
lf[10]=C_h_intern(&lf[10],4,"cons");
lf[11]=C_h_intern(&lf[11],13,"even-elements");
lf[12]=C_h_intern(&lf[12],5,"null\077");
lf[13]=C_h_intern(&lf[13],25,"\003sysimplicit-exit-handler");
lf[14]=C_h_intern(&lf[14],7,"newline");
lf[15]=C_h_intern(&lf[15],7,"display");
tmp=C_fix(1);
C_save(tmp);
tmp=C_fix(2);
C_save(tmp);
tmp=C_fix(3);
C_save(tmp);
lf[16]=C_h_list(3,C_pick(2),C_pick(1),C_pick(0));
C_drop(3);
lf[17]=C_h_intern(&lf[17],4,"sqrt");
lf[18]=C_string(C_heaptop,6,"hello\012");
C_register_lf(lf,19);
t2=(*a=C_CLOSURE_TYPE|2,a[1]=(C_word)f_27,a[2]=t1,tmp=(C_word)a,a+=3,tmp);
C_library_toplevel(2,C_SCHEME_UNDEFINED,t2);}

/* k25 */
static void f_27(C_word c,C_word t0,C_word t1){
C_word tmp;
C_word t2;
C_word t3;
C_word ab[3],*a=ab;
C_check_for_interrupt;
if(!C_stack_probe(&a)){
C_save_and_reclaim((void*)tr2,(void*)f_27,2,t0,t1);}
t2=(*a=C_CLOSURE_TYPE|2,a[1]=(C_word)f_30,a[2]=((C_word*)t0)[2],tmp=(C_word)a,a+=3,tmp);
C_eval_toplevel(2,C_SCHEME_UNDEFINED,t2);}

/* k28 in k25 */
static void f_30(C_word c,C_word t0,C_word t1){
C_word tmp;
C_word t2;
C_word t3;
C_word ab[3],*a=ab;
C_check_for_interrupt;
if(!C_stack_probe(&a)){
C_save_and_reclaim((void*)tr2,(void*)f_30,2,t0,t1);}
t2=(*a=C_CLOSURE_TYPE|2,a[1]=(C_word)f_33,a[2]=((C_word*)t0)[2],tmp=(C_word)a,a+=3,tmp);
C_extras_toplevel(2,C_SCHEME_UNDEFINED,t2);}

/* k31 in k28 in k25 */
static void f_33(C_word c,C_word t0,C_word t1){
C_word tmp;
C_word t2;
C_word t3;
C_word t4;
C_word ab[5],*a=ab;
C_check_for_interrupt;
if(!C_stack_probe(&a)){
C_save_and_reclaim((void*)tr2,(void*)f_33,2,t0,t1);}
t2=C_mutate((C_word*)lf[0]+1,(*a=C_CLOSURE_TYPE|1,a[1]=(C_word)f_35,tmp=(C_word)a,a+=2,tmp));
t3=(*a=C_CLOSURE_TYPE|2,a[1]=(C_word)f_51,a[2]=((C_word*)t0)[2],tmp=(C_word)a,a+=3,tmp);
C_trace("main.ss: 2    sqrt");
t4=C_retrieve(lf[17]);
((C_proc3)C_retrieve_proc(t4))(3,t4,t3,C_fix(-1));}

/* k49 in k31 in k28 in k25 */
static void f_51(C_word c,C_word t0,C_word t1){
C_word tmp;
C_word t2;
C_word t3;
C_word t4;
C_word t5;
C_word t6;
C_word t7;
C_word t8;
C_word ab[7],*a=ab;
C_check_for_interrupt;
if(!C_stack_probe(&a)){
C_save_and_reclaim((void*)tr2,(void*)f_51,2,t0,t1);}
t2=C_mutate((C_word*)lf[4]+1,t1);
t3=C_mutate((C_word*)lf[5]+1,C_retrieve(lf[6]));
t4=C_mutate((C_word*)lf[7]+1,C_retrieve(lf[8]));
t5=C_mutate((C_word*)lf[9]+1,(*a=C_CLOSURE_TYPE|1,a[1]=(C_word)f_55,tmp=(C_word)a,a+=2,tmp));
t6=C_mutate((C_word*)lf[11]+1,(*a=C_CLOSURE_TYPE|1,a[1]=(C_word)f_79,tmp=(C_word)a,a+=2,tmp));
t7=(*a=C_CLOSURE_TYPE|2,a[1]=(C_word)f_96,a[2]=((C_word*)t0)[2],tmp=(C_word)a,a+=3,tmp);
C_trace("main.ss: 13   display");
t8=C_retrieve(lf[15]);
((C_proc3)C_retrieve_proc(t8))(3,t8,t7,lf[18]);}

/* k94 in k49 in k31 in k28 in k25 */
static void f_96(C_word c,C_word t0,C_word t1){
C_word tmp;
C_word t2;
C_word t3;
C_word t4;
C_word ab[6],*a=ab;
C_check_for_interrupt;
if(!C_stack_probe(&a)){
C_save_and_reclaim((void*)tr2,(void*)f_96,2,t0,t1);}
t2=(*a=C_CLOSURE_TYPE|2,a[1]=(C_word)f_99,a[2]=((C_word*)t0)[2],tmp=(C_word)a,a+=3,tmp);
t3=(*a=C_CLOSURE_TYPE|2,a[1]=(C_word)f_132,a[2]=t2,tmp=(C_word)a,a+=3,tmp);
C_trace("main.ss: 14   sqrt");
t4=C_retrieve(lf[17]);
((C_proc3)C_retrieve_proc(t4))(3,t4,t3,C_fix(-1));}

/* k130 in k94 in k49 in k31 in k28 in k25 */
static void f_132(C_word c,C_word t0,C_word t1){
C_word tmp;
C_word t2;
C_word *a;
C_trace("main.ss: 14   display");
t2=C_retrieve(lf[15]);
((C_proc3)C_retrieve_proc(t2))(3,t2,((C_word*)t0)[2],t1);}

/* k97 in k94 in k49 in k31 in k28 in k25 */
static void f_99(C_word c,C_word t0,C_word t1){
C_word tmp;
C_word t2;
C_word t3;
C_word ab[3],*a=ab;
C_check_for_interrupt;
if(!C_stack_probe(&a)){
C_save_and_reclaim((void*)tr2,(void*)f_99,2,t0,t1);}
t2=(*a=C_CLOSURE_TYPE|2,a[1]=(C_word)f_102,a[2]=((C_word*)t0)[2],tmp=(C_word)a,a+=3,tmp);
C_trace("main.ss: 14   newline");
t3=C_retrieve(lf[14]);
((C_proc2)C_retrieve_proc(t3))(2,t3,t2);}

/* k100 in k97 in k94 in k49 in k31 in k28 in k25 */
static void f_102(C_word c,C_word t0,C_word t1){
C_word tmp;
C_word t2;
C_word t3;
C_word t4;
C_word ab[6],*a=ab;
C_check_for_interrupt;
if(!C_stack_probe(&a)){
C_save_and_reclaim((void*)tr2,(void*)f_102,2,t0,t1);}
t2=(*a=C_CLOSURE_TYPE|2,a[1]=(C_word)f_105,a[2]=((C_word*)t0)[2],tmp=(C_word)a,a+=3,tmp);
t3=(*a=C_CLOSURE_TYPE|2,a[1]=(C_word)f_128,a[2]=t2,tmp=(C_word)a,a+=3,tmp);
C_trace("main.ss: 15   pow");
t4=*((C_word*)lf[0]+1);
((C_proc4)C_retrieve_proc(t4))(4,t4,t3,*((C_word*)lf[4]+1),C_fix(2));}

/* k126 in k100 in k97 in k94 in k49 in k31 in k28 in k25 */
static void f_128(C_word c,C_word t0,C_word t1){
C_word tmp;
C_word t2;
C_word *a;
C_trace("main.ss: 15   display");
t2=C_retrieve(lf[15]);
((C_proc3)C_retrieve_proc(t2))(3,t2,((C_word*)t0)[2],t1);}

/* k103 in k100 in k97 in k94 in k49 in k31 in k28 in k25 */
static void f_105(C_word c,C_word t0,C_word t1){
C_word tmp;
C_word t2;
C_word t3;
C_word ab[3],*a=ab;
C_check_for_interrupt;
if(!C_stack_probe(&a)){
C_save_and_reclaim((void*)tr2,(void*)f_105,2,t0,t1);}
t2=(*a=C_CLOSURE_TYPE|2,a[1]=(C_word)f_108,a[2]=((C_word*)t0)[2],tmp=(C_word)a,a+=3,tmp);
C_trace("main.ss: 15   newline");
t3=C_retrieve(lf[14]);
((C_proc2)C_retrieve_proc(t3))(2,t3,t2);}

/* k106 in k103 in k100 in k97 in k94 in k49 in k31 in k28 in k25 */
static void f_108(C_word c,C_word t0,C_word t1){
C_word tmp;
C_word t2;
C_word t3;
C_word t4;
C_word ab[6],*a=ab;
C_check_for_interrupt;
if(!C_stack_probe(&a)){
C_save_and_reclaim((void*)tr2,(void*)f_108,2,t0,t1);}
t2=(*a=C_CLOSURE_TYPE|2,a[1]=(C_word)f_111,a[2]=((C_word*)t0)[2],tmp=(C_word)a,a+=3,tmp);
t3=(*a=C_CLOSURE_TYPE|2,a[1]=(C_word)f_124,a[2]=t2,tmp=(C_word)a,a+=3,tmp);
C_trace("main.ss: 16   even-elements");
t4=C_retrieve(lf[11]);
((C_proc3)C_retrieve_proc(t4))(3,t4,t3,lf[16]);}

/* k122 in k106 in k103 in k100 in k97 in k94 in k49 in k31 in k28 in k25 */
static void f_124(C_word c,C_word t0,C_word t1){
C_word tmp;
C_word t2;
C_word *a;
C_trace("main.ss: 16   display");
t2=C_retrieve(lf[15]);
((C_proc3)C_retrieve_proc(t2))(3,t2,((C_word*)t0)[2],t1);}

/* k109 in k106 in k103 in k100 in k97 in k94 in k49 in k31 in k28 in k25 */
static void f_111(C_word c,C_word t0,C_word t1){
C_word tmp;
C_word t2;
C_word t3;
C_word ab[3],*a=ab;
C_check_for_interrupt;
if(!C_stack_probe(&a)){
C_save_and_reclaim((void*)tr2,(void*)f_111,2,t0,t1);}
t2=(*a=C_CLOSURE_TYPE|2,a[1]=(C_word)f_114,a[2]=((C_word*)t0)[2],tmp=(C_word)a,a+=3,tmp);
C_trace("main.ss: 16   newline");
t3=C_retrieve(lf[14]);
((C_proc2)C_retrieve_proc(t3))(2,t3,t2);}

/* k112 in k109 in k106 in k103 in k100 in k97 in k94 in k49 in k31 in k28 in k25 */
static void f_114(C_word c,C_word t0,C_word t1){
C_word tmp;
C_word t2;
C_word t3;
C_word ab[3],*a=ab;
C_check_for_interrupt;
if(!C_stack_probe(&a)){
C_save_and_reclaim((void*)tr2,(void*)f_114,2,t0,t1);}
t2=(*a=C_CLOSURE_TYPE|2,a[1]=(C_word)f_120,a[2]=((C_word*)t0)[2],tmp=(C_word)a,a+=3,tmp);
C_trace("##sys#implicit-exit-handler");
t3=C_retrieve(lf[13]);
((C_proc2)C_retrieve_proc(t3))(2,t3,t2);}

/* k118 in k112 in k109 in k106 in k103 in k100 in k97 in k94 in k49 in k31 in k28 in k25 */
static void f_120(C_word c,C_word t0,C_word t1){
C_word tmp;
C_word t2;
C_word *a;
t2=t1;
((C_proc2)C_retrieve_proc(t2))(2,t2,((C_word*)t0)[2]);}

/* even-elements in k49 in k31 in k28 in k25 */
static void f_79(C_word c,C_word t0,C_word t1,C_word t2){
C_word tmp;
C_word t3;
C_word t4;
C_word ab[4],*a=ab;
if(c!=3) C_bad_argc(c,3);
C_check_for_interrupt;
if(!C_stack_probe(&a)){
C_save_and_reclaim((void*)tr3,(void*)f_79,3,t0,t1,t2);}
t3=(*a=C_CLOSURE_TYPE|3,a[1]=(C_word)f_86,a[2]=t2,a[3]=t1,tmp=(C_word)a,a+=4,tmp);
C_trace("main.ss: 10   null?");
t4=C_retrieve(lf[12]);
((C_proc3)C_retrieve_proc(t4))(3,t4,t3,t2);}

/* k84 in even-elements in k49 in k31 in k28 in k25 */
static void f_86(C_word c,C_word t0,C_word t1){
C_word tmp;
C_word t2;
C_word t3;
C_word ab[3],*a=ab;
C_check_for_interrupt;
if(!C_stack_probe(&a)){
C_save_and_reclaim((void*)tr2,(void*)f_86,2,t0,t1);}
if(C_truep(t1)){
t2=((C_word*)t0)[3];
((C_proc2)(void*)(*((C_word*)t2+1)))(2,t2,C_SCHEME_END_OF_LIST);}
else{
t2=(*a=C_CLOSURE_TYPE|2,a[1]=(C_word)f_93,a[2]=((C_word*)t0)[3],tmp=(C_word)a,a+=3,tmp);
C_trace("main.ss: 10   tail");
t3=C_retrieve(lf[7]);
((C_proc3)C_retrieve_proc(t3))(3,t3,t2,((C_word*)t0)[2]);}}

/* k91 in k84 in even-elements in k49 in k31 in k28 in k25 */
static void f_93(C_word c,C_word t0,C_word t1){
C_word tmp;
C_word t2;
C_word *a;
C_trace("main.ss: 10   odd-elements");
t2=C_retrieve(lf[9]);
((C_proc3)C_retrieve_proc(t2))(3,t2,((C_word*)t0)[2],t1);}

/* odd-elements in k49 in k31 in k28 in k25 */
static void f_55(C_word c,C_word t0,C_word t1,C_word t2){
C_word tmp;
C_word t3;
C_word t4;
C_word ab[4],*a=ab;
if(c!=3) C_bad_argc(c,3);
C_check_for_interrupt;
if(!C_stack_probe(&a)){
C_save_and_reclaim((void*)tr3,(void*)f_55,3,t0,t1,t2);}
t3=(*a=C_CLOSURE_TYPE|3,a[1]=(C_word)f_62,a[2]=t2,a[3]=t1,tmp=(C_word)a,a+=4,tmp);
C_trace("main.ss: 7    null?");
t4=C_retrieve(lf[12]);
((C_proc3)C_retrieve_proc(t4))(3,t4,t3,t2);}

/* k60 in odd-elements in k49 in k31 in k28 in k25 */
static void f_62(C_word c,C_word t0,C_word t1){
C_word tmp;
C_word t2;
C_word t3;
C_word ab[4],*a=ab;
C_check_for_interrupt;
if(!C_stack_probe(&a)){
C_save_and_reclaim((void*)tr2,(void*)f_62,2,t0,t1);}
if(C_truep(t1)){
t2=((C_word*)t0)[3];
((C_proc2)(void*)(*((C_word*)t2+1)))(2,t2,C_SCHEME_END_OF_LIST);}
else{
t2=(*a=C_CLOSURE_TYPE|3,a[1]=(C_word)f_69,a[2]=((C_word*)t0)[2],a[3]=((C_word*)t0)[3],tmp=(C_word)a,a+=4,tmp);
C_trace("main.ss: 7    head");
t3=C_retrieve(lf[5]);
((C_proc3)C_retrieve_proc(t3))(3,t3,t2,((C_word*)t0)[2]);}}

/* k67 in k60 in odd-elements in k49 in k31 in k28 in k25 */
static void f_69(C_word c,C_word t0,C_word t1){
C_word tmp;
C_word t2;
C_word t3;
C_word t4;
C_word ab[7],*a=ab;
C_check_for_interrupt;
if(!C_stack_probe(&a)){
C_save_and_reclaim((void*)tr2,(void*)f_69,2,t0,t1);}
t2=(*a=C_CLOSURE_TYPE|3,a[1]=(C_word)f_73,a[2]=t1,a[3]=((C_word*)t0)[3],tmp=(C_word)a,a+=4,tmp);
t3=(*a=C_CLOSURE_TYPE|2,a[1]=(C_word)f_77,a[2]=t2,tmp=(C_word)a,a+=3,tmp);
C_trace("main.ss: 7    tail");
t4=C_retrieve(lf[7]);
((C_proc3)C_retrieve_proc(t4))(3,t4,t3,((C_word*)t0)[2]);}

/* k75 in k67 in k60 in odd-elements in k49 in k31 in k28 in k25 */
static void f_77(C_word c,C_word t0,C_word t1){
C_word tmp;
C_word t2;
C_word *a;
C_trace("main.ss: 7    even-elements");
t2=C_retrieve(lf[11]);
((C_proc3)C_retrieve_proc(t2))(3,t2,((C_word*)t0)[2],t1);}

/* k71 in k67 in k60 in odd-elements in k49 in k31 in k28 in k25 */
static void f_73(C_word c,C_word t0,C_word t1){
C_word tmp;
C_word t2;
C_word *a;
C_trace("main.ss: 7    cons");
t2=C_retrieve(lf[10]);
((C_proc4)C_retrieve_proc(t2))(4,t2,((C_word*)t0)[3],((C_word*)t0)[2],t1);}

/* pow in k31 in k28 in k25 */
static void f_35(C_word c,C_word t0,C_word t1,C_word t2,C_word t3){
C_word tmp;
C_word t4;
C_word t5;
C_word t6;
C_word ab[7],*a=ab;
if(c!=4) C_bad_argc(c,4);
C_check_for_interrupt;
if(!C_stack_probe(&a)){
C_save_and_reclaim((void*)tr4,(void*)f_35,4,t0,t1,t2,t3);}
t4=(*a=C_CLOSURE_TYPE|2,a[1]=(C_word)f_43,a[2]=t1,tmp=(C_word)a,a+=3,tmp);
t5=(*a=C_CLOSURE_TYPE|3,a[1]=(C_word)f_47,a[2]=t3,a[3]=t4,tmp=(C_word)a,a+=4,tmp);
C_trace("main.ss: 1    log");
t6=C_retrieve(lf[3]);
((C_proc3)C_retrieve_proc(t6))(3,t6,t5,t2);}

/* k45 in pow in k31 in k28 in k25 */
static void f_47(C_word c,C_word t0,C_word t1){
C_word tmp;
C_word t2;
C_word *a;
C_trace("main.ss: 1    *");
t2=C_retrieve(lf[2]);
((C_proc4)C_retrieve_proc(t2))(4,t2,((C_word*)t0)[3],((C_word*)t0)[2],t1);}

/* k41 in pow in k31 in k28 in k25 */
static void f_43(C_word c,C_word t0,C_word t1){
C_word tmp;
C_word t2;
C_word *a;
C_trace("main.ss: 1    exp");
t2=C_retrieve(lf[1]);
((C_proc3)C_retrieve_proc(t2))(3,t2,((C_word*)t0)[2],t1);}
/* end of file */
