{"name": "uip_ds6_addr_lookup", "code": "__int64 __fastcall uip_ds6_addr_lookup ( const void * @@a1@@ ) { __int64 @@result@@ ; if ( ( unsigned __int8 ) uip_ds6_list_loop ( byte_422C58 , Number , Number , @@a1@@ , Number , & locaddr ) ) @@result@@ = Number L ; else @@result@@ = locaddr ; return @@result@@ ; }", "source": [{"n": "a1", "t": {"T": 3, "t": "const void"}, "location": "r56"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}]}
{"name": "uip_process", "code": "__int64 __fastcall uip_process ( char @@a1@@ ) { char * @@v1@@ ; __int64 result ; char v3 ; __int64 v4 ; __int64 v5 ; __int64 v6 ; __int16 v7 ; __int16 v8 ; __int64 v9 ; char @@v10@@ ; @@v1@@ = ( char * ) uip_conn ; if ( @@a1@@ == Number ) goto LABEL_155 ; uip_appdata = ( __int64 ) & unk_4227BC ; uip_sappdata = & unk_4227BC ; if ( @@a1@@ == Number ) { if ( ( * ( _BYTE * ) ( uip_conn + Number ) & Number ) != Number || * ( _WORD * ) ( uip_conn + Number ) ) { result = * ( _BYTE * ) ( uip_conn + Number ) & Number ; if ( ( _DWORD ) result == Number ) { * ( ( _BYTE * ) & dword_4227A8 + Number ) = Number ; LABEL_203 : * ( ( _BYTE * ) & dword_4227A8 + Number ) |= Number ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = Number ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = Number ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = Number ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = Number ; uip_len = Number ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = Number ; LABEL_313 : * ( ( _BYTE * ) & dword_4227A8 + Number ) = @@v1@@ [ Number ] ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = @@v1@@ [ Number ] ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = @@v1@@ [ Number ] ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = @@v1@@ [ Number ] ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = @@v1@@ [ Number ] ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = @@v1@@ [ Number ] ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = @@v1@@ [ Number ] ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = @@v1@@ [ Number ] ; * ( ( _BYTE * ) & uip_aligned_buf + Number ) = Number ; dword_4227A8 = * ( ( _DWORD * ) @@v1@@ + Number ) ; v9 = * ( ( _QWORD * ) @@v1@@ + Number ) ; unk_422798 = * ( _QWORD * ) @@v1@@ ; * ( ( _QWORD * ) & unk_422798 + Number ) = v9 ; uip_ds6_select_src ( byte_422788 , & unk_422798 ) ; if ( ( @@v1@@ [ Number ] & Number ) != Number ) { * ( ( _BYTE * ) & dword_4227A8 + Number ) = Number ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = * ( ( _BYTE * ) & dword_4227A8 + Number ) ; } else { * ( ( _BYTE * ) & dword_4227A8 + Number ) = Number ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = Number ; } LABEL_316 : * ( ( _BYTE * ) & uip_aligned_buf + Number ) = byte_422C44 ; * ( ( _BYTE * ) & uip_aligned_buf + Number ) = ( unsigned __int16 ) ( uip_len - Number ) >> Number ; * ( ( _BYTE * ) & uip_aligned_buf + Number ) = uip_len - Number ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = Number ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = * ( ( _BYTE * ) & dword_4227A8 + Number ) ; * ( ( _WORD * ) & dword_4227A8 + Number ) = Number ; * ( ( _WORD * ) & dword_4227A8 + Number ) = ~ ( unsigned __int16 ) uip_tcpchksum ( ) ; goto LABEL_317 ; } goto LABEL_319 ; } LABEL_5 : uip_flags = Number ; tcpip_uipcall ( ) ; LABEL_270 : if ( ( uip_flags & Number ) != Number ) { uip_slen = Number ; @@v1@@ [ Number ] = Number ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = Number ; LABEL_311 : uip_len = Number ; goto LABEL_312 ; } if ( ( uip_flags & Number ) != Number ) { uip_slen = Number ; * ( ( _WORD * ) @@v1@@ + Number ) = Number ; @@v1@@ [ Number ] = Number ; @@v1@@ [ Number ] = Number ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = Number ; goto LABEL_311 ; } if ( uip_slen ) { if ( ( uip_flags & Number ) != Number ) * ( ( _WORD * ) @@v1@@ + Number ) = Number ; if ( * ( ( _WORD * ) @@v1@@ + Number ) ) { uip_slen = * ( ( _WORD * ) @@v1@@ + Number ) ; } else { if ( * ( ( _WORD * ) @@v1@@ + Number ) < ( unsigned __int16 ) uip_slen ) uip_slen = * ( ( _WORD * ) @@v1@@ + Number ) ; * ( ( _WORD * ) @@v1@@ + Number ) = uip_slen ; } } @@v1@@ [ Number ] = Number ; LABEL_283 : uip_appdata = ( __int64 ) uip_sappdata ; if ( uip_slen && * ( ( _WORD * ) @@v1@@ + Number ) ) { uip_len = * ( ( _WORD * ) @@v1@@ + Number ) + Number ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = Number ; LABEL_312 : * ( ( _BYTE * ) & dword_4227A8 + Number ) = Number ; goto LABEL_313 ; } result = uip_flags & Number ; if ( ( uip_flags & Number ) != Number ) { uip_len = Number ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = Number ; goto LABEL_312 ; } goto LABEL_319 ; } if ( @@a1@@ != Number ) { if ( @@a1@@ != Number ) { result = ( unsigned __int8 ) uip_aligned_buf & Number ; if ( ( _DWORD ) result != Number ) goto LABEL_319 ; result = ( unsigned __int16 ) uip_len ; if ( * ( ( unsigned __int8 * ) & uip_aligned_buf + Number ) + ( * ( ( unsigned __int8 * ) & uip_aligned_buf + Number ) << Number ) > ( unsigned __int16 ) uip_len ) goto LABEL_319 ; uip_len = ( * ( ( unsigned __int8 * ) & uip_aligned_buf + Number ) << Number ) + * ( ( unsigned __int8 * ) & uip_aligned_buf + Number ) + Number ; result = byte_422788 [ Number ] ; if ( byte_422788 [ Number ] == Number ) goto LABEL_319 ; uip_next_hdr = ( __int64 ) byte_422786 ; uip_ext_len = Number ; uip_ext_bitmap = Number ; if ( ! byte_422786 [ Number ] ) { uip_ext_bitmap |= Number ; result = ( unsigned __int8 ) ext_hdr_options_process ( ) ; if ( ( unsigned __int8 ) result == Number ) goto LABEL_318 ; if ( ( int ) result <= Number ) { if ( ( _DWORD ) result ) { if ( ( _DWORD ) result == Number ) goto LABEL_319 ; } else { uip_next_hdr = ( unsigned __int8 ) uip_ext_len + Number + Number L ; uip_ext_len += Number * * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) + Number ; } } } if ( uip_ds6_addr_lookup ( & unk_422798 ) || uip_ds6_maddr_lookup ( & unk_422798 ) ) { while ( Number ) { result = * ( unsigned __int8 * ) uip_next_hdr ; switch ( * ( _BYTE * ) uip_next_hdr ) { case Number : if ( ( uip_ext_bitmap & Number ) != Number ) goto LABEL_121 ; uip_ext_bitmap |= Number ; result = ( unsigned __int8 ) ext_hdr_options_process ( ) ; if ( ( unsigned __int8 ) result == Number ) goto LABEL_318 ; if ( ( int ) result > Number ) continue ; if ( ( _DWORD ) result ) { if ( ( _DWORD ) result == Number ) goto LABEL_319 ; } else { uip_next_hdr = ( unsigned __int8 ) uip_ext_len + Number + Number L ; uip_ext_len += Number * * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) + Number ; } continue ; case Number : remove_ext_hdr ( ) ; result = uip_tcpchksum ( ) ; if ( ( _WORD ) result != Number ) goto LABEL_319 ; result = HIWORD ( dword_4227A8 ) ; if ( ! ( _WORD ) result ) goto LABEL_319 ; result = ( unsigned __int16 ) dword_4227A8 ; if ( ! ( _WORD ) dword_4227A8 ) goto LABEL_319 ; @@v1@@ = ( char * ) & uip_conns ; while ( Number ) { if ( @@v1@@ <= byte_422708 ) { if ( ! @@v1@@ [ Number ] || HIWORD ( dword_4227A8 ) != * ( ( _WORD * ) @@v1@@ + Number ) || ( _WORD ) dword_4227A8 != * ( ( _WORD * ) @@v1@@ + Number ) || memcmp ( byte_422788 , @@v1@@ , Number ) ) { @@v1@@ += Number ; continue ; } uip_conn = ( __int64 ) @@v1@@ ; uip_flags = Number ; if ( ( * ( ( _BYTE * ) & dword_4227A8 + Number ) & Number ) != Number ) { @@v1@@ [ Number ] = Number ; uip_flags = Number ; result = tcpip_uipcall ( ) ; goto LABEL_319 ; } c = Number * ( * ( ( _BYTE * ) & dword_4227A8 + Number ) >> Number ) ; uip_len = uip_len - ( unsigned __int8 ) c - Number ; if ( ( ( @@v1@@ [ Number ] & Number ) != Number || ( * ( ( _BYTE * ) & dword_4227A8 + Number ) & Number ) != Number ) && ( ( @@v1@@ [ Number ] & Number ) != Number || ( * ( ( _BYTE * ) & dword_4227A8 + Number ) & Number ) != Number ) && ( uip_len || ( * ( ( _BYTE * ) & dword_4227A8 + Number ) & Number ) != Number ) && ( * ( ( _BYTE * ) & dword_4227A8 + Number ) != @@v1@@ [ Number ] || * ( ( _BYTE * ) & dword_4227A8 + Number ) != @@v1@@ [ Number ] || * ( ( _BYTE * ) & dword_4227A8 + Number ) != @@v1@@ [ Number ] || * ( ( _BYTE * ) & dword_4227A8 + Number ) != @@v1@@ [ Number ] ) ) { if ( ( * ( ( _BYTE * ) & dword_4227A8 + Number ) & Number ) != Number ) { LABEL_202 : * ( ( _BYTE * ) & dword_4227A8 + Number ) = Number ; goto LABEL_203 ; } LABEL_310 : * ( ( _BYTE * ) & dword_4227A8 + Number ) = Number ; goto LABEL_311 ; } if ( ( * ( ( _BYTE * ) & dword_4227A8 + Number ) & Number ) != Number ) { if ( * ( ( _WORD * ) @@v1@@ + Number ) ) { uip_add32 ( @@v1@@ + Number , * ( ( _WORD * ) @@v1@@ + Number ) ) ; if ( * ( ( _BYTE * ) & dword_4227A8 + Number ) == uip_acc32 && * ( ( _BYTE * ) & dword_4227A8 + Number ) == byte_421E63 && * ( ( _BYTE * ) & dword_4227A8 + Number ) == byte_421E64 && * ( ( _BYTE * ) & dword_4227A8 + Number ) == byte_421E65 ) { @@v1@@ [ Number ] = uip_acc32 ; @@v1@@ [ Number ] = byte_421E63 ; @@v1@@ [ Number ] = byte_421E64 ; @@v1@@ [ Number ] = byte_421E65 ; if ( ! @@v1@@ [ Number ] ) { @@v10@@ = @@v1@@ [ Number ] - @@v1@@ [ Number ] - ( ( unsigned __int8 ) @@v1@@ [ Number ] >> Number ) ; @@v1@@ [ Number ] += @@v10@@ ; if ( @@v10@@ < Number ) @@v10@@ = - @@v10@@ ; @@v1@@ [ Number ] += @@v10@@ - ( ( unsigned __int8 ) @@v1@@ [ Number ] >> Number ) ; @@v1@@ [ Number ] = ( ( unsigned __int8 ) @@v1@@ [ Number ] >> Number ) + @@v1@@ [ Number ] ; } uip_flags = Number ; @@v1@@ [ Number ] = @@v1@@ [ Number ] ; * ( ( _WORD * ) @@v1@@ + Number ) = Number ; } } } result = @@v1@@ [ Number ] & Number ; switch ( @@v1@@ [ Number ] & Number ) { case Number : if ( ( uip_flags & Number ) != Number ) { @@v1@@ [ Number ] = Number ; uip_flags = Number ; * ( ( _WORD * ) @@v1@@ + Number ) = Number ; if ( uip_len ) { uip_flags |= Number ; uip_add_rcv_nxt ( uip_len ) ; } goto LABEL_269 ; } result = * ( ( _BYTE * ) & dword_4227A8 + Number ) & Number ; if ( ( _DWORD ) result != Number ) goto LABEL_319 ; goto LABEL_202 ; case Number : if ( ( uip_flags & Number ) != Number && ( * ( ( _BYTE * ) & dword_4227A8 + Number ) & Number ) == Number ) { if ( ( * ( _BYTE * ) ( & dword_4227A8 + Number ) & Number ) > Number ) { for ( c = Number ; ; c += * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) c + Number ) ) { while ( Number ) { if ( ( unsigned __int8 ) c >= Number * ( ( * ( ( _BYTE * ) & dword_4227A8 + Number ) >> Number ) - Number ) ) goto LABEL_251 ; opt = * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) c + Number ) ; if ( ! opt ) goto LABEL_251 ; if ( opt != Number ) break ; ++ c ; } if ( opt == Number && * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) c + Number ) == Number ) break ; if ( ! * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) c + Number ) ) goto LABEL_251 ; } tmp16 = ( * ( ( unsigned __int8 * ) & uip_aligned_buf + ( unsigned __int8 ) c + Number ) << Number ) | * ( ( unsigned __int8 * ) & uip_aligned_buf + ( unsigned __int8 ) c + Number ) ; v8 = tmp16 ; if ( ( unsigned __int16 ) tmp16 > Number ) v8 = Number ; * ( ( _WORD * ) @@v1@@ + Number ) = v8 ; * ( ( _WORD * ) @@v1@@ + Number ) = * ( ( _WORD * ) @@v1@@ + Number ) ; } LABEL_251 : @@v1@@ [ Number ] = Number ; @@v1@@ [ Number ] = * ( ( _BYTE * ) & dword_4227A8 + Number ) ; @@v1@@ [ Number ] = * ( ( _BYTE * ) & dword_4227A8 + Number ) ; @@v1@@ [ Number ] = * ( ( _BYTE * ) & dword_4227A8 + Number ) ; @@v1@@ [ Number ] = * ( ( _BYTE * ) & dword_4227A8 + Number ) ; uip_add_rcv_nxt ( Number ) ; uip_flags = Number ; * ( ( _WORD * ) @@v1@@ + Number ) = Number ; uip_len = Number ; uip_slen = Number ; tcpip_uipcall ( ) ; goto LABEL_270 ; } uip_flags = Number ; tcpip_uipcall ( ) ; * ( _BYTE * ) ( uip_conn + Number ) = Number ; break ; case Number : if ( ( * ( ( _BYTE * ) & dword_4227A8 + Number ) & Number ) != Number && ( @@v1@@ [ Number ] & Number ) == Number ) { result = * ( ( unsigned __int16 * ) @@v1@@ + Number ) ; if ( ( _WORD ) result ) goto LABEL_319 ; uip_add_rcv_nxt ( uip_len + Number ) ; uip_flags |= Number ; if ( uip_len ) uip_flags |= Number ; tcpip_uipcall ( ) ; * ( ( _WORD * ) @@v1@@ + Number ) = Number ; @@v1@@ [ Number ] = Number ; @@v1@@ [ Number ] = Number ; LABEL_259 : * ( ( _BYTE * ) & dword_4227A8 + Number ) = Number ; goto LABEL_311 ; } if ( ( * ( ( _BYTE * ) & dword_4227A8 + Number ) & Number ) != Number ) { uip_appdata += ( * ( ( unsigned __int8 * ) & dword_4227A8 + Number ) << Number ) | ( unsigned int ) * ( ( unsigned __int8 * ) & dword_4227A8 + Number ) ; uip_len -= _byteswap_ushort ( * ( ( _WORD * ) & dword_4227A8 + Number ) ) ; } if ( uip_len && ( @@v1@@ [ Number ] & Number ) == Number ) { uip_flags |= Number ; uip_add_rcv_nxt ( uip_len ) ; } tmp16 = ( * ( ( unsigned __int8 * ) & dword_4227A8 + Number ) << Number ) + * ( ( unsigned __int8 * ) & dword_4227A8 + Number ) ; if ( * ( ( _WORD * ) @@v1@@ + Number ) < ( unsigned __int16 ) tmp16 || ! tmp16 ) tmp16 = * ( ( _WORD * ) @@v1@@ + Number ) ; * ( ( _WORD * ) @@v1@@ + Number ) = tmp16 ; result = uip_flags & Number ; if ( ( uip_flags & Number ) != Number ) { LABEL_269 : uip_slen = Number ; tcpip_uipcall ( ) ; goto LABEL_270 ; } goto LABEL_319 ; case Number : if ( uip_len ) uip_add_rcv_nxt ( uip_len ) ; if ( ( * ( ( _BYTE * ) & dword_4227A8 + Number ) & Number ) != Number ) { if ( ( uip_flags & Number ) != Number ) { @@v1@@ [ Number ] = Number ; @@v1@@ [ Number ] = Number ; * ( ( _WORD * ) @@v1@@ + Number ) = Number ; } else { @@v1@@ [ Number ] = Number ; } uip_add_rcv_nxt ( Number ) ; uip_flags = Number ; tcpip_uipcall ( ) ; goto LABEL_310 ; } result = uip_flags & Number ; if ( ( uip_flags & Number ) != Number ) { @@v1@@ [ Number ] = Number ; * ( ( _WORD * ) @@v1@@ + Number ) = Number ; goto LABEL_319 ; } result = ( unsigned __int16 ) uip_len ; if ( uip_len ) goto LABEL_310 ; goto LABEL_319 ; case Number : if ( uip_len ) uip_add_rcv_nxt ( uip_len ) ; if ( ( * ( ( _BYTE * ) & dword_4227A8 + Number ) & Number ) != Number ) { @@v1@@ [ Number ] = Number ; @@v1@@ [ Number ] = Number ; uip_add_rcv_nxt ( Number ) ; uip_flags = Number ; tcpip_uipcall ( ) ; goto LABEL_310 ; } result = ( unsigned __int16 ) uip_len ; if ( uip_len ) goto LABEL_310 ; goto LABEL_319 ; case Number : result = uip_flags & Number ; if ( ( uip_flags & Number ) != Number ) { @@v1@@ [ Number ] = Number ; @@v1@@ [ Number ] = Number ; } goto LABEL_319 ; case Number : goto LABEL_310 ; case Number : result = uip_flags & Number ; if ( ( uip_flags & Number ) != Number ) { @@v1@@ [ Number ] = Number ; uip_flags = Number ; result = tcpip_uipcall ( ) ; } goto LABEL_319 ; default : goto LABEL_319 ; } } else if ( ( * ( ( _BYTE * ) & dword_4227A8 + Number ) & Number ) == Number ) { tmp16 = HIWORD ( dword_4227A8 ) ; for ( c = Number ; ( unsigned __int8 ) c <= Number ; ++ c ) { if ( uip_listenports [ ( unsigned __int8 ) c ] == tmp16 ) { @@v1@@ = Number L ; for ( c = Number ; ; ++ c ) { result = ( unsigned __int8 ) c ; if ( ( unsigned __int8 ) c > Number ) break ; if ( ! byte_421EA5 [ Number * ( unsigned __int8 ) c ] ) { result = Number L * ( unsigned __int8 ) c ; @@v1@@ = ( char * ) & uip_conns + result ; break ; } if ( byte_421EA5 [ Number * ( unsigned __int8 ) c ] == Number && ( ! @@v1@@ || byte_421EA5 [ Number * ( unsigned __int8 ) c + Number ] > ( unsigned __int8 ) @@v1@@ [ Number ] ) ) { @@v1@@ = ( char * ) & uip_conns + Number * ( unsigned __int8 ) c ; } } if ( @@v1@@ ) { uip_conn = ( __int64 ) @@v1@@ ; @@v1@@ [ Number ] = Number ; @@v1@@ [ Number ] = @@v1@@ [ Number ] ; @@v1@@ [ Number ] = Number ; @@v1@@ [ Number ] = Number ; @@v1@@ [ Number ] = Number ; * ( ( _WORD * ) @@v1@@ + Number ) = HIWORD ( dword_4227A8 ) ; * ( ( _WORD * ) @@v1@@ + Number ) = dword_4227A8 ; v6 = * ( _QWORD * ) & byte_422788 [ Number ] ; * ( _QWORD * ) @@v1@@ = * ( _QWORD * ) byte_422788 ; * ( ( _QWORD * ) @@v1@@ + Number ) = v6 ; @@v1@@ [ Number ] = Number ; @@v1@@ [ Number ] = iss ; @@v1@@ [ Number ] = byte_41F477 ; @@v1@@ [ Number ] = byte_41F478 ; @@v1@@ [ Number ] = byte_41F479 ; * ( ( _WORD * ) @@v1@@ + Number ) = Number ; @@v1@@ [ Number ] = * ( ( _BYTE * ) & dword_4227A8 + Number ) ; @@v1@@ [ Number ] = * ( ( _BYTE * ) & dword_4227A8 + Number ) ; @@v1@@ [ Number ] = * ( ( _BYTE * ) & dword_4227A8 + Number ) ; @@v1@@ [ Number ] = * ( ( _BYTE * ) & dword_4227A8 + Number ) ; uip_add_rcv_nxt ( Number ) ; if ( ( * ( _BYTE * ) ( & dword_4227A8 + Number ) & Number ) > Number ) { c = Number ; while ( ( unsigned __int8 ) c < Number * ( ( * ( ( _BYTE * ) & dword_4227A8 + Number ) >> Number ) - Number ) ) { opt = * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) c + Number ) ; if ( ! opt ) break ; if ( opt == Number ) { ++ c ; } else { if ( opt == Number && * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) c + Number ) == Number ) { tmp16 = ( * ( ( unsigned __int8 * ) & uip_aligned_buf + ( unsigned __int8 ) c + Number ) << Number ) | * ( ( unsigned __int8 * ) & uip_aligned_buf + ( unsigned __int8 ) c + Number ) ; v7 = tmp16 ; if ( ( unsigned __int16 ) tmp16 > Number ) v7 = Number ; * ( ( _WORD * ) @@v1@@ + Number ) = v7 ; * ( ( _WORD * ) @@v1@@ + Number ) = * ( ( _WORD * ) @@v1@@ + Number ) ; goto LABEL_202 ; } if ( ! * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) c + Number ) ) goto LABEL_202 ; c += * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) c + Number ) ; } } } goto LABEL_202 ; } goto LABEL_319 ; } } } break ; } result = * ( ( _BYTE * ) & dword_4227A8 + Number ) & Number ; if ( ( * ( ( _BYTE * ) & dword_4227A8 + Number ) & Number ) != Number ) goto LABEL_319 ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = Number ; uip_len = Number ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = Number ; c = * ( ( _BYTE * ) & dword_4227A8 + Number ) ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = * ( ( _BYTE * ) & dword_4227A8 + Number ) ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = c ; c = * ( ( _BYTE * ) & dword_4227A8 + Number ) ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = * ( ( _BYTE * ) & dword_4227A8 + Number ) ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = c ; c = * ( ( _BYTE * ) & dword_4227A8 + Number ) ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = * ( ( _BYTE * ) & dword_4227A8 + Number ) ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = c ; c = * ( ( _BYTE * ) & dword_4227A8 + Number ) ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = * ( ( _BYTE * ) & dword_4227A8 + Number ) ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = c ; if ( ! ++ * ( ( _BYTE * ) & dword_4227A8 + Number ) && ! ++ * ( ( _BYTE * ) & dword_4227A8 + Number ) && ! ++ * ( ( _BYTE * ) & dword_4227A8 + Number ) ) { ++ * ( ( _BYTE * ) & dword_4227A8 + Number ) ; } tmp16 = dword_4227A8 ; LOWORD ( dword_4227A8 ) = HIWORD ( dword_4227A8 ) ; HIWORD ( dword_4227A8 ) = tmp16 ; v5 = * ( _QWORD * ) & byte_422788 [ Number ] ; unk_422798 = * ( _QWORD * ) byte_422788 ; * ( ( _QWORD * ) & unk_422798 + Number ) = v5 ; uip_ds6_select_src ( byte_422788 , & unk_422798 ) ; goto LABEL_316 ; case Number : remove_ext_hdr ( ) ; uip_len -= Number ; uip_appdata = ( __int64 ) & unk_4227B0 ; if ( * ( ( _WORD * ) & dword_4227A8 + Number ) ) { result = uip_udpchksum ( ) ; if ( ( _WORD ) result != Number ) goto LABEL_319 ; } result = HIWORD ( dword_4227A8 ) ; if ( ! ( _WORD ) result ) goto LABEL_319 ; uip_udp_conn = & uip_udp_conns ; while ( Number ) { result = ( __int64 ) uip_udp_conn ; if ( uip_udp_conn >= & uip_udp_conn ) goto LABEL_319 ; if ( ! * ( ( _WORD * ) uip_udp_conn + Number ) || HIWORD ( dword_4227A8 ) != * ( ( _WORD * ) uip_udp_conn + Number ) || * ( ( _WORD * ) uip_udp_conn + Number ) && ( _WORD ) dword_4227A8 != * ( ( _WORD * ) uip_udp_conn + Number ) || ( * ( _WORD * ) uip_udp_conn || * ( ( _WORD * ) uip_udp_conn + Number ) || * ( ( _WORD * ) uip_udp_conn + Number ) || * ( ( _WORD * ) uip_udp_conn + Number ) || * ( ( _WORD * ) uip_udp_conn + Number ) || * ( ( _WORD * ) uip_udp_conn + Number ) || * ( ( _WORD * ) uip_udp_conn + Number ) || * ( ( _WORD * ) uip_udp_conn + Number ) ) && memcmp ( byte_422788 , uip_udp_conn , Number ) ) { uip_udp_conn = ( char * ) uip_udp_conn + Number ; continue ; } break ; } uip_conn = Number L ; uip_flags = Number ; uip_appdata = ( __int64 ) & unk_4227B0 ; uip_sappdata = & unk_4227B0 ; uip_slen = Number ; tcpip_uipcall ( ) ; goto LABEL_155 ; case Number : if ( ( uip_ext_bitmap & Number ) != Number ) goto LABEL_121 ; uip_ext_bitmap |= Number ; if ( * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) ) { result = uip_icmp6_error_output ( Number L , Number L , ( unsigned int ) ( unsigned __int8 ) uip_ext_len + Number ) ; goto LABEL_318 ; } uip_next_hdr = ( unsigned __int8 ) uip_ext_len + Number + Number L ; uip_ext_len += Number * * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) + Number ; continue ; case Number : case Number : goto LABEL_319 ; case Number : result = uip_icmp6chksum ( ) ; if ( ( _WORD ) result == Number ) { tcpip_icmp6_call ( * ( ( unsigned __int8 * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) ) ; switch ( * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) ) { case Number : uip_icmp6_echo_request_input ( ) ; break ; case Number : uip_len = Number ; break ; case Number : uip_len = Number ; break ; case Number : uip_len = Number ; break ; case Number : uip_nd6_ns_input ( ) ; break ; case Number : uip_nd6_na_input ( ) ; break ; case Number : uip_rpl_input ( ) ; break ; default : uip_len = Number ; break ; } result = ( unsigned __int16 ) uip_len ; if ( uip_len ) goto LABEL_318 ; } goto LABEL_319 ; case Number : if ( ( uip_ext_bitmap & Number ) != Number ) { if ( ( uip_ext_bitmap & Number ) != Number ) { LABEL_121 : result = uip_icmp6_error_output ( Number L , Number L , ( unsigned int ) ( uip_next_hdr - ( _QWORD ) & uip_aligned_buf ) ) ; goto LABEL_318 ; } uip_ext_bitmap |= Number ; } else { uip_ext_bitmap |= Number ; } result = ( unsigned __int8 ) ext_hdr_options_process ( ) ; if ( ( unsigned __int8 ) result == Number ) goto LABEL_318 ; if ( ( int ) result <= Number ) { if ( ( _DWORD ) result ) { if ( ( _DWORD ) result == Number ) goto LABEL_319 ; } else { uip_next_hdr = ( unsigned __int8 ) uip_ext_len + Number + Number L ; uip_ext_len += Number * * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) + Number ; } } continue ; default : goto LABEL_121 ; } } } if ( unk_422798 != Number && ( unk_422798 != Number || * ( ( _BYTE * ) & unk_422798 + Number ) != Number ) && ( byte_422788 [ Number ] != Number || byte_422788 [ Number ] != Number ) && ( * ( _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 ] ) && ( unk_422798 || * ( ( _WORD * ) & unk_422798 + Number ) || * ( ( _WORD * ) & unk_422798 + Number ) || * ( ( _WORD * ) & unk_422798 + Number ) || * ( ( _WORD * ) & unk_422798 + Number ) || * ( ( _WORD * ) & unk_422798 + Number ) || * ( ( _WORD * ) & unk_422798 + Number ) || * ( ( _BYTE * ) & unk_422798 + Number ) || * ( ( _BYTE * ) & unk_422798 + Number ) != Number ) ) { if ( ( unsigned __int16 ) uip_len <= Number ) { if ( * ( ( _BYTE * ) & uip_aligned_buf + Number ) > Number ) { rpl_update_header_empty ( ) ; result = ( unsigned int ) ( unsigned __int8 ) ( * ( ( _BYTE * ) & uip_aligned_buf + Number ) ) -- - Number ; } else { result = uip_icmp6_error_output ( Number L , Number L , Number L ) ; } } else { result = uip_icmp6_error_output ( Number L , Number L , Number L ) ; } goto LABEL_318 ; } result = byte_422788 [ Number ] ; if ( byte_422788 [ Number ] == Number ) { result = byte_422788 [ Number ] ; if ( ( _BYTE ) result == Number ) { 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 ) ) { if ( unk_422798 || * ( ( _WORD * ) & unk_422798 + Number ) || * ( ( _WORD * ) & unk_422798 + Number ) || * ( ( _WORD * ) & unk_422798 + Number ) || * ( ( _WORD * ) & unk_422798 + Number ) || * ( ( _WORD * ) & unk_422798 + Number ) || * ( ( _WORD * ) & unk_422798 + Number ) || * ( ( _BYTE * ) & unk_422798 + Number ) || ( result = * ( ( unsigned __int8 * ) & unk_422798 + Number ) , ( _BYTE ) result != Number ) ) { result = unk_422798 ; if ( unk_422798 != Number ) { result = uip_ds6_is_addr_onlink ( & unk_422798 ) ; if ( ! ( _BYTE ) result ) { result = uip_icmp6_error_output ( Number L , Number L , Number L ) ; goto LABEL_318 ; } } } } } } goto LABEL_319 ; } result = * ( ( unsigned __int16 * ) uip_udp_conn + Number ) ; if ( ! ( _WORD ) result ) goto LABEL_319 ; uip_conn = Number L ; uip_appdata = ( __int64 ) & unk_4227B0 ; uip_sappdata = & unk_4227B0 ; uip_slen = Number ; uip_len = Number ; uip_flags = Number ; tcpip_uipcall ( ) ; LABEL_155 : result = ( unsigned __int16 ) uip_slen ; if ( uip_slen ) { uip_len = uip_slen + Number ; * ( ( _BYTE * ) & uip_aligned_buf + Number ) = ( unsigned __int16 ) ( uip_slen + Number ) >> Number ; * ( ( _BYTE * ) & uip_aligned_buf + Number ) = uip_len - Number ; * ( ( _BYTE * ) & uip_aligned_buf + Number ) = * ( ( _BYTE * ) uip_udp_conn + Number ) ; * ( ( _BYTE * ) & uip_aligned_buf + Number ) = Number ; * ( ( _WORD * ) & dword_4227A8 + Number ) = ( ( uip_slen + Number ) << Number ) | ( ( unsigned __int16 ) ( uip_slen + Number ) >> Number ) ; * ( ( _WORD * ) & dword_4227A8 + Number ) = Number ; dword_4227A8 = * ( ( _DWORD * ) uip_udp_conn + Number ) ; v4 = * ( ( _QWORD * ) uip_udp_conn + Number ) ; unk_422798 = * ( _QWORD * ) uip_udp_conn ; * ( ( _QWORD * ) & unk_422798 + Number ) = v4 ; uip_ds6_select_src ( byte_422788 , & unk_422798 ) ; uip_appdata = ( __int64 ) & unk_4227BC ; * ( ( _WORD * ) & dword_4227A8 + Number ) = ~ ( unsigned __int16 ) uip_udpchksum ( ) ; if ( ! * ( ( _WORD * ) & dword_4227A8 + Number ) ) * ( ( _WORD * ) & dword_4227A8 + Number ) = Number ; LABEL_317 : uip_aligned_buf = Number ; result = ( __int64 ) & uip_aligned_buf ; LABEL_318 : uip_flags = Number ; return result ; } goto LABEL_319 ; } uip_len = Number ; uip_slen = Number ; if ( ! ++ byte_41F479 && ! ++ byte_41F478 && ! ++ byte_41F477 ) ++ iss ; if ( * ( _BYTE * ) ( uip_conn + Number ) == Number || * ( _BYTE * ) ( uip_conn + Number ) == Number ) { ++ * ( _BYTE * ) ( uip_conn + Number ) ; result = ( unsigned __int8 ) @@v1@@ [ Number ] ; if ( ( _BYTE ) result == Number ) @@v1@@ [ Number ] = Number ; goto LABEL_319 ; } result = * ( unsigned __int8 * ) ( uip_conn + Number ) ; if ( ( _BYTE ) result ) { if ( * ( _WORD * ) ( uip_conn + Number ) ) { result = * ( unsigned __int8 * ) ( uip_conn + Number ) ; * ( _BYTE * ) ( uip_conn + Number ) = result - Number ; if ( ! ( _BYTE ) result ) { if ( @@v1@@ [ Number ] != Number && ( @@v1@@ [ Number ] != Number && @@v1@@ [ Number ] != Number || @@v1@@ [ Number ] != Number ) ) { v3 = @@v1@@ [ Number ] ; if ( ( unsigned __int8 ) v3 > Number ) v3 = Number ; @@v1@@ [ Number ] = Number << v3 ; ++ @@v1@@ [ Number ] ; result = @@v1@@ [ Number ] & Number ; switch ( @@v1@@ [ Number ] & Number ) { case Number : goto LABEL_202 ; case Number : * ( ( _BYTE * ) & dword_4227A8 + Number ) = Number ; goto LABEL_203 ; case Number : uip_flags = Number ; tcpip_uipcall ( ) ; goto LABEL_283 ; case Number : case Number : case Number : goto LABEL_259 ; default : goto LABEL_319 ; } } @@v1@@ [ Number ] = Number ; uip_flags = Number ; tcpip_uipcall ( ) ; * ( ( _BYTE * ) & dword_4227A8 + Number ) = Number ; goto LABEL_311 ; } goto LABEL_319 ; } result = * ( _BYTE * ) ( uip_conn + Number ) & Number ; if ( ( _DWORD ) result != Number ) goto LABEL_319 ; goto LABEL_5 ; } LABEL_319 : uip_len = Number ; uip_ext_len = Number ; uip_ext_bitmap = Number ; uip_flags = Number ; return result ; }", "source": [{"n": "v1", "t": {"T": 3, "t": "char"}, "location": "r32"}, {"n": "a1", "t": {"T": 1, "n": "char", "s": 1}, "location": "r56"}, {"n": "v10", "t": {"T": 1, "n": "char", "s": 1}, "location": "s17"}]} {"name": "tcpip_ipv6_output", "code": "__int64 tcpip_ipv6_output ( ) { __int64 result ; size_t v1 ; void * v2 ; size_t v3 ; void * v4 ; size_t v5 ; const void * @@v6@@ ; __int64 @@v7@@ ; __int64 v8 ; __int64 v9 ; void * @@v10@@ ; result = ( unsigned __int16 ) uip_len ; if ( uip_len ) { result = ( unsigned __int16 ) uip_len ; if ( ( unsigned __int16 ) uip_len > Number ) { uip_len = Number ; return result ; } if ( ! unk_422798 && ! * ( ( _WORD * ) & unk_422798 + Number ) && ! * ( ( _WORD * ) & unk_422798 + Number ) && ! * ( ( _WORD * ) & unk_422798 + Number ) && ! * ( ( _WORD * ) & unk_422798 + Number ) && ! * ( ( _WORD * ) & unk_422798 + Number ) && ! * ( ( _WORD * ) & unk_422798 + Number ) ) { result = * ( ( unsigned __int16 * ) & unk_422798 + Number ) ; if ( ! ( _WORD ) result ) { uip_len = Number ; return result ; } } if ( unk_422798 == Number ) { LABEL_41 : result = tcpip_output ( Number L ) ; uip_len = Number ; uip_ext_len = Number ; return result ; } if ( ( unsigned __int8 ) uip_ds6_is_addr_onlink ( & unk_422798 ) ) { @@v10@@ = & unk_422798 ; result = rpl_update_header_final ( & unk_422798 ) ; } else { @@v7@@ = uip_ds6_route_lookup ( & unk_422798 ) ; if ( @@v7@@ ) { @@v10@@ = ( void * ) ( @@v7@@ + Number ) ; } else { result = uip_ds6_defrt_choose ( ) ; @@v10@@ = ( void * ) result ; if ( ! result ) { uip_len = Number ; return result ; } } result = rpl_update_header_final ( @@v10@@ ) ; } if ( ( _DWORD ) result ) { uip_len = Number ; return result ; } v8 = uip_ds6_nbr_lookup ( @@v10@@ ) ; if ( ! v8 ) { result = uip_ds6_nbr_add ( @@v10@@ , Number L , Number L , Number L ) ; v9 = result ; if ( ! result ) { uip_len = Number ; return result ; } if ( uip_packetqueue_alloc ( result + Number , Number L ) ) { v1 = ( unsigned __int16 ) uip_len ; v2 = ( void * ) uip_packetqueue_buf ( v9 + Number ) ; memcpy ( v2 , & uip_aligned_buf , v1 ) ; uip_packetqueue_set_buflen ( v9 + Number , ( unsigned __int16 ) uip_len ) ; } if ( uip_ds6_addr_lookup ( byte_422788 ) ) uip_nd6_ns_output ( byte_422788 , Number L , v9 + Number ) ; else uip_nd6_ns_output ( Number L , Number L , v9 + Number ) ; stimer_set ( v9 + Number , dword_422C50 / Number ) ; * ( _BYTE * ) ( v9 + Number ) = Number ; goto LABEL_41 ; } if ( * ( _BYTE * ) ( v8 + Number ) ) { if ( * ( _BYTE * ) ( v8 + Number ) == Number ) { * ( _BYTE * ) ( v8 + Number ) = Number ; stimer_set ( v8 + Number , Number L ) ; * ( _BYTE * ) ( v8 + Number ) = Number ; } tcpip_output ( v8 + Number ) ; result = uip_packetqueue_buflen ( v8 + Number ) ; if ( ( _WORD ) result ) { uip_len = uip_packetqueue_buflen ( v8 + Number ) ; v5 = ( unsigned __int16 ) uip_len ; @@v6@@ = ( const void * ) uip_packetqueue_buf ( v8 + Number ) ; memcpy ( & uip_aligned_buf , @@v6@@ , v5 ) ; uip_packetqueue_free ( v8 + Number ) ; result = tcpip_output ( v8 + Number ) ; } uip_len = Number ; } else { result = uip_packetqueue_alloc ( v8 + Number , Number L ) ; if ( result ) { v3 = ( unsigned __int16 ) uip_len ; v4 = ( void * ) uip_packetqueue_buf ( v8 + Number ) ; memcpy ( v4 , & uip_aligned_buf , v3 ) ; result = uip_packetqueue_set_buflen ( v8 + Number , ( unsigned __int16 ) uip_len ) ; } uip_len = Number ; } } return result ; }", "source": [{"n": "v6", "t": {"T": 3, "t": "const void"}, "location": "r64"}, {"n": "v10", "t": {"T": 3, "t": "void"}, "location": "s24"}, {"n": "v7", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s40"}]} {"name": "uip_nd6_ns_input", "code": "__int64 uip_nd6_ns_input ( ) { __int64 @@result@@ ; __int64 v1 ; __int64 v2 ; _QWORD * @@v3@@ ; __int64 v4 ; @@result@@ = * ( ( unsigned __int8 * ) & uip_aligned_buf + Number ) ; if ( ( _BYTE ) @@result@@ != Number ) goto LABEL_44 ; @@result@@ = * ( ( unsigned __int8 * ) & unk_422784 + ( unsigned __int8 ) uip_ext_len + Number ) ; if ( ( _BYTE ) @@result@@ == Number ) goto LABEL_44 ; @@result@@ = * ( ( unsigned __int8 * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) ; if ( ( _BYTE ) @@result@@ ) goto LABEL_44 ; nd6_opt_llao = Number L ; for ( nd6_opt_offset = Number ; ( unsigned __int8 ) nd6_opt_offset + ( unsigned __int8 ) uip_ext_len + Number < ( unsigned __int16 ) uip_len ; nd6_opt_offset += Number * * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + ( unsigned __int8 ) nd6_opt_offset + Number ) ) { @@result@@ = * ( ( unsigned __int8 * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + ( unsigned __int8 ) nd6_opt_offset + Number ) ; if ( ! ( _BYTE ) @@result@@ ) goto LABEL_44 ; if ( * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + ( unsigned __int8 ) nd6_opt_offset + Number ) == Number ) { nd6_opt_llao = ( unsigned __int8 ) uip_ext_len + Number + ( unsigned __int8 ) nd6_opt_offset + Number L ; 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 ] ; if ( ! ( _WORD ) @@result@@ ) goto LABEL_44 ; } nbr = uip_ds6_nbr_lookup ( byte_422788 ) ; if ( nbr ) { if ( ! memcmp ( ( const void * ) ( nd6_opt_llao + Number ) , ( const void * ) ( nbr + Number ) , Number ) ) { if ( ! * ( _BYTE * ) ( nbr + Number ) ) * ( _BYTE * ) ( nbr + Number ) = Number ; } else { * ( _QWORD * ) ( nbr + Number ) = * ( _QWORD * ) ( nd6_opt_llao + Number ) ; * ( _BYTE * ) ( nbr + Number ) = Number ; } } else { uip_ds6_nbr_add ( byte_422788 , nd6_opt_llao + Number , Number L , Number L ) ; } } } if ( ( addr = uip_ds6_addr_lookup ( ( unsigned __int8 ) uip_ext_len + Number + Number L ) , ( @@result@@ = addr ) != Number ) && ( * ( _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@@ ) ) && ( @@result@@ = uip_ds6_addr_lookup ( byte_422788 ) ) == Number && ( unk_422798 == Number && * ( ( _BYTE * ) & unk_422798 + Number ) == Number && ! * ( ( _WORD * ) & unk_422798 + Number ) && ! * ( ( _WORD * ) & unk_422798 + Number ) && ! * ( ( _WORD * ) & unk_422798 + Number ) && ! * ( ( _WORD * ) & unk_422798 + Number ) && ! * ( ( _BYTE * ) & unk_422798 + Number ) && * ( ( _BYTE * ) & unk_422798 + Number ) == Number && * ( ( _BYTE * ) & unk_422798 + Number ) == Number || ( @@result@@ = uip_ds6_addr_lookup ( & unk_422798 ) , @@result@@ == addr ) ) ) { v1 = * ( _QWORD * ) & byte_422788 [ Number ] ; unk_422798 = * ( _QWORD * ) byte_422788 ; * ( ( _QWORD * ) & unk_422798 + Number ) = v1 ; v2 = * ( _QWORD * ) & byte_422788 [ ( unsigned __int8 ) uip_ext_len + Number ] ; * ( _QWORD * ) byte_422788 = * ( _QWORD * ) ( ( char * ) & unk_422784 + ( unsigned __int8 ) uip_ext_len + Number ) ; * ( _QWORD * ) & byte_422788 [ Number ] = v2 ; uip_ext_len = Number ; uip_aligned_buf = Number ; * ( ( _BYTE * ) & uip_aligned_buf + Number ) = Number ; * ( ( _BYTE * ) & uip_aligned_buf + Number ) = Number ; * ( ( _BYTE * ) & uip_aligned_buf + Number ) = Number ; * ( ( _BYTE * ) & uip_aligned_buf + Number ) = Number ; * ( ( _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 ; @@v3@@ = ( _QWORD * ) ( ( unsigned __int8 ) uip_ext_len + Number + Number L ) ; v4 = * ( _QWORD * ) ( addr + Number ) ; * @@v3@@ = * ( _QWORD * ) ( addr + Number ) ; @@v3@@ [ Number ] = v4 ; create_llao ( ( unsigned __int8 ) uip_ext_len + Number + Number L , 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@@ ; uip_len = Number ; } else { LABEL_44 : uip_len = Number ; } return @@result@@ ; }", "source": [{"n": "v3", "t": {"T": 3, "t": "_QWORD"}, "location": "r24"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}]} {"name": "uip_nd6_ns_output", "code": "__int64 __fastcall uip_nd6_ns_output ( _QWORD * @@a1@@ , _QWORD * @@a2@@ , __int64 @@a3@@ ) { __int64 v3 ; char * @@v4@@ ; __int64 v5 ; __int64 v6 ; __int64 @@result@@ ; uip_ext_len = Number ; uip_aligned_buf = Number ; * ( ( _BYTE * ) & uip_aligned_buf + Number ) = Number ; * ( ( _BYTE * ) & uip_aligned_buf + Number ) = Number ; if ( @@a2@@ ) { v3 = @@a2@@ [ Number ] ; unk_422798 = * @@a2@@ ; * ( ( _QWORD * ) & unk_422798 + Number ) = v3 ; } else { unk_422798 = Number ; * ( ( _BYTE * ) & unk_422798 + Number ) = Number ; * ( ( _WORD * ) & unk_422798 + Number ) = Number ; * ( ( _WORD * ) & unk_422798 + Number ) = Number ; * ( ( _WORD * ) & unk_422798 + Number ) = Number ; * ( ( _WORD * ) & unk_422798 + Number ) = Number ; * ( ( _BYTE * ) & unk_422798 + Number ) = Number ; * ( ( _BYTE * ) & unk_422798 + Number ) = Number ; * ( ( _BYTE * ) & unk_422798 + Number ) = Number ; * ( ( _BYTE * ) & unk_422798 + Number ) = * ( _BYTE * ) ( @@a3@@ + Number ) ; * ( ( _WORD * ) & unk_422798 + Number ) = * ( _WORD * ) ( @@a3@@ + Number ) ; } * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) = Number ; * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) = Number ; * ( int * ) ( ( char * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) = Number ; @@v4@@ = ( char * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ; v5 = * ( _QWORD * ) ( @@a3@@ + Number ) ; * ( _QWORD * ) ( @@v4@@ + Number ) = * ( _QWORD * ) @@a3@@ ; * ( _QWORD * ) ( @@v4@@ + Number ) = v5 ; * ( ( _BYTE * ) & uip_aligned_buf + Number ) = Number ; if ( uip_ds6_addr_lookup ( @@a3@@ ) ) { * ( _WORD * ) byte_422788 = Number ; * ( _WORD * ) & byte_422788 [ Number ] = Number ; * ( _WORD * ) & byte_422788 [ Number ] = Number ; * ( _WORD * ) & byte_422788 [ Number ] = Number ; * ( _WORD * ) & byte_422788 [ Number ] = Number ; * ( _WORD * ) & byte_422788 [ Number ] = Number ; * ( _WORD * ) & byte_422788 [ Number ] = Number ; * ( _WORD * ) & byte_422788 [ Number ] = Number ; * ( ( _BYTE * ) & uip_aligned_buf + Number ) = Number ; uip_len = Number ; } else { if ( @@a1@@ ) { v6 = @@a1@@ [ Number ] ; * ( _QWORD * ) byte_422788 = * @@a1@@ ; * ( _QWORD * ) & byte_422788 [ Number ] = v6 ; } else { uip_ds6_select_src ( byte_422788 , & unk_422798 ) ; } 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 ] ; if ( ! ( _WORD ) @@result@@ ) { uip_len = Number ; return @@result@@ ; } } * ( ( _BYTE * ) & uip_aligned_buf + Number ) = Number ; create_llao ( ( unsigned __int8 ) uip_ext_len + Number + Number L , 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@@ ; return @@result@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "v4", "t": {"T": 3, "t": "char"}, "location": "r24"}, {"n": "a1", "t": {"T": 3, "t": "_QWORD"}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "_QWORD"}, "location": "r64"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}]} {"name": "uip_nd6_na_input", "code": "__int64 uip_nd6_na_input ( ) { __int64 result ; size_t @@v1@@ ; const void * v2 ; char @@v3@@ ; char @@v4@@ ; char @@v5@@ ; char @@v6@@ ; @@v6@@ = Number ; @@v5@@ = * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) & Number ; @@v4@@ = * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) & Number ; @@v3@@ = * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) & Number ; result = * ( ( unsigned __int8 * ) & uip_aligned_buf + Number ) ; if ( ( _BYTE ) result != Number ) goto LABEL_44 ; result = * ( ( unsigned __int8 * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + Number ) ; if ( ( _BYTE ) result ) goto LABEL_44 ; result = * ( ( unsigned __int8 * ) & unk_422784 + ( unsigned __int8 ) uip_ext_len + Number ) ; if ( ( _BYTE ) result == Number ) goto LABEL_44 ; if ( @@v4@@ ) { result = byte_422798 [ Number ] ; if ( byte_422798 [ Number ] == Number ) goto LABEL_44 ; } nd6_opt_offset = Number ; nd6_opt_llao = Number L ; while ( ( unsigned __int8 ) nd6_opt_offset + ( unsigned __int8 ) uip_ext_len + Number < ( unsigned __int16 ) uip_len ) { result = * ( ( unsigned __int8 * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + ( unsigned __int8 ) nd6_opt_offset + Number ) ; if ( ! ( _BYTE ) result ) goto LABEL_44 ; if ( * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + ( unsigned __int8 ) nd6_opt_offset + Number ) == Number ) nd6_opt_llao = ( unsigned __int8 ) uip_ext_len + Number + ( unsigned __int8 ) nd6_opt_offset + Number L ; nd6_opt_offset += Number * * ( ( _BYTE * ) & uip_aligned_buf + ( unsigned __int8 ) uip_ext_len + ( unsigned __int8 ) nd6_opt_offset + Number ) ; } addr = uip_ds6_addr_lookup ( ( unsigned __int8 ) uip_ext_len + Number + Number L ) ; result = addr ; if ( addr ) goto LABEL_44 ; nbr = uip_ds6_nbr_lookup ( ( unsigned __int8 ) uip_ext_len + Number + Number L ) ; result = nbr ; if ( ! nbr ) goto LABEL_44 ; if ( nd6_opt_llao ) @@v6@@ = memcmp ( ( const void * ) ( nd6_opt_llao + Number ) , ( const void * ) ( nbr + Number ) , Number ) ; if ( * ( _BYTE * ) ( nbr + Number ) ) { if ( ! @@v3@@ && @@v6@@ ) { result = * ( unsigned __int8 * ) ( nbr + Number ) ; if ( ( _BYTE ) result == Number ) { result = nbr ; * ( _BYTE * ) ( nbr + Number ) = Number ; } goto LABEL_44 ; } if ( @@v3@@ || nd6_opt_llao && ! @@v6@@ || ! nd6_opt_llao ) { if ( nd6_opt_llao ) * ( _QWORD * ) ( nbr + Number ) = * ( _QWORD * ) ( nd6_opt_llao + Number ) ; if ( @@v4@@ ) { * ( _BYTE * ) ( nbr + Number ) = Number ; stimer_set ( nbr + Number , dword_422C4C / Number ) ; } else if ( nd6_opt_llao && @@v6@@ ) { * ( _BYTE * ) ( nbr + Number ) = Number ; } } if ( * ( _BYTE * ) ( nbr + Number ) ) { if ( ! @@v5@@ ) { defrt = uip_ds6_defrt_lookup ( byte_422788 ) ; if ( defrt ) uip_ds6_defrt_rm ( defrt ) ; } } * ( _BYTE * ) ( nbr + Number ) = @@v5@@ ; } else { result = nd6_opt_llao ; if ( ! nd6_opt_llao ) goto LABEL_44 ; * ( _QWORD * ) ( nbr + Number ) = * ( _QWORD * ) ( nd6_opt_llao + Number ) ; if ( @@v4@@ ) { * ( _BYTE * ) ( nbr + Number ) = Number ; * ( _BYTE * ) ( nbr + Number ) = Number ; stimer_set ( nbr + Number , dword_422C4C / Number ) ; } else { * ( _BYTE * ) ( nbr + Number ) = Number ; } * ( _BYTE * ) ( nbr + Number ) = @@v5@@ ; } result = uip_packetqueue_buflen ( nbr + Number ) ; if ( ( _WORD ) result ) { uip_len = uip_packetqueue_buflen ( nbr + Number ) ; @@v1@@ = ( unsigned __int16 ) uip_len ; v2 = ( const void * ) uip_packetqueue_buf ( nbr + Number ) ; memcpy ( & uip_aligned_buf , v2 , @@v1@@ ) ; return uip_packetqueue_free ( nbr + Number ) ; } LABEL_44 : uip_len = Number ; return result ; }", "source": [{"n": "v1", "t": {"T": 1, "n": "size_t", "s": 8}, "location": "r32"}, {"n": "v6", "t": {"T": 1, "n": "char", "s": 1}, "location": "s17"}, {"n": "v5", "t": {"T": 1, "n": "char", "s": 1}, "location": "s18"}, {"n": "v4", "t": {"T": 1, "n": "char", "s": 1}, "location": "s19"}, {"n": "v3", "t": {"T": 1, "n": "char", "s": 1}, "location": "s20"}]} {"name": "uip_ds6_list_loop", "code": "__int64 __fastcall uip_ds6_list_loop ( _BYTE * @@a1@@ , unsigned __int8 @@a2@@ , unsigned __int16 @@a3@@ , const void * @@a4@@ , unsigned __int8 @@a5@@ , _QWORD * @@a6@@ ) { __int64 @@result@@ ; _BYTE * @@i@@ ; * @@a6@@ = Number L ; for ( @@i@@ = @@a1@@ ; @@i@@ < & @@a1@@ [ @@a2@@ * @@a3@@ ] ; @@i@@ += @@a3@@ ) { if ( * @@i@@ ) { if ( ! memcmp ( @@i@@ + Number , @@a4@@ , @@a5@@ >> Number ) ) { * @@a6@@ = @@i@@ ; return Number L ; } } else { * @@a6@@ = @@i@@ ; } } if ( * @@a6@@ ) @@result@@ = Number L ; else @@result@@ = Number L ; return @@result@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "unsigned __int16", "s": 2}, "location": "r16"}, {"n": "a4", "t": {"T": 3, "t": "const void"}, "location": "r24"}, {"n": "a1", "t": {"T": 3, "t": "_BYTE"}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "unsigned __int8", "s": 1}, "location": "r64"}, {"n": "a5", "t": {"T": 1, "n": "unsigned __int8", "s": 1}, "location": "r72"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "a6", "t": {"T": 3, "t": "_QWORD"}, "location": "r80"}, {"n": "i", "t": {"T": 3, "t": "_BYTE"}, "location": "s8"}]} {"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"}]}