{"name": "call_route_callback", "code": "__int64 __fastcall call_route_callback ( unsigned int @@a1@@ , __int64 @@a2@@ , __int64 @@a3@@ ) { __int64 @@result@@ ; __int64 @@i@@ ; unsigned int @@v6@@ ; @@result@@ = list_head ( notificationlist ) ; for ( @@i@@ = @@result@@ ; @@i@@ ; @@i@@ = @@result@@ ) { if ( @@a1@@ && @@a1@@ != Number ) @@v6@@ = list_length ( routelist ) ; else @@v6@@ = list_length ( defaultrouterlist ) ; ( * ( void ( __fastcall * * ) ( _QWORD , __int64 , __int64 , _QWORD ) ) ( @@i@@ + Number ) ) ( @@a1@@ , @@a2@@ , @@a3@@ , @@v6@@ ) ; @@result@@ = list_item_next ( @@i@@ ) ; } return @@result@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "unsigned int", "s": 4}, "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": "i", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s16"}, {"n": "v6", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s4"}]}
{"name": "uip_ds6_route_add", "code": "__int64 __fastcall uip_ds6_route_add ( _QWORD * @@a1@@ , char @@a2@@ , _QWORD * @@a3@@ , char @@a4@@ ) { __int64 v5 ; __int64 v6 ; __int64 @@v9@@ ; @@v9@@ = uip_ds6_route_lookup ( @@a1@@ ) ; if ( ! @@v9@@ ) { @@v9@@ = memb_alloc ( & routememb ) ; if ( ! @@v9@@ ) return Number L ; list_add ( routelist , @@v9@@ ) ; } v5 = @@a1@@ [ Number ] ; * ( _QWORD * ) ( @@v9@@ + Number ) = * @@a1@@ ; * ( _QWORD * ) ( @@v9@@ + Number ) = v5 ; * ( _BYTE * ) ( @@v9@@ + Number ) = @@a2@@ ; v6 = @@a3@@ [ Number ] ; * ( _QWORD * ) ( @@v9@@ + Number ) = * @@a3@@ ; * ( _QWORD * ) ( @@v9@@ + Number ) = v6 ; * ( _BYTE * ) ( @@v9@@ + Number ) = @@a4@@ ; memset ( ( void * ) ( @@v9@@ + Number ) , Number , Number ) ; call_route_callback ( Number , ( __int64 ) @@a1@@ , ( __int64 ) @@a3@@ ) ; return @@v9@@ ; }", "source": [{"n": "a3", "t": {"T": 3, "t": "_QWORD"}, "location": "r16"}, {"n": "a4", "t": {"T": 1, "n": "char", "s": 1}, "location": "r24"}, {"n": "a1", "t": {"T": 3, "t": "_QWORD"}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "char", "s": 1}, "location": "r64"}, {"n": "v9", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s8"}]} {"name": "uip_ds6_route_rm", "code": "__int64 __fastcall uip_ds6_route_rm ( __int64 @@a1@@ ) { __int64 @@result@@ ; __int64 @@i@@ ; @@result@@ = list_head ( routelist ) ; for ( @@i@@ = @@result@@ ; @@i@@ ; @@i@@ = @@result@@ ) { if ( @@i@@ == @@a1@@ ) { list_remove ( routelist , @@a1@@ ) ; memb_free ( & routememb , @@a1@@ ) ; return call_route_callback ( Number , @@a1@@ + Number , @@a1@@ + Number ) ; } @@result@@ = list_item_next ( @@i@@ ) ; } return @@result@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "i", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s8"}]} {"name": "uip_ds6_route_rm_by_nexthop", "code": "__int64 __fastcall uip_ds6_route_rm_by_nexthop ( const void * @@a1@@ ) { __int64 @@result@@ ; __int64 @@i@@ ; @@result@@ = list_head ( routelist ) ; for ( @@i@@ = @@result@@ ; @@i@@ ; @@i@@ = @@result@@ ) { if ( ! memcmp ( ( const void * ) ( @@i@@ + Number ) , @@a1@@ , Number ) ) { list_remove ( routelist , @@i@@ ) ; call_route_callback ( Number , @@i@@ + Number , @@i@@ + Number ) ; @@result@@ = list_head ( routelist ) ; } else { @@result@@ = list_item_next ( @@i@@ ) ; } } return @@result@@ ; }", "source": [{"n": "a1", "t": {"T": 3, "t": "const void"}, "location": "r56"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "i", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s8"}]} {"name": "uip_ds6_defrt_add", "code": "__int64 __fastcall uip_ds6_defrt_add ( _QWORD * @@a1@@ , __int64 @@a2@@ ) { __int64 @@v3@@ ; __int64 @@v4@@ ; @@v4@@ = uip_ds6_defrt_lookup ( @@a1@@ ) ; if ( ! @@v4@@ ) { @@v4@@ = memb_alloc ( & defaultroutermemb ) ; if ( ! @@v4@@ ) return Number L ; list_push ( defaultrouterlist , @@v4@@ ) ; } @@v3@@ = @@a1@@ [ Number ] ; * ( _QWORD * ) ( @@v4@@ + Number ) = * @@a1@@ ; * ( _QWORD * ) ( @@v4@@ + Number ) = @@v3@@ ; if ( @@a2@@ ) { stimer_set ( @@v4@@ + Number , @@a2@@ ) ; * ( _BYTE * ) ( @@v4@@ + Number ) = Number ; } else { * ( _BYTE * ) ( @@v4@@ + Number ) = Number ; } call_route_callback ( Number , ( __int64 ) @@a1@@ , ( __int64 ) @@a1@@ ) ; return @@v4@@ ; }", "source": [{"n": "v3", "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": "v4", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s8"}]} {"name": "uip_ds6_defrt_rm", "code": "__int64 __fastcall uip_ds6_defrt_rm ( __int64 @@a1@@ ) { __int64 @@result@@ ; __int64 @@i@@ ; @@result@@ = list_head ( defaultrouterlist ) ; for ( @@i@@ = @@result@@ ; @@i@@ ; @@i@@ = @@result@@ ) { if ( @@i@@ == @@a1@@ ) { list_remove ( defaultrouterlist , @@a1@@ ) ; memb_free ( & defaultroutermemb , @@a1@@ ) ; return call_route_callback ( Number , @@a1@@ + Number , @@a1@@ + Number ) ; } @@result@@ = list_item_next ( @@i@@ ) ; } return @@result@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "i", "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"}]} {"name": "list_length", "code": "__int64 __fastcall list_length ( _QWORD * * @@a1@@ ) { unsigned int @@v2@@ ; _QWORD * @@i@@ ; @@v2@@ = Number ; for ( @@i@@ = * @@a1@@ ; @@i@@ ; @@i@@ = ( _QWORD * ) * @@i@@ ) ++ @@v2@@ ; return @@v2@@ ; }", "source": [{"n": "a1", "t": {"T": 3, "t": "_QWORD *"}, "location": "r56"}, {"n": "v2", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s12"}, {"n": "i", "t": {"T": 3, "t": "_QWORD"}, "location": "s8"}]} {"name": "list_item_next", "code": "__int64 __fastcall list_item_next ( __int64 * @@a1@@ ) { __int64 @@result@@ ; if ( @@a1@@ ) @@result@@ = * @@a1@@ ; else @@result@@ = Number L ; return @@result@@ ; }", "source": [{"n": "a1", "t": {"T": 3, "t": "__int64"}, "location": "r56"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}]}