nitdoc: remove unused plugin "Copy to Clipboard"
[nit.git] / c_src / string.sep.1.c
1 #include "string.sep.0.h"
2 /* method string#AbstractString#items for (self: AbstractString): NativeString */
3 char* string__AbstractString__items(val* self) {
4 char* var /* : NativeString */;
5 char* var1 /* : NativeString */;
6 var1 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:AbstractString> */
7 var = var1;
8 RET_LABEL:;
9 return var;
10 }
11 /* method string#AbstractString#items for (self: Object): NativeString */
12 char* VIRTUAL_string__AbstractString__items(val* self) {
13 char* var /* : NativeString */;
14 char* var1 /* : NativeString */;
15 var1 = string__AbstractString__items(self);
16 var = var1;
17 RET_LABEL:;
18 return var;
19 }
20 /* method string#AbstractString#[] for (self: AbstractString, Int): Char */
21 char string__AbstractString___91d_93d(val* self, long p0) {
22 char var /* : Char */;
23 long var_index /* var index: Int */;
24 char* var1 /* : NativeString */;
25 char var2 /* : Char */;
26 char var4 /* : Char */;
27 var_index = p0;
28 var1 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:AbstractString> */
29 { /* Inline string#NativeString#[] (var1,var_index) */
30 var4 = var1[var_index];
31 var2 = var4;
32 goto RET_LABEL3;
33 RET_LABEL3:(void)0;
34 }
35 var = var2;
36 goto RET_LABEL;
37 RET_LABEL:;
38 return var;
39 }
40 /* method string#AbstractString#[] for (self: Object, Int): nullable Object */
41 val* VIRTUAL_string__AbstractString___91d_93d(val* self, long p0) {
42 val* var /* : nullable Object */;
43 char var1 /* : Char */;
44 val* var2 /* : nullable Object */;
45 var1 = string__AbstractString___91d_93d(self, p0);
46 var2 = BOX_kernel__Char(var1); /* autobox from Char to nullable Object */
47 var = var2;
48 RET_LABEL:;
49 return var;
50 }
51 /* method string#AbstractString#substring for (self: AbstractString, Int, Int): String */
52 val* string__AbstractString__substring(val* self, long p0, long p1) {
53 val* var /* : String */;
54 long var_from /* var from: Int */;
55 long var_count /* var count: Int */;
56 long var1 /* : Int */;
57 short int var2 /* : Bool */;
58 short int var4 /* : Bool */;
59 int cltype;
60 int idtype;
61 const char* var_class_name;
62 short int var5 /* : Bool */;
63 long var6 /* : Int */;
64 long var8 /* : Int */;
65 long var9 /* : Int */;
66 short int var10 /* : Bool */;
67 short int var12 /* : Bool */;
68 int cltype13;
69 int idtype14;
70 const char* var_class_name15;
71 short int var16 /* : Bool */;
72 long var17 /* : Int */;
73 long var18 /* : Int */;
74 short int var19 /* : Bool */;
75 short int var21 /* : Bool */;
76 int cltype22;
77 int idtype23;
78 const char* var_class_name24;
79 short int var25 /* : Bool */;
80 long var26 /* : Int */;
81 short int var27 /* : Bool */;
82 short int var29 /* : Bool */;
83 int cltype30;
84 int idtype31;
85 const char* var_class_name32;
86 short int var33 /* : Bool */;
87 val* var34 /* : Buffer */;
88 long var35 /* : Int */;
89 long var37 /* : Int */;
90 val* var_r /* var r: Buffer */;
91 short int var38 /* : Bool */;
92 short int var40 /* : Bool */;
93 int cltype41;
94 int idtype42;
95 const char* var_class_name43;
96 short int var44 /* : Bool */;
97 char* var45 /* : NativeString */;
98 char var46 /* : Char */;
99 char var48 /* : Char */;
100 val* var49 /* : nullable Object */;
101 long var50 /* : Int */;
102 long var51 /* : Int */;
103 long var53 /* : Int */;
104 val* var54 /* : String */;
105 static val* varonce;
106 val* var55 /* : String */;
107 char* var56 /* : NativeString */;
108 long var57 /* : Int */;
109 val* var58 /* : String */;
110 var_from = p0;
111 var_count = p1;
112 var1 = 0;
113 { /* Inline kernel#Int#>= (var_count,var1) */
114 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
115 /* <var1:Int> isa OTHER */
116 var4 = 1; /* easy <var1:Int> isa OTHER*/
117 if (!var4) {
118 var_class_name = type_kernel__Int.name;
119 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
120 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
121 exit(1);
122 }
123 var5 = var_count >= var1;
124 var2 = var5;
125 goto RET_LABEL3;
126 RET_LABEL3:(void)0;
127 }
128 if (!var2) {
129 fprintf(stderr, "Runtime error: %s", "Assert failed");
130 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 50);
131 exit(1);
132 }
133 { /* Inline kernel#Int#+ (var_count,var_from) */
134 var8 = var_count + var_from;
135 var6 = var8;
136 goto RET_LABEL7;
137 RET_LABEL7:(void)0;
138 }
139 var_count = var6;
140 var9 = 0;
141 { /* Inline kernel#Int#< (var_from,var9) */
142 /* Covariant cast for argument 0 (i) <var9:Int> isa OTHER */
143 /* <var9:Int> isa OTHER */
144 var12 = 1; /* easy <var9:Int> isa OTHER*/
145 if (!var12) {
146 var_class_name15 = type_kernel__Int.name;
147 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name15);
148 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
149 exit(1);
150 }
151 var16 = var_from < var9;
152 var10 = var16;
153 goto RET_LABEL11;
154 RET_LABEL11:(void)0;
155 }
156 if (var10){
157 var17 = 0;
158 var_from = var17;
159 } else {
160 }
161 var18 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractString>*/;
162 { /* Inline kernel#Int#> (var_count,var18) */
163 /* Covariant cast for argument 0 (i) <var18:Int> isa OTHER */
164 /* <var18:Int> isa OTHER */
165 var21 = 1; /* easy <var18:Int> isa OTHER*/
166 if (!var21) {
167 var_class_name24 = type_kernel__Int.name;
168 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name24);
169 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
170 exit(1);
171 }
172 var25 = var_count > var18;
173 var19 = var25;
174 goto RET_LABEL20;
175 RET_LABEL20:(void)0;
176 }
177 if (var19){
178 var26 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractString>*/;
179 var_count = var26;
180 } else {
181 }
182 { /* Inline kernel#Int#< (var_from,var_count) */
183 /* Covariant cast for argument 0 (i) <var_count:Int> isa OTHER */
184 /* <var_count:Int> isa OTHER */
185 var29 = 1; /* easy <var_count:Int> isa OTHER*/
186 if (!var29) {
187 var_class_name32 = type_kernel__Int.name;
188 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name32);
189 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
190 exit(1);
191 }
192 var33 = var_from < var_count;
193 var27 = var33;
194 goto RET_LABEL28;
195 RET_LABEL28:(void)0;
196 }
197 if (var27){
198 var34 = NEW_string__Buffer(&type_string__Buffer);
199 { /* Inline kernel#Int#- (var_count,var_from) */
200 var37 = var_count - var_from;
201 var35 = var37;
202 goto RET_LABEL36;
203 RET_LABEL36:(void)0;
204 }
205 ((void (*)(val*, long))(var34->class->vft[COLOR_string__Buffer__with_capacity]))(var34, var35) /* with_capacity on <var34:Buffer>*/;
206 CHECK_NEW_string__Buffer(var34);
207 var_r = var34;
208 for(;;) {
209 { /* Inline kernel#Int#< (var_from,var_count) */
210 /* Covariant cast for argument 0 (i) <var_count:Int> isa OTHER */
211 /* <var_count:Int> isa OTHER */
212 var40 = 1; /* easy <var_count:Int> isa OTHER*/
213 if (!var40) {
214 var_class_name43 = type_kernel__Int.name;
215 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name43);
216 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
217 exit(1);
218 }
219 var44 = var_from < var_count;
220 var38 = var44;
221 goto RET_LABEL39;
222 RET_LABEL39:(void)0;
223 }
224 if (!var38) break;
225 var45 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:AbstractString> */
226 { /* Inline string#NativeString#[] (var45,var_from) */
227 var48 = var45[var_from];
228 var46 = var48;
229 goto RET_LABEL47;
230 RET_LABEL47:(void)0;
231 }
232 var49 = BOX_kernel__Char(var46); /* autobox from Char to nullable Object */
233 ((void (*)(val*, val*))(var_r->class->vft[COLOR_abstract_collection__Sequence__push]))(var_r, var49) /* push on <var_r:Buffer>*/;
234 var50 = 1;
235 { /* Inline kernel#Int#+ (var_from,var50) */
236 var53 = var_from + var50;
237 var51 = var53;
238 goto RET_LABEL52;
239 RET_LABEL52:(void)0;
240 }
241 var_from = var51;
242 CONTINUE_label: (void)0;
243 }
244 BREAK_label: (void)0;
245 var54 = ((val* (*)(val*))(var_r->class->vft[COLOR_string__Object__to_s]))(var_r) /* to_s on <var_r:Buffer>*/;
246 var = var54;
247 goto RET_LABEL;
248 } else {
249 if (varonce) {
250 var55 = varonce;
251 } else {
252 var56 = "";
253 var57 = 0;
254 var58 = string__NativeString__to_s_with_length(var56, var57);
255 var55 = var58;
256 varonce = var55;
257 }
258 var = var55;
259 goto RET_LABEL;
260 }
261 RET_LABEL:;
262 return var;
263 }
264 /* method string#AbstractString#substring for (self: Object, Int, Int): String */
265 val* VIRTUAL_string__AbstractString__substring(val* self, long p0, long p1) {
266 val* var /* : String */;
267 val* var1 /* : String */;
268 var1 = string__AbstractString__substring(self, p0, p1);
269 var = var1;
270 RET_LABEL:;
271 return var;
272 }
273 /* method string#AbstractString#substring_from for (self: AbstractString, Int): String */
274 val* string__AbstractString__substring_from(val* self, long p0) {
275 val* var /* : String */;
276 long var_from /* var from: Int */;
277 long var1 /* : Int */;
278 short int var2 /* : Bool */;
279 short int var4 /* : Bool */;
280 int cltype;
281 int idtype;
282 const char* var_class_name;
283 short int var5 /* : Bool */;
284 long var6 /* : Int */;
285 long var7 /* : Int */;
286 long var9 /* : Int */;
287 val* var10 /* : String */;
288 var_from = p0;
289 var1 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractString>*/;
290 { /* Inline kernel#Int#< (var_from,var1) */
291 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
292 /* <var1:Int> isa OTHER */
293 var4 = 1; /* easy <var1:Int> isa OTHER*/
294 if (!var4) {
295 var_class_name = type_kernel__Int.name;
296 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
297 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
298 exit(1);
299 }
300 var5 = var_from < var1;
301 var2 = var5;
302 goto RET_LABEL3;
303 RET_LABEL3:(void)0;
304 }
305 if (!var2) {
306 fprintf(stderr, "Runtime error: %s", "Assert failed");
307 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 75);
308 exit(1);
309 }
310 var6 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractString>*/;
311 { /* Inline kernel#Int#- (var6,var_from) */
312 var9 = var6 - var_from;
313 var7 = var9;
314 goto RET_LABEL8;
315 RET_LABEL8:(void)0;
316 }
317 var10 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_string__AbstractString__substring]))(self, var_from, var7) /* substring on <self:AbstractString>*/;
318 var = var10;
319 goto RET_LABEL;
320 RET_LABEL:;
321 return var;
322 }
323 /* method string#AbstractString#substring_from for (self: Object, Int): String */
324 val* VIRTUAL_string__AbstractString__substring_from(val* self, long p0) {
325 val* var /* : String */;
326 val* var1 /* : String */;
327 var1 = string__AbstractString__substring_from(self, p0);
328 var = var1;
329 RET_LABEL:;
330 return var;
331 }
332 /* method string#AbstractString#has_substring for (self: AbstractString, String, Int): Bool */
333 short int string__AbstractString__has_substring(val* self, val* p0, long p1) {
334 short int var /* : Bool */;
335 val* var_str /* var str: String */;
336 long var_pos /* var pos: Int */;
337 long var1 /* : Int */;
338 long var2 /* : Int */;
339 long var3 /* : Int */;
340 long var5 /* : Int */;
341 long var_itsindex /* var itsindex: Int */;
342 long var6 /* : Int */;
343 long var8 /* : Int */;
344 long var_myindex /* var myindex: Int */;
345 char* var9 /* : NativeString */;
346 char* var_myitems /* var myitems: NativeString */;
347 char* var10 /* : NativeString */;
348 char* var_itsitems /* var itsitems: NativeString */;
349 short int var11 /* : Bool */;
350 long var12 /* : Int */;
351 short int var13 /* : Bool */;
352 short int var15 /* : Bool */;
353 int cltype;
354 int idtype;
355 const char* var_class_name;
356 short int var16 /* : Bool */;
357 short int var_ /* var : Bool */;
358 short int var17 /* : Bool */;
359 short int var19 /* : Bool */;
360 int cltype20;
361 int idtype21;
362 const char* var_class_name22;
363 short int var23 /* : Bool */;
364 short int var24 /* : Bool */;
365 long var25 /* : Int */;
366 long var_its_index_from /* var its_index_from: Int */;
367 long var26 /* : Int */;
368 long var28 /* : Int */;
369 short int var29 /* : Bool */;
370 short int var31 /* : Bool */;
371 int cltype32;
372 int idtype33;
373 const char* var_class_name34;
374 short int var35 /* : Bool */;
375 char var36 /* : Char */;
376 char var38 /* : Char */;
377 char var39 /* : Char */;
378 char var41 /* : Char */;
379 short int var42 /* : Bool */;
380 short int var44 /* : Bool */;
381 short int var45 /* : Bool */;
382 short int var46 /* : Bool */;
383 long var47 /* : Int */;
384 long var48 /* : Int */;
385 long var50 /* : Int */;
386 long var51 /* : Int */;
387 long var52 /* : Int */;
388 long var54 /* : Int */;
389 short int var55 /* : Bool */;
390 var_str = p0;
391 var_pos = p1;
392 var1 = ((long (*)(val*))(var_str->class->vft[COLOR_abstract_collection__Collection__length]))(var_str) /* length on <var_str:String>*/;
393 var2 = 1;
394 { /* Inline kernel#Int#- (var1,var2) */
395 var5 = var1 - var2;
396 var3 = var5;
397 goto RET_LABEL4;
398 RET_LABEL4:(void)0;
399 }
400 var_itsindex = var3;
401 { /* Inline kernel#Int#+ (var_pos,var_itsindex) */
402 var8 = var_pos + var_itsindex;
403 var6 = var8;
404 goto RET_LABEL7;
405 RET_LABEL7:(void)0;
406 }
407 var_myindex = var6;
408 var9 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:AbstractString> */
409 var_myitems = var9;
410 var10 = var_str->attrs[COLOR_string__AbstractString___items].str; /* _items on <var_str:String> */
411 var_itsitems = var10;
412 var12 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractString>*/;
413 { /* Inline kernel#Int#> (var_myindex,var12) */
414 /* Covariant cast for argument 0 (i) <var12:Int> isa OTHER */
415 /* <var12:Int> isa OTHER */
416 var15 = 1; /* easy <var12:Int> isa OTHER*/
417 if (!var15) {
418 var_class_name = type_kernel__Int.name;
419 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
420 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
421 exit(1);
422 }
423 var16 = var_myindex > var12;
424 var13 = var16;
425 goto RET_LABEL14;
426 RET_LABEL14:(void)0;
427 }
428 var_ = var13;
429 if (var13){
430 var11 = var_;
431 } else {
432 { /* Inline kernel#Int#> (var_itsindex,var_myindex) */
433 /* Covariant cast for argument 0 (i) <var_myindex:Int> isa OTHER */
434 /* <var_myindex:Int> isa OTHER */
435 var19 = 1; /* easy <var_myindex:Int> isa OTHER*/
436 if (!var19) {
437 var_class_name22 = type_kernel__Int.name;
438 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name22);
439 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
440 exit(1);
441 }
442 var23 = var_itsindex > var_myindex;
443 var17 = var23;
444 goto RET_LABEL18;
445 RET_LABEL18:(void)0;
446 }
447 var11 = var17;
448 }
449 if (var11){
450 var24 = 0;
451 var = var24;
452 goto RET_LABEL;
453 } else {
454 }
455 var25 = var_str->attrs[COLOR_string__String___index_from].l; /* _index_from on <var_str:String> */
456 var_its_index_from = var25;
457 { /* Inline kernel#Int#+ (var_itsindex,var_its_index_from) */
458 var28 = var_itsindex + var_its_index_from;
459 var26 = var28;
460 goto RET_LABEL27;
461 RET_LABEL27:(void)0;
462 }
463 var_itsindex = var26;
464 for(;;) {
465 { /* Inline kernel#Int#>= (var_itsindex,var_its_index_from) */
466 /* Covariant cast for argument 0 (i) <var_its_index_from:Int> isa OTHER */
467 /* <var_its_index_from:Int> isa OTHER */
468 var31 = 1; /* easy <var_its_index_from:Int> isa OTHER*/
469 if (!var31) {
470 var_class_name34 = type_kernel__Int.name;
471 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name34);
472 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
473 exit(1);
474 }
475 var35 = var_itsindex >= var_its_index_from;
476 var29 = var35;
477 goto RET_LABEL30;
478 RET_LABEL30:(void)0;
479 }
480 if (!var29) break;
481 { /* Inline string#NativeString#[] (var_myitems,var_myindex) */
482 var38 = var_myitems[var_myindex];
483 var36 = var38;
484 goto RET_LABEL37;
485 RET_LABEL37:(void)0;
486 }
487 { /* Inline string#NativeString#[] (var_itsitems,var_itsindex) */
488 var41 = var_itsitems[var_itsindex];
489 var39 = var41;
490 goto RET_LABEL40;
491 RET_LABEL40:(void)0;
492 }
493 { /* Inline kernel#Char#!= (var36,var39) */
494 var44 = var36 == var39;
495 var45 = !var44;
496 var42 = var45;
497 goto RET_LABEL43;
498 RET_LABEL43:(void)0;
499 }
500 if (var42){
501 var46 = 0;
502 var = var46;
503 goto RET_LABEL;
504 } else {
505 }
506 var47 = 1;
507 { /* Inline kernel#Int#- (var_myindex,var47) */
508 var50 = var_myindex - var47;
509 var48 = var50;
510 goto RET_LABEL49;
511 RET_LABEL49:(void)0;
512 }
513 var_myindex = var48;
514 var51 = 1;
515 { /* Inline kernel#Int#- (var_itsindex,var51) */
516 var54 = var_itsindex - var51;
517 var52 = var54;
518 goto RET_LABEL53;
519 RET_LABEL53:(void)0;
520 }
521 var_itsindex = var52;
522 CONTINUE_label: (void)0;
523 }
524 BREAK_label: (void)0;
525 var55 = 1;
526 var = var55;
527 goto RET_LABEL;
528 RET_LABEL:;
529 return var;
530 }
531 /* method string#AbstractString#has_substring for (self: Object, String, Int): Bool */
532 short int VIRTUAL_string__AbstractString__has_substring(val* self, val* p0, long p1) {
533 short int var /* : Bool */;
534 short int var1 /* : Bool */;
535 var1 = string__AbstractString__has_substring(self, p0, p1);
536 var = var1;
537 RET_LABEL:;
538 return var;
539 }
540 /* method string#AbstractString#has_prefix for (self: AbstractString, String): Bool */
541 short int string__AbstractString__has_prefix(val* self, val* p0) {
542 short int var /* : Bool */;
543 val* var_prefix /* var prefix: String */;
544 long var1 /* : Int */;
545 short int var2 /* : Bool */;
546 var_prefix = p0;
547 var1 = 0;
548 var2 = ((short int (*)(val*, val*, long))(self->class->vft[COLOR_string__AbstractString__has_substring]))(self, var_prefix, var1) /* has_substring on <self:AbstractString>*/;
549 var = var2;
550 goto RET_LABEL;
551 RET_LABEL:;
552 return var;
553 }
554 /* method string#AbstractString#has_prefix for (self: Object, String): Bool */
555 short int VIRTUAL_string__AbstractString__has_prefix(val* self, val* p0) {
556 short int var /* : Bool */;
557 short int var1 /* : Bool */;
558 var1 = string__AbstractString__has_prefix(self, p0);
559 var = var1;
560 RET_LABEL:;
561 return var;
562 }
563 /* method string#AbstractString#has_suffix for (self: AbstractString, String): Bool */
564 short int string__AbstractString__has_suffix(val* self, val* p0) {
565 short int var /* : Bool */;
566 val* var_suffix /* var suffix: String */;
567 long var1 /* : Int */;
568 long var2 /* : Int */;
569 long var3 /* : Int */;
570 long var5 /* : Int */;
571 short int var6 /* : Bool */;
572 var_suffix = p0;
573 var1 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractString>*/;
574 var2 = ((long (*)(val*))(var_suffix->class->vft[COLOR_abstract_collection__Collection__length]))(var_suffix) /* length on <var_suffix:String>*/;
575 { /* Inline kernel#Int#- (var1,var2) */
576 var5 = var1 - var2;
577 var3 = var5;
578 goto RET_LABEL4;
579 RET_LABEL4:(void)0;
580 }
581 var6 = ((short int (*)(val*, val*, long))(self->class->vft[COLOR_string__AbstractString__has_substring]))(self, var_suffix, var3) /* has_substring on <self:AbstractString>*/;
582 var = var6;
583 goto RET_LABEL;
584 RET_LABEL:;
585 return var;
586 }
587 /* method string#AbstractString#has_suffix for (self: Object, String): Bool */
588 short int VIRTUAL_string__AbstractString__has_suffix(val* self, val* p0) {
589 short int var /* : Bool */;
590 short int var1 /* : Bool */;
591 var1 = string__AbstractString__has_suffix(self, p0);
592 var = var1;
593 RET_LABEL:;
594 return var;
595 }
596 /* method string#AbstractString#to_i for (self: AbstractString): Int */
597 long string__AbstractString__to_i(val* self) {
598 long var /* : Int */;
599 val* var1 /* : String */;
600 char* var2 /* : NativeString */;
601 long var3 /* : Int */;
602 long var5 /* : Int */;
603 var1 = ((val* (*)(val*))(self->class->vft[COLOR_string__Object__to_s]))(self) /* to_s on <self:AbstractString>*/;
604 var2 = ((char* (*)(val*))(var1->class->vft[COLOR_string__String__to_cstring]))(var1) /* to_cstring on <var1:String>*/;
605 { /* Inline string#NativeString#atoi (var2) */
606 var5 = atoi(var2);;
607 var3 = var5;
608 goto RET_LABEL4;
609 RET_LABEL4:(void)0;
610 }
611 var = var3;
612 goto RET_LABEL;
613 RET_LABEL:;
614 return var;
615 }
616 /* method string#AbstractString#to_i for (self: Object): Int */
617 long VIRTUAL_string__AbstractString__to_i(val* self) {
618 long var /* : Int */;
619 long var1 /* : Int */;
620 var1 = string__AbstractString__to_i(self);
621 var = var1;
622 RET_LABEL:;
623 return var;
624 }
625 /* method string#AbstractString#to_f for (self: AbstractString): Float */
626 double string__AbstractString__to_f(val* self) {
627 double var /* : Float */;
628 val* var1 /* : String */;
629 char* var2 /* : NativeString */;
630 double var3 /* : Float */;
631 var1 = ((val* (*)(val*))(self->class->vft[COLOR_string__Object__to_s]))(self) /* to_s on <self:AbstractString>*/;
632 var2 = ((char* (*)(val*))(var1->class->vft[COLOR_string__String__to_cstring]))(var1) /* to_cstring on <var1:String>*/;
633 var3 = string__NativeString__atof(var2);
634 var = var3;
635 goto RET_LABEL;
636 RET_LABEL:;
637 return var;
638 }
639 /* method string#AbstractString#to_f for (self: Object): Float */
640 double VIRTUAL_string__AbstractString__to_f(val* self) {
641 double var /* : Float */;
642 double var1 /* : Float */;
643 var1 = string__AbstractString__to_f(self);
644 var = var1;
645 RET_LABEL:;
646 return var;
647 }
648 /* method string#AbstractString#to_hex for (self: AbstractString): Int */
649 long string__AbstractString__to_hex(val* self) {
650 long var /* : Int */;
651 long var1 /* : Int */;
652 long var2 /* : Int */;
653 var1 = 16;
654 var2 = ((long (*)(val*, long))(self->class->vft[COLOR_string__AbstractString__a_to]))(self, var1) /* a_to on <self:AbstractString>*/;
655 var = var2;
656 goto RET_LABEL;
657 RET_LABEL:;
658 return var;
659 }
660 /* method string#AbstractString#to_hex for (self: Object): Int */
661 long VIRTUAL_string__AbstractString__to_hex(val* self) {
662 long var /* : Int */;
663 long var1 /* : Int */;
664 var1 = string__AbstractString__to_hex(self);
665 var = var1;
666 RET_LABEL:;
667 return var;
668 }
669 /* method string#AbstractString#a_to for (self: AbstractString, Int): Int */
670 long string__AbstractString__a_to(val* self, long p0) {
671 long var /* : Int */;
672 long var_base /* var base: Int */;
673 long var1 /* : Int */;
674 long var_i /* var i: Int */;
675 short int var2 /* : Bool */;
676 short int var_neg /* var neg: Bool */;
677 val* var3 /* : Iterator[nullable Object] */;
678 short int var4 /* : Bool */;
679 val* var5 /* : nullable Object */;
680 char var_c /* var c: Char */;
681 char var6 /* : Char */;
682 long var7 /* : Int */;
683 long var_v /* var v: Int */;
684 short int var8 /* : Bool */;
685 short int var10 /* : Bool */;
686 int cltype;
687 int idtype;
688 const char* var_class_name;
689 short int var11 /* : Bool */;
690 long var12 /* : Int */;
691 long var14 /* : Int */;
692 long var15 /* : Int */;
693 short int var16 /* : Bool */;
694 short int var18 /* : Bool */;
695 int cltype19;
696 int idtype20;
697 const char* var_class_name21;
698 short int var22 /* : Bool */;
699 short int var23 /* : Bool */;
700 long var24 /* : Int */;
701 long var26 /* : Int */;
702 long var27 /* : Int */;
703 long var29 /* : Int */;
704 long var30 /* : Int */;
705 long var32 /* : Int */;
706 var_base = p0;
707 var1 = 0;
708 var_i = var1;
709 var2 = 0;
710 var_neg = var2;
711 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__iterator]))(self) /* iterator on <self:AbstractString>*/;
712 for(;;) {
713 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
714 if(!var4) break;
715 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
716 var6 = ((struct instance_kernel__Char*)var5)->value; /* autounbox from nullable Object to Char */;
717 var_c = var6;
718 var7 = kernel__Char__to_i(var_c);
719 var_v = var7;
720 { /* Inline kernel#Int#> (var_v,var_base) */
721 /* Covariant cast for argument 0 (i) <var_base:Int> isa OTHER */
722 /* <var_base:Int> isa OTHER */
723 var10 = 1; /* easy <var_base:Int> isa OTHER*/
724 if (!var10) {
725 var_class_name = type_kernel__Int.name;
726 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
727 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
728 exit(1);
729 }
730 var11 = var_v > var_base;
731 var8 = var11;
732 goto RET_LABEL9;
733 RET_LABEL9:(void)0;
734 }
735 if (var8){
736 if (var_neg){
737 { /* Inline kernel#Int#unary - (var_i) */
738 var14 = -var_i;
739 var12 = var14;
740 goto RET_LABEL13;
741 RET_LABEL13:(void)0;
742 }
743 var = var12;
744 goto RET_LABEL;
745 } else {
746 var = var_i;
747 goto RET_LABEL;
748 }
749 } else {
750 var15 = 0;
751 { /* Inline kernel#Int#< (var_v,var15) */
752 /* Covariant cast for argument 0 (i) <var15:Int> isa OTHER */
753 /* <var15:Int> isa OTHER */
754 var18 = 1; /* easy <var15:Int> isa OTHER*/
755 if (!var18) {
756 var_class_name21 = type_kernel__Int.name;
757 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name21);
758 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
759 exit(1);
760 }
761 var22 = var_v < var15;
762 var16 = var22;
763 goto RET_LABEL17;
764 RET_LABEL17:(void)0;
765 }
766 if (var16){
767 var23 = 1;
768 var_neg = var23;
769 } else {
770 { /* Inline kernel#Int#* (var_i,var_base) */
771 var26 = var_i * var_base;
772 var24 = var26;
773 goto RET_LABEL25;
774 RET_LABEL25:(void)0;
775 }
776 { /* Inline kernel#Int#+ (var24,var_v) */
777 var29 = var24 + var_v;
778 var27 = var29;
779 goto RET_LABEL28;
780 RET_LABEL28:(void)0;
781 }
782 var_i = var27;
783 }
784 }
785 CONTINUE_label: (void)0;
786 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
787 }
788 BREAK_label: (void)0;
789 if (var_neg){
790 { /* Inline kernel#Int#unary - (var_i) */
791 var32 = -var_i;
792 var30 = var32;
793 goto RET_LABEL31;
794 RET_LABEL31:(void)0;
795 }
796 var = var30;
797 goto RET_LABEL;
798 } else {
799 var = var_i;
800 goto RET_LABEL;
801 }
802 RET_LABEL:;
803 return var;
804 }
805 /* method string#AbstractString#a_to for (self: Object, Int): Int */
806 long VIRTUAL_string__AbstractString__a_to(val* self, long p0) {
807 long var /* : Int */;
808 long var1 /* : Int */;
809 var1 = string__AbstractString__a_to(self, p0);
810 var = var1;
811 RET_LABEL:;
812 return var;
813 }
814 /* method string#AbstractString#is_numeric for (self: AbstractString): Bool */
815 short int string__AbstractString__is_numeric(val* self) {
816 short int var /* : Bool */;
817 short int var1 /* : Bool */;
818 short int var_has_point_or_comma /* var has_point_or_comma: Bool */;
819 val* var2 /* : Iterator[nullable Object] */;
820 short int var3 /* : Bool */;
821 val* var4 /* : nullable Object */;
822 char var_i /* var i: Char */;
823 char var5 /* : Char */;
824 short int var6 /* : Bool */;
825 short int var7 /* : Bool */;
826 short int var8 /* : Bool */;
827 short int var9 /* : Bool */;
828 char var10 /* : Char */;
829 short int var11 /* : Bool */;
830 short int var13 /* : Bool */;
831 short int var_ /* var : Bool */;
832 char var14 /* : Char */;
833 short int var15 /* : Bool */;
834 short int var17 /* : Bool */;
835 short int var_18 /* var : Bool */;
836 short int var19 /* : Bool */;
837 short int var20 /* : Bool */;
838 short int var21 /* : Bool */;
839 short int var22 /* : Bool */;
840 var1 = 0;
841 var_has_point_or_comma = var1;
842 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__iterator]))(self) /* iterator on <self:AbstractString>*/;
843 for(;;) {
844 var3 = ((short int (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var2) /* is_ok on <var2:Iterator[nullable Object]>*/;
845 if(!var3) break;
846 var4 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__item]))(var2) /* item on <var2:Iterator[nullable Object]>*/;
847 var5 = ((struct instance_kernel__Char*)var4)->value; /* autounbox from nullable Object to Char */;
848 var_i = var5;
849 var6 = string__Char__is_numeric(var_i);
850 var7 = !var6;
851 if (var7){
852 var10 = '.';
853 { /* Inline kernel#Char#== (var_i,var10) */
854 var13 = var_i == var10;
855 var11 = var13;
856 goto RET_LABEL12;
857 RET_LABEL12:(void)0;
858 }
859 var_ = var11;
860 if (var11){
861 var9 = var_;
862 } else {
863 var14 = ',';
864 { /* Inline kernel#Char#== (var_i,var14) */
865 var17 = var_i == var14;
866 var15 = var17;
867 goto RET_LABEL16;
868 RET_LABEL16:(void)0;
869 }
870 var9 = var15;
871 }
872 var_18 = var9;
873 if (var9){
874 var19 = !var_has_point_or_comma;
875 var8 = var19;
876 } else {
877 var8 = var_18;
878 }
879 if (var8){
880 var20 = 1;
881 var_has_point_or_comma = var20;
882 } else {
883 var21 = 0;
884 var = var21;
885 goto RET_LABEL;
886 }
887 } else {
888 }
889 CONTINUE_label: (void)0;
890 ((void (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__next]))(var2) /* next on <var2:Iterator[nullable Object]>*/;
891 }
892 BREAK_label: (void)0;
893 var22 = 1;
894 var = var22;
895 goto RET_LABEL;
896 RET_LABEL:;
897 return var;
898 }
899 /* method string#AbstractString#is_numeric for (self: Object): Bool */
900 short int VIRTUAL_string__AbstractString__is_numeric(val* self) {
901 short int var /* : Bool */;
902 short int var1 /* : Bool */;
903 var1 = string__AbstractString__is_numeric(self);
904 var = var1;
905 RET_LABEL:;
906 return var;
907 }
908 /* method string#AbstractString#to_upper for (self: AbstractString): String */
909 val* string__AbstractString__to_upper(val* self) {
910 val* var /* : String */;
911 val* var1 /* : Buffer */;
912 long var2 /* : Int */;
913 val* var_s /* var s: Buffer */;
914 val* var3 /* : Iterator[nullable Object] */;
915 short int var4 /* : Bool */;
916 val* var5 /* : nullable Object */;
917 char var_i /* var i: Char */;
918 char var6 /* : Char */;
919 char var7 /* : Char */;
920 val* var8 /* : nullable Object */;
921 val* var9 /* : String */;
922 var1 = NEW_string__Buffer(&type_string__Buffer);
923 var2 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractString>*/;
924 ((void (*)(val*, long))(var1->class->vft[COLOR_string__Buffer__with_capacity]))(var1, var2) /* with_capacity on <var1:Buffer>*/;
925 CHECK_NEW_string__Buffer(var1);
926 var_s = var1;
927 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__iterator]))(self) /* iterator on <self:AbstractString>*/;
928 for(;;) {
929 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
930 if(!var4) break;
931 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
932 var6 = ((struct instance_kernel__Char*)var5)->value; /* autounbox from nullable Object to Char */;
933 var_i = var6;
934 var7 = kernel__Char__to_upper(var_i);
935 var8 = BOX_kernel__Char(var7); /* autobox from Char to nullable Object */
936 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_s, var8) /* add on <var_s:Buffer>*/;
937 CONTINUE_label: (void)0;
938 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
939 }
940 BREAK_label: (void)0;
941 var9 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__Object__to_s]))(var_s) /* to_s on <var_s:Buffer>*/;
942 var = var9;
943 goto RET_LABEL;
944 RET_LABEL:;
945 return var;
946 }
947 /* method string#AbstractString#to_upper for (self: Object): String */
948 val* VIRTUAL_string__AbstractString__to_upper(val* self) {
949 val* var /* : String */;
950 val* var1 /* : String */;
951 var1 = string__AbstractString__to_upper(self);
952 var = var1;
953 RET_LABEL:;
954 return var;
955 }
956 /* method string#AbstractString#to_lower for (self: AbstractString): String */
957 val* string__AbstractString__to_lower(val* self) {
958 val* var /* : String */;
959 val* var1 /* : Buffer */;
960 long var2 /* : Int */;
961 val* var_s /* var s: Buffer */;
962 val* var3 /* : Iterator[nullable Object] */;
963 short int var4 /* : Bool */;
964 val* var5 /* : nullable Object */;
965 char var_i /* var i: Char */;
966 char var6 /* : Char */;
967 char var7 /* : Char */;
968 val* var8 /* : nullable Object */;
969 val* var9 /* : String */;
970 var1 = NEW_string__Buffer(&type_string__Buffer);
971 var2 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractString>*/;
972 ((void (*)(val*, long))(var1->class->vft[COLOR_string__Buffer__with_capacity]))(var1, var2) /* with_capacity on <var1:Buffer>*/;
973 CHECK_NEW_string__Buffer(var1);
974 var_s = var1;
975 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__iterator]))(self) /* iterator on <self:AbstractString>*/;
976 for(;;) {
977 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
978 if(!var4) break;
979 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
980 var6 = ((struct instance_kernel__Char*)var5)->value; /* autounbox from nullable Object to Char */;
981 var_i = var6;
982 var7 = kernel__Char__to_lower(var_i);
983 var8 = BOX_kernel__Char(var7); /* autobox from Char to nullable Object */
984 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_s, var8) /* add on <var_s:Buffer>*/;
985 CONTINUE_label: (void)0;
986 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
987 }
988 BREAK_label: (void)0;
989 var9 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__Object__to_s]))(var_s) /* to_s on <var_s:Buffer>*/;
990 var = var9;
991 goto RET_LABEL;
992 RET_LABEL:;
993 return var;
994 }
995 /* method string#AbstractString#to_lower for (self: Object): String */
996 val* VIRTUAL_string__AbstractString__to_lower(val* self) {
997 val* var /* : String */;
998 val* var1 /* : String */;
999 var1 = string__AbstractString__to_lower(self);
1000 var = var1;
1001 RET_LABEL:;
1002 return var;
1003 }
1004 /* method string#AbstractString#trim for (self: AbstractString): String */
1005 val* string__AbstractString__trim(val* self) {
1006 val* var /* : String */;
1007 long var1 /* : Int */;
1008 long var2 /* : Int */;
1009 short int var3 /* : Bool */;
1010 short int var5 /* : Bool */;
1011 val* var6 /* : String */;
1012 long var7 /* : Int */;
1013 long var_start_pos /* var start_pos: Int */;
1014 val* var8 /* : nullable Object */;
1015 long var9 /* : Int */;
1016 char var11 /* : Char */;
1017 long var12 /* : Int */;
1018 long var13 /* : Int */;
1019 short int var14 /* : Bool */;
1020 short int var16 /* : Bool */;
1021 int cltype;
1022 int idtype;
1023 const char* var_class_name;
1024 short int var17 /* : Bool */;
1025 long var18 /* : Int */;
1026 long var19 /* : Int */;
1027 long var21 /* : Int */;
1028 long var22 /* : Int */;
1029 short int var23 /* : Bool */;
1030 short int var25 /* : Bool */;
1031 static val* varonce;
1032 val* var26 /* : String */;
1033 char* var27 /* : NativeString */;
1034 long var28 /* : Int */;
1035 val* var29 /* : String */;
1036 long var30 /* : Int */;
1037 long var31 /* : Int */;
1038 long var32 /* : Int */;
1039 long var34 /* : Int */;
1040 long var_end_pos /* var end_pos: Int */;
1041 val* var35 /* : nullable Object */;
1042 long var36 /* : Int */;
1043 char var38 /* : Char */;
1044 long var39 /* : Int */;
1045 long var40 /* : Int */;
1046 short int var41 /* : Bool */;
1047 short int var43 /* : Bool */;
1048 int cltype44;
1049 int idtype45;
1050 const char* var_class_name46;
1051 short int var47 /* : Bool */;
1052 long var48 /* : Int */;
1053 long var49 /* : Int */;
1054 long var51 /* : Int */;
1055 short int var52 /* : Bool */;
1056 short int var54 /* : Bool */;
1057 val* var55 /* : nullable Object */;
1058 val* var56 /* : String */;
1059 char var57 /* : Char */;
1060 long var59 /* : Int */;
1061 long var61 /* : Int */;
1062 long var62 /* : Int */;
1063 long var63 /* : Int */;
1064 long var65 /* : Int */;
1065 val* var66 /* : String */;
1066 var1 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:AbstractString> */
1067 var2 = 0;
1068 { /* Inline kernel#Int#== (var1,var2) */
1069 var5 = var1 == var2;
1070 var3 = var5;
1071 goto RET_LABEL4;
1072 RET_LABEL4:(void)0;
1073 }
1074 if (var3){
1075 var6 = ((val* (*)(val*))(self->class->vft[COLOR_string__Object__to_s]))(self) /* to_s on <self:AbstractString>*/;
1076 var = var6;
1077 goto RET_LABEL;
1078 } else {
1079 }
1080 var7 = 0;
1081 var_start_pos = var7;
1082 for(;;) {
1083 var8 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(self, var_start_pos) /* [] on <self:AbstractString>*/;
1084 { /* Inline kernel#Char#ascii (var8) */
1085 var11 = ((struct instance_kernel__Char*)var8)->value; /* autounbox from nullable Object to Char */;
1086 var12 = (unsigned char)var11;
1087 var9 = var12;
1088 goto RET_LABEL10;
1089 RET_LABEL10:(void)0;
1090 }
1091 var13 = 32;
1092 { /* Inline kernel#Int#<= (var9,var13) */
1093 /* Covariant cast for argument 0 (i) <var13:Int> isa OTHER */
1094 /* <var13:Int> isa OTHER */
1095 var16 = 1; /* easy <var13:Int> isa OTHER*/
1096 if (!var16) {
1097 var_class_name = type_kernel__Int.name;
1098 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1099 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
1100 exit(1);
1101 }
1102 var17 = var9 <= var13;
1103 var14 = var17;
1104 goto RET_LABEL15;
1105 RET_LABEL15:(void)0;
1106 }
1107 if (!var14) break;
1108 var18 = 1;
1109 { /* Inline kernel#Int#+ (var_start_pos,var18) */
1110 var21 = var_start_pos + var18;
1111 var19 = var21;
1112 goto RET_LABEL20;
1113 RET_LABEL20:(void)0;
1114 }
1115 var_start_pos = var19;
1116 var22 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:AbstractString> */
1117 { /* Inline kernel#Int#== (var_start_pos,var22) */
1118 var25 = var_start_pos == var22;
1119 var23 = var25;
1120 goto RET_LABEL24;
1121 RET_LABEL24:(void)0;
1122 }
1123 if (var23){
1124 if (varonce) {
1125 var26 = varonce;
1126 } else {
1127 var27 = "";
1128 var28 = 0;
1129 var29 = string__NativeString__to_s_with_length(var27, var28);
1130 var26 = var29;
1131 varonce = var26;
1132 }
1133 var = var26;
1134 goto RET_LABEL;
1135 } else {
1136 }
1137 CONTINUE_label: (void)0;
1138 }
1139 BREAK_label: (void)0;
1140 var30 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractString>*/;
1141 var31 = 1;
1142 { /* Inline kernel#Int#- (var30,var31) */
1143 var34 = var30 - var31;
1144 var32 = var34;
1145 goto RET_LABEL33;
1146 RET_LABEL33:(void)0;
1147 }
1148 var_end_pos = var32;
1149 for(;;) {
1150 var35 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(self, var_end_pos) /* [] on <self:AbstractString>*/;
1151 { /* Inline kernel#Char#ascii (var35) */
1152 var38 = ((struct instance_kernel__Char*)var35)->value; /* autounbox from nullable Object to Char */;
1153 var39 = (unsigned char)var38;
1154 var36 = var39;
1155 goto RET_LABEL37;
1156 RET_LABEL37:(void)0;
1157 }
1158 var40 = 32;
1159 { /* Inline kernel#Int#<= (var36,var40) */
1160 /* Covariant cast for argument 0 (i) <var40:Int> isa OTHER */
1161 /* <var40:Int> isa OTHER */
1162 var43 = 1; /* easy <var40:Int> isa OTHER*/
1163 if (!var43) {
1164 var_class_name46 = type_kernel__Int.name;
1165 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name46);
1166 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
1167 exit(1);
1168 }
1169 var47 = var36 <= var40;
1170 var41 = var47;
1171 goto RET_LABEL42;
1172 RET_LABEL42:(void)0;
1173 }
1174 if (!var41) break;
1175 var48 = 1;
1176 { /* Inline kernel#Int#- (var_end_pos,var48) */
1177 var51 = var_end_pos - var48;
1178 var49 = var51;
1179 goto RET_LABEL50;
1180 RET_LABEL50:(void)0;
1181 }
1182 var_end_pos = var49;
1183 { /* Inline kernel#Int#== (var_end_pos,var_start_pos) */
1184 var54 = var_end_pos == var_start_pos;
1185 var52 = var54;
1186 goto RET_LABEL53;
1187 RET_LABEL53:(void)0;
1188 }
1189 if (var52){
1190 var55 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(self, var_start_pos) /* [] on <self:AbstractString>*/;
1191 var57 = ((struct instance_kernel__Char*)var55)->value; /* autounbox from nullable Object to Char */;
1192 var56 = string__Char__to_s(var57);
1193 var = var56;
1194 goto RET_LABEL;
1195 } else {
1196 }
1197 CONTINUE_label58: (void)0;
1198 }
1199 BREAK_label58: (void)0;
1200 { /* Inline kernel#Int#- (var_end_pos,var_start_pos) */
1201 var61 = var_end_pos - var_start_pos;
1202 var59 = var61;
1203 goto RET_LABEL60;
1204 RET_LABEL60:(void)0;
1205 }
1206 var62 = 1;
1207 { /* Inline kernel#Int#+ (var59,var62) */
1208 var65 = var59 + var62;
1209 var63 = var65;
1210 goto RET_LABEL64;
1211 RET_LABEL64:(void)0;
1212 }
1213 var66 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_string__AbstractString__substring]))(self, var_start_pos, var63) /* substring on <self:AbstractString>*/;
1214 var = var66;
1215 goto RET_LABEL;
1216 RET_LABEL:;
1217 return var;
1218 }
1219 /* method string#AbstractString#trim for (self: Object): String */
1220 val* VIRTUAL_string__AbstractString__trim(val* self) {
1221 val* var /* : String */;
1222 val* var1 /* : String */;
1223 var1 = string__AbstractString__trim(self);
1224 var = var1;
1225 RET_LABEL:;
1226 return var;
1227 }
1228 /* method string#AbstractString#output for (self: AbstractString) */
1229 void string__AbstractString__output(val* self) {
1230 long var /* : Int */;
1231 long var_i /* var i: Int */;
1232 long var1 /* : Int */;
1233 short int var2 /* : Bool */;
1234 short int var4 /* : Bool */;
1235 int cltype;
1236 int idtype;
1237 const char* var_class_name;
1238 short int var5 /* : Bool */;
1239 char* var6 /* : NativeString */;
1240 char var7 /* : Char */;
1241 char var9 /* : Char */;
1242 long var11 /* : Int */;
1243 long var12 /* : Int */;
1244 long var14 /* : Int */;
1245 var = 0;
1246 var_i = var;
1247 for(;;) {
1248 var1 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractString>*/;
1249 { /* Inline kernel#Int#< (var_i,var1) */
1250 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
1251 /* <var1:Int> isa OTHER */
1252 var4 = 1; /* easy <var1:Int> isa OTHER*/
1253 if (!var4) {
1254 var_class_name = type_kernel__Int.name;
1255 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1256 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
1257 exit(1);
1258 }
1259 var5 = var_i < var1;
1260 var2 = var5;
1261 goto RET_LABEL3;
1262 RET_LABEL3:(void)0;
1263 }
1264 if (!var2) break;
1265 var6 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:AbstractString> */
1266 { /* Inline string#NativeString#[] (var6,var_i) */
1267 var9 = var6[var_i];
1268 var7 = var9;
1269 goto RET_LABEL8;
1270 RET_LABEL8:(void)0;
1271 }
1272 { /* Inline kernel#Char#output (var7) */
1273 printf("%c", var7);
1274 RET_LABEL10:(void)0;
1275 }
1276 var11 = 1;
1277 { /* Inline kernel#Int#+ (var_i,var11) */
1278 var14 = var_i + var11;
1279 var12 = var14;
1280 goto RET_LABEL13;
1281 RET_LABEL13:(void)0;
1282 }
1283 var_i = var12;
1284 CONTINUE_label: (void)0;
1285 }
1286 BREAK_label: (void)0;
1287 RET_LABEL:;
1288 }
1289 /* method string#AbstractString#output for (self: Object) */
1290 void VIRTUAL_string__AbstractString__output(val* self) {
1291 string__AbstractString__output(self);
1292 RET_LABEL:;
1293 }
1294 /* method string#AbstractString#to_cmangle for (self: AbstractString): String */
1295 val* string__AbstractString__to_cmangle(val* self) {
1296 val* var /* : String */;
1297 val* var1 /* : Buffer */;
1298 val* var_res /* var res: Buffer */;
1299 short int var2 /* : Bool */;
1300 short int var_underscore /* var underscore: Bool */;
1301 val* var3 /* : Iterator[nullable Object] */;
1302 short int var4 /* : Bool */;
1303 val* var5 /* : nullable Object */;
1304 char var_c /* var c: Char */;
1305 char var6 /* : Char */;
1306 short int var7 /* : Bool */;
1307 short int var8 /* : Bool */;
1308 char var9 /* : Char */;
1309 short int var10 /* : Bool */;
1310 short int var12 /* : Bool */;
1311 int cltype;
1312 int idtype;
1313 const char* var_class_name;
1314 short int var13 /* : Bool */;
1315 short int var_ /* var : Bool */;
1316 char var14 /* : Char */;
1317 short int var15 /* : Bool */;
1318 short int var17 /* : Bool */;
1319 int cltype18;
1320 int idtype19;
1321 const char* var_class_name20;
1322 short int var21 /* : Bool */;
1323 short int var_22 /* var : Bool */;
1324 short int var23 /* : Bool */;
1325 char var24 /* : Char */;
1326 short int var25 /* : Bool */;
1327 short int var27 /* : Bool */;
1328 int cltype28;
1329 int idtype29;
1330 const char* var_class_name30;
1331 short int var31 /* : Bool */;
1332 short int var_32 /* var : Bool */;
1333 char var33 /* : Char */;
1334 short int var34 /* : Bool */;
1335 short int var36 /* : Bool */;
1336 int cltype37;
1337 int idtype38;
1338 const char* var_class_name39;
1339 short int var40 /* : Bool */;
1340 val* var41 /* : nullable Object */;
1341 short int var42 /* : Bool */;
1342 char var43 /* : Char */;
1343 long var44 /* : Int */;
1344 long var46 /* : Int */;
1345 val* var47 /* : String */;
1346 char var48 /* : Char */;
1347 val* var49 /* : nullable Object */;
1348 short int var50 /* : Bool */;
1349 char var51 /* : Char */;
1350 short int var52 /* : Bool */;
1351 short int var54 /* : Bool */;
1352 int cltype55;
1353 int idtype56;
1354 const char* var_class_name57;
1355 short int var58 /* : Bool */;
1356 short int var_59 /* var : Bool */;
1357 char var60 /* : Char */;
1358 short int var61 /* : Bool */;
1359 short int var63 /* : Bool */;
1360 int cltype64;
1361 int idtype65;
1362 const char* var_class_name66;
1363 short int var67 /* : Bool */;
1364 val* var68 /* : nullable Object */;
1365 short int var69 /* : Bool */;
1366 char var70 /* : Char */;
1367 short int var71 /* : Bool */;
1368 short int var73 /* : Bool */;
1369 val* var74 /* : nullable Object */;
1370 short int var75 /* : Bool */;
1371 char var76 /* : Char */;
1372 val* var77 /* : nullable Object */;
1373 long var78 /* : Int */;
1374 long var80 /* : Int */;
1375 val* var81 /* : String */;
1376 char var82 /* : Char */;
1377 val* var83 /* : nullable Object */;
1378 short int var84 /* : Bool */;
1379 val* var85 /* : String */;
1380 var1 = NEW_string__Buffer(&type_string__Buffer);
1381 ((void (*)(val*))(var1->class->vft[COLOR_string__Buffer__init]))(var1) /* init on <var1:Buffer>*/;
1382 CHECK_NEW_string__Buffer(var1);
1383 var_res = var1;
1384 var2 = 0;
1385 var_underscore = var2;
1386 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__iterator]))(self) /* iterator on <self:AbstractString>*/;
1387 for(;;) {
1388 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
1389 if(!var4) break;
1390 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
1391 var6 = ((struct instance_kernel__Char*)var5)->value; /* autounbox from nullable Object to Char */;
1392 var_c = var6;
1393 var9 = 'a';
1394 { /* Inline kernel#Char#>= (var_c,var9) */
1395 /* Covariant cast for argument 0 (i) <var9:Char> isa OTHER */
1396 /* <var9:Char> isa OTHER */
1397 var12 = 1; /* easy <var9:Char> isa OTHER*/
1398 if (!var12) {
1399 var_class_name = type_kernel__Char.name;
1400 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1401 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 438);
1402 exit(1);
1403 }
1404 var13 = var_c >= var9;
1405 var10 = var13;
1406 goto RET_LABEL11;
1407 RET_LABEL11:(void)0;
1408 }
1409 var_ = var10;
1410 if (var10){
1411 var14 = 'z';
1412 { /* Inline kernel#Char#<= (var_c,var14) */
1413 /* Covariant cast for argument 0 (i) <var14:Char> isa OTHER */
1414 /* <var14:Char> isa OTHER */
1415 var17 = 1; /* easy <var14:Char> isa OTHER*/
1416 if (!var17) {
1417 var_class_name20 = type_kernel__Char.name;
1418 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name20);
1419 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 436);
1420 exit(1);
1421 }
1422 var21 = var_c <= var14;
1423 var15 = var21;
1424 goto RET_LABEL16;
1425 RET_LABEL16:(void)0;
1426 }
1427 var8 = var15;
1428 } else {
1429 var8 = var_;
1430 }
1431 var_22 = var8;
1432 if (var8){
1433 var7 = var_22;
1434 } else {
1435 var24 = 'A';
1436 { /* Inline kernel#Char#>= (var_c,var24) */
1437 /* Covariant cast for argument 0 (i) <var24:Char> isa OTHER */
1438 /* <var24:Char> isa OTHER */
1439 var27 = 1; /* easy <var24:Char> isa OTHER*/
1440 if (!var27) {
1441 var_class_name30 = type_kernel__Char.name;
1442 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name30);
1443 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 438);
1444 exit(1);
1445 }
1446 var31 = var_c >= var24;
1447 var25 = var31;
1448 goto RET_LABEL26;
1449 RET_LABEL26:(void)0;
1450 }
1451 var_32 = var25;
1452 if (var25){
1453 var33 = 'Z';
1454 { /* Inline kernel#Char#<= (var_c,var33) */
1455 /* Covariant cast for argument 0 (i) <var33:Char> isa OTHER */
1456 /* <var33:Char> isa OTHER */
1457 var36 = 1; /* easy <var33:Char> isa OTHER*/
1458 if (!var36) {
1459 var_class_name39 = type_kernel__Char.name;
1460 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name39);
1461 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 436);
1462 exit(1);
1463 }
1464 var40 = var_c <= var33;
1465 var34 = var40;
1466 goto RET_LABEL35;
1467 RET_LABEL35:(void)0;
1468 }
1469 var23 = var34;
1470 } else {
1471 var23 = var_32;
1472 }
1473 var7 = var23;
1474 }
1475 if (var7){
1476 var41 = BOX_kernel__Char(var_c); /* autobox from Char to nullable Object */
1477 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var41) /* add on <var_res:Buffer>*/;
1478 var42 = 0;
1479 var_underscore = var42;
1480 goto CONTINUE_label;
1481 } else {
1482 }
1483 if (var_underscore){
1484 var43 = '_';
1485 { /* Inline kernel#Char#ascii (var43) */
1486 var46 = (unsigned char)var43;
1487 var44 = var46;
1488 goto RET_LABEL45;
1489 RET_LABEL45:(void)0;
1490 }
1491 var47 = string__Int__to_s(var44);
1492 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__Sequence__append]))(var_res, var47) /* append on <var_res:Buffer>*/;
1493 var48 = 'd';
1494 var49 = BOX_kernel__Char(var48); /* autobox from Char to nullable Object */
1495 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var49) /* add on <var_res:Buffer>*/;
1496 } else {
1497 }
1498 var51 = '0';
1499 { /* Inline kernel#Char#>= (var_c,var51) */
1500 /* Covariant cast for argument 0 (i) <var51:Char> isa OTHER */
1501 /* <var51:Char> isa OTHER */
1502 var54 = 1; /* easy <var51:Char> isa OTHER*/
1503 if (!var54) {
1504 var_class_name57 = type_kernel__Char.name;
1505 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name57);
1506 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 438);
1507 exit(1);
1508 }
1509 var58 = var_c >= var51;
1510 var52 = var58;
1511 goto RET_LABEL53;
1512 RET_LABEL53:(void)0;
1513 }
1514 var_59 = var52;
1515 if (var52){
1516 var60 = '9';
1517 { /* Inline kernel#Char#<= (var_c,var60) */
1518 /* Covariant cast for argument 0 (i) <var60:Char> isa OTHER */
1519 /* <var60:Char> isa OTHER */
1520 var63 = 1; /* easy <var60:Char> isa OTHER*/
1521 if (!var63) {
1522 var_class_name66 = type_kernel__Char.name;
1523 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name66);
1524 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 436);
1525 exit(1);
1526 }
1527 var67 = var_c <= var60;
1528 var61 = var67;
1529 goto RET_LABEL62;
1530 RET_LABEL62:(void)0;
1531 }
1532 var50 = var61;
1533 } else {
1534 var50 = var_59;
1535 }
1536 if (var50){
1537 var68 = BOX_kernel__Char(var_c); /* autobox from Char to nullable Object */
1538 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var68) /* add on <var_res:Buffer>*/;
1539 var69 = 0;
1540 var_underscore = var69;
1541 } else {
1542 var70 = '_';
1543 { /* Inline kernel#Char#== (var_c,var70) */
1544 var73 = var_c == var70;
1545 var71 = var73;
1546 goto RET_LABEL72;
1547 RET_LABEL72:(void)0;
1548 }
1549 if (var71){
1550 var74 = BOX_kernel__Char(var_c); /* autobox from Char to nullable Object */
1551 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var74) /* add on <var_res:Buffer>*/;
1552 var75 = 1;
1553 var_underscore = var75;
1554 } else {
1555 var76 = '_';
1556 var77 = BOX_kernel__Char(var76); /* autobox from Char to nullable Object */
1557 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var77) /* add on <var_res:Buffer>*/;
1558 { /* Inline kernel#Char#ascii (var_c) */
1559 var80 = (unsigned char)var_c;
1560 var78 = var80;
1561 goto RET_LABEL79;
1562 RET_LABEL79:(void)0;
1563 }
1564 var81 = string__Int__to_s(var78);
1565 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__Sequence__append]))(var_res, var81) /* append on <var_res:Buffer>*/;
1566 var82 = 'd';
1567 var83 = BOX_kernel__Char(var82); /* autobox from Char to nullable Object */
1568 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var83) /* add on <var_res:Buffer>*/;
1569 var84 = 0;
1570 var_underscore = var84;
1571 }
1572 }
1573 CONTINUE_label: (void)0;
1574 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
1575 }
1576 BREAK_label: (void)0;
1577 var85 = ((val* (*)(val*))(var_res->class->vft[COLOR_string__Object__to_s]))(var_res) /* to_s on <var_res:Buffer>*/;
1578 var = var85;
1579 goto RET_LABEL;
1580 RET_LABEL:;
1581 return var;
1582 }
1583 /* method string#AbstractString#to_cmangle for (self: Object): String */
1584 val* VIRTUAL_string__AbstractString__to_cmangle(val* self) {
1585 val* var /* : String */;
1586 val* var1 /* : String */;
1587 var1 = string__AbstractString__to_cmangle(self);
1588 var = var1;
1589 RET_LABEL:;
1590 return var;
1591 }
1592 /* method string#AbstractString#escape_to_c for (self: AbstractString): String */
1593 val* string__AbstractString__escape_to_c(val* self) {
1594 val* var /* : String */;
1595 val* var1 /* : Buffer */;
1596 val* var_b /* var b: Buffer */;
1597 val* var2 /* : Iterator[nullable Object] */;
1598 short int var3 /* : Bool */;
1599 val* var4 /* : nullable Object */;
1600 char var_c /* var c: Char */;
1601 char var5 /* : Char */;
1602 char var6 /* : Char */;
1603 short int var7 /* : Bool */;
1604 short int var9 /* : Bool */;
1605 static val* varonce;
1606 val* var10 /* : String */;
1607 char* var11 /* : NativeString */;
1608 long var12 /* : Int */;
1609 val* var13 /* : String */;
1610 char var14 /* : Char */;
1611 short int var15 /* : Bool */;
1612 short int var17 /* : Bool */;
1613 static val* varonce18;
1614 val* var19 /* : String */;
1615 char* var20 /* : NativeString */;
1616 long var21 /* : Int */;
1617 val* var22 /* : String */;
1618 char var23 /* : Char */;
1619 short int var24 /* : Bool */;
1620 short int var26 /* : Bool */;
1621 static val* varonce27;
1622 val* var28 /* : String */;
1623 char* var29 /* : NativeString */;
1624 long var30 /* : Int */;
1625 val* var31 /* : String */;
1626 char var32 /* : Char */;
1627 short int var33 /* : Bool */;
1628 short int var35 /* : Bool */;
1629 static val* varonce36;
1630 val* var37 /* : String */;
1631 char* var38 /* : NativeString */;
1632 long var39 /* : Int */;
1633 val* var40 /* : String */;
1634 char var41 /* : Char */;
1635 short int var42 /* : Bool */;
1636 short int var44 /* : Bool */;
1637 static val* varonce45;
1638 val* var46 /* : String */;
1639 char* var47 /* : NativeString */;
1640 long var48 /* : Int */;
1641 val* var49 /* : String */;
1642 long var50 /* : Int */;
1643 long var52 /* : Int */;
1644 long var53 /* : Int */;
1645 short int var54 /* : Bool */;
1646 short int var56 /* : Bool */;
1647 int cltype;
1648 int idtype;
1649 const char* var_class_name;
1650 short int var57 /* : Bool */;
1651 static val* varonce58;
1652 val* var59 /* : String */;
1653 char* var60 /* : NativeString */;
1654 long var61 /* : Int */;
1655 val* var62 /* : String */;
1656 long var63 /* : Int */;
1657 long var65 /* : Int */;
1658 long var66 /* : Int */;
1659 short int var67 /* : Bool */;
1660 val* var68 /* : String */;
1661 val* var69 /* : Array[Object] */;
1662 long var70 /* : Int */;
1663 val* var71 /* : NativeArray[Object] */;
1664 val* var72 /* : String */;
1665 val* var73 /* : nullable Object */;
1666 val* var74 /* : String */;
1667 var1 = NEW_string__Buffer(&type_string__Buffer);
1668 ((void (*)(val*))(var1->class->vft[COLOR_string__Buffer__init]))(var1) /* init on <var1:Buffer>*/;
1669 CHECK_NEW_string__Buffer(var1);
1670 var_b = var1;
1671 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__iterator]))(self) /* iterator on <self:AbstractString>*/;
1672 for(;;) {
1673 var3 = ((short int (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var2) /* is_ok on <var2:Iterator[nullable Object]>*/;
1674 if(!var3) break;
1675 var4 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__item]))(var2) /* item on <var2:Iterator[nullable Object]>*/;
1676 var5 = ((struct instance_kernel__Char*)var4)->value; /* autounbox from nullable Object to Char */;
1677 var_c = var5;
1678 var6 = '\n';
1679 { /* Inline kernel#Char#== (var_c,var6) */
1680 var9 = var_c == var6;
1681 var7 = var9;
1682 goto RET_LABEL8;
1683 RET_LABEL8:(void)0;
1684 }
1685 if (var7){
1686 if (varonce) {
1687 var10 = varonce;
1688 } else {
1689 var11 = "\\n";
1690 var12 = 2;
1691 var13 = string__NativeString__to_s_with_length(var11, var12);
1692 var10 = var13;
1693 varonce = var10;
1694 }
1695 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var10) /* append on <var_b:Buffer>*/;
1696 } else {
1697 var14 = '\0';
1698 { /* Inline kernel#Char#== (var_c,var14) */
1699 var17 = var_c == var14;
1700 var15 = var17;
1701 goto RET_LABEL16;
1702 RET_LABEL16:(void)0;
1703 }
1704 if (var15){
1705 if (varonce18) {
1706 var19 = varonce18;
1707 } else {
1708 var20 = "\\0";
1709 var21 = 2;
1710 var22 = string__NativeString__to_s_with_length(var20, var21);
1711 var19 = var22;
1712 varonce18 = var19;
1713 }
1714 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var19) /* append on <var_b:Buffer>*/;
1715 } else {
1716 var23 = '\"';
1717 { /* Inline kernel#Char#== (var_c,var23) */
1718 var26 = var_c == var23;
1719 var24 = var26;
1720 goto RET_LABEL25;
1721 RET_LABEL25:(void)0;
1722 }
1723 if (var24){
1724 if (varonce27) {
1725 var28 = varonce27;
1726 } else {
1727 var29 = "\\\"";
1728 var30 = 2;
1729 var31 = string__NativeString__to_s_with_length(var29, var30);
1730 var28 = var31;
1731 varonce27 = var28;
1732 }
1733 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var28) /* append on <var_b:Buffer>*/;
1734 } else {
1735 var32 = '\'';
1736 { /* Inline kernel#Char#== (var_c,var32) */
1737 var35 = var_c == var32;
1738 var33 = var35;
1739 goto RET_LABEL34;
1740 RET_LABEL34:(void)0;
1741 }
1742 if (var33){
1743 if (varonce36) {
1744 var37 = varonce36;
1745 } else {
1746 var38 = "\\\'";
1747 var39 = 2;
1748 var40 = string__NativeString__to_s_with_length(var38, var39);
1749 var37 = var40;
1750 varonce36 = var37;
1751 }
1752 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var37) /* append on <var_b:Buffer>*/;
1753 } else {
1754 var41 = '\\';
1755 { /* Inline kernel#Char#== (var_c,var41) */
1756 var44 = var_c == var41;
1757 var42 = var44;
1758 goto RET_LABEL43;
1759 RET_LABEL43:(void)0;
1760 }
1761 if (var42){
1762 if (varonce45) {
1763 var46 = varonce45;
1764 } else {
1765 var47 = "\\\\";
1766 var48 = 2;
1767 var49 = string__NativeString__to_s_with_length(var47, var48);
1768 var46 = var49;
1769 varonce45 = var46;
1770 }
1771 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var46) /* append on <var_b:Buffer>*/;
1772 } else {
1773 { /* Inline kernel#Char#ascii (var_c) */
1774 var52 = (unsigned char)var_c;
1775 var50 = var52;
1776 goto RET_LABEL51;
1777 RET_LABEL51:(void)0;
1778 }
1779 var53 = 32;
1780 { /* Inline kernel#Int#< (var50,var53) */
1781 /* Covariant cast for argument 0 (i) <var53:Int> isa OTHER */
1782 /* <var53:Int> isa OTHER */
1783 var56 = 1; /* easy <var53:Int> isa OTHER*/
1784 if (!var56) {
1785 var_class_name = type_kernel__Int.name;
1786 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1787 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
1788 exit(1);
1789 }
1790 var57 = var50 < var53;
1791 var54 = var57;
1792 goto RET_LABEL55;
1793 RET_LABEL55:(void)0;
1794 }
1795 if (var54){
1796 if (varonce58) {
1797 var59 = varonce58;
1798 } else {
1799 var60 = "\\";
1800 var61 = 1;
1801 var62 = string__NativeString__to_s_with_length(var60, var61);
1802 var59 = var62;
1803 varonce58 = var59;
1804 }
1805 { /* Inline kernel#Char#ascii (var_c) */
1806 var65 = (unsigned char)var_c;
1807 var63 = var65;
1808 goto RET_LABEL64;
1809 RET_LABEL64:(void)0;
1810 }
1811 var66 = 8;
1812 var67 = 0;
1813 var68 = string__Int__to_base(var63, var66, var67);
1814 var69 = NEW_array__Array(&type_array__Arraykernel__Object);
1815 { /* var69 = array_instance Array[Object] */
1816 var70 = 2;
1817 var71 = NEW_array__NativeArray(var70, &type_array__NativeArraykernel__Object);
1818 ((struct instance_array__NativeArray*)var71)->values[0] = (val*) var59;
1819 ((struct instance_array__NativeArray*)var71)->values[1] = (val*) var68;
1820 ((void (*)(val*, val*, long))(var69->class->vft[COLOR_array__Array__with_native]))(var69, var71, var70) /* with_native on <var69:Array[Object]>*/;
1821 CHECK_NEW_array__Array(var69);
1822 }
1823 var72 = ((val* (*)(val*))(var69->class->vft[COLOR_string__Object__to_s]))(var69) /* to_s on <var69:Array[Object]>*/;
1824 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var72) /* append on <var_b:Buffer>*/;
1825 } else {
1826 var73 = BOX_kernel__Char(var_c); /* autobox from Char to nullable Object */
1827 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_b, var73) /* add on <var_b:Buffer>*/;
1828 }
1829 }
1830 }
1831 }
1832 }
1833 }
1834 CONTINUE_label: (void)0;
1835 ((void (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__next]))(var2) /* next on <var2:Iterator[nullable Object]>*/;
1836 }
1837 BREAK_label: (void)0;
1838 var74 = ((val* (*)(val*))(var_b->class->vft[COLOR_string__Object__to_s]))(var_b) /* to_s on <var_b:Buffer>*/;
1839 var = var74;
1840 goto RET_LABEL;
1841 RET_LABEL:;
1842 return var;
1843 }
1844 /* method string#AbstractString#escape_to_c for (self: Object): String */
1845 val* VIRTUAL_string__AbstractString__escape_to_c(val* self) {
1846 val* var /* : String */;
1847 val* var1 /* : String */;
1848 var1 = string__AbstractString__escape_to_c(self);
1849 var = var1;
1850 RET_LABEL:;
1851 return var;
1852 }
1853 /* method string#AbstractString#escape_more_to_c for (self: AbstractString, String): String */
1854 val* string__AbstractString__escape_more_to_c(val* self, val* p0) {
1855 val* var /* : String */;
1856 val* var_chars /* var chars: String */;
1857 val* var1 /* : Buffer */;
1858 val* var_b /* var b: Buffer */;
1859 val* var2 /* : String */;
1860 val* var3 /* : Iterator[nullable Object] */;
1861 short int var4 /* : Bool */;
1862 val* var5 /* : nullable Object */;
1863 char var_c /* var c: Char */;
1864 char var6 /* : Char */;
1865 short int var7 /* : Bool */;
1866 val* var8 /* : nullable Object */;
1867 char var9 /* : Char */;
1868 val* var10 /* : nullable Object */;
1869 val* var11 /* : nullable Object */;
1870 val* var12 /* : String */;
1871 var_chars = p0;
1872 var1 = NEW_string__Buffer(&type_string__Buffer);
1873 ((void (*)(val*))(var1->class->vft[COLOR_string__Buffer__init]))(var1) /* init on <var1:Buffer>*/;
1874 CHECK_NEW_string__Buffer(var1);
1875 var_b = var1;
1876 var2 = ((val* (*)(val*))(self->class->vft[COLOR_string__AbstractString__escape_to_c]))(self) /* escape_to_c on <self:AbstractString>*/;
1877 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on <var2:String>*/;
1878 for(;;) {
1879 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
1880 if(!var4) break;
1881 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
1882 var6 = ((struct instance_kernel__Char*)var5)->value; /* autounbox from nullable Object to Char */;
1883 var_c = var6;
1884 var8 = BOX_kernel__Char(var_c); /* autobox from Char to nullable Object */
1885 var7 = ((short int (*)(val*, val*))(var_chars->class->vft[COLOR_abstract_collection__Collection__has]))(var_chars, var8) /* has on <var_chars:String>*/;
1886 if (var7){
1887 var9 = '\\';
1888 var10 = BOX_kernel__Char(var9); /* autobox from Char to nullable Object */
1889 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_b, var10) /* add on <var_b:Buffer>*/;
1890 } else {
1891 }
1892 var11 = BOX_kernel__Char(var_c); /* autobox from Char to nullable Object */
1893 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_b, var11) /* add on <var_b:Buffer>*/;
1894 CONTINUE_label: (void)0;
1895 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
1896 }
1897 BREAK_label: (void)0;
1898 var12 = ((val* (*)(val*))(var_b->class->vft[COLOR_string__Object__to_s]))(var_b) /* to_s on <var_b:Buffer>*/;
1899 var = var12;
1900 goto RET_LABEL;
1901 RET_LABEL:;
1902 return var;
1903 }
1904 /* method string#AbstractString#escape_more_to_c for (self: Object, String): String */
1905 val* VIRTUAL_string__AbstractString__escape_more_to_c(val* self, val* p0) {
1906 val* var /* : String */;
1907 val* var1 /* : String */;
1908 var1 = string__AbstractString__escape_more_to_c(self, p0);
1909 var = var1;
1910 RET_LABEL:;
1911 return var;
1912 }
1913 /* method string#AbstractString#escape_to_nit for (self: AbstractString): String */
1914 val* string__AbstractString__escape_to_nit(val* self) {
1915 val* var /* : String */;
1916 static val* varonce;
1917 val* var1 /* : String */;
1918 char* var2 /* : NativeString */;
1919 long var3 /* : Int */;
1920 val* var4 /* : String */;
1921 val* var5 /* : String */;
1922 if (varonce) {
1923 var1 = varonce;
1924 } else {
1925 var2 = "{}";
1926 var3 = 2;
1927 var4 = string__NativeString__to_s_with_length(var2, var3);
1928 var1 = var4;
1929 varonce = var1;
1930 }
1931 var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_string__AbstractString__escape_more_to_c]))(self, var1) /* escape_more_to_c on <self:AbstractString>*/;
1932 var = var5;
1933 goto RET_LABEL;
1934 RET_LABEL:;
1935 return var;
1936 }
1937 /* method string#AbstractString#escape_to_nit for (self: Object): String */
1938 val* VIRTUAL_string__AbstractString__escape_to_nit(val* self) {
1939 val* var /* : String */;
1940 val* var1 /* : String */;
1941 var1 = string__AbstractString__escape_to_nit(self);
1942 var = var1;
1943 RET_LABEL:;
1944 return var;
1945 }
1946 /* method string#AbstractString#unescape_nit for (self: AbstractString): String */
1947 val* string__AbstractString__unescape_nit(val* self) {
1948 val* var /* : String */;
1949 val* var1 /* : Buffer */;
1950 long var2 /* : Int */;
1951 val* var_res /* var res: Buffer */;
1952 short int var3 /* : Bool */;
1953 short int var_was_slash /* var was_slash: Bool */;
1954 val* var4 /* : Iterator[nullable Object] */;
1955 short int var5 /* : Bool */;
1956 val* var6 /* : nullable Object */;
1957 char var_c /* var c: Char */;
1958 char var7 /* : Char */;
1959 short int var8 /* : Bool */;
1960 char var9 /* : Char */;
1961 short int var10 /* : Bool */;
1962 short int var12 /* : Bool */;
1963 short int var13 /* : Bool */;
1964 val* var14 /* : nullable Object */;
1965 short int var15 /* : Bool */;
1966 char var16 /* : Char */;
1967 short int var17 /* : Bool */;
1968 short int var19 /* : Bool */;
1969 char var20 /* : Char */;
1970 val* var21 /* : nullable Object */;
1971 char var22 /* : Char */;
1972 short int var23 /* : Bool */;
1973 short int var25 /* : Bool */;
1974 char var26 /* : Char */;
1975 val* var27 /* : nullable Object */;
1976 char var28 /* : Char */;
1977 short int var29 /* : Bool */;
1978 short int var31 /* : Bool */;
1979 char var32 /* : Char */;
1980 val* var33 /* : nullable Object */;
1981 char var34 /* : Char */;
1982 short int var35 /* : Bool */;
1983 short int var37 /* : Bool */;
1984 char var38 /* : Char */;
1985 val* var39 /* : nullable Object */;
1986 val* var40 /* : nullable Object */;
1987 val* var41 /* : String */;
1988 var1 = NEW_string__Buffer(&type_string__Buffer);
1989 var2 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractString>*/;
1990 ((void (*)(val*, long))(var1->class->vft[COLOR_string__Buffer__with_capacity]))(var1, var2) /* with_capacity on <var1:Buffer>*/;
1991 CHECK_NEW_string__Buffer(var1);
1992 var_res = var1;
1993 var3 = 0;
1994 var_was_slash = var3;
1995 var4 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__iterator]))(self) /* iterator on <self:AbstractString>*/;
1996 for(;;) {
1997 var5 = ((short int (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var4) /* is_ok on <var4:Iterator[nullable Object]>*/;
1998 if(!var5) break;
1999 var6 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__item]))(var4) /* item on <var4:Iterator[nullable Object]>*/;
2000 var7 = ((struct instance_kernel__Char*)var6)->value; /* autounbox from nullable Object to Char */;
2001 var_c = var7;
2002 var8 = !var_was_slash;
2003 if (var8){
2004 var9 = '\\';
2005 { /* Inline kernel#Char#== (var_c,var9) */
2006 var12 = var_c == var9;
2007 var10 = var12;
2008 goto RET_LABEL11;
2009 RET_LABEL11:(void)0;
2010 }
2011 if (var10){
2012 var13 = 1;
2013 var_was_slash = var13;
2014 } else {
2015 var14 = BOX_kernel__Char(var_c); /* autobox from Char to nullable Object */
2016 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var14) /* add on <var_res:Buffer>*/;
2017 }
2018 goto CONTINUE_label;
2019 } else {
2020 }
2021 var15 = 0;
2022 var_was_slash = var15;
2023 var16 = 'n';
2024 { /* Inline kernel#Char#== (var_c,var16) */
2025 var19 = var_c == var16;
2026 var17 = var19;
2027 goto RET_LABEL18;
2028 RET_LABEL18:(void)0;
2029 }
2030 if (var17){
2031 var20 = '\n';
2032 var21 = BOX_kernel__Char(var20); /* autobox from Char to nullable Object */
2033 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var21) /* add on <var_res:Buffer>*/;
2034 } else {
2035 var22 = 'r';
2036 { /* Inline kernel#Char#== (var_c,var22) */
2037 var25 = var_c == var22;
2038 var23 = var25;
2039 goto RET_LABEL24;
2040 RET_LABEL24:(void)0;
2041 }
2042 if (var23){
2043 var26 = '\15';
2044 var27 = BOX_kernel__Char(var26); /* autobox from Char to nullable Object */
2045 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var27) /* add on <var_res:Buffer>*/;
2046 } else {
2047 var28 = 't';
2048 { /* Inline kernel#Char#== (var_c,var28) */
2049 var31 = var_c == var28;
2050 var29 = var31;
2051 goto RET_LABEL30;
2052 RET_LABEL30:(void)0;
2053 }
2054 if (var29){
2055 var32 = '\11';
2056 var33 = BOX_kernel__Char(var32); /* autobox from Char to nullable Object */
2057 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var33) /* add on <var_res:Buffer>*/;
2058 } else {
2059 var34 = '0';
2060 { /* Inline kernel#Char#== (var_c,var34) */
2061 var37 = var_c == var34;
2062 var35 = var37;
2063 goto RET_LABEL36;
2064 RET_LABEL36:(void)0;
2065 }
2066 if (var35){
2067 var38 = '\0';
2068 var39 = BOX_kernel__Char(var38); /* autobox from Char to nullable Object */
2069 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var39) /* add on <var_res:Buffer>*/;
2070 } else {
2071 var40 = BOX_kernel__Char(var_c); /* autobox from Char to nullable Object */
2072 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var40) /* add on <var_res:Buffer>*/;
2073 }
2074 }
2075 }
2076 }
2077 CONTINUE_label: (void)0;
2078 ((void (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__next]))(var4) /* next on <var4:Iterator[nullable Object]>*/;
2079 }
2080 BREAK_label: (void)0;
2081 var41 = ((val* (*)(val*))(var_res->class->vft[COLOR_string__Object__to_s]))(var_res) /* to_s on <var_res:Buffer>*/;
2082 var = var41;
2083 goto RET_LABEL;
2084 RET_LABEL:;
2085 return var;
2086 }
2087 /* method string#AbstractString#unescape_nit for (self: Object): String */
2088 val* VIRTUAL_string__AbstractString__unescape_nit(val* self) {
2089 val* var /* : String */;
2090 val* var1 /* : String */;
2091 var1 = string__AbstractString__unescape_nit(self);
2092 var = var1;
2093 RET_LABEL:;
2094 return var;
2095 }
2096 /* method string#AbstractString#init for (self: AbstractString) */
2097 void string__AbstractString__init(val* self) {
2098 ((void (*)(val*))(self->class->vft[COLOR_array__AbstractArrayRead__init]))(self) /* init on <self:AbstractString>*/;
2099 RET_LABEL:;
2100 }
2101 /* method string#AbstractString#init for (self: Object) */
2102 void VIRTUAL_string__AbstractString__init(val* self) {
2103 string__AbstractString__init(self);
2104 RET_LABEL:;
2105 }
2106 /* method string#String#index_from for (self: String): Int */
2107 long string__String__index_from(val* self) {
2108 long var /* : Int */;
2109 long var1 /* : Int */;
2110 var1 = self->attrs[COLOR_string__String___index_from].l; /* _index_from on <self:String> */
2111 var = var1;
2112 RET_LABEL:;
2113 return var;
2114 }
2115 /* method string#String#index_from for (self: Object): Int */
2116 long VIRTUAL_string__String__index_from(val* self) {
2117 long var /* : Int */;
2118 long var1 /* : Int */;
2119 var1 = string__String__index_from(self);
2120 var = var1;
2121 RET_LABEL:;
2122 return var;
2123 }
2124 /* method string#String#index_to for (self: String): Int */
2125 long string__String__index_to(val* self) {
2126 long var /* : Int */;
2127 long var1 /* : Int */;
2128 var1 = self->attrs[COLOR_string__String___index_to].l; /* _index_to on <self:String> */
2129 var = var1;
2130 RET_LABEL:;
2131 return var;
2132 }
2133 /* method string#String#index_to for (self: Object): Int */
2134 long VIRTUAL_string__String__index_to(val* self) {
2135 long var /* : Int */;
2136 long var1 /* : Int */;
2137 var1 = string__String__index_to(self);
2138 var = var1;
2139 RET_LABEL:;
2140 return var;
2141 }
2142 /* method string#String#[] for (self: String, Int): Char */
2143 char string__String___91d_93d(val* self, long p0) {
2144 char var /* : Char */;
2145 long var_index /* var index: Int */;
2146 long var1 /* : Int */;
2147 short int var2 /* : Bool */;
2148 short int var4 /* : Bool */;
2149 int cltype;
2150 int idtype;
2151 const char* var_class_name;
2152 short int var5 /* : Bool */;
2153 long var6 /* : Int */;
2154 long var7 /* : Int */;
2155 long var9 /* : Int */;
2156 long var10 /* : Int */;
2157 short int var11 /* : Bool */;
2158 short int var13 /* : Bool */;
2159 int cltype14;
2160 int idtype15;
2161 const char* var_class_name16;
2162 short int var17 /* : Bool */;
2163 char* var18 /* : NativeString */;
2164 long var19 /* : Int */;
2165 long var20 /* : Int */;
2166 long var22 /* : Int */;
2167 char var23 /* : Char */;
2168 char var25 /* : Char */;
2169 var_index = p0;
2170 var1 = 0;
2171 { /* Inline kernel#Int#>= (var_index,var1) */
2172 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
2173 /* <var1:Int> isa OTHER */
2174 var4 = 1; /* easy <var1:Int> isa OTHER*/
2175 if (!var4) {
2176 var_class_name = type_kernel__Int.name;
2177 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2178 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
2179 exit(1);
2180 }
2181 var5 = var_index >= var1;
2182 var2 = var5;
2183 goto RET_LABEL3;
2184 RET_LABEL3:(void)0;
2185 }
2186 if (!var2) {
2187 fprintf(stderr, "Runtime error: %s", "Assert failed");
2188 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 379);
2189 exit(1);
2190 }
2191 var6 = self->attrs[COLOR_string__String___index_from].l; /* _index_from on <self:String> */
2192 { /* Inline kernel#Int#+ (var_index,var6) */
2193 var9 = var_index + var6;
2194 var7 = var9;
2195 goto RET_LABEL8;
2196 RET_LABEL8:(void)0;
2197 }
2198 var10 = self->attrs[COLOR_string__String___index_to].l; /* _index_to on <self:String> */
2199 { /* Inline kernel#Int#<= (var7,var10) */
2200 /* Covariant cast for argument 0 (i) <var10:Int> isa OTHER */
2201 /* <var10:Int> isa OTHER */
2202 var13 = 1; /* easy <var10:Int> isa OTHER*/
2203 if (!var13) {
2204 var_class_name16 = type_kernel__Int.name;
2205 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name16);
2206 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
2207 exit(1);
2208 }
2209 var17 = var7 <= var10;
2210 var11 = var17;
2211 goto RET_LABEL12;
2212 RET_LABEL12:(void)0;
2213 }
2214 if (!var11) {
2215 fprintf(stderr, "Runtime error: %s", "Assert failed");
2216 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 382);
2217 exit(1);
2218 }
2219 var18 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
2220 var19 = self->attrs[COLOR_string__String___index_from].l; /* _index_from on <self:String> */
2221 { /* Inline kernel#Int#+ (var_index,var19) */
2222 var22 = var_index + var19;
2223 var20 = var22;
2224 goto RET_LABEL21;
2225 RET_LABEL21:(void)0;
2226 }
2227 { /* Inline string#NativeString#[] (var18,var20) */
2228 var25 = var18[var20];
2229 var23 = var25;
2230 goto RET_LABEL24;
2231 RET_LABEL24:(void)0;
2232 }
2233 var = var23;
2234 goto RET_LABEL;
2235 RET_LABEL:;
2236 return var;
2237 }
2238 /* method string#String#[] for (self: Object, Int): nullable Object */
2239 val* VIRTUAL_string__String___91d_93d(val* self, long p0) {
2240 val* var /* : nullable Object */;
2241 char var1 /* : Char */;
2242 val* var2 /* : nullable Object */;
2243 var1 = string__String___91d_93d(self, p0);
2244 var2 = BOX_kernel__Char(var1); /* autobox from Char to nullable Object */
2245 var = var2;
2246 RET_LABEL:;
2247 return var;
2248 }
2249 /* method string#String#substring for (self: String, Int, Int): String */
2250 val* string__String__substring(val* self, long p0, long p1) {
2251 val* var /* : String */;
2252 long var_from /* var from: Int */;
2253 long var_count /* var count: Int */;
2254 long var1 /* : Int */;
2255 short int var2 /* : Bool */;
2256 short int var4 /* : Bool */;
2257 int cltype;
2258 int idtype;
2259 const char* var_class_name;
2260 short int var5 /* : Bool */;
2261 long var6 /* : Int */;
2262 short int var7 /* : Bool */;
2263 short int var9 /* : Bool */;
2264 int cltype10;
2265 int idtype11;
2266 const char* var_class_name12;
2267 short int var13 /* : Bool */;
2268 long var14 /* : Int */;
2269 long var16 /* : Int */;
2270 long var17 /* : Int */;
2271 short int var18 /* : Bool */;
2272 short int var20 /* : Bool */;
2273 int cltype21;
2274 int idtype22;
2275 const char* var_class_name23;
2276 short int var24 /* : Bool */;
2277 long var25 /* : Int */;
2278 long var26 /* : Int */;
2279 long var27 /* : Int */;
2280 long var28 /* : Int */;
2281 long var30 /* : Int */;
2282 long var_realFrom /* var realFrom: Int */;
2283 long var31 /* : Int */;
2284 long var33 /* : Int */;
2285 long var34 /* : Int */;
2286 short int var35 /* : Bool */;
2287 short int var37 /* : Bool */;
2288 int cltype38;
2289 int idtype39;
2290 const char* var_class_name40;
2291 short int var41 /* : Bool */;
2292 val* var42 /* : String */;
2293 long var43 /* : Int */;
2294 char* var44 /* : NativeString */;
2295 long var45 /* : Int */;
2296 short int var46 /* : Bool */;
2297 short int var48 /* : Bool */;
2298 static val* varonce;
2299 val* var49 /* : String */;
2300 char* var50 /* : NativeString */;
2301 long var51 /* : Int */;
2302 val* var52 /* : String */;
2303 val* var53 /* : String */;
2304 long var54 /* : Int */;
2305 long var56 /* : Int */;
2306 long var57 /* : Int */;
2307 long var58 /* : Int */;
2308 long var60 /* : Int */;
2309 char* var61 /* : NativeString */;
2310 var_from = p0;
2311 var_count = p1;
2312 var1 = 0;
2313 { /* Inline kernel#Int#>= (var_count,var1) */
2314 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
2315 /* <var1:Int> isa OTHER */
2316 var4 = 1; /* easy <var1:Int> isa OTHER*/
2317 if (!var4) {
2318 var_class_name = type_kernel__Int.name;
2319 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2320 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
2321 exit(1);
2322 }
2323 var5 = var_count >= var1;
2324 var2 = var5;
2325 goto RET_LABEL3;
2326 RET_LABEL3:(void)0;
2327 }
2328 if (!var2) {
2329 fprintf(stderr, "Runtime error: %s", "Assert failed");
2330 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 388);
2331 exit(1);
2332 }
2333 var6 = 0;
2334 { /* Inline kernel#Int#< (var_from,var6) */
2335 /* Covariant cast for argument 0 (i) <var6:Int> isa OTHER */
2336 /* <var6:Int> isa OTHER */
2337 var9 = 1; /* easy <var6:Int> isa OTHER*/
2338 if (!var9) {
2339 var_class_name12 = type_kernel__Int.name;
2340 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name12);
2341 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
2342 exit(1);
2343 }
2344 var13 = var_from < var6;
2345 var7 = var13;
2346 goto RET_LABEL8;
2347 RET_LABEL8:(void)0;
2348 }
2349 if (var7){
2350 { /* Inline kernel#Int#+ (var_count,var_from) */
2351 var16 = var_count + var_from;
2352 var14 = var16;
2353 goto RET_LABEL15;
2354 RET_LABEL15:(void)0;
2355 }
2356 var_count = var14;
2357 var17 = 0;
2358 { /* Inline kernel#Int#< (var_count,var17) */
2359 /* Covariant cast for argument 0 (i) <var17:Int> isa OTHER */
2360 /* <var17:Int> isa OTHER */
2361 var20 = 1; /* easy <var17:Int> isa OTHER*/
2362 if (!var20) {
2363 var_class_name23 = type_kernel__Int.name;
2364 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name23);
2365 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
2366 exit(1);
2367 }
2368 var24 = var_count < var17;
2369 var18 = var24;
2370 goto RET_LABEL19;
2371 RET_LABEL19:(void)0;
2372 }
2373 if (var18){
2374 var25 = 0;
2375 var_count = var25;
2376 } else {
2377 }
2378 var26 = 0;
2379 var_from = var26;
2380 } else {
2381 }
2382 var27 = self->attrs[COLOR_string__String___index_from].l; /* _index_from on <self:String> */
2383 { /* Inline kernel#Int#+ (var27,var_from) */
2384 var30 = var27 + var_from;
2385 var28 = var30;
2386 goto RET_LABEL29;
2387 RET_LABEL29:(void)0;
2388 }
2389 var_realFrom = var28;
2390 { /* Inline kernel#Int#+ (var_realFrom,var_count) */
2391 var33 = var_realFrom + var_count;
2392 var31 = var33;
2393 goto RET_LABEL32;
2394 RET_LABEL32:(void)0;
2395 }
2396 var34 = self->attrs[COLOR_string__String___index_to].l; /* _index_to on <self:String> */
2397 { /* Inline kernel#Int#> (var31,var34) */
2398 /* Covariant cast for argument 0 (i) <var34:Int> isa OTHER */
2399 /* <var34:Int> isa OTHER */
2400 var37 = 1; /* easy <var34:Int> isa OTHER*/
2401 if (!var37) {
2402 var_class_name40 = type_kernel__Int.name;
2403 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name40);
2404 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
2405 exit(1);
2406 }
2407 var41 = var31 > var34;
2408 var35 = var41;
2409 goto RET_LABEL36;
2410 RET_LABEL36:(void)0;
2411 }
2412 if (var35){
2413 var42 = NEW_string__String(&type_string__String);
2414 var43 = self->attrs[COLOR_string__String___index_to].l; /* _index_to on <self:String> */
2415 var44 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
2416 ((void (*)(val*, long, long, char*))(var42->class->vft[COLOR_string__String__from_substring]))(var42, var_realFrom, var43, var44) /* from_substring on <var42:String>*/;
2417 CHECK_NEW_string__String(var42);
2418 var = var42;
2419 goto RET_LABEL;
2420 } else {
2421 }
2422 var45 = 0;
2423 { /* Inline kernel#Int#== (var_count,var45) */
2424 var48 = var_count == var45;
2425 var46 = var48;
2426 goto RET_LABEL47;
2427 RET_LABEL47:(void)0;
2428 }
2429 if (var46){
2430 if (varonce) {
2431 var49 = varonce;
2432 } else {
2433 var50 = "";
2434 var51 = 0;
2435 var52 = string__NativeString__to_s_with_length(var50, var51);
2436 var49 = var52;
2437 varonce = var49;
2438 }
2439 var = var49;
2440 goto RET_LABEL;
2441 } else {
2442 }
2443 var53 = NEW_string__String(&type_string__String);
2444 { /* Inline kernel#Int#+ (var_realFrom,var_count) */
2445 var56 = var_realFrom + var_count;
2446 var54 = var56;
2447 goto RET_LABEL55;
2448 RET_LABEL55:(void)0;
2449 }
2450 var57 = 1;
2451 { /* Inline kernel#Int#- (var54,var57) */
2452 var60 = var54 - var57;
2453 var58 = var60;
2454 goto RET_LABEL59;
2455 RET_LABEL59:(void)0;
2456 }
2457 var61 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
2458 ((void (*)(val*, long, long, char*))(var53->class->vft[COLOR_string__String__from_substring]))(var53, var_realFrom, var58, var61) /* from_substring on <var53:String>*/;
2459 CHECK_NEW_string__String(var53);
2460 var = var53;
2461 goto RET_LABEL;
2462 RET_LABEL:;
2463 return var;
2464 }
2465 /* method string#String#substring for (self: Object, Int, Int): String */
2466 val* VIRTUAL_string__String__substring(val* self, long p0, long p1) {
2467 val* var /* : String */;
2468 val* var1 /* : String */;
2469 var1 = string__String__substring(self, p0, p1);
2470 var = var1;
2471 RET_LABEL:;
2472 return var;
2473 }
2474 /* method string#String#substring_from for (self: String, Int): String */
2475 val* string__String__substring_from(val* self, long p0) {
2476 val* var /* : String */;
2477 long var_from /* var from: Int */;
2478 long var1 /* : Int */;
2479 short int var2 /* : Bool */;
2480 short int var4 /* : Bool */;
2481 int cltype;
2482 int idtype;
2483 const char* var_class_name;
2484 short int var5 /* : Bool */;
2485 static val* varonce;
2486 val* var6 /* : String */;
2487 char* var7 /* : NativeString */;
2488 long var8 /* : Int */;
2489 val* var9 /* : String */;
2490 long var10 /* : Int */;
2491 short int var11 /* : Bool */;
2492 short int var13 /* : Bool */;
2493 int cltype14;
2494 int idtype15;
2495 const char* var_class_name16;
2496 short int var17 /* : Bool */;
2497 long var18 /* : Int */;
2498 long var19 /* : Int */;
2499 val* var20 /* : String */;
2500 var_from = p0;
2501 var1 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
2502 { /* Inline kernel#Int#> (var_from,var1) */
2503 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
2504 /* <var1:Int> isa OTHER */
2505 var4 = 1; /* easy <var1:Int> isa OTHER*/
2506 if (!var4) {
2507 var_class_name = type_kernel__Int.name;
2508 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2509 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
2510 exit(1);
2511 }
2512 var5 = var_from > var1;
2513 var2 = var5;
2514 goto RET_LABEL3;
2515 RET_LABEL3:(void)0;
2516 }
2517 if (var2){
2518 if (varonce) {
2519 var6 = varonce;
2520 } else {
2521 var7 = "";
2522 var8 = 0;
2523 var9 = string__NativeString__to_s_with_length(var7, var8);
2524 var6 = var9;
2525 varonce = var6;
2526 }
2527 var = var6;
2528 goto RET_LABEL;
2529 } else {
2530 }
2531 var10 = 0;
2532 { /* Inline kernel#Int#< (var_from,var10) */
2533 /* Covariant cast for argument 0 (i) <var10:Int> isa OTHER */
2534 /* <var10:Int> isa OTHER */
2535 var13 = 1; /* easy <var10:Int> isa OTHER*/
2536 if (!var13) {
2537 var_class_name16 = type_kernel__Int.name;
2538 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name16);
2539 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
2540 exit(1);
2541 }
2542 var17 = var_from < var10;
2543 var11 = var17;
2544 goto RET_LABEL12;
2545 RET_LABEL12:(void)0;
2546 }
2547 if (var11){
2548 var18 = 0;
2549 var_from = var18;
2550 } else {
2551 }
2552 var19 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
2553 var20 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_string__AbstractString__substring]))(self, var_from, var19) /* substring on <self:String>*/;
2554 var = var20;
2555 goto RET_LABEL;
2556 RET_LABEL:;
2557 return var;
2558 }
2559 /* method string#String#substring_from for (self: Object, Int): String */
2560 val* VIRTUAL_string__String__substring_from(val* self, long p0) {
2561 val* var /* : String */;
2562 val* var1 /* : String */;
2563 var1 = string__String__substring_from(self, p0);
2564 var = var1;
2565 RET_LABEL:;
2566 return var;
2567 }
2568 /* method string#String#has_substring for (self: String, String, Int): Bool */
2569 short int string__String__has_substring(val* self, val* p0, long p1) {
2570 short int var /* : Bool */;
2571 val* var_str /* var str: String */;
2572 long var_pos /* var pos: Int */;
2573 long var1 /* : Int */;
2574 long var2 /* : Int */;
2575 long var3 /* : Int */;
2576 long var5 /* : Int */;
2577 long var_itsindex /* var itsindex: Int */;
2578 long var6 /* : Int */;
2579 long var8 /* : Int */;
2580 long var_myindex /* var myindex: Int */;
2581 char* var9 /* : NativeString */;
2582 char* var_myitems /* var myitems: NativeString */;
2583 char* var10 /* : NativeString */;
2584 char* var_itsitems /* var itsitems: NativeString */;
2585 short int var11 /* : Bool */;
2586 long var12 /* : Int */;
2587 short int var13 /* : Bool */;
2588 short int var15 /* : Bool */;
2589 int cltype;
2590 int idtype;
2591 const char* var_class_name;
2592 short int var16 /* : Bool */;
2593 short int var_ /* var : Bool */;
2594 short int var17 /* : Bool */;
2595 short int var19 /* : Bool */;
2596 int cltype20;
2597 int idtype21;
2598 const char* var_class_name22;
2599 short int var23 /* : Bool */;
2600 short int var24 /* : Bool */;
2601 long var25 /* : Int */;
2602 long var_itsindexfrom /* var itsindexfrom: Int */;
2603 long var26 /* : Int */;
2604 long var28 /* : Int */;
2605 long var29 /* : Int */;
2606 long var30 /* : Int */;
2607 long var32 /* : Int */;
2608 short int var33 /* : Bool */;
2609 short int var35 /* : Bool */;
2610 int cltype36;
2611 int idtype37;
2612 const char* var_class_name38;
2613 short int var39 /* : Bool */;
2614 char var40 /* : Char */;
2615 char var42 /* : Char */;
2616 char var43 /* : Char */;
2617 char var45 /* : Char */;
2618 short int var46 /* : Bool */;
2619 short int var48 /* : Bool */;
2620 short int var49 /* : Bool */;
2621 short int var50 /* : Bool */;
2622 long var51 /* : Int */;
2623 long var52 /* : Int */;
2624 long var54 /* : Int */;
2625 long var55 /* : Int */;
2626 long var56 /* : Int */;
2627 long var58 /* : Int */;
2628 short int var59 /* : Bool */;
2629 var_str = p0;
2630 var_pos = p1;
2631 var1 = var_str->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_str:String> */
2632 var2 = 1;
2633 { /* Inline kernel#Int#- (var1,var2) */
2634 var5 = var1 - var2;
2635 var3 = var5;
2636 goto RET_LABEL4;
2637 RET_LABEL4:(void)0;
2638 }
2639 var_itsindex = var3;
2640 { /* Inline kernel#Int#+ (var_pos,var_itsindex) */
2641 var8 = var_pos + var_itsindex;
2642 var6 = var8;
2643 goto RET_LABEL7;
2644 RET_LABEL7:(void)0;
2645 }
2646 var_myindex = var6;
2647 var9 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
2648 var_myitems = var9;
2649 var10 = var_str->attrs[COLOR_string__AbstractString___items].str; /* _items on <var_str:String> */
2650 var_itsitems = var10;
2651 var12 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
2652 { /* Inline kernel#Int#> (var_myindex,var12) */
2653 /* Covariant cast for argument 0 (i) <var12:Int> isa OTHER */
2654 /* <var12:Int> isa OTHER */
2655 var15 = 1; /* easy <var12:Int> isa OTHER*/
2656 if (!var15) {
2657 var_class_name = type_kernel__Int.name;
2658 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2659 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
2660 exit(1);
2661 }
2662 var16 = var_myindex > var12;
2663 var13 = var16;
2664 goto RET_LABEL14;
2665 RET_LABEL14:(void)0;
2666 }
2667 var_ = var13;
2668 if (var13){
2669 var11 = var_;
2670 } else {
2671 { /* Inline kernel#Int#> (var_itsindex,var_myindex) */
2672 /* Covariant cast for argument 0 (i) <var_myindex:Int> isa OTHER */
2673 /* <var_myindex:Int> isa OTHER */
2674 var19 = 1; /* easy <var_myindex:Int> isa OTHER*/
2675 if (!var19) {
2676 var_class_name22 = type_kernel__Int.name;
2677 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name22);
2678 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
2679 exit(1);
2680 }
2681 var23 = var_itsindex > var_myindex;
2682 var17 = var23;
2683 goto RET_LABEL18;
2684 RET_LABEL18:(void)0;
2685 }
2686 var11 = var17;
2687 }
2688 if (var11){
2689 var24 = 0;
2690 var = var24;
2691 goto RET_LABEL;
2692 } else {
2693 }
2694 var25 = ((long (*)(val*))(var_str->class->vft[COLOR_string__String__index_from]))(var_str) /* index_from on <var_str:String>*/;
2695 var_itsindexfrom = var25;
2696 { /* Inline kernel#Int#+ (var_itsindex,var_itsindexfrom) */
2697 var28 = var_itsindex + var_itsindexfrom;
2698 var26 = var28;
2699 goto RET_LABEL27;
2700 RET_LABEL27:(void)0;
2701 }
2702 var_itsindex = var26;
2703 var29 = ((long (*)(val*))(self->class->vft[COLOR_string__String__index_from]))(self) /* index_from on <self:String>*/;
2704 { /* Inline kernel#Int#+ (var_myindex,var29) */
2705 var32 = var_myindex + var29;
2706 var30 = var32;
2707 goto RET_LABEL31;
2708 RET_LABEL31:(void)0;
2709 }
2710 var_myindex = var30;
2711 for(;;) {
2712 { /* Inline kernel#Int#>= (var_itsindex,var_itsindexfrom) */
2713 /* Covariant cast for argument 0 (i) <var_itsindexfrom:Int> isa OTHER */
2714 /* <var_itsindexfrom:Int> isa OTHER */
2715 var35 = 1; /* easy <var_itsindexfrom:Int> isa OTHER*/
2716 if (!var35) {
2717 var_class_name38 = type_kernel__Int.name;
2718 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name38);
2719 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
2720 exit(1);
2721 }
2722 var39 = var_itsindex >= var_itsindexfrom;
2723 var33 = var39;
2724 goto RET_LABEL34;
2725 RET_LABEL34:(void)0;
2726 }
2727 if (!var33) break;
2728 { /* Inline string#NativeString#[] (var_myitems,var_myindex) */
2729 var42 = var_myitems[var_myindex];
2730 var40 = var42;
2731 goto RET_LABEL41;
2732 RET_LABEL41:(void)0;
2733 }
2734 { /* Inline string#NativeString#[] (var_itsitems,var_itsindex) */
2735 var45 = var_itsitems[var_itsindex];
2736 var43 = var45;
2737 goto RET_LABEL44;
2738 RET_LABEL44:(void)0;
2739 }
2740 { /* Inline kernel#Char#!= (var40,var43) */
2741 var48 = var40 == var43;
2742 var49 = !var48;
2743 var46 = var49;
2744 goto RET_LABEL47;
2745 RET_LABEL47:(void)0;
2746 }
2747 if (var46){
2748 var50 = 0;
2749 var = var50;
2750 goto RET_LABEL;
2751 } else {
2752 }
2753 var51 = 1;
2754 { /* Inline kernel#Int#- (var_myindex,var51) */
2755 var54 = var_myindex - var51;
2756 var52 = var54;
2757 goto RET_LABEL53;
2758 RET_LABEL53:(void)0;
2759 }
2760 var_myindex = var52;
2761 var55 = 1;
2762 { /* Inline kernel#Int#- (var_itsindex,var55) */
2763 var58 = var_itsindex - var55;
2764 var56 = var58;
2765 goto RET_LABEL57;
2766 RET_LABEL57:(void)0;
2767 }
2768 var_itsindex = var56;
2769 CONTINUE_label: (void)0;
2770 }
2771 BREAK_label: (void)0;
2772 var59 = 1;
2773 var = var59;
2774 goto RET_LABEL;
2775 RET_LABEL:;
2776 return var;
2777 }
2778 /* method string#String#has_substring for (self: Object, String, Int): Bool */
2779 short int VIRTUAL_string__String__has_substring(val* self, val* p0, long p1) {
2780 short int var /* : Bool */;
2781 short int var1 /* : Bool */;
2782 var1 = string__String__has_substring(self, p0, p1);
2783 var = var1;
2784 RET_LABEL:;
2785 return var;
2786 }
2787 /* method string#String#to_upper for (self: String): String */
2788 val* string__String__to_upper(val* self) {
2789 val* var /* : String */;
2790 long var1 /* : Int */;
2791 long var2 /* : Int */;
2792 long var3 /* : Int */;
2793 long var5 /* : Int */;
2794 char* var6 /* : NativeString */;
2795 char* var_outstr /* var outstr: NativeString */;
2796 long var7 /* : Int */;
2797 long var_out_index /* var out_index: Int */;
2798 char* var8 /* : NativeString */;
2799 char* var_myitems /* var myitems: NativeString */;
2800 long var9 /* : Int */;
2801 long var_index_from /* var index_from: Int */;
2802 long var10 /* : Int */;
2803 long var_max /* var max: Int */;
2804 short int var11 /* : Bool */;
2805 short int var13 /* : Bool */;
2806 int cltype;
2807 int idtype;
2808 const char* var_class_name;
2809 short int var14 /* : Bool */;
2810 char var15 /* : Char */;
2811 char var17 /* : Char */;
2812 char var18 /* : Char */;
2813 long var20 /* : Int */;
2814 long var21 /* : Int */;
2815 long var23 /* : Int */;
2816 long var24 /* : Int */;
2817 long var25 /* : Int */;
2818 long var27 /* : Int */;
2819 long var28 /* : Int */;
2820 char var29 /* : Char */;
2821 long var31 /* : Int */;
2822 val* var32 /* : String */;
2823 var1 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
2824 var2 = 1;
2825 { /* Inline kernel#Int#+ (var1,var2) */
2826 var5 = var1 + var2;
2827 var3 = var5;
2828 goto RET_LABEL4;
2829 RET_LABEL4:(void)0;
2830 }
2831 var6 = ((char* (*)(val*, long))(self->class->vft[COLOR_string__StringCapable__calloc_string]))(self, var3) /* calloc_string on <self:String>*/;
2832 var_outstr = var6;
2833 var7 = 0;
2834 var_out_index = var7;
2835 var8 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
2836 var_myitems = var8;
2837 var9 = self->attrs[COLOR_string__String___index_from].l; /* _index_from on <self:String> */
2838 var_index_from = var9;
2839 var10 = self->attrs[COLOR_string__String___index_to].l; /* _index_to on <self:String> */
2840 var_max = var10;
2841 for(;;) {
2842 { /* Inline kernel#Int#<= (var_index_from,var_max) */
2843 /* Covariant cast for argument 0 (i) <var_max:Int> isa OTHER */
2844 /* <var_max:Int> isa OTHER */
2845 var13 = 1; /* easy <var_max:Int> isa OTHER*/
2846 if (!var13) {
2847 var_class_name = type_kernel__Int.name;
2848 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2849 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
2850 exit(1);
2851 }
2852 var14 = var_index_from <= var_max;
2853 var11 = var14;
2854 goto RET_LABEL12;
2855 RET_LABEL12:(void)0;
2856 }
2857 if (!var11) break;
2858 { /* Inline string#NativeString#[] (var_myitems,var_index_from) */
2859 var17 = var_myitems[var_index_from];
2860 var15 = var17;
2861 goto RET_LABEL16;
2862 RET_LABEL16:(void)0;
2863 }
2864 var18 = kernel__Char__to_upper(var15);
2865 { /* Inline string#NativeString#[]= (var_outstr,var_out_index,var18) */
2866 var_outstr[var_out_index]=var18;
2867 RET_LABEL19:(void)0;
2868 }
2869 var20 = 1;
2870 { /* Inline kernel#Int#+ (var_out_index,var20) */
2871 var23 = var_out_index + var20;
2872 var21 = var23;
2873 goto RET_LABEL22;
2874 RET_LABEL22:(void)0;
2875 }
2876 var_out_index = var21;
2877 var24 = 1;
2878 { /* Inline kernel#Int#+ (var_index_from,var24) */
2879 var27 = var_index_from + var24;
2880 var25 = var27;
2881 goto RET_LABEL26;
2882 RET_LABEL26:(void)0;
2883 }
2884 var_index_from = var25;
2885 CONTINUE_label: (void)0;
2886 }
2887 BREAK_label: (void)0;
2888 var28 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:String>*/;
2889 var29 = '\0';
2890 { /* Inline string#NativeString#[]= (var_outstr,var28,var29) */
2891 var_outstr[var28]=var29;
2892 RET_LABEL30:(void)0;
2893 }
2894 var31 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
2895 var32 = string__NativeString__to_s_with_length(var_outstr, var31);
2896 var = var32;
2897 goto RET_LABEL;
2898 RET_LABEL:;
2899 return var;
2900 }
2901 /* method string#String#to_upper for (self: Object): String */
2902 val* VIRTUAL_string__String__to_upper(val* self) {
2903 val* var /* : String */;
2904 val* var1 /* : String */;
2905 var1 = string__String__to_upper(self);
2906 var = var1;
2907 RET_LABEL:;
2908 return var;
2909 }
2910 /* method string#String#to_lower for (self: String): String */
2911 val* string__String__to_lower(val* self) {
2912 val* var /* : String */;
2913 long var1 /* : Int */;
2914 long var2 /* : Int */;
2915 long var3 /* : Int */;
2916 long var5 /* : Int */;
2917 char* var6 /* : NativeString */;
2918 char* var_outstr /* var outstr: NativeString */;
2919 long var7 /* : Int */;
2920 long var_out_index /* var out_index: Int */;
2921 char* var8 /* : NativeString */;
2922 char* var_myitems /* var myitems: NativeString */;
2923 long var9 /* : Int */;
2924 long var_index_from /* var index_from: Int */;
2925 long var10 /* : Int */;
2926 long var_max /* var max: Int */;
2927 short int var11 /* : Bool */;
2928 short int var13 /* : Bool */;
2929 int cltype;
2930 int idtype;
2931 const char* var_class_name;
2932 short int var14 /* : Bool */;
2933 char var15 /* : Char */;
2934 char var17 /* : Char */;
2935 char var18 /* : Char */;
2936 long var20 /* : Int */;
2937 long var21 /* : Int */;
2938 long var23 /* : Int */;
2939 long var24 /* : Int */;
2940 long var25 /* : Int */;
2941 long var27 /* : Int */;
2942 long var28 /* : Int */;
2943 char var29 /* : Char */;
2944 long var31 /* : Int */;
2945 val* var32 /* : String */;
2946 var1 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
2947 var2 = 1;
2948 { /* Inline kernel#Int#+ (var1,var2) */
2949 var5 = var1 + var2;
2950 var3 = var5;
2951 goto RET_LABEL4;
2952 RET_LABEL4:(void)0;
2953 }
2954 var6 = ((char* (*)(val*, long))(self->class->vft[COLOR_string__StringCapable__calloc_string]))(self, var3) /* calloc_string on <self:String>*/;
2955 var_outstr = var6;
2956 var7 = 0;
2957 var_out_index = var7;
2958 var8 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
2959 var_myitems = var8;
2960 var9 = self->attrs[COLOR_string__String___index_from].l; /* _index_from on <self:String> */
2961 var_index_from = var9;
2962 var10 = self->attrs[COLOR_string__String___index_to].l; /* _index_to on <self:String> */
2963 var_max = var10;
2964 for(;;) {
2965 { /* Inline kernel#Int#<= (var_index_from,var_max) */
2966 /* Covariant cast for argument 0 (i) <var_max:Int> isa OTHER */
2967 /* <var_max:Int> isa OTHER */
2968 var13 = 1; /* easy <var_max:Int> isa OTHER*/
2969 if (!var13) {
2970 var_class_name = type_kernel__Int.name;
2971 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2972 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
2973 exit(1);
2974 }
2975 var14 = var_index_from <= var_max;
2976 var11 = var14;
2977 goto RET_LABEL12;
2978 RET_LABEL12:(void)0;
2979 }
2980 if (!var11) break;
2981 { /* Inline string#NativeString#[] (var_myitems,var_index_from) */
2982 var17 = var_myitems[var_index_from];
2983 var15 = var17;
2984 goto RET_LABEL16;
2985 RET_LABEL16:(void)0;
2986 }
2987 var18 = kernel__Char__to_lower(var15);
2988 { /* Inline string#NativeString#[]= (var_outstr,var_out_index,var18) */
2989 var_outstr[var_out_index]=var18;
2990 RET_LABEL19:(void)0;
2991 }
2992 var20 = 1;
2993 { /* Inline kernel#Int#+ (var_out_index,var20) */
2994 var23 = var_out_index + var20;
2995 var21 = var23;
2996 goto RET_LABEL22;
2997 RET_LABEL22:(void)0;
2998 }
2999 var_out_index = var21;
3000 var24 = 1;
3001 { /* Inline kernel#Int#+ (var_index_from,var24) */
3002 var27 = var_index_from + var24;
3003 var25 = var27;
3004 goto RET_LABEL26;
3005 RET_LABEL26:(void)0;
3006 }
3007 var_index_from = var25;
3008 CONTINUE_label: (void)0;
3009 }
3010 BREAK_label: (void)0;
3011 var28 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:String>*/;
3012 var29 = '\0';
3013 { /* Inline string#NativeString#[]= (var_outstr,var28,var29) */
3014 var_outstr[var28]=var29;
3015 RET_LABEL30:(void)0;
3016 }
3017 var31 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
3018 var32 = string__NativeString__to_s_with_length(var_outstr, var31);
3019 var = var32;
3020 goto RET_LABEL;
3021 RET_LABEL:;
3022 return var;
3023 }
3024 /* method string#String#to_lower for (self: Object): String */
3025 val* VIRTUAL_string__String__to_lower(val* self) {
3026 val* var /* : String */;
3027 val* var1 /* : String */;
3028 var1 = string__String__to_lower(self);
3029 var = var1;
3030 RET_LABEL:;
3031 return var;
3032 }
3033 /* method string#String#trim for (self: String): String */
3034 val* string__String__trim(val* self) {
3035 val* var /* : String */;
3036 long var1 /* : Int */;
3037 long var2 /* : Int */;
3038 short int var3 /* : Bool */;
3039 short int var5 /* : Bool */;
3040 long var6 /* : Int */;
3041 long var_start_pos /* var start_pos: Int */;
3042 char* var7 /* : NativeString */;
3043 char var8 /* : Char */;
3044 char var10 /* : Char */;
3045 long var11 /* : Int */;
3046 long var13 /* : Int */;
3047 long var14 /* : Int */;
3048 short int var15 /* : Bool */;
3049 short int var17 /* : Bool */;
3050 int cltype;
3051 int idtype;
3052 const char* var_class_name;
3053 short int var18 /* : Bool */;
3054 long var19 /* : Int */;
3055 long var20 /* : Int */;
3056 long var22 /* : Int */;
3057 long var23 /* : Int */;
3058 long var24 /* : Int */;
3059 long var25 /* : Int */;
3060 long var27 /* : Int */;
3061 short int var28 /* : Bool */;
3062 short int var30 /* : Bool */;
3063 static val* varonce;
3064 val* var31 /* : String */;
3065 char* var32 /* : NativeString */;
3066 long var33 /* : Int */;
3067 val* var34 /* : String */;
3068 long var35 /* : Int */;
3069 long var_end_pos /* var end_pos: Int */;
3070 char* var36 /* : NativeString */;
3071 char var37 /* : Char */;
3072 char var39 /* : Char */;
3073 long var40 /* : Int */;
3074 long var42 /* : Int */;
3075 long var43 /* : Int */;
3076 short int var44 /* : Bool */;
3077 short int var46 /* : Bool */;
3078 int cltype47;
3079 int idtype48;
3080 const char* var_class_name49;
3081 short int var50 /* : Bool */;
3082 long var51 /* : Int */;
3083 long var52 /* : Int */;
3084 long var54 /* : Int */;
3085 short int var55 /* : Bool */;
3086 short int var57 /* : Bool */;
3087 char* var58 /* : NativeString */;
3088 char var59 /* : Char */;
3089 char var61 /* : Char */;
3090 val* var62 /* : String */;
3091 long var64 /* : Int */;
3092 long var65 /* : Int */;
3093 long var67 /* : Int */;
3094 long var68 /* : Int */;
3095 long var69 /* : Int */;
3096 long var71 /* : Int */;
3097 long var72 /* : Int */;
3098 long var74 /* : Int */;
3099 long var75 /* : Int */;
3100 long var76 /* : Int */;
3101 long var78 /* : Int */;
3102 val* var79 /* : String */;
3103 var1 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
3104 var2 = 0;
3105 { /* Inline kernel#Int#== (var1,var2) */
3106 var5 = var1 == var2;
3107 var3 = var5;
3108 goto RET_LABEL4;
3109 RET_LABEL4:(void)0;
3110 }
3111 if (var3){
3112 var = self;
3113 goto RET_LABEL;
3114 } else {
3115 }
3116 var6 = self->attrs[COLOR_string__String___index_from].l; /* _index_from on <self:String> */
3117 var_start_pos = var6;
3118 for(;;) {
3119 var7 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
3120 { /* Inline string#NativeString#[] (var7,var_start_pos) */
3121 var10 = var7[var_start_pos];
3122 var8 = var10;
3123 goto RET_LABEL9;
3124 RET_LABEL9:(void)0;
3125 }
3126 { /* Inline kernel#Char#ascii (var8) */
3127 var13 = (unsigned char)var8;
3128 var11 = var13;
3129 goto RET_LABEL12;
3130 RET_LABEL12:(void)0;
3131 }
3132 var14 = 32;
3133 { /* Inline kernel#Int#<= (var11,var14) */
3134 /* Covariant cast for argument 0 (i) <var14:Int> isa OTHER */
3135 /* <var14:Int> isa OTHER */
3136 var17 = 1; /* easy <var14:Int> isa OTHER*/
3137 if (!var17) {
3138 var_class_name = type_kernel__Int.name;
3139 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3140 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
3141 exit(1);
3142 }
3143 var18 = var11 <= var14;
3144 var15 = var18;
3145 goto RET_LABEL16;
3146 RET_LABEL16:(void)0;
3147 }
3148 if (!var15) break;
3149 var19 = 1;
3150 { /* Inline kernel#Int#+ (var_start_pos,var19) */
3151 var22 = var_start_pos + var19;
3152 var20 = var22;
3153 goto RET_LABEL21;
3154 RET_LABEL21:(void)0;
3155 }
3156 var_start_pos = var20;
3157 var23 = self->attrs[COLOR_string__String___index_to].l; /* _index_to on <self:String> */
3158 var24 = 1;
3159 { /* Inline kernel#Int#+ (var23,var24) */
3160 var27 = var23 + var24;
3161 var25 = var27;
3162 goto RET_LABEL26;
3163 RET_LABEL26:(void)0;
3164 }
3165 { /* Inline kernel#Int#== (var_start_pos,var25) */
3166 var30 = var_start_pos == var25;
3167 var28 = var30;
3168 goto RET_LABEL29;
3169 RET_LABEL29:(void)0;
3170 }
3171 if (var28){
3172 if (varonce) {
3173 var31 = varonce;
3174 } else {
3175 var32 = "";
3176 var33 = 0;
3177 var34 = string__NativeString__to_s_with_length(var32, var33);
3178 var31 = var34;
3179 varonce = var31;
3180 }
3181 var = var31;
3182 goto RET_LABEL;
3183 } else {
3184 }
3185 CONTINUE_label: (void)0;
3186 }
3187 BREAK_label: (void)0;
3188 var35 = self->attrs[COLOR_string__String___index_to].l; /* _index_to on <self:String> */
3189 var_end_pos = var35;
3190 for(;;) {
3191 var36 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
3192 { /* Inline string#NativeString#[] (var36,var_end_pos) */
3193 var39 = var36[var_end_pos];
3194 var37 = var39;
3195 goto RET_LABEL38;
3196 RET_LABEL38:(void)0;
3197 }
3198 { /* Inline kernel#Char#ascii (var37) */
3199 var42 = (unsigned char)var37;
3200 var40 = var42;
3201 goto RET_LABEL41;
3202 RET_LABEL41:(void)0;
3203 }
3204 var43 = 32;
3205 { /* Inline kernel#Int#<= (var40,var43) */
3206 /* Covariant cast for argument 0 (i) <var43:Int> isa OTHER */
3207 /* <var43:Int> isa OTHER */
3208 var46 = 1; /* easy <var43:Int> isa OTHER*/
3209 if (!var46) {
3210 var_class_name49 = type_kernel__Int.name;
3211 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name49);
3212 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
3213 exit(1);
3214 }
3215 var50 = var40 <= var43;
3216 var44 = var50;
3217 goto RET_LABEL45;
3218 RET_LABEL45:(void)0;
3219 }
3220 if (!var44) break;
3221 var51 = 1;
3222 { /* Inline kernel#Int#- (var_end_pos,var51) */
3223 var54 = var_end_pos - var51;
3224 var52 = var54;
3225 goto RET_LABEL53;
3226 RET_LABEL53:(void)0;
3227 }
3228 var_end_pos = var52;
3229 { /* Inline kernel#Int#== (var_end_pos,var_start_pos) */
3230 var57 = var_end_pos == var_start_pos;
3231 var55 = var57;
3232 goto RET_LABEL56;
3233 RET_LABEL56:(void)0;
3234 }
3235 if (var55){
3236 var58 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
3237 { /* Inline string#NativeString#[] (var58,var_start_pos) */
3238 var61 = var58[var_start_pos];
3239 var59 = var61;
3240 goto RET_LABEL60;
3241 RET_LABEL60:(void)0;
3242 }
3243 var62 = string__Char__to_s(var59);
3244 var = var62;
3245 goto RET_LABEL;
3246 } else {
3247 }
3248 CONTINUE_label63: (void)0;
3249 }
3250 BREAK_label63: (void)0;
3251 var64 = ((long (*)(val*))(self->class->vft[COLOR_string__String__index_from]))(self) /* index_from on <self:String>*/;
3252 { /* Inline kernel#Int#- (var_start_pos,var64) */
3253 var67 = var_start_pos - var64;
3254 var65 = var67;
3255 goto RET_LABEL66;
3256 RET_LABEL66:(void)0;
3257 }
3258 var_start_pos = var65;
3259 var68 = ((long (*)(val*))(self->class->vft[COLOR_string__String__index_from]))(self) /* index_from on <self:String>*/;
3260 { /* Inline kernel#Int#- (var_end_pos,var68) */
3261 var71 = var_end_pos - var68;
3262 var69 = var71;
3263 goto RET_LABEL70;
3264 RET_LABEL70:(void)0;
3265 }
3266 var_end_pos = var69;
3267 { /* Inline kernel#Int#- (var_end_pos,var_start_pos) */
3268 var74 = var_end_pos - var_start_pos;
3269 var72 = var74;
3270 goto RET_LABEL73;
3271 RET_LABEL73:(void)0;
3272 }
3273 var75 = 1;
3274 { /* Inline kernel#Int#+ (var72,var75) */
3275 var78 = var72 + var75;
3276 var76 = var78;
3277 goto RET_LABEL77;
3278 RET_LABEL77:(void)0;
3279 }
3280 var79 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_string__AbstractString__substring]))(self, var_start_pos, var76) /* substring on <self:String>*/;
3281 var = var79;
3282 goto RET_LABEL;
3283 RET_LABEL:;
3284 return var;
3285 }
3286 /* method string#String#trim for (self: Object): String */
3287 val* VIRTUAL_string__String__trim(val* self) {
3288 val* var /* : String */;
3289 val* var1 /* : String */;
3290 var1 = string__String__trim(self);
3291 var = var1;
3292 RET_LABEL:;
3293 return var;
3294 }
3295 /* method string#String#output for (self: String) */
3296 void string__String__output(val* self) {
3297 long var /* : Int */;
3298 long var_i /* var i: Int */;
3299 long var1 /* : Int */;
3300 long var_imax /* var imax: Int */;
3301 short int var2 /* : Bool */;
3302 short int var4 /* : Bool */;
3303 int cltype;
3304 int idtype;
3305 const char* var_class_name;
3306 short int var5 /* : Bool */;
3307 char* var6 /* : NativeString */;
3308 char var7 /* : Char */;
3309 char var9 /* : Char */;
3310 long var11 /* : Int */;
3311 long var12 /* : Int */;
3312 long var14 /* : Int */;
3313 var = self->attrs[COLOR_string__String___index_from].l; /* _index_from on <self:String> */
3314 var_i = var;
3315 var1 = self->attrs[COLOR_string__String___index_to].l; /* _index_to on <self:String> */
3316 var_imax = var1;
3317 for(;;) {
3318 { /* Inline kernel#Int#<= (var_i,var_imax) */
3319 /* Covariant cast for argument 0 (i) <var_imax:Int> isa OTHER */
3320 /* <var_imax:Int> isa OTHER */
3321 var4 = 1; /* easy <var_imax:Int> isa OTHER*/
3322 if (!var4) {
3323 var_class_name = type_kernel__Int.name;
3324 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3325 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
3326 exit(1);
3327 }
3328 var5 = var_i <= var_imax;
3329 var2 = var5;
3330 goto RET_LABEL3;
3331 RET_LABEL3:(void)0;
3332 }
3333 if (!var2) break;
3334 var6 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
3335 { /* Inline string#NativeString#[] (var6,var_i) */
3336 var9 = var6[var_i];
3337 var7 = var9;
3338 goto RET_LABEL8;
3339 RET_LABEL8:(void)0;
3340 }
3341 { /* Inline kernel#Char#output (var7) */
3342 printf("%c", var7);
3343 RET_LABEL10:(void)0;
3344 }
3345 var11 = 1;
3346 { /* Inline kernel#Int#+ (var_i,var11) */
3347 var14 = var_i + var11;
3348 var12 = var14;
3349 goto RET_LABEL13;
3350 RET_LABEL13:(void)0;
3351 }
3352 var_i = var12;
3353 CONTINUE_label: (void)0;
3354 }
3355 BREAK_label: (void)0;
3356 RET_LABEL:;
3357 }
3358 /* method string#String#output for (self: Object) */
3359 void VIRTUAL_string__String__output(val* self) {
3360 string__String__output(self);
3361 RET_LABEL:;
3362 }
3363 /* method string#String#from_substring for (self: String, Int, Int, NativeString) */
3364 void string__String__from_substring(val* self, long p0, long p1, char* p2) {
3365 long var_from /* var from: Int */;
3366 long var_to /* var to: Int */;
3367 char* var_internalString /* var internalString: NativeString */;
3368 long var /* : Int */;
3369 long var2 /* : Int */;
3370 long var3 /* : Int */;
3371 long var4 /* : Int */;
3372 long var6 /* : Int */;
3373 var_from = p0;
3374 var_to = p1;
3375 var_internalString = p2;
3376 ((void (*)(val*))(self->class->vft[COLOR_string__AbstractString__init]))(self) /* init on <self:String>*/;
3377 self->attrs[COLOR_string__AbstractString___items].str = var_internalString; /* _items on <self:String> */
3378 self->attrs[COLOR_string__String___index_from].l = var_from; /* _index_from on <self:String> */
3379 self->attrs[COLOR_string__String___index_to].l = var_to; /* _index_to on <self:String> */
3380 { /* Inline kernel#Int#- (var_to,var_from) */
3381 var2 = var_to - var_from;
3382 var = var2;
3383 goto RET_LABEL1;
3384 RET_LABEL1:(void)0;
3385 }
3386 var3 = 1;
3387 { /* Inline kernel#Int#+ (var,var3) */
3388 var6 = var + var3;
3389 var4 = var6;
3390 goto RET_LABEL5;
3391 RET_LABEL5:(void)0;
3392 }
3393 self->attrs[COLOR_array__AbstractArrayRead___length].l = var4; /* _length on <self:String> */
3394 RET_LABEL:;
3395 }
3396 /* method string#String#from_substring for (self: Object, Int, Int, NativeString) */
3397 void VIRTUAL_string__String__from_substring(val* self, long p0, long p1, char* p2) {
3398 string__String__from_substring(self, p0, p1, p2);
3399 RET_LABEL:;
3400 }
3401 /* method string#String#with_infos for (self: String, NativeString, Int, Int, Int) */
3402 void string__String__with_infos(val* self, char* p0, long p1, long p2, long p3) {
3403 char* var_items /* var items: NativeString */;
3404 long var_len /* var len: Int */;
3405 long var_from /* var from: Int */;
3406 long var_to /* var to: Int */;
3407 var_items = p0;
3408 var_len = p1;
3409 var_from = p2;
3410 var_to = p3;
3411 ((void (*)(val*))(self->class->vft[COLOR_string__AbstractString__init]))(self) /* init on <self:String>*/;
3412 self->attrs[COLOR_string__AbstractString___items].str = var_items; /* _items on <self:String> */
3413 self->attrs[COLOR_array__AbstractArrayRead___length].l = var_len; /* _length on <self:String> */
3414 self->attrs[COLOR_string__String___index_from].l = var_from; /* _index_from on <self:String> */
3415 self->attrs[COLOR_string__String___index_to].l = var_to; /* _index_to on <self:String> */
3416 RET_LABEL:;
3417 }
3418 /* method string#String#with_infos for (self: Object, NativeString, Int, Int, Int) */
3419 void VIRTUAL_string__String__with_infos(val* self, char* p0, long p1, long p2, long p3) {
3420 string__String__with_infos(self, p0, p1, p2, p3);
3421 RET_LABEL:;
3422 }
3423 /* method string#String#to_cstring for (self: String): NativeString */
3424 char* string__String__to_cstring(val* self) {
3425 char* var /* : NativeString */;
3426 short int var1 /* : Bool */;
3427 long var2 /* : Int */;
3428 long var3 /* : Int */;
3429 short int var4 /* : Bool */;
3430 short int var6 /* : Bool */;
3431 int cltype;
3432 int idtype;
3433 const char* var_class_name;
3434 short int var7 /* : Bool */;
3435 short int var_ /* var : Bool */;
3436 long var8 /* : Int */;
3437 char* var9 /* : NativeString */;
3438 long var10 /* : Int */;
3439 long var11 /* : Int */;
3440 long var12 /* : Int */;
3441 long var14 /* : Int */;
3442 short int var15 /* : Bool */;
3443 short int var17 /* : Bool */;
3444 short int var18 /* : Bool */;
3445 long var19 /* : Int */;
3446 long var20 /* : Int */;
3447 long var21 /* : Int */;
3448 long var23 /* : Int */;
3449 char* var24 /* : NativeString */;
3450 char* var_newItems /* var newItems: NativeString */;
3451 char* var25 /* : NativeString */;
3452 long var26 /* : Int */;
3453 long var27 /* : Int */;
3454 long var28 /* : Int */;
3455 long var30 /* : Int */;
3456 char var31 /* : Char */;
3457 char* var33 /* : NativeString */;
3458 var2 = self->attrs[COLOR_string__String___index_from].l; /* _index_from on <self:String> */
3459 var3 = 0;
3460 { /* Inline kernel#Int#> (var2,var3) */
3461 /* Covariant cast for argument 0 (i) <var3:Int> isa OTHER */
3462 /* <var3:Int> isa OTHER */
3463 var6 = 1; /* easy <var3:Int> isa OTHER*/
3464 if (!var6) {
3465 var_class_name = type_kernel__Int.name;
3466 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3467 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
3468 exit(1);
3469 }
3470 var7 = var2 > var3;
3471 var4 = var7;
3472 goto RET_LABEL5;
3473 RET_LABEL5:(void)0;
3474 }
3475 var_ = var4;
3476 if (var4){
3477 var1 = var_;
3478 } else {
3479 var8 = self->attrs[COLOR_string__String___index_to].l; /* _index_to on <self:String> */
3480 var9 = ((char* (*)(val*))(self->class->vft[COLOR_string__AbstractString__items]))(self) /* items on <self:String>*/;
3481 var10 = string__NativeString__cstring_length(var9);
3482 var11 = 1;
3483 { /* Inline kernel#Int#- (var10,var11) */
3484 var14 = var10 - var11;
3485 var12 = var14;
3486 goto RET_LABEL13;
3487 RET_LABEL13:(void)0;
3488 }
3489 { /* Inline kernel#Int#!= (var8,var12) */
3490 var17 = var8 == var12;
3491 var18 = !var17;
3492 var15 = var18;
3493 goto RET_LABEL16;
3494 RET_LABEL16:(void)0;
3495 }
3496 var1 = var15;
3497 }
3498 if (var1){
3499 var19 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
3500 var20 = 1;
3501 { /* Inline kernel#Int#+ (var19,var20) */
3502 var23 = var19 + var20;
3503 var21 = var23;
3504 goto RET_LABEL22;
3505 RET_LABEL22:(void)0;
3506 }
3507 var24 = ((char* (*)(val*, long))(self->class->vft[COLOR_string__StringCapable__calloc_string]))(self, var21) /* calloc_string on <self:String>*/;
3508 var_newItems = var24;
3509 var25 = ((char* (*)(val*))(self->class->vft[COLOR_string__AbstractString__items]))(self) /* items on <self:String>*/;
3510 var26 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
3511 var27 = self->attrs[COLOR_string__String___index_from].l; /* _index_from on <self:String> */
3512 var28 = 0;
3513 { /* Inline string#NativeString#copy_to (var25,var_newItems,var26,var27,var28) */
3514 memcpy(var_newItems+var28,var25+var27,var26);
3515 RET_LABEL29:(void)0;
3516 }
3517 var30 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:String>*/;
3518 var31 = '\0';
3519 { /* Inline string#NativeString#[]= (var_newItems,var30,var31) */
3520 var_newItems[var30]=var31;
3521 RET_LABEL32:(void)0;
3522 }
3523 var = var_newItems;
3524 goto RET_LABEL;
3525 } else {
3526 }
3527 var33 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
3528 var = var33;
3529 goto RET_LABEL;
3530 RET_LABEL:;
3531 return var;
3532 }
3533 /* method string#String#to_cstring for (self: Object): NativeString */
3534 char* VIRTUAL_string__String__to_cstring(val* self) {
3535 char* var /* : NativeString */;
3536 char* var1 /* : NativeString */;
3537 var1 = string__String__to_cstring(self);
3538 var = var1;
3539 RET_LABEL:;
3540 return var;
3541 }
3542 /* method string#String#== for (self: String, nullable Object): Bool */
3543 short int string__String___61d_61d(val* self, val* p0) {
3544 short int var /* : Bool */;
3545 val* var_other /* var other: nullable Object */;
3546 short int var1 /* : Bool */;
3547 int cltype;
3548 int idtype;
3549 short int var2 /* : Bool */;
3550 short int var3 /* : Bool */;
3551 long var4 /* : Int */;
3552 long var5 /* : Int */;
3553 short int var6 /* : Bool */;
3554 short int var8 /* : Bool */;
3555 short int var9 /* : Bool */;
3556 long var10 /* : Int */;
3557 long var_my_length /* var my_length: Int */;
3558 long var11 /* : Int */;
3559 short int var12 /* : Bool */;
3560 short int var14 /* : Bool */;
3561 short int var15 /* : Bool */;
3562 short int var16 /* : Bool */;
3563 long var17 /* : Int */;
3564 long var_my_index /* var my_index: Int */;
3565 long var18 /* : Int */;
3566 long var_its_index /* var its_index: Int */;
3567 long var19 /* : Int */;
3568 long var21 /* : Int */;
3569 long var_last_iteration /* var last_iteration: Int */;
3570 char* var22 /* : NativeString */;
3571 char* var_itsitems /* var itsitems: NativeString */;
3572 char* var23 /* : NativeString */;
3573 char* var_myitems /* var myitems: NativeString */;
3574 short int var24 /* : Bool */;
3575 short int var26 /* : Bool */;
3576 int cltype27;
3577 int idtype28;
3578 const char* var_class_name;
3579 short int var29 /* : Bool */;
3580 char var30 /* : Char */;
3581 char var32 /* : Char */;
3582 char var33 /* : Char */;
3583 char var35 /* : Char */;
3584 short int var36 /* : Bool */;
3585 short int var38 /* : Bool */;
3586 short int var39 /* : Bool */;
3587 short int var40 /* : Bool */;
3588 long var41 /* : Int */;
3589 long var42 /* : Int */;
3590 long var44 /* : Int */;
3591 long var45 /* : Int */;
3592 long var46 /* : Int */;
3593 long var48 /* : Int */;
3594 short int var49 /* : Bool */;
3595 var_other = p0;
3596 /* <var_other:nullable Object> isa String */
3597 cltype = type_string__String.color;
3598 idtype = type_string__String.id;
3599 if(var_other == NULL) {
3600 var1 = 0;
3601 } else {
3602 if(cltype >= var_other->type->table_size) {
3603 var1 = 0;
3604 } else {
3605 var1 = var_other->type->type_table[cltype] == idtype;
3606 }
3607 }
3608 var2 = !var1;
3609 if (var2){
3610 var3 = 0;
3611 var = var3;
3612 goto RET_LABEL;
3613 } else {
3614 }
3615 var4 = ((long (*)(val*))(self->class->vft[COLOR_kernel__Object__object_id]))(self) /* object_id on <self:String>*/;
3616 var5 = ((long (*)(val*))(var_other->class->vft[COLOR_kernel__Object__object_id]))(var_other) /* object_id on <var_other:nullable Object(String)>*/;
3617 { /* Inline kernel#Int#== (var4,var5) */
3618 var8 = var4 == var5;
3619 var6 = var8;
3620 goto RET_LABEL7;
3621 RET_LABEL7:(void)0;
3622 }
3623 if (var6){
3624 var9 = 1;
3625 var = var9;
3626 goto RET_LABEL;
3627 } else {
3628 }
3629 var10 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
3630 var_my_length = var10;
3631 var11 = var_other->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_other:nullable Object(String)> */
3632 { /* Inline kernel#Int#!= (var11,var_my_length) */
3633 var14 = var11 == var_my_length;
3634 var15 = !var14;
3635 var12 = var15;
3636 goto RET_LABEL13;
3637 RET_LABEL13:(void)0;
3638 }
3639 if (var12){
3640 var16 = 0;
3641 var = var16;
3642 goto RET_LABEL;
3643 } else {
3644 }
3645 var17 = self->attrs[COLOR_string__String___index_from].l; /* _index_from on <self:String> */
3646 var_my_index = var17;
3647 var18 = var_other->attrs[COLOR_string__String___index_from].l; /* _index_from on <var_other:nullable Object(String)> */
3648 var_its_index = var18;
3649 { /* Inline kernel#Int#+ (var_my_index,var_my_length) */
3650 var21 = var_my_index + var_my_length;
3651 var19 = var21;
3652 goto RET_LABEL20;
3653 RET_LABEL20:(void)0;
3654 }
3655 var_last_iteration = var19;
3656 var22 = var_other->attrs[COLOR_string__AbstractString___items].str; /* _items on <var_other:nullable Object(String)> */
3657 var_itsitems = var22;
3658 var23 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
3659 var_myitems = var23;
3660 for(;;) {
3661 { /* Inline kernel#Int#< (var_my_index,var_last_iteration) */
3662 /* Covariant cast for argument 0 (i) <var_last_iteration:Int> isa OTHER */
3663 /* <var_last_iteration:Int> isa OTHER */
3664 var26 = 1; /* easy <var_last_iteration:Int> isa OTHER*/
3665 if (!var26) {
3666 var_class_name = type_kernel__Int.name;
3667 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3668 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
3669 exit(1);
3670 }
3671 var29 = var_my_index < var_last_iteration;
3672 var24 = var29;
3673 goto RET_LABEL25;
3674 RET_LABEL25:(void)0;
3675 }
3676 if (!var24) break;
3677 { /* Inline string#NativeString#[] (var_myitems,var_my_index) */
3678 var32 = var_myitems[var_my_index];
3679 var30 = var32;
3680 goto RET_LABEL31;
3681 RET_LABEL31:(void)0;
3682 }
3683 { /* Inline string#NativeString#[] (var_itsitems,var_its_index) */
3684 var35 = var_itsitems[var_its_index];
3685 var33 = var35;
3686 goto RET_LABEL34;
3687 RET_LABEL34:(void)0;
3688 }
3689 { /* Inline kernel#Char#!= (var30,var33) */
3690 var38 = var30 == var33;
3691 var39 = !var38;
3692 var36 = var39;
3693 goto RET_LABEL37;
3694 RET_LABEL37:(void)0;
3695 }
3696 if (var36){
3697 var40 = 0;
3698 var = var40;
3699 goto RET_LABEL;
3700 } else {
3701 }
3702 var41 = 1;
3703 { /* Inline kernel#Int#+ (var_my_index,var41) */
3704 var44 = var_my_index + var41;
3705 var42 = var44;
3706 goto RET_LABEL43;
3707 RET_LABEL43:(void)0;
3708 }
3709 var_my_index = var42;
3710 var45 = 1;
3711 { /* Inline kernel#Int#+ (var_its_index,var45) */
3712 var48 = var_its_index + var45;
3713 var46 = var48;
3714 goto RET_LABEL47;
3715 RET_LABEL47:(void)0;
3716 }
3717 var_its_index = var46;
3718 CONTINUE_label: (void)0;
3719 }
3720 BREAK_label: (void)0;
3721 var49 = 1;
3722 var = var49;
3723 goto RET_LABEL;
3724 RET_LABEL:;
3725 return var;
3726 }
3727 /* method string#String#== for (self: Object, nullable Object): Bool */
3728 short int VIRTUAL_string__String___61d_61d(val* self, val* p0) {
3729 short int var /* : Bool */;
3730 short int var1 /* : Bool */;
3731 var1 = string__String___61d_61d(self, p0);
3732 var = var1;
3733 RET_LABEL:;
3734 return var;
3735 }
3736 /* method string#String#< for (self: String, String): Bool */
3737 short int string__String___60d(val* self, val* p0) {
3738 short int var /* : Bool */;
3739 short int var1 /* : Bool */;
3740 int cltype;
3741 int idtype;
3742 const struct type* type_struct;
3743 const char* var_class_name;
3744 val* var_other /* var other: String */;
3745 long var2 /* : Int */;
3746 long var3 /* : Int */;
3747 short int var4 /* : Bool */;
3748 short int var6 /* : Bool */;
3749 short int var7 /* : Bool */;
3750 long var8 /* : Int */;
3751 long var_curr_id_self /* var curr_id_self: Int */;
3752 long var9 /* : Int */;
3753 long var_curr_id_other /* var curr_id_other: Int */;
3754 char* var10 /* : NativeString */;
3755 char* var_my_items /* var my_items: NativeString */;
3756 char* var11 /* : NativeString */;
3757 char* var_its_items /* var its_items: NativeString */;
3758 long var12 /* : Int */;
3759 long var_my_length /* var my_length: Int */;
3760 long var13 /* : Int */;
3761 long var_its_length /* var its_length: Int */;
3762 long var14 /* : Int */;
3763 long var16 /* : Int */;
3764 long var_max_iterations /* var max_iterations: Int */;
3765 short int var17 /* : Bool */;
3766 short int var19 /* : Bool */;
3767 int cltype20;
3768 int idtype21;
3769 const char* var_class_name22;
3770 short int var23 /* : Bool */;
3771 char var24 /* : Char */;
3772 char var26 /* : Char */;
3773 char var_my_curr_char /* var my_curr_char: Char */;
3774 char var27 /* : Char */;
3775 char var29 /* : Char */;
3776 char var_its_curr_char /* var its_curr_char: Char */;
3777 short int var30 /* : Bool */;
3778 short int var32 /* : Bool */;
3779 short int var33 /* : Bool */;
3780 short int var34 /* : Bool */;
3781 short int var36 /* : Bool */;
3782 int cltype37;
3783 int idtype38;
3784 const char* var_class_name39;
3785 short int var40 /* : Bool */;
3786 short int var41 /* : Bool */;
3787 short int var42 /* : Bool */;
3788 long var43 /* : Int */;
3789 long var44 /* : Int */;
3790 long var46 /* : Int */;
3791 long var47 /* : Int */;
3792 long var48 /* : Int */;
3793 long var50 /* : Int */;
3794 short int var51 /* : Bool */;
3795 short int var53 /* : Bool */;
3796 int cltype54;
3797 int idtype55;
3798 const char* var_class_name56;
3799 short int var57 /* : Bool */;
3800 /* Covariant cast for argument 0 (other) <p0:String> isa OTHER */
3801 /* <p0:String> isa OTHER */
3802 type_struct = self->type->resolution_table->types[COLOR_kernel__Comparable_VTOTHER];
3803 cltype = type_struct->color;
3804 idtype = type_struct->id;
3805 if(cltype >= p0->type->table_size) {
3806 var1 = 0;
3807 } else {
3808 var1 = p0->type->type_table[cltype] == idtype;
3809 }
3810 if (!var1) {
3811 var_class_name = p0 == NULL ? "null" : p0->type->name;
3812 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3813 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 571);
3814 exit(1);
3815 }
3816 var_other = p0;
3817 var2 = ((long (*)(val*))(self->class->vft[COLOR_kernel__Object__object_id]))(self) /* object_id on <self:String>*/;
3818 var3 = ((long (*)(val*))(var_other->class->vft[COLOR_kernel__Object__object_id]))(var_other) /* object_id on <var_other:String>*/;
3819 { /* Inline kernel#Int#== (var2,var3) */
3820 var6 = var2 == var3;
3821 var4 = var6;
3822 goto RET_LABEL5;
3823 RET_LABEL5:(void)0;
3824 }
3825 if (var4){
3826 var7 = 0;
3827 var = var7;
3828 goto RET_LABEL;
3829 } else {
3830 }
3831 var8 = self->attrs[COLOR_string__String___index_from].l; /* _index_from on <self:String> */
3832 var_curr_id_self = var8;
3833 var9 = var_other->attrs[COLOR_string__String___index_from].l; /* _index_from on <var_other:String> */
3834 var_curr_id_other = var9;
3835 var10 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
3836 var_my_items = var10;
3837 var11 = var_other->attrs[COLOR_string__AbstractString___items].str; /* _items on <var_other:String> */
3838 var_its_items = var11;
3839 var12 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
3840 var_my_length = var12;
3841 var13 = var_other->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_other:String> */
3842 var_its_length = var13;
3843 { /* Inline kernel#Int#+ (var_curr_id_self,var_my_length) */
3844 var16 = var_curr_id_self + var_my_length;
3845 var14 = var16;
3846 goto RET_LABEL15;
3847 RET_LABEL15:(void)0;
3848 }
3849 var_max_iterations = var14;
3850 for(;;) {
3851 { /* Inline kernel#Int#< (var_curr_id_self,var_max_iterations) */
3852 /* Covariant cast for argument 0 (i) <var_max_iterations:Int> isa OTHER */
3853 /* <var_max_iterations:Int> isa OTHER */
3854 var19 = 1; /* easy <var_max_iterations:Int> isa OTHER*/
3855 if (!var19) {
3856 var_class_name22 = type_kernel__Int.name;
3857 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name22);
3858 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
3859 exit(1);
3860 }
3861 var23 = var_curr_id_self < var_max_iterations;
3862 var17 = var23;
3863 goto RET_LABEL18;
3864 RET_LABEL18:(void)0;
3865 }
3866 if (!var17) break;
3867 { /* Inline string#NativeString#[] (var_my_items,var_curr_id_self) */
3868 var26 = var_my_items[var_curr_id_self];
3869 var24 = var26;
3870 goto RET_LABEL25;
3871 RET_LABEL25:(void)0;
3872 }
3873 var_my_curr_char = var24;
3874 { /* Inline string#NativeString#[] (var_its_items,var_curr_id_other) */
3875 var29 = var_its_items[var_curr_id_other];
3876 var27 = var29;
3877 goto RET_LABEL28;
3878 RET_LABEL28:(void)0;
3879 }
3880 var_its_curr_char = var27;
3881 { /* Inline kernel#Char#!= (var_my_curr_char,var_its_curr_char) */
3882 var32 = var_my_curr_char == var_its_curr_char;
3883 var33 = !var32;
3884 var30 = var33;
3885 goto RET_LABEL31;
3886 RET_LABEL31:(void)0;
3887 }
3888 if (var30){
3889 { /* Inline kernel#Char#< (var_my_curr_char,var_its_curr_char) */
3890 /* Covariant cast for argument 0 (i) <var_its_curr_char:Char> isa OTHER */
3891 /* <var_its_curr_char:Char> isa OTHER */
3892 var36 = 1; /* easy <var_its_curr_char:Char> isa OTHER*/
3893 if (!var36) {
3894 var_class_name39 = type_kernel__Char.name;
3895 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name39);
3896 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 437);
3897 exit(1);
3898 }
3899 var40 = var_my_curr_char < var_its_curr_char;
3900 var34 = var40;
3901 goto RET_LABEL35;
3902 RET_LABEL35:(void)0;
3903 }
3904 if (var34){
3905 var41 = 1;
3906 var = var41;
3907 goto RET_LABEL;
3908 } else {
3909 }
3910 var42 = 0;
3911 var = var42;
3912 goto RET_LABEL;
3913 } else {
3914 }
3915 var43 = 1;
3916 { /* Inline kernel#Int#+ (var_curr_id_self,var43) */
3917 var46 = var_curr_id_self + var43;
3918 var44 = var46;
3919 goto RET_LABEL45;
3920 RET_LABEL45:(void)0;
3921 }
3922 var_curr_id_self = var44;
3923 var47 = 1;
3924 { /* Inline kernel#Int#+ (var_curr_id_other,var47) */
3925 var50 = var_curr_id_other + var47;
3926 var48 = var50;
3927 goto RET_LABEL49;
3928 RET_LABEL49:(void)0;
3929 }
3930 var_curr_id_other = var48;
3931 CONTINUE_label: (void)0;
3932 }
3933 BREAK_label: (void)0;
3934 { /* Inline kernel#Int#< (var_my_length,var_its_length) */
3935 /* Covariant cast for argument 0 (i) <var_its_length:Int> isa OTHER */
3936 /* <var_its_length:Int> isa OTHER */
3937 var53 = 1; /* easy <var_its_length:Int> isa OTHER*/
3938 if (!var53) {
3939 var_class_name56 = type_kernel__Int.name;
3940 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name56);
3941 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
3942 exit(1);
3943 }
3944 var57 = var_my_length < var_its_length;
3945 var51 = var57;
3946 goto RET_LABEL52;
3947 RET_LABEL52:(void)0;
3948 }
3949 var = var51;
3950 goto RET_LABEL;
3951 RET_LABEL:;
3952 return var;
3953 }
3954 /* method string#String#< for (self: Object, Comparable): Bool */
3955 short int VIRTUAL_string__String___60d(val* self, val* p0) {
3956 short int var /* : Bool */;
3957 short int var1 /* : Bool */;
3958 var1 = string__String___60d(self, p0);
3959 var = var1;
3960 RET_LABEL:;
3961 return var;
3962 }
3963 /* method string#String#+ for (self: String, String): String */
3964 val* string__String___43d(val* self, val* p0) {
3965 val* var /* : String */;
3966 val* var_s /* var s: String */;
3967 long var1 /* : Int */;
3968 long var_my_length /* var my_length: Int */;
3969 long var2 /* : Int */;
3970 long var_its_length /* var its_length: Int */;
3971 long var3 /* : Int */;
3972 long var5 /* : Int */;
3973 long var_total_length /* var total_length: Int */;
3974 long var6 /* : Int */;
3975 long var8 /* : Int */;
3976 long var9 /* : Int */;
3977 long var10 /* : Int */;
3978 long var12 /* : Int */;
3979 char* var13 /* : NativeString */;
3980 char* var_target_string /* var target_string: NativeString */;
3981 char* var14 /* : NativeString */;
3982 long var15 /* : Int */;
3983 long var16 /* : Int */;
3984 char* var18 /* : NativeString */;
3985 long var19 /* : Int */;
3986 char var21 /* : Char */;
3987 val* var23 /* : String */;
3988 var_s = p0;
3989 var1 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
3990 var_my_length = var1;
3991 var2 = var_s->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_s:String> */
3992 var_its_length = var2;
3993 { /* Inline kernel#Int#+ (var_my_length,var_its_length) */
3994 var5 = var_my_length + var_its_length;
3995 var3 = var5;
3996 goto RET_LABEL4;
3997 RET_LABEL4:(void)0;
3998 }
3999 var_total_length = var3;
4000 { /* Inline kernel#Int#+ (var_my_length,var_its_length) */
4001 var8 = var_my_length + var_its_length;
4002 var6 = var8;
4003 goto RET_LABEL7;
4004 RET_LABEL7:(void)0;
4005 }
4006 var9 = 1;
4007 { /* Inline kernel#Int#+ (var6,var9) */
4008 var12 = var6 + var9;
4009 var10 = var12;
4010 goto RET_LABEL11;
4011 RET_LABEL11:(void)0;
4012 }
4013 var13 = ((char* (*)(val*, long))(self->class->vft[COLOR_string__StringCapable__calloc_string]))(self, var10) /* calloc_string on <self:String>*/;
4014 var_target_string = var13;
4015 var14 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
4016 var15 = self->attrs[COLOR_string__String___index_from].l; /* _index_from on <self:String> */
4017 var16 = 0;
4018 { /* Inline string#NativeString#copy_to (var14,var_target_string,var_my_length,var15,var16) */
4019 memcpy(var_target_string+var16,var14+var15,var_my_length);
4020 RET_LABEL17:(void)0;
4021 }
4022 var18 = var_s->attrs[COLOR_string__AbstractString___items].str; /* _items on <var_s:String> */
4023 var19 = var_s->attrs[COLOR_string__String___index_from].l; /* _index_from on <var_s:String> */
4024 { /* Inline string#NativeString#copy_to (var18,var_target_string,var_its_length,var19,var_my_length) */
4025 memcpy(var_target_string+var_my_length,var18+var19,var_its_length);
4026 RET_LABEL20:(void)0;
4027 }
4028 var21 = '\0';
4029 { /* Inline string#NativeString#[]= (var_target_string,var_total_length,var21) */
4030 var_target_string[var_total_length]=var21;
4031 RET_LABEL22:(void)0;
4032 }
4033 var23 = string__NativeString__to_s_with_length(var_target_string, var_total_length);
4034 var = var23;
4035 goto RET_LABEL;
4036 RET_LABEL:;
4037 return var;
4038 }
4039 /* method string#String#+ for (self: Object, String): String */
4040 val* VIRTUAL_string__String___43d(val* self, val* p0) {
4041 val* var /* : String */;
4042 val* var1 /* : String */;
4043 var1 = string__String___43d(self, p0);
4044 var = var1;
4045 RET_LABEL:;
4046 return var;
4047 }
4048 /* method string#String#* for (self: String, Int): String */
4049 val* string__String___42d(val* self, long p0) {
4050 val* var /* : String */;
4051 long var_i /* var i: Int */;
4052 long var1 /* : Int */;
4053 short int var2 /* : Bool */;
4054 short int var4 /* : Bool */;
4055 int cltype;
4056 int idtype;
4057 const char* var_class_name;
4058 short int var5 /* : Bool */;
4059 long var6 /* : Int */;
4060 long var_my_length /* var my_length: Int */;
4061 long var7 /* : Int */;
4062 long var9 /* : Int */;
4063 long var_final_length /* var final_length: Int */;
4064 char* var10 /* : NativeString */;
4065 char* var_my_items /* var my_items: NativeString */;
4066 long var11 /* : Int */;
4067 long var12 /* : Int */;
4068 long var14 /* : Int */;
4069 char* var15 /* : NativeString */;
4070 char* var_target_string /* var target_string: NativeString */;
4071 char var16 /* : Char */;
4072 long var18 /* : Int */;
4073 long var_current_last /* var current_last: Int */;
4074 val* var19 /* : Range[Int] */;
4075 long var20 /* : Int */;
4076 val* var21 /* : Discrete */;
4077 val* var22 /* : Discrete */;
4078 val* var23 /* : Iterator[nullable Object] */;
4079 short int var24 /* : Bool */;
4080 val* var25 /* : nullable Object */;
4081 long var_iteration /* var iteration: Int */;
4082 long var26 /* : Int */;
4083 long var27 /* : Int */;
4084 long var29 /* : Int */;
4085 long var31 /* : Int */;
4086 val* var32 /* : String */;
4087 var_i = p0;
4088 var1 = 0;
4089 { /* Inline kernel#Int#>= (var_i,var1) */
4090 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
4091 /* <var1:Int> isa OTHER */
4092 var4 = 1; /* easy <var1:Int> isa OTHER*/
4093 if (!var4) {
4094 var_class_name = type_kernel__Int.name;
4095 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
4096 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
4097 exit(1);
4098 }
4099 var5 = var_i >= var1;
4100 var2 = var5;
4101 goto RET_LABEL3;
4102 RET_LABEL3:(void)0;
4103 }
4104 if (!var2) {
4105 fprintf(stderr, "Runtime error: %s", "Assert failed");
4106 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 635);
4107 exit(1);
4108 }
4109 var6 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
4110 var_my_length = var6;
4111 { /* Inline kernel#Int#* (var_my_length,var_i) */
4112 var9 = var_my_length * var_i;
4113 var7 = var9;
4114 goto RET_LABEL8;
4115 RET_LABEL8:(void)0;
4116 }
4117 var_final_length = var7;
4118 var10 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
4119 var_my_items = var10;
4120 var11 = 1;
4121 { /* Inline kernel#Int#+ (var_final_length,var11) */
4122 var14 = var_final_length + var11;
4123 var12 = var14;
4124 goto RET_LABEL13;
4125 RET_LABEL13:(void)0;
4126 }
4127 var15 = ((char* (*)(val*, long))(self->class->vft[COLOR_string__StringCapable__calloc_string]))(self, var12) /* calloc_string on <self:String>*/;
4128 var_target_string = var15;
4129 var16 = '\0';
4130 { /* Inline string#NativeString#[]= (var_target_string,var_final_length,var16) */
4131 var_target_string[var_final_length]=var16;
4132 RET_LABEL17:(void)0;
4133 }
4134 var18 = 0;
4135 var_current_last = var18;
4136 var19 = NEW_range__Range(&type_range__Rangekernel__Int);
4137 var20 = 1;
4138 var21 = BOX_kernel__Int(var20); /* autobox from Int to Discrete */
4139 var22 = BOX_kernel__Int(var_i); /* autobox from Int to Discrete */
4140 ((void (*)(val*, val*, val*))(var19->class->vft[COLOR_range__Range__init]))(var19, var21, var22) /* init on <var19:Range[Int]>*/;
4141 CHECK_NEW_range__Range(var19);
4142 var23 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_collection__Collection__iterator]))(var19) /* iterator on <var19:Range[Int]>*/;
4143 for(;;) {
4144 var24 = ((short int (*)(val*))(var23->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var23) /* is_ok on <var23:Iterator[nullable Object]>*/;
4145 if(!var24) break;
4146 var25 = ((val* (*)(val*))(var23->class->vft[COLOR_abstract_collection__Iterator__item]))(var23) /* item on <var23:Iterator[nullable Object]>*/;
4147 var26 = ((struct instance_kernel__Int*)var25)->value; /* autounbox from nullable Object to Int */;
4148 var_iteration = var26;
4149 var27 = 0;
4150 { /* Inline string#NativeString#copy_to (var_my_items,var_target_string,var_my_length,var27,var_current_last) */
4151 memcpy(var_target_string+var_current_last,var_my_items+var27,var_my_length);
4152 RET_LABEL28:(void)0;
4153 }
4154 { /* Inline kernel#Int#+ (var_current_last,var_my_length) */
4155 var31 = var_current_last + var_my_length;
4156 var29 = var31;
4157 goto RET_LABEL30;
4158 RET_LABEL30:(void)0;
4159 }
4160 var_current_last = var29;
4161 CONTINUE_label: (void)0;
4162 ((void (*)(val*))(var23->class->vft[COLOR_abstract_collection__Iterator__next]))(var23) /* next on <var23:Iterator[nullable Object]>*/;
4163 }
4164 BREAK_label: (void)0;
4165 var32 = string__NativeString__to_s_with_length(var_target_string, var_final_length);
4166 var = var32;
4167 goto RET_LABEL;
4168 RET_LABEL:;
4169 return var;
4170 }
4171 /* method string#String#* for (self: Object, Int): String */
4172 val* VIRTUAL_string__String___42d(val* self, long p0) {
4173 val* var /* : String */;
4174 val* var1 /* : String */;
4175 var1 = string__String___42d(self, p0);
4176 var = var1;
4177 RET_LABEL:;
4178 return var;
4179 }
4180 /* method string#String#to_s for (self: String): String */
4181 val* string__String__to_s(val* self) {
4182 val* var /* : String */;
4183 var = self;
4184 goto RET_LABEL;
4185 RET_LABEL:;
4186 return var;
4187 }
4188 /* method string#String#to_s for (self: Object): String */
4189 val* VIRTUAL_string__String__to_s(val* self) {
4190 val* var /* : String */;
4191 val* var1 /* : String */;
4192 var1 = string__String__to_s(self);
4193 var = var1;
4194 RET_LABEL:;
4195 return var;
4196 }
4197 /* method string#String#hash for (self: String): Int */
4198 long string__String__hash(val* self) {
4199 long var /* : Int */;
4200 long var1 /* : Int */;
4201 long var_h /* var h: Int */;
4202 long var2 /* : Int */;
4203 long var3 /* : Int */;
4204 long var4 /* : Int */;
4205 long var6 /* : Int */;
4206 long var_i /* var i: Int */;
4207 char* var7 /* : NativeString */;
4208 char* var_myitems /* var myitems: NativeString */;
4209 long var8 /* : Int */;
4210 long var_strStart /* var strStart: Int */;
4211 long var9 /* : Int */;
4212 long var11 /* : Int */;
4213 short int var12 /* : Bool */;
4214 short int var14 /* : Bool */;
4215 int cltype;
4216 int idtype;
4217 const char* var_class_name;
4218 short int var15 /* : Bool */;
4219 long var16 /* : Int */;
4220 long var17 /* : Int */;
4221 long var19 /* : Int */;
4222 long var20 /* : Int */;
4223 long var22 /* : Int */;
4224 char* var23 /* : NativeString */;
4225 char var24 /* : Char */;
4226 char var26 /* : Char */;
4227 long var27 /* : Int */;
4228 long var29 /* : Int */;
4229 long var30 /* : Int */;
4230 long var32 /* : Int */;
4231 long var33 /* : Int */;
4232 long var34 /* : Int */;
4233 long var36 /* : Int */;
4234 var1 = 5381;
4235 var_h = var1;
4236 var2 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
4237 var3 = 1;
4238 { /* Inline kernel#Int#- (var2,var3) */
4239 var6 = var2 - var3;
4240 var4 = var6;
4241 goto RET_LABEL5;
4242 RET_LABEL5:(void)0;
4243 }
4244 var_i = var4;
4245 var7 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
4246 var_myitems = var7;
4247 var8 = self->attrs[COLOR_string__String___index_from].l; /* _index_from on <self:String> */
4248 var_strStart = var8;
4249 { /* Inline kernel#Int#+ (var_i,var_strStart) */
4250 var11 = var_i + var_strStart;
4251 var9 = var11;
4252 goto RET_LABEL10;
4253 RET_LABEL10:(void)0;
4254 }
4255 var_i = var9;
4256 for(;;) {
4257 { /* Inline kernel#Int#>= (var_i,var_strStart) */
4258 /* Covariant cast for argument 0 (i) <var_strStart:Int> isa OTHER */
4259 /* <var_strStart:Int> isa OTHER */
4260 var14 = 1; /* easy <var_strStart:Int> isa OTHER*/
4261 if (!var14) {
4262 var_class_name = type_kernel__Int.name;
4263 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
4264 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
4265 exit(1);
4266 }
4267 var15 = var_i >= var_strStart;
4268 var12 = var15;
4269 goto RET_LABEL13;
4270 RET_LABEL13:(void)0;
4271 }
4272 if (!var12) break;
4273 var16 = 32;
4274 { /* Inline kernel#Int#* (var_h,var16) */
4275 var19 = var_h * var16;
4276 var17 = var19;
4277 goto RET_LABEL18;
4278 RET_LABEL18:(void)0;
4279 }
4280 { /* Inline kernel#Int#+ (var17,var_h) */
4281 var22 = var17 + var_h;
4282 var20 = var22;
4283 goto RET_LABEL21;
4284 RET_LABEL21:(void)0;
4285 }
4286 var23 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
4287 { /* Inline string#NativeString#[] (var23,var_i) */
4288 var26 = var23[var_i];
4289 var24 = var26;
4290 goto RET_LABEL25;
4291 RET_LABEL25:(void)0;
4292 }
4293 { /* Inline kernel#Char#ascii (var24) */
4294 var29 = (unsigned char)var24;
4295 var27 = var29;
4296 goto RET_LABEL28;
4297 RET_LABEL28:(void)0;
4298 }
4299 { /* Inline kernel#Int#+ (var20,var27) */
4300 var32 = var20 + var27;
4301 var30 = var32;
4302 goto RET_LABEL31;
4303 RET_LABEL31:(void)0;
4304 }
4305 var_h = var30;
4306 var33 = 1;
4307 { /* Inline kernel#Int#- (var_i,var33) */
4308 var36 = var_i - var33;
4309 var34 = var36;
4310 goto RET_LABEL35;
4311 RET_LABEL35:(void)0;
4312 }
4313 var_i = var34;
4314 CONTINUE_label: (void)0;
4315 }
4316 BREAK_label: (void)0;
4317 var = var_h;
4318 goto RET_LABEL;
4319 RET_LABEL:;
4320 return var;
4321 }
4322 /* method string#String#hash for (self: Object): Int */
4323 long VIRTUAL_string__String__hash(val* self) {
4324 long var /* : Int */;
4325 long var1 /* : Int */;
4326 var1 = string__String__hash(self);
4327 var = var1;
4328 RET_LABEL:;
4329 return var;
4330 }
4331 /* method string#Buffer#[]= for (self: Buffer, Int, Char) */
4332 void string__Buffer___91d_93d_61d(val* self, long p0, char p1) {
4333 short int var /* : Bool */;
4334 int cltype;
4335 int idtype;
4336 const char* var_class_name;
4337 long var_index /* var index: Int */;
4338 char var_item /* var item: Char */;
4339 long var1 /* : Int */;
4340 short int var2 /* : Bool */;
4341 short int var4 /* : Bool */;
4342 val* var5 /* : nullable Object */;
4343 short int var6 /* : Bool */;
4344 long var7 /* : Int */;
4345 short int var8 /* : Bool */;
4346 short int var10 /* : Bool */;
4347 int cltype11;
4348 int idtype12;
4349 const char* var_class_name13;
4350 short int var14 /* : Bool */;
4351 short int var_ /* var : Bool */;
4352 long var15 /* : Int */;
4353 short int var16 /* : Bool */;
4354 short int var18 /* : Bool */;
4355 int cltype19;
4356 int idtype20;
4357 const char* var_class_name21;
4358 short int var22 /* : Bool */;
4359 char* var23 /* : NativeString */;
4360 /* Covariant cast for argument 1 (item) <p1:Char> isa Sequence#0 */
4361 /* <p1:Char> isa Sequence#0 */
4362 var = 1; /* easy <p1:Char> isa Sequence#0*/
4363 if (!var) {
4364 var_class_name = type_kernel__Char.name;
4365 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Sequence#0", var_class_name);
4366 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 688);
4367 exit(1);
4368 }
4369 var_index = p0;
4370 var_item = p1;
4371 var1 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:Buffer>*/;
4372 { /* Inline kernel#Int#== (var_index,var1) */
4373 var4 = var_index == var1;
4374 var2 = var4;
4375 goto RET_LABEL3;
4376 RET_LABEL3:(void)0;
4377 }
4378 if (var2){
4379 var5 = BOX_kernel__Char(var_item); /* autobox from Char to nullable Object */
4380 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(self, var5) /* add on <self:Buffer>*/;
4381 goto RET_LABEL;
4382 } else {
4383 }
4384 var7 = 0;
4385 { /* Inline kernel#Int#>= (var_index,var7) */
4386 /* Covariant cast for argument 0 (i) <var7:Int> isa OTHER */
4387 /* <var7:Int> isa OTHER */
4388 var10 = 1; /* easy <var7:Int> isa OTHER*/
4389 if (!var10) {
4390 var_class_name13 = type_kernel__Int.name;
4391 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name13);
4392 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
4393 exit(1);
4394 }
4395 var14 = var_index >= var7;
4396 var8 = var14;
4397 goto RET_LABEL9;
4398 RET_LABEL9:(void)0;
4399 }
4400 var_ = var8;
4401 if (var8){
4402 var15 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:Buffer>*/;
4403 { /* Inline kernel#Int#< (var_index,var15) */
4404 /* Covariant cast for argument 0 (i) <var15:Int> isa OTHER */
4405 /* <var15:Int> isa OTHER */
4406 var18 = 1; /* easy <var15:Int> isa OTHER*/
4407 if (!var18) {
4408 var_class_name21 = type_kernel__Int.name;
4409 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name21);
4410 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
4411 exit(1);
4412 }
4413 var22 = var_index < var15;
4414 var16 = var22;
4415 goto RET_LABEL17;
4416 RET_LABEL17:(void)0;
4417 }
4418 var6 = var16;
4419 } else {
4420 var6 = var_;
4421 }
4422 if (!var6) {
4423 fprintf(stderr, "Runtime error: %s", "Assert failed");
4424 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 694);
4425 exit(1);
4426 }
4427 var23 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:Buffer> */
4428 { /* Inline string#NativeString#[]= (var23,var_index,var_item) */
4429 var23[var_index]=var_item;
4430 RET_LABEL24:(void)0;
4431 }
4432 RET_LABEL:;
4433 }
4434 /* method string#Buffer#[]= for (self: Object, Int, nullable Object) */
4435 void VIRTUAL_string__Buffer___91d_93d_61d(val* self, long p0, val* p1) {
4436 char var /* : Char */;
4437 var = ((struct instance_kernel__Char*)p1)->value; /* autounbox from nullable Object to Char */;
4438 string__Buffer___91d_93d_61d(self, p0, var);
4439 RET_LABEL:;
4440 }
4441 /* method string#Buffer#add for (self: Buffer, Char) */
4442 void string__Buffer__add(val* self, char p0) {
4443 short int var /* : Bool */;
4444 int cltype;
4445 int idtype;
4446 const char* var_class_name;
4447 char var_c /* var c: Char */;
4448 long var1 /* : Int */;
4449 long var2 /* : Int */;
4450 short int var3 /* : Bool */;
4451 short int var5 /* : Bool */;
4452 int cltype6;
4453 int idtype7;
4454 const char* var_class_name8;
4455 short int var9 /* : Bool */;
4456 long var10 /* : Int */;
4457 long var11 /* : Int */;
4458 long var12 /* : Int */;
4459 long var14 /* : Int */;
4460 char* var15 /* : NativeString */;
4461 long var16 /* : Int */;
4462 val* var_ /* var : Buffer */;
4463 long var18 /* : Int */;
4464 long var19 /* : Int */;
4465 long var20 /* : Int */;
4466 long var22 /* : Int */;
4467 /* Covariant cast for argument 0 (c) <p0:Char> isa SimpleCollection#0 */
4468 /* <p0:Char> isa SimpleCollection#0 */
4469 var = 1; /* easy <p0:Char> isa SimpleCollection#0*/
4470 if (!var) {
4471 var_class_name = type_kernel__Char.name;
4472 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "SimpleCollection#0", var_class_name);
4473 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 698);
4474 exit(1);
4475 }
4476 var_c = p0;
4477 var1 = self->attrs[COLOR_string__Buffer___capacity].l; /* _capacity on <self:Buffer> */
4478 var2 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:Buffer>*/;
4479 { /* Inline kernel#Int#<= (var1,var2) */
4480 /* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
4481 /* <var2:Int> isa OTHER */
4482 var5 = 1; /* easy <var2:Int> isa OTHER*/
4483 if (!var5) {
4484 var_class_name8 = type_kernel__Int.name;
4485 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name8);
4486 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
4487 exit(1);
4488 }
4489 var9 = var1 <= var2;
4490 var3 = var9;
4491 goto RET_LABEL4;
4492 RET_LABEL4:(void)0;
4493 }
4494 if (var3){
4495 var10 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:Buffer>*/;
4496 var11 = 5;
4497 { /* Inline kernel#Int#+ (var10,var11) */
4498 var14 = var10 + var11;
4499 var12 = var14;
4500 goto RET_LABEL13;
4501 RET_LABEL13:(void)0;
4502 }
4503 ((void (*)(val*, long))(self->class->vft[COLOR_array__AbstractArray__enlarge]))(self, var12) /* enlarge on <self:Buffer>*/;
4504 } else {
4505 }
4506 var15 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:Buffer> */
4507 var16 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:Buffer>*/;
4508 { /* Inline string#NativeString#[]= (var15,var16,var_c) */
4509 var15[var16]=var_c;
4510 RET_LABEL17:(void)0;
4511 }
4512 var_ = self;
4513 var18 = var_->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_:Buffer> */
4514 var19 = 1;
4515 { /* Inline kernel#Int#+ (var18,var19) */
4516 var22 = var18 + var19;
4517 var20 = var22;
4518 goto RET_LABEL21;
4519 RET_LABEL21:(void)0;
4520 }
4521 var_->attrs[COLOR_array__AbstractArrayRead___length].l = var20; /* _length on <var_:Buffer> */
4522 RET_LABEL:;
4523 }
4524 /* method string#Buffer#add for (self: Object, nullable Object) */
4525 void VIRTUAL_string__Buffer__add(val* self, val* p0) {
4526 char var /* : Char */;
4527 var = ((struct instance_kernel__Char*)p0)->value; /* autounbox from nullable Object to Char */;
4528 string__Buffer__add(self, var);
4529 RET_LABEL:;
4530 }
4531 /* method string#Buffer#enlarge for (self: Buffer, Int) */
4532 void string__Buffer__enlarge(val* self, long p0) {
4533 long var_cap /* var cap: Int */;
4534 long var /* : Int */;
4535 long var_c /* var c: Int */;
4536 short int var1 /* : Bool */;
4537 short int var3 /* : Bool */;
4538 int cltype;
4539 int idtype;
4540 const char* var_class_name;
4541 short int var4 /* : Bool */;
4542 short int var5 /* : Bool */;
4543 short int var7 /* : Bool */;
4544 int cltype8;
4545 int idtype9;
4546 const char* var_class_name10;
4547 short int var11 /* : Bool */;
4548 long var12 /* : Int */;
4549 long var13 /* : Int */;
4550 long var15 /* : Int */;
4551 long var16 /* : Int */;
4552 long var17 /* : Int */;
4553 long var19 /* : Int */;
4554 long var20 /* : Int */;
4555 long var21 /* : Int */;
4556 long var23 /* : Int */;
4557 char* var24 /* : NativeString */;
4558 char* var_a /* var a: NativeString */;
4559 char* var25 /* : NativeString */;
4560 long var26 /* : Int */;
4561 long var27 /* : Int */;
4562 long var28 /* : Int */;
4563 var_cap = p0;
4564 var = self->attrs[COLOR_string__Buffer___capacity].l; /* _capacity on <self:Buffer> */
4565 var_c = var;
4566 { /* Inline kernel#Int#<= (var_cap,var_c) */
4567 /* Covariant cast for argument 0 (i) <var_c:Int> isa OTHER */
4568 /* <var_c:Int> isa OTHER */
4569 var3 = 1; /* easy <var_c:Int> isa OTHER*/
4570 if (!var3) {
4571 var_class_name = type_kernel__Int.name;
4572 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
4573 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
4574 exit(1);
4575 }
4576 var4 = var_cap <= var_c;
4577 var1 = var4;
4578 goto RET_LABEL2;
4579 RET_LABEL2:(void)0;
4580 }
4581 if (var1){
4582 goto RET_LABEL;
4583 } else {
4584 }
4585 for(;;) {
4586 { /* Inline kernel#Int#<= (var_c,var_cap) */
4587 /* Covariant cast for argument 0 (i) <var_cap:Int> isa OTHER */
4588 /* <var_cap:Int> isa OTHER */
4589 var7 = 1; /* easy <var_cap:Int> isa OTHER*/
4590 if (!var7) {
4591 var_class_name10 = type_kernel__Int.name;
4592 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name10);
4593 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
4594 exit(1);
4595 }
4596 var11 = var_c <= var_cap;
4597 var5 = var11;
4598 goto RET_LABEL6;
4599 RET_LABEL6:(void)0;
4600 }
4601 if (!var5) break;
4602 var12 = 2;
4603 { /* Inline kernel#Int#* (var_c,var12) */
4604 var15 = var_c * var12;
4605 var13 = var15;
4606 goto RET_LABEL14;
4607 RET_LABEL14:(void)0;
4608 }
4609 var16 = 2;
4610 { /* Inline kernel#Int#+ (var13,var16) */
4611 var19 = var13 + var16;
4612 var17 = var19;
4613 goto RET_LABEL18;
4614 RET_LABEL18:(void)0;
4615 }
4616 var_c = var17;
4617 CONTINUE_label: (void)0;
4618 }
4619 BREAK_label: (void)0;
4620 var20 = 1;
4621 { /* Inline kernel#Int#+ (var_c,var20) */
4622 var23 = var_c + var20;
4623 var21 = var23;
4624 goto RET_LABEL22;
4625 RET_LABEL22:(void)0;
4626 }
4627 var24 = ((char* (*)(val*, long))(self->class->vft[COLOR_string__StringCapable__calloc_string]))(self, var21) /* calloc_string on <self:Buffer>*/;
4628 var_a = var24;
4629 var25 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:Buffer> */
4630 var26 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:Buffer>*/;
4631 var27 = 0;
4632 var28 = 0;
4633 { /* Inline string#NativeString#copy_to (var25,var_a,var26,var27,var28) */
4634 memcpy(var_a+var28,var25+var27,var26);
4635 RET_LABEL29:(void)0;
4636 }
4637 self->attrs[COLOR_string__AbstractString___items].str = var_a; /* _items on <self:Buffer> */
4638 self->attrs[COLOR_string__Buffer___capacity].l = var_c; /* _capacity on <self:Buffer> */
4639 RET_LABEL:;
4640 }
4641 /* method string#Buffer#enlarge for (self: Object, Int) */
4642 void VIRTUAL_string__Buffer__enlarge(val* self, long p0) {
4643 string__Buffer__enlarge(self, p0);
4644 RET_LABEL:;
4645 }
4646 /* method string#Buffer#append for (self: Buffer, Collection[Char]) */
4647 void string__Buffer__append(val* self, val* p0) {
4648 short int var /* : Bool */;
4649 int cltype;
4650 int idtype;
4651 const char* var_class_name;
4652 val* var_s /* var s: Collection[Char] */;
4653 short int var1 /* : Bool */;
4654 int cltype2;
4655 int idtype3;
4656 long var4 /* : Int */;
4657 long var_sl /* var sl: Int */;
4658 long var5 /* : Int */;
4659 long var6 /* : Int */;
4660 long var7 /* : Int */;
4661 long var9 /* : Int */;
4662 short int var10 /* : Bool */;
4663 short int var12 /* : Bool */;
4664 int cltype13;
4665 int idtype14;
4666 const char* var_class_name15;
4667 short int var16 /* : Bool */;
4668 long var17 /* : Int */;
4669 long var18 /* : Int */;
4670 long var20 /* : Int */;
4671 char* var21 /* : NativeString */;
4672 char* var22 /* : NativeString */;
4673 long var23 /* : Int */;
4674 long var24 /* : Int */;
4675 val* var_ /* var : Buffer */;
4676 long var26 /* : Int */;
4677 long var27 /* : Int */;
4678 long var29 /* : Int */;
4679 /* Covariant cast for argument 0 (s) <p0:Collection[Char]> isa Collection[Sequence#0] */
4680 /* <p0:Collection[Char]> isa Collection[Sequence#0] */
4681 var = 1; /* easy <p0:Collection[Char]> isa Collection[Sequence#0]*/
4682 if (!var) {
4683 var_class_name = p0 == NULL ? "null" : p0->type->name;
4684 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection[Sequence#0]", var_class_name);
4685 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 716);
4686 exit(1);
4687 }
4688 var_s = p0;
4689 /* <var_s:Collection[Char]> isa String */
4690 cltype2 = type_string__String.color;
4691 idtype3 = type_string__String.id;
4692 if(cltype2 >= var_s->type->table_size) {
4693 var1 = 0;
4694 } else {
4695 var1 = var_s->type->type_table[cltype2] == idtype3;
4696 }
4697 if (var1){
4698 var4 = ((long (*)(val*))(var_s->class->vft[COLOR_abstract_collection__Collection__length]))(var_s) /* length on <var_s:Collection[Char](String)>*/;
4699 var_sl = var4;
4700 var5 = self->attrs[COLOR_string__Buffer___capacity].l; /* _capacity on <self:Buffer> */
4701 var6 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:Buffer> */
4702 { /* Inline kernel#Int#+ (var6,var_sl) */
4703 var9 = var6 + var_sl;
4704 var7 = var9;
4705 goto RET_LABEL8;
4706 RET_LABEL8:(void)0;
4707 }
4708 { /* Inline kernel#Int#< (var5,var7) */
4709 /* Covariant cast for argument 0 (i) <var7:Int> isa OTHER */
4710 /* <var7:Int> isa OTHER */
4711 var12 = 1; /* easy <var7:Int> isa OTHER*/
4712 if (!var12) {
4713 var_class_name15 = type_kernel__Int.name;
4714 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name15);
4715 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
4716 exit(1);
4717 }
4718 var16 = var5 < var7;
4719 var10 = var16;
4720 goto RET_LABEL11;
4721 RET_LABEL11:(void)0;
4722 }
4723 if (var10){
4724 var17 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:Buffer> */
4725 { /* Inline kernel#Int#+ (var17,var_sl) */
4726 var20 = var17 + var_sl;
4727 var18 = var20;
4728 goto RET_LABEL19;
4729 RET_LABEL19:(void)0;
4730 }
4731 ((void (*)(val*, long))(self->class->vft[COLOR_array__AbstractArray__enlarge]))(self, var18) /* enlarge on <self:Buffer>*/;
4732 } else {
4733 }
4734 var21 = ((char* (*)(val*))(var_s->class->vft[COLOR_string__AbstractString__items]))(var_s) /* items on <var_s:Collection[Char](String)>*/;
4735 var22 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:Buffer> */
4736 var23 = var_s->attrs[COLOR_string__String___index_from].l; /* _index_from on <var_s:Collection[Char](String)> */
4737 var24 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:Buffer> */
4738 { /* Inline string#NativeString#copy_to (var21,var22,var_sl,var23,var24) */
4739 memcpy(var22+var24,var21+var23,var_sl);
4740 RET_LABEL25:(void)0;
4741 }
4742 var_ = self;
4743 var26 = var_->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_:Buffer> */
4744 { /* Inline kernel#Int#+ (var26,var_sl) */
4745 var29 = var26 + var_sl;
4746 var27 = var29;
4747 goto RET_LABEL28;
4748 RET_LABEL28:(void)0;
4749 }
4750 var_->attrs[COLOR_array__AbstractArrayRead___length].l = var27; /* _length on <var_:Buffer> */
4751 } else {
4752 ((void (*)(val*, val*))(self->class->vft[COLOR_string__Buffer__append]))(self, p0) /* append on <self:Buffer>*/;
4753 }
4754 RET_LABEL:;
4755 }
4756 /* method string#Buffer#append for (self: Object, Collection[nullable Object]) */
4757 void VIRTUAL_string__Buffer__append(val* self, val* p0) {
4758 string__Buffer__append(self, p0);
4759 RET_LABEL:;
4760 }
4761 /* method string#Buffer#to_s for (self: Buffer): String */
4762 val* string__Buffer__to_s(val* self) {
4763 val* var /* : String */;
4764 long var1 /* : Int */;
4765 long var_l /* var l: Int */;
4766 long var2 /* : Int */;
4767 long var3 /* : Int */;
4768 long var5 /* : Int */;
4769 char* var6 /* : NativeString */;
4770 char* var_a /* var a: NativeString */;
4771 char* var7 /* : NativeString */;
4772 long var8 /* : Int */;
4773 long var9 /* : Int */;
4774 long var11 /* : Int */;
4775 char var12 /* : Char */;
4776 long var14 /* : Int */;
4777 val* var15 /* : String */;
4778 var1 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:Buffer>*/;
4779 var_l = var1;
4780 var2 = 1;
4781 { /* Inline kernel#Int#+ (var_l,var2) */
4782 var5 = var_l + var2;
4783 var3 = var5;
4784 goto RET_LABEL4;
4785 RET_LABEL4:(void)0;
4786 }
4787 var6 = ((char* (*)(val*, long))(self->class->vft[COLOR_string__StringCapable__calloc_string]))(self, var3) /* calloc_string on <self:Buffer>*/;
4788 var_a = var6;
4789 var7 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:Buffer> */
4790 var8 = 0;
4791 var9 = 0;
4792 { /* Inline string#NativeString#copy_to (var7,var_a,var_l,var8,var9) */
4793 memcpy(var_a+var9,var7+var8,var_l);
4794 RET_LABEL10:(void)0;
4795 }
4796 var11 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:Buffer>*/;
4797 var12 = '\0';
4798 { /* Inline string#NativeString#[]= (var_a,var11,var12) */
4799 var_a[var11]=var12;
4800 RET_LABEL13:(void)0;
4801 }
4802 var14 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:Buffer>*/;
4803 var15 = string__NativeString__to_s_with_length(var_a, var14);
4804 var = var15;
4805 goto RET_LABEL;
4806 RET_LABEL:;
4807 return var;
4808 }
4809 /* method string#Buffer#to_s for (self: Object): String */
4810 val* VIRTUAL_string__Buffer__to_s(val* self) {
4811 val* var /* : String */;
4812 val* var1 /* : String */;
4813 var1 = string__Buffer__to_s(self);
4814 var = var1;
4815 RET_LABEL:;
4816 return var;
4817 }
4818 /* method string#Buffer#< for (self: Buffer, String): Bool */
4819 short int string__Buffer___60d(val* self, val* p0) {
4820 short int var /* : Bool */;
4821 short int var1 /* : Bool */;
4822 int cltype;
4823 int idtype;
4824 const struct type* type_struct;
4825 const char* var_class_name;
4826 val* var_s /* var s: String */;
4827 long var2 /* : Int */;
4828 long var_i /* var i: Int */;
4829 long var3 /* : Int */;
4830 long var_l1 /* var l1: Int */;
4831 long var4 /* : Int */;
4832 long var_l2 /* var l2: Int */;
4833 short int var5 /* : Bool */;
4834 short int var6 /* : Bool */;
4835 short int var8 /* : Bool */;
4836 int cltype9;
4837 int idtype10;
4838 const char* var_class_name11;
4839 short int var12 /* : Bool */;
4840 short int var_ /* var : Bool */;
4841 short int var13 /* : Bool */;
4842 short int var15 /* : Bool */;
4843 int cltype16;
4844 int idtype17;
4845 const char* var_class_name18;
4846 short int var19 /* : Bool */;
4847 val* var20 /* : nullable Object */;
4848 long var21 /* : Int */;
4849 char var23 /* : Char */;
4850 long var24 /* : Int */;
4851 long var_c1 /* var c1: Int */;
4852 val* var25 /* : nullable Object */;
4853 long var26 /* : Int */;
4854 char var28 /* : Char */;
4855 long var29 /* : Int */;
4856 long var_c2 /* var c2: Int */;
4857 short int var30 /* : Bool */;
4858 short int var32 /* : Bool */;
4859 int cltype33;
4860 int idtype34;
4861 const char* var_class_name35;
4862 short int var36 /* : Bool */;
4863 short int var37 /* : Bool */;
4864 short int var38 /* : Bool */;
4865 short int var40 /* : Bool */;
4866 int cltype41;
4867 int idtype42;
4868 const char* var_class_name43;
4869 short int var44 /* : Bool */;
4870 short int var45 /* : Bool */;
4871 long var46 /* : Int */;
4872 long var47 /* : Int */;
4873 long var49 /* : Int */;
4874 short int var50 /* : Bool */;
4875 short int var52 /* : Bool */;
4876 int cltype53;
4877 int idtype54;
4878 const char* var_class_name55;
4879 short int var56 /* : Bool */;
4880 short int var57 /* : Bool */;
4881 short int var58 /* : Bool */;
4882 /* Covariant cast for argument 0 (s) <p0:String> isa OTHER */
4883 /* <p0:String> isa OTHER */
4884 type_struct = self->type->resolution_table->types[COLOR_kernel__Comparable_VTOTHER];
4885 cltype = type_struct->color;
4886 idtype = type_struct->id;
4887 if(cltype >= p0->type->table_size) {
4888 var1 = 0;
4889 } else {
4890 var1 = p0->type->type_table[cltype] == idtype;
4891 }
4892 if (!var1) {
4893 var_class_name = p0 == NULL ? "null" : p0->type->name;
4894 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
4895 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 740);
4896 exit(1);
4897 }
4898 var_s = p0;
4899 var2 = 0;
4900 var_i = var2;
4901 var3 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:Buffer>*/;
4902 var_l1 = var3;
4903 var4 = ((long (*)(val*))(var_s->class->vft[COLOR_abstract_collection__Collection__length]))(var_s) /* length on <var_s:String>*/;
4904 var_l2 = var4;
4905 for(;;) {
4906 { /* Inline kernel#Int#< (var_i,var_l1) */
4907 /* Covariant cast for argument 0 (i) <var_l1:Int> isa OTHER */
4908 /* <var_l1:Int> isa OTHER */
4909 var8 = 1; /* easy <var_l1:Int> isa OTHER*/
4910 if (!var8) {
4911 var_class_name11 = type_kernel__Int.name;
4912 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name11);
4913 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
4914 exit(1);
4915 }
4916 var12 = var_i < var_l1;
4917 var6 = var12;
4918 goto RET_LABEL7;
4919 RET_LABEL7:(void)0;
4920 }
4921 var_ = var6;
4922 if (var6){
4923 { /* Inline kernel#Int#< (var_i,var_l2) */
4924 /* Covariant cast for argument 0 (i) <var_l2:Int> isa OTHER */
4925 /* <var_l2:Int> isa OTHER */
4926 var15 = 1; /* easy <var_l2:Int> isa OTHER*/
4927 if (!var15) {
4928 var_class_name18 = type_kernel__Int.name;
4929 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name18);
4930 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
4931 exit(1);
4932 }
4933 var19 = var_i < var_l2;
4934 var13 = var19;
4935 goto RET_LABEL14;
4936 RET_LABEL14:(void)0;
4937 }
4938 var5 = var13;
4939 } else {
4940 var5 = var_;
4941 }
4942 if (!var5) break;
4943 var20 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(self, var_i) /* [] on <self:Buffer>*/;
4944 { /* Inline kernel#Char#ascii (var20) */
4945 var23 = ((struct instance_kernel__Char*)var20)->value; /* autounbox from nullable Object to Char */;
4946 var24 = (unsigned char)var23;
4947 var21 = var24;
4948 goto RET_LABEL22;
4949 RET_LABEL22:(void)0;
4950 }
4951 var_c1 = var21;
4952 var25 = ((val* (*)(val*, long))(var_s->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_s, var_i) /* [] on <var_s:String>*/;
4953 { /* Inline kernel#Char#ascii (var25) */
4954 var28 = ((struct instance_kernel__Char*)var25)->value; /* autounbox from nullable Object to Char */;
4955 var29 = (unsigned char)var28;
4956 var26 = var29;
4957 goto RET_LABEL27;
4958 RET_LABEL27:(void)0;
4959 }
4960 var_c2 = var26;
4961 { /* Inline kernel#Int#< (var_c1,var_c2) */
4962 /* Covariant cast for argument 0 (i) <var_c2:Int> isa OTHER */
4963 /* <var_c2:Int> isa OTHER */
4964 var32 = 1; /* easy <var_c2:Int> isa OTHER*/
4965 if (!var32) {
4966 var_class_name35 = type_kernel__Int.name;
4967 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name35);
4968 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
4969 exit(1);
4970 }
4971 var36 = var_c1 < var_c2;
4972 var30 = var36;
4973 goto RET_LABEL31;
4974 RET_LABEL31:(void)0;
4975 }
4976 if (var30){
4977 var37 = 1;
4978 var = var37;
4979 goto RET_LABEL;
4980 } else {
4981 { /* Inline kernel#Int#< (var_c2,var_c1) */
4982 /* Covariant cast for argument 0 (i) <var_c1:Int> isa OTHER */
4983 /* <var_c1:Int> isa OTHER */
4984 var40 = 1; /* easy <var_c1:Int> isa OTHER*/
4985 if (!var40) {
4986 var_class_name43 = type_kernel__Int.name;
4987 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name43);
4988 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
4989 exit(1);
4990 }
4991 var44 = var_c2 < var_c1;
4992 var38 = var44;
4993 goto RET_LABEL39;
4994 RET_LABEL39:(void)0;
4995 }
4996 if (var38){
4997 var45 = 0;
4998 var = var45;
4999 goto RET_LABEL;
5000 } else {
5001 }
5002 }
5003 var46 = 1;
5004 { /* Inline kernel#Int#+ (var_i,var46) */
5005 var49 = var_i + var46;
5006 var47 = var49;
5007 goto RET_LABEL48;
5008 RET_LABEL48:(void)0;
5009 }
5010 var_i = var47;
5011 CONTINUE_label: (void)0;
5012 }
5013 BREAK_label: (void)0;
5014 { /* Inline kernel#Int#< (var_l1,var_l2) */
5015 /* Covariant cast for argument 0 (i) <var_l2:Int> isa OTHER */
5016 /* <var_l2:Int> isa OTHER */
5017 var52 = 1; /* easy <var_l2:Int> isa OTHER*/
5018 if (!var52) {
5019 var_class_name55 = type_kernel__Int.name;
5020 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name55);
5021 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
5022 exit(1);
5023 }
5024 var56 = var_l1 < var_l2;
5025 var50 = var56;
5026 goto RET_LABEL51;
5027 RET_LABEL51:(void)0;
5028 }
5029 if (var50){
5030 var57 = 1;
5031 var = var57;
5032 goto RET_LABEL;
5033 } else {
5034 var58 = 0;
5035 var = var58;
5036 goto RET_LABEL;
5037 }
5038 RET_LABEL:;
5039 return var;
5040 }
5041 /* method string#Buffer#< for (self: Object, Comparable): Bool */
5042 short int VIRTUAL_string__Buffer___60d(val* self, val* p0) {
5043 short int var /* : Bool */;
5044 short int var1 /* : Bool */;
5045 var1 = string__Buffer___60d(self, p0);
5046 var = var1;
5047 RET_LABEL:;
5048 return var;
5049 }
5050 /* method string#Buffer#init for (self: Buffer) */
5051 void string__Buffer__init(val* self) {
5052 long var /* : Int */;
5053 var = 5;
5054 ((void (*)(val*, long))(self->class->vft[COLOR_string__Buffer__with_capacity]))(self, var) /* with_capacity on <self:Buffer>*/;
5055 RET_LABEL:;
5056 }
5057 /* method string#Buffer#init for (self: Object) */
5058 void VIRTUAL_string__Buffer__init(val* self) {
5059 string__Buffer__init(self);
5060 RET_LABEL:;
5061 }
5062 /* method string#Buffer#from for (self: Buffer, String) */
5063 void string__Buffer__from(val* self, val* p0) {
5064 val* var_s /* var s: String */;
5065 long var /* : Int */;
5066 long var1 /* : Int */;
5067 long var2 /* : Int */;
5068 long var4 /* : Int */;
5069 long var5 /* : Int */;
5070 long var6 /* : Int */;
5071 char* var7 /* : NativeString */;
5072 char* var8 /* : NativeString */;
5073 char* var9 /* : NativeString */;
5074 long var10 /* : Int */;
5075 long var11 /* : Int */;
5076 long var12 /* : Int */;
5077 var_s = p0;
5078 ((void (*)(val*))(self->class->vft[COLOR_string__AbstractString__init]))(self) /* init on <self:Buffer>*/;
5079 ((void (*)(val*))(self->class->vft[COLOR_array__AbstractArray__init]))(self) /* init on <self:Buffer>*/;
5080 var = ((long (*)(val*))(var_s->class->vft[COLOR_abstract_collection__Collection__length]))(var_s) /* length on <var_s:String>*/;
5081 var1 = 1;
5082 { /* Inline kernel#Int#+ (var,var1) */
5083 var4 = var + var1;
5084 var2 = var4;
5085 goto RET_LABEL3;
5086 RET_LABEL3:(void)0;
5087 }
5088 self->attrs[COLOR_string__Buffer___capacity].l = var2; /* _capacity on <self:Buffer> */
5089 var5 = ((long (*)(val*))(var_s->class->vft[COLOR_abstract_collection__Collection__length]))(var_s) /* length on <var_s:String>*/;
5090 self->attrs[COLOR_array__AbstractArrayRead___length].l = var5; /* _length on <self:Buffer> */
5091 var6 = self->attrs[COLOR_string__Buffer___capacity].l; /* _capacity on <self:Buffer> */
5092 var7 = ((char* (*)(val*, long))(self->class->vft[COLOR_string__StringCapable__calloc_string]))(self, var6) /* calloc_string on <self:Buffer>*/;
5093 self->attrs[COLOR_string__AbstractString___items].str = var7; /* _items on <self:Buffer> */
5094 var8 = ((char* (*)(val*))(var_s->class->vft[COLOR_string__AbstractString__items]))(var_s) /* items on <var_s:String>*/;
5095 var9 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:Buffer> */
5096 var10 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:Buffer> */
5097 var11 = var_s->attrs[COLOR_string__String___index_from].l; /* _index_from on <var_s:String> */
5098 var12 = 0;
5099 { /* Inline string#NativeString#copy_to (var8,var9,var10,var11,var12) */
5100 memcpy(var9+var12,var8+var11,var10);
5101 RET_LABEL13:(void)0;
5102 }
5103 RET_LABEL:;
5104 }
5105 /* method string#Buffer#from for (self: Object, String) */
5106 void VIRTUAL_string__Buffer__from(val* self, val* p0) {
5107 string__Buffer__from(self, p0);
5108 RET_LABEL:;
5109 }
5110 /* method string#Buffer#with_capacity for (self: Buffer, Int) */
5111 void string__Buffer__with_capacity(val* self, long p0) {
5112 long var_cap /* var cap: Int */;
5113 long var /* : Int */;
5114 short int var1 /* : Bool */;
5115 short int var3 /* : Bool */;
5116 int cltype;
5117 int idtype;
5118 const char* var_class_name;
5119 short int var4 /* : Bool */;
5120 long var5 /* : Int */;
5121 long var6 /* : Int */;
5122 long var8 /* : Int */;
5123 char* var9 /* : NativeString */;
5124 long var10 /* : Int */;
5125 var_cap = p0;
5126 ((void (*)(val*))(self->class->vft[COLOR_string__AbstractString__init]))(self) /* init on <self:Buffer>*/;
5127 ((void (*)(val*))(self->class->vft[COLOR_array__AbstractArray__init]))(self) /* init on <self:Buffer>*/;
5128 var = 0;
5129 { /* Inline kernel#Int#>= (var_cap,var) */
5130 /* Covariant cast for argument 0 (i) <var:Int> isa OTHER */
5131 /* <var:Int> isa OTHER */
5132 var3 = 1; /* easy <var:Int> isa OTHER*/
5133 if (!var3) {
5134 var_class_name = type_kernel__Int.name;
5135 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
5136 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
5137 exit(1);
5138 }
5139 var4 = var_cap >= var;
5140 var1 = var4;
5141 goto RET_LABEL2;
5142 RET_LABEL2:(void)0;
5143 }
5144 if (!var1) {
5145 fprintf(stderr, "Runtime error: %s", "Assert failed");
5146 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 779);
5147 exit(1);
5148 }
5149 var5 = 1;
5150 { /* Inline kernel#Int#+ (var_cap,var5) */
5151 var8 = var_cap + var5;
5152 var6 = var8;
5153 goto RET_LABEL7;
5154 RET_LABEL7:(void)0;
5155 }
5156 var9 = ((char* (*)(val*, long))(self->class->vft[COLOR_string__StringCapable__calloc_string]))(self, var6) /* calloc_string on <self:Buffer>*/;
5157 self->attrs[COLOR_string__AbstractString___items].str = var9; /* _items on <self:Buffer> */
5158 self->attrs[COLOR_string__Buffer___capacity].l = var_cap; /* _capacity on <self:Buffer> */
5159 var10 = 0;
5160 self->attrs[COLOR_array__AbstractArrayRead___length].l = var10; /* _length on <self:Buffer> */
5161 RET_LABEL:;
5162 }
5163 /* method string#Buffer#with_capacity for (self: Object, Int) */
5164 void VIRTUAL_string__Buffer__with_capacity(val* self, long p0) {
5165 string__Buffer__with_capacity(self, p0);
5166 RET_LABEL:;
5167 }
5168 /* method string#Buffer#== for (self: Buffer, nullable Object): Bool */
5169 short int string__Buffer___61d_61d(val* self, val* p0) {
5170 short int var /* : Bool */;
5171 val* var_o /* var o: nullable Object */;
5172 short int var1 /* : Bool */;
5173 int cltype;
5174 int idtype;
5175 short int var2 /* : Bool */;
5176 short int var3 /* : Bool */;
5177 long var4 /* : Int */;
5178 long var_l /* var l: Int */;
5179 long var5 /* : Int */;
5180 short int var6 /* : Bool */;
5181 short int var8 /* : Bool */;
5182 short int var9 /* : Bool */;
5183 short int var10 /* : Bool */;
5184 long var11 /* : Int */;
5185 long var_i /* var i: Int */;
5186 char* var12 /* : NativeString */;
5187 char* var_it /* var it: NativeString */;
5188 char* var13 /* : NativeString */;
5189 char* var_oit /* var oit: NativeString */;
5190 short int var14 /* : Bool */;
5191 short int var16 /* : Bool */;
5192 int cltype17;
5193 int idtype18;
5194 const char* var_class_name;
5195 short int var19 /* : Bool */;
5196 char var20 /* : Char */;
5197 char var22 /* : Char */;
5198 char var23 /* : Char */;
5199 char var25 /* : Char */;
5200 short int var26 /* : Bool */;
5201 short int var28 /* : Bool */;
5202 short int var29 /* : Bool */;
5203 short int var30 /* : Bool */;
5204 long var31 /* : Int */;
5205 long var32 /* : Int */;
5206 long var34 /* : Int */;
5207 short int var35 /* : Bool */;
5208 var_o = p0;
5209 /* <var_o:nullable Object> isa Buffer */
5210 cltype = type_string__Buffer.color;
5211 idtype = type_string__Buffer.id;
5212 if(var_o == NULL) {
5213 var1 = 0;
5214 } else {
5215 if(cltype >= var_o->type->table_size) {
5216 var1 = 0;
5217 } else {
5218 var1 = var_o->type->type_table[cltype] == idtype;
5219 }
5220 }
5221 var2 = !var1;
5222 if (var2){
5223 var3 = 0;
5224 var = var3;
5225 goto RET_LABEL;
5226 } else {
5227 }
5228 var4 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:Buffer>*/;
5229 var_l = var4;
5230 var5 = ((long (*)(val*))(var_o->class->vft[COLOR_abstract_collection__Collection__length]))(var_o) /* length on <var_o:nullable Object(Buffer)>*/;
5231 { /* Inline kernel#Int#!= (var5,var_l) */
5232 var8 = var5 == var_l;
5233 var9 = !var8;
5234 var6 = var9;
5235 goto RET_LABEL7;
5236 RET_LABEL7:(void)0;
5237 }
5238 if (var6){
5239 var10 = 0;
5240 var = var10;
5241 goto RET_LABEL;
5242 } else {
5243 }
5244 var11 = 0;
5245 var_i = var11;
5246 var12 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:Buffer> */
5247 var_it = var12;
5248 var13 = var_o->attrs[COLOR_string__AbstractString___items].str; /* _items on <var_o:nullable Object(Buffer)> */
5249 var_oit = var13;
5250 for(;;) {
5251 { /* Inline kernel#Int#< (var_i,var_l) */
5252 /* Covariant cast for argument 0 (i) <var_l:Int> isa OTHER */
5253 /* <var_l:Int> isa OTHER */
5254 var16 = 1; /* easy <var_l:Int> isa OTHER*/
5255 if (!var16) {
5256 var_class_name = type_kernel__Int.name;
5257 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
5258 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
5259 exit(1);
5260 }
5261 var19 = var_i < var_l;
5262 var14 = var19;
5263 goto RET_LABEL15;
5264 RET_LABEL15:(void)0;
5265 }
5266 if (!var14) break;
5267 { /* Inline string#NativeString#[] (var_it,var_i) */
5268 var22 = var_it[var_i];
5269 var20 = var22;
5270 goto RET_LABEL21;
5271 RET_LABEL21:(void)0;
5272 }
5273 { /* Inline string#NativeString#[] (var_oit,var_i) */
5274 var25 = var_oit[var_i];
5275 var23 = var25;
5276 goto RET_LABEL24;
5277 RET_LABEL24:(void)0;
5278 }
5279 { /* Inline kernel#Char#!= (var20,var23) */
5280 var28 = var20 == var23;
5281 var29 = !var28;
5282 var26 = var29;
5283 goto RET_LABEL27;
5284 RET_LABEL27:(void)0;
5285 }
5286 if (var26){
5287 var30 = 0;
5288 var = var30;
5289 goto RET_LABEL;
5290 } else {
5291 }
5292 var31 = 1;
5293 { /* Inline kernel#Int#+ (var_i,var31) */
5294 var34 = var_i + var31;
5295 var32 = var34;
5296 goto RET_LABEL33;
5297 RET_LABEL33:(void)0;
5298 }
5299 var_i = var32;
5300 CONTINUE_label: (void)0;
5301 }
5302 BREAK_label: (void)0;
5303 var35 = 1;
5304 var = var35;
5305 goto RET_LABEL;
5306 RET_LABEL:;
5307 return var;
5308 }
5309 /* method string#Buffer#== for (self: Object, nullable Object): Bool */
5310 short int VIRTUAL_string__Buffer___61d_61d(val* self, val* p0) {
5311 short int var /* : Bool */;
5312 short int var1 /* : Bool */;
5313 var1 = string__Buffer___61d_61d(self, p0);
5314 var = var1;
5315 RET_LABEL:;
5316 return var;
5317 }
5318 /* method string#Buffer#capacity for (self: Buffer): Int */
5319 long string__Buffer__capacity(val* self) {
5320 long var /* : Int */;
5321 long var1 /* : Int */;
5322 var1 = self->attrs[COLOR_string__Buffer___capacity].l; /* _capacity on <self:Buffer> */
5323 var = var1;
5324 RET_LABEL:;
5325 return var;
5326 }
5327 /* method string#Buffer#capacity for (self: Object): Int */
5328 long VIRTUAL_string__Buffer__capacity(val* self) {
5329 long var /* : Int */;
5330 long var1 /* : Int */;
5331 var1 = string__Buffer__capacity(self);
5332 var = var1;
5333 RET_LABEL:;
5334 return var;
5335 }
5336 /* method string#Object#to_s for (self: Object): String */
5337 val* string__Object__to_s(val* self) {
5338 val* var /* : String */;
5339 val* var1 /* : String */;
5340 var1 = ((val* (*)(val*))(self->class->vft[COLOR_string__Object__inspect]))(self) /* inspect on <self:Object>*/;
5341 var = var1;
5342 goto RET_LABEL;
5343 RET_LABEL:;
5344 return var;
5345 }
5346 /* method string#Object#to_s for (self: Object): String */
5347 val* VIRTUAL_string__Object__to_s(val* self) {
5348 val* var /* : String */;
5349 val* var1 /* : String */;
5350 var1 = string__Object__to_s(self);
5351 var = var1;
5352 RET_LABEL:;
5353 return var;
5354 }
5355 /* method string#Object#native_class_name for (self: Object): NativeString */
5356 char* string__Object__native_class_name(val* self) {
5357 char* var /* : NativeString */;
5358 const char* var_class_name;
5359 char* var1 /* : NativeString */;
5360 var_class_name = self == NULL ? "null" : self->type->name;
5361 var1 = (char*)var_class_name;
5362 var = var1;
5363 goto RET_LABEL;
5364 RET_LABEL:;
5365 return var;
5366 }
5367 /* method string#Object#native_class_name for (self: Object): NativeString */
5368 char* VIRTUAL_string__Object__native_class_name(val* self) {
5369 char* var /* : NativeString */;
5370 char* var1 /* : NativeString */;
5371 const char* var_class_name;
5372 char* var3 /* : NativeString */;
5373 { /* Inline string#Object#native_class_name (self) */
5374 var_class_name = self == NULL ? "null" : self->type->name;
5375 var3 = (char*)var_class_name;
5376 var1 = var3;
5377 goto RET_LABEL2;
5378 RET_LABEL2:(void)0;
5379 }
5380 var = var1;
5381 RET_LABEL:;
5382 return var;
5383 }
5384 /* method string#Object#class_name for (self: Object): String */
5385 val* string__Object__class_name(val* self) {
5386 val* var /* : String */;
5387 char* var1 /* : NativeString */;
5388 val* var2 /* : String */;
5389 var1 = ((char* (*)(val*))(self->class->vft[COLOR_string__Object__native_class_name]))(self) /* native_class_name on <self:Object>*/;
5390 var2 = string__NativeString__to_s(var1);
5391 var = var2;
5392 goto RET_LABEL;
5393 RET_LABEL:;
5394 return var;
5395 }
5396 /* method string#Object#class_name for (self: Object): String */
5397 val* VIRTUAL_string__Object__class_name(val* self) {
5398 val* var /* : String */;
5399 val* var1 /* : String */;
5400 var1 = string__Object__class_name(self);
5401 var = var1;
5402 RET_LABEL:;
5403 return var;
5404 }
5405 /* method string#Object#inspect for (self: Object): String */
5406 val* string__Object__inspect(val* self) {
5407 val* var /* : String */;
5408 val* var1 /* : Array[Object] */;
5409 long var2 /* : Int */;
5410 val* var_ /* var : Array[Object] */;
5411 static val* varonce;
5412 val* var3 /* : String */;
5413 char* var4 /* : NativeString */;
5414 long var5 /* : Int */;
5415 val* var6 /* : String */;
5416 val* var7 /* : String */;
5417 static val* varonce8;
5418 val* var9 /* : String */;
5419 char* var10 /* : NativeString */;
5420 long var11 /* : Int */;
5421 val* var12 /* : String */;
5422 val* var13 /* : String */;
5423 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
5424 var2 = 3;
5425 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
5426 CHECK_NEW_array__Array(var1);
5427 var_ = var1;
5428 if (varonce) {
5429 var3 = varonce;
5430 } else {
5431 var4 = "<";
5432 var5 = 1;
5433 var6 = string__NativeString__to_s_with_length(var4, var5);
5434 var3 = var6;
5435 varonce = var3;
5436 }
5437 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on <var_:Array[Object]>*/;
5438 var7 = ((val* (*)(val*))(self->class->vft[COLOR_string__Object__inspect_head]))(self) /* inspect_head on <self:Object>*/;
5439 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var7) /* add on <var_:Array[Object]>*/;
5440 if (varonce8) {
5441 var9 = varonce8;
5442 } else {
5443 var10 = ">";
5444 var11 = 1;
5445 var12 = string__NativeString__to_s_with_length(var10, var11);
5446 var9 = var12;
5447 varonce8 = var9;
5448 }
5449 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var9) /* add on <var_:Array[Object]>*/;
5450 var13 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
5451 var = var13;
5452 goto RET_LABEL;
5453 RET_LABEL:;
5454 return var;
5455 }
5456 /* method string#Object#inspect for (self: Object): String */
5457 val* VIRTUAL_string__Object__inspect(val* self) {
5458 val* var /* : String */;
5459 val* var1 /* : String */;
5460 var1 = string__Object__inspect(self);
5461 var = var1;
5462 RET_LABEL:;
5463 return var;
5464 }
5465 /* method string#Object#inspect_head for (self: Object): String */
5466 val* string__Object__inspect_head(val* self) {
5467 val* var /* : String */;
5468 val* var1 /* : Array[Object] */;
5469 long var2 /* : Int */;
5470 val* var_ /* var : Array[Object] */;
5471 static val* varonce;
5472 val* var3 /* : String */;
5473 char* var4 /* : NativeString */;
5474 long var5 /* : Int */;
5475 val* var6 /* : String */;
5476 val* var7 /* : String */;
5477 static val* varonce8;
5478 val* var9 /* : String */;
5479 char* var10 /* : NativeString */;
5480 long var11 /* : Int */;
5481 val* var12 /* : String */;
5482 long var13 /* : Int */;
5483 val* var14 /* : String */;
5484 static val* varonce15;
5485 val* var16 /* : String */;
5486 char* var17 /* : NativeString */;
5487 long var18 /* : Int */;
5488 val* var19 /* : String */;
5489 val* var20 /* : String */;
5490 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
5491 var2 = 5;
5492 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
5493 CHECK_NEW_array__Array(var1);
5494 var_ = var1;
5495 if (varonce) {
5496 var3 = varonce;
5497 } else {
5498 var4 = "";
5499 var5 = 0;
5500 var6 = string__NativeString__to_s_with_length(var4, var5);
5501 var3 = var6;
5502 varonce = var3;
5503 }
5504 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on <var_:Array[Object]>*/;
5505 var7 = ((val* (*)(val*))(self->class->vft[COLOR_string__Object__class_name]))(self) /* class_name on <self:Object>*/;
5506 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var7) /* add on <var_:Array[Object]>*/;
5507 if (varonce8) {
5508 var9 = varonce8;
5509 } else {
5510 var10 = ":#";
5511 var11 = 2;
5512 var12 = string__NativeString__to_s_with_length(var10, var11);
5513 var9 = var12;
5514 varonce8 = var9;
5515 }
5516 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var9) /* add on <var_:Array[Object]>*/;
5517 var13 = ((long (*)(val*))(self->class->vft[COLOR_kernel__Object__object_id]))(self) /* object_id on <self:Object>*/;
5518 var14 = string__Int__to_hex(var13);
5519 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var14) /* add on <var_:Array[Object]>*/;
5520 if (varonce15) {
5521 var16 = varonce15;
5522 } else {
5523 var17 = "";
5524 var18 = 0;
5525 var19 = string__NativeString__to_s_with_length(var17, var18);
5526 var16 = var19;
5527 varonce15 = var16;
5528 }
5529 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var16) /* add on <var_:Array[Object]>*/;
5530 var20 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
5531 var = var20;
5532 goto RET_LABEL;
5533 RET_LABEL:;
5534 return var;
5535 }
5536 /* method string#Object#inspect_head for (self: Object): String */
5537 val* VIRTUAL_string__Object__inspect_head(val* self) {
5538 val* var /* : String */;
5539 val* var1 /* : String */;
5540 var1 = string__Object__inspect_head(self);
5541 var = var1;
5542 RET_LABEL:;
5543 return var;
5544 }
5545 /* method string#Object#args for (self: Object): Sequence[String] */
5546 val* string__Object__args(val* self) {
5547 val* var /* : Sequence[String] */;
5548 val* var1 /* : Sys */;
5549 val* var2 /* : Sequence[String] */;
5550 var1 = ((val* (*)(val*))(self->class->vft[COLOR_kernel__Object__sys]))(self) /* sys on <self:Object>*/;
5551 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_string__Object__args]))(var1) /* args on <var1:Sys>*/;
5552 var = var2;
5553 goto RET_LABEL;
5554 RET_LABEL:;
5555 return var;
5556 }
5557 /* method string#Object#args for (self: Object): Sequence[String] */
5558 val* VIRTUAL_string__Object__args(val* self) {
5559 val* var /* : Sequence[String] */;
5560 val* var1 /* : Sequence[String] */;
5561 var1 = string__Object__args(self);
5562 var = var1;
5563 RET_LABEL:;
5564 return var;
5565 }
5566 /* method string#Bool#to_s for (self: Bool): String */
5567 val* string__Bool__to_s(short int self) {
5568 val* var /* : String */;
5569 static val* varonce;
5570 static int varonce_guard;
5571 val* var1 /* : String */;
5572 static val* varonce2;
5573 val* var3 /* : String */;
5574 char* var4 /* : NativeString */;
5575 long var5 /* : Int */;
5576 val* var6 /* : String */;
5577 static val* varonce7;
5578 static int varonce7_guard;
5579 val* var8 /* : String */;
5580 static val* varonce9;
5581 val* var10 /* : String */;
5582 char* var11 /* : NativeString */;
5583 long var12 /* : Int */;
5584 val* var13 /* : String */;
5585 if (self){
5586 if (varonce_guard) {
5587 var1 = varonce;
5588 } else {
5589 if (varonce2) {
5590 var3 = varonce2;
5591 } else {
5592 var4 = "true";
5593 var5 = 4;
5594 var6 = string__NativeString__to_s_with_length(var4, var5);
5595 var3 = var6;
5596 varonce2 = var3;
5597 }
5598 var1 = var3;
5599 varonce = var1;
5600 varonce_guard = 1;
5601 }
5602 var = var1;
5603 goto RET_LABEL;
5604 } else {
5605 if (varonce7_guard) {
5606 var8 = varonce7;
5607 } else {
5608 if (varonce9) {
5609 var10 = varonce9;
5610 } else {
5611 var11 = "false";
5612 var12 = 5;
5613 var13 = string__NativeString__to_s_with_length(var11, var12);
5614 var10 = var13;
5615 varonce9 = var10;
5616 }
5617 var8 = var10;
5618 varonce7 = var8;
5619 varonce7_guard = 1;
5620 }
5621 var = var8;
5622 goto RET_LABEL;
5623 }
5624 RET_LABEL:;
5625 return var;
5626 }
5627 /* method string#Bool#to_s for (self: Object): String */
5628 val* VIRTUAL_string__Bool__to_s(val* self) {
5629 val* var /* : String */;
5630 val* var1 /* : String */;
5631 short int var2 /* : Bool */;
5632 var2 = ((struct instance_kernel__Bool*)self)->value; /* autounbox from Object to Bool */;
5633 var1 = string__Bool__to_s(var2);
5634 var = var1;
5635 RET_LABEL:;
5636 return var;
5637 }
5638 /* method string#Int#fill_buffer for (self: Int, Buffer, Int, Bool) */
5639 void string__Int__fill_buffer(long self, val* p0, long p1, short int p2) {
5640 val* var_s /* var s: Buffer */;
5641 long var_base /* var base: Int */;
5642 short int var_signed /* var signed: Bool */;
5643 long var /* : Int */;
5644 short int var1 /* : Bool */;
5645 short int var3 /* : Bool */;
5646 int cltype;
5647 int idtype;
5648 const char* var_class_name;
5649 short int var4 /* : Bool */;
5650 long var5 /* : Int */;
5651 long var7 /* : Int */;
5652 long var_n /* var n: Int */;
5653 long var8 /* : Int */;
5654 char var9 /* : Char */;
5655 val* var10 /* : nullable Object */;
5656 long var11 /* : Int */;
5657 short int var12 /* : Bool */;
5658 short int var14 /* : Bool */;
5659 long var15 /* : Int */;
5660 char var16 /* : Char */;
5661 val* var17 /* : nullable Object */;
5662 long var18 /* : Int */;
5663 long var19 /* : Int */;
5664 long var20 /* : Int */;
5665 long var22 /* : Int */;
5666 long var_pos /* var pos: Int */;
5667 short int var23 /* : Bool */;
5668 long var24 /* : Int */;
5669 short int var25 /* : Bool */;
5670 short int var27 /* : Bool */;
5671 int cltype28;
5672 int idtype29;
5673 const char* var_class_name30;
5674 short int var31 /* : Bool */;
5675 short int var_ /* var : Bool */;
5676 long var32 /* : Int */;
5677 short int var33 /* : Bool */;
5678 short int var35 /* : Bool */;
5679 int cltype36;
5680 int idtype37;
5681 const char* var_class_name38;
5682 short int var39 /* : Bool */;
5683 long var40 /* : Int */;
5684 long var42 /* : Int */;
5685 char var43 /* : Char */;
5686 val* var44 /* : nullable Object */;
5687 long var45 /* : Int */;
5688 long var47 /* : Int */;
5689 long var48 /* : Int */;
5690 long var49 /* : Int */;
5691 long var51 /* : Int */;
5692 var_s = p0;
5693 var_base = p1;
5694 var_signed = p2;
5695 var = 0;
5696 { /* Inline kernel#Int#< (self,var) */
5697 /* Covariant cast for argument 0 (i) <var:Int> isa OTHER */
5698 /* <var:Int> isa OTHER */
5699 var3 = 1; /* easy <var:Int> isa OTHER*/
5700 if (!var3) {
5701 var_class_name = type_kernel__Int.name;
5702 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
5703 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
5704 exit(1);
5705 }
5706 var4 = self < var;
5707 var1 = var4;
5708 goto RET_LABEL2;
5709 RET_LABEL2:(void)0;
5710 }
5711 if (var1){
5712 { /* Inline kernel#Int#unary - (self) */
5713 var7 = -self;
5714 var5 = var7;
5715 goto RET_LABEL6;
5716 RET_LABEL6:(void)0;
5717 }
5718 var_n = var5;
5719 var8 = 0;
5720 var9 = '-';
5721 var10 = BOX_kernel__Char(var9); /* autobox from Char to nullable Object */
5722 ((void (*)(val*, long, val*))(var_s->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_s, var8, var10) /* []= on <var_s:Buffer>*/;
5723 } else {
5724 var11 = 0;
5725 { /* Inline kernel#Int#== (self,var11) */
5726 var14 = self == var11;
5727 var12 = var14;
5728 goto RET_LABEL13;
5729 RET_LABEL13:(void)0;
5730 }
5731 if (var12){
5732 var15 = 0;
5733 var16 = '0';
5734 var17 = BOX_kernel__Char(var16); /* autobox from Char to nullable Object */
5735 ((void (*)(val*, long, val*))(var_s->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_s, var15, var17) /* []= on <var_s:Buffer>*/;
5736 goto RET_LABEL;
5737 } else {
5738 var_n = self;
5739 }
5740 }
5741 var18 = kernel__Int__digit_count(self, var_base);
5742 var19 = 1;
5743 { /* Inline kernel#Int#- (var18,var19) */
5744 var22 = var18 - var19;
5745 var20 = var22;
5746 goto RET_LABEL21;
5747 RET_LABEL21:(void)0;
5748 }
5749 var_pos = var20;
5750 for(;;) {
5751 var24 = 0;
5752 { /* Inline kernel#Int#>= (var_pos,var24) */
5753 /* Covariant cast for argument 0 (i) <var24:Int> isa OTHER */
5754 /* <var24:Int> isa OTHER */
5755 var27 = 1; /* easy <var24:Int> isa OTHER*/
5756 if (!var27) {
5757 var_class_name30 = type_kernel__Int.name;
5758 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name30);
5759 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
5760 exit(1);
5761 }
5762 var31 = var_pos >= var24;
5763 var25 = var31;
5764 goto RET_LABEL26;
5765 RET_LABEL26:(void)0;
5766 }
5767 var_ = var25;
5768 if (var25){
5769 var32 = 0;
5770 { /* Inline kernel#Int#> (var_n,var32) */
5771 /* Covariant cast for argument 0 (i) <var32:Int> isa OTHER */
5772 /* <var32:Int> isa OTHER */
5773 var35 = 1; /* easy <var32:Int> isa OTHER*/
5774 if (!var35) {
5775 var_class_name38 = type_kernel__Int.name;
5776 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name38);
5777 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
5778 exit(1);
5779 }
5780 var39 = var_n > var32;
5781 var33 = var39;
5782 goto RET_LABEL34;
5783 RET_LABEL34:(void)0;
5784 }
5785 var23 = var33;
5786 } else {
5787 var23 = var_;
5788 }
5789 if (!var23) break;
5790 { /* Inline kernel#Int#% (var_n,var_base) */
5791 var42 = var_n % var_base;
5792 var40 = var42;
5793 goto RET_LABEL41;
5794 RET_LABEL41:(void)0;
5795 }
5796 var43 = kernel__Int__to_c(var40);
5797 var44 = BOX_kernel__Char(var43); /* autobox from Char to nullable Object */
5798 ((void (*)(val*, long, val*))(var_s->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_s, var_pos, var44) /* []= on <var_s:Buffer>*/;
5799 { /* Inline kernel#Int#/ (var_n,var_base) */
5800 var47 = var_n / var_base;
5801 var45 = var47;
5802 goto RET_LABEL46;
5803 RET_LABEL46:(void)0;
5804 }
5805 var_n = var45;
5806 var48 = 1;
5807 { /* Inline kernel#Int#- (var_pos,var48) */
5808 var51 = var_pos - var48;
5809 var49 = var51;
5810 goto RET_LABEL50;
5811 RET_LABEL50:(void)0;
5812 }
5813 var_pos = var49;
5814 CONTINUE_label: (void)0;
5815 }
5816 BREAK_label: (void)0;
5817 RET_LABEL:;
5818 }
5819 /* method string#Int#fill_buffer for (self: Object, Buffer, Int, Bool) */
5820 void VIRTUAL_string__Int__fill_buffer(val* self, val* p0, long p1, short int p2) {
5821 long var /* : Int */;
5822 var = ((struct instance_kernel__Int*)self)->value; /* autounbox from Object to Int */;
5823 string__Int__fill_buffer(var, p0, p1, p2);
5824 RET_LABEL:;
5825 }
5826 /* method string#Int#native_int_to_s for (self: Int, Int): NativeString */
5827 char* string__Int__native_int_to_s(long self, long p0) {
5828 char* var /* : NativeString */;
5829 char* var1 /* : NativeString */;
5830 var1 = native_int_to_s(self, p0);
5831 var = var1;
5832 goto RET_LABEL;
5833 RET_LABEL:;
5834 return var;
5835 }
5836 /* method string#Int#native_int_to_s for (self: Object, Int): NativeString */
5837 char* VIRTUAL_string__Int__native_int_to_s(val* self, long p0) {
5838 char* var /* : NativeString */;
5839 char* var1 /* : NativeString */;
5840 long var2 /* : Int */;
5841 var2 = ((struct instance_kernel__Int*)self)->value; /* autounbox from Object to Int */;
5842 var1 = string__Int__native_int_to_s(var2, p0);
5843 var = var1;
5844 RET_LABEL:;
5845 return var;
5846 }
5847 /* method string#Int#to_s for (self: Int): String */
5848 val* string__Int__to_s(long self) {
5849 val* var /* : String */;
5850 long var1 /* : Int */;
5851 long var2 /* : Int */;
5852 long var_len /* var len: Int */;
5853 char* var3 /* : NativeString */;
5854 val* var4 /* : String */;
5855 var1 = 10;
5856 var2 = kernel__Int__digit_count(self, var1);
5857 var_len = var2;
5858 var3 = string__Int__native_int_to_s(self, var_len);
5859 var4 = string__NativeString__to_s_with_length(var3, var_len);
5860 var = var4;
5861 goto RET_LABEL;
5862 RET_LABEL:;
5863 return var;
5864 }
5865 /* method string#Int#to_s for (self: Object): String */
5866 val* VIRTUAL_string__Int__to_s(val* self) {
5867 val* var /* : String */;
5868 val* var1 /* : String */;
5869 long var2 /* : Int */;
5870 var2 = ((struct instance_kernel__Int*)self)->value; /* autounbox from Object to Int */;
5871 var1 = string__Int__to_s(var2);
5872 var = var1;
5873 RET_LABEL:;
5874 return var;
5875 }
5876 /* method string#Int#to_hex for (self: Int): String */
5877 val* string__Int__to_hex(long self) {
5878 val* var /* : String */;
5879 long var1 /* : Int */;
5880 short int var2 /* : Bool */;
5881 val* var3 /* : String */;
5882 var1 = 16;
5883 var2 = 0;
5884 var3 = string__Int__to_base(self, var1, var2);
5885 var = var3;
5886 goto RET_LABEL;
5887 RET_LABEL:;
5888 return var;
5889 }
5890 /* method string#Int#to_hex for (self: Object): String */
5891 val* VIRTUAL_string__Int__to_hex(val* self) {
5892 val* var /* : String */;
5893 val* var1 /* : String */;
5894 long var2 /* : Int */;
5895 var2 = ((struct instance_kernel__Int*)self)->value; /* autounbox from Object to Int */;
5896 var1 = string__Int__to_hex(var2);
5897 var = var1;
5898 RET_LABEL:;
5899 return var;
5900 }
5901 /* method string#Int#to_base for (self: Int, Int, Bool): String */
5902 val* string__Int__to_base(long self, long p0, short int p1) {
5903 val* var /* : String */;
5904 long var_base /* var base: Int */;
5905 short int var_signed /* var signed: Bool */;
5906 long var1 /* : Int */;
5907 long var_l /* var l: Int */;
5908 val* var2 /* : Buffer */;
5909 static val* varonce;
5910 val* var3 /* : String */;
5911 char* var4 /* : NativeString */;
5912 long var5 /* : Int */;
5913 val* var6 /* : String */;
5914 val* var7 /* : String */;
5915 val* var_s /* var s: Buffer */;
5916 val* var8 /* : String */;
5917 var_base = p0;
5918 var_signed = p1;
5919 var1 = kernel__Int__digit_count(self, var_base);
5920 var_l = var1;
5921 var2 = NEW_string__Buffer(&type_string__Buffer);
5922 if (varonce) {
5923 var3 = varonce;
5924 } else {
5925 var4 = " ";
5926 var5 = 1;
5927 var6 = string__NativeString__to_s_with_length(var4, var5);
5928 var3 = var6;
5929 varonce = var3;
5930 }
5931 var7 = ((val* (*)(val*, long))(var3->class->vft[COLOR_string__String___42d]))(var3, var_l) /* * on <var3:String>*/;
5932 ((void (*)(val*, val*))(var2->class->vft[COLOR_string__Buffer__from]))(var2, var7) /* from on <var2:Buffer>*/;
5933 CHECK_NEW_string__Buffer(var2);
5934 var_s = var2;
5935 string__Int__fill_buffer(self, var_s, var_base, var_signed);
5936 var8 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__Object__to_s]))(var_s) /* to_s on <var_s:Buffer>*/;
5937 var = var8;
5938 goto RET_LABEL;
5939 RET_LABEL:;
5940 return var;
5941 }
5942 /* method string#Int#to_base for (self: Object, Int, Bool): String */
5943 val* VIRTUAL_string__Int__to_base(val* self, long p0, short int p1) {
5944 val* var /* : String */;
5945 val* var1 /* : String */;
5946 long var2 /* : Int */;
5947 var2 = ((struct instance_kernel__Int*)self)->value; /* autounbox from Object to Int */;
5948 var1 = string__Int__to_base(var2, p0, p1);
5949 var = var1;
5950 RET_LABEL:;
5951 return var;
5952 }
5953 /* method string#Float#to_s for (self: Float): String */
5954 val* string__Float__to_s(double self) {
5955 val* var /* : String */;
5956 long var1 /* : Int */;
5957 val* var2 /* : String */;
5958 val* var_str /* var str: String */;
5959 long var3 /* : Int */;
5960 long var_len /* var len: Int */;
5961 val* var4 /* : Range[Int] */;
5962 long var5 /* : Int */;
5963 long var6 /* : Int */;
5964 long var7 /* : Int */;
5965 long var9 /* : Int */;
5966 val* var10 /* : Discrete */;
5967 val* var11 /* : Discrete */;
5968 val* var12 /* : Iterator[nullable Object] */;
5969 short int var13 /* : Bool */;
5970 val* var14 /* : nullable Object */;
5971 long var_i /* var i: Int */;
5972 long var15 /* : Int */;
5973 long var16 /* : Int */;
5974 long var17 /* : Int */;
5975 long var19 /* : Int */;
5976 long var20 /* : Int */;
5977 long var22 /* : Int */;
5978 long var_j /* var j: Int */;
5979 val* var23 /* : nullable Object */;
5980 char var24 /* : Char */;
5981 char var_c /* var c: Char */;
5982 char var25 /* : Char */;
5983 short int var26 /* : Bool */;
5984 short int var28 /* : Bool */;
5985 char var29 /* : Char */;
5986 short int var30 /* : Bool */;
5987 short int var32 /* : Bool */;
5988 long var33 /* : Int */;
5989 long var34 /* : Int */;
5990 long var35 /* : Int */;
5991 long var37 /* : Int */;
5992 val* var38 /* : String */;
5993 long var39 /* : Int */;
5994 long var40 /* : Int */;
5995 long var41 /* : Int */;
5996 long var43 /* : Int */;
5997 val* var44 /* : String */;
5998 var1 = 3;
5999 var2 = string__Float__to_precision(self, var1);
6000 var_str = var2;
6001 var3 = ((long (*)(val*))(var_str->class->vft[COLOR_abstract_collection__Collection__length]))(var_str) /* length on <var_str:String>*/;
6002 var_len = var3;
6003 var4 = NEW_range__Range(&type_range__Rangekernel__Int);
6004 var5 = 0;
6005 var6 = 1;
6006 { /* Inline kernel#Int#- (var_len,var6) */
6007 var9 = var_len - var6;
6008 var7 = var9;
6009 goto RET_LABEL8;
6010 RET_LABEL8:(void)0;
6011 }
6012 var10 = BOX_kernel__Int(var5); /* autobox from Int to Discrete */
6013 var11 = BOX_kernel__Int(var7); /* autobox from Int to Discrete */
6014 ((void (*)(val*, val*, val*))(var4->class->vft[COLOR_range__Range__init]))(var4, var10, var11) /* init on <var4:Range[Int]>*/;
6015 CHECK_NEW_range__Range(var4);
6016 var12 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Collection__iterator]))(var4) /* iterator on <var4:Range[Int]>*/;
6017 for(;;) {
6018 var13 = ((short int (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var12) /* is_ok on <var12:Iterator[nullable Object]>*/;
6019 if(!var13) break;
6020 var14 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__item]))(var12) /* item on <var12:Iterator[nullable Object]>*/;
6021 var15 = ((struct instance_kernel__Int*)var14)->value; /* autounbox from nullable Object to Int */;
6022 var_i = var15;
6023 var16 = 1;
6024 { /* Inline kernel#Int#- (var_len,var16) */
6025 var19 = var_len - var16;
6026 var17 = var19;
6027 goto RET_LABEL18;
6028 RET_LABEL18:(void)0;
6029 }
6030 { /* Inline kernel#Int#- (var17,var_i) */
6031 var22 = var17 - var_i;
6032 var20 = var22;
6033 goto RET_LABEL21;
6034 RET_LABEL21:(void)0;
6035 }
6036 var_j = var20;
6037 var23 = ((val* (*)(val*, long))(var_str->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_str, var_j) /* [] on <var_str:String>*/;
6038 var24 = ((struct instance_kernel__Char*)var23)->value; /* autounbox from nullable Object to Char */;
6039 var_c = var24;
6040 var25 = '0';
6041 { /* Inline kernel#Char#== (var_c,var25) */
6042 var28 = var_c == var25;
6043 var26 = var28;
6044 goto RET_LABEL27;
6045 RET_LABEL27:(void)0;
6046 }
6047 if (var26){
6048 goto CONTINUE_label;
6049 } else {
6050 var29 = '.';
6051 { /* Inline kernel#Char#== (var_c,var29) */
6052 var32 = var_c == var29;
6053 var30 = var32;
6054 goto RET_LABEL31;
6055 RET_LABEL31:(void)0;
6056 }
6057 if (var30){
6058 var33 = 0;
6059 var34 = 2;
6060 { /* Inline kernel#Int#+ (var_j,var34) */
6061 var37 = var_j + var34;
6062 var35 = var37;
6063 goto RET_LABEL36;
6064 RET_LABEL36:(void)0;
6065 }
6066 var38 = ((val* (*)(val*, long, long))(var_str->class->vft[COLOR_string__AbstractString__substring]))(var_str, var33, var35) /* substring on <var_str:String>*/;
6067 var = var38;
6068 goto RET_LABEL;
6069 } else {
6070 var39 = 0;
6071 var40 = 1;
6072 { /* Inline kernel#Int#+ (var_j,var40) */
6073 var43 = var_j + var40;
6074 var41 = var43;
6075 goto RET_LABEL42;
6076 RET_LABEL42:(void)0;
6077 }
6078 var44 = ((val* (*)(val*, long, long))(var_str->class->vft[COLOR_string__AbstractString__substring]))(var_str, var39, var41) /* substring on <var_str:String>*/;
6079 var = var44;
6080 goto RET_LABEL;
6081 }
6082 }
6083 CONTINUE_label: (void)0;
6084 ((void (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__next]))(var12) /* next on <var12:Iterator[nullable Object]>*/;
6085 }
6086 BREAK_label: (void)0;
6087 var = var_str;
6088 goto RET_LABEL;
6089 RET_LABEL:;
6090 return var;
6091 }
6092 /* method string#Float#to_s for (self: Object): String */
6093 val* VIRTUAL_string__Float__to_s(val* self) {
6094 val* var /* : String */;
6095 val* var1 /* : String */;
6096 double var2 /* : Float */;
6097 var2 = ((struct instance_kernel__Float*)self)->value; /* autounbox from Object to Float */;
6098 var1 = string__Float__to_s(var2);
6099 var = var1;
6100 RET_LABEL:;
6101 return var;
6102 }
6103 /* method string#Float#to_precision for (self: Float, Int): String */
6104 val* string__Float__to_precision(double self, long p0) {
6105 val* var /* : String */;
6106 long var_nb /* var nb: Int */;
6107 long var1 /* : Int */;
6108 short int var2 /* : Bool */;
6109 short int var4 /* : Bool */;
6110 long var5 /* : Int */;
6111 long var7 /* : Int */;
6112 val* var8 /* : String */;
6113 double var_f /* var f: Float */;
6114 val* var9 /* : Range[Int] */;
6115 long var10 /* : Int */;
6116 val* var11 /* : Discrete */;
6117 val* var12 /* : Discrete */;
6118 val* var13 /* : Iterator[nullable Object] */;
6119 short int var14 /* : Bool */;
6120 val* var15 /* : nullable Object */;
6121 long var_i /* var i: Int */;
6122 long var16 /* : Int */;
6123 double var17 /* : Float */;
6124 double var18 /* : Float */;
6125 double var20 /* : Float */;
6126 double var21 /* : Float */;
6127 short int var22 /* : Bool */;
6128 short int var24 /* : Bool */;
6129 double var25 /* : Float */;
6130 double var26 /* : Float */;
6131 double var28 /* : Float */;
6132 double var29 /* : Float */;
6133 double var30 /* : Float */;
6134 double var32 /* : Float */;
6135 long var33 /* : Int */;
6136 long var35 /* : Int */;
6137 long var_i36 /* var i: Int */;
6138 long var37 /* : Int */;
6139 short int var38 /* : Bool */;
6140 short int var40 /* : Bool */;
6141 static val* varonce;
6142 val* var41 /* : String */;
6143 char* var42 /* : NativeString */;
6144 long var43 /* : Int */;
6145 val* var44 /* : String */;
6146 val* var45 /* : String */;
6147 val* var_s /* var s: String */;
6148 long var46 /* : Int */;
6149 long var_sl /* var sl: Int */;
6150 short int var47 /* : Bool */;
6151 short int var49 /* : Bool */;
6152 int cltype;
6153 int idtype;
6154 const char* var_class_name;
6155 short int var50 /* : Bool */;
6156 long var51 /* : Int */;
6157 long var52 /* : Int */;
6158 long var53 /* : Int */;
6159 long var55 /* : Int */;
6160 val* var56 /* : String */;
6161 val* var_p1 /* var p1: String */;
6162 long var57 /* : Int */;
6163 long var58 /* : Int */;
6164 long var60 /* : Int */;
6165 val* var61 /* : String */;
6166 val* var_p2 /* var p2: String */;
6167 static val* varonce62;
6168 val* var63 /* : String */;
6169 char* var64 /* : NativeString */;
6170 long var65 /* : Int */;
6171 val* var66 /* : String */;
6172 val* var67 /* : String */;
6173 val* var68 /* : String */;
6174 static val* varonce69;
6175 val* var70 /* : String */;
6176 char* var71 /* : NativeString */;
6177 long var72 /* : Int */;
6178 val* var73 /* : String */;
6179 static val* varonce74;
6180 val* var75 /* : String */;
6181 char* var76 /* : NativeString */;
6182 long var77 /* : Int */;
6183 val* var78 /* : String */;
6184 long var79 /* : Int */;
6185 long var81 /* : Int */;
6186 val* var82 /* : String */;
6187 val* var83 /* : String */;
6188 val* var84 /* : String */;
6189 var_nb = p0;
6190 var1 = 0;
6191 { /* Inline kernel#Int#== (var_nb,var1) */
6192 var4 = var_nb == var1;
6193 var2 = var4;
6194 goto RET_LABEL3;
6195 RET_LABEL3:(void)0;
6196 }
6197 if (var2){
6198 { /* Inline kernel#Float#to_i (self) */
6199 var7 = (long)self;
6200 var5 = var7;
6201 goto RET_LABEL6;
6202 RET_LABEL6:(void)0;
6203 }
6204 var8 = string__Int__to_s(var5);
6205 var = var8;
6206 goto RET_LABEL;
6207 } else {
6208 }
6209 var_f = self;
6210 var9 = NEW_range__Range(&type_range__Rangekernel__Int);
6211 var10 = 0;
6212 var11 = BOX_kernel__Int(var10); /* autobox from Int to Discrete */
6213 var12 = BOX_kernel__Int(var_nb); /* autobox from Int to Discrete */
6214 ((void (*)(val*, val*, val*))(var9->class->vft[COLOR_range__Range__without_last]))(var9, var11, var12) /* without_last on <var9:Range[Int]>*/;
6215 CHECK_NEW_range__Range(var9);
6216 var13 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Collection__iterator]))(var9) /* iterator on <var9:Range[Int]>*/;
6217 for(;;) {
6218 var14 = ((short int (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var13) /* is_ok on <var13:Iterator[nullable Object]>*/;
6219 if(!var14) break;
6220 var15 = ((val* (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__item]))(var13) /* item on <var13:Iterator[nullable Object]>*/;
6221 var16 = ((struct instance_kernel__Int*)var15)->value; /* autounbox from nullable Object to Int */;
6222 var_i = var16;
6223 var17 = 10.0;
6224 { /* Inline kernel#Float#* (var_f,var17) */
6225 var20 = var_f * var17;
6226 var18 = var20;
6227 goto RET_LABEL19;
6228 RET_LABEL19:(void)0;
6229 }
6230 var_f = var18;
6231 CONTINUE_label: (void)0;
6232 ((void (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__next]))(var13) /* next on <var13:Iterator[nullable Object]>*/;
6233 }
6234 BREAK_label: (void)0;
6235 var21 = 0.0;
6236 { /* Inline kernel#Float#> (self,var21) */
6237 var24 = self > var21;
6238 var22 = var24;
6239 goto RET_LABEL23;
6240 RET_LABEL23:(void)0;
6241 }
6242 if (var22){
6243 var25 = 0.5;
6244 { /* Inline kernel#Float#+ (var_f,var25) */
6245 var28 = var_f + var25;
6246 var26 = var28;
6247 goto RET_LABEL27;
6248 RET_LABEL27:(void)0;
6249 }
6250 var_f = var26;
6251 } else {
6252 var29 = 0.5;
6253 { /* Inline kernel#Float#- (var_f,var29) */
6254 var32 = var_f - var29;
6255 var30 = var32;
6256 goto RET_LABEL31;
6257 RET_LABEL31:(void)0;
6258 }
6259 var_f = var30;
6260 }
6261 { /* Inline kernel#Float#to_i (var_f) */
6262 var35 = (long)var_f;
6263 var33 = var35;
6264 goto RET_LABEL34;
6265 RET_LABEL34:(void)0;
6266 }
6267 var_i36 = var33;
6268 var37 = 0;
6269 { /* Inline kernel#Int#== (var_i36,var37) */
6270 var40 = var_i36 == var37;
6271 var38 = var40;
6272 goto RET_LABEL39;
6273 RET_LABEL39:(void)0;
6274 }
6275 if (var38){
6276 if (varonce) {
6277 var41 = varonce;
6278 } else {
6279 var42 = "0.0";
6280 var43 = 3;
6281 var44 = string__NativeString__to_s_with_length(var42, var43);
6282 var41 = var44;
6283 varonce = var41;
6284 }
6285 var = var41;
6286 goto RET_LABEL;
6287 } else {
6288 }
6289 var45 = string__Int__to_s(var_i36);
6290 var_s = var45;
6291 var46 = ((long (*)(val*))(var_s->class->vft[COLOR_abstract_collection__Collection__length]))(var_s) /* length on <var_s:String>*/;
6292 var_sl = var46;
6293 { /* Inline kernel#Int#> (var_sl,var_nb) */
6294 /* Covariant cast for argument 0 (i) <var_nb:Int> isa OTHER */
6295 /* <var_nb:Int> isa OTHER */
6296 var49 = 1; /* easy <var_nb:Int> isa OTHER*/
6297 if (!var49) {
6298 var_class_name = type_kernel__Int.name;
6299 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
6300 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
6301 exit(1);
6302 }
6303 var50 = var_sl > var_nb;
6304 var47 = var50;
6305 goto RET_LABEL48;
6306 RET_LABEL48:(void)0;
6307 }
6308 if (var47){
6309 var51 = 0;
6310 var52 = ((long (*)(val*))(var_s->class->vft[COLOR_abstract_collection__Collection__length]))(var_s) /* length on <var_s:String>*/;
6311 { /* Inline kernel#Int#- (var52,var_nb) */
6312 var55 = var52 - var_nb;
6313 var53 = var55;
6314 goto RET_LABEL54;
6315 RET_LABEL54:(void)0;
6316 }
6317 var56 = ((val* (*)(val*, long, long))(var_s->class->vft[COLOR_string__AbstractString__substring]))(var_s, var51, var53) /* substring on <var_s:String>*/;
6318 var_p1 = var56;
6319 var57 = ((long (*)(val*))(var_s->class->vft[COLOR_abstract_collection__Collection__length]))(var_s) /* length on <var_s:String>*/;
6320 { /* Inline kernel#Int#- (var57,var_nb) */
6321 var60 = var57 - var_nb;
6322 var58 = var60;
6323 goto RET_LABEL59;
6324 RET_LABEL59:(void)0;
6325 }
6326 var61 = ((val* (*)(val*, long, long))(var_s->class->vft[COLOR_string__AbstractString__substring]))(var_s, var58, var_nb) /* substring on <var_s:String>*/;
6327 var_p2 = var61;
6328 if (varonce62) {
6329 var63 = varonce62;
6330 } else {
6331 var64 = ".";
6332 var65 = 1;
6333 var66 = string__NativeString__to_s_with_length(var64, var65);
6334 var63 = var66;
6335 varonce62 = var63;
6336 }
6337 var67 = ((val* (*)(val*, val*))(var_p1->class->vft[COLOR_string__String___43d]))(var_p1, var63) /* + on <var_p1:String>*/;
6338 var68 = ((val* (*)(val*, val*))(var67->class->vft[COLOR_string__String___43d]))(var67, var_p2) /* + on <var67:String>*/;
6339 var = var68;
6340 goto RET_LABEL;
6341 } else {
6342 if (varonce69) {
6343 var70 = varonce69;
6344 } else {
6345 var71 = "0.";
6346 var72 = 2;
6347 var73 = string__NativeString__to_s_with_length(var71, var72);
6348 var70 = var73;
6349 varonce69 = var70;
6350 }
6351 if (varonce74) {
6352 var75 = varonce74;
6353 } else {
6354 var76 = "0";
6355 var77 = 1;
6356 var78 = string__NativeString__to_s_with_length(var76, var77);
6357 var75 = var78;
6358 varonce74 = var75;
6359 }
6360 { /* Inline kernel#Int#- (var_nb,var_sl) */
6361 var81 = var_nb - var_sl;
6362 var79 = var81;
6363 goto RET_LABEL80;
6364 RET_LABEL80:(void)0;
6365 }
6366 var82 = ((val* (*)(val*, long))(var75->class->vft[COLOR_string__String___42d]))(var75, var79) /* * on <var75:String>*/;
6367 var83 = ((val* (*)(val*, val*))(var70->class->vft[COLOR_string__String___43d]))(var70, var82) /* + on <var70:String>*/;
6368 var84 = ((val* (*)(val*, val*))(var83->class->vft[COLOR_string__String___43d]))(var83, var_s) /* + on <var83:String>*/;
6369 var = var84;
6370 goto RET_LABEL;
6371 }
6372 RET_LABEL:;
6373 return var;
6374 }
6375 /* method string#Float#to_precision for (self: Object, Int): String */
6376 val* VIRTUAL_string__Float__to_precision(val* self, long p0) {
6377 val* var /* : String */;
6378 val* var1 /* : String */;
6379 double var2 /* : Float */;
6380 var2 = ((struct instance_kernel__Float*)self)->value; /* autounbox from Object to Float */;
6381 var1 = string__Float__to_precision(var2, p0);
6382 var = var1;
6383 RET_LABEL:;
6384 return var;
6385 }
6386 /* method string#Float#to_precision_native for (self: Float, Int): String */
6387 val* string__Float__to_precision_native(double self, long p0) {
6388 val* var /* : String */;
6389 fprintf(stderr, "NOT YET IMPLEMENTED nitni for string#Float#to_precision_native at lib/standard/string.nit:946,2--955,3\n");
6390 exit(1);
6391 RET_LABEL:;
6392 return var;
6393 }
6394 /* method string#Float#to_precision_native for (self: Object, Int): String */
6395 val* VIRTUAL_string__Float__to_precision_native(val* self, long p0) {
6396 val* var /* : String */;
6397 val* var1 /* : String */;
6398 double var2 /* : Float */;
6399 var2 = ((struct instance_kernel__Float*)self)->value; /* autounbox from Object to Float */;
6400 var1 = string__Float__to_precision_native(var2, p0);
6401 var = var1;
6402 RET_LABEL:;
6403 return var;
6404 }
6405 /* method string#Char#to_s for (self: Char): String */
6406 val* string__Char__to_s(char self) {
6407 val* var /* : String */;
6408 val* var1 /* : Buffer */;
6409 long var2 /* : Int */;
6410 val* var_s /* var s: Buffer */;
6411 long var3 /* : Int */;
6412 val* var4 /* : nullable Object */;
6413 val* var5 /* : String */;
6414 var1 = NEW_string__Buffer(&type_string__Buffer);
6415 var2 = 1;
6416 ((void (*)(val*, long))(var1->class->vft[COLOR_string__Buffer__with_capacity]))(var1, var2) /* with_capacity on <var1:Buffer>*/;
6417 CHECK_NEW_string__Buffer(var1);
6418 var_s = var1;
6419 var3 = 0;
6420 var4 = BOX_kernel__Char(self); /* autobox from Char to nullable Object */
6421 ((void (*)(val*, long, val*))(var_s->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_s, var3, var4) /* []= on <var_s:Buffer>*/;
6422 var5 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__Object__to_s]))(var_s) /* to_s on <var_s:Buffer>*/;
6423 var = var5;
6424 goto RET_LABEL;
6425 RET_LABEL:;
6426 return var;
6427 }
6428 /* method string#Char#to_s for (self: Object): String */
6429 val* VIRTUAL_string__Char__to_s(val* self) {
6430 val* var /* : String */;
6431 val* var1 /* : String */;
6432 char var2 /* : Char */;
6433 var2 = ((struct instance_kernel__Char*)self)->value; /* autounbox from Object to Char */;
6434 var1 = string__Char__to_s(var2);
6435 var = var1;
6436 RET_LABEL:;
6437 return var;
6438 }
6439 /* method string#Char#is_numeric for (self: Char): Bool */
6440 short int string__Char__is_numeric(char self) {
6441 short int var /* : Bool */;
6442 short int var1 /* : Bool */;
6443 char var2 /* : Char */;
6444 short int var3 /* : Bool */;
6445 short int var5 /* : Bool */;
6446 int cltype;
6447 int idtype;
6448 const char* var_class_name;
6449 short int var6 /* : Bool */;
6450 short int var_ /* var : Bool */;
6451 char var7 /* : Char */;
6452 short int var8 /* : Bool */;
6453 short int var10 /* : Bool */;
6454 int cltype11;
6455 int idtype12;
6456 const char* var_class_name13;
6457 short int var14 /* : Bool */;
6458 short int var15 /* : Bool */;
6459 short int var16 /* : Bool */;
6460 var2 = '0';
6461 { /* Inline kernel#Char#>= (self,var2) */
6462 /* Covariant cast for argument 0 (i) <var2:Char> isa OTHER */
6463 /* <var2:Char> isa OTHER */
6464 var5 = 1; /* easy <var2:Char> isa OTHER*/
6465 if (!var5) {
6466 var_class_name = type_kernel__Char.name;
6467 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
6468 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 438);
6469 exit(1);
6470 }
6471 var6 = self >= var2;
6472 var3 = var6;
6473 goto RET_LABEL4;
6474 RET_LABEL4:(void)0;
6475 }
6476 var_ = var3;
6477 if (var3){
6478 var7 = '9';
6479 { /* Inline kernel#Char#<= (self,var7) */
6480 /* Covariant cast for argument 0 (i) <var7:Char> isa OTHER */
6481 /* <var7:Char> isa OTHER */
6482 var10 = 1; /* easy <var7:Char> isa OTHER*/
6483 if (!var10) {
6484 var_class_name13 = type_kernel__Char.name;
6485 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name13);
6486 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 436);
6487 exit(1);
6488 }
6489 var14 = self <= var7;
6490 var8 = var14;
6491 goto RET_LABEL9;
6492 RET_LABEL9:(void)0;
6493 }
6494 var1 = var8;
6495 } else {
6496 var1 = var_;
6497 }
6498 if (var1){
6499 var15 = 1;
6500 var = var15;
6501 goto RET_LABEL;
6502 } else {
6503 }
6504 var16 = 0;
6505 var = var16;
6506 goto RET_LABEL;
6507 RET_LABEL:;
6508 return var;
6509 }
6510 /* method string#Char#is_numeric for (self: Object): Bool */
6511 short int VIRTUAL_string__Char__is_numeric(val* self) {
6512 short int var /* : Bool */;
6513 short int var1 /* : Bool */;
6514 char var2 /* : Char */;
6515 var2 = ((struct instance_kernel__Char*)self)->value; /* autounbox from Object to Char */;
6516 var1 = string__Char__is_numeric(var2);
6517 var = var1;
6518 RET_LABEL:;
6519 return var;
6520 }
6521 /* method string#Char#is_alpha for (self: Char): Bool */
6522 short int string__Char__is_alpha(char self) {
6523 short int var /* : Bool */;
6524 short int var1 /* : Bool */;
6525 short int var2 /* : Bool */;
6526 char var3 /* : Char */;
6527 short int var4 /* : Bool */;
6528 short int var6 /* : Bool */;
6529 int cltype;
6530 int idtype;
6531 const char* var_class_name;
6532 short int var7 /* : Bool */;
6533 short int var_ /* var : Bool */;
6534 char var8 /* : Char */;
6535 short int var9 /* : Bool */;
6536 short int var11 /* : Bool */;
6537 int cltype12;
6538 int idtype13;
6539 const char* var_class_name14;
6540 short int var15 /* : Bool */;
6541 short int var_16 /* var : Bool */;
6542 short int var17 /* : Bool */;
6543 char var18 /* : Char */;
6544 short int var19 /* : Bool */;
6545 short int var21 /* : Bool */;
6546 int cltype22;
6547 int idtype23;
6548 const char* var_class_name24;
6549 short int var25 /* : Bool */;
6550 short int var_26 /* var : Bool */;
6551 char var27 /* : Char */;
6552 short int var28 /* : Bool */;
6553 short int var30 /* : Bool */;
6554 int cltype31;
6555 int idtype32;
6556 const char* var_class_name33;
6557 short int var34 /* : Bool */;
6558 short int var35 /* : Bool */;
6559 short int var36 /* : Bool */;
6560 var3 = 'a';
6561 { /* Inline kernel#Char#>= (self,var3) */
6562 /* Covariant cast for argument 0 (i) <var3:Char> isa OTHER */
6563 /* <var3:Char> isa OTHER */
6564 var6 = 1; /* easy <var3:Char> isa OTHER*/
6565 if (!var6) {
6566 var_class_name = type_kernel__Char.name;
6567 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
6568 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 438);
6569 exit(1);
6570 }
6571 var7 = self >= var3;
6572 var4 = var7;
6573 goto RET_LABEL5;
6574 RET_LABEL5:(void)0;
6575 }
6576 var_ = var4;
6577 if (var4){
6578 var8 = 'z';
6579 { /* Inline kernel#Char#<= (self,var8) */
6580 /* Covariant cast for argument 0 (i) <var8:Char> isa OTHER */
6581 /* <var8:Char> isa OTHER */
6582 var11 = 1; /* easy <var8:Char> isa OTHER*/
6583 if (!var11) {
6584 var_class_name14 = type_kernel__Char.name;
6585 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name14);
6586 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 436);
6587 exit(1);
6588 }
6589 var15 = self <= var8;
6590 var9 = var15;
6591 goto RET_LABEL10;
6592 RET_LABEL10:(void)0;
6593 }
6594 var2 = var9;
6595 } else {
6596 var2 = var_;
6597 }
6598 var_16 = var2;
6599 if (var2){
6600 var1 = var_16;
6601 } else {
6602 var18 = 'A';
6603 { /* Inline kernel#Char#>= (self,var18) */
6604 /* Covariant cast for argument 0 (i) <var18:Char> isa OTHER */
6605 /* <var18:Char> isa OTHER */
6606 var21 = 1; /* easy <var18:Char> isa OTHER*/
6607 if (!var21) {
6608 var_class_name24 = type_kernel__Char.name;
6609 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name24);
6610 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 438);
6611 exit(1);
6612 }
6613 var25 = self >= var18;
6614 var19 = var25;
6615 goto RET_LABEL20;
6616 RET_LABEL20:(void)0;
6617 }
6618 var_26 = var19;
6619 if (var19){
6620 var27 = 'Z';
6621 { /* Inline kernel#Char#<= (self,var27) */
6622 /* Covariant cast for argument 0 (i) <var27:Char> isa OTHER */
6623 /* <var27:Char> isa OTHER */
6624 var30 = 1; /* easy <var27:Char> isa OTHER*/
6625 if (!var30) {
6626 var_class_name33 = type_kernel__Char.name;
6627 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name33);
6628 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 436);
6629 exit(1);
6630 }
6631 var34 = self <= var27;
6632 var28 = var34;
6633 goto RET_LABEL29;
6634 RET_LABEL29:(void)0;
6635 }
6636 var17 = var28;
6637 } else {
6638 var17 = var_26;
6639 }
6640 var1 = var17;
6641 }
6642 if (var1){
6643 var35 = 1;
6644 var = var35;
6645 goto RET_LABEL;
6646 } else {
6647 }
6648 var36 = 0;
6649 var = var36;
6650 goto RET_LABEL;
6651 RET_LABEL:;
6652 return var;
6653 }
6654 /* method string#Char#is_alpha for (self: Object): Bool */
6655 short int VIRTUAL_string__Char__is_alpha(val* self) {
6656 short int var /* : Bool */;
6657 short int var1 /* : Bool */;
6658 char var2 /* : Char */;
6659 var2 = ((struct instance_kernel__Char*)self)->value; /* autounbox from Object to Char */;
6660 var1 = string__Char__is_alpha(var2);
6661 var = var1;
6662 RET_LABEL:;
6663 return var;
6664 }
6665 /* method string#Char#is_alphanumeric for (self: Char): Bool */
6666 short int string__Char__is_alphanumeric(char self) {
6667 short int var /* : Bool */;
6668 short int var1 /* : Bool */;
6669 short int var2 /* : Bool */;
6670 short int var_ /* var : Bool */;
6671 short int var3 /* : Bool */;
6672 short int var4 /* : Bool */;
6673 short int var5 /* : Bool */;
6674 var2 = string__Char__is_numeric(self);
6675 var_ = var2;
6676 if (var2){
6677 var1 = var_;
6678 } else {
6679 var3 = string__Char__is_alpha(self);
6680 var1 = var3;
6681 }
6682 if (var1){
6683 var4 = 1;
6684 var = var4;
6685 goto RET_LABEL;
6686 } else {
6687 }
6688 var5 = 0;
6689 var = var5;
6690 goto RET_LABEL;
6691 RET_LABEL:;
6692 return var;
6693 }
6694 /* method string#Char#is_alphanumeric for (self: Object): Bool */
6695 short int VIRTUAL_string__Char__is_alphanumeric(val* self) {
6696 short int var /* : Bool */;
6697 short int var1 /* : Bool */;
6698 char var2 /* : Char */;
6699 var2 = ((struct instance_kernel__Char*)self)->value; /* autounbox from Object to Char */;
6700 var1 = string__Char__is_alphanumeric(var2);
6701 var = var1;
6702 RET_LABEL:;
6703 return var;
6704 }
6705 /* method string#Collection#to_s for (self: Collection[nullable Object]): String */
6706 val* string__Collection__to_s(val* self) {
6707 val* var /* : String */;
6708 val* var1 /* : Buffer */;
6709 val* var_s /* var s: Buffer */;
6710 val* var2 /* : Iterator[nullable Object] */;
6711 short int var3 /* : Bool */;
6712 val* var4 /* : nullable Object */;
6713 val* var_e /* var e: nullable Object */;
6714 val* var5 /* : null */;
6715 short int var6 /* : Bool */;
6716 val* var7 /* : String */;
6717 val* var8 /* : String */;
6718 var1 = NEW_string__Buffer(&type_string__Buffer);
6719 ((void (*)(val*))(var1->class->vft[COLOR_string__Buffer__init]))(var1) /* init on <var1:Buffer>*/;
6720 CHECK_NEW_string__Buffer(var1);
6721 var_s = var1;
6722 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__iterator]))(self) /* iterator on <self:Collection[nullable Object]>*/;
6723 for(;;) {
6724 var3 = ((short int (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var2) /* is_ok on <var2:Iterator[nullable Object]>*/;
6725 if(!var3) break;
6726 var4 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__item]))(var2) /* item on <var2:Iterator[nullable Object]>*/;
6727 var_e = var4;
6728 var5 = NULL;
6729 if (var_e == NULL) {
6730 var6 = 0; /* is null */
6731 } else {
6732 var6 = 1; /* arg is null and recv is not */
6733 }
6734 if (var6){
6735 if (var_e == NULL) {
6736 fprintf(stderr, "Runtime error: %s", "Reciever is null");
6737 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 997);
6738 exit(1);
6739 } else {
6740 var7 = ((val* (*)(val*))(var_e->class->vft[COLOR_string__Object__to_s]))(var_e) /* to_s on <var_e:nullable Object>*/;
6741 }
6742 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__Sequence__append]))(var_s, var7) /* append on <var_s:Buffer>*/;
6743 } else {
6744 }
6745 CONTINUE_label: (void)0;
6746 ((void (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__next]))(var2) /* next on <var2:Iterator[nullable Object]>*/;
6747 }
6748 BREAK_label: (void)0;
6749 var8 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__Object__to_s]))(var_s) /* to_s on <var_s:Buffer>*/;
6750 var = var8;
6751 goto RET_LABEL;
6752 RET_LABEL:;
6753 return var;
6754 }
6755 /* method string#Collection#to_s for (self: Object): String */
6756 val* VIRTUAL_string__Collection__to_s(val* self) {
6757 val* var /* : String */;
6758 val* var1 /* : String */;
6759 var1 = string__Collection__to_s(self);
6760 var = var1;
6761 RET_LABEL:;
6762 return var;
6763 }
6764 /* method string#Collection#join for (self: Collection[nullable Object], String): String */
6765 val* string__Collection__join(val* self, val* p0) {
6766 val* var /* : String */;
6767 val* var_sep /* var sep: String */;
6768 short int var1 /* : Bool */;
6769 static val* varonce;
6770 val* var2 /* : String */;
6771 char* var3 /* : NativeString */;
6772 long var4 /* : Int */;
6773 val* var5 /* : String */;
6774 val* var6 /* : Buffer */;
6775 val* var_s /* var s: Buffer */;
6776 val* var7 /* : Iterator[nullable Object] */;
6777 val* var_i /* var i: Iterator[nullable Object] */;
6778 val* var8 /* : nullable Object */;
6779 val* var_e /* var e: nullable Object */;
6780 val* var9 /* : null */;
6781 short int var10 /* : Bool */;
6782 val* var11 /* : String */;
6783 short int var12 /* : Bool */;
6784 val* var13 /* : nullable Object */;
6785 val* var14 /* : null */;
6786 short int var15 /* : Bool */;
6787 val* var16 /* : String */;
6788 val* var17 /* : String */;
6789 var_sep = p0;
6790 var1 = ((short int (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__is_empty]))(self) /* is_empty on <self:Collection[nullable Object]>*/;
6791 if (var1){
6792 if (varonce) {
6793 var2 = varonce;
6794 } else {
6795 var3 = "";
6796 var4 = 0;
6797 var5 = string__NativeString__to_s_with_length(var3, var4);
6798 var2 = var5;
6799 varonce = var2;
6800 }
6801 var = var2;
6802 goto RET_LABEL;
6803 } else {
6804 }
6805 var6 = NEW_string__Buffer(&type_string__Buffer);
6806 ((void (*)(val*))(var6->class->vft[COLOR_string__Buffer__init]))(var6) /* init on <var6:Buffer>*/;
6807 CHECK_NEW_string__Buffer(var6);
6808 var_s = var6;
6809 var7 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__iterator]))(self) /* iterator on <self:Collection[nullable Object]>*/;
6810 var_i = var7;
6811 var8 = ((val* (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__item]))(var_i) /* item on <var_i:Iterator[nullable Object]>*/;
6812 var_e = var8;
6813 var9 = NULL;
6814 if (var_e == NULL) {
6815 var10 = 0; /* is null */
6816 } else {
6817 var10 = 1; /* arg is null and recv is not */
6818 }
6819 if (var10){
6820 if (var_e == NULL) {
6821 fprintf(stderr, "Runtime error: %s", "Reciever is null");
6822 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 1014);
6823 exit(1);
6824 } else {
6825 var11 = ((val* (*)(val*))(var_e->class->vft[COLOR_string__Object__to_s]))(var_e) /* to_s on <var_e:nullable Object>*/;
6826 }
6827 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__Sequence__append]))(var_s, var11) /* append on <var_s:Buffer>*/;
6828 } else {
6829 }
6830 ((void (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__next]))(var_i) /* next on <var_i:Iterator[nullable Object]>*/;
6831 for(;;) {
6832 var12 = ((short int (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_i) /* is_ok on <var_i:Iterator[nullable Object]>*/;
6833 if (!var12) break;
6834 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__Sequence__append]))(var_s, var_sep) /* append on <var_s:Buffer>*/;
6835 var13 = ((val* (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__item]))(var_i) /* item on <var_i:Iterator[nullable Object]>*/;
6836 var_e = var13;
6837 var14 = NULL;
6838 if (var_e == NULL) {
6839 var15 = 0; /* is null */
6840 } else {
6841 var15 = 1; /* arg is null and recv is not */
6842 }
6843 if (var15){
6844 if (var_e == NULL) {
6845 fprintf(stderr, "Runtime error: %s", "Reciever is null");
6846 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 1021);
6847 exit(1);
6848 } else {
6849 var16 = ((val* (*)(val*))(var_e->class->vft[COLOR_string__Object__to_s]))(var_e) /* to_s on <var_e:nullable Object>*/;
6850 }
6851 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__Sequence__append]))(var_s, var16) /* append on <var_s:Buffer>*/;
6852 } else {
6853 }
6854 ((void (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__next]))(var_i) /* next on <var_i:Iterator[nullable Object]>*/;
6855 CONTINUE_label: (void)0;
6856 }
6857 BREAK_label: (void)0;
6858 var17 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__Object__to_s]))(var_s) /* to_s on <var_s:Buffer>*/;
6859 var = var17;
6860 goto RET_LABEL;
6861 RET_LABEL:;
6862 return var;
6863 }
6864 /* method string#Collection#join for (self: Object, String): String */
6865 val* VIRTUAL_string__Collection__join(val* self, val* p0) {
6866 val* var /* : String */;
6867 val* var1 /* : String */;
6868 var1 = string__Collection__join(self, p0);
6869 var = var1;
6870 RET_LABEL:;
6871 return var;
6872 }
6873 /* method string#Array#to_s for (self: Array[nullable Object]): String */
6874 val* string__Array__to_s(val* self) {
6875 val* var /* : String */;
6876 val* var1 /* : Buffer */;
6877 val* var_s /* var s: Buffer */;
6878 long var2 /* : Int */;
6879 long var_i /* var i: Int */;
6880 long var3 /* : Int */;
6881 long var_l /* var l: Int */;
6882 short int var4 /* : Bool */;
6883 short int var6 /* : Bool */;
6884 int cltype;
6885 int idtype;
6886 const char* var_class_name;
6887 short int var7 /* : Bool */;
6888 val* var8 /* : nullable Object */;
6889 val* var_e /* var e: nullable Object */;
6890 val* var9 /* : null */;
6891 short int var10 /* : Bool */;
6892 val* var11 /* : String */;
6893 long var12 /* : Int */;
6894 long var13 /* : Int */;
6895 long var15 /* : Int */;
6896 val* var16 /* : String */;
6897 var1 = NEW_string__Buffer(&type_string__Buffer);
6898 ((void (*)(val*))(var1->class->vft[COLOR_string__Buffer__init]))(var1) /* init on <var1:Buffer>*/;
6899 CHECK_NEW_string__Buffer(var1);
6900 var_s = var1;
6901 var2 = 0;
6902 var_i = var2;
6903 var3 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:Array[nullable Object]>*/;
6904 var_l = var3;
6905 for(;;) {
6906 { /* Inline kernel#Int#< (var_i,var_l) */
6907 /* Covariant cast for argument 0 (i) <var_l:Int> isa OTHER */
6908 /* <var_l:Int> isa OTHER */
6909 var6 = 1; /* easy <var_l:Int> isa OTHER*/
6910 if (!var6) {
6911 var_class_name = type_kernel__Int.name;
6912 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
6913 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
6914 exit(1);
6915 }
6916 var7 = var_i < var_l;
6917 var4 = var7;
6918 goto RET_LABEL5;
6919 RET_LABEL5:(void)0;
6920 }
6921 if (!var4) break;
6922 var8 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(self, var_i) /* [] on <self:Array[nullable Object]>*/;
6923 var_e = var8;
6924 var9 = NULL;
6925 if (var_e == NULL) {
6926 var10 = 0; /* is null */
6927 } else {
6928 var10 = 1; /* arg is null and recv is not */
6929 }
6930 if (var10){
6931 if (var_e == NULL) {
6932 fprintf(stderr, "Runtime error: %s", "Reciever is null");
6933 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 1037);
6934 exit(1);
6935 } else {
6936 var11 = ((val* (*)(val*))(var_e->class->vft[COLOR_string__Object__to_s]))(var_e) /* to_s on <var_e:nullable Object>*/;
6937 }
6938 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__Sequence__append]))(var_s, var11) /* append on <var_s:Buffer>*/;
6939 } else {
6940 }
6941 var12 = 1;
6942 { /* Inline kernel#Int#+ (var_i,var12) */
6943 var15 = var_i + var12;
6944 var13 = var15;
6945 goto RET_LABEL14;
6946 RET_LABEL14:(void)0;
6947 }
6948 var_i = var13;
6949 CONTINUE_label: (void)0;
6950 }
6951 BREAK_label: (void)0;
6952 var16 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__Object__to_s]))(var_s) /* to_s on <var_s:Buffer>*/;
6953 var = var16;
6954 goto RET_LABEL;
6955 RET_LABEL:;
6956 return var;
6957 }
6958 /* method string#Array#to_s for (self: Object): String */
6959 val* VIRTUAL_string__Array__to_s(val* self) {
6960 val* var /* : String */;
6961 val* var1 /* : String */;
6962 var1 = string__Array__to_s(self);
6963 var = var1;
6964 RET_LABEL:;
6965 return var;
6966 }
6967 /* method string#Map#join for (self: Map[Object, nullable Object], String, String): String */
6968 val* string__Map__join(val* self, val* p0, val* p1) {
6969 val* var /* : String */;
6970 val* var_sep /* var sep: String */;
6971 val* var_couple_sep /* var couple_sep: String */;
6972 short int var1 /* : Bool */;
6973 static val* varonce;
6974 val* var2 /* : String */;
6975 char* var3 /* : NativeString */;
6976 long var4 /* : Int */;
6977 val* var5 /* : String */;
6978 val* var6 /* : Buffer */;
6979 val* var_s /* var s: Buffer */;
6980 val* var7 /* : MapIterator[Object, nullable Object] */;
6981 val* var_i /* var i: MapIterator[Object, nullable Object] */;
6982 val* var8 /* : Object */;
6983 val* var_k /* var k: Object */;
6984 val* var9 /* : nullable Object */;
6985 val* var_e /* var e: nullable Object */;
6986 val* var10 /* : null */;
6987 short int var11 /* : Bool */;
6988 val* var12 /* : Array[Object] */;
6989 long var13 /* : Int */;
6990 val* var14 /* : NativeArray[Object] */;
6991 val* var15 /* : String */;
6992 short int var16 /* : Bool */;
6993 val* var17 /* : Object */;
6994 val* var18 /* : nullable Object */;
6995 val* var19 /* : null */;
6996 short int var20 /* : Bool */;
6997 val* var21 /* : Array[Object] */;
6998 long var22 /* : Int */;
6999 val* var23 /* : NativeArray[Object] */;
7000 val* var24 /* : String */;
7001 val* var25 /* : String */;
7002 var_sep = p0;
7003 var_couple_sep = p1;
7004 var1 = ((short int (*)(val*))(self->class->vft[COLOR_abstract_collection__MapRead__is_empty]))(self) /* is_empty on <self:Map[Object, nullable Object]>*/;
7005 if (var1){
7006 if (varonce) {
7007 var2 = varonce;
7008 } else {
7009 var3 = "";
7010 var4 = 0;
7011 var5 = string__NativeString__to_s_with_length(var3, var4);
7012 var2 = var5;
7013 varonce = var2;
7014 }
7015 var = var2;
7016 goto RET_LABEL;
7017 } else {
7018 }
7019 var6 = NEW_string__Buffer(&type_string__Buffer);
7020 ((void (*)(val*))(var6->class->vft[COLOR_string__Buffer__init]))(var6) /* init on <var6:Buffer>*/;
7021 CHECK_NEW_string__Buffer(var6);
7022 var_s = var6;
7023 var7 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__MapRead__iterator]))(self) /* iterator on <self:Map[Object, nullable Object]>*/;
7024 var_i = var7;
7025 var8 = ((val* (*)(val*))(var_i->class->vft[COLOR_abstract_collection__MapIterator__key]))(var_i) /* key on <var_i:MapIterator[Object, nullable Object]>*/;
7026 var_k = var8;
7027 var9 = ((val* (*)(val*))(var_i->class->vft[COLOR_abstract_collection__MapIterator__item]))(var_i) /* item on <var_i:MapIterator[Object, nullable Object]>*/;
7028 var_e = var9;
7029 var10 = NULL;
7030 if (var_e == NULL) {
7031 var11 = 0; /* is null */
7032 } else {
7033 var11 = 1; /* arg is null and recv is not */
7034 }
7035 if (var11){
7036 var12 = NEW_array__Array(&type_array__Arraykernel__Object);
7037 { /* var12 = array_instance Array[Object] */
7038 var13 = 3;
7039 var14 = NEW_array__NativeArray(var13, &type_array__NativeArraykernel__Object);
7040 ((struct instance_array__NativeArray*)var14)->values[0] = (val*) var_k;
7041 ((struct instance_array__NativeArray*)var14)->values[1] = (val*) var_couple_sep;
7042 ((struct instance_array__NativeArray*)var14)->values[2] = (val*) var_e;
7043 ((void (*)(val*, val*, long))(var12->class->vft[COLOR_array__Array__with_native]))(var12, var14, var13) /* with_native on <var12:Array[Object]>*/;
7044 CHECK_NEW_array__Array(var12);
7045 }
7046 var15 = ((val* (*)(val*))(var12->class->vft[COLOR_string__Object__to_s]))(var12) /* to_s on <var12:Array[Object]>*/;
7047 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__Sequence__append]))(var_s, var15) /* append on <var_s:Buffer>*/;
7048 } else {
7049 }
7050 ((void (*)(val*))(var_i->class->vft[COLOR_abstract_collection__MapIterator__next]))(var_i) /* next on <var_i:MapIterator[Object, nullable Object]>*/;
7051 for(;;) {
7052 var16 = ((short int (*)(val*))(var_i->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var_i) /* is_ok on <var_i:MapIterator[Object, nullable Object]>*/;
7053 if (!var16) break;
7054 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__Sequence__append]))(var_s, var_sep) /* append on <var_s:Buffer>*/;
7055 var17 = ((val* (*)(val*))(var_i->class->vft[COLOR_abstract_collection__MapIterator__key]))(var_i) /* key on <var_i:MapIterator[Object, nullable Object]>*/;
7056 var_k = var17;
7057 var18 = ((val* (*)(val*))(var_i->class->vft[COLOR_abstract_collection__MapIterator__item]))(var_i) /* item on <var_i:MapIterator[Object, nullable Object]>*/;
7058 var_e = var18;
7059 var19 = NULL;
7060 if (var_e == NULL) {
7061 var20 = 0; /* is null */
7062 } else {
7063 var20 = 1; /* arg is null and recv is not */
7064 }
7065 if (var20){
7066 var21 = NEW_array__Array(&type_array__Arraykernel__Object);
7067 { /* var21 = array_instance Array[Object] */
7068 var22 = 3;
7069 var23 = NEW_array__NativeArray(var22, &type_array__NativeArraykernel__Object);
7070 ((struct instance_array__NativeArray*)var23)->values[0] = (val*) var_k;
7071 ((struct instance_array__NativeArray*)var23)->values[1] = (val*) var_couple_sep;
7072 ((struct instance_array__NativeArray*)var23)->values[2] = (val*) var_e;
7073 ((void (*)(val*, val*, long))(var21->class->vft[COLOR_array__Array__with_native]))(var21, var23, var22) /* with_native on <var21:Array[Object]>*/;
7074 CHECK_NEW_array__Array(var21);
7075 }
7076 var24 = ((val* (*)(val*))(var21->class->vft[COLOR_string__Object__to_s]))(var21) /* to_s on <var21:Array[Object]>*/;
7077 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__Sequence__append]))(var_s, var24) /* append on <var_s:Buffer>*/;
7078 } else {
7079 }
7080 ((void (*)(val*))(var_i->class->vft[COLOR_abstract_collection__MapIterator__next]))(var_i) /* next on <var_i:MapIterator[Object, nullable Object]>*/;
7081 CONTINUE_label: (void)0;
7082 }
7083 BREAK_label: (void)0;
7084 var25 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__Object__to_s]))(var_s) /* to_s on <var_s:Buffer>*/;
7085 var = var25;
7086 goto RET_LABEL;
7087 RET_LABEL:;
7088 return var;
7089 }
7090 /* method string#Map#join for (self: Object, String, String): String */
7091 val* VIRTUAL_string__Map__join(val* self, val* p0, val* p1) {
7092 val* var /* : String */;
7093 val* var1 /* : String */;
7094 var1 = string__Map__join(self, p0, p1);
7095 var = var1;
7096 RET_LABEL:;
7097 return var;
7098 }
7099 /* method string#NativeString#[] for (self: NativeString, Int): Char */
7100 char string__NativeString___91d_93d(char* self, long p0) {
7101 char var /* : Char */;
7102 char var1 /* : Char */;
7103 var1 = self[p0];
7104 var = var1;
7105 goto RET_LABEL;
7106 RET_LABEL:;
7107 return var;
7108 }
7109 /* method string#NativeString#[] for (self: Object, Int): Char */
7110 char VIRTUAL_string__NativeString___91d_93d(val* self, long p0) {
7111 char var /* : Char */;
7112 char var1 /* : Char */;
7113 char* var3 /* : NativeString */;
7114 char var4 /* : Char */;
7115 { /* Inline string#NativeString#[] (self,p0) */
7116 var3 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
7117 var4 = var3[p0];
7118 var1 = var4;
7119 goto RET_LABEL2;
7120 RET_LABEL2:(void)0;
7121 }
7122 var = var1;
7123 RET_LABEL:;
7124 return var;
7125 }
7126 /* method string#NativeString#[]= for (self: NativeString, Int, Char) */
7127 void string__NativeString___91d_93d_61d(char* self, long p0, char p1) {
7128 self[p0]=p1;
7129 RET_LABEL:;
7130 }
7131 /* method string#NativeString#[]= for (self: Object, Int, Char) */
7132 void VIRTUAL_string__NativeString___91d_93d_61d(val* self, long p0, char p1) {
7133 char* var /* : NativeString */;
7134 { /* Inline string#NativeString#[]= (self,p0,p1) */
7135 var = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
7136 var[p0]=p1;
7137 RET_LABEL1:(void)0;
7138 }
7139 RET_LABEL:;
7140 }
7141 /* method string#NativeString#copy_to for (self: NativeString, NativeString, Int, Int, Int) */
7142 void string__NativeString__copy_to(char* self, char* p0, long p1, long p2, long p3) {
7143 memcpy(p0+p3,self+p2,p1);
7144 RET_LABEL:;
7145 }
7146 /* method string#NativeString#copy_to for (self: Object, NativeString, Int, Int, Int) */
7147 void VIRTUAL_string__NativeString__copy_to(val* self, char* p0, long p1, long p2, long p3) {
7148 char* var /* : NativeString */;
7149 { /* Inline string#NativeString#copy_to (self,p0,p1,p2,p3) */
7150 var = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
7151 memcpy(p0+p3,var+p2,p1);
7152 RET_LABEL1:(void)0;
7153 }
7154 RET_LABEL:;
7155 }
7156 /* method string#NativeString#cstring_length for (self: NativeString): Int */
7157 long string__NativeString__cstring_length(char* self) {
7158 long var /* : Int */;
7159 long var1 /* : Int */;
7160 long var_l /* var l: Int */;
7161 char var2 /* : Char */;
7162 char var4 /* : Char */;
7163 char var5 /* : Char */;
7164 short int var6 /* : Bool */;
7165 short int var8 /* : Bool */;
7166 short int var9 /* : Bool */;
7167 long var10 /* : Int */;
7168 long var11 /* : Int */;
7169 long var13 /* : Int */;
7170 var1 = 0;
7171 var_l = var1;
7172 for(;;) {
7173 { /* Inline string#NativeString#[] (self,var_l) */
7174 var4 = self[var_l];
7175 var2 = var4;
7176 goto RET_LABEL3;
7177 RET_LABEL3:(void)0;
7178 }
7179 var5 = '\0';
7180 { /* Inline kernel#Char#!= (var2,var5) */
7181 var8 = var2 == var5;
7182 var9 = !var8;
7183 var6 = var9;
7184 goto RET_LABEL7;
7185 RET_LABEL7:(void)0;
7186 }
7187 if (!var6) break;
7188 var10 = 1;
7189 { /* Inline kernel#Int#+ (var_l,var10) */
7190 var13 = var_l + var10;
7191 var11 = var13;
7192 goto RET_LABEL12;
7193 RET_LABEL12:(void)0;
7194 }
7195 var_l = var11;
7196 CONTINUE_label: (void)0;
7197 }
7198 BREAK_label: (void)0;
7199 var = var_l;
7200 goto RET_LABEL;
7201 RET_LABEL:;
7202 return var;
7203 }
7204 /* method string#NativeString#cstring_length for (self: Object): Int */
7205 long VIRTUAL_string__NativeString__cstring_length(val* self) {
7206 long var /* : Int */;
7207 long var1 /* : Int */;
7208 char* var2 /* : NativeString */;
7209 var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
7210 var1 = string__NativeString__cstring_length(var2);
7211 var = var1;
7212 RET_LABEL:;
7213 return var;
7214 }
7215 /* method string#NativeString#atoi for (self: NativeString): Int */
7216 long string__NativeString__atoi(char* self) {
7217 long var /* : Int */;
7218 long var1 /* : Int */;
7219 var1 = atoi(self);;
7220 var = var1;
7221 goto RET_LABEL;
7222 RET_LABEL:;
7223 return var;
7224 }
7225 /* method string#NativeString#atoi for (self: Object): Int */
7226 long VIRTUAL_string__NativeString__atoi(val* self) {
7227 long var /* : Int */;
7228 long var1 /* : Int */;
7229 char* var3 /* : NativeString */;
7230 long var4 /* : Int */;
7231 { /* Inline string#NativeString#atoi (self) */
7232 var3 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
7233 var4 = atoi(var3);;
7234 var1 = var4;
7235 goto RET_LABEL2;
7236 RET_LABEL2:(void)0;
7237 }
7238 var = var1;
7239 RET_LABEL:;
7240 return var;
7241 }
7242 /* method string#NativeString#atof for (self: NativeString): Float */
7243 double string__NativeString__atof(char* self) {
7244 double var /* : Float */;
7245 double var1 /* : Float */;
7246 var1 = atof(self);
7247 var = var1;
7248 goto RET_LABEL;
7249 RET_LABEL:;
7250 return var;
7251 }
7252 /* method string#NativeString#atof for (self: Object): Float */
7253 double VIRTUAL_string__NativeString__atof(val* self) {
7254 double var /* : Float */;
7255 double var1 /* : Float */;
7256 char* var2 /* : NativeString */;
7257 var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
7258 var1 = string__NativeString__atof(var2);
7259 var = var1;
7260 RET_LABEL:;
7261 return var;
7262 }
7263 /* method string#NativeString#to_s for (self: NativeString): String */
7264 val* string__NativeString__to_s(char* self) {
7265 val* var /* : String */;
7266 long var1 /* : Int */;
7267 val* var2 /* : String */;
7268 var1 = string__NativeString__cstring_length(self);
7269 var2 = string__NativeString__to_s_with_length(self, var1);
7270 var = var2;
7271 goto RET_LABEL;
7272 RET_LABEL:;
7273 return var;
7274 }
7275 /* method string#NativeString#to_s for (self: Object): String */
7276 val* VIRTUAL_string__NativeString__to_s(val* self) {
7277 val* var /* : String */;
7278 val* var1 /* : String */;
7279 char* var2 /* : NativeString */;
7280 var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
7281 var1 = string__NativeString__to_s(var2);
7282 var = var1;
7283 RET_LABEL:;
7284 return var;
7285 }
7286 /* method string#NativeString#to_s_with_length for (self: NativeString, Int): String */
7287 val* string__NativeString__to_s_with_length(char* self, long p0) {
7288 val* var /* : String */;
7289 long var_length /* var length: Int */;
7290 long var1 /* : Int */;
7291 short int var2 /* : Bool */;
7292 short int var4 /* : Bool */;
7293 int cltype;
7294 int idtype;
7295 const char* var_class_name;
7296 short int var5 /* : Bool */;
7297 val* var6 /* : String */;
7298 long var7 /* : Int */;
7299 long var8 /* : Int */;
7300 long var9 /* : Int */;
7301 long var11 /* : Int */;
7302 var_length = p0;
7303 var1 = 0;
7304 { /* Inline kernel#Int#>= (var_length,var1) */
7305 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
7306 /* <var1:Int> isa OTHER */
7307 var4 = 1; /* easy <var1:Int> isa OTHER*/
7308 if (!var4) {
7309 var_class_name = type_kernel__Int.name;
7310 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
7311 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
7312 exit(1);
7313 }
7314 var5 = var_length >= var1;
7315 var2 = var5;
7316 goto RET_LABEL3;
7317 RET_LABEL3:(void)0;
7318 }
7319 if (!var2) {
7320 fprintf(stderr, "Runtime error: %s", "Assert failed");
7321 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 1107);
7322 exit(1);
7323 }
7324 var6 = NEW_string__String(&type_string__String);
7325 var7 = 0;
7326 var8 = 1;
7327 { /* Inline kernel#Int#- (var_length,var8) */
7328 var11 = var_length - var8;
7329 var9 = var11;
7330 goto RET_LABEL10;
7331 RET_LABEL10:(void)0;
7332 }
7333 ((void (*)(val*, char*, long, long, long))(var6->class->vft[COLOR_string__String__with_infos]))(var6, self, var_length, var7, var9) /* with_infos on <var6:String>*/;
7334 CHECK_NEW_string__String(var6);
7335 var = var6;
7336 goto RET_LABEL;
7337 RET_LABEL:;
7338 return var;
7339 }
7340 /* method string#NativeString#to_s_with_length for (self: Object, Int): String */
7341 val* VIRTUAL_string__NativeString__to_s_with_length(val* self, long p0) {
7342 val* var /* : String */;
7343 val* var1 /* : String */;
7344 char* var2 /* : NativeString */;
7345 var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
7346 var1 = string__NativeString__to_s_with_length(var2, p0);
7347 var = var1;
7348 RET_LABEL:;
7349 return var;
7350 }
7351 /* method string#NativeString#to_s_with_copy for (self: NativeString): String */
7352 val* string__NativeString__to_s_with_copy(char* self) {
7353 val* var /* : String */;
7354 long var1 /* : Int */;
7355 long var_length /* var length: Int */;
7356 long var2 /* : Int */;
7357 long var3 /* : Int */;
7358 long var5 /* : Int */;
7359 char* var6 /* : NativeString */;
7360 val* var8 /* : StringCapable */;
7361 char* var9 /* : NativeString */;
7362 char* var_new_self /* var new_self: NativeString */;
7363 long var10 /* : Int */;
7364 long var11 /* : Int */;
7365 val* var13 /* : String */;
7366 long var14 /* : Int */;
7367 long var15 /* : Int */;
7368 long var16 /* : Int */;
7369 long var18 /* : Int */;
7370 var1 = string__NativeString__cstring_length(self);
7371 var_length = var1;
7372 var2 = 1;
7373 { /* Inline kernel#Int#+ (var_length,var2) */
7374 var5 = var_length + var2;
7375 var3 = var5;
7376 goto RET_LABEL4;
7377 RET_LABEL4:(void)0;
7378 }
7379 { /* Inline string#StringCapable#calloc_string (self,var3) */
7380 var8 = BOX_string__NativeString(self); /* autobox from NativeString to StringCapable */
7381 var9 = (char*)nit_alloc(var3);
7382 var6 = var9;
7383 goto RET_LABEL7;
7384 RET_LABEL7:(void)0;
7385 }
7386 var_new_self = var6;
7387 var10 = 0;
7388 var11 = 0;
7389 { /* Inline string#NativeString#copy_to (self,var_new_self,var_length,var10,var11) */
7390 memcpy(var_new_self+var11,self+var10,var_length);
7391 RET_LABEL12:(void)0;
7392 }
7393 var13 = NEW_string__String(&type_string__String);
7394 var14 = 0;
7395 var15 = 1;
7396 { /* Inline kernel#Int#- (var_length,var15) */
7397 var18 = var_length - var15;
7398 var16 = var18;
7399 goto RET_LABEL17;
7400 RET_LABEL17:(void)0;
7401 }
7402 ((void (*)(val*, char*, long, long, long))(var13->class->vft[COLOR_string__String__with_infos]))(var13, var_new_self, var_length, var14, var16) /* with_infos on <var13:String>*/;
7403 CHECK_NEW_string__String(var13);
7404 var = var13;
7405 goto RET_LABEL;
7406 RET_LABEL:;
7407 return var;
7408 }
7409 /* method string#NativeString#to_s_with_copy for (self: Object): String */
7410 val* VIRTUAL_string__NativeString__to_s_with_copy(val* self) {
7411 val* var /* : String */;
7412 val* var1 /* : String */;
7413 char* var2 /* : NativeString */;
7414 var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
7415 var1 = string__NativeString__to_s_with_copy(var2);
7416 var = var1;
7417 RET_LABEL:;
7418 return var;
7419 }
7420 /* method string#NativeString#init for (self: NativeString) */
7421 void string__NativeString__init(char* self) {
7422 RET_LABEL:;
7423 }
7424 /* method string#NativeString#init for (self: Object) */
7425 void VIRTUAL_string__NativeString__init(val* self) {
7426 char* var /* : NativeString */;
7427 var = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
7428 string__NativeString__init(var);
7429 RET_LABEL:;
7430 }
7431 /* method string#StringCapable#calloc_string for (self: StringCapable, Int): NativeString */
7432 char* string__StringCapable__calloc_string(val* self, long p0) {
7433 char* var /* : NativeString */;
7434 char* var1 /* : NativeString */;
7435 var1 = (char*)nit_alloc(p0);
7436 var = var1;
7437 goto RET_LABEL;
7438 RET_LABEL:;
7439 return var;
7440 }
7441 /* method string#StringCapable#calloc_string for (self: Object, Int): NativeString */
7442 char* VIRTUAL_string__StringCapable__calloc_string(val* self, long p0) {
7443 char* var /* : NativeString */;
7444 char* var1 /* : NativeString */;
7445 char* var3 /* : NativeString */;
7446 { /* Inline string#StringCapable#calloc_string (self,p0) */
7447 var3 = (char*)nit_alloc(p0);
7448 var1 = var3;
7449 goto RET_LABEL2;
7450 RET_LABEL2:(void)0;
7451 }
7452 var = var1;
7453 RET_LABEL:;
7454 return var;
7455 }
7456 /* method string#Sys#args for (self: Sys): Sequence[String] */
7457 val* string__Sys__args(val* self) {
7458 val* var /* : Sequence[String] */;
7459 val* var1 /* : nullable Sequence[String] */;
7460 val* var2 /* : null */;
7461 short int var3 /* : Bool */;
7462 val* var4 /* : nullable Sequence[String] */;
7463 var1 = self->attrs[COLOR_string__Sys___args_cache].val; /* _args_cache on <self:Sys> */
7464 var2 = NULL;
7465 if (var1 == NULL) {
7466 var3 = 1; /* is null */
7467 } else {
7468 var3 = 0; /* arg is null but recv is not */
7469 }
7470 if (var3){
7471 ((void (*)(val*))(self->class->vft[COLOR_string__Sys__init_args]))(self) /* init_args on <self:Sys>*/;
7472 } else {
7473 }
7474 var4 = self->attrs[COLOR_string__Sys___args_cache].val; /* _args_cache on <self:Sys> */
7475 if (var4 == NULL) {
7476 fprintf(stderr, "Runtime error: %s", "Cast failed");
7477 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 1132);
7478 exit(1);
7479 }
7480 var = var4;
7481 goto RET_LABEL;
7482 RET_LABEL:;
7483 return var;
7484 }
7485 /* method string#Sys#args for (self: Object): Sequence[String] */
7486 val* VIRTUAL_string__Sys__args(val* self) {
7487 val* var /* : Sequence[String] */;
7488 val* var1 /* : Sequence[String] */;
7489 var1 = string__Sys__args(self);
7490 var = var1;
7491 RET_LABEL:;
7492 return var;
7493 }
7494 /* method string#Sys#program_name for (self: Sys): String */
7495 val* string__Sys__program_name(val* self) {
7496 val* var /* : String */;
7497 long var1 /* : Int */;
7498 char* var2 /* : NativeString */;
7499 val* var3 /* : String */;
7500 var1 = 0;
7501 var2 = ((char* (*)(val*, long))(self->class->vft[COLOR_string__Sys__native_argv]))(self, var1) /* native_argv on <self:Sys>*/;
7502 var3 = string__NativeString__to_s(var2);
7503 var = var3;
7504 goto RET_LABEL;
7505 RET_LABEL:;
7506 return var;
7507 }
7508 /* method string#Sys#program_name for (self: Object): String */
7509 val* VIRTUAL_string__Sys__program_name(val* self) {
7510 val* var /* : String */;
7511 val* var1 /* : String */;
7512 var1 = string__Sys__program_name(self);
7513 var = var1;
7514 RET_LABEL:;
7515 return var;
7516 }
7517 /* method string#Sys#init_args for (self: Sys) */
7518 void string__Sys__init_args(val* self) {
7519 long var /* : Int */;
7520 long var_argc /* var argc: Int */;
7521 val* var1 /* : Array[String] */;
7522 long var2 /* : Int */;
7523 val* var_args /* var args: Array[String] */;
7524 long var3 /* : Int */;
7525 long var_i /* var i: Int */;
7526 short int var4 /* : Bool */;
7527 short int var6 /* : Bool */;
7528 int cltype;
7529 int idtype;
7530 const char* var_class_name;
7531 short int var7 /* : Bool */;
7532 long var8 /* : Int */;
7533 long var9 /* : Int */;
7534 long var11 /* : Int */;
7535 char* var12 /* : NativeString */;
7536 val* var13 /* : String */;
7537 long var14 /* : Int */;
7538 long var15 /* : Int */;
7539 long var17 /* : Int */;
7540 var = ((long (*)(val*))(self->class->vft[COLOR_string__Sys__native_argc]))(self) /* native_argc on <self:Sys>*/;
7541 var_argc = var;
7542 var1 = NEW_array__Array(&type_array__Arraystring__String);
7543 var2 = 0;
7544 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[String]>*/;
7545 CHECK_NEW_array__Array(var1);
7546 var_args = var1;
7547 var3 = 1;
7548 var_i = var3;
7549 for(;;) {
7550 { /* Inline kernel#Int#< (var_i,var_argc) */
7551 /* Covariant cast for argument 0 (i) <var_argc:Int> isa OTHER */
7552 /* <var_argc:Int> isa OTHER */
7553 var6 = 1; /* easy <var_argc:Int> isa OTHER*/
7554 if (!var6) {
7555 var_class_name = type_kernel__Int.name;
7556 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
7557 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
7558 exit(1);
7559 }
7560 var7 = var_i < var_argc;
7561 var4 = var7;
7562 goto RET_LABEL5;
7563 RET_LABEL5:(void)0;
7564 }
7565 if (!var4) break;
7566 var8 = 1;
7567 { /* Inline kernel#Int#- (var_i,var8) */
7568 var11 = var_i - var8;
7569 var9 = var11;
7570 goto RET_LABEL10;
7571 RET_LABEL10:(void)0;
7572 }
7573 var12 = ((char* (*)(val*, long))(self->class->vft[COLOR_string__Sys__native_argv]))(self, var_i) /* native_argv on <self:Sys>*/;
7574 var13 = string__NativeString__to_s(var12);
7575 ((void (*)(val*, long, val*))(var_args->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_args, var9, var13) /* []= on <var_args:Array[String]>*/;
7576 var14 = 1;
7577 { /* Inline kernel#Int#+ (var_i,var14) */
7578 var17 = var_i + var14;
7579 var15 = var17;
7580 goto RET_LABEL16;
7581 RET_LABEL16:(void)0;
7582 }
7583 var_i = var15;
7584 CONTINUE_label: (void)0;
7585 }
7586 BREAK_label: (void)0;
7587 self->attrs[COLOR_string__Sys___args_cache].val = var_args; /* _args_cache on <self:Sys> */
7588 RET_LABEL:;
7589 }
7590 /* method string#Sys#init_args for (self: Object) */
7591 void VIRTUAL_string__Sys__init_args(val* self) {
7592 string__Sys__init_args(self);
7593 RET_LABEL:;
7594 }
7595 /* method string#Sys#native_argc for (self: Sys): Int */
7596 long string__Sys__native_argc(val* self) {
7597 long var /* : Int */;
7598 long var1 /* : Int */;
7599 var1 = glob_argc;
7600 var = var1;
7601 goto RET_LABEL;
7602 RET_LABEL:;
7603 return var;
7604 }
7605 /* method string#Sys#native_argc for (self: Object): Int */
7606 long VIRTUAL_string__Sys__native_argc(val* self) {
7607 long var /* : Int */;
7608 long var1 /* : Int */;
7609 long var3 /* : Int */;
7610 { /* Inline string#Sys#native_argc (self) */
7611 var3 = glob_argc;
7612 var1 = var3;
7613 goto RET_LABEL2;
7614 RET_LABEL2:(void)0;
7615 }
7616 var = var1;
7617 RET_LABEL:;
7618 return var;
7619 }
7620 /* method string#Sys#native_argv for (self: Sys, Int): NativeString */
7621 char* string__Sys__native_argv(val* self, long p0) {
7622 char* var /* : NativeString */;
7623 char* var1 /* : NativeString */;
7624 var1 = glob_argv[p0];
7625 var = var1;
7626 goto RET_LABEL;
7627 RET_LABEL:;
7628 return var;
7629 }
7630 /* method string#Sys#native_argv for (self: Object, Int): NativeString */
7631 char* VIRTUAL_string__Sys__native_argv(val* self, long p0) {
7632 char* var /* : NativeString */;
7633 char* var1 /* : NativeString */;
7634 char* var3 /* : NativeString */;
7635 { /* Inline string#Sys#native_argv (self,p0) */
7636 var3 = glob_argv[p0];
7637 var1 = var3;
7638 goto RET_LABEL2;
7639 RET_LABEL2:(void)0;
7640 }
7641 var = var1;
7642 RET_LABEL:;
7643 return var;
7644 }