{"name": "rpl_update_header_final", "code": "__int64 __fastcall rpl_update_header_final ( const void * @@a1@@ ) { _QWORD * @@v2@@ ; char @@v3@@ ; @@v3@@ = uip_ext_len ; uip_ext_len = Number ; if ( ! * ( ( _BYTE * ) & uip_aligned_buf + Number ) ) { if ( * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) ) { uip_ext_len = @@v3@@ ; return Number L ; } if ( * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) == Number && ! * ( _WORD * ) ( ( char * ) & unk_422784 + ( unsigned __int8 ) uip_ext_len + Number ) ) { if ( ! default_instance || ! * ( _BYTE * ) ( default_instance + Number ) || ! * ( _BYTE * ) ( * ( _QWORD * ) ( default_instance + Number ) + Number L ) ) { return Number L ; } @@v2@@ = rpl_find_parent ( * ( _QWORD * ) ( default_instance + Number ) , @@a1@@ ) ; if ( ! @@v2@@ || @@v2@@ != * ( _QWORD * * ) ( @@v2@@ [ Number ] + Number L ) ) * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) = Number ; * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) = * ( _BYTE * ) ( default_instance + Number ) ; * ( _WORD * ) ( ( char * ) & unk_422784 + ( unsigned __int8 ) uip_ext_len + Number ) = * ( _WORD * ) ( * ( _QWORD * ) ( default_instance + Number ) + Number L ) ; uip_ext_len = @@v3@@ ; } } return Number L ; }", "source": [{"n": "a1", "t": {"T": 3, "t": "const void"}, "location": "r56"}, {"n": "v2", "t": {"T": 3, "t": "_QWORD"}, "location": "s16"}, {"n": "v3", "t": {"T": 1, "n": "char", "s": 1}, "location": "s4"}]}
{"name": "tcpip_ipv6_output", "code": "__int64 tcpip_ipv6_output ( ) { __int64 result ; size_t v1 ; void * v2 ; size_t v3 ; void * v4 ; size_t v5 ; const void * @@v6@@ ; __int64 @@v7@@ ; __int64 v8 ; __int64 v9 ; void * @@v10@@ ; result = ( unsigned __int16 ) uip_len ; if ( uip_len ) { result = ( unsigned __int16 ) uip_len ; if ( ( unsigned __int16 ) uip_len > Number ) { uip_len = Number ; return result ; } if ( ! unk_422798 && ! * ( ( _WORD * ) & unk_422798 + Number ) && ! * ( ( _WORD * ) & unk_422798 + Number ) && ! * ( ( _WORD * ) & unk_422798 + Number ) && ! * ( ( _WORD * ) & unk_422798 + Number ) && ! * ( ( _WORD * ) & unk_422798 + Number ) && ! * ( ( _WORD * ) & unk_422798 + Number ) ) { result = * ( ( unsigned __int16 * ) & unk_422798 + Number ) ; if ( ! ( _WORD ) result ) { uip_len = Number ; return result ; } } if ( unk_422798 == Number ) { LABEL_41 : result = tcpip_output ( Number L ) ; uip_len = Number ; uip_ext_len = Number ; return result ; } if ( ( unsigned __int8 ) uip_ds6_is_addr_onlink ( & unk_422798 ) ) { @@v10@@ = & unk_422798 ; result = rpl_update_header_final ( & unk_422798 ) ; } else { @@v7@@ = uip_ds6_route_lookup ( & unk_422798 ) ; if ( @@v7@@ ) { @@v10@@ = ( void * ) ( @@v7@@ + Number ) ; } else { result = uip_ds6_defrt_choose ( ) ; @@v10@@ = ( void * ) result ; if ( ! result ) { uip_len = Number ; return result ; } } result = rpl_update_header_final ( @@v10@@ ) ; } if ( ( _DWORD ) result ) { uip_len = Number ; return result ; } v8 = uip_ds6_nbr_lookup ( @@v10@@ ) ; if ( ! v8 ) { result = uip_ds6_nbr_add ( @@v10@@ , Number L , Number L , Number L ) ; v9 = result ; if ( ! result ) { uip_len = Number ; return result ; } if ( uip_packetqueue_alloc ( result + Number , Number L ) ) { v1 = ( unsigned __int16 ) uip_len ; v2 = ( void * ) uip_packetqueue_buf ( v9 + Number ) ; memcpy ( v2 , & uip_aligned_buf , v1 ) ; uip_packetqueue_set_buflen ( v9 + Number , ( unsigned __int16 ) uip_len ) ; } if ( uip_ds6_addr_lookup ( byte_422788 ) ) uip_nd6_ns_output ( byte_422788 , Number L , v9 + Number ) ; else uip_nd6_ns_output ( Number L , Number L , v9 + Number ) ; stimer_set ( v9 + Number , dword_422C50 / Number ) ; * ( _BYTE * ) ( v9 + Number ) = Number ; goto LABEL_41 ; } if ( * ( _BYTE * ) ( v8 + Number ) ) { if ( * ( _BYTE * ) ( v8 + Number ) == Number ) { * ( _BYTE * ) ( v8 + Number ) = Number ; stimer_set ( v8 + Number , Number L ) ; * ( _BYTE * ) ( v8 + Number ) = Number ; } tcpip_output ( v8 + Number ) ; result = uip_packetqueue_buflen ( v8 + Number ) ; if ( ( _WORD ) result ) { uip_len = uip_packetqueue_buflen ( v8 + Number ) ; v5 = ( unsigned __int16 ) uip_len ; @@v6@@ = ( const void * ) uip_packetqueue_buf ( v8 + Number ) ; memcpy ( & uip_aligned_buf , @@v6@@ , v5 ) ; uip_packetqueue_free ( v8 + Number ) ; result = tcpip_output ( v8 + Number ) ; } uip_len = Number ; } else { result = uip_packetqueue_alloc ( v8 + Number , Number L ) ; if ( result ) { v3 = ( unsigned __int16 ) uip_len ; v4 = ( void * ) uip_packetqueue_buf ( v8 + Number ) ; memcpy ( v4 , & uip_aligned_buf , v3 ) ; result = uip_packetqueue_set_buflen ( v8 + Number , ( unsigned __int16 ) uip_len ) ; } uip_len = Number ; } } return result ; }", "source": [{"n": "v6", "t": {"T": 3, "t": "const void"}, "location": "r64"}, {"n": "v10", "t": {"T": 3, "t": "void"}, "location": "s24"}, {"n": "v7", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s40"}]} {"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"}]}