{"name": "rpl_set_prefix", "code": "__int64 __fastcall rpl_set_prefix ( _BYTE * @@a1@@ , const void * @@a2@@ , unsigned int @@a3@@ ) { if ( @@a3@@ > Number ) return Number L ; memset ( @@a1@@ + Number , Number , Number ) ; memcpy ( @@a1@@ + Number , @@a2@@ , ( @@a3@@ + Number ) >> Number ) ; @@a1@@ [ Number ] = @@a3@@ ; @@a1@@ [ Number ] = Number ; check_prefix ( Number L , @@a1@@ + Number ) ; return Number L ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r16"}, {"n": "a1", "t": {"T": 3, "t": "_BYTE"}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "const void"}, "location": "r64"}]}
{"name": "check_prefix", "code": "void __fastcall check_prefix ( unsigned __int8 * @@a1@@ , unsigned __int8 * @@a2@@ ) { _QWORD @@v2@@ [ Number ] ; __int64 @@v3@@ ; if ( ! @@a1@@ || ! @@a2@@ || @@a1@@ [ Number ] != @@a2@@ [ Number ] || memcmp ( @@a1@@ , @@a2@@ , @@a2@@ [ Number ] >> Number ) || @@a1@@ [ Number ] != @@a2@@ [ Number ] ) { if ( @@a1@@ ) { set_ip_from_prefix ( @@v2@@ , @@a1@@ ) ; @@v3@@ = uip_ds6_addr_lookup ( @@v2@@ ) ; if ( @@v3@@ ) uip_ds6_addr_rm ( @@v3@@ ) ; } if ( @@a2@@ ) { set_ip_from_prefix ( @@v2@@ , @@a2@@ ) ; if ( ! uip_ds6_addr_lookup ( @@v2@@ ) ) uip_ds6_addr_add ( @@v2@@ , Number L , Number ) ; } } }", "source": [{"n": "a1", "t": {"T": 3, "t": "unsigned __int8"}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "unsigned __int8"}, "location": "r64"}, {"n": "v2", "t": {"T": 2, "n": 3, "s": 8, "t": "_QWORD"}, "location": "s32"}, {"n": "v3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s8"}]}