--- /dev/null
+#include "../macros.h"
+
+int foo1();
+int foo2();
+void bar();
+int child1();
+int child2();
+int child3();
+int child4();
+int child5();
+
+int global;
+
+void start()
+{
+ // Set the stack pointer
+ asm(" mov r13,#0x200000");
+ PRINT_STR("hello\n");
+ TRACE_INIT_NAME(701, "proc_foo");
+ TRACE_INIT_NAME(702, "proc_bar");
+ TRACE_SWITCH(701);
+ if (global++ > 0)
+ global++;
+ foo1();
+ TRACE_SWITCH(702);
+ if (global++ > 0)
+ global++;
+ bar();
+ TRACE_SWITCH(701);
+ if (global++ > 0)
+ global++;
+ foo2();
+ TRACE_SWITCH(703);
+ if (global++ > 0)
+ global++;
+ foo1();
+ TRACE_SWITCH(701);
+ if (global++ > 0)
+ global++;
+ foo1();
+
+ TRACE_SWITCH(704);
+ if (global++ > 0)
+ global++;
+ foo1();
+
+ TRACE_SWITCH(701);
+ if (global++ > 0)
+ global++;
+ foo1();
+
+ TRACE_SWITCH(705);
+ if (global++ > 0)
+ global++;
+ foo1();
+
+ TRACE_SWITCH(701);
+ if (global++ > 0)
+ global++;
+ foo1();
+
+ TRACE_SWITCH(706);
+ if (global++ > 0)
+ global++;
+ foo1();
+
+ TRACE_SWITCH(701);
+ if (global++ > 0)
+ global++;
+ foo1();
+
+ TRACE_SWITCH(707);
+ if (global++ > 0)
+ global++;
+ foo1();
+
+ TRACE_SWITCH(701);
+ if (global++ > 0)
+ global++;
+ foo1();
+
+ TRACE_SWITCH(708);
+ if (global++ > 0)
+ global++;
+ foo1();
+
+ TRACE_SWITCH(701);
+ if (global++ > 0)
+ global++;
+ foo1();
+
+ TRACE_SWITCH(709);
+ if (global++ > 0)
+ global++;
+ foo1();
+
+ TRACE_SWITCH(701);
+ if (global++ > 0)
+ global++;
+ foo1();
+
+ TRACE_SWITCH(710);
+ if (global++ > 0)
+ global++;
+ foo1();
+
+ TRACE_STOP_EMU();
+}
+
+int foo1()
+{
+ int a = 0;
+
+ int ii;
+ for (ii = 0; ii < 3; ++ii) {
+ a += child1();
+ a += child2();
+ a += child3();
+ }
+ return a;
+}
+
+int foo2()
+{
+ int a = 0;
+
+ int ii;
+ for (ii = 0; ii < 2; ++ii) {
+ a += child3();
+ a += child4();
+ a += child5();
+ }
+ return a;
+}
+
+#define kStride 64
+void bar()
+{
+ int a = 0;
+
+ static char mem[1000 * kStride];
+
+ int ii, jj;
+
+ for (ii = 0; ii < 4; ++ii) {
+ for (jj = 0; jj < 10; ++jj)
+ a += mem[jj * kStride];
+ foo1();
+ foo2();
+ }
+}
+
+int child1()
+{
+ int a = 0;
+
+ int ii;
+ for (ii = 0; ii < 2; ++ii)
+ a += ii;
+ return a;
+}
+
+int child2()
+{
+ int a = 0;
+
+ int ii;
+ for (ii = 0; ii < 4; ++ii)
+ a += ii;
+ return a;
+}
+
+int child3()
+{
+ int a = 0;
+
+ int ii;
+ for (ii = 0; ii < 6; ++ii)
+ a += ii;
+ return a;
+}
+
+int child4()
+{
+ int a = 0;
+
+ int ii;
+ for (ii = 0; ii < 8; ++ii)
+ a += ii;
+ return a;
+}
+
+int child5()
+{
+ int a = 0;
+
+ int ii;
+ for (ii = 0; ii < 10; ++ii)
+ a += ii;
+ return a;
+}