'Sometimes there exists a pointer that points to a few bytes before the beginning of a section, or a few bytes
after the beginning of the section. We take care of that here.
:param int addr: The address to check.
:return: A 2-tuple of (bool, the closest base address)
:rtype: tuple'

def main_nonexecutable_region_limbos_contain(self, addr, tolerance_before=64, tolerance_after=64):

    closest_region = None
    least_limbo = None
    for (start, end) in self.main_nonexecutable_regions:
        if ((start - tolerance_before) <= addr < start):
            if ((least_limbo is None) or ((start - addr) < least_limbo)):
                closest_region = (True, start)
                least_limbo = (start - addr)
        if (end <= addr < (end + tolerance_after)):
            if ((least_limbo is None) or ((addr - end) < least_limbo)):
                closest_region = (True, end)
                least_limbo = (addr - end)
    if (closest_region is not None):
        return closest_region
    return (False, None)
