def METHOD_NAME(lines: Iterable[str]) -> Iterable[Operation]:
    for line in lines:
        if match := re.search(
            r"(\S+) (\d+) (\S+) Allocating memory \((\d+) bytes\): ([A-F0-9]*)",
            line,
        ):
            yield Operation(
                file=match.group(1),
                line=int(match.group(2)),
                func=match.group(3),
                type=OperationType.Allocation,
                size=int(match.group(4)),
                address=int(match.group(5), 16),
            )
        elif match := re.search(
            r"(\S+) (\d+) (\S+) Reallocating memory at ([A-F0-9]*) \((\d+) bytes\): ([A-F0-9]*)",
            line,
        ):
            yield Operation(
                file=match.group(1),
                line=int(match.group(2)),
                func=match.group(3),
                type=OperationType.Reallocation,
                address=int(match.group(4), 16),
                size=int(match.group(5)),
                new_address=int(match.group(6), 16),
            )
        elif match := re.search(
            r"(\S+) (\d+) (\S+) Freeing memory at ([A-F0-9]*)", line
        ):
            yield Operation(
                file=match.group(1),
                line=int(match.group(2)),
                func=match.group(3),
                type=OperationType.Deallocation,
                size=None,
                address=int(match.group(4), 16),
            )