Block lookup_block(TargetAddress address, Block[] blocks)
{
foreach (MonoCodeBlock block in blocks) {
if ((address < StartAddress + block.StartAddress) ||
(address >= StartAddress + block.EndAddress))
continue;
if (block.Children != null) {
Block child = lookup_block (address, block.Children);
return child ?? block;
}
return block;
}
return null;
}