changeset 78:365b84b6fe04

more examples
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 20 Sep 2011 17:32:20 +0900
parents 65b2ea5f1266
children b0f061ae1da0
files CbC-examples/arg.c CbC-examples/fact-a.c CbC-examples/goto.c CbC-examples/test1.c CbC-examples/test2.c CbC-examples/tmp1.c CbC-examples/tmp2.c CbC-examples/tmp4.c CbC-examples/tmpa.c CbC-examples/too-long-argument.c
diffstat 10 files changed, 758 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CbC-examples/arg.c	Tue Sep 20 17:32:20 2011 +0900
@@ -0,0 +1,104 @@
+#include "stdio.h"
+
+#define __environment _CbC_environment
+#define __return _CbC_return
+
+
+struct arg {
+   int a0;int a1;int a2;int a3;int a4;
+};
+
+extern void exit(int); 
+
+void *exit_env;
+__code (*exit___code)();
+
+__code carg1(int arg0,int arg1,int arg2,int arg3,int arg4,__code(*exit1)(),void *env)
+{
+    printf("#0017:arg1: %d %d %d %d %d : %x %x\n",arg0,arg1,arg2,arg3,arg4,exit1==exit___code,env==exit_env);
+    goto carg2(arg1,arg2,arg3,arg4,arg0,exit1,env);
+}
+
+__code carg2(int arg0,int arg1,int arg2,int arg3,int arg4,__code(*exit1)(),void *env)
+{
+    struct arg args0;
+    printf("#0024:arg1: %d %d %d %d %d : %x %x\n",arg0,arg1,arg2,arg3,arg4,exit1==exit___code,env==exit_env );
+    args0.a0 = arg0;
+    args0.a1 = arg1;
+    args0.a2 = arg2;
+    args0.a3 = arg3;
+    args0.a4 = arg4;
+    goto cargs(args0,exit1,env);
+}
+
+__code cargs(struct arg args0,__code exit1(),void *env)
+{
+    printf("#0035:args: %d %d %d %d %d : %x %x\n",
+	args0.a0,args0.a1,args0.a2,args0.a3,args0.a4,
+    exit1==exit___code,env==exit_env);
+    // goto exit1(321),env;
+    goto (*exit1)(0,env);
+}
+
+
+__code carg3(struct arg args0,struct arg args1,int i, int j,int k,int l)
+{
+    printf("#0045:args3: %d %d %d %d %d : %x %x %x %x\n",
+	args0.a0,args0.a1,args0.a2,args0.a3,args0.a4,i,j,k,l);
+    printf("#0047:args3: args0 %d %d %d %d %d : args1 %d %d %d %d %d : %x %x %x %x\n",
+	args0.a0,args0.a1,args0.a2,args0.a3,args0.a4,
+	args1.a0,args1.a1,args1.a2,args1.a3,args1.a4,
+	i,j,k,l);
+    if (args0.a0==args1.a0) exit(0);
+    goto carg4(args0,args1,j,k,l,i);
+}
+
+__code carg4(struct arg args0,struct arg args1,int i, int j,int k,int l)
+{
+    printf("#0057:args4: %d %d %d %d %d : %x %x %x %x\n",
+	args0.a0,args0.a1,args0.a2,args0.a3,args0.a4,i,j,k,l);
+    goto carg5(args1,args0,j,k,l,i);
+}
+
+__code carg5(struct arg args0,struct arg args1,int i, int j,int k,int l)
+{
+    printf("#0064:args5: %d %d %d %d %d : %x %x %x %x\n",
+	args0.a0,args0.a1,args0.a2,args0.a3,args0.a4,i,j,k,l);
+    goto carg6(i,j,k,l,args0);
+}
+
+__code carg6(int i, int j,int k,int l,struct arg args0)
+{
+    printf("#0071:args6: %d %d %d %d %d : %x %x %x %x\n",
+	args0.a0,args0.a1,args0.a2,args0.a3,args0.a4,i,j,k,l);
+    goto carg3(args0,args0,i,j,k,l);
+}
+
+int main1(int n)
+{
+    goto carg1(0,1,2,3,4,exit___code=__return,exit_env=__environment);
+    return n;
+}
+
+struct arg a00;
+struct arg a01;
+
+int main( int ac, char *av[])
+{
+    int n;
+    n = main1(123);
+    printf("#0089:321=%d\n",n);
+
+    a00.a0 = 11;
+    a00.a1 = 22;
+    a00.a2 = 33;
+    a00.a3 = 44;
+    a00.a4 = 55;
+    a01.a0 = 66;
+    a01.a1 = 77;
+    a01.a2 = 88;
+    a01.a3 = 99;
+    a01.a4 = 10;
+    goto carg3(a00,a01,1,2,3,4);
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CbC-examples/fact-a.c	Tue Sep 20 17:32:20 2011 +0900
@@ -0,0 +1,36 @@
+#define __environment _CbC_environment
+#define __return _CbC_return
+
+#include "stdio.h"
+
+__code factorial(int n,int result,int orig,__code(*print)(),__code(*exit1)(), void *exit1env)
+{
+    if (n<0) {
+	printf("#0008:err %d!\n",n);
+	goto (*exit1)(0,exit1env);
+    }
+    if (n==0)
+	goto (*print)(n,result,orig,print,exit1,exit1env);
+    else {
+	result *= n;
+	n--;
+	goto factorial(n,result,orig,print,exit1,exit1env);
+    }
+}
+
+__code print(int n,int result,int orig,__code(*print)(),__code (*exit1)(),void*exit1env);
+
+int main( int ac, char *av[])
+{
+    int n;
+    // n = atoi(av[1]);
+    n = 10;
+    goto factorial(n,1,n,print,__return,__environment);
+}
+
+__code print(int n,int result,int orig,__code(*print)(),__code (*exit1)(),void*exit1env)
+{
+    printf("#0032:%d! = %d\n",orig, result);
+    goto (*exit1)(0,exit1env);
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CbC-examples/goto.c	Tue Sep 20 17:32:20 2011 +0900
@@ -0,0 +1,96 @@
+#define __environment _CbC_environment
+#define __return _CbC_return
+
+extern int printf(const char *,...);
+
+__code (*conv)(int,__code (*)());
+__code a2(int i,__code conv());
+__code a3(int i,__code conv());
+__code a4(int i,__code conv());
+__code a5(int i,__code conv());
+__code a6();
+__code a7();
+__code a8();
+__code a9();
+
+char* print_conv(__code conv());
+
+__code (*exit0)(int,void*);
+void *env;
+
+__code
+a2(int i,__code conv())
+{
+    printf("#0023:a2 %d %s\n",i,print_conv(conv));
+    goto conv(i+1,a4);
+}
+
+__code
+a3(int i,__code (*conv)())
+{
+    printf("#0030:a3 %d %s\n",i,print_conv(conv));
+    goto conv(i+1,a5);
+}
+
+__code
+a4(int i,__code conv())
+{
+    printf("#0037:a4 %d %s\n",i,print_conv(conv));
+    goto (*conv)(i+1,a6);
+}
+
+__code
+a5(int i,__code (*conv)())
+{
+    printf("#0044:a5 %d %s\n",i,print_conv(conv));
+    goto (*conv)(i+1,i+2,i+3,a7);
+}
+
+__code
+a6(int i,int j,int k,__code conv())
+{
+    printf("#0051:a6 %d %s\n",i,print_conv(conv));
+    goto conv(i+1,j,k,a8);
+}
+
+__code
+a7(int i,int j,int k,__code (*conv)())
+{
+    printf("#0058:a7 %d %s\n",i,print_conv(conv));
+    goto conv(i+1,j,k,a9);
+}
+
+__code
+a8(int i,int j,int k,__code conv())
+{
+    printf("#0065:a8 %d %s\n",i,print_conv(conv));
+    goto (*conv)(i+1,j,k,exit0);
+}
+
+__code
+a9(int i,int j,int k,__code (*conv)())
+{
+    printf("#0072:a9 %d %s\n",i,print_conv(conv));
+    goto (*conv)(0,env);
+}
+
+main(int ac,char *av[]) {
+    exit0 = __return;
+    env   = __environment;
+    conv = a2;
+    goto conv(1,a3);
+}
+
+char*
+print_conv(__code conv())
+{
+    if(conv==a2) return "a2";
+    if(conv==a3) return "a3";
+    if(conv==a4) return "a4";
+    if(conv==a5) return "a5";
+    if(conv==a6) return "a6";
+    if(conv==a7) return "a7";
+    if(conv==a8) return "a8";
+    if(conv==a9) return "a9";
+    else return "xx";
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CbC-examples/test1.c	Tue Sep 20 17:32:20 2011 +0900
@@ -0,0 +1,125 @@
+#define __environment _CbC_environment
+#define __return _CbC_return
+
+/*
+    test for CbC converted __code from C
+ */
+
+#include <stdio.h>
+
+extern void *malloc(int);
+
+typedef void *stack;
+
+void *stack0;      /* size of void* == 1 */
+
+struct cont_save { /* General Return Continuation */
+    __code (*ret)();
+};
+
+/*
+    __code g(int,void *);
+    __code f_g0(int ,int ,void *);
+    __code f_g1(int,void *);
+*/
+
+struct f_g0_save {  /* Specialized Return Continuation */
+    __code (*ret)();
+    int ii,kk,jj;
+};
+
+__code g(int i,void *sp) {
+    goto (* ((struct cont_save *)sp)->ret)(i+4,sp);
+}
+
+__code f_g1(int j,void *sp) {  /* Continuation  */
+    int k;
+    struct f_g0_save *c;
+
+    c = sp;
+    k = c->kk;
+    sp += sizeof(struct f_g0_save);
+    goto (* ((struct cont_save *)sp)->ret)(k+4+j,sp);
+}
+
+__code f(int i,void *sp) {
+    int k,j;
+    struct f_g0_save *c;
+printf("#0047:f 0 sp: %x\n",sp-stack0);
+
+    k = 3+i;
+
+printf("#0051:f 1 sp: %x\n",sp-stack0);
+    sp -= sizeof(struct f_g0_save);
+printf("#0053:f 2 sp: %x\n",sp-stack0);
+    c = sp;
+    c->kk = k;
+    c->ii = i;
+    c->jj = j;
+    c->ret = f_g1;
+    goto g(i,sp);
+}
+
+
+
+struct f0_save {  /* Specialized Return Continuation */
+	__code (*ret)();
+	__code (*exit1)();
+	void *exit1env;
+	int jj;
+};
+
+__code f1(int i,void *sp) ;
+__code f0(int i,int j,__code(*exit2)(), void *exit2env,void *sp)
+{
+	struct f0_save *c;
+    printf("#0075:f0 1 sp: %x\n",sp-stack0);
+	sp -= sizeof(struct f0_save);
+    printf("#0077:f0 2 sp: %x\n",sp-stack0);
+	c = sp;
+	c->jj = j;
+        c->exit1 = exit2;
+        c->exit1env = exit2env;
+	c->ret = f1;
+    printf("#0083:f0 3 sp: %x\n",sp-stack0);
+	goto f(i,sp);
+}
+
+__code print(int i,int j,__code (*exit1)(),void*exit1env);
+
+__code f1(int i,void *sp) {
+	int j;
+	int *exit2env;
+	__code (*exit2)();
+	struct f0_save *c;
+
+        c = sp;
+        j = c->jj;
+        exit2 = c->exit1;
+        exit2env = c->exit1env;
+
+	sp += sizeof(struct f0_save);
+	goto print(i,j,exit2,exit2env);
+}
+
+int main( int ac, char *av[])
+{
+    int i,j;
+    int *sp;
+
+    // i = atoi(av[1]);
+    i = 1;
+    stack0 = ((char *)malloc(1024)+1024);
+    sp = stack0;
+    j = i;
+    
+    printf("#0115:sp: %x %x\n",sp-(int*)stack0,sizeof(*stack0));
+    goto f0(i,j,__return,__environment,sp);
+}
+
+__code print(int i,int j,__code (*exit1)(),void*exit1env)
+{
+    printf("#0121:%d %d\n",i,j);
+    goto (*exit1)(0,exit1env);
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CbC-examples/test2.c	Tue Sep 20 17:32:20 2011 +0900
@@ -0,0 +1,45 @@
+#define __environment _CbC_environment
+#define __return _CbC_return
+
+#include <stdio.h>
+int sender_bit;
+
+__code (*ret)(int,void *);
+void *env;
+
+struct packet {
+        int bit;
+        char *msg;
+        __code (*next)();
+};
+
+__code print_struct(struct packet pkt)
+{
+        printf("#0017:bit: %d\n", pkt.bit);
+        printf("#0018:message: %s\n", pkt.msg);
+        goto ret(0, env);
+}
+
+__code initSender(int init_bit, struct packet pkt)
+{
+        sender_bit = init_bit;
+        pkt.next = print_struct;
+        printf("#0026:initSender bit: %d\n", pkt.bit);
+        printf("#0027:initSender message: %s\n", pkt.msg);
+        printf("#0028:sender_bit: %d\n", sender_bit);
+        goto print_struct(pkt);
+}
+
+int main(void)
+{
+        struct packet pkt;
+        pkt.bit = 1;
+        pkt.msg = "hogehoge";
+        pkt.next = initSender;
+        ret = __return;
+        env = __environment;
+        printf("#0040:main bit: %d\n", pkt.bit);
+        printf("#0041:main message: %s\n", pkt.msg);
+        goto initSender(0, pkt);
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CbC-examples/tmp1.c	Tue Sep 20 17:32:20 2011 +0900
@@ -0,0 +1,94 @@
+/* easy test */
+#define __environment _CbC_environment
+#define __return _CbC_return
+
+
+extern int printf(const char *,...);
+
+__code (*ret)();
+void *env;
+__code exit1(int ac,void *);
+
+main0(ac,av)
+int ac;
+char *av[];
+{
+    ret = __return;
+    env = __environment;
+    printf("#0017:main0 %d start.\n",ac);
+    if (ac>=1)
+	goto code0(ac,av,__return);
+    goto code1(ac,av,exit1);
+    // not reached. (warning?)
+    printf("#0022:main0 %d end.\n",ac);
+}
+
+__code exit1(int ac)
+{
+    // exit(0);
+    goto code3(0,1,2,3,4,5);
+}
+
+__code code3(a,b,c,d,e,f)
+char a,b;
+int c,d,e,f;
+{
+    printf("#0035:code3: %d %d %d %d %d %d\n",a,b,c,d,e,f);
+    if(a<10)
+	goto code3(a+1,b,c,d,e,f);
+    else
+	goto code4(a+3,b+3,c+3,d+3,e+3,f+3);
+}
+
+__code code4(a,b,c,d,e,f)
+char a,b;
+int c,d,e,f;
+{
+    int i=1,j=2;
+    printf("#0047:code4: %d %d %d %d %d %d\n",a,b,c,d,e,f);
+    if(a<20)   // cyclic binary dependency
+	goto code3(a+b,b+c,c+d,d+e,e+f,f+a);
+    else if(a<30)
+	goto code3(a,b,c,d,e,f);
+    else if(a<40) // cyclic dependency
+	goto code3(b,c,a,e,f,d);
+    else if(a<50)
+	goto code4(a+i,b+j,c+i,d+3,e+3,f+3);
+    else goto ret(0,env);
+}
+
+__code code0(ac,av,ret)
+int ac;
+char *av[];
+__code (*ret)(int);
+{
+    goto code1(ac,av,ret);
+}
+
+__code code1(ac,av,exit)
+int ac;
+__code (*exit)(int,void*);
+char *av[];
+{
+    __code (*f)(int,void *);
+    printf("#0073:code1: %d\n",ac);
+    f = exit;
+    if (ac>3)
+	goto code1(ac,av,f);
+    else if (ac>2)
+	goto code1(av,ac,f);
+    else
+	goto (*f)(ac,env);
+}
+
+int
+main(int ac,char *av[])
+{
+   main0(1,av);
+   printf("#0087:main continue.\n");
+   main0(0,av);
+   printf("#0089:main end.\n");
+return 0;
+}
+
+/* end */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CbC-examples/tmp2.c	Tue Sep 20 17:32:20 2011 +0900
@@ -0,0 +1,44 @@
+#define __environment _CbC_environment
+#define __return _CbC_return
+
+#include "stdio.h"
+
+int
+main(ac,av)
+int ac;
+char *av[];
+{
+    int i;
+    i=main0(ac,av);
+    fprintf(stdout,"#0012:1: %s %d\n",av[0],i);
+    return 0;
+}
+
+int
+main0(ac,av)
+int ac;
+char *av[];
+{
+    fprintf(stdout,"#0021:2: %s\n",av[0]);
+    goto code0(av,__return,__environment);
+}
+
+__code code0(av,ret,retenv)
+char *av[];
+__code (*ret)();
+void *retenv;
+{
+    char *p;
+    p = av[0];
+    fprintf(stdout,"#0032:3: %s\n",p);
+    goto code1(av,ret,retenv);
+}
+
+__code code1(av,ret,retenv)
+char *av[];
+__code (*ret)();
+void *retenv;
+{
+    fprintf(stdout,"#0041:4: %s\n",av[0]);
+    goto (*ret)(1234,retenv);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CbC-examples/tmp4.c	Tue Sep 20 17:32:20 2011 +0900
@@ -0,0 +1,61 @@
+#define __environment _CbC_environment
+#define __return _CbC_return
+
+#include "stdio.h"
+
+int
+main(ac,av)
+int ac;
+char *av[];
+{
+    int i;
+    i=main0(ac,av);
+    fprintf(stdout,"#0012:1: %s %d\n",av[0]+2,i);
+    return 0;
+}
+
+int
+main0(ac,av)
+int ac;
+char *av[];
+{
+    int i,j,k;
+    i=123;
+    j=456;
+    k=789;
+    fprintf(stdout,"#0025:2: %s\n",av[0]+2);
+    goto code0(i,j,k,av,__return,__environment);
+}
+
+__code code0(i,j,k,av,ret,retenv)
+int i,j,k;
+char *av[];
+__code (*ret)();
+void *retenv;
+{
+    char *p;
+    p = av[0]+2;
+    fprintf(stdout,"#0037:3: i=%d j=%d k=%d av[0]=%s p=%s\n",i,j,k,av[0]+2,p);
+    goto code1(i,j,k,av,ret,retenv);
+}
+
+__code code1(i,j,k,av,ret,retenv)
+int i,j,k;
+char *av[];
+__code (*ret)();
+void *retenv;
+{
+    fprintf(stdout,"#0047:4: %s\n",av[0]+2);
+    goto code2(i,j,k,av,ret,retenv);
+}
+
+__code code2(i,j,k,av,ret,retenv)
+int i,j,k;
+char *av[];
+__code (*ret)();
+void *retenv;
+{
+    fprintf(stdout,"#0057:5: %s\n",av[0]+2);
+    fprintf(stdout,"#0058:5: i=%d j=%d k=%d\n",i,j,k);
+    goto (*ret)(1234,retenv);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CbC-examples/tmpa.c	Tue Sep 20 17:32:20 2011 +0900
@@ -0,0 +1,49 @@
+#define __environment _CbC_environment
+#define __return _CbC_return
+
+#include <stdio.h>
+
+struct enemy{
+    int charno;                 // image number
+    float x;                    // x location
+    float y;                    // y location
+    int ap;                     // armor point
+};
+void
+print_param(struct enemy *e)
+{
+    printf("#0014:charno:%d   x,y:%f,%f   hp:%d\n",
+           e->charno,e->x,e->y,e->ap);
+}
+
+typedef struct{
+    char  dest;
+    int VF01[4];
+    __code (*ret)();
+    void *env;
+} interface;
+
+__code a0(interface a) {
+    printf("#0026:%d\n",a.dest);
+    goto a.ret(0,a.env);
+}
+
+
+int main(int argc,char *argv[])
+{
+    struct enemy e;
+#if 0
+    interface args = {15,{0,0,0,0},return,environment};
+#else
+    interface args = {15,{0,0,0,0},0,0};
+    args.ret = __return;
+    args.env = __environment;
+#endif
+
+    e.charno=5; e.x=50.0; e.y=30.0; e.ap=100;
+    print_param(&e);
+
+    printf("#0045:%d %d\n",args.VF01[2],args.VF01[1]);
+    goto  a0(args);
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CbC-examples/too-long-argument.c	Tue Sep 20 17:32:20 2011 +0900
@@ -0,0 +1,104 @@
+#define __environment _CbC_environment
+#define __return _CbC_return
+
+#include <stdio.h>
+
+#undef WRONGNUMBER
+
+typedef __code
+(*CCC)( int f1,int f2,int f3,int f4,int f5,int f6,int f7,int f8,int f9,int fa,int fb,int fc,int fd,int fe,int ff,
+	__code(*ret)(int,void *),
+	void *env);
+
+__code
+tcode2( int f1,int f2,int f3,int f4,int f5,int f6,int f7,int f8,int f9,int fa,int fb,int fc,int fd,int fe,int ff,
+	__code(*ret)(int,void *),
+	void *env)
+{
+fprintf(stdout,"#0017:tcode2: f1=%d,f2=%d,f3=%d,f4=%d,f5=%d,f6=%d,f7=%d,f8=%d,f9=%d,fa=%d,fb=%d,fc=%d,fd=%d,fe=%d,ff=%d\n",
+f1,f2,f3,f4,f5,f6,f7,f8,f9,fa,fb,fc,fd,fe,ff);
+     goto ret(0,env);
+}
+
+__code
+tcode1(f1,f2,f3,f4,f5,f6,f7,f8,f9,fa,fb,fc,fd,fe,ff,ret,env)
+	int f1,f2,f3,f4,f5,f6,f7,f8,f9,fa,fb,fc,fd,fe,ff;
+	__code(*ret)(int,void *);
+	void *env;
+{
+fprintf(stdout,"#0028:tcode1: f1=%d,f2=%d,f3=%d,f4=%d,f5=%d,f6=%d,f7=%d,f8=%d,f9=%d,fa=%d,fb=%d,fc=%d,fd=%d,fe=%d,ff=%d\n",
+f1,f2,f3,f4,f5,f6,f7,f8,f9,fa,fb,fc,fd,fe,ff);
+     goto ret(0,env);
+}
+
+__code
+tcode4(int x,int y,CCC junction,__code(*ret)(int),void *env)
+{
+#ifdef WRONGNUMBER
+     goto junction(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,ret,env);
+#else
+     goto junction(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,ret,env);
+#endif
+}
+
+__code
+tcode0(int x,int y,__code(*junction)(int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,__code(*)(int),void *),__code(*ret)(int),void *env)
+{
+#ifdef WRONGNUMBER
+     goto junction(0,1,2,3,4,5,6,7,8,9,10,11,12,13,ret,env);
+#else
+     goto junction(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,ret,env);
+#endif
+}
+
+int
+main0()
+{
+#ifdef WRONGNUMBER
+     goto tcode2(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,
+	__return,__environment);
+#else
+     goto tcode2(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,
+	__return,__environment);
+#endif
+}
+
+int
+main1()
+{
+#ifdef WRONGNUMBER
+     goto tcode1(0,1,2,3,4,5,6,7,8,9,10,11,12,13,
+	__return,__environment);
+#else
+     goto tcode1(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,
+	__return,__environment);
+#endif
+}
+
+int
+main2()
+{
+     goto tcode0(0,1,tcode1,__return,__environment);
+}
+
+int
+main4()
+{
+     goto tcode4(0,1,tcode2,__return,__environment);
+}
+
+int
+main()
+{
+    printf("#0092:main4\n");
+    main4();
+    printf("#0094:main2\n");
+    main2();
+    printf("#0096:main0\n");
+    main0();
+    printf("#0098:main1\n");
+    main1();
+return 0;
+}
+
+//