- variable[8] = variable[9];
- if (UNTAG_Bool(variable[8])) { /*if*/
- variable[8] = TAG_Int(UNTAG_Int( variable[7] /*i*/)+UNTAG_Int( variable[3] /*m*/));
- variable[8] = TAG_Int(UNTAG_Int(variable[8])-UNTAG_Int( TAG_Int(1)));
- variable[8] = TAG_Int(UNTAG_Int(variable[8])-UNTAG_Int( variable[5] /*f*/));
- variable[9] = variable[4] /*suff*/;
- variable[10] = variable[8];
- variable[12] = TAG_Bool(UNTAG_Int( variable[10] /*index*/)>=UNTAG_Int( TAG_Int(0)));
- variable[13] = variable[12];
- if (UNTAG_Bool(variable[13])) { /* and */
- variable[13] = variable[9];
- variable[13] = ATTR_array___AbstractArray____length(variable[13]) /*AbstractArray::_length*/;
- variable[13] = TAG_Bool(UNTAG_Int( variable[10] /*index*/)<UNTAG_Int(variable[13]));
- }
- variable[12] = variable[13];
- if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_string_search, 229); nit_exit(1);}
- variable[12] = variable[9];
- variable[12] = ATTR_array___Array____items(variable[12]) /*Array::_items*/;
- variable[12] = UNBOX_NativeArray(variable[12])[UNTAG_Int( variable[10] /*index*/)];
- variable[11] = variable[12];
- goto return_label17;
- return_label17: while(false);
- variable[8] = variable[11];
- ((array___Array_____braeq_t)CALL( variable[4] /*suff*/,COLOR_abstract_collection___Map_____braeq))( variable[4] /*suff*/, variable[7] /*i*/, variable[8]) /*Array::[]=*/;
- } else { /*if*/
- variable[8] = TAG_Bool(UNTAG_Int( variable[7] /*i*/)<UNTAG_Int( variable[6] /*g*/));
- if (UNTAG_Bool(variable[8])) { /*if*/
- variable[6] = variable[7] /*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;