{"name": "remove_parents", "code": "__int64 __fastcall remove_parents ( __int64 @@a1@@ , unsigned __int16 @@a2@@ ) { __int64 @@result@@ ; __int64 @@v3@@ ; __int64 @@i@@ ; @@result@@ = list_head ( * ( _QWORD * ) ( @@a1@@ + Number ) ) ; for ( @@i@@ = @@result@@ ; @@i@@ ; @@i@@ = @@v3@@ ) { @@v3@@ = * ( _QWORD * ) @@i@@ ; if ( @@a2@@ <= * ( _WORD * ) ( @@i@@ + Number ) ) rpl_remove_parent ( @@a1@@ , @@i@@ ) ; @@result@@ = @@v3@@ ; } return @@result@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "unsigned __int16", "s": 2}, "location": "r64"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "v3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s16"}, {"n": "i", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s8"}]}
{"name": "rpl_free_dag", "code": "_BYTE * __fastcall rpl_free_dag ( _BYTE * @@a1@@ ) { _BYTE * @@result@@ ; if ( @@a1@@ [ Number ] ) { @@a1@@ [ Number ] = Number ; rpl_remove_routes ( ( __int64 ) @@a1@@ ) ; if ( ( @@a1@@ [ Number ] & Number ) != Number ) check_prefix ( @@a1@@ + Number , Number L ) ; remove_parents ( ( __int64 ) @@a1@@ , Number ) ; } @@result@@ = @@a1@@ ; @@a1@@ [ Number ] = Number ; return @@result@@ ; }", "source": [{"n": "a1", "t": {"T": 3, "t": "_BYTE"}, "location": "r56"}, {"n": "result", "t": {"T": 3, "t": "_BYTE"}, "location": "r8"}]} {"name": "rpl_remove_parent", "code": "__int64 __fastcall rpl_remove_parent ( __int64 @@a1@@ , __int64 @@a2@@ ) { rpl_nullify_parent ( @@a1@@ , @@a2@@ ) ; list_remove ( * ( _QWORD * ) ( @@a1@@ + Number ) , @@a2@@ ) ; return memb_free ( & parent_memb , @@a2@@ ) ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}]} {"name": "global_repair", "code": "__int64 __fastcall global_repair ( _QWORD * @@a1@@ , __int64 @@a2@@ , __int64 @@a3@@ ) { __int64 @@result@@ ; __int64 @@v5@@ ; remove_parents ( @@a2@@ , Number ) ; * ( _BYTE * ) ( @@a2@@ + Number ) = * ( _BYTE * ) ( @@a3@@ + Number ) ; ( * * ( void ( __fastcall * * * ) ( __int64 ) ) ( * ( _QWORD * ) ( @@a2@@ + Number ) + Number L ) ) ( @@a2@@ ) ; * ( _WORD * ) ( @@a2@@ + Number ) = Number ; ++ * ( _BYTE * ) ( * ( _QWORD * ) ( @@a2@@ + Number ) + Number L ) ; @@v5@@ = rpl_add_parent ( @@a2@@ , @@a3@@ , @@a1@@ ) ; if ( @@v5@@ ) { * ( _WORD * ) ( @@a2@@ + Number ) = ( * ( __int64 ( __fastcall * * ) ( __int64 , _QWORD ) ) ( * ( _QWORD * ) ( * ( _QWORD * ) ( @@a2@@ + Number ) + Number L ) + Number L ) ) ( @@v5@@ , Number L ) ; * ( _WORD * ) ( @@a2@@ + Number ) = * ( _WORD * ) ( @@a2@@ + Number ) ; @@result@@ = rpl_process_parent_event ( * ( _QWORD * ) ( @@a2@@ + Number ) , @@v5@@ ) ; } else { @@result@@ = @@a2@@ ; * ( _WORD * ) ( @@a2@@ + Number ) = Number ; } return @@result@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "a1", "t": {"T": 3, "t": "_QWORD"}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "v5", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s8"}]} {"name": "list_head", "code": "__int64 __fastcall list_head ( __int64 @@a1@@ ) { return * ( _QWORD * ) @@a1@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}]}