c_src: update
[nit.git] / c_src / kernel._sep.c
index 54ee226..cbf3cf8 100644 (file)
 /* This C file is generated by NIT to compile module kernel. */
 #include "kernel._sep.h"
-val_t kernel___Object___object_id(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Object___object_id, 26};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Int((int) self);
-}
-val_t kernel___Object___is_same_type(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Object___is_same_type, 29};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Bool((VAL2VFT( self)==VAL2VFT( param0)));
-}
-val_t kernel___Object_____eqeq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Object_____eqeq, 32};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = TAG_Bool(IS_EQUAL_NN( self, variable0 /*other*/));
-  goto return_label0;
-  return_label0: while(false);
-  tracehead = trace.prev;
-  return variable1;
-}
-val_t kernel___Object_____neq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Object_____neq, 37};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = TAG_Bool(( self ==  variable0 /*other*/) || (( self != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( self,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( self, variable0 /*other*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( self,COLOR_kernel___Object_____eqeq))( self,  variable0 /*other*/) /*Object::==*/)))));
-  variable1 =  TAG_Bool(!UNTAG_Bool(variable1));
-  goto return_label1;
-  return_label1: while(false);
-  tracehead = trace.prev;
-  return variable1;
-}
-void kernel___Object___output(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Object___output, 42};
-  val_t variable0;
-  trace.prev = tracehead; tracehead = &trace;
-  printf("%c", (unsigned char)UNTAG_Char( TAG_Char('<')));
-  variable0 = TAG_Int((int) self);
-  printf("%d\n", UNTAG_Int(variable0));
-  printf("%c", (unsigned char)UNTAG_Char( TAG_Char('>')));
-  tracehead = trace.prev;
+val_t kernel___Object___object_id(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 26;
+  fra.me.meth = LOCATE_kernel___Object___object_id;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//kernel.nit:26 */
+  REGB0 = TAG_Int((bigint)((obj_t)fra.me.REG[0])[1].object_id);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t kernel___Object___is_same_type(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 29;
+  fra.me.meth = LOCATE_kernel___Object___is_same_type;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//kernel.nit:29 */
+  REGB0 = TAG_Bool((VAL2VFT(fra.me.REG[0])==VAL2VFT(fra.me.REG[1])));
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t kernel___Object_____eqeq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_kernel___Object_____eqeq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//kernel.nit:35 */
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[0],fra.me.REG[1]));
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t kernel___Object_____neq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 37;
+  fra.me.meth = LOCATE_kernel___Object_____neq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//kernel.nit:40 */
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[0],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+void kernel___Object___output(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 42;
+  fra.me.meth = LOCATE_kernel___Object___output;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//kernel.nit:45 */
+  REGB0 = TAG_Char('<');
+  /* ./../lib/standard//kernel.nit:349 */
+  printf("%c", (unsigned char)UNTAG_Char(REGB0));;
+  /* ./../lib/standard//kernel.nit:46 */
+  REGB0 = CALL_kernel___Object___object_id(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./../lib/standard//kernel.nit:209 */
+  printf("%ld\n", UNTAG_Int(REGB0));;
+  /* ./../lib/standard//kernel.nit:47 */
+  REGB0 = TAG_Char('>');
+  /* ./../lib/standard//kernel.nit:349 */
+  printf("%c", (unsigned char)UNTAG_Char(REGB0));;
+  stack_frame_head = fra.me.prev;
   return;
 }
-void kernel___Object___exit(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Object___exit, 50};
-  trace.prev = tracehead; tracehead = &trace;
-  exit(UNTAG_Int( param0));
-  tracehead = trace.prev;
+void kernel___Object___exit(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 50;
+  fra.me.meth = LOCATE_kernel___Object___exit;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./../lib/standard//kernel.nit:50 */
+  exit(UNTAG_Int(REGB0));;
+  stack_frame_head = fra.me.prev;
   return;
 }
-val_t kernel___Object___sys(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Object___sys, 51};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return (G_sys);
+val_t kernel___Object___sys(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 51;
+  fra.me.meth = LOCATE_kernel___Object___sys;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//kernel.nit:51 */
+  fra.me.REG[0] = (G_sys);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+void kernel___Sys___main(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 56;
+  fra.me.meth = LOCATE_kernel___Sys___main;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  return;
 }
-void kernel___Sys___main(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Sys___main, 56};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
+void kernel___Sys___init(val_t p0, int* init_table){
+  int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_Sys].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos0]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_kernel___Sys___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos0] = 1;
   return;
 }
-val_t kernel___Comparable_____l(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Comparable_____l, 69};
-  trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method %s called (%s: %d)\n", "<", LOCATE_kernel___Sys___main, 69);
-  nit_exit(1);
-  tracehead = trace.prev;
+val_t kernel___Comparable_____l(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 69;
+  fra.me.meth = LOCATE_kernel___Comparable_____l;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  /* ./../lib/standard//kernel.nit:69 */
+  nit_abort("Deferred method called", NULL, LOCATE_kernel, 69);
+  stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
-val_t kernel___Comparable_____leq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Comparable_____leq, 72};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ((kernel___Comparable_____l_t)CALL( variable0 /*other*/,COLOR_kernel___Comparable_____l))( variable0 /*other*/,  self) /*Comparable::<*/;
-  variable1 =  TAG_Bool(!UNTAG_Bool(variable1));
-  goto return_label4;
-  return_label4: while(false);
-  tracehead = trace.prev;
-  return variable1;
-}
-val_t kernel___Comparable_____geq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Comparable_____geq, 75};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ((kernel___Comparable_____l_t)CALL( self,COLOR_kernel___Comparable_____l))( self,  variable0 /*other*/) /*Comparable::<*/;
-  variable1 =  TAG_Bool(!UNTAG_Bool(variable1));
-  goto return_label5;
-  return_label5: while(false);
-  tracehead = trace.prev;
-  return variable1;
-}
-val_t kernel___Comparable_____g(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Comparable_____g, 78};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ((kernel___Comparable_____l_t)CALL( variable0 /*other*/,COLOR_kernel___Comparable_____l))( variable0 /*other*/,  self) /*Comparable::<*/;
-  goto return_label6;
-  return_label6: while(false);
-  tracehead = trace.prev;
-  return variable1;
-}
-val_t kernel___Comparable_____leqg(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Comparable_____leqg, 81};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ((kernel___Comparable_____l_t)CALL( self,COLOR_kernel___Comparable_____l))( self,  variable0 /*other*/) /*Comparable::<*/;
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = TAG_Int(-UNTAG_Int( TAG_Int(1)));
-    goto return_label7;
-  } else { /*if*/
-    variable1 = ((kernel___Comparable_____l_t)CALL( variable0 /*other*/,COLOR_kernel___Comparable_____l))( variable0 /*other*/,  self) /*Comparable::<*/;
-    if (UNTAG_Bool(variable1)) { /*if*/
-      variable1 =  TAG_Int(1);
-      goto return_label7;
-    } else { /*if*/
-      variable1 =  TAG_Int(0);
-      goto return_label7;
+val_t kernel___Comparable_____leq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 72;
+  fra.me.meth = LOCATE_kernel___Comparable_____leq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//kernel.nit:73 */
+  REGB0 = CALL_kernel___Comparable_____l(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t kernel___Comparable_____geq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 75;
+  fra.me.meth = LOCATE_kernel___Comparable_____geq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//kernel.nit:76 */
+  REGB0 = CALL_kernel___Comparable_____l(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t kernel___Comparable_____g(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 78;
+  fra.me.meth = LOCATE_kernel___Comparable_____g;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//kernel.nit:79 */
+  REGB0 = CALL_kernel___Comparable_____l(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t kernel___Comparable_____leqg(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 81;
+  fra.me.meth = LOCATE_kernel___Comparable_____leqg;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//kernel.nit:84 */
+  REGB0 = CALL_kernel___Comparable_____l(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  if (UNTAG_Bool(REGB0)) {
+    /* ./../lib/standard//kernel.nit:85 */
+    REGB0 = TAG_Int(1);
+    /* ./../lib/standard//kernel.nit:216 */
+    REGB0 = TAG_Int(-UNTAG_Int(REGB0));
+    /* ./../lib/standard//kernel.nit:85 */
+    goto label1;
+  } else {
+    /* ./../lib/standard//kernel.nit:86 */
+    REGB1 = CALL_kernel___Comparable_____l(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    if (UNTAG_Bool(REGB1)) {
+      /* ./../lib/standard//kernel.nit:87 */
+      REGB1 = TAG_Int(1);
+      REGB0 = REGB1;
+      goto label1;
+    } else {
+      /* ./../lib/standard//kernel.nit:89 */
+      REGB1 = TAG_Int(0);
+      REGB0 = REGB1;
+      goto label1;
     }
   }
-  return_label7: while(false);
-  tracehead = trace.prev;
-  return variable1;
-}
-val_t kernel___Comparable___is_between(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Comparable___is_between, 93};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = ((kernel___Comparable_____leq_t)CALL( variable0 /*c*/,COLOR_kernel___Comparable_____leq))( variable0 /*c*/,  self) /*Comparable::<=*/;
-  variable3 = variable2;
-  if (UNTAG_Bool(variable3)) { /* and */
-    variable3 = ((kernel___Comparable_____leq_t)CALL( self,COLOR_kernel___Comparable_____leq))( self,  variable1 /*d*/) /*Comparable::<=*/;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t kernel___Comparable___is_between(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 93;
+  fra.me.meth = LOCATE_kernel___Comparable___is_between;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./../lib/standard//kernel.nit:96 */
+  REGB0 = CALL_kernel___Comparable_____leq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  if (UNTAG_Bool(REGB0)) {
+    REGB0 = CALL_kernel___Comparable_____leq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
+  } else {
+    REGB1 = TAG_Bool(false);
+    REGB0 = REGB1;
   }
-  variable2 = variable3;
-  goto return_label8;
-  return_label8: while(false);
-  tracehead = trace.prev;
-  return variable2;
-}
-val_t kernel___Comparable___max(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Comparable___max, 99};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ((kernel___Comparable_____l_t)CALL( self,COLOR_kernel___Comparable_____l))( self,  variable0 /*other*/) /*Comparable::<*/;
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 =  variable0 /*other*/;
-    goto return_label9;
-  } else { /*if*/
-    variable1 =  self;
-    goto return_label9;
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t kernel___Comparable___max(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 99;
+  fra.me.meth = LOCATE_kernel___Comparable___max;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//kernel.nit:102 */
+  REGB0 = CALL_kernel___Comparable_____l(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  if (UNTAG_Bool(REGB0)) {
+    /* ./../lib/standard//kernel.nit:103 */
+    goto label1;
+  } else {
+    /* ./../lib/standard//kernel.nit:105 */
+    fra.me.REG[1] = fra.me.REG[0];
+    goto label1;
   }
-  return_label9: while(false);
-  tracehead = trace.prev;
-  return variable1;
-}
-val_t kernel___Comparable___min(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Comparable___min, 109};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ((kernel___Comparable_____l_t)CALL( variable0 /*c*/,COLOR_kernel___Comparable_____l))( variable0 /*c*/,  self) /*Comparable::<*/;
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 =  variable0 /*c*/;
-    goto return_label10;
-  } else { /*if*/
-    variable1 =  self;
-    goto return_label10;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t kernel___Comparable___min(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 109;
+  fra.me.meth = LOCATE_kernel___Comparable___min;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//kernel.nit:112 */
+  REGB0 = CALL_kernel___Comparable_____l(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  if (UNTAG_Bool(REGB0)) {
+    /* ./../lib/standard//kernel.nit:113 */
+    goto label1;
+  } else {
+    /* ./../lib/standard//kernel.nit:115 */
+    fra.me.REG[1] = fra.me.REG[0];
+    goto label1;
   }
-  return_label10: while(false);
-  tracehead = trace.prev;
-  return variable1;
-}
-val_t kernel___Discrete___succ(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Discrete___succ, 126};
-  val_t variable0;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 = ((kernel___Discrete_____plus_t)CALL( self,COLOR_kernel___Discrete_____plus))( self,  TAG_Int(1)) /*Discrete::+*/;
-  goto return_label11;
-  return_label11: while(false);
-  tracehead = trace.prev;
-  return variable0;
-}
-val_t kernel___Discrete___prec(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Discrete___prec, 129};
-  val_t variable0;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 = ((kernel___Discrete_____minus_t)CALL( self,COLOR_kernel___Discrete_____minus))( self,  TAG_Int(1)) /*Discrete::-*/;
-  goto return_label12;
-  return_label12: while(false);
-  tracehead = trace.prev;
-  return variable0;
-}
-val_t kernel___Discrete_____plus(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Discrete_____plus, 132};
-  trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method %s called (%s: %d)\n", "+", LOCATE_kernel___Discrete___prec, 132);
-  nit_exit(1);
-  tracehead = trace.prev;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t kernel___Discrete___succ(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 126;
+  fra.me.meth = LOCATE_kernel___Discrete___succ;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//kernel.nit:127 */
+  REGB0 = TAG_Int(1);
+  fra.me.REG[0] = CALL_kernel___Discrete_____plus(fra.me.REG[0])(fra.me.REG[0], REGB0);
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t kernel___Discrete___prec(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 129;
+  fra.me.meth = LOCATE_kernel___Discrete___prec;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//kernel.nit:130 */
+  REGB0 = TAG_Int(1);
+  fra.me.REG[0] = CALL_kernel___Discrete_____minus(fra.me.REG[0])(fra.me.REG[0], REGB0);
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t kernel___Discrete_____plus(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 132;
+  fra.me.meth = LOCATE_kernel___Discrete_____plus;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  /* ./../lib/standard//kernel.nit:132 */
+  nit_abort("Deferred method called", NULL, LOCATE_kernel, 132);
+  stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
-val_t kernel___Discrete_____minus(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Discrete_____minus, 135};
-  trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method %s called (%s: %d)\n", "-", LOCATE_kernel___Discrete___prec, 135);
-  nit_exit(1);
-  tracehead = trace.prev;
+val_t kernel___Discrete_____minus(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 135;
+  fra.me.meth = LOCATE_kernel___Discrete_____minus;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  /* ./../lib/standard//kernel.nit:135 */
+  nit_abort("Deferred method called", NULL, LOCATE_kernel, 135);
+  stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
-val_t kernel___Discrete___distance(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Discrete___distance, 138};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = NIT_NULL /*decl variable cursor*/;
-  variable2 = NIT_NULL /*decl variable stop*/;
-  variable3 = ((kernel___Comparable_____l_t)CALL( self,COLOR_kernel___Comparable_____l))( self,  variable0 /*d*/) /*Discrete::<*/;
-  if (UNTAG_Bool(variable3)) { /*if*/
-    variable1 =  self /*cursor=*/;
-    variable2 =  variable0 /*d*/ /*stop=*/;
-  } else { /*if*/
-    variable3 = ((kernel___Comparable_____g_t)CALL( self,COLOR_kernel___Comparable_____g))( self,  variable0 /*d*/) /*Discrete::>*/;
-    if (UNTAG_Bool(variable3)) { /*if*/
-      variable1 =  variable0 /*d*/ /*cursor=*/;
-      variable2 =  self /*stop=*/;
-    } else { /*if*/
-      variable1 =  TAG_Int(0);
-      goto return_label13;
+val_t kernel___Discrete___distance(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 138;
+  fra.me.meth = LOCATE_kernel___Discrete___distance;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//kernel.nit:145 */
+  REGB0 = CALL_kernel___Comparable_____l(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  if (UNTAG_Bool(REGB0)) {
+    /* ./../lib/standard//kernel.nit:146 */
+    fra.me.REG[2] = fra.me.REG[0];
+    /* ./../lib/standard//kernel.nit:147 */
+    fra.me.REG[3] = fra.me.REG[1];
+  } else {
+    /* ./../lib/standard//kernel.nit:148 */
+    REGB0 = CALL_kernel___Comparable_____g(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+    if (UNTAG_Bool(REGB0)) {
+      /* ./../lib/standard//kernel.nit:149 */
+      fra.me.REG[2] = fra.me.REG[1];
+      /* ./../lib/standard//kernel.nit:150 */
+      fra.me.REG[3] = fra.me.REG[0];
+    } else {
+      /* ./../lib/standard//kernel.nit:152 */
+      REGB0 = TAG_Int(0);
+      goto label1;
     }
   }
-  variable3 =  TAG_Int(0);
-  while (true) { /*while*/
-    variable4 = ((kernel___Comparable_____l_t)CALL( variable1 /*cursor*/,COLOR_kernel___Comparable_____l))( variable1 /*cursor*/,  variable2 /*stop*/) /*Discrete::<*/;
-    if (!UNTAG_Bool(variable4)) break; /* while*/
-    variable4 = ((kernel___Discrete___succ_t)CALL( variable1 /*cursor*/,COLOR_kernel___Discrete___succ))( variable1 /*cursor*/) /*Discrete::succ*/;
-    variable1 = variable4 /*cursor=*/;
-    variable3 = TAG_Int(UNTAG_Int(variable3)+UNTAG_Int( TAG_Int(1))) /*nb*/;
-    continue_14: while(0);
+  /* ./../lib/standard//kernel.nit:155 */
+  REGB1 = TAG_Int(0);
+  /* ./../lib/standard//kernel.nit:156 */
+  while(1) {
+    REGB2 = CALL_kernel___Comparable_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+    if (UNTAG_Bool(REGB2)) {
+      /* ./../lib/standard//kernel.nit:157 */
+      fra.me.REG[0] = CALL_kernel___Discrete___succ(fra.me.REG[2])(fra.me.REG[2]);
+      fra.me.REG[2] = fra.me.REG[0];
+      /* ./../lib/standard//kernel.nit:158 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:158 */
+      REGB1 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:156 */
+      goto label2;
+    }
   }
-  break_14: while(0);
-  variable1 =  variable3 /*nb*/;
-  goto return_label13;
-  return_label13: while(false);
-  tracehead = trace.prev;
-  return variable1;
-}
-val_t kernel___Bool___object_id(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Bool___object_id, 174};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Int(UNTAG_Bool( self));
-}
-val_t kernel___Bool_____eqeq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Bool_____eqeq, 175};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Bool(( self)==( param0));
-}
-val_t kernel___Bool_____neq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Bool_____neq, 176};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Bool(( self)!=( param0));
-}
-void kernel___Bool___output(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Bool___output, 177};
-  trace.prev = tracehead; tracehead = &trace;
-  (void)printf(UNTAG_Bool( self)?"true\n":"false\n");
-  tracehead = trace.prev;
+  label2: while(0);
+  /* ./../lib/standard//kernel.nit:160 */
+  REGB0 = REGB1;
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t kernel___Bool___object_id(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 174;
+  fra.me.meth = LOCATE_kernel___Bool___object_id;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  /* ./../lib/standard//kernel.nit:174 */
+  REGB0 = TAG_Int(UNTAG_Bool(REGB0));
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t kernel___Bool_____eqeq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 175;
+  fra.me.meth = LOCATE_kernel___Bool_____eqeq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  fra.me.REG[0] = p1;
+  /* ./../lib/standard//kernel.nit:175 */
+  REGB0 = TAG_Bool((REGB0)==(fra.me.REG[0]));
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t kernel___Bool_____neq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 176;
+  fra.me.meth = LOCATE_kernel___Bool_____neq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  fra.me.REG[0] = p1;
+  /* ./../lib/standard//kernel.nit:176 */
+  REGB0 = TAG_Bool((REGB0)!=(fra.me.REG[0]));
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+void kernel___Bool___output(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 177;
+  fra.me.meth = LOCATE_kernel___Bool___output;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  /* ./../lib/standard//kernel.nit:177 */
+  (void)printf(UNTAG_Bool(REGB0)?"true\n":"false\n");;
+  stack_frame_head = fra.me.prev;
   return;
 }
-val_t kernel___Float___object_id(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Float___object_id, 183};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Int((int)UNBOX_Float( self));
-}
-void kernel___Float___output(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Float___output, 184};
-  trace.prev = tracehead; tracehead = &trace;
-  printf("%f\n", UNBOX_Float( self));
-  tracehead = trace.prev;
+val_t kernel___Float___object_id(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 183;
+  fra.me.meth = LOCATE_kernel___Float___object_id;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//kernel.nit:183 */
+  REGB0 = TAG_Int((bigint)UNBOX_Float(fra.me.REG[0]));
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+void kernel___Float___output(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 184;
+  fra.me.meth = LOCATE_kernel___Float___output;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//kernel.nit:184 */
+  printf("%f\n", UNBOX_Float(fra.me.REG[0]));;
+  stack_frame_head = fra.me.prev;
   return;
 }
-val_t kernel___Float_____leq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Float_____leq, 186};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Bool(UNBOX_Float( self)<=UNBOX_Float( param0));
-}
-val_t kernel___Float_____l(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Float_____l, 187};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Bool(UNBOX_Float( self)<UNBOX_Float( param0));
-}
-val_t kernel___Float_____geq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Float_____geq, 188};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Bool(UNBOX_Float( self)>=UNBOX_Float( param0));
-}
-val_t kernel___Float_____g(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Float_____g, 189};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Bool(UNBOX_Float( self)>UNBOX_Float( param0));
-}
-val_t kernel___Float_____plus(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Float_____plus, 190};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return BOX_Float(UNBOX_Float( self)+UNBOX_Float( param0));
-}
-val_t kernel___Float___unary__minus(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Float___unary__minus, 191};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return BOX_Float(-UNBOX_Float( self));
-}
-val_t kernel___Float_____minus(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Float_____minus, 192};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return BOX_Float(UNBOX_Float( self)-UNBOX_Float( param0));
-}
-val_t kernel___Float_____star(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Float_____star, 193};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return BOX_Float(UNBOX_Float( self)*UNBOX_Float( param0));
-}
-val_t kernel___Float_____slash(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Float_____slash, 194};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return BOX_Float(UNBOX_Float( self)/UNBOX_Float( param0));
-}
-val_t kernel___Float___to_i(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Float___to_i, 196};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Int((int)UNBOX_Float( self));
-}
-val_t kernel___Int___object_id(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Int___object_id, 206};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return  self;
-}
-val_t kernel___Int_____eqeq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Int_____eqeq, 207};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Bool(( self)==( param0));
-}
-val_t kernel___Int_____neq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Int_____neq, 208};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Bool(( self)!=( param0));
-}
-void kernel___Int___output(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Int___output, 209};
-  trace.prev = tracehead; tracehead = &trace;
-  printf("%d\n", UNTAG_Int( self));
-  tracehead = trace.prev;
+val_t kernel___Float_____leq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 186;
+  fra.me.meth = LOCATE_kernel___Float_____leq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//kernel.nit:186 */
+  REGB0 = TAG_Bool(UNBOX_Float(fra.me.REG[0])<=UNBOX_Float(fra.me.REG[1]));
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t kernel___Float_____l(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 187;
+  fra.me.meth = LOCATE_kernel___Float_____l;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//kernel.nit:187 */
+  REGB0 = TAG_Bool(UNBOX_Float(fra.me.REG[0])<UNBOX_Float(fra.me.REG[1]));
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t kernel___Float_____geq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 188;
+  fra.me.meth = LOCATE_kernel___Float_____geq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//kernel.nit:188 */
+  REGB0 = TAG_Bool(UNBOX_Float(fra.me.REG[0])>=UNBOX_Float(fra.me.REG[1]));
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t kernel___Float_____g(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 189;
+  fra.me.meth = LOCATE_kernel___Float_____g;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//kernel.nit:189 */
+  REGB0 = TAG_Bool(UNBOX_Float(fra.me.REG[0])>UNBOX_Float(fra.me.REG[1]));
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t kernel___Float_____plus(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 190;
+  fra.me.meth = LOCATE_kernel___Float_____plus;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//kernel.nit:190 */
+  fra.me.REG[1] = BOX_Float(UNBOX_Float(fra.me.REG[0])+UNBOX_Float(fra.me.REG[1]));
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t kernel___Float___unary__minus(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 191;
+  fra.me.meth = LOCATE_kernel___Float___unary__minus;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//kernel.nit:191 */
+  fra.me.REG[0] = BOX_Float(-UNBOX_Float(fra.me.REG[0]));
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t kernel___Float_____minus(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 192;
+  fra.me.meth = LOCATE_kernel___Float_____minus;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//kernel.nit:192 */
+  fra.me.REG[1] = BOX_Float(UNBOX_Float(fra.me.REG[0])-UNBOX_Float(fra.me.REG[1]));
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t kernel___Float_____star(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 193;
+  fra.me.meth = LOCATE_kernel___Float_____star;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//kernel.nit:193 */
+  fra.me.REG[1] = BOX_Float(UNBOX_Float(fra.me.REG[0])*UNBOX_Float(fra.me.REG[1]));
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t kernel___Float_____slash(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 194;
+  fra.me.meth = LOCATE_kernel___Float_____slash;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//kernel.nit:194 */
+  fra.me.REG[1] = BOX_Float(UNBOX_Float(fra.me.REG[0])/UNBOX_Float(fra.me.REG[1]));
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t kernel___Float___to_i(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 196;
+  fra.me.meth = LOCATE_kernel___Float___to_i;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//kernel.nit:196 */
+  REGB0 = TAG_Int((bigint)UNBOX_Float(fra.me.REG[0]));
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t kernel___Int___object_id(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 206;
+  fra.me.meth = LOCATE_kernel___Int___object_id;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  /* ./../lib/standard//kernel.nit:206 */
+  REGB0 = REGB0;
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t kernel___Int_____eqeq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 207;
+  fra.me.meth = LOCATE_kernel___Int_____eqeq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  fra.me.REG[0] = p1;
+  /* ./../lib/standard//kernel.nit:207 */
+  REGB0 = TAG_Bool((REGB0)==(fra.me.REG[0]));
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t kernel___Int_____neq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 208;
+  fra.me.meth = LOCATE_kernel___Int_____neq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  fra.me.REG[0] = p1;
+  /* ./../lib/standard//kernel.nit:208 */
+  REGB0 = TAG_Bool((REGB0)!=(fra.me.REG[0]));
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+void kernel___Int___output(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 209;
+  fra.me.meth = LOCATE_kernel___Int___output;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  /* ./../lib/standard//kernel.nit:209 */
+  printf("%ld\n", UNTAG_Int(REGB0));;
+  stack_frame_head = fra.me.prev;
   return;
 }
-val_t kernel___Int_____leq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Int_____leq, 211};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Bool(UNTAG_Int( self)<=UNTAG_Int( param0));
-}
-val_t kernel___Int_____l(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Int_____l, 212};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Bool(UNTAG_Int( self)<UNTAG_Int( param0));
-}
-val_t kernel___Int_____geq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Int_____geq, 213};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Bool(UNTAG_Int( self)>=UNTAG_Int( param0));
-}
-val_t kernel___Int_____g(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Int_____g, 214};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Bool(UNTAG_Int( self)>UNTAG_Int( param0));
-}
-val_t kernel___Int_____plus(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Int_____plus, 215};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Int(UNTAG_Int( self)+UNTAG_Int( param0));
-}
-val_t kernel___Int___unary__minus(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Int___unary__minus, 216};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Int(-UNTAG_Int( self));
-}
-val_t kernel___Int_____minus(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Int_____minus, 217};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Int(UNTAG_Int( self)-UNTAG_Int( param0));
-}
-val_t kernel___Int_____star(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Int_____star, 218};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Int(UNTAG_Int( self)*UNTAG_Int( param0));
-}
-val_t kernel___Int_____slash(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Int_____slash, 219};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Int(UNTAG_Int( self)/UNTAG_Int( param0));
-}
-val_t kernel___Int_____percent(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Int_____percent, 220};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Int(UNTAG_Int( self)%UNTAG_Int( param0));
-}
-val_t kernel___Int___lshift(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Int___lshift, 221};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Int(UNTAG_Int( self)<<UNTAG_Int( param0));
-}
-val_t kernel___Int___rshift(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Int___rshift, 222};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Int(UNTAG_Int( self)>>UNTAG_Int( param0));
-}
-val_t kernel___Int___to_f(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Int___to_f, 224};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return BOX_Float((float)UNTAG_Int( self));
-}
-val_t kernel___Int___succ(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Int___succ, 227};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Int(UNTAG_Int( self)+1);
-}
-val_t kernel___Int___prec(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Int___prec, 228};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Int(UNTAG_Int( self)-1);
-}
-val_t kernel___Int___distance(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Int___distance, 229};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable2 = TAG_Int(UNTAG_Int( self)-UNTAG_Int( variable0 /*i*/));
-  variable1 = variable2;
-  variable2 = TAG_Bool(UNTAG_Int( variable1 /*d*/)>=UNTAG_Int( TAG_Int(0)));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable1 =  variable1 /*d*/;
-    goto return_label15;
-  } else { /*if*/
-    variable2 = TAG_Int(-UNTAG_Int( variable1 /*d*/));
-    variable1 = variable2;
-    goto return_label15;
+val_t kernel___Int_____leq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 211;
+  fra.me.meth = LOCATE_kernel___Int_____leq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  REGB1 = p1;
+  /* ./../lib/standard//kernel.nit:211 */
+  REGB1 = TAG_Bool(UNTAG_Int(REGB0)<=UNTAG_Int(REGB1));
+  stack_frame_head = fra.me.prev;
+  return REGB1;
+}
+val_t kernel___Int_____l(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 212;
+  fra.me.meth = LOCATE_kernel___Int_____l;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  REGB1 = p1;
+  /* ./../lib/standard//kernel.nit:212 */
+  REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+  stack_frame_head = fra.me.prev;
+  return REGB1;
+}
+val_t kernel___Int_____geq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 213;
+  fra.me.meth = LOCATE_kernel___Int_____geq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  REGB1 = p1;
+  /* ./../lib/standard//kernel.nit:213 */
+  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
+  stack_frame_head = fra.me.prev;
+  return REGB1;
+}
+val_t kernel___Int_____g(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 214;
+  fra.me.meth = LOCATE_kernel___Int_____g;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  REGB1 = p1;
+  /* ./../lib/standard//kernel.nit:214 */
+  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
+  stack_frame_head = fra.me.prev;
+  return REGB1;
+}
+val_t kernel___Int_____plus(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 215;
+  fra.me.meth = LOCATE_kernel___Int_____plus;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  REGB1 = p1;
+  /* ./../lib/standard//kernel.nit:215 */
+  REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
+  stack_frame_head = fra.me.prev;
+  return REGB1;
+}
+val_t kernel___Int___unary__minus(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 216;
+  fra.me.meth = LOCATE_kernel___Int___unary__minus;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  /* ./../lib/standard//kernel.nit:216 */
+  REGB0 = TAG_Int(-UNTAG_Int(REGB0));
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t kernel___Int_____minus(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 217;
+  fra.me.meth = LOCATE_kernel___Int_____minus;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  REGB1 = p1;
+  /* ./../lib/standard//kernel.nit:217 */
+  REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
+  stack_frame_head = fra.me.prev;
+  return REGB1;
+}
+val_t kernel___Int_____star(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 218;
+  fra.me.meth = LOCATE_kernel___Int_____star;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  REGB1 = p1;
+  /* ./../lib/standard//kernel.nit:218 */
+  REGB1 = TAG_Int(UNTAG_Int(REGB0)*UNTAG_Int(REGB1));
+  stack_frame_head = fra.me.prev;
+  return REGB1;
+}
+val_t kernel___Int_____slash(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 219;
+  fra.me.meth = LOCATE_kernel___Int_____slash;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  REGB1 = p1;
+  /* ./../lib/standard//kernel.nit:219 */
+  REGB1 = TAG_Int(UNTAG_Int(REGB0)/UNTAG_Int(REGB1));
+  stack_frame_head = fra.me.prev;
+  return REGB1;
+}
+val_t kernel___Int_____percent(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 220;
+  fra.me.meth = LOCATE_kernel___Int_____percent;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  REGB1 = p1;
+  /* ./../lib/standard//kernel.nit:220 */
+  REGB1 = TAG_Int(UNTAG_Int(REGB0)%UNTAG_Int(REGB1));
+  stack_frame_head = fra.me.prev;
+  return REGB1;
+}
+val_t kernel___Int___lshift(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 221;
+  fra.me.meth = LOCATE_kernel___Int___lshift;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  REGB1 = p1;
+  /* ./../lib/standard//kernel.nit:221 */
+  REGB1 = TAG_Int(UNTAG_Int(REGB0)<<UNTAG_Int(REGB1));
+  stack_frame_head = fra.me.prev;
+  return REGB1;
+}
+val_t kernel___Int___rshift(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 222;
+  fra.me.meth = LOCATE_kernel___Int___rshift;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  REGB1 = p1;
+  /* ./../lib/standard//kernel.nit:222 */
+  REGB1 = TAG_Int(UNTAG_Int(REGB0)>>UNTAG_Int(REGB1));
+  stack_frame_head = fra.me.prev;
+  return REGB1;
+}
+val_t kernel___Int___to_f(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 224;
+  fra.me.meth = LOCATE_kernel___Int___to_f;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./../lib/standard//kernel.nit:224 */
+  fra.me.REG[0] = BOX_Float((float)UNTAG_Int(REGB0));
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t kernel___Int___succ(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 227;
+  fra.me.meth = LOCATE_kernel___Int___succ;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  /* ./../lib/standard//kernel.nit:227 */
+  REGB0 = TAG_Int(UNTAG_Int(REGB0)+1);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t kernel___Int___prec(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 228;
+  fra.me.meth = LOCATE_kernel___Int___prec;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  /* ./../lib/standard//kernel.nit:228 */
+  REGB0 = TAG_Int(UNTAG_Int(REGB0)-1);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t kernel___Int___distance(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 229;
+  fra.me.meth = LOCATE_kernel___Int___distance;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  REGB1 = p1;
+  /* ./../lib/standard//kernel.nit:217 */
+  REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
+  /* ./../lib/standard//kernel.nit:232 */
+  REGB0 = TAG_Int(0);
+  /* ./../lib/standard//kernel.nit:213 */
+  REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
+  /* ./../lib/standard//kernel.nit:232 */
+  if (UNTAG_Bool(REGB0)) {
+    /* ./../lib/standard//kernel.nit:233 */
+    REGB0 = REGB1;
+    goto label1;
+  } else {
+    /* ./../lib/standard//kernel.nit:216 */
+    REGB1 = TAG_Int(-UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:235 */
+    REGB0 = REGB1;
+    goto label1;
   }
-  return_label15: while(false);
-  tracehead = trace.prev;
-  return variable1;
-}
-val_t kernel___Int_____leqg(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Int_____leqg, 239};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = TAG_Bool(UNTAG_Int( self)<UNTAG_Int( variable0 /*other*/));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = TAG_Int(-UNTAG_Int( TAG_Int(1)));
-    goto return_label16;
-  } else { /*if*/
-    variable1 = TAG_Bool(UNTAG_Int( variable0 /*other*/)<UNTAG_Int( self));
-    if (UNTAG_Bool(variable1)) { /*if*/
-      variable1 =  TAG_Int(1);
-      goto return_label16;
-    } else { /*if*/
-      variable1 =  TAG_Int(0);
-      goto return_label16;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t kernel___Int_____leqg(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 239;
+  fra.me.meth = LOCATE_kernel___Int_____leqg;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  REGB1 = p1;
+  /* ./../lib/standard//kernel.nit:212 */
+  REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+  /* ./../lib/standard//kernel.nit:241 */
+  if (UNTAG_Bool(REGB2)) {
+    /* ./../lib/standard//kernel.nit:242 */
+    REGB2 = TAG_Int(1);
+    /* ./../lib/standard//kernel.nit:216 */
+    REGB2 = TAG_Int(-UNTAG_Int(REGB2));
+    /* ./../lib/standard//kernel.nit:242 */
+    goto label1;
+  } else {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
+    /* ./../lib/standard//kernel.nit:243 */
+    if (UNTAG_Bool(REGB0)) {
+      /* ./../lib/standard//kernel.nit:244 */
+      REGB0 = TAG_Int(1);
+      REGB2 = REGB0;
+      goto label1;
+    } else {
+      /* ./../lib/standard//kernel.nit:246 */
+      REGB0 = TAG_Int(0);
+      REGB2 = REGB0;
+      goto label1;
     }
   }
-  return_label16: while(false);
-  tracehead = trace.prev;
-  return variable1;
-}
-val_t kernel___Int___is_between(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Int___is_between, 250};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(UNTAG_Int( self)<UNTAG_Int( variable0 /*c*/));
-  variable3 = variable2;
-  if (!UNTAG_Bool(variable3)) { /* or */
-    variable3 = TAG_Bool(UNTAG_Int( variable1 /*d*/)<UNTAG_Int( self));
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB2;
+}
+val_t kernel___Int___is_between(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 250;
+  fra.me.meth = LOCATE_kernel___Int___is_between;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  REGB1 = p1;
+  REGB2 = p2;
+  /* ./../lib/standard//kernel.nit:212 */
+  REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+  /* ./../lib/standard//kernel.nit:252 */
+  if (UNTAG_Bool(REGB1)) {
+    REGB1 = TAG_Bool(true);
+  } else {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
+    /* ./../lib/standard//kernel.nit:252 */
+    REGB1 = REGB0;
   }
-  variable2 = variable3;
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 =  TAG_Bool(false);
-    goto return_label17;
-  } else { /*if*/
-    variable2 =  TAG_Bool(true);
-    goto return_label17;
+  if (UNTAG_Bool(REGB1)) {
+    /* ./../lib/standard//kernel.nit:253 */
+    REGB1 = TAG_Bool(false);
+    goto label1;
+  } else {
+    /* ./../lib/standard//kernel.nit:255 */
+    REGB0 = TAG_Bool(true);
+    REGB1 = REGB0;
+    goto label1;
   }
-  return_label17: while(false);
-  tracehead = trace.prev;
-  return variable2;
-}
-val_t kernel___Int___max(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Int___max, 259};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = TAG_Bool(UNTAG_Int( self)<UNTAG_Int( variable0 /*other*/));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 =  variable0 /*other*/;
-    goto return_label18;
-  } else { /*if*/
-    variable1 =  self;
-    goto return_label18;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB1;
+}
+val_t kernel___Int___max(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 259;
+  fra.me.meth = LOCATE_kernel___Int___max;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  REGB1 = p1;
+  /* ./../lib/standard//kernel.nit:212 */
+  REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+  /* ./../lib/standard//kernel.nit:261 */
+  if (UNTAG_Bool(REGB2)) {
+    /* ./../lib/standard//kernel.nit:262 */
+    goto label1;
+  } else {
+    /* ./../lib/standard//kernel.nit:264 */
+    REGB1 = REGB0;
+    goto label1;
   }
-  return_label18: while(false);
-  tracehead = trace.prev;
-  return variable1;
-}
-val_t kernel___Int___min(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Int___min, 268};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = TAG_Bool(UNTAG_Int( variable0 /*c*/)<UNTAG_Int( self));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 =  variable0 /*c*/;
-    goto return_label19;
-  } else { /*if*/
-    variable1 =  self;
-    goto return_label19;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB1;
+}
+val_t kernel___Int___min(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 268;
+  fra.me.meth = LOCATE_kernel___Int___min;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  REGB1 = p1;
+  /* ./../lib/standard//kernel.nit:212 */
+  REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
+  /* ./../lib/standard//kernel.nit:270 */
+  if (UNTAG_Bool(REGB2)) {
+    /* ./../lib/standard//kernel.nit:271 */
+    goto label1;
+  } else {
+    /* ./../lib/standard//kernel.nit:273 */
+    REGB1 = REGB0;
+    goto label1;
   }
-  return_label19: while(false);
-  tracehead = trace.prev;
-  return variable1;
-}
-val_t kernel___Int___ascii(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Int___ascii, 277};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Char(UNTAG_Int( self));
-}
-val_t kernel___Int___digit_count(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Int___digit_count, 280};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = TAG_Int((int)0) /*decl variable d*/;
-  variable2 = TAG_Int((int)0) /*decl variable n*/;
-  variable3 = TAG_Bool(UNTAG_Int( self)<UNTAG_Int( TAG_Int(0)));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    variable1 =  TAG_Int(1) /*d=*/;
-    variable3 = TAG_Int(-UNTAG_Int( self));
-    variable2 = variable3 /*n=*/;
-  } else { /*if*/
-    variable3 = TAG_Bool(( self)==( TAG_Int(0)));
-    if (UNTAG_Bool(variable3)) { /*if*/
-      variable1 =  TAG_Int(1);
-      goto return_label20;
-    } else { /*if*/
-      variable1 =  TAG_Int(0) /*d=*/;
-      variable2 =  self /*n=*/;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB1;
+}
+val_t kernel___Int___ascii(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 277;
+  fra.me.meth = LOCATE_kernel___Int___ascii;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  /* ./../lib/standard//kernel.nit:277 */
+  REGB0 = TAG_Char(UNTAG_Int(REGB0));
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t kernel___Int___digit_count(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t REGB5;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 280;
+  fra.me.meth = LOCATE_kernel___Int___digit_count;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  REGB1 = p1;
+  /* ./../lib/standard//kernel.nit:286 */
+  REGB2 = TAG_Int(0);
+  /* ./../lib/standard//kernel.nit:212 */
+  REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
+  /* ./../lib/standard//kernel.nit:286 */
+  if (UNTAG_Bool(REGB2)) {
+    /* ./../lib/standard//kernel.nit:287 */
+    REGB2 = TAG_Int(1);
+    /* ./../lib/standard//kernel.nit:216 */
+    REGB3 = TAG_Int(-UNTAG_Int(REGB0));
+  } else {
+    /* ./../lib/standard//kernel.nit:289 */
+    REGB4 = TAG_Int(0);
+    REGB5 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB4));
+    if (UNTAG_Bool(REGB5)) {
+    } else {
+      /* ./../lib/standard//kernel.nit:207 */
+      REGB4 = TAG_Bool((REGB0)==(REGB4));
+      /* ./../lib/standard//kernel.nit:289 */
+      REGB5 = REGB4;
+    }
+    if (UNTAG_Bool(REGB5)) {
+      /* ./../lib/standard//kernel.nit:290 */
+      REGB5 = TAG_Int(1);
+      goto label1;
+    } else {
+      /* ./../lib/standard//kernel.nit:292 */
+      REGB4 = TAG_Int(0);
+      REGB2 = REGB4;
+      /* ./../lib/standard//kernel.nit:293 */
+      REGB3 = REGB0;
     }
   }
-  while (true) { /*while*/
-    variable3 = TAG_Bool(UNTAG_Int( variable2 /*n*/)>UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable3)) break; /* while*/
-    variable1 = TAG_Int(UNTAG_Int(variable1)+UNTAG_Int( TAG_Int(1))) /*d*/;
-    variable3 = TAG_Int(UNTAG_Int( variable2 /*n*/)/UNTAG_Int( variable0 /*b*/));
-    variable2 = variable3 /*n=*/;
-    continue_21: while(0);
+  /* ./../lib/standard//kernel.nit:296 */
+  while(1) {
+    REGB0 = TAG_Int(0);
+    /* ./../lib/standard//kernel.nit:214 */
+    REGB0 = TAG_Bool(UNTAG_Int(REGB3)>UNTAG_Int(REGB0));
+    /* ./../lib/standard//kernel.nit:296 */
+    if (UNTAG_Bool(REGB0)) {
+      /* ./../lib/standard//kernel.nit:297 */
+      REGB0 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
+      /* ./../lib/standard//kernel.nit:297 */
+      REGB2 = REGB0;
+      /* ./../lib/standard//kernel.nit:219 */
+      REGB0 = TAG_Int(UNTAG_Int(REGB3)/UNTAG_Int(REGB1));
+      /* ./../lib/standard//kernel.nit:298 */
+      REGB3 = REGB0;
+    } else {
+      /* ./../lib/standard//kernel.nit:296 */
+      goto label2;
+    }
   }
-  break_21: while(0);
-  variable1 =  variable1 /*d*/;
-  goto return_label20;
-  return_label20: while(false);
-  tracehead = trace.prev;
-  return variable1;
-}
-val_t kernel___Int___to_c(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Int___to_c, 303};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 = TAG_Bool(UNTAG_Int( self)>=UNTAG_Int( TAG_Int(0)));
-  variable1 = variable0;
-  if (UNTAG_Bool(variable1)) { /* and */
-    variable1 = TAG_Bool(UNTAG_Int( self)<=UNTAG_Int( TAG_Int(36)));
+  label2: while(0);
+  /* ./../lib/standard//kernel.nit:300 */
+  REGB5 = REGB2;
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB5;
+}
+val_t kernel___Int___to_c(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 303;
+  fra.me.meth = LOCATE_kernel___Int___to_c;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  /* ./../lib/standard//kernel.nit:308 */
+  REGB1 = TAG_Int(0);
+  /* ./../lib/standard//kernel.nit:213 */
+  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
+  /* ./../lib/standard//kernel.nit:308 */
+  if (UNTAG_Bool(REGB1)) {
+    REGB1 = TAG_Int(36);
+    /* ./../lib/standard//kernel.nit:211 */
+    REGB1 = TAG_Bool(UNTAG_Int(REGB0)<=UNTAG_Int(REGB1));
+  } else {
+    /* ./../lib/standard//kernel.nit:308 */
+    REGB2 = TAG_Bool(false);
+    REGB1 = REGB2;
   }
-  variable0 = variable1;
-  if (!UNTAG_Bool(variable0)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_kernel___Int___to_c, 308); nit_exit(1);}
-  variable0 = TAG_Bool(UNTAG_Int( self)<UNTAG_Int( TAG_Int(10)));
-  if (UNTAG_Bool(variable0)) { /*if*/
-    variable0 = TAG_Int((unsigned char)UNTAG_Char( TAG_Char('0')));
-    variable0 = TAG_Int(UNTAG_Int( self)+UNTAG_Int(variable0));
-    variable0 = TAG_Char(UNTAG_Int(variable0));
-    goto return_label22;
-  } else { /*if*/
-    variable0 = TAG_Int((unsigned char)UNTAG_Char( TAG_Char('a')));
-    variable0 = TAG_Int(UNTAG_Int(variable0)-UNTAG_Int( TAG_Int(10)));
-    variable0 = TAG_Int(UNTAG_Int( self)+UNTAG_Int(variable0));
-    variable0 = TAG_Char(UNTAG_Int(variable0));
-    goto return_label22;
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_kernel, 308);
   }
-  return_label22: while(false);
-  tracehead = trace.prev;
-  return variable0;
-}
-val_t kernel___Char___object_id(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Char___object_id, 324};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Int(UNTAG_Char( self));
-}
-val_t kernel___Char_____eqeq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Char_____eqeq, 325};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Bool(( self)==( param0));
-}
-val_t kernel___Char_____neq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Char_____neq, 326};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Bool(( self)!=( param0));
-}
-void kernel___Char___output(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Char___output, 327};
-  trace.prev = tracehead; tracehead = &trace;
-  printf("%c", (unsigned char)UNTAG_Char( self));
-  tracehead = trace.prev;
+  /* ./../lib/standard//kernel.nit:309 */
+  REGB1 = TAG_Int(10);
+  /* ./../lib/standard//kernel.nit:212 */
+  REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+  /* ./../lib/standard//kernel.nit:309 */
+  if (UNTAG_Bool(REGB1)) {
+    /* ./../lib/standard//kernel.nit:310 */
+    REGB1 = TAG_Char('0');
+    /* ./../lib/standard//kernel.nit:382 */
+    REGB1 = TAG_Int((unsigned char)UNTAG_Char(REGB1));
+    /* ./../lib/standard//kernel.nit:215 */
+    REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:277 */
+    REGB1 = TAG_Char(UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:310 */
+    goto label1;
+  } else {
+    /* ./../lib/standard//kernel.nit:312 */
+    REGB2 = TAG_Char('a');
+    /* ./../lib/standard//kernel.nit:382 */
+    REGB2 = TAG_Int((unsigned char)UNTAG_Char(REGB2));
+    /* ./../lib/standard//kernel.nit:312 */
+    REGB3 = TAG_Int(10);
+    /* ./../lib/standard//kernel.nit:217 */
+    REGB3 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB3));
+    /* ./../lib/standard//kernel.nit:215 */
+    REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
+    /* ./../lib/standard//kernel.nit:277 */
+    REGB3 = TAG_Char(UNTAG_Int(REGB3));
+    /* ./../lib/standard//kernel.nit:312 */
+    REGB1 = REGB3;
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB1;
+}
+void kernel___Int___enumerate_to(val_t p0, val_t p1, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  fun_t CREG[1];
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 316;
+  fra.me.meth = LOCATE_kernel___Int___enumerate_to;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.closure_ctx = closctx_param;
+  fra.me.closure_funs = CREG;
+  REGB0 = p0;
+  REGB1 = p1;
+  CREG[0] = clos_fun0;
+  /* ./../lib/standard//kernel.nit:321 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:211 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<=UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:321 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./../lib/standard//kernel.nit:322 */
+      ((void (*)(struct stack_frame_t *, val_t))(CREG[0]))(closctx_param, REGB0);
+      if (closctx_param->has_broke) {
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:323 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:323 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:321 */
+      goto label2;
+    }
+  }
+  label2: while(0);
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
   return;
 }
-val_t kernel___Char_____leq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Char_____leq, 329};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Bool(UNTAG_Char( self)<=UNTAG_Char( param0));
-}
-val_t kernel___Char_____l(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Char_____l, 330};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Bool(UNTAG_Char( self)<UNTAG_Char( param0));
-}
-val_t kernel___Char_____geq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Char_____geq, 331};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Bool(UNTAG_Char( self)>=UNTAG_Char( param0));
-}
-val_t kernel___Char_____g(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Char_____g, 332};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Bool(UNTAG_Char( self)>UNTAG_Char( param0));
-}
-val_t kernel___Char___succ(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Char___succ, 334};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Char(UNTAG_Char( self)+1);
-}
-val_t kernel___Char___prec(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Char___prec, 335};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Char(UNTAG_Char( self)-1);
-}
-val_t kernel___Char___distance(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Char___distance, 337};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable2 = TAG_Int((unsigned char)UNTAG_Char( self));
-  variable3 = TAG_Int((unsigned char)UNTAG_Char( variable0 /*c*/));
-  variable2 = TAG_Int(UNTAG_Int(variable2)-UNTAG_Int(variable3));
-  variable1 = variable2;
-  variable2 = TAG_Bool(UNTAG_Int( variable1 /*d*/)>=UNTAG_Int( TAG_Int(0)));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable1 =  variable1 /*d*/;
-    goto return_label23;
-  } else { /*if*/
-    variable2 = TAG_Int(-UNTAG_Int( variable1 /*d*/));
-    variable1 = variable2;
-    goto return_label23;
-  }
-  return_label23: while(false);
-  tracehead = trace.prev;
-  return variable1;
-}
-val_t kernel___Char___to_i(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Char___to_i, 347};
-  val_t variable0;
-    val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 = TAG_Bool(( self)==( TAG_Char('-')));
-  if (UNTAG_Bool(variable0)) { /*if*/
-    variable0 = TAG_Int(-UNTAG_Int( TAG_Int(1)));
-    goto return_label24;
-  } else { /*if*/
-    variable0 = TAG_Bool(UNTAG_Char( self)>=UNTAG_Char( TAG_Char('0')));
-    variable1 = variable0;
-    if (UNTAG_Bool(variable1)) { /* and */
-      variable1 = TAG_Bool(UNTAG_Char( self)<=UNTAG_Char( TAG_Char('9')));
+void kernel___Int___enumerate_before(val_t p0, val_t p1, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  fun_t CREG[1];
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 327;
+  fra.me.meth = LOCATE_kernel___Int___enumerate_before;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.closure_ctx = closctx_param;
+  fra.me.closure_funs = CREG;
+  REGB0 = p0;
+  REGB1 = p1;
+  CREG[0] = clos_fun0;
+  /* ./../lib/standard//kernel.nit:332 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:332 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./../lib/standard//kernel.nit:333 */
+      ((void (*)(struct stack_frame_t *, val_t))(CREG[0]))(closctx_param, REGB0);
+      if (closctx_param->has_broke) {
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:332 */
+      goto label2;
     }
-    variable0 = variable1;
-    if (UNTAG_Bool(variable0)) { /*if*/
-      variable0 = TAG_Int((unsigned char)UNTAG_Char( self));
-      variable1 = TAG_Int((unsigned char)UNTAG_Char( TAG_Char('0')));
-      variable0 = TAG_Int(UNTAG_Int(variable0)-UNTAG_Int(variable1));
-      goto return_label24;
-    } else { /*if*/
-      variable0 = ((kernel___Char___to_lower_t)CALL( self,COLOR_kernel___Char___to_lower))( self) /*Char::to_lower*/;
-      variable0 = TAG_Int((unsigned char)UNTAG_Char(variable0));
-      variable1 = TAG_Int((unsigned char)UNTAG_Char( TAG_Char('a')));
-      variable1 = TAG_Int(UNTAG_Int(variable1)+UNTAG_Int( TAG_Int(10)));
-      variable0 = TAG_Int(UNTAG_Int(variable0)-UNTAG_Int(variable1));
-      goto return_label24;
+  }
+  label2: while(0);
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+val_t kernel___Char___object_id(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 346;
+  fra.me.meth = LOCATE_kernel___Char___object_id;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  /* ./../lib/standard//kernel.nit:346 */
+  REGB0 = TAG_Int(UNTAG_Char(REGB0));
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t kernel___Char_____eqeq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 347;
+  fra.me.meth = LOCATE_kernel___Char_____eqeq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  fra.me.REG[0] = p1;
+  /* ./../lib/standard//kernel.nit:347 */
+  REGB0 = TAG_Bool((REGB0)==(fra.me.REG[0]));
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t kernel___Char_____neq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 348;
+  fra.me.meth = LOCATE_kernel___Char_____neq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  fra.me.REG[0] = p1;
+  /* ./../lib/standard//kernel.nit:348 */
+  REGB0 = TAG_Bool((REGB0)!=(fra.me.REG[0]));
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+void kernel___Char___output(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 349;
+  fra.me.meth = LOCATE_kernel___Char___output;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  /* ./../lib/standard//kernel.nit:349 */
+  printf("%c", (unsigned char)UNTAG_Char(REGB0));;
+  stack_frame_head = fra.me.prev;
+  return;
+}
+val_t kernel___Char_____leq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 351;
+  fra.me.meth = LOCATE_kernel___Char_____leq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  REGB1 = p1;
+  /* ./../lib/standard//kernel.nit:351 */
+  REGB1 = TAG_Bool(UNTAG_Char(REGB0)<=UNTAG_Char(REGB1));
+  stack_frame_head = fra.me.prev;
+  return REGB1;
+}
+val_t kernel___Char_____l(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 352;
+  fra.me.meth = LOCATE_kernel___Char_____l;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  REGB1 = p1;
+  /* ./../lib/standard//kernel.nit:352 */
+  REGB1 = TAG_Bool(UNTAG_Char(REGB0)<UNTAG_Char(REGB1));
+  stack_frame_head = fra.me.prev;
+  return REGB1;
+}
+val_t kernel___Char_____geq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 353;
+  fra.me.meth = LOCATE_kernel___Char_____geq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  REGB1 = p1;
+  /* ./../lib/standard//kernel.nit:353 */
+  REGB1 = TAG_Bool(UNTAG_Char(REGB0)>=UNTAG_Char(REGB1));
+  stack_frame_head = fra.me.prev;
+  return REGB1;
+}
+val_t kernel___Char_____g(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 354;
+  fra.me.meth = LOCATE_kernel___Char_____g;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  REGB1 = p1;
+  /* ./../lib/standard//kernel.nit:354 */
+  REGB1 = TAG_Bool(UNTAG_Char(REGB0)>UNTAG_Char(REGB1));
+  stack_frame_head = fra.me.prev;
+  return REGB1;
+}
+val_t kernel___Char___succ(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 356;
+  fra.me.meth = LOCATE_kernel___Char___succ;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  /* ./../lib/standard//kernel.nit:356 */
+  REGB0 = TAG_Char(UNTAG_Char(REGB0)+1);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t kernel___Char___prec(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 357;
+  fra.me.meth = LOCATE_kernel___Char___prec;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  /* ./../lib/standard//kernel.nit:357 */
+  REGB0 = TAG_Char(UNTAG_Char(REGB0)-1);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t kernel___Char___distance(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 359;
+  fra.me.meth = LOCATE_kernel___Char___distance;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  REGB1 = p1;
+  /* ./../lib/standard//kernel.nit:382 */
+  REGB0 = TAG_Int((unsigned char)UNTAG_Char(REGB0));
+  REGB1 = TAG_Int((unsigned char)UNTAG_Char(REGB1));
+  /* ./../lib/standard//kernel.nit:217 */
+  REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
+  /* ./../lib/standard//kernel.nit:362 */
+  REGB0 = TAG_Int(0);
+  /* ./../lib/standard//kernel.nit:213 */
+  REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
+  /* ./../lib/standard//kernel.nit:362 */
+  if (UNTAG_Bool(REGB0)) {
+    /* ./../lib/standard//kernel.nit:363 */
+    REGB0 = REGB1;
+    goto label1;
+  } else {
+    /* ./../lib/standard//kernel.nit:216 */
+    REGB1 = TAG_Int(-UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:365 */
+    REGB0 = REGB1;
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t kernel___Char___to_i(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 369;
+  fra.me.meth = LOCATE_kernel___Char___to_i;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  /* ./../lib/standard//kernel.nit:373 */
+  REGB1 = TAG_Char('-');
+  REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
+  if (UNTAG_Bool(REGB2)) {
+  } else {
+    /* ./../lib/standard//kernel.nit:347 */
+    REGB1 = TAG_Bool((REGB0)==(REGB1));
+    /* ./../lib/standard//kernel.nit:373 */
+    REGB2 = REGB1;
+  }
+  if (UNTAG_Bool(REGB2)) {
+    /* ./../lib/standard//kernel.nit:374 */
+    REGB2 = TAG_Int(1);
+    /* ./../lib/standard//kernel.nit:216 */
+    REGB2 = TAG_Int(-UNTAG_Int(REGB2));
+    /* ./../lib/standard//kernel.nit:374 */
+    goto label1;
+  } else {
+    /* ./../lib/standard//kernel.nit:375 */
+    REGB1 = CALL_kernel___Char___is_digit(REGB0)(REGB0);
+    if (UNTAG_Bool(REGB1)) {
+      /* ./../lib/standard//kernel.nit:382 */
+      REGB1 = TAG_Int((unsigned char)UNTAG_Char(REGB0));
+      /* ./../lib/standard//kernel.nit:376 */
+      REGB3 = TAG_Char('0');
+      /* ./../lib/standard//kernel.nit:382 */
+      REGB3 = TAG_Int((unsigned char)UNTAG_Char(REGB3));
+      /* ./../lib/standard//kernel.nit:217 */
+      REGB3 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB3));
+      /* ./../lib/standard//kernel.nit:376 */
+      REGB2 = REGB3;
+      goto label1;
+    } else {
+      /* ./../lib/standard//kernel.nit:378 */
+      REGB0 = CALL_kernel___Char___to_lower(REGB0)(REGB0);
+      /* ./../lib/standard//kernel.nit:382 */
+      REGB0 = TAG_Int((unsigned char)UNTAG_Char(REGB0));
+      /* ./../lib/standard//kernel.nit:378 */
+      REGB3 = TAG_Char('a');
+      /* ./../lib/standard//kernel.nit:382 */
+      REGB3 = TAG_Int((unsigned char)UNTAG_Char(REGB3));
+      /* ./../lib/standard//kernel.nit:378 */
+      REGB1 = TAG_Int(10);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB1 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB1));
+      /* ./../lib/standard//kernel.nit:217 */
+      REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
+      /* ./../lib/standard//kernel.nit:378 */
+      REGB2 = REGB1;
+      goto label1;
     }
   }
-  return_label24: while(false);
-  tracehead = trace.prev;
-  return variable0;
-}
-val_t kernel___Char___ascii(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Char___ascii, 360};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Int((unsigned char)UNTAG_Char( self));
-}
-val_t kernel___Char_____plus(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Char_____plus, 363};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Char(UNTAG_Char( self)+UNTAG_Char( param0));
-}
-val_t kernel___Char_____minus(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Char_____minus, 364};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return TAG_Char(UNTAG_Char( self)-UNTAG_Char( param0));
-}
-val_t kernel___Char___to_lower(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Char___to_lower, 366};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 = TAG_Bool(UNTAG_Char( self)>=UNTAG_Char( TAG_Char('A')));
-  variable1 = variable0;
-  if (UNTAG_Bool(variable1)) { /* and */
-    variable1 = TAG_Bool(UNTAG_Char( self)<=UNTAG_Char( TAG_Char('Z')));
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB2;
+}
+val_t kernel___Char___ascii(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 382;
+  fra.me.meth = LOCATE_kernel___Char___ascii;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  /* ./../lib/standard//kernel.nit:382 */
+  REGB0 = TAG_Int((unsigned char)UNTAG_Char(REGB0));
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t kernel___Char_____plus(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 385;
+  fra.me.meth = LOCATE_kernel___Char_____plus;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  REGB1 = p1;
+  /* ./../lib/standard//kernel.nit:385 */
+  REGB1 = TAG_Char(UNTAG_Char(REGB0)+UNTAG_Char(REGB1));
+  stack_frame_head = fra.me.prev;
+  return REGB1;
+}
+val_t kernel___Char_____minus(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 386;
+  fra.me.meth = LOCATE_kernel___Char_____minus;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  REGB1 = p1;
+  /* ./../lib/standard//kernel.nit:386 */
+  REGB1 = TAG_Char(UNTAG_Char(REGB0)-UNTAG_Char(REGB1));
+  stack_frame_head = fra.me.prev;
+  return REGB1;
+}
+val_t kernel___Char___to_lower(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 388;
+  fra.me.meth = LOCATE_kernel___Char___to_lower;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  /* ./../lib/standard//kernel.nit:391 */
+  REGB1 = CALL_kernel___Char___is_upper(REGB0)(REGB0);
+  if (UNTAG_Bool(REGB1)) {
+    /* ./../lib/standard//kernel.nit:382 */
+    REGB1 = TAG_Int((unsigned char)UNTAG_Char(REGB0));
+    /* ./../lib/standard//kernel.nit:392 */
+    REGB2 = TAG_Char('a');
+    REGB3 = TAG_Char('A');
+    REGB3 = CALL_kernel___Discrete___distance(REGB2)(REGB2, REGB3);
+    /* ./../lib/standard//kernel.nit:215 */
+    REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
+    /* ./../lib/standard//kernel.nit:277 */
+    REGB3 = TAG_Char(UNTAG_Int(REGB3));
+    /* ./../lib/standard//kernel.nit:392 */
+    goto label1;
+  } else {
+    /* ./../lib/standard//kernel.nit:394 */
+    REGB3 = REGB0;
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB3;
+}
+val_t kernel___Char___to_upper(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 398;
+  fra.me.meth = LOCATE_kernel___Char___to_upper;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  /* ./../lib/standard//kernel.nit:401 */
+  REGB1 = CALL_kernel___Char___is_lower(REGB0)(REGB0);
+  if (UNTAG_Bool(REGB1)) {
+    /* ./../lib/standard//kernel.nit:382 */
+    REGB1 = TAG_Int((unsigned char)UNTAG_Char(REGB0));
+    /* ./../lib/standard//kernel.nit:402 */
+    REGB2 = TAG_Char('a');
+    REGB3 = TAG_Char('A');
+    REGB3 = CALL_kernel___Discrete___distance(REGB2)(REGB2, REGB3);
+    /* ./../lib/standard//kernel.nit:217 */
+    REGB3 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB3));
+    /* ./../lib/standard//kernel.nit:277 */
+    REGB3 = TAG_Char(UNTAG_Int(REGB3));
+    /* ./../lib/standard//kernel.nit:402 */
+    goto label1;
+  } else {
+    /* ./../lib/standard//kernel.nit:404 */
+    REGB3 = REGB0;
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB3;
+}
+val_t kernel___Char___is_digit(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 408;
+  fra.me.meth = LOCATE_kernel___Char___is_digit;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  /* ./../lib/standard//kernel.nit:410 */
+  REGB1 = TAG_Char('0');
+  /* ./../lib/standard//kernel.nit:353 */
+  REGB1 = TAG_Bool(UNTAG_Char(REGB0)>=UNTAG_Char(REGB1));
+  /* ./../lib/standard//kernel.nit:410 */
+  if (UNTAG_Bool(REGB1)) {
+    REGB1 = TAG_Char('9');
+    /* ./../lib/standard//kernel.nit:351 */
+    REGB1 = TAG_Bool(UNTAG_Char(REGB0)<=UNTAG_Char(REGB1));
+  } else {
+    /* ./../lib/standard//kernel.nit:410 */
+    REGB0 = TAG_Bool(false);
+    REGB1 = REGB0;
   }
-  variable0 = variable1;
-  if (UNTAG_Bool(variable0)) { /*if*/
-    variable0 = TAG_Int((unsigned char)UNTAG_Char( self));
-    variable1 = ((kernel___Char___distance_t)CALL( TAG_Char('a'),COLOR_kernel___Discrete___distance))( TAG_Char('a'),  TAG_Char('A')) /*Char::distance*/;
-    variable0 = TAG_Int(UNTAG_Int(variable0)+UNTAG_Int(variable1));
-    variable0 = TAG_Char(UNTAG_Int(variable0));
-    goto return_label25;
-  } else { /*if*/
-    variable0 =  self;
-    goto return_label25;
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB1;
+}
+val_t kernel___Char___is_lower(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 413;
+  fra.me.meth = LOCATE_kernel___Char___is_lower;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  /* ./../lib/standard//kernel.nit:415 */
+  REGB1 = TAG_Char('a');
+  /* ./../lib/standard//kernel.nit:353 */
+  REGB1 = TAG_Bool(UNTAG_Char(REGB0)>=UNTAG_Char(REGB1));
+  /* ./../lib/standard//kernel.nit:415 */
+  if (UNTAG_Bool(REGB1)) {
+    REGB1 = TAG_Char('z');
+    /* ./../lib/standard//kernel.nit:351 */
+    REGB1 = TAG_Bool(UNTAG_Char(REGB0)<=UNTAG_Char(REGB1));
+  } else {
+    /* ./../lib/standard//kernel.nit:415 */
+    REGB0 = TAG_Bool(false);
+    REGB1 = REGB0;
   }
-  return_label25: while(false);
-  tracehead = trace.prev;
-  return variable0;
-}
-val_t kernel___Char___to_upper(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_kernel___Char___to_upper, 376};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 = TAG_Bool(UNTAG_Char( self)>=UNTAG_Char( TAG_Char('a')));
-  variable1 = variable0;
-  if (UNTAG_Bool(variable1)) { /* and */
-    variable1 = TAG_Bool(UNTAG_Char( self)<=UNTAG_Char( TAG_Char('z')));
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB1;
+}
+val_t kernel___Char___is_upper(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 418;
+  fra.me.meth = LOCATE_kernel___Char___is_upper;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  /* ./../lib/standard//kernel.nit:420 */
+  REGB1 = TAG_Char('A');
+  /* ./../lib/standard//kernel.nit:353 */
+  REGB1 = TAG_Bool(UNTAG_Char(REGB0)>=UNTAG_Char(REGB1));
+  /* ./../lib/standard//kernel.nit:420 */
+  if (UNTAG_Bool(REGB1)) {
+    REGB1 = TAG_Char('Z');
+    /* ./../lib/standard//kernel.nit:351 */
+    REGB1 = TAG_Bool(UNTAG_Char(REGB0)<=UNTAG_Char(REGB1));
+  } else {
+    /* ./../lib/standard//kernel.nit:420 */
+    REGB0 = TAG_Bool(false);
+    REGB1 = REGB0;
   }
-  variable0 = variable1;
-  if (UNTAG_Bool(variable0)) { /*if*/
-    variable0 = TAG_Int((unsigned char)UNTAG_Char( self));
-    variable1 = ((kernel___Char___distance_t)CALL( TAG_Char('a'),COLOR_kernel___Discrete___distance))( TAG_Char('a'),  TAG_Char('A')) /*Char::distance*/;
-    variable0 = TAG_Int(UNTAG_Int(variable0)-UNTAG_Int(variable1));
-    variable0 = TAG_Char(UNTAG_Int(variable0));
-    goto return_label26;
-  } else { /*if*/
-    variable0 =  self;
-    goto return_label26;
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB1;
+}
+val_t kernel___Char___is_letter(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_kernel;
+  fra.me.line = 423;
+  fra.me.meth = LOCATE_kernel___Char___is_letter;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  /* ./../lib/standard//kernel.nit:425 */
+  REGB1 = CALL_kernel___Char___is_lower(REGB0)(REGB0);
+  if (UNTAG_Bool(REGB1)) {
+    REGB1 = TAG_Bool(true);
+  } else {
+    REGB0 = CALL_kernel___Char___is_upper(REGB0)(REGB0);
+    REGB1 = REGB0;
   }
-  return_label26: while(false);
-  tracehead = trace.prev;
-  return variable0;
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB1;
 }