1. A system to generate a Type-Based Self-Assembling Indirect Control Flow Graph (TB-SA-ICFG) of a software program, comprising: a memory device; a processing device, having one or more processors, coupled to the memory device configured to: identify a first vertex of an Indirect Control Flow Graph (ICFG), the first vertex representing an indirect control transfer to a first instruction; determine a first type signature associated with the indirect control transfer; compute a first tag value from the first type signature; insert the first tag value into a first memory location, the first memory location associated with the first vertex of the ICFG; identify a second vertex of the ICFG, the second vertex representing a second instruction; determine a second type signature of the second instruction; compute a second tag value from the second type signature; insert the second tag value into a second memory location, the second memory location associated with the second vertex of the ICFG; and identify a valid control transfer from the first vertex to the second vertex when it is determined that the first tag value equals to the second tag value.