docs: 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