update NOTICE and LICENSE
[nit.git] / c_src / string_search._sep.c
1 /* This C file is generated by NIT to compile module string_search. */
2 #include "string_search._sep.h"
3 val_t string_search___Pattern___search_index_in(val_t p0, val_t p1, val_t p2){
4 struct {struct stack_frame_t me;} fra;
5 val_t tmp;
6 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7 fra.me.file = LOCATE_string_search;
8 fra.me.line = 21;
9 fra.me.meth = LOCATE_string_search___Pattern___search_index_in;
10 fra.me.has_broke = 0;
11 fra.me.REG_size = 0;
12 /* ./../lib/standard//string_search.nit:21 */
13 nit_abort("Deferred method called", NULL, LOCATE_string_search, 21);
14 stack_frame_head = fra.me.prev;
15 return NIT_NULL;
16 }
17 val_t string_search___Pattern___search_in(val_t p0, val_t p1, val_t p2){
18 struct {struct stack_frame_t me;} fra;
19 val_t tmp;
20 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
21 fra.me.file = LOCATE_string_search;
22 fra.me.line = 26;
23 fra.me.meth = LOCATE_string_search___Pattern___search_in;
24 fra.me.has_broke = 0;
25 fra.me.REG_size = 0;
26 /* ./../lib/standard//string_search.nit:26 */
27 nit_abort("Deferred method called", NULL, LOCATE_string_search, 26);
28 stack_frame_head = fra.me.prev;
29 return NIT_NULL;
30 }
31 val_t string_search___Pattern___search_all_in(val_t p0, val_t p1){
32 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
33 val_t REGB0;
34 val_t REGB1;
35 val_t tmp;
36 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
37 fra.me.file = LOCATE_string_search;
38 fra.me.line = 30;
39 fra.me.meth = LOCATE_string_search___Pattern___search_all_in;
40 fra.me.has_broke = 0;
41 fra.me.REG_size = 5;
42 fra.me.REG[0] = NIT_NULL;
43 fra.me.REG[1] = NIT_NULL;
44 fra.me.REG[2] = NIT_NULL;
45 fra.me.REG[3] = NIT_NULL;
46 fra.me.REG[4] = NIT_NULL;
47 fra.me.REG[0] = p0;
48 fra.me.REG[1] = p1;
49 /* ./../lib/standard//string_search.nit:33 */
50 fra.me.REG[2] = NEW_Array_array___Array___init();
51 /* ./../lib/standard//string_search.nit:34 */
52 REGB0 = TAG_Int(0);
53 fra.me.REG[3] = CALL_string_search___Pattern___search_in(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB0);
54 /* ./../lib/standard//string_search.nit:35 */
55 while(1) {
56 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
57 if (UNTAG_Bool(REGB0)) {
58 } else {
59 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
60 if (UNTAG_Bool(REGB1)) {
61 REGB1 = TAG_Bool(false);
62 REGB0 = REGB1;
63 } else {
64 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
65 REGB0 = REGB1;
66 }
67 }
68 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
69 if (UNTAG_Bool(REGB0)) {
70 /* ./../lib/standard//string_search.nit:36 */
71 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
72 /* ./../lib/standard//string_search.nit:37 */
73 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
74 if (UNTAG_Bool(REGB0)) {
75 nit_abort("Reciever is null", NULL, LOCATE_string_search, 37);
76 }
77 REGB0 = CALL_string_search___Match___after(fra.me.REG[3])(fra.me.REG[3]);
78 fra.me.REG[4] = CALL_string_search___Pattern___search_in(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB0);
79 fra.me.REG[3] = fra.me.REG[4];
80 } else {
81 /* ./../lib/standard//string_search.nit:35 */
82 goto label1;
83 }
84 }
85 label1: while(0);
86 /* ./../lib/standard//string_search.nit:39 */
87 goto label2;
88 label2: while(0);
89 stack_frame_head = fra.me.prev;
90 return fra.me.REG[2];
91 }
92 val_t string_search___Pattern___split_in(val_t p0, val_t p1){
93 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
94 val_t REGB0;
95 val_t REGB1;
96 val_t REGB2;
97 val_t tmp;
98 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
99 fra.me.file = LOCATE_string_search;
100 fra.me.line = 42;
101 fra.me.meth = LOCATE_string_search___Pattern___split_in;
102 fra.me.has_broke = 0;
103 fra.me.REG_size = 5;
104 fra.me.REG[0] = NIT_NULL;
105 fra.me.REG[1] = NIT_NULL;
106 fra.me.REG[2] = NIT_NULL;
107 fra.me.REG[3] = NIT_NULL;
108 fra.me.REG[4] = NIT_NULL;
109 fra.me.REG[0] = p0;
110 fra.me.REG[1] = p1;
111 /* ./../lib/standard//string_search.nit:45 */
112 fra.me.REG[2] = NEW_Array_array___Array___init();
113 /* ./../lib/standard//string_search.nit:46 */
114 REGB0 = TAG_Int(0);
115 /* ./../lib/standard//string_search.nit:47 */
116 REGB1 = TAG_Int(0);
117 fra.me.REG[3] = CALL_string_search___Pattern___search_in(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB1);
118 /* ./../lib/standard//string_search.nit:48 */
119 while(1) {
120 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
121 if (UNTAG_Bool(REGB1)) {
122 } else {
123 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
124 if (UNTAG_Bool(REGB2)) {
125 REGB2 = TAG_Bool(false);
126 REGB1 = REGB2;
127 } else {
128 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
129 REGB1 = REGB2;
130 }
131 }
132 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
133 if (UNTAG_Bool(REGB1)) {
134 /* ./../lib/standard//string_search.nit:50 */
135 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
136 if (UNTAG_Bool(REGB1)) {
137 nit_abort("Reciever is null", NULL, LOCATE_string_search, 50);
138 }
139 REGB1 = CALL_string_search___Match___from(fra.me.REG[3])(fra.me.REG[3]);
140 /* ./../lib/standard//kernel.nit:217 */
141 REGB1 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
142 /* ./../lib/standard//string_search.nit:51 */
143 fra.me.REG[4] = NEW_Match_string_search___Match___init(fra.me.REG[1], REGB0, REGB1);
144 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
145 /* ./../lib/standard//string_search.nit:52 */
146 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
147 if (UNTAG_Bool(REGB1)) {
148 nit_abort("Reciever is null", NULL, LOCATE_string_search, 52);
149 }
150 REGB1 = CALL_string_search___Match___after(fra.me.REG[3])(fra.me.REG[3]);
151 REGB0 = REGB1;
152 /* ./../lib/standard//string_search.nit:53 */
153 fra.me.REG[4] = CALL_string_search___Pattern___search_in(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB0);
154 fra.me.REG[3] = fra.me.REG[4];
155 } else {
156 /* ./../lib/standard//string_search.nit:48 */
157 goto label1;
158 }
159 }
160 label1: while(0);
161 /* ./../lib/standard//collection//array.nit:23 */
162 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
163 if (UNTAG_Bool(REGB1)) {
164 } else {
165 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
166 }
167 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[1]);
168 /* ./../lib/standard//kernel.nit:217 */
169 REGB1 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
170 /* ./../lib/standard//string_search.nit:56 */
171 fra.me.REG[1] = NEW_Match_string_search___Match___init(fra.me.REG[1], REGB0, REGB1);
172 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
173 /* ./../lib/standard//string_search.nit:57 */
174 goto label2;
175 label2: while(0);
176 stack_frame_head = fra.me.prev;
177 return fra.me.REG[2];
178 }
179 void string_search___Pattern___init(val_t p0, int* init_table){
180 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_Pattern].i;
181 struct {struct stack_frame_t me;} fra;
182 val_t tmp;
183 if (init_table[itpos0]) return;
184 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
185 fra.me.file = LOCATE_string_search;
186 fra.me.line = 0;
187 fra.me.meth = LOCATE_string_search___Pattern___init;
188 fra.me.has_broke = 0;
189 fra.me.REG_size = 0;
190 stack_frame_head = fra.me.prev;
191 init_table[itpos0] = 1;
192 return;
193 }
194 val_t string_search___BM_Pattern___to_s(val_t p0){
195 struct {struct stack_frame_t me;} fra;
196 val_t REGB0;
197 val_t tmp;
198 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
199 fra.me.file = LOCATE_string_search;
200 fra.me.line = 67;
201 fra.me.meth = LOCATE_string_search___BM_Pattern___to_s;
202 fra.me.has_broke = 0;
203 fra.me.REG_size = 1;
204 fra.me.REG[0] = NIT_NULL;
205 fra.me.REG[0] = p0;
206 /* ./../lib/standard//string_search.nit:67 */
207 REGB0 = TAG_Bool(ATTR_string_search___BM_Pattern____motif(fra.me.REG[0])!=NIT_NULL);
208 if (UNTAG_Bool(REGB0)) {
209 } else {
210 nit_abort("Uninitialized attribute %s", "_motif", LOCATE_string_search, 67);
211 }
212 fra.me.REG[0] = ATTR_string_search___BM_Pattern____motif(fra.me.REG[0]);
213 goto label1;
214 label1: while(0);
215 stack_frame_head = fra.me.prev;
216 return fra.me.REG[0];
217 }
218 val_t string_search___BM_Pattern___search_index_in(val_t p0, val_t p1, val_t p2){
219 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
220 val_t REGB0;
221 val_t REGB1;
222 val_t REGB2;
223 val_t REGB3;
224 val_t REGB4;
225 val_t REGB5;
226 val_t REGB6;
227 val_t REGB7;
228 val_t tmp;
229 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
230 fra.me.file = LOCATE_string_search;
231 fra.me.line = 69;
232 fra.me.meth = LOCATE_string_search___BM_Pattern___search_index_in;
233 fra.me.has_broke = 0;
234 fra.me.REG_size = 3;
235 fra.me.REG[0] = NIT_NULL;
236 fra.me.REG[1] = NIT_NULL;
237 fra.me.REG[2] = NIT_NULL;
238 fra.me.REG[0] = p0;
239 fra.me.REG[1] = p1;
240 REGB0 = p2;
241 /* ./../lib/standard//string_search.nit:72 */
242 REGB1 = TAG_Int(0);
243 /* ./../lib/standard//kernel.nit:213 */
244 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
245 /* ./../lib/standard//string_search.nit:72 */
246 if (UNTAG_Bool(REGB1)) {
247 } else {
248 nit_abort("Assert failed", NULL, LOCATE_string_search, 72);
249 }
250 /* ./../lib/standard//collection//array.nit:23 */
251 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
252 if (UNTAG_Bool(REGB1)) {
253 } else {
254 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
255 }
256 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[1]);
257 /* ./../lib/standard//string_search.nit:74 */
258 REGB2 = TAG_Bool(ATTR_string_search___BM_Pattern____length(fra.me.REG[0])!=NIT_NULL);
259 if (UNTAG_Bool(REGB2)) {
260 } else {
261 nit_abort("Uninitialized attribute %s", "_length", LOCATE_string_search, 74);
262 }
263 REGB2 = ATTR_string_search___BM_Pattern____length(fra.me.REG[0]);
264 /* ./../lib/standard//string_search.nit:77 */
265 while(1) {
266 /* ./../lib/standard//kernel.nit:217 */
267 REGB3 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
268 /* ./../lib/standard//string_search.nit:77 */
269 REGB4 = TAG_Int(1);
270 /* ./../lib/standard//kernel.nit:215 */
271 REGB4 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB4));
272 /* ./../lib/standard//kernel.nit:212 */
273 REGB4 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB4));
274 /* ./../lib/standard//string_search.nit:77 */
275 if (UNTAG_Bool(REGB4)) {
276 /* ./../lib/standard//string_search.nit:78 */
277 REGB4 = TAG_Int(1);
278 /* ./../lib/standard//kernel.nit:217 */
279 REGB4 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB4));
280 /* ./../lib/standard//string_search.nit:79 */
281 while(1) {
282 REGB3 = TAG_Int(0);
283 /* ./../lib/standard//kernel.nit:213 */
284 REGB3 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB3));
285 /* ./../lib/standard//string_search.nit:79 */
286 if (UNTAG_Bool(REGB3)) {
287 REGB3 = TAG_Bool(ATTR_string_search___BM_Pattern____motif(fra.me.REG[0])!=NIT_NULL);
288 if (UNTAG_Bool(REGB3)) {
289 } else {
290 nit_abort("Uninitialized attribute %s", "_motif", LOCATE_string_search, 79);
291 }
292 fra.me.REG[2] = ATTR_string_search___BM_Pattern____motif(fra.me.REG[0]);
293 REGB3 = CALL_abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB4);
294 /* ./../lib/standard//kernel.nit:215 */
295 REGB5 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB0));
296 /* ./../lib/standard//string_search.nit:79 */
297 REGB5 = CALL_abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB5);
298 REGB6 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB5));
299 if (UNTAG_Bool(REGB6)) {
300 } else {
301 /* ./../lib/standard//kernel.nit:347 */
302 REGB5 = TAG_Bool((REGB3)==(REGB5));
303 /* ./../lib/standard//string_search.nit:79 */
304 REGB6 = REGB5;
305 }
306 } else {
307 REGB5 = TAG_Bool(false);
308 REGB6 = REGB5;
309 }
310 if (UNTAG_Bool(REGB6)) {
311 REGB6 = TAG_Int(1);
312 /* ./../lib/standard//kernel.nit:217 */
313 REGB6 = TAG_Int(UNTAG_Int(REGB4)-UNTAG_Int(REGB6));
314 /* ./../lib/standard//string_search.nit:79 */
315 REGB4 = REGB6;
316 } else {
317 goto label1;
318 }
319 }
320 label1: while(0);
321 /* ./../lib/standard//string_search.nit:80 */
322 REGB6 = TAG_Int(0);
323 /* ./../lib/standard//kernel.nit:212 */
324 REGB6 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB6));
325 /* ./../lib/standard//string_search.nit:80 */
326 if (UNTAG_Bool(REGB6)) {
327 /* ./../lib/standard//string_search.nit:81 */
328 REGB6 = REGB0;
329 goto label2;
330 } else {
331 /* ./../lib/standard//string_search.nit:83 */
332 REGB5 = TAG_Bool(ATTR_string_search___BM_Pattern____gs(fra.me.REG[0])!=NIT_NULL);
333 if (UNTAG_Bool(REGB5)) {
334 } else {
335 nit_abort("Uninitialized attribute %s", "_gs", LOCATE_string_search, 83);
336 }
337 fra.me.REG[2] = ATTR_string_search___BM_Pattern____gs(fra.me.REG[0]);
338 /* ./../lib/standard//collection//array.nit:243 */
339 REGB5 = REGB4;
340 /* ./../lib/standard//collection//array.nit:245 */
341 REGB3 = TAG_Int(0);
342 /* ./../lib/standard//kernel.nit:213 */
343 REGB3 = TAG_Bool(UNTAG_Int(REGB5)>=UNTAG_Int(REGB3));
344 /* ./../lib/standard//collection//array.nit:245 */
345 if (UNTAG_Bool(REGB3)) {
346 REGB3 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
347 if (UNTAG_Bool(REGB3)) {
348 } else {
349 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
350 }
351 REGB3 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]);
352 /* ./../lib/standard//kernel.nit:212 */
353 REGB3 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB3));
354 } else {
355 /* ./../lib/standard//collection//array.nit:245 */
356 REGB7 = TAG_Bool(false);
357 REGB3 = REGB7;
358 }
359 if (UNTAG_Bool(REGB3)) {
360 } else {
361 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
362 }
363 /* ./../lib/standard//collection//array.nit:246 */
364 fra.me.REG[2] = ATTR_array___Array____items(fra.me.REG[2]);
365 REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
366 if (UNTAG_Bool(REGB3)) {
367 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
368 }
369 /* ./../lib/standard//collection//array.nit:654 */
370 fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB5)];
371 /* ./../lib/standard//collection//array.nit:246 */
372 goto label3;
373 label3: while(0);
374 /* ./../lib/standard//string_search.nit:83 */
375 REGB5 = fra.me.REG[2];
376 /* ./../lib/standard//kernel.nit:215 */
377 REGB3 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB0));
378 /* ./../lib/standard//string_search.nit:84 */
379 REGB3 = CALL_abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB3);
380 REGB3 = CALL_string_search___BM_Pattern___bc(fra.me.REG[0])(fra.me.REG[0], REGB3);
381 /* ./../lib/standard//kernel.nit:217 */
382 REGB3 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB2));
383 /* ./../lib/standard//string_search.nit:84 */
384 REGB7 = TAG_Int(1);
385 /* ./../lib/standard//kernel.nit:215 */
386 REGB7 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB7));
387 REGB4 = TAG_Int(UNTAG_Int(REGB7)+UNTAG_Int(REGB4));
388 /* ./../lib/standard//kernel.nit:214 */
389 REGB7 = TAG_Bool(UNTAG_Int(REGB5)>UNTAG_Int(REGB4));
390 /* ./../lib/standard//string_search.nit:86 */
391 if (UNTAG_Bool(REGB7)) {
392 /* ./../lib/standard//kernel.nit:215 */
393 REGB5 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB5));
394 /* ./../lib/standard//string_search.nit:87 */
395 REGB0 = REGB5;
396 } else {
397 /* ./../lib/standard//kernel.nit:215 */
398 REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB4));
399 /* ./../lib/standard//string_search.nit:89 */
400 REGB0 = REGB4;
401 }
402 }
403 } else {
404 /* ./../lib/standard//string_search.nit:77 */
405 goto label4;
406 }
407 }
408 label4: while(0);
409 /* ./../lib/standard//string_search.nit:93 */
410 REGB0 = TAG_Int(1);
411 /* ./../lib/standard//kernel.nit:216 */
412 REGB0 = TAG_Int(-UNTAG_Int(REGB0));
413 /* ./../lib/standard//string_search.nit:93 */
414 REGB6 = REGB0;
415 goto label2;
416 label2: while(0);
417 stack_frame_head = fra.me.prev;
418 return REGB6;
419 }
420 val_t string_search___BM_Pattern___search_in(val_t p0, val_t p1, val_t p2){
421 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
422 val_t REGB0;
423 val_t REGB1;
424 val_t tmp;
425 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
426 fra.me.file = LOCATE_string_search;
427 fra.me.line = 96;
428 fra.me.meth = LOCATE_string_search___BM_Pattern___search_in;
429 fra.me.has_broke = 0;
430 fra.me.REG_size = 3;
431 fra.me.REG[0] = NIT_NULL;
432 fra.me.REG[1] = NIT_NULL;
433 fra.me.REG[2] = NIT_NULL;
434 fra.me.REG[0] = p0;
435 fra.me.REG[1] = p1;
436 REGB0 = p2;
437 /* ./../lib/standard//string_search.nit:99 */
438 REGB0 = CALL_string_search___Pattern___search_index_in(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB0);
439 /* ./../lib/standard//string_search.nit:100 */
440 REGB1 = TAG_Int(0);
441 /* ./../lib/standard//kernel.nit:212 */
442 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
443 /* ./../lib/standard//string_search.nit:100 */
444 if (UNTAG_Bool(REGB1)) {
445 /* ./../lib/standard//string_search.nit:101 */
446 fra.me.REG[2] = NIT_NULL;
447 goto label1;
448 } else {
449 /* ./../lib/standard//string_search.nit:103 */
450 REGB1 = TAG_Bool(ATTR_string_search___BM_Pattern____length(fra.me.REG[0])!=NIT_NULL);
451 if (UNTAG_Bool(REGB1)) {
452 } else {
453 nit_abort("Uninitialized attribute %s", "_length", LOCATE_string_search, 103);
454 }
455 REGB1 = ATTR_string_search___BM_Pattern____length(fra.me.REG[0]);
456 fra.me.REG[1] = NEW_Match_string_search___Match___init(fra.me.REG[1], REGB0, REGB1);
457 fra.me.REG[2] = fra.me.REG[1];
458 goto label1;
459 }
460 label1: while(0);
461 stack_frame_head = fra.me.prev;
462 return fra.me.REG[2];
463 }
464 void string_search___BM_Pattern___init(val_t p0, val_t p1, int* init_table){
465 int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_BM_Pattern].i;
466 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
467 val_t REGB0;
468 val_t tmp;
469 if (init_table[itpos1]) return;
470 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
471 fra.me.file = LOCATE_string_search;
472 fra.me.line = 107;
473 fra.me.meth = LOCATE_string_search___BM_Pattern___init;
474 fra.me.has_broke = 0;
475 fra.me.REG_size = 3;
476 fra.me.REG[0] = NIT_NULL;
477 fra.me.REG[1] = NIT_NULL;
478 fra.me.REG[2] = NIT_NULL;
479 fra.me.REG[0] = p0;
480 fra.me.REG[1] = p1;
481 /* ./../lib/standard//string_search.nit:107 */
482 fra.me.REG[2] = fra.me.REG[0];
483 CALL_string_search___Pattern___init(fra.me.REG[0])(fra.me.REG[0], init_table);
484 /* ./../lib/standard//string_search.nit:110 */
485 ATTR_string_search___BM_Pattern____motif(fra.me.REG[2]) = fra.me.REG[1];
486 /* ./../lib/standard//collection//array.nit:23 */
487 REGB0 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
488 if (UNTAG_Bool(REGB0)) {
489 } else {
490 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
491 }
492 REGB0 = ATTR_array___AbstractArrayRead____length(fra.me.REG[1]);
493 /* ./../lib/standard//string_search.nit:111 */
494 ATTR_string_search___BM_Pattern____length(fra.me.REG[2]) = REGB0;
495 /* ./../lib/standard//string_search.nit:112 */
496 REGB0 = TAG_Bool(ATTR_string_search___BM_Pattern____length(fra.me.REG[2])!=NIT_NULL);
497 if (UNTAG_Bool(REGB0)) {
498 } else {
499 nit_abort("Uninitialized attribute %s", "_length", LOCATE_string_search, 112);
500 }
501 REGB0 = ATTR_string_search___BM_Pattern____length(fra.me.REG[2]);
502 fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
503 ATTR_string_search___BM_Pattern____gs(fra.me.REG[2]) = fra.me.REG[1];
504 /* ./../lib/standard//string_search.nit:113 */
505 fra.me.REG[1] = NEW_ArrayMap_array___ArrayMap___init();
506 ATTR_string_search___BM_Pattern____bc_table(fra.me.REG[2]) = fra.me.REG[1];
507 /* ./../lib/standard//string_search.nit:114 */
508 CALL_string_search___BM_Pattern___compute_gs(fra.me.REG[2])(fra.me.REG[2]);
509 /* ./../lib/standard//string_search.nit:115 */
510 CALL_string_search___BM_Pattern___compute_bc(fra.me.REG[2])(fra.me.REG[2]);
511 stack_frame_head = fra.me.prev;
512 init_table[itpos1] = 1;
513 return;
514 }
515 val_t string_search___BM_Pattern___bc(val_t p0, val_t p1){
516 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
517 val_t REGB0;
518 val_t REGB1;
519 val_t tmp;
520 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
521 fra.me.file = LOCATE_string_search;
522 fra.me.line = 124;
523 fra.me.meth = LOCATE_string_search___BM_Pattern___bc;
524 fra.me.has_broke = 0;
525 fra.me.REG_size = 2;
526 fra.me.REG[0] = NIT_NULL;
527 fra.me.REG[1] = NIT_NULL;
528 fra.me.REG[0] = p0;
529 REGB0 = p1;
530 /* ./../lib/standard//string_search.nit:126 */
531 REGB1 = TAG_Bool(ATTR_string_search___BM_Pattern____bc_table(fra.me.REG[0])!=NIT_NULL);
532 if (UNTAG_Bool(REGB1)) {
533 } else {
534 nit_abort("Uninitialized attribute %s", "_bc_table", LOCATE_string_search, 126);
535 }
536 fra.me.REG[1] = ATTR_string_search___BM_Pattern____bc_table(fra.me.REG[0]);
537 REGB1 = CALL_abstract_collection___MapRead___has_key(fra.me.REG[1])(fra.me.REG[1], REGB0);
538 if (UNTAG_Bool(REGB1)) {
539 /* ./../lib/standard//string_search.nit:127 */
540 REGB1 = TAG_Bool(ATTR_string_search___BM_Pattern____bc_table(fra.me.REG[0])!=NIT_NULL);
541 if (UNTAG_Bool(REGB1)) {
542 } else {
543 nit_abort("Uninitialized attribute %s", "_bc_table", LOCATE_string_search, 127);
544 }
545 fra.me.REG[1] = ATTR_string_search___BM_Pattern____bc_table(fra.me.REG[0]);
546 fra.me.REG[1] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB0);
547 REGB0 = fra.me.REG[1];
548 goto label1;
549 } else {
550 /* ./../lib/standard//string_search.nit:129 */
551 REGB1 = TAG_Bool(ATTR_string_search___BM_Pattern____length(fra.me.REG[0])!=NIT_NULL);
552 if (UNTAG_Bool(REGB1)) {
553 } else {
554 nit_abort("Uninitialized attribute %s", "_length", LOCATE_string_search, 129);
555 }
556 REGB1 = ATTR_string_search___BM_Pattern____length(fra.me.REG[0]);
557 REGB0 = REGB1;
558 goto label1;
559 }
560 label1: while(0);
561 stack_frame_head = fra.me.prev;
562 return REGB0;
563 }
564 void string_search___BM_Pattern___compute_bc(val_t p0){
565 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
566 val_t REGB0;
567 val_t REGB1;
568 val_t REGB2;
569 val_t REGB3;
570 val_t REGB4;
571 val_t tmp;
572 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
573 fra.me.file = LOCATE_string_search;
574 fra.me.line = 139;
575 fra.me.meth = LOCATE_string_search___BM_Pattern___compute_bc;
576 fra.me.has_broke = 0;
577 fra.me.REG_size = 3;
578 fra.me.REG[0] = NIT_NULL;
579 fra.me.REG[1] = NIT_NULL;
580 fra.me.REG[2] = NIT_NULL;
581 fra.me.REG[0] = p0;
582 /* ./../lib/standard//string_search.nit:141 */
583 REGB0 = TAG_Bool(ATTR_string_search___BM_Pattern____motif(fra.me.REG[0])!=NIT_NULL);
584 if (UNTAG_Bool(REGB0)) {
585 } else {
586 nit_abort("Uninitialized attribute %s", "_motif", LOCATE_string_search, 141);
587 }
588 fra.me.REG[1] = ATTR_string_search___BM_Pattern____motif(fra.me.REG[0]);
589 /* ./../lib/standard//string_search.nit:142 */
590 REGB0 = TAG_Bool(ATTR_string_search___BM_Pattern____length(fra.me.REG[0])!=NIT_NULL);
591 if (UNTAG_Bool(REGB0)) {
592 } else {
593 nit_abort("Uninitialized attribute %s", "_length", LOCATE_string_search, 142);
594 }
595 REGB0 = ATTR_string_search___BM_Pattern____length(fra.me.REG[0]);
596 /* ./../lib/standard//string_search.nit:143 */
597 REGB1 = TAG_Int(0);
598 /* ./../lib/standard//string_search.nit:144 */
599 while(1) {
600 REGB2 = TAG_Int(1);
601 /* ./../lib/standard//kernel.nit:217 */
602 REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
603 /* ./../lib/standard//kernel.nit:212 */
604 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
605 /* ./../lib/standard//string_search.nit:144 */
606 if (UNTAG_Bool(REGB2)) {
607 /* ./../lib/standard//string_search.nit:145 */
608 REGB2 = TAG_Bool(ATTR_string_search___BM_Pattern____bc_table(fra.me.REG[0])!=NIT_NULL);
609 if (UNTAG_Bool(REGB2)) {
610 } else {
611 nit_abort("Uninitialized attribute %s", "_bc_table", LOCATE_string_search, 145);
612 }
613 fra.me.REG[2] = ATTR_string_search___BM_Pattern____bc_table(fra.me.REG[0]);
614 REGB2 = CALL_abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB1);
615 /* ./../lib/standard//kernel.nit:217 */
616 REGB3 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
617 /* ./../lib/standard//string_search.nit:145 */
618 REGB4 = TAG_Int(1);
619 /* ./../lib/standard//kernel.nit:217 */
620 REGB4 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB4));
621 /* ./../lib/standard//string_search.nit:145 */
622 CALL_abstract_collection___Map_____braeq(fra.me.REG[2])(fra.me.REG[2], REGB2, REGB4);
623 /* ./../lib/standard//string_search.nit:146 */
624 REGB4 = TAG_Int(1);
625 /* ./../lib/standard//kernel.nit:215 */
626 REGB4 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB4));
627 /* ./../lib/standard//string_search.nit:146 */
628 REGB1 = REGB4;
629 } else {
630 /* ./../lib/standard//string_search.nit:144 */
631 goto label1;
632 }
633 }
634 label1: while(0);
635 stack_frame_head = fra.me.prev;
636 return;
637 }
638 val_t string_search___BM_Pattern___suffixes(val_t p0){
639 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
640 val_t REGB0;
641 val_t REGB1;
642 val_t REGB2;
643 val_t REGB3;
644 val_t REGB4;
645 val_t REGB5;
646 val_t REGB6;
647 val_t tmp;
648 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
649 fra.me.file = LOCATE_string_search;
650 fra.me.line = 150;
651 fra.me.meth = LOCATE_string_search___BM_Pattern___suffixes;
652 fra.me.has_broke = 0;
653 fra.me.REG_size = 3;
654 fra.me.REG[0] = NIT_NULL;
655 fra.me.REG[1] = NIT_NULL;
656 fra.me.REG[2] = NIT_NULL;
657 fra.me.REG[0] = p0;
658 /* ./../lib/standard//string_search.nit:152 */
659 REGB0 = TAG_Bool(ATTR_string_search___BM_Pattern____motif(fra.me.REG[0])!=NIT_NULL);
660 if (UNTAG_Bool(REGB0)) {
661 } else {
662 nit_abort("Uninitialized attribute %s", "_motif", LOCATE_string_search, 152);
663 }
664 fra.me.REG[1] = ATTR_string_search___BM_Pattern____motif(fra.me.REG[0]);
665 /* ./../lib/standard//string_search.nit:153 */
666 REGB0 = TAG_Bool(ATTR_string_search___BM_Pattern____length(fra.me.REG[0])!=NIT_NULL);
667 if (UNTAG_Bool(REGB0)) {
668 } else {
669 nit_abort("Uninitialized attribute %s", "_length", LOCATE_string_search, 153);
670 }
671 REGB0 = ATTR_string_search___BM_Pattern____length(fra.me.REG[0]);
672 /* ./../lib/standard//string_search.nit:154 */
673 fra.me.REG[0] = NEW_Array_array___Array___filled_with(REGB0, REGB0);
674 /* ./../lib/standard//string_search.nit:156 */
675 REGB1 = TAG_Int(0);
676 /* ./../lib/standard//string_search.nit:157 */
677 REGB2 = TAG_Int(1);
678 /* ./../lib/standard//kernel.nit:217 */
679 REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
680 /* ./../lib/standard//string_search.nit:158 */
681 REGB3 = TAG_Int(2);
682 /* ./../lib/standard//kernel.nit:217 */
683 REGB3 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB3));
684 /* ./../lib/standard//string_search.nit:159 */
685 while(1) {
686 REGB4 = TAG_Int(0);
687 /* ./../lib/standard//kernel.nit:213 */
688 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
689 /* ./../lib/standard//string_search.nit:159 */
690 if (UNTAG_Bool(REGB4)) {
691 /* ./../lib/standard//kernel.nit:214 */
692 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>UNTAG_Int(REGB2));
693 /* ./../lib/standard//string_search.nit:160 */
694 if (UNTAG_Bool(REGB4)) {
695 /* ./../lib/standard//kernel.nit:215 */
696 REGB4 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB0));
697 /* ./../lib/standard//string_search.nit:160 */
698 REGB5 = TAG_Int(1);
699 /* ./../lib/standard//kernel.nit:217 */
700 REGB5 = TAG_Int(UNTAG_Int(REGB4)-UNTAG_Int(REGB5));
701 REGB5 = TAG_Int(UNTAG_Int(REGB5)-UNTAG_Int(REGB1));
702 /* ./../lib/standard//collection//array.nit:243 */
703 fra.me.REG[2] = fra.me.REG[0];
704 /* ./../lib/standard//collection//array.nit:245 */
705 REGB4 = TAG_Int(0);
706 /* ./../lib/standard//kernel.nit:213 */
707 REGB4 = TAG_Bool(UNTAG_Int(REGB5)>=UNTAG_Int(REGB4));
708 /* ./../lib/standard//collection//array.nit:245 */
709 if (UNTAG_Bool(REGB4)) {
710 REGB4 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
711 if (UNTAG_Bool(REGB4)) {
712 } else {
713 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
714 }
715 REGB4 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]);
716 /* ./../lib/standard//kernel.nit:212 */
717 REGB4 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB4));
718 } else {
719 /* ./../lib/standard//collection//array.nit:245 */
720 REGB6 = TAG_Bool(false);
721 REGB4 = REGB6;
722 }
723 if (UNTAG_Bool(REGB4)) {
724 } else {
725 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
726 }
727 /* ./../lib/standard//collection//array.nit:246 */
728 fra.me.REG[2] = ATTR_array___Array____items(fra.me.REG[2]);
729 REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
730 if (UNTAG_Bool(REGB4)) {
731 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
732 }
733 /* ./../lib/standard//collection//array.nit:654 */
734 fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB5)];
735 /* ./../lib/standard//collection//array.nit:246 */
736 goto label1;
737 label1: while(0);
738 /* ./../lib/standard//kernel.nit:217 */
739 REGB5 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB2));
740 /* ./../lib/standard//string_search.nit:160 */
741 REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
742 if (UNTAG_Bool(REGB4)) {
743 nit_abort("Reciever is null", NULL, LOCATE_string_search, 160);
744 }
745 /* ./../lib/standard//kernel.nit:212 */
746 REGB5 = TAG_Bool(UNTAG_Int(fra.me.REG[2])<UNTAG_Int(REGB5));
747 } else {
748 /* ./../lib/standard//string_search.nit:160 */
749 REGB4 = TAG_Bool(false);
750 REGB5 = REGB4;
751 }
752 if (UNTAG_Bool(REGB5)) {
753 /* ./../lib/standard//kernel.nit:215 */
754 REGB5 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB0));
755 /* ./../lib/standard//string_search.nit:161 */
756 REGB4 = TAG_Int(1);
757 /* ./../lib/standard//kernel.nit:217 */
758 REGB4 = TAG_Int(UNTAG_Int(REGB5)-UNTAG_Int(REGB4));
759 REGB4 = TAG_Int(UNTAG_Int(REGB4)-UNTAG_Int(REGB1));
760 /* ./../lib/standard//collection//array.nit:243 */
761 fra.me.REG[2] = fra.me.REG[0];
762 /* ./../lib/standard//collection//array.nit:245 */
763 REGB5 = TAG_Int(0);
764 /* ./../lib/standard//kernel.nit:213 */
765 REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
766 /* ./../lib/standard//collection//array.nit:245 */
767 if (UNTAG_Bool(REGB5)) {
768 REGB5 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
769 if (UNTAG_Bool(REGB5)) {
770 } else {
771 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
772 }
773 REGB5 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]);
774 /* ./../lib/standard//kernel.nit:212 */
775 REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
776 } else {
777 /* ./../lib/standard//collection//array.nit:245 */
778 REGB6 = TAG_Bool(false);
779 REGB5 = REGB6;
780 }
781 if (UNTAG_Bool(REGB5)) {
782 } else {
783 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
784 }
785 /* ./../lib/standard//collection//array.nit:246 */
786 fra.me.REG[2] = ATTR_array___Array____items(fra.me.REG[2]);
787 REGB5 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
788 if (UNTAG_Bool(REGB5)) {
789 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
790 }
791 /* ./../lib/standard//collection//array.nit:654 */
792 fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB4)];
793 /* ./../lib/standard//collection//array.nit:246 */
794 goto label2;
795 label2: while(0);
796 /* ./../lib/standard//string_search.nit:161 */
797 CALL_abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB3, fra.me.REG[2]);
798 } else {
799 /* ./../lib/standard//kernel.nit:212 */
800 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB2));
801 /* ./../lib/standard//string_search.nit:163 */
802 if (UNTAG_Bool(REGB4)) {
803 REGB2 = REGB3;
804 }
805 /* ./../lib/standard//string_search.nit:164 */
806 REGB1 = REGB3;
807 /* ./../lib/standard//string_search.nit:165 */
808 while(1) {
809 REGB4 = TAG_Int(0);
810 /* ./../lib/standard//kernel.nit:213 */
811 REGB4 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB4));
812 /* ./../lib/standard//string_search.nit:165 */
813 if (UNTAG_Bool(REGB4)) {
814 REGB4 = CALL_abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB2);
815 /* ./../lib/standard//kernel.nit:215 */
816 REGB5 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
817 /* ./../lib/standard//string_search.nit:165 */
818 REGB6 = TAG_Int(1);
819 /* ./../lib/standard//kernel.nit:217 */
820 REGB6 = TAG_Int(UNTAG_Int(REGB5)-UNTAG_Int(REGB6));
821 REGB6 = TAG_Int(UNTAG_Int(REGB6)-UNTAG_Int(REGB1));
822 /* ./../lib/standard//string_search.nit:165 */
823 REGB6 = CALL_abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB6);
824 REGB5 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB6));
825 if (UNTAG_Bool(REGB5)) {
826 } else {
827 /* ./../lib/standard//kernel.nit:347 */
828 REGB6 = TAG_Bool((REGB4)==(REGB6));
829 /* ./../lib/standard//string_search.nit:165 */
830 REGB5 = REGB6;
831 }
832 } else {
833 REGB6 = TAG_Bool(false);
834 REGB5 = REGB6;
835 }
836 if (UNTAG_Bool(REGB5)) {
837 REGB5 = TAG_Int(1);
838 /* ./../lib/standard//kernel.nit:217 */
839 REGB5 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB5));
840 /* ./../lib/standard//string_search.nit:165 */
841 REGB2 = REGB5;
842 } else {
843 goto label3;
844 }
845 }
846 label3: while(0);
847 /* ./../lib/standard//kernel.nit:217 */
848 REGB5 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
849 /* ./../lib/standard//string_search.nit:166 */
850 CALL_abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB3, REGB5);
851 }
852 /* ./../lib/standard//string_search.nit:168 */
853 REGB5 = TAG_Int(1);
854 /* ./../lib/standard//kernel.nit:217 */
855 REGB5 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB5));
856 /* ./../lib/standard//string_search.nit:168 */
857 REGB3 = REGB5;
858 } else {
859 /* ./../lib/standard//string_search.nit:159 */
860 goto label4;
861 }
862 }
863 label4: while(0);
864 /* ./../lib/standard//string_search.nit:170 */
865 goto label5;
866 label5: while(0);
867 stack_frame_head = fra.me.prev;
868 return fra.me.REG[0];
869 }
870 void string_search___BM_Pattern___compute_gs(val_t p0){
871 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
872 val_t REGB0;
873 val_t REGB1;
874 val_t REGB2;
875 val_t REGB3;
876 val_t REGB4;
877 val_t REGB5;
878 val_t REGB6;
879 val_t tmp;
880 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
881 fra.me.file = LOCATE_string_search;
882 fra.me.line = 173;
883 fra.me.meth = LOCATE_string_search___BM_Pattern___compute_gs;
884 fra.me.has_broke = 0;
885 fra.me.REG_size = 4;
886 fra.me.REG[0] = NIT_NULL;
887 fra.me.REG[1] = NIT_NULL;
888 fra.me.REG[2] = NIT_NULL;
889 fra.me.REG[3] = NIT_NULL;
890 fra.me.REG[0] = p0;
891 /* ./../lib/standard//string_search.nit:175 */
892 REGB0 = TAG_Bool(ATTR_string_search___BM_Pattern____motif(fra.me.REG[0])!=NIT_NULL);
893 if (UNTAG_Bool(REGB0)) {
894 } else {
895 nit_abort("Uninitialized attribute %s", "_motif", LOCATE_string_search, 175);
896 }
897 fra.me.REG[1] = ATTR_string_search___BM_Pattern____motif(fra.me.REG[0]);
898 /* ./../lib/standard//string_search.nit:176 */
899 REGB0 = TAG_Bool(ATTR_string_search___BM_Pattern____length(fra.me.REG[0])!=NIT_NULL);
900 if (UNTAG_Bool(REGB0)) {
901 } else {
902 nit_abort("Uninitialized attribute %s", "_length", LOCATE_string_search, 176);
903 }
904 REGB0 = ATTR_string_search___BM_Pattern____length(fra.me.REG[0]);
905 /* ./../lib/standard//string_search.nit:177 */
906 fra.me.REG[1] = CALL_string_search___BM_Pattern___suffixes(fra.me.REG[0])(fra.me.REG[0]);
907 /* ./../lib/standard//string_search.nit:178 */
908 REGB1 = TAG_Int(0);
909 /* ./../lib/standard//string_search.nit:179 */
910 while(1) {
911 /* ./../lib/standard//kernel.nit:212 */
912 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
913 /* ./../lib/standard//string_search.nit:179 */
914 if (UNTAG_Bool(REGB2)) {
915 /* ./../lib/standard//string_search.nit:180 */
916 REGB2 = TAG_Bool(ATTR_string_search___BM_Pattern____gs(fra.me.REG[0])!=NIT_NULL);
917 if (UNTAG_Bool(REGB2)) {
918 } else {
919 nit_abort("Uninitialized attribute %s", "_gs", LOCATE_string_search, 180);
920 }
921 fra.me.REG[2] = ATTR_string_search___BM_Pattern____gs(fra.me.REG[0]);
922 CALL_abstract_collection___Map_____braeq(fra.me.REG[2])(fra.me.REG[2], REGB1, REGB0);
923 /* ./../lib/standard//string_search.nit:181 */
924 REGB2 = TAG_Int(1);
925 /* ./../lib/standard//kernel.nit:215 */
926 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
927 /* ./../lib/standard//string_search.nit:181 */
928 REGB1 = REGB2;
929 } else {
930 /* ./../lib/standard//string_search.nit:179 */
931 goto label1;
932 }
933 }
934 label1: while(0);
935 /* ./../lib/standard//string_search.nit:183 */
936 REGB2 = TAG_Int(0);
937 /* ./../lib/standard//string_search.nit:184 */
938 REGB3 = TAG_Int(1);
939 /* ./../lib/standard//kernel.nit:217 */
940 REGB3 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB3));
941 /* ./../lib/standard//string_search.nit:184 */
942 REGB1 = REGB3;
943 /* ./../lib/standard//string_search.nit:185 */
944 while(1) {
945 REGB3 = TAG_Int(1);
946 /* ./../lib/standard//kernel.nit:216 */
947 REGB3 = TAG_Int(-UNTAG_Int(REGB3));
948 /* ./../lib/standard//kernel.nit:213 */
949 REGB3 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB3));
950 /* ./../lib/standard//string_search.nit:185 */
951 if (UNTAG_Bool(REGB3)) {
952 /* ./../lib/standard//string_search.nit:186 */
953 REGB3 = TAG_Int(1);
954 /* ./../lib/standard//kernel.nit:216 */
955 REGB3 = TAG_Int(-UNTAG_Int(REGB3));
956 /* ./../lib/standard//string_search.nit:186 */
957 REGB4 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB3));
958 if (UNTAG_Bool(REGB4)) {
959 } else {
960 /* ./../lib/standard//kernel.nit:207 */
961 REGB3 = TAG_Bool((REGB1)==(REGB3));
962 /* ./../lib/standard//string_search.nit:186 */
963 REGB4 = REGB3;
964 }
965 if (UNTAG_Bool(REGB4)) {
966 REGB4 = TAG_Bool(true);
967 } else {
968 /* ./../lib/standard//collection//array.nit:243 */
969 fra.me.REG[2] = fra.me.REG[1];
970 REGB3 = REGB1;
971 /* ./../lib/standard//collection//array.nit:245 */
972 REGB5 = TAG_Int(0);
973 /* ./../lib/standard//kernel.nit:213 */
974 REGB5 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB5));
975 /* ./../lib/standard//collection//array.nit:245 */
976 if (UNTAG_Bool(REGB5)) {
977 REGB5 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
978 if (UNTAG_Bool(REGB5)) {
979 } else {
980 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
981 }
982 REGB5 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]);
983 /* ./../lib/standard//kernel.nit:212 */
984 REGB5 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB5));
985 } else {
986 /* ./../lib/standard//collection//array.nit:245 */
987 REGB6 = TAG_Bool(false);
988 REGB5 = REGB6;
989 }
990 if (UNTAG_Bool(REGB5)) {
991 } else {
992 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
993 }
994 /* ./../lib/standard//collection//array.nit:246 */
995 fra.me.REG[2] = ATTR_array___Array____items(fra.me.REG[2]);
996 REGB5 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
997 if (UNTAG_Bool(REGB5)) {
998 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
999 }
1000 /* ./../lib/standard//collection//array.nit:654 */
1001 fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB3)];
1002 /* ./../lib/standard//collection//array.nit:246 */
1003 goto label2;
1004 label2: while(0);
1005 /* ./../lib/standard//string_search.nit:186 */
1006 REGB3 = TAG_Int(1);
1007 /* ./../lib/standard//kernel.nit:215 */
1008 REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
1009 /* ./../lib/standard//string_search.nit:186 */
1010 REGB5 = TAG_Bool(IS_EQUAL_ON(REGB3,fra.me.REG[2]));
1011 if (UNTAG_Bool(REGB5)) {
1012 } else {
1013 REGB6 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1014 if (UNTAG_Bool(REGB6)) {
1015 REGB6 = TAG_Bool(false);
1016 REGB5 = REGB6;
1017 } else {
1018 /* ./../lib/standard//kernel.nit:207 */
1019 REGB3 = TAG_Bool((fra.me.REG[2])==(REGB3));
1020 /* ./../lib/standard//string_search.nit:186 */
1021 REGB5 = REGB3;
1022 }
1023 }
1024 REGB4 = REGB5;
1025 }
1026 if (UNTAG_Bool(REGB4)) {
1027 /* ./../lib/standard//string_search.nit:187 */
1028 while(1) {
1029 REGB4 = TAG_Int(1);
1030 /* ./../lib/standard//kernel.nit:217 */
1031 REGB4 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB4));
1032 REGB4 = TAG_Int(UNTAG_Int(REGB4)-UNTAG_Int(REGB1));
1033 /* ./../lib/standard//kernel.nit:212 */
1034 REGB4 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB4));
1035 /* ./../lib/standard//string_search.nit:187 */
1036 if (UNTAG_Bool(REGB4)) {
1037 /* ./../lib/standard//string_search.nit:188 */
1038 REGB4 = TAG_Bool(ATTR_string_search___BM_Pattern____gs(fra.me.REG[0])!=NIT_NULL);
1039 if (UNTAG_Bool(REGB4)) {
1040 } else {
1041 nit_abort("Uninitialized attribute %s", "_gs", LOCATE_string_search, 188);
1042 }
1043 fra.me.REG[2] = ATTR_string_search___BM_Pattern____gs(fra.me.REG[0]);
1044 /* ./../lib/standard//collection//array.nit:243 */
1045 REGB4 = REGB2;
1046 /* ./../lib/standard//collection//array.nit:245 */
1047 REGB5 = TAG_Int(0);
1048 /* ./../lib/standard//kernel.nit:213 */
1049 REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
1050 /* ./../lib/standard//collection//array.nit:245 */
1051 if (UNTAG_Bool(REGB5)) {
1052 REGB5 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
1053 if (UNTAG_Bool(REGB5)) {
1054 } else {
1055 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
1056 }
1057 REGB5 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]);
1058 /* ./../lib/standard//kernel.nit:212 */
1059 REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
1060 } else {
1061 /* ./../lib/standard//collection//array.nit:245 */
1062 REGB3 = TAG_Bool(false);
1063 REGB5 = REGB3;
1064 }
1065 if (UNTAG_Bool(REGB5)) {
1066 } else {
1067 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
1068 }
1069 /* ./../lib/standard//collection//array.nit:246 */
1070 fra.me.REG[2] = ATTR_array___Array____items(fra.me.REG[2]);
1071 REGB5 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1072 if (UNTAG_Bool(REGB5)) {
1073 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
1074 }
1075 /* ./../lib/standard//collection//array.nit:654 */
1076 fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB4)];
1077 /* ./../lib/standard//collection//array.nit:246 */
1078 goto label3;
1079 label3: while(0);
1080 /* ./../lib/standard//string_search.nit:188 */
1081 REGB4 = TAG_Bool(IS_EQUAL_ON(REGB0,fra.me.REG[2]));
1082 if (UNTAG_Bool(REGB4)) {
1083 } else {
1084 REGB5 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1085 if (UNTAG_Bool(REGB5)) {
1086 REGB5 = TAG_Bool(false);
1087 REGB4 = REGB5;
1088 } else {
1089 /* ./../lib/standard//kernel.nit:207 */
1090 REGB5 = TAG_Bool((fra.me.REG[2])==(REGB0));
1091 /* ./../lib/standard//string_search.nit:188 */
1092 REGB4 = REGB5;
1093 }
1094 }
1095 if (UNTAG_Bool(REGB4)) {
1096 REGB4 = TAG_Bool(ATTR_string_search___BM_Pattern____gs(fra.me.REG[0])!=NIT_NULL);
1097 if (UNTAG_Bool(REGB4)) {
1098 } else {
1099 nit_abort("Uninitialized attribute %s", "_gs", LOCATE_string_search, 188);
1100 }
1101 fra.me.REG[2] = ATTR_string_search___BM_Pattern____gs(fra.me.REG[0]);
1102 REGB4 = TAG_Int(1);
1103 /* ./../lib/standard//kernel.nit:217 */
1104 REGB4 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB4));
1105 REGB4 = TAG_Int(UNTAG_Int(REGB4)-UNTAG_Int(REGB1));
1106 /* ./../lib/standard//string_search.nit:188 */
1107 CALL_abstract_collection___Map_____braeq(fra.me.REG[2])(fra.me.REG[2], REGB2, REGB4);
1108 }
1109 /* ./../lib/standard//string_search.nit:189 */
1110 REGB4 = TAG_Int(1);
1111 /* ./../lib/standard//kernel.nit:215 */
1112 REGB4 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB4));
1113 /* ./../lib/standard//string_search.nit:189 */
1114 REGB2 = REGB4;
1115 } else {
1116 /* ./../lib/standard//string_search.nit:187 */
1117 goto label4;
1118 }
1119 }
1120 label4: while(0);
1121 }
1122 /* ./../lib/standard//string_search.nit:192 */
1123 REGB4 = TAG_Int(1);
1124 /* ./../lib/standard//kernel.nit:217 */
1125 REGB4 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB4));
1126 /* ./../lib/standard//string_search.nit:192 */
1127 REGB1 = REGB4;
1128 } else {
1129 /* ./../lib/standard//string_search.nit:185 */
1130 goto label5;
1131 }
1132 }
1133 label5: while(0);
1134 /* ./../lib/standard//string_search.nit:194 */
1135 REGB2 = TAG_Int(0);
1136 REGB1 = REGB2;
1137 /* ./../lib/standard//string_search.nit:195 */
1138 while(1) {
1139 REGB2 = TAG_Int(1);
1140 /* ./../lib/standard//kernel.nit:217 */
1141 REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
1142 /* ./../lib/standard//kernel.nit:212 */
1143 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
1144 /* ./../lib/standard//string_search.nit:195 */
1145 if (UNTAG_Bool(REGB2)) {
1146 /* ./../lib/standard//string_search.nit:196 */
1147 REGB2 = TAG_Bool(ATTR_string_search___BM_Pattern____gs(fra.me.REG[0])!=NIT_NULL);
1148 if (UNTAG_Bool(REGB2)) {
1149 } else {
1150 nit_abort("Uninitialized attribute %s", "_gs", LOCATE_string_search, 196);
1151 }
1152 fra.me.REG[2] = ATTR_string_search___BM_Pattern____gs(fra.me.REG[0]);
1153 REGB2 = TAG_Int(1);
1154 /* ./../lib/standard//kernel.nit:217 */
1155 REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
1156 /* ./../lib/standard//collection//array.nit:243 */
1157 fra.me.REG[3] = fra.me.REG[1];
1158 REGB4 = REGB1;
1159 /* ./../lib/standard//collection//array.nit:245 */
1160 REGB5 = TAG_Int(0);
1161 /* ./../lib/standard//kernel.nit:213 */
1162 REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
1163 /* ./../lib/standard//collection//array.nit:245 */
1164 if (UNTAG_Bool(REGB5)) {
1165 REGB5 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
1166 if (UNTAG_Bool(REGB5)) {
1167 } else {
1168 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
1169 }
1170 REGB5 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]);
1171 /* ./../lib/standard//kernel.nit:212 */
1172 REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
1173 } else {
1174 /* ./../lib/standard//collection//array.nit:245 */
1175 REGB3 = TAG_Bool(false);
1176 REGB5 = REGB3;
1177 }
1178 if (UNTAG_Bool(REGB5)) {
1179 } else {
1180 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
1181 }
1182 /* ./../lib/standard//collection//array.nit:246 */
1183 fra.me.REG[3] = ATTR_array___Array____items(fra.me.REG[3]);
1184 REGB5 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1185 if (UNTAG_Bool(REGB5)) {
1186 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
1187 }
1188 /* ./../lib/standard//collection//array.nit:654 */
1189 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB4)];
1190 /* ./../lib/standard//collection//array.nit:246 */
1191 goto label6;
1192 label6: while(0);
1193 /* ./../lib/standard//kernel.nit:217 */
1194 REGB2 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(fra.me.REG[3]));
1195 /* ./../lib/standard//string_search.nit:196 */
1196 REGB4 = TAG_Int(1);
1197 /* ./../lib/standard//kernel.nit:217 */
1198 REGB4 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB4));
1199 REGB4 = TAG_Int(UNTAG_Int(REGB4)-UNTAG_Int(REGB1));
1200 /* ./../lib/standard//string_search.nit:196 */
1201 CALL_abstract_collection___Map_____braeq(fra.me.REG[2])(fra.me.REG[2], REGB2, REGB4);
1202 /* ./../lib/standard//string_search.nit:197 */
1203 REGB4 = TAG_Int(1);
1204 /* ./../lib/standard//kernel.nit:215 */
1205 REGB4 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB4));
1206 /* ./../lib/standard//string_search.nit:197 */
1207 REGB1 = REGB4;
1208 } else {
1209 /* ./../lib/standard//string_search.nit:195 */
1210 goto label7;
1211 }
1212 }
1213 label7: while(0);
1214 stack_frame_head = fra.me.prev;
1215 return;
1216 }
1217 val_t string_search___Match___string(val_t p0){
1218 struct {struct stack_frame_t me;} fra;
1219 val_t REGB0;
1220 val_t tmp;
1221 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1222 fra.me.file = LOCATE_string_search;
1223 fra.me.line = 204;
1224 fra.me.meth = LOCATE_string_search___Match___string;
1225 fra.me.has_broke = 0;
1226 fra.me.REG_size = 1;
1227 fra.me.REG[0] = NIT_NULL;
1228 fra.me.REG[0] = p0;
1229 /* ./../lib/standard//string_search.nit:204 */
1230 REGB0 = TAG_Bool(ATTR_string_search___Match____string(fra.me.REG[0])!=NIT_NULL);
1231 if (UNTAG_Bool(REGB0)) {
1232 } else {
1233 nit_abort("Uninitialized attribute %s", "_string", LOCATE_string_search, 204);
1234 }
1235 fra.me.REG[0] = ATTR_string_search___Match____string(fra.me.REG[0]);
1236 stack_frame_head = fra.me.prev;
1237 return fra.me.REG[0];
1238 }
1239 val_t string_search___Match___from(val_t p0){
1240 struct {struct stack_frame_t me;} fra;
1241 val_t REGB0;
1242 val_t tmp;
1243 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1244 fra.me.file = LOCATE_string_search;
1245 fra.me.line = 207;
1246 fra.me.meth = LOCATE_string_search___Match___from;
1247 fra.me.has_broke = 0;
1248 fra.me.REG_size = 1;
1249 fra.me.REG[0] = NIT_NULL;
1250 fra.me.REG[0] = p0;
1251 /* ./../lib/standard//string_search.nit:207 */
1252 REGB0 = TAG_Bool(ATTR_string_search___Match____from(fra.me.REG[0])!=NIT_NULL);
1253 if (UNTAG_Bool(REGB0)) {
1254 } else {
1255 nit_abort("Uninitialized attribute %s", "_from", LOCATE_string_search, 207);
1256 }
1257 REGB0 = ATTR_string_search___Match____from(fra.me.REG[0]);
1258 stack_frame_head = fra.me.prev;
1259 return REGB0;
1260 }
1261 val_t string_search___Match___length(val_t p0){
1262 struct {struct stack_frame_t me;} fra;
1263 val_t REGB0;
1264 val_t tmp;
1265 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1266 fra.me.file = LOCATE_string_search;
1267 fra.me.line = 210;
1268 fra.me.meth = LOCATE_string_search___Match___length;
1269 fra.me.has_broke = 0;
1270 fra.me.REG_size = 1;
1271 fra.me.REG[0] = NIT_NULL;
1272 fra.me.REG[0] = p0;
1273 /* ./../lib/standard//string_search.nit:210 */
1274 REGB0 = TAG_Bool(ATTR_string_search___Match____length(fra.me.REG[0])!=NIT_NULL);
1275 if (UNTAG_Bool(REGB0)) {
1276 } else {
1277 nit_abort("Uninitialized attribute %s", "_length", LOCATE_string_search, 210);
1278 }
1279 REGB0 = ATTR_string_search___Match____length(fra.me.REG[0]);
1280 stack_frame_head = fra.me.prev;
1281 return REGB0;
1282 }
1283 val_t string_search___Match___after(val_t p0){
1284 struct {struct stack_frame_t me;} fra;
1285 val_t REGB0;
1286 val_t REGB1;
1287 val_t tmp;
1288 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1289 fra.me.file = LOCATE_string_search;
1290 fra.me.line = 213;
1291 fra.me.meth = LOCATE_string_search___Match___after;
1292 fra.me.has_broke = 0;
1293 fra.me.REG_size = 1;
1294 fra.me.REG[0] = NIT_NULL;
1295 fra.me.REG[0] = p0;
1296 /* ./../lib/standard//string_search.nit:215 */
1297 REGB0 = TAG_Bool(ATTR_string_search___Match____from(fra.me.REG[0])!=NIT_NULL);
1298 if (UNTAG_Bool(REGB0)) {
1299 } else {
1300 nit_abort("Uninitialized attribute %s", "_from", LOCATE_string_search, 215);
1301 }
1302 REGB0 = ATTR_string_search___Match____from(fra.me.REG[0]);
1303 REGB1 = TAG_Bool(ATTR_string_search___Match____length(fra.me.REG[0])!=NIT_NULL);
1304 if (UNTAG_Bool(REGB1)) {
1305 } else {
1306 nit_abort("Uninitialized attribute %s", "_length", LOCATE_string_search, 215);
1307 }
1308 REGB1 = ATTR_string_search___Match____length(fra.me.REG[0]);
1309 /* ./../lib/standard//kernel.nit:215 */
1310 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
1311 /* ./../lib/standard//string_search.nit:215 */
1312 goto label1;
1313 label1: while(0);
1314 stack_frame_head = fra.me.prev;
1315 return REGB1;
1316 }
1317 val_t string_search___Match___to_s(val_t p0){
1318 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1319 val_t REGB0;
1320 val_t REGB1;
1321 val_t tmp;
1322 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1323 fra.me.file = LOCATE_string_search;
1324 fra.me.line = 217;
1325 fra.me.meth = LOCATE_string_search___Match___to_s;
1326 fra.me.has_broke = 0;
1327 fra.me.REG_size = 2;
1328 fra.me.REG[0] = NIT_NULL;
1329 fra.me.REG[1] = NIT_NULL;
1330 fra.me.REG[0] = p0;
1331 /* ./../lib/standard//string_search.nit:218 */
1332 REGB0 = TAG_Bool(ATTR_string_search___Match____string(fra.me.REG[0])!=NIT_NULL);
1333 if (UNTAG_Bool(REGB0)) {
1334 } else {
1335 nit_abort("Uninitialized attribute %s", "_string", LOCATE_string_search, 218);
1336 }
1337 fra.me.REG[1] = ATTR_string_search___Match____string(fra.me.REG[0]);
1338 REGB0 = TAG_Bool(ATTR_string_search___Match____from(fra.me.REG[0])!=NIT_NULL);
1339 if (UNTAG_Bool(REGB0)) {
1340 } else {
1341 nit_abort("Uninitialized attribute %s", "_from", LOCATE_string_search, 218);
1342 }
1343 REGB0 = ATTR_string_search___Match____from(fra.me.REG[0]);
1344 REGB1 = TAG_Bool(ATTR_string_search___Match____length(fra.me.REG[0])!=NIT_NULL);
1345 if (UNTAG_Bool(REGB1)) {
1346 } else {
1347 nit_abort("Uninitialized attribute %s", "_length", LOCATE_string_search, 218);
1348 }
1349 REGB1 = ATTR_string_search___Match____length(fra.me.REG[0]);
1350 fra.me.REG[1] = CALL_string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB0, REGB1);
1351 goto label1;
1352 label1: while(0);
1353 stack_frame_head = fra.me.prev;
1354 return fra.me.REG[1];
1355 }
1356 void string_search___Match___init(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
1357 int itpos2 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_Match].i;
1358 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1359 val_t REGB0;
1360 val_t REGB1;
1361 val_t REGB2;
1362 val_t REGB3;
1363 val_t tmp;
1364 if (init_table[itpos2]) return;
1365 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1366 fra.me.file = LOCATE_string_search;
1367 fra.me.line = 220;
1368 fra.me.meth = LOCATE_string_search___Match___init;
1369 fra.me.has_broke = 0;
1370 fra.me.REG_size = 2;
1371 fra.me.REG[0] = NIT_NULL;
1372 fra.me.REG[1] = NIT_NULL;
1373 fra.me.REG[0] = p0;
1374 fra.me.REG[1] = p1;
1375 REGB0 = p2;
1376 REGB1 = p3;
1377 /* ./../lib/standard//string_search.nit:223 */
1378 REGB2 = TAG_Int(0);
1379 /* ./../lib/standard//kernel.nit:213 */
1380 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
1381 /* ./../lib/standard//string_search.nit:223 */
1382 if (UNTAG_Bool(REGB2)) {
1383 } else {
1384 nit_abort("Assert %s failed", "'positive_length'", LOCATE_string_search, 223);
1385 }
1386 /* ./../lib/standard//string_search.nit:224 */
1387 REGB2 = TAG_Int(0);
1388 /* ./../lib/standard//kernel.nit:213 */
1389 REGB2 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB2));
1390 /* ./../lib/standard//string_search.nit:224 */
1391 if (UNTAG_Bool(REGB2)) {
1392 } else {
1393 nit_abort("Assert %s failed", "'valid_from'", LOCATE_string_search, 224);
1394 }
1395 /* ./../lib/standard//kernel.nit:215 */
1396 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
1397 /* ./../lib/standard//collection//array.nit:23 */
1398 REGB3 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
1399 if (UNTAG_Bool(REGB3)) {
1400 } else {
1401 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
1402 }
1403 REGB3 = ATTR_array___AbstractArrayRead____length(fra.me.REG[1]);
1404 /* ./../lib/standard//kernel.nit:211 */
1405 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<=UNTAG_Int(REGB3));
1406 /* ./../lib/standard//string_search.nit:225 */
1407 if (UNTAG_Bool(REGB3)) {
1408 } else {
1409 nit_abort("Assert %s failed", "'valid_after'", LOCATE_string_search, 225);
1410 }
1411 /* ./../lib/standard//string_search.nit:226 */
1412 ATTR_string_search___Match____string(fra.me.REG[0]) = fra.me.REG[1];
1413 /* ./../lib/standard//string_search.nit:227 */
1414 ATTR_string_search___Match____from(fra.me.REG[0]) = REGB0;
1415 /* ./../lib/standard//string_search.nit:228 */
1416 ATTR_string_search___Match____length(fra.me.REG[0]) = REGB1;
1417 stack_frame_head = fra.me.prev;
1418 init_table[itpos2] = 1;
1419 return;
1420 }
1421 val_t string_search___Char___search_index_in(val_t p0, val_t p1, val_t p2){
1422 struct {struct stack_frame_t me;} fra;
1423 val_t REGB0;
1424 val_t REGB1;
1425 val_t REGB2;
1426 val_t REGB3;
1427 val_t REGB4;
1428 val_t tmp;
1429 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1430 fra.me.file = LOCATE_string_search;
1431 fra.me.line = 234;
1432 fra.me.meth = LOCATE_string_search___Char___search_index_in;
1433 fra.me.has_broke = 0;
1434 fra.me.REG_size = 1;
1435 fra.me.REG[0] = NIT_NULL;
1436 REGB0 = p0;
1437 fra.me.REG[0] = p1;
1438 REGB1 = p2;
1439 /* ./../lib/standard//collection//array.nit:23 */
1440 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
1441 if (UNTAG_Bool(REGB2)) {
1442 } else {
1443 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
1444 }
1445 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
1446 /* ./../lib/standard//string_search.nit:237 */
1447 while(1) {
1448 /* ./../lib/standard//kernel.nit:212 */
1449 REGB3 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
1450 /* ./../lib/standard//string_search.nit:237 */
1451 if (UNTAG_Bool(REGB3)) {
1452 /* ./../lib/standard//string_search.nit:238 */
1453 REGB3 = CALL_abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB1);
1454 REGB4 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB0));
1455 if (UNTAG_Bool(REGB4)) {
1456 } else {
1457 /* ./../lib/standard//kernel.nit:347 */
1458 REGB3 = TAG_Bool((REGB3)==(REGB0));
1459 /* ./../lib/standard//string_search.nit:238 */
1460 REGB4 = REGB3;
1461 }
1462 if (UNTAG_Bool(REGB4)) {
1463 REGB4 = REGB1;
1464 goto label1;
1465 }
1466 /* ./../lib/standard//string_search.nit:239 */
1467 REGB3 = TAG_Int(1);
1468 /* ./../lib/standard//kernel.nit:215 */
1469 REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
1470 /* ./../lib/standard//string_search.nit:239 */
1471 REGB1 = REGB3;
1472 } else {
1473 /* ./../lib/standard//string_search.nit:237 */
1474 goto label2;
1475 }
1476 }
1477 label2: while(0);
1478 /* ./../lib/standard//string_search.nit:241 */
1479 REGB1 = TAG_Int(1);
1480 /* ./../lib/standard//kernel.nit:216 */
1481 REGB1 = TAG_Int(-UNTAG_Int(REGB1));
1482 /* ./../lib/standard//string_search.nit:241 */
1483 REGB4 = REGB1;
1484 goto label1;
1485 label1: while(0);
1486 stack_frame_head = fra.me.prev;
1487 return REGB4;
1488 }
1489 val_t string_search___Char___search_in(val_t p0, val_t p1, val_t p2){
1490 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1491 val_t REGB0;
1492 val_t REGB1;
1493 val_t tmp;
1494 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1495 fra.me.file = LOCATE_string_search;
1496 fra.me.line = 244;
1497 fra.me.meth = LOCATE_string_search___Char___search_in;
1498 fra.me.has_broke = 0;
1499 fra.me.REG_size = 2;
1500 fra.me.REG[0] = NIT_NULL;
1501 fra.me.REG[1] = NIT_NULL;
1502 REGB0 = p0;
1503 fra.me.REG[0] = p1;
1504 REGB1 = p2;
1505 /* ./../lib/standard//string_search.nit:246 */
1506 REGB1 = CALL_string_search___Pattern___search_index_in(REGB0)(REGB0, fra.me.REG[0], REGB1);
1507 /* ./../lib/standard//string_search.nit:247 */
1508 REGB0 = TAG_Int(0);
1509 /* ./../lib/standard//kernel.nit:212 */
1510 REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
1511 /* ./../lib/standard//string_search.nit:247 */
1512 if (UNTAG_Bool(REGB0)) {
1513 /* ./../lib/standard//string_search.nit:248 */
1514 fra.me.REG[1] = NIT_NULL;
1515 goto label1;
1516 } else {
1517 /* ./../lib/standard//string_search.nit:250 */
1518 REGB0 = TAG_Int(1);
1519 fra.me.REG[0] = NEW_Match_string_search___Match___init(fra.me.REG[0], REGB1, REGB0);
1520 fra.me.REG[1] = fra.me.REG[0];
1521 goto label1;
1522 }
1523 label1: while(0);
1524 stack_frame_head = fra.me.prev;
1525 return fra.me.REG[1];
1526 }
1527 val_t string_search___String___search_index_in(val_t p0, val_t p1, val_t p2){
1528 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1529 val_t REGB0;
1530 val_t REGB1;
1531 val_t REGB2;
1532 val_t REGB3;
1533 val_t REGB4;
1534 val_t REGB5;
1535 val_t tmp;
1536 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1537 fra.me.file = LOCATE_string_search;
1538 fra.me.line = 257;
1539 fra.me.meth = LOCATE_string_search___String___search_index_in;
1540 fra.me.has_broke = 0;
1541 fra.me.REG_size = 2;
1542 fra.me.REG[0] = NIT_NULL;
1543 fra.me.REG[1] = NIT_NULL;
1544 fra.me.REG[0] = p0;
1545 fra.me.REG[1] = p1;
1546 REGB0 = p2;
1547 /* ./../lib/standard//string_search.nit:259 */
1548 REGB1 = TAG_Int(0);
1549 /* ./../lib/standard//kernel.nit:213 */
1550 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
1551 /* ./../lib/standard//string_search.nit:259 */
1552 if (UNTAG_Bool(REGB1)) {
1553 } else {
1554 nit_abort("Assert failed", NULL, LOCATE_string_search, 259);
1555 }
1556 /* ./../lib/standard//collection//array.nit:23 */
1557 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
1558 if (UNTAG_Bool(REGB1)) {
1559 } else {
1560 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
1561 }
1562 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[1]);
1563 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
1564 if (UNTAG_Bool(REGB2)) {
1565 } else {
1566 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
1567 }
1568 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
1569 /* ./../lib/standard//kernel.nit:217 */
1570 REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
1571 /* ./../lib/standard//string_search.nit:260 */
1572 REGB1 = TAG_Int(1);
1573 /* ./../lib/standard//kernel.nit:215 */
1574 REGB1 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
1575 /* ./../lib/standard//string_search.nit:261 */
1576 while(1) {
1577 /* ./../lib/standard//kernel.nit:212 */
1578 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1579 /* ./../lib/standard//string_search.nit:261 */
1580 if (UNTAG_Bool(REGB2)) {
1581 /* ./../lib/standard//collection//array.nit:23 */
1582 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
1583 if (UNTAG_Bool(REGB2)) {
1584 } else {
1585 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
1586 }
1587 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
1588 /* ./../lib/standard//string_search.nit:262 */
1589 REGB3 = TAG_Int(1);
1590 /* ./../lib/standard//kernel.nit:217 */
1591 REGB3 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB3));
1592 /* ./../lib/standard//string_search.nit:263 */
1593 while(1) {
1594 REGB2 = TAG_Int(0);
1595 /* ./../lib/standard//kernel.nit:213 */
1596 REGB2 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB2));
1597 /* ./../lib/standard//string_search.nit:263 */
1598 if (UNTAG_Bool(REGB2)) {
1599 REGB2 = CALL_abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB3);
1600 /* ./../lib/standard//kernel.nit:215 */
1601 REGB4 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB0));
1602 /* ./../lib/standard//string_search.nit:263 */
1603 REGB4 = CALL_abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB4);
1604 REGB5 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB4));
1605 if (UNTAG_Bool(REGB5)) {
1606 } else {
1607 /* ./../lib/standard//kernel.nit:347 */
1608 REGB4 = TAG_Bool((REGB2)==(REGB4));
1609 /* ./../lib/standard//string_search.nit:263 */
1610 REGB5 = REGB4;
1611 }
1612 } else {
1613 REGB4 = TAG_Bool(false);
1614 REGB5 = REGB4;
1615 }
1616 if (UNTAG_Bool(REGB5)) {
1617 REGB5 = TAG_Int(1);
1618 /* ./../lib/standard//kernel.nit:217 */
1619 REGB5 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB5));
1620 /* ./../lib/standard//string_search.nit:263 */
1621 REGB3 = REGB5;
1622 } else {
1623 goto label1;
1624 }
1625 }
1626 label1: while(0);
1627 /* ./../lib/standard//string_search.nit:265 */
1628 REGB5 = TAG_Int(0);
1629 /* ./../lib/standard//kernel.nit:212 */
1630 REGB5 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB5));
1631 /* ./../lib/standard//string_search.nit:265 */
1632 if (UNTAG_Bool(REGB5)) {
1633 REGB5 = REGB0;
1634 goto label2;
1635 }
1636 /* ./../lib/standard//string_search.nit:267 */
1637 REGB3 = TAG_Int(1);
1638 /* ./../lib/standard//kernel.nit:215 */
1639 REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
1640 /* ./../lib/standard//string_search.nit:267 */
1641 REGB0 = REGB3;
1642 } else {
1643 /* ./../lib/standard//string_search.nit:261 */
1644 goto label3;
1645 }
1646 }
1647 label3: while(0);
1648 /* ./../lib/standard//string_search.nit:269 */
1649 REGB0 = TAG_Int(1);
1650 /* ./../lib/standard//kernel.nit:216 */
1651 REGB0 = TAG_Int(-UNTAG_Int(REGB0));
1652 /* ./../lib/standard//string_search.nit:269 */
1653 REGB5 = REGB0;
1654 goto label2;
1655 label2: while(0);
1656 stack_frame_head = fra.me.prev;
1657 return REGB5;
1658 }
1659 val_t string_search___String___search_in(val_t p0, val_t p1, val_t p2){
1660 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1661 val_t REGB0;
1662 val_t REGB1;
1663 val_t tmp;
1664 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1665 fra.me.file = LOCATE_string_search;
1666 fra.me.line = 272;
1667 fra.me.meth = LOCATE_string_search___String___search_in;
1668 fra.me.has_broke = 0;
1669 fra.me.REG_size = 3;
1670 fra.me.REG[0] = NIT_NULL;
1671 fra.me.REG[1] = NIT_NULL;
1672 fra.me.REG[2] = NIT_NULL;
1673 fra.me.REG[0] = p0;
1674 fra.me.REG[1] = p1;
1675 REGB0 = p2;
1676 /* ./../lib/standard//string_search.nit:274 */
1677 REGB0 = CALL_string_search___Pattern___search_index_in(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB0);
1678 /* ./../lib/standard//string_search.nit:275 */
1679 REGB1 = TAG_Int(0);
1680 /* ./../lib/standard//kernel.nit:212 */
1681 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1682 /* ./../lib/standard//string_search.nit:275 */
1683 if (UNTAG_Bool(REGB1)) {
1684 /* ./../lib/standard//string_search.nit:276 */
1685 fra.me.REG[2] = NIT_NULL;
1686 goto label1;
1687 } else {
1688 /* ./../lib/standard//collection//array.nit:23 */
1689 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
1690 if (UNTAG_Bool(REGB1)) {
1691 } else {
1692 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
1693 }
1694 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
1695 /* ./../lib/standard//string_search.nit:278 */
1696 fra.me.REG[1] = NEW_Match_string_search___Match___init(fra.me.REG[1], REGB0, REGB1);
1697 fra.me.REG[2] = fra.me.REG[1];
1698 goto label1;
1699 }
1700 label1: while(0);
1701 stack_frame_head = fra.me.prev;
1702 return fra.me.REG[2];
1703 }
1704 val_t string_search___String___search(val_t p0, val_t p1){
1705 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1706 val_t REGB0;
1707 val_t tmp;
1708 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1709 fra.me.file = LOCATE_string_search;
1710 fra.me.line = 282;
1711 fra.me.meth = LOCATE_string_search___String___search;
1712 fra.me.has_broke = 0;
1713 fra.me.REG_size = 2;
1714 fra.me.REG[0] = NIT_NULL;
1715 fra.me.REG[1] = NIT_NULL;
1716 fra.me.REG[0] = p0;
1717 fra.me.REG[1] = p1;
1718 /* ./../lib/standard//string_search.nit:283 */
1719 REGB0 = TAG_Int(0);
1720 fra.me.REG[0] = CALL_string_search___Pattern___search_in(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], REGB0);
1721 goto label1;
1722 label1: while(0);
1723 stack_frame_head = fra.me.prev;
1724 return fra.me.REG[0];
1725 }
1726 val_t string_search___String___search_from(val_t p0, val_t p1, val_t p2){
1727 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1728 val_t REGB0;
1729 val_t tmp;
1730 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1731 fra.me.file = LOCATE_string_search;
1732 fra.me.line = 285;
1733 fra.me.meth = LOCATE_string_search___String___search_from;
1734 fra.me.has_broke = 0;
1735 fra.me.REG_size = 2;
1736 fra.me.REG[0] = NIT_NULL;
1737 fra.me.REG[1] = NIT_NULL;
1738 fra.me.REG[0] = p0;
1739 fra.me.REG[1] = p1;
1740 REGB0 = p2;
1741 /* ./../lib/standard//string_search.nit:288 */
1742 fra.me.REG[0] = CALL_string_search___Pattern___search_in(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], REGB0);
1743 goto label1;
1744 label1: while(0);
1745 stack_frame_head = fra.me.prev;
1746 return fra.me.REG[0];
1747 }
1748 val_t string_search___String___search_all(val_t p0, val_t p1){
1749 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1750 val_t tmp;
1751 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1752 fra.me.file = LOCATE_string_search;
1753 fra.me.line = 290;
1754 fra.me.meth = LOCATE_string_search___String___search_all;
1755 fra.me.has_broke = 0;
1756 fra.me.REG_size = 2;
1757 fra.me.REG[0] = NIT_NULL;
1758 fra.me.REG[1] = NIT_NULL;
1759 fra.me.REG[0] = p0;
1760 fra.me.REG[1] = p1;
1761 /* ./../lib/standard//string_search.nit:297 */
1762 fra.me.REG[0] = CALL_string_search___Pattern___search_all_in(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1763 goto label1;
1764 label1: while(0);
1765 stack_frame_head = fra.me.prev;
1766 return fra.me.REG[0];
1767 }
1768 val_t string_search___String___split_with(val_t p0, val_t p1){
1769 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1770 val_t REGB0;
1771 val_t REGB1;
1772 val_t tmp;
1773 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1774 fra.me.file = LOCATE_string_search;
1775 fra.me.line = 299;
1776 fra.me.meth = LOCATE_string_search___String___split_with;
1777 fra.me.has_broke = 0;
1778 fra.me.REG_size = 4;
1779 fra.me.REG[0] = NIT_NULL;
1780 fra.me.REG[1] = NIT_NULL;
1781 fra.me.REG[2] = NIT_NULL;
1782 fra.me.REG[3] = NIT_NULL;
1783 fra.me.REG[0] = p0;
1784 fra.me.REG[1] = p1;
1785 /* ./../lib/standard//string_search.nit:303 */
1786 fra.me.REG[0] = CALL_string_search___Pattern___split_in(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1787 /* ./../lib/standard//collection//array.nit:23 */
1788 REGB0 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
1789 if (UNTAG_Bool(REGB0)) {
1790 } else {
1791 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
1792 }
1793 REGB0 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
1794 /* ./../lib/standard//string_search.nit:304 */
1795 fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
1796 /* ./../lib/standard//collection//array.nit:234 */
1797 REGB0 = TAG_Int(0);
1798 /* ./../lib/standard//collection//array.nit:235 */
1799 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
1800 if (UNTAG_Bool(REGB1)) {
1801 } else {
1802 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
1803 }
1804 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
1805 /* ./../lib/standard//collection//array.nit:236 */
1806 fra.me.REG[2] = ATTR_array___Array____items(fra.me.REG[0]);
1807 /* ./../lib/standard//collection//array.nit:237 */
1808 while(1) {
1809 /* ./../lib/standard//collection//array.nit:23 */
1810 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
1811 if (UNTAG_Bool(REGB1)) {
1812 } else {
1813 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
1814 }
1815 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
1816 /* ./../lib/standard//kernel.nit:212 */
1817 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1818 /* ./../lib/standard//collection//array.nit:237 */
1819 if (UNTAG_Bool(REGB1)) {
1820 /* ./../lib/standard//collection//array.nit:238 */
1821 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1822 if (UNTAG_Bool(REGB1)) {
1823 nit_abort("Reciever is null", NULL, LOCATE_array, 238);
1824 }
1825 /* ./../lib/standard//collection//array.nit:654 */
1826 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
1827 /* ./../lib/standard//string_search.nit:305 */
1828 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
1829 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
1830 /* ./../lib/standard//collection//array.nit:239 */
1831 REGB1 = TAG_Int(1);
1832 /* ./../lib/standard//kernel.nit:215 */
1833 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
1834 /* ./../lib/standard//collection//array.nit:239 */
1835 REGB0 = REGB1;
1836 } else {
1837 /* ./../lib/standard//collection//array.nit:237 */
1838 goto label1;
1839 }
1840 }
1841 label1: while(0);
1842 /* ./../lib/standard//string_search.nit:306 */
1843 goto label2;
1844 label2: while(0);
1845 stack_frame_head = fra.me.prev;
1846 return fra.me.REG[1];
1847 }
1848 val_t string_search___String___split(val_t p0){
1849 struct {struct stack_frame_t me;} fra;
1850 val_t REGB0;
1851 val_t tmp;
1852 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1853 fra.me.file = LOCATE_string_search;
1854 fra.me.line = 309;
1855 fra.me.meth = LOCATE_string_search___String___split;
1856 fra.me.has_broke = 0;
1857 fra.me.REG_size = 1;
1858 fra.me.REG[0] = NIT_NULL;
1859 fra.me.REG[0] = p0;
1860 /* ./../lib/standard//string_search.nit:311 */
1861 REGB0 = TAG_Char('\n');
1862 fra.me.REG[0] = CALL_string_search___String___split_with(fra.me.REG[0])(fra.me.REG[0], REGB0);
1863 goto label1;
1864 label1: while(0);
1865 stack_frame_head = fra.me.prev;
1866 return fra.me.REG[0];
1867 }