In Mexico City, a tough, street-smart boy, Jorge (newcomer Cesar Ramos), leaps into action when his 13-year-old sister, Adriana (Paulina Gaitan, Innocent Voices) is kidnapped right off her bicycle and sold into sex slavery. The young girl is sent off with a group of slaves, including Veronica (Alicja Bachleda-Curus), Adriana’s feisty and fierce protector. The two bond over the experience and seek a way out.

Meanwhile, Jorge meets Ray (a subdued Kevin Kline), a lone Texas cop on the trail of the sex smugglers. The two team up to rescue Adriana. They follow a clue that Adriana is going on an “eBay for pervs” auction block.

She is to be sold online to the highest bidder. The cop and the troubled teen traverse the countryside in a desperate attempt to beat the auction deadline.

Trade is a grim and gritty portrayal of the very real sex slavery trade. But too many plot holes make for a bumpy ride. It’s a shame because the acting is first-rate.

A movie with this subject matter almost begs for a happy ending, as it is so uncomfortable to watch. Unfortunately, the ending just seemed too pat, too easy and too happy.

Trade wrestles with complex themes and falls short most of the time, but, at the very least, director Marco Kreuzpaintner is brave enough to explore a disturbing and emotional issue: the heinous acts of human trafficking committed in staggeringly large numbers across the globe.

Grade: C +

Trade releases in select theaters Sept. 28.