{"name": "neighbor_attr_has_neighbor", "code": "_BOOL8 __fastcall neighbor_attr_has_neighbor ( unsigned __int64 @@a1@@ ) { return neighbor_addr_get ( @@a1@@ ) != Number L ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "r56"}]}
{"name": "update_metric", "code": "__int64 __fastcall update_metric ( __int64 @@a1@@ , __int16 @@a2@@ ) { __int64 @@result@@ ; __time_t @@v3@@ ; unsigned __int8 @@v4@@ ; char * @@v5@@ ; int @@v6@@ ; unsigned __int8 @@v7@@ ; @@v6@@ = Number ; @@v5@@ = ( char * ) neighbor_attr_get_data ( & attr_etx , @@a1@@ ) ; if ( @@v5@@ && * @@v5@@ ) { @@v7@@ = * @@v5@@ ; @@v4@@ = ( Number * @@v7@@ + Number * ( unsigned __int16 ) ( Number * @@a2@@ ) ) / Number ; } else { @@v7@@ = Number ; @@v4@@ = Number * @@a2@@ ; @@v6@@ = Number ; } @@result@@ = neighbor_attr_has_neighbor ( @@a1@@ ) ; if ( ( _DWORD ) @@result@@ ) { @@v3@@ = clock_seconds ( ) ; neighbor_attr_set_data ( & attr_etx , @@a1@@ , & @@v4@@ ) ; neighbor_attr_set_data ( & attr_timestamp , @@a1@@ , & @@v3@@ ) ; if ( @@v6@@ || ( @@result@@ = @@v4@@ , @@v7@@ != @@v4@@ ) ) { @@result@@ = ( __int64 ) subscriber_callback ; if ( subscriber_callback ) @@result@@ = subscriber_callback ( @@a1@@ , Number L , @@v4@@ ) ; } } return @@result@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int16", "s": 2}, "location": "r64"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "v7", "t": {"T": 1, "n": "unsigned __int8", "s": 1}, "location": "s1"}, {"n": "v5", "t": {"T": 3, "t": "char"}, "location": "s16"}, {"n": "v4", "t": {"T": 1, "n": "unsigned __int8", "s": 1}, "location": "s17"}, {"n": "v3", "t": {"T": 1, "n": "__time_t", "s": 8}, "location": "s32"}, {"n": "v6", "t": {"T": 1, "n": "int", "s": 4}, "location": "s8"}]} {"name": "neighbor_addr_get", "code": "_QWORD * __fastcall neighbor_addr_get ( unsigned __int64 @@a1@@ ) { _QWORD * @@i@@ ; if ( memb_inmemb ( & neighbor_addr_mem , @@a1@@ ) ) return ( _QWORD * ) ( @@a1@@ - Number ) ; for ( @@i@@ = ( _QWORD * ) list_head ( ( __int64 ) neighbor_addrs ) ; @@i@@ ; @@i@@ = ( _QWORD * ) * @@i@@ ) { if ( ( unsigned int ) rimeaddr_cmp ( @@a1@@ , ( __int64 ) ( @@i@@ + Number ) ) ) return @@i@@ ; } return Number L ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "r56"}, {"n": "i", "t": {"T": 3, "t": "_QWORD"}, "location": "s8"}]} {"name": "neighbor_attr_add_neighbor", "code": "__int64 __fastcall neighbor_attr_add_neighbor ( unsigned __int64 @@a1@@ ) { __int64 @@v2@@ ; unsigned __int16 @@i@@ ; _QWORD * @@j@@ ; if ( neighbor_attr_has_neighbor ( @@a1@@ ) ) return Number L ; @@v2@@ = memb_alloc ( & neighbor_addr_mem ) ; if ( ! @@v2@@ ) return Number ; list_push ( neighbor_addrs , ( _QWORD * ) @@v2@@ ) ; * ( _WORD * ) ( @@v2@@ + Number ) = Number ; rimeaddr_copy ( @@v2@@ + Number , @@a1@@ ) ; for ( @@i@@ = Number ; @@i@@ < ( unsigned __int16 ) word_41F3E2 && ( void * ) @@v2@@ != ( char * ) off_41F3F0 + Number * @@i@@ ; ++ @@i@@ ) ; * ( _WORD * ) ( @@v2@@ + Number ) = @@i@@ ; for ( @@j@@ = ( _QWORD * ) list_head ( ( __int64 ) neighbor_attrs ) ; @@j@@ ; @@j@@ = ( _QWORD * ) * @@j@@ ) set_attr ( ( __int64 ) @@j@@ , @@i@@ ) ; return Number L ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "r56"}, {"n": "i", "t": {"T": 1, "n": "unsigned __int16", "s": 2}, "location": "s10"}, {"n": "v2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s24"}, {"n": "j", "t": {"T": 3, "t": "_QWORD"}, "location": "s8"}]}