{"name": "shape_from_contour", "code": "__int64 __fastcall shape_from_contour ( _QWORD * @@a1@@ , __int64 @@a2@@ , __int64 @@a3@@ , int @@a4@@ ) { _DWORD * v5 ; __int64 v6 ; int @@v7@@ ; int @@v12@@ ; int @@v13@@ ; int @@v14@@ ; int @@v15@@ ; void * * @@v16@@ ; __int64 @@v17@@ ; unsigned int @@v18@@ ; int @@i@@ ; contour_limits ( & @@v15@@ , & @@v14@@ , & @@v13@@ , & @@v12@@ , @@a2@@ , @@a3@@ , ( unsigned int ) @@a4@@ ) ; @@v18@@ = alloc_shape ( & @@v16@@ , @@v15@@ , @@v14@@ , @@v13@@ , @@v12@@ ) ; if ( @@v18@@ ) return @@v18@@ ; for ( @@i@@ = Number ; @@i@@ < @@a4@@ ; ++ @@i@@ ) { @@v17@@ = * ( ( _QWORD * ) @@v16@@ [ Number ] + * ( _DWORD * ) ( Number L * @@i@@ + @@a3@@ ) - @@v14@@ ) ; if ( ( int ) in_int_list ( * ( unsigned int * ) ( Number L * @@i@@ + @@a2@@ ) , * ( _QWORD * ) ( @@v17@@ + Number ) , * ( unsigned int * ) ( @@v17@@ + Number ) ) < Number ) { if ( * ( _DWORD * ) ( @@v17@@ + Number ) >= * ( _DWORD * ) ( @@v17@@ + Number ) ) { fwrite ( String , Number , Number , stderr ) ; return Number L ; } v5 = ( _DWORD * ) ( Number L * @@i@@ + @@a2@@ ) ; v6 = * ( _QWORD * ) ( @@v17@@ + Number ) ; @@v7@@ = * ( _DWORD * ) ( @@v17@@ + Number ) ; * ( _DWORD * ) ( @@v17@@ + Number ) = @@v7@@ + Number ; * ( _DWORD * ) ( v6 + Number L * @@v7@@ ) = * v5 ; } } for ( @@i@@ = Number ; @@i@@ < * ( ( _DWORD * ) @@v16@@ + Number ) ; ++ @@i@@ ) sort_row_on_x ( * ( ( _QWORD * ) @@v16@@ [ Number ] + @@i@@ ) ) ; * @@a1@@ = @@v16@@ ; return Number L ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "a4", "t": {"T": 1, "n": "int", "s": 4}, "location": "r24"}, {"n": "a1", "t": {"T": 3, "t": "_QWORD"}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}, {"n": "v7", "t": {"T": 1, "n": "int", "s": 4}, "location": "r8"}, {"n": "v17", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s16"}, {"n": "v16", "t": {"T": 3, "t": "void *"}, "location": "s24"}, {"n": "v15", "t": {"T": 1, "n": "int", "s": 4}, "location": "s28"}, {"n": "v14", "t": {"T": 1, "n": "int", "s": 4}, "location": "s32"}, {"n": "v13", "t": {"T": 1, "n": "int", "s": 4}, "location": "s36"}, {"n": "i", "t": {"T": 1, "n": "int", "s": 4}, "location": "s4"}, {"n": "v12", "t": {"T": 1, "n": "int", "s": 4}, "location": "s40"}, {"n": "v18", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s8"}]}
{"name": "alloc_shape", "code": "__int64 __fastcall alloc_shape ( void * * * @@a1@@ , int @@a2@@ , int @@a3@@ , int @@a4@@ , int @@a5@@ ) { __int64 @@result@@ ; void * * v6 ; __int64 v7 ; void * * @@ptr@@ ; int @@v11@@ ; int @@v12@@ ; int @@i@@ ; int j ; int k ; int @@v16@@ ; @@v12@@ = @@a5@@ - @@a3@@ + Number ; @@v11@@ = @@a4@@ - @@a2@@ + Number ; @@ptr@@ = ( void * * ) malloc ( Number ) ; if ( @@ptr@@ ) { @@ptr@@ [ Number ] = malloc ( Number L * @@v12@@ ) ; if ( @@ptr@@ [ Number ] ) { * ( _DWORD * ) @@ptr@@ = @@a3@@ ; * ( ( _DWORD * ) @@ptr@@ + Number ) = @@a5@@ ; * ( ( _DWORD * ) @@ptr@@ + Number ) = @@v12@@ ; * ( ( _DWORD * ) @@ptr@@ + Number ) = @@v12@@ ; @@v16@@ = Number ; for ( @@i@@ = @@a3@@ ; ; ++ @@i@@ ) { if ( @@v16@@ >= @@v12@@ ) { * @@a1@@ = @@ptr@@ ; return Number L ; } v6 = ( void * * ) ( ( char * ) @@ptr@@ [ Number ] + Number * @@v16@@ ) ; * v6 = malloc ( Number ) ; if ( ! * ( ( _QWORD * ) @@ptr@@ [ Number ] + @@v16@@ ) ) { for ( j = Number ; j < @@v16@@ ; ++ j ) { free ( * ( void * * ) ( * ( ( _QWORD * ) @@ptr@@ [ Number ] + j ) + Number L ) ) ; free ( * ( ( void * * ) @@ptr@@ [ Number ] + j ) ) ; } free ( @@ptr@@ [ Number ] ) ; free ( @@ptr@@ ) ; fwrite ( String , Number , Number , stderr ) ; return Number L ; } v7 = * ( ( _QWORD * ) @@ptr@@ [ Number ] + @@v16@@ ) ; * ( _QWORD * ) ( v7 + Number ) = malloc ( Number L * @@v11@@ ) ; if ( ! * ( _QWORD * ) ( * ( ( _QWORD * ) @@ptr@@ [ Number ] + @@v16@@ ) + Number L ) ) break ; * * ( ( _DWORD * * ) @@ptr@@ [ Number ] + @@v16@@ ) = @@i@@ ; * ( _DWORD * ) ( * ( ( _QWORD * ) @@ptr@@ [ Number ] + @@v16@@ ) + Number L ) = @@v11@@ ; * ( _DWORD * ) ( * ( ( _QWORD * ) @@ptr@@ [ Number ] + @@v16@@ ++ ) + Number L ) = Number ; } for ( k = Number ; k < @@v16@@ ; ++ k ) { free ( * ( void * * ) ( * ( ( _QWORD * ) @@ptr@@ [ Number ] + k ) + Number L ) ) ; free ( * ( ( void * * ) @@ptr@@ [ Number ] + k ) ) ; } free ( * ( ( void * * ) @@ptr@@ [ Number ] + @@v16@@ ) ) ; free ( @@ptr@@ [ Number ] ) ; free ( @@ptr@@ ) ; fwrite ( String , Number , Number , stderr ) ; @@result@@ = Number L ; } else { free ( @@ptr@@ ) ; fwrite ( String , Number , Number , stderr ) ; @@result@@ = Number L ; } } else { fwrite ( String , Number , Number , stderr ) ; @@result@@ = Number L ; } return @@result@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "int", "s": 4}, "location": "r16"}, {"n": "a4", "t": {"T": 1, "n": "int", "s": 4}, "location": "r24"}, {"n": "a1", "t": {"T": 3, "t": "void **"}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "int", "s": 4}, "location": "r64"}, {"n": "a5", "t": {"T": 1, "n": "int", "s": 4}, "location": "r72"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "v16", "t": {"T": 1, "n": "int", "s": 4}, "location": "s20"}, {"n": "i", "t": {"T": 1, "n": "int", "s": 4}, "location": "s28"}, {"n": "v12", "t": {"T": 1, "n": "int", "s": 4}, "location": "s32"}, {"n": "v11", "t": {"T": 1, "n": "int", "s": 4}, "location": "s36"}, {"n": "ptr", "t": {"T": 3, "t": "void *"}, "location": "s48"}]} {"name": "sort_row_on_x", "code": "__int64 __fastcall sort_row_on_x ( __int64 @@a1@@ ) { return bubble_sort_int_inc ( * ( _QWORD * ) ( @@a1@@ + Number ) , * ( unsigned int * ) ( @@a1@@ + Number ) ) ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}]}