My Bloody Valentine

This article's plot summary may be too long or excessively detailed. Please help improve it by removing unnecessary details and making it more concise. (December 2014) (Learn how and when to remove this template message)
On the Valentine's Day of 1997, in a small town, a cave-in on the north side of a Hanninger mine trapped six miners. Six days later, rescue teams found five dead miners and the comatose Harry Warden (Richard John Walters), who survived by killing the other miners with a pickaxe, allowing himself to breathe. Tom Hanniger (Jensen Ackles) the owner's son, was blamed for the mine disaster because he forgot to vent the methane lines and caused a cave-in, but also Harry Warden for killing the miners.
A year later, Valentine's Day, Warden wakes from his coma in the hospital, and goes on a murderous rampage. Soon after, Sheriff Burke (Tom Atkins) arrives, finding multiple mutilated bodies many of which have been severed in half and the heart of a nurse inside a candy box. Burke and his partner come to the conclusion that Warden had awoken from his coma and, realizing they don't have much time left, they try to figure out where he's headed. Meanwhile, at the abandoned mine shaft that was the site of the disaster, a party is in full swing, attended by many teens, including Axel Palmer (Kerr Smith), his girlfriend, Irene (Betsy Rue), Tom Hanniger and his girlfriend, Sarah (Jaime King). Tom was initially reluctant to go, but he goes anyway. He leaves Sarah and goes back to his car to pick up some beers before going inside.
Sarah goes alone and gets lost looking for Axel and Irene. She runs across a teen and a few seconds later, he is stabbed through his eye. She is confronted by Warden in full miner's garb, carrying a bloody pickaxe, and she flees, finding several dead bodies. Axel grabs her and they, along with Irene, hide from the killer. Warden eventually sees the trio, and they run out of the mine, meeting Tom as he comes in. Warden hits Tom with the pickaxe, injuring him, while the other three run for the car. Sarah tries to go back for Tom but Warden throws a pickaxe into the windshield of Axel's truck, just an inch away from stabbing Sarah in the eye. Axel, realizing he has no other choice starts up his truck and leaves Tom behind. Warden turns his attention towards Tom, who runs back into the mine in an attempt to escape from him. Before Tom can be killed, Burke and his partner arrive and shoot Warden, who makes his getaway back into the mine. Tom also appears shocked by the events.
Ten years later, in 2008, Tom's father, from whom Tom has been estranged, dies and Tom inherits the mine. Tom returns to town after his father's funeral to sell the mine, having vanished since the incident; it was unknown where he was, since he was devastated by the events and unable to see Axel and Sarah after they had abandoned him in the mine to die. Axel is now sheriff and married to Sarah and they have a son, but he is cheating on her with Megan (Megan Boone), who works with Sarah at Sarah's grocery store.
After Megan and Axel have sex at his family's old house in the woods, Megan gives Axel a Valentine's Day card and a box of candy and tells him that she is pregnant with his child. Meanwhile, at the motel where Tom is staying, Irene is having sex with a local trucker named Frank (Todd Farmer). After they finish, Frank reveals that he has been filming her. Irene goes out completely naked and angry about the events, drawing a gun on him. After he reveals that the gun is empty, she throws it and hits him, but he ignores her. Just as he enters the truck, he is impaled with a pickaxe through the head by a man in full miner garb, face completely covered by his mask. The killer chases Irene through the motel, but she hides under the bed. The noise draws Selene (Selene Luna), the midget motel owner, into the room, and the miner kills her by impaling her whole body through the head on the lights above. Irene makes a noise and is discovered by the killer, who removes the bed mattress and stabs her to death. Axel is called to the scene of the crime, and finds Irene cut open, her heart missing; he also discovers Tom's name on the register of people staying at the motel.
He returns to his office, where he sees a video of the miner following Irene. Axel and his partner Martin talk about how it can't be Warden, despite the rumors. Then Axel receives a candy box with Irene's heart inside, just like Warden had done with the nurse ten years ago. Meanwhile, Tom is visiting his newly inherited mine. In the mine, the killer traps Tom in a cage while William "Red" Kirkpatrick (Jeff Hochendoner) is calling for Ben, who is an old friend of the Hannigers. 'Warden' proceeds to murder Red and a group of miners show up seconds later. Suspicion falls on Tom, despite the fact that he was locked in a cage the entire time. At the hospital afterwards, Axel asks Burke what happened to the killer. Burke says that he and Ben Foley (Kevin Tighe), the mine manager, killed and buried Warden. But when Axel, Tom, and Sarah accompany them to the burial spot, Warden's body is no longer there. Later on, Foley is at his house when he hears a noise. He goes outside with a shotgun to find nobody there, but when he goes back inside he is attacked by 'Warden', who knocks him down and impales his head with the pickaxe. The police find his body at the burial spot with his chest cut open. Axel, angry about the events, orders a police guard on his home to protect his son.
Meanwhile, Sarah is with Megan at the store when 'Warden' arrives. He chases them through the store, but they lock themselves in the office. The window is locked, but Megan finds the key while Sarah is blocking the door with a table. Just as 'Warden' breaks a hole in the door and unlocks it, Megan goes through the window and Sarah, who is right behind her, turns around and notices that 'Warden' has disappeared from the office door. She quickly tries to pull Megan back into the office, knowing that 'Warden' is going to the outside window but she's too late, as 'Warden' arrives outside and grabs Megan. Sarah runs back through the store and encounters Axel outside. They find Megan's mutilated body in the alley with the message "Be Mine 4 Ever" scrawled in blood on the wall above. Sarah ponders why Megan was killed when she had no relation to the mine. Sarah comes to the conclusion that the killer was trying to get at Axel, and she admits she knew about their affair. Axel then sends her to the hospital. Meanwhile, at Axel and Sarah's home, their son Noah is watching TV with his babysitter Rosa (Joy de la Paz), while Deputy Ferris (Karen Baum) is in the squad car watching the premises. Suddenly, 'Warden' arrives and impales Rosa with the pickaxe and throws her into the washing machine, scalding her. Burke arrives and warns Ferris about 'Warden's' presence.
Ferris goes to check the house, while Burke is at the porch. Ferris finds Noah and warns him to hide, and she finds Rosa's mutilated body in the washing machine. She warns Burke, but he is killed by 'Warden'. Meanwhile, Sarah is in the hospital and Tom calls her and convinces her that Warden is not the killer. He tells her that he needs her to trust him as he has found something he needs to show her. On the road Tom tries to convince Sarah that Axel is the killer. Axel calls Sarah while she and Tom are in the car; Axel tells her that Tom has been in a mental hospital for the last seven years since Harry Warden's rampage and that he is the killer.
Shocked, Sarah attempts to get Tom to drive her home and, when he refuses, she grabs the wheel and crashes Tom's car. Tom is knocked out momentarily and Sarah escapes. She calls Axel and he instructs her to go to his father's old house. When she enters she finds hundreds of candy heart boxes and her old picture with Tom. The killer, confirming that he is not Warden, appears. Sarah distracts him and runs into the mine shaft where the original murders took place. She runs into Axel and steals his gun. Pointing the gun at Axel she asks him about the hundreds of candy boxes. He seems confused and blames Tom. Tom then appears and Sarah points the gun at him too. Both men accuse the other of being the killer.
Tom gives himself away when he points out that the message over Megan's dead body ("Be Mine 4 Ever") was the same as what Megan wrote to Axel in the Valentine card, revealing that he knows Megan is dead which is information that only Axel and Sarah knew. Tom begins to hallucinate when what seems to be Warden appears in the mine with them. Tom tries to warn Sarah but Axel points his flashlight into the area that Tom is pointing to and shakes his head no, she tells him that nothing is there. Warden walks right up to Tom then disappears. A montage then plays out all the murders in the film again, revealing Tom to be the true killer. Sarah tells Tom that Harry isn't there with them, to which Axel replies "Oh, he's here, aren't you Harry? You living inside Tom?" Tom turns to him, smirks, and says, "Oh, I'm right here". This also reveals that Tom has developed a split personality: as himself and as Harry Warden. Axel is infuriated and grabs the pickaxe, rushing at Tom. The two fight, Axel gains the upper hand and knocks Tom onto the ground, but Tom injures him with the pickaxe. Tom runs off and Sarah and Axel try to hide. Tom comes and finds them, smashing out lights with the pickaxe as he goes. As each light goes out, Tom flashes between being him, and being the miner. Sarah shoots Tom through his side and the bullet hits a gas tank, causing an explosion that causes the mine to collapse.
Rescue teams enter the mine, searching for the survivors. One lone rescuer finds Tom, barely conscious and covered in debris and planks of wood. He tells Tom not to worry, help is coming, when Tom suddenly grabs his pickaxe and impales the rescuer through his mask. Sarah and Axel get out, and Axel is taken away in an ambulance while Sarah is taken by Martin. Then a miner holding his injured side is seen leaving the mine. It is revealed to be Tom as he takes off the mask and walks away.

Question: Who shot Tom?
Answer: Sarah