{"name": "handle_dio_timer", "code": "__int64 __fastcall handle_dio_timer ( __int64 @@a1@@ ) { __int64 @@result@@ ; if ( ! dio_send_ok ) { if ( ! uip_ds6_get_link_local ( Number ) ) return ctimer_set ( @@a1@@ + Number , Number L , handle_dio_timer , @@a1@@ ) ; dio_send_ok = Number ; } if ( * ( _BYTE * ) ( @@a1@@ + Number ) ) { if ( * ( _BYTE * ) ( @@a1@@ + Number ) < * ( _BYTE * ) ( @@a1@@ + Number ) ) dio_output ( ( unsigned __int8 * ) @@a1@@ , Number L ) ; * ( _BYTE * ) ( @@a1@@ + Number ) = Number ; @@result@@ = ctimer_set ( @@a1@@ + Number , * ( _QWORD * ) ( @@a1@@ + Number ) , handle_dio_timer , @@a1@@ ) ; } else { if ( * ( unsigned __int8 * ) ( @@a1@@ + Number ) < * ( unsigned __int8 * ) ( @@a1@@ + Number ) + * ( unsigned __int8 * ) ( @@a1@@ + Number ) ) ++ * ( _BYTE * ) ( @@a1@@ + Number ) ; @@result@@ = new_dio_interval ( @@a1@@ ) ; } return @@result@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}]}
{"name": "uip_ds6_get_link_local", "code": "__int64 __fastcall uip_ds6_get_link_local ( char @@a1@@ ) { for ( locaddr = ( __int64 ) byte_422C58 ; locaddr < ( unsigned __int64 ) & unk_422CD0 ; locaddr += Number L ) { if ( * ( _BYTE * ) locaddr && ( @@a1@@ == Number || * ( unsigned __int8 * ) ( locaddr + Number ) == @@a1@@ ) && * ( _BYTE * ) ( locaddr + Number ) == Number && * ( _BYTE * ) ( locaddr + Number ) == Number ) { return locaddr ; } } return Number L ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "char", "s": 1}, "location": "r56"}]} {"name": "dio_output", "code": "__int64 __fastcall dio_output ( unsigned __int8 * @@a1@@ , _QWORD * @@a2@@ ) { int v2 ; int v3 ; int v4 ; int v5 ; _QWORD * v6 ; __int64 v7 ; int v8 ; int v9 ; int v10 ; unsigned __int8 v11 ; int v12 ; int v13 ; int v14 ; __int64 result ; int v16 ; int v17 ; int v18 ; int v19 ; int v20 ; int v21 ; int v22 ; int v23 ; int v24 ; int v25 ; int v26 ; int v27 ; int v28 ; int v29 ; int v30 ; _QWORD * v31 ; __int64 v32 ; __int64 @@v33@@ ; __int16 @@v34@@ ; __int16 @@v35@@ ; __int16 @@v36@@ ; __int16 @@v37@@ ; __int64 @@v38@@ ; __int64 @@v39@@ ; int @@v40@@ ; @@v39@@ = * ( ( _QWORD * ) @@a1@@ + Number ) ; @@v38@@ = ( unsigned __int8 ) uip_ext_len + Number + Number L ; @@v40@@ = Number ; * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) = @@a1@@ [ Number ] ; v2 = @@v40@@ ++ ; * ( _BYTE * ) ( @@v38@@ + v2 ) = * ( _BYTE * ) ( @@v39@@ + Number ) ; set16 ( @@v38@@ , @@v40@@ , * ( _WORD * ) ( @@v39@@ + Number ) ) ; @@v40@@ += Number ; * ( _BYTE * ) ( @@v40@@ + @@v38@@ ) = Number ; if ( * ( _BYTE * ) ( @@v39@@ + Number ) ) * ( _BYTE * ) ( @@v40@@ + @@v38@@ ) |= Number ; * ( _BYTE * ) ( @@v40@@ + @@v38@@ ) |= Number * @@a1@@ [ Number ] ; * ( _BYTE * ) ( @@v40@@ + @@v38@@ ) |= * ( _BYTE * ) ( @@v39@@ + Number ) & Number ; v3 = @@v40@@ + Number ; @@v40@@ += Number ; * ( _BYTE * ) ( @@v38@@ + v3 ) = @@a1@@ [ Number ] ++ ; v4 = @@v40@@ ++ ; * ( _BYTE * ) ( v4 + @@v38@@ ) = Number ; v5 = @@v40@@ ++ ; * ( _BYTE * ) ( v5 + @@v38@@ ) = Number ; v6 = ( _QWORD * ) ( @@v38@@ + @@v40@@ ) ; v7 = * ( _QWORD * ) ( @@v39@@ + Number ) ; * v6 = * ( _QWORD * ) @@v39@@ ; v6 [ Number ] = v7 ; @@v40@@ += Number ; if ( * @@a1@@ ) { ( * ( void ( __fastcall * * ) ( unsigned __int8 * ) ) ( * ( ( _QWORD * ) @@a1@@ + Number ) + Number L ) ) ( @@a1@@ ) ; v8 = @@v40@@ ++ ; * ( _BYTE * ) ( v8 + @@v38@@ ) = Number ; v9 = @@v40@@ ++ ; * ( _BYTE * ) ( v9 + @@v38@@ ) = Number ; v10 = @@v40@@ ++ ; * ( _BYTE * ) ( @@v38@@ + v10 ) = * @@a1@@ ; v11 = @@a1@@ [ Number ] ; v12 = @@v40@@ ++ ; * ( _BYTE * ) ( v12 + @@v38@@ ) = v11 >> Number ; * ( _BYTE * ) ( @@v40@@ + @@v38@@ ) = @@a1@@ [ Number ] << Number ; v13 = @@v40@@ ++ ; * ( _BYTE * ) ( v13 + @@v38@@ ) |= ( unsigned __int8 ) ( Number * @@a1@@ [ Number ] ) | @@a1@@ [ Number ] ; if ( * @@a1@@ == Number ) { v14 = @@v40@@ ++ ; * ( _BYTE * ) ( v14 + @@v38@@ ) = Number ; set16 ( @@v38@@ , @@v40@@ , * ( ( _WORD * ) @@a1@@ + Number ) ) ; @@v40@@ += Number ; } else { result = * @@a1@@ ; if ( ( _BYTE ) result != Number ) return result ; v16 = @@v40@@ ++ ; * ( _BYTE * ) ( v16 + @@v38@@ ) = Number ; v17 = @@v40@@ ++ ; * ( _BYTE * ) ( @@v38@@ + v17 ) = @@a1@@ [ Number ] ; v18 = @@v40@@ ++ ; * ( _BYTE * ) ( @@v38@@ + v18 ) = @@a1@@ [ Number ] ; } } v19 = @@v40@@ ++ ; * ( _BYTE * ) ( v19 + @@v38@@ ) = Number ; v20 = @@v40@@ ++ ; * ( _BYTE * ) ( v20 + @@v38@@ ) = Number ; v21 = @@v40@@ ++ ; * ( _BYTE * ) ( v21 + @@v38@@ ) = Number ; v22 = @@v40@@ ++ ; * ( _BYTE * ) ( @@v38@@ + v22 ) = @@a1@@ [ Number ] ; v23 = @@v40@@ ++ ; * ( _BYTE * ) ( @@v38@@ + v23 ) = @@a1@@ [ Number ] ; v24 = @@v40@@ ++ ; * ( _BYTE * ) ( @@v38@@ + v24 ) = @@a1@@ [ Number ] ; set16 ( @@v38@@ , @@v40@@ , * ( ( _WORD * ) @@a1@@ + Number ) ) ; @@v40@@ += Number ; set16 ( @@v38@@ , @@v40@@ , * ( ( _WORD * ) @@a1@@ + Number ) ) ; @@v40@@ += Number ; set16 ( @@v38@@ , @@v40@@ , * ( _WORD * ) ( * ( ( _QWORD * ) @@a1@@ + Number ) + Number L ) ) ; v25 = @@v40@@ + Number ; @@v40@@ += Number ; * ( _BYTE * ) ( v25 + @@v38@@ ) = Number ; v26 = @@v40@@ ++ ; * ( _BYTE * ) ( @@v38@@ + v26 ) = @@a1@@ [ Number ] ; set16 ( @@v38@@ , @@v40@@ , * ( ( _WORD * ) @@a1@@ + Number ) ) ; @@v40@@ += Number ; if ( * ( _BYTE * ) ( @@v39@@ + Number ) ) { v27 = @@v40@@ ++ ; * ( _BYTE * ) ( v27 + @@v38@@ ) = Number ; v28 = @@v40@@ ++ ; * ( _BYTE * ) ( v28 + @@v38@@ ) = Number ; v29 = @@v40@@ ++ ; * ( _BYTE * ) ( @@v38@@ + v29 ) = * ( _BYTE * ) ( @@v39@@ + Number ) ; v30 = @@v40@@ ++ ; * ( _BYTE * ) ( @@v38@@ + v30 ) = * ( _BYTE * ) ( @@v39@@ + Number ) ; set32 ( @@v38@@ , @@v40@@ , * ( _DWORD * ) ( @@v39@@ + Number ) ) ; @@v40@@ += Number ; set32 ( @@v38@@ , @@v40@@ , * ( _DWORD * ) ( @@v39@@ + Number ) ) ; @@v40@@ += Number ; memset ( ( void * ) ( @@v40@@ + @@v38@@ ) , Number , Number ) ; @@v40@@ += Number ; v31 = ( _QWORD * ) ( @@v38@@ + @@v40@@ ) ; v32 = * ( _QWORD * ) ( @@v39@@ + Number ) ; * v31 = * ( _QWORD * ) ( @@v39@@ + Number ) ; v31 [ Number ] = v32 ; @@v40@@ += Number ; } if ( @@a2@@ ) return uip_icmp6_send ( @@a2@@ , Number , Number , @@v40@@ ) ; @@v33@@ = Number L ; @@v34@@ = Number ; @@v35@@ = Number ; @@v36@@ = Number ; @@v37@@ = Number ; return uip_icmp6_send ( & @@v33@@ , Number , Number , @@v40@@ ) ; }", "source": [{"n": "a1", "t": {"T": 3, "t": "unsigned __int8"}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "_QWORD"}, "location": "r64"}, {"n": "v39", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s16"}, {"n": "v38", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s24"}, {"n": "v37", "t": {"T": 1, "n": "__int16", "s": 2}, "location": "s34"}, {"n": "v36", "t": {"T": 1, "n": "__int16", "s": 2}, "location": "s36"}, {"n": "v35", "t": {"T": 1, "n": "__int16", "s": 2}, "location": "s38"}, {"n": "v40", "t": {"T": 1, "n": "int", "s": 4}, "location": "s4"}, {"n": "v34", "t": {"T": 1, "n": "__int16", "s": 2}, "location": "s40"}, {"n": "v33", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s48"}]} {"name": "new_dio_interval", "code": "__int64 __fastcall new_dio_interval ( __int64 @@a1@@ ) { unsigned __int64 v2 ; unsigned __int64 v3 ; v2 = Number * ( unsigned int ) ( Number L << * ( _BYTE * ) ( @@a1@@ + Number ) ) / Number ; * ( _QWORD * ) ( @@a1@@ + Number ) = v2 ; v3 = ( v2 >> Number ) + ( v2 >> Number ) * ( unsigned __int16 ) random_rand ( ) / Number ; * ( _QWORD * ) ( @@a1@@ + Number ) -= v3 ; * ( _BYTE * ) ( @@a1@@ + Number ) = Number ; * ( _BYTE * ) ( @@a1@@ + Number ) = Number ; return ctimer_set ( @@a1@@ + Number , v3 , handle_dio_timer , @@a1@@ ) ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}]} {"name": "timer_set", "code": "__time_t __fastcall timer_set ( __time_t * @@a1@@ , __time_t @@a2@@ ) { __time_t @@result@@ ; @@a1@@ [ Number ] = @@a2@@ ; @@result@@ = clock_time ( ) ; * @@a1@@ = @@result@@ ; return @@result@@ ; }", "source": [{"n": "a1", "t": {"T": 3, "t": "__time_t"}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__time_t", "s": 8}, "location": "r64"}, {"n": "result", "t": {"T": 1, "n": "__time_t", "s": 8}, "location": "r8"}]} {"name": "ctimer_set", "code": "_QWORD * __fastcall ctimer_set ( _QWORD * @@a1@@ , __int64 @@a2@@ , __int64 @@a3@@ , __int64 @@a4@@ ) { __int64 @@v5@@ ; @@a1@@ [ Number ] = process_current ; @@a1@@ [ Number ] = @@a3@@ ; @@a1@@ [ Number ] = @@a4@@ ; if ( initialized_0 ) { @@v5@@ = process_current ; process_current = ( __int64 ) & ctimer_process ; etimer_set ( ( __int64 ) ( @@a1@@ + Number ) , @@a2@@ ) ; process_current = @@v5@@ ; } else { @@a1@@ [ Number ] = @@a2@@ ; } list_remove ( ctimer_list , @@a1@@ ) ; return list_add ( ctimer_list , @@a1@@ ) ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "a4", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r24"}, {"n": "a1", "t": {"T": 3, "t": "_QWORD"}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}, {"n": "v5", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s8"}]} {"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"}]}