public Block FindContainingBlock(Address address)
{
BlockRange b;
if (blocks.TryGetLowerBound(address, out b) && address.ToLinear() < b.End)
{
if (b.Block.Succ.Count == 0)
return b.Block;
string succName = b.Block.Succ[0].Name;
if (succName != b.Block.Name && succName.StartsWith(b.Block.Name) &&
!b.Block.Succ[0].IsSynthesized)
return b.Block.Succ[0];
return b.Block;
}
else
return null;
}