{"name": "dao_ack_output", "code": "__int64 __fastcall dao_ack_output ( __int64 @@a1@@ , _QWORD * @@a2@@ , char @@a3@@ ) { _BYTE * @@v4@@ ; @@v4@@ = ( _BYTE * ) ( ( unsigned __int8 ) uip_ext_len + Number + Number L ) ; * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) = * ( _BYTE * ) ( @@a1@@ + Number ) ; @@v4@@ [ Number ] = Number ; @@v4@@ [ Number ] = @@a3@@ ; @@v4@@ [ Number ] = Number ; return uip_icmp6_send ( @@a2@@ , Number , Number , Number ) ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "char", "s": 1}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "_QWORD"}, "location": "r64"}, {"n": "v4", "t": {"T": 3, "t": "_BYTE"}, "location": "s8"}]}
{"name": "uip_icmp6_send", "code": "__int64 __fastcall uip_icmp6_send ( _QWORD * @@a1@@ , char @@a2@@ , char @@a3@@ , __int16 @@a4@@ ) { __int64 v4 ; uip_aligned_buf = Number ; * ( ( _BYTE * ) & uip_aligned_buf + Number ) = Number ; * ( ( _BYTE * ) & uip_aligned_buf + Number ) = byte_422C44 ; * ( ( _BYTE * ) & uip_aligned_buf + Number ) = ( unsigned __int16 ) ( @@a4@@ + Number ) >> Number ; * ( ( _BYTE * ) & uip_aligned_buf + Number ) = @@a4@@ + Number ; v4 = @@a1@@ [ Number ] ; unk_422798 = * @@a1@@ ; * ( ( _QWORD * ) & unk_422798 + Number ) = v4 ; uip_ds6_select_src ( byte_422788 , & unk_422798 ) ; * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) = @@a2@@ ; * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) = @@a3@@ ; * ( _WORD * ) ( ( char * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) = Number ; * ( _WORD * ) ( ( char * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) = ~ ( unsigned __int16 ) uip_icmp6chksum ( ) ; uip_len = @@a4@@ + Number ; return tcpip_ipv6_output ( ) ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "char", "s": 1}, "location": "r16"}, {"n": "a4", "t": {"T": 1, "n": "__int16", "s": 2}, "location": "r24"}, {"n": "a1", "t": {"T": 3, "t": "_QWORD"}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "char", "s": 1}, "location": "r64"}]} {"name": "dao_input", "code": "int dao_input ( ) { __int64 @@v0@@ ; __int64 v1 ; int v2 ; int v3 ; int v4 ; int v5 ; _QWORD @@s@@ [ Number ] ; __int64 @@v8@@ [ Number ] ; char @@v9@@ ; char @@v10@@ ; char @@v11@@ ; _QWORD * @@v12@@ ; int @@v13@@ ; __int64 @@v14@@ ; void * @@s1@@ ; __int16 @@v16@@ ; unsigned __int8 @@v17@@ ; __int64 @@v18@@ ; char @@v19@@ ; unsigned __int8 @@v20@@ ; __int64 @@v21@@ ; int @@i@@ ; int @@v23@@ ; int @@v24@@ ; unsigned __int8 @@v25@@ ; unsigned __int8 @@v26@@ ; @@v25@@ = Number ; @@v0@@ = * ( _QWORD * ) & byte_422788 [ Number ] ; @@v8@@ [ Number ] = * ( _QWORD * ) byte_422788 ; @@v8@@ [ Number ] = @@v0@@ ; @@v21@@ = ( unsigned __int8 ) uip_ext_len + Number + Number L ; @@v20@@ = uip_len - uip_ext_len - Number ; @@v24@@ = Number ; @@v19@@ = * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) ; v1 = rpl_get_instance ( @@v19@@ ) ; @@v18@@ = v1 ; if ( v1 ) { @@v26@@ = * ( _BYTE * ) ( @@v18@@ + Number ) ; v2 = @@v24@@ ++ ; @@v17@@ = * ( _BYTE * ) ( v2 + @@v21@@ ) ; v3 = @@v24@@ + Number ; @@v24@@ += Number ; @@v16@@ = * ( unsigned __int8 * ) ( v3 + @@v21@@ ) ; @@s1@@ = * ( void * * ) ( @@v18@@ + Number ) ; if ( ( @@v17@@ & Number ) != Number ) { LODWORD ( v1 ) = memcmp ( @@s1@@ , ( const void * ) ( @@v24@@ + @@v21@@ ) , Number ) ; if ( ( _DWORD ) v1 ) return v1 ; @@v24@@ += Number ; } for ( @@i@@ = @@v24@@ ; @@i@@ < @@v20@@ ; @@i@@ += @@v23@@ ) { @@v11@@ = * ( _BYTE * ) ( @@i@@ + @@v21@@ ) ; if ( @@v11@@ ) @@v23@@ = * ( unsigned __int8 * ) ( @@i@@ + Number L + @@v21@@ ) + Number ; else @@v23@@ = Number ; if ( @@v11@@ == Number ) { @@v25@@ = * ( _BYTE * ) ( @@i@@ + Number L + @@v21@@ ) ; memset ( @@s@@ , Number , sizeof ( @@s@@ ) ) ; v4 = @@v25@@ + Number ; if ( v4 < Number ) v4 = @@v25@@ + Number ; memcpy ( @@s@@ , ( const void * ) ( @@v21@@ + @@i@@ + Number L ) , v4 >> Number ) ; } else if ( @@v11@@ == Number ) { @@v10@@ = * ( _BYTE * ) ( @@i@@ + Number L + @@v21@@ ) ; @@v9@@ = * ( _BYTE * ) ( @@i@@ + Number L + @@v21@@ ) ; @@v26@@ = * ( _BYTE * ) ( @@i@@ + Number L + @@v21@@ ) ; } } v1 = uip_ds6_route_lookup ( @@s@@ ) ; @@v14@@ = v1 ; if ( @@v26@@ ) { if ( LOBYTE ( @@v8@@ [ Number ] ) == Number ) v5 = Number ; else v5 = Number ; @@v13@@ = v5 ; if ( v5 == Number && ( @@v12@@ = rpl_find_parent ( ( __int64 ) @@s1@@ , @@v8@@ ) ) != Number L && ( unsigned __int16 ) ( * ( ( _WORD * ) @@v12@@ + Number ) / * ( _WORD * ) ( @@v18@@ + Number ) ) < ( unsigned __int16 ) ( * ( ( _WORD * ) @@s1@@ + Number ) / * ( _WORD * ) ( @@v18@@ + Number ) ) ) { * ( ( _WORD * ) @@v12@@ + Number ) = Number ; LODWORD ( v1 ) = ( _DWORD ) @@v12@@ ; * ( ( _BYTE * ) @@v12@@ + Number ) = Number ; } else { v1 = rpl_add_route ( ( __int64 ) @@s1@@ , @@s@@ , @@v25@@ , @@v8@@ ) ; @@v14@@ = v1 ; if ( v1 ) { * ( _DWORD * ) ( @@v14@@ + Number ) = @@v26@@ * * ( unsigned __int16 * ) ( @@v18@@ + Number ) ; LODWORD ( v1 ) = @@v14@@ ; * ( _BYTE * ) ( @@v14@@ + Number ) = @@v13@@ ; if ( @@v13@@ == Number ) { if ( * ( ( _QWORD * ) @@s1@@ + Number ) ) uip_icmp6_send ( ( _QWORD * ) ( * ( ( _QWORD * ) @@s1@@ + Number ) + Number L ) , Number , Number , @@v20@@ ) ; LODWORD ( v1 ) = @@v17@@ ; if ( ( @@v17@@ & Number ) != Number ) LODWORD ( v1 ) = dao_ack_output ( @@v18@@ , @@v8@@ , ( unsigned __int8 ) @@v16@@ ) ; } } } } else if ( @@v14@@ ) { LODWORD ( v1 ) = * ( _DWORD * ) ( @@v14@@ + Number ) ; if ( ! ( _DWORD ) v1 ) { LODWORD ( v1 ) = * ( unsigned __int8 * ) ( @@v14@@ + Number ) ; if ( @@v25@@ == ( _BYTE ) v1 ) { * ( _DWORD * ) ( @@v14@@ + Number ) = * ( _DWORD * ) ( @@v14@@ + Number ) ; LODWORD ( v1 ) = @@v14@@ ; * ( _DWORD * ) ( @@v14@@ + Number ) = Number ; } } } } return v1 ; }", "source": [{"n": "v0", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "v26", "t": {"T": 1, "n": "unsigned __int8", "s": 1}, "location": "s1"}, {"n": "v8", "t": {"T": 2, "n": 3, "s": 8, "t": "__int64"}, "location": "s112"}, {"n": "v23", "t": {"T": 1, "n": "int", "s": 4}, "location": "s12"}, {"n": "s", "t": {"T": 2, "n": 2, "s": 8, "t": "_QWORD"}, "location": "s128"}, {"n": "i", "t": {"T": 1, "n": "int", "s": 4}, "location": "s16"}, {"n": "v25", "t": {"T": 1, "n": "unsigned __int8", "s": 1}, "location": "s2"}, {"n": "v21", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s24"}, {"n": "v20", "t": {"T": 1, "n": "unsigned __int8", "s": 1}, "location": "s25"}, {"n": "v19", "t": {"T": 1, "n": "char", "s": 1}, "location": "s26"}, {"n": "v18", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s40"}, {"n": "v17", "t": {"T": 1, "n": "unsigned __int8", "s": 1}, "location": "s41"}, {"n": "v16", "t": {"T": 1, "n": "__int16", "s": 2}, "location": "s44"}, {"n": "s1", "t": {"T": 3, "t": "void"}, "location": "s56"}, {"n": "v14", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s64"}, {"n": "v13", "t": {"T": 1, "n": "int", "s": 4}, "location": "s68"}, {"n": "v24", "t": {"T": 1, "n": "int", "s": 4}, "location": "s8"}, {"n": "v12", "t": {"T": 3, "t": "_QWORD"}, "location": "s80"}, {"n": "v11", "t": {"T": 1, "n": "char", "s": 1}, "location": "s81"}, {"n": "v10", "t": {"T": 1, "n": "char", "s": 1}, "location": "s82"}, {"n": "v9", "t": {"T": 1, "n": "char", "s": 1}, "location": "s83"}]} {"name": "output", "code": "__int64 __fastcall output ( __int64 @@a1@@ ) { char @@v2@@ [ Number ] ; __int64 * @@v3@@ ; unsigned __int16 @@v4@@ ; uncomp_hdr_len = Number ; rime_hdr_len = Number ; packetbuf_clear ( ) ; rime_ptr = packetbuf_dataptr ( ) ; packetbuf_set_attr ( Number , Number ) ; if ( callback ) set_packet_attrs ( ) ; if ( * ( ( _BYTE * ) & uip_aligned_buf + Number ) != Number || ( * ( ( _BYTE * ) & dword_4227A8 + Number ) & Number ) != Number || ( * ( ( _BYTE * ) & dword_4227A8 + Number ) & Number ) == Number ) { if ( * ( ( _BYTE * ) & uip_aligned_buf + Number ) == Number && ( * ( ( _BYTE * ) & dword_4227A8 + Number ) & Number ) != Number ) packetbuf_set_attr ( Number , Number ) ; } else { packetbuf_set_attr ( Number , Number ) ; } if ( @@a1@@ ) rimeaddr_copy ( ( __int64 ) @@v2@@ , @@a1@@ ) ; else rimeaddr_copy ( ( __int64 ) @@v2@@ , ( __int64 ) & rimeaddr_null ) ; compress_hdr_hc06 ( @@v2@@ ) ; if ( ( unsigned __int16 ) uip_len - ( unsigned __int8 ) uncomp_hdr_len <= Number - ( unsigned __int8 ) rime_hdr_len ) { memcpy ( ( char * ) rime_ptr + ( unsigned __int8 ) rime_hdr_len , ( char * ) & uip_aligned_buf + ( unsigned __int8 ) uncomp_hdr_len , ( unsigned __int16 ) uip_len - ( unsigned __int8 ) uncomp_hdr_len ) ; packetbuf_set_datalen ( uip_len - ( unsigned __int8 ) uncomp_hdr_len + ( unsigned __int8 ) rime_hdr_len ) ; send_packet_1 ( ( __int64 ) @@v2@@ ) ; } else { memmove ( ( char * ) rime_ptr + Number , rime_ptr , ( unsigned __int8 ) rime_hdr_len ) ; * ( _BYTE * ) rime_ptr = HIBYTE ( uip_len ) | Number ; * ( ( _BYTE * ) rime_ptr + Number ) = uip_len ; * ( ( _BYTE * ) rime_ptr + Number ) = HIBYTE ( my_tag ) ; * ( ( _BYTE * ) rime_ptr + Number ) = my_tag ++ ; rime_hdr_len += Number ; rime_payload_len = ( Number - rime_hdr_len ) & Number ; memcpy ( ( char * ) rime_ptr + ( unsigned __int8 ) rime_hdr_len , ( char * ) & uip_aligned_buf + ( unsigned __int8 ) uncomp_hdr_len , ( Number - rime_hdr_len ) & Number ) ; packetbuf_set_datalen ( ( unsigned __int8 ) rime_payload_len + ( unsigned __int8 ) rime_hdr_len ) ; @@v3@@ = ( __int64 * ) queuebuf_new_from_packetbuf ( ) ; if ( ! @@v3@@ ) return Number L ; send_packet_1 ( ( __int64 ) @@v2@@ ) ; queuebuf_to_packetbuf ( ( unsigned __int64 ) @@v3@@ ) ; queuebuf_free ( @@v3@@ ) ; @@v3@@ = Number L ; if ( last_tx_status == Number || last_tx_status == Number || last_tx_status == Number ) return Number L ; @@v4@@ = ( unsigned __int8 ) rime_payload_len + ( unsigned __int8 ) uncomp_hdr_len ; rime_hdr_len = Number ; * ( _BYTE * ) rime_ptr = HIBYTE ( uip_len ) | Number ; * ( ( _BYTE * ) rime_ptr + Number ) = uip_len ; rime_payload_len = ( Number - rime_hdr_len ) & Number ; while ( @@v4@@ < ( unsigned __int16 ) uip_len ) { * ( ( _BYTE * ) rime_ptr + Number ) = @@v4@@ >> Number ; if ( ( unsigned __int16 ) uip_len - @@v4@@ < ( unsigned __int8 ) rime_payload_len ) rime_payload_len = uip_len - @@v4@@ ; memcpy ( ( char * ) rime_ptr + ( unsigned __int8 ) rime_hdr_len , ( char * ) & uip_aligned_buf + @@v4@@ , ( unsigned __int8 ) rime_payload_len ) ; packetbuf_set_datalen ( ( unsigned __int8 ) rime_payload_len + ( unsigned __int8 ) rime_hdr_len ) ; @@v3@@ = ( __int64 * ) queuebuf_new_from_packetbuf ( ) ; if ( ! @@v3@@ ) return Number L ; send_packet_1 ( ( __int64 ) @@v2@@ ) ; queuebuf_to_packetbuf ( ( unsigned __int64 ) @@v3@@ ) ; queuebuf_free ( @@v3@@ ) ; @@v3@@ = Number L ; @@v4@@ += ( unsigned __int8 ) rime_payload_len ; if ( last_tx_status == Number || last_tx_status == Number || last_tx_status == Number ) return Number L ; } } return Number L ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "v3", "t": {"T": 3, "t": "__int64"}, "location": "s16"}, {"n": "v4", "t": {"T": 1, "n": "unsigned __int16", "s": 2}, "location": "s2"}, {"n": "v2", "t": {"T": 2, "n": 8, "s": 1, "t": "char"}, "location": "s24"}]} {"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"}]}