{"name": "rpl_process_dio", "code": "__int64 __fastcall rpl_process_dio ( _QWORD * @@a1@@ , __int64 @@a2@@ ) { __int64 @@result@@ ; __int64 @@v3@@ ; __int64 @@v4@@ ; _WORD * @@v5@@ ; _QWORD * @@v6@@ ; @@result@@ = * ( unsigned __int8 * ) ( @@a2@@ + Number ) ; if ( ( _BYTE ) @@result@@ == Number ) { @@v5@@ = get_dag ( * ( _BYTE * ) ( @@a2@@ + Number ) , ( const void * ) @@a2@@ ) ; @@v4@@ = rpl_get_instance ( * ( _BYTE * ) ( @@a2@@ + Number ) ) ; if ( @@v5@@ && @@v4@@ ) { if ( lollipop_greater_than ( * ( unsigned __int8 * ) ( @@a2@@ + Number ) , * ( ( unsigned __int8 * ) @@v5@@ + Number ) ) ) { if ( @@v5@@ [ Number ] != * ( _WORD * ) ( @@v4@@ + Number ) ) return global_repair ( @@a1@@ , ( __int64 ) @@v5@@ , @@a2@@ ) ; * ( ( _BYTE * ) @@v5@@ + Number ) = * ( _BYTE * ) ( @@a2@@ + Number ) ; ++ * ( ( _BYTE * ) @@v5@@ + Number ) ; return rpl_reset_dio_timer ( @@v4@@ ) ; } if ( lollipop_greater_than ( * ( ( unsigned __int8 * ) @@v5@@ + Number ) , * ( unsigned __int8 * ) ( @@a2@@ + Number ) ) && * ( ( _BYTE * ) @@v5@@ + Number ) ) return rpl_reset_dio_timer ( @@v4@@ ) ; } @@result@@ = * ( unsigned __int16 * ) ( @@a2@@ + Number ) ; if ( ( _WORD ) @@result@@ == Number ) return @@result@@ ; if ( ! @@v4@@ ) return rpl_join_instance ( @@a1@@ , @@a2@@ ) ; if ( ! @@v5@@ ) return ( __int64 ) rpl_add_dag ( @@a1@@ , @@a2@@ ) ; @@result@@ = * ( unsigned __int16 * ) ( @@v4@@ + Number ) ; if ( * ( _WORD * ) ( @@a2@@ + Number ) >= ( unsigned __int16 ) @@result@@ ) { if ( * ( _WORD * ) ( @@a2@@ + Number ) == Number && * ( ( _BYTE * ) @@v5@@ + Number ) ) rpl_reset_dio_timer ( @@v4@@ ) ; if ( @@v5@@ [ Number ] == * ( _WORD * ) ( @@v4@@ + Number ) ) { @@result@@ = * ( unsigned __int16 * ) ( @@a2@@ + Number ) ; if ( ( _WORD ) @@result@@ != Number ) { @@result@@ = @@v4@@ ; ++ * ( _BYTE * ) ( @@v4@@ + Number ) ; } return @@result@@ ; } @@v6@@ = rpl_find_parent ( ( __int64 ) @@v5@@ , @@a1@@ ) ; if ( @@v6@@ ) { if ( * ( ( _WORD * ) @@v6@@ + Number ) == * ( _WORD * ) ( @@a2@@ + Number ) ) { if ( * ( ( _BYTE * ) @@v5@@ + Number ) ) ++ * ( _BYTE * ) ( @@v4@@ + Number ) ; } else { * ( ( _WORD * ) @@v6@@ + Number ) = * ( _WORD * ) ( @@a2@@ + Number ) ; } } else { @@v3@@ = find_parent_dag ( @@v4@@ , @@a1@@ ) ; if ( @@v3@@ ) { @@v6@@ = rpl_find_parent ( @@v3@@ , @@a1@@ ) ; if ( @@v6@@ ) rpl_move_parent ( @@v3@@ , ( __int64 ) @@v5@@ , ( __int64 ) @@v6@@ ) ; } else { if ( ( unsigned int ) list_length ( * ( ( _QWORD * ) @@v5@@ + Number ) ) == Number ) remove_worst_parent ( ( __int64 ) @@v5@@ , * ( _WORD * ) ( @@a2@@ + Number ) ) ; @@result@@ = rpl_add_parent ( ( __int64 ) @@v5@@ , @@a2@@ , @@a1@@ ) ; @@v6@@ = ( _QWORD * ) @@result@@ ; if ( ! @@result@@ ) return @@result@@ ; } } @@v6@@ [ Number ] = * ( _QWORD * ) ( @@a2@@ + Number ) ; @@result@@ = rpl_process_parent_event ( @@v4@@ , ( __int64 ) @@v6@@ ) ; if ( ( _DWORD ) @@result@@ ) { if ( * ( ( _BYTE * ) @@v5@@ + Number ) && @@v6@@ == * ( ( _QWORD * * ) @@v5@@ + Number ) && should_send_dao ( @@v4@@ , @@a2@@ , ( __int64 ) @@v6@@ ) ) { ++ * ( _BYTE * ) ( @@v4@@ + Number ) ; rpl_schedule_dao ( @@v4@@ ) ; } @@result@@ = ( __int64 ) @@v6@@ ; * ( ( _BYTE * ) @@v6@@ + Number ) = * ( _BYTE * ) ( @@a2@@ + Number ) ; } return @@result@@ ; } } return @@result@@ ; }", "source": [{"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": 3, "t": "_WORD"}, "location": "s16"}, {"n": "v4", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s24"}, {"n": "v3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s32"}, {"n": "v6", "t": {"T": 3, "t": "_QWORD"}, "location": "s8"}]}
{"name": "lollipop_greater_than", "code": "_BOOL8 __fastcall lollipop_greater_than ( int @@a1@@ , int @@a2@@ ) { if ( @@a1@@ > Number && @@a2@@ <= Number ) return @@a2@@ + Number - @@a1@@ > Number ; return @@a1@@ > @@a2@@ && @@a1@@ - @@a2@@ <= Number || @@a1@@ < @@a2@@ && @@a2@@ - @@a1@@ > Number ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "int", "s": 4}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "int", "s": 4}, "location": "r64"}]} {"name": "remove_worst_parent", "code": "__int64 __fastcall remove_worst_parent ( __int64 @@a1@@ , unsigned __int16 @@a2@@ ) { __int64 @@result@@ ; __int64 @@v3@@ ; __int64 @@i@@ ; @@v3@@ = Number L ; @@result@@ = list_head ( * ( _QWORD * ) ( @@a1@@ + Number ) ) ; for ( @@i@@ = @@result@@ ; @@i@@ ; @@i@@ = @@result@@ ) { if ( @@i@@ != * ( _QWORD * ) ( @@a1@@ + Number ) && ( ! @@v3@@ || * ( _WORD * ) ( @@i@@ + Number ) > * ( _WORD * ) ( @@v3@@ + Number ) ) ) @@v3@@ = @@i@@ ; @@result@@ = list_item_next ( @@i@@ ) ; } if ( @@v3@@ ) { @@result@@ = * ( unsigned __int16 * ) ( @@v3@@ + Number ) ; if ( @@a2@@ < ( unsigned __int16 ) @@result@@ ) @@result@@ = rpl_remove_parent ( @@a1@@ , @@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": "should_send_dao", "code": "_BOOL8 __fastcall should_send_dao ( __int64 @@a1@@ , __int64 @@a2@@ , __int64 @@a3@@ ) { if ( ! * ( _BYTE * ) ( @@a1@@ + Number ) ) return Number L ; return @@a3@@ == * ( _QWORD * ) ( * ( _QWORD * ) ( @@a1@@ + Number ) + Number L ) && lollipop_greater_than ( * ( unsigned __int8 * ) ( @@a2@@ + Number ) , * ( unsigned __int8 * ) ( @@a3@@ + Number ) ) ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}]} {"name": "get_dag", "code": "void * __fastcall get_dag ( unsigned __int8 @@a1@@ , const void * @@a2@@ ) { __int64 @@v3@@ ; void * @@s1@@ ; __int64 @@v5@@ ; int @@i@@ ; @@v5@@ = rpl_get_instance ( @@a1@@ ) ; if ( ! @@v5@@ ) return Number L ; for ( @@i@@ = Number ; @@i@@ <= Number ; ++ @@i@@ ) { @@v3@@ = Number L * @@i@@ + Number ; @@s1@@ = ( void * ) ( @@v3@@ + @@v5@@ + Number ) ; if ( * ( _BYTE * ) ( @@v3@@ + @@v5@@ + Number ) && ! memcmp ( @@s1@@ , @@a2@@ , Number ) ) return @@s1@@ ; } return Number L ; }", "source": [{"n": "v3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "unsigned __int8", "s": 1}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "const void"}, "location": "r64"}, {"n": "v5", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s16"}, {"n": "s1", "t": {"T": 3, "t": "void"}, "location": "s24"}, {"n": "i", "t": {"T": 1, "n": "int", "s": 4}, "location": "s4"}]} {"name": "rpl_add_parent", "code": "__int64 __fastcall rpl_add_parent ( __int64 @@a1@@ , __int64 @@a2@@ , _QWORD * @@a3@@ ) { __int64 v4 ; __int64 @@v6@@ ; if ( ( unsigned int ) list_length ( * ( _QWORD * ) ( @@a1@@ + Number ) ) == Number ) return Number L ; @@v6@@ = memb_alloc ( & parent_memb ) ; if ( ! @@v6@@ ) return Number L ; v4 = @@a3@@ [ Number ] ; * ( _QWORD * ) ( @@v6@@ + Number ) = * @@a3@@ ; * ( _QWORD * ) ( @@v6@@ + Number ) = v4 ; * ( _QWORD * ) ( @@v6@@ + Number ) = @@a1@@ ; * ( _WORD * ) ( @@v6@@ + Number ) = * ( _WORD * ) ( @@a2@@ + Number ) ; * ( _BYTE * ) ( @@v6@@ + Number ) = * ( _BYTE * ) ( @@a2@@ + Number ) ; * ( _BYTE * ) ( @@v6@@ + Number ) = Number ; * ( _QWORD * ) ( @@v6@@ + Number ) = * ( _QWORD * ) ( @@a2@@ + Number ) ; list_add ( * ( _QWORD * ) ( @@a1@@ + Number ) , @@v6@@ ) ; return @@v6@@ ; }", "source": [{"n": "a3", "t": {"T": 3, "t": "_QWORD"}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}, {"n": "v6", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s8"}]} {"name": "rpl_find_parent", "code": "_QWORD * __fastcall rpl_find_parent ( __int64 @@a1@@ , const void * @@a2@@ ) { _QWORD * @@i@@ ; for ( @@i@@ = ( _QWORD * ) list_head ( * ( _QWORD * ) ( @@a1@@ + Number ) ) ; @@i@@ ; @@i@@ = ( _QWORD * ) * @@i@@ ) { if ( ! memcmp ( @@i@@ + Number , @@a2@@ , Number ) ) return @@i@@ ; } return Number L ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "const void"}, "location": "r64"}, {"n": "i", "t": {"T": 3, "t": "_QWORD"}, "location": "s8"}]} {"name": "find_parent_dag", "code": "unsigned __int64 __fastcall find_parent_dag ( __int64 @@a1@@ , const void * @@a2@@ ) { unsigned __int64 @@i@@ ; _QWORD * @@j@@ ; for ( @@i@@ = @@a1@@ + Number ; @@i@@ < @@a1@@ + Number ; @@i@@ += Number L ) { if ( * ( _BYTE * ) ( @@i@@ + Number ) ) { for ( @@j@@ = ( _QWORD * ) list_head ( * ( _QWORD * ) ( @@i@@ + Number ) ) ; @@j@@ ; @@j@@ = ( _QWORD * ) * @@j@@ ) { if ( ! memcmp ( @@j@@ + Number , @@a2@@ , Number ) ) return @@i@@ ; } } } return Number L ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "const void"}, "location": "r64"}, {"n": "i", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s16"}, {"n": "j", "t": {"T": 3, "t": "_QWORD"}, "location": "s8"}]} {"name": "rpl_move_parent", "code": "__int64 __fastcall rpl_move_parent ( __int64 @@a1@@ , __int64 @@a2@@ , __int64 @@a3@@ ) { if ( @@a3@@ == * ( _QWORD * ) ( @@a1@@ + Number ) ) { * ( _QWORD * ) ( @@a1@@ + Number ) = Number L ; * ( _WORD * ) ( @@a1@@ + Number ) = Number ; if ( * ( _BYTE * ) ( @@a1@@ + Number ) && * ( _QWORD * ) ( * ( _QWORD * ) ( @@a1@@ + Number ) + Number L ) ) { uip_ds6_defrt_rm ( * ( _QWORD * ) ( * ( _QWORD * ) ( @@a1@@ + Number ) + Number L ) ) ; * ( _QWORD * ) ( * ( _QWORD * ) ( @@a1@@ + Number ) + Number L ) = Number L ; } } else if ( * ( _BYTE * ) ( @@a1@@ + Number ) ) { rpl_remove_routes_by_nexthop ( ( const void * ) ( @@a3@@ + Number ) , @@a1@@ ) ; } list_remove ( * ( _QWORD * ) ( @@a1@@ + Number ) , @@a3@@ ) ; * ( _QWORD * ) ( @@a3@@ + Number ) = @@a2@@ ; return list_add ( * ( _QWORD * ) ( @@a2@@ + Number ) , @@a3@@ ) ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}]} {"name": "rpl_get_instance", "code": "__int64 __fastcall rpl_get_instance ( char @@a1@@ ) { int @@i@@ ; for ( @@i@@ = Number ; @@i@@ <= Number ; ++ @@i@@ ) { if ( * ( ( _BYTE * ) & unk_4238F1 + Number * @@i@@ ) && @@a1@@ == * ( ( _BYTE * ) & unk_4238F0 + Number * @@i@@ ) ) return Number L * @@i@@ + Number ; } return Number L ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "char", "s": 1}, "location": "r56"}, {"n": "i", "t": {"T": 1, "n": "int", "s": 4}, "location": "s4"}]} {"name": "rpl_join_instance", "code": "__int64 __fastcall rpl_join_instance ( _QWORD * @@a1@@ , __int64 @@a2@@ ) { __int64 @@result@@ ; __int64 @@v3@@ ; __int64 ( __fastcall * * @@v4@@ ) ( ) ; __int64 @@v5@@ ; __int64 @@v6@@ ; __int64 @@v7@@ ; @@result@@ = ( __int64 ) rpl_alloc_dag ( * ( _BYTE * ) ( @@a2@@ + Number ) ) ; @@v7@@ = @@result@@ ; if ( @@result@@ ) { @@v6@@ = * ( _QWORD * ) ( @@result@@ + Number ) ; @@v5@@ = rpl_add_parent ( @@result@@ , @@a2@@ , @@a1@@ ) ; if ( @@v5@@ ) { * ( _BYTE * ) ( @@v5@@ + Number ) = * ( _BYTE * ) ( @@a2@@ + Number ) ; @@v4@@ = rpl_find_of ( * ( _WORD * ) ( @@a2@@ + Number ) ) ; if ( @@v4@@ ) { if ( ( * ( _BYTE * ) ( @@a2@@ + Number ) & Number ) != Number ) check_prefix ( Number L , ( unsigned __int8 * ) ( @@a2@@ + Number ) ) ; * ( _BYTE * ) ( @@v7@@ + Number ) = Number ; * ( _BYTE * ) ( @@v7@@ + Number ) = * ( _BYTE * ) ( @@a2@@ + Number ) ; * ( _BYTE * ) ( @@v7@@ + Number ) = * ( _BYTE * ) ( @@a2@@ + Number ) ; * ( _BYTE * ) ( @@v7@@ + Number ) = * ( _BYTE * ) ( @@a2@@ + Number ) ; * ( _QWORD * ) ( @@v6@@ + Number ) = @@v4@@ ; * ( _BYTE * ) ( @@v6@@ + Number ) = * ( _BYTE * ) ( @@a2@@ + Number ) ; * ( _QWORD * ) ( @@v6@@ + Number ) = @@v7@@ ; * ( _BYTE * ) ( @@v6@@ + Number ) = Number ; * ( _WORD * ) ( @@v6@@ + Number ) = * ( _WORD * ) ( @@a2@@ + Number ) ; * ( _WORD * ) ( @@v6@@ + Number ) = * ( _WORD * ) ( @@a2@@ + Number ) ; * ( _BYTE * ) ( @@v6@@ + Number ) = * ( _BYTE * ) ( @@a2@@ + Number ) ; * ( _BYTE * ) ( @@v6@@ + Number ) = * ( _BYTE * ) ( @@a2@@ + Number ) ; * ( _BYTE * ) ( @@v6@@ + Number ) = * ( _BYTE * ) ( @@v6@@ + Number ) + * ( _BYTE * ) ( @@v6@@ + Number ) ; * ( _BYTE * ) ( @@v6@@ + Number ) = * ( _BYTE * ) ( @@a2@@ + Number ) ; * ( _BYTE * ) ( @@v6@@ + Number ) = * ( _BYTE * ) ( @@a2@@ + Number ) ; * ( _WORD * ) ( @@v6@@ + Number ) = * ( _WORD * ) ( @@a2@@ + Number ) ; @@v3@@ = * ( _QWORD * ) ( @@a2@@ + Number ) ; * ( _QWORD * ) @@v7@@ = * ( _QWORD * ) @@a2@@ ; * ( _QWORD * ) ( @@v7@@ + Number ) = @@v3@@ ; memcpy ( ( void * ) ( @@v7@@ + Number ) , ( const void * ) ( @@a2@@ + Number ) , Number ) ; * ( _QWORD * ) ( @@v7@@ + Number ) = @@v5@@ ; ( * ( void ( __fastcall * * ) ( __int64 ) ) ( * ( _QWORD * ) ( @@v6@@ + Number ) + Number L ) ) ( @@v6@@ ) ; * ( _WORD * ) ( @@v7@@ + Number ) = ( * ( __int64 ( __fastcall * * ) ( __int64 , _QWORD ) ) ( * ( _QWORD * ) ( @@v6@@ + Number ) + Number L ) ) ( @@v5@@ , Number L ) ; * ( _WORD * ) ( @@v7@@ + Number ) = * ( _WORD * ) ( @@v7@@ + Number ) ; if ( ! default_instance ) default_instance = @@v6@@ ; rpl_reset_dio_timer ( @@v6@@ ) ; rpl_set_default_route ( @@v6@@ , @@a1@@ ) ; @@result@@ = * ( unsigned __int8 * ) ( @@v6@@ + Number ) ; if ( ( _BYTE ) @@result@@ ) @@result@@ = rpl_schedule_dao ( @@v6@@ ) ; } else { rpl_remove_parent ( @@v7@@ , @@v5@@ ) ; @@result@@ = @@v6@@ ; * ( _BYTE * ) ( @@v6@@ + Number ) = Number ; } } else { @@result@@ = @@v6@@ ; * ( _BYTE * ) ( @@v6@@ + Number ) = Number ; } } return @@result@@ ; }", "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": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "v6", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s16"}, {"n": "v5", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s24"}, {"n": "v4", "t": {"T": 9, "n": "__int64 (__fastcall **)()"}, "location": "s32"}, {"n": "v7", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s8"}]} {"name": "rpl_add_dag", "code": "char * __fastcall rpl_add_dag ( _QWORD * @@a1@@ , __int64 @@a2@@ ) { char * @@result@@ ; __int64 @@v3@@ ; __int64 @@v4@@ ; __int64 @@v5@@ ; __int64 @@v6@@ ; __int64 @@v7@@ ; @@result@@ = rpl_alloc_dag ( * ( _BYTE * ) ( @@a2@@ + Number ) ) ; @@v6@@ = ( __int64 ) @@result@@ ; if ( @@result@@ ) { @@v5@@ = * ( ( _QWORD * ) @@result@@ + Number ) ; @@v4@@ = find_parent_dag ( @@v5@@ , @@a1@@ ) ; if ( @@v4@@ ) { @@v7@@ = ( __int64 ) rpl_find_parent ( @@v4@@ , @@a1@@ ) ; if ( @@v7@@ ) rpl_move_parent ( @@v4@@ , @@v6@@ , @@v7@@ ) ; } else { @@v7@@ = rpl_add_parent ( @@v6@@ , @@a2@@ , @@a1@@ ) ; if ( ! @@v7@@ ) { @@result@@ = ( char * ) @@v6@@ ; * ( _BYTE * ) ( @@v6@@ + Number ) = Number ; return @@result@@ ; } } if ( rpl_find_of ( * ( _WORD * ) ( @@a2@@ + Number ) ) == * ( __int64 ( __fastcall * * * ) ( ) ) ( @@v5@@ + Number ) && * ( _BYTE * ) ( @@v5@@ + Number ) == * ( _BYTE * ) ( @@a2@@ + Number ) && * ( _WORD * ) ( @@v5@@ + Number ) == * ( _WORD * ) ( @@a2@@ + Number ) && * ( _WORD * ) ( @@v5@@ + Number ) == * ( _WORD * ) ( @@a2@@ + Number ) && * ( _BYTE * ) ( @@v5@@ + Number ) == * ( _BYTE * ) ( @@a2@@ + Number ) && * ( _BYTE * ) ( @@v5@@ + Number ) == * ( _BYTE * ) ( @@a2@@ + Number ) && * ( _BYTE * ) ( @@v5@@ + Number ) == * ( _BYTE * ) ( @@a2@@ + Number ) && * ( _BYTE * ) ( @@v5@@ + Number ) == * ( _BYTE * ) ( @@a2@@ + Number ) && * ( _WORD * ) ( @@v5@@ + Number ) == * ( _WORD * ) ( @@a2@@ + Number ) ) { * ( _BYTE * ) ( @@v6@@ + Number ) = Number ; * ( _BYTE * ) ( @@v6@@ + Number ) = * ( _BYTE * ) ( @@a2@@ + Number ) ; * ( _BYTE * ) ( @@v6@@ + Number ) = * ( _BYTE * ) ( @@a2@@ + Number ) ; * ( _BYTE * ) ( @@v6@@ + Number ) = * ( _BYTE * ) ( @@a2@@ + Number ) ; @@v3@@ = * ( _QWORD * ) ( @@a2@@ + Number ) ; * ( _QWORD * ) @@v6@@ = * ( _QWORD * ) @@a2@@ ; * ( _QWORD * ) ( @@v6@@ + Number ) = @@v3@@ ; memcpy ( ( void * ) ( @@v6@@ + Number ) , ( const void * ) ( @@a2@@ + Number ) , Number ) ; * ( _QWORD * ) ( @@v6@@ + Number ) = @@v7@@ ; * ( _WORD * ) ( @@v6@@ + Number ) = ( * ( __int64 ( __fastcall * * ) ( __int64 , _QWORD ) ) ( * ( _QWORD * ) ( @@v5@@ + Number ) + Number L ) ) ( @@v7@@ , Number L ) ; * ( _WORD * ) ( @@v6@@ + Number ) = * ( _WORD * ) ( @@v6@@ + Number ) ; rpl_process_parent_event ( @@v5@@ , @@v7@@ ) ; @@result@@ = ( char * ) @@v7@@ ; * ( _BYTE * ) ( @@v7@@ + Number ) = * ( _BYTE * ) ( @@a2@@ + Number ) ; } else { rpl_remove_parent ( @@v6@@ , @@v7@@ ) ; @@result@@ = ( char * ) @@v6@@ ; * ( _BYTE * ) ( @@v6@@ + Number ) = Number ; } } return @@result@@ ; }", "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": "result", "t": {"T": 3, "t": "char"}, "location": "r8"}, {"n": "v6", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s16"}, {"n": "v5", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s24"}, {"n": "v4", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s32"}, {"n": "v7", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s8"}]} {"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": "rpl_process_parent_event", "code": "__int64 __fastcall rpl_process_parent_event ( __int64 @@a1@@ , __int64 @@a2@@ ) { unsigned int @@v3@@ ; @@v3@@ = Number ; if ( ! acceptable_rank ( * ( _QWORD * ) ( @@a2@@ + Number ) , * ( _WORD * ) ( @@a2@@ + Number ) ) ) { if ( @@a2@@ != * ( _QWORD * ) ( * ( _QWORD * ) ( @@a1@@ + Number ) + Number L ) ) { rpl_nullify_parent ( * ( _QWORD * ) ( @@a2@@ + Number ) , @@a2@@ ) ; return Number L ; } rpl_nullify_parent ( * ( _QWORD * ) ( @@a2@@ + Number ) , @@a2@@ ) ; @@v3@@ = Number ; } if ( rpl_select_dag ( @@a1@@ , @@a2@@ ) ) return @@v3@@ ; rpl_local_repair ( @@a1@@ ) ; return Number L ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}, {"n": "v3", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s4"}]} {"name": "dio_input", "code": "__int64 dio_input ( ) { __int64 v0 ; _QWORD * v1 ; int v2 ; int v3 ; __int64 * v4 ; __int64 v5 ; __int64 result ; int v7 ; int v8 ; __int64 * v9 ; __int64 v10 ; __int64 @@v11@@ [ Number ] ; __int64 @@s@@ [ Number ] ; __int16 @@v13@@ ; __int16 @@v14@@ ; char @@v15@@ ; char @@v16@@ ; char @@v17@@ ; char @@v18@@ ; char @@v19@@ ; char @@v20@@ ; char @@v21@@ ; char @@v22@@ ; char @@v23@@ ; char @@v24@@ ; __int16 @@v25@@ ; __int16 @@v26@@ ; __int16 @@v27@@ ; _DWORD @@v28@@ [ Number ] ; unsigned __int8 @@v29@@ ; char @@v30@@ ; __int64 @@v31@@ ; __int64 @@v32@@ ; int @@v33@@ ; char @@v34@@ ; char @@v35@@ ; unsigned __int8 @@v36@@ ; char @@v37@@ ; char @@v38@@ ; char @@v39@@ ; char @@v40@@ ; __int16 @@v41@@ ; unsigned __int8 @@v42@@ ; __int64 @@v43@@ ; unsigned __int8 @@v44@@ ; __int64 @@v45@@ ; int @@v46@@ ; int @@v47@@ ; memset ( @@s@@ , Number , Number ) ; @@v21@@ = Number ; @@v22@@ = Number ; @@v23@@ = Number ; @@v27@@ = Number ; @@v26@@ = Number ; @@v13@@ = word_41F2B0 ; @@v24@@ = Number ; @@v25@@ = Number ; v0 = * ( _QWORD * ) & byte_422788 [ Number ] ; @@v11@@ [ Number ] = * ( _QWORD * ) byte_422788 ; @@v11@@ [ Number ] = v0 ; @@v45@@ = uip_ds6_nbr_lookup ( @@v11@@ ) ; if ( ! @@v45@@ ) { v1 = ( _QWORD * ) packetbuf_addr ( Number L ) ; @@v45@@ = uip_ds6_nbr_add ( @@v11@@ , v1 , Number , Number ) ; if ( @@v45@@ ) stimer_set ( @@v45@@ + Number , Number L ) ; } @@v44@@ = uip_len - uip_ext_len - Number ; @@v43@@ = ( unsigned __int8 ) uip_ext_len + Number + Number L ; @@v47@@ = Number ; @@v19@@ = * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) ; @@v47@@ = Number ; @@v18@@ = * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) ; @@v14@@ = get16 ( @@v43@@ , Number ) ; @@v47@@ += Number ; @@v15@@ = * ( _BYTE * ) ( @@v47@@ + @@v43@@ ) & Number ; @@v16@@ = ( ( int ) * ( unsigned __int8 * ) ( @@v47@@ + @@v43@@ ) >> Number ) & Number ; v2 = @@v47@@ ++ ; @@v17@@ = * ( _BYTE * ) ( v2 + @@v43@@ ) & Number ; v3 = @@v47@@ ++ ; @@v20@@ = * ( _BYTE * ) ( v3 + @@v43@@ ) ; @@v47@@ += Number ; v4 = ( __int64 * ) ( @@v47@@ + @@v43@@ ) ; v5 = v4 [ Number ] ; @@s@@ [ Number ] = * v4 ; @@s@@ [ Number ] = v5 ; for ( @@v47@@ += Number ; @@v47@@ < @@v44@@ ; @@v47@@ += @@v46@@ ) { @@v42@@ = * ( _BYTE * ) ( @@v47@@ + @@v43@@ ) ; if ( @@v42@@ ) @@v46@@ = * ( unsigned __int8 * ) ( @@v47@@ + Number L + @@v43@@ ) + Number ; else @@v46@@ = Number ; result = @@v44@@ ; if ( @@v47@@ + @@v46@@ > @@v44@@ ) return result ; result = @@v42@@ ; if ( @@v42@@ == Number ) { if ( @@v46@@ != Number ) return result ; @@v34@@ = * ( _BYTE * ) ( @@v47@@ + Number L + @@v43@@ ) ; @@v35@@ = * ( _BYTE * ) ( @@v47@@ + Number L + @@v43@@ ) ; @@v33@@ = get32 ( @@v43@@ , @@v47@@ + Number ) ; v9 = ( __int64 * ) ( @@v47@@ + Number L + @@v43@@ ) ; v10 = v9 [ Number ] ; @@v31@@ = * v9 ; @@v32@@ = v10 ; } else if ( @@v42@@ <= Number ) { if ( @@v42@@ == Number ) { if ( @@v46@@ != Number ) return result ; @@v21@@ = * ( _BYTE * ) ( @@v47@@ + Number L + @@v43@@ ) ; @@v22@@ = * ( _BYTE * ) ( @@v47@@ + Number L + @@v43@@ ) ; @@v23@@ = * ( _BYTE * ) ( @@v47@@ + Number L + @@v43@@ ) ; @@v26@@ = get16 ( @@v43@@ , @@v47@@ + Number ) ; @@v27@@ = get16 ( @@v43@@ , @@v47@@ + Number ) ; @@v13@@ = get16 ( @@v43@@ , @@v47@@ + Number ) ; @@v24@@ = * ( _BYTE * ) ( @@v47@@ + Number L + @@v43@@ ) ; @@v25@@ = get16 ( @@v43@@ , @@v47@@ + Number ) ; } else if ( @@v42@@ <= Number ) { if ( @@v42@@ == Number ) { if ( @@v46@@ <= Number ) return result ; @@v36@@ = * ( _BYTE * ) ( @@v47@@ + Number L + @@v43@@ ) ; @@v37@@ = Number * * ( _BYTE * ) ( @@v47@@ + Number L + @@v43@@ ) ; @@v37@@ |= * ( _BYTE * ) ( @@v47@@ + Number L + @@v43@@ ) >> Number ; @@v38@@ = ( * ( _BYTE * ) ( @@v47@@ + Number L + @@v43@@ ) >> Number ) & Number ; @@v39@@ = * ( _BYTE * ) ( @@v47@@ + Number L + @@v43@@ ) & Number ; @@v40@@ = * ( _BYTE * ) ( @@v47@@ + Number L + @@v43@@ ) ; if ( @@v36@@ == Number ) { @@v41@@ = get16 ( @@v43@@ , @@v47@@ + Number ) ; } else { result = @@v36@@ ; if ( @@v36@@ != Number ) return result ; LOBYTE ( @@v41@@ ) = * ( _BYTE * ) ( @@v47@@ + Number L + @@v43@@ ) ; HIBYTE ( @@v41@@ ) = * ( _BYTE * ) ( @@v47@@ + Number L + @@v43@@ ) ; } } else if ( @@v42@@ == Number ) { if ( @@v46@@ <= Number ) return result ; @@v29@@ = * ( _BYTE * ) ( @@v47@@ + Number L + @@v43@@ ) ; @@v30@@ = * ( _BYTE * ) ( @@v47@@ + Number L + @@v43@@ ) ; @@v28@@ [ Number ] = get32 ( @@v43@@ , @@v47@@ + Number ) ; v7 = @@v29@@ + Number ; if ( v7 < Number ) v7 = @@v29@@ + Number ; result = ( unsigned int ) ( ( v7 >> Number ) + Number ) ; if ( @@v46@@ <= ( int ) result ) return result ; result = @@v29@@ ; if ( @@v29@@ > Number ) return result ; v8 = @@v29@@ + Number ; if ( v8 < Number ) v8 = @@v29@@ + Number ; memcpy ( @@v28@@ , ( const void * ) ( @@v47@@ + Number L + @@v43@@ ) , v8 >> Number ) ; } } } } return rpl_process_dio ( @@v11@@ , ( __int64 ) @@s@@ ) ; }", "source": [{"n": "v23", "t": {"T": 1, "n": "char", "s": 1}, "location": "s100"}, {"n": "v22", "t": {"T": 1, "n": "char", "s": 1}, "location": "s101"}, {"n": "v21", "t": {"T": 1, "n": "char", "s": 1}, "location": "s102"}, {"n": "v20", "t": {"T": 1, "n": "char", "s": 1}, "location": "s103"}, {"n": "v19", "t": {"T": 1, "n": "char", "s": 1}, "location": "s104"}, {"n": "v18", "t": {"T": 1, "n": "char", "s": 1}, "location": "s105"}, {"n": "v17", "t": {"T": 1, "n": "char", "s": 1}, "location": "s106"}, {"n": "v16", "t": {"T": 1, "n": "char", "s": 1}, "location": "s107"}, {"n": "v15", "t": {"T": 1, "n": "char", "s": 1}, "location": "s108"}, {"n": "v14", "t": {"T": 1, "n": "__int16", "s": 2}, "location": "s110"}, {"n": "v13", "t": {"T": 1, "n": "__int16", "s": 2}, "location": "s112"}, {"n": "s", "t": {"T": 2, "n": 2, "s": 8, "t": "__int64"}, "location": "s128"}, {"n": "v11", "t": {"T": 2, "n": 2, "s": 8, "t": "__int64"}, "location": "s144"}, {"n": "v45", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s16"}, {"n": "v44", "t": {"T": 1, "n": "unsigned __int8", "s": 1}, "location": "s17"}, {"n": "v43", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s32"}, {"n": "v42", "t": {"T": 1, "n": "unsigned __int8", "s": 1}, "location": "s33"}, {"n": "v41", "t": {"T": 1, "n": "__int16", "s": 2}, "location": "s38"}, {"n": "v47", "t": {"T": 1, "n": "int", "s": 4}, "location": "s4"}, {"n": "v40", "t": {"T": 1, "n": "char", "s": 1}, "location": "s40"}, {"n": "v39", "t": {"T": 1, "n": "char", "s": 1}, "location": "s41"}, {"n": "v38", "t": {"T": 1, "n": "char", "s": 1}, "location": "s42"}, {"n": "v37", "t": {"T": 1, "n": "char", "s": 1}, "location": "s43"}, {"n": "v36", "t": {"T": 1, "n": "unsigned __int8", "s": 1}, "location": "s44"}, {"n": "v35", "t": {"T": 1, "n": "char", "s": 1}, "location": "s47"}, {"n": "v34", "t": {"T": 1, "n": "char", "s": 1}, "location": "s48"}, {"n": "v33", "t": {"T": 1, "n": "int", "s": 4}, "location": "s52"}, {"n": "v32", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s60"}, {"n": "v31", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s68"}, {"n": "v30", "t": {"T": 1, "n": "char", "s": 1}, "location": "s71"}, {"n": "v29", "t": {"T": 1, "n": "unsigned __int8", "s": 1}, "location": "s72"}, {"n": "v46", "t": {"T": 1, "n": "int", "s": 4}, "location": "s8"}, {"n": "v28", "t": {"T": 2, "n": 5, "s": 4, "t": "_DWORD"}, "location": "s92"}, {"n": "v27", "t": {"T": 1, "n": "__int16", "s": 2}, "location": "s94"}, {"n": "v26", "t": {"T": 1, "n": "__int16", "s": 2}, "location": "s96"}, {"n": "v25", "t": {"T": 1, "n": "__int16", "s": 2}, "location": "s98"}, {"n": "v24", "t": {"T": 1, "n": "char", "s": 1}, "location": "s99"}]} {"name": "rpl_reset_dio_timer", "code": "__int64 __fastcall rpl_reset_dio_timer ( unsigned __int8 * @@a1@@ ) { __int64 @@result@@ ; @@result@@ = @@a1@@ [ Number ] ; if ( @@a1@@ [ Number ] > ( unsigned __int8 ) @@result@@ ) { @@a1@@ [ Number ] = Number ; @@a1@@ [ Number ] = @@a1@@ [ Number ] ; @@result@@ = new_dio_interval ( ( __int64 ) @@a1@@ ) ; } return @@result@@ ; }", "source": [{"n": "a1", "t": {"T": 3, "t": "unsigned __int8"}, "location": "r56"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}]} {"name": "rpl_schedule_dao", "code": "__int64 __fastcall rpl_schedule_dao ( __int64 @@a1@@ ) { __int64 result ; unsigned __int16 v2 ; etimer_expiration_time ( ( _QWORD * ) ( @@a1@@ + Number ) ) ; result = etimer_expired ( @@a1@@ + Number ) ; if ( ( _DWORD ) result ) { v2 = random_rand ( ) ; result = ctimer_set ( @@a1@@ + Number , ( int ) ( v2 % Number + Number ) , handle_dao_timer , @@a1@@ ) ; } return result ; }", "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": "send", "code": "__int64 __fastcall send ( __int64 @@a1@@ , unsigned __int16 @@a2@@ ) { prepare ( @@a1@@ , @@a2@@ ) ; return transmit ( @@a2@@ ) ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "unsigned __int16", "s": 2}, "location": "r64"}]}