func (a *analysis) findIntrinsic(fn *ssa.Function) intrinsic {
	impl, ok := a.intrinsics[fn]
	if !ok {
		impl = intrinsicsByName[fn.String()]  
		if a.isReflect(fn) {
			if !a.config.Reflection {
				impl = ext۰NoEffect  
			} else if impl == nil {
				impl = ext۰NotYetImplemented
			}
		} else if impl == nil && fn.Pkg != nil && fn.Pkg.Pkg.Path() == "runtime" {
			impl = ext۰NoEffect
		}
		a.intrinsics[fn] = impl
	}
	return impl
}
findIntrinsic returns the constraint generation function for an
intrinsic function fn, or nil if the function should be handled normally.
package pointer
import (
	"fmt"
	"go/types"
	"golang.org/x/tools/go/ssa"
)
type intrinsic func(a *analysis, cgn *cgnode)
var intrinsicsByName = make(map[string]intrinsic)
func init() {
	for name, fn := range map[string]intrinsic{
		"bytes.Equal":                  ext۰NoEffect,
		"bytes.IndexByte":              ext۰NoEffect,
		"crypto/aes.decryptBlockAsm":   ext۰NoEffect,
		"crypto/aes.encryptBlockAsm":   ext۰NoEffect,
		"crypto/aes.expandKeyAsm":      ext۰NoEffect,
		"crypto/aes.hasAsm":            ext۰NoEffect,
		"crypto/md5.block":             ext۰NoEffect,
		"crypto/rc4.xorKeyStream":      ext۰NoEffect,
		"crypto/sha1.block":            ext۰NoEffect,
		"crypto/sha256.block":          ext۰NoEffect,
		"hash/crc32.castagnoliSSE42":   ext۰NoEffect,
		"hash/crc32.haveSSE42":         ext۰NoEffect,
		"math.Abs":                     ext۰NoEffect,
		"math.Acos":                    ext۰NoEffect,
		"math.Asin":                    ext۰NoEffect,
		"math.Atan":                    ext۰NoEffect,
		"math.Atan2":                   ext۰NoEffect,
		"math.Ceil":                    ext۰NoEffect,
		"math.Cos":                     ext۰NoEffect,
		"math.Dim":                     ext۰NoEffect,
		"math.Exp":                     ext۰NoEffect,
		"math.Exp2":                    ext۰NoEffect,
		"math.Expm1":                   ext۰NoEffect,
		"math.Float32bits":             ext۰NoEffect,
		"math.Float32frombits":         ext۰NoEffect,
		"math.Float64bits":             ext۰NoEffect,
		"math.Float64frombits":         ext۰NoEffect,
		"math.Floor":                   ext۰NoEffect,
		"math.Frexp":                   ext۰NoEffect,
		"math.Hypot":                   ext۰NoEffect,
		"math.Ldexp":                   ext۰NoEffect,
		"math.Log":                     ext۰NoEffect,
		"math.Log10":                   ext۰NoEffect,
		"math.Log1p":                   ext۰NoEffect,
		"math.Log2":                    ext۰NoEffect,
		"math.Max":                     ext۰NoEffect,
		"math.Min":                     ext۰NoEffect,
		"math.Mod":                     ext۰NoEffect,
		"math.Modf":                    ext۰NoEffect,
		"math.Remainder":               ext۰NoEffect,
		"math.Sin":                     ext۰NoEffect,
		"math.Sincos":                  ext۰NoEffect,
		"math.Sqrt":                    ext۰NoEffect,
		"math.Tan":                     ext۰NoEffect,
		"math.Trunc":                   ext۰NoEffect,
		"math/big.addMulVVW":           ext۰NoEffect,
		"math/big.addVV":               ext۰NoEffect,
		"math/big.addVW":               ext۰NoEffect,
		"math/big.bitLen":              ext۰NoEffect,
		"math/big.divWVW":              ext۰NoEffect,
		"math/big.divWW":               ext۰NoEffect,
		"math/big.mulAddVWW":           ext۰NoEffect,
		"math/big.mulWW":               ext۰NoEffect,
		"math/big.shlVU":               ext۰NoEffect,
		"math/big.shrVU":               ext۰NoEffect,
		"math/big.subVV":               ext۰NoEffect,
		"math/big.subVW":               ext۰NoEffect,
		"net.runtime_Semacquire":       ext۰NoEffect,
		"net.runtime_Semrelease":       ext۰NoEffect,
		"net.runtime_pollClose":        ext۰NoEffect,
		"net.runtime_pollOpen":         ext۰NoEffect,
		"net.runtime_pollReset":        ext۰NoEffect,
		"net.runtime_pollServerInit":   ext۰NoEffect,
		"net.runtime_pollSetDeadline":  ext۰NoEffect,
		"net.runtime_pollUnblock":      ext۰NoEffect,
		"net.runtime_pollWait":         ext۰NoEffect,
		"net.runtime_pollWaitCanceled": ext۰NoEffect,
		"os.epipecheck":                ext۰NoEffect,
		"runtime.SetFinalizer":              ext۰runtime۰SetFinalizer,
		"strings.IndexByte":                 ext۰NoEffect,
		"sync.runtime_Semacquire":           ext۰NoEffect,
		"sync.runtime_Semrelease":           ext۰NoEffect,
		"sync.runtime_Syncsemacquire":       ext۰NoEffect,
		"sync.runtime_Syncsemcheck":         ext۰NoEffect,
		"sync.runtime_Syncsemrelease":       ext۰NoEffect,
		"sync.runtime_procPin":              ext۰NoEffect,
		"sync.runtime_procUnpin":            ext۰NoEffect,
		"sync.runtime_registerPool":         ext۰NoEffect,
		"sync/atomic.AddInt32":              ext۰NoEffect,
		"sync/atomic.AddInt64":              ext۰NoEffect,
		"sync/atomic.AddUint32":             ext۰NoEffect,
		"sync/atomic.AddUint64":             ext۰NoEffect,
		"sync/atomic.AddUintptr":            ext۰NoEffect,
		"sync/atomic.CompareAndSwapInt32":   ext۰NoEffect,
		"sync/atomic.CompareAndSwapUint32":  ext۰NoEffect,
		"sync/atomic.CompareAndSwapUint64":  ext۰NoEffect,
		"sync/atomic.CompareAndSwapUintptr": ext۰NoEffect,
		"sync/atomic.LoadInt32":             ext۰NoEffect,
		"sync/atomic.LoadInt64":             ext۰NoEffect,
		"sync/atomic.LoadPointer":           ext۰NoEffect,  
		"sync/atomic.LoadUint32":            ext۰NoEffect,
		"sync/atomic.LoadUint64":            ext۰NoEffect,
		"sync/atomic.LoadUintptr":           ext۰NoEffect,
		"sync/atomic.StoreInt32":            ext۰NoEffect,
		"sync/atomic.StorePointer":          ext۰NoEffect,  
		"sync/atomic.StoreUint32":           ext۰NoEffect,
		"sync/atomic.StoreUintptr":          ext۰NoEffect,
		"syscall.Close":                     ext۰NoEffect,
		"syscall.Exit":                      ext۰NoEffect,
		"syscall.Getpid":                    ext۰NoEffect,
		"syscall.Getwd":                     ext۰NoEffect,
		"syscall.Kill":                      ext۰NoEffect,
		"syscall.RawSyscall":                ext۰NoEffect,
		"syscall.RawSyscall6":               ext۰NoEffect,
		"syscall.Syscall":                   ext۰NoEffect,
		"syscall.Syscall6":                  ext۰NoEffect,
		"syscall.runtime_AfterFork":         ext۰NoEffect,
		"syscall.runtime_BeforeFork":        ext۰NoEffect,
		"syscall.setenv_c":                  ext۰NoEffect,
		"time.Sleep":                        ext۰NoEffect,
		"time.now":                          ext۰NoEffect,
		"time.startTimer":                   ext۰time۰startTimer,
		"time.stopTimer":                    ext۰NoEffect,
	} {
		intrinsicsByName[name] = fn
	}
}