BYTE* _resize_(BYTE* items, size_t items_size, _DECL_DEALLOC_PARAM(items), int64_t size, _DECL_1DARRAYSIZE_PARAM_CALLBYREFERENCE){ _DECL_1DARRAY_BYTE(nitems); _DECL_DEALLOC(nitems); int64_t i; BYTE _4; _DECL_1DARRAY_BYTE(_5); _DECL_DEALLOC(_5); int64_t _6; BYTE _7; int64_t _8; int64_t _9; //const %4 = 00000000b : byte _4 = 0b00000000; //arraygen %5 = [4; 1] : byte[] _DEALLOC(_5); _NEW_1DARRAY_BYTE(_5, size, _4); _ADD_DEALLOC(_5); //assign %2 = %5 : byte[] _DEALLOC(nitems); _COPY_1DARRAY_BYTE(nitems, _5); _ADD_DEALLOC(nitems); //const %6 = 0 : int _6 = 0; //assign %3 = %6 : int i = _6; //loop (%2, %3, %7, %8, %9) while(true){ //ifge %3, %1 goto blklab5 : int if(i>=size){goto blklab5;} //indexof %7 = %0, %3 : byte[] _7=items[i]; //update %2[%3] = %7 : byte[] -> byte[] nitems[i] = _7; //const %8 = 1 : int _8 = 1; //add %9 = %3, %8 : int _9=i+_8; //assign %3 = %9 : int i = _9; //.blklab6 blklab6:; } //.blklab5 blklab5:; //return %2 _DEALLOC(items); _DEALLOC(_5); _UPDATE_1DARRAYSZIE_PARAM_CALLBYREFERENCE(nitems); return nitems; //return }
BYTE* _compress_(BYTE* data, size_t data_size, _DECL_DEALLOC_PARAM(data), _DECL_1DARRAYSIZE_PARAM_CALLBYREFERENCE){ _DECL_1DARRAY_BYTE(output); _DECL_DEALLOC(output); int64_t pos; Match* m; _DECL_DEALLOC(m); BYTE offset; BYTE length; int64_t _6; BYTE _7; int64_t _8; _DECL_1DARRAY_BYTE(_9); _DECL_DEALLOC(_9); int64_t _10; Match* _11; _DECL_DEALLOC(_11); BYTE _12; int64_t _13; BYTE _14; int64_t _15; BYTE _16; BYTE _17; int64_t _18; int64_t _19; int64_t _20; int64_t _21; _DECL_1DARRAY_BYTE(_22); _DECL_DEALLOC(_22); _DECL_1DARRAY_BYTE(_23); _DECL_DEALLOC(_23); int64_t _24; int64_t _25; int64_t _26; int64_t _27; int64_t _28; int64_t _29; int64_t _30; int64_t _31; int64_t _32; _DECL_1DARRAY_BYTE(_33); _DECL_DEALLOC(_33); //const %6 = 0 : int _6 = 0; //assign %2 = %6 : int pos = _6; //const %7 = 00000000b : byte _7 = 0b00000000; //const %8 = 0 : int _8 = 0; //const %24 = 2 : int _24 = 2; //lengthof %25 = %0 : byte[] _25 = data_size; //mul %26 = %24, %25 : int _26=_24*_25; //arraygen %9 = [7; 26] : byte[] _DEALLOC(_9); _NEW_1DARRAY_BYTE(_9, _26, _7); _ADD_DEALLOC(_9); //const %27 = 0 : int _27 = 0; //assign %28 = %27 : int _28 = _27; //assign %1 = %9 : byte[] _DEALLOC(output); _COPY_1DARRAY_BYTE(output, _9); _ADD_DEALLOC(output); //loop (%1, %2, %3, %4, %5, %10, %11, %12, %13, %14, %15, %16, %17, %18, %19, %20, %21, %22, %23, %28) while(true){ //lengthof %10 = %0 : byte[] _10 = data_size; //ifge %2, %10 goto blklab12 : int if(pos>=_10){goto blklab12;} //invoke (%11) = (%0, %2) lz77_compress:findLongestMatch : function(byte[],lz77_compress:nat)->(lz77_compress:Match) { void* tmp_data; _COPY_1DARRAY_PARAM(data, tmp_data, BYTE); _DEALLOC_STRUCT(_11, Match); _11 = _findLongestMatch_(tmp_data, data_size, true, pos); _CALLEE_DEALLOC(data, "false-false-true" , "findLongestMatch"); _CALLEE_DEALLOC_POST(_11, data); } //assign %3 = %11 : {int len,int offset} _DEALLOC_STRUCT(m, Match); m = copy_Match(_11); _ADD_DEALLOC(m); //fieldload %13 = %3 offset : {int len,int offset} _13 = m->offset; //invoke (%12) = (%13) whiley/lang/Int:toUnsignedByte : function(whiley/lang/Int:u8)->(byte) { _12 = (BYTE)_13; } //assign %4 = %12 : byte offset = _12; //fieldload %15 = %3 len : {int len,int offset} _15 = m->len; //invoke (%14) = (%15) whiley/lang/Int:toUnsignedByte : function(whiley/lang/Int:u8)->(byte) { _14 = (BYTE)_15; } //assign %5 = %14 : byte length = _14; //const %16 = 00000000b : byte _16 = 0b00000000; //ifne %4, %16 goto blklab14 : byte if(offset!=_16){goto blklab14;} //indexof %17 = %0, %2 : byte[] _17=data[pos]; //assign %5 = %17 : byte length = _17; //const %18 = 1 : int _18 = 1; //add %19 = %2, %18 : int _19=pos+_18; //assign %2 = %19 : int pos = _19; //goto blklab15 goto blklab15; //.blklab14 blklab14:; //fieldload %20 = %3 len : {int len,int offset} _20 = m->len; //add %21 = %2, %20 : int _21=pos+_20; //assign %2 = %21 : int pos = _21; //.blklab15 blklab15:; //update %1[%28] = %4 : byte[] -> byte[] output[_28] = offset; //const %29 = 1 : int _29 = 1; //add %30 = %28, %29 : int _30=_28+_29; //assign %28 = %30 : int _28 = _30; //update %1[%28] = %5 : byte[] -> byte[] output[_28] = length; //const %31 = 1 : int _31 = 1; //add %32 = %28, %31 : int _32=_28+_31; //assign %28 = %32 : int _28 = _32; //.blklab13 blklab13:; } //.blklab12 blklab12:; //invoke (%33) = (%1, %28) lz77_compress:resize : function(byte[],int)->(byte[]) { void* tmp_items; _COPY_1DARRAY_PARAM(output, tmp_items, BYTE); _DEALLOC(_33); _33 = _resize_(tmp_items, output_size, true, _28, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_33)); _CALLEE_DEALLOC(output, "false-false-false" , "resize"); _CALLEE_DEALLOC_POST(_33, output); } //assign %1 = %33 : byte[] _DEALLOC(output); _COPY_1DARRAY_BYTE(output, _33); _ADD_DEALLOC(output); //return %1 _DEALLOC(data); _DEALLOC_STRUCT(m, Match); _DEALLOC(_9); _DEALLOC_STRUCT(_11, Match); _DEALLOC(_22); _DEALLOC(_23); _DEALLOC(_33); _UPDATE_1DARRAYSZIE_PARAM_CALLBYREFERENCE(output); return output; //return }
int main(int argc, char** args){ int64_t* n; _DECL_DEALLOC(n); int64_t max = 0; _DECL_1DARRAY_BYTE(data); _DECL_DEALLOC(data); _DECL_1DARRAY_BYTE(arr); _DECL_DEALLOC(arr); int64_t* _5; _DECL_DEALLOC(_5); _DECL_2DARRAY(_6); _DECL_DEALLOC(_6); int64_t _7 = 0; _DECL_1DARRAY(_8); _DECL_DEALLOC(_8); BYTE _9; _DECL_1DARRAY_BYTE(_10); _DECL_DEALLOC(_10); _DECL_1DARRAY_BYTE(_11); _DECL_DEALLOC(_11); int64_t _12 = 0; int64_t _13 = 0; int64_t _14 = 0; int64_t _15 = 0; void* _16; int64_t _18 = 0; //fieldload %6 = %0 args : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} _DEALLOC_2DARRAY_int64_t(_6); _CONV_ARGS(_6); _ADD_DEALLOC(_6); //const %7 = 0 : int _7 = 0; //indexof %8 = %6, %7 : int[][] _8=_6[_7]; _8_size = _6_size_size; _REMOVE_DEALLOC(_8); //invoke (%5) = (%8) whiley/lang/Int:parse : function(whiley/lang/ASCII:string)->(null|int) { _STR_TO_INT(_5, _8); _ADD_DEALLOC(_5); _REMOVE_DEALLOC(_8); } //assign %1 = %5 : null|int _DEALLOC(n); _NEW_INTEGER_POINTER(n, _5); _ADD_DEALLOC(n); //ifis %1, null goto blklab9 : null|int if(n == NULL) { goto blklab9;} //assign %2 = %1 : int max = *n; //const %9 = 01100001b : byte _9 = 0b01100001; //arraygen %10 = [9; 2] : byte[] _DEALLOC(_10); _NEW_1DARRAY_BYTE(_10, max, _9); _ADD_DEALLOC(_10); //assign %3 = %10 : byte[] _DEALLOC(data); _COPY_1DARRAY_BYTE(data, _10); _ADD_DEALLOC(data); //invoke (%11) = (%3) AppendArrayPattern_original:comp : function(byte[])->(byte[]) { void* data_tmp; _DEALLOC(_11); _11 = _comp_(_COPY_1DARRAY_PARAM_BYTE(data), true, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_11)); _CALLEE_DEALLOC(data, "false-false-false" , "comp"); _ADD_DEALLOC(_11); } //assign %4 = %11 : byte[] _DEALLOC(arr); _COPY_1DARRAY_BYTE(arr, _11); _ADD_DEALLOC(arr); //assert { //lengthof %12 = %4 : byte[] _12 = arr_size; //const %13 = 2 : int _13 = 2; //lengthof %14 = %3 : byte[] _14 = data_size; //mul %15 = %13, %14 : int _15=_13*_14; //ifeq %12, %15 goto blklab10 : int if(_12==_15){goto blklab10;} //fail fprintf(stderr,"fail"); exit(-1); //.blklab10 blklab10:; //assert } //fieldload %16 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %17 = %16 print : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //lengthof %18 = %4 : byte[] _18 = arr_size; //indirectinvoke () = %17 (%18) : method(any)->() { printf("%"PRId64, _18); } //.blklab9 blklab9:; //return _DEALLOC(n); _DEALLOC(data); _DEALLOC(arr); _DEALLOC(_5); _DEALLOC_2DARRAY_int64_t(_6); _DEALLOC(_8); _DEALLOC(_10); _DEALLOC(_11); exit(0); }
int64_t* _sortV1_(_DECL_1DARRAY_PARAM(items), _DECL_DEALLOC_PARAM(items), int64_t start, int64_t end, _DECL_1DARRAYSIZE_PARAM_CALLBYREFERENCE){ _DECL_1DARRAY(_3); _DECL_DEALLOC(_3); int64_t pivot = 0; _DECL_1DARRAY(lhs); _DECL_DEALLOC(lhs); _DECL_1DARRAY(rhs); _DECL_DEALLOC(rhs); int64_t l = 0; int64_t r = 0; int64_t i = 0; int64_t _10 = 0; int64_t _11 = 0; int64_t _12 = 0; int64_t _13 = 0; int64_t _14 = 0; _DECL_1DARRAY(_15); _DECL_DEALLOC(_15); _DECL_1DARRAY(_16); _DECL_DEALLOC(_16); int64_t _17 = 0; _DECL_1DARRAY(_18); _DECL_DEALLOC(_18); _DECL_1DARRAY(_19); _DECL_DEALLOC(_19); int64_t _20 = 0; int64_t _21 = 0; int64_t _22 = 0; int64_t _23 = 0; int64_t _24 = 0; int64_t _25 = 0; int64_t _26 = 0; int64_t _27 = 0; int64_t _28 = 0; int64_t _29 = 0; int64_t _30 = 0; int64_t _31 = 0; int64_t _32 = 0; int64_t _33 = 0; int64_t _34 = 0; int64_t _35 = 0; int64_t _36 = 0; int64_t _37 = 0; int64_t _38 = 0; int64_t _39 = 0; int64_t _40 = 0; int64_t _41 = 0; int64_t _42 = 0; int64_t _43 = 0; int64_t _44 = 0; int64_t _45 = 0; int64_t _46 = 0; int64_t _47 = 0; int64_t _48 = 0; int64_t _49 = 0; //const %10 = 1 : int _10 = 1; //add %11 = %1, %10 : int _11=start+_10; //ifge %11, %2 goto blklab0 : int if(_11>=end){goto blklab0;} //add %12 = %1, %2 : int _12=start+end; //const %13 = 2 : int _13 = 2; //div %14 = %12, %13 : int _14=_12/_13; //assign %4 = %14 : int // isCopyEliminated = true pivot = _14; //invoke (%15) = (%0, %1, %4) whiley/lang/Array:slice : function(int[],int,int)->(int[]) { _DEALLOC(_15); _SLICE_ARRAY(_15, items, start, pivot); _ADD_DEALLOC(_15); } //assign %5 = %15 : int[] _DEALLOC(lhs); // isCopyEliminated = true _UPDATE_1DARRAY(lhs, _15); _TRANSFER_DEALLOC(lhs, _15); //const %17 = 0 : int _17 = 0; //invoke (%16) = (%5, %17, %4) MergeSort_original:sortV1 : function(int[],int,int)->(int[]) { lhs = cilk_spawn _sortV1_(_1DARRAY_PARAM(lhs), false, _17, pivot, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(lhs)); } //invoke (%18) = (%0, %4, %2) whiley/lang/Array:slice : function(int[],int,int)->(int[]) { _DEALLOC(_18); _SLICE_ARRAY(_18, items, pivot, end); _ADD_DEALLOC(_18); } //assign %6 = %18 : int[] _DEALLOC(rhs); // isCopyEliminated = true _UPDATE_1DARRAY(rhs, _18); _TRANSFER_DEALLOC(rhs, _18); //const %20 = 0 : int _20 = 0; //sub %21 = %2, %4 : int _21=end-pivot; //invoke (%19) = (%6, %20, %21) MergeSort_original:sortV1 : function(int[],int,int)->(int[]) { rhs = cilk_spawn _sortV1_(_1DARRAY_PARAM(rhs), false, _20, _21, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(rhs)); } cilk_sync; //const %22 = 0 : int _22 = 0; //assign %7 = %22 : int // isCopyEliminated = true l = _22; //const %23 = 0 : int _23 = 0; //assign %8 = %23 : int // isCopyEliminated = true r = _23; //const %24 = 0 : int _24 = 0; //assign %9 = %24 : int // isCopyEliminated = true i = _24; //loop (%0, %7, %8, %9, %25, %26, %27, %28, %29, %30, %31, %32, %33, %34, %35, %36, %37) while(true){ //sub %25 = %2, %1 : int _25=end-start; //ifge %9, %25 goto blklab1 : int if(i>=_25){goto blklab1;} //sub %26 = %4, %1 : int _26=pivot-start; //ifge %7, %26 goto blklab1 : int if(l>=_26){goto blklab1;} //sub %27 = %2, %4 : int _27=end-pivot; //ifge %8, %27 goto blklab1 : int if(r>=_27){goto blklab1;} //indexof %28 = %5, %7 : int[] _28=lhs[l]; //indexof %29 = %6, %8 : int[] _29=rhs[r]; //ifgt %28, %29 goto blklab3 : int if(_28>_29){goto blklab3;} //indexof %30 = %5, %7 : int[] _30=lhs[l]; //update %0[%9] = %30 : int[] -> int[] // isCopyEliminated = false items[i] = _30; //const %31 = 1 : int _31 = 1; //add %32 = %7, %31 : int _32=l+_31; //assign %7 = %32 : int // isCopyEliminated = true l = _32; //goto blklab4 goto blklab4; //.blklab3 blklab3:; //indexof %33 = %6, %8 : int[] _33=rhs[r]; //update %0[%9] = %33 : int[] -> int[] // isCopyEliminated = false items[i] = _33; //const %34 = 1 : int _34 = 1; //add %35 = %8, %34 : int _35=r+_34; //assign %8 = %35 : int // isCopyEliminated = true r = _35; //.blklab4 blklab4:; //const %36 = 1 : int _36 = 1; //add %37 = %9, %36 : int _37=i+_36; //assign %9 = %37 : int // isCopyEliminated = true i = _37; //.blklab2 blklab2:; } //.blklab1 blklab1:; //loop (%0, %7, %9, %38, %39, %40, %41, %42, %43) while(true){ //sub %38 = %4, %1 : int _38=pivot-start; //ifge %7, %38 goto blklab5 : int if(l>=_38){goto blklab5;} //indexof %39 = %5, %7 : int[] _39=lhs[l]; //update %0[%9] = %39 : int[] -> int[] // isCopyEliminated = false items[i] = _39; //const %40 = 1 : int _40 = 1; //add %41 = %9, %40 : int _41=i+_40; //assign %9 = %41 : int // isCopyEliminated = true i = _41; //const %42 = 1 : int _42 = 1; //add %43 = %7, %42 : int _43=l+_42; //assign %7 = %43 : int // isCopyEliminated = true l = _43; //.blklab6 blklab6:; } //.blklab5 blklab5:; //loop (%0, %8, %9, %44, %45, %46, %47, %48, %49) while(true){ //sub %44 = %2, %4 : int _44=end-pivot; //ifge %8, %44 goto blklab7 : int if(r>=_44){goto blklab7;} //indexof %45 = %6, %8 : int[] _45=rhs[r]; //update %0[%9] = %45 : int[] -> int[] // isCopyEliminated = false items[i] = _45; //const %46 = 1 : int _46 = 1; //add %47 = %9, %46 : int _47=i+_46; //assign %9 = %47 : int // isCopyEliminated = true i = _47; //const %48 = 1 : int _48 = 1; //add %49 = %8, %48 : int _49=r+_48; //assign %8 = %49 : int // isCopyEliminated = true r = _49; //.blklab8 blklab8:; } //.blklab7 blklab7:; //.blklab0 blklab0:; //return %0 _DEALLOC(_3); _DEALLOC(lhs); _DEALLOC(rhs); _DEALLOC(_15); _DEALLOC(_16); _DEALLOC(_18); _DEALLOC(_19); _UPDATE_1DARRAYSZIE_PARAM_CALLBYREFERENCE(items); return items; //return }
int main(int argc, char** args){ FILE* file; _DECL_1DARRAY_BYTE(input_data); _DECL_DEALLOC(input_data); _DECL_1DARRAY_BYTE(decompress_data); _DECL_DEALLOC(decompress_data); void* _4; _DECL_DEALLOC(_4); _DECL_2DARRAY(_5); _DECL_DEALLOC(_5); int64_t _6; _DECL_1DARRAY(_7); _DECL_DEALLOC(_7); _DECL_1DARRAY_BYTE(_8); _DECL_DEALLOC(_8); _DECL_1DARRAY_BYTE(_10); _DECL_DEALLOC(_10); void* _11; _DECL_1DARRAY(_13); _DECL_DEALLOC(_13); void* _14; int64_t _16; void* _17; _DECL_1DARRAY(_19); _DECL_DEALLOC(_19); //fieldload %5 = %0 args : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} _DEALLOC_2DARRAY_int64_t(_5); _CONV_ARGS(_5); _ADD_DEALLOC(_5); //const %6 = 0 : int _6 = 0; //indexof %7 = %5, %6 : int[][] _7=_5[_6]; _7_size = _5_size_size; _REMOVE_DEALLOC(_7); //invoke (%4) = (%7) whiley/io/File:Reader : method(whiley/lang/ASCII:string)->(whiley/io/File:Reader) { _4 = Reader(_7, _7_size); } //assign %1 = %4 : {method()->(int) available,method()->() close,method()->(bool) hasMore,method(int)->(byte[]) read,method()->(byte[]) readAll} // isCopyEliminated = true file = _4; //fieldload %9 = %1 readAll : {method()->(int) available,method()->() close,method()->(bool) hasMore,method(int)->(byte[]) read,method()->(byte[]) readAll} //indirectinvoke (%8) = %9 () : method()->(byte[]) { _8 = readAll(file, &_8_size); _ADD_DEALLOC(_8); } //assign %2 = %8 : byte[] _DEALLOC(input_data); // isCopyEliminated = true _UPDATE_1DARRAY(input_data, _8); _TRANSFER_DEALLOC(input_data, _8); //invoke (%10) = (%2) LZ77_decompress:decompress : function(byte[])->(byte[]) { // isCopyEliminated of '_2' = true _10 = _decompress_(input_data, input_data_size, false, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_10)); _RETAIN_DEALLOC(input_data, "false-false-false" , "decompress"); _RETAIN_DEALLOC_POST(_10, input_data); } //assign %3 = %10 : byte[] _DEALLOC(decompress_data); // isCopyEliminated = true _UPDATE_1DARRAY(decompress_data, _10); _TRANSFER_DEALLOC(decompress_data, _10); //fieldload %11 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %12 = %11 println_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %13 = [68,69,67,79,77,80,82,69,83,83,69,68,58,32,32,32] : int[] _DEALLOC(_13); _NEW_1DARRAY_int64_t(_13, 16, 0); _13[0] = 68; _13[1] = 69; _13[2] = 67; _13[3] = 79; _13[4] = 77; _13[5] = 80; _13[6] = 82; _13[7] = 69; _13[8] = 83; _13[9] = 83; _13[10] = 69; _13[11] = 68; _13[12] = 58; _13[13] = 32; _13[14] = 32; _13[15] = 32; _ADD_DEALLOC(_13); //indirectinvoke () = %12 (%13) : method(int[])->() { println_s(_13, _13_size); } //fieldload %14 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %15 = %14 print : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //lengthof %16 = %3 : byte[] _16 = decompress_data_size; //indirectinvoke () = %15 (%16) : method(any)->() { printf("%"PRId64, _16); } //fieldload %17 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %18 = %17 println_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %19 = [32,98,121,116,101,115] : int[] _DEALLOC(_19); _NEW_1DARRAY_int64_t(_19, 6, 0); _19[0] = 32; _19[1] = 98; _19[2] = 121; _19[3] = 116; _19[4] = 101; _19[5] = 115; _ADD_DEALLOC(_19); //indirectinvoke () = %18 (%19) : method(int[])->() { println_s(_19, _19_size); } //fieldload %20 = %1 close : {method()->(int) available,method()->() close,method()->(bool) hasMore,method(int)->(byte[]) read,method()->(byte[]) readAll} //indirectinvoke () = %20 () : method()->() { fclose(file); file = NULL; } //return if(file != NULL){fclose(file); file = NULL;} _DEALLOC(input_data); _DEALLOC(decompress_data); _FREE_ARGS(_5); _DEALLOC(_7); _DEALLOC(_8); _DEALLOC(_10); _DEALLOC(_13); _DEALLOC(_19); exit(0); }
BYTE* _f_resize_(BYTE* input, size_t input_size, _DECL_DEALLOC_PARAM(input), _DECL_1DARRAYSIZE_PARAM_CALLBYREFERENCE){ _DECL_1DARRAY_BYTE(output); _DECL_DEALLOC(output); int64_t pos; int64_t size; BYTE index; BYTE item; int64_t _6; BYTE _7; int64_t _8; int64_t _9; int64_t _10; _DECL_1DARRAY_BYTE(_11); _DECL_DEALLOC(_11); int64_t _12; int64_t _13; BYTE _14; BYTE _15; int64_t _16; int64_t _17; int64_t _18; int64_t _19; int64_t _20; int64_t _21; int64_t _22; int64_t _23; int64_t _24; _DECL_1DARRAY_BYTE(_25); _DECL_DEALLOC(_25); //const %6 = 0 : int _6 = 0; //assign %2 = %6 : int pos = _6; //const %7 = 00000000b : byte _7 = 0b00000000; //const %8 = 2 : int _8 = 2; //lengthof %9 = %0 : byte[] _9 = input_size; //mul %10 = %8, %9 : int _10=_8*_9; //arraygen %11 = [7; 10] : byte[] _DEALLOC(_11); _NEW_1DARRAY_BYTE(_11, _10, _7); _ADD_DEALLOC(_11); //assign %1 = %11 : byte[] _DEALLOC(output); _COPY_1DARRAY_BYTE(output, _11); _ADD_DEALLOC(output); //const %12 = 0 : int _12 = 0; //assign %3 = %12 : int size = _12; //loop (%1, %2, %3, %4, %5, %13, %14, %15, %16, %17, %18, %19, %20, %21) while(true){ //lengthof %13 = %0 : byte[] _13 = input_size; //ifge %2, %13 goto blklab9 : int if(pos>=_13){goto blklab9;} //invoke (%14) = (%2) whiley/lang/Int:toUnsignedByte : function(whiley/lang/Int:u8)->(byte) { _14 = (BYTE)pos; } //assign %4 = %14 : byte index = _14; //indexof %15 = %0, %2 : byte[] _15=input[pos]; //assign %5 = %15 : byte item = _15; //update %1[%3] = %4 : byte[] -> byte[] output[size] = index; //const %16 = 1 : int _16 = 1; //add %17 = %3, %16 : int _17=size+_16; //assign %3 = %17 : int size = _17; //update %1[%3] = %5 : byte[] -> byte[] output[size] = item; //const %18 = 1 : int _18 = 1; //add %19 = %3, %18 : int _19=size+_18; //assign %3 = %19 : int size = _19; //const %20 = 1 : int _20 = 1; //add %21 = %2, %20 : int _21=pos+_20; //assign %2 = %21 : int pos = _21; //.blklab10 blklab10:; } //.blklab9 blklab9:; //assert { //const %22 = 2 : int _22 = 2; //lengthof %23 = %0 : byte[] _23 = input_size; //mul %24 = %22, %23 : int _24=_22*_23; //ifle %3, %24 goto blklab11 : int if(size<=_24){goto blklab11;} //fail fprintf(stderr,"fail"); exit(-1); //.blklab11 blklab11:; //assert } //invoke (%25) = (%1, %3) appendarray1:resize : function(byte[],int)->(byte[]) { void* output_tmp; _DEALLOC(_25); _25 = _resize_(_COPY_1DARRAY_PARAM_BYTE(output), true, size, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_25)); _CALLEE_DEALLOC(output, "false-false-false" , "resize"); _25_dealloc = true; } //assign %1 = %25 : byte[] _DEALLOC(output); _COPY_1DARRAY_BYTE(output, _25); _ADD_DEALLOC(output); //return %1 _DEALLOC(input); _DEALLOC(_11); _DEALLOC(_25); _UPDATE_1DARRAYSZIE_PARAM_CALLBYREFERENCE(output); return output; //return }
void _print_pbm_(FILE* sys, int width, int height, BYTE* pixels, size_t pixels_size, _DECL_DEALLOC_PARAM(pixels)){ int j; int i; int pos; void* _7; _DECL_1DARRAY(_9); _DECL_DEALLOC(_9); void* _10; void* _12; _DECL_1DARRAY(_14); _DECL_DEALLOC(_14); void* _15; int _17; int _18; int _19; int _20; BYTE _21; BYTE _22; void* _23; int _25; void* _26; int _28; int _29; int _30; void* _31; void* _33; size_t _33_size = 0; _DECL_DEALLOC(_33); int _34; int _35; //fieldload %7 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %8 = %7 println_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %9 = [80,49] : int[] _DEALLOC(_9); _NEW_1DARRAY_int64_t(_9, 2, 0); _9[0] = 80; _9[1] = 49; _ADD_DEALLOC(_9); //indirectinvoke () = %8 (%9) : method(int[])->() { println_s(_9, _9_size); } //fieldload %10 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %11 = %10 print : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //indirectinvoke () = %11 (%1) : method(any)->() { printf("%d", width); } //fieldload %12 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %13 = %12 print_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %14 = [32] : int[] _DEALLOC(_14); _NEW_1DARRAY_int64_t(_14, 1, 0); _14[0] = 32; _ADD_DEALLOC(_14); //indirectinvoke () = %13 (%14) : method(int[])->() { printf_s(_14, _14_size); } //fieldload %15 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %16 = %15 println : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //indirectinvoke () = %16 (%2) : method(any)->() { printf("%d\n", height); } //const %17 = 0 : int _17 = 0; //assign %4 = %17 : int // isCopyEliminated = true j = _17; //loop (%4, %5, %6, %18, %19, %20, %21, %22, %23, %24, %25, %26, %27, %28, %29, %30, %31, %32, %33, %34, %35) while(true){ //ifge %4, %2 goto blklab13 : int if(j>=height){goto blklab13;} //const %18 = 0 : int _18 = 0; //assign %5 = %18 : int // isCopyEliminated = true i = _18; //loop (%5, %6, %19, %20, %21, %22, %23, %24, %25, %26, %27, %28, %29, %30) while(true){ //ifge %5, %1 goto blklab15 : int if(i>=width){goto blklab15;} //mul %19 = %4, %1 : int _19=j*width; //add %20 = %19, %5 : int _20=_19+i; //assign %6 = %20 : int // isCopyEliminated = true pos = _20; //indexof %21 = %3, %6 : byte[] _21=pixels[pos]; //const %22 = 00100000b : byte _22 = 0b00100000; //ifne %21, %22 goto blklab17 : byte if(_21!=_22){goto blklab17;} //fieldload %23 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %24 = %23 print : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %25 = 0 : int _25 = 0; //indirectinvoke () = %24 (%25) : method(any)->() { printf("%d", _25); } //goto blklab18 goto blklab18; //.blklab17 blklab17:; //fieldload %26 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %27 = %26 print : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %28 = 1 : int _28 = 1; //indirectinvoke () = %27 (%28) : method(any)->() { printf("%d", _28); } //.blklab18 blklab18:; //const %29 = 1 : int _29 = 1; //add %30 = %5, %29 : int _30=i+_29; //assign %5 = %30 : int // isCopyEliminated = true i = _30; //.blklab16 blklab16:; } //.blklab15 blklab15:; //fieldload %31 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %32 = %31 println_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %33 = [] : void[] _DEALLOC(_33); _NEW_1DARRAY_int64_t(_33, 0, 0); _ADD_DEALLOC(_33); //indirectinvoke () = %32 (%33) : method(int[])->() { println_s(_33, _33_size); } //const %34 = 1 : int _34 = 1; //add %35 = %4, %34 : int _35=j+_34; //assign %4 = %35 : int // isCopyEliminated = true j = _35; //.blklab14 blklab14:; } //.blklab13 blklab13:; //return _DEALLOC(pixels); _DEALLOC(_9); _DEALLOC(_14); _DEALLOC(_33); return; }
int main(int argc, char** args){ int64_t n; _DECL_1DARRAY(moves); _DECL_DEALLOC(moves); int64_t sum_alice; int64_t _4; int64_t _5; int64_t _6; _DECL_1DARRAY(_7); _DECL_DEALLOC(_7); _DECL_1DARRAY(_8); _DECL_DEALLOC(_8); int64_t _9; int64_t _10; int64_t _11; int64_t _12; void* _13; _DECL_1DARRAY(_15); _DECL_DEALLOC(_15); void* _16; void* _18; _DECL_1DARRAY(_20); _DECL_DEALLOC(_20); //const %4 = 10 : int _4 = 10; //assign %1 = %4 : int n = _4; //const %5 = 0 : int _5 = 0; //mul %6 = %1, %1 : int _6=n*n; //arraygen %7 = [5; 6] : int[] _NEW1DARRAY_DEALLOC(_7, _5, _6, int64_t); //assign %2 = %7 : int[] _ADD_DEALLOC(moves, _7, int64_t); //invoke (%8) = (%2, %1) CoinGame3:findMoves : function(int[],int)->(int[]) { _FUNCTIONCALL_COPY_PRE(_8, moves, 0, "liveness: moves = false, readonly: moves = false, return:moves = ALWAYS_RETURN" , "findMoves"); _DEALLOC(_8); void* tmp_moves; _COPY_1DARRAY_PARAM(moves, tmp_moves, int64_t); _8 = _findMoves_(tmp_moves, moves_size, n, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_8)); _8_dealloc = true; } //assign %2 = %8 : int[] _ADD_DEALLOC(moves, _8, int64_t); //const %9 = 1 : int _9 = 1; //sub %10 = %1, %9 : int _10=n-_9; //indexof %11 = %2, %10 : int[] _11=moves[_10]; //assign %3 = %11 : int sum_alice = _11; //assert { //const %12 = 25 : int _12 = 25; //ifeq %3, %12 goto blklab7 : int if(sum_alice==_12){goto blklab7;} //fail fprintf(stderr,"fail"); exit(-1); //.blklab7 blklab7:; //assert } //fieldload %13 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %14 = %13 print_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %15 = [84,104,101,32,116,111,116,97,108,32,97,109,111,117,110,116,32,111,102,32,109,111,110,101,121,32,40,109,97,120,105,109,117,109,41,32,65,108,105,99,101,32,103,101,116,115,32,105,115,32] : int[] _DEALLOC(_15); _NEW_1DARRAY_int64_t(_15, 50, 0); _15[0] = 84; _15[1] = 104; _15[2] = 101; _15[3] = 32; _15[4] = 116; _15[5] = 111; _15[6] = 116; _15[7] = 97; _15[8] = 108; _15[9] = 32; _15[10] = 97; _15[11] = 109; _15[12] = 111; _15[13] = 117; _15[14] = 110; _15[15] = 116; _15[16] = 32; _15[17] = 111; _15[18] = 102; _15[19] = 32; _15[20] = 109; _15[21] = 111; _15[22] = 110; _15[23] = 101; _15[24] = 121; _15[25] = 32; _15[26] = 40; _15[27] = 109; _15[28] = 97; _15[29] = 120; _15[30] = 105; _15[31] = 109; _15[32] = 117; _15[33] = 109; _15[34] = 41; _15[35] = 32; _15[36] = 65; _15[37] = 108; _15[38] = 105; _15[39] = 99; _15[40] = 101; _15[41] = 32; _15[42] = 103; _15[43] = 101; _15[44] = 116; _15[45] = 115; _15[46] = 32; _15[47] = 105; _15[48] = 115; _15[49] = 32; _15_dealloc = true; //indirectinvoke () = %14 (%15) : method(int[])->() { printf_s(_15, _15_size); } //fieldload %16 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %17 = %16 println : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //indirectinvoke () = %17 (%3) : method(any)->() { printf("%"PRId64"\n", sum_alice); } //fieldload %18 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %19 = %18 println_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %20 = [80,97,115,115,32,67,111,105,110,71,97,109,101,32,116,101,115,116,32,99,97,115,101] : int[] _DEALLOC(_20); _NEW_1DARRAY_int64_t(_20, 23, 0); _20[0] = 80; _20[1] = 97; _20[2] = 115; _20[3] = 115; _20[4] = 32; _20[5] = 67; _20[6] = 111; _20[7] = 105; _20[8] = 110; _20[9] = 71; _20[10] = 97; _20[11] = 109; _20[12] = 101; _20[13] = 32; _20[14] = 116; _20[15] = 101; _20[16] = 115; _20[17] = 116; _20[18] = 32; _20[19] = 99; _20[20] = 97; _20[21] = 115; _20[22] = 101; _20_dealloc = true; //indirectinvoke () = %19 (%20) : method(int[])->() { println_s(_20, _20_size); } //return _DEALLOC(moves); _DEALLOC(_7); _DEALLOC(_8); _DEALLOC(_15); _DEALLOC(_20); exit(0); }
int64_t* _findMoves_(_DECL_1DARRAY_PARAM(moves), int64_t n, _DECL_1DARRAYSIZE_PARAM_CALLBYREFERENCE){ _DECL_DEALLOC(moves); _DECL_1DARRAY(_2); _DECL_DEALLOC(_2); int64_t s; _DECL_1DARRAY(x); _DECL_DEALLOC(x); _DECL_1DARRAY(y); _DECL_DEALLOC(y); _DECL_1DARRAY(z); _DECL_DEALLOC(z); int64_t j; int64_t i; int64_t _9; int64_t _10; _DECL_1DARRAY(_11); _DECL_DEALLOC(_11); int64_t _12; _DECL_1DARRAY(_13); _DECL_DEALLOC(_13); int64_t _14; _DECL_1DARRAY(_15); _DECL_DEALLOC(_15); int64_t _16; int64_t _17; int64_t _18; int64_t _19; int64_t _20; int64_t _21; int64_t _22; int64_t _23; int64_t _24; int64_t _25; int64_t _26; int64_t _27; int64_t _28; int64_t _29; int64_t _30; int64_t _31; int64_t _32; int64_t _33; int64_t _34; int64_t _35; int64_t _36; int64_t _37; int64_t _38; int64_t _39; int64_t _40; int64_t _41; int64_t _42; int64_t _43; int64_t _44; int64_t _45; int64_t _46; int64_t _47; int64_t _48; int64_t _49; int64_t _50; int64_t _51; int64_t _52; int64_t _53; int64_t _54; int64_t _55; int64_t _56; int64_t _57; int64_t _58; int64_t _59; int64_t _60; int64_t _61; int64_t _62; int64_t _63; int64_t _64; int64_t _65; int64_t _66; int64_t _67; int64_t _68; int64_t _69; int64_t _70; //const %9 = 0 : int _9 = 0; //assign %3 = %9 : int s = _9; //loop (%0, %3, %4, %5, %6, %7, %8, %10, %11, %12, %13, %14, %15, %16, %17, %18, %19, %20, %21, %22, %23, %24, %25, %26, %27, %28, %29, %30, %31, %32, %33, %34, %35, %36, %37, %38, %39, %40, %41, %42, %43, %44, %45, %46, %47, %48, %49, %50, %51, %52, %53, %54, %55, %56, %57, %58, %59, %60, %61, %62, %63, %64, %65, %66, %67, %68, %69, %70) while(true){ //ifge %3, %1 goto blklab0 : int if(s>=n){goto blklab0;} //const %10 = 0 : int _10 = 0; //arraygen %11 = [10; 1] : int[] _NEW1DARRAY_DEALLOC(_11, _10, n, int64_t); //assign %4 = %11 : int[] _ADD_DEALLOC(x, _11, int64_t); //const %12 = 0 : int _12 = 0; //arraygen %13 = [12; 1] : int[] _NEW1DARRAY_DEALLOC(_13, _12, n, int64_t); //assign %5 = %13 : int[] _ADD_DEALLOC(y, _13, int64_t); //const %14 = 0 : int _14 = 0; //arraygen %15 = [14; 1] : int[] _NEW1DARRAY_DEALLOC(_15, _14, n, int64_t); //assign %6 = %15 : int[] _ADD_DEALLOC(z, _15, int64_t); //assign %7 = %3 : int j = s; //const %16 = 0 : int _16 = 0; //assign %8 = %16 : int i = _16; //loop (%0, %4, %5, %6, %7, %8, %17, %18, %19, %20, %21, %22, %23, %24, %25, %26, %27, %28, %29, %30, %31, %32, %33, %34, %35, %36, %37, %38, %39, %40, %41, %42, %43, %44, %45, %46, %47, %48, %49, %50, %51, %52, %53, %54, %55, %56, %57, %58, %59, %60, %61, %62, %63, %64, %65, %66, %67, %68) while(true){ //ifge %7, %1 goto blklab2 : int if(j>=n){goto blklab2;} //const %17 = 0 : int _17 = 0; //update %5[%8] = %17 : int[] -> int[] y[i] = _17; //const %18 = 1 : int _18 = 1; //add %19 = %8, %18 : int _19=i+_18; //ifge %19, %1 goto blklab4 : int if(_19>=n){goto blklab4;} //const %20 = 1 : int _20 = 1; //sub %21 = %7, %20 : int _21=j-_20; //const %22 = 0 : int _22 = 0; //iflt %21, %22 goto blklab4 : int if(_21<_22){goto blklab4;} //const %23 = 1 : int _23 = 1; //add %24 = %8, %23 : int _24=i+_23; //mul %25 = %24, %1 : int _25=_24*n; //add %26 = %25, %7 : int _26=_25+j; //const %27 = 1 : int _27 = 1; //sub %28 = %26, %27 : int _28=_26-_27; //indexof %29 = %0, %28 : int[] _29=moves[_28]; //update %5[%8] = %29 : int[] -> int[] y[i] = _29; //.blklab4 blklab4:; //const %30 = 0 : int _30 = 0; //update %4[%8] = %30 : int[] -> int[] x[i] = _30; //const %31 = 2 : int _31 = 2; //add %32 = %8, %31 : int _32=i+_31; //ifge %32, %1 goto blklab5 : int if(_32>=n){goto blklab5;} //const %33 = 2 : int _33 = 2; //add %34 = %8, %33 : int _34=i+_33; //mul %35 = %34, %1 : int _35=_34*n; //add %36 = %35, %7 : int _36=_35+j; //indexof %37 = %0, %36 : int[] _37=moves[_36]; //update %4[%8] = %37 : int[] -> int[] x[i] = _37; //.blklab5 blklab5:; //const %38 = 0 : int _38 = 0; //update %6[%8] = %38 : int[] -> int[] z[i] = _38; //const %39 = 1 : int _39 = 1; //sub %40 = %7, %39 : int _40=j-_39; //const %41 = 0 : int _41 = 0; //ifle %40, %41 goto blklab6 : int if(_40<=_41){goto blklab6;} //mul %42 = %8, %1 : int _42=i*n; //add %43 = %42, %7 : int _43=_42+j; //const %44 = 2 : int _44 = 2; //sub %45 = %43, %44 : int _45=_43-_44; //indexof %46 = %0, %45 : int[] _46=moves[_45]; //update %6[%8] = %46 : int[] -> int[] z[i] = _46; //.blklab6 blklab6:; //indexof %47 = %4, %8 : int[] _47=x[i]; //indexof %48 = %5, %8 : int[] _48=y[i]; //ifle %47, %48 goto blklab7 : int if(_47<=_48){goto blklab7;} //indexof %49 = %5, %8 : int[] _49=y[i]; //update %4[%8] = %49 : int[] -> int[] x[i] = _49; //.blklab7 blklab7:; //indexof %50 = %6, %8 : int[] _50=z[i]; //indexof %51 = %5, %8 : int[] _51=y[i]; //ifle %50, %51 goto blklab8 : int if(_50<=_51){goto blklab8;} //indexof %52 = %5, %8 : int[] _52=y[i]; //update %6[%8] = %52 : int[] -> int[] z[i] = _52; //.blklab8 blklab8:; //indexof %53 = %4, %8 : int[] _53=x[i]; //add %54 = %8, %53 : int _54=i+_53; //indexof %55 = %6, %8 : int[] _55=z[i]; //add %56 = %7, %55 : int _56=j+_55; //ifle %54, %56 goto blklab9 : int if(_54<=_56){goto blklab9;} //indexof %57 = %4, %8 : int[] _57=x[i]; //add %58 = %8, %57 : int _58=i+_57; //mul %59 = %8, %1 : int _59=i*n; //add %60 = %59, %7 : int _60=_59+j; //update %0[%60] = %58 : int[] -> int[] moves[_60] = _58; //goto blklab10 goto blklab10; //.blklab9 blklab9:; //indexof %61 = %6, %8 : int[] _61=z[i]; //add %62 = %7, %61 : int _62=j+_61; //mul %63 = %8, %1 : int _63=i*n; //add %64 = %63, %7 : int _64=_63+j; //update %0[%64] = %62 : int[] -> int[] moves[_64] = _62; //.blklab10 blklab10:; //const %65 = 1 : int _65 = 1; //add %66 = %7, %65 : int _66=j+_65; //assign %7 = %66 : int j = _66; //const %67 = 1 : int _67 = 1; //add %68 = %8, %67 : int _68=i+_67; //assign %8 = %68 : int i = _68; //.blklab3 blklab3:; } //.blklab2 blklab2:; //const %69 = 1 : int _69 = 1; //add %70 = %3, %69 : int _70=s+_69; //assign %3 = %70 : int s = _70; //.blklab1 blklab1:; } //.blklab0 blklab0:; //return %0 _DEALLOC(_2); _DEALLOC(x); _DEALLOC(y); _DEALLOC(z); _DEALLOC(_11); _DEALLOC(_13); _DEALLOC(_15); _UPDATE_1DARRAYSZIE_PARAM_CALLBYREFERENCE(moves); return moves; //return }
BYTE* _sobelEdgeDetection_(BYTE* pixels, size_t pixels_size, _DECL_DEALLOC_PARAM(pixels), int width, int height, _DECL_1DARRAYSIZE_PARAM_CALLBYREFERENCE){ _DECL_1DARRAY_BYTE(_3); _DECL_DEALLOC(_3); int size; _DECL_1DARRAY_BYTE(newPixels); _DECL_DEALLOC(newPixels); _DECL_1DARRAY(v_sobel); _DECL_DEALLOC(v_sobel); _DECL_1DARRAY(h_sobel); _DECL_DEALLOC(h_sobel); int x; int y; int pos; int v_g; int h_g; int t_g; int _14; BYTE _15; _DECL_1DARRAY_BYTE(_16); _DECL_DEALLOC(_16); int _17; int _18; int _19; int _20; int _21; int _22; int _23; int _24; int _25; int _26; int _27; int _28; _DECL_1DARRAY(_29); _DECL_DEALLOC(_29); int _30; int _31; int _32; int _33; int _34; int _35; int _36; int _37; int _38; int _39; int _40; int _41; _DECL_1DARRAY(_42); _DECL_DEALLOC(_42); int _43; int _44; int _45; int _46; int _47; int _48; int _49; int _50; int _51; int _52; BYTE _53; int _54; int _55; int _56; int _57; //mul %14 = %1, %2 : int _14=width*height; //assign %4 = %14 : int // isCopyEliminated = true size = _14; //const %15 = 00100000b : byte _15 = 0b00100000; //arraygen %16 = [15; 4] : byte[] _DEALLOC(_16); _NEW_1DARRAY_BYTE(_16, size, _15); _ADD_DEALLOC(_16); //assign %5 = %16 : byte[] _DEALLOC(newPixels); // isCopyEliminated = true _UPDATE_1DARRAY(newPixels, _16); _TRANSFER_DEALLOC(newPixels, _16); //const %17 = 1 : int _17 = 1; //neg %18 = %17 : int _18= -_17; //const %19 = 0 : int _19 = 0; //const %20 = 1 : int _20 = 1; //const %21 = 2 : int _21 = 2; //neg %22 = %21 : int _22= -_21; //const %23 = 0 : int _23 = 0; //const %24 = 2 : int _24 = 2; //const %25 = 1 : int _25 = 1; //neg %26 = %25 : int _26= -_25; //const %27 = 0 : int _27 = 0; //const %28 = 1 : int _28 = 1; //newlist %29 = (%18, %19, %20, %22, %23, %24, %26, %27, %28) : int[] _DEALLOC(_29); _NEW_1DARRAY_int64_t(_29, 9, 0); _29[0] = _18; _29[1] = _19; _29[2] = _20; _29[3] = _22; _29[4] = _23; _29[5] = _24; _29[6] = _26; _29[7] = _27; _29[8] = _28; _ADD_DEALLOC(_29); //assign %6 = %29 : int[] _DEALLOC(v_sobel); // isCopyEliminated = true _UPDATE_1DARRAY(v_sobel, _29); _TRANSFER_DEALLOC(v_sobel, _29); //const %30 = 1 : int _30 = 1; //const %31 = 2 : int _31 = 2; //const %32 = 1 : int _32 = 1; //const %33 = 0 : int _33 = 0; //const %34 = 0 : int _34 = 0; //const %35 = 0 : int _35 = 0; //const %36 = 1 : int _36 = 1; //neg %37 = %36 : int _37= -_36; //const %38 = 2 : int _38 = 2; //neg %39 = %38 : int _39= -_38; //const %40 = 1 : int _40 = 1; //neg %41 = %40 : int _41= -_40; //newlist %42 = (%30, %31, %32, %33, %34, %35, %37, %39, %41) : int[] _DEALLOC(_42); _NEW_1DARRAY_int64_t(_42, 9, 0); _42[0] = _30; _42[1] = _31; _42[2] = _32; _42[3] = _33; _42[4] = _34; _42[5] = _35; _42[6] = _37; _42[7] = _39; _42[8] = _41; _ADD_DEALLOC(_42); //assign %7 = %42 : int[] _DEALLOC(h_sobel); // isCopyEliminated = true _UPDATE_1DARRAY(h_sobel, _42); _TRANSFER_DEALLOC(h_sobel, _42); //const %43 = 0 : int _43 = 0; //assign %8 = %43 : int // isCopyEliminated = true x = _43; //loop (%5, %8, %9, %10, %11, %12, %13, %44, %45, %46, %47, %48, %49, %50, %51, %52, %53, %54, %55, %56, %57) while(true){ //ifge %8, %1 goto blklab8 : int if(x>=width){goto blklab8;} //const %44 = 0 : int _44 = 0; //assign %9 = %44 : int // isCopyEliminated = true y = _44; //loop (%5, %9, %10, %11, %12, %13, %45, %46, %47, %48, %49, %50, %51, %52, %53, %54, %55) while(true){ //ifge %9, %2 goto blklab10 : int if(y>=height){goto blklab10;} //mul %45 = %9, %1 : int _45=y*width; //add %46 = %45, %8 : int _46=_45+x; //assign %10 = %46 : int // isCopyEliminated = true pos = _46; //invoke (%47) = (%0, %1, %2, %8, %9, %6) SobelEdge_large:convolution : function(byte[],int,int,int,int,int[])->(int) { // isCopyEliminated of '_0' = true // isCopyEliminated of '_6' = true _47 = _convolution_(pixels, pixels_size, false, width, height, x, y, v_sobel, v_sobel_size, false); _RETAIN_DEALLOC(pixels, "false-false-true" , "convolution"); _RETAIN_DEALLOC(v_sobel, "false-false-true" , "convolution"); } //assign %11 = %47 : int // isCopyEliminated = true v_g = _47; //invoke (%48) = (%0, %1, %2, %8, %9, %7) SobelEdge_large:convolution : function(byte[],int,int,int,int,int[])->(int) { // isCopyEliminated of '_0' = true // isCopyEliminated of '_7' = true _48 = _convolution_(pixels, pixels_size, false, width, height, x, y, h_sobel, h_sobel_size, false); _RETAIN_DEALLOC(pixels, "false-false-true" , "convolution"); _RETAIN_DEALLOC(h_sobel, "false-false-true" , "convolution"); } //assign %12 = %48 : int // isCopyEliminated = true h_g = _48; //mul %49 = %11, %11 : int _49=v_g*v_g; //mul %50 = %12, %12 : int _50=h_g*h_g; //add %51 = %49, %50 : int _51=_49+_50; //assign %13 = %51 : int // isCopyEliminated = true t_g = _51; //const %52 = 640000 : int _52 = 640000; //ifle %13, %52 goto blklab12 : int if(t_g<=_52){goto blklab12;} //const %53 = 01100010b : byte _53 = 0b01100010; //update %5[%10] = %53 : byte[] -> byte[] newPixels[pos] = _53; //.blklab12 blklab12:; //const %54 = 1 : int _54 = 1; //add %55 = %9, %54 : int _55=y+_54; //assign %9 = %55 : int // isCopyEliminated = true y = _55; //.blklab11 blklab11:; } //.blklab10 blklab10:; //const %56 = 1 : int _56 = 1; //add %57 = %8, %56 : int _57=x+_56; //assign %8 = %57 : int // isCopyEliminated = true x = _57; //.blklab9 blklab9:; } //.blklab8 blklab8:; //return %5 _DEALLOC(pixels); _DEALLOC(_3); _DEALLOC(v_sobel); _DEALLOC(h_sobel); _DEALLOC(_16); _DEALLOC(_29); _DEALLOC(_42); _UPDATE_1DARRAYSZIE_PARAM_CALLBYREFERENCE(newPixels); return newPixels; //return }
int64_t* Array_Append(_DECL_1DARRAY_PARAM(lhs), _DECL_1DARRAY_PARAM(rhs), _DECL_1DARRAYSIZE_PARAM_CALLBYREFERENCE){ _DECL_1DARRAY(_2); _DECL_DEALLOC(_2); _DECL_1DARRAY(rs); _DECL_DEALLOC(rs); int64_t i = 0; int64_t _5 = 0; int64_t _6 = 0; int64_t _7 = 0; int64_t _8 = 0; _DECL_1DARRAY(_9); _DECL_DEALLOC(_9); int64_t _10 = 0; int64_t _11 = 0; int64_t _12 = 0; int64_t _13 = 0; int64_t _14 = 0; int64_t _15 = 0; int64_t _16 = 0; int64_t _17 = 0; int64_t _18 = 0; int64_t _19 = 0; int64_t _20 = 0; //const %5 = 0 : int _5 = 0; //lengthof %6 = %0 : int[] _6 = lhs_size; //lengthof %7 = %1 : int[] _7 = rhs_size; //add %8 = %6, %7 : int _8=_6+_7; //arraygen %9 = [5; 8] : int[] _DEALLOC(_9); _NEW_1DARRAY_int64_t(_9, _8, _5); _ADD_DEALLOC(_9); //assign %3 = %9 : int[] _DEALLOC(rs); _UPDATE_1DARRAY(rs, _9); _TRANSFER_DEALLOC(rs, _9); //lengthof %10 = %0 : int[] _10 = lhs_size; //assign %4 = %10 : int i = _10; //loop (%3, %4, %11, %12, %13, %14) while(true){ //const %11 = 0 : int _11 = 0; //ifle %4, %11 goto blklab0 : int if(i<=_11){goto blklab0;} //const %12 = 1 : int _12 = 1; //sub %13 = %4, %12 : int _13=i-_12; //assign %4 = %13 : int i = _13; //indexof %14 = %0, %4 : int[] _14=lhs[i]; //update %3[%4] = %14 : int[] -> int[] rs[i] = _14; //.blklab1 blklab1:; } //.blklab0 blklab0:; //loop (%3, %4, %15, %16, %17, %18, %19, %20) while(true){ //lengthof %15 = %1 : int[] _15 = rhs_size; //ifge %4, %15 goto blklab2 : int if(i>=_15){goto blklab2;} //indexof %16 = %1, %4 : int[] _16=rhs[i]; //lengthof %17 = %0 : int[] _17 = lhs_size; //add %18 = %4, %17 : int _18=i+_17; //update %3[%18] = %16 : int[] -> int[] rs[_18] = _16; //const %19 = 1 : int _19 = 1; //add %20 = %4, %19 : int _20=i+_19; //assign %4 = %20 : int i = _20; //.blklab3 blklab3:; } //.blklab2 blklab2:; //return %3 _DEALLOC(_2); _DEALLOC(_9); _UPDATE_1DARRAYSZIE_PARAM_CALLBYREFERENCE(rs); return rs; //return }
BYTE* _decompress_(BYTE* data, size_t data_size, _DECL_1DARRAYSIZE_PARAM_CALLBYREFERENCE){ _DECL_DEALLOC(data); _DECL_1DARRAY_BYTE(output); _DECL_DEALLOC(output); int64_t pos; BYTE header; BYTE item; int64_t offset; int64_t len; int64_t start; int64_t i; BYTE _9; int64_t _10; _DECL_1DARRAY_BYTE(_11); _DECL_DEALLOC(_11); int64_t _12; int64_t _13; int64_t _14; int64_t _15; BYTE _16; int64_t _17; int64_t _18; BYTE _19; int64_t _20; int64_t _21; BYTE _22; _DECL_1DARRAY_BYTE(_23); _DECL_DEALLOC(_23); int64_t _24; int64_t _25; int64_t _26; int64_t _27; int64_t _28; BYTE _29; _DECL_1DARRAY_BYTE(_30); _DECL_DEALLOC(_30); int64_t _31; int64_t _32; //const %9 = 00000000b : byte _9 = 0b00000000; //const %10 = 0 : int _10 = 0; //arraygen %11 = [9; 10] : byte[] _NEW1DARRAY_DEALLOC(_11, _9, _10, BYTE); //assign %1 = %11 : byte[] _ADD_DEALLOC(output, _11, BYTE); //const %12 = 0 : int _12 = 0; //assign %2 = %12 : int pos = _12; //loop (%1, %2, %3, %4, %5, %6, %7, %8, %13, %14, %15, %16, %17, %18, %19, %20, %21, %22, %23, %24, %25, %26, %27, %28, %29, %30, %31, %32) while(true){ //const %13 = 1 : int _13 = 1; //add %14 = %2, %13 : int _14=pos+_13; //lengthof %15 = %0 : byte[] _15 = data_size; //ifge %14, %15 goto blklab3 : int if(_14>=_15){goto blklab3;} //indexof %16 = %0, %2 : byte[] _16=data[pos]; //assign %3 = %16 : byte header = _16; //const %17 = 1 : int _17 = 1; //add %18 = %2, %17 : int _18=pos+_17; //indexof %19 = %0, %18 : byte[] _19=data[_18]; //assign %4 = %19 : byte item = _19; //const %20 = 2 : int _20 = 2; //add %21 = %2, %20 : int _21=pos+_20; //assign %2 = %21 : int pos = _21; //const %22 = 00000000b : byte _22 = 0b00000000; //ifne %3, %22 goto blklab5 : byte if(header!=_22){goto blklab5;} //invoke (%23) = (%1, %4) lz77_decompress:append : function(byte[],byte)->(byte[]) { _FUNCTIONCALL_COPY_PRE(_23, output, 0, "liveness: output = false, readonly: output = true, return:output = NEVER_RETURN" , "append"); _DEALLOC(_23); void* tmp_items; _COPY_1DARRAY_PARAM(output, tmp_items, BYTE); _23 = _append_(tmp_items, output_size, item, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_23)); _23_dealloc = true; free(tmp_items); } //assign %1 = %23 : byte[] _ADD_DEALLOC(output, _23, BYTE); //goto blklab6 goto blklab6; //.blklab5 blklab5:; //invoke (%24) = (%3) whiley/lang/Byte:toUnsignedInt : function(byte)->(whiley/lang/Int:uint) { _24 = (unsigned int)header; } //assign %5 = %24 : int offset = _24; //invoke (%25) = (%4) whiley/lang/Byte:toUnsignedInt : function(byte)->(whiley/lang/Int:uint) { _25 = (unsigned int)item; } //assign %6 = %25 : int len = _25; //lengthof %26 = %1 : byte[] _26 = output_size; //sub %27 = %26, %5 : int _27=_26-offset; //assign %7 = %27 : int start = _27; //assign %8 = %7 : int i = start; //loop (%1, %4, %8, %28, %29, %30, %31, %32) while(true){ //add %28 = %7, %6 : int _28=start+len; //ifge %8, %28 goto blklab7 : int if(i>=_28){goto blklab7;} //indexof %29 = %1, %8 : byte[] _29=output[i]; //assign %4 = %29 : byte item = _29; //invoke (%30) = (%1, %4) lz77_decompress:append : function(byte[],byte)->(byte[]) { _FUNCTIONCALL_COPY_PRE(_30, output, 0, "liveness: output = false, readonly: output = true, return:output = NEVER_RETURN" , "append"); _DEALLOC(_30); void* tmp_items; _COPY_1DARRAY_PARAM(output, tmp_items, BYTE); _30 = _append_(tmp_items, output_size, item, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_30)); _30_dealloc = true; free(tmp_items); } //assign %1 = %30 : byte[] _ADD_DEALLOC(output, _30, BYTE); //const %31 = 1 : int _31 = 1; //add %32 = %8, %31 : int _32=i+_31; //assign %8 = %32 : int i = _32; //.blklab8 blklab8:; } //.blklab7 blklab7:; //.blklab6 blklab6:; //.blklab4 blklab4:; } //.blklab3 blklab3:; //return %1 _DEALLOC(data); _DEALLOC(_11); _DEALLOC(_23); _DEALLOC(_30); _UPDATE_1DARRAYSZIE_PARAM_CALLBYREFERENCE(output); return output; //return }
int main(int argc, char** args){ FILE* file; _DECL_1DARRAY_BYTE(input_data); _DECL_DEALLOC(input_data); _DECL_1DARRAY_BYTE(decompress_data); _DECL_DEALLOC(decompress_data); void* _4; _DECL_DEALLOC(_4); _DECL_1DARRAY(_5); _DECL_DEALLOC(_5); _DECL_1DARRAY_BYTE(_6); _DECL_DEALLOC(_6); _DECL_1DARRAY_BYTE(_8); _DECL_DEALLOC(_8); void* _9; _DECL_1DARRAY(_11); _DECL_DEALLOC(_11); void* _12; _DECL_1DARRAY(_14); _DECL_DEALLOC(_14); void* _15; int64_t _17; void* _18; _DECL_1DARRAY(_20); _DECL_DEALLOC(_20); //const %5 = [46,46,47,46,46,47,46,46,47,73,110,112,117,116,102,105,108,101,115,47,115,109,97,108,108,46,100,97,116] : int[] _DEALLOC(_5); _NEW_1DARRAY_int64_t(_5, 29, 0); _5[0] = 46; _5[1] = 46; _5[2] = 47; _5[3] = 46; _5[4] = 46; _5[5] = 47; _5[6] = 46; _5[7] = 46; _5[8] = 47; _5[9] = 73; _5[10] = 110; _5[11] = 112; _5[12] = 117; _5[13] = 116; _5[14] = 102; _5[15] = 105; _5[16] = 108; _5[17] = 101; _5[18] = 115; _5[19] = 47; _5[20] = 115; _5[21] = 109; _5[22] = 97; _5[23] = 108; _5[24] = 108; _5[25] = 46; _5[26] = 100; _5[27] = 97; _5[28] = 116; _5_dealloc = true; //invoke (%4) = (%5) whiley/io/File:Reader : method(whiley/lang/ASCII:string)->(whiley/io/File:Reader) { _4 = Reader(_5, _5_size); } //assign %1 = %4 : {method()->(int) available,method()->() close,method()->(bool) hasMore,method(int)->(byte[]) read,method()->(byte[]) readAll} file = _4; //fieldload %7 = %1 readAll : {method()->(int) available,method()->() close,method()->(bool) hasMore,method(int)->(byte[]) read,method()->(byte[]) readAll} //indirectinvoke (%6) = %7 () : method()->(byte[]) { _6 = readAll(file, &_6_size); _6_dealloc = true; } //assign %2 = %6 : byte[] _ADD_DEALLOC(input_data, _6, BYTE); //invoke (%8) = (%2) lz77_decompress:decompress : function(byte[])->(byte[]) { _FUNCTIONCALL_COPY_PRE(_8, input_data, 0, "liveness: input_data = false, readonly: input_data = true, return:input_data = NEVER_RETURN" , "decompress"); _DEALLOC(_8); void* tmp_data; _COPY_1DARRAY_PARAM(input_data, tmp_data, BYTE); _8 = _decompress_(tmp_data, input_data_size, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_8)); _8_dealloc = true; free(tmp_data); } //assign %3 = %8 : byte[] _ADD_DEALLOC(decompress_data, _8, BYTE); //fieldload %9 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %10 = %9 println_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %11 = [68,69,67,79,77,80,82,69,83,83,69,68,58,32,32,32] : int[] _DEALLOC(_11); _NEW_1DARRAY_int64_t(_11, 16, 0); _11[0] = 68; _11[1] = 69; _11[2] = 67; _11[3] = 79; _11[4] = 77; _11[5] = 80; _11[6] = 82; _11[7] = 69; _11[8] = 83; _11[9] = 83; _11[10] = 69; _11[11] = 68; _11[12] = 58; _11[13] = 32; _11[14] = 32; _11[15] = 32; _11_dealloc = true; //indirectinvoke () = %10 (%11) : method(int[])->() { println_s(_11, _11_size); } //fieldload %12 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %13 = %12 println_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //invoke (%14) = (%3) whiley/lang/ASCII:fromBytes : function(byte[])->(whiley/lang/ASCII:string) { _DEALLOC(_14); _14 = fromBytes(decompress_data, decompress_data_size); _14_size = decompress_data_size; _14_dealloc = true; } //indirectinvoke () = %13 (%14) : method(int[])->() { println_s(_14, _14_size); } //fieldload %15 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %16 = %15 print : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //lengthof %17 = %3 : byte[] _17 = decompress_data_size; //indirectinvoke () = %16 (%17) : method(any)->() { printf("%"PRId64, _17); } //fieldload %18 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %19 = %18 println_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %20 = [32,98,121,116,101,115] : int[] _DEALLOC(_20); _NEW_1DARRAY_int64_t(_20, 6, 0); _20[0] = 32; _20[1] = 98; _20[2] = 121; _20[3] = 116; _20[4] = 101; _20[5] = 115; _20_dealloc = true; //indirectinvoke () = %19 (%20) : method(int[])->() { println_s(_20, _20_size); } //fieldload %21 = %1 close : {method()->(int) available,method()->() close,method()->(bool) hasMore,method(int)->(byte[]) read,method()->(byte[]) readAll} //indirectinvoke () = %21 () : method()->() { fclose(file); file = NULL; } //return if(file != NULL){fclose(file); file = NULL;} _DEALLOC(input_data); _DEALLOC(decompress_data); _DEALLOC(_5); _DEALLOC(_6); _DEALLOC(_8); _DEALLOC(_11); _DEALLOC(_14); _DEALLOC(_20); exit(0); }
int main(int argc, char** args){ FILE* file; _DECL_1DARRAY_BYTE(data); _DECL_DEALLOC(data); _DECL_1DARRAY_BYTE(compress_data); _DECL_DEALLOC(compress_data); FILE* writer; _DECL_1DARRAY_BYTE(decompress_data); _DECL_DEALLOC(decompress_data); void* _6; _DECL_DEALLOC(_6); _DECL_1DARRAY(_7); _DECL_DEALLOC(_7); _DECL_1DARRAY_BYTE(_8); _DECL_DEALLOC(_8); void* _10; _DECL_1DARRAY(_12); _DECL_DEALLOC(_12); void* _13; _DECL_1DARRAY(_15); _DECL_DEALLOC(_15); void* _16; int64_t _18; void* _19; _DECL_1DARRAY(_21); _DECL_DEALLOC(_21); _DECL_1DARRAY_BYTE(_22); _DECL_DEALLOC(_22); void* _23; _DECL_1DARRAY(_25); _DECL_DEALLOC(_25); void* _26; int64_t _28; void* _29; _DECL_1DARRAY(_31); _DECL_DEALLOC(_31); void* _32; _DECL_DEALLOC(_32); _DECL_1DARRAY(_33); _DECL_DEALLOC(_33); int64_t _34; _DECL_1DARRAY_BYTE(_37); _DECL_DEALLOC(_37); void* _38; _DECL_1DARRAY(_40); _DECL_DEALLOC(_40); void* _41; _DECL_1DARRAY(_43); _DECL_DEALLOC(_43); void* _44; int64_t _46; void* _47; _DECL_1DARRAY(_49); _DECL_DEALLOC(_49); //const %7 = [105,110,112,117,116,50,120,46,105,110] : int[] _DEALLOC(_7); _NEW_1DARRAY_int64_t(_7, 10, 0); _7[0] = 105; _7[1] = 110; _7[2] = 112; _7[3] = 117; _7[4] = 116; _7[5] = 50; _7[6] = 120; _7[7] = 46; _7[8] = 105; _7[9] = 110; _ADD_DEALLOC(_7); //invoke (%6) = (%7) whiley/io/File:Reader : method(whiley/lang/ASCII:string)->(whiley/io/File:Reader) { _6 = Reader(_7, _7_size); } //assign %1 = %6 : {method()->(int) available,method()->() close,method()->(bool) hasMore,method(int)->(byte[]) read,method()->(byte[]) readAll} file = _6; //fieldload %9 = %1 readAll : {method()->(int) available,method()->() close,method()->(bool) hasMore,method(int)->(byte[]) read,method()->(byte[]) readAll} //indirectinvoke (%8) = %9 () : method()->(byte[]) { _8 = readAll(file, &_8_size); _ADD_DEALLOC(_8); } //assign %2 = %8 : byte[] _DEALLOC(data); _COPY_1DARRAY_BYTE(data, _8); _ADD_DEALLOC(data); //fieldload %10 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %11 = %10 println_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %12 = [68,97,116,97,58,32,32,32,32,32,32,32,32,32] : int[] _DEALLOC(_12); _NEW_1DARRAY_int64_t(_12, 14, 0); _12[0] = 68; _12[1] = 97; _12[2] = 116; _12[3] = 97; _12[4] = 58; _12[5] = 32; _12[6] = 32; _12[7] = 32; _12[8] = 32; _12[9] = 32; _12[10] = 32; _12[11] = 32; _12[12] = 32; _12[13] = 32; _ADD_DEALLOC(_12); //indirectinvoke () = %11 (%12) : method(int[])->() { println_s(_12, _12_size); } //fieldload %13 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %14 = %13 println_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //invoke (%15) = (%2) whiley/lang/ASCII:fromBytes : function(byte[])->(whiley/lang/ASCII:string) { _DEALLOC(_15); _15 = fromBytes(data, data_size); _15_size = data_size; _ADD_DEALLOC(_15); } //indirectinvoke () = %14 (%15) : method(int[])->() { println_s(_15, _15_size); } //fieldload %16 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %17 = %16 print : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //lengthof %18 = %2 : byte[] _18 = data_size; //indirectinvoke () = %17 (%18) : method(any)->() { printf("%"PRId64, _18); } //fieldload %19 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %20 = %19 println_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %21 = [32,98,121,116,101,115] : int[] _DEALLOC(_21); _NEW_1DARRAY_int64_t(_21, 6, 0); _21[0] = 32; _21[1] = 98; _21[2] = 121; _21[3] = 116; _21[4] = 101; _21[5] = 115; _ADD_DEALLOC(_21); //indirectinvoke () = %20 (%21) : method(int[])->() { println_s(_21, _21_size); } //invoke (%22) = (%2) lz77_compress:compress : function(byte[])->(byte[]) { void* tmp_data; _COPY_1DARRAY_PARAM(data, tmp_data, BYTE); _DEALLOC(_22); _22 = _compress_(tmp_data, data_size, true, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_22)); _CALLEE_DEALLOC(data, "false-false-false" , "compress"); _CALLEE_DEALLOC_POST(_22, data); } //assign %3 = %22 : byte[] _DEALLOC(compress_data); _COPY_1DARRAY_BYTE(compress_data, _22); _ADD_DEALLOC(compress_data); //fieldload %23 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %24 = %23 println_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %25 = [67,79,77,80,82,69,83,83,69,68,32,68,97,116,97,58,32,32,32] : int[] _DEALLOC(_25); _NEW_1DARRAY_int64_t(_25, 19, 0); _25[0] = 67; _25[1] = 79; _25[2] = 77; _25[3] = 80; _25[4] = 82; _25[5] = 69; _25[6] = 83; _25[7] = 83; _25[8] = 69; _25[9] = 68; _25[10] = 32; _25[11] = 68; _25[12] = 97; _25[13] = 116; _25[14] = 97; _25[15] = 58; _25[16] = 32; _25[17] = 32; _25[18] = 32; _ADD_DEALLOC(_25); //indirectinvoke () = %24 (%25) : method(int[])->() { println_s(_25, _25_size); } //fieldload %26 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %27 = %26 print : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //lengthof %28 = %3 : byte[] _28 = compress_data_size; //indirectinvoke () = %27 (%28) : method(any)->() { printf("%"PRId64, _28); } //fieldload %29 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %30 = %29 println_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %31 = [32,98,121,116,101,115] : int[] _DEALLOC(_31); _NEW_1DARRAY_int64_t(_31, 6, 0); _31[0] = 32; _31[1] = 98; _31[2] = 121; _31[3] = 116; _31[4] = 101; _31[5] = 115; _ADD_DEALLOC(_31); //indirectinvoke () = %30 (%31) : method(int[])->() { println_s(_31, _31_size); } //const %33 = [115,109,97,108,108,46,100,97,116] : int[] _DEALLOC(_33); _NEW_1DARRAY_int64_t(_33, 9, 0); _33[0] = 115; _33[1] = 109; _33[2] = 97; _33[3] = 108; _33[4] = 108; _33[5] = 46; _33[6] = 100; _33[7] = 97; _33[8] = 116; _ADD_DEALLOC(_33); //invoke (%32) = (%33) whiley/io/File:Writer : method(whiley/lang/ASCII:string)->(whiley/io/File:Writer) { _32 = Writer(_33, _33_size); } //assign %4 = %32 : {method()->() close,method()->() flush,method(byte[])->(int) write,...} writer = _32; //fieldload %35 = %4 write : {method()->() close,method()->() flush,method(byte[])->(int) write,...} //indirectinvoke (%34) = %35 (%3) : method(byte[])->(int) { writeAll(writer, compress_data, compress_data_size); } //fieldload %36 = %4 close : {method()->() close,method()->() flush,method(byte[])->(int) write,...} //indirectinvoke () = %36 () : method()->() { fclose(writer); writer = NULL; } //invoke (%37) = (%3) lz77_compress:decompress : function(byte[])->(byte[]) { void* tmp_data; _COPY_1DARRAY_PARAM(compress_data, tmp_data, BYTE); _DEALLOC(_37); _37 = _decompress_(tmp_data, compress_data_size, true, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_37)); _CALLEE_DEALLOC(compress_data, "false-false-false" , "decompress"); _CALLEE_DEALLOC_POST(_37, compress_data); } //assign %5 = %37 : byte[] _DEALLOC(decompress_data); _COPY_1DARRAY_BYTE(decompress_data, _37); _ADD_DEALLOC(decompress_data); //fieldload %38 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %39 = %38 println_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %40 = [68,69,67,79,77,80,82,69,83,83,69,68,58,32,32,32] : int[] _DEALLOC(_40); _NEW_1DARRAY_int64_t(_40, 16, 0); _40[0] = 68; _40[1] = 69; _40[2] = 67; _40[3] = 79; _40[4] = 77; _40[5] = 80; _40[6] = 82; _40[7] = 69; _40[8] = 83; _40[9] = 83; _40[10] = 69; _40[11] = 68; _40[12] = 58; _40[13] = 32; _40[14] = 32; _40[15] = 32; _ADD_DEALLOC(_40); //indirectinvoke () = %39 (%40) : method(int[])->() { println_s(_40, _40_size); } //fieldload %41 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %42 = %41 println_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //invoke (%43) = (%5) whiley/lang/ASCII:fromBytes : function(byte[])->(whiley/lang/ASCII:string) { _DEALLOC(_43); _43 = fromBytes(decompress_data, decompress_data_size); _43_size = decompress_data_size; _ADD_DEALLOC(_43); } //indirectinvoke () = %42 (%43) : method(int[])->() { println_s(_43, _43_size); } //fieldload %44 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %45 = %44 print : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //lengthof %46 = %5 : byte[] _46 = decompress_data_size; //indirectinvoke () = %45 (%46) : method(any)->() { printf("%"PRId64, _46); } //fieldload %47 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %48 = %47 println_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %49 = [32,98,121,116,101,115] : int[] _DEALLOC(_49); _NEW_1DARRAY_int64_t(_49, 6, 0); _49[0] = 32; _49[1] = 98; _49[2] = 121; _49[3] = 116; _49[4] = 101; _49[5] = 115; _ADD_DEALLOC(_49); //indirectinvoke () = %48 (%49) : method(int[])->() { println_s(_49, _49_size); } //return if(file != NULL){fclose(file); file = NULL;} _DEALLOC(data); _DEALLOC(compress_data); if(writer != NULL){fclose(writer); writer = NULL;} _DEALLOC(decompress_data); _DEALLOC(_7); _DEALLOC(_8); _DEALLOC(_12); _DEALLOC(_15); _DEALLOC(_21); _DEALLOC(_22); _DEALLOC(_25); _DEALLOC(_31); _DEALLOC(_33); _DEALLOC(_37); _DEALLOC(_40); _DEALLOC(_43); _DEALLOC(_49); exit(0); }
int main(int argc, char** args){ int* n; _DECL_DEALLOC(n); int width; int height; int size; _DECL_1DARRAY_BYTE(pixels); _DECL_DEALLOC(pixels); int i; _DECL_1DARRAY_BYTE(newPixels); _DECL_DEALLOC(newPixels); int* _8; _DECL_DEALLOC(_8); _DECL_2DARRAY(_9); _DECL_DEALLOC(_9); int _10; _DECL_1DARRAY(_11); _DECL_DEALLOC(_11); int _12; int _13; BYTE _14; _DECL_1DARRAY_BYTE(_15); _DECL_DEALLOC(_15); int _16; BYTE _17; int _18; int _19; int _20; int _21; void* _22; _DECL_1DARRAY(_24); _DECL_DEALLOC(_24); void* _25; int _27; BYTE _28; _DECL_1DARRAY_BYTE(_29); _DECL_DEALLOC(_29); void* _30; _DECL_1DARRAY(_32); _DECL_DEALLOC(_32); void* _33; int _35; void* _36; _DECL_1DARRAY(_38); _DECL_DEALLOC(_38); void* _39; _DECL_1DARRAY(_41); _DECL_DEALLOC(_41); void* _42; int _44; BYTE _45; //fieldload %9 = %0 args : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} _DEALLOC_2DARRAY_int64_t(_9); _CONV_ARGS(_9); _ADD_DEALLOC(_9); //const %10 = 0 : int _10 = 0; //indexof %11 = %9, %10 : int[][] _11=_9[_10]; _11_size = _9_size_size; _REMOVE_DEALLOC(_11); //invoke (%8) = (%11) whiley/lang/Int:parse : function(whiley/lang/ASCII:string)->(null|int) { _STR_TO_INT(_8, _11); _ADD_DEALLOC(_8); _REMOVE_DEALLOC(_11); } //assign %1 = %8 : null|int _DEALLOC(n); // isCopyEliminated = true n = _8; _TRANSFER_DEALLOC(n, _8); //ifis %1, null goto blklab19 : null|int if(n == NULL) { goto blklab19;} //const %12 = 2000 : int _12 = 2000; //assign %2 = %12 : int // isCopyEliminated = true width = _12; //assign %3 = %1 : int // isCopyEliminated = true height = *n; //mul %13 = %2, %3 : int _13=width*height; //assign %4 = %13 : int // isCopyEliminated = true size = _13; //const %14 = 00100000b : byte _14 = 0b00100000; //arraygen %15 = [14; 4] : byte[] _DEALLOC(_15); _NEW_1DARRAY_BYTE(_15, size, _14); _ADD_DEALLOC(_15); //assign %5 = %15 : byte[] _DEALLOC(pixels); // isCopyEliminated = true _UPDATE_1DARRAY(pixels, _15); _TRANSFER_DEALLOC(pixels, _15); //const %16 = 0 : int _16 = 0; //assign %6 = %16 : int // isCopyEliminated = true i = _16; //loop (%5, %6, %17, %18, %19, %20, %21) while(true){ //ifge %6, %4 goto blklab20 : int if(i>=size){goto blklab20;} //const %18 = 256 : int _18 = 256; //rem %19 = %6, %18 : int _19=i%_18; //invoke (%17) = (%19) whiley/lang/Int:toUnsignedByte : function(whiley/lang/Int:u8)->(byte) { _17 = (BYTE)_19; } //update %5[%6] = %17 : byte[] -> byte[] pixels[i] = _17; //const %20 = 1 : int _20 = 1; //add %21 = %6, %20 : int _21=i+_20; //assign %6 = %21 : int // isCopyEliminated = true i = _21; //.blklab21 blklab21:; } //.blklab20 blklab20:; //fieldload %22 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %23 = %22 print_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %24 = [112,105,120,101,108,115,91,49,48,48,48,93,61] : int[] _DEALLOC(_24); _NEW_1DARRAY_int64_t(_24, 13, 0); _24[0] = 112; _24[1] = 105; _24[2] = 120; _24[3] = 101; _24[4] = 108; _24[5] = 115; _24[6] = 91; _24[7] = 49; _24[8] = 48; _24[9] = 48; _24[10] = 48; _24[11] = 93; _24[12] = 61; _ADD_DEALLOC(_24); //indirectinvoke () = %23 (%24) : method(int[])->() { printf_s(_24, _24_size); } //fieldload %25 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %26 = %25 println : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %27 = 1000 : int _27 = 1000; //indexof %28 = %5, %27 : byte[] _28=pixels[_27]; //indirectinvoke () = %26 (%28) : method(any)->() { printf("%"PRIu8"\n", _28); } //invoke (%29) = (%5, %2, %3) SobelEdge_large:sobelEdgeDetection : function(byte[],int,int)->(byte[]) { _DEALLOC(_29); // isCopyEliminated of '_5' = true _29 = _sobelEdgeDetection_(pixels, pixels_size, false, width, height, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_29)); _RETAIN_DEALLOC(pixels, "false-false-false" , "sobelEdgeDetection"); _RETAIN_DEALLOC_POST(_29, pixels); } //assign %7 = %29 : byte[] _DEALLOC(newPixels); // isCopyEliminated = true _UPDATE_1DARRAY(newPixels, _29); _TRANSFER_DEALLOC(newPixels, _29); //fieldload %30 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %31 = %30 println_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %32 = [66,108,117,114,114,101,100,32,73,109,97,103,101,32,115,105,122,101,115,58,32,32,32] : int[] _DEALLOC(_32); _NEW_1DARRAY_int64_t(_32, 23, 0); _32[0] = 66; _32[1] = 108; _32[2] = 117; _32[3] = 114; _32[4] = 114; _32[5] = 101; _32[6] = 100; _32[7] = 32; _32[8] = 73; _32[9] = 109; _32[10] = 97; _32[11] = 103; _32[12] = 101; _32[13] = 32; _32[14] = 115; _32[15] = 105; _32[16] = 122; _32[17] = 101; _32[18] = 115; _32[19] = 58; _32[20] = 32; _32[21] = 32; _32[22] = 32; _ADD_DEALLOC(_32); //indirectinvoke () = %31 (%32) : method(int[])->() { println_s(_32, _32_size); } //fieldload %33 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %34 = %33 print : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //lengthof %35 = %7 : byte[] _35 = newPixels_size; //indirectinvoke () = %34 (%35) : method(any)->() { printf("%d", _35); } //fieldload %36 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %37 = %36 println_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %38 = [32,98,121,116,101,115] : int[] _DEALLOC(_38); _NEW_1DARRAY_int64_t(_38, 6, 0); _38[0] = 32; _38[1] = 98; _38[2] = 121; _38[3] = 116; _38[4] = 101; _38[5] = 115; _ADD_DEALLOC(_38); //indirectinvoke () = %37 (%38) : method(int[])->() { println_s(_38, _38_size); } //fieldload %39 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %40 = %39 print_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %41 = [110,101,119,80,105,120,101,108,115,91,49,48,48,48,93,61] : int[] _DEALLOC(_41); _NEW_1DARRAY_int64_t(_41, 16, 0); _41[0] = 110; _41[1] = 101; _41[2] = 119; _41[3] = 80; _41[4] = 105; _41[5] = 120; _41[6] = 101; _41[7] = 108; _41[8] = 115; _41[9] = 91; _41[10] = 49; _41[11] = 48; _41[12] = 48; _41[13] = 48; _41[14] = 93; _41[15] = 61; _ADD_DEALLOC(_41); //indirectinvoke () = %40 (%41) : method(int[])->() { printf_s(_41, _41_size); } //fieldload %42 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %43 = %42 print : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %44 = 1000 : int _44 = 1000; //indexof %45 = %7, %44 : byte[] _45=newPixels[_44]; //indirectinvoke () = %43 (%45) : method(any)->() { printf("%d", _45); } //.blklab19 blklab19:; //return _DEALLOC(n); _DEALLOC(pixels); _DEALLOC(newPixels); _DEALLOC(_8); _FREE_ARGS(_9); _DEALLOC(_11); _DEALLOC(_15); _DEALLOC(_24); _DEALLOC(_29); _DEALLOC(_32); _DEALLOC(_38); _DEALLOC(_41); exit(0); }
int64_t* _findMoves_(_DECL_1DARRAY_PARAM(moves), int64_t n, _DECL_1DARRAYSIZE_PARAM_CALLBYREFERENCE){ _DECL_DEALLOC(moves); _DECL_1DARRAY(_2); _DECL_DEALLOC(_2); _DECL_1DARRAY(x); _DECL_DEALLOC(x); _DECL_1DARRAY(y); _DECL_DEALLOC(y); _DECL_1DARRAY(z); _DECL_DEALLOC(z); int64_t s; int64_t j; int64_t i; int64_t _9; _DECL_1DARRAY(_10); _DECL_DEALLOC(_10); int64_t _11; _DECL_1DARRAY(_12); _DECL_DEALLOC(_12); int64_t _13; _DECL_1DARRAY(_14); _DECL_DEALLOC(_14); int64_t _15; int64_t _16; int64_t _17; int64_t _18; int64_t _19; int64_t _20; int64_t _21; int64_t _22; int64_t _23; int64_t _24; int64_t _25; int64_t _26; int64_t _27; int64_t _28; int64_t _29; int64_t _30; int64_t _31; int64_t _32; int64_t _33; int64_t _34; int64_t _35; int64_t _36; int64_t _37; int64_t _38; int64_t _39; int64_t _40; int64_t _41; int64_t _42; int64_t _43; int64_t _44; int64_t _45; int64_t _46; int64_t _47; int64_t _48; int64_t _49; int64_t _50; int64_t _51; int64_t _52; int64_t _53; int64_t _54; int64_t _55; int64_t _56; int64_t _57; int64_t _58; int64_t _59; int64_t _60; int64_t _61; int64_t _62; int64_t _63; int64_t _64; int64_t _65; int64_t _66; int64_t _67; int64_t _68; int64_t _69; //const %9 = 0 : int _9 = 0; //arraygen %10 = [9; 1] : int[] _NEW1DARRAY_DEALLOC(_10, _9, n, int64_t); //assign %3 = %10 : int[] _ADD_DEALLOC(x, _10, int64_t); //const %11 = 0 : int _11 = 0; //arraygen %12 = [11; 1] : int[] _NEW1DARRAY_DEALLOC(_12, _11, n, int64_t); //assign %4 = %12 : int[] _ADD_DEALLOC(y, _12, int64_t); //const %13 = 0 : int _13 = 0; //arraygen %14 = [13; 1] : int[] _NEW1DARRAY_DEALLOC(_14, _13, n, int64_t); //assign %5 = %14 : int[] _ADD_DEALLOC(z, _14, int64_t); //const %15 = 0 : int _15 = 0; //assign %6 = %15 : int s = _15; //loop (%0, %3, %4, %5, %6, %7, %8, %16, %17, %18, %19, %20, %21, %22, %23, %24, %25, %26, %27, %28, %29, %30, %31, %32, %33, %34, %35, %36, %37, %38, %39, %40, %41, %42, %43, %44, %45, %46, %47, %48, %49, %50, %51, %52, %53, %54, %55, %56, %57, %58, %59, %60, %61, %62, %63, %64, %65, %66, %67, %68, %69) while(true){ //ifge %6, %1 goto blklab0 : int if(s>=n){goto blklab0;} //assign %7 = %6 : int j = s; //const %16 = 0 : int _16 = 0; //assign %8 = %16 : int i = _16; //loop (%0, %3, %4, %5, %7, %8, %17, %18, %19, %20, %21, %22, %23, %24, %25, %26, %27, %28, %29, %30, %31, %32, %33, %34, %35, %36, %37, %38, %39, %40, %41, %42, %43, %44, %45, %46, %47, %48, %49, %50, %51, %52, %53, %54, %55, %56, %57, %58, %59, %60, %61, %62, %63, %64, %65, %66, %67) while(true){ //ifge %7, %1 goto blklab2 : int if(j>=n){goto blklab2;} //const %17 = 0 : int _17 = 0; //update %4[%8] = %17 : int[] -> int[] y[i] = _17; //const %18 = 1 : int _18 = 1; //add %19 = %8, %18 : int _19=i+_18; //ifge %19, %1 goto blklab4 : int if(_19>=n){goto blklab4;} //const %20 = 1 : int _20 = 1; //sub %21 = %7, %20 : int _21=j-_20; //const %22 = 0 : int _22 = 0; //iflt %21, %22 goto blklab4 : int if(_21<_22){goto blklab4;} //indexof %23 = %4, %8 : int[] _23=y[i]; //const %24 = 1 : int _24 = 1; //add %25 = %8, %24 : int _25=i+_24; //mul %26 = %25, %1 : int _26=_25*n; //add %27 = %26, %7 : int _27=_26+j; //const %28 = 1 : int _28 = 1; //sub %29 = %27, %28 : int _29=_27-_28; //indexof %30 = %0, %29 : int[] _30=moves[_29]; //add %31 = %23, %30 : int _31=_23+_30; //update %4[%8] = %31 : int[] -> int[] y[i] = _31; //.blklab4 blklab4:; //const %32 = 0 : int _32 = 0; //update %3[%8] = %32 : int[] -> int[] x[i] = _32; //const %33 = 2 : int _33 = 2; //add %34 = %8, %33 : int _34=i+_33; //ifge %34, %1 goto blklab5 : int if(_34>=n){goto blklab5;} //indexof %35 = %3, %8 : int[] _35=x[i]; //const %36 = 2 : int _36 = 2; //add %37 = %8, %36 : int _37=i+_36; //mul %38 = %37, %1 : int _38=_37*n; //add %39 = %38, %7 : int _39=_38+j; //indexof %40 = %0, %39 : int[] _40=moves[_39]; //add %41 = %35, %40 : int _41=_35+_40; //update %3[%8] = %41 : int[] -> int[] x[i] = _41; //.blklab5 blklab5:; //const %42 = 0 : int _42 = 0; //update %5[%8] = %42 : int[] -> int[] z[i] = _42; //const %43 = 1 : int _43 = 1; //sub %44 = %7, %43 : int _44=j-_43; //const %45 = 0 : int _45 = 0; //ifle %44, %45 goto blklab6 : int if(_44<=_45){goto blklab6;} //indexof %46 = %5, %8 : int[] _46=z[i]; //mul %47 = %8, %1 : int _47=i*n; //add %48 = %47, %7 : int _48=_47+j; //const %49 = 2 : int _49 = 2; //sub %50 = %48, %49 : int _50=_48-_49; //indexof %51 = %0, %50 : int[] _51=moves[_50]; //add %52 = %46, %51 : int _52=_46+_51; //update %5[%8] = %52 : int[] -> int[] z[i] = _52; //.blklab6 blklab6:; //indexof %55 = %3, %8 : int[] _55=x[i]; //indexof %56 = %4, %8 : int[] _56=y[i]; //invoke (%54) = (%55, %56) whiley/lang/Math:min : function(int,int)->(int) { _54 = min(_55, _56); } //add %57 = %8, %54 : int _57=i+_54; //indexof %59 = %4, %8 : int[] _59=y[i]; //indexof %60 = %5, %8 : int[] _60=z[i]; //invoke (%58) = (%59, %60) whiley/lang/Math:min : function(int,int)->(int) { _58 = min(_59, _60); } //add %61 = %7, %58 : int _61=j+_58; //invoke (%53) = (%57, %61) whiley/lang/Math:max : function(int,int)->(int) { _53 = max(_57, _61); } //mul %62 = %8, %1 : int _62=i*n; //add %63 = %62, %7 : int _63=_62+j; //update %0[%63] = %53 : int[] -> int[] moves[_63] = _53; //const %64 = 1 : int _64 = 1; //add %65 = %7, %64 : int _65=j+_64; //assign %7 = %65 : int j = _65; //const %66 = 1 : int _66 = 1; //add %67 = %8, %66 : int _67=i+_66; //assign %8 = %67 : int i = _67; //.blklab3 blklab3:; } //.blklab2 blklab2:; //const %68 = 1 : int _68 = 1; //add %69 = %6, %68 : int _69=s+_68; //assign %6 = %69 : int s = _69; //.blklab1 blklab1:; } //.blklab0 blklab0:; //return %0 _DEALLOC(_2); _DEALLOC(x); _DEALLOC(y); _DEALLOC(z); _DEALLOC(_10); _DEALLOC(_12); _DEALLOC(_14); _UPDATE_1DARRAYSZIE_PARAM_CALLBYREFERENCE(moves); return moves; //return }
BYTE* _sobelEdgeDetection_(BYTE* pixels, size_t pixels_size, int64_t width, int64_t height, _DECL_1DARRAYSIZE_PARAM_CALLBYREFERENCE){ _DECL_DEALLOC(pixels); _DECL_1DARRAY_BYTE(_3); _DECL_DEALLOC(_3); int64_t size; _DECL_1DARRAY_BYTE(newPixels); _DECL_DEALLOC(newPixels); _DECL_1DARRAY(v_sobel); _DECL_DEALLOC(v_sobel); _DECL_1DARRAY(h_sobel); _DECL_DEALLOC(h_sobel); int64_t x; int64_t y; int64_t pos; int64_t v_g; int64_t h_g; int64_t t_g; int64_t _14; BYTE _15; _DECL_1DARRAY_BYTE(_16); _DECL_DEALLOC(_16); int64_t _17; int64_t _18; int64_t _19; int64_t _20; int64_t _21; int64_t _22; int64_t _23; int64_t _24; int64_t _25; int64_t _26; int64_t _27; int64_t _28; _DECL_1DARRAY(_29); _DECL_DEALLOC(_29); int64_t _30; int64_t _31; int64_t _32; int64_t _33; int64_t _34; int64_t _35; int64_t _36; int64_t _37; int64_t _38; int64_t _39; int64_t _40; int64_t _41; _DECL_1DARRAY(_42); _DECL_DEALLOC(_42); int64_t _43; int64_t _44; int64_t _45; int64_t _46; int64_t _47; int64_t _48; int64_t _49; int64_t _50; int64_t _51; int64_t _52; BYTE _53; int64_t _54; int64_t _55; int64_t _56; int64_t _57; //mul %14 = %1, %2 : int _14=width*height; //assign %4 = %14 : int size = _14; //const %15 = 00100000b : byte _15 = 0b00100000; //arraygen %16 = [15; 4] : byte[] _NEW1DARRAY_DEALLOC(_16, _15, size, BYTE); //assign %5 = %16 : byte[] _ADD_DEALLOC(newPixels, _16, BYTE); //const %17 = 1 : int _17 = 1; //neg %18 = %17 : int _18= -_17; //const %19 = 0 : int _19 = 0; //const %20 = 1 : int _20 = 1; //const %21 = 2 : int _21 = 2; //neg %22 = %21 : int _22= -_21; //const %23 = 0 : int _23 = 0; //const %24 = 2 : int _24 = 2; //const %25 = 1 : int _25 = 1; //neg %26 = %25 : int _26= -_25; //const %27 = 0 : int _27 = 0; //const %28 = 1 : int _28 = 1; //newlist %29 = (%18, %19, %20, %22, %23, %24, %26, %27, %28) : int[] _DEALLOC(_29); _NEW_1DARRAY_int64_t(_29, 9, 0); _29[0] = _18; _29[1] = _19; _29[2] = _20; _29[3] = _22; _29[4] = _23; _29[5] = _24; _29[6] = _26; _29[7] = _27; _29[8] = _28; _29_dealloc = true; //assign %6 = %29 : int[] _ADD_DEALLOC(v_sobel, _29, int64_t); //const %30 = 1 : int _30 = 1; //const %31 = 2 : int _31 = 2; //const %32 = 1 : int _32 = 1; //const %33 = 0 : int _33 = 0; //const %34 = 0 : int _34 = 0; //const %35 = 0 : int _35 = 0; //const %36 = 1 : int _36 = 1; //neg %37 = %36 : int _37= -_36; //const %38 = 2 : int _38 = 2; //neg %39 = %38 : int _39= -_38; //const %40 = 1 : int _40 = 1; //neg %41 = %40 : int _41= -_40; //newlist %42 = (%30, %31, %32, %33, %34, %35, %37, %39, %41) : int[] _DEALLOC(_42); _NEW_1DARRAY_int64_t(_42, 9, 0); _42[0] = _30; _42[1] = _31; _42[2] = _32; _42[3] = _33; _42[4] = _34; _42[5] = _35; _42[6] = _37; _42[7] = _39; _42[8] = _41; _42_dealloc = true; //assign %7 = %42 : int[] _ADD_DEALLOC(h_sobel, _42, int64_t); //const %43 = 0 : int _43 = 0; //assign %8 = %43 : int x = _43; //loop (%5, %8, %9, %10, %11, %12, %13, %44, %45, %46, %47, %48, %49, %50, %51, %52, %53, %54, %55, %56, %57) while(true){ //ifge %8, %1 goto blklab8 : int if(x>=width){goto blklab8;} //const %44 = 0 : int _44 = 0; //assign %9 = %44 : int y = _44; //loop (%5, %9, %10, %11, %12, %13, %45, %46, %47, %48, %49, %50, %51, %52, %53, %54, %55) while(true){ //ifge %9, %2 goto blklab10 : int if(y>=height){goto blklab10;} //mul %45 = %9, %1 : int _45=y*width; //add %46 = %45, %8 : int _46=_45+x; //assign %10 = %46 : int pos = _46; //invoke (%47) = (%0, %1, %2, %8, %9, %6) SobelEdge:convolution : function(byte[],int,int,int,int,int[])->(int) { _FUNCTIONCALL_COPY_PRE(_47, v_sobel, 5, "liveness: v_sobel = true, readonly: v_sobel = true, return:v_sobel = NEVER_RETURN" , "convolution"); _FUNCTIONCALL_COPY_PRE(_47, pixels, 0, "liveness: pixels = true, readonly: pixels = true, return:pixels = NEVER_RETURN" , "convolution"); void* tmp_pixels; _COPY_1DARRAY_PARAM(pixels, tmp_pixels, BYTE); void* tmp_kernel; _COPY_1DARRAY_PARAM(v_sobel, tmp_kernel, int64_t); _47 = _convolution_(tmp_pixels, pixels_size, width, height, x, y, tmp_kernel, v_sobel_size); free(tmp_pixels); free(tmp_kernel); } //assign %11 = %47 : int v_g = _47; //invoke (%48) = (%0, %1, %2, %8, %9, %7) SobelEdge:convolution : function(byte[],int,int,int,int,int[])->(int) { _FUNCTIONCALL_COPY_PRE(_48, h_sobel, 5, "liveness: h_sobel = true, readonly: h_sobel = true, return:h_sobel = NEVER_RETURN" , "convolution"); _FUNCTIONCALL_COPY_PRE(_48, pixels, 0, "liveness: pixels = true, readonly: pixels = true, return:pixels = NEVER_RETURN" , "convolution"); void* tmp_pixels; _COPY_1DARRAY_PARAM(pixels, tmp_pixels, BYTE); void* tmp_kernel; _COPY_1DARRAY_PARAM(h_sobel, tmp_kernel, int64_t); _48 = _convolution_(tmp_pixels, pixels_size, width, height, x, y, tmp_kernel, h_sobel_size); free(tmp_pixels); free(tmp_kernel); } //assign %12 = %48 : int h_g = _48; //invoke (%49) = (%11) whiley/lang/Math:abs : function(int)->(int) { _49 = abs(v_g); } //invoke (%50) = (%12) whiley/lang/Math:abs : function(int)->(int) { _50 = abs(h_g); } //add %51 = %49, %50 : int _51=_49+_50; //assign %13 = %51 : int t_g = _51; //const %52 = 800 : int _52 = 800; //ifle %13, %52 goto blklab12 : int if(t_g<=_52){goto blklab12;} //const %53 = 01100010b : byte _53 = 0b01100010; //update %5[%10] = %53 : byte[] -> byte[] newPixels[pos] = _53; //.blklab12 blklab12:; //const %54 = 1 : int _54 = 1; //add %55 = %9, %54 : int _55=y+_54; //assign %9 = %55 : int y = _55; //.blklab11 blklab11:; } //.blklab10 blklab10:; //const %56 = 1 : int _56 = 1; //add %57 = %8, %56 : int _57=x+_56; //assign %8 = %57 : int x = _57; //.blklab9 blklab9:; } //.blklab8 blklab8:; //return %5 _DEALLOC(pixels); _DEALLOC(_3); _DEALLOC(v_sobel); _DEALLOC(h_sobel); _DEALLOC(_16); _DEALLOC(_29); _DEALLOC(_42); _UPDATE_1DARRAYSZIE_PARAM_CALLBYREFERENCE(newPixels); return newPixels; //return }
BYTE* _f_append_(BYTE* input, size_t input_size, _DECL_DEALLOC_PARAM(input), _DECL_1DARRAYSIZE_PARAM_CALLBYREFERENCE){ _DECL_1DARRAY_BYTE(output); _DECL_DEALLOC(output); int64_t pos; BYTE index; BYTE item; int64_t _5; BYTE _6; int64_t _7; _DECL_1DARRAY_BYTE(_8); _DECL_DEALLOC(_8); int64_t _9; BYTE _10; BYTE _11; _DECL_1DARRAY_BYTE(_12); _DECL_DEALLOC(_12); _DECL_1DARRAY_BYTE(_13); _DECL_DEALLOC(_13); int64_t _14; int64_t _15; int64_t _16; int64_t _17; int64_t _18; int64_t _19; int64_t _20; int64_t _21; int64_t _22; int64_t _23; int64_t _24; _DECL_1DARRAY_BYTE(_25); _DECL_DEALLOC(_25); //const %5 = 0 : int _5 = 0; //assign %2 = %5 : int pos = _5; //const %6 = 00000000b : byte _6 = 0b00000000; //const %7 = 0 : int _7 = 0; //const %16 = 2 : int _16 = 2; //lengthof %17 = %0 : byte[] _17 = input_size; //mul %18 = %16, %17 : int _18=_16*_17; //arraygen %8 = [6; 18] : byte[] _DEALLOC(_8); _NEW_1DARRAY_BYTE(_8, _18, _6); _ADD_DEALLOC(_8); //const %19 = 0 : int _19 = 0; //assign %20 = %19 : int _20 = _19; //assign %1 = %8 : byte[] _DEALLOC(output); _COPY_1DARRAY_BYTE(output, _8); _ADD_DEALLOC(output); //loop (%1, %2, %3, %4, %9, %10, %11, %12, %13, %14, %15, %20) while(true){ //lengthof %9 = %0 : byte[] _9 = input_size; //ifge %2, %9 goto blklab7 : int if(pos>=_9){goto blklab7;} //invoke (%10) = (%2) whiley/lang/Int:toUnsignedByte : function(whiley/lang/Int:u8)->(byte) { _10 = (BYTE)pos; } //assign %3 = %10 : byte index = _10; //indexof %11 = %0, %2 : byte[] _11=input[pos]; //assign %4 = %11 : byte item = _11; //update %1[%20] = %3 : byte[] -> byte[] output[_20] = index; //const %21 = 1 : int _21 = 1; //add %22 = %20, %21 : int _22=_20+_21; //assign %20 = %22 : int _20 = _22; //update %1[%20] = %4 : byte[] -> byte[] output[_20] = item; //const %23 = 1 : int _23 = 1; //add %24 = %20, %23 : int _24=_20+_23; //assign %20 = %24 : int _20 = _24; //const %14 = 1 : int _14 = 1; //add %15 = %2, %14 : int _15=pos+_14; //assign %2 = %15 : int pos = _15; //.blklab8 blklab8:; } //.blklab7 blklab7:; //assert { //ifle %20, %18 goto blklab13 : int if(_20<=_18){goto blklab13;} //fail fprintf(stderr,"fail"); exit(-1); //.blklab13 blklab13:; //assert } //invoke (%25) = (%1, %20) appendarray1:resize : function(byte[],int)->(byte[]) { void* output_tmp; _DEALLOC(_25); _25 = _resize_(_COPY_1DARRAY_PARAM_BYTE(output), true, _20, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_25)); _CALLEE_DEALLOC(output, "false-false-false" , "resize"); _25_dealloc = true; } //assign %1 = %25 : byte[] _DEALLOC(output); _COPY_1DARRAY_BYTE(output, _25); _ADD_DEALLOC(output); //return %1 _DEALLOC(input); _DEALLOC(_8); _DEALLOC(_12); _DEALLOC(_13); _DEALLOC(_25); _UPDATE_1DARRAYSZIE_PARAM_CALLBYREFERENCE(output); return output; //return }
int main(int argc, char** args){ FILE* file; int64_t width; int64_t height; _DECL_1DARRAY_BYTE(pixels); _DECL_DEALLOC(pixels); _DECL_1DARRAY_BYTE(newPixels); _DECL_DEALLOC(newPixels); void* _6; _DECL_DEALLOC(_6); _DECL_1DARRAY(_7); _DECL_DEALLOC(_7); int64_t _8; int64_t _9; _DECL_1DARRAY_BYTE(_10); _DECL_DEALLOC(_10); _DECL_1DARRAY_BYTE(_12); _DECL_DEALLOC(_12); //const %7 = [46,46,47,46,46,47,46,46,47,73,110,112,117,116,102,105,108,101,115,47,105,109,97,103,101,54,52,120,54,52,46,112,98,109] : int[] _DEALLOC(_7); _NEW_1DARRAY_int64_t(_7, 34, 0); _7[0] = 46; _7[1] = 46; _7[2] = 47; _7[3] = 46; _7[4] = 46; _7[5] = 47; _7[6] = 46; _7[7] = 46; _7[8] = 47; _7[9] = 73; _7[10] = 110; _7[11] = 112; _7[12] = 117; _7[13] = 116; _7[14] = 102; _7[15] = 105; _7[16] = 108; _7[17] = 101; _7[18] = 115; _7[19] = 47; _7[20] = 105; _7[21] = 109; _7[22] = 97; _7[23] = 103; _7[24] = 101; _7[25] = 54; _7[26] = 52; _7[27] = 120; _7[28] = 54; _7[29] = 52; _7[30] = 46; _7[31] = 112; _7[32] = 98; _7[33] = 109; _7_dealloc = true; //invoke (%6) = (%7) whiley/io/File:Reader : method(whiley/lang/ASCII:string)->(whiley/io/File:Reader) { _6 = Reader(_7, _7_size); } //assign %1 = %6 : {method()->(int) available,method()->() close,method()->(bool) hasMore,method(int)->(byte[]) read,method()->(byte[]) readAll} file = _6; //const %8 = 64 : int _8 = 64; //assign %2 = %8 : int width = _8; //const %9 = 64 : int _9 = 64; //assign %3 = %9 : int height = _9; //fieldload %11 = %1 readAll : {method()->(int) available,method()->() close,method()->(bool) hasMore,method(int)->(byte[]) read,method()->(byte[]) readAll} //indirectinvoke (%10) = %11 () : method()->(byte[]) { _10 = readAll(file, &_10_size); _10_dealloc = true; } //assign %4 = %10 : byte[] _ADD_DEALLOC(pixels, _10, BYTE); //invoke (%12) = (%4, %2, %3) SobelEdge:sobelEdgeDetection : function(byte[],int,int)->(byte[]) { _FUNCTIONCALL_COPY_PRE(_12, pixels, 0, "liveness: pixels = false, readonly: pixels = true, return:pixels = NEVER_RETURN" , "sobelEdgeDetection"); _DEALLOC(_12); void* tmp_pixels; _COPY_1DARRAY_PARAM(pixels, tmp_pixels, BYTE); _12 = _sobelEdgeDetection_(tmp_pixels, pixels_size, width, height, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_12)); _12_dealloc = true; free(tmp_pixels); } //assign %5 = %12 : byte[] _ADD_DEALLOC(newPixels, _12, BYTE); //invoke () = (%0, %2, %3, %5) SobelEdge:print_pbm : method(whiley/lang/System:Console,int,int,byte[])->() { _FUNCTIONCALL_COPY_PRE(, newPixels, 3, "liveness: newPixels = false, readonly: newPixels = true, return:newPixels = NEVER_RETURN" , "print_pbm"); void* tmp_pixels; _COPY_1DARRAY_PARAM(newPixels, tmp_pixels, BYTE); _print_pbm_(stdout, width, height, tmp_pixels, newPixels_size); free(tmp_pixels); } //return if(file != NULL){fclose(file); file = NULL;} _DEALLOC(pixels); _DEALLOC(newPixels); _DEALLOC(_7); _DEALLOC(_10); _DEALLOC(_12); exit(0); }
int main(int argc, char** args){ _DECL_1DARRAY_BYTE(input); _DECL_DEALLOC(input); _DECL_1DARRAY_BYTE(arr); _DECL_DEALLOC(arr); _DECL_1DARRAY_BYTE(arr1); _DECL_DEALLOC(arr1); BYTE _4; BYTE _5; BYTE _6; _DECL_1DARRAY_BYTE(_7); _DECL_DEALLOC(_7); _DECL_1DARRAY_BYTE(_8); _DECL_DEALLOC(_8); _DECL_1DARRAY_BYTE(_9); _DECL_DEALLOC(_9); void* _10; void* _12; //const %4 = 01100001b : byte _4 = 0b01100001; //const %5 = 01100010b : byte _5 = 0b01100010; //const %6 = 01100011b : byte _6 = 0b01100011; //newlist %7 = (%4, %5, %6) : byte[] _DEALLOC(_7); _NEW_1DARRAY_BYTE(_7, 3, 0b0); _7[0] = _4; _7[1] = _5; _7[2] = _6; _ADD_DEALLOC(_7); //assign %1 = %7 : byte[] _DEALLOC(input); _COPY_1DARRAY_BYTE(input, _7); _ADD_DEALLOC(input); //invoke (%8) = (%1) appendarray1:f_append : function(byte[])->(byte[]) { void* input_tmp; _DEALLOC(_8); _8 = _f_append_(_COPY_1DARRAY_PARAM_BYTE(input), true, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_8)); _CALLEE_DEALLOC(input, "false-false-true" , "f_append"); _8_dealloc = true; } //assign %2 = %8 : byte[] _DEALLOC(arr); _COPY_1DARRAY_BYTE(arr, _8); _ADD_DEALLOC(arr); //invoke (%9) = (%1) appendarray1:f_resize : function(byte[])->(byte[]) { void* input_tmp; _DEALLOC(_9); _9 = _f_resize_(_COPY_1DARRAY_PARAM_BYTE(input), true, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_9)); _CALLEE_DEALLOC(input, "false-false-false" , "f_resize"); _9_dealloc = true; } //assign %3 = %9 : byte[] _DEALLOC(arr1); _COPY_1DARRAY_BYTE(arr1, _9); _ADD_DEALLOC(arr1); //assert { //ifeq %2, %3 goto blklab12 : byte[] _IFEQ_ARRAY_BYTE(arr, arr1, blklab12); //fail fprintf(stderr,"fail"); exit(-1); //.blklab12 blklab12:; //assert } //fieldload %10 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %11 = %10 println : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //indirectinvoke () = %11 (%2) : method(any)->() { _PRINT_1DARRAY_BYTE(arr); } //fieldload %12 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %13 = %12 println : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //indirectinvoke () = %13 (%3) : method(any)->() { _PRINT_1DARRAY_BYTE(arr1); } //return _DEALLOC(input); _DEALLOC(arr); _DEALLOC(arr1); _DEALLOC(_7); _DEALLOC(_8); _DEALLOC(_9); exit(0); }
int main(int argc, char** args){ int64_t* max; _DECL_DEALLOC(max); int64_t n = 0; _DECL_1DARRAY(moves); _DECL_DEALLOC(moves); int64_t sum_alice = 0; int64_t* _5; _DECL_DEALLOC(_5); _DECL_2DARRAY(_6); _DECL_DEALLOC(_6); int64_t _7 = 0; _DECL_1DARRAY(_8); _DECL_DEALLOC(_8); int64_t _9 = 0; int64_t _10 = 0; int64_t _11 = 0; int64_t _12 = 0; int64_t _13 = 0; int64_t _14 = 0; _DECL_1DARRAY(_15); _DECL_DEALLOC(_15); _DECL_1DARRAY(_16); _DECL_DEALLOC(_16); int64_t _17 = 0; int64_t _18 = 0; int64_t _19 = 0; void* _20; _DECL_1DARRAY(_22); _DECL_DEALLOC(_22); void* _23; void* _25; _DECL_1DARRAY(_27); _DECL_DEALLOC(_27); //fieldload %6 = %0 args : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} _DEALLOC_2DARRAY_int64_t(_6); _CONV_ARGS(_6); _ADD_DEALLOC(_6); //const %7 = 0 : int _7 = 0; //indexof %8 = %6, %7 : int[][] _8=_6[_7]; _8_size = _6_size_size; _REMOVE_DEALLOC(_8); //invoke (%5) = (%8) whiley/lang/Int:parse : function(whiley/lang/ASCII:string)->(null|int) { _STR_TO_INT(_5, _8); _ADD_DEALLOC(_5); _REMOVE_DEALLOC(_8); } //assign %1 = %5 : null|int _DEALLOC(max); // isCopyEliminated = true max = _5; _TRANSFER_DEALLOC(max, _5); //ifis %1, null goto blklab4 : null|int if(max == NULL) { goto blklab4;} //assign %2 = %1 : int // isCopyEliminated = true n = *max; //const %9 = 0 : int _9 = 0; //const %10 = 2 : int _10 = 2; //add %11 = %2, %10 : int _11=n+_10; //const %12 = 2 : int _12 = 2; //add %13 = %2, %12 : int _13=n+_12; //mul %14 = %11, %13 : int _14=_11*_13; //arraygen %15 = [9; 14] : int[] _DEALLOC(_15); _NEW_1DARRAY_int64_t(_15, _14, _9); _ADD_DEALLOC(_15); //assign %3 = %15 : int[] _DEALLOC(moves); // isCopyEliminated = true _UPDATE_1DARRAY(moves, _15); _TRANSFER_DEALLOC(moves, _15); //invoke (%16) = (%3, %2) CoinGame_original:findMoves : function(int[],int)->(int[]) { _DEALLOC(_16); // isCopyEliminated of '_3' = true _16 = _findMoves_(_1DARRAY_PARAM(moves), false, n, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_16)); _RESET_DEALLOC(moves, "true-true-false" , "findMoves"); _ADD_DEALLOC(_16); } //assign %3 = %16 : int[] _DEALLOC(moves); // isCopyEliminated = true _UPDATE_1DARRAY(moves, _16); _TRANSFER_DEALLOC(moves, _16); //const %17 = 1 : int _17 = 1; //sub %18 = %2, %17 : int _18=n-_17; //indexof %19 = %3, %18 : int[] _19=moves[_18]; //assign %4 = %19 : int // isCopyEliminated = true sum_alice = _19; //fieldload %20 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %21 = %20 print_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %22 = [84,104,101,32,116,111,116,97,108,32,97,109,111,117,110,116,32,111,102,32,109,111,110,101,121,32,40,109,97,120,105,109,117,109,41,32,65,108,105,99,101,32,103,101,116,115,32,105,115,32] : int[] _DEALLOC(_22); _NEW_1DARRAY_int64_t(_22, 50, 0); _22[0] = 84; _22[1] = 104; _22[2] = 101; _22[3] = 32; _22[4] = 116; _22[5] = 111; _22[6] = 116; _22[7] = 97; _22[8] = 108; _22[9] = 32; _22[10] = 97; _22[11] = 109; _22[12] = 111; _22[13] = 117; _22[14] = 110; _22[15] = 116; _22[16] = 32; _22[17] = 111; _22[18] = 102; _22[19] = 32; _22[20] = 109; _22[21] = 111; _22[22] = 110; _22[23] = 101; _22[24] = 121; _22[25] = 32; _22[26] = 40; _22[27] = 109; _22[28] = 97; _22[29] = 120; _22[30] = 105; _22[31] = 109; _22[32] = 117; _22[33] = 109; _22[34] = 41; _22[35] = 32; _22[36] = 65; _22[37] = 108; _22[38] = 105; _22[39] = 99; _22[40] = 101; _22[41] = 32; _22[42] = 103; _22[43] = 101; _22[44] = 116; _22[45] = 115; _22[46] = 32; _22[47] = 105; _22[48] = 115; _22[49] = 32; _ADD_DEALLOC(_22); //indirectinvoke () = %21 (%22) : method(int[])->() { printf_s(_1DARRAY_PARAM(_22)); } //fieldload %23 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %24 = %23 println : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //indirectinvoke () = %24 (%4) : method(any)->() { printf("%"PRId64"\n", sum_alice); } //fieldload %25 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %26 = %25 println_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %27 = [80,97,115,115,32,67,111,105,110,71,97,109,101,32,116,101,115,116,32,99,97,115,101] : int[] _DEALLOC(_27); _NEW_1DARRAY_int64_t(_27, 23, 0); _27[0] = 80; _27[1] = 97; _27[2] = 115; _27[3] = 115; _27[4] = 32; _27[5] = 67; _27[6] = 111; _27[7] = 105; _27[8] = 110; _27[9] = 71; _27[10] = 97; _27[11] = 109; _27[12] = 101; _27[13] = 32; _27[14] = 116; _27[15] = 101; _27[16] = 115; _27[17] = 116; _27[18] = 32; _27[19] = 99; _27[20] = 97; _27[21] = 115; _27[22] = 101; _ADD_DEALLOC(_27); //indirectinvoke () = %26 (%27) : method(int[])->() { println_s(_27, _27_size); } //.blklab4 blklab4:; //return _DEALLOC(max); _DEALLOC(moves); _DEALLOC(_5); _DEALLOC_2DARRAY_int64_t(_6); _DEALLOC(_8); _DEALLOC(_15); _DEALLOC(_16); _DEALLOC(_22); _DEALLOC(_27); exit(0); }
BYTE* _append_(BYTE* items, size_t items_size, _DECL_DEALLOC_PARAM(items), BYTE item, _DECL_1DARRAYSIZE_PARAM_CALLBYREFERENCE){ _DECL_1DARRAY_BYTE(nitems); _DECL_DEALLOC(nitems); int64_t i; BYTE _4; int64_t _5; int64_t _6; int64_t _7; _DECL_1DARRAY_BYTE(_8); _DECL_DEALLOC(_8); int64_t _9; int64_t _10; BYTE _11; int64_t _12; int64_t _13; //const %4 = 00000000b : byte _4 = 0b00000000; //lengthof %5 = %0 : byte[] _5 = items_size; //const %6 = 1 : int _6 = 1; //add %7 = %5, %6 : int _7=_5+_6; //arraygen %8 = [4; 7] : byte[] _DEALLOC(_8); _NEW_1DARRAY_BYTE(_8, _7, _4); _ADD_DEALLOC(_8); //assign %2 = %8 : byte[] _DEALLOC(nitems); // isCopyEliminated = true _UPDATE_1DARRAY(nitems, _8); _TRANSFER_DEALLOC(nitems, _8); //const %9 = 0 : int _9 = 0; //assign %3 = %9 : int // isCopyEliminated = true i = _9; //loop (%2, %3, %10, %11, %12, %13) while(true){ //lengthof %10 = %0 : byte[] _10 = items_size; //ifge %3, %10 goto blklab1 : int if(i>=_10){goto blklab1;} //indexof %11 = %0, %3 : byte[] _11=items[i]; //update %2[%3] = %11 : byte[] -> byte[] nitems[i] = _11; //const %12 = 1 : int _12 = 1; //add %13 = %3, %12 : int _13=i+_12; //assign %3 = %13 : int // isCopyEliminated = true i = _13; //.blklab2 blklab2:; } //.blklab1 blklab1:; //update %2[%3] = %1 : byte[] -> byte[] nitems[i] = item; //return %2 _DEALLOC(items); _DEALLOC(_8); _UPDATE_1DARRAYSZIE_PARAM_CALLBYREFERENCE(nitems); return nitems; //return }
int main(int argc, char** args){ _DECL_1DARRAY(till); _DECL_DEALLOC(till); int64_t _2; int64_t _3; int64_t _4; int64_t _5; int64_t _6; int64_t _7; int64_t _8; int64_t _9; _DECL_1DARRAY(_10); _DECL_DEALLOC(_10); void* _11; _DECL_1DARRAY(_13); _DECL_DEALLOC(_13); void* _14; _DECL_1DARRAY(_16); _DECL_DEALLOC(_16); //const %2 = 5 : int _2 = 5; //const %3 = 3 : int _3 = 3; //const %4 = 3 : int _4 = 3; //const %5 = 1 : int _5 = 1; //const %6 = 1 : int _6 = 1; //const %7 = 3 : int _7 = 3; //const %8 = 0 : int _8 = 0; //const %9 = 0 : int _9 = 0; //newlist %10 = (%2, %3, %4, %5, %6, %7, %8, %9) : int[] _DEALLOC(_10); _NEW_1DARRAY_int64_t(_10, 8, 0); _10[0] = _2; _10[1] = _3; _10[2] = _4; _10[3] = _5; _10[4] = _6; _10[5] = _7; _10[6] = _8; _10[7] = _9; _10_dealloc = true; //assign %1 = %10 : int[] _ADD_DEALLOC(till, _10, int64_t); //fieldload %11 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %12 = %11 print_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %13 = [84,105,108,108,58,32] : int[] _DEALLOC(_13); _NEW_1DARRAY_int64_t(_13, 6, 0); _13[0] = 84; _13[1] = 105; _13[2] = 108; _13[3] = 108; _13[4] = 58; _13[5] = 32; _13_dealloc = true; //indirectinvoke () = %12 (%13) : method(int[])->() { printf_s(_13, _13_size); } //fieldload %14 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %15 = %14 println_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //invoke (%16) = (%1) ArrayAppend3:toString : function(ArrayAppend3:Cash)->(whiley/lang/ASCII:string) { _FUNCTIONCALL_COPY_PRE(_16, till, 0, "liveness: till = false, readonly: till = true, return:till = NEVER_RETURN" , "toString"); _DEALLOC(_16); void* tmp_c; _COPY_1DARRAY_PARAM(till, tmp_c, int64_t); _16 = _toString_(tmp_c, till_size, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_16)); _16_dealloc = true; free(tmp_c); } //indirectinvoke () = %15 (%16) : method(int[])->() { println_s(_16, _16_size); } //return _DEALLOC(till); _DEALLOC(_10); _DEALLOC(_13); _DEALLOC(_16); exit(0); }
BYTE* _decompress_(BYTE* data, size_t data_size, _DECL_DEALLOC_PARAM(data), _DECL_1DARRAYSIZE_PARAM_CALLBYREFERENCE){ _DECL_1DARRAY_BYTE(output); _DECL_DEALLOC(output); int64_t pos; BYTE header; BYTE item; int64_t offset; int64_t len; int64_t start; int64_t i; BYTE _9; int64_t _10; _DECL_1DARRAY_BYTE(_11); _DECL_DEALLOC(_11); int64_t _12; int64_t _13; int64_t _14; int64_t _15; BYTE _16; int64_t _17; int64_t _18; BYTE _19; int64_t _20; int64_t _21; BYTE _22; _DECL_1DARRAY_BYTE(_23); _DECL_DEALLOC(_23); int64_t _24; int64_t _25; int64_t _26; int64_t _27; int64_t _28; BYTE _29; _DECL_1DARRAY_BYTE(_30); _DECL_DEALLOC(_30); int64_t _31; int64_t _32; //const %9 = 00000000b : byte _9 = 0b00000000; //const %10 = 0 : int _10 = 0; //arraygen %11 = [9; 10] : byte[] _DEALLOC(_11); _NEW_1DARRAY_BYTE(_11, _10, _9); _ADD_DEALLOC(_11); //assign %1 = %11 : byte[] _DEALLOC(output); // isCopyEliminated = true _UPDATE_1DARRAY(output, _11); _TRANSFER_DEALLOC(output, _11); //const %12 = 0 : int _12 = 0; //assign %2 = %12 : int // isCopyEliminated = true pos = _12; //loop (%1, %2, %3, %4, %5, %6, %7, %8, %13, %14, %15, %16, %17, %18, %19, %20, %21, %22, %23, %24, %25, %26, %27, %28, %29, %30, %31, %32) while(true){ //const %13 = 1 : int _13 = 1; //add %14 = %2, %13 : int _14=pos+_13; //lengthof %15 = %0 : byte[] _15 = data_size; //ifge %14, %15 goto blklab3 : int if(_14>=_15){goto blklab3;} //indexof %16 = %0, %2 : byte[] _16=data[pos]; //assign %3 = %16 : byte // isCopyEliminated = true header = _16; //const %17 = 1 : int _17 = 1; //add %18 = %2, %17 : int _18=pos+_17; //indexof %19 = %0, %18 : byte[] _19=data[_18]; //assign %4 = %19 : byte // isCopyEliminated = true item = _19; //const %20 = 2 : int _20 = 2; //add %21 = %2, %20 : int _21=pos+_20; //assign %2 = %21 : int // isCopyEliminated = true pos = _21; //const %22 = 00000000b : byte _22 = 0b00000000; //ifne %3, %22 goto blklab5 : byte if(header!=_22){goto blklab5;} //invoke (%23) = (%1, %4) LZ77_decompress:append : function(byte[],byte)->(byte[]) { // isCopyEliminated of '_1' = true _23 = _append_(output, output_size, false, item, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_23)); _RETAIN_DEALLOC(output, "false-false-false" , "append"); _RETAIN_DEALLOC_POST(_23, output); } //assign %1 = %23 : byte[] _DEALLOC(output); // isCopyEliminated = true _UPDATE_1DARRAY(output, _23); _TRANSFER_DEALLOC(output, _23); //goto blklab6 goto blklab6; //.blklab5 blklab5:; //invoke (%24) = (%3) whiley/lang/Byte:toUnsignedInt : function(byte)->(whiley/lang/Int:uint) { _24 = (unsigned int)header; } //assign %5 = %24 : int // isCopyEliminated = true offset = _24; //invoke (%25) = (%4) whiley/lang/Byte:toUnsignedInt : function(byte)->(whiley/lang/Int:uint) { _25 = (unsigned int)item; } //assign %6 = %25 : int // isCopyEliminated = true len = _25; //lengthof %26 = %1 : byte[] _26 = output_size; //sub %27 = %26, %5 : int _27=_26-offset; //assign %7 = %27 : int // isCopyEliminated = true start = _27; //assign %8 = %7 : int // isCopyEliminated = false i = start; //loop (%1, %4, %8, %28, %29, %30, %31, %32) while(true){ //add %28 = %7, %6 : int _28=start+len; //ifge %8, %28 goto blklab7 : int if(i>=_28){goto blklab7;} //indexof %29 = %1, %8 : byte[] _29=output[i]; //assign %4 = %29 : byte // isCopyEliminated = true item = _29; //invoke (%30) = (%1, %4) LZ77_decompress:append : function(byte[],byte)->(byte[]) { // isCopyEliminated of '_1' = true _30 = _append_(output, output_size, false, item, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_30)); _RETAIN_DEALLOC(output, "false-false-false" , "append"); _RETAIN_DEALLOC_POST(_30, output); } //assign %1 = %30 : byte[] _DEALLOC(output); // isCopyEliminated = true _UPDATE_1DARRAY(output, _30); _TRANSFER_DEALLOC(output, _30); //const %31 = 1 : int _31 = 1; //add %32 = %8, %31 : int _32=i+_31; //assign %8 = %32 : int // isCopyEliminated = true i = _32; //.blklab8 blklab8:; } //.blklab7 blklab7:; //.blklab6 blklab6:; //.blklab4 blklab4:; } //.blklab3 blklab3:; //return %1 _DEALLOC(data); _DEALLOC(_11); _DEALLOC(_23); _DEALLOC(_30); _UPDATE_1DARRAYSZIE_PARAM_CALLBYREFERENCE(output); return output; //return }
Match* _findLongestMatch_(BYTE* data, size_t data_size, _DECL_DEALLOC_PARAM(data), int64_t pos){ Match* m; _DECL_DEALLOC(m); int64_t bestOffset; int64_t bestLen; int64_t start; int64_t offset; int64_t len; int64_t _8; int64_t _9; int64_t _10; int64_t _11; int64_t _12; int64_t _13; int64_t _14; int64_t _15; int64_t _16; int64_t _17; Match* _18; _DECL_DEALLOC(_18); //const %8 = 0 : int _8 = 0; //assign %3 = %8 : int bestOffset = _8; //const %9 = 0 : int _9 = 0; //assign %4 = %9 : int bestLen = _9; //const %11 = 255 : int _11 = 255; //sub %12 = %1, %11 : int _12=pos-_11; //const %13 = 0 : int _13 = 0; //invoke (%10) = (%12, %13) whiley/lang/Math:max : function(int,int)->(int) { _10 = max(_12, _13); } //assign %5 = %10 : int start = _10; //assign %6 = %5 : int offset = start; //loop (%3, %4, %6, %7, %14, %15, %16, %17) while(true){ //ifge %6, %1 goto blklab3 : int if(offset>=pos){goto blklab3;} //invoke (%14) = (%0, %6, %1) lz77_compress:match : function(byte[],lz77_compress:nat,lz77_compress:nat)->(int) { void* tmp_data; _COPY_1DARRAY_PARAM(data, tmp_data, BYTE); _14 = _match_(tmp_data, data_size, true, offset, pos); _CALLEE_DEALLOC(data, "false-false-true" , "match"); } //assign %7 = %14 : int len = _14; //ifle %7, %4 goto blklab5 : int if(len<=bestLen){goto blklab5;} //sub %15 = %1, %6 : int _15=pos-offset; //assign %3 = %15 : int bestOffset = _15; //assign %4 = %7 : int bestLen = len; //.blklab5 blklab5:; //const %16 = 1 : int _16 = 1; //add %17 = %6, %16 : int _17=offset+_16; //assign %6 = %17 : int offset = _17; //.blklab4 blklab4:; } //.blklab3 blklab3:; //newrecord %18 = (%4, %3) : {int len,int offset} _DEALLOC_STRUCT(_18, Match); _18 = malloc(sizeof(Match)); _18->len = bestLen; _18->offset = bestOffset; _ADD_DEALLOC(_18); //return %18 _DEALLOC(data); _DEALLOC_STRUCT(m, Match); return _18; //return }
int main(int argc, char** args){ int64_t* n; _DECL_DEALLOC(n); int64_t max = 0; int64_t index = 0; _DECL_1DARRAY(arr); _DECL_DEALLOC(arr); int64_t* _5; _DECL_DEALLOC(_5); _DECL_2DARRAY(_6); _DECL_DEALLOC(_6); int64_t _7 = 0; _DECL_1DARRAY(_8); _DECL_DEALLOC(_8); int64_t _9 = 0; int64_t _10 = 0; _DECL_1DARRAY(_11); _DECL_DEALLOC(_11); int64_t _12 = 0; int64_t _13 = 0; int64_t _14 = 0; _DECL_1DARRAY(_15); _DECL_DEALLOC(_15); int64_t _16 = 0; void* _17; int64_t _19 = 0; int64_t _20 = 0; void* _21; int64_t _23 = 0; int64_t _24 = 0; int64_t _25 = 0; void* _26; _DECL_1DARRAY(_28); _DECL_DEALLOC(_28); //fieldload %6 = %0 args : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} _DEALLOC_2DARRAY_int64_t(_6); _CONV_ARGS(_6); _ADD_DEALLOC(_6); //const %7 = 0 : int _7 = 0; //indexof %8 = %6, %7 : int[][] _8=_6[_7]; _8_size = _6_size_size; _REMOVE_DEALLOC(_8); //invoke (%5) = (%8) whiley/lang/Int:parse : function(whiley/lang/ASCII:string)->(null|int) { _STR_TO_INT(_5, _8); _ADD_DEALLOC(_5); _REMOVE_DEALLOC(_8); } //assign %1 = %5 : null|int _DEALLOC(n); // isCopyEliminated = true n = _5; _TRANSFER_DEALLOC(n, _5); //ifis %1, null goto blklab9 : null|int if(n == NULL) { goto blklab9;} //assign %2 = %1 : int // isCopyEliminated = true max = *n; //const %9 = 0 : int _9 = 0; //assign %3 = %9 : int // isCopyEliminated = true index = _9; //const %10 = 0 : int _10 = 0; //arraygen %11 = [10; 2] : int[] _DEALLOC(_11); _NEW_1DARRAY_int64_t(_11, max, _10); _ADD_DEALLOC(_11); //assign %4 = %11 : int[] _DEALLOC(arr); // isCopyEliminated = true _UPDATE_1DARRAY(arr, _11); _TRANSFER_DEALLOC(arr, _11); //loop (%3, %4, %12, %13, %14) while(true){ //ifge %3, %2 goto blklab10 : int if(index>=max){goto blklab10;} //sub %12 = %2, %3 : int _12=max-index; //update %4[%3] = %12 : int[] -> int[] // isCopyEliminated = false arr[index] = _12; //const %13 = 1 : int _13 = 1; //add %14 = %3, %13 : int _14=index+_13; //assign %3 = %14 : int // isCopyEliminated = true index = _14; //.blklab11 blklab11:; } //.blklab10 blklab10:; //const %16 = 0 : int _16 = 0; //invoke (%15) = (%4, %16, %2) MergeSort_original:sortV1 : function(int[],int,int)->(int[]) { _DEALLOC(_15); // isCopyEliminated of '_4' = true _15 = _sortV1_(_1DARRAY_PARAM(arr), false, _16, max, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_15)); _RESET_DEALLOC(arr, "true-true-false" , "sortV1"); _ADD_DEALLOC(_15); } //assign %4 = %15 : int[] _DEALLOC(arr); // isCopyEliminated = true _UPDATE_1DARRAY(arr, _15); _TRANSFER_DEALLOC(arr, _15); //fieldload %17 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %18 = %17 println : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %19 = 0 : int _19 = 0; //indexof %20 = %4, %19 : int[] _20=arr[_19]; //indirectinvoke () = %18 (%20) : method(any)->() { printf("%"PRId64"\n", _20); } //fieldload %21 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %22 = %21 println : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %23 = 1 : int _23 = 1; //sub %24 = %2, %23 : int _24=max-_23; //indexof %25 = %4, %24 : int[] _25=arr[_24]; //indirectinvoke () = %22 (%25) : method(any)->() { printf("%"PRId64"\n", _25); } //fieldload %26 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %27 = %26 println_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %28 = [80,97,115,115,32,77,101,114,103,101,115,111,114,116,32,116,101,115,116,32,99,97,115,101] : int[] _DEALLOC(_28); _NEW_1DARRAY_int64_t(_28, 24, 0); _28[0] = 80; _28[1] = 97; _28[2] = 115; _28[3] = 115; _28[4] = 32; _28[5] = 77; _28[6] = 101; _28[7] = 114; _28[8] = 103; _28[9] = 101; _28[10] = 115; _28[11] = 111; _28[12] = 114; _28[13] = 116; _28[14] = 32; _28[15] = 116; _28[16] = 101; _28[17] = 115; _28[18] = 116; _28[19] = 32; _28[20] = 99; _28[21] = 97; _28[22] = 115; _28[23] = 101; _ADD_DEALLOC(_28); //indirectinvoke () = %27 (%28) : method(int[])->() { println_s(_28, _28_size); } //.blklab9 blklab9:; //return _DEALLOC(n); _DEALLOC(arr); _DEALLOC(_5); _DEALLOC_2DARRAY_int64_t(_6); _DEALLOC(_8); _DEALLOC(_11); _DEALLOC(_15); _DEALLOC(_28); exit(0); }
BYTE* _comp_(BYTE* data, size_t data_size, _DECL_DEALLOC_PARAM(data), _DECL_1DARRAYSIZE_PARAM_CALLBYREFERENCE){ _DECL_1DARRAY_BYTE(output); _DECL_DEALLOC(output); int64_t pos = 0; BYTE item; BYTE length; int64_t _5 = 0; BYTE _6; int64_t _7 = 0; _DECL_1DARRAY_BYTE(_8); _DECL_DEALLOC(_8); int64_t _9 = 0; BYTE _10; BYTE _11; int64_t _12 = 0; int64_t _13 = 0; _DECL_1DARRAY_BYTE(_14); _DECL_DEALLOC(_14); _DECL_1DARRAY_BYTE(_15); _DECL_DEALLOC(_15); //const %5 = 0 : int _5 = 0; //assign %2 = %5 : int pos = _5; //const %6 = 00000000b : byte _6 = 0b00000000; //const %7 = 0 : int _7 = 0; //arraygen %8 = [6; 7] : byte[] _DEALLOC(_8); _NEW_1DARRAY_BYTE(_8, _7, _6); _ADD_DEALLOC(_8); //assign %1 = %8 : byte[] _DEALLOC(output); _UPDATE_1DARRAY(output, _8); _TRANSFER_DEALLOC(output, _8); //loop (%1, %2, %3, %4, %9, %10, %11, %12, %13, %14, %15) while(true){ //lengthof %9 = %0 : byte[] _9 = data_size; //ifge %2, %9 goto blklab7 : int if(pos>=_9){goto blklab7;} //indexof %10 = %0, %2 : byte[] _10=data[pos]; //assign %3 = %10 : byte item = _10; //invoke (%11) = (%2) whiley/lang/Int:toUnsignedByte : function(whiley/lang/Int:u8)->(byte) { _11 = (BYTE)pos; } //assign %4 = %11 : byte length = _11; //const %12 = 1 : int _12 = 1; //add %13 = %2, %12 : int _13=pos+_12; //assign %2 = %13 : int pos = _13; //invoke (%14) = (%1, %4) AppendArrayPattern_original:append : function(byte[],byte)->(byte[]) { _DEALLOC(_14); _14 = _append_(_1DARRAY_PARAM(output), false, length, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_14)); _RETAIN_DEALLOC(output, "false-false-false" , "append"); _ADD_DEALLOC(_14); } //assign %1 = %14 : byte[] _DEALLOC(output); _UPDATE_1DARRAY(output, _14); _TRANSFER_DEALLOC(output, _14); //invoke (%15) = (%1, %3) AppendArrayPattern_original:append : function(byte[],byte)->(byte[]) { _DEALLOC(_15); _15 = _append_(_1DARRAY_PARAM(output), false, item, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_15)); _RETAIN_DEALLOC(output, "false-false-false" , "append"); _ADD_DEALLOC(_15); } //assign %1 = %15 : byte[] _DEALLOC(output); _UPDATE_1DARRAY(output, _15); _TRANSFER_DEALLOC(output, _15); //.blklab8 blklab8:; } //.blklab7 blklab7:; //return %1 _DEALLOC(data); _DEALLOC(_8); _DEALLOC(_14); _DEALLOC(_15); _UPDATE_1DARRAYSZIE_PARAM_CALLBYREFERENCE(output); return output; //return }