using uint32 instead of int for value and instruction ids which are always positive, and it is very unlikely we will need more the uint32 values.
simplifying the loops that were adding edges for bound labels.
move the summary writing to a different goroutine since it the information read is not modified further.
This results in significant improvements on large codebases.
Two small optimizations: