{"name": "compress_addr_64", "code": "__int64 __fastcall compress_addr_64 ( char @@a1@@ , _BYTE * @@a2@@ , _BYTE * @@a3@@ ) { __int64 @@result@@ ; if ( @@a2@@ [ Number ] == ( * @@a3@@ ^ Number ) && @@a2@@ [ Number ] == @@a3@@ [ Number ] && @@a2@@ [ Number ] == @@a3@@ [ Number ] && @@a2@@ [ Number ] == @@a3@@ [ Number ] && @@a2@@ [ Number ] == @@a3@@ [ Number ] && @@a2@@ [ Number ] == @@a3@@ [ Number ] && @@a2@@ [ Number ] == @@a3@@ [ Number ] && @@a2@@ [ Number ] == @@a3@@ [ Number ] ) { return ( unsigned int ) ( Number << @@a1@@ ) ; } if ( * ( ( _WORD * ) @@a2@@ + Number ) || @@a2@@ [ Number ] || @@a2@@ [ Number ] != Number || @@a2@@ [ Number ] != Number || @@a2@@ [ Number ] ) { * ( _QWORD * ) hc06_ptr = * ( ( _QWORD * ) @@a2@@ + Number ) ; hc06_ptr = ( char * ) hc06_ptr + Number ; @@result@@ = ( unsigned int ) ( Number << @@a1@@ ) ; } else { * ( _WORD * ) hc06_ptr = * ( ( _WORD * ) @@a2@@ + Number ) ; hc06_ptr = ( char * ) hc06_ptr + Number ; @@result@@ = ( unsigned int ) ( Number << @@a1@@ ) ; } return @@result@@ ; }", "source": [{"n": "a3", "t": {"T": 3, "t": "_BYTE"}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "char", "s": 1}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "_BYTE"}, "location": "r64"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}]}
{"name": "compress_hdr_hc06", "code": "signed __int64 __fastcall compress_hdr_hc06 ( _BYTE * @@a1@@ ) { int v1 ; _QWORD * v2 ; __int64 v3 ; _QWORD * v4 ; __int64 v5 ; _QWORD * v6 ; __int64 v7 ; signed __int64 result ; unsigned __int8 v9 ; char v10 ; char @@v11@@ ; char @@v12@@ ; hc06_ptr = ( char * ) rime_ptr + Number ; @@v12@@ = Number ; @@v11@@ = Number ; * ( ( _BYTE * ) rime_ptr + ( unsigned __int8 ) rime_hdr_len + Number ) = Number ; if ( addr_context_lookup_by_prefix ( byte_422798 ) || addr_context_lookup_by_prefix ( byte_422788 ) ) { @@v11@@ = Number ; hc06_ptr = ( char * ) hc06_ptr + Number ; } v9 = ( Number * uip_aligned_buf ) | ( BYTE1 ( uip_aligned_buf ) >> Number ) ; v10 = ( v9 << Number ) | ( v9 >> Number ) ; if ( ( uip_aligned_buf & Number ) != Number || HIWORD ( uip_aligned_buf ) ) { if ( ( uip_aligned_buf & Number ) != Number || ( uip_aligned_buf & Number ) != Number ) { * ( _DWORD * ) hc06_ptr = uip_aligned_buf ; * ( _BYTE * ) hc06_ptr = v10 ; hc06_ptr = ( char * ) hc06_ptr + Number ; } else { @@v12@@ = Number ; * ( _BYTE * ) hc06_ptr = BYTE1 ( uip_aligned_buf ) & Number | v10 & Number ; * ( _WORD * ) ( ( char * ) hc06_ptr + Number ) = HIWORD ( uip_aligned_buf ) ; hc06_ptr = ( char * ) hc06_ptr + Number ; } } else { @@v12@@ = Number ; if ( ( uip_aligned_buf & Number ) != Number || ( uip_aligned_buf & Number ) != Number ) { * ( _BYTE * ) hc06_ptr = v10 ; hc06_ptr = ( char * ) hc06_ptr + Number ; } else { @@v12@@ = Number ; } } if ( * ( ( _BYTE * ) & uip_aligned_buf + Number ) == Number ) @@v12@@ |= Number ; if ( ( @@v12@@ & Number ) == Number ) { * ( _BYTE * ) hc06_ptr = * ( ( _BYTE * ) & uip_aligned_buf + Number ) ; hc06_ptr = ( char * ) hc06_ptr + Number ; } v1 = * ( ( unsigned __int8 * ) & uip_aligned_buf + Number ) ; switch ( v1 ) { case Number : @@v12@@ |= Number ; break ; case Number : @@v12@@ |= Number ; break ; case Number : @@v12@@ |= Number ; break ; default : * ( _BYTE * ) hc06_ptr = * ( ( _BYTE * ) & uip_aligned_buf + Number ) ; hc06_ptr = ( char * ) hc06_ptr + Number ; break ; } 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 ] || * ( _WORD * ) & byte_422788 [ Number ] ) { context = addr_context_lookup_by_prefix ( byte_422788 ) ; if ( context ) { * ( ( _BYTE * ) rime_ptr + ( unsigned __int8 ) rime_hdr_len + Number ) |= Number * * ( _BYTE * ) ( context + Number ) ; @@v11@@ |= compress_addr_64 ( Number , byte_422788 , & uip_lladdr ) | Number ; } else if ( byte_422788 [ Number ] != Number || byte_422788 [ Number ] != Number || * ( ( _WORD * ) & uip_aligned_buf + Number ) || * ( ( _WORD * ) & uip_aligned_buf + Number ) || * ( ( _WORD * ) & uip_aligned_buf + Number ) ) { v2 = hc06_ptr ; v3 = * ( _QWORD * ) & byte_422788 [ Number ] ; * ( _QWORD * ) hc06_ptr = * ( _QWORD * ) byte_422788 ; v2 [ Number ] = v3 ; hc06_ptr = ( char * ) hc06_ptr + Number ; } else { @@v11@@ |= compress_addr_64 ( Number , byte_422788 , & uip_lladdr ) ; } } else { @@v11@@ |= Number ; } if ( byte_422798 [ Number ] == Number ) { @@v11@@ |= Number ; if ( byte_422798 [ Number ] != Number || * ( _WORD * ) & byte_422798 [ Number ] || * ( _WORD * ) & byte_422798 [ Number ] || * ( _WORD * ) & byte_422798 [ Number ] || * ( _WORD * ) & byte_422798 [ Number ] || * ( _WORD * ) & byte_422798 [ Number ] || * ( _WORD * ) & byte_422798 [ Number ] || byte_422798 [ Number ] ) { if ( * ( _WORD * ) & byte_422798 [ Number ] || * ( _WORD * ) & byte_422798 [ Number ] || * ( _WORD * ) & byte_422798 [ Number ] || * ( _WORD * ) & byte_422798 [ Number ] || * ( _WORD * ) & byte_422798 [ Number ] || byte_422798 [ Number ] ) { if ( * ( _WORD * ) & byte_422798 [ Number ] || * ( _WORD * ) & byte_422798 [ Number ] || * ( _WORD * ) & byte_422798 [ Number ] || * ( _WORD * ) & byte_422798 [ Number ] || byte_422798 [ Number ] ) { v4 = hc06_ptr ; v5 = * ( _QWORD * ) & byte_422798 [ Number ] ; * ( _QWORD * ) hc06_ptr = * ( _QWORD * ) byte_422798 ; v4 [ Number ] = v5 ; hc06_ptr = ( char * ) hc06_ptr + Number ; } else { @@v11@@ |= Number ; * ( _BYTE * ) hc06_ptr = * ( ( _BYTE * ) & uip_aligned_buf + Number ) ; memcpy ( ( char * ) hc06_ptr + Number , & unk_4227A3 , Number ) ; hc06_ptr = ( char * ) hc06_ptr + Number ; } } else { @@v11@@ |= Number ; * ( _BYTE * ) hc06_ptr = * ( ( _BYTE * ) & uip_aligned_buf + Number ) ; memcpy ( ( char * ) hc06_ptr + Number , & unk_4227A5 , Number ) ; hc06_ptr = ( char * ) hc06_ptr + Number ; } } else { @@v11@@ |= Number ; * ( _BYTE * ) hc06_ptr = * ( ( _BYTE * ) & uip_aligned_buf + Number ) ; hc06_ptr = ( char * ) hc06_ptr + Number ; } } else { context = addr_context_lookup_by_prefix ( byte_422798 ) ; if ( context ) { * ( ( _BYTE * ) rime_ptr + ( unsigned __int8 ) rime_hdr_len + Number ) |= * ( _BYTE * ) ( context + Number ) ; @@v11@@ |= compress_addr_64 ( Number , byte_422798 , @@a1@@ ) | Number ; } else if ( byte_422798 [ Number ] != Number || byte_422798 [ Number ] != Number || * ( ( _WORD * ) & uip_aligned_buf + Number ) || * ( ( _WORD * ) & uip_aligned_buf + Number ) || * ( ( _WORD * ) & uip_aligned_buf + Number ) ) { v6 = hc06_ptr ; v7 = * ( _QWORD * ) & byte_422798 [ Number ] ; * ( _QWORD * ) hc06_ptr = * ( _QWORD * ) byte_422798 ; v6 [ Number ] = v7 ; hc06_ptr = ( char * ) hc06_ptr + Number ; } else { @@v11@@ |= compress_addr_64 ( Number , byte_422798 , @@a1@@ ) ; } } uncomp_hdr_len = Number ; if ( * ( ( _BYTE * ) & uip_aligned_buf + Number ) == Number ) { if ( ( ( ( unsigned __int16 ) ( ( _WORD ) dword_4227A8 << Number ) | BYTE1 ( dword_4227A8 ) ) & Number ) == Number && ( ( ( unsigned __int16 ) ( HIWORD ( dword_4227A8 ) << Number ) | HIBYTE ( HIWORD ( dword_4227A8 ) ) ) & Number ) == Number ) { * ( _BYTE * ) hc06_ptr = Number ; * ( ( _BYTE * ) hc06_ptr + Number ) = HIBYTE ( HIWORD ( dword_4227A8 ) ) + Number * ( BYTE1 ( dword_4227A8 ) + Number ) + Number ; hc06_ptr = ( char * ) hc06_ptr + Number ; } else if ( ( ( ( unsigned __int16 ) ( HIWORD ( dword_4227A8 ) << Number ) | HIBYTE ( HIWORD ( dword_4227A8 ) ) ) & Number ) == Number ) { * ( _BYTE * ) hc06_ptr = Number ; * ( _WORD * ) ( ( char * ) hc06_ptr + Number ) = dword_4227A8 ; * ( ( _BYTE * ) hc06_ptr + Number ) = HIBYTE ( HIWORD ( dword_4227A8 ) ) ; hc06_ptr = ( char * ) hc06_ptr + Number ; } else if ( ( ( ( unsigned __int16 ) ( ( _WORD ) dword_4227A8 << Number ) | BYTE1 ( dword_4227A8 ) ) & Number ) == Number ) { * ( _BYTE * ) hc06_ptr = Number ; * ( ( _BYTE * ) hc06_ptr + Number ) = BYTE1 ( dword_4227A8 ) ; * ( ( _WORD * ) hc06_ptr + Number ) = HIWORD ( dword_4227A8 ) ; hc06_ptr = ( char * ) hc06_ptr + Number ; } else { * ( _BYTE * ) hc06_ptr = Number ; * ( _DWORD * ) ( ( char * ) hc06_ptr + Number ) = dword_4227A8 ; hc06_ptr = ( char * ) hc06_ptr + Number ; } * ( _WORD * ) hc06_ptr = unk_4227AE ; hc06_ptr = ( char * ) hc06_ptr + Number ; uncomp_hdr_len += Number ; } * ( ( _BYTE * ) rime_ptr + ( unsigned __int8 ) rime_hdr_len ) = @@v12@@ ; * ( ( _BYTE * ) rime_ptr + ( unsigned __int8 ) rime_hdr_len + Number ) = @@v11@@ ; result = ( _BYTE * ) hc06_ptr - ( _BYTE * ) rime_ptr ; rime_hdr_len = ( _BYTE ) hc06_ptr - ( _BYTE ) rime_ptr ; return result ; }", "source": [{"n": "a1", "t": {"T": 3, "t": "_BYTE"}, "location": "r56"}, {"n": "v12", "t": {"T": 1, "n": "char", "s": 1}, "location": "s1"}, {"n": "v11", "t": {"T": 1, "n": "char", "s": 1}, "location": "s2"}]}