def METHOD_NAME(minuend_profdatas, subtrahend_profdatas,
                                      difference_dir):
  """Calculate the differences between all profdatas and generate differential
  coverage reports."""
  profdata_objects = profdatas_to_objects(minuend_profdatas)
  real_profdata_objects = [
      binobject for binobject in profdata_objects if binobject != 'merged'
  ]
  for minuend, subtrahend, binobject in zip(minuend_profdatas,
                                            subtrahend_profdatas,
                                            profdata_objects):
    minuend_text = convert_profdata_to_text(minuend)
    subtrahend_text = convert_profdata_to_text(subtrahend)
    difference = get_difference(minuend_text, subtrahend_text)
    basename = os.path.basename(minuend_text)
    difference_text = os.path.join(difference_dir, basename)
    with open(difference_text, 'w', encoding='utf-8') as file_handle:
      file_handle.write(difference.to_string())
    difference_profdata = convert_text_profdata_to_bin(difference_text)
    if not difference_profdata.endswith('merged.profdata'):
      generate_html_report(difference_profdata, [binobject],
                           os.path.join(difference_dir, binobject))
    else:
      generate_html_report(difference_profdata, real_profdata_objects,
                           os.path.join(difference_dir, 'merged'))