The best-selling novel “Child 44” by Tom Rob Smith runs well over 400 pages, and that’s, perhaps, the first hint as to why the movie based on it seems to veer in 40 different directions.

It’s a political movie. It’s a war film. It’s a crime thriller. And suddenly, late in the proceedings, it becomes an action movie. At 137 minutes, the movie’s also a good half hour too long. It’s as if director Daniel Espinosa and screenwriter Richard Price felt the need to include something from each of the book’s pages.

Ultimately, what we have left is a bloated, grim, underwhelming affair, which is unfortunate — because the movie starts out with a lot going for it. Besides the popular source material and the compelling backdrop of fear and repression in the Soviet Union under Josef Stalin, the film has an excellent cast starring the always interesting Tom Hardy as a self-questioning military hero, intelligence operative and amateur gumshoe.

(It’s worth noting that one opinion in Russia has already been registered: that of the government, which scrapped the film’s release there, saying it distorts history and casts the Soviet Union as “a sort of Mordor, populated by physically and morally defective sub-humans, a bloodbath on screen involving Orcs and vampires.”)

After a sad prologue from his boyhood, we meet Leo Demidov (Hardy, sporting a very thick Russian accent) in World War II Berlin, where he becomes an accidental hero by virtue of being the one to raise his country’s flag above the Reichstag. We then jump to 1953; Demidov is an officer in the MGB, the Soviet intelligence agency (and KGB forerunner), tasked with tracking down traitors.

This is a world where, as one character notes, it can be “just our turn” to be denounced and arrested as a spy. And indeed, things turn difficult for Demidov when his MGB boss, Kuzman (Vincent Cassel) orders him to investigate his own wife, Raisa (a sensitive Noomi Rapace).

At the same time, Demidov has hit on something disturbing: The young son of a colleague has been killed by the train tracks. Demidov knows from seeing the body — naked, and sliced up — that the boy was murdered, but he’s ordered to tell the family it was a train accident. Why? Because in Stalin’s worker’s paradise, murder doesn’t exist; it only exists in decadent capitalist societies.

Demidov doesn’t have time to investigate further in Moscow because, having refused to denounce his own wife, he’s roused from bed and exiled along with Raisa to a far-off outpost, where he’s given a filthy room and an unglamorous job under a mercurial boss (Gary Oldman, welcome but underused).

But boys keep getting killed by train tracks — this is where the number 44 comes from — and the movie keeps toggling between being a political history film and a detective story (the serial killer is actually based on the Rostov Ripper, who, in real life, operated decades later). Demidov is determined to track down the killer and even returns to Moscow to investigate on the sly. But a former colleague, Vasili (Joel Kinnaman, in a monochromatic villain role, with little to explain his motivation) is bent not only on stopping him but eliminating him.

In its final half hour, the movie becomes an action film, with a couple of vicious fight scenes — a bloody free-for-all in a train car and an equally messy struggle in a huge mud puddle.

We won’t expose the ending here, though fans of the book obviously know it and also know that “Child 44” is the first in a trilogy. Should the filmmakers pursue the other installments, they’ll hopefully exercise a bit more discipline and leave more on the editing room floor next time around.