{"name": "uncompress_addr", "code": "__int64 __fastcall uncompress_addr ( _BYTE * @@a1@@ , const void * @@a2@@ , unsigned __int8 @@a3@@ , _QWORD * @@a4@@ ) { char v4 ; char v5 ; __int64 result ; unsigned __int8 @@v8@@ ; unsigned __int8 @@v9@@ ; if ( @@a3@@ >> Number == Number ) v4 = Number ; else v4 = @@a3@@ >> Number ; @@v9@@ = v4 ; if ( ( @@a3@@ & Number ) == Number ) v5 = Number ; else v5 = @@a3@@ & Number ; @@v8@@ = v5 ; if ( @@v9@@ ) memcpy ( @@a1@@ , @@a2@@ , @@v9@@ ) ; result = @@v9@@ + ( unsigned int ) @@v8@@ ; if ( ( int ) result <= Number ) result = ( __int64 ) memset ( & @@a1@@ [ @@v9@@ ] , Number , Number - ( @@v9@@ + @@v8@@ ) ) ; if ( @@v8@@ ) { memcpy ( & @@a1@@ [ Number - @@v8@@ ] , hc06_ptr , @@v8@@ ) ; if ( @@v8@@ == Number && @@v9@@ <= Number ) { @@a1@@ [ Number ] = Number ; @@a1@@ [ Number ] = Number ; } result = ( __int64 ) hc06_ptr + @@v8@@ ; hc06_ptr = ( void * ) result ; } else if ( @@v9@@ ) { result = uip_ds6_set_addr_iid ( ( __int64 ) @@a1@@ , @@a4@@ ) ; } return result ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "unsigned __int8", "s": 1}, "location": "r16"}, {"n": "a4", "t": {"T": 3, "t": "_QWORD"}, "location": "r24"}, {"n": "a1", "t": {"T": 3, "t": "_BYTE"}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "const void"}, "location": "r64"}, {"n": "v9", "t": {"T": 1, "n": "unsigned __int8", "s": 1}, "location": "s1"}, {"n": "v8", "t": {"T": 1, "n": "unsigned __int8", "s": 1}, "location": "s2"}]}
{"name": "uip_ds6_set_addr_iid", "code": "__int64 __fastcall uip_ds6_set_addr_iid ( __int64 @@a1@@ , _QWORD * @@a2@@ ) { __int64 @@result@@ ; * ( _QWORD * ) ( @@a1@@ + Number ) = * @@a2@@ ; @@result@@ = @@a1@@ ; * ( _BYTE * ) ( @@a1@@ + Number ) ^= Number ; return @@result@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "_QWORD"}, "location": "r64"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}]} {"name": "uncompress_hdr_hc06", "code": "__int64 __fastcall uncompress_hdr_hc06 ( __int16 @@a1@@ ) { char v1 ; __int64 result ; _QWORD * @@v3@@ ; const void * v4 ; _QWORD * v5 ; char v6 ; _QWORD * v7 ; _QWORD * v8 ; __int16 @@v9@@ ; char @@v10@@ ; char @@v11@@ ; char @@v12@@ ; unsigned __int8 @@v13@@ ; unsigned __int8 @@v14@@ ; char @@v15@@ ; hc06_ptr = ( char * ) rime_ptr + ( unsigned __int8 ) rime_hdr_len + Number ; @@v15@@ = * ( ( _BYTE * ) rime_ptr + ( unsigned __int8 ) rime_hdr_len ) ; @@v14@@ = * ( ( _BYTE * ) rime_ptr + ( unsigned __int8 ) rime_hdr_len + Number ) ; if ( ( @@v14@@ & Number ) != Number ) hc06_ptr = ( char * ) hc06_ptr + Number ; if ( ( @@v15@@ & Number ) != Number ) { if ( ( @@v15@@ & Number ) != Number ) { sicslowpan_aligned_buf = Number ; * ( ( _BYTE * ) & sicslowpan_aligned_buf + Number ) = Number ; * ( ( _WORD * ) & sicslowpan_aligned_buf + Number ) = Number ; } else { sicslowpan_aligned_buf = ( * ( _BYTE * ) hc06_ptr >> Number ) & Number | Number ; * ( ( _BYTE * ) & sicslowpan_aligned_buf + Number ) = ( * ( _BYTE * ) hc06_ptr >> Number ) & Number | ( * ( _BYTE * ) hc06_ptr << Number ) ; * ( ( _WORD * ) & sicslowpan_aligned_buf + Number ) = Number ; hc06_ptr = ( char * ) hc06_ptr + Number ; } } else if ( ( @@v15@@ & Number ) != Number ) { sicslowpan_aligned_buf = Number ; * ( ( _BYTE * ) & sicslowpan_aligned_buf + Number ) = ( * ( _BYTE * ) hc06_ptr >> Number ) & Number | * ( _BYTE * ) hc06_ptr & Number ; unk_421A22 = * ( _WORD * ) ( ( char * ) hc06_ptr + Number ) ; hc06_ptr = ( char * ) hc06_ptr + Number ; } else { memcpy ( & unk_421A21 , ( char * ) hc06_ptr + Number , Number ) ; @@v13@@ = * ( _BYTE * ) hc06_ptr ; hc06_ptr = ( char * ) hc06_ptr + Number ; sicslowpan_aligned_buf = ( @@v13@@ >> Number ) & Number | Number ; * ( ( _BYTE * ) & sicslowpan_aligned_buf + Number ) = * ( ( _BYTE * ) & sicslowpan_aligned_buf + Number ) & Number | ( @@v13@@ << Number ) | ( @@v13@@ >> Number ) & Number ; } if ( ( @@v15@@ & Number ) == Number ) { * ( ( _BYTE * ) & sicslowpan_aligned_buf + Number ) = * ( _BYTE * ) hc06_ptr ; hc06_ptr = ( char * ) hc06_ptr + Number ; } if ( ( @@v15@@ & Number ) != Number ) { * ( ( _BYTE * ) & sicslowpan_aligned_buf + Number ) = ttl_values [ @@v15@@ & Number ] ; } else { * ( ( _BYTE * ) & sicslowpan_aligned_buf + Number ) = * ( _BYTE * ) hc06_ptr ; hc06_ptr = ( char * ) hc06_ptr + Number ; } @@v13@@ = ( ( int ) @@v14@@ >> Number ) & Number ; if ( ( @@v14@@ & Number ) != Number ) { if ( ( @@v14@@ & Number ) == Number ) v1 = Number ; else v1 = * ( ( _BYTE * ) rime_ptr + ( unsigned __int8 ) rime_hdr_len + Number ) >> Number ; @@v12@@ = v1 ; if ( @@v13@@ ) { context = addr_context_lookup_by_number ( @@v12@@ ) ; result = context ; if ( ! context ) return result ; } @@v3@@ = ( _QWORD * ) packetbuf_addr ( Number ) ; if ( @@v13@@ ) v4 = ( const void * ) ( context + Number ) ; else v4 = Number L ; uncompress_addr ( byte_421A28 , v4 , unc_ctxconf [ @@v13@@ ] , @@v3@@ ) ; } else { v5 = ( _QWORD * ) packetbuf_addr ( Number ) ; uncompress_addr ( byte_421A28 , & llprefix , unc_llconf [ @@v13@@ ] , v5 ) ; } @@v13@@ = @@v14@@ & Number ; if ( ( @@v14@@ & Number ) != Number ) { if ( ( @@v14@@ & Number ) == Number ) { @@v9@@ = Number ; if ( @@v13@@ && @@v13@@ <= Number ) { HIBYTE ( @@v9@@ ) = * ( _BYTE * ) hc06_ptr ; hc06_ptr = ( char * ) hc06_ptr + Number ; } uncompress_addr ( byte_421A38 , & @@v9@@ , unc_mxconf [ @@v13@@ ] , Number L ) ; } } else if ( ( @@v14@@ & Number ) != Number ) { if ( ( @@v14@@ & Number ) == Number ) v6 = Number ; else v6 = * ( ( _BYTE * ) rime_ptr + ( unsigned __int8 ) rime_hdr_len + Number ) & Number ; @@v11@@ = v6 ; context = addr_context_lookup_by_number ( v6 ) ; result = context ; if ( ! context ) return result ; v7 = ( _QWORD * ) packetbuf_addr ( Number ) ; uncompress_addr ( byte_421A38 , ( const void * ) ( context + Number ) , unc_ctxconf [ @@v13@@ ] , v7 ) ; } else { v8 = ( _QWORD * ) packetbuf_addr ( Number ) ; uncompress_addr ( byte_421A38 , & llprefix , unc_llconf [ @@v13@@ ] , v8 ) ; } uncomp_hdr_len += Number ; if ( ( @@v15@@ & Number ) != Number && ( * ( _BYTE * ) hc06_ptr & Number ) == Number ) { * ( ( _BYTE * ) & sicslowpan_aligned_buf + Number ) = Number ; @@v10@@ = * ( _BYTE * ) hc06_ptr & Number ; result = * ( _BYTE * ) hc06_ptr & Number ; if ( ( _DWORD ) result == Number ) { word_421A48 = ( ( ( * ( ( _BYTE * ) hc06_ptr + Number ) >> Number ) - Number ) << Number ) | ( ( unsigned __int16 ) ( ( * ( ( _BYTE * ) hc06_ptr + Number ) >> Number ) - Number ) >> Number ) ; * ( & word_421A48 + Number ) = ( ( ( * ( ( _BYTE * ) hc06_ptr + Number ) & Number ) - Number ) << Number ) | ( ( unsigned __int16 ) ( ( * ( ( _BYTE * ) hc06_ptr + Number ) & Number ) - Number ) >> Number ) ; hc06_ptr = ( char * ) hc06_ptr + Number ; } else { if ( ( * ( _BYTE * ) hc06_ptr & Number ) > Number ) return result ; switch ( ( _DWORD ) result ) { case Number : word_421A48 = ( ( * ( ( unsigned __int8 * ) hc06_ptr + Number ) - Number ) << Number ) | ( ( unsigned __int16 ) ( * ( ( unsigned __int8 * ) hc06_ptr + Number ) - Number ) >> Number ) ; unk_421A4A = * ( ( _WORD * ) hc06_ptr + Number ) ; hc06_ptr = ( char * ) hc06_ptr + Number ; break ; case Number : word_421A48 = * ( _WORD * ) ( ( char * ) hc06_ptr + Number ) ; unk_421A4A = * ( _WORD * ) ( ( char * ) hc06_ptr + Number ) ; hc06_ptr = ( char * ) hc06_ptr + Number ; break ; case Number : word_421A48 = * ( _WORD * ) ( ( char * ) hc06_ptr + Number ) ; * ( & word_421A48 + Number ) = ( ( * ( ( unsigned __int8 * ) hc06_ptr + Number ) - Number ) << Number ) | ( ( unsigned __int16 ) ( * ( ( unsigned __int8 * ) hc06_ptr + Number ) - Number ) >> Number ) ; hc06_ptr = ( char * ) hc06_ptr + Number ; break ; default : return result ; } } if ( ! @@v10@@ ) { unk_421A4E = * ( _WORD * ) hc06_ptr ; hc06_ptr = ( char * ) hc06_ptr + Number ; } uncomp_hdr_len += Number ; } rime_hdr_len = ( _BYTE ) hc06_ptr - ( _BYTE ) rime_ptr ; if ( @@a1@@ ) { * ( ( _BYTE * ) & sicslowpan_aligned_buf + Number ) = ( unsigned __int16 ) ( @@a1@@ - Number ) >> Number ; * ( ( _BYTE * ) & sicslowpan_aligned_buf + Number ) = @@a1@@ - Number ; } else { * ( ( _BYTE * ) & sicslowpan_aligned_buf + Number ) = Number ; * ( ( _BYTE * ) & sicslowpan_aligned_buf + Number ) = packetbuf_datalen ( ) - rime_hdr_len + uncomp_hdr_len - Number ; } result = * ( ( unsigned __int8 * ) & sicslowpan_aligned_buf + Number ) ; if ( ( _BYTE ) result == Number ) { result = word_421A24 [ Number ] ; unk_421A4C = word_421A24 [ Number ] ; } return result ; }", "source": [{"n": "v3", "t": {"T": 3, "t": "_QWORD"}, "location": "r24"}, {"n": "a1", "t": {"T": 1, "n": "__int16", "s": 2}, "location": "r56"}, {"n": "v15", "t": {"T": 1, "n": "char", "s": 1}, "location": "s1"}, {"n": "v14", "t": {"T": 1, "n": "unsigned __int8", "s": 1}, "location": "s2"}, {"n": "v13", "t": {"T": 1, "n": "unsigned __int8", "s": 1}, "location": "s3"}, {"n": "v12", "t": {"T": 1, "n": "char", "s": 1}, "location": "s4"}, {"n": "v11", "t": {"T": 1, "n": "char", "s": 1}, "location": "s5"}, {"n": "v10", "t": {"T": 1, "n": "char", "s": 1}, "location": "s6"}, {"n": "v9", "t": {"T": 1, "n": "__int16", "s": 2}, "location": "s8"}]}