Group A
Bayern with top the group
Atletico will be 2nd with a DRAW or a WIN.
RB Salzburg will be 2nd with a WIN.
Lokomotiv can't make R16, but would get an EL spot with a WIN and an Atletico LOSS or DRAW. Otherwise the EL spot will go to whoever between Atletico and Salzburg doesn't get the R16 spot.
Group B
Lots of fun here. All 4 teams can make R16 and no one is locked in.
Monchengladbach will top the group with a WIN or with a DRAW and a Shakhtar DRAW or LOSS. They'll qualify R16 with a LOSS and a Shakhtar/Inter DRAW.
Shakhtar can top the group with a WIN AND a Monchengladbach DRAW OR LOSS. They'll qualify for R16 with a DRAW and a Real Madrid DRAW or LOSS.
Real Madrid can top the group with a WIN AND a Monchengladbach LOSS. They'll qualify for R16 with a WIN or (a DRAW and a Shakhtar LOSS).
Inter cannot top the group, however can still qualify for R16 with a WIN and a Real Madrid LOSS.
Group C
Boring sauce.
City top the group
Porto second
Marseille must get a better result than Olympicos to qualify Europa.
Group D
Liverpool top the group
Atalanta finish second with a WIN or DRAW. Third with a LOSS.
Ajax finish second with a WIN. Third with a DRAW or LOSS.
Midtjyland are stapled to the bottom.
Group E
More boring sauce.
Chelsea top the group.
Sevilla second.
Krasnodar third
Rennes bottom
Group F
Dortmund will move on. They'll also top the group with a WIN, (DRAW and Brugge/Lazio DRAW), OR Brugge WIN. Otherwise they'll be 2nd.
Lazio will top the group with a WIN and a Dortmund DRAW or LOSS. They'll be second with a WIN and Dortmund WIN or with a DRAW.
Brugge will move on with a WIN. Otherwise will be third.
Zenit bottom
Group G
Juve/Barca are moving on. If Juve beat Barca by a three goal margin or 2 goal margin at 3-1 or higher, they'll top the group otherwise Barca will.
Dyanamo Kyiv will get Europa with a WIN or DRAW.
Ferencvaros will get Europa with a WIN.
Group H
More fun here. All three top teams are on 9 points. Note the 3 way tie breakers may come into play here. If all 3 teams remain tied, the first tie breaker is points in head to head matches which would be United 7, PSG 6, Leipzig 4.
PSG will top the group with a WIN. They'll finish 2nd with a DRAW OR with a LOSS and United/Leipzig not being a DRAW. They'll finish 3rd with a LOSS and a United/Leipzig DRAW
United will top the group with a WIN and a PSG LOSS or DRAW or with a DRAW and a PSG LOSS or DRAW. They'll finish 2nd with a WIN and PSG WIN or a DRAW and PSG WIN.
Leipzig will top the group with a WIN and a PSG LOSS or DRAW. They'll qualify R16 with a WIN and PSG WIN OR a DRAW and PSG LOSS. They'll finish third with a DRAW and PSG WIN or DRAW or with a LOSS.
Basaksehir are bottom.
I'm pretty sure all this is right. I've seen a few sources online with contradictory information and some that's objectively false (like Leipzig needing a win to advance), so I tried to verify everything. May have made a mistake somewhere though.