{"name": "uip_ds6_defrt_lookup", "code": "__int64 __fastcall uip_ds6_defrt_lookup ( const void * @@a1@@ ) { __int64 @@i@@ ; for ( @@i@@ = list_head ( defaultrouterlist ) ; @@i@@ ; @@i@@ = list_item_next ( @@i@@ ) ) { if ( ! memcmp ( ( const void * ) ( @@i@@ + Number ) , @@a1@@ , Number ) ) return @@i@@ ; } return Number L ; }", "source": [{"n": "a1", "t": {"T": 3, "t": "const void"}, "location": "r56"}, {"n": "i", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s8"}]}
{"name": "uip_nd6_na_input", "code": "__int64 uip_nd6_na_input ( ) { __int64 result ; size_t @@v1@@ ; const void * v2 ; char @@v3@@ ; char @@v4@@ ; char @@v5@@ ; char @@v6@@ ; @@v6@@ = Number ; @@v5@@ = * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) & Number ; @@v4@@ = * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) & Number ; @@v3@@ = * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) & Number ; result = * ( ( unsigned __int8 * ) & uip_aligned_buf + Number ) ; if ( ( _BYTE ) result != Number ) goto LABEL_44 ; result = * ( ( unsigned __int8 * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) ; if ( ( _BYTE ) result ) goto LABEL_44 ; result = * ( ( unsigned __int8 * ) & unk_422784 + ( unsigned __int8 ) uip_ext_len + Number ) ; if ( ( _BYTE ) result == Number ) goto LABEL_44 ; if ( @@v4@@ ) { result = byte_422798 [ Number ] ; if ( byte_422798 [ Number ] == Number ) goto LABEL_44 ; } nd6_opt_offset = Number ; nd6_opt_llao = Number L ; while ( ( unsigned __int8 ) nd6_opt_offset + ( unsigned __int8 ) uip_ext_len + Number < ( unsigned __int16 ) uip_len ) { result = * ( ( unsigned __int8 * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + ( unsigned __int8 ) nd6_opt_offset + Number ) ; if ( ! ( _BYTE ) result ) goto LABEL_44 ; if ( * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + ( unsigned __int8 ) nd6_opt_offset + Number ) == Number ) nd6_opt_llao = ( unsigned __int8 ) uip_ext_len + Number + ( unsigned __int8 ) nd6_opt_offset + Number L ; nd6_opt_offset += Number * * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + ( unsigned __int8 ) nd6_opt_offset + Number ) ; } addr = uip_ds6_addr_lookup ( ( unsigned __int8 ) uip_ext_len + Number + Number L ) ; result = addr ; if ( addr ) goto LABEL_44 ; nbr = uip_ds6_nbr_lookup ( ( unsigned __int8 ) uip_ext_len + Number + Number L ) ; result = nbr ; if ( ! nbr ) goto LABEL_44 ; if ( nd6_opt_llao ) @@v6@@ = memcmp ( ( const void * ) ( nd6_opt_llao + Number ) , ( const void * ) ( nbr + Number ) , Number ) ; if ( * ( _BYTE * ) ( nbr + Number ) ) { if ( ! @@v3@@ && @@v6@@ ) { result = * ( unsigned __int8 * ) ( nbr + Number ) ; if ( ( _BYTE ) result == Number ) { result = nbr ; * ( _BYTE * ) ( nbr + Number ) = Number ; } goto LABEL_44 ; } if ( @@v3@@ || nd6_opt_llao && ! @@v6@@ || ! nd6_opt_llao ) { if ( nd6_opt_llao ) * ( _QWORD * ) ( nbr + Number ) = * ( _QWORD * ) ( nd6_opt_llao + Number ) ; if ( @@v4@@ ) { * ( _BYTE * ) ( nbr + Number ) = Number ; stimer_set ( nbr + Number , dword_422C4C / Number ) ; } else if ( nd6_opt_llao && @@v6@@ ) { * ( _BYTE * ) ( nbr + Number ) = Number ; } } if ( * ( _BYTE * ) ( nbr + Number ) ) { if ( ! @@v5@@ ) { defrt = uip_ds6_defrt_lookup ( byte_422788 ) ; if ( defrt ) uip_ds6_defrt_rm ( defrt ) ; } } * ( _BYTE * ) ( nbr + Number ) = @@v5@@ ; } else { result = nd6_opt_llao ; if ( ! nd6_opt_llao ) goto LABEL_44 ; * ( _QWORD * ) ( nbr + Number ) = * ( _QWORD * ) ( nd6_opt_llao + Number ) ; if ( @@v4@@ ) { * ( _BYTE * ) ( nbr + Number ) = Number ; * ( _BYTE * ) ( nbr + Number ) = Number ; stimer_set ( nbr + Number , dword_422C4C / Number ) ; } else { * ( _BYTE * ) ( nbr + Number ) = Number ; } * ( _BYTE * ) ( nbr + Number ) = @@v5@@ ; } result = uip_packetqueue_buflen ( nbr + Number ) ; if ( ( _WORD ) result ) { uip_len = uip_packetqueue_buflen ( nbr + Number ) ; @@v1@@ = ( unsigned __int16 ) uip_len ; v2 = ( const void * ) uip_packetqueue_buf ( nbr + Number ) ; memcpy ( & uip_aligned_buf , v2 , @@v1@@ ) ; return uip_packetqueue_free ( nbr + Number ) ; } LABEL_44 : uip_len = Number ; return result ; }", "source": [{"n": "v1", "t": {"T": 1, "n": "size_t", "s": 8}, "location": "r32"}, {"n": "v6", "t": {"T": 1, "n": "char", "s": 1}, "location": "s17"}, {"n": "v5", "t": {"T": 1, "n": "char", "s": 1}, "location": "s18"}, {"n": "v4", "t": {"T": 1, "n": "char", "s": 1}, "location": "s19"}, {"n": "v3", "t": {"T": 1, "n": "char", "s": 1}, "location": "s20"}]} {"name": "uip_ds6_periodic", "code": "__int64 uip_ds6_periodic ( ) { int @@v0@@ ; for ( locaddr = ( __int64 ) & unk_422C58 ; locaddr < ( unsigned __int64 ) & unk_422CD0 ; locaddr += Number L ) { if ( * ( _BYTE * ) locaddr && ! * ( _BYTE * ) ( locaddr + Number ) && ( unsigned int ) stimer_expired ( locaddr + Number ) ) uip_ds6_addr_rm ( locaddr ) ; } uip_ds6_defrt_periodic ( ) ; for ( locnbr = ( __int64 ) & uip_ds6_nbr_cache ; locnbr < ( unsigned __int64 ) & contiki_argv ; locnbr += Number L ) { if ( ! * ( _BYTE * ) locnbr ) continue ; @@v0@@ = * ( unsigned __int8 * ) ( locnbr + Number ) ; if ( @@v0@@ == Number ) { if ( * ( _BYTE * ) ( locnbr + Number ) > Number ) { locdefrt = uip_ds6_defrt_lookup ( locnbr + Number ) ; if ( locdefrt && ! * ( _BYTE * ) ( locdefrt + Number ) ) uip_ds6_defrt_rm ( locdefrt ) ; LABEL_17 : uip_ds6_nbr_rm ( locnbr ) ; continue ; } if ( ( unsigned int ) stimer_expired ( locnbr + Number ) && ! uip_len ) { ++ * ( _BYTE * ) ( locnbr + Number ) ; uip_nd6_ns_output ( Number L , ( _QWORD * ) ( locnbr + Number ) , locnbr + Number ) ; stimer_set ( locnbr + Number , dword_422C50 / Number ) ; } } else { if ( * ( unsigned __int8 * ) ( locnbr + Number ) > Number ) continue ; if ( @@v0@@ == Number ) { if ( ( unsigned int ) stimer_expired ( locnbr + Number ) ) { * ( _BYTE * ) ( locnbr + Number ) = Number ; * ( _BYTE * ) ( locnbr + Number ) = Number ; stimer_set ( locnbr + Number , Number L ) ; } } else if ( * ( _BYTE * ) ( locnbr + Number ) ) { if ( @@v0@@ == Number && ( unsigned int ) stimer_expired ( locnbr + Number ) ) * ( _BYTE * ) ( locnbr + Number ) = Number ; } else { if ( * ( _BYTE * ) ( locnbr + Number ) > Number ) goto LABEL_17 ; if ( ( unsigned int ) stimer_expired ( locnbr + Number ) && ! uip_len ) { ++ * ( _BYTE * ) ( locnbr + Number ) ; uip_nd6_ns_output ( Number L , Number L , locnbr + Number ) ; stimer_set ( locnbr + Number , dword_422C50 / Number ) ; } } } } return etimer_reset ( ( __int64 ) & uip_ds6_timer_periodic ) ; }", "source": [{"n": "v0", "t": {"T": 1, "n": "int", "s": 4}, "location": "r8"}]} {"name": "uip_ds6_nbr_add", "code": "__int64 __fastcall uip_ds6_nbr_add ( _QWORD * @@a1@@ , _QWORD * @@a2@@ , unsigned __int8 @@a3@@ , unsigned __int8 @@a4@@ ) { __int64 v4 ; __int64 v5 ; __int64 @@v6@@ ; __int64 @@result@@ ; int @@v10@@ ; unsigned __int64 @@v11@@ ; __int64 * @@v12@@ ; __int64 * @@i@@ ; @@v10@@ = ( unsigned __int8 ) uip_ds6_list_loop ( uip_ds6_nbr_cache , Number , Number , @@a1@@ , Number , & locnbr ) ; if ( @@v10@@ == Number ) { * ( _BYTE * ) locnbr = Number ; v4 = locnbr ; v5 = @@a1@@ [ Number ] ; * ( _QWORD * ) ( locnbr + Number ) = * @@a1@@ ; * ( _QWORD * ) ( v4 + Number ) = v5 ; if ( @@a2@@ ) * ( _QWORD * ) ( locnbr + Number ) = * @@a2@@ ; else memset ( ( void * ) ( locnbr + Number ) , Number , Number ) ; * ( _BYTE * ) ( locnbr + Number ) = @@a3@@ ; * ( _BYTE * ) ( locnbr + Number ) = @@a4@@ ; uip_packetqueue_new ( ( _QWORD * ) ( locnbr + Number ) ) ; stimer_set ( locnbr + Number , Number L ) ; stimer_set ( locnbr + Number , Number L ) ; * ( _BYTE * ) ( locnbr + Number ) = Number ; rpl_ipv6_neighbor_callback ( locnbr ) ; @@v6@@ = locnbr ; * ( _QWORD * ) ( @@v6@@ + Number ) = clock_time ( ) ; @@result@@ = locnbr ; } else { if ( @@v10@@ != Number ) goto LABEL_16 ; @@v12@@ = Number L ; @@v11@@ = clock_time ( ) ; for ( @@i@@ = ( __int64 * ) uip_ds6_nbr_cache ; @@i@@ < & contiki_argv ; @@i@@ += Number ) { if ( * ( _BYTE * ) @@i@@ && ! uip_ds6_defrt_lookup ( ( char * ) @@i@@ + Number ) && @@v11@@ > @@i@@ [ Number ] ) { @@v12@@ = @@i@@ ; @@v11@@ = @@i@@ [ Number ] ; } } if ( @@v12@@ ) { uip_ds6_nbr_rm ( @@v12@@ ) ; @@result@@ = uip_ds6_nbr_add ( @@a1@@ , @@a2@@ , @@a3@@ , @@a4@@ ) ; } else { LABEL_16 : @@result@@ = Number L ; } } return @@result@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "unsigned __int8", "s": 1}, "location": "r16"}, {"n": "a4", "t": {"T": 1, "n": "unsigned __int8", "s": 1}, "location": "r24"}, {"n": "v6", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r32"}, {"n": "a1", "t": {"T": 3, "t": "_QWORD"}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "_QWORD"}, "location": "r64"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "i", "t": {"T": 3, "t": "__int64"}, "location": "s24"}, {"n": "v12", "t": {"T": 3, "t": "__int64"}, "location": "s32"}, {"n": "v11", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s40"}, {"n": "v10", "t": {"T": 1, "n": "int", "s": 4}, "location": "s44"}]} {"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": "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_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"}]}