Beispiel #1
0
val_t symbol___String___to_symbol(val_t p0){
  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
  val_t REGB0;
  val_t tmp;
  static val_t once_value_1; /* Once value */
  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
  fra.me.file = LOCATE_symbol;
  fra.me.line = 18;
  fra.me.meth = LOCATE_symbol___String___to_symbol;
  fra.me.has_broke = 0;
  fra.me.REG_size = 4;
  fra.me.nitni_local_ref_head = NULL;
  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;
  /* ../lib/symbol.nit:21 */
  if (!once_value_1) {
    fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
    once_value_1 = fra.me.REG[1];
    register_static_object(&once_value_1);
  } else fra.me.REG[1] = once_value_1;
  fra.me.REG[1] = fra.me.REG[1];
  /* ../lib/symbol.nit:22 */
  REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
  if (UNTAG_Bool(REGB0)) {
    /* ../lib/symbol.nit:23 */
    fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
    goto label2;
  } else {
    /* ../lib/symbol.nit:25 */
    fra.me.REG[3] = NEW_Symbol_symbol___Symbol___init(fra.me.REG[0]);
    /* ../lib/symbol.nit:26 */
    CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
    /* ../lib/symbol.nit:27 */
    fra.me.REG[2] = fra.me.REG[3];
    goto label2;
  }
  label2: while(0);
  stack_frame_head = fra.me.prev;
  return fra.me.REG[2];
}
void global___cha_analysis___ChaVisitor___visit_icode(val_t p0, val_t p1){
  struct {struct stack_frame_t me; val_t MORE_REG[6];} 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_global___cha_analysis;
  fra.me.line = 94;
  fra.me.meth = LOCATE_global___cha_analysis___ChaVisitor___visit_icode;
  fra.me.has_broke = 0;
  fra.me.REG_size = 7;
  fra.me.nitni_local_ref_head = NULL;
  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[4] = NIT_NULL;
  fra.me.REG[5] = NIT_NULL;
  fra.me.REG[6] = NIT_NULL;
  fra.me.REG[0] = p0;
  fra.me.REG[1] = p1;
  /* global/cha_analysis.nit:94 */
  fra.me.REG[2] = fra.me.REG[0];
  fra.me.REG[3] = fra.me.REG[1];
  /* global/cha_analysis.nit:96 */
  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___IStaticCall, ID_icode___icode_base___IStaticCall)) /*cast IStaticCall*/;
  if (UNTAG_Bool(REGB0)) {
    /* global/cha_analysis.nit:98 */
    fra.me.REG[4] = CALL_global___cha_analysis___ChaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
    REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
    if (UNTAG_Bool(REGB0)) {
      nit_abort("Reciever is null", NULL, LOCATE_global___cha_analysis, 98);
    }
    fra.me.REG[5] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
    REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
    if (UNTAG_Bool(REGB0)) {
      nit_abort("Reciever is null", NULL, LOCATE_global___cha_analysis, 98);
    }
    fra.me.REG[6] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
    fra.me.REG[6] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[6])(fra.me.REG[6]);
    REGB0 = TAG_Bool(true);
    REGB1 = TAG_Bool(false);
    CALL_global___cha_analysis___ChaBuilder___add_search(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], REGB0, REGB1);
  } else {
    /* global/cha_analysis.nit:99 */
    REGB1 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___INew, ID_icode___icode_base___INew)) /*cast INew*/;
    if (UNTAG_Bool(REGB1)) {
      /* global/cha_analysis.nit:101 */
      REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
      if (UNTAG_Bool(REGB1)) {
        nit_abort("Reciever is null", NULL, LOCATE_global___cha_analysis, 101);
      }
      fra.me.REG[6] = CALL_icode___icode_base___INew___stype(fra.me.REG[3])(fra.me.REG[3]);
      /* global/cha_analysis.nit:102 */
      fra.me.REG[5] = CALL_global___cha_analysis___ChaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
      fra.me.REG[5] = CALL_global___cha_analysis___ChaBuilder___program(fra.me.REG[5])(fra.me.REG[5]);
      fra.me.REG[5] = CALL_program___Program___main_module(fra.me.REG[5])(fra.me.REG[5]);
      fra.me.REG[5] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
      fra.me.REG[5] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[5])(fra.me.REG[5]);
      /* global/cha_analysis.nit:103 */
      fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
      REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[6])(fra.me.REG[6]);
      REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
      if (UNTAG_Bool(REGB1)) {
        /* global/cha_analysis.nit:104 */
        REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
        if (UNTAG_Bool(REGB1)) {
          nit_abort("Reciever is null", NULL, LOCATE_global___cha_analysis, 104);
        }
        fra.me.REG[6] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
        fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[6])(fra.me.REG[6]);
        fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
        REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[6], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
        if (UNTAG_Bool(REGB1)) {
        } else {
          nit_abort("Cast failed", NULL, LOCATE_global___cha_analysis, 104);
        }
        /* global/cha_analysis.nit:105 */
        fra.me.REG[5] = CALL_program___MMLocalClass___new_instance_iroutine(fra.me.REG[5])(fra.me.REG[5]);
        fra.me.REG[6] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
        /* global/cha_analysis.nit:106 */
        fra.me.REG[5] = CALL_global___cha_analysis___ChaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
        REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
        if (UNTAG_Bool(REGB1)) {
          nit_abort("Reciever is null", NULL, LOCATE_global___cha_analysis, 106);
        }
        fra.me.REG[4] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
        REGB1 = TAG_Bool(false);
        REGB0 = TAG_Bool(false);
        CALL_global___cha_analysis___ChaBuilder___add_search(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6], REGB1, REGB0);
      }
    } else {
      /* global/cha_analysis.nit:108 */
      REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___ISuper, ID_icode___icode_base___ISuper)) /*cast ISuper*/;
      if (UNTAG_Bool(REGB0)) {
        /* global/cha_analysis.nit:109 */
        fra.me.REG[6] = CALL_global___cha_analysis___ChaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
        REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
        if (UNTAG_Bool(REGB0)) {
          nit_abort("Reciever is null", NULL, LOCATE_global___cha_analysis, 109);
        }
        fra.me.REG[4] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
        REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
        if (UNTAG_Bool(REGB0)) {
          nit_abort("Reciever is null", NULL, LOCATE_global___cha_analysis, 109);
        }
        fra.me.REG[5] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
        fra.me.REG[5] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[5])(fra.me.REG[5]);
        REGB0 = TAG_Bool(false);
        REGB1 = TAG_Bool(true);
        CALL_global___cha_analysis___ChaBuilder___add_search(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4], fra.me.REG[5], REGB0, REGB1);
      } else {
        /* global/cha_analysis.nit:110 */
        REGB1 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___ICall, ID_icode___icode_base___ICall)) /*cast ICall*/;
        if (UNTAG_Bool(REGB1)) {
          /* global/cha_analysis.nit:111 */
          fra.me.REG[5] = CALL_global___cha_analysis___ChaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
          REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
          if (UNTAG_Bool(REGB1)) {
            nit_abort("Reciever is null", NULL, LOCATE_global___cha_analysis, 111);
          }
          fra.me.REG[4] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
          REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
          if (UNTAG_Bool(REGB1)) {
            nit_abort("Reciever is null", NULL, LOCATE_global___cha_analysis, 111);
          }
          fra.me.REG[6] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
          fra.me.REG[6] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[6])(fra.me.REG[6]);
          REGB1 = TAG_Bool(false);
          REGB0 = TAG_Bool(false);
          CALL_global___cha_analysis___ChaBuilder___add_search(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6], REGB1, REGB0);
        } else {
          /* global/cha_analysis.nit:112 */
          REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___ICheckInstance, ID_icode___icode_base___ICheckInstance)) /*cast ICheckInstance*/;
          if (UNTAG_Bool(REGB0)) {
            /* global/cha_analysis.nit:113 */
            REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
            if (UNTAG_Bool(REGB0)) {
              nit_abort("Reciever is null", NULL, LOCATE_global___cha_analysis, 113);
            }
            fra.me.REG[6] = CALL_icode___icode_base___ICheckInstance___stype(fra.me.REG[3])(fra.me.REG[3]);
            /* global/cha_analysis.nit:114 */
            fra.me.REG[4] = CALL_global___cha_analysis___ChaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
            fra.me.REG[4] = CALL_global___cha_analysis___ChaBuilder___program(fra.me.REG[4])(fra.me.REG[4]);
            fra.me.REG[4] = CALL_program___Program___main_module(fra.me.REG[4])(fra.me.REG[4]);
            fra.me.REG[4] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
            fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[4])(fra.me.REG[4]);
            /* global/cha_analysis.nit:115 */
            fra.me.REG[4] = CALL_program___MMLocalClass___checknew_iroutine(fra.me.REG[4])(fra.me.REG[4]);
            /* global/cha_analysis.nit:116 */
            fra.me.REG[6] = CALL_global___cha_analysis___ChaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
            REGB0 = TAG_Bool(true);
            REGB1 = TAG_Bool(false);
            CALL_global___cha_analysis___ChaBuilder___add_search(fra.me.REG[6])(fra.me.REG[6], NIT_NULL, fra.me.REG[4], REGB0, REGB1);
          } else {
            /* global/cha_analysis.nit:117 */
            REGB1 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___IInitAttributes, ID_icode___icode_base___IInitAttributes)) /*cast IInitAttributes*/;
            if (UNTAG_Bool(REGB1)) {
              /* global/cha_analysis.nit:118 */
              REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
              if (UNTAG_Bool(REGB1)) {
		nit_abort("Reciever is null", NULL, LOCATE_global___cha_analysis, 118);
              }
              fra.me.REG[3] = CALL_icode___icode_base___IInitAttributes___stype(fra.me.REG[3])(fra.me.REG[3]);
              /* global/cha_analysis.nit:119 */
              fra.me.REG[4] = CALL_global___cha_analysis___ChaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
              fra.me.REG[4] = CALL_global___cha_analysis___ChaBuilder___program(fra.me.REG[4])(fra.me.REG[4]);
              fra.me.REG[4] = CALL_program___Program___main_module(fra.me.REG[4])(fra.me.REG[4]);
              fra.me.REG[4] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
              fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[4])(fra.me.REG[4]);
              /* global/cha_analysis.nit:120 */
              fra.me.REG[4] = CALL_program___MMLocalClass___init_var_iroutine(fra.me.REG[4])(fra.me.REG[4]);
              /* global/cha_analysis.nit:121 */
              fra.me.REG[2] = CALL_global___cha_analysis___ChaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
              REGB1 = TAG_Bool(true);
              REGB0 = TAG_Bool(false);
              CALL_global___cha_analysis___ChaBuilder___add_search(fra.me.REG[2])(fra.me.REG[2], NIT_NULL, fra.me.REG[4], REGB1, REGB0);
            }
          }
        }
      }
    }
  }
  /* global/cha_analysis.nit:123 */
  CALL_SUPER_global___cha_analysis___ChaVisitor___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
  stack_frame_head = fra.me.prev;
  return;
}
val_t metamodel___virtualtype___MMTypeProperty___real_stype_for(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 tmp;
  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
  fra.me.file = LOCATE_metamodel___virtualtype;
  fra.me.line = 42;
  fra.me.meth = LOCATE_metamodel___virtualtype___MMTypeProperty___real_stype_for;
  fra.me.has_broke = 0;
  fra.me.REG_size = 4;
  fra.me.nitni_local_ref_head = NULL;
  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;
  /* metamodel/virtualtype.nit:45 */
  fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
  if (UNTAG_Bool(REGB0)) {
  } else {
    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
    if (UNTAG_Bool(REGB1)) {
      REGB1 = TAG_Bool(0);
      REGB0 = REGB1;
    } else {
      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
      REGB0 = REGB1;
    }
  }
  if (UNTAG_Bool(REGB0)) {
    fra.me.REG[2] = NIT_NULL;
    goto label1;
  }
  /* metamodel/virtualtype.nit:47 */
  REGB0 = TAG_Bool(ATTR_metamodel___virtualtype___MMTypeProperty____stypes_cache(fra.me.REG[0])!=NIT_NULL);
  if (UNTAG_Bool(REGB0)) {
  } else {
    nit_abort("Uninitialized attribute %s", "_stypes_cache", LOCATE_metamodel___virtualtype, 47);
  }
  fra.me.REG[3] = ATTR_metamodel___virtualtype___MMTypeProperty____stypes_cache(fra.me.REG[0]);
  REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
  if (UNTAG_Bool(REGB0)) {
    REGB0 = TAG_Bool(ATTR_metamodel___virtualtype___MMTypeProperty____stypes_cache(fra.me.REG[0])!=NIT_NULL);
    if (UNTAG_Bool(REGB0)) {
    } else {
      nit_abort("Uninitialized attribute %s", "_stypes_cache", LOCATE_metamodel___virtualtype, 47);
    }
    fra.me.REG[3] = ATTR_metamodel___virtualtype___MMTypeProperty____stypes_cache(fra.me.REG[0]);
    fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
    fra.me.REG[2] = fra.me.REG[3];
    goto label1;
  }
  /* metamodel/virtualtype.nit:49 */
  fra.me.REG[3] = NEW_MMVirtualType_metamodel___virtualtype___MMVirtualType___init(fra.me.REG[0], fra.me.REG[1]);
  /* metamodel/virtualtype.nit:50 */
  REGB0 = TAG_Bool(ATTR_metamodel___virtualtype___MMTypeProperty____stypes_cache(fra.me.REG[0])!=NIT_NULL);
  if (UNTAG_Bool(REGB0)) {
  } else {
    nit_abort("Uninitialized attribute %s", "_stypes_cache", LOCATE_metamodel___virtualtype, 50);
  }
  fra.me.REG[0] = ATTR_metamodel___virtualtype___MMTypeProperty____stypes_cache(fra.me.REG[0]);
  CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3]);
  /* metamodel/virtualtype.nit:52 */
  fra.me.REG[2] = fra.me.REG[3];
  goto label1;
  label1: while(0);
  stack_frame_head = fra.me.prev;
  return fra.me.REG[2];
}
Beispiel #4
0
      void OC_utils___Object___cmangle_2(struct stack_frame_t *closctx, 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;
        /* utils.nit:37 */
        fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
        fra.me.file = LOCATE_utils;
        fra.me.line = 0;
        fra.me.meth = LOCATE_utils___Object___cmangle;
        fra.me.has_broke = 0;
        fra.me.REG_size = 1;
        fra.me.nitni_local_ref_head = NULL;
        fra.me.REG[0] = NIT_NULL;
        fra.me.REG[0] = p0;
        REGB0 = fra.me.REG[0];
        /* utils.nit:38 */
        REGB1 = TAG_Char('a');
        REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
        if (UNTAG_Bool(REGB2)) {
        } else {
          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
        }
        /* ../lib/standard/kernel.nit:387 */
        REGB1 = TAG_Bool(UNTAG_Char(REGB0)>=UNTAG_Char(REGB1));
        /* utils.nit:38 */
        if (UNTAG_Bool(REGB1)) {
          REGB1 = TAG_Char('z');
          REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
          if (UNTAG_Bool(REGB2)) {
          } else {
            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
          }
          /* ../lib/standard/kernel.nit:385 */
          REGB1 = TAG_Bool(UNTAG_Char(REGB0)<=UNTAG_Char(REGB1));
        } else {
          /* utils.nit:38 */
          REGB2 = TAG_Bool(0);
          REGB1 = REGB2;
        }
        if (UNTAG_Bool(REGB1)) {
          REGB1 = TAG_Bool(1);
        } else {
          REGB2 = TAG_Char('A');
          REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
          if (UNTAG_Bool(REGB3)) {
          } else {
            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
          }
          /* ../lib/standard/kernel.nit:387 */
          REGB2 = TAG_Bool(UNTAG_Char(REGB0)>=UNTAG_Char(REGB2));
          /* utils.nit:38 */
          if (UNTAG_Bool(REGB2)) {
            REGB2 = TAG_Char('Z');
            REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
            if (UNTAG_Bool(REGB3)) {
            } else {
              nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
            }
            /* ../lib/standard/kernel.nit:385 */
            REGB2 = TAG_Bool(UNTAG_Char(REGB0)<=UNTAG_Char(REGB2));
          } else {
            /* utils.nit:38 */
            REGB3 = TAG_Bool(0);
            REGB2 = REGB3;
          }
          REGB1 = REGB2;
        }
        if (UNTAG_Bool(REGB1)) {
          REGB1 = TAG_Bool(1);
        } else {
          REGB2 = TAG_Char('0');
          REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
          if (UNTAG_Bool(REGB3)) {
          } else {
            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
          }
          /* ../lib/standard/kernel.nit:387 */
          REGB2 = TAG_Bool(UNTAG_Char(REGB0)>=UNTAG_Char(REGB2));
          /* utils.nit:38 */
          if (UNTAG_Bool(REGB2)) {
            REGB2 = TAG_Char('9');
            REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
            if (UNTAG_Bool(REGB3)) {
            } else {
              nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
            }
            /* ../lib/standard/kernel.nit:385 */
            REGB2 = TAG_Bool(UNTAG_Char(REGB0)<=UNTAG_Char(REGB2));
          } else {
            /* utils.nit:38 */
            REGB3 = TAG_Bool(0);
            REGB2 = REGB3;
          }
          REGB1 = REGB2;
        }
        if (UNTAG_Bool(REGB1)) {
          /* utils.nit:39 */
          CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[0])(closctx->REG[0], REGB0);
          /* utils.nit:40 */
          REGB1 = TAG_Bool(0);
          closctx->REG[5] = REGB1;
          /* utils.nit:41 */
          REGB1 = TAG_Bool(1);
          closctx->REG[6] = REGB1;
        } else {
          /* utils.nit:42 */
          REGB1 = TAG_Char('_');
          REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
          if (UNTAG_Bool(REGB2)) {
          } else {
            /* ../lib/standard/kernel.nit:381 */
            REGB1 = TAG_Bool((REGB0)==(REGB1));
            /* utils.nit:42 */
            REGB2 = REGB1;
          }
          if (UNTAG_Bool(REGB2)) {
            REGB2 = TAG_Bool(!UNTAG_Bool(closctx->REG[5]));
          } else {
            REGB1 = TAG_Bool(0);
            REGB2 = REGB1;
          }
          if (UNTAG_Bool(REGB2)) {
            /* utils.nit:43 */
            CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[0])(closctx->REG[0], REGB0);
            /* utils.nit:44 */
            REGB2 = TAG_Bool(1);
            closctx->REG[5] = REGB2;
            /* utils.nit:45 */
            REGB2 = TAG_Bool(1);
            closctx->REG[6] = REGB2;
          } else {
            /* utils.nit:46 */
            REGB2 = CALL_standard___collection___abstract_collection___MapRead___has_key(closctx->REG[2])(closctx->REG[2], REGB0);
            if (UNTAG_Bool(REGB2)) {
              /* utils.nit:47 */
              if (UNTAG_Bool(closctx->REG[6])) {
		/* utils.nit:48 */
		REGB2 = TAG_Char('_');
		CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[0])(closctx->REG[0], REGB2);
		/* utils.nit:49 */
		REGB2 = TAG_Char('_');
		CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[0])(closctx->REG[0], REGB2);
              }
              /* utils.nit:51 */
              fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead_____bra(closctx->REG[2])(closctx->REG[2], REGB0);
              CALL_standard___collection___abstract_collection___Sequence___append(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
              /* utils.nit:52 */
              REGB0 = TAG_Bool(0);
              closctx->REG[6] = REGB0;
              /* utils.nit:53 */
              REGB0 = TAG_Bool(0);
              closctx->REG[5] = REGB0;
            }
          }
        }
        stack_frame_head = fra.me.prev;
        return;
      }