{"name": "rpl_invert_header", "code": "__int64 rpl_invert_header ( ) { __int64 @@result@@ ; char @@v1@@ ; @@v1@@ = uip_ext_len ; uip_ext_len = Number ; if ( * ( ( _BYTE * ) & uip_aligned_buf + Number ) ) { uip_ext_len = @@v1@@ ; @@result@@ = Number L ; } else if ( * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) == Number ) { * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) &= Number ; * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) ^= Number ; * ( _WORD * ) ( ( char * ) & unk_422784 + ( unsigned __int8 ) uip_ext_len + Number ) = * ( _WORD * ) ( * ( _QWORD * ) ( rpl_get_instance ( * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) ) + Number ) + Number L ) ; uip_ext_len = @@v1@@ ; @@result@@ = Number L ; } else { uip_ext_len = @@v1@@ ; @@result@@ = Number L ; } return @@result@@ ; }", "source": [{"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "v1", "t": {"T": 1, "n": "char", "s": 1}, "location": "s1"}]}
{"name": "uip_icmp6_echo_request_input", "code": "__int64 uip_icmp6_echo_request_input ( ) { __int64 v0 ; __int64 v1 ; __int64 @@result@@ ; unsigned __int8 @@v3@@ ; * ( ( _BYTE * ) & uip_aligned_buf + Number ) = byte_422C44 ; v0 = * ( _QWORD * ) & byte_422788 [ Number ] ; if ( unk_422798 == Number ) { unk_422798 = * ( _QWORD * ) byte_422788 ; * ( ( _QWORD * ) & unk_422798 + Number ) = v0 ; uip_ds6_select_src ( byte_422788 , & unk_422798 ) ; } else { tmp_ipaddr = * ( _QWORD * ) byte_422788 ; qword_41F748 = v0 ; v1 = * ( ( _QWORD * ) & unk_422798 + Number ) ; * ( _QWORD * ) byte_422788 = unk_422798 ; * ( _QWORD * ) & byte_422788 [ Number ] = v1 ; unk_422798 = tmp_ipaddr ; * ( ( _QWORD * ) & unk_422798 + Number ) = qword_41F748 ; } if ( uip_ext_len ) { @@v3@@ = rpl_invert_header ( ) ; if ( @@v3@@ ) { LOBYTE ( dword_4227A8 ) = Number ; if ( @@v3@@ != uip_ext_len ) { uip_len += @@v3@@ - ( unsigned __int8 ) uip_ext_len ; * ( ( _BYTE * ) & uip_aligned_buf + Number ) = ( unsigned __int16 ) ( uip_len - Number ) >> Number ; * ( ( _BYTE * ) & uip_aligned_buf + Number ) = uip_len - Number ; memmove ( ( char * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number L - ( ( unsigned __int8 ) uip_ext_len - @@v3@@ ) + Number , ( const void * ) ( ( unsigned __int8 ) uip_ext_len + Number + Number L ) , ( unsigned __int16 ) uip_len - Number - @@v3@@ - Number ) ; } uip_ext_len = @@v3@@ ; } else { * ( ( _BYTE * ) & uip_aligned_buf + Number ) = Number ; uip_len -= ( unsigned __int8 ) uip_ext_len ; * ( ( _BYTE * ) & uip_aligned_buf + Number ) = ( unsigned __int16 ) ( uip_len - Number ) >> Number ; * ( ( _BYTE * ) & uip_aligned_buf + Number ) = uip_len - Number ; memmove ( ( char * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number L - ( unsigned __int8 ) uip_ext_len + Number , ( const void * ) ( ( unsigned __int8 ) uip_ext_len + Number + Number L ) , ( unsigned __int16 ) uip_len - Number ) ; uip_ext_len = Number ; } } * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) = Number ; * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) = Number ; * ( _WORD * ) ( ( char * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) = Number ; @@result@@ = ( unsigned int ) ~ uip_icmp6chksum ( ) ; * ( _WORD * ) ( ( char * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) = @@result@@ ; return @@result@@ ; }", "source": [{"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "v3", "t": {"T": 1, "n": "unsigned __int8", "s": 1}, "location": "s1"}]} {"name": "uip_icmp6_error_output", "code": "__int64 __fastcall uip_icmp6_error_output ( char @@a1@@ , char @@a2@@ , int @@a3@@ ) { __int64 @@result@@ ; __int64 v4 ; __int64 v5 ; _DWORD * @@v6@@ ; if ( uip_ext_len ) { if ( * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) == Number ) { @@result@@ = * ( ( unsigned __int8 * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) ; if ( ( @@result@@ & Number ) == Number L ) { uip_len = Number ; return @@result@@ ; } } } else if ( * ( ( _BYTE * ) & uip_aligned_buf + Number ) == Number ) { @@result@@ = * ( ( unsigned __int8 * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) ; if ( ( @@result@@ & Number ) == Number L ) { uip_len = Number ; return @@result@@ ; } } uip_ext_len = rpl_invert_header ( ) ; v4 = * ( ( _QWORD * ) & unk_422798 + Number ) ; tmp_ipaddr = unk_422798 ; qword_41F748 = v4 ; uip_len += Number ; if ( ( unsigned __int16 ) uip_len > Number ) uip_len = Number ; memmove ( ( char * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + ( unsigned __int8 ) uip_ext_len + Number , & uip_aligned_buf , ( unsigned __int16 ) uip_len - Number - ( unsigned __int8 ) uip_ext_len - Number ) ; uip_aligned_buf = Number ; if ( uip_ext_len ) LOBYTE ( dword_4227A8 ) = Number ; else * ( ( _BYTE * ) & uip_aligned_buf + Number ) = Number ; * ( ( _BYTE * ) & uip_aligned_buf + Number ) = byte_422C44 ; if ( * ( _WORD * ) byte_422788 || * ( _WORD * ) & byte_422788 [ Number ] || * ( _WORD * ) & byte_422788 [ Number ] || * ( _WORD * ) & byte_422788 [ Number ] || * ( _WORD * ) & byte_422788 [ Number ] || * ( _WORD * ) & byte_422788 [ Number ] || * ( _WORD * ) & byte_422788 [ Number ] || ( @@result@@ = * ( unsigned __int16 * ) & byte_422788 [ Number ] , ( _WORD ) @@result@@ ) ) { v5 = * ( _QWORD * ) & byte_422788 [ Number ] ; unk_422798 = * ( _QWORD * ) byte_422788 ; * ( ( _QWORD * ) & unk_422798 + Number ) = v5 ; @@result@@ = ( unsigned __int8 ) tmp_ipaddr ; if ( ( _BYTE ) tmp_ipaddr != Number || @@a1@@ == Number && @@a2@@ == Number ) { uip_ds6_select_src ( byte_422788 , & tmp_ipaddr ) ; * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) = @@a1@@ ; * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) = @@a2@@ ; @@v6@@ = ( int * ) ( ( char * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) ; * @@v6@@ = uip_htonl ( @@a3@@ ) ; * ( ( _BYTE * ) & uip_aligned_buf + Number ) = ( unsigned __int16 ) ( uip_len - Number ) >> Number ; * ( ( _BYTE * ) & uip_aligned_buf + Number ) = uip_len - Number ; * ( _WORD * ) ( ( char * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) = Number ; @@result@@ = ( unsigned int ) ~ uip_icmp6chksum ( ) ; * ( _WORD * ) ( ( char * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) = @@result@@ ; } else { uip_len = Number ; } } else { uip_len = Number ; } return @@result@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "int", "s": 4}, "location": "r16"}, {"n": "v6", "t": {"T": 3, "t": "_DWORD"}, "location": "r32"}, {"n": "a1", "t": {"T": 1, "n": "char", "s": 1}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "char", "s": 1}, "location": "r64"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}]} {"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"}]}