+val_t array___AbstractArrayRead___iterator(val_t p0){
+ struct {struct stack_frame_t me;} fra;
+ val_t tmp;
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_array;
+ fra.me.line = 126;
+ fra.me.meth = LOCATE_array___AbstractArrayRead___iterator;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 1;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ fra.me.REG[0] = NEW_ArrayIterator_array___ArrayIterator___init(fra.me.REG[0]);
+ /* ./../lib/standard//collection//array.nit:126 */
+ goto label1;
+ label1: while(0);
+ stack_frame_head = fra.me.prev;
+ return fra.me.REG[0];
+}
+val_t array___AbstractArrayRead___is_empty(val_t p0){
+ struct {struct stack_frame_t me;} fra;
+ val_t REGB0;
+ val_t REGB1;
+ val_t REGB2;
+ val_t tmp;
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_array;
+ fra.me.line = 26;
+ fra.me.meth = LOCATE_array___AbstractArrayRead___is_empty;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 1;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ REGB0 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+ /* ./../lib/standard//collection//array.nit:26 */
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ fprintf(stderr, "Uninitialized attribute %s", "_length");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_array, 26);
+ nit_exit(1);
+ }
+ REGB0 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
+ REGB1 = TAG_Int(0);
+ REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
+ if (UNTAG_Bool(REGB2)) {
+ } else {
+ REGB1 = TAG_Bool((REGB0)==(REGB1));
+ REGB2 = REGB1;
+ /* ./../lib/standard//collection//array.nit:26 */
+ }
+ goto label1;
+ label1: while(0);
+ stack_frame_head = fra.me.prev;
+ return REGB2;
+}
+val_t array___AbstractArrayRead___length(val_t p0){
+ struct {struct stack_frame_t me;} fra;
+ val_t REGB0;
+ val_t tmp;
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_array;
+ fra.me.line = 23;
+ fra.me.meth = LOCATE_array___AbstractArrayRead___length;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 1;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ REGB0 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+ /* ./../lib/standard//collection//array.nit:23 */
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ fprintf(stderr, "Uninitialized attribute %s", "_length");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
+ nit_exit(1);
+ }
+ REGB0 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
+ stack_frame_head = fra.me.prev;
+ return REGB0;
+}
+val_t array___AbstractArrayRead___has(val_t p0, val_t p1){
+ struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+ val_t REGB0;
+ val_t REGB1;
+ val_t REGB2;
+ val_t REGB3;
+ val_t tmp;
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_array;
+ fra.me.line = 28;
+ fra.me.meth = LOCATE_array___AbstractArrayRead___has;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 3;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[1] = NIT_NULL;
+ fra.me.REG[2] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ fra.me.REG[1] = p1;
+ REGB0 = TAG_Int(0);
+ REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+ /* ./../lib/standard//collection//array.nit:23 */
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ fprintf(stderr, "Uninitialized attribute %s", "_length");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
+ nit_exit(1);
+ }
+ REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
+ /* ./../lib/standard//collection//array.nit:32 */
+ while(1) {
+ REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+ /* ./../lib/standard//collection//array.nit:32 */
+ if (UNTAG_Bool(REGB2)) {
+ fra.me.REG[2] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
+ REGB2 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
+ /* ./../lib/standard//collection//array.nit:33 */
+ if (UNTAG_Bool(REGB2)) {
+ } else {
+ REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+ if (UNTAG_Bool(REGB3)) {
+ REGB3 = TAG_Bool(false);
+ REGB2 = REGB3;
+ } else {
+ REGB3 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+ REGB2 = REGB3;
+ }
+ }
+ if (UNTAG_Bool(REGB2)) {
+ REGB2 = TAG_Bool(true);
+ goto label1;
+ }
+ REGB3 = TAG_Int(1);
+ REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
+ REGB0 = REGB3;
+ /* ./../lib/standard//collection//array.nit:34 */
+ } else {
+ /* ./../lib/standard//collection//array.nit:32 */
+ goto label2;
+ }
+ }
+ label2: while(0);
+ REGB0 = TAG_Bool(false);
+ REGB2 = REGB0;
+ /* ./../lib/standard//collection//array.nit:36 */
+ goto label1;
+ label1: while(0);
+ stack_frame_head = fra.me.prev;
+ return REGB2;
+}
+val_t array___AbstractArrayRead___has_only(val_t p0, val_t p1){
+ struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+ val_t REGB0;
+ val_t REGB1;
+ val_t REGB2;
+ val_t REGB3;
+ val_t tmp;
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_array;
+ fra.me.line = 39;
+ fra.me.meth = LOCATE_array___AbstractArrayRead___has_only;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 3;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[1] = NIT_NULL;
+ fra.me.REG[2] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ fra.me.REG[1] = p1;
+ REGB0 = TAG_Int(0);
+ REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+ /* ./../lib/standard//collection//array.nit:23 */
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ fprintf(stderr, "Uninitialized attribute %s", "_length");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
+ nit_exit(1);
+ }
+ REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
+ /* ./../lib/standard//collection//array.nit:43 */
+ while(1) {
+ REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+ /* ./../lib/standard//collection//array.nit:43 */
+ if (UNTAG_Bool(REGB2)) {
+ fra.me.REG[2] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
+ REGB2 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
+ /* ./../lib/standard//collection//array.nit:44 */
+ if (UNTAG_Bool(REGB2)) {
+ } else {
+ REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+ if (UNTAG_Bool(REGB3)) {
+ REGB3 = TAG_Bool(false);
+ REGB2 = REGB3;
+ } else {
+ REGB3 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+ REGB2 = REGB3;
+ }
+ }
+ REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
+ if (UNTAG_Bool(REGB2)) {
+ REGB2 = TAG_Bool(false);
+ goto label1;
+ }
+ REGB3 = TAG_Int(1);
+ REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
+ REGB0 = REGB3;
+ /* ./../lib/standard//collection//array.nit:45 */
+ } else {
+ /* ./../lib/standard//collection//array.nit:43 */
+ goto label2;
+ }
+ }
+ label2: while(0);
+ REGB0 = TAG_Bool(true);
+ REGB2 = REGB0;
+ /* ./../lib/standard//collection//array.nit:47 */
+ goto label1;
+ label1: while(0);
+ stack_frame_head = fra.me.prev;
+ return REGB2;
+}
+val_t array___AbstractArrayRead___count(val_t p0, val_t p1){
+ struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+ val_t REGB0;
+ val_t REGB1;
+ val_t REGB2;
+ val_t REGB3;
+ val_t REGB4;
+ val_t tmp;
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_array;
+ fra.me.line = 52;
+ fra.me.meth = LOCATE_array___AbstractArrayRead___count;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 3;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[1] = NIT_NULL;
+ fra.me.REG[2] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ fra.me.REG[1] = p1;
+ REGB0 = TAG_Int(0);
+ REGB1 = TAG_Int(0);
+ REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+ /* ./../lib/standard//collection//array.nit:23 */
+ if (UNTAG_Bool(REGB2)) {
+ } else {
+ fprintf(stderr, "Uninitialized attribute %s", "_length");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
+ nit_exit(1);
+ }
+ REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
+ /* ./../lib/standard//collection//array.nit:57 */
+ while(1) {
+ REGB3 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
+ /* ./../lib/standard//collection//array.nit:57 */
+ if (UNTAG_Bool(REGB3)) {
+ fra.me.REG[2] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB1);
+ REGB3 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
+ /* ./../lib/standard//collection//array.nit:58 */
+ if (UNTAG_Bool(REGB3)) {
+ } else {
+ REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+ if (UNTAG_Bool(REGB4)) {
+ REGB4 = TAG_Bool(false);
+ REGB3 = REGB4;
+ } else {
+ REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+ REGB3 = REGB4;
+ }
+ }
+ if (UNTAG_Bool(REGB3)) {
+ REGB3 = TAG_Int(1);
+ REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
+ REGB0 = REGB3;
+ /* ./../lib/standard//collection//array.nit:58 */
+ }
+ REGB3 = TAG_Int(1);
+ REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
+ REGB1 = REGB3;
+ /* ./../lib/standard//collection//array.nit:59 */
+ } else {
+ /* ./../lib/standard//collection//array.nit:57 */
+ goto label1;
+ }
+ }
+ label1: while(0);
+ /* ./../lib/standard//collection//array.nit:61 */
+ goto label2;
+ label2: while(0);
+ stack_frame_head = fra.me.prev;
+ return REGB0;
+}
+val_t array___AbstractArrayRead___has_key(val_t p0, val_t p1){
+ struct {struct stack_frame_t me;} fra;
+ val_t REGB0;
+ val_t REGB1;
+ val_t tmp;
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_array;
+ fra.me.line = 50;
+ fra.me.meth = LOCATE_array___AbstractArrayRead___has_key;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 1;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ REGB0 = p1;
+ REGB1 = TAG_Int(0);
+ REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
+ /* ./../lib/standard//collection//array.nit:50 */
+ if (UNTAG_Bool(REGB1)) {
+ REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+ /* ./../lib/standard//collection//array.nit:23 */
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ fprintf(stderr, "Uninitialized attribute %s", "_length");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
+ nit_exit(1);
+ }
+ REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
+ REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+ /* ./../lib/standard//collection//array.nit:50 */
+ } else {
+ REGB0 = TAG_Bool(false);
+ REGB1 = REGB0;
+ }
+ goto label1;
+ label1: while(0);
+ stack_frame_head = fra.me.prev;
+ return REGB1;
+}
+val_t array___AbstractArrayRead___index_of(val_t p0, val_t p1){
+ struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+ val_t REGB0;
+ val_t tmp;
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_array;
+ fra.me.line = 64;
+ fra.me.meth = LOCATE_array___AbstractArrayRead___index_of;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 2;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[1] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ fra.me.REG[1] = p1;
+ REGB0 = TAG_Int(0);
+ REGB0 = CALL_array___AbstractArrayRead___index_of_from(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB0);
+ /* ./../lib/standard//collection//array.nit:64 */
+ goto label1;
+ label1: while(0);
+ stack_frame_head = fra.me.prev;
+ return REGB0;
+}
+val_t array___AbstractArrayRead___last_index_of(val_t p0, val_t p1){
+ struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+ val_t REGB0;
+ val_t REGB1;
+ val_t tmp;
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_array;
+ fra.me.line = 66;
+ fra.me.meth = LOCATE_array___AbstractArrayRead___last_index_of;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 2;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[1] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ fra.me.REG[1] = p1;
+ REGB0 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+ /* ./../lib/standard//collection//array.nit:23 */
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ fprintf(stderr, "Uninitialized attribute %s", "_length");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
+ nit_exit(1);
+ }
+ REGB0 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
+ REGB1 = TAG_Int(1);
+ REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
+ REGB1 = CALL_array___AbstractArrayRead___last_index_of_from(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB1);
+ /* ./../lib/standard//collection//array.nit:66 */
+ goto label1;
+ label1: while(0);
+ stack_frame_head = fra.me.prev;
+ return REGB1;
+}
+val_t array___AbstractArrayRead___index_of_from(val_t p0, val_t p1, val_t p2){
+ struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+ val_t REGB0;
+ val_t REGB1;
+ val_t REGB2;
+ val_t REGB3;
+ val_t tmp;
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_array;
+ fra.me.line = 68;
+ fra.me.meth = LOCATE_array___AbstractArrayRead___index_of_from;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 3;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[1] = NIT_NULL;
+ fra.me.REG[2] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ fra.me.REG[1] = p1;
+ REGB0 = p2;
+ REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+ /* ./../lib/standard//collection//array.nit:23 */
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ fprintf(stderr, "Uninitialized attribute %s", "_length");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
+ nit_exit(1);
+ }
+ REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
+ /* ./../lib/standard//collection//array.nit:72 */
+ while(1) {
+ REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+ /* ./../lib/standard//collection//array.nit:72 */
+ if (UNTAG_Bool(REGB2)) {
+ fra.me.REG[2] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
+ REGB2 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
+ /* ./../lib/standard//collection//array.nit:73 */
+ if (UNTAG_Bool(REGB2)) {
+ } else {
+ REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+ if (UNTAG_Bool(REGB3)) {
+ REGB3 = TAG_Bool(false);
+ REGB2 = REGB3;
+ } else {
+ REGB3 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+ REGB2 = REGB3;
+ }
+ }
+ if (UNTAG_Bool(REGB2)) {
+ REGB2 = REGB0;
+ /* ./../lib/standard//collection//array.nit:74 */
+ goto label1;
+ }
+ REGB3 = TAG_Int(1);
+ REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
+ REGB0 = REGB3;
+ /* ./../lib/standard//collection//array.nit:76 */
+ } else {
+ /* ./../lib/standard//collection//array.nit:72 */
+ goto label2;
+ }
+ }
+ label2: while(0);
+ REGB0 = TAG_Int(1);
+ REGB0 = TAG_Int(-UNTAG_Int(REGB0));
+ REGB2 = REGB0;
+ /* ./../lib/standard//collection//array.nit:78 */
+ goto label1;
+ label1: while(0);
+ stack_frame_head = fra.me.prev;
+ return REGB2;
+}
+val_t array___AbstractArrayRead___last_index_of_from(val_t p0, val_t p1, val_t p2){
+ struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+ val_t REGB0;
+ val_t REGB1;
+ val_t REGB2;
+ val_t tmp;
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_array;
+ fra.me.line = 81;
+ fra.me.meth = LOCATE_array___AbstractArrayRead___last_index_of_from;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 3;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[1] = NIT_NULL;
+ fra.me.REG[2] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ fra.me.REG[1] = p1;
+ REGB0 = p2;
+ /* ./../lib/standard//collection//array.nit:84 */
+ while(1) {
+ REGB1 = TAG_Int(0);
+ REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
+ /* ./../lib/standard//collection//array.nit:84 */
+ if (UNTAG_Bool(REGB1)) {
+ fra.me.REG[2] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
+ REGB1 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
+ /* ./../lib/standard//collection//array.nit:85 */
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+ if (UNTAG_Bool(REGB2)) {
+ REGB2 = TAG_Bool(false);
+ REGB1 = REGB2;
+ } else {
+ REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+ REGB1 = REGB2;
+ }
+ }
+ if (UNTAG_Bool(REGB1)) {
+ REGB1 = REGB0;
+ /* ./../lib/standard//collection//array.nit:86 */
+ goto label1;
+ } else {
+ REGB2 = TAG_Int(1);
+ REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
+ REGB0 = REGB2;
+ /* ./../lib/standard//collection//array.nit:88 */
+ }
+ } else {
+ /* ./../lib/standard//collection//array.nit:84 */
+ goto label2;
+ }
+ }
+ label2: while(0);
+ REGB0 = TAG_Int(1);
+ REGB0 = TAG_Int(-UNTAG_Int(REGB0));
+ REGB1 = REGB0;
+ /* ./../lib/standard//collection//array.nit:91 */
+ goto label1;
+ label1: while(0);
+ stack_frame_head = fra.me.prev;
+ return REGB1;
+}
+val_t array___AbstractArrayRead___reversed(val_t p0){
+ struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+ val_t REGB0;
+ val_t REGB1;
+ val_t tmp;
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_array;
+ fra.me.line = 94;
+ fra.me.meth = LOCATE_array___AbstractArrayRead___reversed;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 3;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[1] = NIT_NULL;
+ fra.me.REG[2] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ REGB0 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+ /* ./../lib/standard//collection//array.nit:96 */
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ fprintf(stderr, "Uninitialized attribute %s", "_length");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_array, 96);
+ nit_exit(1);
+ }
+ REGB0 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
+ fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
+ /* ./../lib/standard//collection//array.nit:98 */
+ while(1) {
+ REGB1 = TAG_Int(0);
+ REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
+ /* ./../lib/standard//collection//array.nit:98 */
+ if (UNTAG_Bool(REGB1)) {
+ REGB1 = TAG_Int(1);
+ REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
+ REGB0 = REGB1;
+ fra.me.REG[2] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
+ /* ./../lib/standard//collection//array.nit:100 */
+ array___Array___add(fra.me.REG[1], fra.me.REG[2]);
+ } else {
+ /* ./../lib/standard//collection//array.nit:98 */
+ goto label1;
+ }
+ }
+ label1: while(0);
+ /* ./../lib/standard//collection//array.nit:102 */
+ goto label2;
+ label2: while(0);
+ stack_frame_head = fra.me.prev;
+ return fra.me.REG[1];
+}
+void array___AbstractArrayRead___copy_to(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
+ struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+ val_t REGB0;
+ val_t REGB1;
+ val_t REGB2;
+ val_t REGB3;
+ val_t REGB4;
+ val_t tmp;
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_array;
+ fra.me.line = 105;
+ fra.me.meth = LOCATE_array___AbstractArrayRead___copy_to;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 3;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[1] = NIT_NULL;
+ fra.me.REG[2] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ REGB0 = p1;
+ REGB1 = p2;
+ fra.me.REG[1] = p3;
+ REGB2 = p4;
+ /* ./../lib/standard//collection//array.nit:109 */
+ while(1) {
+ REGB3 = TAG_Int(0);
+ REGB3 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB3));
+ /* ./../lib/standard//collection//array.nit:109 */
+ if (UNTAG_Bool(REGB3)) {
+ REGB3 = TAG_Int(1);
+ REGB3 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB3));
+ REGB1 = REGB3;
+ REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
+ REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
+ fra.me.REG[2] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB4);
+ /* ./../lib/standard//collection//array.nit:111 */
+ CALL_abstract_collection___Map_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB3, fra.me.REG[2]);
+ } else {
+ /* ./../lib/standard//collection//array.nit:109 */
+ goto label1;
+ }
+ }
+ label1: while(0);
+ stack_frame_head = fra.me.prev;