- variable6 = variable7;
- if (UNTAG_Bool(variable6)) { /*if*/
- variable6 = TAG_Int(UNTAG_Int( variable5 /*i*/)+UNTAG_Int( variable1 /*m*/));
- variable6 = TAG_Int(UNTAG_Int(variable6)-UNTAG_Int( TAG_Int(1)));
- variable6 = TAG_Int(UNTAG_Int(variable6)-UNTAG_Int( variable3 /*f*/));
- variable7 = variable6;
- variable8 = TAG_Bool(UNTAG_Int( variable7 /*index*/)>=UNTAG_Int( TAG_Int(0)));
- variable9 = variable8;
- if (UNTAG_Bool(variable9)) { /* and */
- variable9 = ATTR_array___AbstractArray____length( variable2 /*suff*/) /*AbstractArray::_length*/;
- variable9 = TAG_Bool(UNTAG_Int( variable7 /*index*/)<UNTAG_Int(variable9));
- }
- variable8 = variable9;
- if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_string_search, 229); nit_exit(1);}
- variable8 = ATTR_array___Array____items( variable2 /*suff*/) /*Array::_items*/;
- variable8 = UNBOX_NativeArray(variable8)[UNTAG_Int( variable7 /*index*/)];
- goto return_label17;
- return_label17: while(false);
- variable6 = variable8;
- ((array___Array_____braeq_t)CALL( variable2 /*suff*/,COLOR_abstract_collection___Map_____braeq))( variable2 /*suff*/, variable5 /*i*/, variable6) /*Array::[]=*/;
- } else { /*if*/
- variable6 = TAG_Bool(UNTAG_Int( variable5 /*i*/)<UNTAG_Int( variable4 /*g*/));
- if (UNTAG_Bool(variable6)) { /*if*/
- variable4 = variable5 /*i*/ /*g=*/;
+ }
+ label1: while(0);
+ stack_frame_head = fra.me.prev;
+ return;
+}
+val_t string_search___BM_Pattern___suffixes(val_t p0){
+ struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+ val_t REGB0;
+ val_t REGB1;
+ val_t REGB2;
+ val_t REGB3;
+ val_t REGB4;
+ val_t REGB5;
+ val_t REGB6;
+ val_t tmp;
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_string_search;
+ fra.me.line = 150;
+ fra.me.meth = LOCATE_string_search___BM_Pattern___suffixes;
+ 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;
+ /* ./../lib/standard//string_search.nit:152 */
+ REGB0 = TAG_Bool(ATTR_string_search___BM_Pattern____motif(fra.me.REG[0])!=NIT_NULL);
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ nit_abort("Uninitialized attribute %s", "_motif", LOCATE_string_search, 152);
+ }
+ fra.me.REG[1] = ATTR_string_search___BM_Pattern____motif(fra.me.REG[0]);
+ /* ./../lib/standard//string_search.nit:153 */
+ REGB0 = TAG_Bool(ATTR_string_search___BM_Pattern____length(fra.me.REG[0])!=NIT_NULL);
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ nit_abort("Uninitialized attribute %s", "_length", LOCATE_string_search, 153);
+ }
+ REGB0 = ATTR_string_search___BM_Pattern____length(fra.me.REG[0]);
+ /* ./../lib/standard//string_search.nit:154 */
+ fra.me.REG[0] = NEW_Array_array___Array___filled_with(REGB0, REGB0);
+ /* ./../lib/standard//string_search.nit:156 */
+ REGB1 = TAG_Int(0);
+ /* ./../lib/standard//string_search.nit:157 */
+ REGB2 = TAG_Int(1);
+ /* ./../lib/standard//kernel.nit:217 */
+ REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
+ /* ./../lib/standard//string_search.nit:158 */
+ REGB3 = TAG_Int(2);
+ /* ./../lib/standard//kernel.nit:217 */
+ REGB3 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB3));
+ /* ./../lib/standard//string_search.nit:159 */
+ while(1) {
+ REGB4 = TAG_Int(0);
+ /* ./../lib/standard//kernel.nit:213 */
+ REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
+ /* ./../lib/standard//string_search.nit:159 */
+ if (UNTAG_Bool(REGB4)) {
+ /* ./../lib/standard//kernel.nit:214 */
+ REGB4 = TAG_Bool(UNTAG_Int(REGB3)>UNTAG_Int(REGB2));
+ /* ./../lib/standard//string_search.nit:160 */
+ if (UNTAG_Bool(REGB4)) {
+ /* ./../lib/standard//kernel.nit:215 */
+ REGB4 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB0));
+ /* ./../lib/standard//string_search.nit:160 */
+ REGB5 = TAG_Int(1);
+ /* ./../lib/standard//kernel.nit:217 */
+ REGB5 = TAG_Int(UNTAG_Int(REGB4)-UNTAG_Int(REGB5));
+ REGB5 = TAG_Int(UNTAG_Int(REGB5)-UNTAG_Int(REGB1));
+ /* ./../lib/standard//collection//array.nit:243 */
+ fra.me.REG[2] = fra.me.REG[0];
+ /* ./../lib/standard//collection//array.nit:245 */
+ REGB4 = TAG_Int(0);
+ /* ./../lib/standard//kernel.nit:213 */
+ REGB4 = TAG_Bool(UNTAG_Int(REGB5)>=UNTAG_Int(REGB4));
+ /* ./../lib/standard//collection//array.nit:245 */
+ if (UNTAG_Bool(REGB4)) {
+ REGB4 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+ if (UNTAG_Bool(REGB4)) {
+ } else {
+ nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
+ }
+ REGB4 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]);
+ /* ./../lib/standard//kernel.nit:212 */
+ REGB4 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB4));
+ } else {
+ /* ./../lib/standard//collection//array.nit:245 */
+ REGB6 = TAG_Bool(false);
+ REGB4 = REGB6;
+ }
+ if (UNTAG_Bool(REGB4)) {
+ } else {
+ nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
+ }
+ /* ./../lib/standard//collection//array.nit:246 */
+ fra.me.REG[2] = ATTR_array___Array____items(fra.me.REG[2]);
+ REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+ if (UNTAG_Bool(REGB4)) {
+ nit_abort("Reciever is null", NULL, LOCATE_array, 246);
+ }
+ /* ./../lib/standard//collection//array.nit:654 */
+ fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB5)];
+ /* ./../lib/standard//collection//array.nit:246 */
+ goto label1;
+ label1: while(0);
+ /* ./../lib/standard//kernel.nit:217 */
+ REGB5 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB2));
+ /* ./../lib/standard//string_search.nit:160 */
+ REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+ if (UNTAG_Bool(REGB4)) {
+ nit_abort("Reciever is null", NULL, LOCATE_string_search, 160);
+ }
+ /* ./../lib/standard//kernel.nit:212 */
+ REGB5 = TAG_Bool(UNTAG_Int(fra.me.REG[2])<UNTAG_Int(REGB5));
+ } else {
+ /* ./../lib/standard//string_search.nit:160 */
+ REGB4 = TAG_Bool(false);
+ REGB5 = REGB4;