There’s considerable disagreement over how much is fact and how much fiction in the interviews that confessed contract killer Richard Kuklinski gave during his time in prison—he once claimed, for instance, to have killed Jimmy Hoffa—but Ariel Vromen’s “The Iceman,” titled after his nickname, isn’t so much concerned with ferreting out the historical truth as with fashioning a brooding, neo-noir portrait of a psychopath who balances an apparently normal family life with a career as a cold-blooded hit-man. As adapted by Vromen and Morgan Land from James Thebaut’s HBO documentary “The Iceman Tapes” and Anthony Bruno’s book, it’s a story that could have been penned by Jim Thompson about one of those driven, doomed loners who populate the hard-boiled pulps of the forties and fifties.

That puts a great deal of the burden of carrying the movie on the shoulders of the actor who plays Kuklinski, and Vromen is indeed fortunate that it’s the remarkable Michael Shannon doing the heavy lifting. Shannon adds to his growing gallery of very different but always compelling characters here, portraying Kuklinski as a preternaturally calm man with no compunction about killing as an occupation. The only attempt to offer any psychological explanation for his morally blind personality is in a brief sequence where he visits his brother (a cameo by Stephen Dorff) in prison, which suggests that his home life must have been a tortured one; and that inference is certainly supported by the normal suburban structure he tries desperately to create for his own family—and the fact that when it’s threatened in any way, his reaction is explosive, particularly toward his wife. But there’s no serious depth of analysis in that respect.

So one has to take Kuklinski as he’s found at the beginning of the film, a dour employee at a mob-financed film lab where he makes dubs of porno flicks while romancing Deborah (Winona Ryder), a lost soul who falls for his not-so-snappy patter. When crime boss Roy DeMeo (Ray Liotta) notices his coolness under pressure and tests him by ordering him to shoot a homeless guy, he suddenly has a new job—as the mobster’s hit-man of choice. Meanwhile Kuklinski has married Deborah, telling her that his income comes from currency-exchange deals. Together they have two daughters and become an ordinary-seeming addition to their middle-class neighborhood.

Kuklinski proves extraordinarily efficient at seeing to DeMeo’s business until his decision to let a young hooker escape after she’s witnessed his killing of small-time hustler named Marty (James Franco) gets him in Dutch with Roy and he’s shunted to the sidelines. But his family’s financial needs lead him to fashion a partnership with another contract killer, Bob (Chris Evans), also known as Mr. Freezy for the ice-cream truck he drives around in (as well as for his habit of putting the corpses of his victims on ice before dismembering and disposing of them). Eventually the two of them will be drawn into the killing of one of DeMeo’s men (John Ventimiglia) by mob higher-up Leonard Marks (Robert Davi); but when the hit goes sour, it leads to another killing and an unhappy encounter with Marks. That’s all part of Kuklinski’s downward spiral, which brings his marriage near collapse after his daughters are targeted by DeMeo for revenge. Even his partnership with Bob goes south. And under increased stress, he makes the mistake that leads to his arrest and conviction.

Though “The Iceman” doesn’t go very deep as a character study, in Shannon’s hands Kuklinski makes a chilling figure who exudes an aura of menace even when he’s being the perfect father or a chummy pal to his old buddies—though he’s always on the verge of violence, even disposing of one of those chums when he proves a nuisance and never hesitating to kill anybody who gets in his way (except that young hooker, of course). The rest of the cast support him well. Liotta breaks no new ground as DeMeo—we’ve seen him in this sort of role many times before—but he gives Roy a hint of honest complexity, especially when he has to deal with his chief lieutenant, Josh (an almost unrecognizable David Schwimmer) for trying to add to his cash store on the side. But Ryder gives a performance that could revive her career as the doting, luckless Deborah, and Evans—also nearly unrecognizable with beard and hippie hair–erases any memory of Steve Rogers as the unflappable Mr. Freezy (who at one point here suggests a trade in murders reminiscent of “Strangers on a Train”). Franco has an especially good cameo as the victim Kuklinski cruelly gives time to pray in the hope that God will intervene on his behalf, but Dorff makes his brief scene count as well, while Davi and Ventimiglia have their moments.

This is obviously a modestly-budgeted movie, but Bobby Bukowski’s gritty cinematography creates an appropriately sordid atmosphere even in the suburban sequences, and the whole has good period atmosphere courtesy of Nathan Amondson’s production design and Donna Zakowska’s costumes. Haim Mazar’s score is unobtrusively effective.

But this is Shannon’s film, and though the material he’s dealing with isn’t of the same quality as “Take Shelter,” he’s equally magnetic. He’d be reason enough to see “The Iceman” even if the rest of the film weren’t as good as it is.