(self, defs)
return filtered_defs
If we are not tracing into the function that are called in a real execution, we should properly filter the defs
        to account for the behavior of the skipped function at this call site.

        This function is a WIP. See TODOs inside.

        :param defs:
        :return:
If we are not tracing into the function that are called in a real execution, we should properly filter the defs
        to account for the behavior of the skipped function at this call site.
If we are not tracing into the function that are called in a real execution we should properly filter the defs to account for the behavior of the skipped function at this call site .
def _filter_defs_at_call_sites(self, defs):
        """
        If we are not tracing into the function that are called in a real execution, we should properly filter the defs
        to account for the behavior of the skipped function at this call site.

        This function is a WIP. See TODOs inside.

        :param defs:
        :return:
        """

        # TODO: make definition killing architecture independent and calling convention independent
        # TODO: use information from a calling convention analysis
        filtered_defs = LiveDefinitions()
        for variable, locs in defs.items():
            if isinstance(variable, SimRegisterVariable):
                if self.project.arch.name == 'X86':
                    if variable.reg in (self.project.arch.registers['eax'][0],
                                        self.project.arch.registers['ecx'][0],
                                        self.project.arch.registers['edx'][0]):
                        continue

            filtered_defs.add_defs(variable, locs)

        return filtered_defs
def _filter_defs_at_call_sites ( self , defs ) : # TODO: make definition killing architecture independent and calling convention independent # TODO: use information from a calling convention analysis filtered_defs = LiveDefinitions ( ) for variable , locs in defs . items ( ) : if isinstance ( variable , SimRegisterVariable ) : if self . project . arch . name == 'X86' : if variable . reg in ( self . project . arch . registers [ 'eax' ] [ 0 ] , self . project . arch . registers [ 'ecx' ] [ 0 ] , self . project . arch . registers [ 'edx' ] [ 0 ] ) : continue filtered_defs . add_defs ( variable , locs ) return filtered_defs