<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def determine_result(self, returncode, returnsignal, output, isTimeout):
 """ Returns a BenchExec result status based on the output of SMACK """

        splitout = "\n".join(output)
        if 'SMACK found no errors' in splitout:
          return result.RESULT_TRUE_PROP
        errmsg = re.search(r'SMACK found an error(:\s+([^\.]+))?\.', splitout)
        if errmsg:
          errtype = errmsg.group(2)
          if errtype:
            if 'invalid pointer dereference' == errtype:
              return result.RESULT_FALSE_DEREF
            elif 'invalid memory deallocation' == errtype:
              return result.RESULT_FALSE_FREE
            elif 'memory leak' == errtype:
              return result.RESULT_FALSE_MEMTRACK
            elif 'memory cleanup' == errtype:
              return result.RESULT_FALSE_MEMCLEANUP
            elif 'integer overflow' == errtype:
              return result.RESULT_FALSE_OVERFLOW
          else:
            return result.RESULT_FALSE_REACH
        return result.RESULT_UNKNOWN