{*ast.File [main]}


{*ast.GenDecl -> *ast.ImportSpec -> *ast.BasicLit [STRING "cmd/objfile/goobj"]}
{*ast.ImportSpec -> *ast.BasicLit [STRING "flag"]}
{*ast.ImportSpec -> *ast.BasicLit [STRING "fmt"]}
{*ast.ImportSpec -> *ast.BasicLit [STRING "net/http"]}
{*ast.ImportSpec -> *ast.BasicLit [STRING "os"]}
{*ast.ImportSpec -> *ast.BasicLit [STRING "runtime"]}
{*ast.ImportSpec -> *ast.BasicLit [STRING "strings"]}
{*ast.ImportSpec -> *ast.BasicLit [STRING "sync"]}
{*ast.ImportSpec -> *ast.BasicLit [STRING "time"]}
{*ast.ImportSpec -> *ast.BasicLit [STRING "unsafe"]}
{*ast.ImportSpec -> *ast.BasicLit [STRING "github.com/dearplain/goloader"]}
{*ast.ImportSpec -> *ast.BasicLit [STRING "github.com/kr/pretty"]}


function name is mustOK 
	 { [mustOK]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [err error]}
	 {*ast.BlockStmt -> *ast.IfStmt []}
	 {*ast.BinaryExpr [!= err nil]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr [panic err]}


{*ast.GenDecl -> *ast.TypeSpec [arrayFlags]}
{*ast.StructType -> *ast.FieldList -> *ast.Field [File]}
{*ast.ArrayType [string]}
{*ast.Field [PkgPath]}
{*ast.ArrayType [string]}


function name is String 
	 {*ast.FieldList -> *ast.Field [i]}
	 {*ast.StarExpr [arrayFlags String]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.FieldList -> *ast.Field [string]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.BasicLit [STRING "my string representation"]}


function name is Set 
	 {*ast.FieldList -> *ast.Field [i]}
	 {*ast.StarExpr [arrayFlags Set]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [value string]}
	 {*ast.FieldList -> *ast.Field [error]}
	 {*ast.BlockStmt -> *ast.AssignStmt [:= s]}
	 {*ast.CallExpr -> *ast.SelectorExpr [strings Split value]}
	 {*ast.BasicLit [STRING ":"]}
	 {*ast.AssignStmt [=]}
	 {*ast.SelectorExpr [i File]}
	 {*ast.CallExpr [append]}
	 {*ast.SelectorExpr [i File]}
	 {*ast.IndexExpr [s]}
	 {*ast.BasicLit [INT 0]}
	 {*ast.GenDecl -> *ast.ValueSpec [path string]}
	 {*ast.IfStmt []}
	 {*ast.BinaryExpr [>]}
	 {*ast.CallExpr [len s]}
	 {*ast.BasicLit [INT 1]}
	 {*ast.BlockStmt -> *ast.AssignStmt [= path]}
	 {*ast.IndexExpr [s]}
	 {*ast.BasicLit [INT 1]}
	 {*ast.AssignStmt [=]}
	 {*ast.SelectorExpr [i PkgPath]}
	 {*ast.CallExpr [append]}
	 {*ast.SelectorExpr [i PkgPath path]}
	 {*ast.ReturnStmt [nil]}


function name is main 
	 { [main]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.BlockStmt -> *ast.GenDecl -> *ast.ValueSpec [files arrayFlags]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [flag Var]}
	 {*ast.UnaryExpr [& files]}
	 {*ast.BasicLit [STRING "o"]}
	 {*ast.BasicLit [STRING "load go object file"]}
	 {*ast.GenDecl -> *ast.ValueSpec [pkgpath]}
	 {*ast.CallExpr -> *ast.SelectorExpr [flag String]}
	 {*ast.BasicLit [STRING "p"]}
	 {*ast.BasicLit [STRING ""]}
	 {*ast.BasicLit [STRING "package path"]}
	 {*ast.GenDecl -> *ast.ValueSpec [parseFile]}
	 {*ast.CallExpr -> *ast.SelectorExpr [flag String]}
	 {*ast.BasicLit [STRING "parse"]}
	 {*ast.BasicLit [STRING ""]}
	 {*ast.BasicLit [STRING "parse go object file"]}
	 {*ast.GenDecl -> *ast.ValueSpec [run]}
	 {*ast.CallExpr -> *ast.SelectorExpr [flag String]}
	 {*ast.BasicLit [STRING "run"]}
	 {*ast.BasicLit [STRING "main.main"]}
	 {*ast.BasicLit [STRING "run function"]}
	 {*ast.GenDecl -> *ast.ValueSpec [times]}
	 {*ast.CallExpr -> *ast.SelectorExpr [flag Int]}
	 {*ast.BasicLit [STRING "times"]}
	 {*ast.BasicLit [INT 1]}
	 {*ast.BasicLit [STRING "run count"]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [flag Parse]}
	 {*ast.IfStmt []}
	 {*ast.BinaryExpr [!=]}
	 {*ast.StarExpr [parseFile]}
	 {*ast.BasicLit [STRING ""]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr [parse parseFile pkgpath]}
	 {*ast.ReturnStmt -> *ast.IfStmt []}
	 {*ast.BinaryExpr [==]}
	 {*ast.CallExpr [len]}
	 {*ast.SelectorExpr [files File]}
	 {*ast.BasicLit [INT 0]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [flag PrintDefaults]}
	 {*ast.ReturnStmt -> *ast.AssignStmt [:= symPtr]}
	 {*ast.CallExpr [make]}
	 {*ast.MapType [string uintptr]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [goloader RegSymbol symPtr]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [goloader RegTypes symPtr]}
	 {*ast.CallExpr -> *ast.SelectorExpr [time Duration]}
	 {*ast.BasicLit [INT 0]}
	 {*ast.CallExpr -> *ast.SelectorExpr [time Unix]}
	 {*ast.BasicLit [INT 0]}
	 {*ast.BasicLit [INT 0]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [goloader RegTypes symPtr]}
	 {*ast.SelectorExpr [runtime LockOSThread]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [goloader RegTypes symPtr]}
	 {*ast.SelectorExpr [http ListenAndServe]}
	 {*ast.CallExpr -> *ast.SelectorExpr [http Dir]}
	 {*ast.BasicLit [STRING "/"]}
	 {*ast.CallExpr -> *ast.SelectorExpr [http Handler]}
	 {*ast.CallExpr -> *ast.SelectorExpr [http FileServer]}
	 {*ast.CallExpr -> *ast.SelectorExpr [http Dir]}
	 {*ast.BasicLit [STRING "/"]}
	 {*ast.SelectorExpr [http FileServer]}
	 {*ast.SelectorExpr [http HandleFunc]}
	 {*ast.UnaryExpr [&]}
	 {*ast.CompositeLit -> *ast.SelectorExpr [http Request]}
	 {*ast.AssignStmt [:= w]}
	 {*ast.CompositeLit -> *ast.SelectorExpr [sync WaitGroup]}
	 {*ast.AssignStmt [:= rw]}
	 {*ast.CompositeLit -> *ast.SelectorExpr [sync RWMutex]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [goloader RegTypes symPtr]}
	 {*ast.UnaryExpr [& w]}
	 {*ast.SelectorExpr [w Wait]}
	 {*ast.UnaryExpr [& rw]}
	 {*ast.AssignStmt [:= reloc err]}
	 {*ast.CallExpr -> *ast.SelectorExpr [goloader ReadObjs]}
	 {*ast.SelectorExpr [files File]}
	 {*ast.SelectorExpr [files PkgPath]}
	 {*ast.IfStmt []}
	 {*ast.BinaryExpr [!= err nil]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [fmt Println err]}
	 {*ast.GenDecl -> *ast.ValueSpec [mmapByte]}
	 {*ast.ArrayType [byte]}
	 {*ast.ForStmt -> *ast.AssignStmt [:= i]}
	 {*ast.BasicLit [INT 0]}
	 {*ast.BinaryExpr [< i]}
	 {*ast.StarExpr [times]}
	 {*ast.IncDecStmt [i]}
	 {*ast.BlockStmt -> *ast.AssignStmt [:= codeModule err]}
	 {*ast.CallExpr -> *ast.SelectorExpr [goloader Load reloc symPtr]}
	 {*ast.IfStmt []}
	 {*ast.BinaryExpr [!= err nil]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [fmt Println]}
	 {*ast.BasicLit [STRING "Load error:"]}
	 { [err]}
	 {*ast.AssignStmt [:= runFuncPtr]}
	 {*ast.IndexExpr -> *ast.SelectorExpr [codeModule Syms]}
	 {*ast.StarExpr [run]}
	 {*ast.AssignStmt [:= funcPtrContainer]}
	 {*ast.CallExpr -> *ast.ParenExpr [uintptr]}
	 {*ast.CallExpr -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.UnaryExpr [& runFuncPtr]}
	 {*ast.AssignStmt [:= runFunc]}
	 {*ast.StarExpr -> *ast.CallExpr -> *ast.ParenExpr -> *ast.StarExpr -> *ast.FuncType -> *ast.FieldList -> *ast.CallExpr -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.UnaryExpr [& funcPtrContainer]}
	 {*ast.ExprStmt -> *ast.CallExpr [runFunc]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [codeModule Unload]}
	 {*ast.IfStmt []}
	 {*ast.BinaryExpr [== mmapByte nil]}
	 {*ast.BlockStmt -> *ast.AssignStmt [= mmapByte err]}
	 {*ast.CallExpr -> *ast.SelectorExpr [goloader Mmap]}
	 {*ast.BasicLit [INT 1024]}
	 {*ast.IfStmt []}
	 {*ast.BinaryExpr [!= err nil]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [fmt Println err]}
	 {*ast.AssignStmt [:= b]}
	 {*ast.CallExpr [make]}
	 {*ast.ArrayType [byte]}
	 {*ast.BasicLit [INT 1024]}
	 {*ast.ExprStmt -> *ast.CallExpr [copy mmapByte b]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [goloader Munmap mmapByte]}
	 {*ast.AssignStmt [= mmapByte nil]}


function name is parse 
	 { [parse]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [file pkgpath]}
	 {*ast.StarExpr [string]}
	 {*ast.BlockStmt -> *ast.IfStmt []}
	 {*ast.BinaryExpr [==]}
	 {*ast.StarExpr [file]}
	 {*ast.BasicLit [STRING ""]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [flag PrintDefaults]}
	 {*ast.ReturnStmt -> *ast.AssignStmt [:= f err]}
	 {*ast.CallExpr -> *ast.SelectorExpr [os Open]}
	 {*ast.StarExpr [file]}
	 {*ast.IfStmt []}
	 {*ast.BinaryExpr [!= err nil]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [fmt Printf]}
	 {*ast.BasicLit [STRING "%# v\n"]}
	 { [err]}
	 {*ast.ReturnStmt -> *ast.AssignStmt [:= obj err]}
	 {*ast.CallExpr -> *ast.SelectorExpr [goobj Parse f]}
	 {*ast.StarExpr [pkgpath]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [pretty Printf]}
	 {*ast.BasicLit [STRING "%# v\n"]}
	 { [obj]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [f Close]}
	 {*ast.IfStmt []}
	 {*ast.BinaryExpr [!= err nil]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [fmt Printf]}
	 {*ast.BasicLit [STRING "error reading %s: %v\n"]}
	 {*ast.StarExpr [file err]}
	 {*ast.ReturnStmt []}


