I suppose you could do the bounce check with trigonometry. The check is two triangles: hypotenuse of the first is the line from enemy to bounce point at the wall, and hypotenuse of the other is the line from bounce point to player. They share a common side that extends at right angle from the wall at the bounce point. For the triangle that represents the bullet coming from enemy to wall, you must solve the angle of the corner that touches the wall. Then do the same for the other triangle. (You can solve these since you know the lengths of all three sides.) If the angles match, the bullet will bounce to the player from that wall position. You must solve this for every wall pixel the enemy has a line of sight to, in order to find if any of them will bounce directly at the player. There's probably some optimization opportunities there, discarding wall positions that have no chance for a bounce, based on results of nearby calculations.
Edit: added a simple illustration for clarity.
Edit2: actually, looking at the image, it might be better to create the enemy triangle by imagining the enemy position at the same x- or y-coordinate as the player (for vertical and horizontal bounces respectively) and then place the shared side at their halfway point. Then you just check along the shared side both ways for walls, check that there's a line of sight at it from player and enemy, and if all checks pass, you have found a bounce point.