docs: def _solve_forbase_address(self, function_starts, functions):
          """
          Voting for the most possible base address.
  
          :param function_starts:
          :param functions:
          :returns:
          """
  
          pseudo_base_addr = self.project.loader.main_object.min_addr
  
          base_addr_ctr = { }
  
          for s in function_starts:
              for f in functions:
                  base_addr = s - f + pseudo_base_addr
                  ctr = 1
  
                  for k in function_starts:
                      if k - base_addr + pseudo_base_addr in functions:
                          ctr += 1
  
                  if ctr > 5:
                      base_addr_ctr[base_addr] = ctr
  
          if len(base_addr_ctr):
              base_addr, hits = sorted([(k, v) for k, v in base_addr_ctr.items()], key=lambda x: x[1], reverse=True)[0]
  
              return base_addr
          else:
              return None