Here's a simple process that does not use LISP but relies on the Booleans and regions.
1. Select all the objects and convert them to regions then select all the red regions and union them together. Note, to simplify the selection of the red regions just select all then type R (remove) and click on the white region.
2. Use the Boolean intersect on the two regions resulting in the shapes you want.
3. Use explode twice to get the outlines of the shapes.