getAuxiliaryInfo :: FunDef ExplicitMemory -> AuxiliaryInfo
getAuxiliaryInfo fundef =
  let name = funDefName fundef
      var_to_mem = findVarMemMappings fundef
      mem_aliases = findMemAliases fundef var_to_mem
      var_aliases = findVarAliases fundef
      first_uses = findFirstUses var_to_mem mem_aliases fundef
      last_uses = findLastUses var_to_mem mem_aliases first_uses existentials
                  fundef
      (interferences, potential_kernel_interferences) =
        findInterferences var_to_mem mem_aliases first_uses last_uses
        existentials fundef
      actual_variables = findActualVariables var_to_mem first_uses fundef
      existentials = findExistentials fundef
  in AuxiliaryInfo
     { auxName = name
     , auxVarMemMappings = var_to_mem
     , auxMemAliases = mem_aliases
     , auxVarAliases = var_aliases
     , auxFirstUses = first_uses
     , auxLastUses = last_uses
     , auxInterferences = interferences
     , auxPotentialKernelDataRaceInterferences = potential_kernel_interferences
     , auxActualVariables = actual_variables
     , auxExistentials = existentials
     }
getAuxiliaryInfo :: FunDef ExplicitMemory -> AuxiliaryInfo
getAuxiliaryInfo fundef =
  let name = funDefName fundef
      var_to_mem = findVarMemMappings fundef
      mem_aliases = findMemAliases fundef var_to_mem
      var_aliases = findVarAliases fundef
      first_uses = findFirstUses var_to_mem mem_aliases fundef
      last_uses = findLastUses var_to_mem mem_aliases first_uses existentials
                  fundef
      (interferences, potential_kernel_interferences) =
        findInterferences var_to_mem mem_aliases first_uses last_uses
        existentials fundef
      actual_variables = findActualVariables var_to_mem first_uses fundef
      existentials = findExistentials fundef
  in AuxiliaryInfo
     { auxName = name
     , auxVarMemMappings = var_to_mem
     , auxMemAliases = mem_aliases
     , auxVarAliases = var_aliases
     , auxFirstUses = first_uses
     , auxLastUses = last_uses
     , auxInterferences = interferences
     , auxPotentialKernelDataRaceInterferences = potential_kernel_interferences
     , auxActualVariables = actual_variables
     , auxExistentials = existentials
     }
getAuxiliaryInfo fundef =
  let name = funDefName fundef
      var_to_mem = findVarMemMappings fundef
      mem_aliases = findMemAliases fundef var_to_mem
      var_aliases = findVarAliases fundef
      first_uses = findFirstUses var_to_mem mem_aliases fundef
      last_uses = findLastUses var_to_mem mem_aliases first_uses existentials
                  fundef
      (interferences, potential_kernel_interferences) =
        findInterferences var_to_mem mem_aliases first_uses last_uses
        existentials fundef
      actual_variables = findActualVariables var_to_mem first_uses fundef
      existentials = findExistentials fundef
  in AuxiliaryInfo
     { auxName = name
     , auxVarMemMappings = var_to_mem
     , auxMemAliases = mem_aliases
     , auxVarAliases = var_aliases
     , auxFirstUses = first_uses
     , auxLastUses = last_uses
     , auxInterferences = interferences
     , auxPotentialKernelDataRaceInterferences = potential_kernel_interferences
     , auxActualVariables = actual_variables
     , auxExistentials = existentials
     }